diff --git a/applications/solvers/basic/laplacianFoam/Make/options b/applications/solvers/basic/laplacianFoam/Make/options index d27c95d033dd5d7b1995c8ff8dc406e35ca1f586..04ef6c148d79d0762083b703514403fb0bd19c90 100644 --- a/applications/solvers/basic/laplacianFoam/Make/options +++ b/applications/solvers/basic/laplacianFoam/Make/options @@ -4,4 +4,5 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ + -lfvOptions \ -lmeshTools diff --git a/applications/solvers/basic/laplacianFoam/createFields.H b/applications/solvers/basic/laplacianFoam/createFields.H index 616afe1a885d3324aec5389b820e90edfd105db6..7056505e9928a5f5273addf0739ca64f836e3619 100644 --- a/applications/solvers/basic/laplacianFoam/createFields.H +++ b/applications/solvers/basic/laplacianFoam/createFields.H @@ -1,37 +1,39 @@ - Info<< "Reading field T\n" << endl; +Info<< "Reading field T\n" << endl; - volScalarField T +volScalarField T +( + IOobject ( - IOobject - ( - "T", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); + "T", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); - Info<< "Reading transportProperties\n" << endl; +Info<< "Reading transportProperties\n" << endl; - IOdictionary transportProperties +IOdictionary transportProperties +( + IOobject ( - IOobject - ( - "transportProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); + "transportProperties", + runTime.constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) +); - Info<< "Reading diffusivity DT\n" << endl; +Info<< "Reading diffusivity DT\n" << endl; - dimensionedScalar DT - ( - transportProperties.lookup("DT") - ); +dimensionedScalar DT +( + "DT", + dimArea/dimTime, + transportProperties +); diff --git a/applications/solvers/basic/scalarTransportFoam/createFields.H b/applications/solvers/basic/scalarTransportFoam/createFields.H index c6ba83629ba6e7dff1b18f1c9632d22d64cd2b8c..54dcb3fca52260004cf02be1bf3c31d6a68a574b 100644 --- a/applications/solvers/basic/scalarTransportFoam/createFields.H +++ b/applications/solvers/basic/scalarTransportFoam/createFields.H @@ -1,55 +1,57 @@ - Info<< "Reading field T\n" << endl; +Info<< "Reading field T\n" << endl; - volScalarField T +volScalarField T +( + IOobject ( - IOobject - ( - "T", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); + "T", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); - Info<< "Reading field U\n" << endl; +Info<< "Reading field U\n" << endl; - volVectorField U +volVectorField U +( + IOobject ( - IOobject - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); - Info<< "Reading transportProperties\n" << endl; +Info<< "Reading transportProperties\n" << endl; - IOdictionary transportProperties +IOdictionary transportProperties +( + IOobject ( - IOobject - ( - "transportProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); + "transportProperties", + runTime.constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) +); - Info<< "Reading diffusivity DT\n" << endl; +Info<< "Reading diffusivity DT\n" << endl; - dimensionedScalar DT - ( - transportProperties.lookup("DT") - ); +dimensionedScalar DT +( + "DT", + dimArea/dimTime, + transportProperties +); - #include "createPhi.H" +#include "createPhi.H" diff --git a/applications/solvers/combustion/PDRFoam/Make/options b/applications/solvers/combustion/PDRFoam/Make/options index 405f5bcf62693468b521c805c8162525c637cc2f..58dfadafd4fb47074d79b59e2a953e1c997e024d 100644 --- a/applications/solvers/combustion/PDRFoam/Make/options +++ b/applications/solvers/combustion/PDRFoam/Make/options @@ -15,8 +15,8 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lengine \ diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C index 49f36d330909cf95fd2521e40406badeb19d23cc..2b2cd7c4fdbe21cc37115da1b050dffceaa40ded 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -79,7 +79,7 @@ Foam::PDRDragModel::~PDRDragModel() bool Foam::PDRDragModel::read(const dictionary& PDRProperties) { - PDRDragModelCoeffs_ = PDRProperties.subDict(type() + "Coeffs"); + PDRDragModelCoeffs_ = PDRProperties.optionalSubDict(type() + "Coeffs"); PDRDragModelCoeffs_.lookup("drag") >> on_; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C index a6301ba973df780bc466067c908b3afa9c3f0032..7e3b2536b13cd15b3896408c46d0144d4a959bc0 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,7 +67,7 @@ Foam::XiEqModel::~XiEqModel() bool Foam::XiEqModel::read(const dictionary& XiEqProperties) { - XiEqModelCoeffs_ = XiEqProperties.subDict(type() + "Coeffs"); + XiEqModelCoeffs_ = XiEqProperties.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C index 12bd7130602fd673a3cae2e8d7e1685f896cf741..217242b24be5e2aeb2e8b6184753107dccc59bb9 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,7 +67,7 @@ Foam::XiGModel::~XiGModel() bool Foam::XiGModel::read(const dictionary& XiGProperties) { - XiGModelCoeffs_ = XiGProperties.subDict(type() + "Coeffs"); + XiGModelCoeffs_ = XiGProperties.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C index 0bb0cd1e0b5b1b6f2a9fc6209549e5809cd79b60..95807289056c353d53fe7115b1079c94f0cb3459 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,7 +85,7 @@ Foam::XiModel::~XiModel() bool Foam::XiModel::read(const dictionary& XiProperties) { - XiModelCoeffs_ = XiProperties.subDict(type() + "Coeffs"); + XiModelCoeffs_ = XiProperties.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C index 947c62132e90947dc860013148e258891ac7ea8e..afdebbd2c6493b6de861bec6744533860188cd96 100644 --- a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C +++ b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,7 +80,7 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE dict.lookup("fuelFile") ) )() - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ), LFL_(readScalar(coeffsDict_.lookup("lowerFlamabilityLimit"))), UFL_(readScalar(coeffsDict_.lookup("upperFlamabilityLimit"))), diff --git a/applications/solvers/combustion/chemFoam/createBaseFields.H b/applications/solvers/combustion/chemFoam/createBaseFields.H index 0762f2708d5d1941581951bdeaf9522e73070e34..80dea2584b178eb76ab159c4d68addab25067f6a 100644 --- a/applications/solvers/combustion/chemFoam/createBaseFields.H +++ b/applications/solvers/combustion/chemFoam/createBaseFields.H @@ -54,4 +54,3 @@ Info<< "Creating base fields for time " << runTime.timeName() << endl; T.write(); } - diff --git a/applications/solvers/combustion/chemFoam/output.H b/applications/solvers/combustion/chemFoam/output.H index 5620fe68203e9a71a71041e02150fd3a345191f4..2e84c59a488f1caa3138d67bfdb5b5beceed6caf 100644 --- a/applications/solvers/combustion/chemFoam/output.H +++ b/applications/solvers/combustion/chemFoam/output.H @@ -1,6 +1,6 @@ runTime.write(); - Info<< "Sh = " << Sh + Info<< "Qdot = " << Qdot << ", T = " << thermo.T()[0] << ", p = " << thermo.p()[0] << ", " << Y[0].name() << " = " << Y[0][0] @@ -8,4 +8,3 @@ post<< runTime.value() << token::TAB << thermo.T()[0] << token::TAB << thermo.p()[0] << endl; - diff --git a/applications/solvers/combustion/chemFoam/setDeltaT.H b/applications/solvers/combustion/chemFoam/setDeltaT.H index 46d9f7bf433d09dd770ec12821084d537f1f447b..52407c94759a74033a5fa0f1264dc81610b83813 100644 --- a/applications/solvers/combustion/chemFoam/setDeltaT.H +++ b/applications/solvers/combustion/chemFoam/setDeltaT.H @@ -3,4 +3,3 @@ if (adjustTimeStep) runTime.setDeltaT(min(dtChem, maxDeltaT)); Info<< "deltaT = " << runTime.deltaT().value() << endl; } - diff --git a/applications/solvers/combustion/chemFoam/solveChemistry.H b/applications/solvers/combustion/chemFoam/solveChemistry.H index cb4258c31df34b4c78aff3462226c21d815e3c29..e32a1ab0bdd2b7d3d1f119e13537c7542ea6b565 100644 --- a/applications/solvers/combustion/chemFoam/solveChemistry.H +++ b/applications/solvers/combustion/chemFoam/solveChemistry.H @@ -1,3 +1,3 @@ - dtChem = chemistry.solve(runTime.deltaT().value()); - scalar Sh = chemistry.Sh()()[0]/rho[0]; - integratedHeat += Sh*runTime.deltaT().value(); +dtChem = chemistry.solve(runTime.deltaT().value()); +scalar Qdot = chemistry.Qdot()()[0]/rho[0]; +integratedHeat += Qdot*runTime.deltaT().value(); diff --git a/applications/solvers/combustion/fireFoam/Make/options b/applications/solvers/combustion/fireFoam/Make/options index b49c426e87193fbbd3118625f48364b33b039847..869c315f4cfddb64670e55484beefee60f0789aa 100644 --- a/applications/solvers/combustion/fireFoam/Make/options +++ b/applications/solvers/combustion/fireFoam/Make/options @@ -13,10 +13,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \ -I$(LIB_SRC)/combustionModels/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -38,9 +35,6 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H index e9686001712e6fbae0eb26971b32f7b708529000..5176956acc9503ec85f7f161ee7014a74e50669e 100644 --- a/applications/solvers/combustion/fireFoam/YEEqn.H +++ b/applications/solvers/combustion/fireFoam/YEEqn.H @@ -10,7 +10,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection ); { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) @@ -67,8 +67,8 @@ tmp<fv::convectionScheme<scalar>> mvConvection ) - fvm::laplacian(turbulence->alphaEff(), he) == - combustion->Sh() - + radiation->Sh(thermo) + Qdot + + radiation->Sh(thermo, he) + parcels.Sh(he) + surfaceFilm.Sh() + fvOptions(rho, he) diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H index 30e7d303772e9db66d123d7d33675657d8bf3930..85d26aed87d1818974171df90f6b1f1e7d2c1a42 100644 --- a/applications/solvers/combustion/fireFoam/createFields.H +++ b/applications/solvers/combustion/fireFoam/createFields.H @@ -131,18 +131,18 @@ Switch solvePyrolysisRegion additionalControlsDict.lookupOrDefault<bool>("solvePyrolysisRegion", true) ); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); diff --git a/applications/solvers/combustion/reactingFoam/EEqn.H b/applications/solvers/combustion/reactingFoam/EEqn.H index 9267c9a9bef16e0d1af88b81db2df8bba7c2442a..f92598bbed3fe48e051b4159243853186039edf5 100644 --- a/applications/solvers/combustion/reactingFoam/EEqn.H +++ b/applications/solvers/combustion/reactingFoam/EEqn.H @@ -17,7 +17,7 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - reaction->Sh() + Qdot + fvOptions(rho, he) ); diff --git a/applications/solvers/combustion/reactingFoam/YEqn.H b/applications/solvers/combustion/reactingFoam/YEqn.H index 7c3f0f117b8014dbca6cf0840ef4a40d3a5052cc..4d209a3d815066660cb6add4cf762ad253e4f75c 100644 --- a/applications/solvers/combustion/reactingFoam/YEqn.H +++ b/applications/solvers/combustion/reactingFoam/YEqn.H @@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { reaction->correct(); - dQ = reaction->dQ(); + Qdot = reaction->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H index e4475e5d1b5f2aab7db2e0efc346bac21099082d..6fcf83624c621c96b621d78bb06f8597ff86d165 100644 --- a/applications/solvers/combustion/reactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/createFields.H @@ -117,18 +117,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H index a4b328f36740aff6109e56a3a4473f3d84764f27..675aef3f5ad3ecf0d521368e9a42a65d74ba5a33 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H @@ -117,18 +117,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H index fbd45dd20c9d7fb2c71658fd20848862e04821e0..687dffcc13db38d9b916c07df8cee4ee1b11c928 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H @@ -96,18 +96,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/combustion/reactingFoam/setRDeltaT.H b/applications/solvers/combustion/reactingFoam/setRDeltaT.H index 5c24294ef69c40cfe35528b401f597bac8495fe3..b0f9c02b6531127d5ebd713d1c9549f5200fd68c 100644 --- a/applications/solvers/combustion/reactingFoam/setRDeltaT.H +++ b/applications/solvers/combustion/reactingFoam/setRDeltaT.H @@ -43,13 +43,16 @@ License // Damping coefficient (1-0) scalar rDeltaTDampingCoeff ( - pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1) + pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1.0) ); // Maximum change in cell temperature per iteration // (relative to previous value) scalar alphaTemp(pimpleDict.lookupOrDefault("alphaTemp", 0.05)); + // Maximum change in cell concentration per iteration + // (relative to reference value) + scalar alphaY(pimpleDict.lookupOrDefault("alphaY", 1.0)); Info<< "Time scales min/max:" << endl; @@ -68,34 +71,89 @@ License rDeltaT.max(1/maxDeltaT); Info<< " Flow = " - << gMin(1/rDeltaT.primitiveField()) << ", " - << gMax(1/rDeltaT.primitiveField()) << endl; + << 1/gMax(rDeltaT.primitiveField()) << ", " + << 1/gMin(rDeltaT.primitiveField()) << endl; } - // Reaction source time scale - if (alphaTemp < 1.0) + // Heat release rate time scale + if (alphaTemp < 1) { volScalarField::Internal rDeltaTT ( - mag(reaction->Sh())/(alphaTemp*rho*thermo.Cp()*T) + mag(Qdot)/(alphaTemp*rho*thermo.Cp()*T) ); Info<< " Temperature = " - << gMin(1/(rDeltaTT.field() + VSMALL)) << ", " - << gMax(1/(rDeltaTT.field() + VSMALL)) << endl; + << 1/(gMax(rDeltaTT.field()) + VSMALL) << ", " + << 1/(gMin(rDeltaTT.field()) + VSMALL) << endl; - rDeltaT.ref() = max + rDeltaT.ref() = max(rDeltaT(), rDeltaTT); + } + + // Reaction rate time scale + if (alphaY < 1) + { + dictionary Yref(pimpleDict.subDict("Yref")); + + volScalarField::Internal rDeltaTY ( - rDeltaT(), - rDeltaTT + IOobject + ( + "rDeltaTY", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("rDeltaTY", rDeltaT.dimensions(), 0) ); + + bool foundY = false; + + forAll(Y, i) + { + if (i != inertIndex && composition.active(i)) + { + volScalarField& Yi = Y[i]; + + if (Yref.found(Yi.name())) + { + foundY = true; + scalar Yrefi = readScalar(Yref.lookup(Yi.name())); + + rDeltaTY.field() = max + ( + mag + ( + reaction->R(Yi)().source() + /((Yrefi*alphaY)*(rho*mesh.V())) + ), + rDeltaTY + ); + } + } + } + + if (foundY) + { + Info<< " Composition = " + << 1/(gMax(rDeltaTY.field()) + VSMALL) << ", " + << 1/(gMin(rDeltaTY.field()) + VSMALL) << endl; + + rDeltaT.ref() = max(rDeltaT(), rDeltaTY); + } + else + { + IOWarningIn(args.executable().c_str(), Yref) + << "Cannot find any active species in Yref " << Yref + << endl; + } } // Update tho boundary values of the reciprocal time-step rDeltaT.correctBoundaryConditions(); // Spatially smooth the time scale field - if (rDeltaTSmoothingCoeff < 1.0) + if (rDeltaTSmoothingCoeff < 1) { fvc::smooth(rDeltaT, rDeltaTSmoothingCoeff); } @@ -105,7 +163,7 @@ License // - only increase at a fraction of old time scale if ( - rDeltaTDampingCoeff < 1.0 + rDeltaTDampingCoeff < 1 && runTime.timeIndex() > runTime.startTimeIndex() + 1 ) { @@ -120,8 +178,8 @@ License rDeltaT.correctBoundaryConditions(); Info<< " Overall = " - << gMin(1/rDeltaT.primitiveField()) - << ", " << gMax(1/rDeltaT.primitiveField()) << endl; + << 1/gMax(rDeltaT.primitiveField()) + << ", " << 1/gMin(rDeltaT.primitiveField()) << endl; } diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.H b/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.H index 5ab7d3835fb236c039163d2926a2cfc57e69ee31..be5014394de121c81bc19d15233b3d43bd92e74d 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.H +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -184,7 +184,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType= + Pstream::commsTypes::blocking ); //- Return face-gradient transform diagonal diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C index 96413e02017e72642648bb5c732de4ec9065f5fe..b24f21fe8dfc6d88bac7f046f52353fbcef55fc7 100644 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C +++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C @@ -120,11 +120,14 @@ int main(int argc, char *argv[]) "cSf_pos", interpolate(c, pos, T.name())*mesh.magSf() ); + cSf_pos.setOriented(); + surfaceScalarField cSf_neg ( "cSf_neg", interpolate(c, neg, T.name())*mesh.magSf() ); + cSf_neg.setOriented(); surfaceScalarField ap ( @@ -269,4 +272,5 @@ int main(int argc, char *argv[]) return 0; } + // ************************************************************************* // diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C index 65ab9d2db3e9ee7ea9eb3246ec3415bcfae01532..6550d62b28cb858759307c5bcde1c442fcdc6108 100644 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C +++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C @@ -101,11 +101,14 @@ int main(int argc, char *argv[]) "cSf_pos", interpolate(c, pos, T.name())*mesh.magSf() ); + cSf_pos.setOriented(); + surfaceScalarField cSf_neg ( "cSf_neg", interpolate(c, neg, T.name())*mesh.magSf() ); + cSf_neg.setOriented(); surfaceScalarField ap ( diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H index a7ee3eca457f0e1f0f96025c0db545612be6fb1b..84f70f2cd02c8c7c0c8a406ea5324cf0dc480a0b 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H +++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H @@ -2,11 +2,11 @@ Info<< "Reading thermophysical properties\n" << endl; -autoPtr<psiThermo> pThermo +autoPtr<fluidThermo> pThermo ( - psiThermo::New(mesh) + fluidThermo::New(mesh) ); -psiThermo& thermo = pThermo(); +fluidThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); volScalarField& p = thermo.p(); @@ -40,27 +40,7 @@ volVectorField U #include "compressibleCreatePhi.H" -dimensionedScalar rhoMax -( - dimensionedScalar::lookupOrDefault - ( - "rhoMax", - pimple.dict(), - dimDensity, - GREAT - ) -); - -dimensionedScalar rhoMin -( - dimensionedScalar::lookupOrDefault - ( - "rhoMin", - pimple.dict(), - dimDensity, - 0 - ) -); +pressureControl pressureControl(p, rho, pimple.dict(), false); Info<< "Creating turbulence model\n" << endl; autoPtr<compressible::turbulenceModel> turbulence diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H index ac7107acf066722b286275569b0a8b2b39af3e05..5aab5362390ad6292ee1d9ff2caa4fabf5920ba2 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H @@ -1,8 +1,3 @@ -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); - volScalarField rAU(1.0/UEqn.A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p)); @@ -12,55 +7,52 @@ if (pimple.nCorrPISO() <= 1) tUEqn.clear(); } +surfaceScalarField phiHbyA +( + "phiHbyA", + fvc::flux(rho*HbyA) + + rhorAUf*fvc::ddtCorr(rho, U, phi) +); + +MRF.makeRelative(fvc::interpolate(rho), phiHbyA); + +// Update the pressure BCs to ensure flux consistency +constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); + if (pimple.transonic()) { surfaceScalarField phid ( "phid", - fvc::interpolate(psi) - *( - fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) - ) + (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA ); - - MRF.makeRelative(fvc::interpolate(psi), phid); + phiHbyA -= fvc::interpolate(p)*phid; while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( fvm::ddt(psi, p) + + fvc::div(phiHbyA) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) == fvOptions(psi, p, rho.name()) ); + // Relax the pressure equation to ensure diagonal-dominance + pEqn.relax(); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) { - phi == pEqn.flux(); + phi = phiHbyA + pEqn.flux(); } } } else { - surfaceScalarField phiHbyA - ( - "phiHbyA", - ( - fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) - ) - ); - - MRF.makeRelative(fvc::interpolate(rho), phiHbyA); - - // Update the pressure BCs to ensure flux consistency - constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); - while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -87,19 +79,20 @@ else // Explicitly relax pressure for momentum corrector p.relax(); -// Recalculate density from the relaxed pressure -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); -Info<< "rho max/min : " << max(rho).value() - << " " << min(rho).value() << endl; - U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); fvOptions.correct(U); K = 0.5*magSqr(U); +pressureControl.limit(p); +p.correctBoundaryConditions(); +rho = thermo.rho(); + +if (!pimple.transonic()) +{ + rho.relax(); +} + if (thermo.dpdt()) { dpdt = fvc::ddt(p); diff --git a/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H index 713f443fc5dbed1e31266ae52d845518954f36e9..afbc2851e4a3b5298ff153d25c4a3a0ecd580c2f 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H @@ -1,8 +1,3 @@ -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); - volScalarField rAU(1.0/UEqn.A()); volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1())); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p)); @@ -12,72 +7,64 @@ if (pimple.nCorrPISO() <= 1) tUEqn.clear(); } +surfaceScalarField phiHbyA +( + "phiHbyA", + ( + fvc::flux(rho*HbyA) + + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) + ) +); + +MRF.makeRelative(fvc::interpolate(rho), phiHbyA); + +volScalarField rhorAtU("rhorAtU", rho*rAtU); + +// Update the pressure BCs to ensure flux consistency +constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF); + if (pimple.transonic()) { surfaceScalarField phid ( "phid", - fvc::interpolate(psi) - *( - fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) - /fvc::interpolate(rho) - ) + (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA ); - MRF.makeRelative(fvc::interpolate(psi), phid); - - surfaceScalarField phic - ( - "phic", + phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf() - ); + - fvc::interpolate(p)*phid; HbyA -= (rAU - rAtU)*fvc::grad(p); - volScalarField rhorAtU("rhorAtU", rho*rAtU); - while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( fvm::ddt(psi, p) + + fvc::div(phiHbyA) + fvm::div(phid, p) - + fvc::div(phic) - fvm::laplacian(rhorAtU, p) == fvOptions(psi, p, rho.name()) ); + // Relax the pressure equation to ensure diagonal-dominance + pEqn.relax(); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) { - phi == phic + pEqn.flux(); + phi = phiHbyA + pEqn.flux(); } } } else { - surfaceScalarField phiHbyA - ( - "phiHbyA", - ( - fvc::flux(rho*HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) - ) - ); - - MRF.makeRelative(fvc::interpolate(rho), phiHbyA); - phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf(); HbyA -= (rAU - rAtU)*fvc::grad(p); - volScalarField rhorAtU("rhorAtU", rho*rAtU); - - // Update the pressure BCs to ensure flux consistency - constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF); - while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -109,19 +96,16 @@ U.correctBoundaryConditions(); fvOptions.correct(U); K = 0.5*magSqr(U); -if (thermo.dpdt()) -{ - dpdt = fvc::ddt(p); -} - -// Recalculate density from the relaxed pressure +pressureControl.limit(p); +p.correctBoundaryConditions(); rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); if (!pimple.transonic()) { rho.relax(); } -Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl; +if (thermo.dpdt()) +{ + dpdt = fvc::ddt(p); +} diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H index 7bd540df40d7e4a832824ddf21e4e6c29f312a50..0f855626189a25b93e5937bec958adaaeb9e608a 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H @@ -1,8 +1,3 @@ -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); - volScalarField rAU(1.0/UEqn.A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p)); @@ -12,55 +7,53 @@ if (pimple.nCorrPISO() <= 1) tUEqn.clear(); } +surfaceScalarField phiHbyA +( + "phiHbyA", + fvc::flux(rho*HbyA) + + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) +); + +fvc::makeRelative(phiHbyA, rho, U); +MRF.makeRelative(fvc::interpolate(rho), phiHbyA); + +// Update the pressure BCs to ensure flux consistency +constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); + if (pimple.transonic()) { surfaceScalarField phid ( "phid", - fvc::interpolate(psi) - *( - fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho) - ) + (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA ); - - fvc::makeRelative(phid, psi, U); - MRF.makeRelative(fvc::interpolate(psi), phid); + phiHbyA -= fvc::interpolate(p)*phid; while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( fvm::ddt(psi, p) + + fvc::div(phiHbyA) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) == fvOptions(psi, p, rho.name()) ); + // Relax the pressure equation to ensure diagonal-dominance + pEqn.relax(); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) { - phi == pEqn.flux(); + phi = phiHbyA + pEqn.flux(); } } } else { - surfaceScalarField phiHbyA - ( - "phiHbyA", - fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) - ); - - fvc::makeRelative(phiHbyA, rho, U); - MRF.makeRelative(fvc::interpolate(rho), phiHbyA); - - // Update the pressure BCs to ensure flux consistency - constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); - while (pimple.correctNonOrthogonal()) { // Pressure corrector @@ -88,19 +81,20 @@ else // Explicitly relax pressure for momentum corrector p.relax(); -// Recalculate density from the relaxed pressure -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); -Info<< "rho max/min : " << max(rho).value() - << " " << min(rho).value() << endl; - U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); fvOptions.correct(U); K = 0.5*magSqr(U); +pressureControl.limit(p); +p.correctBoundaryConditions(); +rho = thermo.rho(); + +if (!pimple.transonic()) +{ + rho.relax(); +} + { rhoUf = fvc::interpolate(rho*U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C index c7046bb9b4084f5556e1a5a40370a6851a6d2bd6..493b35f692040550a888b5efc79bd10266b8642b 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Application - rhoPimpleFoam + rhoPimpleDyMFoam Group grpCompressibleSolvers grpMovingMeshSolvers @@ -38,10 +38,11 @@ Description #include "fvCFD.H" #include "dynamicFvMesh.H" -#include "psiThermo.H" +#include "fluidThermo.H" #include "turbulentFluidThermoModel.H" #include "bound.H" #include "pimpleControl.H" +#include "pressureControl.H" #include "CorrectPhi.H" #include "fvOptions.H" #include "localEulerDdtScheme.H" diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C index 1a74933ea81c84d78fbc517eec285746f2765166..0fbe7717e3569bec9026d98bd30d3ad51dc6a1ba 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,10 +37,11 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "psiThermo.H" +#include "fluidThermo.H" #include "turbulentFluidThermoModel.H" #include "bound.H" #include "pimpleControl.H" +#include "pressureControl.H" #include "fvOptions.H" #include "localEulerDdtScheme.H" #include "fvcSmooth.H" diff --git a/applications/solvers/compressible/rhoSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/createFields.H index 176a61a0c1339a783f1e8b56402e9acc7410ecf4..c7914f89d339b425c67d6c350cf3ba601be4ad2a 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/createFields.H +++ b/applications/solvers/compressible/rhoSimpleFoam/createFields.H @@ -1,11 +1,14 @@ Info<< "Reading thermophysical properties\n" << endl; -autoPtr<rhoThermo> pThermo + +autoPtr<fluidThermo> pThermo ( - rhoThermo::New(mesh) + fluidThermo::New(mesh) ); -rhoThermo& thermo = pThermo(); +fluidThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); +volScalarField& p = thermo.p(); + volScalarField rho ( IOobject @@ -19,8 +22,6 @@ volScalarField rho thermo.rho() ); -volScalarField& p = thermo.p(); - Info<< "Reading field U\n" << endl; volVectorField U ( @@ -37,35 +38,10 @@ volVectorField U #include "compressibleCreatePhi.H" - -label pRefCell = 0; -scalar pRefValue = 0.0; -setRefCell(p, simple.dict(), pRefCell, pRefValue); +pressureControl pressureControl(p, rho, simple.dict()); mesh.setFluxRequired(p.name()); -dimensionedScalar rhoMax -( - dimensionedScalar::lookupOrDefault - ( - "rhoMax", - simple.dict(), - dimDensity, - GREAT - ) -); - -dimensionedScalar rhoMin -( - dimensionedScalar::lookupOrDefault - ( - "rhoMin", - simple.dict(), - dimDensity, - 0 - ) -); - Info<< "Creating turbulence model\n" << endl; autoPtr<compressible::turbulenceModel> turbulence ( diff --git a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H index 291c220b95b9dc34b6d1a2f439548a03fb1144a5..c7edbb9e877a550265257e4d0c2139e3a1b70e46 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H @@ -1,6 +1,4 @@ { - //const volScalarField& psi = thermo.psi(); - volScalarField rAU(1.0/UEqn.A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p)); @@ -8,22 +6,27 @@ bool closedVolume = false; + surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA)); + MRF.makeRelative(fvc::interpolate(rho), phiHbyA); + + // Update the pressure BCs to ensure flux consistency + constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); + if (simple.transonic()) { surfaceScalarField phid ( "phid", - fvc::interpolate(psi) - *fvc::flux(HbyA) + (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA ); - - MRF.makeRelative(fvc::interpolate(psi), phid); + phiHbyA -= fvc::interpolate(p)*phid; while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( - fvm::div(phid, p) + fvc::div(phiHbyA) + + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) == fvOptions(psi, p, rho.name()) @@ -32,26 +35,24 @@ // Relax the pressure equation to ensure diagonal-dominance pEqn.relax(); - pEqn.setReference(pRefCell, pRefValue); + pEqn.setReference + ( + pressureControl.refCell(), + pressureControl.refValue() + ); pEqn.solve(); if (simple.finalNonOrthogonalIter()) { - phi == pEqn.flux(); + phi = phiHbyA + pEqn.flux(); } } } else { - surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA)); - MRF.makeRelative(fvc::interpolate(rho), phiHbyA); - closedVolume = adjustPhi(phiHbyA, U, p); - // Update the pressure BCs to ensure flux consistency - constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF); - while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -62,7 +63,11 @@ fvOptions(psi, p, rho.name()) ); - pEqn.setReference(pRefCell, pRefValue); + pEqn.setReference + ( + pressureControl.refCell(), + pressureControl.refValue() + ); pEqn.solve(); @@ -83,6 +88,8 @@ U.correctBoundaryConditions(); fvOptions.correct(U); + pressureControl.limit(p); + // For closed-volume cases adjust the pressure and density levels // to obey overall mass continuity if (closedVolume) @@ -91,19 +98,12 @@ /fvc::domainIntegrate(psi); } - rho = thermo.rho(); - rho = max(rho, rhoMin); - rho = min(rho, rhoMax); + p.correctBoundaryConditions(); - thermo.rho() = max(thermo.rho(), rhoMin); - thermo.rho() = min(thermo.rho(), rhoMax); + rho = thermo.rho(); if (!simple.transonic()) { rho.relax(); } - - Info<< "rho max/min : " - << max(rho).value() << " " - << min(rho).value() << endl; } diff --git a/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H index 446a7849d0c779a9bf148d18e01770143f62b7ab..c7dc0f864d2997439cbba04ae2ef5a60053e0a98 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H @@ -5,33 +5,34 @@ tUEqn.clear(); bool closedVolume = false; +surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA)); +MRF.makeRelative(fvc::interpolate(rho), phiHbyA); + +volScalarField rhorAtU("rhorAtU", rho*rAtU); + +// Update the pressure BCs to ensure flux consistency +constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF); + if (simple.transonic()) { surfaceScalarField phid ( "phid", - fvc::interpolate(psi) - *fvc::flux(HbyA) + (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA ); - MRF.makeRelative(fvc::interpolate(psi), phid); - - surfaceScalarField phic - ( - "phic", + phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf() - ); + - fvc::interpolate(p)*phid; HbyA -= (rAU - rAtU)*fvc::grad(p); - volScalarField rhorAtU("rhorAtU", rho*rAtU); - while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( - fvm::div(phid, p) - + fvc::div(phic) + fvc::div(phiHbyA) + + fvm::div(phid, p) - fvm::laplacian(rhorAtU, p) == fvOptions(psi, p, rho.name()) @@ -40,31 +41,27 @@ if (simple.transonic()) // Relax the pressure equation to maintain diagonal dominance pEqn.relax(); - pEqn.setReference(pRefCell, pRefValue); + pEqn.setReference + ( + pressureControl.refCell(), + pressureControl.refValue() + ); pEqn.solve(); if (simple.finalNonOrthogonalIter()) { - phi == phic + pEqn.flux(); + phi = phiHbyA + pEqn.flux(); } } } else { - surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA)); - MRF.makeRelative(fvc::interpolate(rho), phiHbyA); - closedVolume = adjustPhi(phiHbyA, U, p); phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf(); HbyA -= (rAU - rAtU)*fvc::grad(p); - volScalarField rhorAtU("rhorAtU", rho*rAtU); - - // Update the pressure BCs to ensure flux consistency - constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF); - while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -75,7 +72,11 @@ else fvOptions(psi, p, rho.name()) ); - pEqn.setReference(pRefCell, pRefValue); + pEqn.setReference + ( + pressureControl.refCell(), + pressureControl.refValue() + ); pEqn.solve(); @@ -97,6 +98,8 @@ U = HbyA - rAtU*fvc::grad(p); U.correctBoundaryConditions(); fvOptions.correct(U); +pressureControl.limit(p); + // For closed-volume cases adjust the pressure and density levels // to obey overall mass continuity if (closedVolume) @@ -105,16 +108,12 @@ if (closedVolume) /fvc::domainIntegrate(psi); } +p.correctBoundaryConditions(); + // Recalculate density from the relaxed pressure rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -thermo.rho() = max(thermo.rho(), rhoMin); -thermo.rho() = min(thermo.rho(), rhoMax); if (!simple.transonic()) { rho.relax(); } - -Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl; diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H deleted file mode 100644 index 56e78ff63080022531acae263d36f1151f919a95..0000000000000000000000000000000000000000 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H +++ /dev/null @@ -1,26 +0,0 @@ -{ - volScalarField& he = thermo.he(); - - fvScalarMatrix EEqn - ( - fvm::div(phi, he) - + ( - he.name() == "e" - ? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho)) - : fvc::div(phi, volScalarField("K", 0.5*magSqr(U))) - ) - - fvm::laplacian(turbulence->alphaEff(), he) - == - fvOptions(rho, he) - ); - - EEqn.relax(); - - fvOptions.constrain(EEqn); - - EEqn.solve(); - - fvOptions.correct(he); - - thermo.correct(); -} diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H deleted file mode 100644 index e7136c52d0d4965c5432f38c5af7d765347b473f..0000000000000000000000000000000000000000 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H +++ /dev/null @@ -1,84 +0,0 @@ -Info<< "Reading thermophysical properties\n" << endl; - -autoPtr<rhoThermo> pThermo -( - rhoThermo::New(mesh) -); -rhoThermo& thermo = pThermo(); -thermo.validate(args.executable(), "h", "e"); - -volScalarField rho -( - IOobject - ( - "rho", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), - thermo.rho() -); - -volScalarField& p = thermo.p(); - -Info<< "Reading field U\n" << endl; -volVectorField U -( - IOobject - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh -); - -#include "compressibleCreatePhi.H" - - -label pRefCell = 0; -scalar pRefValue = 0.0; -setRefCell(p, simple.dict(), pRefCell, pRefValue); - -mesh.setFluxRequired(p.name()); - -dimensionedScalar rhoMax -( - dimensionedScalar::lookupOrDefault - ( - "rhoMax", - simple.dict(), - dimDensity, - GREAT - ) -); - -dimensionedScalar rhoMin -( - dimensionedScalar::lookupOrDefault - ( - "rhoMin", - simple.dict(), - dimDensity, - 0 - ) -); - -Info<< "Creating turbulence model\n" << endl; -autoPtr<compressible::turbulenceModel> turbulence -( - compressible::turbulenceModel::New - ( - rho, - U, - phi, - thermo - ) -); - -dimensionedScalar initialMass = fvc::domainIntegrate(rho); - -#include "createMRF.H" diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H index cdabc4dad9861ae71d19a708ef9301ec0642867c..4167f80e599f1b35efc9f7fdef280b2a84bec427 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H @@ -48,7 +48,11 @@ fvScalarMatrix& pEqn = tpEqn.ref(); - pEqn.setReference(pRefCell, pRefValue); + pEqn.setReference + ( + pressureControl.refCell(), + pressureControl.refValue() + ); pEqn.solve(); @@ -75,6 +79,8 @@ U.correctBoundaryConditions(); fvOptions.correct(U); + pressureControl.limit(p); + // For closed-volume cases adjust the pressure and density levels // to obey overall mass continuity if (closedVolume) @@ -84,14 +90,5 @@ } rho = thermo.rho(); - rho = max(rho, rhoMin); - rho = min(rho, rhoMax); - - thermo.rho() = max(thermo.rho(), rhoMin); - thermo.rho() = min(thermo.rho(), rhoMax); - rho.relax(); - Info<< "rho max/min : " - << max(rho).value() << " " - << min(rho).value() << endl; } diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C index 249984ed22039f923f337e95ed20018ea4030cf8..548a7dd1307768e3e56e100a6d2fec0445082a16 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C +++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,11 +34,12 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "rhoThermo.H" +#include "fluidThermo.H" #include "turbulentFluidThermoModel.H" +#include "simpleControl.H" +#include "pressureControl.H" #include "fvOptions.H" #include "IOporosityModelList.H" -#include "simpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C index 63f00f881d594f8335ed3f982e648b2c3ace60c3..9cae9c3e28ad28a956ac43554ef9a66c74c58d7c 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C +++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,9 +33,10 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "rhoThermo.H" +#include "fluidThermo.H" #include "turbulentFluidThermoModel.H" #include "simpleControl.H" +#include "pressureControl.H" #include "fvOptions.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/readThermodynamicProperties.H b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/readThermodynamicProperties.H index 82ebe7ae30f210d690ff15e035f31e9040d14543..8f420d91c691c7fe7459a237dfca2219bf609985 100644 --- a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/readThermodynamicProperties.H +++ b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/readThermodynamicProperties.H @@ -1,37 +1,37 @@ - Info<< "Reading thermodynamicProperties\n" << endl; +Info<< "Reading thermodynamicProperties\n" << endl; - IOdictionary thermodynamicProperties +IOdictionary thermodynamicProperties +( + IOobject ( - IOobject - ( - "thermodynamicProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); + "thermodynamicProperties", + runTime.constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) +); - dimensionedScalar rho0 - ( - "rho0", - dimDensity, - thermodynamicProperties - ); +dimensionedScalar rho0 +( + "rho0", + dimDensity, + thermodynamicProperties +); - dimensionedScalar p0 - ( - "p0", - dimPressure, - thermodynamicProperties - ); +dimensionedScalar p0 +( + "p0", + dimPressure, + thermodynamicProperties +); - dimensionedScalar psi - ( - "psi", - dimCompressibility, - thermodynamicProperties - ); +dimensionedScalar psi +( + "psi", + dimCompressibility, + thermodynamicProperties +); - // Density offset, i.e. the constant part of the density - dimensionedScalar rhoO("rhoO", rho0 - psi*p0); +// Density offset, i.e. the constant part of the density +dimensionedScalar rhoO("rhoO", rho0 - psi*p0); diff --git a/applications/solvers/electromagnetics/magneticFoam/magnet.H b/applications/solvers/electromagnetics/magneticFoam/magnet.H index 7e9b04a4c5167922f15f7cbd4852c5921cb0942c..8f15c69635d82b92e28a408966daa30b5c61e94d 100644 --- a/applications/solvers/electromagnetics/magneticFoam/magnet.H +++ b/applications/solvers/electromagnetics/magneticFoam/magnet.H @@ -138,9 +138,7 @@ public: >> m.orientation_; is.readEnd("magnet"); - // Check state of Istream - is.check("operator>>(Istream&, magnet&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/applications/solvers/electromagnetics/mhdFoam/readBPISOControls.H b/applications/solvers/electromagnetics/mhdFoam/readBPISOControls.H index 5ddbdab95ea330941806173082a6d8fb006fe6d2..7f280b8aa3d13897c0cf24d0a9ea0b25010bd353 100644 --- a/applications/solvers/electromagnetics/mhdFoam/readBPISOControls.H +++ b/applications/solvers/electromagnetics/mhdFoam/readBPISOControls.H @@ -1,4 +1,3 @@ const dictionary& Bpiso = mesh.solutionDict().subDict("BPISO"); const int nBcorr = Bpiso.lookupOrDefault<int>("nCorrectors", 1); - diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H index ddd21254a9d7cddc28394c8f740a02730af47db5..f0a7e3ad365a9e8649dc95756df7d6a223ad6633 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H @@ -18,7 +18,7 @@ - fvm::laplacian(turbulence->alphaEff(), he) == rho*(U&g) - + radiation->Sh(thermo) + + radiation->Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H index b9782d3f738e2a2d6c96531d4e0236de1dca9371..e932d2fdefcd5699bc12962bfbb05bf49b8dddba 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H @@ -12,7 +12,7 @@ - fvm::laplacian(turbulence->alphaEff(), he) == rho*(U&g) - + radiation->Sh(thermo) + + radiation->Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H index b61847886081fd140ae6ab347cf7ab6a2714a8b4..daf3af8f2db83b177bc90ae01cf9be4d8e7187ee 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H @@ -12,7 +12,7 @@ - fvm::laplacian(turb.alphaEff(), he) == rho*(U&g) - + rad.Sh(thermo) + + rad.Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionSIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionSIMPLEControls.H index 616fabd7fec5945207a9ce183c798e8696b900fe..66fd738d7a32faf638ecd986fb04d4b4e682962a 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionSIMPLEControls.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionSIMPLEControls.H @@ -2,4 +2,3 @@ const int nNonOrthCorr = simple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0); - diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H index eafea3fd4c8a189d8df7c206437065cd698c2856..d8f4516f5e26ab8fbd4108c451f8702655c11141 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H @@ -18,7 +18,7 @@ - fvm::laplacian(turb.alphaEff(), he) == rho*(U&g) - + rad.Sh(thermo) + + rad.Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffNo.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffNo.C index de5307c11bcf4fde2c5ec521f2c3b3dcf38852bd..e1c501f1b9f2f6cd958203b45b9e9eb0fc7f565a 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffNo.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffNo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,7 +24,9 @@ License \*---------------------------------------------------------------------------*/ #include "solidRegionDiffNo.H" -#include "fvc.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Foam::scalar Foam::solidRegionDiffNo ( @@ -34,21 +36,16 @@ Foam::scalar Foam::solidRegionDiffNo const volScalarField& kappa ) { - scalar DiNum = 0.0; - scalar meanDiNum = 0.0; - - //- Take care: can have fluid domains with 0 cells so do not test for - // zero internal faces. surfaceScalarField kapparhoCpbyDelta ( - mesh.surfaceInterpolation::deltaCoeffs() - * fvc::interpolate(kappa) - / fvc::interpolate(Cprho) + sqr(mesh.surfaceInterpolation::deltaCoeffs()) + *fvc::interpolate(kappa) + /fvc::interpolate(Cprho) ); - DiNum = max(kapparhoCpbyDelta).value()*runTime.deltaT().value(); - - meanDiNum = (average(kapparhoCpbyDelta)).value()*runTime.deltaT().value(); + const scalar DiNum = max(kapparhoCpbyDelta).value()*runTime.deltaTValue(); + const scalar meanDiNum = + average(kapparhoCpbyDelta).value()*runTime.deltaTValue(); Info<< "Region: " << mesh.name() << " Diffusion Number mean: " << meanDiNum << " max: " << DiNum << endl; diff --git a/applications/solvers/heatTransfer/thermoFoam/EEqn.H b/applications/solvers/heatTransfer/thermoFoam/EEqn.H index 51232bf0bec20f7dfead229401a45bc5ca2ec706..98a248ac35ae47bada3bbca30859ae9dfbeb616f 100644 --- a/applications/solvers/heatTransfer/thermoFoam/EEqn.H +++ b/applications/solvers/heatTransfer/thermoFoam/EEqn.H @@ -17,7 +17,7 @@ ) - fvm::laplacian(alphaEff, he) == - radiation->Sh(thermo) + radiation->Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointShapeOptimizationFoam.C b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointShapeOptimizationFoam.C index ccbe3b814160f1b25d9659d3061bfdef4be03f21..7296a8cb37b5e83b70ac4e1a315b7c53ce1977ab 100644 --- a/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointShapeOptimizationFoam.C +++ b/applications/solvers/incompressible/adjointShapeOptimizationFoam/adjointShapeOptimizationFoam.C @@ -93,8 +93,6 @@ int main(int argc, char *argv[]) { Info<< "Time = " << runTime.timeName() << nl << endl; - laminarTransport.lookup("lambda") >> lambda; - //alpha += // mesh.relaxationFactor("alpha") // *(lambda*max(Ua & U, zeroSensitivity) - alpha); diff --git a/applications/solvers/incompressible/adjointShapeOptimizationFoam/createFields.H b/applications/solvers/incompressible/adjointShapeOptimizationFoam/createFields.H index 93da72123d65d759c4b0b5f94652471b1d6b4925..bba352e71c9a14b1408f19accdbe888971e8430a 100644 --- a/applications/solvers/incompressible/adjointShapeOptimizationFoam/createFields.H +++ b/applications/solvers/incompressible/adjointShapeOptimizationFoam/createFields.H @@ -89,8 +89,19 @@ autoPtr<incompressible::turbulenceModel> turbulence dimensionedScalar zeroSensitivity("0", dimVelocity*dimVelocity, 0.0); dimensionedScalar zeroAlpha("0", dimless/dimTime, 0.0); -dimensionedScalar lambda(laminarTransport.lookup("lambda")); -dimensionedScalar alphaMax(laminarTransport.lookup("alphaMax")); +dimensionedScalar lambda +( + "lambda", + dimTime/sqr(dimLength), + laminarTransport +); + +dimensionedScalar alphaMax +( + "alphaMax", + dimless/dimTime, + laminarTransport +); const labelList& inletCells = mesh.boundary()["inlet"].faceCells(); //const labelList& outletCells = mesh.boundary()["outlet"].faceCells(); diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C index 241ae11c3d9bec77b8dca07ea86e46252e3e3dfd..3c0f7b99e2631988a9a1c73a7dad1fb93efb2007 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,7 +70,6 @@ int main(int argc, char *argv[]) { #include "readControls.H" #include "CourantNo.H" - #include "setDeltaT.H" runTime++; diff --git a/applications/solvers/lagrangian/DPMFoam/Allwclean b/applications/solvers/lagrangian/DPMFoam/Allwclean index f953f59874023350202867bd0c2c2a9a2bd89be2..b78c67f6611505b485b092058d76e54dfa05e735 100755 --- a/applications/solvers/lagrangian/DPMFoam/Allwclean +++ b/applications/solvers/lagrangian/DPMFoam/Allwclean @@ -2,7 +2,10 @@ cd ${0%/*} || exit 1 # Run from this directory wclean libso DPMTurbulenceModels + wclean wclean MPPICFoam +wclean DPMDyMFoam +wclean DPMDyMFoam/MPPICDyMFoam #------------------------------------------------------------------------------ diff --git a/applications/solvers/lagrangian/DPMFoam/Allwmake b/applications/solvers/lagrangian/DPMFoam/Allwmake index 2af858f6bb9bc21b7e27284ac72bda06fce8898d..e3c5370297acb017e4eaeeb03313a8bea6084cfa 100755 --- a/applications/solvers/lagrangian/DPMFoam/Allwmake +++ b/applications/solvers/lagrangian/DPMFoam/Allwmake @@ -1,5 +1,5 @@ #!/bin/sh -cd ${0%/*} || exit 1 +cd ${0%/*} || exit 1 # Run from this directory # Parse arguments for library compilation . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments @@ -8,5 +8,7 @@ wmake $targetType DPMTurbulenceModels wmake $targetType wmake $targetType MPPICFoam +wmake $targetType DPMDyMFoam +wmake $targetType DPMDyMFoam/MPPICDyMFoam #------------------------------------------------------------------------------ diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C new file mode 100644 index 0000000000000000000000000000000000000000..aec4c643045d6b8303571eeee84531d17622b1d0 --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C @@ -0,0 +1,163 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 + DPMDyMFoam + +Description + Transient solver for the coupled transport of a single kinematic particle + cloud including the effect of the volume fraction of particles on the + continuous phase, with optional mesh motion and mesh topology changes. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "dynamicFvMesh.H" +#include "singlePhaseTransportModel.H" +#include "PhaseIncompressibleTurbulenceModel.H" +#include "pimpleControl.H" +#include "CorrectPhi.H" + +#ifdef MPPIC + #include "basicKinematicMPPICCloud.H" + #define basicKinematicTypeCloud basicKinematicMPPICCloud +#else + #include "basicKinematicCollidingCloud.H" + #define basicKinematicTypeCloud basicKinematicCollidingCloud +#endif + +int main(int argc, char *argv[]) +{ + argList::addOption + ( + "cloudName", + "name", + "specify alternative cloud name. default is 'kinematicCloud'" + ); + + #include "postProcess.H" + + #include "setRootCase.H" + #include "createTime.H" + #include "createDynamicFvMesh.H" + #include "createControls.H" + #include "createFields.H" + #include "createUcf.H" + #include "initContinuityErrs.H" + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readControls.H" + #include "CourantNo.H" + #include "setDeltaT.H" + + runTime++; + + Info<< "Time = " << runTime.timeName() << nl << endl; + + mesh.update(); + + // Calculate absolute flux from the mapped surface velocity + phic = mesh.Sf() & Ucf; + + if (mesh.changing() && correctPhi) + { + #include "correctPhic.H" + } + + // Make the flux relative to the mesh motion + fvc::makeRelative(phic, Uc); + + if (mesh.changing() && checkMeshCourantNo) + { + #include "meshCourantNo.H" + } + + continuousPhaseTransport.correct(); + muc = rhoc*continuousPhaseTransport.nu(); + + Info<< "Evolving " << kinematicCloud.name() << endl; + kinematicCloud.evolve(); + + // Update continuous phase volume fraction field + alphac = max(1.0 - kinematicCloud.theta(), alphacMin); + alphac.correctBoundaryConditions(); + alphacf = fvc::interpolate(alphac); + alphaPhic = alphacf*phic; + + fvVectorMatrix cloudSU(kinematicCloud.SU(Uc)); + volVectorField cloudVolSUSu + ( + IOobject + ( + "cloudVolSUSu", + runTime.timeName(), + mesh + ), + mesh, + dimensionedVector + ( + "0", + cloudSU.dimensions()/dimVolume, + Zero + ), + zeroGradientFvPatchVectorField::typeName + ); + + cloudVolSUSu.primitiveFieldRef() = -cloudSU.source()/mesh.V(); + cloudVolSUSu.correctBoundaryConditions(); + cloudSU.source() = Zero; + + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) + { + #include "UcEqn.H" + + // --- PISO loop + while (pimple.correct()) + { + #include "pEqn.H" + } + + if (pimple.turbCorr()) + { + continuousPhaseTurbulence->correct(); + } + } + + runTime.write(); + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << nl << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C new file mode 100644 index 0000000000000000000000000000000000000000..ba5dc1bc8526239dfbcf8c57f62f42b9a95e7bed --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 + MPPICDyMFoam + +Description + Transient solver for the coupled transport of a single kinematic particle + cloud including the effect of the volume fraction of particles on the + continuous phase. Multi-Phase Particle In Cell (MPPIC) modeling is used to + represent collisions without resolving particle-particle interactions, + with optional mesh motion and mesh topology changes. + +\*---------------------------------------------------------------------------*/ + +#define MPPIC + +#include "DPMDyMFoam.C" + + +// ************************************************************************* // diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..d25393d1ff0a46a0ee21f07455b6c9af34131864 --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files @@ -0,0 +1,3 @@ +MPPICDyMFoam.C + +EXE = $(FOAM_APPBIN)/MPPICDyMFoam diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..8b16d20d0611dc78af3e806394db524628c0f493 --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options @@ -0,0 +1,42 @@ +EXE_INC = \ + -I.. \ + -I../.. \ + -I../DPMTurbulenceModels/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ + -I$(LIB_SRC)/transportModels \ + -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \ + -I$(LIB_SRC)/regionModels/regionModel/lnInclude \ + -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \ + -I$(LIB_SRC)/dynamicFvMesh/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lfvOptions \ + -lmeshTools \ + -llagrangian \ + -llagrangianIntermediate \ + -llagrangianTurbulence \ + -lspecie \ + -lradiationModels \ + -lincompressibleTransportModels \ + -lturbulenceModels \ + -lincompressibleTurbulenceModels \ + -lDPMTurbulenceModels \ + -lregionModels \ + -lsurfaceFilmModels \ + -lsampling \ + -ldynamicFvMesh \ + -ltopoChangerFvMesh \ + -ldynamicMesh diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..c3354998ef91b60a96b9cbb3517843fb004316fb --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files @@ -0,0 +1,3 @@ +DPMDyMFoam.C + +EXE = $(FOAM_APPBIN)/DPMDyMFoam diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..a4c0fcc139cffdbf6e35a46ac67b6090531f2e72 --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options @@ -0,0 +1,41 @@ +EXE_INC = \ + -I.. \ + -I../DPMTurbulenceModels/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ + -I$(LIB_SRC)/transportModels \ + -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \ + -I$(LIB_SRC)/regionModels/regionModel/lnInclude \ + -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/dynamicFvMesh/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +EXE_LIBS = \ + -llagrangian \ + -llagrangianIntermediate \ + -llagrangianTurbulence \ + -lspecie \ + -lradiationModels \ + -lincompressibleTransportModels \ + -lturbulenceModels \ + -lincompressibleTurbulenceModels \ + -lDPMTurbulenceModels \ + -lregionModels \ + -lsurfaceFilmModels \ + -lsampling \ + -lfiniteVolume \ + -lfvOptions \ + -lmeshTools \ + -ldynamicFvMesh \ + -ltopoChangerFvMesh \ + -ldynamicMesh diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H new file mode 100644 index 0000000000000000000000000000000000000000..46ef721fa2217b2e58bd30568ea6e8cf5d1988bb --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H @@ -0,0 +1,11 @@ +CorrectPhi +( + Uc, + phic, + p, + dimensionedScalar("rAUf", dimTime, 1), + geometricZeroField(), + pimple +); + +#include "continuityErrs.H" diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createControls.H b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createControls.H new file mode 100644 index 0000000000000000000000000000000000000000..bee8bd4f39ebd2444f37099dc020828c6cc756fc --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createControls.H @@ -0,0 +1,12 @@ +#include "createControl.H" +#include "createTimeControls.H" + +bool correctPhi +( + pimple.dict().lookupOrDefault("correctPhi", false) +); + +bool checkMeshCourantNo +( + pimple.dict().lookupOrDefault("checkMeshCourantNo", false) +); diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/IMULES.C b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H similarity index 69% rename from src/finiteVolume/fvMatrices/solvers/MULES/IMULES.C rename to applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H index 62bda3abcbcaa6ab0ec01a87cddd03d238446f19..bdd9898b69a3c84d4f06cccf6352e12ab7efbd71 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/IMULES.C +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H @@ -2,8 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -21,34 +21,29 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -\*---------------------------------------------------------------------------*/ +Global + createUcf + +Description + Creates and initialises the velocity velocity field Ucf. -#include "IMULES.H" -#include "profiling.H" +\*---------------------------------------------------------------------------*/ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -void Foam::MULES::implicitSolve +Info<< "Reading/calculating continuous phase face velocity Ucf\n" << endl; + +surfaceVectorField Ucf ( - volScalarField& psi, - const surfaceScalarField& phi, - surfaceScalarField& phiPsi, - const scalar psiMax, - const scalar psiMin -) -{ - addProfiling(solve, "MULES::implicitSolve"); - - implicitSolve + IOobject ( - geometricOneField(), - psi, - phi, - phiPsi, - zeroField(), zeroField(), - psiMax, psiMin - ); -} - + "Ucf", + runTime.timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + fvc::interpolate(Uc) +); // ************************************************************************* // diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H new file mode 100644 index 0000000000000000000000000000000000000000..dd4d382befaed467343166d527cb864dc9b6d72e --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H @@ -0,0 +1,62 @@ +{ + volVectorField HbyA(constrainHbyA(rAUc*UcEqn.H(), Uc, p)); + + surfaceScalarField phiHbyA + ( + "phiHbyA", + ( + fvc::flux(HbyA) + + alphacf*rAUcf*fvc::ddtCorr(Uc, Ucf) + ) + ); + + if (p.needReference()) + { + fvc::makeRelative(phiHbyA, Uc); + adjustPhi(phiHbyA, Uc, p); + fvc::makeAbsolute(phiHbyA, Uc); + } + + phiHbyA += phicForces; + + // Update the pressure BCs to ensure flux consistency + constrainPressure(p, Uc, phiHbyA, rAUcf); + + // Non-orthogonal pressure corrector loop + while (pimple.correctNonOrthogonal()) + { + fvScalarMatrix pEqn + ( + fvm::laplacian(alphacf*rAUcf, p) + == + fvc::ddt(alphac) + fvc::div(alphacf*phiHbyA) + ); + + pEqn.setReference(pRefCell, pRefValue); + + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); + + if (pimple.finalNonOrthogonalIter()) + { + phic = phiHbyA - pEqn.flux()/alphacf; + + p.relax(); + + Uc = HbyA + + rAUc + *fvc::reconstruct((phicForces - pEqn.flux()/alphacf)/rAUcf); + Uc.correctBoundaryConditions(); + + { + Ucf = fvc::interpolate(Uc); + surfaceVectorField n(mesh.Sf()/mesh.magSf()); + Ucf += n*(phic/mesh.magSf() - (n & Ucf)); + } + + // Make the fluxes relative to the mesh motion + fvc::makeRelative(phic, Uc); + } + } +} + +#include "continuityErrs.H" diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/readControls.H b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/readControls.H new file mode 100644 index 0000000000000000000000000000000000000000..9f982e260b0c9e61062f7aff3e21048f3bcfd9e9 --- /dev/null +++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/readControls.H @@ -0,0 +1,5 @@ +#include "readTimeControls.H" + +correctPhi = pimple.dict().lookupOrDefault("correctPhi", false); + +checkMeshCourantNo = pimple.dict().lookupOrDefault("checkMeshCourantNo", false); diff --git a/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options index aed69697244a2b8eb9550f6e6de1dacfd07c75d2..b0eaf6453e16bd77634bbe54c3671ca376eda2c3 100644 --- a/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options +++ b/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options @@ -25,7 +25,6 @@ EXE_LIBS = \ -llagrangian \ -llagrangianIntermediate \ -llagrangianTurbulence \ - -lthermophysicalFunctions \ -lspecie \ -lradiationModels \ -lincompressibleTransportModels \ diff --git a/applications/solvers/lagrangian/DPMFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/Make/options index 8ab44318e61198d5cfa66cc4fdf1aac57d60814f..b1f295e2947b41d4061922b3a75f13871eaeaa2a 100644 --- a/applications/solvers/lagrangian/DPMFoam/Make/options +++ b/applications/solvers/lagrangian/DPMFoam/Make/options @@ -21,7 +21,6 @@ EXE_LIBS = \ -llagrangian \ -llagrangianIntermediate \ -llagrangianTurbulence \ - -lthermophysicalFunctions \ -lspecie \ -lradiationModels \ -lincompressibleTransportModels \ diff --git a/applications/solvers/lagrangian/DPMFoam/pEqn.H b/applications/solvers/lagrangian/DPMFoam/pEqn.H index 9e465511221baf25438c93e5b2828c3aba915fd0..ea0bd1c101d9e27a89eea1db2f37bfb66e27d92f 100644 --- a/applications/solvers/lagrangian/DPMFoam/pEqn.H +++ b/applications/solvers/lagrangian/DPMFoam/pEqn.H @@ -1,6 +1,5 @@ { - volVectorField HbyA("HbyA", Uc); - HbyA = rAUc*UcEqn.H(); + volVectorField HbyA(constrainHbyA(rAUc*UcEqn.H(), Uc, p)); surfaceScalarField phiHbyA ( @@ -8,10 +7,16 @@ ( fvc::flux(HbyA) + alphacf*rAUcf*fvc::ddtCorr(Uc, phic) - + phicForces ) ); + if (p.needReference()) + { + adjustPhi(phiHbyA, Uc, p); + } + + phiHbyA += phicForces; + // Update the pressure BCs to ensure flux consistency constrainPressure(p, Uc, phiHbyA, rAUcf); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H index 8d329326075677c1d35e941992e5b4720094a0bd..6f1ad9041be7b2f2189f19ead351d9ba948dd7b9 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H @@ -18,10 +18,10 @@ - fvm::laplacian(turbulence->alphaEff(), he) == rho*(U&g) - + combustion->Sh() + + Qdot + coalParcels.Sh(he) + limestoneParcels.Sh(he) - + radiation->Sh(thermo) + + radiation->Sh(thermo, he) + fvOptions(rho, he) ); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/Make/options b/applications/solvers/lagrangian/coalChemistryFoam/Make/options index 9c23effa57373afc7932868554a5459f9f3d3f79..7e4d2dccfcf1af3c9d4163d60c14ff11025fdbd4 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/Make/options +++ b/applications/solvers/lagrangian/coalChemistryFoam/Make/options @@ -10,10 +10,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -38,11 +35,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index 4edbce9b42bda61e8c6ced0c5ba90149f6cb193b..49e3f70d896bdfa37fab8bf09f9ad2f7324eac33 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -12,7 +12,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H index d3daf7265c100b005f29aeeebb6db76f865ccb8d..4e4f45e72168605ae6b5c1ce90775f88b23fbf53 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H @@ -131,18 +131,18 @@ volScalarField dpdt Info<< "Creating field kinetic energy K\n" << endl; volScalarField K("K", 0.5*magSqr(U)); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/coalChemistryFoam/setRDeltaT.H b/applications/solvers/lagrangian/coalChemistryFoam/setRDeltaT.H index 7e2ed6074dc069fa3db1524fecc5a6f1ae22e21b..c31ad040a119f80eb87cbd20a727b584f1240791 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/setRDeltaT.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/setRDeltaT.H @@ -80,7 +80,7 @@ License ( (coalParcels.hsTrans() + limestoneParcels.hsTrans()) /(mesh.V()*runTime.deltaT()) - + combustion->Sh()() + + Qdot ) /( alphaTemp diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options index 0004a128e41c191308b8f6d96fd51baa3c8853cd..aebc4519bb8964c6314caf434809542302f07937 100644 --- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options +++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options @@ -19,7 +19,6 @@ EXE_LIBS = \ -llagrangian \ -llagrangianIntermediate \ -llagrangianTurbulence \ - -lthermophysicalFunctions \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelDyMFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelDyMFoam/Make/options index 4f94e7f64f82dc68f02b3647fcda7bc82ec031a7..76fa725a3abde5aedd70b36f63f52d01aff60010 100644 --- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelDyMFoam/Make/options +++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelDyMFoam/Make/options @@ -23,7 +23,6 @@ EXE_LIBS = \ -llagrangian \ -llagrangianIntermediate \ -llagrangianTurbulence \ - -lthermophysicalFunctions \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H index 4c2d95da9dad0d19656bd96ffbeab86f4929325b..4d112da030fc2582f9cf4a871acf1ad7708d83ed 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H @@ -20,8 +20,8 @@ rho*(U&g) + parcels.Sh(he) + surfaceFilm.Sh() - + radiation->Sh(thermo) - + combustion->Sh() + + radiation->Sh(thermo, he) + + Qdot + fvOptions(rho, he) ); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options index 014cd4e35633810c2dabe2998faef71cc31ede92..eab72a2389a38e3dc73c2da7fee38653a81bcd5e 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options @@ -9,10 +9,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -36,9 +33,6 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H index 555b5bc0bc086f72ea02b719c9554c5666a0f8d2..eb248990138b104aa3f8236c81af391cded3aba6 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -12,7 +12,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H index 8ec3c94169eed01cfdd1102467fdb2b579c20b3b..0159cdba15ba17eff01f006a881833aae36e2290 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H @@ -134,18 +134,18 @@ Switch solvePrimaryRegion additionalControlsDict.lookup("solvePrimaryRegion") ); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H index 194e03c59d70872c7567c63537f4447df421c283..42185b8afb2332149626b786066ff9d4cf01c716 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H @@ -19,8 +19,8 @@ == rho*(U&g) + parcels.Sh(he) - + radiation->Sh(thermo) - + combustion->Sh() + + radiation->Sh(thermo, he) + + Qdot + fvOptions(rho, he) ); @@ -35,6 +35,6 @@ thermo.correct(); radiation->correct(); - Info<< "T gas min/max = " << min(T).value() << ", " + Info<< "T gas min/max " << min(T).value() << ", " << max(T).value() << endl; } diff --git a/applications/solvers/lagrangian/reactingParcelFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFoam/Make/options index f39888db2fe44dbd7b01ebfab68f8757759de231..803834700611d015a9fd0e4fbbe2798f36add1c6 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/Make/options +++ b/applications/solvers/lagrangian/reactingParcelFoam/Make/options @@ -11,10 +11,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -39,11 +36,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H index db6628936c99f996d55168def6f6030e702dde0b..60a27fec85833d15116b0ac73b6e90bc9e6274d4 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H @@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H index e5ed566eba8f5ee15e5b2682269b664f3f2cf476..2da47d4ced967bd25f37106683e8fde0654fc5a3 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H @@ -121,18 +121,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/setRDeltaT.H b/applications/solvers/lagrangian/reactingParcelFoam/setRDeltaT.H index 63398fb00101780f541008b21ab8d93ffee0e194..28bc211e058399377c0695fb577b047fda760245 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/setRDeltaT.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/setRDeltaT.H @@ -79,7 +79,7 @@ License mag ( parcels.hsTrans()/(mesh.V()*runTime.deltaT()) - + combustion->Sh()() + + Qdot ) /( alphaTemp diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H index 8239d4462161372d7e9dd581b3e8a8568c400e39..c8baf6beab60d9092c5eaec99533556a4484cca5 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H @@ -13,8 +13,8 @@ == rho*(U&g) + parcels.Sh(he) - + radiation->Sh(thermo) - + combustion->Sh() + + radiation->Sh(thermo, he) + + Qdot + fvOptions(rho, he) ); diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/Make/options index f39888db2fe44dbd7b01ebfab68f8757759de231..803834700611d015a9fd0e4fbbe2798f36add1c6 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/Make/options +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/Make/options @@ -11,10 +11,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -39,11 +36,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H index 7c7cf9a4c0b4faab42b449f2e43306a44f668ce1..1510f8e391e96e150ceed2d95980e8fb49b00226 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H @@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H index 16f297c995627b3b81e490e861430e94b4117972..328fc672242e79696dfa283fabbbe9c097858fd5 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H @@ -103,18 +103,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C index b3504da91a555bc5c0402bdf0c1a6bbf5c591ca7..bbec4a41ab9062ac64daa3258e8f8bad7b3169b0 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C @@ -38,7 +38,6 @@ Description #include "basicReactingMultiphaseCloud.H" #include "rhoCombustionModel.H" #include "radiationModel.H" -#include "IOporosityModelList.H" #include "fvOptions.H" #include "SLGThermo.H" #include "simpleControl.H" diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H index 8239d4462161372d7e9dd581b3e8a8568c400e39..2741ad3f964e705096f30cb4a993513a9ead2eaf 100644 --- a/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H +++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H @@ -12,9 +12,9 @@ - fvm::laplacian(turbulence->alphaEff(), he) == rho*(U&g) + + Qdot + parcels.Sh(he) - + radiation->Sh(thermo) - + combustion->Sh() + + radiation->Sh(thermo, he) + fvOptions(rho, he) ); @@ -25,6 +25,7 @@ EEqn.solve(); fvOptions.correct(he); + thermo.correct(); radiation->correct(); diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options b/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options index d88ca09eae12108f47440717bbc676844645a4f1..433d27ec0712279f9697df75306eaf726c80d593 100644 --- a/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options +++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options @@ -10,10 +10,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -37,11 +34,6 @@ EXE_LIBS = \ -llagrangianTurbulence \ -lspecie \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H index 7c7cf9a4c0b4faab42b449f2e43306a44f668ce1..1510f8e391e96e150ceed2d95980e8fb49b00226 100644 --- a/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H @@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection { combustion->correct(); - dQ = combustion->dQ(); + Qdot = combustion->Qdot(); volScalarField Yt(0.0*Y[0]); forAll(Y, i) diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H index 16f297c995627b3b81e490e861430e94b4117972..ae5129fbc2db99b62a358b2f02c4a835967e02d4 100644 --- a/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H @@ -103,18 +103,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/sprayFoam/Make/options b/applications/solvers/lagrangian/sprayFoam/Make/options index 35233e06cbafc7cccf149005cdf9012b5840a194..75f471f27093107093bc4f5005ac91d0de62b89c 100644 --- a/applications/solvers/lagrangian/sprayFoam/Make/options +++ b/applications/solvers/lagrangian/sprayFoam/Make/options @@ -13,10 +13,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -37,11 +34,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/sprayFoam/createFields.H b/applications/solvers/lagrangian/sprayFoam/createFields.H index 91b7bc2b6db3a1d0f884a87d20c3cb42d4fc9df3..e2124b368553a4a8c5d5f20661739b4b92c2400a 100644 --- a/applications/solvers/lagrangian/sprayFoam/createFields.H +++ b/applications/solvers/lagrangian/sprayFoam/createFields.H @@ -117,18 +117,18 @@ forAll(Y, i) } fields.add(thermo.he()); -volScalarField dQ +volScalarField Qdot ( IOobject ( - "dQ", + "Qdot", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ); #include "createMRF.H" diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/Make/options b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/Make/options index 75d59e0933fd28df6adf5a431f728b04b0332104..f6f65d7c6c0078f6ddc82b293660ff508584202c 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/Make/options +++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/Make/options @@ -14,10 +14,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -41,11 +38,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C index 666932b2f0b8516847a47d64fa462c75f7885ad9..16d2d524c5b5ebbd5a2e8fc7b1be7c591e39affe 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) if (runTime.write()) { - combustion->dQ()().write(); + combustion->Qdot()().write(); } Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options index 86c7ad23f234bf1a54e67b322da04e2bd9a72c3e..fe32be8cfe6c81676dece3fb3aa2343cb1e7de0c 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options +++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options @@ -15,10 +15,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ @@ -44,11 +41,7 @@ EXE_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lchemistryModel \ diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C index 8509ecaf533f0ce55155da4c795b36d4d0e55186..21646fed97ca9c390306f1160da7c7ffcb297f16 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C @@ -113,7 +113,7 @@ int main(int argc, char *argv[]) if (runTime.write()) { - combustion->dQ()().write(); + combustion->Qdot()().write(); } Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C index 86e8371bf27480635e6e024edc51a45488c58b4f..a4eaaeaad56e2b5bab96459286ca950f52cab177 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C @@ -78,32 +78,42 @@ int main(int argc, char *argv[]) parcels.evolve(); - #include "rhoEqn.H" - - // --- Pressure-velocity PIMPLE corrector loop - while (pimple.loop()) + if (pimple.solveFlow()) { - #include "UEqn.H" - #include "YEqn.H" - #include "EEqn.H" + #include "rhoEqn.H" - // --- Pressure corrector loop - while (pimple.correct()) + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) { - #include "pEqn.H" + #include "UEqn.H" + #include "YEqn.H" + #include "EEqn.H" + + // --- Pressure corrector loop + while (pimple.correct()) + { + #include "pEqn.H" + } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } } - if (pimple.turbCorr()) + rho = thermo.rho(); + + if (runTime.write()) { - turbulence->correct(); + combustion->Qdot()().write(); } } - - rho = thermo.rho(); - - if (runTime.write()) + else { - combustion->dQ()().write(); + if (runTime.writeTime()) + { + parcels.write(); + } } Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options index f9056dd7905e30d5770d168ad74929177cade096..639909b38e0ca08ad74075404d22946835d03522 100644 --- a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options +++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options @@ -17,7 +17,6 @@ EXE_LIBS = \ -llagrangian \ -llagrangianIntermediate \ -llagrangianTurbulence \ - -lthermophysicalFunctions \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ diff --git a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C index d2cab50beeae294139263980c425cd47c1d32d95..62b6b0e18652d15263248e3ddb0e75941e9e56b4 100644 --- a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C +++ b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C @@ -38,6 +38,9 @@ Description #include "fvCFD.H" #include "CMULES.H" +#include "EulerDdtScheme.H" +#include "localEulerDdtScheme.H" +#include "CrankNicolsonDdtScheme.H" #include "subCycle.H" #include "immiscibleIncompressibleTwoPhaseMixture.H" @@ -45,7 +48,7 @@ Description #include "pimpleControl.H" #include "fvOptions.H" #include "CorrectPhi.H" -#include "fixedFluxPressureFvPatchScalarField.H" +#include "fvcSmooth.H" #include "basicKinematicMPPICCloud.H" @@ -59,16 +62,22 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" #include "createControl.H" + #include "createTimeControls.H" #include "initContinuityErrs.H" #include "createFields.H" + #include "createAlphaFluxes.H" #include "createFvOptions.H" - #include "createTimeControls.H" #include "correctPhi.H" - #include "CourantNo.H" - #include "setInitialDeltaT.H" turbulence->validate(); + if (!LTS) + { + #include "readTimeControls.H" + #include "CourantNo.H" + #include "setInitialDeltaT.H" + } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; @@ -76,9 +85,17 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "CourantNo.H" - #include "alphaCourantNo.H" - #include "setDeltaT.H" + + if (LTS) + { + #include "setRDeltaT.H" + } + else + { + #include "CourantNo.H" + #include "alphaCourantNo.H" + #include "setDeltaT.H" + } runTime++; @@ -133,6 +150,8 @@ int main(int argc, char *argv[]) #include "alphaControls.H" #include "alphaEqnSubCycle.H" + mixture.correct(); + #include "UEqn.H" // --- Pressure corrector loop diff --git a/applications/solvers/multiphase/MPPICInterFoam/Make/options b/applications/solvers/multiphase/MPPICInterFoam/Make/options index e298ad1f59935d90d442bcf8a97ed089495f159c..abc0537451c6337c71984756ddd167241eb2a886 100644 --- a/applications/solvers/multiphase/MPPICInterFoam/Make/options +++ b/applications/solvers/multiphase/MPPICInterFoam/Make/options @@ -4,6 +4,7 @@ EXE_INC = \ -I. \ -I./IncompressibleTwoPhaseMixtureTurbulenceModels/lnInclude \ -I$(interFoamPath) \ + -I../VoF \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ @@ -31,7 +32,7 @@ EXE_LIBS = \ -lmeshTools \ -llagrangian \ -llagrangianIntermediate \ - -lthermophysicalFunctions \ + -lthermophysicalProperties \ -lspecie \ -lincompressibleTransportModels \ -limmiscibleIncompressibleTwoPhaseMixture \ diff --git a/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H b/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H deleted file mode 100644 index 97d1428638b7ec86b632ca767157d2fde4ce9e75..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H +++ /dev/null @@ -1,164 +0,0 @@ -{ - word alphaScheme("div(phi,alpha)"); - word alpharScheme("div(phirb,alpha)"); - - // Standard face-flux compression coefficient - surfaceScalarField phic - ( - mixture.cAlpha()*mag(alphaPhic/mesh.magSf()) - ); - - // Add the optional isotropic compression contribution - if (icAlpha > 0) - { - phic *= (1.0 - icAlpha); - phic += (mixture.cAlpha()*icAlpha)*fvc::interpolate(mag(U)); - } - - // Do not compress interface at non-coupled boundary faces - // (inlets, outlets etc.) - surfaceScalarField::Boundary& phicBf = phic.boundaryFieldRef(); - forAll(phic.boundaryField(), patchi) - { - fvsPatchScalarField& phicp = phicBf[patchi]; - - if (!phicp.coupled()) - { - phicp == 0; - } - } - - tmp<surfaceScalarField> tphiAlpha; - - if (MULESCorr) - { - fvScalarMatrix alpha1Eqn - ( - fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alphac, alpha1) - + fv::gaussConvectionScheme<scalar> - ( - mesh, - alphaPhic, - upwind<scalar>(mesh, alphaPhic) - ).fvmDiv(alphaPhic, alpha1) - - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), alpha1) - ); - - alpha1Eqn.solve(); - - Info<< "Phase-1 volume fraction = " - << alpha1.weightedAverage(mesh.Vsc()).value() - << " Min(alpha1) = " << min(alpha1).value() - << " Max(alpha1) = " << max(alpha1).value() - << endl; - - tmp<surfaceScalarField> tphiAlphaUD(alpha1Eqn.flux()); - alphaPhi = tphiAlphaUD(); - - if (alphaApplyPrevCorr && tphiAlphaCorr0.valid()) - { - Info<< "Applying the previous iteration compression flux" << endl; - - MULES::correct - ( - alphac, - alpha1, - alphaPhi, - tphiAlphaCorr0.ref(), - zeroField(), zeroField(), - 1, 0 - ); - - alphaPhi += tphiAlphaCorr0(); - } - - // Cache the upwind-flux - tphiAlphaCorr0 = tphiAlphaUD; - - alpha2 = 1.0 - alpha1; - - mixture.correct(); - } - - for (int aCorr=0; aCorr<nAlphaCorr; aCorr++) - { - surfaceScalarField phir(phic*mixture.nHatf()); - - tmp<surfaceScalarField> tphiAlphaUn - ( - fvc::flux - ( - alphaPhic, - alpha1, - alphaScheme - ) - + fvc::flux - ( - -fvc::flux(-phir, alpha2, alpharScheme), - alpha1, - alpharScheme - ) - ); - - if (MULESCorr) - { - tmp<surfaceScalarField> tphiAlphaCorr(tphiAlphaUn() - alphaPhi); - volScalarField alpha10("alpha10", alpha1); - - //MULES::correct(alpha1, tphiAlphaUn(), tphiAlphaCorr(), 1, 0); - - MULES::correct - ( - alphac, - alpha1, - tphiAlphaUn(), - tphiAlphaCorr.ref(), - zeroField(), zeroField(), - 1, 0 - ); - - // Under-relax the correction for all but the 1st corrector - if (aCorr == 0) - { - alphaPhi += tphiAlphaCorr(); - } - else - { - alpha1 = 0.5*alpha1 + 0.5*alpha10; - alphaPhi += 0.5*tphiAlphaCorr(); - } - } - else - { - alphaPhi = tphiAlphaUn; - - MULES::explicitSolve - ( - alphac, - alpha1, - alphaPhic, - alphaPhi, - zeroField(), zeroField(), - 1, 0 - ); - - } - - alpha2 = 1.0 - alpha1; - - mixture.correct(); - } - - rhoPhi = alphaPhi*(rho1 - rho2) + alphaPhic*rho2; - - if (alphaApplyPrevCorr && MULESCorr) - { - tphiAlphaCorr0 = alphaPhi - tphiAlphaCorr0; - } - - Info<< "Phase-1 volume fraction = " - << alpha1.weightedAverage(mesh.Vsc()).value() - << " Min(alpha1) = " << min(alpha1).value() - << " Max(alpha1) = " << max(alpha1).value() - << endl; -} diff --git a/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H deleted file mode 100644 index c0d3c8e43a968cf5fa334e6b84a9c106a66835ff..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H +++ /dev/null @@ -1,34 +0,0 @@ -if (nAlphaSubCycles > 1) -{ - dimensionedScalar totalDeltaT = runTime.deltaT(); - surfaceScalarField rhoPhiSum - ( - IOobject - ( - "rhoPhiSum", - runTime.timeName(), - mesh - ), - mesh, - dimensionedScalar("0", rhoPhi.dimensions(), 0) - ); - - for - ( - subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); - !(++alphaSubCycle).end(); - ) - { - #include "alphaEqn.H" - rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi; - } - - rhoPhi = rhoPhiSum; -} -else -{ - #include "alphaEqn.H" -} - -rho == alpha1*rho1 + alpha2*rho2; -mu = mixture.mu(); diff --git a/applications/solvers/multiphase/MPPICInterFoam/createFields.H b/applications/solvers/multiphase/MPPICInterFoam/createFields.H index de8ae559cc90dc8bf7740c3cb0c3c15bc54e5dc9..bcf4252b5b0c165467b5ab93d100a6b236be0d9f 100644 --- a/applications/solvers/multiphase/MPPICInterFoam/createFields.H +++ b/applications/solvers/multiphase/MPPICInterFoam/createFields.H @@ -1,221 +1,204 @@ - Info<< "Reading field p_rgh\n" << endl; - volScalarField p_rgh - ( - IOobject - ( - "p_rgh", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); +#include "createRDeltaT.H" - Info<< "Reading field U\n" << endl; - volVectorField U +Info<< "Reading field p_rgh\n" << endl; +volScalarField p_rgh +( + IOobject ( - IOobject - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); - - #include "createPhi.H" + "p_rgh", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); + +Info<< "Reading field U\n" << endl; +volVectorField U +( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); - Info<< "Reading transportProperties\n" << endl; - immiscibleIncompressibleTwoPhaseMixture mixture(U, phi); +#include "createPhi.H" - volScalarField& alpha1(mixture.alpha1()); - volScalarField& alpha2(mixture.alpha2()); +Info<< "Reading transportProperties\n" << endl; +immiscibleIncompressibleTwoPhaseMixture mixture(U, phi); - const dimensionedScalar& rho1 = mixture.rho1(); - const dimensionedScalar& rho2 = mixture.rho2(); +volScalarField& alpha1(mixture.alpha1()); +volScalarField& alpha2(mixture.alpha2()); - // Need to store rho for ddt(rho, U) - volScalarField rho - ( - IOobject - ( - "rho", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), - alpha1*rho1 + alpha2*rho2 - ); - rho.oldTime(); +const dimensionedScalar& rho1 = mixture.rho1(); +const dimensionedScalar& rho2 = mixture.rho2(); - // Need to store mu as incompressibleTwoPhaseMixture does not store it - volScalarField mu +// Need to store rho for ddt(rho, U) +volScalarField rho +( + IOobject ( - IOobject - ( - "mu", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT - ), - mixture.mu(), - calculatedFvPatchScalarField::typeName - ); - - - // Mass flux - surfaceScalarField rhoPhi + "rho", + runTime.timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + alpha1*rho1 + alpha2*rho2 +); +rho.oldTime(); + +// Need to store mu as incompressibleTwoPhaseMixture does not store it +volScalarField mu +( + IOobject ( - IOobject - ( - "rhoPhi", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - fvc::interpolate(rho)*phi - ); - - - #include "readGravitationalAcceleration.H" + "mu", + runTime.timeName(), + mesh, + IOobject::READ_IF_PRESENT + ), + mixture.mu(), + calculatedFvPatchScalarField::typeName +); - #include "readhRef.H" - #include "gh.H" - volScalarField p +// Mass flux +surfaceScalarField rhoPhi +( + IOobject ( - IOobject - ( - "p", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - p_rgh + rho*gh - ); - - label pRefCell = 0; - scalar pRefValue = 0.0; - setRefCell + "rhoPhi", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + fvc::interpolate(rho)*phi +); + +#include "readGravitationalAcceleration.H" +#include "readhRef.H" +#include "gh.H" + +volScalarField p +( + IOobject ( - p, - p_rgh, - mesh.solutionDict().subDict("PIMPLE"), - pRefCell, - pRefValue - ); - - if (p_rgh.needReference()) - { - p += dimensionedScalar - ( - "p", - p.dimensions(), - pRefValue - getRefCellValue(p, pRefCell) - ); - p_rgh = p - rho*gh; - } - - mesh.setFluxRequired(p_rgh.name()); - mesh.setFluxRequired(alpha1.name()); - - // MULES flux from previous time-step - surfaceScalarField alphaPhi + "p", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + p_rgh + rho*gh +); + +label pRefCell = 0; +scalar pRefValue = 0.0; +setRefCell +( + p, + p_rgh, + mesh.solutionDict().subDict("PIMPLE"), + pRefCell, + pRefValue +); + +if (p_rgh.needReference()) +{ + p += dimensionedScalar ( - IOobject - ( - "alphaPhi", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), - phi*fvc::interpolate(alpha1) + "p", + p.dimensions(), + pRefValue - getRefCellValue(p, pRefCell) ); + p_rgh = p - rho*gh; +} +mesh.setFluxRequired(p_rgh.name()); +mesh.setFluxRequired(alpha1.name()); - tmp<surfaceScalarField> tphiAlphaCorr0; - - // alphac must be constructed before the cloud - // so that the drag-models can find it - volScalarField alphac +// alphac must be constructed before the cloud +// so that the drag-models can find it +volScalarField alphac +( + IOobject ( - IOobject - ( - "alphac", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), + "alphac", + runTime.timeName(), mesh, - dimensionedScalar("0", dimless, 0), - zeroGradientFvPatchScalarField::typeName - ); - alphac.oldTime(); - - volScalarField alphacRho(alphac*rho); - alphacRho.oldTime(); - - Info<< "Constructing kinematicCloud " << endl; - basicKinematicMPPICCloud kinematicCloud - ( - "kinematicCloud", - rho, - U, - mu, - g - ); - - // Particle fraction upper limit - scalar alphacMin + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0), + zeroGradientFvPatchScalarField::typeName +); +alphac.oldTime(); + +volScalarField alphacRho(alphac*rho); +alphacRho.oldTime(); + +Info<< "Constructing kinematicCloud " << endl; +basicKinematicMPPICCloud kinematicCloud +( + "kinematicCloud", + rho, + U, + mu, + g +); + +// Particle fraction upper limit +scalar alphacMin +( + 1.0 + - readScalar ( - 1.0 - - readScalar - ( - kinematicCloud.particleProperties().subDict("constantProperties") - .lookup("alphaMax") - ) - ); + kinematicCloud.particleProperties().subDict("constantProperties") + .lookup("alphaMax") + ) +); - // Update alphac from the particle locations - alphac = max(1.0 - kinematicCloud.theta(), alphacMin); - alphac.correctBoundaryConditions(); +// Update alphac from the particle locations +alphac = max(1.0 - kinematicCloud.theta(), alphacMin); +alphac.correctBoundaryConditions(); - surfaceScalarField alphacf("alphacf", fvc::interpolate(alphac)); +surfaceScalarField alphacf("alphacf", fvc::interpolate(alphac)); - // Phase mass flux - surfaceScalarField alphaRhoPhic("alphaRhoPhic", alphacf*rhoPhi); +// Phase mass flux +surfaceScalarField alphaRhoPhic("alphaRhoPhic", alphacf*rhoPhi); - // Volumetric phase flux - surfaceScalarField alphaPhic("alphaPhic", alphacf*phi); +// Volumetric phase flux +surfaceScalarField alphaPhic("alphaPhic", alphacf*phi); - autoPtr +autoPtr +< + PhaseCompressibleTurbulenceModel < - PhaseCompressibleTurbulenceModel - < - immiscibleIncompressibleTwoPhaseMixture - > - >turbulence + immiscibleIncompressibleTwoPhaseMixture + > +>turbulence +( + PhaseCompressibleTurbulenceModel + < + immiscibleIncompressibleTwoPhaseMixture + >::New ( - PhaseCompressibleTurbulenceModel - < - immiscibleIncompressibleTwoPhaseMixture - >::New - ( - alphac, - rho, - U, - alphaRhoPhic, - rhoPhi, - mixture - ) - ); + alphac, + rho, + U, + alphaRhoPhic, + rhoPhi, + mixture + ) +); - #include "createMRF.H" +#include "createMRF.H" diff --git a/applications/solvers/multiphase/interFoam/alphaCourantNo.H b/applications/solvers/multiphase/VoF/alphaCourantNo.H similarity index 96% rename from applications/solvers/multiphase/interFoam/alphaCourantNo.H rename to applications/solvers/multiphase/VoF/alphaCourantNo.H index a084155c8ae70e1e0b4a6cc9ae9b6f5fba828235..24f6e48a22cb58366d5cfec831d0720ded233f86 100644 --- a/applications/solvers/multiphase/interFoam/alphaCourantNo.H +++ b/applications/solvers/multiphase/VoF/alphaCourantNo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/multiphase/interFoam/alphaEqn.H b/applications/solvers/multiphase/VoF/alphaEqn.H similarity index 59% rename from applications/solvers/multiphase/interFoam/alphaEqn.H rename to applications/solvers/multiphase/VoF/alphaEqn.H index 20bb4fa240854cd8d9cf071b8ef18fc9ac1f4975..abae00fb38541d4830e4a768e4deda155b240f90 100644 --- a/applications/solvers/multiphase/interFoam/alphaEqn.H +++ b/applications/solvers/multiphase/VoF/alphaEqn.H @@ -2,46 +2,57 @@ word alphaScheme("div(phi,alpha)"); word alpharScheme("div(phirb,alpha)"); - tmp<fv::ddtScheme<scalar>> ddtAlpha - ( - fv::ddtScheme<scalar>::New - ( - mesh, - mesh.ddtScheme("ddt(alpha)") - ) - ); - // Set the off-centering coefficient according to ddt scheme scalar ocCoeff = 0; - if - ( - isType<fv::EulerDdtScheme<scalar>>(ddtAlpha()) - || isType<fv::localEulerDdtScheme<scalar>>(ddtAlpha()) - ) { - ocCoeff = 0; - } - else if (isType<fv::CrankNicolsonDdtScheme<scalar>>(ddtAlpha())) - { - if (nAlphaSubCycles > 1) + tmp<fv::ddtScheme<scalar>> tddtAlpha + ( + fv::ddtScheme<scalar>::New + ( + mesh, + mesh.ddtScheme("ddt(alpha)") + ) + ); + const fv::ddtScheme<scalar>& ddtAlpha = tddtAlpha(); + + if + ( + isType<fv::EulerDdtScheme<scalar>>(ddtAlpha) + || isType<fv::localEulerDdtScheme<scalar>>(ddtAlpha) + ) + { + ocCoeff = 0; + } + else if (isType<fv::CrankNicolsonDdtScheme<scalar>>(ddtAlpha)) + { + if (nAlphaSubCycles > 1) + { + FatalErrorInFunction + << "Sub-cycling is not supported " + "with the CrankNicolson ddt scheme" + << exit(FatalError); + } + + if + ( + alphaRestart + || mesh.time().timeIndex() > mesh.time().startTimeIndex() + 1 + ) + { + ocCoeff = + refCast<const fv::CrankNicolsonDdtScheme<scalar>>(ddtAlpha) + .ocCoeff(); + } + } + else { FatalErrorInFunction - << "Sub-cycling is not supported " - "with the CrankNicolson ddt scheme" + << "Only Euler and CrankNicolson ddt schemes are supported" << exit(FatalError); } - - ocCoeff = - refCast<const fv::CrankNicolsonDdtScheme<scalar>>(ddtAlpha()) - .ocCoeff(); - } - else - { - FatalErrorInFunction - << "Only Euler and CrankNicolson ddt schemes are supported" - << exit(FatalError); } + // Set the time blending factor, 1 for Euler scalar cnCoeff = 1.0/(1.0 + ocCoeff); // Standard face-flux compression coefficient @@ -79,6 +90,8 @@ if (MULESCorr) { + #include "alphaSuSp.H" + fvScalarMatrix alpha1Eqn ( ( @@ -92,6 +105,8 @@ phiCN, upwind<scalar>(mesh, phiCN) ).fvmDiv(phiCN, alpha1) + == + Su + fvm::Sp(Sp + divU, alpha1) ); alpha1Eqn.solve(); @@ -124,37 +139,42 @@ for (int aCorr=0; aCorr<nAlphaCorr; aCorr++) { + #include "alphaSuSp.H" + surfaceScalarField phir(phic*mixture.nHatf()); - alphaPhiUn = + tmp<surfaceScalarField> talphaPhiUn + ( + fvc::flux ( - fvc::flux - ( - phi, - alpha1, - alphaScheme - ) - + fvc::flux - ( - -fvc::flux(-phir, alpha2, alpharScheme), - alpha1, - alpharScheme - ) - ); - - // Calculate the Crank-Nicolson off-centred alpha flux - if (ocCoeff > 0) - { - alphaPhiUn = - cnCoeff*alphaPhiUn + (1.0 - cnCoeff)*alphaPhi.oldTime(); - } + phiCN(), + cnCoeff*alpha1 + (1.0 - cnCoeff)*alpha1.oldTime(), + alphaScheme + ) + + fvc::flux + ( + -fvc::flux(-phir, alpha2, alpharScheme), + alpha1, + alpharScheme + ) + ); if (MULESCorr) { - tmp<surfaceScalarField> talphaPhiCorr(alphaPhiUn - alphaPhi); + tmp<surfaceScalarField> talphaPhiCorr(talphaPhiUn() - alphaPhi); volScalarField alpha10("alpha10", alpha1); - MULES::correct(alpha1, alphaPhiUn, talphaPhiCorr.ref(), 1, 0); + MULES::correct + ( + geometricOneField(), + alpha1, + talphaPhiUn(), + talphaPhiCorr.ref(), + Sp, + (-Sp*alpha1)(), + 1, + 0 + ); // Under-relax the correction for all but the 1st corrector if (aCorr == 0) @@ -169,9 +189,19 @@ } else { - alphaPhi = alphaPhiUn; + alphaPhi = talphaPhiUn; - MULES::explicitSolve(alpha1, phiCN, alphaPhi, 1, 0); + MULES::explicitSolve + ( + geometricOneField(), + alpha1, + phiCN, + alphaPhi, + Sp, + (Su + divU*min(alpha1(), scalar(1)))(), + 1, + 0 + ); } alpha2 = 1.0 - alpha1; @@ -182,6 +212,11 @@ if (alphaApplyPrevCorr && MULESCorr) { talphaPhiCorr0 = alphaPhi - talphaPhiCorr0; + talphaPhiCorr0.ref().rename("alphaPhiCorr0"); + } + else + { + talphaPhiCorr0.clear(); } if @@ -190,7 +225,8 @@ == fv::EulerDdtScheme<vector>::typeName ) { - rhoPhi = alphaPhi*(rho1 - rho2) + phiCN*rho2; + #include "rhofs.H" + rhoPhi = alphaPhi*(rho1f - rho2f) + phiCN*rho2f; } else { @@ -201,7 +237,8 @@ } // Calculate the end-of-time-step mass flux - rhoPhi = alphaPhi*(rho1 - rho2) + phi*rho2; + #include "rhofs.H" + rhoPhi = alphaPhi*(rho1f - rho2f) + phi*rho2f; } Info<< "Phase-1 volume fraction = " diff --git a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/VoF/alphaEqnSubCycle.H similarity index 100% rename from applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H rename to applications/solvers/multiphase/VoF/alphaEqnSubCycle.H diff --git a/applications/solvers/multiphase/VoF/createAlphaFluxes.H b/applications/solvers/multiphase/VoF/createAlphaFluxes.H new file mode 100644 index 0000000000000000000000000000000000000000..3a697e38d4240b570169aa39c7de972e678d4c73 --- /dev/null +++ b/applications/solvers/multiphase/VoF/createAlphaFluxes.H @@ -0,0 +1,20 @@ +IOobject alphaPhiHeader +( + "alphaPhi", + runTime.timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE +); + +const bool alphaRestart = alphaPhiHeader.typeHeaderOk<surfaceScalarField>(true); + +// MULES flux from previous time-step +surfaceScalarField alphaPhi +( + alphaPhiHeader, + phi*fvc::interpolate(alpha1) +); + +// MULES Correction +tmp<surfaceScalarField> talphaPhiCorr0; diff --git a/applications/solvers/multiphase/interFoam/setDeltaT.H b/applications/solvers/multiphase/VoF/setDeltaT.H similarity index 95% rename from applications/solvers/multiphase/interFoam/setDeltaT.H rename to applications/solvers/multiphase/VoF/setDeltaT.H index 9cc860c032eed2e9a46138518589b83f1e8aed19..924d24c8ea728f2543f192ee5dfd9e5425ffa7b1 100644 --- a/applications/solvers/multiphase/interFoam/setDeltaT.H +++ b/applications/solvers/multiphase/VoF/setDeltaT.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/multiphase/interFoam/setRDeltaT.H b/applications/solvers/multiphase/VoF/setRDeltaT.H similarity index 100% rename from applications/solvers/multiphase/interFoam/setRDeltaT.H rename to applications/solvers/multiphase/VoF/setRDeltaT.H diff --git a/applications/solvers/multiphase/compressibleInterFoam/Allwclean b/applications/solvers/multiphase/compressibleInterFoam/Allwclean index deb5e2378ba964821faf55e012c1ea79efafeb16..71bff64a720d8dad7966d6f5c0a950e306afd85c 100755 --- a/applications/solvers/multiphase/compressibleInterFoam/Allwclean +++ b/applications/solvers/multiphase/compressibleInterFoam/Allwclean @@ -2,6 +2,7 @@ cd ${0%/*} || exit 1 # Run from this directory wclean libso twoPhaseMixtureThermo +wclean libso surfaceTensionModels wclean wclean compressibleInterDyMFoam diff --git a/applications/solvers/multiphase/compressibleInterFoam/Allwmake b/applications/solvers/multiphase/compressibleInterFoam/Allwmake index 20da00c472977322985e8067f4a32b45ea37d735..29bafc3a616ce699e97f28278add05166ad997e1 100755 --- a/applications/solvers/multiphase/compressibleInterFoam/Allwmake +++ b/applications/solvers/multiphase/compressibleInterFoam/Allwmake @@ -5,6 +5,7 @@ cd ${0%/*} || exit 1 # Run from this directory . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments wmake $targetType twoPhaseMixtureThermo +wmake $targetType surfaceTensionModels wmake $targetType wmake $targetType compressibleInterDyMFoam diff --git a/applications/solvers/multiphase/compressibleInterFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/Make/options index e24e6697f95b2af22dd2a99d6dda9df0b07157e9..29b12f3114097bdc6a5051da6c79f091bd1c2504 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/Make/options +++ b/applications/solvers/multiphase/compressibleInterFoam/Make/options @@ -1,4 +1,6 @@ EXE_INC = \ + -I. \ + -I../VoF \ -ItwoPhaseMixtureThermo \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ @@ -11,6 +13,7 @@ EXE_INC = \ EXE_LIBS = \ -ltwoPhaseMixtureThermo \ + -ltwoPhaseSurfaceTension \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ diff --git a/applications/solvers/multiphase/compressibleInterFoam/TEqn.H b/applications/solvers/multiphase/compressibleInterFoam/TEqn.H index 460c3c3e91b84a79075f8c3d59bdb2e51ad7fd1c..60dd2aecc812fef9ebbfd9edd802c326950f84b3 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/TEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/TEqn.H @@ -5,19 +5,25 @@ + fvm::div(rhoPhi, T) - fvm::laplacian(mixture.alphaEff(turbulence->mut()), T) + ( - divU*p + fvc::div(fvc::absolute(phi, U), p) + fvc::ddt(rho, K) + fvc::div(rhoPhi, K) ) *( alpha1/mixture.thermo1().Cv() + alpha2/mixture.thermo2().Cv() ) + == + fvOptions(rho, T) ); TEqn.relax(); + + fvOptions.constrain(TEqn); + TEqn.solve(); - mixture.correct(); + fvOptions.correct(T); - Info<< "min(T) " << min(T).value() << endl; + mixture.correctThermo(); + mixture.correct(); } diff --git a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H index 44be32aac22f201585518420fd22577ad48bd76a..b5e66ec33fb5194fa8d154aa79d8351008b2f501 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H @@ -1,12 +1,16 @@ fvVectorMatrix UEqn ( - fvm::ddt(rho, U) - + fvm::div(rhoPhi, U) + fvm::ddt(rho, U) + fvm::div(rhoPhi, U) + + MRF.DDt(rho, U) + turbulence->divDevRhoReff(U) + == + fvOptions(rho, U) ); UEqn.relax(); + fvOptions.constrain(UEqn); + if (pimple.momentumPredictor()) { solve @@ -16,12 +20,14 @@ fvc::reconstruct ( ( - interface.surfaceTensionForce() + mixture.surfaceTensionForce() - ghf*fvc::snGrad(rho) - fvc::snGrad(p_rgh) ) * mesh.magSf() ) ); + fvOptions.correct(U); + K = 0.5*magSqr(U); } diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H b/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H deleted file mode 100644 index a99a0b39e289f60589a61d3c43b1fb94fcff81dc..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H +++ /dev/null @@ -1,5 +0,0 @@ -const dictionary& alphaControls = mesh.solverDict(alpha1.name()); - -label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr"))); - -label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles"))); diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H b/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H deleted file mode 100644 index eedf020670d11c745a8aebfa2bed3944e71f2e23..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H +++ /dev/null @@ -1,88 +0,0 @@ -{ - word alphaScheme("div(phi,alpha)"); - word alpharScheme("div(phirb,alpha)"); - - surfaceScalarField phir(phic*interface.nHatf()); - - for (int gCorr=0; gCorr<nAlphaCorr; gCorr++) - { - volScalarField::Internal Sp - ( - IOobject - ( - "Sp", - runTime.timeName(), - mesh - ), - mesh, - dimensionedScalar("Sp", dgdt.dimensions(), 0.0) - ); - - volScalarField::Internal Su - ( - IOobject - ( - "Su", - runTime.timeName(), - mesh - ), - // Divergence term is handled explicitly to be - // consistent with the explicit transport solution - divU*min(alpha1, scalar(1)) - ); - - forAll(dgdt, celli) - { - if (dgdt[celli] > 0.0 && alpha1[celli] > 0.0) - { - Sp[celli] -= dgdt[celli]*alpha1[celli]; - Su[celli] += dgdt[celli]*alpha1[celli]; - } - else if (dgdt[celli] < 0.0 && alpha1[celli] < 1.0) - { - Sp[celli] += dgdt[celli]*(1.0 - alpha1[celli]); - } - } - - - surfaceScalarField alphaPhi1 - ( - fvc::flux - ( - phi, - alpha1, - alphaScheme - ) - + fvc::flux - ( - -fvc::flux(-phir, alpha2, alpharScheme), - alpha1, - alpharScheme - ) - ); - - MULES::explicitSolve - ( - geometricOneField(), - alpha1, - phi, - alphaPhi1, - Sp, - Su, - 1, - 0 - ); - - surfaceScalarField rho1f(fvc::interpolate(rho1)); - surfaceScalarField rho2f(fvc::interpolate(rho2)); - rhoPhi = alphaPhi1*(rho1f - rho2f) + phi*rho2f; - - alpha2 = scalar(1) - alpha1; - } - - Info<< "Liquid phase volume fraction = " - << alpha1.weightedAverage(mesh.V()).value() - << " Min(" << alpha1.name() << ") = " << min(alpha1).value() - << " Min(" << alpha2.name() << ") = " << min(alpha2).value() - << endl; -} diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H deleted file mode 100644 index 89e56191503730cf9634ba0d7d72169b0aac8634..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H +++ /dev/null @@ -1,40 +0,0 @@ -{ - #include "alphaControls.H" - - surfaceScalarField phic(mag(phi/mesh.magSf())); - phic = min(interface.cAlpha()*phic, max(phic)); - - volScalarField divU(fvc::div(fvc::absolute(phi, U))); - - if (nAlphaSubCycles > 1) - { - dimensionedScalar totalDeltaT = runTime.deltaT(); - surfaceScalarField rhoPhiSum - ( - IOobject - ( - "rhoPhiSum", - runTime.timeName(), - mesh - ), - mesh, - dimensionedScalar("0", rhoPhi.dimensions(), 0) - ); - - for - ( - subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); - !(++alphaSubCycle).end(); - ) - { - #include "alphaEqns.H" - rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi; - } - - rhoPhi = rhoPhiSum; - } - else - { - #include "alphaEqns.H" - } -} diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaSuSp.H b/applications/solvers/multiphase/compressibleInterFoam/alphaSuSp.H new file mode 100644 index 0000000000000000000000000000000000000000..81309cd091ffbed46ba2ce456c9afaf110394f22 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/alphaSuSp.H @@ -0,0 +1,43 @@ +volScalarField::Internal Sp +( + IOobject + ( + "Sp", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("Sp", dgdt.dimensions(), 0) +); + +volScalarField::Internal Su +( + IOobject + ( + "Su", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("Su", dgdt.dimensions(), 0) +); + +forAll(dgdt, celli) +{ + if (dgdt[celli] > 0.0 && alpha1[celli] > 0.0) + { + Sp[celli] -= dgdt[celli]*alpha1[celli]; + Su[celli] += dgdt[celli]*alpha1[celli]; + } + else if (dgdt[celli] < 0.0 && alpha1[celli] < 1.0) + { + Sp[celli] += dgdt[celli]*(1.0 - alpha1[celli]); + } +} + +volScalarField::Internal divU +( + mesh.moving() + ? fvc::div(phiCN() + mesh.phi()) + : fvc::div(phiCN()) +); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleAlphaEqnSubCycle.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleAlphaEqnSubCycle.H new file mode 100644 index 0000000000000000000000000000000000000000..f8d0a15836077f9505224bc5acf8b5966dddf2e2 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleAlphaEqnSubCycle.H @@ -0,0 +1,3 @@ +{ + #include "alphaEqnSubCycle.H" +} diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options index cc7d5a283294e82c4e707ff25cdeb88c5b72f492..4de8fd2713cc8f52111c21c78782cf9bd60b68b4 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options @@ -1,5 +1,7 @@ EXE_INC = \ + -I. \ -I.. \ + -I../../VoF \ -I../twoPhaseMixtureThermo \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ @@ -14,6 +16,7 @@ EXE_INC = \ EXE_LIBS = \ -ltwoPhaseMixtureThermo \ + -ltwoPhaseSurfaceTension \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C index e30881ac436fccde3f8f6f14c61c9352fcf55e36..34e8762709abfd0644471c5dcd4cb16cef4238f4 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,6 @@ License Application compressibleInterDyMFoam -Group - grpMultiphaseSolvers grpMovingMeshSolvers - Description Solver for 2 compressible, non-isothermal immiscible fluids using a VOF (volume of fluid) phase-fraction based interface capturing approach, @@ -42,14 +39,18 @@ Description #include "fvCFD.H" #include "dynamicFvMesh.H" -#include "MULES.H" +#include "CMULES.H" +#include "EulerDdtScheme.H" +#include "localEulerDdtScheme.H" +#include "CrankNicolsonDdtScheme.H" #include "subCycle.H" -#include "interfaceProperties.H" #include "twoPhaseMixture.H" #include "twoPhaseMixtureThermo.H" #include "turbulentFluidThermoModel.H" #include "pimpleControl.H" +#include "fvOptions.H" #include "CorrectPhi.H" +#include "fvcSmooth.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -63,6 +64,8 @@ int main(int argc, char *argv[]) #include "initContinuityErrs.H" #include "createControl.H" #include "createFields.H" + #include "createAlphaFluxes.H" + #include "createFvOptions.H" #include "createUf.H" #include "createControls.H" #include "CourantNo.H" @@ -87,63 +90,66 @@ int main(int argc, char *argv[]) // same divergence volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U))); + if (LTS) + { + #include "setRDeltaT.H" + } + else { #include "CourantNo.H" + #include "alphaCourantNo.H" #include "setDeltaT.H" + } - runTime++; - - Info<< "Time = " << runTime.timeName() << nl << endl; - - scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime(); + runTime++; - // Do any mesh changes - mesh.update(); + Info<< "Time = " << runTime.timeName() << nl << endl; - if (mesh.changing()) + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) + { + if (pimple.firstIter() || moveMeshOuterCorrectors) { - Info<< "Execution time for mesh.update() = " - << runTime.elapsedCpuTime() - timeBeforeMeshUpdate - << " s" << endl; + scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime(); - gh = (g & mesh.C()) - ghRef; - ghf = (g & mesh.Cf()) - ghRef; - } + mesh.update(); - if ((correctPhi && mesh.changing()) || mesh.topoChanging()) - { - // Calculate absolute flux from the mapped surface velocity - // Note: temporary fix until mapped Uf is assessed - Uf = fvc::interpolate(U); + if (mesh.changing()) + { + Info<< "Execution time for mesh.update() = " + << runTime.elapsedCpuTime() - timeBeforeMeshUpdate + << " s" << endl; - // Calculate absolute flux from the mapped surface velocity - phi = mesh.Sf() & Uf; + gh = (g & mesh.C()) - ghRef; + ghf = (g & mesh.Cf()) - ghRef; + } - #include "correctPhi.H" + if ((mesh.changing() && correctPhi) || mesh.topoChanging()) + { + // Calculate absolute flux from the mapped surface velocity + // Note: temporary fix until mapped Uf is assessed + Uf = fvc::interpolate(U); - // Make the fluxes relative to the mesh motion - fvc::makeRelative(phi, U); - } - } + // Calculate absolute flux from the mapped surface velocity + phi = mesh.Sf() & Uf; - if (mesh.changing() && checkMeshCourantNo) - { - #include "meshCourantNo.H" - } + #include "correctPhi.H" - turbulence->correct(); + // Make the fluxes relative to the mesh motion + fvc::makeRelative(phi, U); - // --- Pressure-velocity PIMPLE corrector loop - while (pimple.loop()) - { - #include "alphaEqnsSubCycle.H" + mixture.correct(); + } - // correct interface on first PIMPLE corrector - if (pimple.corr() == 1) - { - interface.correct(); + if (mesh.changing() && checkMeshCourantNo) + { + #include "meshCourantNo.H" + } } + #include "alphaControls.H" + #include "compressibleAlphaEqnSubCycle.H" + solve(fvm::ddt(rho) + fvc::div(rhoPhi)); #include "UEqn.H" @@ -154,13 +160,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - - rho = alpha1*rho1 + alpha2*rho2; - // Correct p_rgh for consistency with p and the updated densities - p_rgh = p - rho*gh; - p_rgh.correctBoundaryConditions(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H index aed0e76956bb40c41b7cbf25aea54d7a77a03b67..f1930cdfc08077e975d9c6e790fa098b3e5ddde7 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H @@ -9,3 +9,8 @@ bool checkMeshCourantNo ( pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false) ); + +bool moveMeshOuterCorrectors +( + pimple.dict().lookupOrDefault<Switch>("moveMeshOuterCorrectors", false) +); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H index 5423aee3c197ea607ec71403ec622735b016bd73..7cd3875e85c6ed1c72b5e155ce687d3634cec71c 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H @@ -8,11 +8,12 @@ fvc::flux(HbyA) + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, Uf) ); + MRF.makeRelative(phiHbyA); surfaceScalarField phig ( ( - interface.surfaceTensionForce() + mixture.surfaceTensionForce() - ghf*fvc::snGrad(rho) )*rAUf*mesh.magSf() ); @@ -20,7 +21,7 @@ phiHbyA += phig; // Update the pressure BCs to ensure flux consistency - constrainPressure(p_rgh, U, phiHbyA, rAUf); + constrainPressure(p_rgh, U, phiHbyA, rAUf, MRF); // Make the fluxes relative to the mesh motion fvc::makeRelative(phiHbyA, U); @@ -92,6 +93,7 @@ U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqnIncomp.flux())/rAUf); U.correctBoundaryConditions(); + fvOptions.correct(U); } } @@ -118,7 +120,4 @@ ); K = 0.5*magSqr(U); - - Info<< "max(U) " << max(mag(U)).value() << endl; - Info<< "min(p_rgh) " << min(p_rgh).value() << endl; } diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H index ed2db49fb4dcc9ffd3084f3beda346b118d1eaa4..d82dcecb8a582f508f201265bcc7af2405446d41 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H @@ -4,3 +4,6 @@ correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true); checkMeshCourantNo = pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false); + +moveMeshOuterCorrectors = + pimple.dict().lookupOrDefault<Switch>("moveMeshOuterCorrectors", false); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C index 5042da7731be89bb9f579ebf07566bd996cf1d4f..a657caf01ee388fa595b0bc4364dd643e724ab6b 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,14 +39,18 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "MULES.H" +#include "CMULES.H" +#include "EulerDdtScheme.H" +#include "localEulerDdtScheme.H" +#include "CrankNicolsonDdtScheme.H" #include "subCycle.H" #include "rhoThermo.H" -#include "interfaceProperties.H" #include "twoPhaseMixture.H" #include "twoPhaseMixtureThermo.H" #include "turbulentFluidThermoModel.H" #include "pimpleControl.H" +#include "fvOptions.H" +#include "fvcSmooth.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -60,8 +64,8 @@ int main(int argc, char *argv[]) #include "createControl.H" #include "createTimeControls.H" #include "createFields.H" - #include "CourantNo.H" - #include "setInitialDeltaT.H" + #include "createAlphaFluxes.H" + #include "createFvOptions.H" volScalarField& p = mixture.p(); volScalarField& T = mixture.T(); @@ -70,6 +74,13 @@ int main(int argc, char *argv[]) turbulence->validate(); + if (!LTS) + { + #include "readTimeControls.H" + #include "CourantNo.H" + #include "setInitialDeltaT.H" + } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; @@ -77,8 +88,17 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "CourantNo.H" - #include "setDeltaT.H" + + if (LTS) + { + #include "setRDeltaT.H" + } + else + { + #include "CourantNo.H" + #include "alphaCourantNo.H" + #include "setDeltaT.H" + } runTime++; @@ -87,18 +107,12 @@ int main(int argc, char *argv[]) // --- Pressure-velocity PIMPLE corrector loop while (pimple.loop()) { - #include "alphaEqnsSubCycle.H" - - // correct interface on first PIMPLE corrector - if (pimple.corr() == 1) - { - interface.correct(); - } + #include "alphaControls.H" + #include "alphaEqnSubCycle.H" solve(fvm::ddt(rho) + fvc::div(rhoPhi)); #include "UEqn.H" - volScalarField divU(fvc::div(fvc::absolute(phi, U))); #include "TEqn.H" // --- Pressure corrector loop diff --git a/applications/solvers/multiphase/compressibleInterFoam/createFields.H b/applications/solvers/multiphase/compressibleInterFoam/createFields.H index 9a49e504c627507b8a87e87a0fec098b3ca2e08d..46168e6b87f7bfb44bba6c1313f37bf2e72b1787 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/createFields.H +++ b/applications/solvers/multiphase/compressibleInterFoam/createFields.H @@ -1,3 +1,5 @@ +#include "createRDeltaT.H" + Info<< "Reading field p_rgh\n" << endl; volScalarField p_rgh ( @@ -29,7 +31,7 @@ volVectorField U #include "createPhi.H" Info<< "Constructing twoPhaseMixtureThermo\n" << endl; -twoPhaseMixtureThermo mixture(mesh); +twoPhaseMixtureThermo mixture(U, phi); volScalarField& alpha1(mixture.alpha1()); volScalarField& alpha2(mixture.alpha2()); @@ -61,6 +63,7 @@ dimensionedScalar pMin ); mesh.setFluxRequired(p_rgh.name()); +mesh.setFluxRequired(alpha1.name()); #include "readGravitationalAcceleration.H" @@ -89,9 +92,6 @@ volScalarField dgdt pos(alpha2)*fvc::div(phi)/max(alpha2, scalar(0.0001)) ); -// Construct interface from alpha1 distribution -interfaceProperties interface(alpha1, U, mixture); - // Construct compressible turbulence model autoPtr<compressible::turbulenceModel> turbulence ( @@ -100,3 +100,5 @@ autoPtr<compressible::turbulenceModel> turbulence Info<< "Creating field kinetic energy K\n" << endl; volScalarField K("K", 0.5*magSqr(U)); + +#include "createMRF.H" diff --git a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H index 78e46f466424fbc38f54ac607cb69e016e18e8a3..51c58ba53689d0b3582c9c0407c81d0136b90f01 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H @@ -8,11 +8,12 @@ fvc::flux(HbyA) + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi) ); + MRF.makeRelative(phiHbyA); surfaceScalarField phig ( ( - interface.surfaceTensionForce() + mixture.surfaceTensionForce() - ghf*fvc::snGrad(rho) )*rAUf*mesh.magSf() ); @@ -20,7 +21,7 @@ phiHbyA += phig; // Update the pressure BCs to ensure flux consistency - constrainPressure(p_rgh, U, phiHbyA, rAUf); + constrainPressure(p_rgh, U, phiHbyA, rAUf, MRF); tmp<fvScalarMatrix> p_rghEqnComp1; tmp<fvScalarMatrix> p_rghEqnComp2; @@ -98,6 +99,7 @@ U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqnIncomp.flux())/rAUf); U.correctBoundaryConditions(); + fvOptions.correct(U); } } @@ -112,7 +114,4 @@ p_rgh.correctBoundaryConditions(); K = 0.5*magSqr(U); - - Info<< "max(U) " << max(mag(U)).value() << endl; - Info<< "min(p_rgh) " << min(p_rgh).value() << endl; } diff --git a/applications/solvers/multiphase/compressibleInterFoam/rhofs.H b/applications/solvers/multiphase/compressibleInterFoam/rhofs.H new file mode 100644 index 0000000000000000000000000000000000000000..67dc10f378441716045250b114dca8ab6db486fe --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/rhofs.H @@ -0,0 +1,2 @@ +surfaceScalarField rho1f(fvc::interpolate(rho1)); +surfaceScalarField rho2f(fvc::interpolate(rho2)); diff --git a/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/files b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..fa34a838247fdba4426893587e08ca5ed788d755 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/files @@ -0,0 +1,3 @@ +liquidProperties/liquidPropertiesSurfaceTension.C + +LIB = $(FOAM_LIBBIN)/libtwoPhaseSurfaceTension diff --git a/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/options b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..0d8cc30e2d52ef0d81c7e0365da30c786ce8b076 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/Make/options @@ -0,0 +1,15 @@ +EXE_INC = \ + -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +LIB_LIBS = \ + -linterfaceProperties \ + -lcompressibleTransportModels \ + -lfluidThermophysicalModels \ + -lspecie \ + -lthermophysicalProperties \ + -lfiniteVolume diff --git a/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.C b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.C new file mode 100644 index 0000000000000000000000000000000000000000..7888ec234739944f9a4c6ed210ee3509270a23bb --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.C @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "liquidPropertiesSurfaceTension.H" +#include "liquidThermo.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + defineTypeNameAndDebug(liquidProperties, 0); + addToRunTimeSelectionTable + ( + surfaceTensionModel, + liquidProperties, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::liquidProperties::liquidProperties +( + const dictionary& dict, + const fvMesh& mesh +) +: + surfaceTensionModel(mesh), + phaseName_(dict.lookup("phase")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::liquidProperties::~liquidProperties() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::surfaceTensionModels::liquidProperties::sigma() const +{ + const heRhoThermopureMixtureliquidProperties& thermo = + mesh_.lookupObject<heRhoThermopureMixtureliquidProperties> + ( + IOobject::groupName(basicThermo::dictName, phaseName_) + ); + + const Foam::liquidProperties& liquid = thermo.mixture().properties(); + + tmp<volScalarField> tsigma + ( + new volScalarField + ( + IOobject + ( + "sigma", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimSigma + ) + ); + volScalarField& sigma = tsigma.ref(); + + const volScalarField& T = thermo.T(); + const volScalarField& p = thermo.p(); + + volScalarField::Internal& sigmai = sigma; + const volScalarField::Internal& pi = p; + const volScalarField::Internal& Ti = T; + + forAll(sigmai, celli) + { + sigmai[celli] = liquid.sigma(pi[celli], Ti[celli]); + } + + volScalarField::Boundary& sigmaBf = sigma.boundaryFieldRef(); + const volScalarField::Boundary& pBf = p.boundaryField(); + const volScalarField::Boundary& TBf = T.boundaryField(); + + forAll(sigmaBf, patchi) + { + scalarField& sigmaPf = sigmaBf[patchi]; + const scalarField& pPf = pBf[patchi]; + const scalarField& TPf = TBf[patchi]; + + forAll(sigmaPf, facei) + { + sigmaPf[facei] = liquid.sigma(pPf[facei], TPf[facei]); + } + } + + return tsigma; +} + + +bool Foam::surfaceTensionModels::liquidProperties::readDict +( + const dictionary& dict +) +{ + return true; +} + + +bool Foam::surfaceTensionModels::liquidProperties::writeData +( + Ostream& os +) const +{ + if (surfaceTensionModel::writeData(os)) + { + return os.good(); + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.H b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.H new file mode 100644 index 0000000000000000000000000000000000000000..7c1e4940acf4f88099bce855eed246beb3a636d1 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/surfaceTensionModels/liquidProperties/liquidPropertiesSurfaceTension.H @@ -0,0 +1,123 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::surfaceTensionModels::liquidProperties + +Description + Temperature-dependent surface tension model in which the surface tension + function provided by the phase Foam::liquidProperties class is used. + +Usage + \table + Property | Description | Required | Default value + phase | Phase name | yes | + \endtable + + Example of the surface tension specification: + \verbatim + sigma + { + type liquidProperties; + phase water; + } + \endverbatim + +See also + Foam::surfaceTensionModel + +SourceFiles + liquidPropertiesSurfaceTension.C + +\*---------------------------------------------------------------------------*/ + +#ifndef liquidPropertiesSurfaceTension_H +#define liquidPropertiesSurfaceTension_H + +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace surfaceTensionModels +{ + +/*---------------------------------------------------------------------------*\ + Class liquidProperties Declaration +\*---------------------------------------------------------------------------*/ + +class liquidProperties +: + public surfaceTensionModel +{ + // Private data + + //- Name of the liquid phase + word phaseName_; + + +public: + + //- Runtime type information + TypeName("liquidProperties"); + + + // Constructors + + //- Construct from dictionary and mesh + liquidProperties + ( + const dictionary& dict, + const fvMesh& mesh + ); + + + //- Destructor + virtual ~liquidProperties(); + + + // Member Functions + + //- Surface tension coefficient + virtual tmp<volScalarField> sigma() const; + + //- Update surface tension coefficient from given dictionary + virtual bool readDict(const dictionary& dict); + + //- Write in dictionary format + virtual bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceTensionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options index ed39dee58bfc0234b36f8f8ea53d0b51ffcc2c22..aca6fad2c2e2e7a7ca989cd28495e81677d9fbe1 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options +++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options @@ -2,6 +2,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ + -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude LIB_LIBS = \ @@ -9,4 +10,5 @@ LIB_LIBS = \ -lfluidThermophysicalModels \ -lspecie \ -ltwoPhaseMixture \ + -linterfaceProperties \ -lfiniteVolume diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C index c713498ef6a2b1a8453290c5e799960e2e678ad9..6274ad1c31a04a30f57b09db22f68b24a686039d 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C +++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,11 +40,13 @@ namespace Foam Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo ( - const fvMesh& mesh + const volVectorField& U, + const surfaceScalarField& phi ) : - psiThermo(mesh, word::null), - twoPhaseMixture(mesh, *this), + psiThermo(U.mesh(), word::null), + twoPhaseMixture(U.mesh(), *this), + interfaceProperties(alpha1(), U, *this), thermo1_(nullptr), thermo2_(nullptr) { @@ -58,8 +60,8 @@ Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo T2.write(); } - thermo1_ = rhoThermo::New(mesh, phase1Name()); - thermo2_ = rhoThermo::New(mesh, phase2Name()); + thermo1_ = rhoThermo::New(U.mesh(), phase1Name()); + thermo2_ = rhoThermo::New(U.mesh(), phase2Name()); thermo1_->validate(phase1Name(), "e"); thermo2_->validate(phase2Name(), "e"); @@ -76,17 +78,23 @@ Foam::twoPhaseMixtureThermo::~twoPhaseMixtureThermo() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void Foam::twoPhaseMixtureThermo::correct() +void Foam::twoPhaseMixtureThermo::correctThermo() { thermo1_->he() = thermo1_->he(p_, T_); thermo1_->correct(); thermo2_->he() = thermo2_->he(p_, T_); thermo2_->correct(); +} + +void Foam::twoPhaseMixtureThermo::correct() +{ psi_ = alpha1()*thermo1_->psi() + alpha2()*thermo2_->psi(); mu_ = alpha1()*thermo1_->mu() + alpha2()*thermo2_->mu(); alpha_ = alpha1()*thermo1_->alpha() + alpha2()*thermo2_->alpha(); + + interfaceProperties::correct(); } @@ -352,4 +360,17 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureThermo::alphaEff } +bool Foam::twoPhaseMixtureThermo::read() +{ + if (psiThermo::read()) + { + return interfaceProperties::read(); + } + else + { + return false; + } +} + + // ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H index 3cde04bb46dc1f7f9d61fd703291bccb664a0c22..aefdbdee4fbc2f06a74ce37d95a8b9fbb0877bc5 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H +++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,6 +39,7 @@ SourceFiles #include "rhoThermo.H" #include "psiThermo.H" #include "twoPhaseMixture.H" +#include "interfaceProperties.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,7 +53,8 @@ namespace Foam class twoPhaseMixtureThermo : public psiThermo, - public twoPhaseMixture + public twoPhaseMixture, + public interfaceProperties { // Private data @@ -71,10 +73,11 @@ public: // Constructors - //- Construct from mesh + //- Construct from components twoPhaseMixtureThermo ( - const fvMesh& mesh + const volVectorField& U, + const surfaceScalarField& phi ); @@ -104,7 +107,10 @@ public: return thermo2_(); } - //- Update properties + //- Correct the thermodynamics of each phase + virtual void correctThermo(); + + //- Update mixture properties virtual void correct(); //- Return true if the equation of state is incompressible @@ -279,6 +285,12 @@ public: const scalarField& alphat, const label patchi ) const; + + + // IO + + //- Read base transportProperties dictionary + virtual bool read(); }; diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options index f3010e0e57fbc734a79ed4618c39b70a0dd28775..9df3add9e22497c1bdb24393900f4d56004d9997 100644 --- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options +++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ -I. \ + -I../VoF \ -I../interFoam \ -ImultiphaseMixtureThermo/lnInclude \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C index 55175d8d8049ecfdb9d9078b3526898a724bac21..627dd41b6f2ec5316cdcae0c0c1031a9759680c6 100644 --- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C +++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C @@ -113,6 +113,7 @@ Foam::multiphaseMixtureThermo::multiphaseMixtureThermo 1e-8/pow(average(mesh_.V()), 1.0/3.0) ) { + rhoPhi_.setOriented(); calcAlphas(); alphas_.write(); correct(); @@ -698,6 +699,7 @@ Foam::multiphaseMixtureThermo::surfaceTensionForce() const ); surfaceScalarField& stf = tstf.ref(); + stf.setOriented(); forAllConstIter(PtrDictionary<phaseModel>, phases_, phase1) { diff --git a/applications/solvers/multiphase/driftFluxFoam/mixtureViscosityModels/plastic/plastic.C b/applications/solvers/multiphase/driftFluxFoam/mixtureViscosityModels/plastic/plastic.C index 5eb7e0f9cecb480718be3705b98b01aac180eb38..c096513474ab780f4a59e6dabf296c4ce4d65f5d 100644 --- a/applications/solvers/multiphase/driftFluxFoam/mixtureViscosityModels/plastic/plastic.C +++ b/applications/solvers/multiphase/driftFluxFoam/mixtureViscosityModels/plastic/plastic.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::mixtureViscosityModels::plastic::plastic ) : mixtureViscosityModel(name, viscosityProperties, U, phi), - plasticCoeffs_(viscosityProperties.subDict(modelName + "Coeffs")), + plasticCoeffs_(viscosityProperties.optionalSubDict(modelName + "Coeffs")), plasticViscosityCoeff_ ( "coeff", @@ -117,7 +117,7 @@ bool Foam::mixtureViscosityModels::plastic::read { mixtureViscosityModel::read(viscosityProperties); - plasticCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + plasticCoeffs_ = viscosityProperties.optionalSubDict(typeName + "Coeffs"); plasticCoeffs_.lookup("k") >> plasticViscosityCoeff_; plasticCoeffs_.lookup("n") >> plasticViscosityExponent_; diff --git a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C index c671c223dbf80c1f62f28286aa3649201ad394ec..cf8abd2e6e75086835559093f93a80f9a327d165 100644 --- a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C +++ b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -126,7 +126,7 @@ Foam::autoPtr<Foam::relativeVelocityModel> Foam::relativeVelocityModel::New ( cstrIter() ( - dict.subDict(modelType + "Coeffs"), + dict.optionalSubDict(modelType + "Coeffs"), mixture ) ); diff --git a/applications/solvers/multiphase/interFoam/Make/options b/applications/solvers/multiphase/interFoam/Make/options index 21e9667b837644e37c0270d13883c42a6b1ebc78..55f8a8df38ca59f68a6948479c9c2057a965cc0c 100644 --- a/applications/solvers/multiphase/interFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/Make/options @@ -1,4 +1,5 @@ EXE_INC = \ + -I../VoF \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ diff --git a/applications/solvers/multiphase/interFoam/alphaSuSp.H b/applications/solvers/multiphase/interFoam/alphaSuSp.H new file mode 100644 index 0000000000000000000000000000000000000000..0b8e05e18710e49d98c8942cb771ee274ae1786f --- /dev/null +++ b/applications/solvers/multiphase/interFoam/alphaSuSp.H @@ -0,0 +1,3 @@ +zeroField Su; +zeroField Sp; +zeroField divU; diff --git a/applications/solvers/multiphase/interFoam/createFields.H b/applications/solvers/multiphase/interFoam/createFields.H index f820cf874fadae78fbad2ff0ce4f5435acd993a7..23bdacf6b28a7220724437993b0982a3458032af 100644 --- a/applications/solvers/multiphase/interFoam/createFields.H +++ b/applications/solvers/multiphase/interFoam/createFields.H @@ -121,20 +121,6 @@ if (p_rgh.needReference()) mesh.setFluxRequired(p_rgh.name()); mesh.setFluxRequired(alpha1.name()); -// MULES flux from previous time-step -surfaceScalarField alphaPhi -( - IOobject - ( - "alphaPhi", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), - phi*fvc::interpolate(alpha1) -); - // MULES compressed flux is registered in case scalarTransport FO needs it. surfaceScalarField alphaPhiUn ( @@ -150,7 +136,4 @@ surfaceScalarField alphaPhiUn dimensionedScalar("zero", phi.dimensions(), 0.0) ); -// MULES Correction -tmp<surfaceScalarField> talphaPhiCorr0; - #include "createMRF.H" diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options index 9792cb9b8584eaf4f866d82593d7eef94739d9f8..7cbe75837cca549844cbd7985e483ba556ba03a1 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options @@ -1,6 +1,7 @@ EXE_INC = \ -I. \ -I.. \ + -I../../VoF \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C index 366369797614ed08b930373d570a5dd3a2827a2d..1dd92f95a18618bf708ddb9d1959cbf820f087da 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,7 +47,6 @@ Description #include "pimpleControl.H" #include "fvOptions.H" #include "CorrectPhi.H" -#include "localEulerDdtScheme.H" #include "fvcSmooth.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -64,6 +63,7 @@ int main(int argc, char *argv[]) #include "createTimeControls.H" #include "createDyMControls.H" #include "createFields.H" + #include "createAlphaFluxes.H" #include "createFvOptions.H" volScalarField rAU @@ -128,6 +128,13 @@ int main(int argc, char *argv[]) << runTime.elapsedCpuTime() - timeBeforeMeshUpdate << " s" << endl; + // Do not apply previous time-step mesh compression flux + // if the mesh topology changed + if (mesh.topoChanging()) + { + talphaPhiCorr0.clear(); + } + gh = (g & mesh.C()) - ghRef; ghf = (g & mesh.Cf()) - ghRef; } diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H index 2c7df14ae7864b32f598331db27d1b3cacefaef9..aafc10bcc457beba7bd6ab0dccfaa84cea662bd0 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H @@ -28,7 +28,7 @@ phiHbyA += phig; // Update the pressure BCs to ensure flux consistency - constrainPressure(p_rgh, U, phiHbyA, rAUf); + constrainPressure(p_rgh, U, phiHbyA, rAUf, MRF); while (pimple.correctNonOrthogonal()) { diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C index 5f16dfa18d2ce5d562c49b054d06faa64d7c55c0..858624b2d58b4ac392a5d9dce3a618cd1341ec2a 100644 --- a/applications/solvers/multiphase/interFoam/interFoam.C +++ b/applications/solvers/multiphase/interFoam/interFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,6 @@ Description #include "pimpleControl.H" #include "fvOptions.H" #include "CorrectPhi.H" -#include "localEulerDdtScheme.H" #include "fvcSmooth.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -67,6 +66,7 @@ int main(int argc, char *argv[]) #include "createTimeControls.H" #include "initContinuityErrs.H" #include "createFields.H" + #include "createAlphaFluxes.H" #include "createFvOptions.H" #include "correctPhi.H" diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options index 3d2ce063a5dcdc8c840a3a1dc3eccafe313d215c..840e64390f0ab57a6a7449fc2e38d525c7863d2c 100644 --- a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options @@ -1,6 +1,7 @@ EXE_INC = \ -I. \ -I.. \ + -I../../VoF \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -IimmiscibleIncompressibleThreePhaseMixture \ -IincompressibleThreePhaseMixture \ diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqn.H similarity index 100% rename from applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H rename to applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqn.H diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnSubCycle.H similarity index 93% rename from applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnsSubCycle.H rename to applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnSubCycle.H index 6025b60069f29e9d22420d9ca7bfab852472ccd9..2f117f2cd4a2309d9c7ad5fa32bb7825e4eb178c 100644 --- a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnsSubCycle.H +++ b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnSubCycle.H @@ -19,7 +19,7 @@ if (nAlphaSubCycles > 1) !(++alphaSubCycle).end(); ) { - #include "alphaEqns.H" + #include "alphaEqn.H" rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi; } @@ -27,7 +27,7 @@ if (nAlphaSubCycles > 1) } else { - #include "alphaEqns.H" + #include "alphaEqn.H" } { diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H index 5b152b78a7ae8a5be1fc4edaf89d9a498f86efea..5d8a42388a55b8ead29cef71f85d6f11c50ca790 100644 --- a/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H +++ b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H @@ -40,7 +40,7 @@ const dimensionedScalar& rho1 = mixture.rho1(); const dimensionedScalar& rho2 = mixture.rho2(); const dimensionedScalar& rho3 = mixture.rho3(); -dimensionedScalar D23(mixture.lookup("D23")); +dimensionedScalar D23("D23", dimViscosity, mixture); // Need to store rho for ddt(rho, U) volScalarField rho diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C index aa0e55626e91d254bd8fb490d8e133d476354fbc..a2b92de3f976c0fa7efbe726c665fe8556aa07c3 100644 --- a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C +++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -96,7 +96,7 @@ int main(int argc, char *argv[]) while (pimple.loop()) { #include "alphaControls.H" - #include "alphaEqnsSubCycle.H" + #include "alphaEqnSubCycle.H" mixture.correct(); diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C index dce55234e7bf1fe586134fc9235eeca909738fc6..644c3b25a0b13bc18d7fd3c5a6ac882981cb38e8 100644 --- a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C +++ b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -168,8 +168,8 @@ Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties ).lookup("cAlpha") ) ), - sigma12_(mixture.lookup("sigma12")), - sigma13_(mixture.lookup("sigma13")), + sigma12_("sigma12", dimensionSet(1, 0, -2, 0, 0), mixture), + sigma13_("sigma13", dimensionSet(1, 0, -2, 0, 0), mixture), deltaN_ ( diff --git a/applications/solvers/multiphase/interFoam/rhofs.H b/applications/solvers/multiphase/interFoam/rhofs.H new file mode 100644 index 0000000000000000000000000000000000000000..5949bf1e0a60d21934f09e1fbe8780c5cf7e43d5 --- /dev/null +++ b/applications/solvers/multiphase/interFoam/rhofs.H @@ -0,0 +1,2 @@ +const dimensionedScalar& rho1f(rho1); +const dimensionedScalar& rho2f(rho2); diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Kunz/Kunz.C b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Kunz/Kunz.C index a4663ba488753b848fe1e089ae5fb0d38ce838e4..32d3fe43086792e76b29cb27291de519d8ef4d35 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Kunz/Kunz.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Kunz/Kunz.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,10 +47,10 @@ Foam::phaseChangeTwoPhaseMixtures::Kunz::Kunz : phaseChangeTwoPhaseMixture(typeName, U, phi), - UInf_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("UInf")), - tInf_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("tInf")), - Cc_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cc")), - Cv_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cv")), + UInf_("UInf", dimVelocity, phaseChangeTwoPhaseMixtureCoeffs_), + tInf_("tInf", dimTime, phaseChangeTwoPhaseMixtureCoeffs_), + Cc_("Cc", dimless, phaseChangeTwoPhaseMixtureCoeffs_), + Cv_("Cv", dimless, phaseChangeTwoPhaseMixtureCoeffs_), p0_("0", pSat().dimensions(), 0.0), @@ -102,7 +102,7 @@ bool Foam::phaseChangeTwoPhaseMixtures::Kunz::read() { if (phaseChangeTwoPhaseMixture::read()) { - phaseChangeTwoPhaseMixtureCoeffs_ = subDict(type() + "Coeffs"); + phaseChangeTwoPhaseMixtureCoeffs_ = optionalSubDict(type() + "Coeffs"); phaseChangeTwoPhaseMixtureCoeffs_.lookup("UInf") >> UInf_; phaseChangeTwoPhaseMixtureCoeffs_.lookup("tInf") >> tInf_; diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Merkle/Merkle.C b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Merkle/Merkle.C index cfe6b1b0083a4cffbb9bcb674918c3d99275b3dd..ade26e86a41c43a3eceef506a8a8302b3f461db9 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Merkle/Merkle.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Merkle/Merkle.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,10 +47,10 @@ Foam::phaseChangeTwoPhaseMixtures::Merkle::Merkle : phaseChangeTwoPhaseMixture(typeName, U, phi), - UInf_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("UInf")), - tInf_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("tInf")), - Cc_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cc")), - Cv_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cv")), + UInf_("UInf", dimVelocity, phaseChangeTwoPhaseMixtureCoeffs_), + tInf_("tInf", dimTime, phaseChangeTwoPhaseMixtureCoeffs_), + Cc_("Cc", dimless, phaseChangeTwoPhaseMixtureCoeffs_), + Cv_("Cv", dimless, phaseChangeTwoPhaseMixtureCoeffs_), p0_("0", pSat().dimensions(), 0.0), @@ -97,7 +97,7 @@ bool Foam::phaseChangeTwoPhaseMixtures::Merkle::read() { if (phaseChangeTwoPhaseMixture::read()) { - phaseChangeTwoPhaseMixtureCoeffs_ = subDict(type() + "Coeffs"); + phaseChangeTwoPhaseMixtureCoeffs_ = optionalSubDict(type() + "Coeffs"); phaseChangeTwoPhaseMixtureCoeffs_.lookup("UInf") >> UInf_; phaseChangeTwoPhaseMixtureCoeffs_.lookup("tInf") >> tInf_; diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/SchnerrSauer/SchnerrSauer.C b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/SchnerrSauer/SchnerrSauer.C index 3be86e0f518b15cc6754fb3e5046c30be946a3b6..07fe4a233180865ec9a0f4f9e5cc7d80c0a70a19 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/SchnerrSauer/SchnerrSauer.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/SchnerrSauer/SchnerrSauer.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,10 +54,10 @@ Foam::phaseChangeTwoPhaseMixtures::SchnerrSauer::SchnerrSauer : phaseChangeTwoPhaseMixture(typeName, U, phi), - n_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("n")), - dNuc_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("dNuc")), - Cc_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cc")), - Cv_(phaseChangeTwoPhaseMixtureCoeffs_.lookup("Cv")), + n_("n", dimless/dimVolume, phaseChangeTwoPhaseMixtureCoeffs_), + dNuc_("dNuc", dimLength, phaseChangeTwoPhaseMixtureCoeffs_), + Cc_("Cc", dimless, phaseChangeTwoPhaseMixtureCoeffs_), + Cv_("Cv", dimless, phaseChangeTwoPhaseMixtureCoeffs_), p0_("0", pSat().dimensions(), 0.0) { @@ -151,7 +151,7 @@ bool Foam::phaseChangeTwoPhaseMixtures::SchnerrSauer::read() { if (phaseChangeTwoPhaseMixture::read()) { - phaseChangeTwoPhaseMixtureCoeffs_ = subDict(type() + "Coeffs"); + phaseChangeTwoPhaseMixtureCoeffs_ = optionalSubDict(type() + "Coeffs"); phaseChangeTwoPhaseMixtureCoeffs_.lookup("n") >> n_; phaseChangeTwoPhaseMixtureCoeffs_.lookup("dNuc") >> dNuc_; diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/phaseChangeTwoPhaseMixture/phaseChangeTwoPhaseMixture.C b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/phaseChangeTwoPhaseMixture/phaseChangeTwoPhaseMixture.C index b9a5e69bf8cfe13ad3e2664d2edebf52af285ca2..c4fe701a2f779dcf37079b000e3db9e46c94421e 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/phaseChangeTwoPhaseMixture/phaseChangeTwoPhaseMixture.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/phaseChangeTwoPhaseMixture/phaseChangeTwoPhaseMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ Foam::phaseChangeTwoPhaseMixture::phaseChangeTwoPhaseMixture ) : incompressibleTwoPhaseMixture(U, phi), - phaseChangeTwoPhaseMixtureCoeffs_(subDict(type + "Coeffs")), + phaseChangeTwoPhaseMixtureCoeffs_(optionalSubDict(type + "Coeffs")), pSat_("pSat", dimPressure, lookup("pSat")) {} @@ -77,7 +77,7 @@ bool Foam::phaseChangeTwoPhaseMixture::read() { if (incompressibleTwoPhaseMixture::read()) { - phaseChangeTwoPhaseMixtureCoeffs_ = subDict(type() + "Coeffs"); + phaseChangeTwoPhaseMixtureCoeffs_ = optionalSubDict(type() + "Coeffs"); lookup("pSat") >> pSat_; return true; diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/constantDiameter/constantDiameter.H index 071820c319f0202ca792e0531bd909aef52d8749..738b7ae57048422a57443f41a5da06d23a50029a 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/constantDiameter/constantDiameter.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/constantDiameter/constantDiameter.H @@ -22,13 +22,13 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constant + Foam::diameterModels::constant Description Constant dispersed-phase particle diameter model. SourceFiles - constant.C + constantDiameter.C \*---------------------------------------------------------------------------*/ diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/diameterModel/newDiameterModel.C index 51e740788280f9837004065c12e3a252614f3121..963ad160f7ec26e4186acb1fb8c0b9d806dd6e74 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/diameterModel/newDiameterModel.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/diameterModels/diameterModel/newDiameterModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,11 @@ Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New << exit(FatalError); } - return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase); + return cstrIter() + ( + dict.optionalSubDict(diameterModelType + "Coeffs"), + phase + ); } diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C index be4def509ec19aa2e92c155ffca2ac90a5bf0a6e..de3084f69f010f2262fe66fa76156a3b4b0b1f19 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,11 +64,8 @@ void Foam::multiphaseSystem::solveAlphas() forAllIter(PtrDictionary<phaseModel>, phases_, iter) { - phaseModel& phase1 = iter(); - volScalarField& alpha1 = phase1; - - phase1.alphaPhi() = - dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0); + phaseModel& phase = iter(); + volScalarField& alpha1 = phase; alphaPhiCorrs.set ( @@ -79,7 +76,7 @@ void Foam::multiphaseSystem::solveAlphas() fvc::flux ( phi_, - phase1, + phase, "div(phi," + alpha1.name() + ')' ) ) @@ -92,13 +89,13 @@ void Foam::multiphaseSystem::solveAlphas() phaseModel& phase2 = iter2(); volScalarField& alpha2 = phase2; - if (&phase2 == &phase1) continue; + if (&phase2 == &phase) continue; - surfaceScalarField phir(phase1.phi() - phase2.phi()); + surfaceScalarField phir(phase.phi() - phase2.phi()); scalarCoeffSymmTable::const_iterator cAlpha ( - cAlphas_.find(interfacePair(phase1, phase2)) + cAlphas_.find(interfacePair(phase, phase2)) ); if (cAlpha != cAlphas_.end()) @@ -108,7 +105,7 @@ void Foam::multiphaseSystem::solveAlphas() (mag(phi_) + mag(phir))/mesh_.magSf() ); - phir += min(cAlpha()*phic, max(phic))*nHatf(phase1, phase2); + phir += min(cAlpha()*phic, max(phic))*nHatf(phase, phase2); } word phirScheme @@ -119,39 +116,18 @@ void Foam::multiphaseSystem::solveAlphas() alphaPhiCorr += fvc::flux ( -fvc::flux(-phir, phase2, phirScheme), - phase1, + phase, phirScheme ); } - surfaceScalarField::Boundary& alphaPhiCorrBf = - alphaPhiCorr.boundaryFieldRef(); - - // Ensure that the flux at inflow BCs is preserved - forAll(alphaPhiCorrBf, patchi) - { - fvsPatchScalarField& alphaPhiCorrp = alphaPhiCorrBf[patchi]; - - if (!alphaPhiCorrp.coupled()) - { - const scalarField& phi1p = phase1.phi().boundaryField()[patchi]; - const scalarField& alpha1p = alpha1.boundaryField()[patchi]; - - forAll(alphaPhiCorrp, facei) - { - if (phi1p[facei] < 0) - { - alphaPhiCorrp[facei] = alpha1p[facei]*phi1p[facei]; - } - } - } - } + phase.correctInflowOutflow(alphaPhiCorr); MULES::limit ( 1.0/mesh_.time().deltaT().value(), geometricOneField(), - phase1, + phase, phi_, alphaPhiCorr, zeroField(), @@ -182,29 +158,30 @@ void Foam::multiphaseSystem::solveAlphas() forAllIter(PtrDictionary<phaseModel>, phases_, iter) { - phaseModel& phase1 = iter(); + phaseModel& phase = iter(); surfaceScalarField& alphaPhi = alphaPhiCorrs[phasei]; - alphaPhi += upwind<scalar>(mesh_, phi_).flux(phase1); + alphaPhi += upwind<scalar>(mesh_, phi_).flux(phase); + phase.correctInflowOutflow(alphaPhi); MULES::explicitSolve ( geometricOneField(), - phase1, + phase, alphaPhi, zeroField(), zeroField() ); - phase1.alphaPhi() += alphaPhi; + phase.alphaPhi() = alphaPhi; - Info<< phase1.name() << " volume fraction, min, max = " - << phase1.weightedAverage(mesh_.V()).value() - << ' ' << min(phase1).value() - << ' ' << max(phase1).value() + Info<< phase.name() << " volume fraction, min, max = " + << phase.weightedAverage(mesh_.V()).value() + << ' ' << min(phase).value() + << ' ' << max(phase).value() << endl; - sumAlpha += phase1; + sumAlpha += phase; phasei++; } @@ -215,6 +192,15 @@ void Foam::multiphaseSystem::solveAlphas() << ' ' << max(sumAlpha).value() << endl; + // Correct the sum of the phase-fractions to avoid 'drift' + volScalarField sumCorr(1.0 - sumAlpha); + forAllIter(PtrDictionary<phaseModel>, phases_, iter) + { + phaseModel& phase = iter(); + volScalarField& alpha = phase; + alpha += alpha*sumCorr; + } + calcAlphas(); } @@ -815,6 +801,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::multiphaseSystem::surfaceTension ) ) ); + tSurfaceTension.ref().setOriented(); forAllConstIter(PtrDictionary<phaseModel>, phases_, iter) { diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C index f8b323346fdb8e1e4087bb23a45f1b9258158e13..224d0345d6ddc8481542d436e11399fa4187a0f3 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -113,6 +113,8 @@ Foam::phaseModel::phaseModel dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0) ) { + alphaPhi_.setOriented(); + const word phiName = IOobject::groupName("phi", name_); IOobject phiHeader @@ -236,6 +238,24 @@ bool Foam::phaseModel::read(const dictionary& phaseDict) } +void Foam::phaseModel::correctInflowOutflow(surfaceScalarField& alphaPhi) const +{ + surfaceScalarField::Boundary& alphaPhiBf = alphaPhi.boundaryFieldRef(); + const volScalarField::Boundary& alphaBf = boundaryField(); + const surfaceScalarField::Boundary& phiBf = phi().boundaryField(); + + forAll(alphaPhiBf, patchi) + { + fvsPatchScalarField& alphaPhip = alphaPhiBf[patchi]; + + if (!alphaPhip.coupled()) + { + alphaPhip = phiBf[patchi]*alphaBf[patchi]; + } + } +} + + Foam::tmp<Foam::volScalarField> Foam::phaseModel::d() const { return dPtr_().d(); diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H index d1f1157b9a1896da0e71281f4a058670e7a938d7..90e48183cae4ac612202ad6a98aa80e7fc727a40 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -208,6 +208,9 @@ public: return alphaPhi_; } + //- Ensure that the flux at inflow/outflow BCs is preserved + void correctInflowOutflow(surfaceScalarField& alphaPhi) const; + //- Correct the phase properties void correct(); diff --git a/applications/solvers/multiphase/multiphaseInterFoam/Make/options b/applications/solvers/multiphase/multiphaseInterFoam/Make/options index 99850d69be78f2de6c487d44459a19e5d43aee51..576e7aa224c16f8d2c0eda66dc38e8f5ed744523 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/Make/options +++ b/applications/solvers/multiphase/multiphaseInterFoam/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ -I. \ + -I../VoF \ -I../interFoam \ -ImultiphaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options index 1a210c20e682b6da1647db40cbb548907985dd8b..b7d051f1ca8d83e173ce73644787401c3038b239 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options +++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ -I.. \ + -I../../VoF \ -I../../interFoam/interDyMFoam \ -I../../interFoam \ -I../multiphaseMixture/lnInclude \ diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C index 5dd59dead158872adb374047c6dbf02732dba212..b6144051a45c09a63b963531718910eeda82a49e 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C +++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -128,6 +128,8 @@ Foam::multiphaseMixture::multiphaseMixture 1e-8/pow(average(mesh_.V()), 1.0/3.0) ) { + rhoPhi_.setOriented(); + calcAlphas(); alphas_.write(); } @@ -273,6 +275,7 @@ Foam::multiphaseMixture::surfaceTensionForce() const ); surfaceScalarField& stf = tstf.ref(); + stf.setOriented(); forAllConstIter(PtrDictionary<phase>, phases_, iter1) { @@ -681,6 +684,14 @@ void Foam::multiphaseMixture::solveAlphas << ' ' << max(sumAlpha).value() << endl; + // Correct the sum of the phase-fractions to avoid 'drift' + volScalarField sumCorr(1.0 - sumAlpha); + forAllIter(PtrDictionary<phase>, phases_, iter) + { + phase& alpha = iter(); + alpha += alpha*sumCorr; + } + calcAlphas(); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options index 3a5eb7ac71ebea54e7e7b245a7c4f60d1756b80f..65db644ba796f5afa0040d2f0b19833ad26417ca 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options @@ -2,10 +2,7 @@ EXE_INC = \ -I../phaseSystems/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C index 435bb7df2a376f54c6fc224433b8ca120ae17f11..de32766bc6dd72e2c6e74dd25036c60e6ed13d20 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,9 +86,7 @@ Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::update ( const volScalarField& Tf ) -{ - // do nothing -} +{} template<class Thermo, class OtherThermo> diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H index 636dc572932795d2e618db7d30d6e1dda3bb1540..94daf7702766ffbda58d11564d3ec08cd5ffa437 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantSurfaceTensionCoefficient + Foam::surfaceTensionModels::constantSurfaceTensionCoefficient Description Constant value surface tension model. diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H index 4ca36a0a965e7cf25f9f44061693ed982ee0fc79..c5963a3efffc089bea09e946f903df4fccaac6e2 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantAspectRatio + Foam::aspectRatioModels::constantAspectRatio Description Constant value aspect ratio model. diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C index 64345bf7597e09c64a97bed915b70398d89a1c61..2213f1a7253e0ca60ca47724196492e1e8a551ad 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C @@ -455,6 +455,7 @@ Foam::BlendedInterfacialModel<ModelType>::Ff() const dimensionedScalar("zero", ModelType::dimF*dimArea, 0) ) ); + x.ref().setOriented(); if (model_.valid()) { diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C index b9859eb41d07956825a509ce71274b1b8249dade..02969b89cb86825dda8f261d7118df25cbe53164 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C @@ -347,7 +347,7 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Ff } else { - return tmp<surfaceScalarField> + tmp<surfaceScalarField> tFf ( new surfaceScalarField ( @@ -364,6 +364,10 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Ff dimensionedScalar("zero", liftModel::dimF*dimArea, 0) ) ); + + tFf.ref().setOriented(); + + return tFf; } } @@ -621,6 +625,8 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::setPhiD ) ) ); + + phiDs[phasei].setOriented(); } return phiDs[phasei]; diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C index b33289a0b73ced738cc851e65ad10e4651b3ec86..4335bace8a91be04d0347163f51faac6c0fd94f1 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -375,6 +375,18 @@ void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo() volScalarField hef1(phase1.thermo().he(phase1.thermo().p(), Tf)); volScalarField hef2(phase2.thermo().he(phase2.thermo().p(), Tf)); + volScalarField L + ( + min + ( + (pos(iDmdt)*he2 + neg(iDmdt)*hef2) + - (neg(iDmdt)*he1 + pos(iDmdt)*hef1), + 0.3*mag(hef2 - hef1) + ) + ); + + volScalarField iDmdtNew(iDmdt); + if (massTransfer_ ) { volScalarField H1 @@ -389,28 +401,13 @@ void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo() Tf = saturationModel_->Tsat(phase1.thermo().p()); - scalar iDmdtRelax(this->mesh().fieldRelaxationFactor("iDmdt")); + iDmdtNew = + (H1*(Tf - T1) + H2*(Tf - T2))/L; - iDmdt = - (1 - iDmdtRelax)*iDmdt - + iDmdtRelax*(H1*(Tf - T1) + H2*(Tf - T2)) - /min - ( - (pos(iDmdt)*he2 + neg(iDmdt)*hef2) - - (neg(iDmdt)*he1 + pos(iDmdt)*hef1), - 0.3*mag(hef2 - hef1) - ); - - Info<< "iDmdt." << pair.name() - << ": min = " << min(iDmdt.primitiveField()) - << ", mean = " << average(iDmdt.primitiveField()) - << ", max = " << max(iDmdt.primitiveField()) - << ", integral = " << fvc::domainIntegrate(iDmdt).value() - << endl; } else { - iDmdt == dimensionedScalar("0", dmdt.dimensions(), 0); + iDmdtNew == dimensionedScalar("0",dmdt.dimensions(), 0); } volScalarField H1(this->heatTransferModels_[pair][pair.first()]->K()); @@ -423,16 +420,7 @@ void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo() H2.boundaryFieldRef() = max(H2.boundaryField(), phase2.boundaryField()*HLimit); - volScalarField mDotL - ( - iDmdt* - ( - (pos(iDmdt)*he2 + neg(iDmdt)*hef2) - - (neg(iDmdt)*he1 + pos(iDmdt)*hef1) - ) - ); - - Tf = (H1*T1 + H2*T2 + mDotL)/(H1 + H2); + Tf = (H1*T1 + H2*T2 + iDmdtNew*L)/(H1 + H2); Info<< "Tf." << pair.name() << ": min = " << min(Tf.primitiveField()) @@ -440,6 +428,19 @@ void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo() << ", max = " << max(Tf.primitiveField()) << endl; + scalar iDmdtRelax(this->mesh().fieldRelaxationFactor("iDmdt")); + iDmdt = (1 - iDmdtRelax)*iDmdt + iDmdtRelax*iDmdtNew; + + if (massTransfer_ ) + { + Info<< "iDmdt." << pair.name() + << ": min = " << min(iDmdt.primitiveField()) + << ", mean = " << average(iDmdt.primitiveField()) + << ", max = " << max(iDmdt.primitiveField()) + << ", integral = " << fvc::domainIntegrate(iDmdt).value() + << endl; + } + // Accumulate dmdt contributions from boundaries volScalarField wDmdt ( diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C index a956565b4710a10ba4d594cc0e386a0ae7b2eb2f..d7eaa2f081528141b9df54ffe3fabdd158138113 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,7 +61,7 @@ void Foam::diameterModel::correct() bool Foam::diameterModel::read(const dictionary& phaseProperties) { - diameterProperties_ = phaseProperties.subDict(type() + "Coeffs"); + diameterProperties_ = phaseProperties.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C index 51e740788280f9837004065c12e3a252614f3121..963ad160f7ec26e4186acb1fb8c0b9d806dd6e74 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,11 @@ Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New << exit(FatalError); } - return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase); + return cstrIter() + ( + dict.optionalSubDict(diameterModelType + "Coeffs"), + phase + ); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C index b5dd4ab37a0e8185fe1b76179a79d15df3d4b247..cabb9e2ebf11e178e1fc2dd223cbc5b382d8fdad 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C @@ -135,7 +135,7 @@ Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn() he ) == - this->Sh() + this->Qdot() ); // Add the appropriate pressure-work term diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C index bd4dda226faab597b5a2b62baec640eb626d031b..e92cae4c9f075765d116b6729c591c37a04b53fb 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C @@ -65,7 +65,7 @@ Foam::InertPhaseModel<BasePhaseModel>::R template<class BasePhaseModel> Foam::tmp<Foam::volScalarField> -Foam::InertPhaseModel<BasePhaseModel>::Sh() const +Foam::InertPhaseModel<BasePhaseModel>::Qdot() const { return tmp<volScalarField> ( @@ -73,7 +73,7 @@ Foam::InertPhaseModel<BasePhaseModel>::Sh() const ( IOobject ( - IOobject::groupName("Sh", this->name()), + IOobject::groupName("Qdot", this->name()), this->mesh().time().timeName(), this->mesh() ), diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H index 26c9661ab7e7e015ca798b46da567b6c3ab294ea..c152da488a9cba2c5e4577ef182565cb94765383 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H @@ -78,8 +78,8 @@ public: volScalarField& Yi ) const; - //- Return the reaction heat source - virtual tmp<volScalarField> Sh() const; + //- Return the heat release rate + virtual tmp<volScalarField> Qdot() const; }; diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C index 0605c1171e8a09bcacf947f03036335ab38851ba..2afa388aca951c7c9a496765af7d099f4eab41d7 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C @@ -200,6 +200,9 @@ Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel dimensionedScalar("0", dimDensity/dimTime, 0) ) { + alphaPhi_.setOriented(); + alphaRhoPhi_.setOriented(); + phi_.writeOpt() = IOobject::AUTO_WRITE; correctKinematics(); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C index b15f2898b549331d5ff2e2858ff121cb9c4b4f81..aef23273f2fd34e7cb12bf7fa8e9162c15df31e0 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C @@ -105,9 +105,9 @@ Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::R template<class BasePhaseModel, class ReactionType> Foam::tmp<Foam::volScalarField> -Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::Sh() const +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::Qdot() const { - return reaction_->Sh(); + return reaction_->Qdot(); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H index e05c71b44a5b143fd8724ec0c0c223aa50440f98..fdda42ca091064fcc79b851afa9f15c089e112c6 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H @@ -87,8 +87,8 @@ public: volScalarField& Yi ) const; - //- Return the reacton heat source - virtual tmp<volScalarField> Sh() const; + //- Return heat release rate + virtual tmp<volScalarField> Qdot() const; }; diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C index 9fa7c0f5898a66d6bb97ab857444b1bea4297ea6..da10824230fabd22c7741cf1df2556930d4c4956 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -165,6 +165,24 @@ bool Foam::phaseModel::compressible() const } +void Foam::phaseModel::correctInflowOutflow(surfaceScalarField& alphaPhi) const +{ + surfaceScalarField::Boundary& alphaPhiBf = alphaPhi.boundaryFieldRef(); + const volScalarField::Boundary& alphaBf = boundaryField(); + const surfaceScalarField::Boundary& phiBf = phi()().boundaryField(); + + forAll(alphaPhiBf, patchi) + { + fvsPatchScalarField& alphaPhip = alphaPhiBf[patchi]; + + if (!alphaPhip.coupled()) + { + alphaPhip = phiBf[patchi]*alphaBf[patchi]; + } + } +} + + const Foam::tmp<Foam::volScalarField>& Foam::phaseModel::divU() const { NotImplemented; diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H index 719ef80a8c9d575dbd4816a1f3e9b2415c1774de..41fb67e715d1ffcca69f53704e61a4b21d609b84 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -283,6 +283,9 @@ public: //- Access the mass flux of the phase virtual surfaceScalarField& alphaRhoPhi() = 0; + //- Ensure that the flux at inflow/outflow BCs is preserved + void correctInflowOutflow(surfaceScalarField& alphaPhi) const; + // Transport diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C index b9abe549a0bf1e7068d462f77fc8dce79df18f00..19e768416fdf33e477794ffbc31796552f269b37 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,9 +76,7 @@ void Foam::phaseSystem::generatePairs // pair already exists if (phasePairs_.found(key)) - { - // do nothing ... - } + {} // new ordered pair else if (key.ordered()) diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C index 01f36c881c0cb2f1642554b06a739b9d5060d06c..8f4bf7ee0fdc00c86742d1310530be340065b53d 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -131,6 +131,22 @@ void Foam::phaseSystem::generatePairsAndSubModels ) ) ); + + if (!phasePairs_.found(key)) + { + phasePairs_.insert + ( + key, + autoPtr<phasePair> + ( + new phasePair + ( + phaseModels_[key.first()], + phaseModels_[key.second()] + ) + ) + ); + } } } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C index f43303a2b7ecb5671e0fc962bc25e8d80a58e60b..712a96e1dedd3fdbbaf4f502b04611ffb83acbf9 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -253,6 +253,14 @@ makeReactionMixtureThermo constRefRhoConstHThermoPhysics ); +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + multiComponentMixture, + constRefFluidHThermoPhysics +); makeReactionMixtureThermo ( diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C index ca37c2245b4334d24a93fcbaa60be03459024ef5..627af1db87f08a5912e12c0dd01a4650f53fcd99 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,15 +71,17 @@ void Foam::multiphaseSystem::solveAlphas() { bool LTS = fv::localEulerDdt::enabled(mesh_); + forAll(phases(), phasei) + { + phases()[phasei].correctBoundaryConditions(); + } + PtrList<surfaceScalarField> alphaPhiCorrs(phases().size()); forAll(phases(), phasei) { phaseModel& phase = phases()[phasei]; volScalarField& alpha1 = phase; - phase.alphaPhi() = - dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0); - alphaPhiCorrs.set ( phasei, @@ -134,28 +136,7 @@ void Foam::multiphaseSystem::solveAlphas() ); } - surfaceScalarField::Boundary& alphaPhiCorrBf = - alphaPhiCorr.boundaryFieldRef(); - - // Ensure that the flux at inflow BCs is preserved - forAll(alphaPhiCorr.boundaryField(), patchi) - { - fvsPatchScalarField& alphaPhiCorrp = alphaPhiCorrBf[patchi]; - - if (!alphaPhiCorrp.coupled()) - { - const scalarField& phi1p = phase.phi().boundaryField()[patchi]; - const scalarField& alpha1p = alpha1.boundaryField()[patchi]; - - forAll(alphaPhiCorrp, facei) - { - if (phi1p[facei] < 0) - { - alphaPhiCorrp[facei] = alpha1p[facei]*phi1p[facei]; - } - } - } - } + phase.correctInflowOutflow(alphaPhiCorr); if (LTS) { @@ -215,8 +196,9 @@ void Foam::multiphaseSystem::solveAlphas() phaseModel& phase = phases()[phasei]; volScalarField& alpha = phase; - surfaceScalarField& alphaPhic = alphaPhiCorrs[phasei]; - alphaPhic += upwind<scalar>(mesh_, phi_).flux(phase); + surfaceScalarField& alphaPhi = alphaPhiCorrs[phasei]; + alphaPhi += upwind<scalar>(mesh_, phi_).flux(phase); + phase.correctInflowOutflow(alphaPhi); volScalarField::Internal Sp ( @@ -298,12 +280,12 @@ void Foam::multiphaseSystem::solveAlphas() ( geometricOneField(), alpha, - alphaPhic, + alphaPhi, Sp, Su ); - phase.alphaPhi() += alphaPhic; + phase.alphaPhi() = alphaPhi; Info<< phase.name() << " volume fraction, min, max = " << phase.weightedAverage(mesh_.V()).value() @@ -319,6 +301,14 @@ void Foam::multiphaseSystem::solveAlphas() << ' ' << min(sumAlpha).value() << ' ' << max(sumAlpha).value() << endl; + + // Correct the sum of the phase-fractions to avoid 'drift' + volScalarField sumCorr(1.0 - sumAlpha); + forAll(phases(), phasei) + { + volScalarField& alpha = phases()[phasei]; + alpha += alpha*sumCorr; + } } @@ -558,6 +548,8 @@ Foam::tmp<Foam::surfaceScalarField> Foam::multiphaseSystem::surfaceTension ) ); + tSurfaceTension.ref().setOriented(); + forAll(phases(), phasej) { const phaseModel& phase2 = phases()[phasej]; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H index 5e916dce2fdcb9f945c7f86dfe5e2a323c3b66c9..3445c81fb94d049354121dd26854d61fdea1b5a0 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H @@ -294,12 +294,11 @@ while (pimple.correct()) forAll(phases, phasei) { phaseModel& phase = phases[phasei]; + const volScalarField& alpha = phase; + volScalarField& rho = phase.thermo().rho(); if (phase.compressible()) { - const volScalarField& alpha = phase; - const volScalarField& rho = phase.rho(); - if (pimple.transonic()) { surfaceScalarField phid @@ -357,21 +356,29 @@ while (pimple.correct()) ).ptr() ); } + } + else + { + pEqnComps.set + ( + phasei, + fvm::Su(-(fvOptions(alpha, rho)&rho)/rho, p_rgh).ptr() + ); + } - if (fluid.transfersMass(phase)) + if (fluid.transfersMass(phase)) + { + if (pEqnComps.set(phasei)) { - if (pEqnComps.set(phasei)) - { - pEqnComps[phasei] -= fluid.dmdt(phase)/rho; - } - else - { - pEqnComps.set - ( - phasei, - fvm::Su(-fluid.dmdt(phase)/rho, p_rgh) - ); - } + pEqnComps[phasei] -= fluid.dmdt(phase)/rho; + } + else + { + pEqnComps.set + ( + phasei, + fvm::Su(-fluid.dmdt(phase)/rho, p_rgh) + ); } } } @@ -421,7 +428,7 @@ while (pimple.correct()) phase.phi() = phiHbyAs[phasei] + alpharAUfs[phasei]*mSfGradp; // Set the phase dilatation rates - if (phase.compressible()) + if (pEqnComps.set(phasei)) { phase.divU(-pEqnComps[phasei] & p_rgh); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H index 3b225202e917f8839dd4d821cc15c2cc47bbd6d2..3365febdf6d99a6197132ecf968d8ce10894a6b9 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H @@ -7,8 +7,7 @@ volScalarField rAU1 1.0 /( U1Eqn.A() - + max(phase1.residualAlpha() - alpha1, scalar(0)) - *rho1/runTime.deltaT() + + byDt(max(phase1.residualAlpha() - alpha1, scalar(0))*rho1) ) ); volScalarField rAU2 @@ -17,8 +16,7 @@ volScalarField rAU2 1.0 /( U2Eqn.A() - + max(phase2.residualAlpha() - alpha2, scalar(0)) - *rho2/runTime.deltaT() + + byDt(max(phase2.residualAlpha() - alpha2, scalar(0))*rho2) ) ); @@ -101,8 +99,8 @@ while (pimple.correct()) rAU1 *( U1Eqn.H() - + max(phase1.residualAlpha() - alpha1, scalar(0)) - *rho1*U1.oldTime()/runTime.deltaT() + + byDt(max(phase1.residualAlpha() - alpha1, scalar(0))*rho1) + *U1.oldTime() ); volVectorField HbyA2 @@ -114,8 +112,8 @@ while (pimple.correct()) rAU2 *( U2Eqn.H() - + max(phase2.residualAlpha() - alpha2, scalar(0)) - *rho2*U2.oldTime()/runTime.deltaT() + + byDt(max(phase2.residualAlpha() - alpha2, scalar(0))*rho2) + *U2.oldTime() ); surfaceScalarField ghSnGradRho @@ -175,11 +173,9 @@ while (pimple.correct()) ( IOobject::groupName("phiHbyA", phase1.name()), fvc::flux(HbyA1) - + phiCorrCoeff1*fvc::interpolate(alpha1.oldTime()*rho1.oldTime()*rAU1) - *( - MRF.absolute(phi1.oldTime()) - - fvc::flux(U1.oldTime()) - )/runTime.deltaT() + + phiCorrCoeff1 + *fvc::interpolate(byDt(alpha1.oldTime()*rho1.oldTime()*rAU1)) + *(MRF.absolute(phi1.oldTime()) - fvc::flux(U1.oldTime())) - phiF1() - phig1 ); @@ -189,11 +185,9 @@ while (pimple.correct()) ( IOobject::groupName("phiHbyA", phase2.name()), fvc::flux(HbyA2) - + phiCorrCoeff2*fvc::interpolate(alpha2.oldTime()*rho2.oldTime()*rAU2) - *( - MRF.absolute(phi2.oldTime()) - - fvc::flux(U2.oldTime()) - )/runTime.deltaT() + + phiCorrCoeff2 + *fvc::interpolate(byDt(alpha2.oldTime()*rho2.oldTime()*rAU2)) + *(MRF.absolute(phi2.oldTime()) - fvc::flux(U2.oldTime())) - phiF2() - phig2 ); @@ -236,9 +230,10 @@ while (pimple.correct()) tmp<fvScalarMatrix> pEqnComp2; // Construct the compressibility parts of the pressure equation - if (pimple.transonic()) + + if (phase1.compressible()) { - if (phase1.compressible()) + if (pimple.transonic()) { surfaceScalarField phid1 ( @@ -263,8 +258,24 @@ while (pimple.correct()) deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr()); pEqnComp1.ref().relax(); } + else + { + pEqnComp1 = + ( + phase1.continuityError() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); + } + } + else + { + pEqnComp1 = fvm::Su(-(fvOptions(alpha1, rho1)&rho1)/rho1, p_rgh); + } - if (phase2.compressible()) + if (phase2.compressible()) + { + if (pimple.transonic()) { surfaceScalarField phid2 ( @@ -285,23 +296,11 @@ while (pimple.correct()) + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) ) ); + deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr()); pEqnComp2.ref().relax(); } - } - else - { - if (phase1.compressible()) - { - pEqnComp1 = - ( - phase1.continuityError() - - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) - )/rho1 - + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); - } - - if (phase2.compressible()) + else { pEqnComp2 = ( @@ -311,6 +310,10 @@ while (pimple.correct()) + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); } } + else + { + pEqnComp2 = fvm::Su(-(fvOptions(alpha2, rho2)&rho2)/rho2, p_rgh); + } if (fluid.transfersMass()) { @@ -396,11 +399,11 @@ while (pimple.correct()) } // Set the phase dilatation rates - if (phase1.compressible()) + if (pEqnComp1.valid()) { phase1.divU(-pEqnComp1 & p_rgh); } - if (phase2.compressible()) + if (pEqnComp2.valid()) { phase2.divU(-pEqnComp2 & p_rgh); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H index c7bccf66eac5e0a56750e2837027e16394903c56..557eb02678c560ccd8d32ce9dca262b5f05ac4f0 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H @@ -1,2 +1,2 @@ -ddtPhi1 = fvc::ddt(phi1); -ddtPhi2 = fvc::ddt(phi2); +tddtPhi1 = fvc::ddt(phi1); +tddtPhi2 = fvc::ddt(phi2); diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H index 14e66e47a833f9cbf06eba9d03904b3c675599ba..e461616b290d9163cbe4a2214320137a7296042c 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H @@ -1,2 +1,7 @@ -surfaceScalarField ddtPhi1(fvc::ddt(phi1)); -surfaceScalarField ddtPhi2(fvc::ddt(phi2)); +tmp<surfaceScalarField> tddtPhi1; +tmp<surfaceScalarField> tddtPhi2; + +if (faceMomentum) +{ + #include "pUf/DDtU.H" +} diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createRDeltaTf.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createRDeltaTf.H similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createRDeltaTf.H rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createRDeltaTf.H diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H index 7950d76b94470df97aaeebb600a3898177dee675..d2202eb890d412ebfccc0413a26339b0a60b79e9 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H @@ -159,7 +159,7 @@ while (pimple.correct()) (alphaRhof10 + Vmf) *byDt(MRF.absolute(phi1.oldTime())) + fvc::flux(U1Eqn.H()) - + Vmf*ddtPhi2 + + Vmf*tddtPhi2() + Kdf*MRF.absolute(phi2) - Ff1() ); @@ -177,7 +177,7 @@ while (pimple.correct()) (alphaRhof20 + Vmf) *byDt(MRF.absolute(phi2.oldTime())) + fvc::flux(U2Eqn.H()) - + Vmf*ddtPhi1 + + Vmf*tddtPhi1() + Kdf*MRF.absolute(phi1) - Ff2() ); @@ -215,79 +215,91 @@ while (pimple.correct()) tmp<fvScalarMatrix> pEqnComp1; tmp<fvScalarMatrix> pEqnComp2; - if (pimple.transonic()) - { - surfaceScalarField phid1 - ( - IOobject::groupName("phid", phase1.name()), - fvc::interpolate(psi1)*phi1 - ); - surfaceScalarField phid2 - ( - IOobject::groupName("phid", phase2.name()), - fvc::interpolate(psi2)*phi2 - ); + // Construct the compressibility parts of the pressure equation - if (phase1.compressible()) + if (phase1.compressible()) + { + if (pimple.transonic()) { - pEqnComp1 = - ( - phase1.continuityError() - - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) - )/rho1 - + correction + surfaceScalarField phid1 ( - (alpha1/rho1)* - ( - psi1*fvm::ddt(p_rgh) - + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) - ) + IOobject::groupName("phid", phase1.name()), + fvc::interpolate(psi1)*phi1 ); + + pEqnComp1 = + ( + phase1.continuityError() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + correction + ( + (alpha1/rho1)* + ( + psi1*fvm::ddt(p_rgh) + + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + ) + ); + deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr()); pEqnComp1.ref().relax(); } - - if (phase2.compressible()) + else { - pEqnComp2 = - ( - phase2.continuityError() - - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) - )/rho2 - + correction - ( - (alpha2/rho2)* + pEqnComp1 = ( - psi2*fvm::ddt(p_rgh) - + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) - ) - ); - deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr()); - pEqnComp2.ref().relax(); + phase1.continuityError() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); } } else { - if (phase1.compressible()) + pEqnComp1 = fvm::Su(-(fvOptions(alpha1, rho1)&rho1)/rho1, p_rgh); + } + + if (phase2.compressible()) + { + if (pimple.transonic()) { - pEqnComp1 = + surfaceScalarField phid2 ( - phase1.continuityError() - - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) - )/rho1 - + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); - } + IOobject::groupName("phid", phase2.name()), + fvc::interpolate(psi2)*phi2 + ); - if (phase2.compressible()) + pEqnComp2 = + ( + phase2.continuityError() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + correction + ( + (alpha2/rho2)* + ( + psi2*fvm::ddt(p_rgh) + + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + ) + ); + + deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr()); + pEqnComp2.ref().relax(); + } + else { pEqnComp2 = - ( - phase2.continuityError() - - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) - )/rho2 - + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); + ( + phase2.continuityError() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); } } + else + { + pEqnComp2 = fvm::Su(-(fvOptions(alpha2, rho2)&rho2)/rho2, p_rgh); + } if (fluid.transfersMass()) { diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C index f180257e9c01496849486f9ddf60904706de4935..399a596944e8b646ff45ab0f8e61d2fa72ee81d4 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C @@ -45,6 +45,18 @@ Description namespace Foam { + tmp<volScalarField> byDt(const volScalarField& vf) + { + if (fv::localEulerDdt::enabled(vf.mesh())) + { + return fv::localEulerDdt::localRDeltaT(vf.mesh())*vf; + } + else + { + return vf/vf.mesh().time().deltaT(); + } + } + tmp<surfaceScalarField> byDt(const surfaceScalarField& sf) { if (fv::localEulerDdt::enabled(sf.mesh())) @@ -92,7 +104,7 @@ int main(int argc, char *argv[]) ) ); - #include "createRDeltaTf.H" + #include "pUf/createRDeltaTf.H" #include "pUf/createDDtU.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C index 60b92573c488f65754d285a04dcf7e35c0fdfd6c..034da573494e1d166c261b4f3a2d5e4d424fe8fa 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,7 +37,9 @@ License #include "saturationModel.H" #include "wallFvPatch.H" #include "uniformDimensionedFields.H" +#include "mathematicalConstants.H" +using namespace Foam::constant::mathematical; // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -84,7 +86,8 @@ alphatWallBoilingWallFunctionFvPatchScalarField relax_(0.5), AbyV_(p.size(), 0), alphatConv_(p.size(), 0), - dDep_(p.size(), 0), + dDep_(p.size(), 1e-5), + qq_(p.size(), 0), partitioningModel_(nullptr), nucleationSiteModel_(nullptr), departureDiamModel_(nullptr), @@ -112,7 +115,8 @@ alphatWallBoilingWallFunctionFvPatchScalarField relax_(dict.lookupOrDefault<scalar>("relax", 0.5)), AbyV_(p.size(), 0), alphatConv_(p.size(), 0), - dDep_(p.size(), 0), + dDep_(p.size(), 1e-5), + qq_(p.size(), 0), partitioningModel_(nullptr), nucleationSiteModel_(nullptr), departureDiamModel_(nullptr), @@ -157,6 +161,17 @@ alphatWallBoilingWallFunctionFvPatchScalarField ( dict.subDict("departureFreqModel") ); + + if (dict.found("dDep")) + { + dDep_ = scalarField("dDep", dict, p.size()); + } + + if (dict.found("qQuenching")) + { + qq_ = scalarField("qQuenching", dict, p.size()); + } + break; } } @@ -195,6 +210,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField AbyV_(psf.AbyV_), alphatConv_(psf.alphatConv_, mapper), dDep_(psf.dDep_, mapper), + qq_(psf.qq_, mapper), partitioningModel_(psf.partitioningModel_), nucleationSiteModel_(psf.nucleationSiteModel_), departureDiamModel_(psf.departureDiamModel_), @@ -213,6 +229,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField AbyV_(psf.AbyV_), alphatConv_(psf.alphatConv_), dDep_(psf.dDep_), + qq_(psf.qq_), partitioningModel_(psf.partitioningModel_), nucleationSiteModel_(psf.nucleationSiteModel_), departureDiamModel_(psf.departureDiamModel_), @@ -232,6 +249,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField AbyV_(psf.AbyV_), alphatConv_(psf.alphatConv_), dDep_(psf.dDep_), + qq_(psf.qq_), partitioningModel_(psf.partitioningModel_), nucleationSiteModel_(psf.nucleationSiteModel_), departureDiamModel_(psf.departureDiamModel_), @@ -259,10 +277,9 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() // Lookup the fluid model const ThermalPhaseChangePhaseSystem < - MomentumTransferPhaseSystem - < - twoPhaseSystem> - >& fluid = refCast + MomentumTransferPhaseSystem<twoPhaseSystem> + >& fluid = + refCast < const ThermalPhaseChangePhaseSystem < @@ -429,14 +446,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() const scalarField Tplus(Prt_*(log(E_*yPlus)/kappa_ + P)); scalarField Tl(Tw - (Tplus_y250/Tplus)*(Tw - Tc)); - Tl = max(Tc - 40, min(Tc, Tl)); - const scalarField Tsub(max(Tsatw - Tl, scalar(0))); - - // Wall heat flux partitioning - const scalarField fLiquid - ( - partitioningModel_->fLiquid(liquidw) - ); + Tl = max(Tc - 40, Tl); // Nucleation site density: const scalarField N @@ -446,7 +456,9 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() liquid, vapor, patchi, - Tsatw + Tl, + Tsatw, + L ) ); @@ -456,7 +468,9 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() liquid, vapor, patchi, - Tsub + Tl, + Tsatw, + L ); // Bubble departure frequency: @@ -474,19 +488,24 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() // Area fractions: // Del Valle & Kenning (1985) - const scalarField Ja(rhoLiquidw*Cpw*Tsub/(rhoVaporw*L)); - const scalarField Al(fLiquid*4.8*exp(-Ja/80)); + const scalarField Ja + ( + rhoLiquidw*Cpw*(Tsatw - Tl)/(rhoVaporw*L) + ); + const scalarField Al + ( + fLiquid*4.8*exp( min(-Ja/80,log(VGREAT))) + ); - const scalarField A2(min(M_PI*sqr(dDep_)*N*Al/4, scalar(1))); + const scalarField A2(min(pi*sqr(dDep_)*N*Al/4, scalar(1))); const scalarField A1(max(1 - A2, scalar(1e-4))); - const scalarField A2E(min(M_PI*sqr(dDep_)*N*Al/4, scalar(5))); - - // Wall evaporation heat flux [kg/s3 = J/m2s] - const scalarField Qe((1.0/6.0)*A2E*dDep_*rhoVaporw*fDep*L); + const scalarField A2E(min(pi*sqr(dDep_)*N*Al/4, scalar(5))); // Volumetric mass source in the near wall cell due to the // wall boiling - dmdt_ = (1 - relax_)*dmdt_ + relax_*Qe*AbyV_/L; + dmdt_ = + (1 - relax_)*dmdt_ + + relax_*(1.0/6.0)*A2E*dDep_*rhoVaporw*fDep*AbyV_; // Volumetric source in the near wall cell due to the wall // boiling @@ -495,11 +514,11 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() // Quenching heat transfer coefficient const scalarField hQ ( - 2*(alphaw*Cpw)*fDep*sqrt((0.8/fDep)/(M_PI*alphaw/rhow)) + 2*(alphaw*Cpw)*fDep*sqrt((0.8/fDep)/(pi*alphaw/rhow)) ); // Quenching heat flux - const scalarField Qq(A2*hQ*max(Tw - Tl, scalar(0))); + qq_ = (A2*hQ*max(Tw - Tl, scalar(0))); // Effective thermal diffusivity that corresponds to the // calculated convective, quenching and evaporative heat fluxes @@ -508,7 +527,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() ( ( A1*alphatConv_ - + (Qq + Qe)/max(hew.snGrad(), scalar(1e-16)) + + (qq_ + qe())/max(hew.snGrad(), scalar(1e-16)) ) /max(liquidw, scalar(1e-8)) ); @@ -531,12 +550,12 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() if (debug) { - const scalarField Qc + const scalarField qc ( fLiquid*A1*(alphatConv_ + alphaw)*hew.snGrad() ); - const scalarField QEff + const scalarField qEff ( liquidw*(*this + alphaw)*hew.snGrad() ); @@ -555,13 +574,13 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs() << gMax(A2E) << endl; Info<< " dmdtW: " << gMin(dmdt_) << " - " << gMax(dmdt_) << endl; - Info<< " Qc: " << gMin(Qc) << " - " << gMax(Qc) << endl; - Info<< " Qq: " << gMin(fLiquid*Qq) << " - " - << gMax(fLiquid*Qq) << endl; - Info<< " Qe: " << gMin(fLiquid*Qe) << " - " - << gMax(fLiquid*Qe) << endl; - Info<< " QEff: " << gMin(QEff) << " - " - << gMax(QEff) << endl; + Info<< " qc: " << gMin(qc) << " - " << gMax(qc) << endl; + Info<< " qq: " << gMin(fLiquid*qq()) << " - " + << gMax(fLiquid*qq()) << endl; + Info<< " qe: " << gMin(fLiquid*qe()) << " - " + << gMax(fLiquid*qe()) << endl; + Info<< " qEff: " << gMin(qEff) << " - " + << gMax(qEff) << endl; Info<< " alphat: " << gMin(*this) << " - " << gMax(*this) << endl; Info<< " alphatConv: " << gMin(alphatConv_) @@ -622,11 +641,14 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const os << indent << token::BEGIN_BLOCK << incrIndent << nl; departureFreqModel_->write(os); os << decrIndent << indent << token::END_BLOCK << nl; + break; } } dmdt_.writeEntry("dmdt", os); + dDep_.writeEntry("dDep", os); + qq_.writeEntry("qQuenching", os); alphatConv_.writeEntry("alphatConv", os); writeEntry("value", os); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.H index d724d9861156f1fccee8dd0768198eb4f72f6494..665d41197ebf573be4e7599b3c9dbd07055e516b 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -115,7 +115,7 @@ Usage value uniform 0.01; \endverbatim -SeeAlso +See also Foam::alphatPhaseChangeJayatillekeWallFunctionFvPatchField SourceFiles @@ -181,6 +181,9 @@ private: //- Departure diameter field scalarField dDep_; + //- Quenching surface heat flux + scalarField qq_; + //- Run-time selected heat flux partitioning model autoPtr<wallBoilingModels::partitioningModel> partitioningModel_; @@ -269,12 +272,23 @@ public: // Member functions - //- Calculate and return the departure diameter field + //- Return the departure diameter field const scalarField& dDeparture() const { return dDep_; } + //- Return the quenching surface heat flux [W/m2] + const scalarField& qq() const + { + return qq_; + } + + //- Return the evaporation surface heat flux [W/m2] + tmp<scalarField> qe() const + { + return mDotL_/AbyV_; + } // Evaluation functions diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.C index ae6ecf46206799a1c260433dfbac301607521a48..53fe0e2f15bfd5295b91ef4260d28c78fee2e9e7 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,7 +80,9 @@ KocamustafaogullariIshii::dDeparture const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const scalarField& Tsub + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const { // Gravitational acceleration diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.H index 5bbe8d5433015eed05b835cb520b79d2b851d9cc..e7f0c6755535c1ef89b4f3de1394be90c2887066 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,9 @@ public: const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const scalarField& Tsub + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const; virtual void write(Ostream& os) const; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.C index 23229071c0b8558713624736ebe57ce56366a613..71ef4f03c735815d34c261da4e2af756eea66c8a 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,7 +54,10 @@ TolubinskiKostanchuk::TolubinskiKostanchuk const dictionary& dict ) : - departureDiameterModel() + departureDiameterModel(), + dRef_(dict.lookupOrDefault<scalar>("dRef", 6e-4)), + dMax_(dict.lookupOrDefault<scalar>("dMax", 0.0014)), + dMin_(dict.lookupOrDefault<scalar>("dMin", 1e-6)) {} @@ -74,10 +77,22 @@ TolubinskiKostanchuk::dDeparture const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const scalarField& Tsub + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const { - return max(min(0.0006*exp(-Tsub/45), scalar(0.0014)), scalar(1e-6)); + return max(min(dRef_*exp(-(Tsatw-Tl)/45), dMax_), dMin_); +} + + +void Foam::wallBoilingModels::departureDiameterModels:: +TolubinskiKostanchuk::write(Ostream& os) const +{ + departureDiameterModel::write(os); + os.writeKeyword("dRef") << dRef_ << token::END_STATEMENT << nl; + os.writeKeyword("dMax") << dMax_ << token::END_STATEMENT << nl; + os.writeKeyword("dMin") << dMin_ << token::END_STATEMENT << nl; } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.H index 9437f5185b4cd1e843712af39a65ccc640b2f886..79c5d61c6a45b5671d5f1959b3e50d4885a73c12 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,6 +63,17 @@ class TolubinskiKostanchuk public departureDiameterModel { + // Private data: + + //- Coefficient of the temperature term + scalar dRef_; + + //- Maximum diameter + scalar dMax_; + + //- Minimum diameter + scalar dMin_; + public: //- Runtime type information @@ -87,8 +98,12 @@ public: const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const scalarField& Tsub + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const; + + virtual void write(Ostream& os) const; }; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/departureDiameterModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/departureDiameterModel.H index 47f431eb190408eb9d06d1a6d837c873d78fecf5..5a7375e061606f67a3d900961f9be8324aa59a1d 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/departureDiameterModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/departureDiameterModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -107,7 +107,9 @@ public: const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const scalarField& Tsub + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const = 0; virtual void write(Ostream& os) const; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.C index 28920597d2bee20ddd86d7ca5bfd8468b2f64c68..69eddc91c8ed82f6a2b24d6b011e90015a2d4f20 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,8 @@ Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla::LemmertChawla const dictionary& dict ) : - nucleationSiteModel() + nucleationSiteModel(), + Cn_(dict.lookupOrDefault<scalar>("Cn", 1)) {} @@ -71,13 +72,15 @@ Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla::N const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const fvPatchScalarField& Tsatw + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const { const fvPatchScalarField& Tw = liquid.thermo().T().boundaryField()[patchi]; - return 0.8*9.922e5*pow(max((Tw - Tsatw)/10, scalar(0)), 1.805); + return Cn_*9.922e5*pow(max((Tw - Tsatw)/10, scalar(0)), 1.805); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.H index a521eb78429651fee44a27f4c3d57bae6b389d4a..f3c560478fa96d60d07becfd50d0fb8c29bb92a5 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,6 +68,11 @@ class LemmertChawla public nucleationSiteModel { + // Private data: + + //- Coefficient for nucleation site density + scalar Cn_; + public: //- Runtime type information @@ -91,7 +96,9 @@ public: const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const fvPatchScalarField& Tsatw + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const; }; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/nucleationSiteModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/nucleationSiteModel.H index 6a26e4de708e2075234881cac1e8c865a1b9ea4f..fc26b7f9ecf864c6ae5e7f6ab6a662cdfbcd5339 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/nucleationSiteModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/nucleationSiteModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -107,7 +107,9 @@ public: const phaseModel& liquid, const phaseModel& vapor, const label patchi, - const fvPatchScalarField& Tsatw + const scalarField& Tl, + const scalarField& Tsatw, + const scalarField& L ) const = 0; virtual void write(Ostream& os) const; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/Lavieville/Lavieville.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/Lavieville/Lavieville.C index 8feaaf8ca62b3728064061bf51bfeaf8ccdc5a14..1963b114254e1d366e7bbd46dc170f3b332b6f9a 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/Lavieville/Lavieville.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/Lavieville/Lavieville.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,13 +73,13 @@ Lavieville::fLiquid ) const { return - pos(alphaLiquid-alphaCrit_) + pos(alphaLiquid - alphaCrit_) *( 1 - 0.5*exp(-20*(alphaLiquid - alphaCrit_)) ) + neg(alphaLiquid - alphaCrit_) *( - pow(0.5*(alphaLiquid/alphaCrit_), 20*alphaCrit_) + 0.5*pow(alphaLiquid/alphaCrit_, 20*alphaCrit_) ); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.C index 69818cf6040aabbcc168f770653cfd15f323c336..702464b81350b76293791276bd0fc3cd4aa2e310 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.C @@ -83,7 +83,7 @@ cosine::fLiquid 1 - cos ( constant::mathematical::pi - *(alphaLiquid1_ - alphaLiquid) + *(alphaLiquid - alphaLiquid0_) /(alphaLiquid1_ - alphaLiquid0_) ) ) diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.H index 17815d94a096067e819eaf282674f07d1f8784a6..2983335b268775a55351f1c18d22c0f863011462 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.H @@ -32,13 +32,11 @@ Description - alphaLiquid0 0.05 \verbatim - Ioilev, A., Samigulin, M., Ustinenko, V., Kucherova, P., Tentner, - A., Lo, S., & Splawski, A. (2007). - Advances in the modeling of cladding heat transfer - and critical heat flux in boiling water reactor fuel assemblies. - In Proc. 12th International Topical Meeting on Nuclear Reactor - Thermal Hydraulics (NURETH-12), - Pittsburgh, Pennsylvania, USA. + Tentner, A., Lo, S., & Kozlov, V. (2006). + Advances in computational fluid dynamics modeling + of two-phase flow in boiling water reactor fuel assemblies. + In International Conference of Nuclear Engineering, + Miami, Florida, USA. \endverbatim SourceFiles diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/linear/linear.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/linear/linear.H index 3e635de0855d767324110177f473b54468f73a7d..81d2550fff0e42856f9e06494c01c0ea2e04b5a0 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/linear/linear.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/wallBoilingSubModels/partitioningModels/linear/linear.H @@ -31,10 +31,8 @@ Description - alphaLiquid1 0.1 - alphaLiquid0 0.05 - Reference: \verbatim - Ioilev, A., Samigulin, M., Ustinenko, V., Kucherova, P., Tentner, A., - Lo, S., & Splawski, A. (2007). + Ioilev, A., Samigulin, M., Ustinenko (2007). Advances in the modeling of cladding heat transfer and critical heat flux in boiling water reactor fuel assemblies. In Proc. 12th International Topical Meeting on diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C index 5abe9f3561d741f93a9140d838b96452e4d9f0fb..a1794a78207bc71a4072656fca4ea909ff5cd89c 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair ) : conductivityModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_) {} @@ -103,7 +103,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); L_.readIfPresent(coeffDict_); diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C index ab6d3d354a1bc7e7e98d36e54b2cee3e6ac4b569..6b110d373177a1fd4028ef2fa6a1be7d67e33c64 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ JohnsonJackson ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_), eta_("eta", dimless, coeffDict_), p_("p", dimless, coeffDict_), @@ -130,7 +130,7 @@ Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); Fr_.read(coeffDict_); eta_.read(coeffDict_); diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C index 3b69aa8a62a15995679e2b64e52ffcaacf7547d4..67517beb073ebb452b4c9b7fcae664505ef314d1 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ JohnsonJacksonSchaeffer::JohnsonJacksonSchaeffer ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_), eta_("eta", dimless, coeffDict_), p_("p", dimless, coeffDict_), @@ -190,7 +190,7 @@ JohnsonJacksonSchaeffer::nu bool Foam::kineticTheoryModels::frictionalStressModels:: JohnsonJacksonSchaeffer::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); Fr_.read(coeffDict_); eta_.read(coeffDict_); diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C index be2555958c9e83d86ffb383d5967ed846a039313..eeabe622e12a425078a71b675cf2cc690e2d4138 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,7 +55,7 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), phi_("phi", dimless, coeffDict_) { phi_ *= constant::mathematical::pi/180.0; @@ -178,7 +178,7 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); phi_.read(coeffDict_); phi_ *= constant::mathematical::pi/180.0; diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C index 415bb3145a572eecdb51a1f9237b7665e6fcacb7..6607b16443d31daffa3edfbe6b628a1bd37adc70 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair ) : viscosityModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_) {} @@ -100,7 +100,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); L_.readIfPresent(coeffDict_); diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C index 8115f05cd0b17121c0049a9f2266356a78331fa4..62bbe6af40d268ad01643af3f775b7a9cddf97b8 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -201,7 +201,6 @@ void Foam::twoPhaseSystem::solve() word alphaScheme("div(phi," + alpha1.name() + ')'); word alpharScheme("div(phir," + alpha1.name() + ')'); - const surfaceScalarField& phi = this->phi(); const surfaceScalarField& phi1 = phase1_.phi(); const surfaceScalarField& phi2 = phase2_.phi(); @@ -236,9 +235,7 @@ void Foam::twoPhaseSystem::solve() } alpha1.correctBoundaryConditions(); - surfaceScalarField alpha1f(fvc::interpolate(max(alpha1, scalar(0)))); - surfaceScalarField phic("phic", phi); surfaceScalarField phir("phir", phi1 - phi2); tmp<surfaceScalarField> alphaDbyA; @@ -279,7 +276,7 @@ void Foam::twoPhaseSystem::solve() ), // Divergence term is handled explicitly to be // consistent with the explicit transport solution - fvc::div(phi)*min(alpha1, scalar(1)) + fvc::div(phi_)*min(alpha1, scalar(1)) ); if (tdgdt.valid()) @@ -300,11 +297,11 @@ void Foam::twoPhaseSystem::solve() } } - surfaceScalarField alphaPhic1 + surfaceScalarField alphaPhi1 ( fvc::flux ( - phic, + phi_, alpha1, alphaScheme ) @@ -316,28 +313,7 @@ void Foam::twoPhaseSystem::solve() ) ); - surfaceScalarField::Boundary& alphaPhic1Bf = - alphaPhic1.boundaryFieldRef(); - - // Ensure that the flux at inflow BCs is preserved - forAll(alphaPhic1Bf, patchi) - { - fvsPatchScalarField& alphaPhic1p = alphaPhic1Bf[patchi]; - - if (!alphaPhic1p.coupled()) - { - const scalarField& phi1p = phi1.boundaryField()[patchi]; - const scalarField& alpha1p = alpha1.boundaryField()[patchi]; - - forAll(alphaPhic1p, facei) - { - if (phi1p[facei] < 0) - { - alphaPhic1p[facei] = alpha1p[facei]*phi1p[facei]; - } - } - } - } + phase1_.correctInflowOutflow(alphaPhi1); if (nAlphaSubCycles > 1) { @@ -355,14 +331,14 @@ void Foam::twoPhaseSystem::solve() !(++alphaSubCycle).end(); ) { - surfaceScalarField alphaPhic10(alphaPhic1); + surfaceScalarField alphaPhi10(alphaPhi1); MULES::explicitSolve ( geometricOneField(), alpha1, - phi, - alphaPhic10, + phi_, + alphaPhi10, (alphaSubCycle.index()*Sp)(), (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(), phase1_.alphaMax(), @@ -371,11 +347,11 @@ void Foam::twoPhaseSystem::solve() if (alphaSubCycle.index() == 1) { - phase1_.alphaPhi() = alphaPhic10; + phase1_.alphaPhi() = alphaPhi10; } else { - phase1_.alphaPhi() += alphaPhic10; + phase1_.alphaPhi() += alphaPhi10; } } @@ -387,15 +363,15 @@ void Foam::twoPhaseSystem::solve() ( geometricOneField(), alpha1, - phi, - alphaPhic1, + phi_, + alphaPhi1, Sp, Su, phase1_.alphaMax(), 0 ); - phase1_.alphaPhi() = alphaPhic1; + phase1_.alphaPhi() = alphaPhi1; } if (alphaDbyA.valid()) @@ -415,8 +391,8 @@ void Foam::twoPhaseSystem::solve() phase1_.alphaRhoPhi() = fvc::interpolate(phase1_.rho())*phase1_.alphaPhi(); - phase2_.alphaPhi() = phi - phase1_.alphaPhi(); - alpha2 = scalar(1) - alpha1; + phase2_.alphaPhi() = phi_ - phase1_.alphaPhi(); + phase2_.correctInflowOutflow(phase2_.alphaPhi()); phase2_.alphaRhoPhi() = fvc::interpolate(phase2_.rho())*phase2_.alphaPhi(); @@ -425,6 +401,13 @@ void Foam::twoPhaseSystem::solve() << " Min(alpha1) = " << min(alpha1).value() << " Max(alpha1) = " << max(alpha1).value() << endl; + + // Ensure the phase-fractions are bounded + alpha1.max(0); + alpha1.min(1); + + // Update the phase-fraction of the other phase + alpha2 = scalar(1) - alpha1; } } diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options b/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options index 4dfc63419d1f824c5509433bbf7f45cdbefd25f8..e9549744cea30e721d7f48650648dfb2e3ae70c5 100644 --- a/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options +++ b/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options @@ -1,6 +1,6 @@ EXE_INC = \ -I. \ - -I../interFoam \ + -I../VoF \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H index 4ca36a0a965e7cf25f9f44061693ed982ee0fc79..c5963a3efffc089bea09e946f903df4fccaac6e2 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantAspectRatio + Foam::aspectRatioModels::constantAspectRatio Description Constant value aspect ratio model. diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C index 5abe9f3561d741f93a9140d838b96452e4d9f0fb..a1794a78207bc71a4072656fca4ea909ff5cd89c 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair ) : conductivityModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_) {} @@ -103,7 +103,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); L_.readIfPresent(coeffDict_); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C index ab6d3d354a1bc7e7e98d36e54b2cee3e6ac4b569..6b110d373177a1fd4028ef2fa6a1be7d67e33c64 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ JohnsonJackson ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_), eta_("eta", dimless, coeffDict_), p_("p", dimless, coeffDict_), @@ -130,7 +130,7 @@ Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); Fr_.read(coeffDict_); eta_.read(coeffDict_); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C index 3b69aa8a62a15995679e2b64e52ffcaacf7547d4..67517beb073ebb452b4c9b7fcae664505ef314d1 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJacksonSchaefferFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ JohnsonJacksonSchaeffer::JohnsonJacksonSchaeffer ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_), eta_("eta", dimless, coeffDict_), p_("p", dimless, coeffDict_), @@ -190,7 +190,7 @@ JohnsonJacksonSchaeffer::nu bool Foam::kineticTheoryModels::frictionalStressModels:: JohnsonJacksonSchaeffer::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); Fr_.read(coeffDict_); eta_.read(coeffDict_); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C index be2555958c9e83d86ffb383d5967ed846a039313..eeabe622e12a425078a71b675cf2cc690e2d4138 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,7 +55,7 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer ) : frictionalStressModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), phi_("phi", dimless, coeffDict_) { phi_ *= constant::mathematical::pi/180.0; @@ -178,7 +178,7 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); phi_.read(coeffDict_); phi_ *= constant::mathematical::pi/180.0; diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C index 415bb3145a572eecdb51a1f9237b7665e6fcacb7..6607b16443d31daffa3edfbe6b628a1bd37adc70 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair ) : viscosityModel(dict), - coeffDict_(dict.subDict(typeName + "Coeffs")), + coeffDict_(dict.optionalSubDict(typeName + "Coeffs")), L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_) {} @@ -100,7 +100,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read() { - coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + coeffDict_ <<= dict_.optionalSubDict(typeName + "Coeffs"); L_.readIfPresent(coeffDict_); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C index 55225147acc6aa804e7aa87659621ac1bc85187d..d7eaa2f081528141b9df54ffe3fabdd158138113 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,7 +61,7 @@ void Foam::diameterModel::correct() bool Foam::diameterModel::read(const dictionary& phaseProperties) { - diameterProperties_ = phaseProperties.subDict(type() + "Coeffs"); + diameterProperties_ = phaseProperties.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C index 51e740788280f9837004065c12e3a252614f3121..963ad160f7ec26e4186acb1fb8c0b9d806dd6e74 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,11 @@ Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New << exit(FatalError); } - return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase); + return cstrIter() + ( + dict.optionalSubDict(diameterModelType + "Coeffs"), + phase + ); } diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C index f5522c7509e5cebafa73861e42129c0ec2259869..9352b7239733692ed8e5bc2dce356996f764aeea 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -109,6 +109,9 @@ Foam::phaseModel::phaseModel dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0) ) { + alphaPhi_.setOriented(); + alphaRhoPhi_.setOriented(); + thermo_->validate("phaseModel " + name_, "h", "e"); const word phiName = IOobject::groupName("phi", name_); @@ -248,27 +251,19 @@ bool Foam::phaseModel::read(const dictionary& phaseProperties) } -void Foam::phaseModel::correctInflowFlux(surfaceScalarField& alphaPhi) const +void Foam::phaseModel::correctInflowOutflow(surfaceScalarField& alphaPhi) const { surfaceScalarField::Boundary& alphaPhiBf = alphaPhi.boundaryFieldRef(); + const volScalarField::Boundary& alphaBf = boundaryField(); + const surfaceScalarField::Boundary& phiBf = phi().boundaryField(); - // Ensure that the flux at inflow BCs is preserved forAll(alphaPhiBf, patchi) { fvsPatchScalarField& alphaPhip = alphaPhiBf[patchi]; if (!alphaPhip.coupled()) { - const scalarField& phip = phi().boundaryField()[patchi]; - const scalarField& alphap = boundaryField()[patchi]; - - forAll(alphaPhip, facei) - { - if (phip[facei] < SMALL) - { - alphaPhip[facei] = alphap[facei]*phip[facei]; - } - } + alphaPhip = phiBf[patchi]*alphaBf[patchi]; } } } diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H index a5ae107c909d49351ce384fac4914edafeccb068..894907fe7cc109b7c352c4ac2daa1da54df8905f 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -319,8 +319,8 @@ public: return alphaRhoPhi_; } - //- Ensure that the flux at inflow BCs is preserved - void correctInflowFlux(surfaceScalarField& alphaPhi) const; + //- Ensure that the flux at inflow/outflow BCs is preserved + void correctInflowOutflow(surfaceScalarField& alphaPhi) const; //- Correct the phase properties // other than the thermodynamics and turbulence diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C index 808fe255f9e7afa0c8f71203625e649a5fb049d8..c6861dcf2c0cfb6c41d3c16a5f196b64205f8131 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -444,7 +444,7 @@ void Foam::twoPhaseSystem::solve() ) ); - phase1_.correctInflowFlux(alphaPhic1); + phase1_.correctInflowOutflow(alphaPhic1); if (nAlphaSubCycles > 1) { @@ -515,8 +515,7 @@ void Foam::twoPhaseSystem::solve() fvc::interpolate(phase1_.rho())*phase1_.alphaPhi(); phase2_.alphaPhi() = phi_ - phase1_.alphaPhi(); - alpha2 = scalar(1) - alpha1; - phase2_.correctInflowFlux(phase2_.alphaPhi()); + phase2_.correctInflowOutflow(phase2_.alphaPhi()); phase2_.alphaRhoPhi() = fvc::interpolate(phase2_.rho())*phase2_.alphaPhi(); @@ -525,6 +524,12 @@ void Foam::twoPhaseSystem::solve() << " Min(" << alpha1.name() << ") = " << min(alpha1).value() << " Max(" << alpha1.name() << ") = " << max(alpha1).value() << endl; + + // Ensure the phase-fractions are bounded + alpha1.max(0); + alpha1.min(1); + + alpha2 = scalar(1) - alpha1; } } diff --git a/applications/test/FixedList/Test-FixedList.C b/applications/test/FixedList/Test-FixedList.C index 6e8210c8252ab47a75ba0b37cd7b516d114c0385..9fd0fde37aaef29daa22ce47f64f4c38d78dd2e3 100644 --- a/applications/test/FixedList/Test-FixedList.C +++ b/applications/test/FixedList/Test-FixedList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,7 +100,11 @@ int main(int argc, char *argv[]) Serr<< "slave sending to master " << Pstream::masterNo() << endl; - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); FixedList<label, 2> list3; list3[0] = 0; @@ -117,7 +121,7 @@ int main(int argc, char *argv[]) ) { Serr << "master receiving from slave " << slave << endl; - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); FixedList<label, 2> list3(fromSlave); Serr<< list3 << endl; diff --git a/applications/test/Function1/Make/options b/applications/test/Function1/Make/options index af5541db76511b1f609887de62dae9ce2d94a553..b8e72a86c6e63b78d92aae9bb56e4ec20fda46b5 100644 --- a/applications/test/Function1/Make/options +++ b/applications/test/Function1/Make/options @@ -9,7 +9,6 @@ EXE_INC = \ EXE_LIBS = \ -llagrangianIntermediate \ -lradiationModels \ - -lthermophysicalFunctions \ -lregionModels \ -lfiniteVolume \ -lmeshTools \ diff --git a/applications/test/Hashing/Test-Hashing.C b/applications/test/Hashing/Test-Hashing.C index 0ab7e9a7cb633dff3170aef30ca6b0c095225fe1..4461679d08370358dc623967d5ec553df54f9098 100644 --- a/applications/test/Hashing/Test-Hashing.C +++ b/applications/test/Hashing/Test-Hashing.C @@ -42,13 +42,44 @@ Description using namespace Foam; +void infoHashString +( + unsigned modulus, + std::initializer_list<std::string> lst +) +{ + if (modulus) + { + Info<< "basic string hashing (mod " << label(modulus) << ")" << endl; + + for (const auto& str : lst) + { + Info<<"hash(" << str.c_str() << ")=" + << (Hash<string>()(str) % modulus) << nl; + } + + } + else + { + Info<< "basic string hashing" << nl; + + for (const auto& str : lst) + { + Info<<"hash(" << str.c_str() << ")=" + << Hash<string>()(str) << nl; + } + } +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: int main(int argc, char *argv[]) { - IFstream is("hashingTests"); + infoHashString(8, {"asdathis1", "adsxf", "hij", "klmpq"}); + IFstream is("hashingTests"); while (is.good()) { diff --git a/applications/test/NamedEnum/Test-NamedEnum.C b/applications/test/NamedEnum/Test-NamedEnum.C index 08d1f74972e66c68471671c0b7d32483ed1762d7..d0b7f58d79d9c5c4a3b15f760e0ac84774ee256c 100644 --- a/applications/test/NamedEnum/Test-NamedEnum.C +++ b/applications/test/NamedEnum/Test-NamedEnum.C @@ -26,6 +26,7 @@ Description \*---------------------------------------------------------------------------*/ #include "NamedEnum.H" +#include "Enum.H" #include "IOstreams.H" using namespace Foam; @@ -34,15 +35,27 @@ class namedEnumTest { public: - enum option + enum class option { - a, - b, - c, - d + A, + B, + C, + D }; - static const Foam::NamedEnum<option, 4> namedEnum; + enum class otherOption + { + A, + B, + C, + D + }; + + static const Foam::NamedEnum<option, 4> optionNamed; + + static const Foam::Enum<otherOption> optionEnum; + + static const Foam::Enum<option> optionEnum2; }; @@ -52,10 +65,25 @@ const char* Foam::NamedEnum<namedEnumTest::option, 4>::names[] = "a", "b", "c", - "d" + "d", +}; + +const Foam::NamedEnum<namedEnumTest::option, 4> namedEnumTest::optionNamed; + +const Foam::Enum<namedEnumTest::otherOption> namedEnumTest::optionEnum +{ + { namedEnumTest::otherOption::A, "a" }, + { namedEnumTest::otherOption::B, "b" }, + { namedEnumTest::otherOption::C, "c" }, + { namedEnumTest::otherOption::D, "d" }, }; -const Foam::NamedEnum<namedEnumTest::option, 4> namedEnumTest::namedEnum; + +const Foam::Enum<namedEnumTest::option> namedEnumTest::optionEnum2 +( + namedEnumTest::option::C, + { "c", "d" } +); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -63,35 +91,66 @@ const Foam::NamedEnum<namedEnumTest::option, 4> namedEnumTest::namedEnum; int main(int argc, char *argv[]) { - const List<namedEnumTest::option> options - = namedEnumTest::namedEnum.enums(); + Info<<"NamedEnum: " << namedEnumTest::optionNamed << nl; + Info<<"Enum: " << namedEnumTest::optionEnum << nl; + Info<<"Enum: " << namedEnumTest::optionEnum2 << nl; - Info<< "enums: " << options << nl; + dictionary testDict; + testDict.add("lookup1", "c"); - Info<< "loop over enums (as list):" << nl; - forAll(options, i) - { - const namedEnumTest::option& opt = options[i]; + Info<< nl + << int(namedEnumTest::optionNamed["a"]) << nl + << namedEnumTest::optionNamed[namedEnumTest::option::A] << nl; - Info<< "option[" << opt - << "] = '" << namedEnumTest::namedEnum[opt] << "'" << nl; - } + Info<< nl + << int(namedEnumTest::optionEnum["a"]) << nl + << namedEnumTest::optionEnum[namedEnumTest::otherOption::A] << nl; - Info<< "loop over enums (C++11 for range):" << nl; - for (const auto& opt : options) + Info<< "--- test dictionary lookup ---" << endl; { - Info<< "option[" << opt - << "] = '" << namedEnumTest::namedEnum[opt] << "'" << nl; + Info<< "dict: " << testDict << endl; + + Info<< "got: " + << int + ( + namedEnumTest::optionNamed.lookupOrDefault + ( + "notFound", + testDict, + namedEnumTest::option::A + ) + ) + << nl; + + Info<< "got: " + << int + ( + namedEnumTest::optionNamed.lookupOrDefault + ( + "lookup1", + testDict, + namedEnumTest::option::A + ) + ) + << nl; + + Info<< "got: " + << int + ( + namedEnumTest::optionEnum2.lookupOrDefault + ( + "lookup1", + testDict, + namedEnumTest::option::A + ) + ) + << nl; } - Info<< nl - << namedEnumTest::namedEnum["a"] << nl - << namedEnumTest::namedEnum[namedEnumTest::a] << nl; - - Info<< "--- test read construction ---" << endl; + Info<< "--- test read ---" << endl; - namedEnumTest::option dummy(namedEnumTest::namedEnum.read(Sin)); - Info<< namedEnumTest::namedEnum[dummy] << endl; + namedEnumTest::option dummy(namedEnumTest::optionNamed.read(Sin)); + Info<< namedEnumTest::optionNamed[dummy] << endl; Info<< "End\n" << endl; diff --git a/applications/test/PackedList2/Test-PackedList2.C b/applications/test/PackedList2/Test-PackedList2.C index 2926118ff930357a82df0a95f8a8caa87fc60d83..26981b484ffd70cf98cca560e83de523f5093205 100644 --- a/applications/test/PackedList2/Test-PackedList2.C +++ b/applications/test/PackedList2/Test-PackedList2.C @@ -84,6 +84,12 @@ int main(int argc, char *argv[]) packed.resize(n, 1); } Info<< "resize/shrink/resize:" << timer.cpuTimeIncrement() << " s\n\n"; + Info<< "packed bool size=" << packed.size() << nl; + + // Neither of these should affect the size + packed.unset(2*n-1); + packed.set(2*n-1, 0); + Info<< "packed bool size=" << packed.size() << nl; // set every other bit on: Info<< "set every other bit on and count\n"; @@ -99,8 +105,8 @@ int main(int argc, char *argv[]) } } Info<< "Counting brute-force:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Count packed @@ -110,8 +116,8 @@ int main(int argc, char *argv[]) sum += packed.count(); } Info<< "Counting via count():" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Dummy addition @@ -123,8 +129,8 @@ int main(int argc, char *argv[]) sum += i + 1; } } - Info<< "Dummy loop:" << timer.cpuTimeIncrement() << " s" << endl; - Info<< " sum " << sum << endl; + Info<< "Dummy loop:" << timer.cpuTimeIncrement() << " s" << nl + << " sum " << sum << " (sum is meaningless)" << endl; // // Read @@ -139,8 +145,8 @@ int main(int argc, char *argv[]) sum += stlVector[i]; } } - Info<< "Reading stl:" << timer.cpuTimeIncrement() << " s" << endl; - Info<< " sum " << sum << endl; + Info<< "Reading stl:" << timer.cpuTimeIncrement() << " s" << nl + << " sum " << sum << endl; // Read unpacked @@ -152,8 +158,8 @@ int main(int argc, char *argv[]) sum += unpacked[i]; } } - Info<< "Reading unpacked:" << timer.cpuTimeIncrement() << " s" << endl; - Info<< " sum " << sum << endl; + Info<< "Reading unpacked:" << timer.cpuTimeIncrement() << " s" << nl + << " sum " << sum << endl; // Read packed @@ -166,8 +172,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading packed using get:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read packed @@ -180,8 +186,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading packed using reference:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read via iterator @@ -194,8 +200,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading packed using iterator:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read via iterator @@ -208,8 +214,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading packed using const_iterator():" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read empty hash @@ -222,8 +228,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading empty labelHashSet:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read full hash @@ -236,8 +242,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading full labelHashSet:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; // Read empty static hash @@ -250,8 +256,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading empty StaticHash:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; #if 0 // we can skip this test - it is usually quite slow @@ -265,8 +271,8 @@ int main(int argc, char *argv[]) } } Info<< "Reading full StaticHash:" << timer.cpuTimeIncrement() - << " s" << endl; - Info<< " sum " << sum << endl; + << " s" << nl + << " sum " << sum << endl; #endif Info<< "Starting write tests" << endl; @@ -319,7 +325,6 @@ int main(int argc, char *argv[]) Info<< "Writing packed using set:" << timer.cpuTimeIncrement() << " s" << endl; - // Write packed for (label iter = 0; iter < nIters; ++iter) { diff --git a/applications/test/cubicEqn/Make/files b/applications/test/cubicEqn/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..91b9e84dcc841cb7568e4fd72516d04ac89bf04a --- /dev/null +++ b/applications/test/cubicEqn/Make/files @@ -0,0 +1,3 @@ +Test-cubicEqn.C + +EXE = $(FOAM_USER_APPBIN)/Test-cubicEqn diff --git a/applications/test/cubicEqn/Make/options b/applications/test/cubicEqn/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..4c3dd783cb4170feefb3f5385510a83257b43b18 --- /dev/null +++ b/applications/test/cubicEqn/Make/options @@ -0,0 +1,3 @@ +EXE_INC = + +EXE_LIBS = diff --git a/applications/test/cubicEqn/Test-cubicEqn.C b/applications/test/cubicEqn/Test-cubicEqn.C new file mode 100644 index 0000000000000000000000000000000000000000..d0ab606666275b1dc614a7bed3fd31eab26509f5 --- /dev/null +++ b/applications/test/cubicEqn/Test-cubicEqn.C @@ -0,0 +1,101 @@ +#include <ctime> +#include <random> + +#include "cubicEqn.H" +#include "IOstreams.H" +#include "stringList.H" + +using namespace Foam; + +scalar randomScalar(const scalar min, const scalar max) +{ + static_assert + ( + sizeof(long) == sizeof(scalar), + "Scalar and long are not the same size" + ); + static std::default_random_engine generator(std::time(0)); + static std::uniform_int_distribution<long> + distribution + ( + std::numeric_limits<long>::min(), + std::numeric_limits<long>::max() + ); + scalar x; + do + { + long i = distribution(generator); + x = reinterpret_cast<scalar&>(i); + } + while (min > mag(x) || mag(x) > max || !std::isfinite(x)); + return x; +}; + +template <class Type> +void test(const Type& polynomialEqn, const scalar tol) +{ + Roots<Type::nComponents - 1> r = polynomialEqn.roots(); + + const scalar nan = std::numeric_limits<scalar>::quiet_NaN(); + const scalar inf = std::numeric_limits<scalar>::infinity(); + + FixedList<label, Type::nComponents - 1> t; + FixedList<scalar, Type::nComponents - 1> v(nan); + FixedList<scalar, Type::nComponents - 1> e(nan); + bool ok = true; + forAll(r, i) + { + t[i] = r.type(i); + switch (t[i]) + { + case roots::real: + v[i] = polynomialEqn.value(r[i]); + e[i] = polynomialEqn.error(r[i]); + ok = ok && mag(v[i]) < tol*mag(e[i]); + break; + case roots::posInf: + v[i] = + inf; + e[i] = nan; + break; + case roots::negInf: + v[i] = - inf; + e[i] = nan; + break; + default: + v[i] = e[i] = nan; + break; + } + } + + if (!ok) + { + Info<< "Coeffs: " << polynomialEqn << endl + << " Types: " << t << endl + << " Roots: " << r << endl + << "Values: " << v << endl + << "Errors: " << e << endl << endl; + } +} + +int main() +{ + const int nTests = 1000000; + for (int t = 0; t < nTests; ++ t) + { + test + ( + cubicEqn + ( + randomScalar(1e-50, 1e+50), + randomScalar(1e-50, 1e+50), + randomScalar(1e-50, 1e+50), + randomScalar(1e-50, 1e+50) + ), + 100 + ); + } + + Info << nTests << " cubics tested" << endl; + + return 0; +} diff --git a/applications/test/dynamicIndexedOctree/Make/options b/applications/test/dynamicIndexedOctree/Make/options index a1d2c044e1735e01ef01663f42be893ea661dcce..54c035b8f55d183c1ad02bc372398feceaf31718 100644 --- a/applications/test/dynamicIndexedOctree/Make/options +++ b/applications/test/dynamicIndexedOctree/Make/options @@ -1,3 +1,5 @@ -EXE_INC = -I$(LIB_SRC)/meshTools/lnInclude +EXE_INC = \ + -I$(LIB_SRC)/meshTools/lnInclude -EXE_LIBS = -lmeshTools +EXE_LIBS = \ + -lmeshTools diff --git a/applications/test/ensightFile/Make/options b/applications/test/ensightFile/Make/options index a4f7656262c1b023744c2cad1b819aefa108ef52..6684cce1e75ca7f6a55bc107f7e77e65fe4456a3 100644 --- a/applications/test/ensightFile/Make/options +++ b/applications/test/ensightFile/Make/options @@ -1,10 +1,8 @@ EXE_INC = \ - -I$(LIB_SRC)/conversion/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/conversion/lnInclude EXE_LIBS = \ - -lconversion \ - -lfileFormats \ - -lmeshTools - + -lmeshTools \ + -lconversion diff --git a/applications/test/fileNameClean/Test-fileNameClean.C b/applications/test/fileNameClean/Test-fileNameClean.C index 99d621fea8a7a15f29894082ce941406cc1c9514..9441beecc86ad6f1863ac84ab34b491868c5f7aa 100644 --- a/applications/test/fileNameClean/Test-fileNameClean.C +++ b/applications/test/fileNameClean/Test-fileNameClean.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) argList::noBanner(); argList::noParallel(); argList::validArgs.insert("fileName .. fileNameN"); - argList::addOption("istream", "fileName", "test Istream values"); + argList::addOption("istream", "file", "test Istream values"); argList args(argc, argv, false, true); diff --git a/applications/test/findSphereFeatureEdges-octree/Make/options b/applications/test/findSphereFeatureEdges-octree/Make/options index 606903451472483dd2b1136556b156bddbaeabe7..d27c95d033dd5d7b1995c8ff8dc406e35ca1f586 100644 --- a/applications/test/findSphereFeatureEdges-octree/Make/options +++ b/applications/test/findSphereFeatureEdges-octree/Make/options @@ -1,9 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lfiniteVolume \ - -lmeshTools \ - -ledgeMesh + -lmeshTools diff --git a/applications/test/graph/graphTest2.C b/applications/test/graph/graphTest2.C index 39692fd3f90f552f7e97a47e798526e6193b153a..f01b5ccca45dc413bc75159bb8d994d0e545742e 100644 --- a/applications/test/graph/graphTest2.C +++ b/applications/test/graph/graphTest2.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,4 +62,3 @@ int main() // ************************************************************************* // - diff --git a/applications/test/liquid/Make/options b/applications/test/liquid/Make/options index 94e250c052aac124ce7623a5b1eec7afe6bd5f26..a1664efd977fbf6bc50aa7478c672ed5788152fb 100644 --- a/applications/test/liquid/Make/options +++ b/applications/test/liquid/Make/options @@ -1,5 +1,3 @@ EXE_INC = \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude - -EXE_LIBS = -lliquidProperties -lthermophysicalFunctions diff --git a/applications/test/mapDistributePolyMesh/Make/files b/applications/test/mapDistributePolyMesh/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..eb304044bffb5434b9a322c49b803f4ab42ae0a3 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/Make/files @@ -0,0 +1,3 @@ +Test-mapDistributePolyMesh.C +EXE = $(FOAM_USER_APPBIN)/Test-mapDistributePolyMesh + diff --git a/applications/test/mapDistributePolyMesh/Make/options b/applications/test/mapDistributePolyMesh/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..dc318df99832515cca0862ee9d04aea77fda2baf --- /dev/null +++ b/applications/test/mapDistributePolyMesh/Make/options @@ -0,0 +1,9 @@ +EXE_INC = \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -ldynamicMesh \ + -lmeshTools diff --git a/applications/test/mapDistributePolyMesh/Test-mapDistributePolyMesh.C b/applications/test/mapDistributePolyMesh/Test-mapDistributePolyMesh.C new file mode 100644 index 0000000000000000000000000000000000000000..a925be3efe8f80c1e0c62959a619d24ceb00ba47 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/Test-mapDistributePolyMesh.C @@ -0,0 +1,149 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 + mapDistributePolyMesh + +Description + Test for procAddressing + +\*---------------------------------------------------------------------------*/ + +#include "IOmapDistributePolyMesh.H" +#include "argList.H" +#include "Time.H" +#include "surfaceFields.H" +#include "flipOp.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + #include "createTime.H" + #include "createMesh.H" + + Info<< "Reading distribute map\n" << endl; + + const word instance("0.005"); + const scalar instanceValue(0.005); + + + IOobject io + ( + "procAddressing", + instance, + fvMesh::meshSubDir, + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ); + + IOmapDistributePolyMesh map(io); + + { + // Load the instance mesh + runTime.setTime(instanceValue, 0); + polyMesh distributedMesh + ( + IOobject + ( + polyMesh::defaultRegion, + instance, + runTime, + IOobject::MUST_READ + ) + ); + + // Faces, no flip + { + const mapDistribute& faceMap = map.faceMap(); + pointField fc(mesh.faceCentres()); + faceMap.distribute(fc, noOp()); + Pout<< "Construct size:" << faceMap.constructSize() << endl; + forAll(distributedMesh.faceCentres(), facei) + { + Pout<< "face:" << facei + << "\tmappedFc:" << fc[facei] + << "\tactual:" << distributedMesh.faceCentres()[facei] + << endl; + } + } + // Faces, flipped field + { + const mapDistribute& faceMap = map.faceMap(); + scalarField flux(mesh.faceAreas() & vector(1, 1, 1)); + faceMap.distribute(flux, flipOp()); + Pout<< "Construct size:" << faceMap.constructSize() << endl; + const scalarField newFlux + ( + distributedMesh.faceAreas() + & vector(1, 1, 1) + ); + forAll(newFlux, facei) + { + Pout<< "face:" << facei + << "\tmappedFlux:" << flux[facei] + << "\tactual:" << newFlux[facei] + << endl; + } + } + + + { + const mapDistribute& cellMap = map.cellMap(); + pointField cc(mesh.cellCentres()); + cellMap.distribute(cc, noOp()); + Pout<< "Construct size:" << cellMap.constructSize() << endl; + forAll(distributedMesh.cellCentres(), celli) + { + Pout<< "cell:" << celli + << "\tmappedCc:" << cc[celli] + << "\tactual:" << distributedMesh.cellCentres()[celli] + << endl; + } + } + { + const mapDistribute& pointMap = map.pointMap(); + pointField pc(mesh.points()); + pointMap.distribute(pc, noOp()); + Pout<< "Construct size:" << pointMap.constructSize() << endl; + forAll(distributedMesh.points(), pointi) + { + Pout<< "point:" << pointi + << "\tmappedPoint:" << pc[pointi] + << "\tactual:" << distributedMesh.points()[pointi] + << endl; + } + } + } + + Info<< "End\n" << endl; + return 0; +} + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/0/U b/applications/test/mapDistributePolyMesh/cavity/0/U new file mode 100644 index 0000000000000000000000000000000000000000..f3ab7eefb66b855923d3c1889ad524e7725d3503 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/0/U @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (1 1 0); + +boundaryField +{ + movingWall + { + type fixedValue; + value uniform (1 0 0); + } + + fixedWalls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/0/p b/applications/test/mapDistributePolyMesh/cavity/0/p new file mode 100644 index 0000000000000000000000000000000000000000..0976329cedb48dfa5dff2d203e19418e7e757993 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/0/p @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/0/phi b/applications/test/mapDistributePolyMesh/cavity/0/phi new file mode 100644 index 0000000000000000000000000000000000000000..0a745bbd5b740a431c8300d9f1b5dcae87fc8d55 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/0/phi @@ -0,0 +1,228 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus.feature-oriented-fields | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class surfaceScalarField; + location "0"; + object fluxU; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 3 -1 0 0 0 0]; +oriented 1; + + +internalField nonuniform List<scalar> +180 +( +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +0.0001 +) +; + +boundaryField +{ + movingWall + { + type calculated; + value uniform 0; + } + fixedWalls + { + type calculated; + value uniform 0; + } + frontAndBack + { + type empty; + value nonuniform 0(); + } +} + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/Allclean b/applications/test/mapDistributePolyMesh/cavity/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..1ddaee91ff1648c391e96c435bdbf076d0f58b87 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/Allclean @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +# Restore default dictionaries +cp system/decomposeParDict-2 system/decomposeParDict +cp system/controlDict-startTime system/controlDict + +# ----------------------------------------------------------------------------- diff --git a/applications/test/mapDistributePolyMesh/cavity/Allrun b/applications/test/mapDistributePolyMesh/cavity/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..9afaa5243d9a1630e3a7597ba8f52b83f7bb08d6 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/Allrun @@ -0,0 +1,17 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh + +runApplication decomposePar -decomposeParDict system/decomposeParDict-2 + +runParallel -s scotch -np 5 redistributePar \ + -decomposeParDict system/decomposeParDict-5 + +runParallel -np 5 Test-mapDistributePolyMesh \ + -decomposeParDict system/decomposeParDict-5 + +# ----------------------------------------------------------------------------- diff --git a/src/thermophysicalModels/thermophysicalFunctions/Make/options b/applications/test/mapDistributePolyMesh/cavity/cavity.foam similarity index 100% rename from src/thermophysicalModels/thermophysicalFunctions/Make/options rename to applications/test/mapDistributePolyMesh/cavity/cavity.foam diff --git a/applications/test/mapDistributePolyMesh/cavity/constant/transportProperties b/applications/test/mapDistributePolyMesh/cavity/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..de00c3587cd9e0a677d63a6a6db42f7a47fa59a9 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/constant/transportProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +nu nu [ 0 2 -1 0 0 0 0 ] 0.01; + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/blockMeshDict b/applications/test/mapDistributePolyMesh/cavity/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..3118c894d875f5cf3287d1714402b6bd2cd2f48f --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/blockMeshDict @@ -0,0 +1,75 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 0.1) + (1 0 0.1) + (1 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (10 10 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + movingWall + { + type wall; + faces + ( + (3 7 6 2) + ); + } + fixedWalls + { + type wall; + faces + ( + (0 4 7 3) + (2 6 5 1) + (1 5 4 0) + ); + } + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/controlDict b/applications/test/mapDistributePolyMesh/cavity/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..78ef7651b9c85152e9d156436115b65ecbde1815 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/controlDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 0.005; + +writeControl timeStep; + +writeInterval 20; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/controlDict-latestTime b/applications/test/mapDistributePolyMesh/cavity/system/controlDict-latestTime new file mode 100644 index 0000000000000000000000000000000000000000..8b3e003782dfbb2074f524e3971ae7a1a4ddec06 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/controlDict-latestTime @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 1.0; + +deltaT 0.005; + +writeControl timeStep; + +writeInterval 20; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/controlDict-startTime b/applications/test/mapDistributePolyMesh/cavity/system/controlDict-startTime new file mode 100644 index 0000000000000000000000000000000000000000..78ef7651b9c85152e9d156436115b65ecbde1815 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/controlDict-startTime @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 0.005; + +writeControl timeStep; + +writeInterval 20; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..8c054db9bbb955510d8a4f8d176e8bb51a1e9eaf --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +//- Keep owner and neighbour on same processor for faces in zones: +// preserveFaceZones (heater solid1 solid3); + +//- Keep owner and neighbour on same processor for faces in patches: +// (makes sense only for cyclic patches) +//preservePatches (cyclic_half0 cyclic_half1); + +//- Keep all of faceSet on a single processor. This puts all cells +// connected with a point, edge or face on the same processor. +// (just having face connected cells might not guarantee a balanced +// decomposition) +// The processor can be -1 (the decompositionMethod chooses the processor +// for a good load balance) or explicitly provided (upsets balance). +//singleProcessorFaceSets ((f0 -1)); + + +//- Keep owner and neighbour of baffles on same processor (i.e. keep it +// detectable as a baffle). Baffles are two boundary face sharing the +// same points. +//preserveBaffles true; + +//- Use the volScalarField named here as a weight for each cell in the +// decomposition. For example, use a particle population field to decompose +// for a balanced number of particles in a lagrangian simulation. +// weightField dsmcRhoNMean; + +method scotch; +//method hierarchical; +// method simple; +// method metis; +// method manual; +// method multiLevel; +// method structured; // does 2D decomposition of structured mesh + +multiLevelCoeffs +{ + // Decomposition methods to apply in turn. This is like hierarchical but + // fully general - every method can be used at every level. + + level0 + { + numberOfSubdomains 64; + //method simple; + //simpleCoeffs + //{ + // n (2 1 1); + // delta 0.001; + //} + method scotch; + } + level1 + { + numberOfSubdomains 4; + method scotch; + } +} + +// Desired output + +simpleCoeffs +{ + n (2 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 2 1); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + /* + processorWeights + ( + 1 + 1 + 1 + 1 + ); + */ +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + +structuredCoeffs +{ + // Patches to do 2D decomposition on. Structured mesh only; cells have + // to be in 'columns' on top of patches. + patches (movingWall); + + // Method to use on the 2D subset + method scotch; +} + +//// Is the case distributed? Note: command-line argument -roots takes +//// precedence +//distributed yes; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2 b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2 new file mode 100644 index 0000000000000000000000000000000000000000..8c054db9bbb955510d8a4f8d176e8bb51a1e9eaf --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2 @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +//- Keep owner and neighbour on same processor for faces in zones: +// preserveFaceZones (heater solid1 solid3); + +//- Keep owner and neighbour on same processor for faces in patches: +// (makes sense only for cyclic patches) +//preservePatches (cyclic_half0 cyclic_half1); + +//- Keep all of faceSet on a single processor. This puts all cells +// connected with a point, edge or face on the same processor. +// (just having face connected cells might not guarantee a balanced +// decomposition) +// The processor can be -1 (the decompositionMethod chooses the processor +// for a good load balance) or explicitly provided (upsets balance). +//singleProcessorFaceSets ((f0 -1)); + + +//- Keep owner and neighbour of baffles on same processor (i.e. keep it +// detectable as a baffle). Baffles are two boundary face sharing the +// same points. +//preserveBaffles true; + +//- Use the volScalarField named here as a weight for each cell in the +// decomposition. For example, use a particle population field to decompose +// for a balanced number of particles in a lagrangian simulation. +// weightField dsmcRhoNMean; + +method scotch; +//method hierarchical; +// method simple; +// method metis; +// method manual; +// method multiLevel; +// method structured; // does 2D decomposition of structured mesh + +multiLevelCoeffs +{ + // Decomposition methods to apply in turn. This is like hierarchical but + // fully general - every method can be used at every level. + + level0 + { + numberOfSubdomains 64; + //method simple; + //simpleCoeffs + //{ + // n (2 1 1); + // delta 0.001; + //} + method scotch; + } + level1 + { + numberOfSubdomains 4; + method scotch; + } +} + +// Desired output + +simpleCoeffs +{ + n (2 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 2 1); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + /* + processorWeights + ( + 1 + 1 + 1 + 1 + ); + */ +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + +structuredCoeffs +{ + // Patches to do 2D decomposition on. Structured mesh only; cells have + // to be in 'columns' on top of patches. + patches (movingWall); + + // Method to use on the 2D subset + method scotch; +} + +//// Is the case distributed? Note: command-line argument -roots takes +//// precedence +//distributed yes; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5 b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5 new file mode 100644 index 0000000000000000000000000000000000000000..0692228c7c8437894a89a99d023d5a0031babb27 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5 @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 5; + +//- Keep owner and neighbour on same processor for faces in zones: +// preserveFaceZones (heater solid1 solid3); + +//- Keep owner and neighbour on same processor for faces in patches: +// (makes sense only for cyclic patches) +//preservePatches (cyclic_half0 cyclic_half1); + +//- Keep all of faceSet on a single processor. This puts all cells +// connected with a point, edge or face on the same processor. +// (just having face connected cells might not guarantee a balanced +// decomposition) +// The processor can be -1 (the decompositionMethod chooses the processor +// for a good load balance) or explicitly provided (upsets balance). +//singleProcessorFaceSets ((f0 -1)); + + +//- Keep owner and neighbour of baffles on same processor (i.e. keep it +// detectable as a baffle). Baffles are two boundary face sharing the +// same points. +//preserveBaffles true; + +//- Use the volScalarField named here as a weight for each cell in the +// decomposition. For example, use a particle population field to decompose +// for a balanced number of particles in a lagrangian simulation. +// weightField dsmcRhoNMean; + +method scotch; +//method hierarchical; +// method simple; +// method metis; +// method manual; +// method multiLevel; +// method structured; // does 2D decomposition of structured mesh + +multiLevelCoeffs +{ + // Decomposition methods to apply in turn. This is like hierarchical but + // fully general - every method can be used at every level. + + level0 + { + numberOfSubdomains 64; + //method simple; + //simpleCoeffs + //{ + // n (2 1 1); + // delta 0.001; + //} + method scotch; + } + level1 + { + numberOfSubdomains 4; + method scotch; + } +} + +// Desired output + +simpleCoeffs +{ + n (2 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 2 1); + delta 0.001; + order xyz; +} + +metisCoeffs +{ + /* + processorWeights + ( + 1 + 1 + 1 + 1 + ); + */ +} + +scotchCoeffs +{ + //processorWeights + //( + // 1 + // 1 + // 1 + // 1 + //); + //writeGraph true; + //strategy "b"; +} + +manualCoeffs +{ + dataFile "decompositionData"; +} + +structuredCoeffs +{ + // Patches to do 2D decomposition on. Structured mesh only; cells have + // to be in 'columns' on top of patches. + patches (movingWall); + + // Method to use on the 2D subset + method scotch; +} + +//// Is the case distributed? Note: command-line argument -roots takes +//// precedence +//distributed yes; +//// Per slave (so nProcs-1 entries) the directory above the case. +//roots +//( +// "/tmp" +// "/tmp" +//); + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-hierarchical b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-hierarchical new file mode 100644 index 0000000000000000000000000000000000000000..4914ae5e029b602c9d6ff3b27bfce7bc6c557398 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-hierarchical @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +method hierarchical; + +hierarchicalCoeffs +{ + n (1 2 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-scotch b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-scotch new file mode 100644 index 0000000000000000000000000000000000000000..9df92a84e456a9513c9fc1a9cf9db324fe67ccbd --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-scotch @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +//method scotch; +method hierarchical; +hierarchicalCoeffs +{ + n (2 1 1); + delta 0.001; + order xyz; +} +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/fvSchemes b/applications/test/mapDistributePolyMesh/cavity/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..b43ea748acac4a463d3b4345302831e83227cce6 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/fvSchemes @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/fvSolution b/applications/test/mapDistributePolyMesh/cavity/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..3be65f5ab562344fb13785933c69541e9b74ccba --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/fvSolution @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p|pFinal)" + { + solver PCG; + preconditioner DIC; + tolerance 1e-06; + relTol 0; + } + + U + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-05; + relTol 0; + } +} + +PISO +{ + nCorrectors 2; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/processorField b/applications/test/mapDistributePolyMesh/cavity/system/processorField new file mode 100644 index 0000000000000000000000000000000000000000..19c72f5418f12d49627896aa1ff317a2d288416a --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/processorField @@ -0,0 +1,64 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object postProcessingDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +functions +{ + processorField + { + // Type of functionObject + type processorField; + + // Where to load it from (if not already in solver) + libs ("libfieldFunctionObjects.so"); + + // Function object enabled flag + enabled true; + + // When to output the average fields + writeControl writeTime; + } + cellID + { + // Load the library containing the 'coded' functionObject + functionObjectLibs ("libutilityFunctionObjects.so"); + type coded; + // Name of on-the-fly generated functionObject + redirectType cellID; + codeExecute + #{ + volScalarField cellID + ( + IOobject + ( + "cellID", + mesh().time().timeName(), + mesh(), + IOobject::NO_READ + ), + mesh(), + dimensionedScalar("cellID", dimless, 0) + ); + forAll(cellID, celli) + { + cellID[celli] = celli; + } + cellID.correctBoundaryConditions(); + cellID.write(); + #}; + } +} + +// ************************************************************************* // diff --git a/applications/test/mapDistributePolyMesh/cavity/system/renumberMeshDict-random b/applications/test/mapDistributePolyMesh/cavity/system/renumberMeshDict-random new file mode 100644 index 0000000000000000000000000000000000000000..67631d08ee7fb015c2b803817018d376ac1c7e23 --- /dev/null +++ b/applications/test/mapDistributePolyMesh/cavity/system/renumberMeshDict-random @@ -0,0 +1,112 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh renumbering dictionary"; + object renumberMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Write maps from renumbered back to original mesh +writeMaps true; + +// Optional entry: sort cells on coupled boundaries to last for use with +// e.g. nonBlockingGaussSeidel. +sortCoupledFaceCells false; + +// Optional entry: renumber on a block-by-block basis. It uses a +// blockCoeffs dictionary to construct a decompositionMethod to do +// a block subdivision) and then applies the renumberMethod to each +// block in turn. This can be used in large cases to keep the blocks +// fitting in cache with all the the cache misses bunched at the end. +// This number is the approximate size of the blocks - this gets converted +// to a number of blocks that is the input to the decomposition method. +//blockSize 1000; + +// Optional entry: sort points into internal and boundary points +//orderPoints false; + +// Optional: suppress renumbering cellSets,faceSets,pointSets +//renumberSets false; + + +//method CuthillMcKee; +//method Sloan; +//method manual; +method random; +//method structured; +//method spring; +//method zoltan; // only if compiled with zoltan support + +//CuthillMcKeeCoeffs +//{ +// // Reverse CuthillMcKee (RCM) or plain +// reverse true; +//} + +manualCoeffs +{ + // In system directory: new-to-original (i.e. order) labelIOList + dataFile "cellMap"; +} + + +// For extruded (i.e. structured in one direction) meshes +structuredCoeffs +{ + // Patches that mesh was extruded from. These determine the starting + // layer of cells + patches (movingWall); + // Method to renumber the starting layer of cells + method random; + + // Renumber in columns (depthFirst) or in layers + depthFirst true; + + // Reverse ordering + reverse false; +} + + +springCoeffs +{ + // Maximum jump of cell indices. Is fraction of number of cells + maxCo 0.01; + + // Limit the amount of movement; the fraction maxCo gets decreased + // with every iteration + freezeFraction 0.999; + + // Maximum number of iterations + maxIter 1000; +} + + +blockCoeffs +{ + method scotch; + //method hierarchical; + //hierarchicalCoeffs + //{ + // n (1 2 1); + // delta 0.001; + // order xyz; + //} +} + + +zoltanCoeffs +{ + ORDER_METHOD LOCAL_HSFC; +} + + +// ************************************************************************* // diff --git a/applications/test/momentOfInertia/Make/options b/applications/test/momentOfInertia/Make/options index 0b32f3355b3b4bf0fda452da0efb5e5c9e2201fa..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/test/momentOfInertia/Make/options +++ b/applications/test/momentOfInertia/Make/options @@ -1,6 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lmeshTools diff --git a/applications/test/parallel-communicators/Test-parallel-communicators.C b/applications/test/parallel-communicators/Test-parallel-communicators.C index 5593e07eff461894d30dc1247133800d1cc2d6a2..d3805c24fdeeb06af91e90486765b3f97ef3be78 100644 --- a/applications/test/parallel-communicators/Test-parallel-communicators.C +++ b/applications/test/parallel-communicators/Test-parallel-communicators.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ scalar sumReduce scalar slaveValue; UIPstream::read ( - Pstream::blocking, + Pstream::commsTypes::blocking, slave, reinterpret_cast<char*>(&slaveValue), sizeof(scalar), @@ -87,7 +87,7 @@ scalar sumReduce { UOPstream::write ( - UPstream::blocking, + UPstream::commsTypes::blocking, slave, reinterpret_cast<const char*>(&sum), sizeof(scalar), @@ -101,7 +101,7 @@ scalar sumReduce { UOPstream::write ( - UPstream::blocking, + UPstream::commsTypes::blocking, UPstream::masterNo(), reinterpret_cast<const char*>(&localValue), sizeof(scalar), @@ -113,7 +113,7 @@ scalar sumReduce { UIPstream::read ( - UPstream::blocking, + UPstream::commsTypes::blocking, UPstream::masterNo(), reinterpret_cast<char*>(&sum), sizeof(scalar), diff --git a/applications/test/parallel-nonBlocking/Test-parallel-nonBlocking.C b/applications/test/parallel-nonBlocking/Test-parallel-nonBlocking.C index eb37bd07f5223fc78bea2e887a37c24b13172494..0e557174832323f5a237d870da6cf95c01c01736 100644 --- a/applications/test/parallel-nonBlocking/Test-parallel-nonBlocking.C +++ b/applications/test/parallel-nonBlocking/Test-parallel-nonBlocking.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) Pstream::myProcNo() ); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); if (Pstream::myProcNo() != Pstream::masterNo()) { @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) // Send allData back - PstreamBuffers pBufs2(Pstream::nonBlocking); + PstreamBuffers pBufs2(Pstream::commsTypes::nonBlocking); if (Pstream::myProcNo() == Pstream::masterNo()) { for @@ -149,7 +149,7 @@ int main(int argc, char *argv[]) // Do a non-blocking send inbetween { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); for (label proci = 0; proci < Pstream::nProcs(); proci++) { diff --git a/applications/test/parallel/Test-parallel.C b/applications/test/parallel/Test-parallel.C index 9b10ae61070d2449c71a99dc6fb7c8b38e4dddb7..7a61b77f72e169d3086b0e17ad68375bb9f7a46d 100644 --- a/applications/test/parallel/Test-parallel.C +++ b/applications/test/parallel/Test-parallel.C @@ -134,12 +134,12 @@ void testTransfer(const T& input) { { Perr<< "slave sending to master " << Pstream::masterNo() << endl; - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); + OPstream toMaster(Pstream::commsTypes::blocking, Pstream::masterNo()); toMaster << data; } Perr<< "slave receiving from master " << Pstream::masterNo() << endl; - IPstream fromMaster(Pstream::blocking, Pstream::masterNo()); + IPstream fromMaster(Pstream::commsTypes::blocking, Pstream::masterNo()); fromMaster >> data; Perr<< data << endl; } @@ -153,7 +153,7 @@ void testTransfer(const T& input) ) { Perr<< "master receiving from slave " << slave << endl; - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); fromSlave >> data; Perr<< data << endl; } @@ -166,7 +166,7 @@ void testTransfer(const T& input) ) { Perr<< "master sending to slave " << slave << endl; - OPstream toSlave(Pstream::blocking, slave); + OPstream toSlave(Pstream::commsTypes::blocking, slave); toSlave << data; } } @@ -187,12 +187,21 @@ void testTokenized(const T& data) { { Perr<< "slave sending to master " << Pstream::masterNo() << endl; - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); + toMaster << data; } Perr<< "slave receiving from master " << Pstream::masterNo() << endl; - IPstream fromMaster(Pstream::blocking, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); fromMaster >> tok; Perr<< tok.info() << endl; @@ -207,7 +216,7 @@ void testTokenized(const T& data) ) { Perr<< "master receiving from slave " << slave << endl; - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); fromSlave >> tok; Perr<< tok.info() << endl; } @@ -220,7 +229,7 @@ void testTokenized(const T& data) ) { Perr<< "master sending to slave " << slave << endl; - OPstream toSlave(Pstream::blocking, slave); + OPstream toSlave(Pstream::commsTypes::blocking, slave); toSlave << data; } } diff --git a/applications/test/router/Gather/Gather.C b/applications/test/router/Gather/Gather.C index dd2035b6264ffb8eee4575b6fd53b65205562f2a..24391f4e35e56ac2160759baa95f9f3a42db1520 100644 --- a/applications/test/router/Gather/Gather.C +++ b/applications/test/router/Gather/Gather.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,7 @@ Gather<T0>::Gather(const T0& localData, const bool redistribute) slave++, procIndex++ ) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); fromSlave >> this->operator[](procIndex); } @@ -75,7 +75,7 @@ Gather<T0>::Gather(const T0& localData, const bool redistribute) slave++, procIndex++ ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); if (redistribute) { @@ -92,13 +92,21 @@ Gather<T0>::Gather(const T0& localData, const bool redistribute) { // Slave: send my local data to master { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster << localData; } // Receive data from master { - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); if (redistribute) { fromMaster >> *this; diff --git a/applications/test/surfaceIntersection/Make/files b/applications/test/surfaceIntersection/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..e0516a472c031695a366a0819dd8943b910eb8eb --- /dev/null +++ b/applications/test/surfaceIntersection/Make/files @@ -0,0 +1,3 @@ +Test-surfaceIntersection.C + +EXE = $(FOAM_USER_APPBIN)/Test-surfaceIntersection diff --git a/applications/test/surfaceIntersection/Make/options b/applications/test/surfaceIntersection/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..b7fa8b232619a602472e7499ba549f7370276433 --- /dev/null +++ b/applications/test/surfaceIntersection/Make/options @@ -0,0 +1,7 @@ +EXE_INC = \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/triSurface/lnInclude + +EXE_LIBS = \ + -lmeshTools diff --git a/applications/test/surfaceIntersection/Test-surfaceIntersection.C b/applications/test/surfaceIntersection/Test-surfaceIntersection.C new file mode 100644 index 0000000000000000000000000000000000000000..ddf122f60a90b4adcc896811b1db39fbe79a8d40 --- /dev/null +++ b/applications/test/surfaceIntersection/Test-surfaceIntersection.C @@ -0,0 +1,221 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 + Test-surfaceIntersection + +Description + Test surface-surface intersection + +\*---------------------------------------------------------------------------*/ + +#include "argList.H" +#include "Time.H" +#include "triSurface.H" +#include "triSurfaceMesh.H" +#include "surfaceIntersection.H" +#include "OBJstream.H" + +using namespace Foam; + +autoPtr<triSurface> loadSurface +( + const Foam::Time& runTime, + const fileName& surfName +) +{ + Info<< "Reading surface " << surfName << endl; + + const fileName fallback = + runTime.constantPath()/triSurfaceMesh::meshSubDir/surfName; + + autoPtr<triSurface> surfPtr; + if (isFile(surfName)) + { + surfPtr.set(new triSurface(surfName)); + } + else if (isFile(fallback)) + { + surfPtr.set(new triSurface(fallback)); + } + else + { + FatalErrorInFunction + << "No such file:" << surfName << exit(FatalError); + } + + return surfPtr; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + argList::addNote + ( + "Intersection of two surfaces. Writes obj file" + ); + argList::addBoolOption + ( + "debug2", + "set surfaceIntersection debug=2" + ); + argList::addBoolOption + ( + "debug4", + "set surfaceIntersection debug=4" + ); + argList::addBoolOption + ( + "print", + "print information about cuts, etc" + ); + argList::addBoolOption + ( + "mergeEdges", + "merge duplicate edges" + ); + argList::addOption + ( + "mergePoints", + "mergeTol", + "merge points (and edges) using the specified tolerance" + ); + + #include "addDictOption.H" + + argList::addNote + ( + "test intersect of two surfaces. Writes obj file" + ); + argList::noParallel(); + argList::noFunctionObjects(); + argList::validArgs.append("surface file"); + argList::validArgs.append("surface file"); + + #include "setRootCase.H" + #include "createTime.H" + + const word outputFile(args.executable() + ".obj"); + + const fileName surf1Name(args[1]); + triSurface surf1 = loadSurface(runTime, surf1Name)(); + Info<< surf1Name << " statistics:" << endl; + surf1.writeStats(Info); + Info<< endl; + + const fileName surf2Name(args[2]); + triSurface surf2 = loadSurface(runTime, surf2Name)(); + Info<< surf2Name << " statistics:" << endl; + surf2.writeStats(Info); + Info<< endl; + + + if (args.optionFound("debug2")) + { + surfaceIntersection::debug |= 2; + } + if (args.optionFound("debug4")) + { + surfaceIntersection::debug |= 4; + } + const bool optPrint = args.optionFound("print"); + + dictionary intersectOptions; + if (args.optionFound("dict")) + { + intersectOptions = IOdictionary + ( + IOobject + ( + args["dict"], + runTime, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) + ); + } + + intersectOptions.writeEntry("intersectOptions", Info); + Info<< endl; + + triSurfaceSearch query1(surf1); + triSurfaceSearch query2(surf2); + surfaceIntersection cuts(query1, query2, intersectOptions); + + Info<<"intersection " + << cuts.cutPoints().size() << " points " + << cuts.cutEdges().size() << " edges" << nl; + + if (optPrint) + { + Info<< "surf1-cuts: " << cuts.surf1EdgeCuts() << nl + << "surf2-cuts: " << cuts.surf2EdgeCuts() << nl + << "face-pairs: " << cuts.facePairToEdgeId() << nl + << "edges: " << cuts.cutEdges() << nl; + } + + word mergeOp; + if (args.optionFound("mergePoints")) + { + cuts.mergePoints(args.optionRead<scalar>("mergePoints")); + mergeOp = "mergePoints"; + } + else if (args.optionFound("mergeEdges")) + { + cuts.mergeEdges(); + mergeOp = "mergeEdges"; + } + + if (!mergeOp.empty()) + { + Info<< mergeOp << ": " + << cuts.cutPoints().size() << " points " + << cuts.cutEdges().size() << " edges" << nl; + + if (optPrint) + { + Info<< "surf1-cuts: " << cuts.surf1EdgeCuts() << nl + << "surf2-cuts: " << cuts.surf2EdgeCuts() << nl + << "face-pairs: " << cuts.facePairToEdgeId() << nl + << "edges: " << cuts.cutEdges() << nl; + } + } + + const pointField& points = cuts.cutPoints(); + const edgeList& edges = cuts.cutEdges(); + + if (points.size() || edges.size()) + { + Info<<"write to " << outputFile << nl; + OBJstream(outputFile).write(edges, points); + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/test/thermoMixture/thermoDict b/applications/test/thermoMixture/thermoDict index 426ae0a9f37779ec9f162a2738ac3899b0477e87..e17e34c5e7b1901ea135bb490a672e24c17f5d89 100644 --- a/applications/test/thermoMixture/thermoDict +++ b/applications/test/thermoMixture/thermoDict @@ -2,7 +2,6 @@ specie1 { specie { - nMoles 1; molWeight 1; } @@ -24,7 +23,6 @@ specie2 { specie { - nMoles 1; molWeight 0.5; } diff --git a/applications/test/unitConversion/Make/files b/applications/test/unitConversion/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..0e675c11a296da73ad25b879de5f89bf5ed5c06c --- /dev/null +++ b/applications/test/unitConversion/Make/files @@ -0,0 +1,3 @@ +Test-unitConversion.C + +EXE = $(FOAM_USER_APPBIN)/Test-unitConversion diff --git a/applications/test/unitConversion/Make/options b/applications/test/unitConversion/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/applications/test/unitConversion/Test-unitConversion.C b/applications/test/unitConversion/Test-unitConversion.C new file mode 100644 index 0000000000000000000000000000000000000000..869007ec4057a955b89e86017e3116233931e9d5 --- /dev/null +++ b/applications/test/unitConversion/Test-unitConversion.C @@ -0,0 +1,50 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 + Test-unitConversion + +\*---------------------------------------------------------------------------*/ + +#include "IOstreams.H" +#include "unitConversion.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Main program: + +int main(int argc, char *argv[]) +{ + Info<< "30_deg: " << 30_deg << nl; + Info<< "30.0_deg: " << 30.0_deg << nl; + Info<< "3e+1_deg: " << 3e+1_deg << nl; + Info<< "degToRad(30): " << degToRad(30) << nl; + + Info<< "cos(30_deg): " << ::cos(30_deg) << nl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/utilities/mesh/advanced/selectCells/Make/options b/applications/utilities/mesh/advanced/selectCells/Make/options index c4020c272cd1523a08a657c30afcd519e33d4265..18a53a8f5e5cf4e8f14b38af4ffed5a3bd3ee0b7 100644 --- a/applications/utilities/mesh/advanced/selectCells/Make/options +++ b/applications/utilities/mesh/advanced/selectCells/Make/options @@ -1,12 +1,10 @@ EXE_INC = \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude - EXE_LIBS = \ - -ldynamicMesh \ -lmeshTools \ - -ltriSurface \ + -ldynamicMesh \ -llagrangian diff --git a/applications/utilities/mesh/advanced/snappyRefineMesh/Make/options b/applications/utilities/mesh/advanced/snappyRefineMesh/Make/options index 78df8bbcf4ef6261fdd30440b6ccfb373c790676..7abac6e3a5e3f99244d58146162683c207de44c1 100644 --- a/applications/utilities/mesh/advanced/snappyRefineMesh/Make/options +++ b/applications/utilities/mesh/advanced/snappyRefineMesh/Make/options @@ -1,11 +1,10 @@ EXE_INC = \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude EXE_LIBS = \ -ldynamicMesh \ -lmeshTools \ - -ltriSurface \ -llagrangian diff --git a/applications/utilities/mesh/conversion/ccm/ccmToFoam/Make/options b/applications/utilities/mesh/conversion/ccm/ccmToFoam/Make/options index 8b1f005a7833c6c646d3983fc9d54014120a747e..55f161ad8286945aedc90a64b6393cf1f5010d56 100644 --- a/applications/utilities/mesh/conversion/ccm/ccmToFoam/Make/options +++ b/applications/utilities/mesh/conversion/ccm/ccmToFoam/Make/options @@ -1,9 +1,9 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/conversion/ccm/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/ccm/lnInclude EXE_LIBS = \ -lfiniteVolume \ diff --git a/applications/utilities/mesh/conversion/ccm/ccmToFoam/ccmToFoam.C b/applications/utilities/mesh/conversion/ccm/ccmToFoam/ccmToFoam.C index 13049e8c9e37070bbd1a34d9e2ebce3e93360cd9..52377df3393a533ade4d556a4b0a6e963d0c1a97 100644 --- a/applications/utilities/mesh/conversion/ccm/ccmToFoam/ccmToFoam.C +++ b/applications/utilities/mesh/conversion/ccm/ccmToFoam/ccmToFoam.C @@ -125,12 +125,6 @@ int main(int argc, char *argv[]) "provide alternative base name when re-exporting (implies -export). " "Default is <meshExport>." ); - // This often works, but is not entirely stable - // argList::addBoolOption - // ( - // "combine", - // "combine identically named patches" - // ); argList::addBoolOption ( "noBaffles", @@ -211,10 +205,6 @@ int main(int argc, char *argv[]) { rOpts.useNumberedNames(true); } - else if (args.optionFound("combine")) - { - rOpts.combineBoundaries(true); - } if (args.optionFound("solids")) { @@ -295,7 +285,7 @@ int main(int argc, char *argv[]) { const fileName geomName = exportName + ".ccmg"; Info<< nl << "Re-exporting geometry as " << geomName << nl; - ccm::writer(geomName, mesh).writeGeometry(); + ccm::writer(geomName, mesh()).writeGeometry(); } } else diff --git a/applications/utilities/mesh/conversion/ccm/foamToCcm/Make/options b/applications/utilities/mesh/conversion/ccm/foamToCcm/Make/options index df1a41bde0ac5a0fa70a0ee9372ab01cdd4c9b9d..a788d881ee9dafb773e44abb43d20667238b83d2 100644 --- a/applications/utilities/mesh/conversion/ccm/foamToCcm/Make/options +++ b/applications/utilities/mesh/conversion/ccm/foamToCcm/Make/options @@ -1,8 +1,8 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/conversion/ccm/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/ccm/lnInclude EXE_LIBS = \ -lfiniteVolume \ diff --git a/applications/utilities/mesh/conversion/fireToFoam/Make/options b/applications/utilities/mesh/conversion/fireToFoam/Make/options index e3af2fe661b0e1a9cc1f77fbe4b08a9923d2bd35..890aee06c8f23b7fd65b894d23dee6dc4f8f5d5e 100644 --- a/applications/utilities/mesh/conversion/fireToFoam/Make/options +++ b/applications/utilities/mesh/conversion/fireToFoam/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/lnInclude EXE_LIBS = \ -lconversion diff --git a/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L b/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L index fbb98236c8567c8c85a15f359509532cf153b99f..7d8889ed380ff152a3b4c71ec90b8c4dd0b9cfbf 100644 --- a/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L +++ b/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -874,6 +874,12 @@ int main(int argc, char *argv[]) "factor", "geometry scaling factor - default is 1" ); + argList::addOption + ( + "2D", + "thickness", + "use when converting a 2-D mesh (applied before scale)" + ); argList::addBoolOption ( "writeSets", @@ -960,22 +966,26 @@ int main(int argc, char *argv[]) // Construct shapes from face lists cellShapeList cellShapes(nCells); - // Extrude 2-D mesh into 3-D - Info<< "dimension of grid: " << dimensionOfGrid << endl; faceList frontAndBackFaces; if (dimensionOfGrid == 2) { - const scalar extrusionFactor = 0.01; + // Extrude 2-D mesh into 3-D, in z-direction - boundBox box(max(points), min(points)); + scalar twoDThickness = 1.0; - const scalar zOffset = extrusionFactor*box.mag(); + if (!args.optionReadIfPresent("2D", twoDThickness)) + { + const scalar extrusionFactor = 0.02; //0.01 in each direction + boundBox box(points); + twoDThickness = extrusionFactor*box.mag(); + } + + Info<< "Grid is 2-D. Extruding in z-direction by: " << twoDThickness + << endl; - // two-dimensional grid. Extrude in z-direction - Info<< "Grid is 2-D. Extruding in z-direction by: " - << 2*zOffset << endl; + const scalar zOffset = twoDThickness / 2; pointField oldPoints = points; diff --git a/applications/utilities/mesh/conversion/foamToFireMesh/Make/options b/applications/utilities/mesh/conversion/foamToFireMesh/Make/options index e3af2fe661b0e1a9cc1f77fbe4b08a9923d2bd35..890aee06c8f23b7fd65b894d23dee6dc4f8f5d5e 100644 --- a/applications/utilities/mesh/conversion/foamToFireMesh/Make/options +++ b/applications/utilities/mesh/conversion/foamToFireMesh/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/lnInclude EXE_LIBS = \ -lconversion diff --git a/applications/utilities/mesh/conversion/foamToStarMesh/Make/options b/applications/utilities/mesh/conversion/foamToStarMesh/Make/options index e3af2fe661b0e1a9cc1f77fbe4b08a9923d2bd35..890aee06c8f23b7fd65b894d23dee6dc4f8f5d5e 100644 --- a/applications/utilities/mesh/conversion/foamToStarMesh/Make/options +++ b/applications/utilities/mesh/conversion/foamToStarMesh/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/lnInclude EXE_LIBS = \ -lconversion diff --git a/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H b/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H index 11b8993f28bd3efd8f8efd44d2880271d3a0419e..22b31b514cbeb4809f66789ea3c96d4f9a7e4be0 100644 --- a/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H +++ b/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H @@ -48,4 +48,3 @@ } Info<< "\nTime [" << timeName << "] = " << runTime.timeName() << nl; - diff --git a/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H b/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H index 11b8993f28bd3efd8f8efd44d2880271d3a0419e..22b31b514cbeb4809f66789ea3c96d4f9a7e4be0 100644 --- a/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H +++ b/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H @@ -48,4 +48,3 @@ } Info<< "\nTime [" << timeName << "] = " << runTime.timeName() << nl; - diff --git a/applications/utilities/mesh/conversion/ideasUnvToFoam/ideasUnvToFoam.C b/applications/utilities/mesh/conversion/ideasUnvToFoam/ideasUnvToFoam.C index d66e43344b8f8c93ab94c391531cfebb426300fd..8583c9fac5d055a125a7d7ca34fd6dcfef5ade0b 100644 --- a/applications/utilities/mesh/conversion/ideasUnvToFoam/ideasUnvToFoam.C +++ b/applications/utilities/mesh/conversion/ideasUnvToFoam/ideasUnvToFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -468,7 +468,8 @@ void readCells IOWarningInFunction(is) << "Cell type " << feID << " not supported" << endl; } - is.getLine(line); // Do nothing + + is.getLine(line); } } diff --git a/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C b/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C index 1a24ab8623d3b8571350acaf23b221206b93799e..e4b5e8b4e8767d18e72abd144638ad451c7bde9a 100644 --- a/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C +++ b/applications/utilities/mesh/conversion/plot3dToFoam/plot3dToFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -81,7 +81,7 @@ int main(int argc, char *argv[]) ( "2D", "thickness", - "use when converting a 2-D geometry" + "use when converting a 2-D mesh (applied before scale)" ); argList args(argc, argv); diff --git a/applications/utilities/mesh/conversion/star4ToFoam/Make/options b/applications/utilities/mesh/conversion/star4ToFoam/Make/options index e3af2fe661b0e1a9cc1f77fbe4b08a9923d2bd35..890aee06c8f23b7fd65b894d23dee6dc4f8f5d5e 100644 --- a/applications/utilities/mesh/conversion/star4ToFoam/Make/options +++ b/applications/utilities/mesh/conversion/star4ToFoam/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/conversion/lnInclude EXE_LIBS = \ -lconversion diff --git a/applications/utilities/mesh/generation/blockMesh/Make/options b/applications/utilities/mesh/generation/blockMesh/Make/options index 9d13a25de681fb3ee87e93327d5280f8be600ec6..3828bbeca13abb14b71d5f956c9694110a8b0cce 100644 --- a/applications/utilities/mesh/generation/blockMesh/Make/options +++ b/applications/utilities/mesh/generation/blockMesh/Make/options @@ -1,11 +1,10 @@ EXE_INC = \ -I$(LIB_SRC)/mesh/blockMesh/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude EXE_LIBS = \ -lblockMesh \ -lmeshTools \ - -lfileFormats \ -ldynamicMesh diff --git a/applications/utilities/mesh/generation/blockMesh/blockMesh.C b/applications/utilities/mesh/generation/blockMesh/blockMesh.C index c1c5016b35f89083546df2428084603978ee30f5..dcc06edb8fc981956fe858128985b9ae3caff270 100644 --- a/applications/utilities/mesh/generation/blockMesh/blockMesh.C +++ b/applications/utilities/mesh/generation/blockMesh/blockMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -82,6 +82,11 @@ int main(int argc, char *argv[]) "blockTopology", "write block edges and centres as .obj files" ); + argList::addBoolOption + ( + "noClean", + "keep the existing files in the polyMesh" + ); argList::addOption ( "dict", @@ -171,6 +176,30 @@ int main(int argc, char *argv[]) dictPath = runTime.system()/regionPath/dictName; } + if (!args.optionFound("noClean")) + { + fileName polyMeshPath + ( + runTime.path()/runTime.constant()/regionPath/polyMesh::meshSubDir + ); + + if (exists(polyMeshPath)) + { + if (exists(polyMeshPath/dictName)) + { + Info<< "Not deleting polyMesh directory " << nl + << " " << polyMeshPath << nl + << " because it contains " << dictName << endl; + } + else + { + Info<< "Deleting polyMesh directory" << nl + << " " << polyMeshPath << endl; + rmDir(polyMeshPath); + } + } + } + IOobject meshDictIO ( dictPath, diff --git a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options index aa1ba3b9bbc8e810b7a0061f035e830a5ebe7fd2..386b66908388374398cef7b824739b8b7b58fca1 100644 --- a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options @@ -6,7 +6,6 @@ CGAL_INEXACT = -DCGAL_INEXACT include $(GENERAL_RULES)/CGAL - EXE_INC = \ ${ROUNDING_MATH} \ ${EXE_NDEBUG} \ @@ -14,24 +13,20 @@ EXE_INC = \ ${CGAL_INC} \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ -I../conformalVoronoiMesh/lnInclude EXE_LIBS = \ $(CGAL_LIBS) \ -lconformalVoronoiMesh \ - -lfiniteVolume \ + -lfiniteVolume \ -lmeshTools \ - -ldecompositionMethods \ - -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp \ - -ledgeMesh \ - -ltriSurface \ - -ldynamicMesh \ -lsampling \ - -lfileFormats + -ldecompositionMethods \ + -L$(FOAM_LIBBIN)/dummy -lscotchDecomp -lptscotchDecomp \ + -ldynamicMesh diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMeshTools/DelaunayMeshToolsTemplates.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMeshTools/DelaunayMeshToolsTemplates.C index ed6818dd39bff6e1984ee7a509fe56f7da9a614b..da9f4ce3ed0e86bfa66a8d83cf2c8aeaf0caa4e7 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMeshTools/DelaunayMeshToolsTemplates.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMeshTools/DelaunayMeshToolsTemplates.C @@ -44,22 +44,9 @@ void Foam::DelaunayMeshTools::writeOBJ OFstream str(fName); Pout<< nl - << "Writing points of types:" << nl; - - forAllConstIter - ( - HashTable<int>, - indexedVertexEnum::vertexTypeNames_, - iter - ) - { - if (iter() >= startPointType && iter() <= endPointType) - { - Pout<< " " << iter.key() << nl; - } - } - - Pout<< "to " << str.name() << endl; + << "Writing points of types (" + << int(startPointType) << "-" << int(endPointType) + << ") to " << str.name() << endl; for ( @@ -265,7 +252,7 @@ void Foam::DelaunayMeshTools::drawDelaunayCell << "f " << 1 + offset << " " << 4 + offset << " " << 3 + offset << nl << "f " << 1 + offset << " " << 2 + offset << " " << 4 + offset << endl; -// os << "# cicumcentre " << endl; +// os << "# circumcentre " << endl; // meshTools::writeOBJ(os, c->dual()); diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options index a25814c1c4cd998a5b5e78b680bf0d3be07b7127..89496232cc7f67a7198445dc735d2af976506bc0 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options @@ -14,26 +14,20 @@ EXE_INC = \ ${CGAL_INC} \ ${c++LESSWARN} \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompose/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ -IPrintTable LIB_LIBS = \ ${CGAL_LIBS} \ -lmeshTools \ + -lsampling \ -ldecompose \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ -ldynamicMesh \ - -lsurfMesh \ - -lsampling \ -lsnappyHexMesh diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C index f2f93f2412c794eb94e595d1238c71a9f49bf506..9a0333e9708f652c0edf42e149604bef1c29d5de 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,7 +58,7 @@ Foam::cellSizeFunction::cellSizeFunction defaultCellSize ) ), - coeffsDict_(subDict(type + "Coeffs")), + coeffsDict_(optionalSubDict(type + "Coeffs")), defaultCellSize_(defaultCellSize), regionIndices_(regionIndices), sideMode_(), diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C index ccaff192aa74e77970da77659c09278c2e4c584d..d9bf097d1d6d7023a378ca7d53232c0391795e03 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -107,7 +107,7 @@ Foam::automatic::automatic surface, defaultCellSize ), - coeffsDict_(cellSizeCalcTypeDict.subDict(typeName + "Coeffs")), + coeffsDict_(cellSizeCalcTypeDict.optionalSubDict(typeName + "Coeffs")), surfaceName_(surface.searchableSurface::name()), readCurvature_(Switch(coeffsDict_.lookup("curvature"))), curvatureFile_(coeffsDict_.lookup("curvatureFile")), diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C index 6d6b56e7b6c43de620cbeebba30c18e1002ef245..c4f2014caf5fef1125eba85027efdf1a0b001ad3 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,10 +58,13 @@ Foam::fieldFromFile::fieldFromFile surface, defaultCellSize ), - coeffsDict_(cellSizeCalcTypeDict.subDict(typeName + "Coeffs")), + coeffsDict_(cellSizeCalcTypeDict.optionalSubDict(typeName + "Coeffs")), fileName_ ( - cellSizeCalcTypeDict.subDict(typeName + "Coeffs").lookup("fieldFile") + cellSizeCalcTypeDict.optionalSubDict + ( + typeName + "Coeffs" + ).lookup("fieldFile") ), cellSizeMultipleCoeff_ ( diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C index 2740fc1193d31bc21406c85c6f8696877d0ba776..ac6c12ce6bd5b0315baaa6d6457166aea490a247 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,7 +46,7 @@ Foam::surfaceCellSizeFunction::surfaceCellSizeFunction : dictionary(surfaceCellSizeFunctionDict), surface_(surface), - coeffsDict_(subDict(type + "Coeffs")), + coeffsDict_(optionalSubDict(type + "Coeffs")), defaultCellSize_(defaultCellSize), refinementFactor_ ( diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C index de7a97317d1d6773af1b693a9261578c69cd9b98..ee6a7b36622d1bd04c8b27d7f298832fecaceea8 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -641,7 +641,7 @@ void Foam::conformalVoronoiMesh::reorderProcessorPatches labelList rotation(faces.size(), label(0)); labelList faceMap(faces.size(), label(-1)); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send ordering forAll(sortMesh.boundaryMesh(), patchi) @@ -900,12 +900,10 @@ void Foam::conformalVoronoiMesh::writeMesh mesh.addFvPatches(patches); - // Add zones to the mesh addZones(mesh, cellCentres); - Info<< indent << "Add pointZones" << endl; { label sz = mesh.pointZones().size(); @@ -914,6 +912,9 @@ void Foam::conformalVoronoiMesh::writeMesh forAll(dualMeshPointTypeNames_, typeI) { + const word& znName = + dualMeshPointTypeNames_[dualMeshPointType(typeI)]; + forAll(boundaryPts, ptI) { const label& bPtType = boundaryPts[ptI]; @@ -928,14 +929,14 @@ void Foam::conformalVoronoiMesh::writeMesh Info<< incrIndent << indent << "Adding " << bPts.size() - << " points of type " << dualMeshPointTypeNames_.words()[typeI] + << " points of type " << znName << decrIndent << endl; mesh.pointZones().append ( new pointZone ( - dualMeshPointTypeNames_.words()[typeI], + znName, bPts, sz + typeI, mesh.pointZones() diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C index 2a6ccd8a3991a33c76fedfe4df8a819279ef0eca..151a0b78844315d1a461611f45953729f2f29e7c 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,7 +46,7 @@ faceAreaWeightModel::faceAreaWeightModel ) : dictionary(relaxationDict), - coeffDict_(subDict(type + "Coeffs")) + coeffDict_(optionalSubDict(type + "Coeffs")) {} diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C index 6a73347681fc2661d1432dfdd62ed9e1d8ae0b56..3cca22c751d775b6ae620586adc14ffa16b9b194 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ initialPointsMethod::initialPointsMethod geometryToConformTo_(geometryToConformTo), cellShapeControls_(cellShapeControls), decomposition_(decomposition), - detailsDict_(subDict(type + "Coeffs")), + detailsDict_(optionalSubDict(type + "Coeffs")), minimumSurfaceDistanceCoeffSqr_ ( sqr diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C index 8086470c6e75c4d2aba4f1628435d09742f4d0fd..b968dd2ebe0e2f3fc2920c070d80333754eddb51 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,7 +48,7 @@ relaxationModel::relaxationModel : dictionary(relaxationDict), runTime_(runTime), - coeffDict_(subDict(type + "Coeffs")) + coeffDict_(optionalSubDict(type + "Coeffs")) {} diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options index 560ee3a7b834095eecf9b2a0e83d8d1e4d265474..40373bec9dd802d38d751eab54dd7ef83d20045f 100644 --- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options @@ -15,13 +15,12 @@ EXE_INC = \ ${c++LESSWARN} \ -I../conformalVoronoiMesh/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude \ + -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ -IvectorTools @@ -29,11 +28,8 @@ EXE_LIBS = \ ${CGAL_LIBS} \ -lconformalVoronoiMesh \ -lmeshTools \ + -lsampling \ -ldecompositionMethods \ -ldecompose \ -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp -lscotchDecomp \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ - -ldynamicMesh \ - -lsampling + -ldynamicMesh diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options index 625763f59762663c38696a79301e29dd6b364c51..3fe4af45fb5c75c7b1ce703cd50bfc9168890cdc 100644 --- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options @@ -10,13 +10,12 @@ EXE_INC = \ -I../conformalVoronoiMesh/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompose/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I../vectorTools @@ -25,10 +24,7 @@ EXE_LIBS = \ -lconformalVoronoiMesh \ -ldecompositionMethods /* -L$(FOAM_LIBBIN)/dummy -lscotchDecomp */ \ -ldecompose \ - -ledgeMesh \ - -ltriSurface \ -lmeshTools \ - -lfileFormats \ -lsampling \ -ldynamicMesh \ -lfiniteVolume diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options index 1a24c89f7036a2f9094910b27f19c951eebf20bb..66ddf81aac5a4b6b0d2321dbea504676c843aa89 100644 --- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options @@ -8,10 +8,9 @@ EXE_INC = \ /* -IMarchingCubes */ \ -I$(FASTDUALOCTREE_SRC_PATH) \ -I../conformalVoronoiMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ @@ -20,8 +19,5 @@ EXE_LIBS = \ -lGL \ -lconformalVoronoiMesh \ -ldecompositionMethods -L$(FOAM_LIBBIN)/dummy -lscotchDecomp \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ -lmeshTools \ -ldynamicMesh diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options index 5ead133c28d66fcdfbca152a6fbf881b33342b59..1b509ac9df0949d66b38e630a9831798b859540f 100644 --- a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options +++ b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options @@ -13,14 +13,12 @@ EXE_INC = \ -I../conformalVoronoiMesh/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/mesh/extrudeModel/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude EXE_LIBS = \ @@ -30,11 +28,7 @@ EXE_LIBS = \ -lcv2DMesh \ -lconformalVoronoiMesh \ -lmeshTools \ - -lsurfMesh \ - -ledgeMesh \ - -ltriSurface \ + -lsampling \ -ldynamicMesh \ -ldecompositionMethods \ - -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp \ - -lsampling \ - -lfileFormats + -L$(FOAM_LIBBIN)/dummy -lscotchDecomp -lptscotchDecomp diff --git a/applications/utilities/mesh/generation/snappyHexMesh/Make/options b/applications/utilities/mesh/generation/snappyHexMesh/Make/options index 40ccd9c2ce3dcc1ebeae811655d9559bfed963c4..bb863797faeb443c5d540883c02023ecf37b864c 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/Make/options +++ b/applications/utilities/mesh/generation/snappyHexMesh/Make/options @@ -2,12 +2,10 @@ EXE_INC = \ /* -g -DFULLDEBUG -O0 */ \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompose/lnInclude \ -I$(LIB_SRC)/parallel/reconstruct/reconstruct/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude @@ -19,8 +17,6 @@ EXE_LIBS = \ /* note: scotch < 6.0 does not like both scotch and ptscotch together */ \ -lscotchDecomp \ -lmeshTools \ - -lsurfMesh \ - -lfileFormats \ -ldynamicMesh \ -ldecompose \ -lreconstruct \ diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C index c1bf4aa0c5433774f2891c7539ddefca47676763..3e917474153ec2d0c0cd10db06e7b01d521ab80f 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C @@ -144,7 +144,7 @@ autoPtr<refinementSurfaces> createRefinementSurfaces const word scsFuncName = shapeDict.lookup("surfaceCellSizeFunction"); const dictionary& scsDict = - shapeDict.subDict(scsFuncName + "Coeffs"); + shapeDict.optionalSubDict(scsFuncName + "Coeffs"); const scalar surfaceCellSize = readScalar(scsDict.lookup("surfaceCellSizeCoeff")); @@ -666,15 +666,6 @@ void writeMesh } refinementHistory::removeFiles(mesh); - //label flag = meshRefinement::MESH; - //if (writeLevel) - //{ - // flag |= meshRefinement::SCALARLEVELS; - //} - //if (debug & meshRefinement::OBJINTERSECTIONS) - //{ - // flag |= meshRefinement::OBJINTERSECTIONS; - //} meshRefiner.write ( debugLevel, @@ -710,7 +701,7 @@ int main(int argc, char *argv[]) Foam::argList::addOption ( "outFile", - "fileName", + "file", "name of the file to save the simplified surface to" ); #include "addProfilingOption.H" @@ -726,117 +717,6 @@ int main(int argc, char *argv[]) autoPtr<fvMesh> meshPtr; -// if (surfaceSimplify) -// { -// IOdictionary foamyHexMeshDict -// ( -// IOobject -// ( -// "foamyHexMeshDict", -// runTime.system(), -// runTime, -// IOobject::MUST_READ_IF_MODIFIED, -// IOobject::NO_WRITE -// ) -// ); -// -// const dictionary& motionDict = -// foamyHexMeshDict.subDict("motionControl"); -// -// const scalar defaultCellSize = -// readScalar(motionDict.lookup("defaultCellSize")); -// -// Info<< "Constructing single cell mesh from boundBox" << nl << endl; -// -// boundBox bb(args.optionRead<boundBox>("surfaceSimplify")); -// -// labelList owner(6, label(0)); -// labelList neighbour(0); -// -// const cellModel& hexa = *(cellModeller::lookup("hex")); -// faceList faces = hexa.modelFaces(); -// -// meshPtr.set -// ( -// new fvMesh -// ( -// IOobject -// ( -// fvMesh::defaultRegion, -// runTime.timeName(), -// runTime, -// IOobject::NO_READ -// ), -// xferMove<Field<vector>>(bb.points()()), -// faces.xfer(), -// owner.xfer(), -// neighbour.xfer() -// ) -// ); -// -// List<polyPatch*> patches(1); -// -// patches[0] = new wallPolyPatch -// ( -// "boundary", -// 6, -// 0, -// 0, -// meshPtr().boundaryMesh(), -// wallPolyPatch::typeName -// ); -// -// meshPtr().addFvPatches(patches); -// -// const scalar initialCellSize = ::pow(meshPtr().V()[0], 1.0/3.0); -// const label initialRefLevels = -// ::log(initialCellSize/defaultCellSize)/::log(2); -// -// Info<< "Default cell size = " << defaultCellSize << endl; -// Info<< "Initial cell size = " << initialCellSize << endl; -// -// Info<< "Initial refinement levels = " << initialRefLevels << endl; -// -// Info<< "Mesh starting size = " << meshPtr().nCells() << endl; -// -// // meshCutter must be destroyed before writing the mesh otherwise it -// // writes the cellLevel/pointLevel files -// { -// hexRef8 meshCutter(meshPtr(), false); -// -// for (label refinei = 0; refinei < initialRefLevels; ++refinei) -// { -// // Mesh changing engine. -// polyTopoChange meshMod(meshPtr(), true); -// -// // Play refinement commands into mesh changer. -// meshCutter.setRefinement -// ( -// identity(meshPtr().nCells()), -// meshMod -// ); -// -// // Create mesh (no inflation), return map from old to new mesh -// autoPtr<mapPolyMesh> map = -// meshMod.changeMesh(meshPtr(), false); -// -// // Update fields -// meshPtr().updateMesh(map); -// -// // Delete mesh volumes. -// meshPtr().clearOut(); -// -// Info<< "Refinement Iteration " << refinei + 1 -// << ", Mesh size = " << meshPtr().nCells() << endl; -// } -// } -// -// Info<< "Mesh end size = " << meshPtr().nCells() << endl; -// -// Info<< "Create mesh" << endl; -// meshPtr().write(); -// } -// else { word regionName; if (args.optionReadIfPresent("region", regionName)) diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkTools.C b/applications/utilities/mesh/manipulation/checkMesh/checkTools.C index a26d98912371bd25efd022aa2a728e724d8b24d6..456ce03b8e878de0d19b44e1aa2dc53a7171c19e 100644 --- a/applications/utilities/mesh/manipulation/checkMesh/checkTools.C +++ b/applications/utilities/mesh/manipulation/checkMesh/checkTools.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -430,7 +430,7 @@ void Foam::mergeAndWrite // Receive slave ones for (int slave=1; slave<Pstream::nProcs(); slave++) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointField slavePts(fromSlave); labelList slaveIDs(fromSlave); @@ -446,7 +446,7 @@ void Foam::mergeAndWrite // be improved. OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), myPoints.byteSize() + myIDs.byteSize() ); diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C index 6228382d99e96247db766041f5e256b672dbfa68..55060ae39898b9e65eca1ec7c5bad75c10c0deac 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C +++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -352,7 +352,11 @@ void syncPoints } } - OPstream toNbr(Pstream::blocking, procPatch.neighbProcNo()); + OPstream toNbr + ( + Pstream::commsTypes::blocking, + procPatch.neighbProcNo() + ); toNbr << patchInfo; } } @@ -380,7 +384,7 @@ void syncPoints // so cannot use Pstream::read. IPstream fromNbr ( - Pstream::blocking, + Pstream::commsTypes::blocking, procPatch.neighbProcNo() ); fromNbr >> nbrPatchInfo; diff --git a/applications/utilities/mesh/manipulation/insideCells/Make/options b/applications/utilities/mesh/manipulation/insideCells/Make/options index 07bbf1aab92a4100283fd6d5bdc7c3d915513f36..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/mesh/manipulation/insideCells/Make/options +++ b/applications/utilities/mesh/manipulation/insideCells/Make/options @@ -1,8 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude - + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -ltriSurface \ -lmeshTools diff --git a/applications/utilities/mesh/manipulation/orientFaceZone/Make/options b/applications/utilities/mesh/manipulation/orientFaceZone/Make/options index 56e8dc4f1748e4297e3e770831a54074c6a0263c..8bec702f894dfb0a115ac2e64c312b13c794b56d 100644 --- a/applications/utilities/mesh/manipulation/orientFaceZone/Make/options +++ b/applications/utilities/mesh/manipulation/orientFaceZone/Make/options @@ -1,9 +1,8 @@ EXE_INC = \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/mesh/snappyHexMesh/lnInclude EXE_LIBS = \ -lmeshTools \ - -lsnappyHexMesh \ - -ltriSurface + -lsnappyHexMesh diff --git a/applications/utilities/mesh/manipulation/renumberMesh/Make/options b/applications/utilities/mesh/manipulation/renumberMesh/Make/options index f285297247346156e2cd3c8df324554186d73dc0..f073a1c4140abf625f7d2513c66f4bb933aa27ed 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/Make/options +++ b/applications/utilities/mesh/manipulation/renumberMesh/Make/options @@ -17,4 +17,5 @@ EXE_LIBS = \ -lrenumberMethods \ -lreconstruct \ $(LINK_FLAGS) \ - -ldecompositionMethods -L$(FOAM_LIBBIN)/dummy -lmetisDecomp -lscotchDecomp + -ldecompositionMethods \ + -L$(FOAM_LIBBIN)/dummy -lmetisDecomp -lscotchDecomp diff --git a/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C b/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C index 83576de60a0533f6edc54d3a13bc250bc29986d7..23ac90868c31d455014f1bfaaef39ef54213410b 100644 --- a/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C +++ b/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,10 +87,12 @@ int main(int argc, char *argv[]) #include "createNamedPolyMesh.H" + const fileName setsSubPath(mesh.dbDir()/polyMesh::meshSubDir/"sets"); + // Search for list of objects for the time of the mesh word setsInstance = runTime.findInstance ( - polyMesh::meshSubDir/"sets", + setsSubPath, word::null, IOobject::MUST_READ, mesh.facesInstance() @@ -98,7 +100,7 @@ int main(int argc, char *argv[]) IOobjectList objects(mesh, setsInstance, polyMesh::meshSubDir/"sets"); - Info<< "Searched : " << setsInstance/polyMesh::meshSubDir/"sets" + Info<< "Searched : " << setsInstance/setsSubPath << nl << "Found : " << objects.names() << nl << endl; diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 2cc79daf7265538bbb2b6f751bf4adedf5f6cfaa..0e1f3c253c798041a153e6e94c65c69a1d1f5c17 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -394,7 +394,7 @@ void getInterfaceSizes slave++ ) { - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); EdgeMap<Map<label>> slaveSizes(fromSlave); @@ -439,7 +439,11 @@ void getInterfaceSizes { // Send to master { - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); toMaster << regionsToSize; } } diff --git a/applications/utilities/miscellaneous/foamDictionary/foamDictionary.C b/applications/utilities/miscellaneous/foamDictionary/foamDictionary.C index be10f1ca08c904595aa1d7e951364d92cf7b6a1d..6d6dca2c76b8efe031e181466f03baac724ad770 100644 --- a/applications/utilities/miscellaneous/foamDictionary/foamDictionary.C +++ b/applications/utilities/miscellaneous/foamDictionary/foamDictionary.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -399,7 +399,7 @@ int main(int argc, char *argv[]) ); if (entPtr) { - Info<< *entPtr << endl; + Info<< *entPtr; } } else if (args.optionFound("remove")) @@ -470,7 +470,11 @@ int main(int argc, char *argv[]) const tokenList& tokens = entPtr->stream(); forAll(tokens, i) { - Info<< tokens[i] << token::SPACE; + Info<< tokens[i]; + if (i < tokens.size() - 1) + { + Info<< token::SPACE; + } } Info<< endl; } @@ -481,7 +485,7 @@ int main(int argc, char *argv[]) } else { - Info<< *entPtr << endl; + Info<< *entPtr; } } } diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C index ec53cb414dc14c67533907ad951cdd78db89bbf9..d552c294f7eabab062dd8f4004fbea20532a54a1 100644 --- a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,7 +93,7 @@ void Foam::helpTypes::helpBoundary::fixedValueFieldConditions IOobject::NO_WRITE, false ), - mesh, + mesh, dimensioned<Type>("zero", dimless, Zero) ); @@ -142,9 +142,7 @@ void Foam::helpTypes::helpBoundary::fixedValueFieldConditions } } catch (...) - { - // do nothing - } + {} } if (!foundFixed) diff --git a/applications/utilities/miscellaneous/foamList/Make/options b/applications/utilities/miscellaneous/foamList/Make/options index 4a5dab06d68014bb1e192ff4745670ad9f039d35..6487208998ceee12b05c030abe852f123cfa7d3c 100644 --- a/applications/utilities/miscellaneous/foamList/Make/options +++ b/applications/utilities/miscellaneous/foamList/Make/options @@ -15,9 +15,10 @@ EXE_LIBS = \ -lchemistryModel \ -lcoalCombustion \ -lcombustionModels \ - -lcompressibleEulerianInterfacialModels \ + -lcompressibleTransportModels \ -lcompressibleTurbulenceModels \ - -lCompressibleTwoPhaseMixtureTurbulenceModels \ + -lconversion \ + -ldecompose \ -ldecompositionMethods \ -ldistributed \ -ldistributionModels \ @@ -27,7 +28,6 @@ EXE_LIBS = \ -lDSMC \ -ldynamicFvMesh \ -ldynamicMesh \ - -ledgeMesh \ -lengine \ -lextrudeModel \ -lfieldFunctionObjects \ @@ -38,25 +38,34 @@ EXE_LIBS = \ -lfvMotionSolvers \ -lfvOptions \ -lgenericPatchFields \ + -limmiscibleIncompressibleTwoPhaseMixture \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModels \ -linterfaceProperties \ -llagrangianFunctionObjects \ -llagrangianIntermediate \ + -llagrangian \ -llagrangianSpray \ -llagrangianTurbulence \ -llaminarFlameSpeedModels \ - -lliquidPropertiesFvPatchFields \ - -lliquidProperties \ + -lthermophysicalProperties \ -lmeshTools \ + -lmolecularMeasurements \ + -lmolecule \ -lODE \ + -lOpenFOAM \ + -lpairPatchAgglomeration \ -lphaseChangeTwoPhaseMixtures \ - -lphaseCompressibleTurbulenceModels \ - -lphaseTemperatureChangeTwoPhaseMixtures \ -lpotential \ -lpyrolysisModels \ -lradiationModels \ + -lrandomProcesses \ + -lreactingEulerianInterfacialCompositionModels \ + -lreactingEulerianInterfacialModels \ + -lreactingPhaseSystem \ + -lreactingTwoPhaseSystem \ -lreactionThermophysicalModels \ + -lreconstruct \ -lregionCoupled \ -lregionCoupling \ -lregionModels \ @@ -67,10 +76,10 @@ EXE_LIBS = \ -lsampling \ -lscotchDecomp \ -lsixDoFRigidBodyMotion \ - -lSloanRenumber \ + -lSLGThermo \ -lsnappyHexMesh \ -lsolidChemistryModel \ - -lsolidProperties \ + -lsolidParticle \ -lsolidSpecie \ -lsolidThermo \ -lsolverFunctionObjects \ @@ -79,9 +88,10 @@ EXE_LIBS = \ -lsurfaceFilmModels \ -lsurfMesh \ -lthermalBaffleModels \ - -lthermophysicalFunctions \ -ltopoChangerFvMesh \ - -lturbulenceModelSchemes \ -lturbulenceModels \ + -ltwoPhaseMixture \ + -ltwoPhaseMixtureThermo \ -ltwoPhaseProperties \ + -ltwoPhaseReactingTurbulenceModels \ -lutilityFunctionObjects diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C index 48cfbac21f09cf45ae823b0ecf214e9a80fc93ee..e245698752642fcbdeec87d550de60893698a08d 100644 --- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C +++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -46,6 +46,9 @@ Usage Decompose all regions in regionProperties. Does not check for existence of processor*. + - \par -copyZero + Copy \a 0 directory to processor* rather than decompose the fields. + - \par -copyUniform Copy any \a uniform directories too. @@ -162,6 +165,10 @@ void decomposeUniform const fileName timePath = processorDb.timePath(); + // If no fields have been decomposed the destination + // directory will not have been created so make sure. + mkDir(timePath); + if (copyUniform || mesh.distributed()) { cp @@ -172,7 +179,7 @@ void decomposeUniform } else { - // link with relative paths + // Link with relative paths string parentPath = string("..")/".."; if (regionDir != word::null) @@ -224,6 +231,11 @@ int main(int argc, char *argv[]) "decomposition method or as a volScalarField for post-processing." ); argList::addBoolOption + ( + "copyZero", + "Copy \a 0 directory to processor* rather than decompose the fields" + ); + argList::addBoolOption ( "copyUniform", "copy any uniform/ directories too" @@ -256,6 +268,7 @@ int main(int argc, char *argv[]) bool allRegions = args.optionFound("allRegions"); bool writeCellDist = args.optionFound("cellDist"); + bool copyZero = args.optionFound("copyZero"); bool copyUniform = args.optionFound("copyUniform"); bool decomposeFieldsOnly = args.optionFound("fields"); bool decomposeSets = !args.optionFound("noSets"); @@ -495,668 +508,715 @@ int main(int argc, char *argv[]) } - - // Caches - // ~~~~~~ - // Cached processor meshes and maps. These are only preserved if running - // with multiple times. - PtrList<Time> processorDbList(mesh.nProcs()); - PtrList<fvMesh> procMeshList(mesh.nProcs()); - PtrList<labelIOList> faceProcAddressingList(mesh.nProcs()); - PtrList<labelIOList> cellProcAddressingList(mesh.nProcs()); - PtrList<labelIOList> boundaryProcAddressingList(mesh.nProcs()); - PtrList<fvFieldDecomposer> fieldDecomposerList(mesh.nProcs()); - PtrList<dimFieldDecomposer> dimFieldDecomposerList(mesh.nProcs()); - PtrList<labelIOList> pointProcAddressingList(mesh.nProcs()); - PtrList<pointFieldDecomposer> pointFieldDecomposerList(mesh.nProcs()); - - - - // Loop over all times - forAll(times, timeI) + if (copyZero) { - runTime.setTime(times[timeI], timeI); - - Info<< "Time = " << runTime.timeName() << endl; - - // Search for list of objects for this time - IOobjectList objects(mesh, runTime.timeName()); - - - // Construct the vol fields - // ~~~~~~~~~~~~~~~~~~~~~~~~ - PtrList<volScalarField> volScalarFields; - readFields(mesh, objects, volScalarFields, false); - PtrList<volVectorField> volVectorFields; - readFields(mesh, objects, volVectorFields, false); - PtrList<volSphericalTensorField> volSphericalTensorFields; - readFields(mesh, objects, volSphericalTensorFields, false); - PtrList<volSymmTensorField> volSymmTensorFields; - readFields(mesh, objects, volSymmTensorFields, false); - PtrList<volTensorField> volTensorFields; - readFields(mesh, objects, volTensorFields, false); - - - // Construct the dimensioned fields - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - PtrList<DimensionedField<scalar, volMesh>> dimScalarFields; - readFields(mesh, objects, dimScalarFields); - PtrList<DimensionedField<vector, volMesh>> dimVectorFields; - readFields(mesh, objects, dimVectorFields); - PtrList<DimensionedField<sphericalTensor, volMesh>> - dimSphericalTensorFields; - readFields(mesh, objects, dimSphericalTensorFields); - PtrList<DimensionedField<symmTensor, volMesh>> dimSymmTensorFields; - readFields(mesh, objects, dimSymmTensorFields); - PtrList<DimensionedField<tensor, volMesh>> dimTensorFields; - readFields(mesh, objects, dimTensorFields); - - - // Construct the surface fields - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - PtrList<surfaceScalarField> surfaceScalarFields; - readFields(mesh, objects, surfaceScalarFields, false); - PtrList<surfaceVectorField> surfaceVectorFields; - readFields(mesh, objects, surfaceVectorFields, false); - PtrList<surfaceSphericalTensorField> surfaceSphericalTensorFields; - readFields(mesh, objects, surfaceSphericalTensorFields, false); - PtrList<surfaceSymmTensorField> surfaceSymmTensorFields; - readFields(mesh, objects, surfaceSymmTensorFields, false); - PtrList<surfaceTensorField> surfaceTensorFields; - readFields(mesh, objects, surfaceTensorFields, false); - - - // Construct the point fields - // ~~~~~~~~~~~~~~~~~~~~~~~~~~ - const pointMesh& pMesh = pointMesh::New(mesh); - - PtrList<pointScalarField> pointScalarFields; - readFields(pMesh, objects, pointScalarFields, false); - PtrList<pointVectorField> pointVectorFields; - readFields(pMesh, objects, pointVectorFields, false); - PtrList<pointSphericalTensorField> pointSphericalTensorFields; - readFields(pMesh, objects, pointSphericalTensorFields, false); - PtrList<pointSymmTensorField> pointSymmTensorFields; - readFields(pMesh, objects, pointSymmTensorFields, false); - PtrList<pointTensorField> pointTensorFields; - readFields(pMesh, objects, pointTensorFields, false); - - - // Construct the Lagrangian fields - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - fileNameList cloudDirs - ( - readDir(runTime.timePath()/cloud::prefix, fileName::DIRECTORY) - ); - - // Particles - PtrList<Cloud<indexedParticle>> lagrangianPositions - ( - cloudDirs.size() - ); - // Particles per cell - PtrList<List<SLList<indexedParticle*>*>> cellParticles - ( - cloudDirs.size() - ); - - PtrList<PtrList<labelIOField>> lagrangianLabelFields - ( - cloudDirs.size() - ); - PtrList<PtrList<labelFieldCompactIOField>> - lagrangianLabelFieldFields - ( - cloudDirs.size() - ); - PtrList<PtrList<scalarIOField>> lagrangianScalarFields - ( - cloudDirs.size() - ); - PtrList<PtrList<scalarFieldCompactIOField>> - lagrangianScalarFieldFields - ( - cloudDirs.size() - ); - PtrList<PtrList<vectorIOField>> lagrangianVectorFields - ( - cloudDirs.size() - ); - PtrList<PtrList<vectorFieldCompactIOField>> - lagrangianVectorFieldFields - ( - cloudDirs.size() - ); - PtrList<PtrList<sphericalTensorIOField>> - lagrangianSphericalTensorFields - ( - cloudDirs.size() - ); - PtrList<PtrList<sphericalTensorFieldCompactIOField>> - lagrangianSphericalTensorFieldFields(cloudDirs.size()); - PtrList<PtrList<symmTensorIOField>> lagrangianSymmTensorFields - ( - cloudDirs.size() - ); - PtrList<PtrList<symmTensorFieldCompactIOField>> - lagrangianSymmTensorFieldFields - ( - cloudDirs.size() - ); - PtrList<PtrList<tensorIOField>> lagrangianTensorFields - ( - cloudDirs.size() - ); - PtrList<PtrList<tensorFieldCompactIOField>> - lagrangianTensorFieldFields - ( - cloudDirs.size() - ); - - label cloudI = 0; - - forAll(cloudDirs, i) + // Link the 0 directory into each of the processor directories + for (label proci = 0; proci < mesh.nProcs(); proci++) { - IOobjectList sprayObjs + Time processorDb ( - mesh, - runTime.timeName(), - cloud::prefix/cloudDirs[i], - IOobject::MUST_READ, - IOobject::NO_WRITE, - false + Time::controlDictName, + args.rootPath(), + args.caseName()/fileName(word("processor") + name(proci)) ); + processorDb.setTime(runTime); - IOobject* positionsPtr = sprayObjs.lookup(word("positions")); - - if (positionsPtr) + if (isDir(runTime.timePath())) { - // Read lagrangian particles - // ~~~~~~~~~~~~~~~~~~~~~~~~~ - - Info<< "Identified lagrangian data set: " << cloudDirs[i] - << endl; - - lagrangianPositions.set - ( - cloudI, - new Cloud<indexedParticle> - ( - mesh, - cloudDirs[i], - false - ) - ); + const fileName timePath = processorDb.timePath(); + Info<< "Processor " << proci + << ": linking " << runTime.timePath() << nl + << " to " << processorDb.timePath() << endl; + cp(runTime.timePath(), processorDb.timePath()); + } + } + } + else + { + // Decompose the field files + + // Cached processor meshes and maps. These are only preserved if + // running with multiple times. + PtrList<Time> processorDbList(mesh.nProcs()); + PtrList<fvMesh> procMeshList(mesh.nProcs()); + PtrList<labelIOList> faceProcAddressingList(mesh.nProcs()); + PtrList<labelIOList> cellProcAddressingList(mesh.nProcs()); + PtrList<labelIOList> boundaryProcAddressingList(mesh.nProcs()); + PtrList<fvFieldDecomposer> fieldDecomposerList(mesh.nProcs()); + PtrList<dimFieldDecomposer> dimFieldDecomposerList(mesh.nProcs()); + PtrList<labelIOList> pointProcAddressingList(mesh.nProcs()); + PtrList<pointFieldDecomposer> pointFieldDecomposerList + ( + mesh.nProcs() + ); - // Sort particles per cell - // ~~~~~~~~~~~~~~~~~~~~~~~ - - cellParticles.set - ( - cloudI, - new List<SLList<indexedParticle*>*> - ( - mesh.nCells(), - static_cast<SLList<indexedParticle*>*>(nullptr) - ) - ); - - label i = 0; - forAllIter + // Loop over all times + forAll(times, timeI) + { + runTime.setTime(times[timeI], timeI); + + Info<< "Time = " << runTime.timeName() << endl; + + // Search for list of objects for this time + IOobjectList objects(mesh, runTime.timeName()); + + + // Construct the vol fields + // ~~~~~~~~~~~~~~~~~~~~~~~~ + PtrList<volScalarField> volScalarFields; + readFields(mesh, objects, volScalarFields, false); + PtrList<volVectorField> volVectorFields; + readFields(mesh, objects, volVectorFields, false); + PtrList<volSphericalTensorField> volSphericalTensorFields; + readFields(mesh, objects, volSphericalTensorFields, false); + PtrList<volSymmTensorField> volSymmTensorFields; + readFields(mesh, objects, volSymmTensorFields, false); + PtrList<volTensorField> volTensorFields; + readFields(mesh, objects, volTensorFields, false); + + + // Construct the dimensioned fields + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + PtrList<DimensionedField<scalar, volMesh>> dimScalarFields; + readFields(mesh, objects, dimScalarFields); + PtrList<DimensionedField<vector, volMesh>> dimVectorFields; + readFields(mesh, objects, dimVectorFields); + PtrList<DimensionedField<sphericalTensor, volMesh>> + dimSphericalTensorFields; + readFields(mesh, objects, dimSphericalTensorFields); + PtrList<DimensionedField<symmTensor, volMesh>> + dimSymmTensorFields; + readFields(mesh, objects, dimSymmTensorFields); + PtrList<DimensionedField<tensor, volMesh>> dimTensorFields; + readFields(mesh, objects, dimTensorFields); + + + // Construct the surface fields + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + PtrList<surfaceScalarField> surfaceScalarFields; + readFields(mesh, objects, surfaceScalarFields, false); + PtrList<surfaceVectorField> surfaceVectorFields; + readFields(mesh, objects, surfaceVectorFields, false); + PtrList<surfaceSphericalTensorField> + surfaceSphericalTensorFields; + readFields(mesh, objects, surfaceSphericalTensorFields, false); + PtrList<surfaceSymmTensorField> surfaceSymmTensorFields; + readFields(mesh, objects, surfaceSymmTensorFields, false); + PtrList<surfaceTensorField> surfaceTensorFields; + readFields(mesh, objects, surfaceTensorFields, false); + + + // Construct the point fields + // ~~~~~~~~~~~~~~~~~~~~~~~~~~ + const pointMesh& pMesh = pointMesh::New(mesh); + + PtrList<pointScalarField> pointScalarFields; + readFields(pMesh, objects, pointScalarFields, false); + PtrList<pointVectorField> pointVectorFields; + readFields(pMesh, objects, pointVectorFields, false); + PtrList<pointSphericalTensorField> pointSphericalTensorFields; + readFields(pMesh, objects, pointSphericalTensorFields, false); + PtrList<pointSymmTensorField> pointSymmTensorFields; + readFields(pMesh, objects, pointSymmTensorFields, false); + PtrList<pointTensorField> pointTensorFields; + readFields(pMesh, objects, pointTensorFields, false); + + + // Construct the Lagrangian fields + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + fileNameList cloudDirs + ( + readDir ( - Cloud<indexedParticle>, - lagrangianPositions[cloudI], - iter + runTime.timePath()/cloud::prefix, fileName::DIRECTORY ) - { - iter().index() = i++; - - label celli = iter().cell(); - - // Check - if (celli < 0 || celli >= mesh.nCells()) - { - FatalErrorInFunction - << "Illegal cell number " << celli - << " for particle with index " << iter().index() - << " at position " << iter().position() << nl - << "Cell number should be between 0 and " - << mesh.nCells()-1 << nl - << "On this mesh the particle should" - << " be in cell " - << mesh.findCell(iter().position()) - << exit(FatalError); - } + ); - if (!cellParticles[cloudI][celli]) - { - cellParticles[cloudI][celli] = - new SLList<indexedParticle*>(); - } + // Particles + PtrList<Cloud<indexedParticle>> lagrangianPositions + ( + cloudDirs.size() + ); + // Particles per cell + PtrList<List<SLList<indexedParticle*>*>> cellParticles + ( + cloudDirs.size() + ); - cellParticles[cloudI][celli]->append(&iter()); - } + PtrList<PtrList<labelIOField>> lagrangianLabelFields + ( + cloudDirs.size() + ); + PtrList<PtrList<labelFieldCompactIOField>> + lagrangianLabelFieldFields + ( + cloudDirs.size() + ); + PtrList<PtrList<scalarIOField>> lagrangianScalarFields + ( + cloudDirs.size() + ); + PtrList<PtrList<scalarFieldCompactIOField>> + lagrangianScalarFieldFields + ( + cloudDirs.size() + ); + PtrList<PtrList<vectorIOField>> lagrangianVectorFields + ( + cloudDirs.size() + ); + PtrList<PtrList<vectorFieldCompactIOField>> + lagrangianVectorFieldFields + ( + cloudDirs.size() + ); + PtrList<PtrList<sphericalTensorIOField>> + lagrangianSphericalTensorFields + ( + cloudDirs.size() + ); + PtrList<PtrList<sphericalTensorFieldCompactIOField>> + lagrangianSphericalTensorFieldFields(cloudDirs.size()); + PtrList<PtrList<symmTensorIOField>> lagrangianSymmTensorFields + ( + cloudDirs.size() + ); + PtrList<PtrList<symmTensorFieldCompactIOField>> + lagrangianSymmTensorFieldFields + ( + cloudDirs.size() + ); + PtrList<PtrList<tensorIOField>> lagrangianTensorFields + ( + cloudDirs.size() + ); + PtrList<PtrList<tensorFieldCompactIOField>> + lagrangianTensorFieldFields + ( + cloudDirs.size() + ); - // Read fields - // ~~~~~~~~~~~ + label cloudI = 0; - IOobjectList lagrangianObjects + forAll(cloudDirs, i) + { + IOobjectList sprayObjs ( mesh, runTime.timeName(), - cloud::prefix/cloudDirs[cloudI], + cloud::prefix/cloudDirs[i], IOobject::MUST_READ, IOobject::NO_WRITE, false ); - lagrangianFieldDecomposer::readFields + IOobject* positionsPtr = sprayObjs.lookup ( - cloudI, - lagrangianObjects, - lagrangianLabelFields + word("positions") ); - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianLabelFieldFields - ); + if (positionsPtr) + { + // Read lagrangian particles + // ~~~~~~~~~~~~~~~~~~~~~~~~~ - lagrangianFieldDecomposer::readFields - ( - cloudI, - lagrangianObjects, - lagrangianScalarFields - ); + Info<< "Identified lagrangian data set: " + << cloudDirs[i] << endl; - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianScalarFieldFields - ); + lagrangianPositions.set + ( + cloudI, + new Cloud<indexedParticle> + ( + mesh, + cloudDirs[i], + false + ) + ); - lagrangianFieldDecomposer::readFields - ( - cloudI, - lagrangianObjects, - lagrangianVectorFields - ); - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianVectorFieldFields - ); + // Sort particles per cell + // ~~~~~~~~~~~~~~~~~~~~~~~ - lagrangianFieldDecomposer::readFields - ( - cloudI, - lagrangianObjects, - lagrangianSphericalTensorFields - ); + cellParticles.set + ( + cloudI, + new List<SLList<indexedParticle*>*> + ( + mesh.nCells(), + static_cast<SLList<indexedParticle*>*>(nullptr) + ) + ); - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianSphericalTensorFieldFields - ); + label i = 0; - lagrangianFieldDecomposer::readFields - ( - cloudI, - lagrangianObjects, - lagrangianSymmTensorFields - ); + forAllIter + ( + Cloud<indexedParticle>, + lagrangianPositions[cloudI], + iter + ) + { + iter().index() = i++; + + label celli = iter().cell(); + + // Check + if (celli < 0 || celli >= mesh.nCells()) + { + FatalErrorInFunction + << "Illegal cell number " << celli + << " for particle with index " + << iter().index() + << " at position " + << iter().position() << nl + << "Cell number should be between 0 and " + << mesh.nCells()-1 << nl + << "On this mesh the particle should" + << " be in cell " + << mesh.findCell(iter().position()) + << exit(FatalError); + } + + if (!cellParticles[cloudI][celli]) + { + cellParticles[cloudI][celli] = + new SLList<indexedParticle*>(); + } + + cellParticles[cloudI][celli]->append(&iter()); + } - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianSymmTensorFieldFields - ); + // Read fields + // ~~~~~~~~~~~ - lagrangianFieldDecomposer::readFields - ( - cloudI, - lagrangianObjects, - lagrangianTensorFields - ); + IOobjectList lagrangianObjects + ( + mesh, + runTime.timeName(), + cloud::prefix/cloudDirs[cloudI], + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ); - lagrangianFieldDecomposer::readFieldFields - ( - cloudI, - lagrangianObjects, - lagrangianTensorFieldFields - ); + lagrangianFieldDecomposer::readFields + ( + cloudI, + lagrangianObjects, + lagrangianLabelFields + ); - cloudI++; - } - } + lagrangianFieldDecomposer::readFieldFields + ( + cloudI, + lagrangianObjects, + lagrangianLabelFieldFields + ); - lagrangianPositions.setSize(cloudI); - cellParticles.setSize(cloudI); - lagrangianLabelFields.setSize(cloudI); - lagrangianLabelFieldFields.setSize(cloudI); - lagrangianScalarFields.setSize(cloudI); - lagrangianScalarFieldFields.setSize(cloudI); - lagrangianVectorFields.setSize(cloudI); - lagrangianVectorFieldFields.setSize(cloudI); - lagrangianSphericalTensorFields.setSize(cloudI); - lagrangianSphericalTensorFieldFields.setSize(cloudI); - lagrangianSymmTensorFields.setSize(cloudI); - lagrangianSymmTensorFieldFields.setSize(cloudI); - lagrangianTensorFields.setSize(cloudI); - lagrangianTensorFieldFields.setSize(cloudI); - - Info<< endl; - - // split the fields over processors - for (label proci = 0; proci < mesh.nProcs(); proci++) - { - Info<< "Processor " << proci << ": field transfer" << endl; + lagrangianFieldDecomposer::readFields + ( + cloudI, + lagrangianObjects, + lagrangianScalarFields + ); + lagrangianFieldDecomposer::readFieldFields + ( + cloudI, + lagrangianObjects, + lagrangianScalarFieldFields + ); - // open the database - if (!processorDbList.set(proci)) - { - processorDbList.set - ( - proci, - new Time + lagrangianFieldDecomposer::readFields ( - Time::controlDictName, - args.rootPath(), - args.caseName() - /fileName(word("processor") + name(proci)) - ) - ); - } - Time& processorDb = processorDbList[proci]; + cloudI, + lagrangianObjects, + lagrangianVectorFields + ); + lagrangianFieldDecomposer::readFieldFields + ( + cloudI, + lagrangianObjects, + lagrangianVectorFieldFields + ); - processorDb.setTime(runTime); + lagrangianFieldDecomposer::readFields + ( + cloudI, + lagrangianObjects, + lagrangianSphericalTensorFields + ); - // read the mesh - if (!procMeshList.set(proci)) - { - procMeshList.set - ( - proci, - new fvMesh + lagrangianFieldDecomposer::readFieldFields ( - IOobject - ( - regionName, - processorDb.timeName(), - processorDb - ) - ) - ); - } - const fvMesh& procMesh = procMeshList[proci]; + cloudI, + lagrangianObjects, + lagrangianSphericalTensorFieldFields + ); - const labelIOList& faceProcAddressing = procAddressing - ( - procMeshList, - proci, - "faceProcAddressing", - faceProcAddressingList - ); + lagrangianFieldDecomposer::readFields + ( + cloudI, + lagrangianObjects, + lagrangianSymmTensorFields + ); - const labelIOList& cellProcAddressing = procAddressing - ( - procMeshList, - proci, - "cellProcAddressing", - cellProcAddressingList - ); + lagrangianFieldDecomposer::readFieldFields + ( + cloudI, + lagrangianObjects, + lagrangianSymmTensorFieldFields + ); - const labelIOList& boundaryProcAddressing = procAddressing - ( - procMeshList, - proci, - "boundaryProcAddressing", - boundaryProcAddressingList - ); + lagrangianFieldDecomposer::readFields + ( + cloudI, + lagrangianObjects, + lagrangianTensorFields + ); + lagrangianFieldDecomposer::readFieldFields + ( + cloudI, + lagrangianObjects, + lagrangianTensorFieldFields + ); + + cloudI++; + } + } - // FV fields + lagrangianPositions.setSize(cloudI); + cellParticles.setSize(cloudI); + lagrangianLabelFields.setSize(cloudI); + lagrangianLabelFieldFields.setSize(cloudI); + lagrangianScalarFields.setSize(cloudI); + lagrangianScalarFieldFields.setSize(cloudI); + lagrangianVectorFields.setSize(cloudI); + lagrangianVectorFieldFields.setSize(cloudI); + lagrangianSphericalTensorFields.setSize(cloudI); + lagrangianSphericalTensorFieldFields.setSize(cloudI); + lagrangianSymmTensorFields.setSize(cloudI); + lagrangianSymmTensorFieldFields.setSize(cloudI); + lagrangianTensorFields.setSize(cloudI); + lagrangianTensorFieldFields.setSize(cloudI); + + Info<< endl; + + // split the fields over processors + for (label proci = 0; proci < mesh.nProcs(); proci++) { - if (!fieldDecomposerList.set(proci)) + Info<< "Processor " << proci << ": field transfer" << endl; + + + // open the database + if (!processorDbList.set(proci)) { - fieldDecomposerList.set + processorDbList.set ( proci, - new fvFieldDecomposer + new Time ( - mesh, - procMesh, - faceProcAddressing, - cellProcAddressing, - boundaryProcAddressing + Time::controlDictName, + args.rootPath(), + args.caseName() + /fileName(word("processor") + name(proci)) ) ); } - const fvFieldDecomposer& fieldDecomposer = - fieldDecomposerList[proci]; - - fieldDecomposer.decomposeFields(volScalarFields); - fieldDecomposer.decomposeFields(volVectorFields); - fieldDecomposer.decomposeFields(volSphericalTensorFields); - fieldDecomposer.decomposeFields(volSymmTensorFields); - fieldDecomposer.decomposeFields(volTensorFields); - - fieldDecomposer.decomposeFields(surfaceScalarFields); - fieldDecomposer.decomposeFields(surfaceVectorFields); - fieldDecomposer.decomposeFields - ( - surfaceSphericalTensorFields - ); - fieldDecomposer.decomposeFields(surfaceSymmTensorFields); - fieldDecomposer.decomposeFields(surfaceTensorFields); + Time& processorDb = processorDbList[proci]; - if (times.size() == 1) - { - // Clear cached decomposer - fieldDecomposerList.set(proci, nullptr); - } - } - // Dimensioned fields - { - if (!dimFieldDecomposerList.set(proci)) + processorDb.setTime(runTime); + + // read the mesh + if (!procMeshList.set(proci)) { - dimFieldDecomposerList.set + procMeshList.set ( proci, - new dimFieldDecomposer + new fvMesh ( - mesh, - procMesh, - faceProcAddressing, - cellProcAddressing + IOobject + ( + regionName, + processorDb.timeName(), + processorDb + ) ) ); } - const dimFieldDecomposer& dimDecomposer = - dimFieldDecomposerList[proci]; + const fvMesh& procMesh = procMeshList[proci]; - dimDecomposer.decomposeFields(dimScalarFields); - dimDecomposer.decomposeFields(dimVectorFields); - dimDecomposer.decomposeFields(dimSphericalTensorFields); - dimDecomposer.decomposeFields(dimSymmTensorFields); - dimDecomposer.decomposeFields(dimTensorFields); - - if (times.size() == 1) - { - dimFieldDecomposerList.set(proci, nullptr); - } - } + const labelIOList& faceProcAddressing = procAddressing + ( + procMeshList, + proci, + "faceProcAddressing", + faceProcAddressingList + ); + const labelIOList& cellProcAddressing = procAddressing + ( + procMeshList, + proci, + "cellProcAddressing", + cellProcAddressingList + ); - // Point fields - if - ( - pointScalarFields.size() - || pointVectorFields.size() - || pointSphericalTensorFields.size() - || pointSymmTensorFields.size() - || pointTensorFields.size() - ) - { - const labelIOList& pointProcAddressing = procAddressing + const labelIOList& boundaryProcAddressing = procAddressing ( procMeshList, proci, - "pointProcAddressing", - pointProcAddressingList + "boundaryProcAddressing", + boundaryProcAddressingList ); - const pointMesh& procPMesh = pointMesh::New(procMesh); - if (!pointFieldDecomposerList.set(proci)) + // FV fields { - pointFieldDecomposerList.set - ( - proci, - new pointFieldDecomposer + if (!fieldDecomposerList.set(proci)) + { + fieldDecomposerList.set ( - pMesh, - procPMesh, - pointProcAddressing, - boundaryProcAddressing - ) + proci, + new fvFieldDecomposer + ( + mesh, + procMesh, + faceProcAddressing, + cellProcAddressing, + boundaryProcAddressing + ) + ); + } + const fvFieldDecomposer& fieldDecomposer = + fieldDecomposerList[proci]; + + fieldDecomposer.decomposeFields(volScalarFields); + fieldDecomposer.decomposeFields(volVectorFields); + fieldDecomposer.decomposeFields + ( + volSphericalTensorFields ); - } - const pointFieldDecomposer& pointDecomposer = - pointFieldDecomposerList[proci]; + fieldDecomposer.decomposeFields(volSymmTensorFields); + fieldDecomposer.decomposeFields(volTensorFields); - pointDecomposer.decomposeFields(pointScalarFields); - pointDecomposer.decomposeFields(pointVectorFields); - pointDecomposer.decomposeFields(pointSphericalTensorFields); - pointDecomposer.decomposeFields(pointSymmTensorFields); - pointDecomposer.decomposeFields(pointTensorFields); + fieldDecomposer.decomposeFields(surfaceScalarFields); + fieldDecomposer.decomposeFields(surfaceVectorFields); + fieldDecomposer.decomposeFields + ( + surfaceSphericalTensorFields + ); + fieldDecomposer.decomposeFields + ( + surfaceSymmTensorFields + ); + fieldDecomposer.decomposeFields(surfaceTensorFields); + if (times.size() == 1) + { + // Clear cached decomposer + fieldDecomposerList.set(proci, nullptr); + } + } - if (times.size() == 1) + // Dimensioned fields { - pointProcAddressingList.set(proci, nullptr); - pointFieldDecomposerList.set(proci, nullptr); + if (!dimFieldDecomposerList.set(proci)) + { + dimFieldDecomposerList.set + ( + proci, + new dimFieldDecomposer + ( + mesh, + procMesh, + faceProcAddressing, + cellProcAddressing + ) + ); + } + const dimFieldDecomposer& dimDecomposer = + dimFieldDecomposerList[proci]; + + dimDecomposer.decomposeFields(dimScalarFields); + dimDecomposer.decomposeFields(dimVectorFields); + dimDecomposer.decomposeFields(dimSphericalTensorFields); + dimDecomposer.decomposeFields(dimSymmTensorFields); + dimDecomposer.decomposeFields(dimTensorFields); + + if (times.size() == 1) + { + dimFieldDecomposerList.set(proci, nullptr); + } } - } - // If there is lagrangian data write it out - forAll(lagrangianPositions, cloudI) - { - if (lagrangianPositions[cloudI].size()) + // Point fields + if + ( + pointScalarFields.size() + || pointVectorFields.size() + || pointSphericalTensorFields.size() + || pointSymmTensorFields.size() + || pointTensorFields.size() + ) { - lagrangianFieldDecomposer fieldDecomposer + const labelIOList& pointProcAddressing = procAddressing ( - mesh, - procMesh, - faceProcAddressing, - cellProcAddressing, - cloudDirs[cloudI], - lagrangianPositions[cloudI], - cellParticles[cloudI] + procMeshList, + proci, + "pointProcAddressing", + pointProcAddressingList ); - // Lagrangian fields + const pointMesh& procPMesh = pointMesh::New(procMesh); + + if (!pointFieldDecomposerList.set(proci)) { - fieldDecomposer.decomposeFields - ( - cloudDirs[cloudI], - lagrangianLabelFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields - ( - cloudDirs[cloudI], - lagrangianLabelFieldFields[cloudI] - ); - fieldDecomposer.decomposeFields - ( - cloudDirs[cloudI], - lagrangianScalarFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields - ( - cloudDirs[cloudI], - lagrangianScalarFieldFields[cloudI] - ); - fieldDecomposer.decomposeFields - ( - cloudDirs[cloudI], - lagrangianVectorFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields - ( - cloudDirs[cloudI], - lagrangianVectorFieldFields[cloudI] - ); - fieldDecomposer.decomposeFields + pointFieldDecomposerList.set ( - cloudDirs[cloudI], - lagrangianSphericalTensorFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields - ( - cloudDirs[cloudI], - lagrangianSphericalTensorFieldFields[cloudI] - ); - fieldDecomposer.decomposeFields - ( - cloudDirs[cloudI], - lagrangianSymmTensorFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields - ( - cloudDirs[cloudI], - lagrangianSymmTensorFieldFields[cloudI] + proci, + new pointFieldDecomposer + ( + pMesh, + procPMesh, + pointProcAddressing, + boundaryProcAddressing + ) ); - fieldDecomposer.decomposeFields - ( - cloudDirs[cloudI], - lagrangianTensorFields[cloudI] - ); - fieldDecomposer.decomposeFieldFields + } + const pointFieldDecomposer& pointDecomposer = + pointFieldDecomposerList[proci]; + + pointDecomposer.decomposeFields(pointScalarFields); + pointDecomposer.decomposeFields(pointVectorFields); + pointDecomposer.decomposeFields + ( + pointSphericalTensorFields + ); + pointDecomposer.decomposeFields(pointSymmTensorFields); + pointDecomposer.decomposeFields(pointTensorFields); + + + if (times.size() == 1) + { + pointProcAddressingList.set(proci, nullptr); + pointFieldDecomposerList.set(proci, nullptr); + } + } + + + // If there is lagrangian data write it out + forAll(lagrangianPositions, cloudI) + { + if (lagrangianPositions[cloudI].size()) + { + lagrangianFieldDecomposer fieldDecomposer ( + mesh, + procMesh, + faceProcAddressing, + cellProcAddressing, cloudDirs[cloudI], - lagrangianTensorFieldFields[cloudI] + lagrangianPositions[cloudI], + cellParticles[cloudI] ); + + // Lagrangian fields + { + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianLabelFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianLabelFieldFields[cloudI] + ); + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianScalarFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianScalarFieldFields[cloudI] + ); + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianVectorFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianVectorFieldFields[cloudI] + ); + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianSphericalTensorFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianSphericalTensorFieldFields[cloudI] + ); + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianSymmTensorFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianSymmTensorFieldFields[cloudI] + ); + fieldDecomposer.decomposeFields + ( + cloudDirs[cloudI], + lagrangianTensorFields[cloudI] + ); + fieldDecomposer.decomposeFieldFields + ( + cloudDirs[cloudI], + lagrangianTensorFieldFields[cloudI] + ); + } } } - } - // Decompose the "uniform" directory in the time region - // directory - decomposeUniform(copyUniform, mesh, processorDb, regionDir); + // Decompose the "uniform" directory in the time region + // directory + decomposeUniform(copyUniform, mesh, processorDb, regionDir); - // For the first region of a multi-region case additionally - // decompose the "uniform" directory in the time directory - if (regionNames.size() > 1 && regioni == 0) - { - decomposeUniform(copyUniform, mesh, processorDb); - } + // For the first region of a multi-region case additionally + // decompose the "uniform" directory in the time directory + if (regionNames.size() > 1 && regioni == 0) + { + decomposeUniform(copyUniform, mesh, processorDb); + } - // We have cached all the constant mesh data for the current - // processor. This is only important if running with multiple - // times, otherwise it is just extra storage. - if (times.size() == 1) - { - boundaryProcAddressingList.set(proci, nullptr); - cellProcAddressingList.set(proci, nullptr); - faceProcAddressingList.set(proci, nullptr); - procMeshList.set(proci, nullptr); - processorDbList.set(proci, nullptr); + // We have cached all the constant mesh data for the current + // processor. This is only important if running with + // multiple times, otherwise it is just extra storage. + if (times.size() == 1) + { + boundaryProcAddressingList.set(proci, nullptr); + cellProcAddressingList.set(proci, nullptr); + faceProcAddressingList.set(proci, nullptr); + procMeshList.set(proci, nullptr); + processorDbList.set(proci, nullptr); + } } } } diff --git a/applications/utilities/parallelProcessing/redistributePar/loadOrCreateMesh.C b/applications/utilities/parallelProcessing/redistributePar/loadOrCreateMesh.C index 2cefcdff2b7d8f05a6c28faf3c2dd4fd1db40563..e8a082a271e9fb11aac1f170d5b48e09d168f4d6 100644 --- a/applications/utilities/parallelProcessing/redistributePar/loadOrCreateMesh.C +++ b/applications/utilities/parallelProcessing/redistributePar/loadOrCreateMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -124,14 +124,18 @@ Foam::autoPtr<Foam::fvMesh> Foam::loadOrCreateMesh slave++ ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << patchEntries; } } else { // Receive patches - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); fromMaster >> patchEntries; } diff --git a/applications/utilities/parallelProcessing/redistributePar/parFvFieldReconstructorReconstructFields.C b/applications/utilities/parallelProcessing/redistributePar/parFvFieldReconstructorReconstructFields.C index 3df020099ff8f3d0ed08d3271c9c47e9682c9391..c561dc71839cba0209c9f3ccc1c584eb22884d82 100644 --- a/applications/utilities/parallelProcessing/redistributePar/parFvFieldReconstructorReconstructFields.C +++ b/applications/utilities/parallelProcessing/redistributePar/parFvFieldReconstructorReconstructFields.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -66,7 +66,7 @@ Foam::parFvFieldReconstructor::reconstructFvVolumeInternalField IOobject::NO_WRITE ); - return tmp<DimensionedField<Type, volMesh>> + tmp<DimensionedField<Type, volMesh>> tfield ( new DimensionedField<Type, volMesh> ( @@ -76,6 +76,10 @@ Foam::parFvFieldReconstructor::reconstructFvVolumeInternalField internalField ) ); + + tfield.ref().oriented() = fld.oriented(); + + return tfield; } @@ -209,7 +213,7 @@ Foam::parFvFieldReconstructor::reconstructFvVolumeField IOobject::NO_WRITE ); - return tmp<GeometricField<Type, fvPatchField, volMesh>> + tmp<GeometricField<Type, fvPatchField, volMesh>> tfield ( new GeometricField<Type, fvPatchField, volMesh> ( @@ -220,6 +224,10 @@ Foam::parFvFieldReconstructor::reconstructFvVolumeField basePatchFields ) ); + + tfield.ref().oriented()= fld.oriented(); + + return tfield; } @@ -269,7 +277,7 @@ Foam::parFvFieldReconstructor::reconstructFvSurfaceField } // Map all faces - Field<Type> internalField(flatFld, mapper); + Field<Type> internalField(flatFld, mapper, fld.oriented()()); // Trim to internal faces (note: could also have special mapper) internalField.setSize @@ -372,7 +380,7 @@ Foam::parFvFieldReconstructor::reconstructFvSurfaceField IOobject::NO_WRITE ); - return tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> + tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> tfield ( new GeometricField<Type, fvsPatchField, surfaceMesh> ( @@ -383,6 +391,10 @@ Foam::parFvFieldReconstructor::reconstructFvSurfaceField basePatchFields ) ); + + tfield.ref().oriented() = fld.oriented(); + + return tfield; } diff --git a/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C b/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C index 0443a8e72dc25816c13492d132346af62107b919..73b7f412369b06f0170a26afd888d2e1ddbfa07b 100644 --- a/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C +++ b/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -137,7 +137,7 @@ Foam::parLagrangianRedistributor::redistributeLagrangianPositions // Allocate transfer buffers - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); { // List of lists of particles to be transfered for all of the diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C index 3c53c60c6a83fd05cecf8a10a33091944b5109b9..5c4862f2b8be343ef067d672c4c3689446eff8af 100644 --- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C +++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -467,7 +467,7 @@ void writeProcAddressing // Apply face flips mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), faceDistMap.constructSize(), faceDistMap.subMap(), @@ -489,7 +489,7 @@ void writeProcAddressing // provide one ... mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), patchDistMap.constructSize(), patchDistMap.subMap(), @@ -520,7 +520,7 @@ void writeProcAddressing mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), map.nOldFaces(), faceDistMap.constructMap(), @@ -649,7 +649,7 @@ void readFields { if (!haveMesh[procI]) { - OPstream toProc(Pstream::blocking, procI); + OPstream toProc(Pstream::commsTypes::blocking, procI); toProc<< tsubfld(); } } @@ -665,7 +665,11 @@ void readFields const word& name = masterNames[i]; // Receive field - IPstream fromMaster(Pstream::blocking, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); dictionary fieldDict(fromMaster); fields.set @@ -723,8 +727,8 @@ void correctCoupledBoundaryConditions(fvMesh& mesh) typename GeoField::Boundary& bfld = fld.boundaryFieldRef(); if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { label nReq = Pstream::nRequests(); @@ -745,7 +749,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh) if ( Pstream::parRun() - && Pstream::defaultCommsType == Pstream::nonBlocking + && Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { Pstream::waitRequests(nReq); @@ -763,7 +767,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh) } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = fld.mesh().globalData().patchSchedule(); @@ -779,11 +783,11 @@ void correctCoupledBoundaryConditions(fvMesh& mesh) { if (patchSchedule[patchEvali].init) { - pfld.initEvaluate(Pstream::scheduled); + pfld.initEvaluate(Pstream::commsTypes::scheduled); } else { - pfld.evaluate(Pstream::scheduled); + pfld.evaluate(Pstream::commsTypes::scheduled); } } } diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/Make/options b/applications/utilities/postProcessing/dataConversion/foamToEnsight/Make/options index dc8f10f1f1ac5dd01a0c4f00e26c11bf6694e9ed..82fc2ecd288b1cfe69b1f891cb2a185227417788 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/Make/options +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/Make/options @@ -1,14 +1,13 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/conversion/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/lagrangian/basic/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude + -I$(LIB_SRC)/lagrangian/basic/lnInclude EXE_LIBS = \ -ldynamicMesh \ - -lfileFormats \ -lgenericPatchFields \ -llagrangian \ -lconversion diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C index a3ca62ee2221d2dfab204623f6a88a48aa056de4..bb190f9eef28edae293d4de5b3a6e8a29fc033d4 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -84,7 +84,7 @@ void Foam::ensightCloud::writePositions // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointList points(fromSlave); forAll(points, pti) @@ -116,7 +116,7 @@ void Foam::ensightCloud::writePositions // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointList points(fromSlave); forAll(points, pti) @@ -145,7 +145,12 @@ void Foam::ensightCloud::writePositions } { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << points; } diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C index 1b2c006c62381a42dcf61811135e1e219481f750..fcf68edc190f56772fbbc548b8118338f83f2632 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -74,7 +74,7 @@ bool Foam::ensightCloud::writeCloudField // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); Field<Type> slaveData(fromSlave); forAll(slaveData, i) @@ -107,7 +107,12 @@ bool Foam::ensightCloud::writeCloudField } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << field; } diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/Make/options b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/Make/options index 09a58c1559a23bfaa718b050b7c9f805674d5e9b..b97563964936c442af5e3d5a9b83bd4dbef26769 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/Make/options +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/Make/options @@ -1,14 +1,13 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/lagrangian/basic/lnInclude \ - -I$(LIB_SRC)/conversion/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/conversion/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude EXE_LIBS = \ -lfiniteVolume \ -llagrangian \ -lmeshTools \ - -lfileFormats \ - -lgenericPatchFields \ - -lconversion + -lconversion \ + -lgenericPatchFields diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/findFields.H b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/findFields.H index 0c841369cf8b9e14cb8f1c3df5b3bff642f9d8fb..66e0616aba1487e24672e308bfaab1a48224e495 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/findFields.H +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/findFields.H @@ -114,4 +114,3 @@ if (timeDirs.size()) volumeFields.erase(missing); } } - diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/getTimeIndex.H b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/getTimeIndex.H index 91c718994f16c21fe2d336039b046049852551dc..70964a667d9986f8fbb997cc6965dd72d19ddbbd 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/getTimeIndex.H +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsightParts/getTimeIndex.H @@ -40,4 +40,4 @@ Info<< nl << "Time [" << timeIndex << "] = " << runTime.timeName() << nl; -// end-of-file +// end-of-file \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToGMV/foamToGMV.C b/applications/utilities/postProcessing/dataConversion/foamToGMV/foamToGMV.C index 7c74c7e20383be892a402c482a37fc5366e1ec5c..036217d15c186dc4195b2aea485121700bc0dab7 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToGMV/foamToGMV.C +++ b/applications/utilities/postProcessing/dataConversion/foamToGMV/foamToGMV.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,4 +100,3 @@ int main(int argc, char *argv[]) // ************************************************************************* // - diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C index 602f68b2d048f973828d76498e5838c988f76dac..dcf612a663ef2440b4b53943ce2c3ab24f4ab796 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C @@ -341,6 +341,7 @@ int main(int argc, char *argv[]) #include "createTime.H" + const bool decomposePoly = !args.optionFound("poly"); const bool doWriteInternal = !args.optionFound("noInternal"); const bool doFaceZones = !args.optionFound("noFaceZones"); const bool doLinks = !args.optionFound("noLinks"); @@ -349,7 +350,7 @@ int main(int argc, char *argv[]) const bool noLagrangian = args.optionFound("noLagrangian"); // Decomposition of polyhedral cells into tets/pyramids cells - vtkTopo::decomposePoly = !args.optionFound("poly"); + vtkTopo::decomposePoly = decomposePoly; if (binary && (sizeof(floatScalar) != 4 || sizeof(label) != 4)) { @@ -410,8 +411,6 @@ int main(int argc, char *argv[]) args.optionReadIfPresent("pointSet", pointSetName); - instantList timeDirs = timeSelector::select0(runTime, args); - #include "createNamedMesh.H" // VTK/ directory in the case @@ -449,6 +448,9 @@ int main(int argc, char *argv[]) mkDir(fvPath); + instantList timeDirs = timeSelector::select0(runTime, args); + + // Mesh wrapper: does subsetting and decomposition vtkMesh vMesh(mesh, cellSetName); @@ -492,7 +494,7 @@ int main(int argc, char *argv[]) // Filename as if patch with same name. mkDir(fvPath/set.name()); - fileName patchFileName + fileName outputName ( fvPath/set.name()/set.name() + "_" @@ -500,12 +502,12 @@ int main(int argc, char *argv[]) + ".vtk" ); - Info<< " FaceSet : " << patchFileName << endl; - - writeFaceSet(binary, vMesh.mesh(), set, patchFileName); + Info<< " faceSet : " << outputName << endl; + writeFaceSet(binary, vMesh.mesh(), set, outputName); continue; } + // If pointSet: write pointSet only (as polydata) if (pointSetName.size()) { @@ -515,7 +517,7 @@ int main(int argc, char *argv[]) // Filename as if patch with same name. mkDir(fvPath/set.name()); - fileName patchFileName + fileName outputName ( fvPath/set.name()/set.name() + "_" @@ -523,10 +525,9 @@ int main(int argc, char *argv[]) + ".vtk" ); - Info<< " pointSet : " << patchFileName << endl; - - writePointSet(binary, vMesh.mesh(), set, patchFileName); + Info<< " pointSet : " << outputName << endl; + writePointSet(binary, vMesh.mesh(), set, outputName); continue; } @@ -868,11 +869,11 @@ int main(int argc, char *argv[]) { mkDir(fvPath/"allPatches"); - fileName patchFileName; + fileName outputName; if (vMesh.useSubMesh()) { - patchFileName = + outputName = fvPath/"allPatches"/cellSetName + "_" + timeDesc @@ -880,21 +881,21 @@ int main(int argc, char *argv[]) } else { - patchFileName = + outputName = fvPath/"allPatches"/"allPatches" + "_" + timeDesc + ".vtk"; } - Info<< " Combined patches : " << patchFileName << endl; + Info<< " Combined patches : " << outputName << endl; patchWriter writer ( vMesh.mesh(), binary, nearCellValue, - patchFileName, + outputName, getSelectedPatches(patches, excludePatches) ); @@ -946,11 +947,11 @@ int main(int argc, char *argv[]) { mkDir(fvPath/pp.name()); - fileName patchFileName; + fileName outputName; if (vMesh.useSubMesh()) { - patchFileName = + outputName = fvPath/pp.name()/cellSetName + "_" + timeDesc @@ -958,22 +959,22 @@ int main(int argc, char *argv[]) } else { - patchFileName = + outputName = fvPath/pp.name()/pp.name() + "_" + timeDesc + ".vtk"; } - Info<< " Patch : " << patchFileName << endl; + Info<< " Patch : " << outputName << endl; patchWriter writer ( vMesh.mesh(), binary, nearCellValue, - patchFileName, - labelList(1, patchi) + outputName, + labelList{patchi} ); if (!isA<emptyPolyPatch>(pp)) @@ -1068,11 +1069,11 @@ int main(int argc, char *argv[]) mkDir(fvPath/fz.name()); - fileName patchFileName; + fileName outputName; if (vMesh.useSubMesh()) { - patchFileName = + outputName = fvPath/fz.name()/cellSetName + "_" + timeDesc @@ -1080,14 +1081,14 @@ int main(int argc, char *argv[]) } else { - patchFileName = + outputName = fvPath/fz.name()/fz.name() + "_" + timeDesc + ".vtk"; } - Info<< " FaceZone : " << patchFileName << endl; + Info<< " FaceZone : " << outputName << endl; indirectPrimitivePatch pp ( @@ -1100,7 +1101,7 @@ int main(int argc, char *argv[]) binary, pp, fz.name(), - patchFileName + outputName ); // Number of fields @@ -1131,14 +1132,13 @@ int main(int argc, char *argv[]) // Always create the cloud directory. mkDir(fvPath/cloud::prefix/cloudName); - fileName lagrFileName + fileName outputName ( fvPath/cloud::prefix/cloudName/cloudName + "_" + timeDesc + ".vtk" ); - Info<< " Lagrangian: " << lagrFileName << endl; - + Info<< " Lagrangian: " << outputName << endl; IOobjectList sprayObjs ( @@ -1189,7 +1189,7 @@ int main(int argc, char *argv[]) ( vMesh.mesh(), binary, - lagrFileName, + outputName, cloudName, false ); @@ -1219,7 +1219,7 @@ int main(int argc, char *argv[]) ( vMesh.mesh(), binary, - lagrFileName, + outputName, cloudName, true ); diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFuns.H b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFuns.H index 1776eefe09e86d88737c60edc70f1f3cbf37bbcd..60fe2a6d01034da4ee0de19da4cecd93b346e354 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFuns.H +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFuns.H @@ -104,6 +104,7 @@ public: //- Append elements to DynamicList static void insert(const labelList&, DynamicList<label>&); + template<class Type> static void insert(const List<Type>&, DynamicList<floatScalar>&); @@ -140,36 +141,6 @@ public: const vtkMesh& ); - //- Write generic GeometricFields - template<class Type, template<class> class PatchField, class GeoMesh> - static void write - ( - std::ostream&, - const bool binary, - const PtrList<GeometricField<Type, PatchField, GeoMesh>>&, - const vtkMesh& - ); - - //- Write generic dimensioned internal fields - template<class Type> - static void write - ( - std::ostream&, - const bool binary, - const PtrList<DimensionedField<Type, volMesh>>&, - const vtkMesh& - ); - - //- Interpolate and write volFields - template<class Type> - static void write - ( - std::ostream&, - const bool binary, - const volPointInterpolation&, - const PtrList<GeometricField<Type, fvPatchField, volMesh>>&, - const vtkMesh& - ); }; diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFunsTemplates.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFunsTemplates.C index a6778a461c3ff444769191591dc2648f019797a1..8929a1ad80eeab28e2509d1964b2f6d22d3a18a5 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFunsTemplates.C +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK/writeFunsTemplates.C @@ -43,22 +43,6 @@ void Foam::writeFuns::insert } -//// Store List (indexed through map) in dest -//template<class Type> -//void Foam::writeFuns::insert -//( -// const labelList& map, -// const List<Type>& source, -// DynamicList<floatScalar>& dest -//) -//{ -// forAll(map, i) -// { -// insert(source[map[i]], dest); -// } -//} - - template<class Type> void Foam::writeFuns::write ( @@ -159,53 +143,4 @@ void Foam::writeFuns::write } -template<class Type, template<class> class PatchField, class GeoMesh> -void Foam::writeFuns::write -( - std::ostream& os, - const bool binary, - const PtrList<GeometricField<Type, PatchField, GeoMesh>>& flds, - const vtkMesh& vMesh -) -{ - forAll(flds, i) - { - write(os, binary, flds[i].dimensionedInternalField(), vMesh); - } -} - - -template<class Type> -void Foam::writeFuns::write -( - std::ostream& os, - const bool binary, - const PtrList<DimensionedField<Type, volMesh>>& flds, - const vtkMesh& vMesh -) -{ - forAll(flds, i) - { - write(os, binary, flds[i], vMesh); - } -} - - -template<class Type> -void Foam::writeFuns::write -( - std::ostream& os, - const bool binary, - const volPointInterpolation& pInterp, - const PtrList<GeometricField<Type, fvPatchField, volMesh>>& flds, - const vtkMesh& vMesh -) -{ - forAll(flds, i) - { - write(os, binary, flds[i], pInterp.interpolate(flds[i])(), vMesh); - } -} - - // ************************************************************************* // diff --git a/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/vtkPVblockMesh/Make/options b/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/vtkPVblockMesh/Make/options index 295a695c7697732d1456da610f41c120c4afbe94..d07c5b2469270e9ad29f0da7b1977df93cdcc077 100644 --- a/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/vtkPVblockMesh/Make/options +++ b/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/vtkPVblockMesh/Make/options @@ -2,8 +2,8 @@ sinclude $(GENERAL_RULES)/paraview EXE_INC = \ ${c++LESSWARN} \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/mesh/blockMesh/lnInclude \ -I$(ParaView_INCLUDE_DIR) \ -I$(ParaView_INCLUDE_DIR)/vtkkwiml \ @@ -12,7 +12,6 @@ EXE_INC = \ LIB_LIBS = \ -lmeshTools \ - -lfileFormats \ -lblockMesh \ -L$(FOAM_LIBBIN) -lfoamPv-pv${ParaView_MAJOR} \ $(GLIBS) diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_exit_routine.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_exit_routine.H index b6fdf9c2c46d7b859f55aa7926a6e5a608aed0bb..277450fc47fae33c5dd30707d6d3191ae7a43f0d 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_exit_routine.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_exit_routine.H @@ -1,4 +1,3 @@ -// Do nothing void USERD_exit_routine ( void @@ -10,4 +9,3 @@ void USERD_exit_routine #endif } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_changing_geometry_status.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_changing_geometry_status.H index 2df1e6a7617c6538a944abd17bd7ba764551ad0e..f346f338bf8fc16e87291101255f729e9e3d0523 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_changing_geometry_status.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_changing_geometry_status.H @@ -8,4 +8,3 @@ int USERD_get_changing_geometry_status(void) // Choose the most general option return Z_CHANGE_CONN; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_descrip_lines.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_descrip_lines.H index 1076d2de38d8268db29aec707221e5da54daaf70..d10346eb940296cd81fa7c85a3a05d1f42710204 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_descrip_lines.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_descrip_lines.H @@ -29,4 +29,3 @@ int USERD_get_descrip_lines #endif return Z_OK; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_element_label_status.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_element_label_status.H index d65e7bad70f2d1261c65daa878cd5a7f9769d2ea..99b0ba28e1834cca22f394074eb2fe2a2c9158bb 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_element_label_status.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_element_label_status.H @@ -8,4 +8,3 @@ int USERD_get_element_label_status(void) #endif return TRUE; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_gold_variable_info.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_gold_variable_info.H index 1bf375cad76980e7dd69ff23f5f4648d7e649fb8..40c181015b1cc9d281bd647a62e70c2a32973a36 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_gold_variable_info.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_gold_variable_info.H @@ -118,6 +118,3 @@ int USERD_get_gold_variable_info return Z_OK; } - - - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_node_label_status.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_node_label_status.H index 65791f70f7256e5983fe4bdf6d36f71b54a04cc2..bd0d977c76b7e9f6706d64b51bb816703d703a7e 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_node_label_status.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_node_label_status.H @@ -9,4 +9,3 @@ int USERD_get_node_label_status(void) return TRUE; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_sol_times.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_sol_times.H index 223b0c2164af3f96c5764d33e0378bacae6c7948..8c71ca3b9abd7069f4d2dc5a25d827a186c30157 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_sol_times.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_sol_times.H @@ -41,4 +41,3 @@ int USERD_get_sol_times return Z_OK; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_var_value_at_specific.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_var_value_at_specific.H index d569726f6a30197d01ee47d6a63a9e2e6ab6a897..c7b5a92ae66e2222301aac6303546a65c5d998d2 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_var_value_at_specific.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_var_value_at_specific.H @@ -68,4 +68,3 @@ int USERD_get_var_value_at_specific #endif return Z_OK; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_structured_data.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_structured_data.H index c53db0cf87413fb893699cecf9ab07a69d6e30da..d8a4c90a19fe3d88d6fc2e88e86cee5dcee6c158 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_structured_data.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_structured_data.H @@ -59,4 +59,3 @@ int USERD_get_block_ghost_flags { return(Z_OK); } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianScalar.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianScalar.H index dd20ba0db8c765b6f5e85d3ff55cad9e755c60c6..b853ac7147bc70b3b404173f7cafe6f8983b9bac 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianScalar.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianScalar.H @@ -32,4 +32,3 @@ else // Info<< "getLagrangianScalar: nVar = " << nVar << endl; return Z_UNDEF; } - diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianVector.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianVector.H index 31e4bc729c93dfaa5d2fabe2229cacc3c783b097..de1d12aa376b51b1fbd67e4470b5fd1c517b10d4 100644 --- a/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianVector.H +++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/getLagrangianVector.H @@ -44,4 +44,3 @@ else // Info<< "getLagrangianVector: nVar = " << nVar << endl; return Z_UNDEF; } - diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options index b653926f93a610c3f724d7b7a4e3855f9492d145..806956cf5f13921e10d190655ac67b47c40b868f 100644 --- a/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options +++ b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options @@ -1,12 +1,11 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude EXE_LIBS = \ -lfiniteVolume \ -lmeshTools \ - -lfileFormats \ -lgenericPatchFields \ -llagrangian diff --git a/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H b/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H index 68229a7a93709ac4aecb6145abd5f5d10ef69ede..860d7c2eb9a93537bdbe608befd8f6390be94671 100644 --- a/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H +++ b/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H @@ -22,9 +22,9 @@ Random rndGen; - autoPtr<distributionModels::distributionModel> p + autoPtr<distributionModel> p ( - distributionModels::distributionModel::New + distributionModel::New ( pdfDictionary, rndGen @@ -45,4 +45,3 @@ } scalarField samples(nIntervals, 0); - diff --git a/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C b/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C index 851f018c8b58b28b49275b1d99a3f76df9f98d8f..4320ed70f3b786939f3e4b10001b48259f293f4e 100644 --- a/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C +++ b/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C @@ -241,14 +241,8 @@ tmp<volScalarField> calcNut ) ); - // Hack to correct nut - // Note: in previous versions of the code, nut was initialised on - // construction of the turbulence model. This is no longer the - // case for the Templated Turbulence models. The call to correct - // below will evolve the turbulence model equations and update nut, - // whereas only nut update is required. Need to revisit. -// turbulence->correct(); - turbulence->correctEnergyTransport(); + // Correct nut + turbulence->validate(); return tmp<volScalarField>(new volScalarField(turbulence->nut())); } diff --git a/applications/utilities/preProcessing/faceAgglomerate/Make/options b/applications/utilities/preProcessing/faceAgglomerate/Make/options index 3facebbe19894fa1896655542d5a5b41465f56bd..df6e1ebb3be4140ed3063ea6163f894d6fbbdbba 100644 --- a/applications/utilities/preProcessing/faceAgglomerate/Make/options +++ b/applications/utilities/preProcessing/faceAgglomerate/Make/options @@ -5,6 +5,4 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ - -lpairPatchAgglomeration \ - -ltriSurface \ - -lmeshTools + -lpairPatchAgglomeration diff --git a/applications/utilities/preProcessing/mapFieldsPar/MapVolFields.H b/applications/utilities/preProcessing/mapFieldsPar/MapVolFields.H index b6643179a1ae42f4ed699fe104b7e33aa0aa9f11..1624ed87ce8c71cce5ce25b26781eb9a8098ce22 100644 --- a/applications/utilities/preProcessing/mapFieldsPar/MapVolFields.H +++ b/applications/utilities/preProcessing/mapFieldsPar/MapVolFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,8 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld) if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { label nReq = Pstream::nRequests(); @@ -67,7 +67,7 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld) if ( Pstream::parRun() - && Pstream::defaultCommsType == Pstream::nonBlocking + && Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { Pstream::waitRequests(nReq); @@ -87,7 +87,7 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld) } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = fld.mesh().globalData().patchSchedule(); @@ -105,11 +105,11 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld) { if (patchSchedule[patchEvali].init) { - tgtField.initEvaluate(Pstream::scheduled); + tgtField.initEvaluate(Pstream::commsTypes::scheduled); } else { - tgtField.evaluate(Pstream::scheduled); + tgtField.evaluate(Pstream::commsTypes::scheduled); } } } diff --git a/applications/utilities/preProcessing/mapFieldsPar/mapFieldsPar.C b/applications/utilities/preProcessing/mapFieldsPar/mapFieldsPar.C index 43caab7dcc45054fc5764fdfce8b4f06cf1d2f42..d6df8f1a16829e63baecfaea3d9685605b8c6b53 100644 --- a/applications/utilities/preProcessing/mapFieldsPar/mapFieldsPar.C +++ b/applications/utilities/preProcessing/mapFieldsPar/mapFieldsPar.C @@ -229,7 +229,7 @@ int main(int argc, char *argv[]) word patchMapMethod; - if (meshToMesh::interpolationMethodNames_.found(mapMethod)) + if (meshToMesh::interpolationMethodNames_.hasEnum(mapMethod)) { // Lookup corresponding AMI method meshToMesh::interpolationMethod method = diff --git a/applications/utilities/preProcessing/viewFactorsGen/Make/options b/applications/utilities/preProcessing/viewFactorsGen/Make/options index b64f44712ce3d8a941f0fc07c80308046cb84c26..1eeef409c21ac5581b2653af0dccdd79034a967a 100644 --- a/applications/utilities/preProcessing/viewFactorsGen/Make/options +++ b/applications/utilities/preProcessing/viewFactorsGen/Make/options @@ -1,12 +1,11 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/parallel/distributed/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/parallel/distributed/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = \ -lfiniteVolume \ -lmeshTools \ - -ltriSurface \ -ldistributed \ -lradiationModels diff --git a/applications/utilities/preProcessing/wallFunctionTable/tabulatedWallFunction/tabulatedWallFunction/tabulatedWallFunction.C b/applications/utilities/preProcessing/wallFunctionTable/tabulatedWallFunction/tabulatedWallFunction/tabulatedWallFunction.C index 9079b119412527c7cabf490aab7baf8666b785ad..aa881bdc9d04f49a0ac53f49be8208bd8d1aef45 100644 --- a/applications/utilities/preProcessing/wallFunctionTable/tabulatedWallFunction/tabulatedWallFunction/tabulatedWallFunction.C +++ b/applications/utilities/preProcessing/wallFunctionTable/tabulatedWallFunction/tabulatedWallFunction/tabulatedWallFunction.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,7 @@ Foam::tabulatedWallFunctions::tabulatedWallFunction::tabulatedWallFunction : dict_(dict), mesh_(mesh), - coeffDict_(dict.subDict(name + "Coeffs")), + coeffDict_(dict.optionalSubDict(name + "Coeffs")), invertedTableName_(dict.lookup("invertedTableName")), invertedTable_(invertedTableName_, mesh_, dict, true) {} diff --git a/applications/utilities/surface/surfaceAdd/Make/options b/applications/utilities/surface/surfaceAdd/Make/options index c746f7e0f0d9b6567a3fbc608c1b2f785a1783ce..a504dd8617bfa4ff4d8fc1075d5d68d6db66db89 100644 --- a/applications/utilities/surface/surfaceAdd/Make/options +++ b/applications/utilities/surface/surfaceAdd/Make/options @@ -1,6 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude EXE_LIBS = \ - -ltriSurface \ - -lmeshTools + -lsurfMesh diff --git a/applications/utilities/surface/surfaceBooleanFeatures/Make/options b/applications/utilities/surface/surfaceBooleanFeatures/Make/options index f88af1c00adfae7163d3492010e8b088dab5cb55..7a1c792e54d36e3f2a5c8f37185c38b78aeb8633 100644 --- a/applications/utilities/surface/surfaceBooleanFeatures/Make/options +++ b/applications/utilities/surface/surfaceBooleanFeatures/Make/options @@ -1,7 +1,6 @@ EXE_NDEBUG = -DNDEBUG /* EXE_NDEBUG = -g -O0 -DFULLDEBUG */ - c++CGALWARN = -Wno-old-style-cast /*-- Define NO_CGAL to avoid using CGAL altogether */ @@ -16,13 +15,8 @@ EXE_INC = \ ${c++CGALWARN} \ $(COMP_FLAGS) \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lsurfMesh \ - -ltriSurface \ - -ledgeMesh \ -lmeshTools \ $(LINK_FLAGS) diff --git a/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options b/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options index bea50bf0febd441105771a3e4252fa2dae03f9f5..8ed525de9f38027a32f699dbcd70f2a2ea743f83 100644 --- a/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options +++ b/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options @@ -14,12 +14,10 @@ EXE_INC = \ ${c++CGALWARN} \ -I.. \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I/usr/include/Qt LIB_LIBS = \ -L$(CGAL_ARCH_PATH)/lib \ -L$(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C index 02d0b0c8e63b61eb06cc5fede66b19a621cf3ab4..52c5d9c08952acd1ae4079888483aa38d78d10d7 100644 --- a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C +++ b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C @@ -83,7 +83,7 @@ Description #include "edgeIntersections.H" #include "meshTools.H" #include "DynamicField.H" - +#include "Enum.H" #ifndef NO_CGAL @@ -99,7 +99,7 @@ typedef CGAL::AABB_face_graph_triangle_primitive typedef CGAL::AABB_traits<K, Primitive> Traits; typedef CGAL::AABB_tree<Traits> Tree; -typedef boost::optional<Tree::Intersection_and_primitive_id<Segment>::Type > +typedef boost::optional<Tree::Intersection_and_primitive_id<Segment>::Type> Segment_intersection; #endif // NO_CGAL @@ -477,7 +477,6 @@ label dupNonManifoldPoints(triSurface& s, labelList& pointMap) List<labelledTri> newFaces(s); label nNonManifold = 0; - forAll(pf, pointI) { const labelList& pFaces = pf[pointI]; @@ -1257,10 +1256,10 @@ autoPtr<extendedFeatureEdgeMesh> createEdgeMesh const triSurface& s1 = surf1; const triSurface& s2 = surf2; - forAllConstIter(labelPairLookup, inter.facePairToEdge(), iter) + forAllConstIters(inter.facePairToEdgeId(), iter) { - const label& cutEdgeI = iter(); const labelPair& facePair = iter.key(); + const label cutEdgeI = iter.object(); const edge& fE = inter.cutEdges()[cutEdgeI]; @@ -1515,8 +1514,8 @@ int main(int argc, char *argv[]) { argList::noParallel(); argList::validArgs.append("action"); - argList::validArgs.append("surface file"); - argList::validArgs.append("surface file"); + argList::validArgs.append("surfaceFile1"); + argList::validArgs.append("surfaceFile2"); argList::addBoolOption ( @@ -1554,24 +1553,30 @@ int main(int argc, char *argv[]) " 'mixed' (keep all)" ); + argList::addNote + ( + "Valid actions: \"intersection\", \"union\", \"difference\"" + ); + #include "setRootCase.H" #include "createTime.H" const word action(args[1]); - const HashTable<booleanSurface::booleanOpType> validActions + const Enum<booleanSurface::booleanOpType> validActions { - {"intersection", booleanSurface::INTERSECTION}, - {"union", booleanSurface::UNION}, - {"difference", booleanSurface::DIFFERENCE} + { booleanSurface::INTERSECTION, "intersection" }, + { booleanSurface::UNION, "union" }, + { booleanSurface::DIFFERENCE, "difference" } }; - if (!validActions.found(action)) + if (!validActions.hasEnum(action)) { FatalErrorInFunction << "Unsupported action " << action << endl - << "Supported actions:" << validActions.toc() << abort(FatalError); + << "Supported actions:" << validActions << nl + << abort(FatalError); } diff --git a/applications/utilities/surface/surfaceCheck/Make/options b/applications/utilities/surface/surfaceCheck/Make/options index 28fb9f2ccebe4e9e245cb1c66ea6e677d567751c..65185bc7f28fd61738c426d4e809c41a62834c6f 100644 --- a/applications/utilities/surface/surfaceCheck/Make/options +++ b/applications/utilities/surface/surfaceCheck/Make/options @@ -1,10 +1,8 @@ EXE_INC = \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ - -lsampling \ - -ltriSurface \ - -lmeshTools + -lmeshTools \ + -lsampling diff --git a/applications/utilities/surface/surfaceClean/Make/options b/applications/utilities/surface/surfaceClean/Make/options index 2db41f545a2fde53b3cf2d357bc790d25f6fbed5..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceClean/Make/options +++ b/applications/utilities/surface/surfaceClean/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceCoarsen/Make/options b/applications/utilities/surface/surfaceCoarsen/Make/options index 965309e4dabc4a225111b7ac1e5ff29b242e4f00..2ff4a1f22f78e48292325cce3f584670e14bf410 100644 --- a/applications/utilities/surface/surfaceCoarsen/Make/options +++ b/applications/utilities/surface/surfaceCoarsen/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ -Ibunnylod \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude EXE_LIBS = \ - -ltriSurface \ - -lmeshTools + -lsurfMesh diff --git a/applications/utilities/surface/surfaceConvert/Make/options b/applications/utilities/surface/surfaceConvert/Make/options index 4c41bc1a492720796cc6fec3cc42dbcc3ea89276..a504dd8617bfa4ff4d8fc1075d5d68d6db66db89 100644 --- a/applications/utilities/surface/surfaceConvert/Make/options +++ b/applications/utilities/surface/surfaceConvert/Make/options @@ -1,6 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lsurfMesh diff --git a/applications/utilities/surface/surfaceFeatureConvert/Make/options b/applications/utilities/surface/surfaceFeatureConvert/Make/options index e71834f99e7bda1e25a37bf5073892ce318fab8a..54c035b8f55d183c1ad02bc372398feceaf31718 100644 --- a/applications/utilities/surface/surfaceFeatureConvert/Make/options +++ b/applications/utilities/surface/surfaceFeatureConvert/Make/options @@ -1,7 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ledgeMesh + -lmeshTools diff --git a/applications/utilities/surface/surfaceFeatureExtract/Allwclean b/applications/utilities/surface/surfaceFeatureExtract/Allwclean new file mode 100755 index 0000000000000000000000000000000000000000..421b6686c439aef0005f94d37b19a0762e967f17 --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/Allwclean @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +wclean libso extractionMethod +wclean . + +#------------------------------------------------------------------------------ diff --git a/src/thermophysicalModels/properties/Allwmake b/applications/utilities/surface/surfaceFeatureExtract/Allwmake similarity index 61% rename from src/thermophysicalModels/properties/Allwmake rename to applications/utilities/surface/surfaceFeatureExtract/Allwmake index 5ad45938fc016e9fe7fd99ff6024fa4303639ae6..ee26d27fc3c219844019cbd6b11fafb065f749a4 100755 --- a/src/thermophysicalModels/properties/Allwmake +++ b/applications/utilities/surface/surfaceFeatureExtract/Allwmake @@ -4,9 +4,6 @@ cd ${0%/*} || exit 1 # Run from this directory # Parse arguments for library compilation . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments -wmake $targetType liquidProperties -wmake $targetType liquidMixtureProperties -wmake $targetType solidProperties -wmake $targetType solidMixtureProperties +(wmake libso extractionMethod && wmake) #------------------------------------------------------------------------------ diff --git a/applications/utilities/surface/surfaceFeatureExtract/Make/options b/applications/utilities/surface/surfaceFeatureExtract/Make/options index b733d5fde961f788415c0aa33e9e74bd1caa539d..b79e3e27c5011cc8a90123c73908a03a94879f22 100644 --- a/applications/utilities/surface/surfaceFeatureExtract/Make/options +++ b/applications/utilities/surface/surfaceFeatureExtract/Make/options @@ -1,13 +1,11 @@ EXE_INC = \ + -IextractionMethod/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -lsurfaceFeatureExtract \ -lmeshTools \ - -ledgeMesh \ - -ltriSurface \ -lsampling diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/files b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..8c9bb2766021991513fff145f77c160c03830c7c --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/files @@ -0,0 +1,7 @@ +method = . +$(method)/surfaceFeaturesExtraction.C +$(method)/extractFromFile.C +$(method)/extractFromNone.C +$(method)/extractFromSurface.C + +LIB = $(FOAM_LIBBIN)/libsurfaceFeatureExtract diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/options b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..a5976d53f84a0c0c47012d4f0dfa4ba80c3af152 --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/Make/options @@ -0,0 +1,7 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lmeshTools diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.C b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.C new file mode 100644 index 0000000000000000000000000000000000000000..7b2b0c8ad093242b74e03e0e705b2b2de9ea326c --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.C @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "extractFromFile.H" +#include "edgeMesh.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + addNamedToRunTimeSelectionTable + ( + method, + extractFromFile, + dictionary, + extractFromFile + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromFile::extractFromFile +( + const dictionary& dict +) +: + method() +{ + const dictionary& coeffDict = + dict.optionalSubDict("extractFromFileCoeffs"); + + coeffDict.lookup("featureEdgeFile") >> featureEdgeFile_; + coeffDict.readIfPresent("geometricTestOnly", geometricTestOnly_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromFile::~extractFromFile() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + +Foam::autoPtr<Foam::surfaceFeatures> +Foam::surfaceFeaturesExtraction::extractFromFile::features +( + const triSurface& surf +) const +{ + edgeMesh eMesh(featureEdgeFile_); + + // Sometimes duplicate edges are present. Remove them. + eMesh.mergeEdges(); + + Info<< nl << "Reading existing feature edges from file " + << featureEdgeFile_ << nl + << "Selecting edges based purely on geometric tests: " + << geometricTestOnly().asText() << endl; + + return autoPtr<surfaceFeatures> + ( + new surfaceFeatures + ( + surf, + eMesh.points(), + eMesh.edges(), + 1e-6, // mergeTol + geometricTestOnly() + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.H b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.H new file mode 100644 index 0000000000000000000000000000000000000000..8cd5cf4a97d17c54d305a4005d0c080404dac794 --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromFile.H @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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::surfaceFeaturesExtraction::extractFromFile + +Description + Run-time selectable surface feature extraction. + + Selectable as "extractFromFile". + Mandatory dictionary entries: "featureEdgeFile". + Optional dictionary entries: "geometricTestOnly". + +SourceFiles + extractFromFile.C + +\*---------------------------------------------------------------------------*/ + +#ifndef surfaceFeaturesExtraction_extractFromFile_H +#define surfaceFeaturesExtraction_extractFromFile_H + +#include "surfaceFeaturesExtraction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + +/*---------------------------------------------------------------------------*\ + Class surfaceFeaturesExtraction::extractFromFile Declaration +\*---------------------------------------------------------------------------*/ + +class extractFromFile +: + public method +{ + fileName featureEdgeFile_; + + +public: + + //- Construct from dictionary + extractFromFile(const dictionary& dict); + + //- Destructor + virtual ~extractFromFile(); + + //- Features loaded (extracted) from featureEdgeFile + virtual autoPtr<surfaceFeatures> features + ( + const triSurface& surf + ) const override; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFeaturesExtraction +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.C b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.C new file mode 100644 index 0000000000000000000000000000000000000000..45061472c462af117a88ff10e10bfe7466299b2d --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "extractFromNone.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + addNamedToRunTimeSelectionTable + ( + method, + extractFromNone, + dictionary, + none + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromNone::extractFromNone +( + const dictionary& dict +) +: + method() +{ + // A "noneCoeffs" sub-dictionary doesn't make much sense. + + dict.readIfPresent("includedAngle", includedAngle_); + dict.readIfPresent("geometricTestOnly", geometricTestOnly_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromNone::~extractFromNone() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::surfaceFeatures> +Foam::surfaceFeaturesExtraction::extractFromNone::features +( + const triSurface& surf +) const +{ + return autoPtr<surfaceFeatures>(new surfaceFeatures(surf)); +} + + +// ************************************************************************* // diff --git a/src/conversion/ccm/misc/mergePoints1.H b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.H similarity index 61% rename from src/conversion/ccm/misc/mergePoints1.H rename to applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.H index 85fc56210a289be0d488e89985d0edaab10e13dc..9cc9ebae6013c8766c2bfab4a8efaf411d36d181 100644 --- a/src/conversion/ccm/misc/mergePoints1.H +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromNone.H @@ -2,8 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -21,50 +21,64 @@ License 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::surfaceFeaturesExtraction::extractFromNone + Description - Merge points. See below. + Run-time selectable surface feature extraction - no extraction. + Primarily useful with self-intersection methods. + + Selectable as "none". + Optional dictionary entries: "includedAngle", "geometricTestOnly". SourceFiles - mergePoints.C + extractFromNone.C \*---------------------------------------------------------------------------*/ -#ifndef mergePoints1_H -#define mergePoints1_H +#ifndef surfaceFeaturesExtraction_extractFromNone_H +#define surfaceFeaturesExtraction_extractFromNone_H -#include "scalar.H" -#include "labelList.H" +#include "surfaceFeaturesExtraction.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +namespace surfaceFeaturesExtraction +{ /*---------------------------------------------------------------------------*\ - Function mergePoints Declaration + Class surfaceFeaturesExtraction::extractFromNone Declaration \*---------------------------------------------------------------------------*/ -//- Sorts and merges points. All points closer than/equal mergeTol get merged. -// Returns the number of unique points and a map from old to new. -//template<class Type, template<class> class ListType=UList> -template<class Type> -label mergePoints -( - const bool dummy, - const UIndirectList<Type>& points, - const scalar mergeTol, - const bool verbose, - labelList& pointMap, - const Type& origin = Type::zero -); +class extractFromNone +: + public method +{ + +public: + + //- Construct from dictionary + extractFromNone(const dictionary& dict); + + //- Destructor + virtual ~extractFromNone(); + + //- Extracted features from surface (no-op) + virtual autoPtr<surfaceFeatures> features + ( + const triSurface& surf + ) const override; + + +}; -} // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#ifdef NoRepository - #include "mergePoints1.C" -#endif +} // End namespace surfaceFeaturesExtraction +} // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.C b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.C new file mode 100644 index 0000000000000000000000000000000000000000..35b5dc0e3f0aef30332bc5aac0ae654ad2e8e74d --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "extractFromSurface.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + addNamedToRunTimeSelectionTable + ( + method, + extractFromSurface, + dictionary, + extractFromSurface + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromSurface::extractFromSurface +( + const dictionary& dict +) +: + method() +{ + const dictionary& coeffDict = + dict.optionalSubDict("extractFromSurfaceCoeffs"); + + coeffDict.lookup("includedAngle") >> includedAngle_; + coeffDict.readIfPresent("geometricTestOnly", geometricTestOnly_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::extractFromSurface::~extractFromSurface() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + +Foam::autoPtr<Foam::surfaceFeatures> +Foam::surfaceFeaturesExtraction::extractFromSurface::features +( + const triSurface& surf +) const +{ + Info<< nl << "Constructing feature set from included angle " + << includedAngle() << nl + << "Selecting edges based purely on geometric tests: " + << geometricTestOnly().asText() << endl; + + return autoPtr<surfaceFeatures> + ( + new surfaceFeatures + ( + surf, + includedAngle(), + 0, // minLen + 0, // minElems + geometricTestOnly() + ) + ); +} + + +// ************************************************************************* // diff --git a/src/conversion/ccm/misc/ListOps1.H b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.H similarity index 54% rename from src/conversion/ccm/misc/ListOps1.H rename to applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.H index 7e8490240c748b82493c871ad3b625225c118f32..83c2888d02f6b4227bf28c227cae6ddb6901ed7f 100644 --- a/src/conversion/ccm/misc/ListOps1.H +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/extractFromSurface.H @@ -2,8 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -21,64 +21,66 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -InNamspace - Foam +Class + Foam::surfaceFeaturesExtraction::extractFromSurface Description - Various functions to operate on Lists. + Run-time selectable surface feature extraction - extract from surface. + + Selectable as "extractFromSurface". + + Mandatory dictionary entries: "includedAngle". + Optional dictionary entries: "geometricTestOnly". SourceFiles - ListOps.C - ListOpsTemplates.C + extractFromSurface.C \*---------------------------------------------------------------------------*/ -#ifndef ListOps1_H -#define ListOps1_H +#ifndef surfaceFeaturesExtraction_extractFromSurface_H +#define surfaceFeaturesExtraction_extractFromSurface_H -#include "ListOps.H" +#include "surfaceFeaturesExtraction.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +namespace surfaceFeaturesExtraction +{ -//- Reorder the elements (indices, not values) of a list. -// Negative ListType elements are untouched, unless pruning has been selected. -// With pruning, these elements are skipped and the list shrinks accordingly. -template<class ListType> -ListType reorder -( - const labelUList& oldToNew, - const ListType&, - const bool prune -); - -//- Inplace reorder the elements of a list. -// Negative ListType elements are untouched, unless pruning has been selected. -// With pruning, these elements are skipped and the list shrinks accordingly. -template<class ListType> -void inplaceReorder -( - const labelUList& oldToNew, - ListType&, - const bool prune -); +/*---------------------------------------------------------------------------*\ + Class surfaceFeaturesExtraction::extractFromSurface Declaration +\*---------------------------------------------------------------------------*/ +class extractFromSurface +: + public method +{ +public: -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + //- Construct from dictionary + extractFromSurface(const dictionary& dict); + + //- Destructor + virtual ~extractFromSurface(); + + //- Features extracted from surface + virtual autoPtr<surfaceFeatures> features + ( + const triSurface& surf + ) const override; + +}; -} // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#ifdef NoRepository - #include "ListOps1Templates.C" -#endif +} // End namespace surfaceFeaturesExtraction +} // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* // - diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.C b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.C new file mode 100644 index 0000000000000000000000000000000000000000..2108e73a9df708bdecf14290ad73ca1f67613a25 --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.C @@ -0,0 +1,90 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "surfaceFeaturesExtraction.H" +#include "dictionary.H" +#include "ListOps.H" +#include "error.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + defineTypeName(method); + defineRunTimeSelectionTable + ( + method, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::method::method() +: + includedAngle_(0), + geometricTestOnly_(Switch::NO) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceFeaturesExtraction::method::~method() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::surfaceFeaturesExtraction::method> +Foam::surfaceFeaturesExtraction::method::New +( + const dictionary& dict +) +{ + const word methodName = dict.lookup("extractionMethod"); + + auto cstrIter = dictionaryConstructorTablePtr_->cfind(methodName); + + if (!cstrIter.found()) + { + FatalIOErrorInFunction + ( + dict + ) << "Unknown extractionMethod " << methodName << nl << nl + << "Valid extraction methods:" << nl + << flatOutput(dictionaryConstructorTablePtr_->sortedToc()) + << exit(FatalIOError); + } + + return autoPtr<method>(cstrIter.object()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.H b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.H new file mode 100644 index 0000000000000000000000000000000000000000..71c5ba5bc5a24dc0d1a43452f9f084855684631a --- /dev/null +++ b/applications/utilities/surface/surfaceFeatureExtract/extractionMethod/surfaceFeaturesExtraction.H @@ -0,0 +1,141 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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/>. + +Namespace + Foam::surfaceFeaturesExtraction + +Description + Namespace for run-time selectable surface feature extraction methods. + +Class + Foam::surfaceFeaturesExtraction::method + +Description + Abstract base for run-time selectable surface feature extraction methods. + +SourceFiles + surfaceFeaturesExtraction.C + +\*---------------------------------------------------------------------------*/ + +#ifndef surfaceFeaturesExtraction_method_H +#define surfaceFeaturesExtraction_method_H + +#include "surfaceFeatures.H" +#include "dictionary.H" +#include "Switch.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceFeaturesExtraction +{ + +/*---------------------------------------------------------------------------*\ + Class surfaceFeaturesExtraction::method Declaration +\*---------------------------------------------------------------------------*/ + +class method +{ +protected: + + scalar includedAngle_; + Switch geometricTestOnly_; + + //- Construct null + method(); + + +public: + + //- Runtime type information + ClassNameNoDebug("method"); + + + // Constructors + + //- Construct from dictionary + method(const dictionary& dict); + + + // Declare run-time constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + method, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Selectors + + //- Select constructed from dictionary + static autoPtr<method> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~method(); + + + // Member Functions + + //- The included angle, if set + inline scalar includedAngle() const + { + return includedAngle_; + } + + //- Use geometric test only + inline Switch geometricTestOnly() const + { + return geometricTestOnly_; + } + + //- Extracted features + virtual autoPtr<surfaceFeatures> features + ( + const triSurface& surf + ) const = 0; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFeaturesExtraction +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C index a91ed5140ad47b25c87dcc7ce48efd92051f311d..bcf8358a105009fcb5e900b15ff123b95696af6a 100644 --- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C +++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -29,866 +29,219 @@ Group Description Extracts and writes surface features to file. All but the basic feature - extraction is WIP. - - Curvature calculation is an implementation of the algorithm from: - - "Estimating Curvatures and their Derivatives on Triangle Meshes" - by S. Rusinkiewicz - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "Time.H" -#include "triSurface.H" -#include "surfaceFeatures.H" -#include "featureEdgeMesh.H" -#include "extendedFeatureEdgeMesh.H" -#include "treeBoundBox.H" -#include "meshTools.H" -#include "OFstream.H" -#include "triSurfaceMesh.H" -#include "vtkSurfaceWriter.H" -#include "triSurfaceFields.H" -#include "indexedOctree.H" -#include "treeDataEdge.H" -#include "unitConversion.H" -#include "plane.H" -#include "tensor2D.H" -#include "symmTensor2D.H" -#include "point.H" -#include "triadField.H" -#include "transform.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -scalar calcVertexNormalWeight -( - const triFace& f, - const label pI, - const vector& fN, - const pointField& points -) -{ - label index = findIndex(f, pI); - - if (index == -1) - { - FatalErrorInFunction - << "Point not in face" << abort(FatalError); - } - - const vector e1 = points[f[index]] - points[f[f.fcIndex(index)]]; - const vector e2 = points[f[index]] - points[f[f.rcIndex(index)]]; - - return mag(fN)/(magSqr(e1)*magSqr(e2) + VSMALL); -} - - -triadField calcVertexCoordSys -( - const triSurface& surf, - const vectorField& pointNormals -) -{ - const pointField& points = surf.points(); - const Map<label>& meshPointMap = surf.meshPointMap(); - - triadField pointCoordSys(points.size()); - - forAll(points, pI) - { - const point& pt = points[pI]; - const vector& normal = pointNormals[meshPointMap[pI]]; - - if (mag(normal) < SMALL) - { - pointCoordSys[meshPointMap[pI]] = triad::unset; - continue; - } - - plane p(pt, normal); - - // Pick arbitrary point in plane - vector dir1 = pt - p.somePointInPlane(1e-3); - dir1 /= mag(dir1); - - vector dir2 = dir1 ^ normal; - dir2 /= mag(dir2); - - pointCoordSys[meshPointMap[pI]] = triad(dir1, dir2, normal); - } - - return pointCoordSys; -} - - -vectorField calcVertexNormals(const triSurface& surf) -{ - // Weighted average of normals of faces attached to the vertex - // Weight = fA / (mag(e0)^2 * mag(e1)^2); - - Info<< "Calculating vertex normals" << endl; - - vectorField pointNormals(surf.nPoints(), Zero); - - const pointField& points = surf.points(); - const labelListList& pointFaces = surf.pointFaces(); - const labelList& meshPoints = surf.meshPoints(); - - forAll(pointFaces, pI) - { - const labelList& pFaces = pointFaces[pI]; - - forAll(pFaces, fI) - { - const label facei = pFaces[fI]; - const triFace& f = surf[facei]; - - vector fN = f.normal(points); - - scalar weight = calcVertexNormalWeight - ( - f, - meshPoints[pI], - fN, - points - ); - - pointNormals[pI] += weight*fN; - } - - pointNormals[pI] /= mag(pointNormals[pI]) + VSMALL; - } - - return pointNormals; -} - - -triSurfacePointScalarField calcCurvature -( - const word& name, - const Time& runTime, - const triSurface& surf, - const vectorField& pointNormals, - const triadField& pointCoordSys -) -{ - Info<< "Calculating face curvature" << endl; - - const pointField& points = surf.points(); - const labelList& meshPoints = surf.meshPoints(); - const Map<label>& meshPointMap = surf.meshPointMap(); - - triSurfacePointScalarField curvaturePointField - ( - IOobject - ( - name + ".curvature", - runTime.constant(), - "triSurface", - runTime, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surf, - dimLength, - scalarField(points.size(), 0.0) - ); - - List<symmTensor2D> pointFundamentalTensors - ( - points.size(), - symmTensor2D::zero - ); - - scalarList accumulatedWeights(points.size(), 0.0); - - forAll(surf, fI) - { - const triFace& f = surf[fI]; - const edgeList fEdges = f.edges(); - - // Calculate the edge vectors and the normal differences - vectorField edgeVectors(f.size(), Zero); - vectorField normalDifferences(f.size(), Zero); - - forAll(fEdges, feI) - { - const edge& e = fEdges[feI]; - - edgeVectors[feI] = e.vec(points); - normalDifferences[feI] = - pointNormals[meshPointMap[e[0]]] - - pointNormals[meshPointMap[e[1]]]; - } - - // Set up a local coordinate system for the face - const vector& e0 = edgeVectors[0]; - const vector eN = f.normal(points); - const vector e1 = (e0 ^ eN); - - if (magSqr(eN) < ROOTVSMALL) - { - continue; - } - - triad faceCoordSys(e0, e1, eN); - faceCoordSys.normalize(); - - // Construct the matrix to solve - scalarSymmetricSquareMatrix T(3, 0); - scalarDiagonalMatrix Z(3, 0); - - // Least Squares - for (label i = 0; i < 3; ++i) - { - scalar x = edgeVectors[i] & faceCoordSys[0]; - scalar y = edgeVectors[i] & faceCoordSys[1]; - - T(0, 0) += sqr(x); - T(1, 0) += x*y; - T(1, 1) += sqr(x) + sqr(y); - T(2, 1) += x*y; - T(2, 2) += sqr(y); - - scalar dndx = normalDifferences[i] & faceCoordSys[0]; - scalar dndy = normalDifferences[i] & faceCoordSys[1]; - - Z[0] += dndx*x; - Z[1] += dndx*y + dndy*x; - Z[2] += dndy*y; - } - - // Perform Cholesky decomposition and back substitution. - // Decomposed matrix is in T and solution is in Z. - LUsolve(T, Z); - symmTensor2D secondFundamentalTensor(Z[0], Z[1], Z[2]); - - // Loop over the face points adding the contribution of the face - // curvature to the points. - forAll(f, fpI) - { - const label patchPointIndex = meshPointMap[f[fpI]]; - - const triad& ptCoordSys = pointCoordSys[patchPointIndex]; - - if (!ptCoordSys.set()) - { - continue; - } - - // Rotate faceCoordSys to ptCoordSys - tensor rotTensor = rotationTensor(ptCoordSys[2], faceCoordSys[2]); - triad rotatedFaceCoordSys = rotTensor & tensor(faceCoordSys); - - // Project the face curvature onto the point plane - - vector2D cmp1 - ( - ptCoordSys[0] & rotatedFaceCoordSys[0], - ptCoordSys[0] & rotatedFaceCoordSys[1] - ); - vector2D cmp2 - ( - ptCoordSys[1] & rotatedFaceCoordSys[0], - ptCoordSys[1] & rotatedFaceCoordSys[1] - ); - - tensor2D projTensor - ( - cmp1, - cmp2 - ); - - symmTensor2D projectedFundamentalTensor - ( - projTensor.x() & (secondFundamentalTensor & projTensor.x()), - projTensor.x() & (secondFundamentalTensor & projTensor.y()), - projTensor.y() & (secondFundamentalTensor & projTensor.y()) - ); - - // Calculate weight - // TODO: Voronoi area weighting - scalar weight = calcVertexNormalWeight - ( - f, - meshPoints[patchPointIndex], - f.normal(points), - points - ); - - // Sum contribution of face to this point - pointFundamentalTensors[patchPointIndex] += - weight*projectedFundamentalTensor; - - accumulatedWeights[patchPointIndex] += weight; - } - - if (false) - { - Info<< "Points = " << points[f[0]] << " " - << points[f[1]] << " " - << points[f[2]] << endl; - Info<< "edgeVecs = " << edgeVectors[0] << " " - << edgeVectors[1] << " " - << edgeVectors[2] << endl; - Info<< "normDiff = " << normalDifferences[0] << " " - << normalDifferences[1] << " " - << normalDifferences[2] << endl; - Info<< "faceCoordSys = " << faceCoordSys << endl; - Info<< "T = " << T << endl; - Info<< "Z = " << Z << endl; - } - } - - forAll(curvaturePointField, pI) - { - pointFundamentalTensors[pI] /= (accumulatedWeights[pI] + SMALL); - - vector2D principalCurvatures = eigenValues(pointFundamentalTensors[pI]); - - //scalar curvature = - // (principalCurvatures[0] + principalCurvatures[1])/2; - scalar curvature = max - ( - mag(principalCurvatures[0]), - mag(principalCurvatures[1]) - ); - //scalar curvature = principalCurvatures[0]*principalCurvatures[1]; - - curvaturePointField[meshPoints[pI]] = curvature; - } - - return curvaturePointField; -} - - -bool edgesConnected(const edge& e1, const edge& e2) -{ - if - ( - e1.start() == e2.start() - || e1.start() == e2.end() - || e1.end() == e2.start() - || e1.end() == e2.end() - ) - { - return true; - } - - return false; -} - - -scalar calcProximityOfFeaturePoints -( - const List<pointIndexHit>& hitList, - const scalar defaultCellSize -) -{ - scalar minDist = defaultCellSize; - - for - ( - label hI1 = 0; - hI1 < hitList.size() - 1; - ++hI1 - ) - { - const pointIndexHit& pHit1 = hitList[hI1]; - - if (pHit1.hit()) - { - for - ( - label hI2 = hI1 + 1; - hI2 < hitList.size(); - ++hI2 - ) - { - const pointIndexHit& pHit2 = hitList[hI2]; - - if (pHit2.hit()) - { - scalar curDist = mag(pHit1.hitPoint() - pHit2.hitPoint()); - - minDist = min(curDist, minDist); - } - } - } - } - - return minDist; -} - - -scalar calcProximityOfFeatureEdges -( - const extendedFeatureEdgeMesh& efem, - const List<pointIndexHit>& hitList, - const scalar defaultCellSize -) -{ - scalar minDist = defaultCellSize; - - for - ( - label hI1 = 0; - hI1 < hitList.size() - 1; - ++hI1 - ) - { - const pointIndexHit& pHit1 = hitList[hI1]; - - if (pHit1.hit()) - { - const edge& e1 = efem.edges()[pHit1.index()]; - - for - ( - label hI2 = hI1 + 1; - hI2 < hitList.size(); - ++hI2 - ) - { - const pointIndexHit& pHit2 = hitList[hI2]; - - if (pHit2.hit()) - { - const edge& e2 = efem.edges()[pHit2.index()]; - - // Don't refine if the edges are connected to each other - if (!edgesConnected(e1, e2)) - { - scalar curDist = - mag(pHit1.hitPoint() - pHit2.hitPoint()); - - minDist = min(curDist, minDist); - } - } - } - } - } - - return minDist; -} - - -void dumpBox(const treeBoundBox& bb, const fileName& fName) -{ - OFstream str(fName); - - Info<< "Dumping bounding box " << bb << " as lines to obj file " - << str.name() << endl; - - - pointField boxPoints(bb.points()); - - forAll(boxPoints, i) - { - meshTools::writeOBJ(str, boxPoints[i]); - } - - forAll(treeBoundBox::edges, i) - { - const edge& e = treeBoundBox::edges[i]; - - str<< "l " << e[0]+1 << ' ' << e[1]+1 << nl; - } -} - - -// Deletes all edges inside/outside bounding box from set. -void deleteBox -( - const triSurface& surf, - const treeBoundBox& bb, - const bool removeInside, - List<surfaceFeatures::edgeStatus>& edgeStat -) -{ - forAll(edgeStat, edgeI) - { - const point eMid = surf.edges()[edgeI].centre(surf.localPoints()); - - if (removeInside ? bb.contains(eMid) : !bb.contains(eMid)) - { - edgeStat[edgeI] = surfaceFeatures::NONE; - } - } -} - - -bool onLine(const point& p, const linePointRef& line) -{ - const point& a = line.start(); - const point& b = line.end(); - - if - ( - ( p.x() < min(a.x(), b.x()) || p.x() > max(a.x(), b.x()) ) - || ( p.y() < min(a.y(), b.y()) || p.y() > max(a.y(), b.y()) ) - || ( p.z() < min(a.z(), b.z()) || p.z() > max(a.z(), b.z()) ) - ) - { - return false; - } - - return true; -} - - -// Deletes all edges inside/outside bounding box from set. -void deleteEdges -( - const triSurface& surf, - const plane& cutPlane, - List<surfaceFeatures::edgeStatus>& edgeStat -) -{ - const pointField& points = surf.points(); - const labelList& meshPoints = surf.meshPoints(); - - forAll(edgeStat, edgeI) + extraction is a work-in-progress. + + The extraction process is driven by the \a system/surfaceFeatureExtractDict + dictionary, but the \a -dict option can be used to define an alternative + location. + + The \a system/surfaceFeatureExtractDict dictionary contains entries + for each extraction process. + The name of the individual dictionary is used to load the input surface + (found under \a constant/triSurface) and also as the basename for the + output. + + If the \c surfaces entry is present in a sub-dictionary, it has absolute + precedence over a surface name deduced from the dictionary name. + If the dictionary name itself does not have an extension, the \c surfaces + entry becomes mandatory since in this case the dictionary name cannot + represent an input surface file (ie, there is no file extension). + The \c surfaces entry is a wordRe list, which allows loading and + combining of multiple surfaces. Any exactly specified surface names must + exist, but surfaces selected via regular expressions need not exist. + The selection mechanism preserves order and is without duplicates. + For example, + \verbatim + dictName { - const edge& e = surf.edges()[edgeI]; - const point& p0 = points[meshPoints[e.start()]]; - const point& p1 = points[meshPoints[e.end()]]; - const linePointRef line(p0, p1); - - // If edge does not intersect the plane, delete. - scalar intersect = cutPlane.lineIntersect(line); - - point featPoint = intersect * (p1 - p0) + p0; - - if (!onLine(featPoint, line)) - { - edgeStat[edgeI] = surfaceFeatures::NONE; - } - } -} - - -void drawHitProblem -( - label fI, - const triSurface& surf, - const pointField& start, - const pointField& faceCentres, - const pointField& end, - const List<pointIndexHit>& hitInfo -) -{ - Info<< nl << "# findLineAll did not hit its own face." - << nl << "# fI " << fI - << nl << "# start " << start[fI] - << nl << "# f centre " << faceCentres[fI] - << nl << "# end " << end[fI] - << nl << "# hitInfo " << hitInfo - << endl; - - meshTools::writeOBJ(Info, start[fI]); - meshTools::writeOBJ(Info, faceCentres[fI]); - meshTools::writeOBJ(Info, end[fI]); - - Info<< "l 1 2 3" << endl; - - meshTools::writeOBJ(Info, surf.points()[surf[fI][0]]); - meshTools::writeOBJ(Info, surf.points()[surf[fI][1]]); - meshTools::writeOBJ(Info, surf.points()[surf[fI][2]]); - - Info<< "f 4 5 6" << endl; - - forAll(hitInfo, hI) - { - label hFI = hitInfo[hI].index(); - - meshTools::writeOBJ(Info, surf.points()[surf[hFI][0]]); - meshTools::writeOBJ(Info, surf.points()[surf[hFI][1]]); - meshTools::writeOBJ(Info, surf.points()[surf[hFI][2]]); - - Info<< "f " - << 3*hI + 7 << " " - << 3*hI + 8 << " " - << 3*hI + 9 - << endl; - } -} - - -// Unmark non-manifold edges if individual triangles are not features -void unmarkBaffles -( - const triSurface& surf, - const scalar includedAngle, - List<surfaceFeatures::edgeStatus>& edgeStat -) -{ - scalar minCos = Foam::cos(degToRad(180.0 - includedAngle)); - - const labelListList& edgeFaces = surf.edgeFaces(); - - forAll(edgeFaces, edgeI) - { - const labelList& eFaces = edgeFaces[edgeI]; - - if (eFaces.size() > 2) - { - label i0 = eFaces[0]; - //const labelledTri& f0 = surf[i0]; - const Foam::vector& n0 = surf.faceNormals()[i0]; - - //Pout<< "edge:" << edgeI << " n0:" << n0 << endl; - - bool same = true; - - for (label i = 1; i < eFaces.size(); i++) - { - //const labelledTri& f = surf[i]; - const Foam::vector& n = surf.faceNormals()[eFaces[i]]; - - //Pout<< " mag(n&n0): " << mag(n&n0) << endl; - - if (mag(n&n0) < minCos) - { - same = false; - break; - } - } - - if (same) - { - edgeStat[edgeI] = surfaceFeatures::NONE; - } - } - } -} - - -//- Divide into multiple normal bins -// - return REGION if != 2 normals -// - return REGION if 2 normals that make feature angle -// - otherwise return NONE and set normals,bins -surfaceFeatures::edgeStatus checkFlatRegionEdge -( - const triSurface& surf, - const scalar tol, - const scalar includedAngle, - const label edgeI -) -{ - const edge& e = surf.edges()[edgeI]; - const labelList& eFaces = surf.edgeFaces()[edgeI]; - - // Bin according to normal - - DynamicList<Foam::vector> normals(2); - DynamicList<labelList> bins(2); - - forAll(eFaces, eFacei) - { - const Foam::vector& n = surf.faceNormals()[eFaces[eFacei]]; - - // Find the normal in normals - label index = -1; - forAll(normals, normalI) - { - if (mag(n&normals[normalI]) > (1-tol)) - { - index = normalI; - break; - } - } - - if (index != -1) - { - bins[index].append(eFacei); - } - else if (normals.size() >= 2) - { - // Would be third normal. Mark as feature. - //Pout<< "** at edge:" << surf.localPoints()[e[0]] - // << surf.localPoints()[e[1]] - // << " have normals:" << normals - // << " and " << n << endl; - return surfaceFeatures::REGION; - } - else - { - normals.append(n); - bins.append(labelList(1, eFacei)); - } - } - - - // Check resulting number of bins - if (bins.size() == 1) - { - // Note: should check here whether they are two sets of faces - // that are planar or indeed 4 faces al coming together at an edge. - //Pout<< "** at edge:" - // << surf.localPoints()[e[0]] - // << surf.localPoints()[e[1]] - // << " have single normal:" << normals[0] - // << endl; - return surfaceFeatures::NONE; - } - else - { - // Two bins. Check if normals make an angle - - //Pout<< "** at edge:" - // << surf.localPoints()[e[0]] - // << surf.localPoints()[e[1]] << nl - // << " normals:" << normals << nl - // << " bins :" << bins << nl - // << endl; - - if (includedAngle >= 0) - { - scalar minCos = Foam::cos(degToRad(180.0 - includedAngle)); - - forAll(eFaces, i) - { - const Foam::vector& ni = surf.faceNormals()[eFaces[i]]; - for (label j=i+1; j<eFaces.size(); j++) - { - const Foam::vector& nj = surf.faceNormals()[eFaces[j]]; - if (mag(ni & nj) < minCos) - { - //Pout<< "have sharp feature between normal:" << ni - // << " and " << nj << endl; - - // Is feature. Keep as region or convert to - // feature angle? For now keep as region. - return surfaceFeatures::REGION; - } - } - } - } - - - // So now we have two normals bins but need to make sure both - // bins have the same regions in it. - - // 1. store + or - region number depending - // on orientation of triangle in bins[0] - const labelList& bin0 = bins[0]; - labelList regionAndNormal(bin0.size()); - forAll(bin0, i) - { - const labelledTri& t = surf.localFaces()[eFaces[bin0[i]]]; - int dir = t.edgeDirection(e); - - if (dir > 0) - { - regionAndNormal[i] = t.region()+1; - } - else if (dir == 0) - { - FatalErrorInFunction - << exit(FatalError); - } - else - { - regionAndNormal[i] = -(t.region()+1); - } - } - - // 2. check against bin1 - const labelList& bin1 = bins[1]; - labelList regionAndNormal1(bin1.size()); - forAll(bin1, i) - { - const labelledTri& t = surf.localFaces()[eFaces[bin1[i]]]; - int dir = t.edgeDirection(e); - - label myRegionAndNormal; - if (dir > 0) - { - myRegionAndNormal = t.region()+1; - } - else - { - myRegionAndNormal = -(t.region()+1); - } - - regionAndNormal1[i] = myRegionAndNormal; + surfaces (surface1.stl "other.*" othersurf.obj); + ... + } + \endverbatim + + When loading surfaces, the points/faces/regions of each surface are + normally offset to create an aggregated surface. No merging of points + or faces is done. The optional entry \c loadingOption can be used to + adjust the treatment of the regions when loading single or multiple files, + with selections according to the Foam::triSurfaceLoader::loadingOption + enumeration. + \verbatim + dictName + { + // Optional treatment of surface regions when loading + // (single, file, offset, merge) + loadingOption file; + ... + } + \endverbatim + The \c loadingOption is primarily used in combination with the + \c intersectionMethod (specifically its \c region option). + The default \c loadingOption is normally \c offset, + but this changes to \c file if the \c intersectionMethod + \c region is being used. + + Once surfaces have been loaded, the first stage is to extract + features according to the specified \c extractionMethod with values + as per the following table: + \table + extractionMethod | Description + none | No feature extraction + extractFromFile | Load features from the file named in featureEdgeFile + extractFromSurface | Extract features from surface geometry + \endtable + + There are a few entries that influence the extraction behaviour: + \verbatim + // File to use for extractFromFile input + featureEdgeFile "FileName" + + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 120; + + // Do not mark region edges + geometricTestOnly yes; + \endverbatim + + This initial set of edges can be trimmed: + \verbatim + trimFeatures + { + // Remove features with fewer than the specified number of edges + minElem 0; + + // Remove features shorter than the specified cumulative length + minLen 0.0; + } + \endverbatim + + and subsetted + \verbatim + subsetFeatures + { + // Use a plane to select feature edges (normal)(basePoint) + // Only keep edges that intersect the plane + plane (1 0 0)(0 0 0); - label index = findIndex(regionAndNormal, -myRegionAndNormal); - if (index == -1) - { - // Not found. - //Pout<< "cannot find region " << myRegionAndNormal - // << " in regions " << regionAndNormal << endl; + // Select feature edges using a box // (minPt)(maxPt) + // Only keep edges inside the box: + insideBox (0 0 0)(1 1 1); - return surfaceFeatures::REGION; - } - } + // Only keep edges outside the box: + outsideBox (0 0 0)(1 1 1); - // Passed all checks, two normal bins with the same contents. - //Pout<< "regionAndNormal:" << regionAndNormal << endl; - //Pout<< "myRegionAndNormal:" << regionAndNormal1 << endl; + // Keep nonManifold edges (edges with >2 connected faces where + // the faces form more than two different normal planes) + nonManifoldEdges yes; - return surfaceFeatures::NONE; + // Keep open edges (edges with 1 connected face) + openEdges yes; } -} - + \endverbatim + + Subsequently, additional features can be added from another file: + \verbatim + addFeatures + { + // Add (without merging) another extendedFeatureEdgeMesh + name axZ.extendedFeatureEdgeMesh; + } + \endverbatim + + The intersectionMethod provides a final means of adding additional + features. These are loosely termed "self-intersection", since it + detects the face/face intersections of the loaded surface or surfaces. + + \table + intersectionMethod | Description + none | Do nothing + self | All face/face intersections + region | Limit face/face intersections to those between different regions. + \endtable + The optional \c tolerance tuning parameter is available for handling + the face/face intersections, but should normally not be touched. + + As well as the normal extendedFeatureEdgeMesh written, + other items can be selected with boolean switches: + + \table + Output option | Description + closeness | Output the closeness of surface elements to other surface elements. + curvature | Output surface curvature + featureProximity | Output the proximity of feature points and edges to another + writeObj | Write features to OBJ format for postprocessing + writeVTK | Write closeness/curvature/proximity fields as VTK for postprocessing + \endtable + +Note + Although surfaceFeatureExtract can do many things, there are still a fair + number of corner cases where it may not produce the desired result. +\*---------------------------------------------------------------------------*/ -void writeStats(const extendedFeatureEdgeMesh& fem, Ostream& os) -{ - os << " points : " << fem.points().size() << nl - << " of which" << nl - << " convex : " - << fem.concaveStart() << nl - << " concave : " - << (fem.mixedStart()-fem.concaveStart()) << nl - << " mixed : " - << (fem.nonFeatureStart()-fem.mixedStart()) << nl - << " non-feature : " - << (fem.points().size()-fem.nonFeatureStart()) << nl - << " edges : " << fem.edges().size() << nl - << " of which" << nl - << " external edges : " - << fem.internalStart() << nl - << " internal edges : " - << (fem.flatStart()- fem.internalStart()) << nl - << " flat edges : " - << (fem.openStart()- fem.flatStart()) << nl - << " open edges : " - << (fem.multipleStart()- fem.openStart()) << nl - << " multiply connected : " - << (fem.edges().size()- fem.multipleStart()) << endl; -} +#include "argList.H" +#include "Time.H" +#include "triSurface.H" +#include "triSurfaceTools.H" +#include "edgeMeshTools.H" +#include "surfaceFeaturesExtraction.H" +#include "surfaceIntersection.H" +#include "featureEdgeMesh.H" +#include "extendedFeatureEdgeMesh.H" +#include "treeBoundBox.H" +#include "meshTools.H" +#include "OBJstream.H" +#include "triSurfaceMesh.H" +#include "vtkSurfaceWriter.H" +#include "unitConversion.H" +#include "plane.H" +#include "point.H" +#include "triSurfaceLoader.H" +using namespace Foam; +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) { argList::addNote ( - "extract and write surface features to file" + "Extract and write surface features to file" ); argList::noParallel(); + argList::noFunctionObjects(); - #include "addDictOption.H" + argList::addOption + ( + "dict", + "file", + "read surfaceFeatureExtractDict from specified location" + ); #include "setRootCase.H" #include "createTime.H" + Info<< nl + << "Note: " + << "Feature line extraction only valid on closed manifold surfaces" + << nl << nl; + const word dictName("surfaceFeatureExtractDict"); #include "setSystemRunTimeDictionaryIO.H" Info<< "Reading " << dictName << nl << endl; - const IOdictionary dict(dictIO); - forAllConstIter(dictionary, dict, iter) + // Loader for available triSurface surface files + triSurfaceLoader loader(runTime); + + // Where to write VTK output files + const fileName vtkOutputDir = runTime.constantPath()/"triSurface"; + + forAllConstIters(dict, iter) { - if (!iter().isDict()) + if (!iter().isDict() || iter().keyword().isPattern()) { continue; } @@ -897,167 +250,170 @@ int main(int argc, char *argv[]) if (!surfaceDict.found("extractionMethod")) { + // Insist on an extractionMethod continue; } - const word extractionMethod = surfaceDict.lookup("extractionMethod"); + // The output name based in dictionary name (without extensions) + const word& dictName = iter().keyword(); + const word outputName = dictName.lessExt(); - const fileName surfFileName = iter().keyword(); - const fileName sFeatFileName = surfFileName.lessExt().name(); - - Info<< "Surface : " << surfFileName << nl << endl; - - const Switch writeVTK = - surfaceDict.lookupOrDefault<Switch>("writeVTK", "off"); - const Switch writeObj = - surfaceDict.lookupOrDefault<Switch>("writeObj", "off"); - - const Switch curvature = - surfaceDict.lookupOrDefault<Switch>("curvature", "off"); - const Switch featureProximity = - surfaceDict.lookupOrDefault<Switch>("featureProximity", "off"); - const Switch closeness = - surfaceDict.lookupOrDefault<Switch>("closeness", "off"); - - - Info<< nl << "Feature line extraction is only valid on closed manifold " - << "surfaces." << endl; - - // Read - // ~~~~ - - triSurface surf(runTime.constantPath()/"triSurface"/surfFileName); + autoPtr<surfaceFeaturesExtraction::method> extractor = + surfaceFeaturesExtraction::method::New + ( + surfaceDict + ); - Info<< "Statistics:" << endl; - surf.writeStats(Info); - Info<< endl; + // We don't needs the intersectionMethod yet, but can use it + // for setting a reasonable loading option + const surfaceIntersection::intersectionType selfIntersect = + surfaceIntersection::selfIntersectionNames.lookupOrDefault + ( + "intersectionMethod", + surfaceDict, + surfaceIntersection::NONE + ); - faceList faces(surf.size()); + const Switch writeObj = surfaceDict.lookupOrDefault<Switch> + ( + "writeObj", + Switch::OFF + ); + const Switch writeVTK = surfaceDict.lookupOrDefault<Switch> + ( + "writeVTK", + Switch::OFF + ); - forAll(surf, fI) + // The "surfaces" entry is normally optional, but make it mandatory + // if the dictionary name doesn't have an extension + // (ie, probably not a surface filename at all). + // If it is missing, this will fail nicely with an appropriate error + // message. + if (surfaceDict.found("surfaces") || !dictName.hasExt()) { - faces[fI] = surf[fI].triFaceFace(); + loader.select(wordReList(surfaceDict.lookup("surfaces"))); } - - - // Either construct features from surface & featureAngle or read set. - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - autoPtr<surfaceFeatures> set; - - scalar includedAngle = 0.0; - - if (extractionMethod == "extractFromFile") + else { - const dictionary& extractFromFileDict = - surfaceDict.subDict("extractFromFileCoeffs"); - - const fileName featureEdgeFile = - extractFromFileDict.lookup("featureEdgeFile"); - - const Switch geometricTestOnly = - extractFromFileDict.lookupOrDefault<Switch> - ( - "geometricTestOnly", - "no" - ); + loader.select(dictName); + } - edgeMesh eMesh(featureEdgeFile); + // DebugVar(loader.available()); + // DebugVar(outputName); - // Sometimes duplicate edges are present. Remove them. - eMesh.mergeEdges(); + if (loader.selected().empty()) + { + FatalErrorInFunction + << "No surfaces specified/found for entry: " + << dictName << exit(FatalError); + } - Info<< nl << "Reading existing feature edges from file " - << featureEdgeFile << nl - << "Selecting edges purely based on geometric tests: " - << geometricTestOnly.asText() << endl; + Info<< "Surfaces : "; + if (loader.selected().size() == 1) + { + Info<< loader.selected().first() << nl; + } + else + { + Info<< flatOutput(loader.selected()) << nl; + } + Info<< "Output : " << outputName << nl; - set.set + // Loading option - default depends on context + triSurfaceLoader::loadingOption loadingOption = + triSurfaceLoader::loadingOptionNames.lookupOrDefault ( - new surfaceFeatures + "loadingOption", + surfaceDict, ( - surf, - eMesh.points(), - eMesh.edges(), - 1e-6, - geometricTestOnly + selfIntersect == surfaceIntersection::SELF_REGION + ? triSurfaceLoader::FILE_REGION + : triSurfaceLoader::OFFSET_REGION ) ); - } - else if (extractionMethod == "extractFromSurface") + + Info<<"Load options : " + << triSurfaceLoader::loadingOptionNames[loadingOption] << nl + << "Write options:" + << " writeObj=" << writeObj + << " writeVTK=" << writeVTK << nl; + + // Load a single file, or load and combine multiple selected files + autoPtr<triSurface> surfPtr = loader.load(loadingOption); + if (!surfPtr.valid() || surfPtr().empty()) { - const dictionary& extractFromSurfaceDict = - surfaceDict.subDict("extractFromSurfaceCoeffs"); + FatalErrorInFunction + << "Problem loading surface(s) for entry: " + << dictName << exit(FatalError); + } - includedAngle = - readScalar(extractFromSurfaceDict.lookup("includedAngle")); + triSurface surf = surfPtr(); - const Switch geometricTestOnly = - extractFromSurfaceDict.lookupOrDefault<Switch> - ( - "geometricTestOnly", - "no" - ); + Info<< "NB: Feature line extraction is only valid on closed manifold " + << "surfaces." << nl; - Info<< nl - << "Constructing feature set from included angle " - << includedAngle << nl - << "Selecting edges purely based on geometric tests: " - << geometricTestOnly.asText() << endl; + Info<< nl + << "Statistics:" << nl; + surf.writeStats(Info); - set.set - ( - new surfaceFeatures - ( - surf, - includedAngle, - 0, - 0, - geometricTestOnly - ) - ); - } - else + // Need a copy as plain faces if outputting VTK format + faceList faces; + if (writeVTK) { - FatalErrorInFunction - << "No initial feature set. Provide either one" - << " of extractFromFile (to read existing set)" << nl - << " or extractFromSurface (to construct new set from angle)" - << exit(FatalError); + faces.setSize(surf.size()); + forAll(surf, fi) + { + faces[fi] = surf[fi].triFaceFace(); + } } + // + // Extract features using the preferred extraction method + // + autoPtr<surfaceFeatures> features = extractor().features(surf); // Trim set // ~~~~~~~~ + // Option: "trimFeatures" (dictionary) if (surfaceDict.isDict("trimFeatures")) { - dictionary trimDict = surfaceDict.subDict("trimFeatures"); - - scalar minLen = - trimDict.lookupOrAddDefault<scalar>("minLen", -GREAT); + const dictionary& trimDict = surfaceDict.subDict("trimFeatures"); - label minElem = trimDict.lookupOrAddDefault<label>("minElem", 0); + const scalar minLen = + trimDict.lookupOrDefault<scalar>("minLen", 0); + const label minElem = + trimDict.lookupOrDefault<label>("minElem", 0); // Trim away small groups of features - if (minElem > 0 || minLen > 0) + if (minLen > 0 || minElem > 0) { - Info<< "Removing features of length < " - << minLen << endl; - Info<< "Removing features with number of edges < " - << minElem << endl; + if (minLen > 0) + { + Info<< "Removing features of length < " + << minLen << endl; + } + if (minElem > 0) + { + Info<< "Removing features with number of edges < " + << minElem << endl; + } - set().trimFeatures(minLen, minElem, includedAngle); + features().trimFeatures + ( + minLen, minElem, extractor().includedAngle() + ); } } - // Subset // ~~~~~~ // Convert to marked edges, points - List<surfaceFeatures::edgeStatus> edgeStat(set().toStatus()); + List<surfaceFeatures::edgeStatus> edgeStat(features().toStatus()); + // Option: "subsetFeatures" (dictionary) if (surfaceDict.isDict("subsetFeatures")) { const dictionary& subsetDict = surfaceDict.subDict @@ -1065,118 +421,115 @@ int main(int argc, char *argv[]) "subsetFeatures" ); + // Suboption: "insideBox" if (subsetDict.found("insideBox")) { treeBoundBox bb(subsetDict.lookup("insideBox")()); - Info<< "Removing all edges outside bb " << bb << endl; - dumpBox(bb, "subsetBox.obj"); + Info<< "Subset edges inside box " << bb << endl; + features().subsetBox(edgeStat, bb); + + { + OBJstream os("subsetBox.obj"); + + Info<< "Dumping bounding box " << bb + << " as lines to obj file " + << os.name() << endl; - deleteBox(surf, bb, false, edgeStat); + os.write(bb); + } } + // Suboption: "outsideBox" else if (subsetDict.found("outsideBox")) { treeBoundBox bb(subsetDict.lookup("outsideBox")()); - Info<< "Removing all edges inside bb " << bb << endl; - dumpBox(bb, "deleteBox.obj"); + Info<< "Exclude edges outside box " << bb << endl; + features().excludeBox(edgeStat, bb); - deleteBox(surf, bb, true, edgeStat); - } + { + OBJstream os("deleteBox.obj"); + + Info<< "Dumping bounding box " << bb + << " as lines to obj file " + << os.name() << endl; - const Switch nonManifoldEdges = - subsetDict.lookupOrDefault<Switch>("nonManifoldEdges", "yes"); + os.write(bb); + } + } - if (!nonManifoldEdges) + // Suboption: "nonManifoldEdges" (false: remove non-manifold edges) + if (!subsetDict.lookupOrDefault<bool>("nonManifoldEdges", true)) { Info<< "Removing all non-manifold edges" << " (edges with > 2 connected faces) unless they" << " cross multiple regions" << endl; - forAll(edgeStat, edgeI) - { - const labelList& eFaces = surf.edgeFaces()[edgeI]; - - if - ( - eFaces.size() > 2 - && edgeStat[edgeI] == surfaceFeatures::REGION - && (eFaces.size() % 2) == 0 - ) - { - edgeStat[edgeI] = checkFlatRegionEdge - ( - surf, - 1e-5, //tol, - includedAngle, - edgeI - ); - } - } + features().checkFlatRegionEdge + ( + edgeStat, + 1e-5, // tol + extractor().includedAngle() + ); } - const Switch openEdges = - subsetDict.lookupOrDefault<Switch>("openEdges", "yes"); - - if (!openEdges) + // Suboption: "openEdges" (false: remove open edges) + if (!subsetDict.lookupOrDefault<bool>("openEdges", true)) { Info<< "Removing all open edges" << " (edges with 1 connected face)" << endl; - forAll(edgeStat, edgeI) - { - if (surf.edgeFaces()[edgeI].size() == 1) - { - edgeStat[edgeI] = surfaceFeatures::NONE; - } - } + features().excludeOpen(edgeStat); } + // Suboption: "plane" if (subsetDict.found("plane")) { plane cutPlane(subsetDict.lookup("plane")()); - deleteEdges(surf, cutPlane, edgeStat); + Info<< "Only include feature edges that intersect the plane" + << " with normal " << cutPlane.normal() + << " and base point " << cutPlane.refPoint() << endl; - Info<< "Only edges that intersect the plane with normal " - << cutPlane.normal() - << " and base point " << cutPlane.refPoint() - << " will be included as feature edges."<< endl; + features().subsetPlane(edgeStat, cutPlane); } } - surfaceFeatures newSet(surf); - newSet.setFromStatus(edgeStat, includedAngle); + newSet.setFromStatus(edgeStat, extractor().includedAngle()); - Info<< nl - << "Initial feature set:" << nl - << " feature points : " << newSet.featurePoints().size() << nl - << " feature edges : " << newSet.featureEdges().size() << nl - << " of which" << nl - << " region edges : " << newSet.nRegionEdges() << nl - << " external edges : " << newSet.nExternalEdges() << nl - << " internal edges : " << newSet.nInternalEdges() << nl - << endl; - - //if (writeObj) - //{ - // newSet.writeObj("final"); - //} + Info<< nl << "Initial "; + newSet.writeStats(Info); boolList surfBaffleRegions(surf.patches().size(), false); + if (surfaceDict.found("baffles")) + { + wordReList baffleSelect(surfaceDict.lookup("baffles")); - wordList surfBaffleNames; - surfaceDict.readIfPresent("baffles", surfBaffleNames); + wordList patchNames(surf.patches().size()); + forAll(surf.patches(), patchi) + { + patchNames[patchi] = surf.patches()[patchi].name(); + } - forAll(surf.patches(), pI) - { - const word& name = surf.patches()[pI].name(); + labelList indices = findStrings(baffleSelect, patchNames); + forAll(indices, patchi) + { + surfBaffleRegions[patchi] = true; + } - if (findIndex(surfBaffleNames, name) != -1) + if (indices.size()) { - Info<< "Adding baffle region " << name << endl; - surfBaffleRegions[pI] = true; + Info<< "Adding " << indices.size() << " baffle regions: ("; + + forAll(surfBaffleRegions, patchi) + { + if (surfBaffleRegions[patchi]) + { + Info<< ' ' << patchNames[patchi]; + } + } + Info<< " )" << nl << nl; } } @@ -1185,7 +538,7 @@ int main(int argc, char *argv[]) ( newSet, runTime, - sFeatFileName + ".extendedFeatureEdgeMesh", + outputName + ".extendedFeatureEdgeMesh", surfBaffleRegions ); @@ -1209,515 +562,190 @@ int main(int argc, char *argv[]) ) ); Info<< "Read " << addFeMesh.name() << nl; - writeStats(addFeMesh, Info); + edgeMeshTools::writeStats(Info, addFeMesh); feMesh.add(addFeMesh); } - - Info<< nl - << "Final feature set:" << nl; - writeStats(feMesh, Info); - - Info<< nl << "Writing extendedFeatureEdgeMesh to " - << feMesh.objectPath() << endl; - - mkDir(feMesh.path()); - - if (writeObj) - { - feMesh.writeObj(feMesh.path()/surfFileName.lessExt().name()); - } - - feMesh.write(); - - // Write a featureEdgeMesh for backwards compatibility - featureEdgeMesh bfeMesh - ( - IOobject - ( - surfFileName.lessExt().name() + ".eMesh", // name - runTime.constant(), // instance - "triSurface", - runTime, // registry - IOobject::NO_READ, - IOobject::AUTO_WRITE, - false - ), - feMesh.points(), - feMesh.edges() - ); - - Info<< nl << "Writing featureEdgeMesh to " - << bfeMesh.objectPath() << endl; - - bfeMesh.regIOobject::write(); - - // Find close features - - // // Dummy trim operation to mark features - // labelList featureEdgeIndexing = newSet.trimFeatures(-GREAT, 0); - - // scalarField surfacePtFeatureIndex(surf.points().size(), -1); - - // forAll(newSet.featureEdges(), eI) - // { - // const edge& e = surf.edges()[newSet.featureEdges()[eI]]; - - // surfacePtFeatureIndex[surf.meshPoints()[e.start()]] = - // featureEdgeIndexing[newSet.featureEdges()[eI]]; - - // surfacePtFeatureIndex[surf.meshPoints()[e.end()]] = - // featureEdgeIndexing[newSet.featureEdges()[eI]]; - // } - - // if (writeVTK) - // { - // vtkSurfaceWriter().write - // ( - // runTime.constant()/"triSurface", // outputDir - // sFeatFileName, // surfaceName - // surf.points(), - // faces, - // "surfacePtFeatureIndex", // fieldName - // surfacePtFeatureIndex, - // true, // isNodeValues - // true // verbose - // ); - // } - - // Random rndGen(343267); - - // treeBoundBox surfBB - // ( - // treeBoundBox(searchSurf.bounds()).extend(rndGen, 1e-4) - // ); - - // surfBB.min() -= Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - // surfBB.max() += Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - - // indexedOctree<treeDataEdge> ftEdTree - // ( - // treeDataEdge - // ( - // false, - // surf.edges(), - // surf.localPoints(), - // newSet.featureEdges() - // ), - // surfBB, - // 8, // maxLevel - // 10, // leafsize - // 3.0 // duplicity - // ); - - // labelList nearPoints = ftEdTree.findBox - // ( - // treeBoundBox - // ( - // sPt - featureSearchSpan*Foam::vector::one, - // sPt + featureSearchSpan*Foam::vector::one - // ) - // ); - - if (closeness) + if (selfIntersect != surfaceIntersection::NONE) { - Info<< nl << "Extracting internal and external closeness of " - << "surface." << endl; + triSurfaceSearch query(surf); + surfaceIntersection intersect(query, surfaceDict); + // Remove rounding noise - could make adjustable + intersect.mergePoints(10*SMALL); - triSurfaceMesh searchSurf + labelPair sizeInfo ( - IOobject - ( - sFeatFileName + ".closeness", - runTime.constant(), - "triSurface", - runTime, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surf + intersect.cutPoints().size(), + intersect.cutEdges().size() ); - - // Internal and external closeness - - // Prepare start and end points for intersection tests - - const vectorField& normals = searchSurf.faceNormals(); - - scalar span = searchSurf.bounds().mag(); - - scalar externalAngleTolerance = 10; - scalar externalToleranceCosAngle = - Foam::cos + if (intersect.cutEdges().size()) + { + extendedEdgeMesh addMesh ( - degToRad(180 - externalAngleTolerance) + intersect.cutPoints(), + intersect.cutEdges() ); - scalar internalAngleTolerance = 45; - scalar internalToleranceCosAngle = - Foam::cos - ( - degToRad(180 - internalAngleTolerance) - ); + feMesh.add(addMesh); - Info<< "externalToleranceCosAngle: " << externalToleranceCosAngle + sizeInfo[0] = addMesh.points().size(); + sizeInfo[1] = addMesh.edges().size(); + } + Info<< nl + << "intersection: " + << surfaceIntersection::selfIntersectionNames[selfIntersect] << nl - << "internalToleranceCosAngle: " << internalToleranceCosAngle - << endl; - - // Info<< "span " << span << endl; - - pointField start(searchSurf.faceCentres() - span*normals); - pointField end(searchSurf.faceCentres() + span*normals); - const pointField& faceCentres = searchSurf.faceCentres(); - - List<List<pointIndexHit>> allHitInfo; - - // Find all intersections (in order) - searchSurf.findLineAll(start, end, allHitInfo); - - scalarField internalCloseness(start.size(), GREAT); - scalarField externalCloseness(start.size(), GREAT); - - forAll(allHitInfo, fI) - { - const List<pointIndexHit>& hitInfo = allHitInfo[fI]; - - if (hitInfo.size() < 1) - { - drawHitProblem(fI, surf, start, faceCentres, end, hitInfo); + << " points : " << sizeInfo[0] << nl + << " edges : " << sizeInfo[1] << nl; + } - // FatalErrorInFunction - // << "findLineAll did not hit its own face." - // << exit(FatalError); - } - else if (hitInfo.size() == 1) - { - if (!hitInfo[0].hit()) - { - // FatalErrorInFunction - // << "findLineAll did not hit any face." - // << exit(FatalError); - } - else if (hitInfo[0].index() != fI) - { - drawHitProblem - ( - fI, - surf, - start, - faceCentres, - end, - hitInfo - ); - - // FatalErrorInFunction - // << "findLineAll did not hit its own face." - // << exit(FatalError); - } - } - else - { - label ownHitI = -1; + Info<< nl << "Final "; + edgeMeshTools::writeStats(Info, feMesh); - forAll(hitInfo, hI) - { - // Find the hit on the triangle that launched the ray + Info<< nl << "Writing extendedFeatureEdgeMesh to " + << feMesh.objectPath() << endl; - if (hitInfo[hI].index() == fI) - { - ownHitI = hI; + mkDir(feMesh.path()); - break; - } - } + if (writeObj) + { + feMesh.writeObj(feMesh.path()/outputName); + } - if (ownHitI < 0) - { - drawHitProblem - ( - fI, - surf, - start, - faceCentres, - end, - hitInfo - ); - - // FatalErrorInFunction - // << "findLineAll did not hit its own face." - // << exit(FatalError); - } - else if (ownHitI == 0) - { - // There are no internal hits, the first hit is the - // closest external hit - - if - ( - ( - normals[fI] - & normals[hitInfo[ownHitI + 1].index()] - ) - < externalToleranceCosAngle - ) - { - externalCloseness[fI] = - mag - ( - faceCentres[fI] - - hitInfo[ownHitI + 1].hitPoint() - ); - } - } - else if (ownHitI == hitInfo.size() - 1) - { - // There are no external hits, the last but one hit is - // the closest internal hit - - if - ( - ( - normals[fI] - & normals[hitInfo[ownHitI - 1].index()] - ) - < internalToleranceCosAngle - ) - { - internalCloseness[fI] = - mag - ( - faceCentres[fI] - - hitInfo[ownHitI - 1].hitPoint() - ); - } - } - else - { - if - ( - ( - normals[fI] - & normals[hitInfo[ownHitI + 1].index()] - ) - < externalToleranceCosAngle - ) - { - externalCloseness[fI] = - mag - ( - faceCentres[fI] - - hitInfo[ownHitI + 1].hitPoint() - ); - } - - if - ( - ( - normals[fI] - & normals[hitInfo[ownHitI - 1].index()] - ) - < internalToleranceCosAngle - ) - { - internalCloseness[fI] = - mag - ( - faceCentres[fI] - - hitInfo[ownHitI - 1].hitPoint() - ); - } - } - } - } + feMesh.write(); - triSurfaceScalarField internalClosenessField + // Write a featureEdgeMesh (.eMesh) for backwards compatibility + // Used by snappyHexMesh (JUN-2017) + if (true) + { + featureEdgeMesh bfeMesh ( IOobject ( - sFeatFileName + ".internalCloseness", - runTime.constant(), + outputName + ".eMesh", // name + runTime.constant(), // instance "triSurface", - runTime, + runTime, // registry IOobject::NO_READ, - IOobject::NO_WRITE + IOobject::AUTO_WRITE, + false ), - surf, - dimLength, - internalCloseness + feMesh.points(), + feMesh.edges() ); - internalClosenessField.write(); + Info<< nl << "Writing featureEdgeMesh to " + << bfeMesh.objectPath() << endl; - triSurfaceScalarField externalClosenessField - ( - IOobject + bfeMesh.regIOobject::write(); + } + + // Option: "closeness" + if (surfaceDict.lookupOrDefault<bool>("closeness", false)) + { + Pair<tmp<scalarField>> tcloseness = + triSurfaceTools::writeCloseness ( - sFeatFileName + ".externalCloseness", - runTime.constant(), - "triSurface", runTime, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surf, - dimLength, - externalCloseness - ); - - externalClosenessField.write(); + outputName, + surf, + 45, // internalAngleTolerance + 10 // externalAngleTolerance + ); if (writeVTK) { vtkSurfaceWriter().write ( - runTime.constantPath()/"triSurface",// outputDir - sFeatFileName, // surfaceName + vtkOutputDir, + outputName, meshedSurfRef ( surf.points(), faces ), "internalCloseness", // fieldName - internalCloseness, + tcloseness[0](), false, // isNodeValues true // verbose ); vtkSurfaceWriter().write ( - runTime.constantPath()/"triSurface",// outputDir - sFeatFileName, // surfaceName + vtkOutputDir, + outputName, meshedSurfRef ( surf.points(), faces ), "externalCloseness", // fieldName - externalCloseness, + tcloseness[1](), false, // isNodeValues true // verbose ); } } - - if (curvature) + // Option: "curvature" + if (surfaceDict.lookupOrDefault<bool>("curvature", false)) { - Info<< nl << "Extracting curvature of surface at the points." - << endl; - - vectorField pointNormals = calcVertexNormals(surf); - triadField pointCoordSys = calcVertexCoordSys(surf, pointNormals); - - triSurfacePointScalarField k = calcCurvature - ( - sFeatFileName, - runTime, - surf, - pointNormals, - pointCoordSys - ); - - k.write(); + tmp<scalarField> tcurvatureField = + triSurfaceTools::writeCurvature + ( + runTime, + outputName, + surf + ); if (writeVTK) { vtkSurfaceWriter().write ( - runTime.constantPath()/"triSurface",// outputDir - sFeatFileName, // surfaceName + vtkOutputDir, + outputName, meshedSurfRef ( surf.points(), faces ), "curvature", // fieldName - k, + tcurvatureField(), true, // isNodeValues true // verbose ); } } - - if (featureProximity) + // Option: "featureProximity" + if (surfaceDict.lookupOrDefault<bool>("featureProximity", false)) { - Info<< nl << "Extracting proximity of close feature points and " - << "edges to the surface" << endl; - - const scalar searchDistance = - readScalar(surfaceDict.lookup("maxFeatureProximity")); - - scalarField featureProximity(surf.size(), searchDistance); - - forAll(surf, fI) - { - const triPointRef& tri = surf[fI].tri(surf.points()); - const point& triCentre = tri.circumCentre(); - - const scalar radiusSqr = min - ( - sqr(4*tri.circumRadius()), - sqr(searchDistance) - ); - - List<pointIndexHit> hitList; - - feMesh.allNearestFeatureEdges(triCentre, radiusSqr, hitList); - - featureProximity[fI] = - calcProximityOfFeatureEdges - ( - feMesh, - hitList, - featureProximity[fI] - ); - - feMesh.allNearestFeaturePoints(triCentre, radiusSqr, hitList); - - featureProximity[fI] = - calcProximityOfFeaturePoints - ( - hitList, - featureProximity[fI] - ); - } - - triSurfaceScalarField featureProximityField - ( - IOobject + tmp<scalarField> tproximity = + edgeMeshTools::writeFeatureProximity ( - sFeatFileName + ".featureProximity", - runTime.constant(), - "triSurface", runTime, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surf, - dimLength, - featureProximity - ); - - featureProximityField.write(); + outputName, + feMesh, + surf, + readScalar(surfaceDict.lookup("maxFeatureProximity")) + ); if (writeVTK) { vtkSurfaceWriter().write ( - runTime.constantPath()/"triSurface",// outputDir - sFeatFileName, // surfaceName + vtkOutputDir, + outputName, meshedSurfRef ( surf.points(), faces ), "featureProximity", // fieldName - featureProximity, + tproximity(), false, // isNodeValues true // verbose ); diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict index d7565d5c327c6aa7ca57b40213d4895a266331d5..176a0e193842f6aba0610b97b3a4871bdf1548ae 100644 --- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict +++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict @@ -16,38 +16,60 @@ FoamFile surface1.stl { - // How to obtain raw features (extractFromFile || extractFromSurface) + // Extract raw features (none | extractFromFile | extractFromSurface) extractionMethod extractFromSurface; - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 120; - - // Do not mark region edges - geometricTestOnly yes; - } + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 120; + + // Do not mark region edges + geometricTestOnly yes; + + // Generate additional intersection features (none | self | region) + intersectionMethod none; + + // Tolerance for surface intersections + // tolerance 1e-3; + + // Output options: + + // Write features to obj format for postprocessing + writeObj yes; +} + + +// Self intersection (single or multiple surfaces). +// - Use 'surfaces' entry (a wordRe list) if it exists. +// - If the dictionary name does not have an extension, 'surfaces' is mandatory. +outputName1 +{ + extractionMethod none; - // Write options + surfaces (surface1.stl surface2.nas); - // Write features to obj format for postprocessing - writeObj yes; + // Generate additional intersection features (none | self | region) + intersectionMethod self; + + // Tolerance for surface intersections + // tolerance 1e-3; + + // Output options: + + // Write features to OBJ format for postprocessing + writeObj yes; } surface2.nas { - // How to obtain raw features (extractFromFile || extractFromSurface) + // Extract raw features (none | extractFromFile | extractFromSurface) extractionMethod extractFromFile; - extractFromFileCoeffs - { - // Load from an existing feature edge file - featureEdgeFile "constant/triSurface/featureEdges.nas"; - } + // Load from an existing feature edge file + featureEdgeFile "constant/triSurface/featureEdges.nas"; trimFeatures { @@ -60,57 +82,57 @@ surface2.nas subsetFeatures { - // Use a plane to select feature edges - // (normal)(basePoint) - // Keep only edges that intersect the plane will be included - plane (1 0 0)(0 0 0); - - // Select feature edges using a box - // (minPt)(maxPt) - // Keep edges inside the box: - insideBox (0 0 0)(1 1 1); - // Keep edges outside the box: - outsideBox (0 0 0)(1 1 1); + // Use a plane to select feature edges (normal)(basePoint) + // Only keep edges that intersect the plane + plane (1 0 0)(0 0 0); + + // Select feature edges using a box // (minPt)(maxPt) + // Only keep edges inside the box: + insideBox (0 0 0)(1 1 1); + + // Only keep edges outside the box: + outsideBox (0 0 0)(1 1 1); // Keep nonManifold edges (edges with >2 connected faces where // the faces form more than two different normal planes) - nonManifoldEdges yes; + nonManifoldEdges yes; // Keep open edges (edges with 1 connected face) - openEdges yes; + openEdges yes; } addFeatures { // Add (without merging) another extendedFeatureEdgeMesh - name axZ.extendedFeatureEdgeMesh; - - // Optionally flip features (invert all normals, making - // convex<->concave etc) - //flip false; + name axZ.extendedFeatureEdgeMesh; } - // Output the curvature of the surface - curvature no; - // Output the proximity of feature points and edges to each other - featureProximity no; + // Generate additional intersection features (none | self | region) + intersectionMethod none; + + // Tolerance for surface intersections + // tolerance 1e-3; + + // Output options: + + // Output the closeness of surface elements to other surface elements. + closeness no; - // The maximum search distance to use when looking for other feature - // points and edges - maxFeatureProximity 1; + // Output surface curvature + curvature no; - // Out put the closeness of surface elements to other surface elements. - closeness no; + // Output the proximity of feature points and edges to another + featureProximity no; - // Write options + // The maximum search distance when checking feature proximity + maxFeatureProximity 1; - // Write features to obj format for postprocessing - writeObj yes; + // Write features to OBJ format for postprocessing + writeObj no; - // Write surface proximity and curvature fields to vtk format - // for postprocessing - writeVTK no; + // Write closeness/curvature/proximity fields as VTK for postprocessing + writeVTK no; } diff --git a/applications/utilities/surface/surfaceHookUp/Make/options b/applications/utilities/surface/surfaceHookUp/Make/options index db53089d48087fcbd6df6c333a0527abbfea4609..edc787aeae9f09fd0325d3b7c2a694c32c01d9c8 100644 --- a/applications/utilities/surface/surfaceHookUp/Make/options +++ b/applications/utilities/surface/surfaceHookUp/Make/options @@ -1,9 +1,7 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -lfileFormats \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceInertia/Make/options b/applications/utilities/surface/surfaceInertia/Make/options index 9f08e8d2a80f6f1fb269c1815170453ae49cf783..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceInertia/Make/options +++ b/applications/utilities/surface/surfaceInertia/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceInflate/Make/options b/applications/utilities/surface/surfaceInflate/Make/options index dd995740b3776afc860cfd784c0625fad0a86d86..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceInflate/Make/options +++ b/applications/utilities/surface/surfaceInflate/Make/options @@ -1,9 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -ltriSurface \ - -lsurfMesh \ -lmeshTools diff --git a/applications/utilities/surface/surfaceLambdaMuSmooth/Make/options b/applications/utilities/surface/surfaceLambdaMuSmooth/Make/options index c35bf55e3948e0b85483c88e0d482b56349147bc..5ae72ebd31bdf7500846ee0dca7a4c123ff4fb43 100644 --- a/applications/utilities/surface/surfaceLambdaMuSmooth/Make/options +++ b/applications/utilities/surface/surfaceLambdaMuSmooth/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -ledgeMesh \ - -lsurfMesh + -lsurfMesh \ + -lmeshTools diff --git a/applications/utilities/surface/surfaceMeshConvertTesting/Make/options b/applications/utilities/surface/surfaceMeshConvertTesting/Make/options index 3b91e457ea3c734c71ad0a6d8d26f457c5433728..a504dd8617bfa4ff4d8fc1075d5d68d6db66db89 100644 --- a/applications/utilities/surface/surfaceMeshConvertTesting/Make/options +++ b/applications/utilities/surface/surfaceMeshConvertTesting/Make/options @@ -1,5 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude -EXE_LIBS = -ltriSurface -lsurfMesh +EXE_LIBS = \ + -lsurfMesh diff --git a/applications/utilities/surface/surfaceOrient/Make/options b/applications/utilities/surface/surfaceOrient/Make/options index 2db41f545a2fde53b3cf2d357bc790d25f6fbed5..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceOrient/Make/options +++ b/applications/utilities/surface/surfaceOrient/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfacePatch/Make/options b/applications/utilities/surface/surfacePatch/Make/options index a8173dc04565dcd2835eafe4e6cc2610ff729c71..5319623bf1969c33d72a41f278f25e7fc439e6fa 100644 --- a/applications/utilities/surface/surfacePatch/Make/options +++ b/applications/utilities/surface/surfacePatch/Make/options @@ -1,10 +1,8 @@ EXE_INC = \ -IsearchableSurfaceModifier \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude - EXE_LIBS = \ - -ltriSurface \ -lmeshTools diff --git a/applications/utilities/surface/surfacePointMerge/Make/options b/applications/utilities/surface/surfacePointMerge/Make/options index 9f08e8d2a80f6f1fb269c1815170453ae49cf783..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfacePointMerge/Make/options +++ b/applications/utilities/surface/surfacePointMerge/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceRedistributePar/Make/options b/applications/utilities/surface/surfaceRedistributePar/Make/options index d836881301c692a5747929349d88ed55c2c79c5d..452e1e204fe91deef602dcf38962b6e8ad006f23 100644 --- a/applications/utilities/surface/surfaceRedistributePar/Make/options +++ b/applications/utilities/surface/surfaceRedistributePar/Make/options @@ -1,12 +1,11 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ -I$(LIB_SRC)/parallel/decompose/decompose/lnInclude \ -I$(LIB_SRC)/parallel/distributed/lnInclude EXE_LIBS = \ - -ldistributed \ -lmeshTools \ - -ltriSurface \ + -ldistributed \ -ldecompose diff --git a/applications/utilities/surface/surfaceRefineRedGreen/Make/options b/applications/utilities/surface/surfaceRefineRedGreen/Make/options index 9f08e8d2a80f6f1fb269c1815170453ae49cf783..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceRefineRedGreen/Make/options +++ b/applications/utilities/surface/surfaceRefineRedGreen/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceSplitByPatch/Make/options b/applications/utilities/surface/surfaceSplitByPatch/Make/options index 717768279dbbc37b2243e516b0c63c5b0cf9a3e7..a504dd8617bfa4ff4d8fc1075d5d68d6db66db89 100644 --- a/applications/utilities/surface/surfaceSplitByPatch/Make/options +++ b/applications/utilities/surface/surfaceSplitByPatch/Make/options @@ -1,7 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface - + -lsurfMesh diff --git a/applications/utilities/surface/surfaceSplitByTopology/Make/options b/applications/utilities/surface/surfaceSplitByTopology/Make/options index 717768279dbbc37b2243e516b0c63c5b0cf9a3e7..a504dd8617bfa4ff4d8fc1075d5d68d6db66db89 100644 --- a/applications/utilities/surface/surfaceSplitByTopology/Make/options +++ b/applications/utilities/surface/surfaceSplitByTopology/Make/options @@ -1,7 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface - + -lsurfMesh diff --git a/applications/utilities/surface/surfaceSplitNonManifolds/Make/options b/applications/utilities/surface/surfaceSplitNonManifolds/Make/options index 9f08e8d2a80f6f1fb269c1815170453ae49cf783..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceSplitNonManifolds/Make/options +++ b/applications/utilities/surface/surfaceSplitNonManifolds/Make/options @@ -1,7 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface + -lmeshTools diff --git a/applications/utilities/surface/surfaceSplitNonManifolds/surfaceSplitNonManifolds.C b/applications/utilities/surface/surfaceSplitNonManifolds/surfaceSplitNonManifolds.C index 65dd086cd3a2665d9fba0e8d8857fc73295afc3f..47a83a09f22bc38056af5b69e53a0d8e4bfb5e83 100644 --- a/applications/utilities/surface/surfaceSplitNonManifolds/surfaceSplitNonManifolds.C +++ b/applications/utilities/surface/surfaceSplitNonManifolds/surfaceSplitNonManifolds.C @@ -129,8 +129,7 @@ void dumpFaces const Map<label>& connectedFaces ) { - Info<< "Dumping connectedFaces as Lightwave .obj file to " << fName - << "\nThis can be visualized with e.g. javaview (www.javaview.de)\n\n"; + Info<< "Dumping connectedFaces as .obj file to " << fName << nl; OFstream os(fName); diff --git a/applications/utilities/surface/surfaceSubset/Make/options b/applications/utilities/surface/surfaceSubset/Make/options index f535c206fc2ad048d51180a11bca2586071a2ce5..d5ff5b3e40787cf8ae9a0246db862fcd133b2116 100644 --- a/applications/utilities/surface/surfaceSubset/Make/options +++ b/applications/utilities/surface/surfaceSubset/Make/options @@ -1,8 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lmeshTools \ - -ltriSurface - + -lmeshTools diff --git a/applications/utilities/surface/surfaceToPatch/Make/options b/applications/utilities/surface/surfaceToPatch/Make/options index 6b0ab4880ef451278b36b9337b35bb8368a0c725..87038840ec65f5265753abf9f6eedef8cbd28a69 100644 --- a/applications/utilities/surface/surfaceToPatch/Make/options +++ b/applications/utilities/surface/surfaceToPatch/Make/options @@ -1,10 +1,8 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude - EXE_LIBS = \ - -ltriSurface \ -lmeshTools \ -ldynamicMesh diff --git a/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C b/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C index 35f89607fb7248992ef7fc7c8be75319b742426b..cff9efb9461da1c88b1bf23d527322bcb7ff78f3 100644 --- a/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C +++ b/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -108,28 +108,59 @@ int main(int argc, char *argv[]) scalar stoicO2 = n + m/4.0; - scalar stoicN2 = (0.79/0.21)*(n + m/4.0); + scalar stoicN2 = (0.79/0.21)*stoicO2; scalar stoicCO2 = n; scalar stoicH2O = m/2.0; - thermo fuel + thermo FUEL ( "fuel", thermo(thermoData.subDict(fuelName)) ); + Info<< "fuel " << FUEL << ';' << endl; + FUEL *= FUEL.W(); + + thermo O2 + ( + "O2", + thermo(thermoData.subDict("O2")) + ); + O2 *= O2.W(); + + thermo N2 + ( + "N2", + thermo(thermoData.subDict("N2")) + ); + N2 *= N2.W(); + + thermo CO2 + ( + "CO2", + thermo(thermoData.subDict("CO2")) + ); + CO2 *= CO2.W(); + + thermo H2O + ( + "H2O", + thermo(thermoData.subDict("H2O")) + ); + H2O *= H2O.W(); thermo oxidant ( "oxidant", - stoicO2*thermo(thermoData.subDict("O2")) - + stoicN2*thermo(thermoData.subDict("N2")) + stoicO2*O2 + + stoicN2*N2 ); + Info<< "oxidant " << (1/oxidant.Y())*oxidant << ';' << endl; dimensionedScalar stoichiometricAirFuelMassRatio ( "stoichiometricAirFuelMassRatio", dimless, - (oxidant.W()*oxidant.nMoles())/fuel.W() + oxidant.Y()/FUEL.W() ); Info<< "stoichiometricAirFuelMassRatio " @@ -149,49 +180,34 @@ int main(int argc, char *argv[]) scalar ores = max(1.0/equiv - 1.0, 0.0); scalar fburnt = 1.0 - fres; - thermo fuel - ( - "fuel", - thermo(thermoData.subDict(fuelName)) - ); - Info<< "fuel " << fuel << ';' << endl; - - thermo oxidant - ( - "oxidant", - o2*thermo(thermoData.subDict("O2")) - + n2*thermo(thermoData.subDict("N2")) - ); - Info<< "oxidant " << (1/oxidant.nMoles())*oxidant << ';' << endl; - thermo reactants ( "reactants", - fuel + oxidant + FUEL + (1.0/equiv)*oxidant ); - Info<< "reactants " << (1/reactants.nMoles())*reactants << ';' << endl; + Info<< "reactants " << (1/reactants.Y())*reactants << ';' << endl; thermo burntProducts ( "burntProducts", - + (n2 - (0.79/0.21)*ores*stoicO2)*thermo(thermoData.subDict("N2")) - + fburnt*stoicCO2*thermo(thermoData.subDict("CO2")) - + fburnt*stoicH2O*thermo(thermoData.subDict("H2O")) + + (n2 - (0.79/0.21)*ores*stoicO2)*N2 + + fburnt*stoicCO2*CO2 + + fburnt*stoicH2O*H2O ); Info<< "burntProducts " - << (1/burntProducts.nMoles())*burntProducts << ';' << endl; + << (1/burntProducts.Y())*burntProducts << ';' << endl; thermo products ( "products", - fres*fuel - + n2*thermo(thermoData.subDict("N2")) - + fburnt*stoicCO2*thermo(thermoData.subDict("CO2")) - + fburnt*stoicH2O*thermo(thermoData.subDict("H2O")) - + ores*stoicO2*thermo(thermoData.subDict("O2")) + fres*FUEL + + n2*N2 + + fburnt*stoicCO2*CO2 + + fburnt*stoicH2O*H2O + + ores*stoicO2*O2 ); - Info<< "products " << (1/products.nMoles())*products << ';' << endl; + Info<< "products " << (1/products.Y())*products << ';' << endl; scalar Tad = products.THa(reactants.Ha(P, T0), P, 1000.0); Info<< "Tad = " << Tad << nl << endl; diff --git a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C index f9d7f29a5bfc864bafbbb67889a5eba44ca45e95..4ae601829e8730ea0a298e42d4ef5fc7fc09edbe 100644 --- a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C +++ b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,6 +45,9 @@ using namespace Foam; int main(int argc, char *argv[]) { + // Increase the precision of the output for JANAF coefficients + Ostream::defaultPrecision(10); + argList::addNote ( "Converts CHEMKINIII thermodynamics and reaction data files into\n" diff --git a/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C b/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C index f00066d0c9aa726e351712d6519b9e18936fbebe..bbc5029e6aec7f4fb68daf2f1a99b13907cf85c1 100644 --- a/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C +++ b/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -83,52 +83,44 @@ int main(int argc, char *argv[]) - scalar P = 1e5; - scalar T = 3000.0; + const scalar P = 1e5; + const scalar T = 3000.0; + + // Oxidant (mole-based) + thermo O2(thermoData.subDict("O2")); O2 *= O2.W(); + thermo N2(thermoData.subDict("N2")); N2 *= N2.W(); + + // Intermediates (mole-based) + thermo H2(thermoData.subDict("H2")); H2 *= H2.W(); + thermo OH(thermoData.subDict("OH")); OH *= OH.W(); + thermo H(thermoData.subDict("H")); H *= H.W(); + thermo O(thermoData.subDict("O")); O *= O.W(); + + // Products (mole-based) + thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W(); + thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W(); + thermo CO(thermoData.subDict("CO")); CO *= CO.W(); SLPtrList<thermo> EQreactions; EQreactions.append ( - new thermo - ( - thermo(thermoData.subDict("CO2")) - == - thermo(thermoData.subDict("CO")) - + 0.5*thermo(thermoData.subDict("O2")) - ) + new thermo(CO2 == CO + 0.5*O2) ); EQreactions.append ( - new thermo - ( - thermo(thermoData.subDict("O2")) - == - 2.0*thermo(thermoData.subDict("O")) - ) + new thermo(O2 == 2*O) ); EQreactions.append ( - new thermo - ( - thermo(thermoData.subDict("H2O")) - == - thermo(thermoData.subDict("H2")) - + 0.5*thermo(thermoData.subDict("O2")) - ) + new thermo(H2O == H2 + 0.5*O2) ); EQreactions.append ( - new thermo - ( - thermo(thermoData.subDict("H2O")) - == - thermo(thermoData.subDict("H")) - + thermo(thermoData.subDict("OH")) - ) + new thermo(H2O == H + OH) ); diff --git a/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C b/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C index c246c1516fb144363da06fe6ea9d828dd48b2c4c..0e26784285baa371268f32a4d15775782c06d723 100644 --- a/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C +++ b/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -112,25 +112,27 @@ int main(int argc, char *argv[]) Info<< nl << "Reading thermodynamic data for relevant species" << nl << endl; - // Reactants - thermo FUEL(thermoData.subDict(fuelName)); - thermo O2(thermoData.subDict("O2")); - thermo N2(thermoData.subDict("N2")); + // Reactants (mole-based) + thermo FUEL(thermoData.subDict(fuelName)); FUEL *= FUEL.W(); - // Products - thermo CO2(thermoData.subDict("CO2")); - thermo H2O(thermoData.subDict("H2O")); + // Oxidant (mole-based) + thermo O2(thermoData.subDict("O2")); O2 *= O2.W(); + thermo N2(thermoData.subDict("N2")); N2 *= N2.W(); - // Product fragments - thermo CO(thermoData.subDict("CO")); - thermo H2(thermoData.subDict("H2")); + // Intermediates (mole-based) + thermo H2(thermoData.subDict("H2")); H2 *= H2.W(); + + // Products (mole-based) + thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W(); + thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W(); + thermo CO(thermoData.subDict("CO")); CO *= CO.W(); // Product dissociation reactions thermo CO2BreakUp ( - CO2 == CO + 0.5* O2 + CO2 == CO + 0.5*O2 ); thermo H2OBreakUp @@ -157,7 +159,7 @@ int main(int argc, char *argv[]) ( "stoichiometricAirFuelMassRatio", dimless, - (oxidant.W()*oxidant.nMoles())/FUEL.W() + oxidant.Y()/FUEL.W() ); Info<< "stoichiometricAirFuelMassRatio " @@ -221,7 +223,6 @@ int main(int argc, char *argv[]) // Iteration loop for adiabatic flame temperature for (int j=0; j<20; j++) { - if (j > 0) { co = co2* diff --git a/bin/foamCreateVideo b/bin/foamCreateVideo index a204d7cdbc81286e78bd4652c41c9a6bd56c565b..d86f22576374e67fedd555cf4495ee284913625c 100755 --- a/bin/foamCreateVideo +++ b/bin/foamCreateVideo @@ -122,7 +122,7 @@ if [ "$FMT" = "webm" ] ; then if command -v avconv >/dev/null 2>&1 ; then echo "Creating image with avconv..." avconv \ - -r $FPS \ + -framerate $FPS \ $START_NUMBER \ -i ${DIR}/${IMAGE}.%04d.png \ -c:v libvpx -crf 15 -b:v 1M \ @@ -134,7 +134,7 @@ else if command -v avconv >/dev/null 2>&1 ; then echo "Creating image with avconv..." avconv \ - -r $FPS \ + -framerate $FPS \ $START_NUMBER \ -i ${DIR}/${IMAGE}.%04d.png \ -c:v libx264 -pix_fmt yuv420p \ diff --git a/bin/foamGraphExecTime b/bin/foamGraphExecTime index 73bd8d56334f9d235c85151e3edb87aef36d1247..5bacabe4a13a5b8395cda628894a120471f27729 100755 --- a/bin/foamGraphExecTime +++ b/bin/foamGraphExecTime @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -29,7 +29,7 @@ # Deprecated script extract the 'ExecutionTime' for each time-step from a # log file for graphing. # -# Superceded by the more general foamLog script. +# Superseded by the more general foamLog script. #------------------------------------------------------------------------------ Script=${0##*/} diff --git a/bin/foamGraphResKE b/bin/foamGraphResKE index 57e936b457ef04f24ea182919f1e77e69acb1197..e023c71090e00a066741491107257efee607f6eb 100755 --- a/bin/foamGraphResKE +++ b/bin/foamGraphResKE @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -29,7 +29,7 @@ # Deprecated script extract initial turbulence residuals for each time-step # from a log file for graphing. # -# Superceded by the more general foamLog script. +# Superseded by the more general foamLog script. #------------------------------------------------------------------------------ Script=${0##*/} diff --git a/bin/foamGraphResUVWP b/bin/foamGraphResUVWP index 580db29f763969a61b7d046f2fc7c6340e5440c5..8f8fcaccd3e2d97045c0c4484524746153ae73c3 100755 --- a/bin/foamGraphResUVWP +++ b/bin/foamGraphResUVWP @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -29,7 +29,7 @@ # Deprecated script extract initial velocity and pressure residuals for each # time-step from a log file for graphing. # -# Superceded by the more general foamLog script. +# Superseded by the more general foamLog script. #------------------------------------------------------------------------------ Script=${0##*/} diff --git a/bin/foamNewApp b/bin/foamNewApp index b2f664817bd735b665cb66db8da25bfd3834431c..e960ea0b73722576062f4f25f68fdd61e83abc55 100755 --- a/bin/foamNewApp +++ b/bin/foamNewApp @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -62,9 +62,12 @@ esac [ -d "$1" ] && usage "$1 directory already exists, aborting..." NAME=$1 +YEAR=$(date +%Y) echo "Creating application code directory $NAME" && mkdir $NAME -sed "s#NAME#${NAME}#g" ${DIR}/app.C > $NAME/$NAME.C +sed -e "s#NAME#${NAME}#g" \ + -e "s#YEAR#${YEAR}#g" \ + ${DIR}/app.C > $NAME/$NAME.C echo "Creating Make subdirectory" && mkdir $NAME/Make sed "s#NAME#${NAME}#g" ${DIR}/Make/files > $NAME/Make/files diff --git a/bin/foamNewBC b/bin/foamNewBC index 26ac4fcc91ec5cd2d58e8646431ef4c650be6e54..ceac666502c3982cb8cb65ed7df802bd148433ef 100755 --- a/bin/foamNewBC +++ b/bin/foamNewBC @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -134,6 +134,7 @@ FVPATCHF=fvPatch$(cap $FIELD) CLASS=$NAME$(cap $FVPATCHF) PARENT=$BASE$(cap $FVPATCHF) CONSTRUCT=$(echo $CLASS | sed 's/<Type>//g') +YEAR=$(date +%Y) # Create some example values for the Description n=0 @@ -155,6 +156,7 @@ do -e "s#NAME#${NAME}#g" \ -e "s#BASE#${BASE}#g" \ -e "s#CONSTRUCT#${CONSTRUCT}#g" \ + -e "s#YEAR#${YEAR}#g" \ -e "s#CLASS#${CLASS}#g" \ -e "s#FIELD#${FIELD}#g" \ -e "s#FVPATCHF#${FVPATCHF}#g" \ diff --git a/bin/foamNewFunctionObject b/bin/foamNewFunctionObject index a2f5d2bf20a8b3002e4e323d19c3a4e0a44eee0b..24455375724ae919dc8b46cde5ea79c93ab79469 100755 --- a/bin/foamNewFunctionObject +++ b/bin/foamNewFunctionObject @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -66,12 +66,15 @@ esac [ -d "$1" ] && usage "$1 directory already exists, aborting..." NAME=$1 +YEAR=$(date +%Y) echo "Creating function object code directory $NAME" && mkdir $NAME for F in $(ls ${DIR}/*.*) do FILE=$(basename $F | sed "s#FUNCTIONOBJECT#${NAME}#g") - sed "s#FUNCTIONOBJECT#${NAME}#g" ${F} > ${NAME}/${FILE} + sed -e "s#FUNCTIONOBJECT#${NAME}#g" \ + -e "s#YEAR#${YEAR}#g" \ + ${F} > ${NAME}/${FILE} done echo "Creating Make subdirectory" && mkdir $NAME/Make diff --git a/bin/stressComponents b/bin/stressComponents new file mode 100755 index 0000000000000000000000000000000000000000..45888e25642d33181be9529b506023fd2dfb153d --- /dev/null +++ b/bin/stressComponents @@ -0,0 +1,39 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2016-2017 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/>. +# +# Script +# stressComponents +# +# Description +# Script to suggest using the new "-postProcess" solver option. +# +#------------------------------------------------------------------------------ +Script=${0##*/} + +echo $Script "has been superseded by the -postProcess solver option:" +echo "<solverName> -funcs '(R components(turbulenceProperties:R))'" +echo "e.g." +echo "simpleFoam -postProcess -funcs '(R components(turbulenceProperties:R))'" + +#------------------------------------------------------------------------------ diff --git a/bin/wallGradU b/bin/wallGradU new file mode 100755 index 0000000000000000000000000000000000000000..c44ed73ff828dfae7396938d1672ecd73665d9d2 --- /dev/null +++ b/bin/wallGradU @@ -0,0 +1,37 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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/>. +# +# Script +# wallGradU +# +# Description +# Script to suggest using the new "postProcess" utility. +# +#------------------------------------------------------------------------------ +Script=${0##*/} + +echo $Script "has been superseded by the postProcess utility:" +echo " postProcess -func 'grad(U)'" + +#------------------------------------------------------------------------------ diff --git a/bin/wdot b/bin/wdot new file mode 100755 index 0000000000000000000000000000000000000000..d569cbfe6f5b3ffb7422f380c54fd4d88cc8687f --- /dev/null +++ b/bin/wdot @@ -0,0 +1,37 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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/>. +# +# Script +# wdot +# +# Description +# Script to suggest using the new "postProcess" utility. +# +#------------------------------------------------------------------------------ +Script=${0##*/} + +echo $Script "has been superseded by the postProcess utility:" +echo "postProcess -func XiReactionRate" + +#------------------------------------------------------------------------------ diff --git a/etc/caseDicts/postProcessing/forces/forceCoeffs.cfg b/etc/caseDicts/postProcessing/forces/forceCoeffs.cfg index fe068107c73e45545fc88ffa4226ca8c0a9ae092..d6003adbe1f51e564b0107824b8331db79dd8379 100644 --- a/etc/caseDicts/postProcessing/forces/forceCoeffs.cfg +++ b/etc/caseDicts/postProcessing/forces/forceCoeffs.cfg @@ -9,6 +9,5 @@ #includeEtc "caseDicts/postProcessing/forces/forces.cfg" type forceCoeffs; -rhoInf 1; // Redundant for incompressible // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible b/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible index 429e70d6e848c062dcf1a963b32f7639179cb1ab..00b81861a1e9071366c07d4face31272e449c005 100644 --- a/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible +++ b/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible @@ -25,6 +25,6 @@ dragDir (1 0 0); CofR (0 0 0); pitchAxis (0 1 0); -#includeEtc "caseDicts/postProcessing/forces/forceCoeffsCompressible.cfg" +#includeEtc "caseDicts/postProcessing/forces/forceCoeffs.cfg" // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible b/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible index 6e6e5bf6c31321c428e36115e15d1c441236df81..2a8b99f56179fc557977d5a0e45992ad90073a18 100644 --- a/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible +++ b/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible @@ -24,6 +24,6 @@ dragDir (1 0 0); CofR (0 0 0); pitchAxis (0 1 0); -#includeEtc "caseDicts/postProcessing/forces/forceCoeffs.cfg" +#includeEtc "caseDicts/postProcessing/forces/forceCoeffsIncompressible.cfg" // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible.cfg b/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible.cfg similarity index 90% rename from etc/caseDicts/postProcessing/forces/forceCoeffsCompressible.cfg rename to etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible.cfg index 7a14f0b994d1b1995e6682b75e0025b0225beaa6..512781c44c3f12fb7dbc612845033eb8e7176d95 100644 --- a/etc/caseDicts/postProcessing/forces/forceCoeffsCompressible.cfg +++ b/etc/caseDicts/postProcessing/forces/forceCoeffsIncompressible.cfg @@ -8,4 +8,7 @@ #includeEtc "caseDicts/postProcessing/forces/forceCoeffs.cfg" +rho rhoInf; +rhoInf 1; // Redundant, but currently read in + // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forces.cfg b/etc/caseDicts/postProcessing/forces/forces.cfg index 70ec555ff0b1e997d67f17eed22ca059f357ff4d..6094cf30dea040c0a0a31fb938c2087159916fd7 100644 --- a/etc/caseDicts/postProcessing/forces/forces.cfg +++ b/etc/caseDicts/postProcessing/forces/forces.cfg @@ -12,7 +12,6 @@ libs ("libforces.so"); writeControl timeStep; writeInterval 1; -rho rhoInf; // Incompressible solver log off; // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forcesCompressible b/etc/caseDicts/postProcessing/forces/forcesCompressible index 6ee0057ace57d89a504321c160671aa98dcc071b..c8b892bd695c5d7cfd47d0b7000081e383574ac3 100644 --- a/etc/caseDicts/postProcessing/forces/forcesCompressible +++ b/etc/caseDicts/postProcessing/forces/forcesCompressible @@ -16,6 +16,6 @@ patches (patch1 patch2); CofR (0 0 0); pitchAxis (0 1 0); -#includeEtc "caseDicts/postProcessing/forces/forcesCompressible.cfg" +#includeEtc "caseDicts/postProcessing/forces/forces.cfg" // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/forces/forcesIncompressible b/etc/caseDicts/postProcessing/forces/forcesIncompressible index 92e202856bd90d881aed3fb8f403457524882c27..1cf8fcb9e4aeeb08a549a5461a5bd7b3a83a72de 100644 --- a/etc/caseDicts/postProcessing/forces/forcesIncompressible +++ b/etc/caseDicts/postProcessing/forces/forcesIncompressible @@ -11,7 +11,7 @@ Description \*---------------------------------------------------------------------------*/ -#includeEtc "caseDicts/postProcessing/forces/forces.cfg" +#includeEtc "caseDicts/postProcessing/forces/forcesIncompressible.cfg" rhoInf 1.225; // Fluid density patches (patch1 patch2); diff --git a/etc/caseDicts/postProcessing/forces/forcesCompressible.cfg b/etc/caseDicts/postProcessing/forces/forcesIncompressible.cfg similarity index 95% rename from etc/caseDicts/postProcessing/forces/forcesCompressible.cfg rename to etc/caseDicts/postProcessing/forces/forcesIncompressible.cfg index 75043239c6e6dffe801151bef8b5a36cbeffb486..98d5b241d5f13962c56eb4732dd38953277efb2e 100644 --- a/etc/caseDicts/postProcessing/forces/forcesCompressible.cfg +++ b/etc/caseDicts/postProcessing/forces/forcesIncompressible.cfg @@ -8,6 +8,6 @@ #includeEtc "caseDicts/postProcessing/forces/forces.cfg" -rhoInf 1; // Redundant +rho rhoInf; // ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/lagrangian/dsmcFields b/etc/caseDicts/postProcessing/lagrangian/dsmcFields new file mode 100644 index 0000000000000000000000000000000000000000..9bf6e369d851fcd52c7bd72c79a79d866de228be --- /dev/null +++ b/etc/caseDicts/postProcessing/lagrangian/dsmcFields @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Web: www.OpenFOAM.com + \\/ M anipulation | +------------------------------------------------------------------------------- +Description + Calculate intensive fields: + - UMean + - translationalT + - internalT + - overallT + from averaged extensive fields from a DSMC calculation. + +\*---------------------------------------------------------------------------*/ + +type dsmcFields; +libs ("liblagrangianFunctionObjects.so"); + +fields (rhoNMean rhoMMean momentumMean linearKEMean internalEMean + iDofMean fDMean); + +executeControl writeTime; +writeControl writeTime; + +// ************************************************************************* // diff --git a/etc/caseDicts/postProcessing/visualization/streamlines.cfg b/etc/caseDicts/postProcessing/visualization/streamlines.cfg index 64d4bd474c692aff84e1204d00a4a97583c7ec87..10dc9dd144a98c2609c655cfeaa6da760784cf31 100644 --- a/etc/caseDicts/postProcessing/visualization/streamlines.cfg +++ b/etc/caseDicts/postProcessing/visualization/streamlines.cfg @@ -19,8 +19,8 @@ lifeTime 10000; nSubCycle 5; cloudName particleTracks; -seedSampleSet uniform; -uniformCoeffs + +seedSampleSet { type uniform; axis x; diff --git a/etc/caseDicts/postProcessing/visualization/surfaces.cfg b/etc/caseDicts/postProcessing/visualization/surfaces.cfg index 6209a274c8b1c27e58bc57db4d2df4bdcae01605..c1cd42faf42db9e4f4a32b37e0db51e94695743f 100644 --- a/etc/caseDicts/postProcessing/visualization/surfaces.cfg +++ b/etc/caseDicts/postProcessing/visualization/surfaces.cfg @@ -33,7 +33,7 @@ cuttingPlane isosurface { - type isoSurface; + type isoSurfaceCell; interpolate true; } diff --git a/etc/codeTemplates/BC/BC.C b/etc/codeTemplates/BC/BC.C index ced40005b3acdda5540ca51d9f210052f8c437a5..d31c281a5f97bddc6ac6f1629450adfb0de0a9ef 100644 --- a/etc/codeTemplates/BC/BC.C +++ b/etc/codeTemplates/BC/BC.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/BC/BC.H b/etc/codeTemplates/BC/BC.H index c878d68d9d43bbbfa07d1766002108c8179bc5b6..72f66462f648c9d158c54a91ccb3493f3bfc8132 100644 --- a/etc/codeTemplates/BC/BC.H +++ b/etc/codeTemplates/BC/BC.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/BC/BCs.C b/etc/codeTemplates/BC/BCs.C index a0b084933ad755952b65d1e4b605a5794593ee7f..b8b4642918c2beae74fa3a7dce9f503b96ec2ca5 100644 --- a/etc/codeTemplates/BC/BCs.C +++ b/etc/codeTemplates/BC/BCs.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/BC/BCs.H b/etc/codeTemplates/BC/BCs.H index bbd112ed9d13febf74db55eef3b213e61ff5edaf..f32d209bbeaa13e0190d5df27c64844e492274c7 100644 --- a/etc/codeTemplates/BC/BCs.H +++ b/etc/codeTemplates/BC/BCs.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/BC/BCsFwd.H b/etc/codeTemplates/BC/BCsFwd.H index 4c600dd7eb09b54e6521dcd9af40e38aeb9083d1..2aeabb56ff13cb890f101e41fc6c511078d63523 100644 --- a/etc/codeTemplates/BC/BCsFwd.H +++ b/etc/codeTemplates/BC/BCsFwd.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/app/app.C b/etc/codeTemplates/app/app.C index 2ed97537f6bb8e5d96bce5383a60651f50a1f09a..0b765eb1e20acaf1566d3eb00225bec1fd7b1b9d 100644 --- a/etc/codeTemplates/app/app.C +++ b/etc/codeTemplates/app/app.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/codeStreamTemplate.C b/etc/codeTemplates/dynamicCode/codeStreamTemplate.C index 5d69d9963294eebbced2b28a454b477698e3e3d1..58671e58769002ad583e14f4fc3baa05f236544b 100644 --- a/etc/codeTemplates/dynamicCode/codeStreamTemplate.C +++ b/etc/codeTemplates/dynamicCode/codeStreamTemplate.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) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C index 6cb5cc0d7bd2a76df41adb9b9204d09a8f1fc448..046412bd683df6b40795206009e50637460f94b4 100644 --- a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C +++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H index a30727ccb6d4a3cbc170247aa805be7fd43a583b..a25fe3d30dd9a833f949122e66deb2d5e0755f0e 100644 --- a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H +++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C index c7f442f03a64c9a4fa4bd919b91a061c2de547ec..e0a3943411fbc6279733292859d01cf68cb14336 100644 --- a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C +++ b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.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) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H index 6026fe1256cb8b0973a77f271201fffad69f04ca..468ef1326c01fd5416fc2e516c06a320d4f95970 100644 --- a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H +++ b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C index f474cbbd73cdcba5a7197e8427fc3f6b8554845d..c1cc7e66c94e73783fc0d9f7a0349e6768c080e0 100644 --- a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C +++ b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H index bbb46269ff592451c4ddcdc624b4f42d041aa36a..ce92b09fb2b27f9782e40a430c1cc07e496438c9 100644 --- a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H +++ b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C index 4df4117cdd826389da54fc49fdd8720139f4556b..b2d65aad5d91445761bc7d08d9d95c2189df7776 100644 --- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C +++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H index a20a40120fe2bd22df2dcbc7cce4d8d8f6ed214f..bd2580a9bea04b50a9a1cf3bbf05ae526f6bedb3 100644 --- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H +++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C index ab2f100f3e462c9c30a9f8419179e30be61f40ea..651ee6018a5db141546df445ceb891e7477f78fa 100644 --- a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C +++ b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H index 129fb534dd4be1299730a5436b89f6793fce9550..cb59d0a1f5cfca4cc4896e5511ed6881b0d87c04 100644 --- a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H +++ b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/foamScript b/etc/codeTemplates/foamScript index 0c30f3371529ea384d46e4051b89ff433ec4e937..48cc73bb5cd7efeb3104b1a930816b73f616a342 100755 --- a/etc/codeTemplates/foamScript +++ b/etc/codeTemplates/foamScript @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------ # License diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C index 68c84dfe7d6d7f79fa449db45406b6e7c527e1ca..5318dbead70db3c3fe801aee83029c073a46b7be 100644 --- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C +++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H index 2a2dfd07ccc6b6c449f99a7f8dd33d0c6db2358a..dc3a3edb2f497633ca21202d349019c21e802a18 100644 --- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H +++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/source/_Template.C b/etc/codeTemplates/source/_Template.C index 6812cbdf16ff8b4bd1dbcae4a4306fbce57527ac..3d6f46ded11153b01203f29604e72d4b75cfeaf0 100644 --- a/etc/codeTemplates/source/_Template.C +++ b/etc/codeTemplates/source/_Template.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/source/_Template.H b/etc/codeTemplates/source/_Template.H index d2cbe47d0b5280d2b69aa8c819e1cf86335a5825..df90d5e4fe2a30dcc671475482a8b5acf0f1c143 100644 --- a/etc/codeTemplates/source/_Template.H +++ b/etc/codeTemplates/source/_Template.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/source/_TemplateApp.C b/etc/codeTemplates/source/_TemplateApp.C index 80c562cbdbc9b40185dbec45bf9df0e9fe11459a..aa6efc53f755e2526c3afc4235063467fdc21874 100644 --- a/etc/codeTemplates/source/_TemplateApp.C +++ b/etc/codeTemplates/source/_TemplateApp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/source/_TemplateI.H b/etc/codeTemplates/source/_TemplateI.H index eca8d9ea3b2ab1a5690711352eb2a1cf5e7a7166..dd1ba9ecf1efde9049db85f7e24ad2d8c3563946 100644 --- a/etc/codeTemplates/source/_TemplateI.H +++ b/etc/codeTemplates/source/_TemplateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/source/_TemplateIO.C b/etc/codeTemplates/source/_TemplateIO.C index d07fc0d3f30ee81b258acf0a66b2b2a0fcae897f..4097eaa24f56f43ffc316b0298e5142cc79e267d 100644 --- a/etc/codeTemplates/source/_TemplateIO.C +++ b/etc/codeTemplates/source/_TemplateIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,8 +35,7 @@ Foam::CLASSNAME::CLASSNAME(Istream& is) member1(is), member2(is) { - // Check state of Istream - is.check("Foam::CLASSNAME::CLASSNAME(Foam::Istream&)"); + is.check(FUNCTION_NAME); } @@ -44,25 +43,14 @@ Foam::CLASSNAME::CLASSNAME(Istream& is) Foam::Istream& Foam::operator>>(Istream& is, CLASSNAME&) { - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::CLASSNAME&)" - ); - + is.check(FUNCTION_NAME); return is; } Foam::Ostream& Foam::operator<<(Ostream& os, const CLASSNAME&) { - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::CLASSNAME&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/etc/codeTemplates/source/foamNewSource b/etc/codeTemplates/source/foamNewSource index 0a9c1b91af0f8cb0ee44b1d1a31625629980ccbf..ae6d547141120672debf6d925d3bef61e675d80e 100755 --- a/etc/codeTemplates/source/foamNewSource +++ b/etc/codeTemplates/source/foamNewSource @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -104,7 +104,9 @@ else fi # process class name - sed "s/CLASSNAME/$className/g" $Template$subType$Type > $fileName + sed -e "s/CLASSNAME/$className/g" \ + -e "s/YEAR/$(date +%Y)/g" \ + $Template$subType$Type > $fileName if [ "$subType" = App -a ! -d Make ] then diff --git a/etc/codeTemplates/template/_TemplateTemplate.C b/etc/codeTemplates/template/_TemplateTemplate.C index 63b895032b60ec2ed6046a6fdb3ef77b75d12ef9..2f733dfc3fae7883e14326a32a620267395dabfd 100644 --- a/etc/codeTemplates/template/_TemplateTemplate.C +++ b/etc/codeTemplates/template/_TemplateTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/template/_TemplateTemplate.H b/etc/codeTemplates/template/_TemplateTemplate.H index 12e5511b732819851a7d73e52c0802b6073cffc5..ad98aca4af2daff403c7789b25b0d59640b08691 100644 --- a/etc/codeTemplates/template/_TemplateTemplate.H +++ b/etc/codeTemplates/template/_TemplateTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/template/_TemplateTemplateI.H b/etc/codeTemplates/template/_TemplateTemplateI.H index eca8d9ea3b2ab1a5690711352eb2a1cf5e7a7166..dd1ba9ecf1efde9049db85f7e24ad2d8c3563946 100644 --- a/etc/codeTemplates/template/_TemplateTemplateI.H +++ b/etc/codeTemplates/template/_TemplateTemplateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/etc/codeTemplates/template/_TemplateTemplateIO.C b/etc/codeTemplates/template/_TemplateTemplateIO.C index c60b5be8b8d8494dd982b9958fb8a81ac4b04485..f17a357c97944268aabac4f687ff678d290e96c7 100644 --- a/etc/codeTemplates/template/_TemplateTemplateIO.C +++ b/etc/codeTemplates/template/_TemplateTemplateIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) YEAR OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,8 +36,7 @@ Foam::CLASSNAME<TemplateArgument>::CLASSNAME(Istream& is) member1(is), member2(is) { - // Check state of Istream - is.check("Foam::CLASSNAME<TemplateArgument>::CLASSNAME(Foam::Istream&)"); + is.check(FUNCTION_NAME); } @@ -50,13 +49,7 @@ Foam::Istream& Foam::operator>> CLASSNAME<TemplateArgument>& ) { - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::CLASSNAME<TemplateArgument>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -68,13 +61,7 @@ Foam::Ostream& Foam::operator<< const CLASSNAME<TemplateArgument>& ) { - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Ostream&, const CLASSNAME<TemplateArgument>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/etc/codeTemplates/template/foamNewTemplate b/etc/codeTemplates/template/foamNewTemplate index dfc2e13375e3b17e521ed5a46480a17a250da3da..a85be23b50382afc6e38723d8515b166c81f9b27 100755 --- a/etc/codeTemplates/template/foamNewTemplate +++ b/etc/codeTemplates/template/foamNewTemplate @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -106,7 +106,9 @@ else # process class name - sed -e "s/CLASSNAME/$className/g" $Template$Type > $fileName.1 + sed -e "s/CLASSNAME/$className/g" \ + -e "s/YEAR/$(date +%Y)/g" \ + $Template$Type > $fileName.1 # process remaining (template) arguments diff --git a/etc/config.csh/CGAL b/etc/config.csh/CGAL index aab320bcab30fc98ea0aab5eb6fdf09996f3b989..4f4a5f3c95a2c1748544a9a6bf4a82ad1719d4ee 100644 --- a/etc/config.csh/CGAL +++ b/etc/config.csh/CGAL @@ -51,8 +51,8 @@ #------------------------------------------------------------------------------ # USER EDITABLE PART: Changes made here may be lost with the next upgrade -set boost_version=boost_1_62_0 -set cgal_version=CGAL-4.9 +set boost_version=boost_1_64_0 +set cgal_version=CGAL-4.9.1 setenv BOOST_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version setenv CGAL_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version diff --git a/etc/config.csh/compiler b/etc/config.csh/compiler index 2f1f7f04801c99388fbc8127ee8d75691df8a561..bdf2013490c7bbcfaf35003ff2f5d96d421356fb 100644 --- a/etc/config.csh/compiler +++ b/etc/config.csh/compiler @@ -66,6 +66,9 @@ case ThirdParty: case Gcc63: set gcc_version=gcc-6.3.0 breaksw + case Gcc71: + set gcc_version=gcc-7.1.0 + breaksw case Clang: set clang_version=llvm-3.7.1 breaksw diff --git a/etc/config.sh/CGAL b/etc/config.sh/CGAL index dc97d66a11a029c7165733dcfdd92dcac1c5dfc6..e3acd42cbec347bb3e86d31e4860fb8efac7b6c6 100644 --- a/etc/config.sh/CGAL +++ b/etc/config.sh/CGAL @@ -50,8 +50,8 @@ #------------------------------------------------------------------------------ # USER EDITABLE PART: Changes made here may be lost with the next upgrade -boost_version=boost_1_62_0 -cgal_version=CGAL-4.9 +boost_version=boost_1_64_0 +cgal_version=CGAL-4.9.1 export BOOST_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version export CGAL_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version diff --git a/etc/config.sh/compiler b/etc/config.sh/compiler index 2235619f774b9e229bdac9f0fd3df98d7a63a2d7..2dfd7eaf1f760bf0a81b247eefcc11fc6dc1cd5a 100644 --- a/etc/config.sh/compiler +++ b/etc/config.sh/compiler @@ -65,6 +65,9 @@ ThirdParty) Gcc63) gcc_version=gcc-6.3.0 ;; + Gcc71) + gcc_version=gcc-7.1.0 + ;; Clang) clang_version=llvm-3.7.1 ;; diff --git a/etc/controlDict b/etc/controlDict index 81d3363e6fccbb61d1b283ccb9506558c825a9f7..a2302326dc6d2f42f5842f211b9c60653ecbe807 100644 --- a/etc/controlDict +++ b/etc/controlDict @@ -867,7 +867,6 @@ DebugSwitches triSurface 0; triSurfaceMesh 0; turbulenceModel 0; - turbulentHeatFluxTemperature 0; turbulentInlet 0; turbulentIntensityKineticEnergyInlet 0; turbulentMixingLengthDissipationRateInlet 0; diff --git a/etc/cshrc b/etc/cshrc index 4fb51cad68738e4e276cb0bc5c0c6f44adb64b5b..688905c2cf089b89ad4490b76c8a143fb5c7bc33 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -43,7 +43,7 @@ setenv WM_PROJECT_VERSION plus # values to an appropriate path. # setenv FOAM_INST_DIR `lsof +p $$ |& \ - sed -n -e 's@[^/]*@@' -e 's@/'$WM_PROJECT'[^/]*/etc/cshrc@@p'` + sed -n -e 's@[^/]*@@' -e 's@/'$WM_PROJECT'[^/]*/etc/cshrc.*@@p'` # setenv FOAM_INST_DIR $HOME/$WM_PROJECT # setenv FOAM_INST_DIR /opt/$WM_PROJECT # setenv FOAM_INST_DIR /usr/local/$WM_PROJECT diff --git a/etc/templates/closedVolume/system/snappyHexMeshDict b/etc/templates/closedVolume/system/snappyHexMeshDict index f7927ca2c3cbfed07e3a3214fc13574c3d510cd9..74f9cae76a89b5ebfd4b616bf408452bed1d31f0 100644 --- a/etc/templates/closedVolume/system/snappyHexMeshDict +++ b/etc/templates/closedVolume/system/snappyHexMeshDict @@ -60,6 +60,7 @@ castellatedMeshControls locationInMesh (1e-5 1e-5 1e-5); // Offset from (0 0 0) to avoid // coinciding with face or edge + nCellsBetweenLevels 3; } snapControls diff --git a/etc/templates/closedVolumeRotating/README b/etc/templates/closedVolumeRotating/README index 693cee7bd9df53940cd23b01a35ca46c4a1d922f..79c0fbf857eb806da704269e14a1d81c7237021d 100644 --- a/etc/templates/closedVolumeRotating/README +++ b/etc/templates/closedVolumeRotating/README @@ -2,6 +2,61 @@ Overview ======== + Template case for rotating geometry flow for a closed geometry + Can be used for MRF or AMI simulations -+ Setup to run the simpleFoam solver -+ Set up is like inflowOutflowRotating but without inlet and outlet -+ See $FOAM_ETC/templates/closedVolume/README for details of use \ No newline at end of file ++ Setup to run the simpleFoam solver for MRF, pimpleDyMFoam for AMI ++ The case is designed to be meshed with snappyHexMesh ++ snappyHexMesh is setup to use 3 trisurface files + + fixed.obj: CAD of the stationary geometry + + rotating.obj: CAD of the rotating geometry + + rotatingZone.obj: CAD of surface bounding the rotating region ++ Copy the *.obj files to the constant/triSurface directory ++ The fixed.obj should contain an inlet and outlet region to create the relevant + patches in the mesh + +Background Mesh +=============== ++ The blockMeshDict file contains a configuration for a cylindrical background + mesh aligned along the z-axis ++ The mesh includes a core box-shaped block and inner and outer cylinders ++ The backgroundMesh subdictionary includes key geometric parameters of the mesh ++ The inner cylinder relates to the rotatingZone.obj ++ The outer cyliner relates to the external boundary, e.g. fixed.obj ++ Set the radii of inner and outer cylinders to ~2% larger than respective OBJ + files ++ Set background mesh density with boxCells, inCells, outCells and zCells ++ Run blockMesh ++ NOTE: An alternative blockMeshDict-box file exists if the user wants a regular + box-shaped background mesh, similar to set up in the inflowOutflow template + +Features +======== ++ Run surfaceFeatureExtract to extract features for explicit feature capturing + +Castellated Mesh +================ ++ run snappyHexMesh to obtain a castellatedMesh ++ Review the mesh; modify refinement levels and regenerate the mesh as required + (levels are set in refinementSurfaces and refinementRegions) + +Snapped Mesh +============ ++ In snappyHexMeshDict, set castellatedMesh off; snap on; ++ Run the snapping phase of snappyHexMesh ++ Review the mesh + +Layers +====== ++ To add layers to the mesh along wall boundary patches... ++ Switch on addLayers; switch snap off; ++ Run snappyHexMesh ++ The number of layers can be changed by modifying nSurfaceLayers + +Initialisation +============== ++ Initialise the field files in the 0 directory ++ Set the viscosity in constant/transportProperties ++ Rotating properties are set in constant/rotatingZoneProperties + + For MRF, this file is included from system/fvOptions + + For AMI, this file is included from constant/dynamicMeshDict ++ Ensure settings are appropriate in controlDict, fvSchemes, fvSolution, for + relevant simulation; for AMI, in particular, ensure that deltaT, ddtSchemes + and relaxationFactors are set for transient simulation diff --git a/etc/templates/closedVolumeRotating/constant/dynamicMeshDict b/etc/templates/closedVolumeRotating/constant/dynamicMeshDict index 98adeda1179d886eca64e7a0f94071001ab7dca8..3be80324218bd095b3da4f884e81562603bc9102 100644 --- a/etc/templates/closedVolumeRotating/constant/dynamicMeshDict +++ b/etc/templates/closedVolumeRotating/constant/dynamicMeshDict @@ -14,9 +14,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh solidBodyMotionFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; -solidBodyMotionFvMeshCoeffs +solver solidBody; + +solidBodyCoeffs { cellZone rotatingZone; diff --git a/etc/templates/closedVolumeRotating/system/blockMeshDict b/etc/templates/closedVolumeRotating/system/blockMeshDict index 273d50fad2367de42c8eeef10117501a4d748079..b7f0c57061c8e696616f012acc6f047b7889fe7b 100644 --- a/etc/templates/closedVolumeRotating/system/blockMeshDict +++ b/etc/templates/closedVolumeRotating/system/blockMeshDict @@ -14,47 +14,175 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Example configuration: +// - Cylindrical mesh along z-axis (0 < z < 10) +// - External boundary (fixed.obj) radius = 3 +// - Rotating zone (rotatingZone.obj) radius = 1 + backgroundMesh { - xMin -1; - xMax 1; - yMin -1; - yMax 1; - zMin -1; - zMax 1; - xCells 20; - yCells 20; - zCells 20; + radOut 3.06; // larger than fixed.obj by ~ 1/cos(45/boxCells) + radOutN -3.06; + radIn 1.02; // larger than rotatingZone.obj (see above) + radInN -1.02; + radBox 0.30; // ~30% of rotatingZone.obj + radBoxN -0.30; + + zMin 0; + zMax 10; // External boundary axial length + + boxCells 5; // Cells across inner box-shaped block + inCells 5; // Cells in radial direction, inner cylinder + outCells 8; // Cells in radial direction, outer cylinder + zCells 50; // Cells in axial direction + + outGrading 2.0; // Expansion ratio in outer region, radial direction +} + +geometry +{ + rotatingZone + { + type searchableCylinder; + point1 (0 0 -100); + point2 (0 0 100); + radius $:backgroundMesh.radIn; + } + + fixed + { + type searchableCylinder; + point1 (0 0 -100); + point2 (0 0 100); + radius $:backgroundMesh.radOut; + } } convertToMeters 1; vertices ( - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMin) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMin) - - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMax) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMax) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBoxN $:backgroundMesh.zMin) + ($:backgroundMesh.radBox $:backgroundMesh.radBoxN $:backgroundMesh.zMin) + ($:backgroundMesh.radBox $:backgroundMesh.radBox $:backgroundMesh.zMin) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBox $:backgroundMesh.zMin) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radInN $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radInN $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radIn $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radIn $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOutN $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOutN $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOut $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOut $:backgroundMesh.zMin) + (fixed) + + ($:backgroundMesh.radBoxN $:backgroundMesh.radBoxN $:backgroundMesh.zMax) + ($:backgroundMesh.radBox $:backgroundMesh.radBoxN $:backgroundMesh.zMax) + ($:backgroundMesh.radBox $:backgroundMesh.radBox $:backgroundMesh.zMax) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBox $:backgroundMesh.zMax) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radInN $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radInN $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radIn $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radIn $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOutN $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOutN $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOut $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOut $:backgroundMesh.zMax) + (fixed) ); +boxMesh +($:backgroundMesh.boxCells $:backgroundMesh.boxCells $:backgroundMesh.zCells) +simpleGrading (1 1 1); + +inMesh +($:backgroundMesh.boxCells $:backgroundMesh.inCells $:backgroundMesh.zCells) +simpleGrading (1 1 1); + +outMesh +($:backgroundMesh.boxCells $:backgroundMesh.outCells $:backgroundMesh.zCells) +simpleGrading (1 $:backgroundMesh.outGrading 1); + blocks ( - hex (0 1 2 3 4 5 6 7) - ( - $:backgroundMesh.xCells - $:backgroundMesh.yCells - $:backgroundMesh.zCells - ) - simpleGrading (1 1 1) + hex (0 1 2 3 12 13 14 15) $boxMesh + + hex (1 0 4 5 13 12 16 17) $inMesh + hex (0 3 7 4 12 15 19 16) $inMesh + hex (2 1 5 6 14 13 17 18) $inMesh + hex (3 2 6 7 15 14 18 19) $inMesh + + hex (5 4 8 9 17 16 20 21) $outMesh + hex (4 7 11 8 16 19 23 20) $outMesh + hex (6 5 9 10 18 17 21 22) $outMesh + hex (7 6 10 11 19 18 22 23) $outMesh ); edges ( + project 4 5 (rotatingZone) + project 5 6 (rotatingZone) + project 6 7 (rotatingZone) + project 7 4 (rotatingZone) + project 16 17 (rotatingZone) + project 17 18 (rotatingZone) + project 18 19 (rotatingZone) + project 19 16 (rotatingZone) + + project 8 9 (fixed) + project 9 10 (fixed) + project 10 11 (fixed) + project 11 8 (fixed) + project 20 21 (fixed) + project 21 22 (fixed) + project 22 23 (fixed) + project 23 20 (fixed) ); boundary diff --git a/etc/templates/inflowOutflowRotating/system/blockMeshDict.extPatches b/etc/templates/closedVolumeRotating/system/blockMeshDict-box similarity index 75% rename from etc/templates/inflowOutflowRotating/system/blockMeshDict.extPatches rename to etc/templates/closedVolumeRotating/system/blockMeshDict-box index dbba64bbb9f6fb55e033160a2ac18d9783efe839..273d50fad2367de42c8eeef10117501a4d748079 100644 --- a/etc/templates/inflowOutflowRotating/system/blockMeshDict.extPatches +++ b/etc/templates/closedVolumeRotating/system/blockMeshDict-box @@ -59,59 +59,6 @@ edges boundary ( - left - { - type patch; - faces - ( - (0 3 7 4) - ); - } - - right - { - type patch; - faces - ( - (1 5 6 2) - ); - } - - bottom - { - type patch; - faces - ( - (0 1 2 3) - ); - } - - top - { - type patch; - faces - ( - (4 7 6 5) - ); - } - - back - { - type patch; - faces - ( - (0 4 5 1) - ); - } - - front - { - type patch; - faces - ( - (3 2 6 7) - ); - } ); mergePatchPairs diff --git a/etc/templates/closedVolumeRotating/system/snappyHexMeshDict b/etc/templates/closedVolumeRotating/system/snappyHexMeshDict index c31ea0166691758d73e8381357717c725851e7bc..115ce5b1032b78aa1e92a6286806f7e499017531 100644 --- a/etc/templates/closedVolumeRotating/system/snappyHexMeshDict +++ b/etc/templates/closedVolumeRotating/system/snappyHexMeshDict @@ -83,11 +83,13 @@ castellatedMeshControls locationInMesh (1e-5 1e-5 1e-5); // Offset from (0 0 0) to avoid // coinciding with face or edge + nCellsBetweenLevels 3; } snapControls { explicitFeatureSnap true; + implicitFeatureSnap false; } addLayersControls diff --git a/etc/templates/compressibleInflowOutflow/README b/etc/templates/compressibleInflowOutflow/README index 780ced006907710ed0af831586a56caa11d2c10d..3500e5e16e25d9c543b921f2fd3bfc8011c1e4a6 100644 --- a/etc/templates/compressibleInflowOutflow/README +++ b/etc/templates/compressibleInflowOutflow/README @@ -12,19 +12,13 @@ Background Mesh =============== + The user should establish the bounds of their CAD.obj file + The blockMeshDict file contains a backgroundMesh subditionary -+ Set xMin, xMax, etc to be beyond the CAD.obj bounds ++ For internal flows, where CAD.obj describes the external boundary, set xMin, + xMax, etc to be beyond the CAD.obj bounds ++ For external flows, the background mesh can define the external boundary by + uncommenting entries, e.g. left, in the boundary section of blockMeshDict + Set background mesh density with xCells, yCells, zCells + Run blockMesh -Background Mesh (alternative) -============================= -+ The user can adopt the background mesh patches in the mesh -+ For example, the background mesh can provide external patches of an external - flow -+ An alternative blockMeshDict file is set up for this: blockMeshDict.extPatches -+ Simply copy blockMeshDict.extPatches to blockMeshDict and edit inlet, outlet - patches accordingly - Castellated Mesh ================ + In the snappyHexMeshDict file, replace <inletPatch> with the name of the inlet diff --git a/etc/templates/compressibleInflowOutflow/constant/thermophysicalProperties b/etc/templates/compressibleInflowOutflow/constant/thermophysicalProperties index 7930d95d1ddb734d7b0fa69aa81e720166352c00..4f291cf1f7929a6744991bd23f6a22a77dda71ab 100644 --- a/etc/templates/compressibleInflowOutflow/constant/thermophysicalProperties +++ b/etc/templates/compressibleInflowOutflow/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture // air at room temperature (293 K) { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/etc/templates/compressibleInflowOutflow/system/blockMeshDict b/etc/templates/compressibleInflowOutflow/system/blockMeshDict index 273d50fad2367de42c8eeef10117501a4d748079..a761d4fecbf635b99c4b2b96adf95ea9564b54a8 100644 --- a/etc/templates/compressibleInflowOutflow/system/blockMeshDict +++ b/etc/templates/compressibleInflowOutflow/system/blockMeshDict @@ -59,6 +59,62 @@ edges boundary ( +// Uncomment below to define patches in background mesh +/* + left + { + type patch; + faces + ( + (0 3 7 4) + ); + } + + right + { + type patch; + faces + ( + (1 5 6 2) + ); + } + + bottom + { + type patch; + faces + ( + (0 1 2 3) + ); + } + + top + { + type patch; + faces + ( + (4 7 6 5) + ); + } + + back + { + type patch; + faces + ( + (0 4 5 1) + ); + } + + front + { + type patch; + faces + ( + (3 2 6 7) + ); + } +*/ ); mergePatchPairs diff --git a/etc/templates/compressibleInflowOutflow/system/blockMeshDict.extPatches b/etc/templates/compressibleInflowOutflow/system/blockMeshDict.extPatches deleted file mode 100644 index dbba64bbb9f6fb55e033160a2ac18d9783efe839..0000000000000000000000000000000000000000 --- a/etc/templates/compressibleInflowOutflow/system/blockMeshDict.extPatches +++ /dev/null @@ -1,121 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: plus | -| \\ / A nd | Web: www.OpenFOAM.com | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object blockMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -backgroundMesh -{ - xMin -1; - xMax 1; - yMin -1; - yMax 1; - zMin -1; - zMax 1; - xCells 20; - yCells 20; - zCells 20; -} - -convertToMeters 1; - -vertices -( - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMin) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMin) - - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMax) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMax) -); - -blocks -( - hex (0 1 2 3 4 5 6 7) - ( - $:backgroundMesh.xCells - $:backgroundMesh.yCells - $:backgroundMesh.zCells - ) - simpleGrading (1 1 1) -); - -edges -( -); - -boundary -( - left - { - type patch; - faces - ( - (0 3 7 4) - ); - } - - right - { - type patch; - faces - ( - (1 5 6 2) - ); - } - - bottom - { - type patch; - faces - ( - (0 1 2 3) - ); - } - - top - { - type patch; - faces - ( - (4 7 6 5) - ); - } - - back - { - type patch; - faces - ( - (0 4 5 1) - ); - } - - front - { - type patch; - faces - ( - (3 2 6 7) - ); - } -); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/etc/templates/compressibleInflowOutflow/system/fvSchemes b/etc/templates/compressibleInflowOutflow/system/fvSchemes index 0e72d8c9eb757172b65654da1f3104ac2830d920..fd40835a486c26f4cafa17fd07fa2dd6e4d3e814 100644 --- a/etc/templates/compressibleInflowOutflow/system/fvSchemes +++ b/etc/templates/compressibleInflowOutflow/system/fvSchemes @@ -44,9 +44,9 @@ divSchemes div(phi,e) $turbulence; div(phi,h) $turbulence; div(phi,K) $turbulence; - div(phi,Ekp) $turbulence; + div(phi,Ekp) $turbulence; - div(phid,p) bounded Gauss upwind; + div(phid,p) Gauss upwind; div((phi|interpolate(rho)),p) bounded Gauss upwind; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; diff --git a/etc/templates/compressibleInflowOutflow/system/fvSolution b/etc/templates/compressibleInflowOutflow/system/fvSolution index e280ad5a770d9452238496f82f043d6105279743..9517ab8a0a1a05a99c1ebe4d327b844aa0e82ff6 100644 --- a/etc/templates/compressibleInflowOutflow/system/fvSolution +++ b/etc/templates/compressibleInflowOutflow/system/fvSolution @@ -43,8 +43,8 @@ SIMPLE } nNonOrthogonalCorrectors 0; - rhoMin rhoMin [ 1 -3 0 0 0 ] 0.1; - rhoMax rhoMax [ 1 -3 0 0 0 ] 1.5; + pMinFactor 0.1; + pMaxFactor 1.5; } relaxationFactors @@ -56,7 +56,7 @@ relaxationFactors } equations { - U 0.7; + U 0.7; "(e|h)" 0.7; "(k|epsilon|omega)" 0.7; } diff --git a/etc/templates/compressibleInflowOutflow/system/snappyHexMeshDict b/etc/templates/compressibleInflowOutflow/system/snappyHexMeshDict index c8abb26721c103ec3803b32c0d71614d80894024..0d578833f06a9016675580075c5e15681e9976ed 100644 --- a/etc/templates/compressibleInflowOutflow/system/snappyHexMeshDict +++ b/etc/templates/compressibleInflowOutflow/system/snappyHexMeshDict @@ -84,6 +84,7 @@ castellatedMeshControls locationInMesh (1e-5 1e-5 1e-5); // Offset from (0 0 0) to avoid // coinciding with face or edge + nCellsBetweenLevels 3; } snapControls diff --git a/etc/templates/inflowOutflow/README b/etc/templates/inflowOutflow/README index 3cac200bdc9141417842e32ec3c7fa35042bb621..7c2252a7adf4fa7fee479338fefc45b349b926ad 100644 --- a/etc/templates/inflowOutflow/README +++ b/etc/templates/inflowOutflow/README @@ -12,19 +12,13 @@ Background Mesh =============== + The user should establish the bounds of their CAD.obj file + The blockMeshDict file contains a backgroundMesh subditionary -+ Set xMin, xMax, etc to be beyond the CAD.obj bounds ++ For internal flows, where CAD.obj describes the external boundary, set xMin, + xMax, etc to be beyond the CAD.obj bounds ++ For external flows, the background mesh can define the external boundary by + uncommenting entries, e.g. left, in the boundary section of blockMeshDict + Set background mesh density with xCells, yCells, zCells + Run blockMesh -Background Mesh (alternative) -============================= -+ The user can adopt the background mesh patches in the mesh -+ For example, the background mesh can provide external patches of an external - flow -+ An alternative blockMeshDict file is set up for this: blockMeshDict.extPatches -+ Simply copy blockMeshDict.extPatches to blockMeshDict and edit inlet, outlet - patches accordingly - Castellated Mesh ================ + In the snappyHexMeshDict file, replace <inletPatch> with the name of the inlet diff --git a/etc/templates/inflowOutflow/system/blockMeshDict b/etc/templates/inflowOutflow/system/blockMeshDict index 273d50fad2367de42c8eeef10117501a4d748079..a761d4fecbf635b99c4b2b96adf95ea9564b54a8 100644 --- a/etc/templates/inflowOutflow/system/blockMeshDict +++ b/etc/templates/inflowOutflow/system/blockMeshDict @@ -59,6 +59,62 @@ edges boundary ( +// Uncomment below to define patches in background mesh +/* + left + { + type patch; + faces + ( + (0 3 7 4) + ); + } + + right + { + type patch; + faces + ( + (1 5 6 2) + ); + } + + bottom + { + type patch; + faces + ( + (0 1 2 3) + ); + } + + top + { + type patch; + faces + ( + (4 7 6 5) + ); + } + + back + { + type patch; + faces + ( + (0 4 5 1) + ); + } + + front + { + type patch; + faces + ( + (3 2 6 7) + ); + } +*/ ); mergePatchPairs diff --git a/etc/templates/inflowOutflow/system/snappyHexMeshDict b/etc/templates/inflowOutflow/system/snappyHexMeshDict index c8abb26721c103ec3803b32c0d71614d80894024..0d578833f06a9016675580075c5e15681e9976ed 100644 --- a/etc/templates/inflowOutflow/system/snappyHexMeshDict +++ b/etc/templates/inflowOutflow/system/snappyHexMeshDict @@ -84,6 +84,7 @@ castellatedMeshControls locationInMesh (1e-5 1e-5 1e-5); // Offset from (0 0 0) to avoid // coinciding with face or edge + nCellsBetweenLevels 3; } snapControls diff --git a/etc/templates/inflowOutflowRotating/0/U b/etc/templates/inflowOutflowRotating/0/U index 159fe22463971632737962b9e25bd28bb7e032e2..e57a3d9a6df0d0e56ac6ff20f85464789b9b04a9 100644 --- a/etc/templates/inflowOutflowRotating/0/U +++ b/etc/templates/inflowOutflowRotating/0/U @@ -14,7 +14,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Uinlet (10 0 0); +Uinlet (0 0 10); dimensions [0 1 -1 0 0 0 0]; diff --git a/etc/templates/inflowOutflowRotating/README b/etc/templates/inflowOutflowRotating/README index b1b05eeb42592640773ad0209ce5857de3662d9c..250b5a331222d8e9b650e9ea2e76db5433f77ff4 100644 --- a/etc/templates/inflowOutflowRotating/README +++ b/etc/templates/inflowOutflowRotating/README @@ -12,12 +12,48 @@ Overview + The fixed.obj should contain an inlet and outlet region to create the relevant patches in the mesh -Meshing -======= -+ Meshing is setup as in the inflowOutflow template -+ See $FOAM_ETC/templates/inflowOutflow/README for details -+ For AMI, the AMI interface can be set up by running createBaffles which uses - the createBafflesDict file +Background Mesh +=============== ++ The blockMeshDict file contains a configuration for a cylindrical background + mesh aligned along the z-axis ++ The mesh includes a core box-shaped block and inner and outer cylinders ++ The backgroundMesh subdictionary includes key geometric parameters of the mesh ++ The inner cylinder relates to the rotatingZone.obj ++ The outer cyliner relates to the external boundary, e.g. fixed.obj ++ Set the radii of inner and outer cylinders to ~2% larger than respective OBJ + files ++ The background mesh can define the external boundary by uncommenting + entries, e.g. inlet, in the boundary section of blockMeshDict ++ Set background mesh density with boxCells, inCells, outCells and zCells ++ Run blockMesh ++ NOTE: An alternative blockMeshDict-box file exists if the user wants a regular + box-shaped background mesh, similar to set up in the inflowOutflow template + +Features +======== ++ Run surfaceFeatureExtract to extract features for explicit feature capturing + +Castellated Mesh +================ ++ In the snappyHexMeshDict file, replace <inletPatch> with the name of the inlet + region in the fixed.obj file, if it defines the external boundary ++ Replace <outletPatch> with the name of the outlet region ++ run snappyHexMesh to obtain a castellatedMesh ++ Review the mesh; modify refinement levels and regenerate the mesh as required + (levels are set in refinementSurfaces and refinementRegions) + +Snapped Mesh +============ ++ In snappyHexMeshDict, set castellatedMesh off; snap on; ++ Run the snapping phase of snappyHexMesh ++ Review the mesh + +Layers +====== ++ To add layers to the mesh along wall boundary patches... ++ Switch on addLayers; switch snap off; ++ Run snappyHexMesh ++ The number of layers can be changed by modifying nSurfaceLayers Initialisation ============== diff --git a/etc/templates/inflowOutflowRotating/constant/dynamicMeshDict b/etc/templates/inflowOutflowRotating/constant/dynamicMeshDict index 98adeda1179d886eca64e7a0f94071001ab7dca8..3be80324218bd095b3da4f884e81562603bc9102 100644 --- a/etc/templates/inflowOutflowRotating/constant/dynamicMeshDict +++ b/etc/templates/inflowOutflowRotating/constant/dynamicMeshDict @@ -14,9 +14,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh solidBodyMotionFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; -solidBodyMotionFvMeshCoeffs +solver solidBody; + +solidBodyCoeffs { cellZone rotatingZone; diff --git a/etc/templates/inflowOutflowRotating/system/blockMeshDict b/etc/templates/inflowOutflowRotating/system/blockMeshDict index 273d50fad2367de42c8eeef10117501a4d748079..6de435522b15d1bf20596aec570c7794a55b1db3 100644 --- a/etc/templates/inflowOutflowRotating/system/blockMeshDict +++ b/etc/templates/inflowOutflowRotating/system/blockMeshDict @@ -14,51 +14,227 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Example configuration: +// - Cylindrical mesh along z-axis (0 < z < 10) +// - External boundary (fixed.obj) radius = 3 +// - Rotating zone (rotatingZone.obj) radius = 1 + backgroundMesh { - xMin -1; - xMax 1; - yMin -1; - yMax 1; - zMin -1; - zMax 1; - xCells 20; - yCells 20; - zCells 20; + radOut 3.06; // larger than fixed.obj by ~ 1/cos(45/boxCells) + radOutN -3.06; + radIn 1.02; // larger than rotatingZone.obj (see above) + radInN -1.02; + radBox 0.30; // ~30% of rotatingZone.obj + radBoxN -0.30; + + zMin 0; + zMax 10; // External boundary axial length + + boxCells 5; // Cells across inner box-shaped block + inCells 5; // Cells in radial direction, inner cylinder + outCells 8; // Cells in radial direction, outer cylinder + zCells 50; // Cells in axial direction + + outGrading 2.0; // Expansion ratio in outer region, radial direction +} + +geometry +{ + rotatingZone + { + type searchableCylinder; + point1 (0 0 -100); + point2 (0 0 100); + radius $:backgroundMesh.radIn; + } + + fixed + { + type searchableCylinder; + point1 (0 0 -100); + point2 (0 0 100); + radius $:backgroundMesh.radOut; + } } convertToMeters 1; vertices ( - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMin) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMin) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMin) - - ($:backgroundMesh.xMin $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMin $:backgroundMesh.zMax) - ($:backgroundMesh.xMax $:backgroundMesh.yMax $:backgroundMesh.zMax) - ($:backgroundMesh.xMin $:backgroundMesh.yMax $:backgroundMesh.zMax) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBoxN $:backgroundMesh.zMin) + ($:backgroundMesh.radBox $:backgroundMesh.radBoxN $:backgroundMesh.zMin) + ($:backgroundMesh.radBox $:backgroundMesh.radBox $:backgroundMesh.zMin) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBox $:backgroundMesh.zMin) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radInN $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radInN $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radIn $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radIn $:backgroundMesh.zMin) + (rotatingZone) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOutN $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOutN $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOut $:backgroundMesh.zMin) + (fixed) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOut $:backgroundMesh.zMin) + (fixed) + + ($:backgroundMesh.radBoxN $:backgroundMesh.radBoxN $:backgroundMesh.zMax) + ($:backgroundMesh.radBox $:backgroundMesh.radBoxN $:backgroundMesh.zMax) + ($:backgroundMesh.radBox $:backgroundMesh.radBox $:backgroundMesh.zMax) + ($:backgroundMesh.radBoxN $:backgroundMesh.radBox $:backgroundMesh.zMax) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radInN $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radInN $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radIn $:backgroundMesh.radIn $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radInN $:backgroundMesh.radIn $:backgroundMesh.zMax) + (rotatingZone) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOutN $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOutN $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOut $:backgroundMesh.radOut $:backgroundMesh.zMax) + (fixed) + + project + ($:backgroundMesh.radOutN $:backgroundMesh.radOut $:backgroundMesh.zMax) + (fixed) ); +boxMesh +($:backgroundMesh.boxCells $:backgroundMesh.boxCells $:backgroundMesh.zCells) +simpleGrading (1 1 1); + +inMesh +($:backgroundMesh.boxCells $:backgroundMesh.inCells $:backgroundMesh.zCells) +simpleGrading (1 1 1); + +outMesh +($:backgroundMesh.boxCells $:backgroundMesh.outCells $:backgroundMesh.zCells) +simpleGrading (1 $:backgroundMesh.outGrading 1); + blocks ( - hex (0 1 2 3 4 5 6 7) - ( - $:backgroundMesh.xCells - $:backgroundMesh.yCells - $:backgroundMesh.zCells - ) - simpleGrading (1 1 1) + hex (0 1 2 3 12 13 14 15) $boxMesh + + hex (1 0 4 5 13 12 16 17) $inMesh + hex (0 3 7 4 12 15 19 16) $inMesh + hex (2 1 5 6 14 13 17 18) $inMesh + hex (3 2 6 7 15 14 18 19) $inMesh + + hex (5 4 8 9 17 16 20 21) $outMesh + hex (4 7 11 8 16 19 23 20) $outMesh + hex (6 5 9 10 18 17 21 22) $outMesh + hex (7 6 10 11 19 18 22 23) $outMesh ); edges ( + project 4 5 (rotatingZone) + project 5 6 (rotatingZone) + project 6 7 (rotatingZone) + project 7 4 (rotatingZone) + project 16 17 (rotatingZone) + project 17 18 (rotatingZone) + project 18 19 (rotatingZone) + project 19 16 (rotatingZone) + + project 8 9 (fixed) + project 9 10 (fixed) + project 10 11 (fixed) + project 11 8 (fixed) + project 20 21 (fixed) + project 21 22 (fixed) + project 22 23 (fixed) + project 23 20 (fixed) ); boundary ( +// Uncomment below to define patches in background mesh +/* + inlet + { + type patch; + faces + ( + (0 1 2 3) + (0 4 5 1) + (1 5 6 2) + (2 6 7 3) + (3 7 4 0) + (4 8 9 5) + (5 9 10 6) + (6 10 11 7) + (7 11 8 4) + ); + } + + outlet + { + type patch; + faces + ( + (12 13 14 15) + (12 16 17 13) + (13 17 18 14) + (14 18 19 15) + (15 19 16 12) + (16 20 21 17) + (17 21 22 18) + (18 22 23 19) + (19 23 20 16) + ); + } + + walls + { + type wall; + faces + ( + (8 9 21 20) + (9 10 22 21) + (10 11 23 22) + (11 8 20 23) + ); + } +*/ ); mergePatchPairs diff --git a/etc/templates/inflowOutflow/system/blockMeshDict.extPatches b/etc/templates/inflowOutflowRotating/system/blockMeshDict-box similarity index 97% rename from etc/templates/inflowOutflow/system/blockMeshDict.extPatches rename to etc/templates/inflowOutflowRotating/system/blockMeshDict-box index dbba64bbb9f6fb55e033160a2ac18d9783efe839..a761d4fecbf635b99c4b2b96adf95ea9564b54a8 100644 --- a/etc/templates/inflowOutflow/system/blockMeshDict.extPatches +++ b/etc/templates/inflowOutflowRotating/system/blockMeshDict-box @@ -59,6 +59,8 @@ edges boundary ( +// Uncomment below to define patches in background mesh +/* left { type patch; @@ -112,6 +114,7 @@ boundary (3 2 6 7) ); } +*/ ); mergePatchPairs diff --git a/etc/templates/inflowOutflowRotating/system/snappyHexMeshDict b/etc/templates/inflowOutflowRotating/system/snappyHexMeshDict index 0dc1c3acc4303d41afbb781d3ee73a4a5ef05bd6..1fe915899d9424fd6d9ed7328539c2318ec27a47 100644 --- a/etc/templates/inflowOutflowRotating/system/snappyHexMeshDict +++ b/etc/templates/inflowOutflowRotating/system/snappyHexMeshDict @@ -112,11 +112,13 @@ castellatedMeshControls locationInMesh (1e-5 1e-5 1e-5); // Offset from (0 0 0) to avoid // coinciding with face or edge + nCellsBetweenLevels 3; } snapControls { explicitFeatureSnap true; + implicitFeatureSnap false; } addLayersControls diff --git a/etc/thermoData/thermoData b/etc/thermoData/thermoData index dddc4e85f752b36e4eb87ecbf9aac31735111819..d7b7827e676b186a78da9aca73082278d66c84ea 100644 --- a/etc/thermoData/thermoData +++ b/etc/thermoData/thermoData @@ -28,7 +28,6 @@ PF5 { specie { - nMoles 1; molWeight 125.966; } thermodynamics @@ -44,7 +43,6 @@ T-C3H5_CH3C*=CH2 { specie { - nMoles 1; molWeight 41.0733; } thermodynamics @@ -60,7 +58,6 @@ C3H8S_PropanThiol { specie { - nMoles 1; molWeight 76.1612; } thermodynamics @@ -76,7 +73,6 @@ MgS(cr) { specie { - nMoles 1; molWeight 56.376; } thermodynamics @@ -92,7 +88,6 @@ Fe(d) { specie { - nMoles 1; molWeight 55.847; } thermodynamics @@ -108,7 +103,6 @@ Bi(S) { specie { - nMoles 1; molWeight 208.98; } thermodynamics @@ -124,7 +118,6 @@ C2H2_Vinylidene { specie { - nMoles 1; molWeight 26.0382; } thermodynamics @@ -140,7 +133,6 @@ Pb- { specie { - nMoles 1; molWeight 207.191; } thermodynamics @@ -156,7 +148,6 @@ GeCl4 { specie { - nMoles 1; molWeight 214.402; } thermodynamics @@ -172,7 +163,6 @@ C7H15_n-heptyl { specie { - nMoles 1; molWeight 99.1976; } thermodynamics @@ -188,7 +178,6 @@ C17H33O2_C16-Rad { specie { - nMoles 1; molWeight 269.451; } thermodynamics @@ -204,7 +193,6 @@ C4H9O_T_butoxy_r { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -220,7 +208,6 @@ C2H2O4_Oxalic_ac { specie { - nMoles 1; molWeight 90.0358; } thermodynamics @@ -236,7 +223,6 @@ Fe2O3(S) { specie { - nMoles 1; molWeight 159.692; } thermodynamics @@ -252,7 +238,6 @@ s-*CH2NH2 { specie { - nMoles 1; molWeight 30.0497; } thermodynamics @@ -268,7 +253,6 @@ C7H7+__C6H5CH2*+ { specie { - nMoles 1; molWeight 91.1333; } thermodynamics @@ -284,7 +268,6 @@ S(L) { specie { - nMoles 1; molWeight 320.64; } thermodynamics @@ -300,7 +283,6 @@ C5H4__1,2,4-cycl { specie { - nMoles 1; molWeight 64.0876; } thermodynamics @@ -316,7 +298,6 @@ PF2- { specie { - nMoles 1; molWeight 68.9711; } thermodynamics @@ -332,7 +313,6 @@ Br_Bromine_atom { specie { - nMoles 1; molWeight 79.9009; } thermodynamics @@ -348,7 +328,6 @@ C6H3Cl3O_linear { specie { - nMoles 1; molWeight 197.449; } thermodynamics @@ -364,7 +343,6 @@ C4H5+_CH3CC=CH2*+ { specie { - nMoles 1; molWeight 53.0839; } thermodynamics @@ -380,7 +358,6 @@ C4H9O_i-butoxy_r { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -396,7 +373,6 @@ C10H18_Bicypentyl { specie { - nMoles 1; molWeight 138.255; } thermodynamics @@ -412,7 +388,6 @@ CDO { specie { - nMoles 1; molWeight 30.0247; } thermodynamics @@ -428,7 +403,6 @@ P-CHLOROPHENYL { specie { - nMoles 1; molWeight 111.552; } thermodynamics @@ -444,7 +418,6 @@ Ni3S4(cr) { specie { - nMoles 1; molWeight 304.386; } thermodynamics @@ -460,7 +433,6 @@ C2HBr2_Radical { specie { - nMoles 1; molWeight 184.832; } thermodynamics @@ -476,7 +448,6 @@ NOO-___anion { specie { - nMoles 1; molWeight 46.006; } thermodynamics @@ -492,7 +463,6 @@ C10H21,n-decyl { specie { - nMoles 1; molWeight 141.279; } thermodynamics @@ -508,7 +478,6 @@ H2 { specie { - nMoles 1; molWeight 2.01594; } thermodynamics @@ -524,7 +493,6 @@ F2O-__FOF- { specie { - nMoles 1; molWeight 53.9967; } thermodynamics @@ -540,7 +508,6 @@ CCl { specie { - nMoles 1; molWeight 47.4642; } thermodynamics @@ -556,7 +523,6 @@ AlCl+ { specie { - nMoles 1; molWeight 62.434; } thermodynamics @@ -572,7 +538,6 @@ C20H36O2_EtLinolea { specie { - nMoles 1; molWeight 308.509; } thermodynamics @@ -588,7 +553,6 @@ Cl2O__Cl-O-Cl { specie { - nMoles 1; molWeight 86.9054; } thermodynamics @@ -604,7 +568,6 @@ C6H8O_3,4DiMeFuran { specie { - nMoles 1; molWeight 96.1301; } thermodynamics @@ -620,7 +583,6 @@ NH4ClO4(II) { specie { - nMoles 1; molWeight 117.489; } thermodynamics @@ -636,7 +598,6 @@ C5H12O_3-Pentanol { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -652,7 +613,6 @@ C14H12_t-Stilbene { specie { - nMoles 1; molWeight 180.252; } thermodynamics @@ -668,7 +628,6 @@ K(L) { specie { - nMoles 1; molWeight 39.102; } thermodynamics @@ -684,7 +643,6 @@ C3H7NO2_Nitropro { specie { - nMoles 1; molWeight 89.0947; } thermodynamics @@ -700,7 +658,6 @@ C3H6S__THIETHANE { specie { - nMoles 1; molWeight 74.1453; } thermodynamics @@ -716,7 +673,6 @@ CH3NH-_radical_a { specie { - nMoles 1; molWeight 30.0503; } thermodynamics @@ -732,7 +688,6 @@ C9H7_INDENYL_RAD { specie { - nMoles 1; molWeight 115.156; } thermodynamics @@ -748,7 +703,6 @@ PbBr4 { specie { - nMoles 1; molWeight 526.794; } thermodynamics @@ -764,7 +718,6 @@ C3N2O__NCO-CO-CN { specie { - nMoles 1; molWeight 80.0463; } thermodynamics @@ -780,7 +733,6 @@ C6H14O_1-hexanol { specie { - nMoles 1; molWeight 102.178; } thermodynamics @@ -796,7 +748,6 @@ C17H31O2_Palmitole { specie { - nMoles 1; molWeight 267.435; } thermodynamics @@ -812,7 +763,6 @@ C2H5NO3_EtNitrate { specie { - nMoles 1; molWeight 91.067; } thermodynamics @@ -828,7 +778,6 @@ Bi2O3_O=Bi-O-Bi=O { specie { - nMoles 1; molWeight 465.958; } thermodynamics @@ -844,7 +793,6 @@ C4H6O2_MeAcrylat { specie { - nMoles 1; molWeight 86.0912; } thermodynamics @@ -860,7 +808,6 @@ C8H9+_1,3MeC6H4CH2 { specie { - nMoles 1; molWeight 105.16; } thermodynamics @@ -876,7 +823,6 @@ C2H2I2_trans { specie { - nMoles 1; molWeight 279.847; } thermodynamics @@ -892,7 +838,6 @@ C60 { specie { - nMoles 1; molWeight 720.669; } thermodynamics @@ -908,7 +853,6 @@ HCl { specie { - nMoles 1; molWeight 36.461; } thermodynamics @@ -924,7 +868,6 @@ C10H21_3by4-decyl { specie { - nMoles 1; molWeight 141.279; } thermodynamics @@ -940,7 +883,6 @@ CH2F { specie { - nMoles 1; molWeight 33.0255; } thermodynamics @@ -956,7 +898,6 @@ HNOH_cis__ATcT_C { specie { - nMoles 1; molWeight 32.022; } thermodynamics @@ -972,7 +913,6 @@ NH2CH2C(O)OH { specie { - nMoles 1; molWeight 75.0677; } thermodynamics @@ -988,7 +928,6 @@ HNO2_equil__ATcT { specie { - nMoles 1; molWeight 47.0135; } thermodynamics @@ -1004,7 +943,6 @@ FeCl3(L) { specie { - nMoles 1; molWeight 162.206; } thermodynamics @@ -1020,7 +958,6 @@ C3H2Br2__1,3_Dib { specie { - nMoles 1; molWeight 197.851; } thermodynamics @@ -1036,7 +973,6 @@ C4H8N8O8_HMX { specie { - nMoles 1; molWeight 296.157; } thermodynamics @@ -1052,7 +988,6 @@ SnCl4 { specie { - nMoles 1; molWeight 260.502; } thermodynamics @@ -1068,7 +1003,6 @@ C6H11_2M-1ENE-5YL { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -1084,7 +1018,6 @@ C5H2Cl3_VinAllenyl { specie { - nMoles 1; molWeight 168.431; } thermodynamics @@ -1100,7 +1033,6 @@ PS { specie { - nMoles 1; molWeight 63.0378; } thermodynamics @@ -1116,7 +1048,6 @@ BCl3 { specie { - nMoles 1; molWeight 117.17; } thermodynamics @@ -1132,7 +1063,6 @@ C2H4F2__HFC-152a { specie { - nMoles 1; molWeight 66.051; } thermodynamics @@ -1148,7 +1078,6 @@ MgF { specie { - nMoles 1; molWeight 43.3104; } thermodynamics @@ -1164,7 +1093,6 @@ BO- { specie { - nMoles 1; molWeight 26.8109; } thermodynamics @@ -1180,7 +1108,6 @@ C15H30___1-penta { specie { - nMoles 1; molWeight 210.406; } thermodynamics @@ -1196,7 +1123,6 @@ B2O3 { specie { - nMoles 1; molWeight 69.6202; } thermodynamics @@ -1212,7 +1138,6 @@ s-1-C10H7-C*=CH2 { specie { - nMoles 1; molWeight 153.206; } thermodynamics @@ -1228,7 +1153,6 @@ CS { specie { - nMoles 1; molWeight 44.0752; } thermodynamics @@ -1244,7 +1168,6 @@ C5H11OH__1-penta { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -1260,7 +1183,6 @@ H2NN+_Isodiazene+ { specie { - nMoles 1; molWeight 30.0288; } thermodynamics @@ -1276,7 +1198,6 @@ C+ { specie { - nMoles 1; molWeight 12.0106; } thermodynamics @@ -1292,7 +1213,6 @@ C10H10_2-meIndene { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -1308,7 +1228,6 @@ C7H16O_neo-C7H16O { specie { - nMoles 1; molWeight 116.205; } thermodynamics @@ -1324,7 +1243,6 @@ C6H5F+__Cation { specie { - nMoles 1; molWeight 96.1046; } thermodynamics @@ -1340,7 +1258,6 @@ N2H- { specie { - nMoles 1; molWeight 29.0219; } thermodynamics @@ -1356,7 +1273,6 @@ C6H10_1,3-Hexadien { specie { - nMoles 1; molWeight 82.1466; } thermodynamics @@ -1372,7 +1288,6 @@ C9H17_1-nonenyl-4 { specie { - nMoles 1; molWeight 125.236; } thermodynamics @@ -1388,7 +1303,6 @@ C10H7-CCH { specie { - nMoles 1; molWeight 152.198; } thermodynamics @@ -1404,7 +1318,6 @@ C2H4O2_HG(O)OCH3 { specie { - nMoles 1; molWeight 60.053; } thermodynamics @@ -1420,7 +1333,6 @@ B3O3Cl3 { specie { - nMoles 1; molWeight 186.79; } thermodynamics @@ -1436,7 +1348,6 @@ C3Cl4_PerClAllene { specie { - nMoles 1; molWeight 177.845; } thermodynamics @@ -1452,7 +1363,6 @@ Al2O3(L) { specie { - nMoles 1; molWeight 101.961; } thermodynamics @@ -1468,7 +1378,6 @@ C13H10__Fluorene { specie { - nMoles 1; molWeight 166.225; } thermodynamics @@ -1484,7 +1393,6 @@ C5H9N__Cy { specie { - nMoles 1; molWeight 83.1342; } thermodynamics @@ -1500,7 +1408,6 @@ C6H4Cl2_p-Clbenzen { specie { - nMoles 1; molWeight 147.005; } thermodynamics @@ -1516,7 +1423,6 @@ NITRO-BENZENE { specie { - nMoles 1; molWeight 123.112; } thermodynamics @@ -1532,7 +1438,6 @@ C6H5OH,phenol { specie { - nMoles 1; molWeight 94.1141; } thermodynamics @@ -1548,7 +1453,6 @@ C3Br3_1,2,3_CyRad { specie { - nMoles 1; molWeight 275.736; } thermodynamics @@ -1564,7 +1468,6 @@ s-*CH2NO2 { specie { - nMoles 1; molWeight 60.0326; } thermodynamics @@ -1580,7 +1483,6 @@ C2Cl3F3_FC-113A { specie { - nMoles 1; molWeight 187.377; } thermodynamics @@ -1596,7 +1498,6 @@ C12H9Cl { specie { - nMoles 1; molWeight 188.659; } thermodynamics @@ -1612,7 +1513,6 @@ CH3-O-C(O)-NH2 { specie { - nMoles 1; molWeight 75.0677; } thermodynamics @@ -1628,7 +1528,6 @@ C18H31O2_Linoleate { specie { - nMoles 1; molWeight 279.447; } thermodynamics @@ -1644,7 +1543,6 @@ C6H8O_2,5DiMeFuran { specie { - nMoles 1; molWeight 96.1301; } thermodynamics @@ -1660,7 +1558,6 @@ C8H7_C6H4CH=CH2 { specie { - nMoles 1; molWeight 103.145; } thermodynamics @@ -1676,7 +1573,6 @@ MgClF { specie { - nMoles 1; molWeight 78.7634; } thermodynamics @@ -1692,7 +1588,6 @@ C16H10_Pyrene { specie { - nMoles 1; molWeight 202.258; } thermodynamics @@ -1708,7 +1603,6 @@ SiO2(a-qz) { specie { - nMoles 1; molWeight 60.0848; } thermodynamics @@ -1724,7 +1618,6 @@ s-1-C4H8__1-buten { specie { - nMoles 1; molWeight 56.1084; } thermodynamics @@ -1740,7 +1633,6 @@ C4H6__1,3-butadien { specie { - nMoles 1; molWeight 54.0924; } thermodynamics @@ -1756,7 +1648,6 @@ s-1,2-C6H4_BENZYNE { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -1772,7 +1663,6 @@ C5H10O2_EtPropanoa { specie { - nMoles 1; molWeight 102.134; } thermodynamics @@ -1788,7 +1678,6 @@ C14H14_Bibenzyl { specie { - nMoles 1; molWeight 182.268; } thermodynamics @@ -1804,7 +1693,6 @@ OS(liq) { specie { - nMoles 1; molWeight 190.2; } thermodynamics @@ -1820,7 +1708,6 @@ CH2NH+_MethaneIm { specie { - nMoles 1; molWeight 29.0412; } thermodynamics @@ -1836,7 +1723,6 @@ HS2_anharmonic { specie { - nMoles 1; molWeight 65.136; } thermodynamics @@ -1852,7 +1738,6 @@ CH2__EQUILIBRIUM { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -1868,7 +1753,6 @@ CNH2__triradical { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -1884,7 +1768,6 @@ MgSiO3(I) { specie { - nMoles 1; molWeight 100.396; } thermodynamics @@ -1900,7 +1783,6 @@ C4H7O__*(CH2)3CHO { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -1916,7 +1798,6 @@ HClO3 { specie { - nMoles 1; molWeight 84.4592; } thermodynamics @@ -1932,7 +1813,6 @@ C2H3F3__FC-143A { specie { - nMoles 1; molWeight 84.0414; } thermodynamics @@ -1948,7 +1828,6 @@ C5H10__2MB-1-ene { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -1964,7 +1843,6 @@ C2H3O2_HOCHCH=O { specie { - nMoles 1; molWeight 59.045; } thermodynamics @@ -1980,7 +1858,6 @@ C4H6__1,2-butadi { specie { - nMoles 1; molWeight 54.0924; } thermodynamics @@ -1996,7 +1873,6 @@ CuCl { specie { - nMoles 1; molWeight 98.993; } thermodynamics @@ -2012,7 +1888,6 @@ SO- { specie { - nMoles 1; molWeight 48.0639; } thermodynamics @@ -2028,7 +1903,6 @@ PbCl2 { specie { - nMoles 1; molWeight 278.096; } thermodynamics @@ -2044,7 +1918,6 @@ C12H23O2__7,9 { specie { - nMoles 1; molWeight 199.316; } thermodynamics @@ -2060,7 +1933,6 @@ Fe3O4(S)_Solid-B { specie { - nMoles 1; molWeight 231.539; } thermodynamics @@ -2076,7 +1948,6 @@ C2_triplet { specie { - nMoles 1; molWeight 24.0223; } thermodynamics @@ -2092,7 +1963,6 @@ Zr+ { specie { - nMoles 1; molWeight 91.2195; } thermodynamics @@ -2108,7 +1978,6 @@ SF2+ { specie { - nMoles 1; molWeight 70.0603; } thermodynamics @@ -2124,7 +1993,6 @@ PETN___Solid { specie { - nMoles 1; molWeight 316.139; } thermodynamics @@ -2140,7 +2008,6 @@ C3H3O__CH2=CHC*O { specie { - nMoles 1; molWeight 55.0568; } thermodynamics @@ -2156,7 +2023,6 @@ SB(CH3)2 { specie { - nMoles 1; molWeight 151.82; } thermodynamics @@ -2172,7 +2038,6 @@ BF2Cl { specie { - nMoles 1; molWeight 84.2608; } thermodynamics @@ -2188,7 +2053,6 @@ C2N2_Isocyanogen { specie { - nMoles 1; molWeight 52.0357; } thermodynamics @@ -2204,7 +2068,6 @@ Sb(OH)2 { specie { - nMoles 1; molWeight 155.765; } thermodynamics @@ -2220,7 +2083,6 @@ MgS(L) { specie { - nMoles 1; molWeight 56.376; } thermodynamics @@ -2236,7 +2098,6 @@ C4H6O2_Crotonic_ac { specie { - nMoles 1; molWeight 86.0912; } thermodynamics @@ -2252,7 +2113,6 @@ BOCl { specie { - nMoles 1; molWeight 62.2634; } thermodynamics @@ -2268,7 +2128,6 @@ H { specie { - nMoles 1; molWeight 1.00797; } thermodynamics @@ -2284,7 +2143,6 @@ HNNH+_Trans { specie { - nMoles 1; molWeight 30.0288; } thermodynamics @@ -2300,7 +2158,6 @@ s-*CH2NH2+ { specie { - nMoles 1; molWeight 30.0492; } thermodynamics @@ -2316,7 +2173,6 @@ PbF { specie { - nMoles 1; molWeight 226.188; } thermodynamics @@ -2332,7 +2188,6 @@ C6H12_4MP-2en_tran { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -2348,7 +2203,6 @@ CHBr2F__FC-23 { specie { - nMoles 1; molWeight 191.819; } thermodynamics @@ -2364,7 +2218,6 @@ C8H5_HCC-CH=CH-C { specie { - nMoles 1; molWeight 101.129; } thermodynamics @@ -2380,7 +2233,6 @@ C5H11,pentyl { specie { - nMoles 1; molWeight 71.1434; } thermodynamics @@ -2396,7 +2248,6 @@ AlBr2 { specie { - nMoles 1; molWeight 186.783; } thermodynamics @@ -2412,7 +2263,6 @@ F+ { specie { - nMoles 1; molWeight 18.9979; } thermodynamics @@ -2428,7 +2278,6 @@ CHD2NO2 { specie { - nMoles 1; molWeight 63.0528; } thermodynamics @@ -2444,7 +2293,6 @@ o-C6H4I2 { specie { - nMoles 1; molWeight 329.908; } thermodynamics @@ -2460,7 +2308,6 @@ HS2__RRHO { specie { - nMoles 1; molWeight 65.136; } thermodynamics @@ -2476,7 +2323,6 @@ Al { specie { - nMoles 1; molWeight 26.9815; } thermodynamics @@ -2492,7 +2338,6 @@ N2H2_cis { specie { - nMoles 1; molWeight 30.0293; } thermodynamics @@ -2508,7 +2353,6 @@ O4_cyclo { specie { - nMoles 1; molWeight 63.9976; } thermodynamics @@ -2524,7 +2368,6 @@ BrI { specie { - nMoles 1; molWeight 206.805; } thermodynamics @@ -2540,7 +2383,6 @@ C4H9_t-butyl { specie { - nMoles 1; molWeight 57.1163; } thermodynamics @@ -2556,7 +2398,6 @@ ND3 { specie { - nMoles 1; molWeight 20.049; } thermodynamics @@ -2572,7 +2413,6 @@ CF2- { specie { - nMoles 1; molWeight 50.0085; } thermodynamics @@ -2588,7 +2428,6 @@ Ge(S) { specie { - nMoles 1; molWeight 72.59; } thermodynamics @@ -2604,7 +2443,6 @@ C5H7_1,3-diene-5yl { specie { - nMoles 1; molWeight 67.1115; } thermodynamics @@ -2620,7 +2458,6 @@ C9H12__C(CH=CH2)4 { specie { - nMoles 1; molWeight 120.196; } thermodynamics @@ -2636,7 +2473,6 @@ C2F5___PentaFluo { specie { - nMoles 1; molWeight 119.014; } thermodynamics @@ -2652,7 +2488,6 @@ C5H8O_1-C5H7-3-OH { specie { - nMoles 1; molWeight 84.1189; } thermodynamics @@ -2668,7 +2503,6 @@ PH2- { specie { - nMoles 1; molWeight 32.9903; } thermodynamics @@ -2684,7 +2518,6 @@ C12H5O3Cl4_DOH2 { specie { - nMoles 1; molWeight 338.984; } thermodynamics @@ -2700,7 +2533,6 @@ C2H5O__CH3CH2O* { specie { - nMoles 1; molWeight 45.0616; } thermodynamics @@ -2716,7 +2548,6 @@ C22H44O2_Behenic { specie { - nMoles 1; molWeight 340.595; } thermodynamics @@ -2732,7 +2563,6 @@ Al2 { specie { - nMoles 1; molWeight 53.963; } thermodynamics @@ -2748,7 +2578,6 @@ NaO2(L) { specie { - nMoles 1; molWeight 54.9886; } thermodynamics @@ -2764,7 +2593,6 @@ SiO2(b-crt) { specie { - nMoles 1; molWeight 60.0848; } thermodynamics @@ -2780,7 +2608,6 @@ C2Cl2F2_1,2-trans { specie { - nMoles 1; molWeight 132.925; } thermodynamics @@ -2796,7 +2623,6 @@ C6H5_FULVENYL_RA { specie { - nMoles 1; molWeight 77.1068; } thermodynamics @@ -2812,7 +2638,6 @@ C7H8O2__Guaiacol { specie { - nMoles 1; molWeight 124.141; } thermodynamics @@ -2828,7 +2653,6 @@ MnO_(L) { specie { - nMoles 1; molWeight 70.9374; } thermodynamics @@ -2844,7 +2668,6 @@ C3F8_FC-218 { specie { - nMoles 1; molWeight 188.021; } thermodynamics @@ -2860,7 +2683,6 @@ MgF+ { specie { - nMoles 1; molWeight 43.3099; } thermodynamics @@ -2876,7 +2698,6 @@ C12H4O2Cl4__2378 { specie { - nMoles 1; molWeight 321.976; } thermodynamics @@ -2892,7 +2713,6 @@ C2D6O_dimeether { specie { - nMoles 1; molWeight 52.1063; } thermodynamics @@ -2908,7 +2728,6 @@ C16H29O2_paloleR { specie { - nMoles 1; molWeight 253.408; } thermodynamics @@ -2924,7 +2743,6 @@ N2H { specie { - nMoles 1; molWeight 29.0214; } thermodynamics @@ -2940,7 +2758,6 @@ CH(NO2)3 { specie { - nMoles 1; molWeight 151.036; } thermodynamics @@ -2956,7 +2773,6 @@ S6 { specie { - nMoles 1; molWeight 192.384; } thermodynamics @@ -2972,7 +2788,6 @@ C14H28___1-tetra { specie { - nMoles 1; molWeight 196.379; } thermodynamics @@ -2988,7 +2803,6 @@ H2NN-_Isodiazene- { specie { - nMoles 1; molWeight 30.0299; } thermodynamics @@ -3004,7 +2818,6 @@ GeS2_linear___HF { specie { - nMoles 1; molWeight 136.718; } thermodynamics @@ -3020,7 +2833,6 @@ P2H4 { specie { - nMoles 1; molWeight 65.9795; } thermodynamics @@ -3036,7 +2848,6 @@ C12_linear_singlet { specie { - nMoles 1; molWeight 144.134; } thermodynamics @@ -3052,7 +2863,6 @@ HCNO+_Fulminic_cat { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -3068,7 +2878,6 @@ CH3Cl { specie { - nMoles 1; molWeight 50.4881; } thermodynamics @@ -3084,7 +2893,6 @@ Ni- { specie { - nMoles 1; molWeight 58.7105; } thermodynamics @@ -3100,7 +2908,6 @@ F2O2__F-O-O-F { specie { - nMoles 1; molWeight 69.9956; } thermodynamics @@ -3116,7 +2923,6 @@ C10H14__C5H7-C5H7 { specie { - nMoles 1; molWeight 134.223; } thermodynamics @@ -3132,7 +2938,6 @@ H3PO__HOPH2 { specie { - nMoles 1; molWeight 49.9971; } thermodynamics @@ -3148,7 +2953,6 @@ Mg(L) { specie { - nMoles 1; molWeight 24.312; } thermodynamics @@ -3164,7 +2968,6 @@ C3F3__PerFOroargyl { specie { - nMoles 1; molWeight 93.0286; } thermodynamics @@ -3180,7 +2983,6 @@ Mo(L) { specie { - nMoles 1; molWeight 95.94; } thermodynamics @@ -3196,7 +2998,6 @@ CH2N2O__H2C=N-N=O { specie { - nMoles 1; molWeight 58.0399; } thermodynamics @@ -3212,7 +3013,6 @@ C8H18(L)_isooctane { specie { - nMoles 1; molWeight 114.233; } thermodynamics @@ -3228,7 +3028,6 @@ CBrCl2F___11B1 { specie { - nMoles 1; molWeight 181.816; } thermodynamics @@ -3244,7 +3043,6 @@ N2O5 { specie { - nMoles 1; molWeight 108.01; } thermodynamics @@ -3260,7 +3058,6 @@ H2SO4 { specie { - nMoles 1; molWeight 98.0775; } thermodynamics @@ -3276,7 +3073,6 @@ C2H4O2_acetaldeh { specie { - nMoles 1; molWeight 60.053; } thermodynamics @@ -3292,7 +3088,6 @@ FeS(L) { specie { - nMoles 1; molWeight 87.911; } thermodynamics @@ -3308,7 +3103,6 @@ C7H10_24C5H4(CH3)2 { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -3324,7 +3118,6 @@ CHF__singlet { specie { - nMoles 1; molWeight 32.0175; } thermodynamics @@ -3340,7 +3133,6 @@ C6H2 { specie { - nMoles 1; molWeight 74.0828; } thermodynamics @@ -3356,7 +3148,6 @@ SbF { specie { - nMoles 1; molWeight 140.748; } thermodynamics @@ -3372,7 +3163,6 @@ C2D4O_Acetaldehy { specie { - nMoles 1; molWeight 48.0781; } thermodynamics @@ -3388,7 +3178,6 @@ C8H8___1,3,5,7_Cy { specie { - nMoles 1; molWeight 104.153; } thermodynamics @@ -3404,7 +3193,6 @@ C4H5O2_MeAcrylatR { specie { - nMoles 1; molWeight 85.0833; } thermodynamics @@ -3420,7 +3208,6 @@ B2O { specie { - nMoles 1; molWeight 37.6214; } thermodynamics @@ -3436,7 +3223,6 @@ C8H6S__Benzothyo { specie { - nMoles 1; molWeight 134.201; } thermodynamics @@ -3452,7 +3238,6 @@ Si+ { specie { - nMoles 1; molWeight 28.0855; } thermodynamics @@ -3468,7 +3253,6 @@ SiCl4 { specie { - nMoles 1; molWeight 169.898; } thermodynamics @@ -3484,7 +3268,6 @@ NO2-cyclo_N(OO)- { specie { - nMoles 1; molWeight 46.006; } thermodynamics @@ -3500,7 +3283,6 @@ SiO2(b-qz) { specie { - nMoles 1; molWeight 60.0848; } thermodynamics @@ -3516,7 +3298,6 @@ FeCl2(S) { specie { - nMoles 1; molWeight 126.753; } thermodynamics @@ -3532,7 +3313,6 @@ C18H32O2_Linoleic { specie { - nMoles 1; molWeight 280.455; } thermodynamics @@ -3548,7 +3328,6 @@ N3 { specie { - nMoles 1; molWeight 42.0201; } thermodynamics @@ -3564,7 +3343,6 @@ CH4O2__CH3OOH { specie { - nMoles 1; molWeight 48.0418; } thermodynamics @@ -3580,7 +3358,6 @@ CBr2Cl2 { specie { - nMoles 1; molWeight 242.719; } thermodynamics @@ -3596,7 +3373,6 @@ PN { specie { - nMoles 1; molWeight 44.9805; } thermodynamics @@ -3612,7 +3388,6 @@ C4H4N2_PYRIMIDINE { specie { - nMoles 1; molWeight 80.0899; } thermodynamics @@ -3628,7 +3403,6 @@ C3Br3_Allene_Rad. { specie { - nMoles 1; molWeight 275.736; } thermodynamics @@ -3644,7 +3418,6 @@ BiO { specie { - nMoles 1; molWeight 224.979; } thermodynamics @@ -3660,7 +3433,6 @@ H2O+ { specie { - nMoles 1; molWeight 18.0148; } thermodynamics @@ -3676,7 +3448,6 @@ Fe2Cl6 { specie { - nMoles 1; molWeight 324.412; } thermodynamics @@ -3692,7 +3463,6 @@ CHBr3_Bromoform { specie { - nMoles 1; molWeight 252.722; } thermodynamics @@ -3708,7 +3478,6 @@ BI2 { specie { - nMoles 1; molWeight 264.62; } thermodynamics @@ -3724,7 +3493,6 @@ C2HClF_1,1-ClF { specie { - nMoles 1; molWeight 79.4817; } thermodynamics @@ -3740,7 +3508,6 @@ Mg2F4 { specie { - nMoles 1; molWeight 124.618; } thermodynamics @@ -3756,7 +3523,6 @@ C6H2Cl3O_RAD { specie { - nMoles 1; molWeight 196.441; } thermodynamics @@ -3772,7 +3538,6 @@ I2O__I-I-O { specie { - nMoles 1; molWeight 269.808; } thermodynamics @@ -3788,7 +3553,6 @@ N2H3___Rad. { specie { - nMoles 1; molWeight 31.0373; } thermodynamics @@ -3804,7 +3568,6 @@ BiF2 { specie { - nMoles 1; molWeight 246.977; } thermodynamics @@ -3820,7 +3583,6 @@ AlH3(a)_hexagonal { specie { - nMoles 1; molWeight 30.0054; } thermodynamics @@ -3836,7 +3598,6 @@ C6H9_c_CyHexenyl-3 { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -3852,7 +3613,6 @@ C9_linear_biradi { specie { - nMoles 1; molWeight 108.1; } thermodynamics @@ -3868,7 +3628,6 @@ P+ { specie { - nMoles 1; molWeight 30.9733; } thermodynamics @@ -3884,7 +3643,6 @@ CH3N3_MethylAzyd { specie { - nMoles 1; molWeight 57.0552; } thermodynamics @@ -3900,7 +3658,6 @@ BBr { specie { - nMoles 1; molWeight 90.7119; } thermodynamics @@ -3916,7 +3673,6 @@ C7H7_Cyheptatrien { specie { - nMoles 1; molWeight 91.1338; } thermodynamics @@ -3932,7 +3688,6 @@ MgH2(b) { specie { - nMoles 1; molWeight 26.3279; } thermodynamics @@ -3948,7 +3703,6 @@ n-C20H42_Eicosane { specie { - nMoles 1; molWeight 282.558; } thermodynamics @@ -3964,7 +3718,6 @@ FeS(a) { specie { - nMoles 1; molWeight 87.911; } thermodynamics @@ -3980,7 +3733,6 @@ RDX_Solid_293-47 { specie { - nMoles 1; molWeight 222.118; } thermodynamics @@ -3996,7 +3748,6 @@ I { specie { - nMoles 1; molWeight 126.904; } thermodynamics @@ -4012,7 +3763,6 @@ C2H5O__CH3-O-CH2 { specie { - nMoles 1; molWeight 45.0616; } thermodynamics @@ -4028,7 +3778,6 @@ C8H12_3,6-Dimeth { specie { - nMoles 1; molWeight 108.185; } thermodynamics @@ -4044,7 +3793,6 @@ CCl2F-CHF2 { specie { - nMoles 1; molWeight 152.931; } thermodynamics @@ -4060,7 +3808,6 @@ C4H8S2_1,4_Dithi { specie { - nMoles 1; molWeight 120.236; } thermodynamics @@ -4076,7 +3823,6 @@ C6H5OO_peroxy_rad { specie { - nMoles 1; molWeight 109.106; } thermodynamics @@ -4092,7 +3838,6 @@ CH3OO-__anion { specie { - nMoles 1; molWeight 47.0344; } thermodynamics @@ -4108,7 +3853,6 @@ CH3-CHBr2 { specie { - nMoles 1; molWeight 187.856; } thermodynamics @@ -4124,7 +3868,6 @@ H3O+ { specie { - nMoles 1; molWeight 19.0228; } thermodynamics @@ -4140,7 +3883,6 @@ C3HBr2*1,1-Radical { specie { - nMoles 1; molWeight 196.843; } thermodynamics @@ -4156,7 +3898,6 @@ C2Br2F4__CBrF2-C { specie { - nMoles 1; molWeight 259.818; } thermodynamics @@ -4172,7 +3913,6 @@ C7H8O_CRESOL { specie { - nMoles 1; molWeight 108.141; } thermodynamics @@ -4188,7 +3928,6 @@ FO3F { specie { - nMoles 1; molWeight 85.995; } thermodynamics @@ -4204,7 +3943,6 @@ CH3Br+_cation { specie { - nMoles 1; molWeight 94.9354; } thermodynamics @@ -4220,7 +3958,6 @@ C3H6O__C2H3-O-CH3 { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -4236,7 +3973,6 @@ Ca+ { specie { - nMoles 1; molWeight 40.0795; } thermodynamics @@ -4252,7 +3988,6 @@ FeCl2 { specie { - nMoles 1; molWeight 126.753; } thermodynamics @@ -4268,7 +4003,6 @@ C12H8_Acenaphtyl { specie { - nMoles 1; molWeight 152.198; } thermodynamics @@ -4284,7 +4018,6 @@ PF3Cl2 { specie { - nMoles 1; molWeight 158.875; } thermodynamics @@ -4300,7 +4033,6 @@ Mg2 { specie { - nMoles 1; molWeight 48.624; } thermodynamics @@ -4316,7 +4048,6 @@ O2_singlet { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -4332,7 +4063,6 @@ AlF+ { specie { - nMoles 1; molWeight 45.9794; } thermodynamics @@ -4348,7 +4078,6 @@ B2 { specie { - nMoles 1; molWeight 21.622; } thermodynamics @@ -4364,7 +4093,6 @@ C6H4ClO_o-Cl-pheno { specie { - nMoles 1; molWeight 127.551; } thermodynamics @@ -4380,7 +4108,6 @@ HPO2__HOPO { specie { - nMoles 1; molWeight 63.9806; } thermodynamics @@ -4396,7 +4123,6 @@ CNO { specie { - nMoles 1; molWeight 42.0173; } thermodynamics @@ -4412,7 +4138,6 @@ SB(l) { specie { - nMoles 1; molWeight 0; } thermodynamics @@ -4428,7 +4153,6 @@ CH3Br { specie { - nMoles 1; molWeight 94.936; } thermodynamics @@ -4444,7 +4168,6 @@ DO2- { specie { - nMoles 1; molWeight 34.0134; } thermodynamics @@ -4460,7 +4183,6 @@ CH4-__Anion { specie { - nMoles 1; molWeight 16.0436; } thermodynamics @@ -4476,7 +4198,6 @@ BH5 { specie { - nMoles 1; molWeight 15.8509; } thermodynamics @@ -4492,7 +4213,6 @@ C3F4__PerFAllene { specie { - nMoles 1; molWeight 112.027; } thermodynamics @@ -4508,7 +4228,6 @@ C2F { specie { - nMoles 1; molWeight 43.0207; } thermodynamics @@ -4524,7 +4243,6 @@ C16H33_Hexadecyl { specie { - nMoles 1; molWeight 225.441; } thermodynamics @@ -4540,7 +4258,6 @@ BENZOTRIFUROXAN { specie { - nMoles 1; molWeight 252.103; } thermodynamics @@ -4556,7 +4273,6 @@ CHI2 { specie { - nMoles 1; molWeight 266.828; } thermodynamics @@ -4572,7 +4288,6 @@ C4H2N2__Fumaroni { specie { - nMoles 1; molWeight 78.0739; } thermodynamics @@ -4588,7 +4303,6 @@ O-CHLOROPHENYL { specie { - nMoles 1; molWeight 111.552; } thermodynamics @@ -4604,7 +4318,6 @@ CD3_Methyl-D3 { specie { - nMoles 1; molWeight 18.0535; } thermodynamics @@ -4620,7 +4333,6 @@ C9H12__1-3-5-TMB { specie { - nMoles 1; molWeight 120.196; } thermodynamics @@ -4636,7 +4348,6 @@ C20H14_Alpha_BiN { specie { - nMoles 1; molWeight 254.335; } thermodynamics @@ -4652,7 +4363,6 @@ C2N2_Dicyanogen { specie { - nMoles 1; molWeight 52.0357; } thermodynamics @@ -4668,7 +4378,6 @@ H3B3O6 { specie { - nMoles 1; molWeight 131.453; } thermodynamics @@ -4684,7 +4393,6 @@ N { specie { - nMoles 1; molWeight 14.0067; } thermodynamics @@ -4700,7 +4408,6 @@ NO2F { specie { - nMoles 1; molWeight 65.0039; } thermodynamics @@ -4716,7 +4423,6 @@ CO2- { specie { - nMoles 1; molWeight 44.0105; } thermodynamics @@ -4732,7 +4438,6 @@ PCl3 { specie { - nMoles 1; molWeight 137.333; } thermodynamics @@ -4748,7 +4453,6 @@ Na2O2(a) { specie { - nMoles 1; molWeight 77.9784; } thermodynamics @@ -4764,7 +4468,6 @@ C2D_Ethynyl-D1 { specie { - nMoles 1; molWeight 26.0364; } thermodynamics @@ -4780,7 +4483,6 @@ Zn(L) { specie { - nMoles 1; molWeight 65.37; } thermodynamics @@ -4796,7 +4498,6 @@ GeH3Cl { specie { - nMoles 1; molWeight 111.067; } thermodynamics @@ -4812,7 +4513,6 @@ BrS { specie { - nMoles 1; molWeight 111.965; } thermodynamics @@ -4828,7 +4528,6 @@ C9H18O2_Nonanoic { specie { - nMoles 1; molWeight 158.243; } thermodynamics @@ -4844,7 +4543,6 @@ P2O5 { specie { - nMoles 1; molWeight 141.945; } thermodynamics @@ -4860,7 +4558,6 @@ MoC__Solid-C { specie { - nMoles 1; molWeight 107.951; } thermodynamics @@ -4876,7 +4573,6 @@ CF { specie { - nMoles 1; molWeight 31.0096; } thermodynamics @@ -4892,7 +4588,6 @@ C4H9_isobutyl_rad { specie { - nMoles 1; molWeight 57.1163; } thermodynamics @@ -4908,7 +4603,6 @@ CH3C-_triradical { specie { - nMoles 1; molWeight 27.0468; } thermodynamics @@ -4924,7 +4618,6 @@ CF3 { specie { - nMoles 1; molWeight 69.0063; } thermodynamics @@ -4940,7 +4633,6 @@ CH2N2_H2N-CN { specie { - nMoles 1; molWeight 42.0405; } thermodynamics @@ -4956,7 +4648,6 @@ C12H4Cl4O_2468 { specie { - nMoles 1; molWeight 305.977; } thermodynamics @@ -4972,7 +4663,6 @@ F2H-____FHF- { specie { - nMoles 1; molWeight 39.0053; } thermodynamics @@ -4988,7 +4678,6 @@ C6H3Cl3O_TriClPhen { specie { - nMoles 1; molWeight 197.449; } thermodynamics @@ -5004,7 +4693,6 @@ SiC { specie { - nMoles 1; molWeight 40.0971; } thermodynamics @@ -5020,7 +4708,6 @@ SbOH_tripet { specie { - nMoles 1; molWeight 138.757; } thermodynamics @@ -5036,7 +4723,6 @@ N2O { specie { - nMoles 1; molWeight 44.0128; } thermodynamics @@ -5052,7 +4738,6 @@ Tetryl_Solid_Yin { specie { - nMoles 1; molWeight 287.147; } thermodynamics @@ -5068,7 +4753,6 @@ C8H18,isooctane { specie { - nMoles 1; molWeight 114.233; } thermodynamics @@ -5084,7 +4768,6 @@ C5H10__2-Pentene { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -5100,7 +4783,6 @@ C6_linear_biradi { specie { - nMoles 1; molWeight 72.0669; } thermodynamics @@ -5116,7 +4798,6 @@ s-1,2-C7H5NS1,2-Be { specie { - nMoles 1; molWeight 135.189; } thermodynamics @@ -5132,7 +4813,6 @@ C8H_linear { specie { - nMoles 1; molWeight 97.0972; } thermodynamics @@ -5148,7 +4828,6 @@ CH3OH-_anion { specie { - nMoles 1; molWeight 32.043; } thermodynamics @@ -5164,7 +4843,6 @@ CF3O_Radical { specie { - nMoles 1; molWeight 85.0057; } thermodynamics @@ -5180,7 +4858,6 @@ C5H10O2_Peroxy-en { specie { - nMoles 1; molWeight 102.134; } thermodynamics @@ -5196,7 +4873,6 @@ SO3 { specie { - nMoles 1; molWeight 80.0622; } thermodynamics @@ -5212,7 +4888,6 @@ F2- { specie { - nMoles 1; molWeight 37.9973; } thermodynamics @@ -5228,7 +4903,6 @@ C2H4O_vinyl_alco { specie { - nMoles 1; molWeight 44.0536; } thermodynamics @@ -5244,7 +4918,6 @@ H2O2(L) { specie { - nMoles 1; molWeight 34.0147; } thermodynamics @@ -5260,7 +4933,6 @@ C3Cl3_triClallene { specie { - nMoles 1; molWeight 142.392; } thermodynamics @@ -5276,7 +4948,6 @@ PH2 { specie { - nMoles 1; molWeight 32.9897; } thermodynamics @@ -5292,7 +4963,6 @@ C5H6_1-ene-3yne, { specie { - nMoles 1; molWeight 66.1036; } thermodynamics @@ -5308,7 +4978,6 @@ C9H19_n-nonyl { specie { - nMoles 1; molWeight 127.252; } thermodynamics @@ -5324,7 +4993,6 @@ NiO(liq) { specie { - nMoles 1; molWeight 74.7094; } thermodynamics @@ -5340,7 +5008,6 @@ S-C5H11_1m-butyl { specie { - nMoles 1; molWeight 71.1434; } thermodynamics @@ -5356,7 +5023,6 @@ s-1,2-C2H2F2-cis { specie { - nMoles 1; molWeight 64.035; } thermodynamics @@ -5372,7 +5038,6 @@ B { specie { - nMoles 1; molWeight 10.811; } thermodynamics @@ -5388,7 +5053,6 @@ C2H2F4_1,1,2,2 { specie { - nMoles 1; molWeight 102.032; } thermodynamics @@ -5404,7 +5068,6 @@ C9H__linear { specie { - nMoles 1; molWeight 109.108; } thermodynamics @@ -5420,7 +5083,6 @@ C18H34O3_RicinOlei { specie { - nMoles 1; molWeight 298.47; } thermodynamics @@ -5436,7 +5098,6 @@ P { specie { - nMoles 1; molWeight 30.9738; } thermodynamics @@ -5452,7 +5113,6 @@ C4H7__cyclobutyl { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -5468,7 +5128,6 @@ C5H6_Vinyl-Allene { specie { - nMoles 1; molWeight 66.1036; } thermodynamics @@ -5484,7 +5143,6 @@ CT3__methyl_T-3 { specie { - nMoles 1; molWeight 155.711; } thermodynamics @@ -5500,7 +5158,6 @@ Sn(CH3)4 { specie { - nMoles 1; molWeight 178.83; } thermodynamics @@ -5516,7 +5173,6 @@ BiH3 { specie { - nMoles 1; molWeight 212.004; } thermodynamics @@ -5532,7 +5188,6 @@ HCCO_Ketyl_radical { specie { - nMoles 1; molWeight 41.0297; } thermodynamics @@ -5548,7 +5203,6 @@ CD4__RRHO { specie { - nMoles 1; molWeight 20.0676; } thermodynamics @@ -5564,7 +5218,6 @@ NH2__AMIDOGEN_RAD { specie { - nMoles 1; molWeight 16.0226; } thermodynamics @@ -5580,7 +5233,6 @@ C18H30O2_Linolenic { specie { - nMoles 1; molWeight 278.439; } thermodynamics @@ -5596,7 +5248,6 @@ C2H2FCl_1,1-FCl { specie { - nMoles 1; molWeight 80.4896; } thermodynamics @@ -5612,7 +5263,6 @@ Al(L) { specie { - nMoles 1; molWeight 26.9815; } thermodynamics @@ -5628,7 +5278,6 @@ C10H7-CH2CH2* { specie { - nMoles 1; molWeight 155.221; } thermodynamics @@ -5644,7 +5293,6 @@ BF2+ { specie { - nMoles 1; molWeight 48.8073; } thermodynamics @@ -5660,7 +5308,6 @@ C3H5O__*CH2C2H3O { specie { - nMoles 1; molWeight 57.0727; } thermodynamics @@ -5676,7 +5323,6 @@ CP { specie { - nMoles 1; molWeight 42.9849; } thermodynamics @@ -5692,7 +5338,6 @@ C7H5N___PhenylCN { specie { - nMoles 1; molWeight 103.125; } thermodynamics @@ -5708,7 +5353,6 @@ ND { specie { - nMoles 1; molWeight 16.0208; } thermodynamics @@ -5724,7 +5368,6 @@ Br+ { specie { - nMoles 1; molWeight 79.9004; } thermodynamics @@ -5740,7 +5383,6 @@ C4H5O__EtKetene { specie { - nMoles 1; molWeight 69.0838; } thermodynamics @@ -5756,7 +5398,6 @@ Ni3S2(b) { specie { - nMoles 1; molWeight 240.258; } thermodynamics @@ -5772,7 +5413,6 @@ C3F7_CF3CF*CF3_M { specie { - nMoles 1; molWeight 169.022; } thermodynamics @@ -5788,7 +5428,6 @@ C12H4Cl6O2_BIFENYL { specie { - nMoles 1; molWeight 392.882; } thermodynamics @@ -5804,7 +5443,6 @@ NH4NO3(I) { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -5820,7 +5458,6 @@ CH2OH+ { specie { - nMoles 1; molWeight 31.0339; } thermodynamics @@ -5836,7 +5473,6 @@ PCl2- { specie { - nMoles 1; molWeight 101.88; } thermodynamics @@ -5852,7 +5488,6 @@ HSO2__HO-SO { specie { - nMoles 1; molWeight 65.0708; } thermodynamics @@ -5868,7 +5503,6 @@ C19H40_NanoDecane { specie { - nMoles 1; molWeight 268.531; } thermodynamics @@ -5884,7 +5518,6 @@ CH3N2_cy(-CH*N=NH- { specie { - nMoles 1; molWeight 43.0485; } thermodynamics @@ -5900,7 +5533,6 @@ Ag_liq { specie { - nMoles 1; molWeight 107.87; } thermodynamics @@ -5916,7 +5548,6 @@ C3H7I_1-IodoProp { specie { - nMoles 1; molWeight 169.994; } thermodynamics @@ -5932,7 +5563,6 @@ C7H7O2__p-guyacyl { specie { - nMoles 1; molWeight 123.133; } thermodynamics @@ -5948,7 +5578,6 @@ C6H5_CHAIN { specie { - nMoles 1; molWeight 77.1068; } thermodynamics @@ -5964,7 +5593,6 @@ I2O__I-O-I { specie { - nMoles 1; molWeight 269.808; } thermodynamics @@ -5980,7 +5608,6 @@ C6H13__2-M-2yl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -5996,7 +5623,6 @@ C2H3O2_*CH2CH=O { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -6012,7 +5638,6 @@ C2Cl2F2_1,2-cis { specie { - nMoles 1; molWeight 132.925; } thermodynamics @@ -6028,7 +5653,6 @@ CHO+ { specie { - nMoles 1; molWeight 29.018; } thermodynamics @@ -6044,7 +5668,6 @@ C6H12_2Me-2en { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -6060,7 +5683,6 @@ Na(cr) { specie { - nMoles 1; molWeight 22.9898; } thermodynamics @@ -6076,7 +5698,6 @@ C5H9O2_MeButyratC2 { specie { - nMoles 1; molWeight 101.126; } thermodynamics @@ -6092,7 +5713,6 @@ SF- { specie { - nMoles 1; molWeight 51.0629; } thermodynamics @@ -6108,7 +5728,6 @@ DT { specie { - nMoles 1; molWeight 49.9141; } thermodynamics @@ -6124,7 +5743,6 @@ C9H7+_C6H5CH=C=CH { specie { - nMoles 1; molWeight 115.156; } thermodynamics @@ -6140,7 +5758,6 @@ C23H48__tricosan { specie { - nMoles 1; molWeight 324.639; } thermodynamics @@ -6156,7 +5773,6 @@ s-1,5-C6H4__cis { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -6172,7 +5788,6 @@ CO3-__gas { specie { - nMoles 1; molWeight 60.0099; } thermodynamics @@ -6188,7 +5803,6 @@ TF_Tritium_Fluor { specie { - nMoles 1; molWeight 66.8984; } thermodynamics @@ -6204,7 +5818,6 @@ HPO3__HOPO2 { specie { - nMoles 1; molWeight 79.98; } thermodynamics @@ -6220,7 +5833,6 @@ C10H20_3-decene- { specie { - nMoles 1; molWeight 140.271; } thermodynamics @@ -6236,7 +5848,6 @@ C3H5Cl__CHCl=CHCH3 { specie { - nMoles 1; molWeight 76.5263; } thermodynamics @@ -6252,7 +5863,6 @@ MgSiO3(II) { specie { - nMoles 1; molWeight 100.396; } thermodynamics @@ -6268,7 +5878,6 @@ BrOBr { specie { - nMoles 1; molWeight 175.801; } thermodynamics @@ -6284,7 +5893,6 @@ S3 { specie { - nMoles 1; molWeight 96.192; } thermodynamics @@ -6300,7 +5908,6 @@ C4H8O_n-Butanal { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -6316,7 +5923,6 @@ C3H3-_CH3CC*- { specie { - nMoles 1; molWeight 39.0579; } thermodynamics @@ -6332,7 +5938,6 @@ C4H9N_PYRROLIDINE { specie { - nMoles 1; molWeight 71.123; } thermodynamics @@ -6348,7 +5953,6 @@ C { specie { - nMoles 1; molWeight 12.0112; } thermodynamics @@ -6364,7 +5968,6 @@ PbCl3 { specie { - nMoles 1; molWeight 313.549; } thermodynamics @@ -6380,7 +5983,6 @@ KNO3(b)_Hexagonal { specie { - nMoles 1; molWeight 101.107; } thermodynamics @@ -6396,7 +5998,6 @@ SH { specie { - nMoles 1; molWeight 33.072; } thermodynamics @@ -6412,7 +6013,6 @@ C6H9_1-C5H7-3-CH2 { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -6428,7 +6028,6 @@ C8H14__cis_Penta { specie { - nMoles 1; molWeight 110.201; } thermodynamics @@ -6444,7 +6043,6 @@ GeS { specie { - nMoles 1; molWeight 104.654; } thermodynamics @@ -6460,7 +6058,6 @@ C8H6O2_BENZODIOXIN { specie { - nMoles 1; molWeight 134.136; } thermodynamics @@ -6476,7 +6073,6 @@ C12H9N__CARBAZOLE { specie { - nMoles 1; molWeight 167.212; } thermodynamics @@ -6492,7 +6088,6 @@ HOOOH { specie { - nMoles 1; molWeight 50.0141; } thermodynamics @@ -6508,7 +6103,6 @@ C4H6O4_Succinic_ac { specie { - nMoles 1; molWeight 118.09; } thermodynamics @@ -6524,7 +6118,6 @@ C24H48O2_Lignocer { specie { - nMoles 1; molWeight 368.649; } thermodynamics @@ -6540,7 +6133,6 @@ Pb(cr) { specie { - nMoles 1; molWeight 207.19; } thermodynamics @@ -6556,7 +6148,6 @@ HOBr { specie { - nMoles 1; molWeight 96.9083; } thermodynamics @@ -6572,7 +6163,6 @@ C12H7_Acenaphtynyl { specie { - nMoles 1; molWeight 151.19; } thermodynamics @@ -6588,7 +6178,6 @@ C5H3Cl3_CY-1,2,4Cl { specie { - nMoles 1; molWeight 169.439; } thermodynamics @@ -6604,7 +6193,6 @@ C3D6_Cyclopropan { specie { - nMoles 1; molWeight 48.1181; } thermodynamics @@ -6620,7 +6208,6 @@ Cl2O2 { specie { - nMoles 1; molWeight 102.905; } thermodynamics @@ -6636,7 +6223,6 @@ PH3+ { specie { - nMoles 1; molWeight 33.9972; } thermodynamics @@ -6652,7 +6238,6 @@ MgAl2O4(cr) { specie { - nMoles 1; molWeight 142.273; } thermodynamics @@ -6668,7 +6253,6 @@ Ca(L) { specie { - nMoles 1; molWeight 40.08; } thermodynamics @@ -6684,7 +6268,6 @@ NO3 { specie { - nMoles 1; molWeight 62.0049; } thermodynamics @@ -6700,7 +6283,6 @@ SiCl { specie { - nMoles 1; molWeight 63.539; } thermodynamics @@ -6716,7 +6298,6 @@ C11N_Cyanoundecyl { specie { - nMoles 1; molWeight 146.129; } thermodynamics @@ -6732,7 +6313,6 @@ s-1-C10H7CH2CH2OH { specie { - nMoles 1; molWeight 172.229; } thermodynamics @@ -6748,7 +6328,6 @@ C6H4O2__O=C6H4=O { specie { - nMoles 1; molWeight 108.098; } thermodynamics @@ -6764,7 +6343,6 @@ C2H3ClO2 { specie { - nMoles 1; molWeight 94.498; } thermodynamics @@ -6780,7 +6358,6 @@ S2F10 { specie { - nMoles 1; molWeight 254.112; } thermodynamics @@ -6796,7 +6373,6 @@ Hg(L) { specie { - nMoles 1; molWeight 200.59; } thermodynamics @@ -6812,7 +6388,6 @@ C12H4Cl5O2_Radic { specie { - nMoles 1; molWeight 357.429; } thermodynamics @@ -6828,7 +6403,6 @@ SiH4__Silane { specie { - nMoles 1; molWeight 32.1179; } thermodynamics @@ -6844,7 +6418,6 @@ C5H10O_2-Me_Furan { specie { - nMoles 1; molWeight 86.1349; } thermodynamics @@ -6860,7 +6433,6 @@ Ge { specie { - nMoles 1; molWeight 72.59; } thermodynamics @@ -6876,7 +6448,6 @@ C5H2Cl3_1,3,4_Cyc { specie { - nMoles 1; molWeight 168.431; } thermodynamics @@ -6892,7 +6463,6 @@ C9H8_INDENE { specie { - nMoles 1; molWeight 116.164; } thermodynamics @@ -6908,7 +6478,6 @@ C4H8O2_Butyricacid { specie { - nMoles 1; molWeight 88.1072; } thermodynamics @@ -6924,7 +6493,6 @@ CF3-CHClF__FC-124 { specie { - nMoles 1; molWeight 136.477; } thermodynamics @@ -6940,7 +6508,6 @@ Ag { specie { - nMoles 1; molWeight 107.87; } thermodynamics @@ -6956,7 +6523,6 @@ AlF2 { specie { - nMoles 1; molWeight 64.9783; } thermodynamics @@ -6972,7 +6538,6 @@ CF3-_anion { specie { - nMoles 1; molWeight 69.0069; } thermodynamics @@ -6988,7 +6553,6 @@ CHO { specie { - nMoles 1; molWeight 29.0185; } thermodynamics @@ -7004,7 +6568,6 @@ C7H14_CY-HEPTANE { specie { - nMoles 1; molWeight 98.1896; } thermodynamics @@ -7020,7 +6583,6 @@ C6H12_2-Me-1en { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -7036,7 +6598,6 @@ C5H10__2MB-3-ene { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -7052,7 +6613,6 @@ C2Br5 { specie { - nMoles 1; molWeight 423.527; } thermodynamics @@ -7068,7 +6628,6 @@ C6H2Cl3O3_BiCy { specie { - nMoles 1; molWeight 228.44; } thermodynamics @@ -7084,7 +6643,6 @@ CBrClF2 { specie { - nMoles 1; molWeight 165.362; } thermodynamics @@ -7100,7 +6658,6 @@ C11H22O2_cis-acid { specie { - nMoles 1; molWeight 186.297; } thermodynamics @@ -7116,7 +6673,6 @@ C8H5_C6H5-CC* { specie { - nMoles 1; molWeight 101.129; } thermodynamics @@ -7132,7 +6688,6 @@ COHCl2___Radical { specie { - nMoles 1; molWeight 99.9245; } thermodynamics @@ -7148,7 +6703,6 @@ C7H6O___C6H5-CHO { specie { - nMoles 1; molWeight 106.125; } thermodynamics @@ -7164,7 +6718,6 @@ C18H12__Naphtace { specie { - nMoles 1; molWeight 228.296; } thermodynamics @@ -7180,7 +6733,6 @@ C17H34O2_mepalmita { specie { - nMoles 1; molWeight 270.459; } thermodynamics @@ -7196,7 +6748,6 @@ C12H20O10_Cellobi { specie { - nMoles 1; molWeight 324.287; } thermodynamics @@ -7212,7 +6763,6 @@ C5H7Cl { specie { - nMoles 1; molWeight 102.565; } thermodynamics @@ -7228,7 +6778,6 @@ C7H16_n-heptane { specie { - nMoles 1; molWeight 100.206; } thermodynamics @@ -7244,7 +6793,6 @@ C8H6O_BENZOFURAN { specie { - nMoles 1; molWeight 118.136; } thermodynamics @@ -7260,7 +6808,6 @@ C10H20O2_cis-acid { specie { - nMoles 1; molWeight 172.27; } thermodynamics @@ -7276,7 +6823,6 @@ CHBr2CHBr2 { specie { - nMoles 1; molWeight 345.642; } thermodynamics @@ -7292,7 +6838,6 @@ C5H4O2_Ketene { specie { - nMoles 1; molWeight 96.0864; } thermodynamics @@ -7308,7 +6853,6 @@ C6D5,phenyl { specie { - nMoles 1; molWeight 82.1374; } thermodynamics @@ -7324,7 +6868,6 @@ NH4NO3(IV) { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -7340,7 +6883,6 @@ C3H2Cl__ClAllene { specie { - nMoles 1; molWeight 73.5024; } thermodynamics @@ -7356,7 +6898,6 @@ C3H5O2_Methyl_ac { specie { - nMoles 1; molWeight 73.0721; } thermodynamics @@ -7372,7 +6913,6 @@ CD___excited_4si { specie { - nMoles 1; molWeight 14.0252; } thermodynamics @@ -7388,7 +6928,6 @@ C14H10__Anthracene { specie { - nMoles 1; molWeight 178.236; } thermodynamics @@ -7404,7 +6943,6 @@ C4H5N__Pyrole_cy { specie { - nMoles 1; molWeight 67.0911; } thermodynamics @@ -7420,7 +6958,6 @@ Bi+ { specie { - nMoles 1; molWeight 208.979; } thermodynamics @@ -7436,7 +6973,6 @@ H2CNO_H2C*N=O { specie { - nMoles 1; molWeight 44.0332; } thermodynamics @@ -7452,7 +6988,6 @@ C11H__linear { specie { - nMoles 1; molWeight 133.131; } thermodynamics @@ -7468,7 +7003,6 @@ C4H7O_C2H5C(O)CH2 { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -7484,7 +7018,6 @@ C6H7__C5H4-1-CH3 { specie { - nMoles 1; molWeight 79.1227; } thermodynamics @@ -7500,7 +7033,6 @@ C3H5Cl_CH2=CHCH2Cl { specie { - nMoles 1; molWeight 76.5263; } thermodynamics @@ -7516,7 +7048,6 @@ Sn { specie { - nMoles 1; molWeight 118.69; } thermodynamics @@ -7532,7 +7063,6 @@ CH3C+_triradical { specie { - nMoles 1; molWeight 27.0457; } thermodynamics @@ -7548,7 +7078,6 @@ CO2_cy__C(OO) { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -7564,7 +7093,6 @@ PbCl4 { specie { - nMoles 1; molWeight 349.002; } thermodynamics @@ -7580,7 +7108,6 @@ C20H40O2_etStearat { specie { - nMoles 1; molWeight 312.541; } thermodynamics @@ -7596,7 +7123,6 @@ PCl { specie { - nMoles 1; molWeight 66.4268; } thermodynamics @@ -7612,7 +7138,6 @@ C3H7N__AZETIDINE { specie { - nMoles 1; molWeight 57.0959; } thermodynamics @@ -7628,7 +7153,6 @@ C2Cl4_Tetrachlor { specie { - nMoles 1; molWeight 165.834; } thermodynamics @@ -7644,7 +7168,6 @@ AlO- { specie { - nMoles 1; molWeight 42.9814; } thermodynamics @@ -7660,7 +7183,6 @@ C5H10_1-pentene { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -7676,7 +7198,6 @@ PT_TritiumPhosphor { specie { - nMoles 1; molWeight 31.9818; } thermodynamics @@ -7692,7 +7213,6 @@ C6H12_1-Hexene { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -7708,7 +7228,6 @@ Ar+ { specie { - nMoles 1; molWeight 39.9475; } thermodynamics @@ -7724,7 +7243,6 @@ C7H5O___C6H5-C*O { specie { - nMoles 1; molWeight 105.117; } thermodynamics @@ -7740,7 +7258,6 @@ CHF3__FLUOROFORM { specie { - nMoles 1; molWeight 70.0143; } thermodynamics @@ -7756,7 +7273,6 @@ BrCl { specie { - nMoles 1; molWeight 115.354; } thermodynamics @@ -7772,7 +7288,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics @@ -7788,7 +7303,6 @@ NO+ { specie { - nMoles 1; molWeight 30.0056; } thermodynamics @@ -7804,7 +7318,6 @@ s-1,3-C3H6S2_cy_di { specie { - nMoles 1; molWeight 106.209; } thermodynamics @@ -7820,7 +7333,6 @@ C- { specie { - nMoles 1; molWeight 12.0117; } thermodynamics @@ -7836,7 +7348,6 @@ C5H12O__3-methyl { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -7852,7 +7363,6 @@ C2H5O__CH2CH2OH { specie { - nMoles 1; molWeight 45.0616; } thermodynamics @@ -7868,7 +7378,6 @@ C2H4 { specie { - nMoles 1; molWeight 28.0542; } thermodynamics @@ -7884,7 +7393,6 @@ CH3CO+__Acetylium { specie { - nMoles 1; molWeight 43.0451; } thermodynamics @@ -7900,7 +7408,6 @@ C6H6_1,5-Hexadiyn { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -7916,7 +7423,6 @@ C10H10_2,2p(C5H5)2 { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -7932,7 +7438,6 @@ Mg(OH)2(cr) { specie { - nMoles 1; molWeight 58.3267; } thermodynamics @@ -7948,7 +7453,6 @@ C6H12_trans_3 { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -7964,7 +7468,6 @@ OH_A_2Sigma+ { specie { - nMoles 1; molWeight 17.0074; } thermodynamics @@ -7980,7 +7483,6 @@ SF4+ { specie { - nMoles 1; molWeight 108.057; } thermodynamics @@ -7996,7 +7498,6 @@ CH3OD_Methanol_d1 { specie { - nMoles 1; molWeight 33.0486; } thermodynamics @@ -8012,7 +7513,6 @@ C10_linear_single { specie { - nMoles 1; molWeight 120.112; } thermodynamics @@ -8028,7 +7528,6 @@ CH3COOH { specie { - nMoles 1; molWeight 60.053; } thermodynamics @@ -8044,7 +7543,6 @@ Ca(b) { specie { - nMoles 1; molWeight 40.08; } thermodynamics @@ -8060,7 +7558,6 @@ TCl_Tritium_Chlo { specie { - nMoles 1; molWeight 83.353; } thermodynamics @@ -8076,7 +7573,6 @@ OBrO { specie { - nMoles 1; molWeight 111.9; } thermodynamics @@ -8092,7 +7588,6 @@ C2Br2 { specie { - nMoles 1; molWeight 183.824; } thermodynamics @@ -8108,7 +7603,6 @@ C20H40O2_Archidic { specie { - nMoles 1; molWeight 312.541; } thermodynamics @@ -8124,7 +7618,6 @@ o-C6H3_Radical_Cy { specie { - nMoles 1; molWeight 75.0908; } thermodynamics @@ -8140,7 +7633,6 @@ Pt_(cr) { specie { - nMoles 1; molWeight 195.09; } thermodynamics @@ -8156,7 +7648,6 @@ B2H { specie { - nMoles 1; molWeight 22.63; } thermodynamics @@ -8172,7 +7663,6 @@ C6H10O5_Levogluco { specie { - nMoles 1; molWeight 162.144; } thermodynamics @@ -8188,7 +7678,6 @@ PFCl- { specie { - nMoles 1; molWeight 85.4257; } thermodynamics @@ -8204,7 +7693,6 @@ C9H20(L) { specie { - nMoles 1; molWeight 128.26; } thermodynamics @@ -8220,7 +7708,6 @@ C6H3_CH2=C*-CC-CCH { specie { - nMoles 1; molWeight 75.0908; } thermodynamics @@ -8236,7 +7723,6 @@ s-1-C10H7C*O { specie { - nMoles 1; molWeight 155.178; } thermodynamics @@ -8252,7 +7738,6 @@ CH2ClF__GC-31 { specie { - nMoles 1; molWeight 68.4785; } thermodynamics @@ -8268,7 +7753,6 @@ SbOH_singlet { specie { - nMoles 1; molWeight 138.757; } thermodynamics @@ -8284,7 +7768,6 @@ C24H46O2_Nervonic { specie { - nMoles 1; molWeight 366.633; } thermodynamics @@ -8300,7 +7783,6 @@ C10H10_1-meIndene { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -8316,7 +7798,6 @@ SF5+ { specie { - nMoles 1; molWeight 127.055; } thermodynamics @@ -8332,7 +7813,6 @@ C4H8_Cyclobutan { specie { - nMoles 1; molWeight 56.1084; } thermodynamics @@ -8348,7 +7828,6 @@ DCl { specie { - nMoles 1; molWeight 37.4671; } thermodynamics @@ -8364,7 +7843,6 @@ HD+ { specie { - nMoles 1; molWeight 3.02153; } thermodynamics @@ -8380,7 +7858,6 @@ NF3 { specie { - nMoles 1; molWeight 71.0019; } thermodynamics @@ -8396,7 +7873,6 @@ Na+ { specie { - nMoles 1; molWeight 22.9893; } thermodynamics @@ -8412,7 +7888,6 @@ C3HBr2O*__Radical { specie { - nMoles 1; molWeight 212.843; } thermodynamics @@ -8428,7 +7903,6 @@ s-1-C10H7O* { specie { - nMoles 1; molWeight 143.167; } thermodynamics @@ -8444,7 +7918,6 @@ HF { specie { - nMoles 1; molWeight 20.0064; } thermodynamics @@ -8460,7 +7933,6 @@ Pt_(liq) { specie { - nMoles 1; molWeight 195.09; } thermodynamics @@ -8476,7 +7948,6 @@ CNO- { specie { - nMoles 1; molWeight 42.0178; } thermodynamics @@ -8492,7 +7963,6 @@ CO { specie { - nMoles 1; molWeight 28.0106; } thermodynamics @@ -8508,7 +7978,6 @@ HgBr2(cr) { specie { - nMoles 1; molWeight 360.392; } thermodynamics @@ -8524,7 +7993,6 @@ Fe(OH)3(S) { specie { - nMoles 1; molWeight 106.869; } thermodynamics @@ -8540,7 +8008,6 @@ C7H8_Norbornadiene { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -8556,7 +8023,6 @@ C4H3_i-2yl_Rad { specie { - nMoles 1; molWeight 51.0685; } thermodynamics @@ -8572,7 +8038,6 @@ C8H15_1-octenyl- { specie { - nMoles 1; molWeight 111.209; } thermodynamics @@ -8588,7 +8053,6 @@ SiCl3 { specie { - nMoles 1; molWeight 134.445; } thermodynamics @@ -8604,7 +8068,6 @@ C2F6O2_CF3-OO-CF3 { specie { - nMoles 1; molWeight 170.011; } thermodynamics @@ -8620,7 +8083,6 @@ C12H4Cl4O2_1368 { specie { - nMoles 1; molWeight 321.976; } thermodynamics @@ -8636,7 +8098,6 @@ S4 { specie { - nMoles 1; molWeight 128.256; } thermodynamics @@ -8652,7 +8113,6 @@ Ni3S2(a) { specie { - nMoles 1; molWeight 240.258; } thermodynamics @@ -8668,7 +8128,6 @@ C3F7H__FC227EA { specie { - nMoles 1; molWeight 170.03; } thermodynamics @@ -8684,7 +8143,6 @@ HONC { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -8700,7 +8158,6 @@ C13H9__Phenalenyl { specie { - nMoles 1; molWeight 165.217; } thermodynamics @@ -8716,7 +8173,6 @@ NH2-_anion { specie { - nMoles 1; molWeight 16.0232; } thermodynamics @@ -8732,7 +8188,6 @@ CH { specie { - nMoles 1; molWeight 13.0191; } thermodynamics @@ -8748,7 +8203,6 @@ C14H28O2_Myristcac { specie { - nMoles 1; molWeight 228.378; } thermodynamics @@ -8764,7 +8218,6 @@ CH3Cl+_cation { specie { - nMoles 1; molWeight 50.4875; } thermodynamics @@ -8780,7 +8233,6 @@ N2H2_equil_&_trans { specie { - nMoles 1; molWeight 30.0293; } thermodynamics @@ -8796,7 +8248,6 @@ F { specie { - nMoles 1; molWeight 18.9984; } thermodynamics @@ -8812,7 +8263,6 @@ C6H6_BENZENE { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -8828,7 +8278,6 @@ C6H11O2_Caproyl_R { specie { - nMoles 1; molWeight 115.153; } thermodynamics @@ -8844,7 +8293,6 @@ HCO-_Formyl_anion { specie { - nMoles 1; molWeight 29.0191; } thermodynamics @@ -8860,7 +8308,6 @@ H2SO4(L) { specie { - nMoles 1; molWeight 98.0775; } thermodynamics @@ -8876,7 +8323,6 @@ H3PO3__O=PH(OH)2 { specie { - nMoles 1; molWeight 81.9959; } thermodynamics @@ -8892,7 +8338,6 @@ HOT__Water-T1 { specie { - nMoles 1; molWeight 64.9074; } thermodynamics @@ -8908,7 +8353,6 @@ B2O3(cr) { specie { - nMoles 1; molWeight 69.6202; } thermodynamics @@ -8924,7 +8368,6 @@ C7H13_1-hepten4-yl { specie { - nMoles 1; molWeight 97.1817; } thermodynamics @@ -8940,7 +8383,6 @@ Cr7C3(S) { specie { - nMoles 1; molWeight 400.005; } thermodynamics @@ -8956,7 +8398,6 @@ FeCl { specie { - nMoles 1; molWeight 91.3; } thermodynamics @@ -8972,7 +8413,6 @@ PbS(cr) { specie { - nMoles 1; molWeight 239.254; } thermodynamics @@ -8988,7 +8428,6 @@ C9H20O_1-Nonanol { specie { - nMoles 1; molWeight 144.259; } thermodynamics @@ -9004,7 +8443,6 @@ NO2__cyclo_N(OO) { specie { - nMoles 1; molWeight 46.0055; } thermodynamics @@ -9020,7 +8458,6 @@ ZrF2 { specie { - nMoles 1; molWeight 129.217; } thermodynamics @@ -9036,7 +8473,6 @@ C5H7NO__CH3C(O)C { specie { - nMoles 1; molWeight 97.1176; } thermodynamics @@ -9052,7 +8488,6 @@ C6H7+_C5H4-1-CH3 { specie { - nMoles 1; molWeight 79.1221; } thermodynamics @@ -9068,7 +8503,6 @@ PFCl2 { specie { - nMoles 1; molWeight 120.878; } thermodynamics @@ -9084,7 +8518,6 @@ HT { specie { - nMoles 1; molWeight 48.908; } thermodynamics @@ -9100,7 +8533,6 @@ C3D4_Cyclopropen { specie { - nMoles 1; molWeight 44.0898; } thermodynamics @@ -9116,7 +8548,6 @@ ZrN(L) { specie { - nMoles 1; molWeight 105.227; } thermodynamics @@ -9132,7 +8563,6 @@ CO2+ { specie { - nMoles 1; molWeight 44.0094; } thermodynamics @@ -9148,7 +8578,6 @@ s-1-C10H7-C2H5 { specie { - nMoles 1; molWeight 156.229; } thermodynamics @@ -9164,7 +8593,6 @@ SB(s) { specie { - nMoles 1; molWeight 121.75; } thermodynamics @@ -9180,7 +8608,6 @@ CClF2 { specie { - nMoles 1; molWeight 85.4609; } thermodynamics @@ -9196,7 +8623,6 @@ CH2BrF { specie { - nMoles 1; molWeight 112.926; } thermodynamics @@ -9212,7 +8638,6 @@ C7H10_55C5H4(CH3)2 { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -9228,7 +8653,6 @@ C2H2-_Vinylidene- { specie { - nMoles 1; molWeight 26.0388; } thermodynamics @@ -9244,7 +8668,6 @@ C3H3ON_Isoxazole { specie { - nMoles 1; molWeight 69.0635; } thermodynamics @@ -9260,7 +8683,6 @@ C10H16_exo_(JP-10) { specie { - nMoles 1; molWeight 136.239; } thermodynamics @@ -9276,7 +8698,6 @@ C4H8S_T.H.Thiophen { specie { - nMoles 1; molWeight 88.1724; } thermodynamics @@ -9292,7 +8713,6 @@ SF6- { specie { - nMoles 1; molWeight 146.055; } thermodynamics @@ -9308,7 +8728,6 @@ HNO3 { specie { - nMoles 1; molWeight 63.0129; } thermodynamics @@ -9324,7 +8743,6 @@ Zr(a) { specie { - nMoles 1; molWeight 91.22; } thermodynamics @@ -9340,7 +8758,6 @@ CNC { specie { - nMoles 1; molWeight 38.029; } thermodynamics @@ -9356,7 +8773,6 @@ C5H5OH_Cyclo-1,4 { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -9372,7 +8788,6 @@ C6H4Cl2_m-Clbenzen { specie { - nMoles 1; molWeight 147.005; } thermodynamics @@ -9388,7 +8803,6 @@ C2H5S_ethyl_thio { specie { - nMoles 1; molWeight 61.1262; } thermodynamics @@ -9404,7 +8818,6 @@ C7H13__Cyheptanyl { specie { - nMoles 1; molWeight 97.1817; } thermodynamics @@ -9420,7 +8833,6 @@ N+ { specie { - nMoles 1; molWeight 14.0062; } thermodynamics @@ -9436,7 +8848,6 @@ C6H11__Cyhexyl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -9452,7 +8863,6 @@ PbO2 { specie { - nMoles 1; molWeight 239.189; } thermodynamics @@ -9468,7 +8878,6 @@ C(NO)-_cy { specie { - nMoles 1; molWeight 42.0178; } thermodynamics @@ -9484,7 +8893,6 @@ o-C6H5BrO_trans_E { specie { - nMoles 1; molWeight 173.007; } thermodynamics @@ -9500,7 +8908,6 @@ Ir_(g)_Iridium { specie { - nMoles 1; molWeight 192.2; } thermodynamics @@ -9516,7 +8923,6 @@ NO2+ { specie { - nMoles 1; molWeight 46.005; } thermodynamics @@ -9532,7 +8938,6 @@ C2H3Cl { specie { - nMoles 1; molWeight 62.4992; } thermodynamics @@ -9548,7 +8953,6 @@ MgCO3(L) { specie { - nMoles 1; molWeight 84.3213; } thermodynamics @@ -9564,7 +8968,6 @@ Fe(CO)5 { specie { - nMoles 1; molWeight 195.9; } thermodynamics @@ -9580,7 +8983,6 @@ CHClF { specie { - nMoles 1; molWeight 67.4705; } thermodynamics @@ -9596,7 +8998,6 @@ C2H2F3 { specie { - nMoles 1; molWeight 83.0334; } thermodynamics @@ -9612,7 +9013,6 @@ C6H5I+_Iodobenze { specie { - nMoles 1; molWeight 204.011; } thermodynamics @@ -9628,7 +9028,6 @@ C32H14_Ovalene { specie { - nMoles 1; molWeight 398.468; } thermodynamics @@ -9644,7 +9043,6 @@ CBr2_Radical { specie { - nMoles 1; molWeight 171.813; } thermodynamics @@ -9660,7 +9058,6 @@ MnO_(S) { specie { - nMoles 1; molWeight 70.9374; } thermodynamics @@ -9676,7 +9073,6 @@ C2H5N3_Ethyl_Azyd { specie { - nMoles 1; molWeight 71.0823; } thermodynamics @@ -9692,7 +9088,6 @@ C5H8__CycloPente { specie { - nMoles 1; molWeight 68.1195; } thermodynamics @@ -9708,7 +9103,6 @@ CH2N2_cy(-CH=N-NH) { specie { - nMoles 1; molWeight 42.0405; } thermodynamics @@ -9724,7 +9118,6 @@ ZrCl2________GAS { specie { - nMoles 1; molWeight 162.126; } thermodynamics @@ -9740,7 +9133,6 @@ C4H9NO2_Nitrobuta { specie { - nMoles 1; molWeight 103.122; } thermodynamics @@ -9756,7 +9148,6 @@ Cr3C2(S) { specie { - nMoles 1; molWeight 180.01; } thermodynamics @@ -9772,7 +9163,6 @@ PCl5 { specie { - nMoles 1; molWeight 208.239; } thermodynamics @@ -9788,7 +9178,6 @@ N4-_tetrahedral { specie { - nMoles 1; molWeight 56.0273; } thermodynamics @@ -9804,7 +9193,6 @@ O4-_cyclo_anion { specie { - nMoles 1; molWeight 63.9981; } thermodynamics @@ -9820,7 +9208,6 @@ C6H5NO_Nitrosobe { specie { - nMoles 1; molWeight 107.113; } thermodynamics @@ -9836,7 +9223,6 @@ CClF3___FC-13 { specie { - nMoles 1; molWeight 104.459; } thermodynamics @@ -9852,7 +9238,6 @@ P2O4 { specie { - nMoles 1; molWeight 125.945; } thermodynamics @@ -9868,7 +9253,6 @@ CON3___Radical { specie { - nMoles 1; molWeight 70.0307; } thermodynamics @@ -9884,7 +9268,6 @@ C5H6_3-ene-1yne, { specie { - nMoles 1; molWeight 66.1036; } thermodynamics @@ -9900,7 +9283,6 @@ CI2 { specie { - nMoles 1; molWeight 265.82; } thermodynamics @@ -9916,7 +9298,6 @@ NH { specie { - nMoles 1; molWeight 15.0147; } thermodynamics @@ -9932,7 +9313,6 @@ C5H9O2_MeButyratC4 { specie { - nMoles 1; molWeight 101.126; } thermodynamics @@ -9948,7 +9328,6 @@ HNO- { specie { - nMoles 1; molWeight 31.0146; } thermodynamics @@ -9964,7 +9343,6 @@ CHF+ { specie { - nMoles 1; molWeight 32.017; } thermodynamics @@ -9980,7 +9358,6 @@ C10H8__AZULENE { specie { - nMoles 1; molWeight 128.175; } thermodynamics @@ -9996,7 +9373,6 @@ PF2Cl3 { specie { - nMoles 1; molWeight 175.33; } thermodynamics @@ -10012,7 +9388,6 @@ C8_linear_triplet { specie { - nMoles 1; molWeight 96.0892; } thermodynamics @@ -10028,7 +9403,6 @@ CCl3O* { specie { - nMoles 1; molWeight 134.37; } thermodynamics @@ -10044,7 +9418,6 @@ C6H4N4O2_4-Nitro { specie { - nMoles 1; molWeight 164.124; } thermodynamics @@ -10060,7 +9433,6 @@ NiO(cr)A { specie { - nMoles 1; molWeight 74.7094; } thermodynamics @@ -10076,7 +9448,6 @@ C3H6O2_EthylFormat { specie { - nMoles 1; molWeight 74.0801; } thermodynamics @@ -10092,7 +9463,6 @@ C6HCl3OH__3-YL_RAD { specie { - nMoles 1; molWeight 196.441; } thermodynamics @@ -10108,7 +9478,6 @@ s-1,3-C6H4_BENZYNE { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -10124,7 +9493,6 @@ CCl3 { specie { - nMoles 1; molWeight 118.37; } thermodynamics @@ -10140,7 +9508,6 @@ GeCl3 { specie { - nMoles 1; molWeight 178.949; } thermodynamics @@ -10156,7 +9523,6 @@ C14H6N6O12_HNS { specie { - nMoles 1; molWeight 450.237; } thermodynamics @@ -10172,7 +9538,6 @@ SiHCl3 { specie { - nMoles 1; molWeight 135.453; } thermodynamics @@ -10188,7 +9553,6 @@ C3H6O2__Glycidol { specie { - nMoles 1; molWeight 74.0801; } thermodynamics @@ -10204,7 +9568,6 @@ PbS { specie { - nMoles 1; molWeight 239.254; } thermodynamics @@ -10220,7 +9583,6 @@ C2H6S2_(CH3SSCH3) { specie { - nMoles 1; molWeight 94.1981; } thermodynamics @@ -10236,7 +9598,6 @@ PbBr3 { specie { - nMoles 1; molWeight 446.893; } thermodynamics @@ -10252,7 +9613,6 @@ C2H4F2__HFC-152 { specie { - nMoles 1; molWeight 66.051; } thermodynamics @@ -10268,7 +9628,6 @@ PF- { specie { - nMoles 1; molWeight 49.9727; } thermodynamics @@ -10284,7 +9643,6 @@ OCCN { specie { - nMoles 1; molWeight 54.0284; } thermodynamics @@ -10300,7 +9658,6 @@ C6H10,cyclo- { specie { - nMoles 1; molWeight 82.1466; } thermodynamics @@ -10316,7 +9673,6 @@ C5H9O2_RadMeButyr { specie { - nMoles 1; molWeight 101.126; } thermodynamics @@ -10332,7 +9688,6 @@ Mn3O4__Solid-B { specie { - nMoles 1; molWeight 228.812; } thermodynamics @@ -10348,7 +9703,6 @@ C21H42O2_MeArchid { specie { - nMoles 1; molWeight 326.568; } thermodynamics @@ -10364,7 +9718,6 @@ C6H9_b { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -10380,7 +9733,6 @@ C6H12_4MP-2en_cis { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -10396,7 +9748,6 @@ MgTiO3(cr) { specie { - nMoles 1; molWeight 120.21; } thermodynamics @@ -10412,7 +9763,6 @@ P- { specie { - nMoles 1; molWeight 30.9743; } thermodynamics @@ -10428,7 +9778,6 @@ CH3C(O)O-NO2 { specie { - nMoles 1; molWeight 105.051; } thermodynamics @@ -10444,7 +9793,6 @@ C2H2_acetylene { specie { - nMoles 1; molWeight 26.0382; } thermodynamics @@ -10460,7 +9808,6 @@ AlF3 { specie { - nMoles 1; molWeight 83.9767; } thermodynamics @@ -10476,7 +9823,6 @@ H3B3O3 { specie { - nMoles 1; molWeight 83.4551; } thermodynamics @@ -10492,7 +9838,6 @@ CH3I { specie { - nMoles 1; molWeight 141.939; } thermodynamics @@ -10508,7 +9853,6 @@ C12H4Cl4O2_1379 { specie { - nMoles 1; molWeight 321.976; } thermodynamics @@ -10524,7 +9868,6 @@ C3H3N3_TRIAZINE { specie { - nMoles 1; molWeight 81.0775; } thermodynamics @@ -10540,7 +9883,6 @@ C14H9_4-Phenantr { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -10556,7 +9898,6 @@ HNNH+_cis { specie { - nMoles 1; molWeight 30.0288; } thermodynamics @@ -10572,7 +9913,6 @@ C2(NO2)6_HexaNit { specie { - nMoles 1; molWeight 300.055; } thermodynamics @@ -10588,7 +9928,6 @@ P2H2 { specie { - nMoles 1; molWeight 63.9635; } thermodynamics @@ -10604,7 +9943,6 @@ FO2__O-F-O { specie { - nMoles 1; molWeight 50.9972; } thermodynamics @@ -10620,7 +9958,6 @@ HCl+ { specie { - nMoles 1; molWeight 36.4604; } thermodynamics @@ -10636,7 +9973,6 @@ C2HBr3 { specie { - nMoles 1; molWeight 264.733; } thermodynamics @@ -10652,7 +9988,6 @@ C10H22O_1-Decanol { specie { - nMoles 1; molWeight 158.286; } thermodynamics @@ -10668,7 +10003,6 @@ C6H10O5_Cellulose { specie { - nMoles 1; molWeight 162.144; } thermodynamics @@ -10684,7 +10018,6 @@ C10H12O3_Coniferyl { specie { - nMoles 1; molWeight 180.205; } thermodynamics @@ -10700,7 +10033,6 @@ H2F2 { specie { - nMoles 1; molWeight 40.0127; } thermodynamics @@ -10716,7 +10048,6 @@ C6H11_2M-2ENE-5YL { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -10732,7 +10063,6 @@ C4H7O_2-Methyl-A { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -10748,7 +10078,6 @@ C5H4N__m-Pyridyl { specie { - nMoles 1; molWeight 78.0943; } thermodynamics @@ -10764,7 +10093,6 @@ SiS2__Solid { specie { - nMoles 1; molWeight 92.214; } thermodynamics @@ -10780,7 +10108,6 @@ SF+ { specie { - nMoles 1; molWeight 51.0619; } thermodynamics @@ -10796,7 +10123,6 @@ s-(HgN3)2 { specie { - nMoles 1; molWeight 485.22; } thermodynamics @@ -10812,7 +10138,6 @@ CH3NO__CH2=NH=O { specie { - nMoles 1; molWeight 45.0412; } thermodynamics @@ -10828,7 +10153,6 @@ C22H14__Pentacen { specie { - nMoles 1; molWeight 278.357; } thermodynamics @@ -10844,7 +10168,6 @@ O { specie { - nMoles 1; molWeight 15.9994; } thermodynamics @@ -10860,7 +10183,6 @@ C4H8,tr2-butene { specie { - nMoles 1; molWeight 56.1084; } thermodynamics @@ -10876,7 +10198,6 @@ SOF2 { specie { - nMoles 1; molWeight 86.0602; } thermodynamics @@ -10892,7 +10213,6 @@ C14H9_9-Phenantr { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -10908,7 +10228,6 @@ Ag_cr { specie { - nMoles 1; molWeight 107.87; } thermodynamics @@ -10924,7 +10243,6 @@ C6H5Cl_chlorobenz { specie { - nMoles 1; molWeight 112.56; } thermodynamics @@ -10940,7 +10258,6 @@ C2H2O2__HOCCOH { specie { - nMoles 1; molWeight 58.037; } thermodynamics @@ -10956,7 +10273,6 @@ C2HClF2-1,1 { specie { - nMoles 1; molWeight 98.4801; } thermodynamics @@ -10972,7 +10288,6 @@ ClO2___ClOO*___H { specie { - nMoles 1; molWeight 67.4518; } thermodynamics @@ -10988,7 +10303,6 @@ SO2Cl2 { specie { - nMoles 1; molWeight 134.969; } thermodynamics @@ -11004,7 +10318,6 @@ IR(L) { specie { - nMoles 1; molWeight 192.2; } thermodynamics @@ -11020,7 +10333,6 @@ C18H36O2_Stearic { specie { - nMoles 1; molWeight 284.486; } thermodynamics @@ -11036,7 +10348,6 @@ Mn2O3_(S) { specie { - nMoles 1; molWeight 157.874; } thermodynamics @@ -11052,7 +10363,6 @@ C7_linear_singlet { specie { - nMoles 1; molWeight 84.0781; } thermodynamics @@ -11068,7 +10378,6 @@ C5H { specie { - nMoles 1; molWeight 61.0637; } thermodynamics @@ -11084,7 +10393,6 @@ C6H5O__2,4-cyclo { specie { - nMoles 1; molWeight 93.1061; } thermodynamics @@ -11100,7 +10408,6 @@ C24H12__Coronene { specie { - nMoles 1; molWeight 300.363; } thermodynamics @@ -11116,7 +10423,6 @@ C4H5_2-Butayn-1yl { specie { - nMoles 1; molWeight 53.0845; } thermodynamics @@ -11132,7 +10438,6 @@ GeBr3 { specie { - nMoles 1; molWeight 312.293; } thermodynamics @@ -11148,7 +10453,6 @@ C2H2O+_Ethynol+ { specie { - nMoles 1; molWeight 42.0371; } thermodynamics @@ -11164,7 +10468,6 @@ ZrO2(I) { specie { - nMoles 1; molWeight 123.219; } thermodynamics @@ -11180,7 +10483,6 @@ PbF4 { specie { - nMoles 1; molWeight 283.184; } thermodynamics @@ -11196,7 +10498,6 @@ ZnCl2(G) { specie { - nMoles 1; molWeight 136.276; } thermodynamics @@ -11212,7 +10513,6 @@ C4H5_E-1,3-en-1-yl { specie { - nMoles 1; molWeight 53.0845; } thermodynamics @@ -11228,7 +10528,6 @@ CH3N2O3_H2COHN*NO2 { specie { - nMoles 1; molWeight 91.0467; } thermodynamics @@ -11244,7 +10543,6 @@ P(cr)Red { specie { - nMoles 1; molWeight 30.9738; } thermodynamics @@ -11260,7 +10558,6 @@ CH5N2___CH3N*NH2 { specie { - nMoles 1; molWeight 45.0644; } thermodynamics @@ -11276,7 +10573,6 @@ C2H4+ { specie { - nMoles 1; molWeight 28.0536; } thermodynamics @@ -11292,7 +10588,6 @@ N2D2,cis { specie { - nMoles 1; molWeight 32.0416; } thermodynamics @@ -11308,7 +10603,6 @@ C3HBr2*__Radical { specie { - nMoles 1; molWeight 196.843; } thermodynamics @@ -11324,7 +10618,6 @@ CHN2_cyc(-CH-N=N-) { specie { - nMoles 1; molWeight 41.0325; } thermodynamics @@ -11340,7 +10633,6 @@ C2H3Br_Bromoethy { specie { - nMoles 1; molWeight 106.947; } thermodynamics @@ -11356,7 +10648,6 @@ C4H4O4_Fumaric_aci { specie { - nMoles 1; molWeight 116.074; } thermodynamics @@ -11372,7 +10663,6 @@ C5H9_2-en-1-yl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -11388,7 +10678,6 @@ NH-_anion { specie { - nMoles 1; molWeight 15.0152; } thermodynamics @@ -11404,7 +10693,6 @@ C2S2__S=C=C=S { specie { - nMoles 1; molWeight 88.1503; } thermodynamics @@ -11420,7 +10708,6 @@ H3F3 { specie { - nMoles 1; molWeight 60.0191; } thermodynamics @@ -11436,7 +10723,6 @@ GeBr2 { specie { - nMoles 1; molWeight 232.392; } thermodynamics @@ -11452,7 +10738,6 @@ BOF2 { specie { - nMoles 1; molWeight 64.8072; } thermodynamics @@ -11468,7 +10753,6 @@ BO2 { specie { - nMoles 1; molWeight 42.8098; } thermodynamics @@ -11484,7 +10768,6 @@ C5H8O2_MeCrotanoat { specie { - nMoles 1; molWeight 100.118; } thermodynamics @@ -11500,7 +10783,6 @@ PFCl4 { specie { - nMoles 1; molWeight 191.784; } thermodynamics @@ -11516,7 +10798,6 @@ C11_linear_Single { specie { - nMoles 1; molWeight 132.123; } thermodynamics @@ -11532,7 +10813,6 @@ T2 { specie { - nMoles 1; molWeight 95.8; } thermodynamics @@ -11548,7 +10828,6 @@ HCHO_Formaldehy { specie { - nMoles 1; molWeight 30.0265; } thermodynamics @@ -11564,7 +10843,6 @@ CH4N4O2_nitrogua { specie { - nMoles 1; molWeight 104.069; } thermodynamics @@ -11580,7 +10858,6 @@ BrO_Bromoxyl_rad { specie { - nMoles 1; molWeight 95.9003; } thermodynamics @@ -11596,7 +10873,6 @@ MgTi2O5(L) { specie { - nMoles 1; molWeight 200.109; } thermodynamics @@ -11612,7 +10888,6 @@ Hg(CNO)2_Fulminat { specie { - nMoles 1; molWeight 284.625; } thermodynamics @@ -11628,7 +10903,6 @@ ZrC(L) { specie { - nMoles 1; molWeight 103.231; } thermodynamics @@ -11644,7 +10918,6 @@ S7 { specie { - nMoles 1; molWeight 224.448; } thermodynamics @@ -11660,7 +10933,6 @@ N2O-_O(NN)-_cycl { specie { - nMoles 1; molWeight 44.0133; } thermodynamics @@ -11676,7 +10948,6 @@ C8H7___n-styryl { specie { - nMoles 1; molWeight 103.145; } thermodynamics @@ -11692,7 +10963,6 @@ ZrO { specie { - nMoles 1; molWeight 107.219; } thermodynamics @@ -11708,7 +10978,6 @@ C2H2O2_Oxyranone { specie { - nMoles 1; molWeight 58.037; } thermodynamics @@ -11724,7 +10993,6 @@ C2H4O_OXYRANE { specie { - nMoles 1; molWeight 44.0536; } thermodynamics @@ -11740,7 +11008,6 @@ s-(CH3)2-N-NH2_U { specie { - nMoles 1; molWeight 60.0995; } thermodynamics @@ -11756,7 +11023,6 @@ NH4NO3(II) { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -11772,7 +11038,6 @@ C3H7NO3_amino_acid { specie { - nMoles 1; molWeight 105.094; } thermodynamics @@ -11788,7 +11053,6 @@ C21H44_n-Heneico { specie { - nMoles 1; molWeight 296.585; } thermodynamics @@ -11804,7 +11068,6 @@ PF { specie { - nMoles 1; molWeight 49.9722; } thermodynamics @@ -11820,7 +11083,6 @@ BrCN+___ATcT_C { specie { - nMoles 1; molWeight 105.918; } thermodynamics @@ -11836,7 +11098,6 @@ CH2+_cation { specie { - nMoles 1; molWeight 14.0265; } thermodynamics @@ -11852,7 +11113,6 @@ C5H7O_Cy_C5H7-O* { specie { - nMoles 1; molWeight 83.1109; } thermodynamics @@ -11868,7 +11128,6 @@ C6H7N_Aniline { specie { - nMoles 1; molWeight 93.1294; } thermodynamics @@ -11884,7 +11143,6 @@ I2(cr) { specie { - nMoles 1; molWeight 253.809; } thermodynamics @@ -11900,7 +11158,6 @@ S8 { specie { - nMoles 1; molWeight 256.512; } thermodynamics @@ -11916,7 +11173,6 @@ N2H4(L)_Hydrazin { specie { - nMoles 1; molWeight 32.0453; } thermodynamics @@ -11932,7 +11188,6 @@ C6H8 { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -11948,7 +11203,6 @@ C6H14_2-MePentan { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -11964,7 +11218,6 @@ Ne+ { specie { - nMoles 1; molWeight 20.1825; } thermodynamics @@ -11980,7 +11233,6 @@ D2O2 { specie { - nMoles 1; molWeight 36.027; } thermodynamics @@ -11996,7 +11248,6 @@ CHCl=CH* { specie { - nMoles 1; molWeight 61.4912; } thermodynamics @@ -12012,7 +11263,6 @@ C3O2 { specie { - nMoles 1; molWeight 68.0323; } thermodynamics @@ -12028,7 +11278,6 @@ C3H3NS_Thiazole { specie { - nMoles 1; molWeight 85.1281; } thermodynamics @@ -12044,7 +11293,6 @@ Zn+ { specie { - nMoles 1; molWeight 65.3695; } thermodynamics @@ -12060,7 +11308,6 @@ C3H3I_CH2=C=CHI { specie { - nMoles 1; molWeight 165.962; } thermodynamics @@ -12076,7 +11323,6 @@ CH2N__H2C=N* { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -12092,7 +11338,6 @@ C4H4__1-butene-3 { specie { - nMoles 1; molWeight 52.0765; } thermodynamics @@ -12108,7 +11353,6 @@ HClO2 { specie { - nMoles 1; molWeight 68.4598; } thermodynamics @@ -12124,7 +11368,6 @@ C4H8O_T.H.Furan { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -12140,7 +11383,6 @@ HNOH- { specie { - nMoles 1; molWeight 32.0226; } thermodynamics @@ -12156,7 +11398,6 @@ C8H8_Benzocybutan { specie { - nMoles 1; molWeight 104.153; } thermodynamics @@ -12172,7 +11413,6 @@ C2H5+__Ethyl_cat { specie { - nMoles 1; molWeight 29.0616; } thermodynamics @@ -12188,7 +11428,6 @@ O+ { specie { - nMoles 1; molWeight 15.9989; } thermodynamics @@ -12204,7 +11443,6 @@ C12H5Cl4O3_Rad { specie { - nMoles 1; molWeight 338.984; } thermodynamics @@ -12220,7 +11458,6 @@ C2D4_Ethylene-D4 { specie { - nMoles 1; molWeight 32.0787; } thermodynamics @@ -12236,7 +11473,6 @@ C6H14_3-MethylPe { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -12252,7 +11488,6 @@ C2H5O_CH3CH*OH { specie { - nMoles 1; molWeight 45.0616; } thermodynamics @@ -12268,7 +11503,6 @@ C3H3Cl_3CyClPropen { specie { - nMoles 1; molWeight 74.5104; } thermodynamics @@ -12284,7 +11518,6 @@ C12H5OCl3O3 { specie { - nMoles 1; molWeight 303.531; } thermodynamics @@ -12300,7 +11533,6 @@ BH { specie { - nMoles 1; molWeight 11.819; } thermodynamics @@ -12316,7 +11548,6 @@ B2Cl4 { specie { - nMoles 1; molWeight 163.434; } thermodynamics @@ -12332,7 +11563,6 @@ C6H6_2,4-Hexadiyn { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -12348,7 +11578,6 @@ C3H3N__CH2=CHCN { specie { - nMoles 1; molWeight 53.0641; } thermodynamics @@ -12364,7 +11593,6 @@ C6H12O_Cy-hexanol { specie { - nMoles 1; molWeight 100.162; } thermodynamics @@ -12380,7 +11608,6 @@ MgSO4(L) { specie { - nMoles 1; molWeight 120.374; } thermodynamics @@ -12396,7 +11623,6 @@ C10H9_fenylbutadie { specie { - nMoles 1; molWeight 129.183; } thermodynamics @@ -12412,7 +11638,6 @@ Zr { specie { - nMoles 1; molWeight 91.22; } thermodynamics @@ -12428,7 +11653,6 @@ C3HCl2*1,1-Radical { specie { - nMoles 1; molWeight 107.947; } thermodynamics @@ -12444,7 +11668,6 @@ PbI2 { specie { - nMoles 1; molWeight 460.999; } thermodynamics @@ -12460,7 +11683,6 @@ NCN- { specie { - nMoles 1; molWeight 40.0251; } thermodynamics @@ -12476,7 +11698,6 @@ C14H9_1-Antryl_R { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -12492,7 +11713,6 @@ P(L) { specie { - nMoles 1; molWeight 30.9738; } thermodynamics @@ -12508,7 +11728,6 @@ CH3OO+__cation { specie { - nMoles 1; molWeight 47.0333; } thermodynamics @@ -12524,7 +11743,6 @@ C18H12_Triphenyle { specie { - nMoles 1; molWeight 228.296; } thermodynamics @@ -12540,7 +11758,6 @@ C5H9OH__Cyclopen { specie { - nMoles 1; molWeight 86.1349; } thermodynamics @@ -12556,7 +11773,6 @@ CH3NH2+_cation { specie { - nMoles 1; molWeight 31.0572; } thermodynamics @@ -12572,7 +11788,6 @@ o-C6H4ClO_Radical { specie { - nMoles 1; molWeight 127.551; } thermodynamics @@ -12588,7 +11803,6 @@ C16H34_Hexadecan { specie { - nMoles 1; molWeight 226.449; } thermodynamics @@ -12604,7 +11818,6 @@ Sb2 { specie { - nMoles 1; molWeight 243.5; } thermodynamics @@ -12620,7 +11833,6 @@ Si(cr) { specie { - nMoles 1; molWeight 28.086; } thermodynamics @@ -12636,7 +11848,6 @@ C6H14O_3-Hexanol { specie { - nMoles 1; molWeight 102.178; } thermodynamics @@ -12652,7 +11863,6 @@ C4H6O2_Diacetyl { specie { - nMoles 1; molWeight 86.0912; } thermodynamics @@ -12668,7 +11878,6 @@ Al2O2 { specie { - nMoles 1; molWeight 85.9618; } thermodynamics @@ -12684,7 +11893,6 @@ C4H8O__Methyl_Al { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -12700,7 +11908,6 @@ C7H7+_C5H4*CH=CH2 { specie { - nMoles 1; molWeight 91.1333; } thermodynamics @@ -12716,7 +11923,6 @@ Fe2(SO4)3(S) { specie { - nMoles 1; molWeight 399.879; } thermodynamics @@ -12732,7 +11938,6 @@ BrF5 { specie { - nMoles 1; molWeight 174.893; } thermodynamics @@ -12748,7 +11953,6 @@ Cr(OH)6 { specie { - nMoles 1; molWeight 154.04; } thermodynamics @@ -12764,7 +11968,6 @@ MgCl+ { specie { - nMoles 1; molWeight 59.7645; } thermodynamics @@ -12780,7 +11983,6 @@ C8H16,1-octene { specie { - nMoles 1; molWeight 112.217; } thermodynamics @@ -12796,7 +11998,6 @@ NiO(cr)B { specie { - nMoles 1; molWeight 74.7094; } thermodynamics @@ -12812,7 +12013,6 @@ C2H2O__Oxyrene { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -12828,7 +12028,6 @@ C3H3_allenyl { specie { - nMoles 1; molWeight 39.0574; } thermodynamics @@ -12844,7 +12043,6 @@ C5H9_1buten3m4yl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -12860,7 +12058,6 @@ SbCl_singlet { specie { - nMoles 1; molWeight 157.203; } thermodynamics @@ -12876,7 +12073,6 @@ C2HBr4_1,1,1,2 { specie { - nMoles 1; molWeight 344.634; } thermodynamics @@ -12892,7 +12088,6 @@ C6H6O__2,4-cyclo { specie { - nMoles 1; molWeight 94.1141; } thermodynamics @@ -12908,7 +12103,6 @@ N4_tetrahedral { specie { - nMoles 1; molWeight 56.0268; } thermodynamics @@ -12924,7 +12118,6 @@ IO3 { specie { - nMoles 1; molWeight 174.903; } thermodynamics @@ -12940,7 +12133,6 @@ C2H4O-__Acetalde { specie { - nMoles 1; molWeight 44.0541; } thermodynamics @@ -12956,7 +12148,6 @@ C9H4__C(CCH)4 { specie { - nMoles 1; molWeight 112.132; } thermodynamics @@ -12972,7 +12163,6 @@ C2H5O-__Ethoxy_a { specie { - nMoles 1; molWeight 45.0621; } thermodynamics @@ -12988,7 +12178,6 @@ C12H4Cl5O2_2p,4, { specie { - nMoles 1; molWeight 357.429; } thermodynamics @@ -13004,7 +12193,6 @@ BiCl3 { specie { - nMoles 1; molWeight 315.339; } thermodynamics @@ -13020,7 +12208,6 @@ C3H2(1)CyPropen { specie { - nMoles 1; molWeight 38.0494; } thermodynamics @@ -13036,7 +12223,6 @@ BBr2 { specie { - nMoles 1; molWeight 170.613; } thermodynamics @@ -13052,7 +12238,6 @@ C6H8__1,4-Cycloh { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -13068,7 +12253,6 @@ H2O(cr) { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -13084,7 +12268,6 @@ Fe+ { specie { - nMoles 1; molWeight 55.8465; } thermodynamics @@ -13100,7 +12283,6 @@ C4H5_1-Butayn-3yl { specie { - nMoles 1; molWeight 53.0845; } thermodynamics @@ -13116,7 +12298,6 @@ s-(CH3)2N-NO2 { specie { - nMoles 1; molWeight 90.0823; } thermodynamics @@ -13132,7 +12313,6 @@ C5H11,t-pentyl { specie { - nMoles 1; molWeight 71.1434; } thermodynamics @@ -13148,7 +12328,6 @@ PCl2 { specie { - nMoles 1; molWeight 101.88; } thermodynamics @@ -13164,7 +12343,6 @@ C10H9_2-hydro_Rad { specie { - nMoles 1; molWeight 129.183; } thermodynamics @@ -13180,7 +12358,6 @@ PbI4 { specie { - nMoles 1; molWeight 714.808; } thermodynamics @@ -13196,7 +12373,6 @@ C7H16(L)_n-Heptan { specie { - nMoles 1; molWeight 100.206; } thermodynamics @@ -13212,7 +12388,6 @@ CrN { specie { - nMoles 1; molWeight 66.0027; } thermodynamics @@ -13228,7 +12403,6 @@ C3H5OH__Propenol { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -13244,7 +12418,6 @@ C3H3-_CH2=C=CH*- { specie { - nMoles 1; molWeight 39.0579; } thermodynamics @@ -13260,7 +12433,6 @@ C2HBr5 { specie { - nMoles 1; molWeight 424.535; } thermodynamics @@ -13276,7 +12448,6 @@ C6H14_2,2-DMButan { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -13292,7 +12463,6 @@ s-1-C10H7CHO { specie { - nMoles 1; molWeight 156.186; } thermodynamics @@ -13308,7 +12478,6 @@ S2- { specie { - nMoles 1; molWeight 64.1285; } thermodynamics @@ -13324,7 +12493,6 @@ C6H10_CyC5H7-CH3 { specie { - nMoles 1; molWeight 82.1466; } thermodynamics @@ -13340,7 +12508,6 @@ C3H3__Propargyl { specie { - nMoles 1; molWeight 39.0574; } thermodynamics @@ -13356,7 +12523,6 @@ C4H7__2-me-allyl { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -13372,7 +12538,6 @@ SiF2 { specie { - nMoles 1; molWeight 66.0828; } thermodynamics @@ -13388,7 +12553,6 @@ C5H3Cl3O_1-hydro { specie { - nMoles 1; molWeight 185.438; } thermodynamics @@ -13404,7 +12568,6 @@ s-(CH2I)2_DiIodoet { specie { - nMoles 1; molWeight 281.863; } thermodynamics @@ -13420,7 +12583,6 @@ C6H5O_phenyox_ra { specie { - nMoles 1; molWeight 93.1061; } thermodynamics @@ -13436,7 +12598,6 @@ C10H7I__1-Iodona { specie { - nMoles 1; molWeight 254.072; } thermodynamics @@ -13452,7 +12613,6 @@ C6H { specie { - nMoles 1; molWeight 73.0749; } thermodynamics @@ -13468,7 +12628,6 @@ C2Cl3_RAD { specie { - nMoles 1; molWeight 130.381; } thermodynamics @@ -13484,7 +12643,6 @@ C5F6___CycloPerF { specie { - nMoles 1; molWeight 174.046; } thermodynamics @@ -13500,7 +12658,6 @@ CH2Br-CH2Br { specie { - nMoles 1; molWeight 187.856; } thermodynamics @@ -13516,7 +12673,6 @@ AlH2 { specie { - nMoles 1; molWeight 28.9974; } thermodynamics @@ -13532,7 +12688,6 @@ HNNH-__cis____HF { specie { - nMoles 1; molWeight 30.0299; } thermodynamics @@ -13548,7 +12703,6 @@ HCO3-__gas { specie { - nMoles 1; molWeight 61.0179; } thermodynamics @@ -13564,7 +12718,6 @@ CF3I_TrifluoroIo { specie { - nMoles 1; molWeight 195.911; } thermodynamics @@ -13580,7 +12733,6 @@ CH2N2_H2C=N=N { specie { - nMoles 1; molWeight 42.0405; } thermodynamics @@ -13596,7 +12748,6 @@ Cu2 { specie { - nMoles 1; molWeight 127.08; } thermodynamics @@ -13612,7 +12763,6 @@ C6H8_CY_C5H5-1-CH3 { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -13628,7 +12778,6 @@ C4H5O2_2MeAcrylat { specie { - nMoles 1; molWeight 85.0833; } thermodynamics @@ -13644,7 +12793,6 @@ C5H12O_MTBE { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -13660,7 +12808,6 @@ Ca(a) { specie { - nMoles 1; molWeight 40.08; } thermodynamics @@ -13676,7 +12823,6 @@ Bi2___GAS { specie { - nMoles 1; molWeight 417.96; } thermodynamics @@ -13692,7 +12838,6 @@ CFBr3 { specie { - nMoles 1; molWeight 270.712; } thermodynamics @@ -13708,7 +12853,6 @@ C5H7_Cy-1en-4-yl { specie { - nMoles 1; molWeight 67.1115; } thermodynamics @@ -13724,7 +12868,6 @@ C2H5O2_HOCH2CH2O { specie { - nMoles 1; molWeight 61.061; } thermodynamics @@ -13740,7 +12883,6 @@ ZrF________GAS { specie { - nMoles 1; molWeight 110.218; } thermodynamics @@ -13756,7 +12898,6 @@ PbF3 { specie { - nMoles 1; molWeight 264.185; } thermodynamics @@ -13772,7 +12913,6 @@ C2H3__Vinyl_Radi { specie { - nMoles 1; molWeight 27.0462; } thermodynamics @@ -13788,7 +12928,6 @@ C3H8 { specie { - nMoles 1; molWeight 44.0972; } thermodynamics @@ -13804,7 +12943,6 @@ C3H5NO2_NitroCy { specie { - nMoles 1; molWeight 87.0788; } thermodynamics @@ -13820,7 +12958,6 @@ C6H13__2M-5yl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -13836,7 +12973,6 @@ Po_Polonium_(cr) { specie { - nMoles 1; molWeight 210; } thermodynamics @@ -13852,7 +12988,6 @@ NITROGLICERINE { specie { - nMoles 1; molWeight 227.088; } thermodynamics @@ -13868,7 +13003,6 @@ BiF3 { specie { - nMoles 1; molWeight 265.975; } thermodynamics @@ -13884,7 +13018,6 @@ C4H9_s-butyl { specie { - nMoles 1; molWeight 57.1163; } thermodynamics @@ -13900,7 +13033,6 @@ C2F3 { specie { - nMoles 1; molWeight 81.0175; } thermodynamics @@ -13916,7 +13048,6 @@ C3HCl2*__Radical { specie { - nMoles 1; molWeight 107.947; } thermodynamics @@ -13932,7 +13063,6 @@ Pd(g)__Paladium { specie { - nMoles 1; molWeight 106.4; } thermodynamics @@ -13948,7 +13078,6 @@ C2H5F { specie { - nMoles 1; molWeight 48.0606; } thermodynamics @@ -13964,7 +13093,6 @@ C9H7N_QUINOLINE { specie { - nMoles 1; molWeight 129.163; } thermodynamics @@ -13980,7 +13108,6 @@ C6H6_Fulvene { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -13996,7 +13123,6 @@ Fe(a) { specie { - nMoles 1; molWeight 55.847; } thermodynamics @@ -14012,7 +13138,6 @@ Fe- { specie { - nMoles 1; molWeight 55.8475; } thermodynamics @@ -14028,7 +13153,6 @@ C2(NO2)4_NO_HF { specie { - nMoles 1; molWeight 208.044; } thermodynamics @@ -14044,7 +13168,6 @@ FSSF_Difluorodis { specie { - nMoles 1; molWeight 102.125; } thermodynamics @@ -14060,7 +13183,6 @@ PbO { specie { - nMoles 1; molWeight 223.189; } thermodynamics @@ -14076,7 +13198,6 @@ CH3CH__singlet { specie { - nMoles 1; molWeight 28.0542; } thermodynamics @@ -14092,7 +13213,6 @@ C5H4_1,2_diene4yne { specie { - nMoles 1; molWeight 64.0876; } thermodynamics @@ -14108,7 +13228,6 @@ C7H15__NEOPENTYL-2 { specie { - nMoles 1; molWeight 99.1976; } thermodynamics @@ -14124,7 +13243,6 @@ MgSO4(II) { specie { - nMoles 1; molWeight 120.374; } thermodynamics @@ -14140,7 +13258,6 @@ Ni+ { specie { - nMoles 1; molWeight 58.7095; } thermodynamics @@ -14156,7 +13273,6 @@ N2O_cyclo_O(NN) { specie { - nMoles 1; molWeight 44.0128; } thermodynamics @@ -14172,7 +13288,6 @@ C2H3O_Oxyrane_Rad { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -14188,7 +13303,6 @@ S2Cl { specie { - nMoles 1; molWeight 99.581; } thermodynamics @@ -14204,7 +13318,6 @@ SnH4 { specie { - nMoles 1; molWeight 122.722; } thermodynamics @@ -14220,7 +13333,6 @@ NOH+_cation { specie { - nMoles 1; molWeight 31.0135; } thermodynamics @@ -14236,7 +13348,6 @@ C3H2Cl2__1,2_Dic { specie { - nMoles 1; molWeight 108.955; } thermodynamics @@ -14252,7 +13363,6 @@ O_singlet_(excite) { specie { - nMoles 1; molWeight 15.9994; } thermodynamics @@ -14268,7 +13378,6 @@ C3H4O__Acrolein { specie { - nMoles 1; molWeight 56.0647; } thermodynamics @@ -14284,7 +13393,6 @@ C6H13_n-hexyl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -14300,7 +13408,6 @@ C2Cl3F3_FC-113 { specie { - nMoles 1; molWeight 187.377; } thermodynamics @@ -14316,7 +13423,6 @@ HI { specie { - nMoles 1; molWeight 127.912; } thermodynamics @@ -14332,7 +13438,6 @@ C2HF2__CHF=CF(E) { specie { - nMoles 1; molWeight 63.0271; } thermodynamics @@ -14348,7 +13453,6 @@ Al2O3(a) { specie { - nMoles 1; molWeight 101.961; } thermodynamics @@ -14364,7 +13468,6 @@ CD { specie { - nMoles 1; molWeight 14.0252; } thermodynamics @@ -14380,7 +13483,6 @@ N2O+_O(NN)+_cycl { specie { - nMoles 1; molWeight 44.0123; } thermodynamics @@ -14396,7 +13498,6 @@ C4H6S_2,5-dihydro { specie { - nMoles 1; molWeight 86.1564; } thermodynamics @@ -14412,7 +13513,6 @@ Pt { specie { - nMoles 1; molWeight 195.09; } thermodynamics @@ -14428,7 +13528,6 @@ C3H6O2_Hydroaceto { specie { - nMoles 1; molWeight 74.0801; } thermodynamics @@ -14444,7 +13543,6 @@ C2H4O2+_CH3COOH+ { specie { - nMoles 1; molWeight 60.0524; } thermodynamics @@ -14460,7 +13558,6 @@ C12H8S_DiBenzoTh { specie { - nMoles 1; molWeight 184.262; } thermodynamics @@ -14476,7 +13573,6 @@ W(L) { specie { - nMoles 1; molWeight 183.85; } thermodynamics @@ -14492,7 +13588,6 @@ BH2 { specie { - nMoles 1; molWeight 12.8269; } thermodynamics @@ -14508,7 +13603,6 @@ H3PO4(cr) { specie { - nMoles 1; molWeight 97.9953; } thermodynamics @@ -14524,7 +13618,6 @@ Mg2TiO4(L) { specie { - nMoles 1; molWeight 160.522; } thermodynamics @@ -14540,7 +13633,6 @@ Br2(L) { specie { - nMoles 1; molWeight 159.802; } thermodynamics @@ -14556,7 +13648,6 @@ C13H9N_PHENANTHRI { specie { - nMoles 1; molWeight 179.223; } thermodynamics @@ -14572,7 +13663,6 @@ NiS(L) { specie { - nMoles 1; molWeight 90.774; } thermodynamics @@ -14588,7 +13678,6 @@ CH2-_anion { specie { - nMoles 1; molWeight 14.0276; } thermodynamics @@ -14604,7 +13693,6 @@ C5H2_*HC=C=C=C=C { specie { - nMoles 1; molWeight 62.0717; } thermodynamics @@ -14620,7 +13708,6 @@ S-OH { specie { - nMoles 1; molWeight 49.0714; } thermodynamics @@ -14636,7 +13723,6 @@ C5H9O2_MeButyratC3 { specie { - nMoles 1; molWeight 101.126; } thermodynamics @@ -14652,7 +13738,6 @@ C16H9_1-Pyrenyl { specie { - nMoles 1; molWeight 201.25; } thermodynamics @@ -14668,7 +13753,6 @@ C7H10N2O2_BiCyclo { specie { - nMoles 1; molWeight 154.17; } thermodynamics @@ -14684,7 +13768,6 @@ NO3+ { specie { - nMoles 1; molWeight 62.0044; } thermodynamics @@ -14700,7 +13783,6 @@ HFCO { specie { - nMoles 1; molWeight 48.0169; } thermodynamics @@ -14716,7 +13798,6 @@ CrO2Cl2 { specie { - nMoles 1; molWeight 154.901; } thermodynamics @@ -14732,7 +13813,6 @@ FeS(b) { specie { - nMoles 1; molWeight 87.911; } thermodynamics @@ -14748,7 +13828,6 @@ C5H5+_1yne3ene5yl { specie { - nMoles 1; molWeight 65.0951; } thermodynamics @@ -14764,7 +13843,6 @@ Fe { specie { - nMoles 1; molWeight 55.847; } thermodynamics @@ -14780,7 +13858,6 @@ C2Br { specie { - nMoles 1; molWeight 103.923; } thermodynamics @@ -14796,7 +13873,6 @@ HNCO+ { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -14812,7 +13888,6 @@ C6H11__1en-2M4yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -14828,7 +13903,6 @@ C3H4N4O6_1,3,3- { specie { - nMoles 1; molWeight 192.089; } thermodynamics @@ -14844,7 +13918,6 @@ CH3SH_methyl_mer { specie { - nMoles 1; molWeight 48.107; } thermodynamics @@ -14860,7 +13933,6 @@ C7H8__Toluene { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -14876,7 +13948,6 @@ C6H2Cl3O3_Sym_BiCy { specie { - nMoles 1; molWeight 228.44; } thermodynamics @@ -14892,7 +13963,6 @@ s-1,5-C6H4__trans { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -14908,7 +13978,6 @@ CHBr { specie { - nMoles 1; molWeight 92.92; } thermodynamics @@ -14924,7 +13993,6 @@ C6H6_1,2,4,5 { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -14940,7 +14008,6 @@ CH2CO__ketene { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -14956,7 +14023,6 @@ C3H4__cyPropene { specie { - nMoles 1; molWeight 40.0653; } thermodynamics @@ -14972,7 +14038,6 @@ KNO3(G) { specie { - nMoles 1; molWeight 101.107; } thermodynamics @@ -14988,7 +14053,6 @@ C8H7N__Indole { specie { - nMoles 1; molWeight 117.152; } thermodynamics @@ -15004,7 +14068,6 @@ C(cr)_Diamond { specie { - nMoles 1; molWeight 12.0112; } thermodynamics @@ -15020,7 +14083,6 @@ C7F16 { specie { - nMoles 1; molWeight 388.052; } thermodynamics @@ -15036,7 +14098,6 @@ PO3 { specie { - nMoles 1; molWeight 78.972; } thermodynamics @@ -15052,7 +14113,6 @@ PF4Cl { specie { - nMoles 1; molWeight 142.42; } thermodynamics @@ -15068,7 +14128,6 @@ C5H6O_3-Me_Furan { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -15084,7 +14143,6 @@ H2O2 { specie { - nMoles 1; molWeight 34.0147; } thermodynamics @@ -15100,7 +14158,6 @@ C13H10__Phenalene { specie { - nMoles 1; molWeight 166.225; } thermodynamics @@ -15116,7 +14173,6 @@ W(cr) { specie { - nMoles 1; molWeight 183.85; } thermodynamics @@ -15132,7 +14188,6 @@ CS2 { specie { - nMoles 1; molWeight 76.1392; } thermodynamics @@ -15148,7 +14203,6 @@ H2- { specie { - nMoles 1; molWeight 2.01648; } thermodynamics @@ -15164,7 +14218,6 @@ C3H3F2_*CF2CH=CH2 { specie { - nMoles 1; molWeight 77.0542; } thermodynamics @@ -15180,7 +14233,6 @@ N2H3+__Hydrazine { specie { - nMoles 1; molWeight 31.0368; } thermodynamics @@ -15196,7 +14248,6 @@ PH { specie { - nMoles 1; molWeight 31.9818; } thermodynamics @@ -15212,7 +14263,6 @@ C10H19__1-deceny { specie { - nMoles 1; molWeight 139.263; } thermodynamics @@ -15228,7 +14278,6 @@ NF { specie { - nMoles 1; molWeight 33.0051; } thermodynamics @@ -15244,7 +14293,6 @@ C3H6O_Acetone { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -15260,7 +14308,6 @@ MoO2 { specie { - nMoles 1; molWeight 127.939; } thermodynamics @@ -15276,7 +14323,6 @@ C32H13_OVALENYL { specie { - nMoles 1; molWeight 397.46; } thermodynamics @@ -15292,7 +14338,6 @@ C2Cl2 { specie { - nMoles 1; molWeight 94.9283; } thermodynamics @@ -15308,7 +14353,6 @@ C6H14_2,3-DiMeth { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -15324,7 +14368,6 @@ HO2 { specie { - nMoles 1; molWeight 33.0068; } thermodynamics @@ -15340,7 +14383,6 @@ C5H6N2O2_Thymine { specie { - nMoles 1; molWeight 126.116; } thermodynamics @@ -15356,7 +14398,6 @@ C7H10_25C5H4(CH3)2 { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -15372,7 +14413,6 @@ Zr(b) { specie { - nMoles 1; molWeight 91.22; } thermodynamics @@ -15388,7 +14428,6 @@ SiF4 { specie { - nMoles 1; molWeight 104.08; } thermodynamics @@ -15404,7 +14443,6 @@ Br2_Dibromine { specie { - nMoles 1; molWeight 159.802; } thermodynamics @@ -15420,7 +14458,6 @@ COF2 { specie { - nMoles 1; molWeight 66.0074; } thermodynamics @@ -15436,7 +14473,6 @@ Fe(OH)2 { specie { - nMoles 1; molWeight 89.8617; } thermodynamics @@ -15452,7 +14488,6 @@ C4H4_CYbutadiene { specie { - nMoles 1; molWeight 52.0765; } thermodynamics @@ -15468,7 +14503,6 @@ C6T6_Benzene_T-6 { specie { - nMoles 1; molWeight 84.1515; } thermodynamics @@ -15484,7 +14518,6 @@ C25H52__Pentacosa { specie { - nMoles 1; molWeight 352.693; } thermodynamics @@ -15500,7 +14533,6 @@ C3_singlet { specie { - nMoles 1; molWeight 36.0335; } thermodynamics @@ -15516,7 +14548,6 @@ SF2- { specie { - nMoles 1; molWeight 70.0613; } thermodynamics @@ -15532,7 +14563,6 @@ C5H4_1,3-diyne { specie { - nMoles 1; molWeight 64.0876; } thermodynamics @@ -15548,7 +14578,6 @@ HNC { specie { - nMoles 1; molWeight 27.0258; } thermodynamics @@ -15564,7 +14593,6 @@ ClO3___Chlorate { specie { - nMoles 1; molWeight 83.4512; } thermodynamics @@ -15580,7 +14608,6 @@ Al(cr) { specie { - nMoles 1; molWeight 26.9815; } thermodynamics @@ -15596,7 +14623,6 @@ HNC+ { specie { - nMoles 1; molWeight 27.0253; } thermodynamics @@ -15612,7 +14638,6 @@ Xe+ { specie { - nMoles 1; molWeight 131.299; } thermodynamics @@ -15628,7 +14653,6 @@ C6H7__1,4-CyDiEne { specie { - nMoles 1; molWeight 79.1227; } thermodynamics @@ -15644,7 +14668,6 @@ Mo(cr) { specie { - nMoles 1; molWeight 95.94; } thermodynamics @@ -15660,7 +14683,6 @@ Al2O2+ { specie { - nMoles 1; molWeight 85.9613; } thermodynamics @@ -15676,7 +14698,6 @@ NH3+_cation { specie { - nMoles 1; molWeight 17.0301; } thermodynamics @@ -15692,7 +14713,6 @@ NH2F { specie { - nMoles 1; molWeight 35.021; } thermodynamics @@ -15708,7 +14728,6 @@ C2H4Cl_betaClEthyl { specie { - nMoles 1; molWeight 63.5072; } thermodynamics @@ -15724,7 +14743,6 @@ C5H8__Isoprene { specie { - nMoles 1; molWeight 68.1195; } thermodynamics @@ -15740,7 +14758,6 @@ Bi(L) { specie { - nMoles 1; molWeight 208.98; } thermodynamics @@ -15756,7 +14773,6 @@ C12H4Cl4O_2367 { specie { - nMoles 1; molWeight 305.977; } thermodynamics @@ -15772,7 +14788,6 @@ CO+ { specie { - nMoles 1; molWeight 28.01; } thermodynamics @@ -15788,7 +14803,6 @@ CH2Cl2 { specie { - nMoles 1; molWeight 84.9331; } thermodynamics @@ -15804,7 +14818,6 @@ C4H6,cyclo- { specie { - nMoles 1; molWeight 54.0924; } thermodynamics @@ -15820,7 +14833,6 @@ MgTi2O5(S) { specie { - nMoles 1; molWeight 200.109; } thermodynamics @@ -15836,7 +14848,6 @@ C6H5Br_Bromobenz { specie { - nMoles 1; molWeight 157.008; } thermodynamics @@ -15852,7 +14863,6 @@ C7H7O___C6H5CH2O { specie { - nMoles 1; molWeight 107.133; } thermodynamics @@ -15868,7 +14878,6 @@ C2H5Br { specie { - nMoles 1; molWeight 108.963; } thermodynamics @@ -15884,7 +14893,6 @@ C12H8O2 { specie { - nMoles 1; molWeight 184.196; } thermodynamics @@ -15900,7 +14908,6 @@ CBrF3_FREON_1301 { specie { - nMoles 1; molWeight 148.907; } thermodynamics @@ -15916,7 +14923,6 @@ PbS2 { specie { - nMoles 1; molWeight 271.318; } thermodynamics @@ -15932,7 +14938,6 @@ Zn { specie { - nMoles 1; molWeight 65.37; } thermodynamics @@ -15948,7 +14953,6 @@ C19H32O2_meLinolen { specie { - nMoles 1; molWeight 292.466; } thermodynamics @@ -15964,7 +14968,6 @@ C18H34_1-Octadecy { specie { - nMoles 1; molWeight 250.472; } thermodynamics @@ -15980,7 +14983,6 @@ C2HCl { specie { - nMoles 1; molWeight 60.4833; } thermodynamics @@ -15996,7 +14998,6 @@ C5H5O__1-oxy-1,3- { specie { - nMoles 1; molWeight 81.095; } thermodynamics @@ -16012,7 +15013,6 @@ CH3NO_Nitrosomethy { specie { - nMoles 1; molWeight 45.0412; } thermodynamics @@ -16028,7 +15028,6 @@ MgOH { specie { - nMoles 1; molWeight 41.3194; } thermodynamics @@ -16044,7 +15043,6 @@ C12H24_CyDoDecane { specie { - nMoles 1; molWeight 168.325; } thermodynamics @@ -16060,7 +15058,6 @@ Na(g) { specie { - nMoles 1; molWeight 22.9898; } thermodynamics @@ -16076,7 +15073,6 @@ H4F4 { specie { - nMoles 1; molWeight 80.0255; } thermodynamics @@ -16092,7 +15088,6 @@ HO2- { specie { - nMoles 1; molWeight 33.0073; } thermodynamics @@ -16108,7 +15103,6 @@ C10H6_Naphtyne { specie { - nMoles 1; molWeight 126.159; } thermodynamics @@ -16124,7 +15118,6 @@ Ge2 { specie { - nMoles 1; molWeight 145.18; } thermodynamics @@ -16140,7 +15133,6 @@ C2H4O2Cl2 { specie { - nMoles 1; molWeight 130.959; } thermodynamics @@ -16156,7 +15148,6 @@ MgF2(L) { specie { - nMoles 1; molWeight 62.3088; } thermodynamics @@ -16172,7 +15163,6 @@ CH3 { specie { - nMoles 1; molWeight 15.0351; } thermodynamics @@ -16188,7 +15178,6 @@ C12H8Cl2O2_6,6-( { specie { - nMoles 1; molWeight 255.102; } thermodynamics @@ -16204,7 +15193,6 @@ Al(OH)2 { specie { - nMoles 1; molWeight 60.9962; } thermodynamics @@ -16220,7 +15208,6 @@ CF2H-CClF2_FC-124A { specie { - nMoles 1; molWeight 136.477; } thermodynamics @@ -16236,7 +15223,6 @@ C5H2Cl2O_3,4-Cyc { specie { - nMoles 1; molWeight 148.977; } thermodynamics @@ -16252,7 +15238,6 @@ Mg(cr) { specie { - nMoles 1; molWeight 24.312; } thermodynamics @@ -16268,7 +15253,6 @@ P4O6 { specie { - nMoles 1; molWeight 219.892; } thermodynamics @@ -16284,7 +15268,6 @@ C4H7O_2-Butanone { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -16300,7 +15283,6 @@ C4H7N___PropylCN { specie { - nMoles 1; molWeight 69.1071; } thermodynamics @@ -16316,7 +15298,6 @@ MnS___Liquid { specie { - nMoles 1; molWeight 87.002; } thermodynamics @@ -16332,7 +15313,6 @@ C2H2F2__FC-1132A { specie { - nMoles 1; molWeight 64.035; } thermodynamics @@ -16348,7 +15328,6 @@ C5H11N_Piperidine { specie { - nMoles 1; molWeight 85.1501; } thermodynamics @@ -16364,7 +15343,6 @@ C13H9N__ACRIDINE { specie { - nMoles 1; molWeight 179.223; } thermodynamics @@ -16380,7 +15358,6 @@ C4H7__trans-1-Bu { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -16396,7 +15373,6 @@ C4H { specie { - nMoles 1; molWeight 49.0526; } thermodynamics @@ -16412,7 +15388,6 @@ Cl2O { specie { - nMoles 1; molWeight 86.9054; } thermodynamics @@ -16428,7 +15403,6 @@ CH3CBr3_111 { specie { - nMoles 1; molWeight 266.749; } thermodynamics @@ -16444,7 +15418,6 @@ n-C4H10O2_n-perox { specie { - nMoles 1; molWeight 90.1231; } thermodynamics @@ -16460,7 +15433,6 @@ O3- { specie { - nMoles 1; molWeight 47.9987; } thermodynamics @@ -16476,7 +15448,6 @@ C5H7_Cy-1en-3-yl { specie { - nMoles 1; molWeight 67.1115; } thermodynamics @@ -16492,7 +15463,6 @@ C7H10_cyC5H9-CCH { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -16508,7 +15478,6 @@ ClO2___OClO___HF { specie { - nMoles 1; molWeight 67.4518; } thermodynamics @@ -16524,7 +15493,6 @@ NCCH2OOH { specie { - nMoles 1; molWeight 73.0517; } thermodynamics @@ -16540,7 +15508,6 @@ HCNO_Fulminic_Acid { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -16556,7 +15523,6 @@ C8_linear_singlet { specie { - nMoles 1; molWeight 96.0892; } thermodynamics @@ -16572,7 +15538,6 @@ NH2OH+ { specie { - nMoles 1; molWeight 33.0295; } thermodynamics @@ -16588,7 +15553,6 @@ MgCl { specie { - nMoles 1; molWeight 59.765; } thermodynamics @@ -16604,7 +15568,6 @@ BO { specie { - nMoles 1; molWeight 26.8104; } thermodynamics @@ -16620,7 +15583,6 @@ CH2O__CH**-OH { specie { - nMoles 1; molWeight 30.0265; } thermodynamics @@ -16636,7 +15598,6 @@ Sn- { specie { - nMoles 1; molWeight 118.691; } thermodynamics @@ -16652,7 +15613,6 @@ C5Cl6___CycloPer { specie { - nMoles 1; molWeight 272.774; } thermodynamics @@ -16668,7 +15628,6 @@ C2+ { specie { - nMoles 1; molWeight 24.0218; } thermodynamics @@ -16684,7 +15643,6 @@ MgSiO3(L) { specie { - nMoles 1; molWeight 100.396; } thermodynamics @@ -16700,7 +15658,6 @@ C3H7OO_PropylPer { specie { - nMoles 1; molWeight 75.088; } thermodynamics @@ -16716,7 +15673,6 @@ C6H5-_phenyl_ani { specie { - nMoles 1; molWeight 77.1073; } thermodynamics @@ -16732,7 +15688,6 @@ CH3N2__C*H2-N=NH { specie { - nMoles 1; molWeight 43.0485; } thermodynamics @@ -16748,7 +15703,6 @@ SiO2(L) { specie { - nMoles 1; molWeight 60.0848; } thermodynamics @@ -16764,7 +15718,6 @@ SF5 { specie { - nMoles 1; molWeight 127.056; } thermodynamics @@ -16780,7 +15733,6 @@ NH3_Anharmonic { specie { - nMoles 1; molWeight 17.0306; } thermodynamics @@ -16796,7 +15748,6 @@ C6H12O2_Butyric { specie { - nMoles 1; molWeight 116.161; } thermodynamics @@ -16812,7 +15763,6 @@ PH+ { specie { - nMoles 1; molWeight 31.9818; } thermodynamics @@ -16828,7 +15778,6 @@ C2HCl4_CHCl2-CCl2 { specie { - nMoles 1; molWeight 166.842; } thermodynamics @@ -16844,7 +15793,6 @@ C5H5O_Cyclo-2,4- { specie { - nMoles 1; molWeight 81.095; } thermodynamics @@ -16860,7 +15808,6 @@ BF { specie { - nMoles 1; molWeight 29.8094; } thermodynamics @@ -16876,7 +15823,6 @@ C15H30O2_n-acid { specie { - nMoles 1; molWeight 242.405; } thermodynamics @@ -16892,7 +15838,6 @@ C7H13_1-Heptyl-4en { specie { - nMoles 1; molWeight 97.1817; } thermodynamics @@ -16908,7 +15853,6 @@ C22H44O2_Ethyl_E { specie { - nMoles 1; molWeight 340.595; } thermodynamics @@ -16924,7 +15868,6 @@ NOH- { specie { - nMoles 1; molWeight 31.0146; } thermodynamics @@ -16940,7 +15883,6 @@ BiCl { specie { - nMoles 1; molWeight 244.433; } thermodynamics @@ -16956,7 +15898,6 @@ N2O3+ { specie { - nMoles 1; molWeight 76.0111; } thermodynamics @@ -16972,7 +15913,6 @@ Ge(L) { specie { - nMoles 1; molWeight 72.59; } thermodynamics @@ -16988,7 +15928,6 @@ C4H10FO2P_SARIN { specie { - nMoles 1; molWeight 159.094; } thermodynamics @@ -17004,7 +15943,6 @@ s-1-C10H7CH=CH2 { specie { - nMoles 1; molWeight 154.214; } thermodynamics @@ -17020,7 +15958,6 @@ BF2- { specie { - nMoles 1; molWeight 48.8083; } thermodynamics @@ -17036,7 +15973,6 @@ C4H9O_s-butoxy_r { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -17052,7 +15988,6 @@ C2DH_Acetylene-D { specie { - nMoles 1; molWeight 27.0444; } thermodynamics @@ -17068,7 +16003,6 @@ HgBr2(L) { specie { - nMoles 1; molWeight 360.392; } thermodynamics @@ -17084,7 +16018,6 @@ Cr2O3(Ip) { specie { - nMoles 1; molWeight 151.99; } thermodynamics @@ -17100,7 +16033,6 @@ C2D6_Ethane-D6 { specie { - nMoles 1; molWeight 36.1069; } thermodynamics @@ -17116,7 +16048,6 @@ CH3O-_anion { specie { - nMoles 1; molWeight 31.035; } thermodynamics @@ -17132,7 +16063,6 @@ MgS { specie { - nMoles 1; molWeight 56.376; } thermodynamics @@ -17148,7 +16078,6 @@ MoO2__Solid { specie { - nMoles 1; molWeight 127.939; } thermodynamics @@ -17164,7 +16093,6 @@ N-C9H19_________N- { specie { - nMoles 1; molWeight 127.252; } thermodynamics @@ -17180,7 +16108,6 @@ C10H9_1-methyl { specie { - nMoles 1; molWeight 129.183; } thermodynamics @@ -17196,7 +16123,6 @@ C23H47_1-Tricosane { specie { - nMoles 1; molWeight 323.631; } thermodynamics @@ -17212,7 +16138,6 @@ C4H6_1-butyne { specie { - nMoles 1; molWeight 54.0924; } thermodynamics @@ -17228,7 +16153,6 @@ F- { specie { - nMoles 1; molWeight 18.9989; } thermodynamics @@ -17244,7 +16168,6 @@ BF2 { specie { - nMoles 1; molWeight 48.8078; } thermodynamics @@ -17260,7 +16183,6 @@ NH4Cl(II) { specie { - nMoles 1; molWeight 53.4916; } thermodynamics @@ -17276,7 +16198,6 @@ C5H3N_CyanoVinyl { specie { - nMoles 1; molWeight 77.0864; } thermodynamics @@ -17292,7 +16213,6 @@ C7H5NO_Benzoxazole { specie { - nMoles 1; molWeight 119.124; } thermodynamics @@ -17308,7 +16228,6 @@ Cu3Cl3 { specie { - nMoles 1; molWeight 296.979; } thermodynamics @@ -17324,7 +16243,6 @@ C7H7_QuadriShould { specie { - nMoles 1; molWeight 91.1338; } thermodynamics @@ -17340,7 +16258,6 @@ CH3CH-__anion { specie { - nMoles 1; molWeight 28.0547; } thermodynamics @@ -17356,7 +16273,6 @@ Fe(OH)2(S) { specie { - nMoles 1; molWeight 89.8617; } thermodynamics @@ -17372,7 +16288,6 @@ HOCN_Cyanic_Acid { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -17388,7 +16303,6 @@ C5H10O_T.H.PYRAN { specie { - nMoles 1; molWeight 86.1349; } thermodynamics @@ -17404,7 +16318,6 @@ GeH4 { specie { - nMoles 1; molWeight 76.6219; } thermodynamics @@ -17420,7 +16333,6 @@ NH3__RRHO { specie { - nMoles 1; molWeight 17.0306; } thermodynamics @@ -17436,7 +16348,6 @@ CH4N2O_Urea { specie { - nMoles 1; molWeight 60.0558; } thermodynamics @@ -17452,7 +16363,6 @@ C2H- { specie { - nMoles 1; molWeight 25.0308; } thermodynamics @@ -17468,7 +16378,6 @@ Zr- { specie { - nMoles 1; molWeight 91.2205; } thermodynamics @@ -17484,7 +16393,6 @@ N-UNDECANE { specie { - nMoles 1; molWeight 156.314; } thermodynamics @@ -17500,7 +16408,6 @@ O3+ { specie { - nMoles 1; molWeight 47.9977; } thermodynamics @@ -17516,7 +16423,6 @@ CH3NC_Methyl-Iso { specie { - nMoles 1; molWeight 41.0529; } thermodynamics @@ -17532,7 +16438,6 @@ C4H4N2_PYRAZINE { specie { - nMoles 1; molWeight 80.0899; } thermodynamics @@ -17548,7 +16453,6 @@ PO2- { specie { - nMoles 1; molWeight 62.9731; } thermodynamics @@ -17564,7 +16468,6 @@ C2H6S__(C2H5SH) { specie { - nMoles 1; molWeight 62.1341; } thermodynamics @@ -17580,7 +16483,6 @@ C7H16O_n-heptanol { specie { - nMoles 1; molWeight 116.205; } thermodynamics @@ -17596,7 +16498,6 @@ C7H10_23C5H4(CH3)2 { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -17612,7 +16513,6 @@ NCCH2OO_Radical { specie { - nMoles 1; molWeight 72.0437; } thermodynamics @@ -17628,7 +16528,6 @@ HO3____HOOO { specie { - nMoles 1; molWeight 49.0062; } thermodynamics @@ -17644,7 +16543,6 @@ Fe(c) { specie { - nMoles 1; molWeight 55.847; } thermodynamics @@ -17660,7 +16558,6 @@ C2H5O2_HOCH2C*HO { specie { - nMoles 1; molWeight 61.061; } thermodynamics @@ -17676,7 +16573,6 @@ CH5N__CH3NH2 { specie { - nMoles 1; molWeight 31.0577; } thermodynamics @@ -17692,7 +16588,6 @@ C7H8O__C6H5CH2OH { specie { - nMoles 1; molWeight 108.141; } thermodynamics @@ -17708,7 +16603,6 @@ C4H5O__EtKetene-2 { specie { - nMoles 1; molWeight 69.0838; } thermodynamics @@ -17724,7 +16618,6 @@ CH3ONO2 { specie { - nMoles 1; molWeight 77.04; } thermodynamics @@ -17740,7 +16633,6 @@ C2H2(NO2)2 { specie { - nMoles 1; molWeight 118.049; } thermodynamics @@ -17756,7 +16648,6 @@ s-1,2,3-C6H4-5-yne { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -17772,7 +16663,6 @@ Cr(cr) { specie { - nMoles 1; molWeight 51.996; } thermodynamics @@ -17788,7 +16678,6 @@ C8H6__Benzocybuten { specie { - nMoles 1; molWeight 102.137; } thermodynamics @@ -17804,7 +16693,6 @@ C3H_Radical_HCCC { specie { - nMoles 1; molWeight 37.0414; } thermodynamics @@ -17820,7 +16708,6 @@ MgBr { specie { - nMoles 1; molWeight 104.213; } thermodynamics @@ -17836,7 +16723,6 @@ C2- { specie { - nMoles 1; molWeight 24.0228; } thermodynamics @@ -17852,7 +16738,6 @@ N4_cyclo { specie { - nMoles 1; molWeight 56.0268; } thermodynamics @@ -17868,7 +16753,6 @@ SF3 { specie { - nMoles 1; molWeight 89.0592; } thermodynamics @@ -17884,7 +16768,6 @@ Kr { specie { - nMoles 1; molWeight 83.8; } thermodynamics @@ -17900,7 +16783,6 @@ Bi___GAS { specie { - nMoles 1; molWeight 208.98; } thermodynamics @@ -17916,7 +16798,6 @@ C3H3ON_Oxazole { specie { - nMoles 1; molWeight 69.0635; } thermodynamics @@ -17932,7 +16813,6 @@ C10H10_3-meIndene { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -17948,7 +16828,6 @@ C2H5ClO2 { specie { - nMoles 1; molWeight 96.514; } thermodynamics @@ -17964,7 +16843,6 @@ BrNC_BrIsocyanogen { specie { - nMoles 1; molWeight 105.919; } thermodynamics @@ -17980,7 +16858,6 @@ C6F6 { specie { - nMoles 1; molWeight 186.057; } thermodynamics @@ -17996,7 +16873,6 @@ C2H5-_Ethyl_anio { specie { - nMoles 1; molWeight 29.0627; } thermodynamics @@ -18012,7 +16888,6 @@ C5H5OH_Cyclo-1,3 { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -18028,7 +16903,6 @@ HSO { specie { - nMoles 1; molWeight 49.0714; } thermodynamics @@ -18044,7 +16918,6 @@ O- { specie { - nMoles 1; molWeight 15.9999; } thermodynamics @@ -18060,7 +16933,6 @@ Fe3C_(S)_Solid-A { specie { - nMoles 1; molWeight 179.552; } thermodynamics @@ -18076,7 +16948,6 @@ C4H8O2_MePropionat { specie { - nMoles 1; molWeight 88.1072; } thermodynamics @@ -18092,7 +16963,6 @@ HDO { specie { - nMoles 1; molWeight 19.0215; } thermodynamics @@ -18108,7 +16978,6 @@ MgO(cr) { specie { - nMoles 1; molWeight 40.3114; } thermodynamics @@ -18124,7 +16993,6 @@ C3H3Cl_CH2Cl-CCH { specie { - nMoles 1; molWeight 74.5104; } thermodynamics @@ -18140,7 +17008,6 @@ CD3OD_Methanol_d4 { specie { - nMoles 1; molWeight 36.0669; } thermodynamics @@ -18156,7 +17023,6 @@ C8H18(L)_n-octane { specie { - nMoles 1; molWeight 114.233; } thermodynamics @@ -18172,7 +17038,6 @@ CBr4 { specie { - nMoles 1; molWeight 331.615; } thermodynamics @@ -18188,7 +17053,6 @@ BaO(G) { specie { - nMoles 1; molWeight 153.339; } thermodynamics @@ -18204,7 +17068,6 @@ MgI2(s) { specie { - nMoles 1; molWeight 278.121; } thermodynamics @@ -18220,7 +17083,6 @@ C6HCl5_5-ClBenzen { specie { - nMoles 1; molWeight 250.34; } thermodynamics @@ -18236,7 +17098,6 @@ C4N2 { specie { - nMoles 1; molWeight 76.058; } thermodynamics @@ -18252,7 +17113,6 @@ CH2F2___FC-32 { specie { - nMoles 1; molWeight 52.0239; } thermodynamics @@ -18268,7 +17128,6 @@ HCC-OH__Ethynol { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -18284,7 +17143,6 @@ C5H5N_PYRIDINE_Cy { specie { - nMoles 1; molWeight 79.1023; } thermodynamics @@ -18300,7 +17158,6 @@ MgF2(cr)II { specie { - nMoles 1; molWeight 62.3088; } thermodynamics @@ -18316,7 +17173,6 @@ NITROPROPYLENE_C { specie { - nMoles 1; molWeight 87.0788; } thermodynamics @@ -18332,7 +17188,6 @@ BCl { specie { - nMoles 1; molWeight 46.264; } thermodynamics @@ -18348,7 +17203,6 @@ Po_Polonium_(L) { specie { - nMoles 1; molWeight 210; } thermodynamics @@ -18364,7 +17218,6 @@ C5H3 { specie { - nMoles 1; molWeight 63.0797; } thermodynamics @@ -18380,7 +17233,6 @@ Bi(OH)3 { specie { - nMoles 1; molWeight 260.002; } thermodynamics @@ -18396,7 +17248,6 @@ C10H10_1,1p(C5H5)2 { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -18412,7 +17263,6 @@ C6H14O_2-hexanol { specie { - nMoles 1; molWeight 102.178; } thermodynamics @@ -18428,7 +17278,6 @@ CH2N2O2_H2C=NNO2 { specie { - nMoles 1; molWeight 74.0393; } thermodynamics @@ -18444,7 +17293,6 @@ C4H10O2_t-perox { specie { - nMoles 1; molWeight 90.1231; } thermodynamics @@ -18460,7 +17308,6 @@ CH3NO__HO-CH=NH { specie { - nMoles 1; molWeight 45.0412; } thermodynamics @@ -18476,7 +17323,6 @@ BiCl2 { specie { - nMoles 1; molWeight 279.886; } thermodynamics @@ -18492,7 +17338,6 @@ Br2(cr) { specie { - nMoles 1; molWeight 159.802; } thermodynamics @@ -18508,7 +17353,6 @@ ClO3F { specie { - nMoles 1; molWeight 102.45; } thermodynamics @@ -18524,7 +17368,6 @@ Po+_Polonium_catio { specie { - nMoles 1; molWeight 209.999; } thermodynamics @@ -18540,7 +17383,6 @@ BrO- { specie { - nMoles 1; molWeight 95.9008; } thermodynamics @@ -18556,7 +17398,6 @@ Fe.947O(L) { specie { - nMoles 1; molWeight 71.8464; } thermodynamics @@ -18572,7 +17413,6 @@ s-(CH3COOH)2 { specie { - nMoles 1; molWeight 120.106; } thermodynamics @@ -18588,7 +17428,6 @@ SF4- { specie { - nMoles 1; molWeight 108.058; } thermodynamics @@ -18604,7 +17443,6 @@ SF5Cl { specie { - nMoles 1; molWeight 162.509; } thermodynamics @@ -18620,7 +17458,6 @@ T_Tritium__(g) { specie { - nMoles 1; molWeight 3.016; } thermodynamics @@ -18636,7 +17473,6 @@ NH4ClO4(I) { specie { - nMoles 1; molWeight 117.489; } thermodynamics @@ -18652,7 +17488,6 @@ SO2- { specie { - nMoles 1; molWeight 64.0633; } thermodynamics @@ -18668,7 +17503,6 @@ s-1-C10H7-CC* { specie { - nMoles 1; molWeight 151.19; } thermodynamics @@ -18684,7 +17518,6 @@ CNN+ { specie { - nMoles 1; molWeight 40.024; } thermodynamics @@ -18700,7 +17533,6 @@ C4Cl6_Butadiene { specie { - nMoles 1; molWeight 260.763; } thermodynamics @@ -18716,7 +17548,6 @@ Pb(G) { specie { - nMoles 1; molWeight 207.19; } thermodynamics @@ -18732,7 +17563,6 @@ TBr_Tritium_Brom { specie { - nMoles 1; molWeight 127.801; } thermodynamics @@ -18748,7 +17578,6 @@ CH5N2__CH2*NHNH2 { specie { - nMoles 1; molWeight 45.0644; } thermodynamics @@ -18764,7 +17593,6 @@ PF2Cl { specie { - nMoles 1; molWeight 104.424; } thermodynamics @@ -18780,7 +17608,6 @@ N2O_NON { specie { - nMoles 1; molWeight 44.0128; } thermodynamics @@ -18796,7 +17623,6 @@ P3 { specie { - nMoles 1; molWeight 92.9214; } thermodynamics @@ -18812,7 +17638,6 @@ C14H10O_Phenantrol { specie { - nMoles 1; molWeight 194.235; } thermodynamics @@ -18828,7 +17653,6 @@ C3H9N__(CH3)3N { specie { - nMoles 1; molWeight 59.1119; } thermodynamics @@ -18844,7 +17668,6 @@ N2O4__ONONO2 { specie { - nMoles 1; molWeight 92.011; } thermodynamics @@ -18860,7 +17683,6 @@ F2 { specie { - nMoles 1; molWeight 37.9968; } thermodynamics @@ -18876,7 +17698,6 @@ C2N-__C-CN- { specie { - nMoles 1; molWeight 38.0295; } thermodynamics @@ -18892,7 +17713,6 @@ CH+ { specie { - nMoles 1; molWeight 13.0186; } thermodynamics @@ -18908,7 +17728,6 @@ MgF2(cr)I { specie { - nMoles 1; molWeight 62.3088; } thermodynamics @@ -18924,7 +17743,6 @@ C6H5Cl+_Chlorobe { specie { - nMoles 1; molWeight 112.559; } thermodynamics @@ -18940,7 +17758,6 @@ C16H9_2-Pyrenyl { specie { - nMoles 1; molWeight 201.25; } thermodynamics @@ -18956,7 +17773,6 @@ CH- { specie { - nMoles 1; molWeight 13.0197; } thermodynamics @@ -18972,7 +17788,6 @@ NHF2 { specie { - nMoles 1; molWeight 53.0115; } thermodynamics @@ -18988,7 +17803,6 @@ C8H14_Bicyclooctan { specie { - nMoles 1; molWeight 110.201; } thermodynamics @@ -19004,7 +17818,6 @@ HNOH_trans_&_Equ { specie { - nMoles 1; molWeight 32.022; } thermodynamics @@ -19020,7 +17833,6 @@ C2HO__HCC=O- { specie { - nMoles 1; molWeight 41.0302; } thermodynamics @@ -19036,7 +17848,6 @@ C4H9O2_n-Butyl_P { specie { - nMoles 1; molWeight 89.1151; } thermodynamics @@ -19052,7 +17863,6 @@ CD4__ANHARMONIC { specie { - nMoles 1; molWeight 20.0676; } thermodynamics @@ -19068,7 +17878,6 @@ CH2=CH-NO2_Nitroe { specie { - nMoles 1; molWeight 73.0517; } thermodynamics @@ -19084,7 +17893,6 @@ C3HCl3__TriClAllen { specie { - nMoles 1; molWeight 143.4; } thermodynamics @@ -19100,7 +17908,6 @@ C2H4Cl2_1,1-Dich { specie { - nMoles 1; molWeight 98.9602; } thermodynamics @@ -19116,7 +17923,6 @@ CH3-CO-O-O-CO-CH3 { specie { - nMoles 1; molWeight 118.09; } thermodynamics @@ -19132,7 +17938,6 @@ C3H8O_1propanol { specie { - nMoles 1; molWeight 60.0966; } thermodynamics @@ -19148,7 +17953,6 @@ C13H28_TriDecane { specie { - nMoles 1; molWeight 184.368; } thermodynamics @@ -19164,7 +17968,6 @@ C4H8O2_EtAcetate { specie { - nMoles 1; molWeight 88.1072; } thermodynamics @@ -19180,7 +17983,6 @@ BrF { specie { - nMoles 1; molWeight 98.8993; } thermodynamics @@ -19196,7 +17998,6 @@ C5H9_1buten3m1yl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -19212,7 +18013,6 @@ C30H62_Triacotane { specie { - nMoles 1; molWeight 422.829; } thermodynamics @@ -19228,7 +18028,6 @@ Kr+ { specie { - nMoles 1; molWeight 83.7995; } thermodynamics @@ -19244,7 +18043,6 @@ C4H6O_H3CCH2CH=C { specie { - nMoles 1; molWeight 70.0918; } thermodynamics @@ -19260,7 +18058,6 @@ SCl2 { specie { - nMoles 1; molWeight 102.97; } thermodynamics @@ -19276,7 +18073,6 @@ CCl3OH { specie { - nMoles 1; molWeight 135.378; } thermodynamics @@ -19292,7 +18088,6 @@ C8H10_C6H5C2H5 { specie { - nMoles 1; molWeight 106.169; } thermodynamics @@ -19308,7 +18103,6 @@ C3H2F3_CF3-C*=CH2 { specie { - nMoles 1; molWeight 95.0446; } thermodynamics @@ -19324,7 +18118,6 @@ CH3CCl3_1,1,1- { specie { - nMoles 1; molWeight 133.405; } thermodynamics @@ -19340,7 +18133,6 @@ DNO- { specie { - nMoles 1; molWeight 32.0207; } thermodynamics @@ -19356,7 +18148,6 @@ C5H9O2_Valeryl { specie { - nMoles 1; molWeight 101.126; } thermodynamics @@ -19372,7 +18163,6 @@ C8H17_n-octyl { specie { - nMoles 1; molWeight 113.225; } thermodynamics @@ -19388,7 +18178,6 @@ C4H8O_2-Butanone { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -19404,7 +18193,6 @@ C2H4Cl_alfaClEthyl { specie { - nMoles 1; molWeight 63.5072; } thermodynamics @@ -19420,7 +18208,6 @@ C3H5_SYMMETRIC { specie { - nMoles 1; molWeight 41.0733; } thermodynamics @@ -19436,7 +18223,6 @@ HCOO__Formyloxy { specie { - nMoles 1; molWeight 45.0179; } thermodynamics @@ -19452,7 +18238,6 @@ C3H6O3_Lactic_Ac { specie { - nMoles 1; molWeight 90.0795; } thermodynamics @@ -19468,7 +18253,6 @@ MgBr2(L) { specie { - nMoles 1; molWeight 184.114; } thermodynamics @@ -19484,7 +18268,6 @@ BCl+ { specie { - nMoles 1; molWeight 46.2635; } thermodynamics @@ -19500,7 +18283,6 @@ CHNH2-__anion__H { specie { - nMoles 1; molWeight 29.0423; } thermodynamics @@ -19516,7 +18298,6 @@ CHBrCl2__FC-20B1 { specie { - nMoles 1; molWeight 163.826; } thermodynamics @@ -19532,7 +18313,6 @@ Cu(cr) { specie { - nMoles 1; molWeight 63.54; } thermodynamics @@ -19548,7 +18328,6 @@ CH2N-__H*C=NH_cis { specie { - nMoles 1; molWeight 28.0343; } thermodynamics @@ -19564,7 +18343,6 @@ C4H7__1-meth-allyl { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -19580,7 +18358,6 @@ PH- { specie { - nMoles 1; molWeight 31.9818; } thermodynamics @@ -19596,7 +18373,6 @@ SF6 { specie { - nMoles 1; molWeight 146.054; } thermodynamics @@ -19612,7 +18388,6 @@ CH3N__(H2C=NH) { specie { - nMoles 1; molWeight 29.0418; } thermodynamics @@ -19628,7 +18403,6 @@ HAlO2 { specie { - nMoles 1; molWeight 59.9883; } thermodynamics @@ -19644,7 +18418,6 @@ HCN { specie { - nMoles 1; molWeight 27.0258; } thermodynamics @@ -19660,7 +18433,6 @@ AlO2 { specie { - nMoles 1; molWeight 58.9803; } thermodynamics @@ -19676,7 +18448,6 @@ HOCl { specie { - nMoles 1; molWeight 52.4604; } thermodynamics @@ -19692,7 +18463,6 @@ Na2O2 { specie { - nMoles 1; molWeight 77.9784; } thermodynamics @@ -19708,7 +18478,6 @@ C12D10_Biphenyl { specie { - nMoles 1; molWeight 164.275; } thermodynamics @@ -19724,7 +18493,6 @@ C4H7O2_MePropionat { specie { - nMoles 1; molWeight 87.0992; } thermodynamics @@ -19740,7 +18508,6 @@ C6H11I_IodocyHexan { specie { - nMoles 1; molWeight 210.059; } thermodynamics @@ -19756,7 +18523,6 @@ Cl- { specie { - nMoles 1; molWeight 35.4535; } thermodynamics @@ -19772,7 +18538,6 @@ CF+ { specie { - nMoles 1; molWeight 31.009; } thermodynamics @@ -19788,7 +18553,6 @@ FeS(G) { specie { - nMoles 1; molWeight 87.911; } thermodynamics @@ -19804,7 +18568,6 @@ Bi(CH3)2___HF298 { specie { - nMoles 1; molWeight 239.05; } thermodynamics @@ -19820,7 +18583,6 @@ C7H7_Quadri_Base { specie { - nMoles 1; molWeight 91.1338; } thermodynamics @@ -19836,7 +18598,6 @@ CBrCl3_Bromotric { specie { - nMoles 1; molWeight 198.271; } thermodynamics @@ -19852,7 +18613,6 @@ CCl3F___FC-11 { specie { - nMoles 1; molWeight 137.369; } thermodynamics @@ -19868,7 +18628,6 @@ MnS___Solid { specie { - nMoles 1; molWeight 87.002; } thermodynamics @@ -19884,7 +18643,6 @@ BrF3 { specie { - nMoles 1; molWeight 136.896; } thermodynamics @@ -19900,7 +18658,6 @@ HNCO_Isocyanic_Aci { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -19916,7 +18673,6 @@ NT_Tritium_Nitro { specie { - nMoles 1; molWeight 17.0306; } thermodynamics @@ -19932,7 +18688,6 @@ B(S) { specie { - nMoles 1; molWeight 10.811; } thermodynamics @@ -19948,7 +18703,6 @@ C4H2__butadiyne { specie { - nMoles 1; molWeight 50.0605; } thermodynamics @@ -19964,7 +18718,6 @@ P3O6 { specie { - nMoles 1; molWeight 188.918; } thermodynamics @@ -19980,7 +18733,6 @@ P4O10 { specie { - nMoles 1; molWeight 283.889; } thermodynamics @@ -19996,7 +18748,6 @@ FeSO4(S) { specie { - nMoles 1; molWeight 151.909; } thermodynamics @@ -20012,7 +18763,6 @@ C2Br4 { specie { - nMoles 1; molWeight 343.626; } thermodynamics @@ -20028,7 +18778,6 @@ MnS2_(S) { specie { - nMoles 1; molWeight 119.066; } thermodynamics @@ -20044,7 +18793,6 @@ CH3-NH-NH-CH3_Sy { specie { - nMoles 1; molWeight 60.0995; } thermodynamics @@ -20060,7 +18808,6 @@ DOBr { specie { - nMoles 1; molWeight 97.9144; } thermodynamics @@ -20076,7 +18823,6 @@ P4O10(L) { specie { - nMoles 1; molWeight 283.889; } thermodynamics @@ -20092,7 +18838,6 @@ C3H6O_MeOxyrane { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -20108,7 +18853,6 @@ C4__triplet { specie { - nMoles 1; molWeight 48.0446; } thermodynamics @@ -20124,7 +18868,6 @@ Si2H6__Disilane { specie { - nMoles 1; molWeight 62.2198; } thermodynamics @@ -20140,7 +18883,6 @@ FeO { specie { - nMoles 1; molWeight 71.8464; } thermodynamics @@ -20156,7 +18898,6 @@ C3H2F3_CF3-CH=CH* { specie { - nMoles 1; molWeight 95.0446; } thermodynamics @@ -20172,7 +18913,6 @@ Cl2 { specie { - nMoles 1; molWeight 70.906; } thermodynamics @@ -20188,7 +18928,6 @@ Al2O+ { specie { - nMoles 1; molWeight 69.9619; } thermodynamics @@ -20204,7 +18943,6 @@ NOH { specie { - nMoles 1; molWeight 31.0141; } thermodynamics @@ -20220,7 +18958,6 @@ OH+ { specie { - nMoles 1; molWeight 17.0068; } thermodynamics @@ -20236,7 +18973,6 @@ N3H { specie { - nMoles 1; molWeight 43.0281; } thermodynamics @@ -20252,7 +18988,6 @@ COH { specie { - nMoles 1; molWeight 29.0185; } thermodynamics @@ -20268,7 +19003,6 @@ C4Cl2 { specie { - nMoles 1; molWeight 118.951; } thermodynamics @@ -20284,7 +19018,6 @@ s-1,2,3,4-C6H2Cl4 { specie { - nMoles 1; molWeight 215.895; } thermodynamics @@ -20300,7 +19033,6 @@ NITROETHYLENE { specie { - nMoles 1; molWeight 73.0517; } thermodynamics @@ -20316,7 +19048,6 @@ C5H10,cyclo- { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -20332,7 +19063,6 @@ DOCl { specie { - nMoles 1; molWeight 53.4665; } thermodynamics @@ -20348,7 +19078,6 @@ PO2 { specie { - nMoles 1; molWeight 62.9726; } thermodynamics @@ -20364,7 +19093,6 @@ NH2D { specie { - nMoles 1; molWeight 18.0367; } thermodynamics @@ -20380,7 +19108,6 @@ C4H4O_Vin-KETENE { specie { - nMoles 1; molWeight 68.0759; } thermodynamics @@ -20396,7 +19123,6 @@ NO { specie { - nMoles 1; molWeight 30.0061; } thermodynamics @@ -20412,7 +19138,6 @@ NO2Cl { specie { - nMoles 1; molWeight 81.4585; } thermodynamics @@ -20428,7 +19153,6 @@ C5H7_1,4-diene-3yl { specie { - nMoles 1; molWeight 67.1115; } thermodynamics @@ -20444,7 +19168,6 @@ MgBr2(cr) { specie { - nMoles 1; molWeight 184.114; } thermodynamics @@ -20460,7 +19183,6 @@ FO { specie { - nMoles 1; molWeight 34.9978; } thermodynamics @@ -20476,7 +19198,6 @@ C6H9I-3-iodo { specie { - nMoles 1; molWeight 208.043; } thermodynamics @@ -20492,7 +19213,6 @@ FeCl3 { specie { - nMoles 1; molWeight 162.206; } thermodynamics @@ -20508,7 +19228,6 @@ NO3F { specie { - nMoles 1; molWeight 81.0033; } thermodynamics @@ -20524,7 +19243,6 @@ C22H18_(C10H7CH2)2 { specie { - nMoles 1; molWeight 282.389; } thermodynamics @@ -20540,7 +19258,6 @@ C2HCl5 { specie { - nMoles 1; molWeight 202.295; } thermodynamics @@ -20556,7 +19273,6 @@ C3H3+_CH2=C=CH+ { specie { - nMoles 1; molWeight 39.0568; } thermodynamics @@ -20572,7 +19288,6 @@ CCl4 { specie { - nMoles 1; molWeight 153.823; } thermodynamics @@ -20588,7 +19303,6 @@ C2HBr { specie { - nMoles 1; molWeight 104.931; } thermodynamics @@ -20604,7 +19318,6 @@ N2H4_HYDRAZINE { specie { - nMoles 1; molWeight 32.0453; } thermodynamics @@ -20620,7 +19333,6 @@ RDX_135_Triazine { specie { - nMoles 1; molWeight 222.118; } thermodynamics @@ -20636,7 +19348,6 @@ C2H4O3_HOCH2COOH { specie { - nMoles 1; molWeight 76.0524; } thermodynamics @@ -20652,7 +19363,6 @@ C14H9_1-Phenantr { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -20668,7 +19378,6 @@ HFCO+ { specie { - nMoles 1; molWeight 48.0169; } thermodynamics @@ -20684,7 +19393,6 @@ C4H8S2_1,3_Dithi { specie { - nMoles 1; molWeight 120.236; } thermodynamics @@ -20700,7 +19408,6 @@ ZnCO3_solid { specie { - nMoles 1; molWeight 125.379; } thermodynamics @@ -20716,7 +19423,6 @@ IO2__O-I-O { specie { - nMoles 1; molWeight 158.903; } thermodynamics @@ -20732,7 +19438,6 @@ CH2_SINGLET { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -20748,7 +19453,6 @@ CHON3_FormilAzide { specie { - nMoles 1; molWeight 71.0386; } thermodynamics @@ -20764,7 +19468,6 @@ C12H26O_1-dodeca { specie { - nMoles 1; molWeight 186.34; } thermodynamics @@ -20780,7 +19483,6 @@ KO { specie { - nMoles 1; molWeight 55.1014; } thermodynamics @@ -20796,7 +19498,6 @@ Mn { specie { - nMoles 1; molWeight 54.938; } thermodynamics @@ -20812,7 +19513,6 @@ C10H20_1-Decene { specie { - nMoles 1; molWeight 140.271; } thermodynamics @@ -20828,7 +19528,6 @@ ZrN(cr) { specie { - nMoles 1; molWeight 105.227; } thermodynamics @@ -20844,7 +19543,6 @@ AlF { specie { - nMoles 1; molWeight 45.9799; } thermodynamics @@ -20860,7 +19558,6 @@ CF3O2_CF3O-O* { specie { - nMoles 1; molWeight 101.005; } thermodynamics @@ -20876,7 +19573,6 @@ C4H7__tt-1buten- { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -20892,7 +19588,6 @@ C15H30O2_memyrist { specie { - nMoles 1; molWeight 242.405; } thermodynamics @@ -20908,7 +19603,6 @@ CD2O_Deutherofor { specie { - nMoles 1; molWeight 32.0388; } thermodynamics @@ -20924,7 +19618,6 @@ MgI2 { specie { - nMoles 1; molWeight 278.121; } thermodynamics @@ -20940,7 +19633,6 @@ C2Cl { specie { - nMoles 1; molWeight 59.4753; } thermodynamics @@ -20956,7 +19648,6 @@ C10H20_CycloDecan { specie { - nMoles 1; molWeight 140.271; } thermodynamics @@ -20972,7 +19663,6 @@ CHI3__IODOFORM { specie { - nMoles 1; molWeight 393.732; } thermodynamics @@ -20988,7 +19678,6 @@ Mn3O4__Solid-A { specie { - nMoles 1; molWeight 228.812; } thermodynamics @@ -21004,7 +19693,6 @@ Bi2O3 { specie { - nMoles 1; molWeight 465.958; } thermodynamics @@ -21020,7 +19708,6 @@ C5H4N__linear_Ra { specie { - nMoles 1; molWeight 78.0943; } thermodynamics @@ -21036,7 +19723,6 @@ P(cr) { specie { - nMoles 1; molWeight 30.9738; } thermodynamics @@ -21052,7 +19738,6 @@ C20H34O2_EtLinolen { specie { - nMoles 1; molWeight 306.493; } thermodynamics @@ -21068,7 +19753,6 @@ C4F6_1,3-Butadiene { specie { - nMoles 1; molWeight 162.035; } thermodynamics @@ -21084,7 +19768,6 @@ NCN+ { specie { - nMoles 1; molWeight 40.024; } thermodynamics @@ -21100,7 +19783,6 @@ MgOH+ { specie { - nMoles 1; molWeight 41.3188; } thermodynamics @@ -21116,7 +19798,6 @@ Zn3N2_solid { specie { - nMoles 1; molWeight 224.123; } thermodynamics @@ -21132,7 +19813,6 @@ BO2- { specie { - nMoles 1; molWeight 42.8103; } thermodynamics @@ -21148,7 +19828,6 @@ O2+ { specie { - nMoles 1; molWeight 31.9983; } thermodynamics @@ -21164,7 +19843,6 @@ C22H14_Pentafene { specie { - nMoles 1; molWeight 278.357; } thermodynamics @@ -21180,7 +19858,6 @@ Cr2FeO4 { specie { - nMoles 1; molWeight 223.837; } thermodynamics @@ -21196,7 +19873,6 @@ ND2H { specie { - nMoles 1; molWeight 19.0429; } thermodynamics @@ -21212,7 +19888,6 @@ C3H3_CH2(CH=C*) { specie { - nMoles 1; molWeight 39.0574; } thermodynamics @@ -21228,7 +19903,6 @@ CF- { specie { - nMoles 1; molWeight 31.0101; } thermodynamics @@ -21244,7 +19918,6 @@ C5H8Cl { specie { - nMoles 1; molWeight 103.573; } thermodynamics @@ -21260,7 +19933,6 @@ s-1,2,3,C6H3Cl3_1, { specie { - nMoles 1; molWeight 181.45; } thermodynamics @@ -21276,7 +19948,6 @@ HCOOH_FORMIC_ACID { specie { - nMoles 1; molWeight 46.0259; } thermodynamics @@ -21292,7 +19963,6 @@ GeS2(L) { specie { - nMoles 1; molWeight 136.718; } thermodynamics @@ -21308,7 +19978,6 @@ I2(L) { specie { - nMoles 1; molWeight 253.809; } thermodynamics @@ -21324,7 +19993,6 @@ C6H12O2_Caproic_ac { specie { - nMoles 1; molWeight 116.161; } thermodynamics @@ -21340,7 +20008,6 @@ K(cr) { specie { - nMoles 1; molWeight 39.102; } thermodynamics @@ -21356,7 +20023,6 @@ AlO2- { specie { - nMoles 1; molWeight 58.9808; } thermodynamics @@ -21372,7 +20038,6 @@ N3-_anion { specie { - nMoles 1; molWeight 42.0206; } thermodynamics @@ -21388,7 +20053,6 @@ C6H14,n-hexane { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -21404,7 +20068,6 @@ CH2O2-_CH2OO- { specie { - nMoles 1; molWeight 46.0264; } thermodynamics @@ -21420,7 +20083,6 @@ C13H26O2_Me-ester { specie { - nMoles 1; molWeight 214.351; } thermodynamics @@ -21436,7 +20098,6 @@ Mg(OH)2(L) { specie { - nMoles 1; molWeight 58.3267; } thermodynamics @@ -21452,7 +20113,6 @@ C3HN_Cyano-Acety { specie { - nMoles 1; molWeight 51.0481; } thermodynamics @@ -21468,7 +20128,6 @@ TNT____Solid_Yin { specie { - nMoles 1; molWeight 227.134; } thermodynamics @@ -21484,7 +20143,6 @@ C7H15__Neoheptyl-1 { specie { - nMoles 1; molWeight 99.1976; } thermodynamics @@ -21500,7 +20158,6 @@ C7H6O2_C6H5-COOH { specie { - nMoles 1; molWeight 122.125; } thermodynamics @@ -21516,7 +20173,6 @@ ZrO2(L) { specie { - nMoles 1; molWeight 123.219; } thermodynamics @@ -21532,7 +20188,6 @@ CH3NH_radical { specie { - nMoles 1; molWeight 30.0497; } thermodynamics @@ -21548,7 +20203,6 @@ C4H4N2_SUCCINONITR { specie { - nMoles 1; molWeight 80.0899; } thermodynamics @@ -21564,7 +20218,6 @@ C3HCl2OH { specie { - nMoles 1; molWeight 124.955; } thermodynamics @@ -21580,7 +20233,6 @@ NOCl { specie { - nMoles 1; molWeight 65.4591; } thermodynamics @@ -21596,7 +20248,6 @@ BI { specie { - nMoles 1; molWeight 137.715; } thermodynamics @@ -21612,7 +20263,6 @@ C4H7O2_Butyrat { specie { - nMoles 1; molWeight 87.0992; } thermodynamics @@ -21628,7 +20278,6 @@ Mg3N2(cr) { specie { - nMoles 1; molWeight 100.949; } thermodynamics @@ -21644,7 +20293,6 @@ CBr3__Radical { specie { - nMoles 1; molWeight 251.714; } thermodynamics @@ -21660,7 +20308,6 @@ ClF5 { specie { - nMoles 1; molWeight 130.445; } thermodynamics @@ -21676,7 +20323,6 @@ C5F12__FC_41-12 { specie { - nMoles 1; molWeight 288.037; } thermodynamics @@ -21692,7 +20338,6 @@ C20H10__CORANNUL { specie { - nMoles 1; molWeight 250.303; } thermodynamics @@ -21708,7 +20353,6 @@ C4H7O_2-butyralde { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -21724,7 +20368,6 @@ Po_Polonium { specie { - nMoles 1; molWeight 210; } thermodynamics @@ -21740,7 +20383,6 @@ D2 { specie { - nMoles 1; molWeight 4.0282; } thermodynamics @@ -21756,7 +20398,6 @@ COF2+__cation { specie { - nMoles 1; molWeight 66.0068; } thermodynamics @@ -21772,7 +20413,6 @@ Mg { specie { - nMoles 1; molWeight 24.312; } thermodynamics @@ -21788,7 +20428,6 @@ s-(CH3)2N-NH* { specie { - nMoles 1; molWeight 59.0915; } thermodynamics @@ -21804,7 +20443,6 @@ C10H8_Naphthalene { specie { - nMoles 1; molWeight 128.175; } thermodynamics @@ -21820,7 +20458,6 @@ IO { specie { - nMoles 1; molWeight 142.904; } thermodynamics @@ -21836,7 +20473,6 @@ MgO(L) { specie { - nMoles 1; molWeight 40.3114; } thermodynamics @@ -21852,7 +20488,6 @@ Fe.947O(S) { specie { - nMoles 1; molWeight 71.8464; } thermodynamics @@ -21868,7 +20503,6 @@ HNO { specie { - nMoles 1; molWeight 31.0141; } thermodynamics @@ -21884,7 +20518,6 @@ N3+_cation { specie { - nMoles 1; molWeight 42.0196; } thermodynamics @@ -21900,7 +20533,6 @@ C2N2Hg_(CN)2Hg { specie { - nMoles 1; molWeight 252.626; } thermodynamics @@ -21916,7 +20548,6 @@ C6H5F_Fluorobenz { specie { - nMoles 1; molWeight 96.1052; } thermodynamics @@ -21932,7 +20563,6 @@ C18H34O2_EtPalmOle { specie { - nMoles 1; molWeight 282.47; } thermodynamics @@ -21948,7 +20578,6 @@ NH4+ { specie { - nMoles 1; molWeight 18.038; } thermodynamics @@ -21964,7 +20593,6 @@ C12H_linear { specie { - nMoles 1; molWeight 145.142; } thermodynamics @@ -21980,7 +20608,6 @@ CH3SS_radical { specie { - nMoles 1; molWeight 79.1631; } thermodynamics @@ -21996,7 +20623,6 @@ Ni { specie { - nMoles 1; molWeight 58.71; } thermodynamics @@ -22012,7 +20638,6 @@ CYCLOPENTADIENE { specie { - nMoles 1; molWeight 66.1036; } thermodynamics @@ -22028,7 +20653,6 @@ ZrC(cr) { specie { - nMoles 1; molWeight 103.231; } thermodynamics @@ -22044,7 +20668,6 @@ CCl2F { specie { - nMoles 1; molWeight 101.916; } thermodynamics @@ -22060,7 +20683,6 @@ C7H__linear { specie { - nMoles 1; molWeight 85.086; } thermodynamics @@ -22076,7 +20698,6 @@ C9H11_PropylBenzen { specie { - nMoles 1; molWeight 119.188; } thermodynamics @@ -22092,7 +20713,6 @@ NH2+_cation { specie { - nMoles 1; molWeight 16.0221; } thermodynamics @@ -22108,7 +20728,6 @@ CH3-N*-CH3 { specie { - nMoles 1; molWeight 44.0768; } thermodynamics @@ -22124,7 +20743,6 @@ S-C3H5_CH3CH=CH* { specie { - nMoles 1; molWeight 41.0733; } thermodynamics @@ -22140,7 +20758,6 @@ CH2NC_Radical { specie { - nMoles 1; molWeight 40.0449; } thermodynamics @@ -22156,7 +20773,6 @@ PF+ { specie { - nMoles 1; molWeight 49.9717; } thermodynamics @@ -22172,7 +20788,6 @@ H2O2+__cis { specie { - nMoles 1; molWeight 34.0142; } thermodynamics @@ -22188,7 +20803,6 @@ Sb(OH)3 { specie { - nMoles 1; molWeight 172.772; } thermodynamics @@ -22204,7 +20818,6 @@ CF4____FC-14 { specie { - nMoles 1; molWeight 88.0048; } thermodynamics @@ -22220,7 +20833,6 @@ IR_(cr) { specie { - nMoles 1; molWeight 192.2; } thermodynamics @@ -22236,7 +20848,6 @@ C3HBr2O*__Radica { specie { - nMoles 1; molWeight 212.843; } thermodynamics @@ -22252,7 +20863,6 @@ C3O2+_O=C=C=C=O+ { specie { - nMoles 1; molWeight 68.0317; } thermodynamics @@ -22268,7 +20878,6 @@ s-1-C10H7-CH=CH* { specie { - nMoles 1; molWeight 153.206; } thermodynamics @@ -22284,7 +20893,6 @@ Fe3O4(S)_Solid-A { specie { - nMoles 1; molWeight 231.539; } thermodynamics @@ -22300,7 +20908,6 @@ HCS_Radical { specie { - nMoles 1; molWeight 45.0831; } thermodynamics @@ -22316,7 +20923,6 @@ SN { specie { - nMoles 1; molWeight 46.0707; } thermodynamics @@ -22332,7 +20938,6 @@ HgCl_____Calomel { specie { - nMoles 1; molWeight 236.043; } thermodynamics @@ -22348,7 +20953,6 @@ C8H20PB_PB(C2H5)4 { specie { - nMoles 1; molWeight 323.439; } thermodynamics @@ -22364,7 +20968,6 @@ I+ { specie { - nMoles 1; molWeight 126.904; } thermodynamics @@ -22380,7 +20983,6 @@ C3H4N__CH3-CH*-CN { specie { - nMoles 1; molWeight 54.072; } thermodynamics @@ -22396,7 +20998,6 @@ PFCl { specie { - nMoles 1; molWeight 85.4252; } thermodynamics @@ -22412,7 +21013,6 @@ C7H14O2_MeCaproate { specie { - nMoles 1; molWeight 130.188; } thermodynamics @@ -22428,7 +21028,6 @@ C2H2O2_HOCH=C=O { specie { - nMoles 1; molWeight 58.037; } thermodynamics @@ -22444,7 +21043,6 @@ CH3ONO { specie { - nMoles 1; molWeight 61.0406; } thermodynamics @@ -22460,7 +21058,6 @@ CH2_TRIPLET { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -22476,7 +21073,6 @@ NH4NO3(III) { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -22492,7 +21088,6 @@ C7H7ON_AcetPyridin { specie { - nMoles 1; molWeight 121.14; } thermodynamics @@ -22508,7 +21103,6 @@ C3H6O3_Trioxane { specie { - nMoles 1; molWeight 90.0795; } thermodynamics @@ -22524,7 +21118,6 @@ AlH { specie { - nMoles 1; molWeight 27.9895; } thermodynamics @@ -22540,7 +21133,6 @@ C2H2+_Acetylene+ { specie { - nMoles 1; molWeight 26.0377; } thermodynamics @@ -22556,7 +21148,6 @@ C18H35O2_Stearyl { specie { - nMoles 1; molWeight 283.478; } thermodynamics @@ -22572,7 +21163,6 @@ C10H16_Adamantane { specie { - nMoles 1; molWeight 136.239; } thermodynamics @@ -22588,7 +21178,6 @@ C2H+ { specie { - nMoles 1; molWeight 25.0297; } thermodynamics @@ -22604,7 +21193,6 @@ s-*CH2(CH3)-N-NH2 { specie { - nMoles 1; molWeight 59.0915; } thermodynamics @@ -22620,7 +21208,6 @@ C6H6_1,3-Hexadiyn { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -22636,7 +21223,6 @@ C5H5N5__Adenine { specie { - nMoles 1; molWeight 135.129; } thermodynamics @@ -22652,7 +21238,6 @@ C7H16_ISOHEPTANE { specie { - nMoles 1; molWeight 100.206; } thermodynamics @@ -22668,7 +21253,6 @@ NHF { specie { - nMoles 1; molWeight 34.0131; } thermodynamics @@ -22684,7 +21268,6 @@ IC2H4OH { specie { - nMoles 1; molWeight 171.966; } thermodynamics @@ -22700,7 +21283,6 @@ FCN { specie { - nMoles 1; molWeight 45.0162; } thermodynamics @@ -22716,7 +21298,6 @@ He { specie { - nMoles 1; molWeight 4.0026; } thermodynamics @@ -22732,7 +21313,6 @@ C2H5O+__CH3C*HOH+ { specie { - nMoles 1; molWeight 45.061; } thermodynamics @@ -22748,7 +21328,6 @@ D { specie { - nMoles 1; molWeight 2.0141; } thermodynamics @@ -22764,7 +21343,6 @@ C2Cl2F4_CF3CFCl2 { specie { - nMoles 1; molWeight 170.922; } thermodynamics @@ -22780,7 +21358,6 @@ CH2O2_cycCH2(OO) { specie { - nMoles 1; molWeight 46.0259; } thermodynamics @@ -22796,7 +21373,6 @@ SbCl2 { specie { - nMoles 1; molWeight 192.656; } thermodynamics @@ -22812,7 +21388,6 @@ Al2O3 { specie { - nMoles 1; molWeight 101.961; } thermodynamics @@ -22828,7 +21403,6 @@ C5H11__neopentyl { specie { - nMoles 1; molWeight 71.1434; } thermodynamics @@ -22844,7 +21418,6 @@ C2F2 { specie { - nMoles 1; molWeight 62.0191; } thermodynamics @@ -22860,7 +21433,6 @@ ClHC=C=CCl(O*) { specie { - nMoles 1; molWeight 123.947; } thermodynamics @@ -22876,7 +21448,6 @@ s-2,4-C6H4Cl2O_tr { specie { - nMoles 1; molWeight 163.004; } thermodynamics @@ -22892,7 +21463,6 @@ CH5O+__OH2CH3+ { specie { - nMoles 1; molWeight 33.0499; } thermodynamics @@ -22908,7 +21478,6 @@ OH { specie { - nMoles 1; molWeight 17.0074; } thermodynamics @@ -22924,7 +21493,6 @@ C3H6_propylene { specie { - nMoles 1; molWeight 42.0813; } thermodynamics @@ -22940,7 +21508,6 @@ FeCl3(s) { specie { - nMoles 1; molWeight 162.206; } thermodynamics @@ -22956,7 +21523,6 @@ C4H7__3-buten-1-yl { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -22972,7 +21538,6 @@ C7H15O_3,3-dimet { specie { - nMoles 1; molWeight 115.197; } thermodynamics @@ -22988,7 +21553,6 @@ ZnSO4(a) { specie { - nMoles 1; molWeight 161.432; } thermodynamics @@ -23004,7 +21568,6 @@ INO2_NitroIodine { specie { - nMoles 1; molWeight 172.91; } thermodynamics @@ -23020,7 +21583,6 @@ C6H12O6__Glucose { specie { - nMoles 1; molWeight 180.159; } thermodynamics @@ -23036,7 +21598,6 @@ NiS2(cr) { specie { - nMoles 1; molWeight 122.838; } thermodynamics @@ -23052,7 +21613,6 @@ C7H5NO__Anthranil { specie { - nMoles 1; molWeight 119.124; } thermodynamics @@ -23068,7 +21628,6 @@ CH2(NO2)2 { specie { - nMoles 1; molWeight 106.038; } thermodynamics @@ -23084,7 +21643,6 @@ HNNH-__trans { specie { - nMoles 1; molWeight 30.0299; } thermodynamics @@ -23100,7 +21658,6 @@ SbCl5 { specie { - nMoles 1; molWeight 299.015; } thermodynamics @@ -23116,7 +21673,6 @@ C19H34O2_meLinolei { specie { - nMoles 1; molWeight 294.482; } thermodynamics @@ -23132,7 +21688,6 @@ SiH3__Silyl { specie { - nMoles 1; molWeight 31.1099; } thermodynamics @@ -23148,7 +21703,6 @@ Hg { specie { - nMoles 1; molWeight 200.59; } thermodynamics @@ -23164,7 +21718,6 @@ C6H5__FULVENYL_M { specie { - nMoles 1; molWeight 77.1068; } thermodynamics @@ -23180,7 +21733,6 @@ S { specie { - nMoles 1; molWeight 32.064; } thermodynamics @@ -23196,7 +21748,6 @@ BH4 { specie { - nMoles 1; molWeight 14.8429; } thermodynamics @@ -23212,7 +21763,6 @@ HF+ { specie { - nMoles 1; molWeight 20.0058; } thermodynamics @@ -23228,7 +21778,6 @@ C9H18O6_TATP { specie { - nMoles 1; molWeight 222.24; } thermodynamics @@ -23244,7 +21793,6 @@ C12H5Cl4O2_RAD { specie { - nMoles 1; molWeight 322.984; } thermodynamics @@ -23260,7 +21808,6 @@ CDH3 { specie { - nMoles 1; molWeight 17.0492; } thermodynamics @@ -23276,7 +21823,6 @@ C17H32O2_mepalmOle { specie { - nMoles 1; molWeight 268.443; } thermodynamics @@ -23292,7 +21838,6 @@ HNO2-_trans____H { specie { - nMoles 1; molWeight 47.014; } thermodynamics @@ -23308,7 +21853,6 @@ JET-A(G)_C12H23 { specie { - nMoles 1; molWeight 167.317; } thermodynamics @@ -23324,7 +21868,6 @@ O3__cyclo__O(OO) { specie { - nMoles 1; molWeight 47.9982; } thermodynamics @@ -23340,7 +21883,6 @@ H2O3+__HOOOH+ { specie { - nMoles 1; molWeight 50.0136; } thermodynamics @@ -23356,7 +21898,6 @@ C2H6O__CH3OCH3 { specie { - nMoles 1; molWeight 46.0695; } thermodynamics @@ -23372,7 +21913,6 @@ C12H4Cl4O3_1368 { specie { - nMoles 1; molWeight 337.976; } thermodynamics @@ -23388,7 +21928,6 @@ E-_electron_gas { specie { - nMoles 1; molWeight 0.000545; } thermodynamics @@ -23404,7 +21943,6 @@ NH2OH { specie { - nMoles 1; molWeight 33.03; } thermodynamics @@ -23420,7 +21958,6 @@ Mn5N2(S) { specie { - nMoles 1; molWeight 302.703; } thermodynamics @@ -23436,7 +21973,6 @@ P2 { specie { - nMoles 1; molWeight 61.9476; } thermodynamics @@ -23452,7 +21988,6 @@ CBr3Cl__TriBromo { specie { - nMoles 1; molWeight 287.167; } thermodynamics @@ -23468,7 +22003,6 @@ C6H3_CH2=C=C=C=C=C { specie { - nMoles 1; molWeight 75.0908; } thermodynamics @@ -23484,7 +22018,6 @@ ClF3 { specie { - nMoles 1; molWeight 92.4482; } thermodynamics @@ -23500,7 +22033,6 @@ C18H36O4_9,10-di { specie { - nMoles 1; molWeight 316.485; } thermodynamics @@ -23516,7 +22048,6 @@ SiHF3 { specie { - nMoles 1; molWeight 86.0892; } thermodynamics @@ -23532,7 +22063,6 @@ C5H12O(L) { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -23548,7 +22078,6 @@ D2- { specie { - nMoles 1; molWeight 4.02874; } thermodynamics @@ -23564,7 +22093,6 @@ ND2 { specie { - nMoles 1; molWeight 18.0349; } thermodynamics @@ -23580,7 +22108,6 @@ C3H4O2_AcrylAcid { specie { - nMoles 1; molWeight 72.0641; } thermodynamics @@ -23596,7 +22123,6 @@ CHFClBr { specie { - nMoles 1; molWeight 147.371; } thermodynamics @@ -23612,7 +22138,6 @@ AlCl { specie { - nMoles 1; molWeight 62.4345; } thermodynamics @@ -23628,7 +22153,6 @@ C3H6O__OXETANE { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -23644,7 +22168,6 @@ PO- { specie { - nMoles 1; molWeight 46.9737; } thermodynamics @@ -23660,7 +22183,6 @@ C4F2 { specie { - nMoles 1; molWeight 86.0414; } thermodynamics @@ -23676,7 +22198,6 @@ I2_gas { specie { - nMoles 1; molWeight 253.809; } thermodynamics @@ -23692,7 +22213,6 @@ CH3C(CH3)2CH3 { specie { - nMoles 1; molWeight 72.1514; } thermodynamics @@ -23708,7 +22228,6 @@ GeCl2____triplet { specie { - nMoles 1; molWeight 143.496; } thermodynamics @@ -23724,7 +22243,6 @@ Cl2O7 { specie { - nMoles 1; molWeight 182.902; } thermodynamics @@ -23740,7 +22258,6 @@ BrBrO_Br-Br-O { specie { - nMoles 1; molWeight 175.801; } thermodynamics @@ -23756,7 +22273,6 @@ C8H7N__o-ToluoNitr { specie { - nMoles 1; molWeight 117.152; } thermodynamics @@ -23772,7 +22288,6 @@ ClNC_biradical { specie { - nMoles 1; molWeight 61.4709; } thermodynamics @@ -23788,7 +22303,6 @@ C10H__linear { specie { - nMoles 1; molWeight 121.119; } thermodynamics @@ -23804,7 +22318,6 @@ K2O2(g) { specie { - nMoles 1; molWeight 110.203; } thermodynamics @@ -23820,7 +22333,6 @@ NITRO-PENTANE { specie { - nMoles 1; molWeight 117.149; } thermodynamics @@ -23836,7 +22348,6 @@ Ar { specie { - nMoles 1; molWeight 39.948; } thermodynamics @@ -23852,7 +22363,6 @@ I- { specie { - nMoles 1; molWeight 126.905; } thermodynamics @@ -23868,7 +22378,6 @@ C4H9O2_tert-Buty { specie { - nMoles 1; molWeight 89.1151; } thermodynamics @@ -23884,7 +22393,6 @@ C24H18__1,3,5_TPB { specie { - nMoles 1; molWeight 306.411; } thermodynamics @@ -23900,7 +22408,6 @@ C<GR> { specie { - nMoles 1; molWeight 12.0112; } thermodynamics @@ -23916,7 +22423,6 @@ Na2O(a) { specie { - nMoles 1; molWeight 61.979; } thermodynamics @@ -23932,7 +22438,6 @@ FeCl2(L) { specie { - nMoles 1; molWeight 126.753; } thermodynamics @@ -23948,7 +22453,6 @@ Na2O(c) { specie { - nMoles 1; molWeight 61.979; } thermodynamics @@ -23964,7 +22468,6 @@ CF3-CHCl2__HF123 { specie { - nMoles 1; molWeight 152.931; } thermodynamics @@ -23980,7 +22483,6 @@ C5H5_cyPentadiene { specie { - nMoles 1; molWeight 65.0956; } thermodynamics @@ -23996,7 +22498,6 @@ MgCO3(cr) { specie { - nMoles 1; molWeight 84.3213; } thermodynamics @@ -24012,7 +22513,6 @@ C6H12O_Oxepane { specie { - nMoles 1; molWeight 100.162; } thermodynamics @@ -24028,7 +22528,6 @@ C6D6 { specie { - nMoles 1; molWeight 84.1515; } thermodynamics @@ -24044,7 +22543,6 @@ C2D2O_Ketene-D2 { specie { - nMoles 1; molWeight 44.0499; } thermodynamics @@ -24060,7 +22558,6 @@ Zn(cr) { specie { - nMoles 1; molWeight 65.37; } thermodynamics @@ -24076,7 +22573,6 @@ C3H7_i-propyl { specie { - nMoles 1; molWeight 43.0892; } thermodynamics @@ -24092,7 +22588,6 @@ AlOH { specie { - nMoles 1; molWeight 43.9889; } thermodynamics @@ -24108,7 +22603,6 @@ MgTiO3(L) { specie { - nMoles 1; molWeight 120.21; } thermodynamics @@ -24124,7 +22618,6 @@ H3PO { specie { - nMoles 1; molWeight 49.9971; } thermodynamics @@ -24140,7 +22633,6 @@ Pt-_Platinum_anion { specie { - nMoles 1; molWeight 195.091; } thermodynamics @@ -24156,7 +22648,6 @@ CH2BrI { specie { - nMoles 1; molWeight 220.832; } thermodynamics @@ -24172,7 +22663,6 @@ C6H11__1-ene-6-yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -24188,7 +22678,6 @@ SF5- { specie { - nMoles 1; molWeight 127.057; } thermodynamics @@ -24204,7 +22693,6 @@ C4H6O_2.5-DHFuran { specie { - nMoles 1; molWeight 70.0918; } thermodynamics @@ -24220,7 +22708,6 @@ C5H3+_CyPentTriene { specie { - nMoles 1; molWeight 63.0791; } thermodynamics @@ -24236,7 +22723,6 @@ Br2- { specie { - nMoles 1; molWeight 159.802; } thermodynamics @@ -24252,7 +22738,6 @@ Fe3O4(L)_Liquid { specie { - nMoles 1; molWeight 231.539; } thermodynamics @@ -24268,7 +22753,6 @@ C8H18,n-octane { specie { - nMoles 1; molWeight 114.233; } thermodynamics @@ -24284,7 +22768,6 @@ C12H6Cl4O2 { specie { - nMoles 1; molWeight 323.992; } thermodynamics @@ -24300,7 +22783,6 @@ CF2+ { specie { - nMoles 1; molWeight 50.0074; } thermodynamics @@ -24316,7 +22798,6 @@ N-C10H22_DECANE { specie { - nMoles 1; molWeight 142.287; } thermodynamics @@ -24332,7 +22813,6 @@ S(a) { specie { - nMoles 1; molWeight 32.064; } thermodynamics @@ -24348,7 +22828,6 @@ Mo { specie { - nMoles 1; molWeight 95.94; } thermodynamics @@ -24364,7 +22843,6 @@ C10H9_1-methylen { specie { - nMoles 1; molWeight 129.183; } thermodynamics @@ -24380,7 +22858,6 @@ HCN+ { specie { - nMoles 1; molWeight 27.0253; } thermodynamics @@ -24396,7 +22873,6 @@ C12H10_biphenyl { specie { - nMoles 1; molWeight 154.214; } thermodynamics @@ -24412,7 +22888,6 @@ NH4Cl(III) { specie { - nMoles 1; molWeight 53.4916; } thermodynamics @@ -24428,7 +22903,6 @@ SO2FCl { specie { - nMoles 1; molWeight 118.514; } thermodynamics @@ -24444,7 +22918,6 @@ CH3N2_cy(-CH2N=N*- { specie { - nMoles 1; molWeight 43.0485; } thermodynamics @@ -24460,7 +22933,6 @@ C3H5O__CH3C(O)CH2 { specie { - nMoles 1; molWeight 57.0727; } thermodynamics @@ -24476,7 +22948,6 @@ C(NO2)4 { specie { - nMoles 1; molWeight 196.033; } thermodynamics @@ -24492,7 +22963,6 @@ NH2NO2_NITRAMIDE { specie { - nMoles 1; molWeight 62.0281; } thermodynamics @@ -24508,7 +22978,6 @@ FO2+___F-O-O+ { specie { - nMoles 1; molWeight 50.9967; } thermodynamics @@ -24524,7 +22993,6 @@ HNCN_Cyanamide { specie { - nMoles 1; molWeight 41.0325; } thermodynamics @@ -24540,7 +23008,6 @@ C5H12O_2-Pentanol { specie { - nMoles 1; molWeight 88.1508; } thermodynamics @@ -24556,7 +23023,6 @@ ZrCl4________GAS { specie { - nMoles 1; molWeight 233.032; } thermodynamics @@ -24572,7 +23038,6 @@ C5H8_1,3_Pentadi { specie { - nMoles 1; molWeight 68.1195; } thermodynamics @@ -24588,7 +23053,6 @@ o-C6H4I_radical { specie { - nMoles 1; molWeight 203.003; } thermodynamics @@ -24604,7 +23068,6 @@ C10H22(L) { specie { - nMoles 1; molWeight 142.287; } thermodynamics @@ -24620,7 +23083,6 @@ C7H5(NO2)3_(TNT) { specie { - nMoles 1; molWeight 227.134; } thermodynamics @@ -24636,7 +23098,6 @@ C2H5Cl { specie { - nMoles 1; molWeight 64.5152; } thermodynamics @@ -24652,7 +23113,6 @@ CH3O__METHOXY_RAD { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -24668,7 +23128,6 @@ C20H12_Benzopyrene { specie { - nMoles 1; molWeight 252.319; } thermodynamics @@ -24684,7 +23143,6 @@ CH3C { specie { - nMoles 1; molWeight 27.0462; } thermodynamics @@ -24700,7 +23158,6 @@ CH2Cl { specie { - nMoles 1; molWeight 49.4801; } thermodynamics @@ -24716,7 +23173,6 @@ N2F4 { specie { - nMoles 1; molWeight 104.007; } thermodynamics @@ -24732,7 +23188,6 @@ C6H8__1,3-Cycloh { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -24748,7 +23203,6 @@ C6H3N3O7_Picricaci { specie { - nMoles 1; molWeight 229.107; } thermodynamics @@ -24764,7 +23218,6 @@ C20H40O2_methyna { specie { - nMoles 1; molWeight 312.541; } thermodynamics @@ -24780,7 +23233,6 @@ N3H+ { specie { - nMoles 1; molWeight 43.0275; } thermodynamics @@ -24796,7 +23248,6 @@ BH3 { specie { - nMoles 1; molWeight 13.8349; } thermodynamics @@ -24812,7 +23263,6 @@ CH2NO__H2C=N-O* { specie { - nMoles 1; molWeight 44.0332; } thermodynamics @@ -24828,7 +23278,6 @@ CI3 { specie { - nMoles 1; molWeight 392.724; } thermodynamics @@ -24844,7 +23293,6 @@ NCN { specie { - nMoles 1; molWeight 40.0246; } thermodynamics @@ -24860,7 +23308,6 @@ CHBr2 { specie { - nMoles 1; molWeight 172.821; } thermodynamics @@ -24876,7 +23323,6 @@ CHO2-_Formyloxy { specie { - nMoles 1; molWeight 45.0185; } thermodynamics @@ -24892,7 +23338,6 @@ CH3-_anion { specie { - nMoles 1; molWeight 15.0356; } thermodynamics @@ -24908,7 +23353,6 @@ MgAl2O4(L) { specie { - nMoles 1; molWeight 142.273; } thermodynamics @@ -24924,7 +23368,6 @@ C20H12_Perylene { specie { - nMoles 1; molWeight 252.319; } thermodynamics @@ -24940,7 +23383,6 @@ HDO2 { specie { - nMoles 1; molWeight 35.0209; } thermodynamics @@ -24956,7 +23398,6 @@ CH5N3_guanidin { specie { - nMoles 1; molWeight 59.0711; } thermodynamics @@ -24972,7 +23413,6 @@ C6H9_Cy_C5H7-4CH2 { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -24988,7 +23428,6 @@ C12H24O2_n-acid { specie { - nMoles 1; molWeight 200.324; } thermodynamics @@ -25004,7 +23443,6 @@ C6H9_Cy_C5H6-CH3 { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -25020,7 +23458,6 @@ CrO2 { specie { - nMoles 1; molWeight 83.9948; } thermodynamics @@ -25036,7 +23473,6 @@ C7H14,1-heptene { specie { - nMoles 1; molWeight 98.1896; } thermodynamics @@ -25052,7 +23488,6 @@ MUSTARD_S(CH2CH2 { specie { - nMoles 1; molWeight 159.078; } thermodynamics @@ -25068,7 +23503,6 @@ C6H11_3-ene-6yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -25084,7 +23518,6 @@ C12H9,o-bipheny { specie { - nMoles 1; molWeight 153.206; } thermodynamics @@ -25100,7 +23533,6 @@ ClF { specie { - nMoles 1; molWeight 54.4514; } thermodynamics @@ -25116,7 +23548,6 @@ D+ { specie { - nMoles 1; molWeight 2.01356; } thermodynamics @@ -25132,7 +23563,6 @@ HOCl+_Hypochloro { specie { - nMoles 1; molWeight 52.4598; } thermodynamics @@ -25148,7 +23578,6 @@ N2O+ { specie { - nMoles 1; molWeight 44.0123; } thermodynamics @@ -25164,7 +23593,6 @@ ClCN { specie { - nMoles 1; molWeight 61.4709; } thermodynamics @@ -25180,7 +23608,6 @@ SO2 { specie { - nMoles 1; molWeight 64.0628; } thermodynamics @@ -25196,7 +23623,6 @@ ClC3H4 { specie { - nMoles 1; molWeight 75.5183; } thermodynamics @@ -25212,7 +23638,6 @@ C14H9_3-Phenantr { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -25228,7 +23653,6 @@ BiI { specie { - nMoles 1; molWeight 335.884; } thermodynamics @@ -25244,7 +23668,6 @@ C6H6_3,4-Dimethy { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -25260,7 +23683,6 @@ CBr2O { specie { - nMoles 1; molWeight 187.812; } thermodynamics @@ -25276,7 +23698,6 @@ CH_quartet { specie { - nMoles 1; molWeight 13.0191; } thermodynamics @@ -25292,7 +23713,6 @@ C7H7_Quadricy_Ap. { specie { - nMoles 1; molWeight 91.1338; } thermodynamics @@ -25308,7 +23728,6 @@ C7H16_NeoHeptane { specie { - nMoles 1; molWeight 100.206; } thermodynamics @@ -25324,7 +23743,6 @@ C3H3I_HCC-CH2I { specie { - nMoles 1; molWeight 165.962; } thermodynamics @@ -25340,7 +23758,6 @@ C6H6___Benzvalen { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -25356,7 +23773,6 @@ C6H8_DIHYDROBENZVA { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -25372,7 +23788,6 @@ C3F___Radical { specie { - nMoles 1; molWeight 55.0319; } thermodynamics @@ -25388,7 +23803,6 @@ C2HF3__CHF=CF2 { specie { - nMoles 1; molWeight 82.0255; } thermodynamics @@ -25404,7 +23818,6 @@ D2+ { specie { - nMoles 1; molWeight 4.02766; } thermodynamics @@ -25420,7 +23833,6 @@ FCO__(CFObyCOF) { specie { - nMoles 1; molWeight 47.0089; } thermodynamics @@ -25436,7 +23848,6 @@ HBr+_Hydrogen_Br { specie { - nMoles 1; molWeight 80.9083; } thermodynamics @@ -25452,7 +23863,6 @@ NOF { specie { - nMoles 1; molWeight 49.0045; } thermodynamics @@ -25468,7 +23878,6 @@ S- { specie { - nMoles 1; molWeight 32.0645; } thermodynamics @@ -25484,7 +23893,6 @@ C5H3_1,4DIYNE3YL { specie { - nMoles 1; molWeight 63.0797; } thermodynamics @@ -25500,7 +23908,6 @@ C2HF5 { specie { - nMoles 1; molWeight 120.022; } thermodynamics @@ -25516,7 +23923,6 @@ CFO- { specie { - nMoles 1; molWeight 47.0095; } thermodynamics @@ -25532,7 +23938,6 @@ C20H38O2_Gondoicac { specie { - nMoles 1; molWeight 310.525; } thermodynamics @@ -25548,7 +23953,6 @@ PbI { specie { - nMoles 1; molWeight 334.094; } thermodynamics @@ -25564,7 +23968,6 @@ DO2 { specie { - nMoles 1; molWeight 34.0129; } thermodynamics @@ -25580,7 +23983,6 @@ CH3I+_cation { specie { - nMoles 1; molWeight 141.939; } thermodynamics @@ -25596,7 +23998,6 @@ B2O2 { specie { - nMoles 1; molWeight 53.6208; } thermodynamics @@ -25612,7 +24013,6 @@ C2H5NO2_NitroEth { specie { - nMoles 1; molWeight 75.0677; } thermodynamics @@ -25628,7 +24028,6 @@ DBr { specie { - nMoles 1; molWeight 81.915; } thermodynamics @@ -25644,7 +24043,6 @@ SnH3 { specie { - nMoles 1; molWeight 121.714; } thermodynamics @@ -25660,7 +24058,6 @@ NO- { specie { - nMoles 1; molWeight 30.0066; } thermodynamics @@ -25676,7 +24073,6 @@ C3H3Cl_Chloro-Al { specie { - nMoles 1; molWeight 74.5104; } thermodynamics @@ -25692,7 +24088,6 @@ BFCl { specie { - nMoles 1; molWeight 65.2624; } thermodynamics @@ -25708,7 +24103,6 @@ C8H6__C6H5CCH { specie { - nMoles 1; molWeight 102.137; } thermodynamics @@ -25724,7 +24118,6 @@ H2CN2_cy(-CH2N=N-) { specie { - nMoles 1; molWeight 42.0405; } thermodynamics @@ -25740,7 +24133,6 @@ CHD3_Methane-D3 { specie { - nMoles 1; molWeight 19.0614; } thermodynamics @@ -25756,7 +24148,6 @@ H3PO4 { specie { - nMoles 1; molWeight 97.9953; } thermodynamics @@ -25772,7 +24163,6 @@ C2HO__HCC=O+ { specie { - nMoles 1; molWeight 41.0291; } thermodynamics @@ -25788,7 +24178,6 @@ C6H5OOH_hydroper { specie { - nMoles 1; molWeight 110.114; } thermodynamics @@ -25804,7 +24193,6 @@ C7H8__CyTriEne { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -25820,7 +24208,6 @@ C16H9_4-Pyrenyl { specie { - nMoles 1; molWeight 201.25; } thermodynamics @@ -25836,7 +24223,6 @@ C5H5N__1-Cyano { specie { - nMoles 1; molWeight 79.1023; } thermodynamics @@ -25852,7 +24238,6 @@ CH3CN_Methyl-Cya { specie { - nMoles 1; molWeight 41.0529; } thermodynamics @@ -25868,7 +24253,6 @@ T-C4H10O_T-Butan { specie { - nMoles 1; molWeight 74.1237; } thermodynamics @@ -25884,7 +24268,6 @@ C2H6 { specie { - nMoles 1; molWeight 30.0701; } thermodynamics @@ -25900,7 +24283,6 @@ C12H22O11_Cellobi { specie { - nMoles 1; molWeight 342.303; } thermodynamics @@ -25916,7 +24298,6 @@ s-1-2-C10H10 { specie { - nMoles 1; molWeight 130.191; } thermodynamics @@ -25932,7 +24313,6 @@ NOF3 { specie { - nMoles 1; molWeight 87.0013; } thermodynamics @@ -25948,7 +24328,6 @@ C2H4F_beta-Fluor { specie { - nMoles 1; molWeight 47.0526; } thermodynamics @@ -25964,7 +24343,6 @@ Al(OH)3 { specie { - nMoles 1; molWeight 78.0036; } thermodynamics @@ -25980,7 +24358,6 @@ NCCH2OH { specie { - nMoles 1; molWeight 57.0523; } thermodynamics @@ -25996,7 +24373,6 @@ C9H10_Methyl_styre { specie { - nMoles 1; molWeight 118.18; } thermodynamics @@ -26012,7 +24388,6 @@ H6F6 { specie { - nMoles 1; molWeight 120.038; } thermodynamics @@ -26028,7 +24403,6 @@ GeCl2____singlet { specie { - nMoles 1; molWeight 143.496; } thermodynamics @@ -26044,7 +24418,6 @@ C3H6_cyclo- { specie { - nMoles 1; molWeight 42.0813; } thermodynamics @@ -26060,7 +24433,6 @@ AlO+ { specie { - nMoles 1; molWeight 42.9804; } thermodynamics @@ -26076,7 +24448,6 @@ SF2 { specie { - nMoles 1; molWeight 70.0608; } thermodynamics @@ -26092,7 +24463,6 @@ NO2 { specie { - nMoles 1; molWeight 46.0055; } thermodynamics @@ -26108,7 +24478,6 @@ C3H5N_Propionitryl { specie { - nMoles 1; molWeight 55.08; } thermodynamics @@ -26124,7 +24493,6 @@ BBr3 { specie { - nMoles 1; molWeight 250.514; } thermodynamics @@ -26140,7 +24508,6 @@ C14H28O2_Ethyl_D { specie { - nMoles 1; molWeight 228.378; } thermodynamics @@ -26156,7 +24523,6 @@ NaO2(cr) { specie { - nMoles 1; molWeight 54.9886; } thermodynamics @@ -26172,7 +24538,6 @@ HOF { specie { - nMoles 1; molWeight 36.0058; } thermodynamics @@ -26188,7 +24553,6 @@ C4H8O_DiMethylOxyr { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -26204,7 +24568,6 @@ C5H9_1Buten3M3yl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -26220,7 +24583,6 @@ C(NO)_cy { specie { - nMoles 1; molWeight 42.0173; } thermodynamics @@ -26236,7 +24598,6 @@ C10D8__Naphthale { specie { - nMoles 1; molWeight 136.224; } thermodynamics @@ -26252,7 +24613,6 @@ H2O(L) { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -26268,7 +24628,6 @@ CBr2ClF___11B3 { specie { - nMoles 1; molWeight 226.264; } thermodynamics @@ -26284,7 +24643,6 @@ CH3N2*___CH3-N=N { specie { - nMoles 1; molWeight 43.0485; } thermodynamics @@ -26300,7 +24658,6 @@ C2N___N(CC)_cy { specie { - nMoles 1; molWeight 38.029; } thermodynamics @@ -26316,7 +24673,6 @@ C3H2N_CH=CHCN { specie { - nMoles 1; molWeight 52.0561; } thermodynamics @@ -26332,7 +24688,6 @@ CH3O2_Methyl_Per { specie { - nMoles 1; molWeight 47.0339; } thermodynamics @@ -26348,7 +24703,6 @@ C14H28_Cy4Decane { specie { - nMoles 1; molWeight 196.379; } thermodynamics @@ -26364,7 +24718,6 @@ CH2OOCH3 { specie { - nMoles 1; molWeight 62.0689; } thermodynamics @@ -26380,7 +24733,6 @@ HNOH+_trans_&_Eq { specie { - nMoles 1; molWeight 32.0215; } thermodynamics @@ -26396,7 +24748,6 @@ Bi(CH3)3 { specie { - nMoles 1; molWeight 254.085; } thermodynamics @@ -26412,7 +24763,6 @@ C23H46_1-Tricosen { specie { - nMoles 1; molWeight 322.623; } thermodynamics @@ -26428,7 +24778,6 @@ C3H2(3)_*HC=C=CH* { specie { - nMoles 1; molWeight 38.0494; } thermodynamics @@ -26444,7 +24793,6 @@ FC2H4OH__ATcT_C { specie { - nMoles 1; molWeight 64.06; } thermodynamics @@ -26460,7 +24808,6 @@ CH3F+_cation { specie { - nMoles 1; molWeight 34.0329; } thermodynamics @@ -26476,7 +24823,6 @@ Ge- { specie { - nMoles 1; molWeight 72.5905; } thermodynamics @@ -26492,7 +24838,6 @@ C6H2Cl3OOH__Cy { specie { - nMoles 1; molWeight 213.449; } thermodynamics @@ -26508,7 +24853,6 @@ N2O3 { specie { - nMoles 1; molWeight 76.0116; } thermodynamics @@ -26524,7 +24868,6 @@ Cl { specie { - nMoles 1; molWeight 35.453; } thermodynamics @@ -26540,7 +24883,6 @@ Cl2C=C=CCl(O*) { specie { - nMoles 1; molWeight 158.392; } thermodynamics @@ -26556,7 +24898,6 @@ NO3- { specie { - nMoles 1; molWeight 62.0054; } thermodynamics @@ -26572,7 +24913,6 @@ CrO { specie { - nMoles 1; molWeight 67.9954; } thermodynamics @@ -26588,7 +24928,6 @@ AlCl3 { specie { - nMoles 1; molWeight 133.341; } thermodynamics @@ -26604,7 +24943,6 @@ C4H3_E-1yl_Radical { specie { - nMoles 1; molWeight 51.0685; } thermodynamics @@ -26620,7 +24958,6 @@ COCl2 { specie { - nMoles 1; molWeight 98.9166; } thermodynamics @@ -26636,7 +24973,6 @@ Pd(liq) { specie { - nMoles 1; molWeight 106.4; } thermodynamics @@ -26652,7 +24988,6 @@ C10H13_C5H7-C5H6* { specie { - nMoles 1; molWeight 133.215; } thermodynamics @@ -26668,7 +25003,6 @@ C10H19_1-decenyl { specie { - nMoles 1; molWeight 139.263; } thermodynamics @@ -26684,7 +25018,6 @@ C3H6O_Propionald { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -26700,7 +25033,6 @@ CH3N_Rad_Triplet { specie { - nMoles 1; molWeight 29.0418; } thermodynamics @@ -26716,7 +25048,6 @@ C5H4_1,4-DIYNE { specie { - nMoles 1; molWeight 64.0876; } thermodynamics @@ -26732,7 +25063,6 @@ F2O___F-O-F { specie { - nMoles 1; molWeight 53.9962; } thermodynamics @@ -26748,7 +25078,6 @@ C30H10_Half-Buck { specie { - nMoles 1; molWeight 370.414; } thermodynamics @@ -26764,7 +25093,6 @@ C3H3F3_CF3-CH=CH2 { specie { - nMoles 1; molWeight 96.0526; } thermodynamics @@ -26780,7 +25108,6 @@ FCN+___ATcT_C { specie { - nMoles 1; molWeight 45.0157; } thermodynamics @@ -26796,7 +25123,6 @@ C5H4O_Cy_CPD-ONE { specie { - nMoles 1; molWeight 80.087; } thermodynamics @@ -26812,7 +25138,6 @@ C10H7_C6H4*-CH=CCH { specie { - nMoles 1; molWeight 127.167; } thermodynamics @@ -26828,7 +25153,6 @@ BrO+ { specie { - nMoles 1; molWeight 95.8998; } thermodynamics @@ -26844,7 +25168,6 @@ C4H4S_Thiophene { specie { - nMoles 1; molWeight 84.1405; } thermodynamics @@ -26860,7 +25183,6 @@ PbBr2 { specie { - nMoles 1; molWeight 366.992; } thermodynamics @@ -26876,7 +25198,6 @@ H3+_TRIHYDROGEN { specie { - nMoles 1; molWeight 3.02337; } thermodynamics @@ -26892,7 +25213,6 @@ C10H20_2-decene- { specie { - nMoles 1; molWeight 140.271; } thermodynamics @@ -26908,7 +25228,6 @@ s-1,2-C2H4(NO2)2 { specie { - nMoles 1; molWeight 120.065; } thermodynamics @@ -26924,7 +25243,6 @@ PT+_Platinum_cati { specie { - nMoles 1; molWeight 195.089; } thermodynamics @@ -26940,7 +25258,6 @@ H2S { specie { - nMoles 1; molWeight 34.0799; } thermodynamics @@ -26956,7 +25273,6 @@ C3H5O__CH3CH2*CO { specie { - nMoles 1; molWeight 57.0727; } thermodynamics @@ -26972,7 +25288,6 @@ CH2OH_RADICAL { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -26988,7 +25303,6 @@ NiS2(L) { specie { - nMoles 1; molWeight 122.838; } thermodynamics @@ -27004,7 +25318,6 @@ Mg2SiO4(cr) { specie { - nMoles 1; molWeight 140.708; } thermodynamics @@ -27020,7 +25333,6 @@ N-C9H20_NONANE { specie { - nMoles 1; molWeight 128.26; } thermodynamics @@ -27036,7 +25348,6 @@ C2H2Cl3_1,1,1-Tr { specie { - nMoles 1; molWeight 132.397; } thermodynamics @@ -27052,7 +25363,6 @@ NiS(b) { specie { - nMoles 1; molWeight 90.774; } thermodynamics @@ -27068,7 +25378,6 @@ HO2+ { specie { - nMoles 1; molWeight 33.0062; } thermodynamics @@ -27084,7 +25393,6 @@ SO { specie { - nMoles 1; molWeight 48.0634; } thermodynamics @@ -27100,7 +25408,6 @@ CCl2 { specie { - nMoles 1; molWeight 82.9172; } thermodynamics @@ -27116,7 +25423,6 @@ BrC2H4OH__ATcT_C { specie { - nMoles 1; molWeight 124.962; } thermodynamics @@ -27132,7 +25438,6 @@ C8H9_DiMethylPh_R { specie { - nMoles 1; molWeight 105.161; } thermodynamics @@ -27148,7 +25453,6 @@ CH2O-__CH**-OH { specie { - nMoles 1; molWeight 30.027; } thermodynamics @@ -27164,7 +25468,6 @@ BiF { specie { - nMoles 1; molWeight 227.978; } thermodynamics @@ -27180,7 +25483,6 @@ CrN(S) { specie { - nMoles 1; molWeight 66.0027; } thermodynamics @@ -27196,7 +25498,6 @@ MgI2(L) { specie { - nMoles 1; molWeight 278.121; } thermodynamics @@ -27212,7 +25513,6 @@ s-1-C10H7-CH*-CH3 { specie { - nMoles 1; molWeight 155.221; } thermodynamics @@ -27228,7 +25528,6 @@ CuF2 { specie { - nMoles 1; molWeight 101.537; } thermodynamics @@ -27244,7 +25543,6 @@ CH3NO__O=CH-NH2 { specie { - nMoles 1; molWeight 45.0412; } thermodynamics @@ -27260,7 +25558,6 @@ C4H5__1,3-Butadi { specie { - nMoles 1; molWeight 53.0845; } thermodynamics @@ -27276,7 +25573,6 @@ MgCl2(L) { specie { - nMoles 1; molWeight 95.218; } thermodynamics @@ -27292,7 +25588,6 @@ C2H3- { specie { - nMoles 1; molWeight 27.0468; } thermodynamics @@ -27308,7 +25603,6 @@ CH3+ { specie { - nMoles 1; molWeight 15.0345; } thermodynamics @@ -27324,7 +25618,6 @@ AlBr3 { specie { - nMoles 1; molWeight 266.684; } thermodynamics @@ -27340,7 +25633,6 @@ C3H6O__CyC3H5-OH { specie { - nMoles 1; molWeight 58.0807; } thermodynamics @@ -27356,7 +25648,6 @@ C11H24O_1-undeca { specie { - nMoles 1; molWeight 172.313; } thermodynamics @@ -27372,7 +25663,6 @@ C16H31O2_palmita { specie { - nMoles 1; molWeight 255.424; } thermodynamics @@ -27388,7 +25678,6 @@ C6F14__FC_51-14 { specie { - nMoles 1; molWeight 338.044; } thermodynamics @@ -27404,7 +25693,6 @@ C12_linear_Triplet { specie { - nMoles 1; molWeight 144.134; } thermodynamics @@ -27420,7 +25708,6 @@ C22H46___docosane { specie { - nMoles 1; molWeight 310.612; } thermodynamics @@ -27436,7 +25723,6 @@ HPO { specie { - nMoles 1; molWeight 47.9812; } thermodynamics @@ -27452,7 +25738,6 @@ FeOCl(cr) { specie { - nMoles 1; molWeight 107.299; } thermodynamics @@ -27468,7 +25753,6 @@ C5_singlet { specie { - nMoles 1; molWeight 60.0558; } thermodynamics @@ -27484,7 +25768,6 @@ Cl2C=C=CH(O*) { specie { - nMoles 1; molWeight 123.947; } thermodynamics @@ -27500,7 +25783,6 @@ P2O3 { specie { - nMoles 1; molWeight 109.946; } thermodynamics @@ -27516,7 +25798,6 @@ C10H7_Naphtyl_rad { specie { - nMoles 1; molWeight 127.167; } thermodynamics @@ -27532,7 +25813,6 @@ CHF- { specie { - nMoles 1; molWeight 32.0181; } thermodynamics @@ -27548,7 +25828,6 @@ C10H21_2-decyl { specie { - nMoles 1; molWeight 141.279; } thermodynamics @@ -27564,7 +25843,6 @@ O3 { specie { - nMoles 1; molWeight 47.9982; } thermodynamics @@ -27580,7 +25858,6 @@ NOO { specie { - nMoles 1; molWeight 46.0055; } thermodynamics @@ -27596,7 +25873,6 @@ PO { specie { - nMoles 1; molWeight 46.9732; } thermodynamics @@ -27612,7 +25888,6 @@ BF3 { specie { - nMoles 1; molWeight 67.8062; } thermodynamics @@ -27628,7 +25903,6 @@ C3H8O3_Glycerol { specie { - nMoles 1; molWeight 92.0954; } thermodynamics @@ -27644,7 +25918,6 @@ T2O__(3H2O) { specie { - nMoles 1; molWeight 111.799; } thermodynamics @@ -27660,7 +25933,6 @@ o-C6H3I_Cy { specie { - nMoles 1; molWeight 201.995; } thermodynamics @@ -27676,7 +25948,6 @@ CH3NH2-_anion__H { specie { - nMoles 1; molWeight 31.0582; } thermodynamics @@ -27692,7 +25963,6 @@ CHF2 { specie { - nMoles 1; molWeight 51.0159; } thermodynamics @@ -27708,7 +25978,6 @@ SbH3 { specie { - nMoles 1; molWeight 124.774; } thermodynamics @@ -27724,7 +25993,6 @@ C19H38O2_Stearate { specie { - nMoles 1; molWeight 298.514; } thermodynamics @@ -27740,7 +26008,6 @@ Fe(CO)5(L) { specie { - nMoles 1; molWeight 195.9; } thermodynamics @@ -27756,7 +26023,6 @@ C5H6O__4H-Pyran { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -27772,7 +26038,6 @@ CrO3 { specie { - nMoles 1; molWeight 99.9942; } thermodynamics @@ -27788,7 +26053,6 @@ BOCl2 { specie { - nMoles 1; molWeight 97.7164; } thermodynamics @@ -27804,7 +26068,6 @@ Fe2Cl4 { specie { - nMoles 1; molWeight 253.506; } thermodynamics @@ -27820,7 +26083,6 @@ C3H7_n-propyl { specie { - nMoles 1; molWeight 43.0892; } thermodynamics @@ -27836,7 +26098,6 @@ CH2D2_Methane-D2 { specie { - nMoles 1; molWeight 18.0553; } thermodynamics @@ -27852,7 +26113,6 @@ C7H12__Cy-heptene { specie { - nMoles 1; molWeight 96.1737; } thermodynamics @@ -27868,7 +26128,6 @@ FeS(c) { specie { - nMoles 1; molWeight 87.911; } thermodynamics @@ -27884,7 +26143,6 @@ CH_excited_B2Sig { specie { - nMoles 1; molWeight 13.0191; } thermodynamics @@ -27900,7 +26158,6 @@ C3H7I_2-IodoProp { specie { - nMoles 1; molWeight 169.994; } thermodynamics @@ -27916,7 +26173,6 @@ PD3_Phosphine-D3 { specie { - nMoles 1; molWeight 37.0161; } thermodynamics @@ -27932,7 +26188,6 @@ C14H9_2-Phenantr { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -27948,7 +26203,6 @@ CH2-NH-CH3 { specie { - nMoles 1; molWeight 44.0768; } thermodynamics @@ -27964,7 +26218,6 @@ C4F10 { specie { - nMoles 1; molWeight 238.029; } thermodynamics @@ -27980,7 +26233,6 @@ C2H4ClF_1,1-Chlo { specie { - nMoles 1; molWeight 82.5056; } thermodynamics @@ -27996,7 +26248,6 @@ C18H29O2_Linolenat { specie { - nMoles 1; molWeight 277.431; } thermodynamics @@ -28012,7 +26263,6 @@ N2+ { specie { - nMoles 1; molWeight 28.0129; } thermodynamics @@ -28028,7 +26278,6 @@ He+ { specie { - nMoles 1; molWeight 4.00206; } thermodynamics @@ -28044,7 +26293,6 @@ C16H32O2_Palmitiac { specie { - nMoles 1; molWeight 256.432; } thermodynamics @@ -28060,7 +26308,6 @@ SO2F2 { specie { - nMoles 1; molWeight 102.06; } thermodynamics @@ -28076,7 +26323,6 @@ P4O10(cr) { specie { - nMoles 1; molWeight 283.889; } thermodynamics @@ -28092,7 +26338,6 @@ C2Cl6 { specie { - nMoles 1; molWeight 236.74; } thermodynamics @@ -28108,7 +26353,6 @@ C4H6Cl2_3,4-DiCl { specie { - nMoles 1; molWeight 124.998; } thermodynamics @@ -28124,7 +26368,6 @@ N2O+_NON+ { specie { - nMoles 1; molWeight 44.0123; } thermodynamics @@ -28140,7 +26383,6 @@ m-CHLOROPHENYL { specie { - nMoles 1; molWeight 111.552; } thermodynamics @@ -28156,7 +26398,6 @@ C2H5_ethyl_radic { specie { - nMoles 1; molWeight 29.0622; } thermodynamics @@ -28172,7 +26413,6 @@ C4H8O__CyButanol { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -28188,7 +26428,6 @@ C8H2_linear { specie { - nMoles 1; molWeight 98.1051; } thermodynamics @@ -28204,7 +26443,6 @@ C2F4__FC-1114 { specie { - nMoles 1; molWeight 100.016; } thermodynamics @@ -28220,7 +26458,6 @@ C2HClF2_cis { specie { - nMoles 1; molWeight 98.4801; } thermodynamics @@ -28236,7 +26473,6 @@ C18H36_1-Octadece { specie { - nMoles 1; molWeight 252.488; } thermodynamics @@ -28252,7 +26488,6 @@ MnO2(S) { specie { - nMoles 1; molWeight 86.9368; } thermodynamics @@ -28268,7 +26503,6 @@ C6H7__C5H5-1-CH2 { specie { - nMoles 1; molWeight 79.1227; } thermodynamics @@ -28284,7 +26518,6 @@ Cr(L) { specie { - nMoles 1; molWeight 51.996; } thermodynamics @@ -28300,7 +26533,6 @@ P4_tetrahedral { specie { - nMoles 1; molWeight 123.895; } thermodynamics @@ -28316,7 +26548,6 @@ ZrF4 { specie { - nMoles 1; molWeight 167.214; } thermodynamics @@ -28332,7 +26563,6 @@ CD2_Deutherometh { specie { - nMoles 1; molWeight 16.0393; } thermodynamics @@ -28348,7 +26578,6 @@ C2H2Cl2_1,1- { specie { - nMoles 1; molWeight 96.9442; } thermodynamics @@ -28364,7 +26593,6 @@ BFCl2 { specie { - nMoles 1; molWeight 100.715; } thermodynamics @@ -28380,7 +26608,6 @@ C6H9_a { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -28396,7 +26623,6 @@ CH2N2_Carbodiimi { specie { - nMoles 1; molWeight 42.0405; } thermodynamics @@ -28412,7 +26638,6 @@ CH3CHO_Acetaldehy { specie { - nMoles 1; molWeight 44.0536; } thermodynamics @@ -28428,7 +26653,6 @@ s-2,4-C6H4Cl2O_cis { specie { - nMoles 1; molWeight 163.004; } thermodynamics @@ -28444,7 +26668,6 @@ C7H14O2_Enanthic { specie { - nMoles 1; molWeight 130.188; } thermodynamics @@ -28460,7 +26683,6 @@ C6H13__2-Hexyl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -28476,7 +26698,6 @@ s-1,3,5-C6H3Cl3 { specie { - nMoles 1; molWeight 181.45; } thermodynamics @@ -28492,7 +26713,6 @@ C3H2(1)_HCC-CH** { specie { - nMoles 1; molWeight 38.0494; } thermodynamics @@ -28508,7 +26728,6 @@ HAlO { specie { - nMoles 1; molWeight 43.9889; } thermodynamics @@ -28524,7 +26743,6 @@ C6H11_1ene2M-yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -28540,7 +26758,6 @@ H2N2O__H2NN=O { specie { - nMoles 1; molWeight 46.0287; } thermodynamics @@ -28556,7 +26773,6 @@ S5 { specie { - nMoles 1; molWeight 160.32; } thermodynamics @@ -28572,7 +26788,6 @@ CH6N+__CH3NH3+ { specie { - nMoles 1; molWeight 32.0651; } thermodynamics @@ -28588,7 +26803,6 @@ C7H4__CH(CCH)3 { specie { - nMoles 1; molWeight 88.1099; } thermodynamics @@ -28604,7 +26818,6 @@ CrCl6 { specie { - nMoles 1; molWeight 264.714; } thermodynamics @@ -28620,7 +26833,6 @@ PH2+ { specie { - nMoles 1; molWeight 32.9897; } thermodynamics @@ -28636,7 +26848,6 @@ C5H6O_2-Me_Furan { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -28652,7 +26863,6 @@ CH2ClBr { specie { - nMoles 1; molWeight 129.381; } thermodynamics @@ -28668,7 +26878,6 @@ CT4__methane_T-4 { specie { - nMoles 1; molWeight 203.611; } thermodynamics @@ -28684,7 +26893,6 @@ C3H8O2_C3H7O-OH { specie { - nMoles 1; molWeight 76.096; } thermodynamics @@ -28700,7 +26908,6 @@ SB(CH3)3 { specie { - nMoles 1; molWeight 166.855; } thermodynamics @@ -28716,7 +26923,6 @@ FeS2(S) { specie { - nMoles 1; molWeight 119.975; } thermodynamics @@ -28732,7 +26938,6 @@ C2O_(CCO) { specie { - nMoles 1; molWeight 40.0217; } thermodynamics @@ -28748,7 +26953,6 @@ C2H6N2_Azomethan { specie { - nMoles 1; molWeight 58.0835; } thermodynamics @@ -28764,7 +26968,6 @@ C6H7_1,3,5_Linear { specie { - nMoles 1; molWeight 79.1227; } thermodynamics @@ -28780,7 +26983,6 @@ HClO4 { specie { - nMoles 1; molWeight 100.459; } thermodynamics @@ -28796,7 +26998,6 @@ C2N+___C-CN { specie { - nMoles 1; molWeight 38.0285; } thermodynamics @@ -28812,7 +27013,6 @@ C6_linear_triplet { specie { - nMoles 1; molWeight 72.0669; } thermodynamics @@ -28828,7 +27028,6 @@ CH2DNO2 { specie { - nMoles 1; molWeight 62.0467; } thermodynamics @@ -28844,7 +27043,6 @@ Pb+ { specie { - nMoles 1; molWeight 207.189; } thermodynamics @@ -28860,7 +27058,6 @@ N2- { specie { - nMoles 1; molWeight 28.0139; } thermodynamics @@ -28876,7 +27073,6 @@ BCl2+ { specie { - nMoles 1; molWeight 81.7165; } thermodynamics @@ -28892,7 +27088,6 @@ BHF2 { specie { - nMoles 1; molWeight 49.8158; } thermodynamics @@ -28908,7 +27103,6 @@ C6H7O5(NO2)3__NC { specie { - nMoles 1; molWeight 297.136; } thermodynamics @@ -28924,7 +27118,6 @@ HC(OO)_cyclo_rad { specie { - nMoles 1; molWeight 45.0179; } thermodynamics @@ -28940,7 +27133,6 @@ CH4N2_cyc(-CH2-N { specie { - nMoles 1; molWeight 44.0564; } thermodynamics @@ -28956,7 +27148,6 @@ K20(g) { specie { - nMoles 1; molWeight 94.2034; } thermodynamics @@ -28972,7 +27163,6 @@ CH2Br2 { specie { - nMoles 1; molWeight 173.829; } thermodynamics @@ -28988,7 +27178,6 @@ ClONO2_Clnitrat { specie { - nMoles 1; molWeight 97.4579; } thermodynamics @@ -29004,7 +27193,6 @@ NH4NO3_gas { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -29020,7 +27208,6 @@ Cl+ { specie { - nMoles 1; molWeight 35.4525; } thermodynamics @@ -29036,7 +27223,6 @@ CF2 { specie { - nMoles 1; molWeight 50.008; } thermodynamics @@ -29052,7 +27238,6 @@ CH2N-_H*C=NH_trans { specie { - nMoles 1; molWeight 28.0343; } thermodynamics @@ -29068,7 +27253,6 @@ C4H9O_N-Butoxy_R { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -29084,7 +27268,6 @@ s-*CH2ONO2 { specie { - nMoles 1; molWeight 76.032; } thermodynamics @@ -29100,7 +27283,6 @@ NH2O__RADICAL { specie { - nMoles 1; molWeight 32.022; } thermodynamics @@ -29116,7 +27298,6 @@ F2O+__FOF+ { specie { - nMoles 1; molWeight 53.9957; } thermodynamics @@ -29132,7 +27313,6 @@ AlF2- { specie { - nMoles 1; molWeight 64.9788; } thermodynamics @@ -29148,7 +27328,6 @@ O4+_cation { specie { - nMoles 1; molWeight 63.9971; } thermodynamics @@ -29164,7 +27343,6 @@ Na2O2(b) { specie { - nMoles 1; molWeight 77.9784; } thermodynamics @@ -29180,7 +27358,6 @@ Ag+ { specie { - nMoles 1; molWeight 107.869; } thermodynamics @@ -29196,7 +27373,6 @@ C6H14(L)_n-hexa { specie { - nMoles 1; molWeight 86.1785; } thermodynamics @@ -29212,7 +27388,6 @@ C18H38_n-Octadeca { specie { - nMoles 1; molWeight 254.504; } thermodynamics @@ -29228,7 +27403,6 @@ C10H4Cl4_2,3,6,7 { specie { - nMoles 1; molWeight 265.955; } thermodynamics @@ -29244,7 +27418,6 @@ C2H3O2_COOCH3 { specie { - nMoles 1; molWeight 59.045; } thermodynamics @@ -29260,7 +27433,6 @@ C2H5NH2__Et-amin { specie { - nMoles 1; molWeight 45.0848; } thermodynamics @@ -29276,7 +27448,6 @@ C6H5Br+__Cation { specie { - nMoles 1; molWeight 157.007; } thermodynamics @@ -29292,7 +27463,6 @@ C6H4__Pentaene { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -29308,7 +27478,6 @@ C10H8O__Naphtol { specie { - nMoles 1; molWeight 144.175; } thermodynamics @@ -29324,7 +27493,6 @@ AlH3 { specie { - nMoles 1; molWeight 30.0054; } thermodynamics @@ -29340,7 +27508,6 @@ ZrN { specie { - nMoles 1; molWeight 105.227; } thermodynamics @@ -29356,7 +27523,6 @@ C3HBr3_BromoAllene { specie { - nMoles 1; molWeight 276.744; } thermodynamics @@ -29372,7 +27538,6 @@ s-1,2,3,5-C6H2Cl4 { specie { - nMoles 1; molWeight 215.895; } thermodynamics @@ -29388,7 +27553,6 @@ CCl2F2_FREON-12 { specie { - nMoles 1; molWeight 120.914; } thermodynamics @@ -29404,7 +27568,6 @@ CH2=S { specie { - nMoles 1; molWeight 46.0911; } thermodynamics @@ -29420,7 +27583,6 @@ C5H12,i-pentane { specie { - nMoles 1; molWeight 72.1514; } thermodynamics @@ -29436,7 +27598,6 @@ C2H3O2_HOCH2C=O { specie { - nMoles 1; molWeight 59.045; } thermodynamics @@ -29452,7 +27613,6 @@ C5H6N2_Cyclo_2-A { specie { - nMoles 1; molWeight 94.117; } thermodynamics @@ -29468,7 +27628,6 @@ MgH { specie { - nMoles 1; molWeight 25.32; } thermodynamics @@ -29484,7 +27643,6 @@ C4H7O_CH3CH2CH2CO { specie { - nMoles 1; molWeight 71.0998; } thermodynamics @@ -29500,7 +27658,6 @@ C8H16_CyOctane { specie { - nMoles 1; molWeight 112.217; } thermodynamics @@ -29516,7 +27673,6 @@ NF2 { specie { - nMoles 1; molWeight 52.0035; } thermodynamics @@ -29532,7 +27688,6 @@ C17H36_HeptaDecan { specie { - nMoles 1; molWeight 240.476; } thermodynamics @@ -29548,7 +27703,6 @@ HNOH+_cis { specie { - nMoles 1; molWeight 32.0215; } thermodynamics @@ -29564,7 +27718,6 @@ N- { specie { - nMoles 1; molWeight 14.0072; } thermodynamics @@ -29580,7 +27733,6 @@ Ag- { specie { - nMoles 1; molWeight 107.871; } thermodynamics @@ -29596,7 +27748,6 @@ C7H7_Benzyl_rad { specie { - nMoles 1; molWeight 91.1338; } thermodynamics @@ -29612,7 +27763,6 @@ CrO3- { specie { - nMoles 1; molWeight 99.9947; } thermodynamics @@ -29628,7 +27778,6 @@ C3Br4_PerBrAllene { specie { - nMoles 1; molWeight 355.637; } thermodynamics @@ -29644,7 +27793,6 @@ m-C6H4I2 { specie { - nMoles 1; molWeight 329.908; } thermodynamics @@ -29660,7 +27808,6 @@ C5H3_CycloPentat { specie { - nMoles 1; molWeight 63.0797; } thermodynamics @@ -29676,7 +27823,6 @@ CNH2+_triradical { specie { - nMoles 1; molWeight 28.0332; } thermodynamics @@ -29692,7 +27838,6 @@ CH3S_Radical { specie { - nMoles 1; molWeight 47.0991; } thermodynamics @@ -29708,7 +27853,6 @@ CHFCl2___FC-21 { specie { - nMoles 1; molWeight 102.924; } thermodynamics @@ -29724,7 +27868,6 @@ C4H9O_DiEthyl_Beta { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -29740,7 +27883,6 @@ Rn+ { specie { - nMoles 1; molWeight 221.999; } thermodynamics @@ -29756,7 +27898,6 @@ ICN { specie { - nMoles 1; molWeight 152.922; } thermodynamics @@ -29772,7 +27913,6 @@ C8H9_C6H5CH2CH2* { specie { - nMoles 1; molWeight 105.161; } thermodynamics @@ -29788,7 +27928,6 @@ C2H4F_alfa-Fluor { specie { - nMoles 1; molWeight 47.0526; } thermodynamics @@ -29804,7 +27943,6 @@ H2NC=O__H2N-C*=O { specie { - nMoles 1; molWeight 44.0332; } thermodynamics @@ -29820,7 +27958,6 @@ MgN { specie { - nMoles 1; molWeight 38.3187; } thermodynamics @@ -29836,7 +27973,6 @@ NCCHO { specie { - nMoles 1; molWeight 55.0364; } thermodynamics @@ -29852,7 +27988,6 @@ C2_singlet { specie { - nMoles 1; molWeight 24.0223; } thermodynamics @@ -29868,7 +28003,6 @@ OT_Tritium_Hydro { specie { - nMoles 1; molWeight 63.8994; } thermodynamics @@ -29884,7 +28018,6 @@ Si3N4(cr) { specie { - nMoles 1; molWeight 140.285; } thermodynamics @@ -29900,7 +28033,6 @@ C6H4Cl2_o-Clbenzen { specie { - nMoles 1; molWeight 147.005; } thermodynamics @@ -29916,7 +28048,6 @@ Cu(L) { specie { - nMoles 1; molWeight 63.54; } thermodynamics @@ -29932,7 +28063,6 @@ C6H5_phenyl_radi { specie { - nMoles 1; molWeight 77.1068; } thermodynamics @@ -29948,7 +28078,6 @@ C3H4N2__Imidogen { specie { - nMoles 1; molWeight 68.0787; } thermodynamics @@ -29964,7 +28093,6 @@ PbBr { specie { - nMoles 1; molWeight 287.091; } thermodynamics @@ -29980,7 +28108,6 @@ CuF { specie { - nMoles 1; molWeight 82.5384; } thermodynamics @@ -29996,7 +28123,6 @@ SF4 { specie { - nMoles 1; molWeight 108.058; } thermodynamics @@ -30012,7 +28138,6 @@ HOBr+___ATcT_C { specie { - nMoles 1; molWeight 96.9077; } thermodynamics @@ -30028,7 +28153,6 @@ H4C3_PROPYNE { specie { - nMoles 1; molWeight 40.0653; } thermodynamics @@ -30044,7 +28168,6 @@ C4H9_n-butyl { specie { - nMoles 1; molWeight 57.1163; } thermodynamics @@ -30060,7 +28183,6 @@ C5H8O2_2-Pentenoic { specie { - nMoles 1; molWeight 100.118; } thermodynamics @@ -30076,7 +28198,6 @@ O-C12D9_Biphenyl { specie { - nMoles 1; molWeight 162.261; } thermodynamics @@ -30092,7 +28213,6 @@ C4__singlet { specie { - nMoles 1; molWeight 48.0446; } thermodynamics @@ -30108,7 +28228,6 @@ C4H8O_EthylOxyran { specie { - nMoles 1; molWeight 72.1078; } thermodynamics @@ -30124,7 +28243,6 @@ BI3 { specie { - nMoles 1; molWeight 391.524; } thermodynamics @@ -30140,7 +28258,6 @@ C6H5ClO__2,4-cyc { specie { - nMoles 1; molWeight 128.559; } thermodynamics @@ -30156,7 +28273,6 @@ N2F2 { specie { - nMoles 1; molWeight 66.0102; } thermodynamics @@ -30172,7 +28288,6 @@ C8H6__Pentalene { specie { - nMoles 1; molWeight 102.137; } thermodynamics @@ -30188,7 +28303,6 @@ C2H2Br2_trans { specie { - nMoles 1; molWeight 185.84; } thermodynamics @@ -30204,7 +28318,6 @@ SiCl2 { specie { - nMoles 1; molWeight 98.992; } thermodynamics @@ -30220,7 +28333,6 @@ C5H10__2MB-2-ene { specie { - nMoles 1; molWeight 70.1355; } thermodynamics @@ -30236,7 +28348,6 @@ N-DODECANE { specie { - nMoles 1; molWeight 170.341; } thermodynamics @@ -30252,7 +28363,6 @@ HCCN_Triplet { specie { - nMoles 1; molWeight 39.037; } thermodynamics @@ -30268,7 +28378,6 @@ S2F2__(S=SF2) { specie { - nMoles 1; molWeight 102.125; } thermodynamics @@ -30284,7 +28393,6 @@ C4H4O2_1,4-Dioxin { specie { - nMoles 1; molWeight 84.0753; } thermodynamics @@ -30300,7 +28408,6 @@ Cr2O3(I) { specie { - nMoles 1; molWeight 151.99; } thermodynamics @@ -30316,7 +28423,6 @@ OS(g)__Osmium { specie { - nMoles 1; molWeight 190.2; } thermodynamics @@ -30332,7 +28438,6 @@ C4H10N2_1,4-PIPE { specie { - nMoles 1; molWeight 86.1377; } thermodynamics @@ -30348,7 +28453,6 @@ C3H7O_Propoxy_rad { specie { - nMoles 1; molWeight 59.0886; } thermodynamics @@ -30364,7 +28468,6 @@ C3H5NH2_Cyclopro { specie { - nMoles 1; molWeight 57.0959; } thermodynamics @@ -30380,7 +28483,6 @@ ClCN+___ATcT_C { specie { - nMoles 1; molWeight 61.4703; } thermodynamics @@ -30396,7 +28498,6 @@ C6H11__2-ene-6-yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -30412,7 +28513,6 @@ WC(cr) { specie { - nMoles 1; molWeight 195.861; } thermodynamics @@ -30428,7 +28528,6 @@ C4F8_CY { specie { - nMoles 1; molWeight 200.032; } thermodynamics @@ -30444,7 +28543,6 @@ CHCl3_Chloroform { specie { - nMoles 1; molWeight 119.378; } thermodynamics @@ -30460,7 +28558,6 @@ C5H5_1yne3ene5yl { specie { - nMoles 1; molWeight 65.0956; } thermodynamics @@ -30476,7 +28573,6 @@ H3PO3__[P(OH)3] { specie { - nMoles 1; molWeight 81.9959; } thermodynamics @@ -30492,7 +28588,6 @@ ZnSO4(b) { specie { - nMoles 1; molWeight 161.432; } thermodynamics @@ -30508,7 +28603,6 @@ CH3CO_ACETYL_RAD { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -30524,7 +28618,6 @@ N2H2_Isodiazene { specie { - nMoles 1; molWeight 30.0293; } thermodynamics @@ -30540,7 +28633,6 @@ HSO3__HO-SO2 { specie { - nMoles 1; molWeight 81.0702; } thermodynamics @@ -30556,7 +28648,6 @@ NOO+___cation { specie { - nMoles 1; molWeight 46.005; } thermodynamics @@ -30572,7 +28663,6 @@ CH3-NH-NH2 { specie { - nMoles 1; molWeight 46.0724; } thermodynamics @@ -30588,7 +28678,6 @@ SCl { specie { - nMoles 1; molWeight 67.517; } thermodynamics @@ -30604,7 +28693,6 @@ H5F5 { specie { - nMoles 1; molWeight 100.032; } thermodynamics @@ -30620,7 +28708,6 @@ CH2O2+__CH2(OO)+ { specie { - nMoles 1; molWeight 46.0253; } thermodynamics @@ -30636,7 +28723,6 @@ F2O2+ { specie { - nMoles 1; molWeight 69.9951; } thermodynamics @@ -30652,7 +28738,6 @@ C3Cl3_123Cy-Radic { specie { - nMoles 1; molWeight 142.392; } thermodynamics @@ -30668,7 +28753,6 @@ N2H4+__Hydrazine { specie { - nMoles 1; molWeight 32.0447; } thermodynamics @@ -30684,7 +28768,6 @@ Mg2TiO4(cr) { specie { - nMoles 1; molWeight 160.522; } thermodynamics @@ -30700,7 +28783,6 @@ C5H12O2_n-Pentyl { specie { - nMoles 1; molWeight 104.15; } thermodynamics @@ -30716,7 +28798,6 @@ C6H5+_phenyl_cat { specie { - nMoles 1; molWeight 77.1062; } thermodynamics @@ -30732,7 +28813,6 @@ CH3-NH-CH3 { specie { - nMoles 1; molWeight 45.0848; } thermodynamics @@ -30748,7 +28828,6 @@ Fe3C_(L)_Liquid { specie { - nMoles 1; molWeight 179.552; } thermodynamics @@ -30764,7 +28843,6 @@ C4H4N2O2_Uracil { specie { - nMoles 1; molWeight 112.089; } thermodynamics @@ -30780,7 +28858,6 @@ CT_Tritium_Carbon { specie { - nMoles 1; molWeight 15.0351; } thermodynamics @@ -30796,7 +28873,6 @@ Si2N2O(cr) { specie { - nMoles 1; molWeight 100.185; } thermodynamics @@ -30812,7 +28888,6 @@ Pb(L) { specie { - nMoles 1; molWeight 207.19; } thermodynamics @@ -30828,7 +28903,6 @@ C10H16_endo { specie { - nMoles 1; molWeight 136.239; } thermodynamics @@ -30844,7 +28918,6 @@ C6H11__2M2EN4YL { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -30860,7 +28933,6 @@ MgF2 { specie { - nMoles 1; molWeight 62.3088; } thermodynamics @@ -30876,7 +28948,6 @@ C2H5OH { specie { - nMoles 1; molWeight 46.0695; } thermodynamics @@ -30892,7 +28963,6 @@ C8H8___2,3,5,7_Cy { specie { - nMoles 1; molWeight 104.153; } thermodynamics @@ -30908,7 +28978,6 @@ SF3- { specie { - nMoles 1; molWeight 89.0597; } thermodynamics @@ -30924,7 +28993,6 @@ C17H32O2_Margarole { specie { - nMoles 1; molWeight 268.443; } thermodynamics @@ -30940,7 +29008,6 @@ C20H39O2_Archidi { specie { - nMoles 1; molWeight 311.533; } thermodynamics @@ -30956,7 +29023,6 @@ C(NN)__Cyclo { specie { - nMoles 1; molWeight 40.0246; } thermodynamics @@ -30972,7 +29038,6 @@ Br2+ { specie { - nMoles 1; molWeight 159.801; } thermodynamics @@ -30988,7 +29053,6 @@ Fe3C_(S)_Solid-B { specie { - nMoles 1; molWeight 179.552; } thermodynamics @@ -31004,7 +29068,6 @@ CH3-O-CH2-O-CH3 { specie { - nMoles 1; molWeight 76.096; } thermodynamics @@ -31020,7 +29083,6 @@ C6H6O__Oxepin { specie { - nMoles 1; molWeight 94.1141; } thermodynamics @@ -31036,7 +29098,6 @@ Cr2N(S) { specie { - nMoles 1; molWeight 117.999; } thermodynamics @@ -31052,7 +29113,6 @@ CH3F__FC-41_-236 { specie { - nMoles 1; molWeight 34.0335; } thermodynamics @@ -31068,7 +29128,6 @@ o-C6H5BrO_cis(Z) { specie { - nMoles 1; molWeight 173.007; } thermodynamics @@ -31084,7 +29143,6 @@ C3Br2_BrC*=C=CBr* { specie { - nMoles 1; molWeight 195.835; } thermodynamics @@ -31100,7 +29158,6 @@ C2N+___C-N=C { specie { - nMoles 1; molWeight 38.0285; } thermodynamics @@ -31116,7 +29173,6 @@ s-2-C4H10O_2-Butan { specie { - nMoles 1; molWeight 74.1237; } thermodynamics @@ -31132,7 +29188,6 @@ C17H34O2_n-Marga { specie { - nMoles 1; molWeight 270.459; } thermodynamics @@ -31148,7 +29203,6 @@ C2H2F2_equil { specie { - nMoles 1; molWeight 64.035; } thermodynamics @@ -31164,7 +29218,6 @@ C8H8__Styrene { specie { - nMoles 1; molWeight 104.153; } thermodynamics @@ -31180,7 +29233,6 @@ C12H2_linear { specie { - nMoles 1; molWeight 146.15; } thermodynamics @@ -31196,7 +29248,6 @@ CH4+__CATION { specie { - nMoles 1; molWeight 16.0425; } thermodynamics @@ -31212,7 +29263,6 @@ C24H17 { specie { - nMoles 1; molWeight 305.403; } thermodynamics @@ -31228,7 +29278,6 @@ BCl2 { specie { - nMoles 1; molWeight 81.717; } thermodynamics @@ -31244,7 +29293,6 @@ ClC*=C=CCl*_birad { specie { - nMoles 1; molWeight 106.939; } thermodynamics @@ -31260,7 +29308,6 @@ Ge2S2 { specie { - nMoles 1; molWeight 209.308; } thermodynamics @@ -31276,7 +29323,6 @@ C5H9_Cyclopentyl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -31292,7 +29338,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -31308,7 +29353,6 @@ CH3CD3 { specie { - nMoles 1; molWeight 33.0885; } thermodynamics @@ -31324,7 +29368,6 @@ CI4 { specie { - nMoles 1; molWeight 519.629; } thermodynamics @@ -31340,7 +29383,6 @@ C6H11__2M4en3yl { specie { - nMoles 1; molWeight 83.1546; } thermodynamics @@ -31356,7 +29398,6 @@ B2O3(L) { specie { - nMoles 1; molWeight 69.6202; } thermodynamics @@ -31372,7 +29413,6 @@ PbF2 { specie { - nMoles 1; molWeight 245.187; } thermodynamics @@ -31388,7 +29428,6 @@ C14H10__Phenanth { specie { - nMoles 1; molWeight 178.236; } thermodynamics @@ -31404,7 +29443,6 @@ C9H7N_ISOQUINOLI { specie { - nMoles 1; molWeight 129.163; } thermodynamics @@ -31420,7 +29458,6 @@ C5H10O2_Valeric_ac { specie { - nMoles 1; molWeight 102.134; } thermodynamics @@ -31436,7 +29473,6 @@ SbF3 { specie { - nMoles 1; molWeight 178.745; } thermodynamics @@ -31452,7 +29488,6 @@ CI { specie { - nMoles 1; molWeight 138.916; } thermodynamics @@ -31468,7 +29503,6 @@ C12H6Cl2O2 { specie { - nMoles 1; molWeight 253.086; } thermodynamics @@ -31484,7 +29518,6 @@ s-(HCOOH)2__DIMER { specie { - nMoles 1; molWeight 92.0518; } thermodynamics @@ -31500,7 +29533,6 @@ C13H10O__Benzoph { specie { - nMoles 1; molWeight 182.224; } thermodynamics @@ -31516,7 +29548,6 @@ C2H2Cl2_Equilibriu { specie { - nMoles 1; molWeight 96.9442; } thermodynamics @@ -31532,7 +29563,6 @@ HNO2+_cis____HF2 { specie { - nMoles 1; molWeight 47.0129; } thermodynamics @@ -31548,7 +29578,6 @@ CBr { specie { - nMoles 1; molWeight 91.912; } thermodynamics @@ -31564,7 +29593,6 @@ C2(NO2)2 { specie { - nMoles 1; molWeight 116.033; } thermodynamics @@ -31580,7 +29608,6 @@ CCN__Radical { specie { - nMoles 1; molWeight 38.029; } thermodynamics @@ -31596,7 +29623,6 @@ C10H15__c5h8*-c5 { specie { - nMoles 1; molWeight 135.231; } thermodynamics @@ -31612,7 +29638,6 @@ H2Sn(C2H5)2 { specie { - nMoles 1; molWeight 178.83; } thermodynamics @@ -31628,7 +29653,6 @@ Al2O3(b) { specie { - nMoles 1; molWeight 101.961; } thermodynamics @@ -31644,7 +29668,6 @@ Cr { specie { - nMoles 1; molWeight 51.996; } thermodynamics @@ -31660,7 +29683,6 @@ MgSiO3(III) { specie { - nMoles 1; molWeight 100.396; } thermodynamics @@ -31676,7 +29698,6 @@ C5H7Cl2 { specie { - nMoles 1; molWeight 138.018; } thermodynamics @@ -31692,7 +29713,6 @@ C6H7+_1,4_cyDiEne { specie { - nMoles 1; molWeight 79.1221; } thermodynamics @@ -31708,7 +29728,6 @@ Cu { specie { - nMoles 1; molWeight 63.54; } thermodynamics @@ -31724,7 +29743,6 @@ HCCNO2 { specie { - nMoles 1; molWeight 71.0358; } thermodynamics @@ -31740,7 +29758,6 @@ S2Cl2 { specie { - nMoles 1; molWeight 135.034; } thermodynamics @@ -31756,7 +29773,6 @@ CHNH2+__cation { specie { - nMoles 1; molWeight 29.0412; } thermodynamics @@ -31772,7 +29788,6 @@ MgI { specie { - nMoles 1; molWeight 151.216; } thermodynamics @@ -31788,7 +29803,6 @@ C25H20___TetraPh { specie { - nMoles 1; molWeight 320.438; } thermodynamics @@ -31804,7 +29818,6 @@ C7H14O__MIAK { specie { - nMoles 1; molWeight 114.189; } thermodynamics @@ -31820,7 +29833,6 @@ Mg+ { specie { - nMoles 1; molWeight 24.3115; } thermodynamics @@ -31836,7 +29848,6 @@ C5H8O_CYC5H8=O { specie { - nMoles 1; molWeight 84.1189; } thermodynamics @@ -31852,7 +29863,6 @@ Po2_DiPolonium { specie { - nMoles 1; molWeight 420; } thermodynamics @@ -31868,7 +29878,6 @@ Cr2O3(L) { specie { - nMoles 1; molWeight 151.99; } thermodynamics @@ -31884,7 +29893,6 @@ CN- { specie { - nMoles 1; molWeight 26.0184; } thermodynamics @@ -31900,7 +29908,6 @@ HD { specie { - nMoles 1; molWeight 3.02207; } thermodynamics @@ -31916,7 +29923,6 @@ o-C6H5ClO_cis(Z) { specie { - nMoles 1; molWeight 163.004; } thermodynamics @@ -31932,7 +29938,6 @@ C4H9O_DiEthyl_Et { specie { - nMoles 1; molWeight 73.1157; } thermodynamics @@ -31948,7 +29953,6 @@ C2Br6 { specie { - nMoles 1; molWeight 503.428; } thermodynamics @@ -31964,7 +29968,6 @@ HBr { specie { - nMoles 1; molWeight 80.9089; } thermodynamics @@ -31980,7 +29983,6 @@ NCCH2O_Radical { specie { - nMoles 1; molWeight 56.0443; } thermodynamics @@ -31996,7 +29998,6 @@ Sn+ { specie { - nMoles 1; molWeight 118.689; } thermodynamics @@ -32012,7 +30013,6 @@ CH2Cl-CH2Cl { specie { - nMoles 1; molWeight 98.9602; } thermodynamics @@ -32028,7 +30028,6 @@ C2H2F4_1,1,1,2 { specie { - nMoles 1; molWeight 102.032; } thermodynamics @@ -32044,7 +30043,6 @@ C18H33O2_Oleatoxy { specie { - nMoles 1; molWeight 281.463; } thermodynamics @@ -32060,7 +30058,6 @@ C24H20Pb__TetraP { specie { - nMoles 1; molWeight 515.617; } thermodynamics @@ -32076,7 +30073,6 @@ HOCO+__radical_c { specie { - nMoles 1; molWeight 45.0174; } thermodynamics @@ -32092,7 +30088,6 @@ D2S { specie { - nMoles 1; molWeight 36.0922; } thermodynamics @@ -32108,7 +30103,6 @@ C3H3_*CH(CH=CH) { specie { - nMoles 1; molWeight 39.0574; } thermodynamics @@ -32124,7 +30118,6 @@ C18H34O2_Oleic_ac { specie { - nMoles 1; molWeight 282.47; } thermodynamics @@ -32140,7 +30133,6 @@ PF2 { specie { - nMoles 1; molWeight 68.9706; } thermodynamics @@ -32156,7 +30148,6 @@ C6H8_3-CH3-1,3C5H5 { specie { - nMoles 1; molWeight 80.1307; } thermodynamics @@ -32172,7 +30163,6 @@ C(NO)+_cy { specie { - nMoles 1; molWeight 42.0167; } thermodynamics @@ -32188,7 +30178,6 @@ Ca { specie { - nMoles 1; molWeight 40.08; } thermodynamics @@ -32204,7 +30193,6 @@ C5H12__n-pentane { specie { - nMoles 1; molWeight 72.1514; } thermodynamics @@ -32220,7 +30208,6 @@ C8H8__Cubane { specie { - nMoles 1; molWeight 104.153; } thermodynamics @@ -32236,7 +30223,6 @@ C4H8O2_DIOXANE { specie { - nMoles 1; molWeight 88.1072; } thermodynamics @@ -32252,7 +30238,6 @@ AlO { specie { - nMoles 1; molWeight 42.9809; } thermodynamics @@ -32268,7 +30253,6 @@ Mo2C(S) { specie { - nMoles 1; molWeight 203.891; } thermodynamics @@ -32284,7 +30268,6 @@ C3H7S_2-PropylThio { specie { - nMoles 1; molWeight 75.1532; } thermodynamics @@ -32300,7 +30283,6 @@ C8H16O2_cis-acid { specie { - nMoles 1; molWeight 144.216; } thermodynamics @@ -32316,7 +30298,6 @@ SF5Br { specie { - nMoles 1; molWeight 206.957; } thermodynamics @@ -32332,7 +30313,6 @@ Mo(s) { specie { - nMoles 1; molWeight 95.94; } thermodynamics @@ -32348,7 +30328,6 @@ C3H6O2_C2H5COOH { specie { - nMoles 1; molWeight 74.0801; } thermodynamics @@ -32364,7 +30343,6 @@ cy-C5H5+__cycation { specie { - nMoles 1; molWeight 65.0951; } thermodynamics @@ -32380,7 +30358,6 @@ NO2- { specie { - nMoles 1; molWeight 46.006; } thermodynamics @@ -32396,7 +30373,6 @@ C2HBr4_1,1,2,2 { specie { - nMoles 1; molWeight 344.634; } thermodynamics @@ -32412,7 +30388,6 @@ F2+ { specie { - nMoles 1; molWeight 37.9963; } thermodynamics @@ -32428,7 +30403,6 @@ CF2Cl-CHClF_123a { specie { - nMoles 1; molWeight 152.931; } thermodynamics @@ -32444,7 +30418,6 @@ COOH { specie { - nMoles 1; molWeight 45.0179; } thermodynamics @@ -32460,7 +30433,6 @@ CH3COCl_Acetyl-Cl { specie { - nMoles 1; molWeight 78.4986; } thermodynamics @@ -32476,7 +30448,6 @@ Ne { specie { - nMoles 1; molWeight 20.183; } thermodynamics @@ -32492,7 +30463,6 @@ HgCl2 { specie { - nMoles 1; molWeight 271.496; } thermodynamics @@ -32508,7 +30478,6 @@ H- { specie { - nMoles 1; molWeight 1.00852; } thermodynamics @@ -32524,7 +30493,6 @@ HCCN_singlet { specie { - nMoles 1; molWeight 39.037; } thermodynamics @@ -32540,7 +30508,6 @@ C6H5-CH=CHCH=CH* { specie { - nMoles 1; molWeight 127.167; } thermodynamics @@ -32556,7 +30523,6 @@ C2H6O2_Peroxyeth { specie { - nMoles 1; molWeight 62.0689; } thermodynamics @@ -32572,7 +30538,6 @@ COS { specie { - nMoles 1; molWeight 60.0746; } thermodynamics @@ -32588,7 +30553,6 @@ C7H12__Norbornane { specie { - nMoles 1; molWeight 96.1737; } thermodynamics @@ -32604,7 +30568,6 @@ Pd(cr) { specie { - nMoles 1; molWeight 106.4; } thermodynamics @@ -32620,7 +30583,6 @@ C14H9_2-Antryl_R { specie { - nMoles 1; molWeight 177.228; } thermodynamics @@ -32636,7 +30598,6 @@ SbCl3 { specie { - nMoles 1; molWeight 228.109; } thermodynamics @@ -32652,7 +30613,6 @@ C4H9O2_s-Butyl_P { specie { - nMoles 1; molWeight 89.1151; } thermodynamics @@ -32668,7 +30628,6 @@ C4H10O_DEE_DiEth { specie { - nMoles 1; molWeight 74.1237; } thermodynamics @@ -32684,7 +30643,6 @@ SiS2__Liquid { specie { - nMoles 1; molWeight 92.214; } thermodynamics @@ -32700,7 +30658,6 @@ C6H7__C5H5-3-CH2 { specie { - nMoles 1; molWeight 79.1227; } thermodynamics @@ -32716,7 +30673,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -32732,7 +30688,6 @@ C5H4_TETRAENE { specie { - nMoles 1; molWeight 64.0876; } thermodynamics @@ -32748,7 +30703,6 @@ s-1-C10H7-CH3 { specie { - nMoles 1; molWeight 142.202; } thermodynamics @@ -32764,7 +30718,6 @@ C3H7S_PropylThiol { specie { - nMoles 1; molWeight 75.1532; } thermodynamics @@ -32780,7 +30733,6 @@ C2H6O2_1,2-diOl { specie { - nMoles 1; molWeight 62.0689; } thermodynamics @@ -32796,7 +30748,6 @@ Sb________GAS { specie { - nMoles 1; molWeight 121.75; } thermodynamics @@ -32812,7 +30763,6 @@ C12H8O_DiBenzoFu { specie { - nMoles 1; molWeight 168.197; } thermodynamics @@ -32828,7 +30778,6 @@ C2N2+__NC-CN+__H { specie { - nMoles 1; molWeight 52.0352; } thermodynamics @@ -32844,7 +30793,6 @@ CH3OH(L) { specie { - nMoles 1; molWeight 32.0424; } thermodynamics @@ -32860,7 +30808,6 @@ KNO3(L) { specie { - nMoles 1; molWeight 101.107; } thermodynamics @@ -32876,7 +30823,6 @@ s-1,2-C2H2F2-trans { specie { - nMoles 1; molWeight 64.035; } thermodynamics @@ -32892,7 +30838,6 @@ C5H8N4O12_PETN { specie { - nMoles 1; molWeight 316.139; } thermodynamics @@ -32908,7 +30853,6 @@ N-NITRO-AZETIDIN { specie { - nMoles 1; molWeight 102.093; } thermodynamics @@ -32924,7 +30868,6 @@ PF3 { specie { - nMoles 1; molWeight 87.969; } thermodynamics @@ -32940,7 +30883,6 @@ H2PO__HPOH { specie { - nMoles 1; molWeight 48.9891; } thermodynamics @@ -32956,7 +30898,6 @@ Ni(cr) { specie { - nMoles 1; molWeight 58.71; } thermodynamics @@ -32972,7 +30913,6 @@ C4H10O_n-butanol { specie { - nMoles 1; molWeight 74.1237; } thermodynamics @@ -32988,7 +30928,6 @@ H2O2+__trans { specie { - nMoles 1; molWeight 34.0142; } thermodynamics @@ -33004,7 +30943,6 @@ C5H5OH_Cyclo-2,4 { specie { - nMoles 1; molWeight 82.103; } thermodynamics @@ -33020,7 +30958,6 @@ s-1,4-C6H4_BENZYNE { specie { - nMoles 1; molWeight 76.0988; } thermodynamics @@ -33036,7 +30973,6 @@ C2H5O-__CH3C*HOH- { specie { - nMoles 1; molWeight 45.0621; } thermodynamics @@ -33052,7 +30988,6 @@ C12H4Cl6O2__tric { specie { - nMoles 1; molWeight 392.882; } thermodynamics @@ -33068,7 +31003,6 @@ COCl { specie { - nMoles 1; molWeight 63.4636; } thermodynamics @@ -33084,7 +31018,6 @@ C6H8O5(NO2)2 { specie { - nMoles 1; molWeight 252.139; } thermodynamics @@ -33100,7 +31033,6 @@ C2D6N2_Azomethan { specie { - nMoles 1; molWeight 64.1203; } thermodynamics @@ -33116,7 +31048,6 @@ CBr2F2 { specie { - nMoles 1; molWeight 209.81; } thermodynamics @@ -33132,7 +31063,6 @@ Zr(L) { specie { - nMoles 1; molWeight 91.22; } thermodynamics @@ -33148,7 +31078,6 @@ C4H7O2_Peroxy_Rad { specie { - nMoles 1; molWeight 87.0992; } thermodynamics @@ -33164,7 +31093,6 @@ C10H9+_protonazule { specie { - nMoles 1; molWeight 129.183; } thermodynamics @@ -33180,7 +31108,6 @@ GeBr4 { specie { - nMoles 1; molWeight 392.194; } thermodynamics @@ -33196,7 +31123,6 @@ C2H6+_Ethane_cat { specie { - nMoles 1; molWeight 30.0696; } thermodynamics @@ -33212,7 +31138,6 @@ C9H12__1-2-4-TMB { specie { - nMoles 1; molWeight 120.196; } thermodynamics @@ -33228,7 +31153,6 @@ ZrO2(II) { specie { - nMoles 1; molWeight 123.219; } thermodynamics @@ -33244,7 +31168,6 @@ CH2CN_Radical { specie { - nMoles 1; molWeight 40.0449; } thermodynamics @@ -33260,7 +31183,6 @@ CH2N__H*C=NH_Trans { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -33276,7 +31198,6 @@ P4O7 { specie { - nMoles 1; molWeight 235.891; } thermodynamics @@ -33292,7 +31213,6 @@ C5H5O__1-oxy-1,4- { specie { - nMoles 1; molWeight 81.095; } thermodynamics @@ -33308,7 +31228,6 @@ C6H12O2_MeValere { specie { - nMoles 1; molWeight 116.161; } thermodynamics @@ -33324,7 +31243,6 @@ C7H8_Quadricyclen { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -33340,7 +31258,6 @@ C2H5I { specie { - nMoles 1; molWeight 155.967; } thermodynamics @@ -33356,7 +31273,6 @@ CH3OH_Metanol { specie { - nMoles 1; molWeight 32.0424; } thermodynamics @@ -33372,7 +31288,6 @@ S+ { specie { - nMoles 1; molWeight 32.0635; } thermodynamics @@ -33388,7 +31303,6 @@ C4H10_isobutane { specie { - nMoles 1; molWeight 58.1243; } thermodynamics @@ -33404,7 +31318,6 @@ C12H5Cl5O2_PD { specie { - nMoles 1; molWeight 358.437; } thermodynamics @@ -33420,7 +31333,6 @@ C16H30O2_acid { specie { - nMoles 1; molWeight 254.416; } thermodynamics @@ -33436,7 +31348,6 @@ MgH2(L) { specie { - nMoles 1; molWeight 26.3279; } thermodynamics @@ -33452,7 +31363,6 @@ C3H4Cl { specie { - nMoles 1; molWeight 75.5183; } thermodynamics @@ -33468,7 +31378,6 @@ C3F6__CF2=CF-CF3 { specie { - nMoles 1; molWeight 150.024; } thermodynamics @@ -33484,7 +31393,6 @@ s-(NH2)2C=N-NO2 { specie { - nMoles 1; molWeight 104.069; } thermodynamics @@ -33500,7 +31408,6 @@ C3H3O_*CH2-CH=CO { specie { - nMoles 1; molWeight 55.0568; } thermodynamics @@ -33516,7 +31423,6 @@ CNN { specie { - nMoles 1; molWeight 40.0246; } thermodynamics @@ -33532,7 +31438,6 @@ C2H3F2_Radical { specie { - nMoles 1; molWeight 65.043; } thermodynamics @@ -33548,7 +31453,6 @@ C2D2_Acetylene-D { specie { - nMoles 1; molWeight 28.0505; } thermodynamics @@ -33564,7 +31468,6 @@ Br- { specie { - nMoles 1; molWeight 79.9014; } thermodynamics @@ -33580,7 +31483,6 @@ MgSO4(I) { specie { - nMoles 1; molWeight 120.374; } thermodynamics @@ -33596,7 +31498,6 @@ C2HFCl2_equilibr { specie { - nMoles 1; molWeight 114.935; } thermodynamics @@ -33612,7 +31513,6 @@ NiS(a) { specie { - nMoles 1; molWeight 90.774; } thermodynamics @@ -33628,7 +31528,6 @@ H3PO4(L) { specie { - nMoles 1; molWeight 97.9953; } thermodynamics @@ -33644,7 +31543,6 @@ Na2O(b) { specie { - nMoles 1; molWeight 61.979; } thermodynamics @@ -33660,7 +31558,6 @@ CH3C(O)O-ONO2 { specie { - nMoles 1; molWeight 121.05; } thermodynamics @@ -33676,7 +31573,6 @@ C3H3Cl_1-Cl-1Prop { specie { - nMoles 1; molWeight 74.5104; } thermodynamics @@ -33692,7 +31588,6 @@ C2H { specie { - nMoles 1; molWeight 25.0303; } thermodynamics @@ -33708,7 +31603,6 @@ ZnSO4(ap) { specie { - nMoles 1; molWeight 161.432; } thermodynamics @@ -33724,7 +31618,6 @@ CH3NO2 { specie { - nMoles 1; molWeight 61.0406; } thermodynamics @@ -33740,7 +31633,6 @@ NH2OH__cis { specie { - nMoles 1; molWeight 33.03; } thermodynamics @@ -33756,7 +31648,6 @@ HgBr2 { specie { - nMoles 1; molWeight 360.392; } thermodynamics @@ -33772,7 +31663,6 @@ C4H7OOH__Peroxyb { specie { - nMoles 1; molWeight 88.1072; } thermodynamics @@ -33788,7 +31678,6 @@ C18H36O2_etPalmita { specie { - nMoles 1; molWeight 284.486; } thermodynamics @@ -33804,7 +31693,6 @@ COFCl { specie { - nMoles 1; molWeight 82.462; } thermodynamics @@ -33820,7 +31708,6 @@ NHD { specie { - nMoles 1; molWeight 17.0288; } thermodynamics @@ -33836,7 +31723,6 @@ C12H23O2__1,12 { specie { - nMoles 1; molWeight 199.316; } thermodynamics @@ -33852,7 +31738,6 @@ CH3SnH3 { specie { - nMoles 1; molWeight 136.749; } thermodynamics @@ -33868,7 +31753,6 @@ C5H9_2-en-5yl { specie { - nMoles 1; molWeight 69.1275; } thermodynamics @@ -33884,7 +31768,6 @@ C6H6+_Benzene_ion { specie { - nMoles 1; molWeight 78.1142; } thermodynamics @@ -33900,7 +31783,6 @@ BrCN { specie { - nMoles 1; molWeight 105.919; } thermodynamics @@ -33916,7 +31798,6 @@ C2HClF2_trans { specie { - nMoles 1; molWeight 98.4801; } thermodynamics @@ -33932,7 +31813,6 @@ SF { specie { - nMoles 1; molWeight 51.0624; } thermodynamics @@ -33948,7 +31828,6 @@ HgO(cr) { specie { - nMoles 1; molWeight 216.589; } thermodynamics @@ -33964,7 +31843,6 @@ C8H7___i-styryl { specie { - nMoles 1; molWeight 103.145; } thermodynamics @@ -33980,7 +31858,6 @@ GeCl { specie { - nMoles 1; molWeight 108.043; } thermodynamics @@ -33996,7 +31873,6 @@ CHClF2__HCFC-22 { specie { - nMoles 1; molWeight 86.4689; } thermodynamics @@ -34012,7 +31888,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -34028,7 +31903,6 @@ S2 { specie { - nMoles 1; molWeight 64.128; } thermodynamics @@ -34044,7 +31918,6 @@ C7H10__Norbornene { specie { - nMoles 1; molWeight 94.1578; } thermodynamics @@ -34060,7 +31933,6 @@ CHF__triplet { specie { - nMoles 1; molWeight 32.0175; } thermodynamics @@ -34076,7 +31948,6 @@ CH2O+__CH**-OH { specie { - nMoles 1; molWeight 30.0259; } thermodynamics @@ -34092,7 +31963,6 @@ Si(L) { specie { - nMoles 1; molWeight 28.086; } thermodynamics @@ -34108,7 +31978,6 @@ FO2____F-O-O { specie { - nMoles 1; molWeight 50.9972; } thermodynamics @@ -34124,7 +31993,6 @@ C4H8__Isobuten { specie { - nMoles 1; molWeight 56.1084; } thermodynamics @@ -34140,7 +32008,6 @@ C2HF { specie { - nMoles 1; molWeight 44.0287; } thermodynamics @@ -34156,7 +32023,6 @@ CH5+_cation { specie { - nMoles 1; molWeight 17.0505; } thermodynamics @@ -34172,7 +32038,6 @@ C13H26O2_n-acide { specie { - nMoles 1; molWeight 214.351; } thermodynamics @@ -34188,7 +32053,6 @@ NiO(cr)C { specie { - nMoles 1; molWeight 74.7094; } thermodynamics @@ -34204,7 +32068,6 @@ SiC2 { specie { - nMoles 1; molWeight 52.1083; } thermodynamics @@ -34220,7 +32083,6 @@ C20H38O2_EtOleate { specie { - nMoles 1; molWeight 310.525; } thermodynamics @@ -34236,7 +32098,6 @@ beta_HMX__198-54 { specie { - nMoles 1; molWeight 296.157; } thermodynamics @@ -34252,7 +32113,6 @@ Rn { specie { - nMoles 1; molWeight 222; } thermodynamics @@ -34268,7 +32128,6 @@ NH4NO3(L) { specie { - nMoles 1; molWeight 80.0435; } thermodynamics @@ -34284,7 +32143,6 @@ CH2O2-__CH2(OO)- { specie { - nMoles 1; molWeight 46.0264; } thermodynamics @@ -34300,7 +32158,6 @@ C7H8(L)_Toluene { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -34316,7 +32173,6 @@ CrCl { specie { - nMoles 1; molWeight 87.449; } thermodynamics @@ -34332,7 +32188,6 @@ Jet-A(L)_C12H23 { specie { - nMoles 1; molWeight 167.317; } thermodynamics @@ -34348,7 +32203,6 @@ OS(cr) { specie { - nMoles 1; molWeight 190.2; } thermodynamics @@ -34364,7 +32218,6 @@ C15H32_n-PentaDe { specie { - nMoles 1; molWeight 198.395; } thermodynamics @@ -34380,7 +32233,6 @@ PO-_Polonium_anion { specie { - nMoles 1; molWeight 210.001; } thermodynamics @@ -34396,7 +32248,6 @@ Br2S { specie { - nMoles 1; molWeight 191.866; } thermodynamics @@ -34412,7 +32263,6 @@ O-C12D9_________O- { specie { - nMoles 1; molWeight 162.261; } thermodynamics @@ -34428,7 +32278,6 @@ GeBr { specie { - nMoles 1; molWeight 152.491; } thermodynamics @@ -34444,7 +32293,6 @@ C6H6(L) { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -34460,7 +32308,6 @@ C4H7__trans-2-Bu { specie { - nMoles 1; molWeight 55.1004; } thermodynamics @@ -34476,7 +32323,6 @@ Ni3S2(L) { specie { - nMoles 1; molWeight 240.258; } thermodynamics @@ -34492,7 +32338,6 @@ N2O3-_ONONO- { specie { - nMoles 1; molWeight 76.0121; } thermodynamics @@ -34508,7 +32353,6 @@ C5H5O2__2-Penten { specie { - nMoles 1; molWeight 97.0944; } thermodynamics @@ -34524,7 +32368,6 @@ C2H5O2__C2H5OO { specie { - nMoles 1; molWeight 61.061; } thermodynamics @@ -34540,7 +32383,6 @@ C6H4(C2H)CH=CH* { specie { - nMoles 1; molWeight 127.167; } thermodynamics @@ -34556,7 +32398,6 @@ CF3+ { specie { - nMoles 1; molWeight 69.0058; } thermodynamics @@ -34572,7 +32413,6 @@ O(CH)2O_Glyoxal { specie { - nMoles 1; molWeight 58.037; } thermodynamics @@ -34588,7 +32428,6 @@ Fe(L) { specie { - nMoles 1; molWeight 55.847; } thermodynamics @@ -34604,7 +32443,6 @@ W { specie { - nMoles 1; molWeight 183.85; } thermodynamics @@ -34620,7 +32458,6 @@ C19H36O2_meOleic { specie { - nMoles 1; molWeight 296.498; } thermodynamics @@ -34636,7 +32473,6 @@ MgCl2 { specie { - nMoles 1; molWeight 95.218; } thermodynamics @@ -34652,7 +32488,6 @@ C10H15_JP10_RAD. { specie { - nMoles 1; molWeight 135.231; } thermodynamics @@ -34668,7 +32503,6 @@ B2F4 { specie { - nMoles 1; molWeight 97.6156; } thermodynamics @@ -34684,7 +32518,6 @@ C6H6_1,3-Butadie { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -34700,7 +32533,6 @@ MgCl2(cr) { specie { - nMoles 1; molWeight 95.218; } thermodynamics @@ -34716,7 +32548,6 @@ Xe { specie { - nMoles 1; molWeight 131.3; } thermodynamics @@ -34732,7 +32563,6 @@ GeS2(II)(s) { specie { - nMoles 1; molWeight 136.718; } thermodynamics @@ -34748,7 +32578,6 @@ Al2O { specie { - nMoles 1; molWeight 69.9624; } thermodynamics @@ -34764,7 +32593,6 @@ CuO { specie { - nMoles 1; molWeight 79.5394; } thermodynamics @@ -34780,7 +32608,6 @@ Mg2SiO4(L) { specie { - nMoles 1; molWeight 140.708; } thermodynamics @@ -34796,7 +32623,6 @@ SCl2+ { specie { - nMoles 1; molWeight 102.969; } thermodynamics @@ -34812,7 +32638,6 @@ C20H32O2_Arachid { specie { - nMoles 1; molWeight 304.477; } thermodynamics @@ -34828,7 +32653,6 @@ Sb4__tetrahedron { specie { - nMoles 1; molWeight 487; } thermodynamics @@ -34844,7 +32668,6 @@ CH4___ANHARMONIC { specie { - nMoles 1; molWeight 16.043; } thermodynamics @@ -34860,7 +32683,6 @@ B2H2 { specie { - nMoles 1; molWeight 23.6379; } thermodynamics @@ -34876,7 +32698,6 @@ C2Cl5___Pentachl { specie { - nMoles 1; molWeight 201.287; } thermodynamics @@ -34892,7 +32713,6 @@ C2Br3 { specie { - nMoles 1; molWeight 263.725; } thermodynamics @@ -34908,7 +32728,6 @@ C4H6_Dime_acetylen { specie { - nMoles 1; molWeight 54.0924; } thermodynamics @@ -34924,7 +32743,6 @@ CHF2Br_HBFC-22B1 { specie { - nMoles 1; molWeight 130.917; } thermodynamics @@ -34940,7 +32758,6 @@ CNN- { specie { - nMoles 1; molWeight 40.0251; } thermodynamics @@ -34956,7 +32773,6 @@ CH2=CHO*__Vinyl- { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -34972,7 +32788,6 @@ p-C6H4I2 { specie { - nMoles 1; molWeight 329.908; } thermodynamics @@ -34988,7 +32803,6 @@ C9H12__propylben { specie { - nMoles 1; molWeight 120.196; } thermodynamics @@ -35004,7 +32818,6 @@ ClO { specie { - nMoles 1; molWeight 51.4524; } thermodynamics @@ -35020,7 +32833,6 @@ C18H15N__Triphamin { specie { - nMoles 1; molWeight 245.327; } thermodynamics @@ -35036,7 +32848,6 @@ C8H7___1,3,5,7_Cy { specie { - nMoles 1; molWeight 103.145; } thermodynamics @@ -35052,7 +32863,6 @@ PbS(cr)__GALENA { specie { - nMoles 1; molWeight 239.254; } thermodynamics @@ -35068,7 +32878,6 @@ MgBr2 { specie { - nMoles 1; molWeight 184.114; } thermodynamics @@ -35084,7 +32893,6 @@ C4H2+__DiAcetyle { specie { - nMoles 1; molWeight 50.06; } thermodynamics @@ -35100,7 +32908,6 @@ KNO3(a)_Rhombic { specie { - nMoles 1; molWeight 101.107; } thermodynamics @@ -35116,7 +32923,6 @@ C2HCl3 { specie { - nMoles 1; molWeight 165.834; } thermodynamics @@ -35132,7 +32938,6 @@ C5H5N5O__Guanine { specie { - nMoles 1; molWeight 151.129; } thermodynamics @@ -35148,7 +32953,6 @@ s-1-C10H7-CH2* { specie { - nMoles 1; molWeight 141.194; } thermodynamics @@ -35164,7 +32968,6 @@ C16H320O2_etMyrist { specie { - nMoles 1; molWeight 256.432; } thermodynamics @@ -35180,7 +32983,6 @@ PH3_RRHO { specie { - nMoles 1; molWeight 33.9977; } thermodynamics @@ -35196,7 +32998,6 @@ C4H6Cl2_1,4-DiCl { specie { - nMoles 1; molWeight 124.998; } thermodynamics @@ -35212,7 +33013,6 @@ CHBr2Cl { specie { - nMoles 1; molWeight 208.274; } thermodynamics @@ -35228,7 +33028,6 @@ HNO2-_cis____HF2 { specie { - nMoles 1; molWeight 47.014; } thermodynamics @@ -35244,7 +33043,6 @@ C2F6____FC-116 { specie { - nMoles 1; molWeight 138.013; } thermodynamics @@ -35260,7 +33058,6 @@ ClC2H4OH__ATcT_C { specie { - nMoles 1; molWeight 80.5146; } thermodynamics @@ -35276,7 +33073,6 @@ AlBr { specie { - nMoles 1; molWeight 106.882; } thermodynamics @@ -35292,7 +33088,6 @@ C6Cr23 { specie { - nMoles 1; molWeight 1267.97; } thermodynamics @@ -35308,7 +33103,6 @@ C6H6_1,3-Hexadie { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -35324,7 +33118,6 @@ Na2O { specie { - nMoles 1; molWeight 61.979; } thermodynamics @@ -35340,7 +33133,6 @@ CHCl { specie { - nMoles 1; molWeight 48.4721; } thermodynamics @@ -35356,7 +33148,6 @@ CH4____RRHO { specie { - nMoles 1; molWeight 16.043; } thermodynamics @@ -35372,7 +33163,6 @@ C4H10_n-butane { specie { - nMoles 1; molWeight 58.1243; } thermodynamics @@ -35388,7 +33178,6 @@ ClI__Iodine_Chlo { specie { - nMoles 1; molWeight 162.357; } thermodynamics @@ -35404,7 +33193,6 @@ C4F6_CycloButene { specie { - nMoles 1; molWeight 162.035; } thermodynamics @@ -35420,7 +33208,6 @@ C24Cl12_Coronene { specie { - nMoles 1; molWeight 713.704; } thermodynamics @@ -35436,7 +33223,6 @@ O2- { specie { - nMoles 1; molWeight 31.9993; } thermodynamics @@ -35452,7 +33238,6 @@ SD { specie { - nMoles 1; molWeight 34.0781; } thermodynamics @@ -35468,7 +33253,6 @@ C3H2F4_CF3-CF=CF3 { specie { - nMoles 1; molWeight 114.043; } thermodynamics @@ -35484,7 +33268,6 @@ BF4- { specie { - nMoles 1; molWeight 86.8051; } thermodynamics @@ -35500,7 +33283,6 @@ NO2HCCNO2_radical { specie { - nMoles 1; molWeight 117.041; } thermodynamics @@ -35516,7 +33298,6 @@ C4H5O2_E-Crotoat { specie { - nMoles 1; molWeight 85.0833; } thermodynamics @@ -35532,7 +33313,6 @@ MgF2+ { specie { - nMoles 1; molWeight 62.3083; } thermodynamics @@ -35548,7 +33328,6 @@ C14H30_Tetradecan { specie { - nMoles 1; molWeight 198.395; } thermodynamics @@ -35564,7 +33343,6 @@ SF3+ { specie { - nMoles 1; molWeight 89.0587; } thermodynamics @@ -35580,7 +33358,6 @@ H2+ { specie { - nMoles 1; molWeight 2.0154; } thermodynamics @@ -35596,7 +33373,6 @@ C3H8O_2propanol { specie { - nMoles 1; molWeight 60.0966; } thermodynamics @@ -35612,7 +33388,6 @@ BrO2__Br-O-O { specie { - nMoles 1; molWeight 111.9; } thermodynamics @@ -35628,7 +33403,6 @@ NH+ { specie { - nMoles 1; molWeight 15.0141; } thermodynamics @@ -35644,7 +33418,6 @@ C6H5ClO__2,5-cyc { specie { - nMoles 1; molWeight 128.559; } thermodynamics @@ -35660,7 +33433,6 @@ C7H8__1,6-diyne { specie { - nMoles 1; molWeight 92.1418; } thermodynamics @@ -35676,7 +33448,6 @@ CHCl2 { specie { - nMoles 1; molWeight 83.9251; } thermodynamics @@ -35692,7 +33463,6 @@ C2H3I_Iodoethyle { specie { - nMoles 1; molWeight 153.951; } thermodynamics @@ -35708,7 +33478,6 @@ CH2N__H*C=NH__cis { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -35724,7 +33493,6 @@ Na(L) { specie { - nMoles 1; molWeight 22.9898; } thermodynamics @@ -35740,7 +33508,6 @@ B(L) { specie { - nMoles 1; molWeight 10.811; } thermodynamics @@ -35756,7 +33523,6 @@ C10H2__linear { specie { - nMoles 1; molWeight 122.127; } thermodynamics @@ -35772,7 +33538,6 @@ B3O3F3 { specie { - nMoles 1; molWeight 137.426; } thermodynamics @@ -35788,7 +33553,6 @@ PbCl { specie { - nMoles 1; molWeight 242.643; } thermodynamics @@ -35804,7 +33568,6 @@ C2H5OH(L)_McBrid { specie { - nMoles 1; molWeight 46.0695; } thermodynamics @@ -35820,7 +33583,6 @@ C10_linear_triple { specie { - nMoles 1; molWeight 120.112; } thermodynamics @@ -35836,7 +33598,6 @@ C2Cl2F4__FC-114 { specie { - nMoles 1; molWeight 170.922; } thermodynamics @@ -35852,7 +33613,6 @@ H2S2__H-S-S-H { specie { - nMoles 1; molWeight 66.1439; } thermodynamics @@ -35868,7 +33628,6 @@ MgO { specie { - nMoles 1; molWeight 40.3114; } thermodynamics @@ -35884,7 +33643,6 @@ C4H8,cis2-buten { specie { - nMoles 1; molWeight 56.1084; } thermodynamics @@ -35900,7 +33658,6 @@ Si { specie { - nMoles 1; molWeight 28.086; } thermodynamics @@ -35916,7 +33673,6 @@ C7H5NS_Benzothiaz { specie { - nMoles 1; molWeight 135.189; } thermodynamics @@ -35932,7 +33688,6 @@ AlCl2 { specie { - nMoles 1; molWeight 97.8875; } thermodynamics @@ -35948,7 +33703,6 @@ s-(CH3)3COOC(CH3) { specie { - nMoles 1; molWeight 146.231; } thermodynamics @@ -35964,7 +33718,6 @@ H7F7 { specie { - nMoles 1; molWeight 140.045; } thermodynamics @@ -35980,7 +33733,6 @@ C2H3F { specie { - nMoles 1; molWeight 46.0446; } thermodynamics @@ -35996,7 +33748,6 @@ C3H5_Cyclopropyl { specie { - nMoles 1; molWeight 41.0733; } thermodynamics @@ -36012,7 +33763,6 @@ NSC3H3_IsoThiazole { specie { - nMoles 1; molWeight 85.1281; } thermodynamics @@ -36028,7 +33778,6 @@ PbS(L) { specie { - nMoles 1; molWeight 239.254; } thermodynamics @@ -36044,7 +33793,6 @@ COF2-_anion { specie { - nMoles 1; molWeight 66.0079; } thermodynamics @@ -36060,7 +33808,6 @@ CN { specie { - nMoles 1; molWeight 26.0179; } thermodynamics @@ -36076,7 +33823,6 @@ C3H6O2_Meacetate { specie { - nMoles 1; molWeight 74.0801; } thermodynamics @@ -36092,7 +33838,6 @@ C6H9__C5H7-3-CH2* { specie { - nMoles 1; molWeight 81.1386; } thermodynamics @@ -36108,7 +33853,6 @@ IO2__I-O-O { specie { - nMoles 1; molWeight 158.903; } thermodynamics @@ -36124,7 +33868,6 @@ C2H3+__Vinylium { specie { - nMoles 1; molWeight 27.0457; } thermodynamics @@ -36140,7 +33883,6 @@ K { specie { - nMoles 1; molWeight 39.102; } thermodynamics @@ -36156,7 +33898,6 @@ ZrO2 { specie { - nMoles 1; molWeight 123.219; } thermodynamics @@ -36172,7 +33913,6 @@ D- { specie { - nMoles 1; molWeight 2.01464; } thermodynamics @@ -36188,7 +33928,6 @@ HNO3+ { specie { - nMoles 1; molWeight 63.0123; } thermodynamics @@ -36204,7 +33943,6 @@ CClF { specie { - nMoles 1; molWeight 66.4626; } thermodynamics @@ -36220,7 +33958,6 @@ C6H12,cyclo- { specie { - nMoles 1; molWeight 84.1625; } thermodynamics @@ -36236,7 +33973,6 @@ s-(-ClC=C=CCl-)_cy { specie { - nMoles 1; molWeight 106.939; } thermodynamics @@ -36252,7 +33988,6 @@ CN+ { specie { - nMoles 1; molWeight 26.0173; } thermodynamics @@ -36268,7 +34003,6 @@ S2O { specie { - nMoles 1; molWeight 80.1274; } thermodynamics @@ -36284,7 +34018,6 @@ Hg(cr) { specie { - nMoles 1; molWeight 200.59; } thermodynamics @@ -36300,7 +34033,6 @@ GeS(s) { specie { - nMoles 1; molWeight 104.654; } thermodynamics @@ -36316,7 +34048,6 @@ D2O { specie { - nMoles 1; molWeight 20.0276; } thermodynamics @@ -36332,7 +34063,6 @@ DOT__Water-DT { specie { - nMoles 1; molWeight 65.9135; } thermodynamics @@ -36348,7 +34078,6 @@ B2H6 { specie { - nMoles 1; molWeight 27.6698; } thermodynamics @@ -36364,7 +34093,6 @@ TRI-NITRO_BENZEN { specie { - nMoles 1; molWeight 213.107; } thermodynamics @@ -36380,7 +34108,6 @@ SiF3 { specie { - nMoles 1; molWeight 85.0812; } thermodynamics @@ -36396,7 +34123,6 @@ C3H7NO3_NPN { specie { - nMoles 1; molWeight 105.094; } thermodynamics @@ -36412,7 +34138,6 @@ air { specie { - nMoles 1; molWeight 28.9644; } thermodynamics @@ -36428,7 +34153,6 @@ C6H5I_Iodobenzen { specie { - nMoles 1; molWeight 204.011; } thermodynamics @@ -36444,7 +34168,6 @@ o-C6H5ClO_trans(E) { specie { - nMoles 1; molWeight 163.004; } thermodynamics @@ -36460,7 +34183,6 @@ C4H5N3O__Cytosine { specie { - nMoles 1; molWeight 111.104; } thermodynamics @@ -36476,7 +34198,6 @@ HOF+_Hypoflorous { specie { - nMoles 1; molWeight 36.0052; } thermodynamics @@ -36492,7 +34213,6 @@ BOF { specie { - nMoles 1; molWeight 45.8088; } thermodynamics @@ -36508,7 +34228,6 @@ C4H8O4_Tetraoxocan { specie { - nMoles 1; molWeight 120.106; } thermodynamics @@ -36524,7 +34243,6 @@ HNO+ { specie { - nMoles 1; molWeight 31.0135; } thermodynamics @@ -36540,7 +34258,6 @@ Fe2O3(S)_Solid-A { specie { - nMoles 1; molWeight 159.692; } thermodynamics @@ -36556,7 +34273,6 @@ CH3NO__CH2=N-OH { specie { - nMoles 1; molWeight 45.0412; } thermodynamics @@ -36572,7 +34288,6 @@ C10H15_RADICAL { specie { - nMoles 1; molWeight 135.231; } thermodynamics @@ -36588,7 +34303,6 @@ C5H4OH_Cyclo-2,4 { specie { - nMoles 1; molWeight 81.095; } thermodynamics @@ -36604,7 +34318,6 @@ C6H13__2M-1yl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -36620,7 +34333,6 @@ N2H3-_Hydrazine { specie { - nMoles 1; molWeight 31.0379; } thermodynamics @@ -36636,7 +34348,6 @@ C3H2(3)_H2C*-CC* { specie { - nMoles 1; molWeight 38.0494; } thermodynamics @@ -36652,7 +34363,6 @@ CH_excited_A2DEL { specie { - nMoles 1; molWeight 13.0191; } thermodynamics @@ -36668,7 +34378,6 @@ C4H5N_Cy-C3H5-CN { specie { - nMoles 1; molWeight 67.0911; } thermodynamics @@ -36684,7 +34393,6 @@ K2CO3 { specie { - nMoles 1; molWeight 138.213; } thermodynamics @@ -36700,7 +34408,6 @@ C6Cl6_Hexachloro { specie { - nMoles 1; molWeight 284.785; } thermodynamics @@ -36716,7 +34423,6 @@ BrO3 { specie { - nMoles 1; molWeight 127.899; } thermodynamics @@ -36732,7 +34438,6 @@ C8H10_1,4-dimeth { specie { - nMoles 1; molWeight 106.169; } thermodynamics @@ -36748,7 +34453,6 @@ HO3+_equil__HOOO { specie { - nMoles 1; molWeight 49.0056; } thermodynamics @@ -36764,7 +34468,6 @@ OH- { specie { - nMoles 1; molWeight 17.0079; } thermodynamics @@ -36780,7 +34483,6 @@ C6H5NH2(L) { specie { - nMoles 1; molWeight 93.1294; } thermodynamics @@ -36796,7 +34498,6 @@ CH2O+_Fornald_cati { specie { - nMoles 1; molWeight 30.0259; } thermodynamics @@ -36812,7 +34513,6 @@ C12H6Cl2O { specie { - nMoles 1; molWeight 237.087; } thermodynamics @@ -36828,7 +34528,6 @@ CD3NO2 { specie { - nMoles 1; molWeight 64.0589; } thermodynamics @@ -36844,7 +34543,6 @@ DF { specie { - nMoles 1; molWeight 21.0125; } thermodynamics @@ -36860,7 +34558,6 @@ C4H4O_Furan { specie { - nMoles 1; molWeight 68.0759; } thermodynamics @@ -36876,7 +34573,6 @@ C3H4_ALLENE { specie { - nMoles 1; molWeight 40.0653; } thermodynamics @@ -36892,7 +34588,6 @@ C2H6S_(CH3SCH3) { specie { - nMoles 1; molWeight 62.1341; } thermodynamics @@ -36908,7 +34603,6 @@ CNO__(NCO) { specie { - nMoles 1; molWeight 42.0173; } thermodynamics @@ -36924,7 +34618,6 @@ NT3__Tritium_Amo { specie { - nMoles 1; molWeight 157.707; } thermodynamics @@ -36940,7 +34633,6 @@ Na2O(L) { specie { - nMoles 1; molWeight 61.979; } thermodynamics @@ -36956,7 +34648,6 @@ CH2BrCOOH { specie { - nMoles 1; molWeight 138.946; } thermodynamics @@ -36972,7 +34663,6 @@ N2O4__O2NNO2 { specie { - nMoles 1; molWeight 92.011; } thermodynamics @@ -36988,7 +34678,6 @@ C7H9__C5H4(CH3)= { specie { - nMoles 1; molWeight 93.1498; } thermodynamics @@ -37004,7 +34693,6 @@ NO2+_cyclo_N(OO) { specie { - nMoles 1; molWeight 46.005; } thermodynamics @@ -37020,7 +34708,6 @@ HNO2+_trans_&_eq { specie { - nMoles 1; molWeight 47.0129; } thermodynamics @@ -37036,7 +34723,6 @@ C3H3_1-propynyl { specie { - nMoles 1; molWeight 39.0574; } thermodynamics @@ -37052,7 +34738,6 @@ C6H6__1,2-Hexadi { specie { - nMoles 1; molWeight 78.1147; } thermodynamics @@ -37068,7 +34753,6 @@ PbI3 { specie { - nMoles 1; molWeight 587.903; } thermodynamics @@ -37084,7 +34768,6 @@ C5H10O2_Butyrate { specie { - nMoles 1; molWeight 102.134; } thermodynamics @@ -37100,7 +34783,6 @@ N4+_cyclo { specie { - nMoles 1; molWeight 56.0263; } thermodynamics @@ -37116,7 +34798,6 @@ C8H7___2,3,5,7_Cy { specie { - nMoles 1; molWeight 103.145; } thermodynamics @@ -37132,7 +34813,6 @@ ZrO2(III) { specie { - nMoles 1; molWeight 123.219; } thermodynamics @@ -37148,7 +34828,6 @@ C6H13__2M-4yl { specie { - nMoles 1; molWeight 85.1705; } thermodynamics @@ -37164,7 +34843,6 @@ C2H5OH+_Ethanol+ { specie { - nMoles 1; molWeight 46.069; } thermodynamics @@ -37180,7 +34858,6 @@ C9H18_1-nonene { specie { - nMoles 1; molWeight 126.244; } thermodynamics @@ -37196,7 +34873,6 @@ S(b) { specie { - nMoles 1; molWeight 32.064; } thermodynamics @@ -37212,7 +34888,6 @@ Pd+__Paladium__C { specie { - nMoles 1; molWeight 106.399; } thermodynamics @@ -37228,7 +34903,6 @@ C70_FOOTBALLENE { specie { - nMoles 1; molWeight 840.781; } thermodynamics @@ -37244,7 +34918,6 @@ Mg(OH)2 { specie { - nMoles 1; molWeight 58.3267; } thermodynamics @@ -37260,7 +34933,6 @@ H+ { specie { - nMoles 1; molWeight 1.00743; } thermodynamics @@ -37276,7 +34948,6 @@ CH3Hg { specie { - nMoles 1; molWeight 215.625; } thermodynamics @@ -37292,7 +34963,6 @@ C4H7O2_EtAcetat_R { specie { - nMoles 1; molWeight 87.0992; } thermodynamics @@ -37308,7 +34978,6 @@ C2H6-_Ethane_ani { specie { - nMoles 1; molWeight 30.0707; } thermodynamics @@ -37324,7 +34993,6 @@ C3H5O2_Propionic { specie { - nMoles 1; molWeight 73.0721; } thermodynamics diff --git a/src/Allwmake b/src/Allwmake index a8e7b02ac232f5c0fa80969835a7259325f201de..1e71c42e0cd8906bcb8a41cdafcc662ec055b4c8 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -28,9 +28,7 @@ wmake $targetType OpenFOAM wmake $targetType fileFormats wmake $targetType surfMesh -wmake $targetType triSurface wmake $targetType meshTools -wmake $targetType edgeMesh # Decomposition methods needed by dummyThirdParty # (dummy metisDecomp, scotchDecomp etc) needed by e.g. meshTools @@ -51,7 +49,6 @@ wmake $targetType sampling wmake $targetType dynamicFvMesh wmake $targetType sampling wmake $targetType topoChangerFvMesh -wmake $targetType sampling # Compile scotchDecomp, metisDecomp etc. parallel/Allwmake $targetType $* @@ -82,6 +79,7 @@ wmake $targetType rigidBodyDynamics wmake $targetType rigidBodyMeshMotion # Needs access to Turbulence -wmake $targetType thermophysicalModels/properties/liquidPropertiesFvPatchFields + +wmake $targetType thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties #------------------------------------------------------------------------------ diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C index d444b83a0b64522207dfec51fb9e88dc8bca2c2d..8f6c26fbbec10c81b0b4f709fefebf5781029191 100644 --- a/src/OSspecific/POSIX/POSIX.C +++ b/src/OSspecific/POSIX/POSIX.C @@ -770,7 +770,7 @@ bool Foam::cp(const fileName& src, const fileName& dest, const bool followLink) // If dest is a directory, create the destination file name. if (destFile.type() == fileName::DIRECTORY) { - destFile = destFile/src.component(src.components().size() -1); + destFile = destFile/src.components().last(); } // Make sure the destination directory exists. @@ -943,7 +943,7 @@ bool Foam::mvBak(const fileName& src, const std::string& ext) } } - // fall-through: nothing to do + // fallthrough: nothing to do return false; } diff --git a/src/OSspecific/POSIX/dummyPrintStack.C b/src/OSspecific/POSIX/dummyPrintStack.C index 59ece6f986a82678cf4170c7db0ea6f26a60dc19..2ef74cfc24b26aff489bcf7550af0d97f801a173 100644 --- a/src/OSspecific/POSIX/dummyPrintStack.C +++ b/src/OSspecific/POSIX/dummyPrintStack.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,4 +31,3 @@ void Foam::error::printStack(Ostream& os) {} // ************************************************************************* // - diff --git a/src/OSspecific/POSIX/fileStat.C b/src/OSspecific/POSIX/fileStat.C index f40192f03bc4b4292641877e539dc03a4a50ce6b..afb955bfe266040ea503032419684962e5e373e1 100644 --- a/src/OSspecific/POSIX/fileStat.C +++ b/src/OSspecific/POSIX/fileStat.C @@ -123,9 +123,7 @@ Foam::Istream& Foam::operator>>(Istream& is, fileStat& fStat) fStat.status_.st_mtime = stat[11]; fStat.status_.st_ctime = stat[12]; - // Check state of Istream - is.check("Istream& operator>>(Istream&, fileStat&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OSspecific/POSIX/memInfo/memInfo.C b/src/OSspecific/POSIX/memInfo/memInfo.C index 43037b5c79349e1190f88ba9ee31e76eda9a636a..c0ff2dd99bf1586172f43df8789575339c84e018 100644 --- a/src/OSspecific/POSIX/memInfo/memInfo.C +++ b/src/OSspecific/POSIX/memInfo/memInfo.C @@ -118,12 +118,7 @@ Foam::Istream& Foam::operator>>(Istream& is, memInfo& m) is.readEnd("memInfo"); - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::memInfo&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -136,12 +131,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const memInfo& m) << m.rss_ << token::END_LIST; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, const Foam::memInfo&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index bc08c99154c17160d0780c2083c5aa15caf6af77..f95dc85741bbcb8bb740606b61ea57a538c00f11 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -80,8 +80,14 @@ primitives/quaternion/quaternion.C primitives/septernion/septernion.C primitives/triad/triad.C -/* functions, data entries */ +/* Run-time selectable functions */ primitives/functions/Function1/makeDataEntries.C +primitives/functions/Function1/ramp/ramp.C +primitives/functions/Function1/linearRamp/linearRamp.C +primitives/functions/Function1/quadraticRamp/quadraticRamp.C +primitives/functions/Function1/quarterSineRamp/quarterSineRamp.C +primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.C +primitives/functions/Function1/halfCosineRamp/halfCosineRamp.C primitives/functions/Polynomial/polynomialFunction.C primitives/subModelBase/subModelBase.C @@ -123,6 +129,9 @@ $(spatialVectorAlgebra)/SpatialVector/spatialVector/spatialVector.C $(spatialVectorAlgebra)/SpatialTensor/spatialTensor/spatialTensor.C $(spatialVectorAlgebra)/CompactSpatialTensor/compactSpatialTensor/compactSpatialTensor.C +primitives/polynomialEqns/cubicEqn/cubicEqn.C +primitives/polynomialEqns/quadraticEqn/quadraticEqn.C + containers/HashTables/HashTable/HashTableCore.C containers/HashTables/StaticHashTable/StaticHashTableCore.C containers/Lists/SortableList/ParSortableListName.C @@ -266,6 +275,8 @@ dimensionedTypes/dimensionedSphericalTensor/dimensionedSphericalTensor.C dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C dimensionedTypes/dimensionedTensor/dimensionedTensor.C +orientedType/orientedType.C + matrices/solution/solution.C scalarMatrices = matrices/scalarMatrices diff --git a/src/OpenFOAM/algorithms/indexedOctree/volumeType.C b/src/OpenFOAM/algorithms/indexedOctree/volumeType.C index 95868f6c0c3f58e105b82ece76ecda59924daf50..1bb1356b9670d1deefb5ed23b398bb559ffef36d 100644 --- a/src/OpenFOAM/algorithms/indexedOctree/volumeType.C +++ b/src/OpenFOAM/algorithms/indexedOctree/volumeType.C @@ -61,9 +61,7 @@ Foam::Istream& Foam::operator>>(Istream& is, volumeType& vt) // Read end of volumeType is.readEnd("volumeType"); - // Check state of Istream - is.check("operator>>(Istream&, volumeType&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableIO.C b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableIO.C index 7a679ef149b6841e49e6be9a7d3d35382db74112..55004189fe0d6fb9123551e5764d72568849d1d2 100644 --- a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableIO.C +++ b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableIO.C @@ -54,7 +54,7 @@ void Foam::HashPtrTable<T, Key, Hash>::read(Istream& is, const INew& inewt) if (s) { - if (2*s > this->tableSize_) + if (2*s > this->capacity()) { this->resize(2*s); } diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.C b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.C index 2c8167adcee45afb665e519a15231d7113468879..bc887b7d3b9217107ec495e432a52eaf569cf5ec 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.C +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.C @@ -29,7 +29,6 @@ License #include "HashTable.H" #include "List.H" #include "FixedList.H" -#include "Tuple2.H" // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // @@ -74,7 +73,7 @@ Foam::HashTable<T, Key, Hash>::HashTable(const label size) { table_ = new hashedEntry*[tableSize_]; - for (label hashIdx = 0; hashIdx < tableSize_; hashIdx++) + for (label hashIdx = 0; hashIdx < tableSize_; ++hashIdx) { table_[hashIdx] = nullptr; } @@ -112,14 +111,14 @@ Foam::HashTable<T, Key, Hash>::HashTable template<class T, class Key, class Hash> Foam::HashTable<T, Key, Hash>::HashTable ( - std::initializer_list<Tuple2<Key, T>> lst + std::initializer_list<std::pair<Key, T>> lst ) : HashTable<T, Key, Hash>(2*lst.size()) { - for (const Tuple2<Key, T>& pair : lst) + for (const auto& pair : lst) { - insert(pair.first(), pair.second()); + insert(pair.first, pair.second); } } @@ -203,6 +202,17 @@ Foam::HashTable<T, Key, Hash>::find ( const Key& key ) const +{ + return this->cfind(key); +} + + +template<class T, class Key, class Hash> +typename Foam::HashTable<T, Key, Hash>::const_iterator +Foam::HashTable<T, Key, Hash>::cfind +( + const Key& key +) const { if (nElmts_) { @@ -878,7 +888,7 @@ void Foam::HashTable<T, Key, Hash>::operator= template<class T, class Key, class Hash> void Foam::HashTable<T, Key, Hash>::operator= ( - std::initializer_list<Tuple2<Key, T>> lst + std::initializer_list<std::pair<Key, T>> lst ) { // Could be zero-sized from a previous transfer() @@ -893,7 +903,7 @@ void Foam::HashTable<T, Key, Hash>::operator= for (const auto& pair : lst) { - insert(pair.first(), pair.second()); + insert(pair.first, pair.second); } } @@ -912,7 +922,7 @@ bool Foam::HashTable<T, Key, Hash>::operator== for (const_iterator iter = rhs.cbegin(); iter != rhs.cend(); ++iter) { - const_iterator other = find(iter.key()); + const_iterator other = this->cfind(iter.key()); if (!other.found() || other.object() != iter.object()) { diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H index 3b3338084d9b1a3d46fcd8fe308d6d93f2a2cb71..cd50551d5d51405c2f8455f8edb226d84b0b22d8 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H @@ -57,11 +57,13 @@ SourceFiles #include "uLabel.H" #include "word.H" #include "Xfer.H" +#include "Hash.H" #include "className.H" #include "nullObject.H" #include <initializer_list> #include <iterator> +#include <utility> // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -73,7 +75,6 @@ namespace Foam template<class T> class List; template<class T> class UList; template<class T, unsigned Size> class FixedList; -template<class T1, class T2> class Tuple2; template<class T, class Key, class Hash> class HashTable; template<class T, class Key, class Hash> @@ -212,7 +213,7 @@ private: // Private data type for table entries - //- Structure to hold a hashed entry, with a SLList for collisions + //- Structure to hold a hashed entry, with a linked-list for collisions struct hashedEntry { //- The lookup key @@ -224,7 +225,7 @@ private: //- Pointer to next hashedEntry in sub-list hashedEntry* next_; - //- Construct from key, next pointer and object + //- Construct from key, object, next pointer inline hashedEntry(const Key& key, const T& obj, hashedEntry* next); private: @@ -296,7 +297,7 @@ public: HashTable(const Xfer<HashTable<T, Key, Hash>>& ht); //- Construct from an initializer list - HashTable(std::initializer_list<Tuple2<Key, T>> lst); + HashTable(std::initializer_list<std::pair<Key, T>> lst); //- Destructor @@ -327,6 +328,10 @@ public: // If not found iterator = end() const_iterator find(const Key& key) const; + //- Find and return an const_iterator set at the hashed entry + // If not found iterator = end() + const_iterator cfind(const Key& key) const; + //- Return hashed entry if it exists, or return the given default inline const T& lookup(const Key& key, const T& deflt) const; @@ -554,7 +559,7 @@ public: void operator=(const HashTable<T, Key, Hash>& rhs); //- Assignment from an initializer list - void operator=(std::initializer_list<Tuple2<Key, T>> lst); + void operator=(std::initializer_list<std::pair<Key, T>> lst); //- Equality. Hash tables are equal if the keys and values are equal. // Independent of table storage size and table order. diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTableIO.C b/src/OpenFOAM/containers/HashTables/HashTable/HashTableIO.C index 0eb3fadb459ed6fb047ce7a14e1f09248afc1527..54cd7ed9220457492984a513f936009d09512a66 100644 --- a/src/OpenFOAM/containers/HashTables/HashTable/HashTableIO.C +++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTableIO.C @@ -129,9 +129,7 @@ Foam::Ostream& Foam::HashTable<T, Key, Hash>::writeKeys os << token::END_LIST << nl; // End delimiter } - // Check state of IOstream os.check(FUNCTION_NAME); - return os; } @@ -145,12 +143,12 @@ Foam::Istream& Foam::operator>> HashTable<T, Key, Hash>& L ) { - is.fatalCheck("operator>>(Istream&, HashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); // Anull list L.clear(); - is.fatalCheck("operator>>(Istream&, HashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -251,7 +249,7 @@ Foam::Istream& Foam::operator>> << exit(FatalIOError); } - is.fatalCheck("operator>>(Istream&, HashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); return is; } @@ -278,9 +276,7 @@ Foam::Ostream& Foam::operator<< // Write end delimiter os << token::END_LIST; - // Check state of IOstream os.check(FUNCTION_NAME); - return os; } diff --git a/src/OpenFOAM/containers/HashTables/Map/Map.H b/src/OpenFOAM/containers/HashTables/Map/Map.H index 4ac6e90e60de910576029cbd93aa98413c31ee01..56f59128dd168c826b9b5c3e8d042ab3c68fc71a 100644 --- a/src/OpenFOAM/containers/HashTables/Map/Map.H +++ b/src/OpenFOAM/containers/HashTables/Map/Map.H @@ -96,7 +96,7 @@ public: {} //- Construct from an initializer list - Map(std::initializer_list<Tuple2<label, T>> map) + Map(std::initializer_list<std::pair<label, T>> map) : parent_type(map) {} diff --git a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.C b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.C index ec30dfc20a0e71eb4a4a631871adb6c2e0b18b02..c024ff335e210a5cdc0ec34925e598fe5a4c2fd3 100644 --- a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.C +++ b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.C @@ -158,6 +158,17 @@ Foam::StaticHashTable<T, Key, Hash>::find ( const Key& key ) const +{ + return this->cfind(key); +} + + +template<class T, class Key, class Hash> +typename Foam::StaticHashTable<T, Key, Hash>::const_iterator +Foam::StaticHashTable<T, Key, Hash>::cfind +( + const Key& key +) const { if (nElmts_) { diff --git a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H index 5b0a3ef8a59fb88c9c94cd22278c46eda6765420..850eb1fc43d3bf5055c70c8c56a9f200de9a5b9b 100644 --- a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H +++ b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H @@ -203,6 +203,10 @@ public: // If not found iterator = end() const_iterator find(const Key& key) const; + //- Find and return an const_iterator set at the hashed entry + // If not found iterator = end() + const_iterator cfind(const Key& key) const; + //- Return the table of contents List<Key> toc() const; diff --git a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableIO.C b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableIO.C index 7e4b3832611f05121682b4a3517bb0aba8272984..c7e06724530eaf65ecea01c608937065c5fb45f2 100644 --- a/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableIO.C +++ b/src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableIO.C @@ -94,12 +94,12 @@ Foam::StaticHashTable<T, Key, Hash>::printInfo(Ostream& os) const template<class T, class Key, class Hash> Foam::Istream& Foam::operator>>(Istream& is, StaticHashTable<T, Key, Hash>& L) { - is.fatalCheck("operator>>(Istream&, StaticHashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); // Anull list L.clear(); - is.fatalCheck("operator>>(Istream&, StaticHashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -200,7 +200,7 @@ Foam::Istream& Foam::operator>>(Istream& is, StaticHashTable<T, Key, Hash>& L) << exit(FatalIOError); } - is.fatalCheck("operator>>(Istream&, StaticHashTable<T, Key, Hash>&)"); + is.fatalCheck(FUNCTION_NAME); return is; } @@ -229,9 +229,7 @@ Foam::Ostream& Foam::operator<< // Write end delimiter os << token::END_LIST; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const StaticHashTable&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/Identifiers/Keyed/KeyedI.H b/src/OpenFOAM/containers/Identifiers/Keyed/KeyedI.H index d07aeb0f6af080661f00b9af7a180f72096287f6..59f49406871d3dfcb1fb43d5adbd59a23c00be8d 100644 --- a/src/OpenFOAM/containers/Identifiers/Keyed/KeyedI.H +++ b/src/OpenFOAM/containers/Identifiers/Keyed/KeyedI.H @@ -125,9 +125,7 @@ inline Foam::Istream& Foam::operator>>(Istream& is, Keyed<T>& item) // Read end of Keyed item/key pair is.readEnd("Keyed<T>"); - // Check state of Ostream - is.check("Istream& operator>>(Istream&, Keyed&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILListIO.C b/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILListIO.C index 5b398198e583e8f13d7f899bb030f56ed8459b50..961569aea775a457d904ba3a9a9978c76bb40449 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILListIO.C +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILListIO.C @@ -33,7 +33,7 @@ template<class LListBase, class T> template<class INew> void Foam::ILList<LListBase, T>::read(Istream& is, const INew& iNew) { - is.fatalCheck("operator>>(Istream&, ILList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -97,7 +97,7 @@ void Foam::ILList<LListBase, T>::read(Istream& is, const INew& iNew) } token lastToken(is); - is.fatalCheck("operator>>(Istream&, ILList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); while ( @@ -111,7 +111,7 @@ void Foam::ILList<LListBase, T>::read(Istream& is, const INew& iNew) this->append(iNew(is).ptr()); is >> lastToken; - is.fatalCheck("operator>>(Istream&, ILList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); } } else @@ -122,7 +122,7 @@ void Foam::ILList<LListBase, T>::read(Istream& is, const INew& iNew) << exit(FatalIOError); } - is.fatalCheck("operator>>(Istream&, ILList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LListIO.C b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LListIO.C index 028901452822906fe81f31143b5327c8532bc28a..11ce9dd852816ea4ce4435ca8e91dd5cb7340758 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LListIO.C +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LListIO.C @@ -44,7 +44,7 @@ Foam::Istream& Foam::operator>>(Istream& is, LList<LListBase, T>& L) // Anull list L.clear(); - is.fatalCheck(" operator>>(Istream&, LList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -98,7 +98,7 @@ Foam::Istream& Foam::operator>>(Istream& is, LList<LListBase, T>& L) } token lastToken(is); - is.fatalCheck(" operator>>(Istream&, LList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); while ( @@ -114,7 +114,7 @@ Foam::Istream& Foam::operator>>(Istream& is, LList<LListBase, T>& L) L.append(element); is >> lastToken; - is.fatalCheck(" operator>>(Istream&, LList<LListBase, T>&)"); + is.fatalCheck(FUNCTION_NAME); } } else @@ -126,7 +126,7 @@ Foam::Istream& Foam::operator>>(Istream& is, LList<LListBase, T>& L) } // Check state of IOstream - is.fatalCheck(" operator>>(Istream&, LList<LListBase,>&)"); + is.fatalCheck(FUNCTION_NAME); return is; } @@ -152,9 +152,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const LList<LListBase, T>& lst) // Write end of contents os << token::END_LIST; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const LList<LListBase, T>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrListIO.C b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrListIO.C index e23b2ddae1a1a7f3c13934ab470a2e1d237c63d3..1db2a59a50ef9adc8d794ac59966bc0ac1005d7c 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrListIO.C +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrListIO.C @@ -34,10 +34,7 @@ template<class LListBase, class T> template<class INew> void Foam::LPtrList<LListBase, T>::read(Istream& is, const INew& iNew) { - is.fatalCheck - ( - "LPtrList<LListBase, T>::read(Istream&, const INew&)" - ); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -102,7 +99,7 @@ void Foam::LPtrList<LListBase, T>::read(Istream& is, const INew& iNew) } token lastToken(is); - is.fatalCheck("LPtrList<LListBase, T>::read(Istream&, const INew&)"); + is.fatalCheck(FUNCTION_NAME); while ( @@ -116,10 +113,7 @@ void Foam::LPtrList<LListBase, T>::read(Istream& is, const INew& iNew) this->append(iNew(is).ptr()); is >> lastToken; - is.fatalCheck - ( - "LPtrList<LListBase, T>::read(Istream&, const INew&)" - ); + is.fatalCheck(FUNCTION_NAME); } } else @@ -132,7 +126,7 @@ void Foam::LPtrList<LListBase, T>::read(Istream& is, const INew& iNew) << exit(FatalIOError); } - is.fatalCheck("LPtrList<LListBase, T>::read(Istream&, const INew&)"); + is.fatalCheck(FUNCTION_NAME); } @@ -190,9 +184,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const LPtrList<LListBase, T>& lst) // Write end of contents os << token::END_LIST; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const LPtrList<LListBase, T>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILListIO.C b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILListIO.C index 137affd92bf438d14f532aff0dc48009674932a0..3f34eb83116c287fc865c409f57ea290c33d457f 100644 --- a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILListIO.C +++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILListIO.C @@ -52,9 +52,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const UILList<LListBase, T>& lst) // Write end of contents os << token::END_LIST; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const UILList<LListBase, T>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/Lists/Distribution/Distribution.C b/src/OpenFOAM/containers/Lists/Distribution/Distribution.C index e6d45249959002730420e82650684d1ec2c34cc8..a6f960db6e76cb756f9e07e4248914fd025710dd 100644 --- a/src/OpenFOAM/containers/Lists/Distribution/Distribution.C +++ b/src/OpenFOAM/containers/Lists/Distribution/Distribution.C @@ -591,9 +591,7 @@ Foam::Istream& Foam::operator>> >> d.binWidth_ >> d.listStarts_; - // Check state of Istream - is.check("Istream& operator>>(Istream&, Distribution<Type>&)"); - + is.check(FUNCTION_NAME); return is; } @@ -609,9 +607,7 @@ Foam::Ostream& Foam::operator<< << d.binWidth_ << token::SPACE << d.listStarts_; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, " "const Distribution&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C index 895e373488a7a869f598d75c1cc8382f64c76b5a..6d1d65b20e21c2f2b7583fdcda1dfd2a54cf0579 100644 --- a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C +++ b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C @@ -139,9 +139,7 @@ Foam::Ostream& Foam::FixedList<T, Size>::writeList os.write(reinterpret_cast<const char*>(L.cdata()), Size*sizeof(T)); } - // Check state of IOstream - os.check("const FixedList::writeList(Ostream&)"); - + os.check(FUNCTION_NAME); return os; } @@ -158,7 +156,7 @@ Foam::FixedList<T, Size>::FixedList(Istream& is) template<class T, unsigned Size> Foam::Istream& Foam::operator>>(Foam::Istream& is, FixedList<T, Size>& L) { - is.fatalCheck("operator>>(Istream&, FixedList<T, Size>&)"); + is.fatalCheck(FUNCTION_NAME); if (is.format() == IOstream::ASCII || !contiguous<T>()) { diff --git a/src/OpenFOAM/containers/Lists/List/ListIO.C b/src/OpenFOAM/containers/Lists/List/ListIO.C index 46183bb45b625805af80fac89a5f5a9053febc0d..b21b6a86648404ed633256ba9d503cf0ec84781f 100644 --- a/src/OpenFOAM/containers/Lists/List/ListIO.C +++ b/src/OpenFOAM/containers/Lists/List/ListIO.C @@ -46,11 +46,11 @@ Foam::Istream& Foam::operator>>(Istream& is, List<T>& L) // Anull list L.setSize(0); - is.fatalCheck("operator>>(Istream&, List<T>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); - is.fatalCheck("operator>>(Istream&, List<T>&) : reading first token"); + is.fatalCheck(FUNCTION_NAME); if (firstToken.isCompound()) { diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H index 441c7854086da239ab2783efff10b2b78a64e62e..d7c93bef0235e0cb1198e65bdb689f908617e015 100644 --- a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H +++ b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -57,25 +57,41 @@ static const List<Type>& emptyList() //- Renumber the values (not the indices) of a list. -// Negative ListType elements are left as is. +// Negative ListType elements are left untouched. template<class ListType> ListType renumber(const labelUList& oldToNew, const ListType& lst); -//- Inplace renumber the values of a list. -// Negative ListType elements are left as is. +//- Inplace renumber the values (not the indices) of a list. +// Negative ListType elements are left untouched. template<class ListType> void inplaceRenumber(const labelUList& oldToNew, ListType& lst); -//- Reorder the elements (indices, not values) of a list. -// Negative ListType elements are left as is. +//- Reorder the elements of a list. +// Locations with negative oldToNew values are left as is (copy-through). +// However, if pruning is activated, these negative oldToNew values are +// instead skipped over and the resulting list shrunk to the max index +// actually used. template<class ListType> -ListType reorder(const labelUList& oldToNew, const ListType& lst); +ListType reorder +( + const labelUList& oldToNew, + const ListType& lst, + const bool prune = false +); //- Inplace reorder the elements of a list. -// Negative ListType elements are left as is. +// Locations with negative oldToNew values are left as is (copy-through). +// However, if pruning is activated, these negative oldToNew values are +// instead skipped over and the resulting list shrunk to the max index +// actually used. template<class ListType> -void inplaceReorder(const labelUList& oldToNew, ListType& lst); +void inplaceReorder +( + const labelUList& oldToNew, + ListType& lst, + const bool prune = false +); // Variants to work with iterators and sparse tables. @@ -156,12 +172,20 @@ void inplaceSubset(const BoolListType& select, ListType& lst); //- Copy a subset of the input list when predicate is true. // Do not use FixedList for the input list, since it doesn't resize. template<class ListType, class UnaryPredicate> -ListType subsetList(const ListType& input, UnaryPredicate pred); +ListType subsetList +( + const ListType& input, + const UnaryPredicate& pred +); //- Inplace subset of the list when predicate is true. // Do not use FixedList for the input list, since it doesn't resize. template<class ListType, class UnaryPredicate> -void inplaceSubsetList(ListType& input, UnaryPredicate pred); +void inplaceSubsetList +( + ListType& input, + const UnaryPredicate& pred +); //- Invert one-to-one map. Unmapped elements will be -1. @@ -171,17 +195,26 @@ labelList invert(const label len, const labelUList& map); labelListList invertOneToMany(const label len, const labelUList& map); //- Invert many-to-many. -// Input and output types need to be inherited from List. -// eg, faces to pointFaces. -template<class InList, class OutList> -void invertManyToMany(const label len, const UList<InList>&, List<OutList>&); +// Input and output types must be inherited from List and also +// contain ints/labels. Used, for example, for faces to pointFaces. +template<class InputIntListType, class OutputIntListType> +void invertManyToMany +( + const label len, + const UList<InputIntListType>& input, + List<OutputIntListType>& output +); -template<class InList, class OutList> -List<OutList> invertManyToMany(const label len, const UList<InList>& in) +template<class InputIntListType, class OutputIntListType> +List<OutputIntListType> invertManyToMany +( + const label len, + const UList<InputIntListType>& input +) { - List<OutList> out; - invertManyToMany<InList,OutList>(len, in, out); - return out; + List<OutputIntListType> output; + invertManyToMany<InputIntListType,OutputIntListType>(len, input, output); + return output; } //- Create identity map of the given length with (map[i] == i) @@ -341,4 +374,3 @@ void inplaceRotateList(ListType<DataType>& list, label n); #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C index 9267221e99cbae5345f015f56c5feb8c18f368b8..bf5af3080db498a0029df0febd19c72ce8d3f7b1 100644 --- a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C +++ b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C @@ -70,23 +70,42 @@ template<class ListType> ListType Foam::reorder ( const labelUList& oldToNew, - const ListType& lst + const ListType& lst, + const bool prune ) { - ListType newLst(lst.size()); - newLst.setSize(lst.size()); // Consistent sizes (eg, DynamicList) + const label sz = lst.size(); - forAll(lst, elemI) + ListType newLst(sz); + newLst.setSize(sz); // Consistent sizing (eg, DynamicList) + + label maxIdx = -1; // For pruning: newSize = maxIdx+1 + forAll(lst, i) { - if (oldToNew[elemI] >= 0) + const label newIdx = oldToNew[i]; + if (newIdx >= 0) { - newLst[oldToNew[elemI]] = lst[elemI]; + // Could additionally enforce (newIdx < lst.size()) + // ... or just rely on FULLDEBUG from UList + + newLst[newIdx] = lst[i]; + + if (maxIdx < newIdx) + { + maxIdx = newIdx; + } } - else + else if (!prune) { - newLst[elemI] = lst[elemI]; + newLst[i] = lst[i]; } } + + if (prune) + { + newLst.setSize(maxIdx+1); + } + return newLst; } @@ -95,24 +114,42 @@ template<class ListType> void Foam::inplaceReorder ( const labelUList& oldToNew, - ListType& lst + ListType& lst, + const bool prune ) { - ListType newLst(lst.size()); - newLst.setSize(lst.size()); // Consistent sizing (eg, DynamicList) + const label sz = lst.size(); - forAll(lst, elemI) + ListType newLst(sz); + newLst.setSize(sz); // Consistent sizing (eg, DynamicList) + + label maxIdx = -1; // For pruning: newSize = maxIdx+1 + forAll(lst, i) { - if (oldToNew[elemI] >= 0) + const label newIdx = oldToNew[i]; + if (newIdx >= 0) { - newLst[oldToNew[elemI]] = lst[elemI]; + // Could additionally enforce (newIdx < lst.size()) + // ... or just rely on FULLDEBUG from UList + + newLst[newIdx] = lst[i]; + + if (maxIdx < newIdx) + { + maxIdx = newIdx; + } } - else + else if (!prune) { - newLst[elemI] = lst[elemI]; + newLst[i] = lst[i]; } } + if (prune) + { + newLst.setSize(maxIdx+1); + } + lst.transfer(newLst); } @@ -124,16 +161,15 @@ void Foam::inplaceMapValue Container& lst ) { - for - ( - typename Container::iterator iter = lst.begin(); - iter != lst.end(); - ++iter - ) + for (auto iter = lst.begin(); iter != lst.end(); ++iter) { - if (iter() >= 0) + const label oldIdx = iter.object(); + if (oldIdx >= 0) { - iter() = oldToNew[iter()]; + // Could additionally enforce (oldIdx < oldToNew.size()) + // ... or just rely on FULLDEBUG from UList + + iter.object() = oldToNew[oldIdx]; } } } @@ -148,16 +184,15 @@ void Foam::inplaceMapKey { Container newLst(lst.size()); - for - ( - typename Container::iterator iter = lst.begin(); - iter != lst.end(); - ++iter - ) + for (auto iter = lst.begin(); iter != lst.end(); ++iter) { - if (iter.key() >= 0) + const label oldIdx = iter.key(); + if (oldIdx >= 0) { - newLst.insert(oldToNew[iter.key()], iter()); + // Could additionally enforce (oldIdx < oldToNew.size()) + // ... or just rely on FULLDEBUG from UList + + newLst.insert(oldToNew[oldIdx], iter.object()); } } @@ -433,7 +468,7 @@ template<class ListType, class UnaryPredicate> ListType Foam::subsetList ( const ListType& lst, - UnaryPredicate pred + const UnaryPredicate& pred ) { ListType newLst(lst.size()); @@ -457,7 +492,7 @@ template<class ListType, class UnaryPredicate> void Foam::inplaceSubsetList ( ListType& lst, - UnaryPredicate pred + const UnaryPredicate& pred ) { label nElem = 0; @@ -477,46 +512,45 @@ void Foam::inplaceSubsetList } -template<class InList, class OutList> +template<class InputIntListType, class OutputIntListType> void Foam::invertManyToMany ( - const label nEdges, - const UList<InList>& pointEdges, - List<OutList>& edges + const label len, + const UList<InputIntListType>& input, + List<OutputIntListType>& output ) { - // Number of points per edge - labelList nPointsPerEdge(nEdges, 0); + // The output list sizes + labelList sizes(len, 0); - forAll(pointEdges, pointi) + forAll(input, listi) { - const InList& pEdges = pointEdges[pointi]; + const InputIntListType& sublist = input[listi]; - forAll(pEdges, j) + forAll(sublist, idx) { - nPointsPerEdge[pEdges[j]]++; + sizes[sublist[idx]]++; } } - // Size edges - edges.setSize(nEdges); - - forAll(nPointsPerEdge, edgeI) + // Size output + output.setSize(len); + forAll(sizes, outi) { - edges[edgeI].setSize(nPointsPerEdge[edgeI]); + output[outi].setSize(sizes[outi]); } - nPointsPerEdge = 0; - // Fill edges - forAll(pointEdges, pointi) + // Fill output + sizes = 0; + forAll(input, listi) { - const InList& pEdges = pointEdges[pointi]; + const InputIntListType& sublist = input[listi]; - forAll(pEdges, j) + forAll(sublist, idx) { - label edgeI = pEdges[j]; + const label outi = sublist[idx]; - edges[edgeI][nPointsPerEdge[edgeI]++] = pointi; + output[outi][sizes[outi]++] = listi; } } } diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.C b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.C index 791d53cc591ae792abd441989f0225f76b3e73c6..4b01a43dd61ecff39fb00d54168ea8af5f37589b 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.C +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.C @@ -286,7 +286,7 @@ Foam::Xfer<Foam::labelList> Foam::PackedBoolList::used() const // * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // -void Foam::PackedBoolList::operator=(const Foam::UList<bool>& lst) +void Foam::PackedBoolList::operator=(const UList<bool>& lst) { this->setSize(lst.size()); diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.H b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.H index b2ca0037f85ac7ad9e565d1673401839d0f50ff6..f98545a9bd64e3270c8d894564c5eed5f304dce1 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.H +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolList.H @@ -94,7 +94,7 @@ public: inline PackedBoolList(); //- Construct from Istream - PackedBoolList(Istream&); + PackedBoolList(Istream& is); //- Construct with given size, initializes list to 0 explicit inline PackedBoolList(const label size); @@ -103,19 +103,19 @@ public: inline PackedBoolList(const label size, const bool val); //- Copy constructor - inline PackedBoolList(const PackedBoolList&); + inline PackedBoolList(const PackedBoolList& lst); //- Copy constructor - explicit inline PackedBoolList(const PackedList<1>&); + explicit inline PackedBoolList(const PackedList<1>& lst); //- Construct by transferring the parameter contents - inline PackedBoolList(const Xfer<PackedBoolList>&); + inline PackedBoolList(const Xfer<PackedBoolList>& lst); //- Construct by transferring the parameter contents - inline PackedBoolList(const Xfer<PackedList<1>>&); + inline PackedBoolList(const Xfer<PackedList<1>>& lst); //- Construct from a list of bools - explicit inline PackedBoolList(const Foam::UList<bool>&); + explicit inline PackedBoolList(const UList<bool>& lst); //- Construct from a list of labels // using the labels as indices to indicate which bits are set @@ -131,132 +131,132 @@ public: // Member Functions - // Access + // Access - using PackedList<1>::set; - using PackedList<1>::unset; + using PackedList<1>::set; + using PackedList<1>::unset; - //- Set specified bits. - void set(const PackedList<1>&); + //- Set specified bits. + void set(const PackedList<1>& lst); - //- Set the listed indices. Return number of elements changed. - // Does auto-vivify for non-existent entries. - label set(const labelUList& indices); + //- Set the listed indices. Return number of elements changed. + // Does auto-vivify for non-existent entries. + label set(const labelUList& indices); - //- Set the listed indices. Return number of elements changed. - // Does auto-vivify for non-existent entries. - label set(const UIndirectList<label>& indices); + //- Set the listed indices. Return number of elements changed. + // Does auto-vivify for non-existent entries. + label set(const UIndirectList<label>& indices); - //- Unset specified bits. - void unset(const PackedList<1>&); + //- Unset specified bits. + void unset(const PackedList<1>& lst); - //- Unset the listed indices. Return number of elements changed. - // Never auto-vivify entries. - label unset(const labelUList& indices); + //- Unset the listed indices. Return number of elements changed. + // Never auto-vivify entries. + label unset(const labelUList& indices); - //- Unset the listed indices. Return number of elements changed. - // Never auto-vivify entries. - label unset(const UIndirectList<label>& indices); + //- Unset the listed indices. Return number of elements changed. + // Never auto-vivify entries. + label unset(const UIndirectList<label>& indices); - //- Subset with the specified list. - void subset(const PackedList<1>&); + //- Subset with the specified list. + void subset(const PackedList<1>& lst); - //- Subset with the listed indices. - // Return number of elements subsetted. - label subset(const labelUList& indices); + //- Subset with the listed indices. + // Return number of elements subsetted. + label subset(const labelUList& indices); - //- Subset with the listed indices. - // Return number of elements subsetted. - label subset(const UIndirectList<label>& indices); + //- Subset with the listed indices. + // Return number of elements subsetted. + label subset(const UIndirectList<label>& indices); - //- Return indices of the used (true) elements as a list of labels - Xfer<labelList> used() const; + //- Return indices of the used (true) elements as a list of labels + Xfer<labelList> used() const; - // Edit + // Edit - //- Transfer the contents of the argument list into this list - // and annul the argument list. - inline void transfer(PackedBoolList&); + //- Transfer the contents of the argument list into this list + // and annul the argument list. + inline void transfer(PackedBoolList& lst); - //- Transfer the contents of the argument list into this list - // and annul the argument list. - inline void transfer(PackedList<1>&); + //- Transfer the contents of the argument list into this list + // and annul the argument list. + inline void transfer(PackedList<1>& lst); - //- Transfer contents to the Xfer container - inline Xfer<PackedBoolList> xfer(); + //- Transfer contents to the Xfer container + inline Xfer<PackedBoolList> xfer(); // Member Operators - //- Assignment of all entries to the given value. - inline void operator=(const bool val); + //- Assignment of all entries to the given value. + inline void operator=(const bool val); - //- Assignment operator. - inline void operator=(const PackedBoolList&); + //- Assignment operator. + inline void operator=(const PackedBoolList& lst); - //- Assignment operator. - inline void operator=(const PackedList<1>&); + //- Assignment operator. + inline void operator=(const PackedList<1>& lst); - //- Assignment operator. - void operator=(const Foam::UList<bool>&); + //- Assignment operator. + void operator=(const UList<bool>& lst); - //- Assignment operator, - // using the labels as indices to indicate which bits are set - inline void operator=(const labelUList& indices); + //- Assignment operator, + // using the labels as indices to indicate which bits are set + inline void operator=(const labelUList& indices); - //- Assignment operator, - // using the labels as indices to indicate which bits are set - inline void operator=(const UIndirectList<label>&); + //- Assignment operator, + // using the labels as indices to indicate which bits are set + inline void operator=(const UIndirectList<label>& indices); - //- Complement operator - inline PackedBoolList operator~() const; + //- Complement operator + inline PackedBoolList operator~() const; - //- And operator (lists may be dissimilar sizes) - inline PackedBoolList& operator&=(const PackedList<1>&); + //- And operator (lists may be dissimilar sizes) + inline PackedBoolList& operator&=(const PackedList<1>& lst); - //- And operator (lists may be dissimilar sizes) - // using the labels as indices to indicate which bits are set - inline PackedBoolList& operator&=(const labelUList& indices); + //- And operator (lists may be dissimilar sizes) + // using the labels as indices to indicate which bits are set + inline PackedBoolList& operator&=(const labelUList& indices); - //- And operator (lists may be dissimilar sizes) - // using the labels as indices to indicate which bits are set - inline PackedBoolList& operator&=(const UIndirectList<label>&); + //- And operator (lists may be dissimilar sizes) + // using the labels as indices to indicate which bits are set + inline PackedBoolList& operator&=(const UIndirectList<label>& indices); - //- Xor operator (lists may be dissimilar sizes) - // Retains unique entries - PackedBoolList& operator^=(const PackedList<1>&); + //- Xor operator (lists may be dissimilar sizes) + // Retains unique entries + PackedBoolList& operator^=(const PackedList<1>& lst); - //- Or operator (lists may be dissimilar sizes) - inline PackedBoolList& operator|=(const PackedList<1>&); + //- Or operator (lists may be dissimilar sizes) + inline PackedBoolList& operator|=(const PackedList<1>& lst); - //- Or operator (lists may be dissimilar sizes), - // using the labels as indices to indicate which bits are set - inline PackedBoolList& operator|=(const labelUList& indices); + //- Or operator (lists may be dissimilar sizes), + // using the labels as indices to indicate which bits are set + inline PackedBoolList& operator|=(const labelUList& indices); - //- Or operator (lists may be dissimilar sizes), - // using the labels as indices to indicate which bits are set - inline PackedBoolList& operator|=(const UIndirectList<label>&); + //- Or operator (lists may be dissimilar sizes), + // using the labels as indices to indicate which bits are set + inline PackedBoolList& operator|=(const UIndirectList<label>& indices); - //- Add entries to this list, synonymous with the or operator - inline PackedBoolList& operator+=(const PackedList<1>&); + //- Add entries to this list, synonymous with the or operator + inline PackedBoolList& operator+=(const PackedList<1>& lst); - //- Add entries to this list, synonymous with the or operator - inline PackedBoolList& operator+=(const labelUList& indices); + //- Add entries to this list, synonymous with the or operator + inline PackedBoolList& operator+=(const labelUList& indices); - //- Add entries to this list, synonymous with the or operator - inline PackedBoolList& operator+=(const UIndirectList<label>&); + //- Add entries to this list, synonymous with the or operator + inline PackedBoolList& operator+=(const UIndirectList<label>& indices); - //- Remove entries from this list - unset the specified bits - inline PackedBoolList& operator-=(const PackedList<1>&); + //- Remove entries from this list - unset the specified bits + inline PackedBoolList& operator-=(const PackedList<1>& lst); - //- Remove entries from this list - unset the specified bits - inline PackedBoolList& operator-=(const labelUList& indices); + //- Remove entries from this list - unset the specified bits + inline PackedBoolList& operator-=(const labelUList& indices); - //- Remove entries from this list - unset the specified bits - inline PackedBoolList& operator-=(const UIndirectList<label>&); + //- Remove entries from this list - unset the specified bits + inline PackedBoolList& operator-=(const UIndirectList<label>& indices); }; diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolListI.H b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolListI.H index d5561cfc28288a636493e4a86c9d7972ab97e416..a0702f9a30e92aced06170a0feb317eb92408b2c 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedBoolListI.H +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedBoolListI.H @@ -73,7 +73,7 @@ inline Foam::PackedBoolList::PackedBoolList(const Xfer<PackedList<1>>& lst) {} -inline Foam::PackedBoolList::PackedBoolList(const Foam::UList<bool>& lst) +inline Foam::PackedBoolList::PackedBoolList(const UList<bool>& lst) : PackedList<1>() { diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedList.C b/src/OpenFOAM/containers/Lists/PackedList/PackedList.C index 53889b02ad4c73e8fe742291fc395d033edb0614..b862792b1270a3a2b82e409fa8ecc6dba529794a 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedList.C +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedList.C @@ -266,7 +266,7 @@ Foam::Istream& Foam::PackedList<nBits>::read(Istream& is) PackedList<nBits>& lst = *this; lst.clear(); - is.fatalCheck("PackedList<nBits>::read(Istream&)"); + is.fatalCheck(FUNCTION_NAME); token firstTok(is); is.fatalCheck @@ -349,7 +349,7 @@ Foam::Istream& Foam::PackedList<nBits>::read(Istream& is) if (firstTok.pToken() == token::BEGIN_LIST) { token nextTok(is); - is.fatalCheck("PackedList<nBits>::read(Istream&)"); + is.fatalCheck(FUNCTION_NAME); while ( @@ -362,13 +362,13 @@ Foam::Istream& Foam::PackedList<nBits>::read(Istream& is) lst.append(lst.readValue(is)); is >> nextTok; - is.fatalCheck("PackedList<nBits>::read(Istream&)"); + is.fatalCheck(FUNCTION_NAME); } } else if (firstTok.pToken() == token::BEGIN_BLOCK) { token nextTok(is); - is.fatalCheck("PackedList<nBits>::read(Istream&)"); + is.fatalCheck(FUNCTION_NAME); while ( @@ -381,7 +381,7 @@ Foam::Istream& Foam::PackedList<nBits>::read(Istream& is) lst.setPair(is); is >> nextTok; - is.fatalCheck("PackedList<nBits>::read(Istream&)"); + is.fatalCheck(FUNCTION_NAME); } } else diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedList.H b/src/OpenFOAM/containers/Lists/PackedList/PackedList.H index c07bb1eab11396c273760a46dfcfc496f046fa23..18720fc2ae929fc8bd697161550eae1ea68a5d87 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedList.H +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedList.H @@ -118,9 +118,9 @@ class Ostream; template<unsigned nBits> class PackedList; template<unsigned nBits> -Istream& operator>>(Istream&, PackedList<nBits>&); +Istream& operator>>(Istream& is, PackedList<nBits>& lst); template<unsigned nBits> -Ostream& operator<<(Ostream&, const PackedList<nBits>&); +Ostream& operator<<(Ostream& os, const PackedList<nBits>& lst); /*---------------------------------------------------------------------------*\ @@ -160,11 +160,11 @@ protected: inline static label packedLength(const label); //- Read a list entry (allows for specialization) - inline static unsigned int readValue(Istream&); + inline static unsigned int readValue(Istream& is); //- Read an index/value pair and set accordingly. // For bool specialization, read a single index value - inline void setPair(Istream&); + inline void setPair(Istream& is); private: @@ -252,167 +252,167 @@ public: // Member Functions - // Access + // Access - //- The number of elements that can be stored before reallocating - inline label capacity() const; + //- The number of elements that can be stored before reallocating + inline label capacity() const; - //- Number of entries. - inline label size() const; + //- Number of entries. + inline label size() const; - //- Return true if the list is empty (ie, size() is zero). - inline bool empty() const; + //- Return true if the list is empty (ie, size() is zero). + inline bool empty() const; - //- Get value at index I. - // Never auto-vivify entries. - inline unsigned int get(const label i) const; + //- Get value at index I. + // Never auto-vivify entries. + inline unsigned int get(const label i) const; - //- Set value at index I. Return true if value changed. - // Does auto-vivify for non-existent entries. - // Default value set is the max_value. - inline bool set(const label i, const unsigned int val = ~0u); + //- Set value at index I. Return true if value changed. + // Does auto-vivify for non-existent, non-zero entries. + // Default value set is the max_value. + inline bool set(const label i, const unsigned int val = ~0u); - //- Unset the entry at index I. Return true if value changed. - // Never auto-vivify entries. - inline bool unset(const label i); + //- Unset the entry at index I. Return true if value changed. + // Never auto-vivify entries. + inline bool unset(const label i); - //- Return the underlying packed storage - // Manipulate with utmost caution - inline List<unsigned int>& storage(); + //- Return the underlying packed storage + // Manipulate with utmost caution + inline List<unsigned int>& storage(); - //- Return the underlying packed storage - inline const List<unsigned int>& storage() const; + //- Return the underlying packed storage + inline const List<unsigned int>& storage() const; - //- The list length when packed - inline label packedLength() const; + //- The list length when packed + inline label packedLength() const; - //- Return the binary size in number of characters - // used in the underlying storage - inline std::streamsize byteSize() const; + //- Return the binary size in number of characters + // used in the underlying storage + inline std::streamsize byteSize() const; - //- Count number of bits set, O(log(n)) - // Uses the Hamming weight (population count) method - // http://en.wikipedia.org/wiki/Hamming_weight - unsigned int count() const; + //- Count number of bits set, O(log(n)) + // Uses the Hamming weight (population count) method + // http://en.wikipedia.org/wiki/Hamming_weight + unsigned int count() const; - //- Return the values as a list of labels - Xfer<labelList> values() const; + //- Return the values as a list of labels + Xfer<labelList> values() const; - //- Print bit patterns, optionally output unused elements - // - // addressable bits: - // on: '1', off: '-' - // - // non-addressable bits: - // on: '!', off: '.' - // - Ostream& printBits(Ostream&, const bool fullOutput=false) const; + //- Print bit patterns, optionally output unused elements + // + // addressable bits: + // on: '1', off: '-' + // + // non-addressable bits: + // on: '!', off: '.' + // + Ostream& printBits(Ostream& os, const bool fullOutput=false) const; - //- Print information and bit patterns (with printBits) - Ostream& printInfo(Ostream&, const bool fullOutput=false) const; + //- Print information and bit patterns (with printBits) + Ostream& printInfo(Ostream& os, const bool fullOutput=false) const; - // Edit + // Edit - //- Trim any trailing zero elements - bool trim(); + //- Trim any trailing zero elements + bool trim(); - //- Invert the bits in the addressable region - void flip(); + //- Invert the bits in the addressable region + void flip(); - //- Clear all bits - inline void reset(); + //- Clear all bits + inline void reset(); - //- Alter the size of the underlying storage. - // The addressed size will be truncated if needed to fit, but will - // remain otherwise untouched. - inline void setCapacity(const label); + //- Alter the size of the underlying storage. + // The addressed size will be truncated if needed to fit, but will + // remain otherwise untouched. + inline void setCapacity(const label nElem); - //- Reset addressable list size, does not shrink the allocated size. - // Optionally specify a value for new elements. - inline void resize(const label, const unsigned int val = 0u); + //- Reset addressable list size, does not shrink the allocated size. + // Optionally specify a value for new elements. + inline void resize(const label nElem, const unsigned int val = 0u); - //- Alias for resize() - inline void setSize(const label, const unsigned int val = 0u); + //- Alias for resize() + inline void setSize(const label nElem, const unsigned int val = 0u); - //- Reserve allocation space for at least this size. - // Never shrinks the allocated size. - // The list size is adjusted as per DynamicList with - // SizeInc=0, SizeMult=2, SizeDiv=1 - inline void reserve(const label); + //- Reserve allocation space for at least this size. + // Never shrinks the allocated size. + // The list size is adjusted as per DynamicList with + // SizeInc=0, SizeMult=2, SizeDiv=1 + inline void reserve(const label nElem); - //- Clear the list, i.e. set addressable size to zero. - // Does not adjust the underlying storage - inline void clear(); + //- Clear the list, i.e. set addressable size to zero. + // Does not adjust the underlying storage + inline void clear(); - //- Clear the list and delete storage. - inline void clearStorage(); + //- Clear the list and delete storage. + inline void clearStorage(); - //- Shrink the allocated space to what is actually used. - inline void shrink(); + //- Shrink the allocated space to what is actually used. + inline void shrink(); - //- Transfer the contents of the argument list into this list - // and annul the argument list. - inline void transfer(PackedList<nBits>&); + //- Transfer the contents of the argument list into this list + // and annul the argument list. + inline void transfer(PackedList<nBits>& lst); - //- Transfer contents to the Xfer container - inline Xfer<PackedList<nBits>> xfer(); + //- Transfer contents to the Xfer container + inline Xfer<PackedList<nBits>> xfer(); - // IO + // IO - //- Clear list and read from stream - Istream& read(Istream& is); + //- Clear list and read from stream + Istream& read(Istream& is); - //- Write the List, with line-breaks in ASCII if the list length - // exceeds shortListLen. Using '0' suppresses line-breaks entirely. - // A special indexed output (ASCII only) is triggered by specifying - // a negative value for shortListLen. - // - // The indexed output may be convenient in some situations. - // The general format is a group of index/value pairs: - // \verbatim - // { (index1 value1) (index2 value2) (index3 value3) } - // \endverbatim - // The bool specialization just uses the indices corresponding to - // non-zero entries instead of a index/value pair: - // \verbatim - // { index1 index2 index3 } - // \endverbatim - Ostream& writeList(Ostream& os, const label shortListLen=0) const; + //- Write the List, with line-breaks in ASCII if the list length + // exceeds shortListLen. Using '0' suppresses line-breaks entirely. + // A special indexed output (ASCII only) is triggered by specifying + // a negative value for shortListLen. + // + // The indexed output may be convenient in some situations. + // The general format is a group of index/value pairs: + // \verbatim + // { (index1 value1) (index2 value2) (index3 value3) } + // \endverbatim + // The bool specialization just uses the indices corresponding to + // non-zero entries instead of a index/value pair: + // \verbatim + // { index1 index2 index3 } + // \endverbatim + Ostream& writeList(Ostream& os, const label shortListLen=0) const; - //- Write as a dictionary entry with keyword - void writeEntry(const word& keyword, Ostream& os) const; + //- Write as a dictionary entry with keyword + void writeEntry(const word& keyword, Ostream& os) const; - // Member operators + // Member operators - //- Append a value at the end of the list - inline PackedList<nBits>& append(const unsigned int val); + //- Append a value at the end of the list + inline PackedList<nBits>& append(const unsigned int val); - //- Remove and return the last element - inline unsigned int remove(); + //- Remove and return the last element + inline unsigned int remove(); - //- Get value at index I - // Never auto-vivify entries. - inline unsigned int operator[](const label i) const; + //- Get value at index I + // Never auto-vivify entries. + inline unsigned int operator[](const label i) const; - //- Set value at index I. - // Returns iterator to perform the actual operation. - // Does not auto-vivify entries, but will when assigned to. - inline iteratorBase operator[](const label i); + //- Set value at index I. + // Returns iterator to perform the actual operation. + // Does not auto-vivify entries, but will when assigned to. + inline iteratorBase operator[](const label i); - //- Assignment of all entries to the given value. Takes linear time. - inline void operator=(const unsigned int val); + //- Assignment of all entries to the given value. Takes linear time. + inline void operator=(const unsigned int val); - //- Assignment operator. - void operator=(const PackedList<nBits>& lst); + //- Assignment operator. + void operator=(const PackedList<nBits>& lst); - //- Assignment operator. - void operator=(const labelUList& lst); + //- Assignment operator. + void operator=(const labelUList& lst); - //- Assignment operator. - void operator=(const UIndirectList<label>& lst); + //- Assignment operator. + void operator=(const UIndirectList<label>& lst); // Iterators and helpers @@ -442,7 +442,7 @@ public: inline unsigned int get() const; //- Set value, returning true if changed, no range-checking - inline bool set(unsigned int); + inline bool set(unsigned int val); // Constructors @@ -451,7 +451,7 @@ public: inline iteratorBase(); //- Construct from base list and position index - inline iteratorBase(const PackedList*, const label); + inline iteratorBase(const PackedList* lst, const label i); public: @@ -463,17 +463,17 @@ public: //- Write index/value for a non-zero entry // The bool specialization writes the index only - inline bool writeIfSet(Ostream&) const; + inline bool writeIfSet(Ostream& os) const; // Member Operators //- Compare values (not positions) - inline bool operator==(const iteratorBase&) const; - inline bool operator!=(const iteratorBase&) const; + inline bool operator==(const iteratorBase& iter) const; + inline bool operator!=(const iteratorBase& iter) const; //- Assign value, not position. // This allows packed[0] = packed[3] for assigning values - inline void operator=(const iteratorBase&); + inline void operator=(const iteratorBase& iter); //- Assign value. // A non-existent entry will be auto-vivified. @@ -484,7 +484,7 @@ public: inline operator unsigned int () const; //- Print information and values - Ostream& printInfo(Ostream&) const; + Ostream& printInfo(Ostream& os) const; }; @@ -496,11 +496,11 @@ public: //- Disallow copy constructor from const_iterator // This would violate const-ness! - iterator(const const_iterator&); + iterator(const const_iterator& iter); //- Disallow assignment from const_iterator // This would violate const-ness! - void operator=(const const_iterator&); + void operator=(const const_iterator& iter); public: @@ -513,21 +513,21 @@ public: //- Construct from iterator base, eg iter(packedlist[i]) // but also "iterator iter = packedlist[i];" // An out-of-range iterator is assigned end() - inline iterator(const iteratorBase&); + inline iterator(const iteratorBase& iter); //- Construct from base list and position index - inline iterator(const PackedList*, const label); + inline iterator(const PackedList* lst, const label i); // Member Operators //- Compare positions (not values) - inline bool operator==(const iteratorBase&) const; - inline bool operator!=(const iteratorBase&) const; + inline bool operator==(const iteratorBase& iter) const; + inline bool operator!=(const iteratorBase& iter) const; //- Assign from iteratorBase, eg iter = packedlist[i] // An out-of-range iterator is assigned end() - inline void operator=(const iteratorBase&); + inline void operator=(const iteratorBase& iter); //- Return value inline unsigned int operator*() const; @@ -571,24 +571,24 @@ public: //- Construct from iterator base, eg iter(packedlist[i]) // but also "const_iterator iter = packedlist[i];" // An out-of-range iterator is assigned cend() - inline const_iterator(const iteratorBase&); + inline const_iterator(const iteratorBase& iter); //- Construct from base list and position index - inline const_iterator(const PackedList*, const label); + inline const_iterator(const PackedList* lst, const label i); //- Construct from iterator - inline const_iterator(const iterator&); + inline const_iterator(const iterator& iter); // Member operators //- Compare positions (not values) - inline bool operator==(const iteratorBase&) const; - inline bool operator!=(const iteratorBase&) const; + inline bool operator==(const iteratorBase& iter) const; + inline bool operator!=(const iteratorBase& iter) const; //- Assign from iteratorBase or derived // eg, iter = packedlist[i] or even iter = list.begin() - inline void operator=(const iteratorBase&); + inline void operator=(const iteratorBase& iter); //- Return referenced value directly inline unsigned int operator*() const; @@ -621,14 +621,14 @@ public: friend Istream& operator>> <nBits> ( - Istream&, - PackedList<nBits>& + Istream& is, + PackedList<nBits>& lst ); friend Ostream& operator<< <nBits> ( - Ostream&, - const PackedList<nBits>& + Ostream& os, + const PackedList<nBits>& lst ); }; diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedListI.H b/src/OpenFOAM/containers/Lists/PackedList/PackedListI.H index 2397a45768e2614282f7d3cf822b3b88db1b9341..ad136b903fafd6ba25109c81b339274985f01bab 100644 --- a/src/OpenFOAM/containers/Lists/PackedList/PackedListI.H +++ b/src/OpenFOAM/containers/Lists/PackedList/PackedListI.H @@ -137,8 +137,7 @@ inline void Foam::PackedList<nBits>::setPair(Istream& is) set(ind, val); - // Check state of Istream - is.check("PackedList<nBits>::setPair(Istream&)"); + is.check(FUNCTION_NAME); } @@ -268,7 +267,7 @@ Foam::PackedList<nBits>::clone() const template<unsigned nBits> inline Foam::PackedList<nBits>::iteratorBase::iteratorBase() : - list_(0), + list_(nullptr), index_(0) {} @@ -1003,6 +1002,12 @@ inline bool Foam::PackedList<nBits>::set } else if (i >= size_) { + if (!val) + { + // Same as unset out-of-bounds = noop + return false; + } + // Lazy evaluation - increase size on assigment resize(i + 1); } @@ -1014,7 +1019,7 @@ inline bool Foam::PackedList<nBits>::set template<unsigned nBits> inline bool Foam::PackedList<nBits>::unset(const label i) { - // lazy evaluation - ignore out-of-bounds + // Unset out-of-bounds = noop if (i < 0 || i >= size_) { return false; diff --git a/src/OpenFOAM/containers/Lists/PtrList/PtrListIO.C b/src/OpenFOAM/containers/Lists/PtrList/PtrListIO.C index a9ce86e43ce1a89e1cb508c8e7abd8903aea8a9a..6aff9ed81e06d6d7578419172a584f261250f73f 100644 --- a/src/OpenFOAM/containers/Lists/PtrList/PtrListIO.C +++ b/src/OpenFOAM/containers/Lists/PtrList/PtrListIO.C @@ -35,7 +35,7 @@ template<class T> template<class INew> void Foam::PtrList<T>::read(Istream& is, const INew& inewt) { - is.fatalCheck("PtrList<T>::read(Istream&, const INew&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); diff --git a/src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C b/src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C index f06cd9770505f7b90ba3141204e4c7f0db0b01d8..7fc604b63d72a70ef2e3695ab5f92410ffe38a32 100644 --- a/src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C +++ b/src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -112,7 +112,7 @@ void Foam::ParSortableList<Type>::checkAndSend } { - OPstream toSlave(Pstream::blocking, destProci); + OPstream toSlave(Pstream::commsTypes::blocking, destProci); toSlave << values << indices; } } @@ -306,7 +306,7 @@ void Foam::ParSortableList<Type>::sort() Pout<< "Receiving from " << proci << endl; } - IPstream fromSlave(Pstream::blocking, proci); + IPstream fromSlave(Pstream::commsTypes::blocking, proci); fromSlave >> recValues >> recIndices; diff --git a/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectListIO.C b/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectListIO.C index f6a82069c20ba9231df739ffc1b0b3129098faa4..5e711c072411100c72b4f301242feaa2fe8accf7 100644 --- a/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectListIO.C +++ b/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectListIO.C @@ -120,9 +120,7 @@ Foam::Ostream& Foam::UIndirectList<T>::writeList } } - // Check state of IOstream - os.check("UIndirectList::writeList(Ostream&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/Lists/UList/UListIO.C b/src/OpenFOAM/containers/Lists/UList/UListIO.C index cd6d8cd6bf43cf3ec39b94f257a9694a2fe2888d..efb2ad3ffce3935884d40209ef04f8909eef907e 100644 --- a/src/OpenFOAM/containers/Lists/UList/UListIO.C +++ b/src/OpenFOAM/containers/Lists/UList/UListIO.C @@ -150,9 +150,7 @@ Foam::Ostream& Foam::UList<T>::writeList } } - // Check state of IOstream - os.check("UList<T>::writeList(Ostream&)"); - + os.check(FUNCTION_NAME); return os; } @@ -169,7 +167,7 @@ Foam::Ostream& Foam::operator<<(Foam::Ostream& os, const Foam::UList<T>& L) template<class T> Foam::Istream& Foam::operator>>(Istream& is, UList<T>& L) { - is.fatalCheck("operator>>(Istream&, UList<T>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); diff --git a/src/OpenFOAM/containers/Lists/UPtrList/UPtrListIO.C b/src/OpenFOAM/containers/Lists/UPtrList/UPtrListIO.C index 59657676136c666bb760e3e0e8ff85a01ba69bad..2852654dda0f7bf017089075463441f9e7d0044f 100644 --- a/src/OpenFOAM/containers/Lists/UPtrList/UPtrListIO.C +++ b/src/OpenFOAM/containers/Lists/UPtrList/UPtrListIO.C @@ -44,9 +44,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const UPtrList<T>& L) // Write end delimiter os << nl << decrIndent << indent << token::END_LIST << nl; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const UPtrList&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/containers/NamedEnum/NamedEnum.C b/src/OpenFOAM/containers/NamedEnum/NamedEnum.C deleted file mode 100644 index 89784a1400b731514148fcb57d313b9e3bd92c00..0000000000000000000000000000000000000000 --- a/src/OpenFOAM/containers/NamedEnum/NamedEnum.C +++ /dev/null @@ -1,142 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 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 "NamedEnum.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Enum, int nEnum> -Foam::NamedEnum<Enum, nEnum>::NamedEnum() -: - HashTable<int>(2*nEnum) -{ - for (int enumI = 0; enumI < nEnum; ++enumI) - { - if (!names[enumI] || names[enumI][0] == '\0') - { - stringList goodNames(enumI); - - for (int i = 0; i < enumI; ++i) - { - goodNames[i] = names[i]; - } - - FatalErrorInFunction - << "Illegal enumeration name at position " << enumI << endl - << "after entries " << goodNames << ".\n" - << "Possibly your NamedEnum<Enum, nEnum>::names array" - << " is not of size " << nEnum << endl - << abort(FatalError); - } - insert(names[enumI], enumI); - } -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Enum, int nEnum> -Enum Foam::NamedEnum<Enum, nEnum>::read(Istream& is) const -{ - const word name(is); - - HashTable<int>::const_iterator iter = find(name); - - if (!iter.found()) - { - FatalIOErrorInFunction(is) - << name << " is not in enumeration: " - << sortedToc() << exit(FatalIOError); - } - - return Enum(iter.object()); -} - - -template<class Enum, int nEnum> -void Foam::NamedEnum<Enum, nEnum>::write(const Enum e, Ostream& os) const -{ - os << operator[](e); -} - - -template<class Enum, int nEnum> -Foam::stringList Foam::NamedEnum<Enum, nEnum>::strings() -{ - stringList lst(nEnum); - - label nElem = 0; - for (int enumI = 0; enumI < nEnum; ++enumI) - { - if (names[enumI] && names[enumI][0]) - { - lst[nElem++] = names[enumI]; - } - } - - lst.setSize(nElem); - return lst; -} - - -template<class Enum, int nEnum> -Foam::wordList Foam::NamedEnum<Enum, nEnum>::words() -{ - wordList lst(nEnum); - - label nElem = 0; - for (int enumI = 0; enumI < nEnum; ++enumI) - { - if (names[enumI] && names[enumI][0]) - { - lst[nElem++] = names[enumI]; - } - } - - lst.setSize(nElem); - return lst; -} - - -template<class Enum, int nEnum> -Foam::List<Enum> Foam::NamedEnum<Enum, nEnum>::enums() -{ - List<Enum> lst(nEnum); - - label nElem = 0; - for (int enumI = 0; enumI < nEnum; ++enumI) - { - if (names[enumI] && names[enumI][0]) - { - lst[nElem++] = Enum(enumI); - } - } - - lst.setSize(nElem); - return lst; -} - - -// ************************************************************************* // diff --git a/src/OpenFOAM/containers/NamedEnum/NamedEnum.H b/src/OpenFOAM/containers/NamedEnum/NamedEnum.H deleted file mode 100644 index c96703ce29e64f3b681cc75b225447722bf73ee0..0000000000000000000000000000000000000000 --- a/src/OpenFOAM/containers/NamedEnum/NamedEnum.H +++ /dev/null @@ -1,141 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 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::NamedEnum - -Description - Initialise the NamedEnum HashTable from the static list of names. - -SourceFiles - NamedEnum.C - -\*---------------------------------------------------------------------------*/ - -#ifndef NamedEnum_H -#define NamedEnum_H - -#include "HashTable.H" -#include "stringList.H" -#include "wordList.H" -#include <type_traits> - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration -template<class Enum, int> class NamedEnum; - -/*---------------------------------------------------------------------------*\ - Class NamedEnum Declaration -\*---------------------------------------------------------------------------*/ - -template<class Enum, int nEnum> -class NamedEnum -: - public HashTable<int> -{ - //- nEnum must be positive (non-zero) - static_assert(nEnum > 0, "nEnum must be positive (non-zero)"); - - // Private Member Functions - - //- Disallow default bitwise copy construct - NamedEnum(const NamedEnum&) = delete; - - //- Disallow default bitwise assignment - void operator=(const NamedEnum&) = delete; - - -public: - - // Static data members - - //- The set of names corresponding to the enumeration Enum - static const char* names[nEnum]; - - - // Constructors - - //- Construct from names - NamedEnum(); - - - // Member Functions - - //- Read a word from Istream and return the corresponding - // enumeration element - Enum read(Istream&) const; - - //- Write the name representation of the enumeration to an Ostream - void write(const Enum e, Ostream&) const; - - //- The set of names as a list of strings - static stringList strings(); - - //- The set of names as a list of words - static wordList words(); - - //- List of enumerations - static List<Enum> enums(); - - - // Member Operators - - //- Return the enumeration element corresponding to the given name - const Enum operator[](const char* name) const - { - return Enum(HashTable<int>::operator[](name)); - } - - //- Return the enumeration element corresponding to the given name - const Enum operator[](const word& name) const - { - return Enum(HashTable<int>::operator[](name)); - } - - //- Return the name of the given enumeration element - const char* operator[](const Enum e) const - { - return names[e]; - } -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository - #include "NamedEnum.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.C b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.C index 9be1dc5eb3ee01ba0322f24e204a8b591a5d4298..b5e76852b55c4baa4b3c0c71121929c977db784f 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -83,7 +83,7 @@ void Foam::PstreamBuffers::finishedSends(const bool block) { finishedSendsCalled_ = true; - if (commsType_ == UPstream::nonBlocking) + if (commsType_ == UPstream::commsTypes::nonBlocking) { Pstream::exchange<DynamicList<char>, char> ( @@ -101,7 +101,7 @@ void Foam::PstreamBuffers::finishedSends(labelList& recvSizes, const bool block) { finishedSendsCalled_ = true; - if (commsType_ == UPstream::nonBlocking) + if (commsType_ == UPstream::commsTypes::nonBlocking) { Pstream::exchangeSizes(sendBuf_, recvSizes, comm_); diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.H b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.H index c6a0e33fb6cae9547efed2669cf165c70adb3aab..5fa34ad86fa5ee4a885b75dc231f085d164b0749 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.H +++ b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBuffers.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,7 +35,7 @@ Description Example usage: - PstreamBuffers pBuffers(Pstream::nonBlocking); + PstreamBuffers pBuffers(Pstream::commsTypes::nonBlocking); for (label proci = 0; proci < Pstream::nProcs(); proci++) { diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/UOPstream.C b/src/OpenFOAM/db/IOstreams/Pstreams/UOPstream.C index 8da4542de6424f5f97e9c659554acf16c13456d1..8e6a5eb17ada5019ea52033a0f7db1d33c9036c9 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/UOPstream.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/UOPstream.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -113,7 +113,7 @@ Foam::UOPstream::UOPstream(const int toProcNo, PstreamBuffers& buffers) sendBuf_(buffers.sendBuf_[toProcNo]), tag_(buffers.tag_), comm_(buffers.comm_), - sendAtDestruct_(buffers.commsType_ != UPstream::nonBlocking) + sendAtDestruct_(buffers.commsType_ != UPstream::commsTypes::nonBlocking) { setOpened(); setGood(); diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/UPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/UPstream.H index 513c9fe0366ad0f39da3a5b2c97811792e993939..d6a62e3af67800a13b8f727c6d79ac8536e0ed7e 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/UPstream.H +++ b/src/OpenFOAM/db/IOstreams/Pstreams/UPstream.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -62,7 +62,7 @@ class UPstream public: //- Types of communications - enum commsTypes + enum class commsTypes { blocking, scheduled, diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/UPstreamCommsStruct.C b/src/OpenFOAM/db/IOstreams/Pstreams/UPstreamCommsStruct.C index 10d8dd993ef6e059a28381aa98b11905eb5c8973..3bce29637a85d786c28879ef24b42a8d159f3ff8 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/UPstreamCommsStruct.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/UPstreamCommsStruct.C @@ -117,11 +117,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const UPstream::commsStruct& comm) << comm.allBelow_ << token::SPACE << comm.allNotBelow_; - os.check - ( - "Ostream& operator<<(Ostream&, const commsStruct&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C b/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C index 6403905ad65fb71eeb53c271b3b0ae94d261526c..e69cae6613cd065b837e5ab0882b148644f0ff36 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ void Foam::Pstream::combineGather T value; UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<char*>(&value), sizeof(T), @@ -83,7 +83,14 @@ void Foam::Pstream::combineGather } else { - IPstream fromBelow(UPstream::scheduled, belowID, 0, tag, comm); + IPstream fromBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); T value(fromBelow); if (debug & 2) @@ -109,7 +116,7 @@ void Foam::Pstream::combineGather { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<const char*>(&Value), sizeof(T), @@ -121,7 +128,7 @@ void Foam::Pstream::combineGather { OPstream toAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -189,7 +196,7 @@ void Foam::Pstream::combineScatter { UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<char*>(&Value), sizeof(T), @@ -201,7 +208,7 @@ void Foam::Pstream::combineScatter { IPstream fromAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -231,7 +238,7 @@ void Foam::Pstream::combineScatter { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<const char*>(&Value), sizeof(T), @@ -241,7 +248,14 @@ void Foam::Pstream::combineScatter } else { - OPstream toBelow(UPstream::scheduled, belowID, 0, tag, comm); + OPstream toBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); toBelow << Value; } } @@ -294,7 +308,7 @@ void Foam::Pstream::listCombineGather UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<char*>(receivedValues.begin()), receivedValues.byteSize(), @@ -315,7 +329,14 @@ void Foam::Pstream::listCombineGather } else { - IPstream fromBelow(UPstream::scheduled, belowID, 0, tag, comm); + IPstream fromBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); List<T> receivedValues(fromBelow); if (debug & 2) @@ -344,7 +365,7 @@ void Foam::Pstream::listCombineGather { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<const char*>(Values.begin()), Values.byteSize(), @@ -356,7 +377,7 @@ void Foam::Pstream::listCombineGather { OPstream toAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -424,7 +445,7 @@ void Foam::Pstream::listCombineScatter { UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<char*>(Values.begin()), Values.byteSize(), @@ -436,7 +457,7 @@ void Foam::Pstream::listCombineScatter { IPstream fromAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -466,7 +487,7 @@ void Foam::Pstream::listCombineScatter { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<const char*>(Values.begin()), Values.byteSize(), @@ -476,7 +497,14 @@ void Foam::Pstream::listCombineScatter } else { - OPstream toBelow(UPstream::scheduled, belowID, 0, tag, comm); + OPstream toBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); toBelow << Values; } } @@ -535,7 +563,14 @@ void Foam::Pstream::mapCombineGather { label belowID = myComm.below()[belowI]; - IPstream fromBelow(UPstream::scheduled, belowID, 0, tag, comm); + IPstream fromBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); Container receivedValues(fromBelow); if (debug & 2) @@ -575,7 +610,14 @@ void Foam::Pstream::mapCombineGather << " data:" << Values << endl; } - OPstream toAbove(UPstream::scheduled, myComm.above(), 0, tag, comm); + OPstream toAbove + ( + UPstream::commsTypes::scheduled, + myComm.above(), + 0, + tag, + comm + ); toAbove << Values; } } @@ -635,7 +677,7 @@ void Foam::Pstream::mapCombineScatter { IPstream fromAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -660,7 +702,14 @@ void Foam::Pstream::mapCombineScatter Pout<< " sending to " << belowID << " data:" << Values << endl; } - OPstream toBelow(UPstream::scheduled, belowID, 0, tag, comm); + OPstream toBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); toBelow << Values; } } diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C b/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C index 34114a29a4f2556bf7ebcb371c6e389f9e5c4baa..b100e6f80bb6f9504a50bf708e96d0afe5fef0a0 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C @@ -54,7 +54,7 @@ void Foam::Pstream::exchangeContainer { UIPstream::read ( - UPstream::nonBlocking, + UPstream::commsTypes::nonBlocking, proci, reinterpret_cast<char*>(recvBufs[proci].begin()), recvSizes[proci]*sizeof(T), @@ -76,7 +76,7 @@ void Foam::Pstream::exchangeContainer ( !UOPstream::write ( - UPstream::nonBlocking, + UPstream::commsTypes::nonBlocking, proci, reinterpret_cast<const char*>(sendBufs[proci].begin()), sendBufs[proci].size()*sizeof(T), @@ -128,7 +128,7 @@ void Foam::Pstream::exchangeBuf { UIPstream::read ( - UPstream::nonBlocking, + UPstream::commsTypes::nonBlocking, proci, recvBufs[proci], recvSizes[proci]*sizeof(T), @@ -150,7 +150,7 @@ void Foam::Pstream::exchangeBuf ( !UOPstream::write ( - UPstream::nonBlocking, + UPstream::commsTypes::nonBlocking, proci, sendBufs[proci], sendSizes[proci]*sizeof(T), diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C index 270c08fee57580256aaf48587cc4df6d6739ae2a..f3ab16463a870a242b180021bc93874e0342fb6b 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,7 +66,7 @@ void Pstream::gather { UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.below()[belowI], reinterpret_cast<char*>(&value), sizeof(T), @@ -78,7 +78,7 @@ void Pstream::gather { IPstream fromBelow ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.below()[belowI], 0, tag, @@ -97,7 +97,7 @@ void Pstream::gather { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<const char*>(&Value), sizeof(T), @@ -109,7 +109,7 @@ void Pstream::gather { OPstream toAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -163,7 +163,7 @@ void Pstream::scatter { UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<char*>(&Value), sizeof(T), @@ -175,7 +175,7 @@ void Pstream::scatter { IPstream fromAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -194,7 +194,7 @@ void Pstream::scatter { UOPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.below()[belowI], reinterpret_cast<const char*>(&Value), sizeof(T), @@ -206,7 +206,7 @@ void Pstream::scatter { OPstream toBelow ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.below()[belowI], 0, tag, diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C index 85db6d134a5523aafe422fb7c1e1edae76908289..c239ed2b8ba096b92bec75b21c2dd6e02be5d75b 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -79,7 +79,7 @@ void Pstream::gatherList UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<char*>(receivedValues.begin()), receivedValues.byteSize(), @@ -96,7 +96,14 @@ void Pstream::gatherList } else { - IPstream fromBelow(UPstream::scheduled, belowID, 0, tag, comm); + IPstream fromBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); fromBelow >> Values[belowID]; if (debug & 2) @@ -148,7 +155,7 @@ void Pstream::gatherList OPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<const char*>(sendingValues.begin()), sendingValues.byteSize(), @@ -160,7 +167,7 @@ void Pstream::gatherList { OPstream toAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -234,7 +241,7 @@ void Pstream::scatterList UIPstream::read ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), reinterpret_cast<char*>(receivedValues.begin()), receivedValues.byteSize(), @@ -251,7 +258,7 @@ void Pstream::scatterList { IPstream fromAbove ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, myComm.above(), 0, tag, @@ -290,7 +297,7 @@ void Pstream::scatterList OPstream::write ( - UPstream::scheduled, + UPstream::commsTypes::scheduled, belowID, reinterpret_cast<const char*>(sendingValues.begin()), sendingValues.byteSize(), @@ -300,7 +307,14 @@ void Pstream::scatterList } else { - OPstream toBelow(UPstream::scheduled, belowID, 0, tag, comm); + OPstream toBelow + ( + UPstream::commsTypes::scheduled, + belowID, + 0, + tag, + comm + ); // Send data destined for all other processors below belowID forAll(notBelowLeaves, leafI) diff --git a/src/OpenFOAM/db/IOstreams/gzstream/COPYING.LIB b/src/OpenFOAM/db/IOstreams/gzstream/COPYING.LIB index 583509c7efb656db082cb35c21f3c3c0d894585e..4490927b70269b77b8e2c6c4739b87cde40f8118 100644 --- a/src/OpenFOAM/db/IOstreams/gzstream/COPYING.LIB +++ b/src/OpenFOAM/db/IOstreams/gzstream/COPYING.LIB @@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. - + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -158,7 +158,7 @@ Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 @@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -267,7 +267,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -422,7 +422,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest @@ -500,5 +500,3 @@ necessary. Here is a sample; alter the names: Ty Coon, President of Vice That's all there is to it! - - diff --git a/src/OpenFOAM/db/IOstreams/token/tokenIO.C b/src/OpenFOAM/db/IOstreams/token/tokenIO.C index 2a2a8a70063a8ea0bab2d97bec26091e89fccac2..c35047408070a79e1656c8df70b2e37a07a11bfd 100644 --- a/src/OpenFOAM/db/IOstreams/token/tokenIO.C +++ b/src/OpenFOAM/db/IOstreams/token/tokenIO.C @@ -105,9 +105,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const token& t) << endl; } - // Check state of stream - os.check("Ostream& operator<<(Ostream&, const token&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index 6089aadbd7d015854675ee7b95f6ff7865827553..fbf6ebff65e0227479cf34d0b42c28066f6665ca 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -188,6 +188,8 @@ void Foam::Time::setControls() int oldPrecision = precision_; int requiredPrecision = -1; bool found = false; + word oldTime(timeName()); + for ( precision_ = maxPrecision_; @@ -198,6 +200,14 @@ void Foam::Time::setControls() // Update the time formatting setTime(startTime_, 0); + // Check that the time name has changed otherwise exit loop + word newTime(timeName()); + if (newTime == oldTime) + { + break; + } + oldTime = newTime; + // Check the existence of the time directory with the new format found = exists(timePath(), false); diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C index 7179fff46401bc7e460cff8662b53cf1d45343a4..86517390fa4829d1fa38822862ace291022e3c58 100644 --- a/src/OpenFOAM/db/Time/TimeIO.C +++ b/src/OpenFOAM/db/Time/TimeIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -348,6 +348,20 @@ void Foam::Time::readDict() ( controlDict_.lookup("writeCompression") ); + + if + ( + writeFormat_ == IOstream::BINARY + && writeCompression_ == IOstream::COMPRESSED + ) + { + IOWarningInFunction(controlDict_) + << "Selecting compressed binary is inefficient and ineffective" + ", resetting to uncompressed binary" + << endl; + + writeCompression_ = IOstream::UNCOMPRESSED; + } } controlDict_.readIfPresent("graphFormat", graphFormat_); diff --git a/src/OpenFOAM/db/Time/timeSelector.C b/src/OpenFOAM/db/Time/timeSelector.C index ecffc55dc9839f7b5d3e32416c9b593d7d833dc8..b6b6e4e66e18eb0a465215c7b5d2c7b7c7cbfdf7 100644 --- a/src/OpenFOAM/db/Time/timeSelector.C +++ b/src/OpenFOAM/db/Time/timeSelector.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -135,8 +135,12 @@ void Foam::timeSelector::addOptions argList::addBoolOption ( "noZero", - "exclude the '0/' dir from the times list, " - "has precedence over the -withZero option" + string("exclude the '0/' dir from the times list") + + ( + withZero + ? ", has precedence over the -withZero option" + : "" + ) ); argList::addBoolOption ( diff --git a/src/OpenFOAM/db/dictionary/dictionary.C b/src/OpenFOAM/db/dictionary/dictionary.C index c2ecd2292cba51e9450275939d5834f407ab7497..067fbb2c2bae49680560250f6841e3664fda0704 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/OpenFOAM/db/dictionary/dictionary.H b/src/OpenFOAM/db/dictionary/dictionary.H index 876be6ebba02dca07c3a0b800276cf7882590336..9a2296632b2ba723d6c314a6801d664af3ff09d1 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -204,7 +204,7 @@ class dictionary bool findInPatterns ( const bool patternMatch, - const word& keyword, + const word& Keyword, DLList<entry*>::const_iterator& wcLink, DLList<autoPtr<regExp>>::const_iterator& reLink ) const; @@ -213,7 +213,7 @@ class dictionary bool findInPatterns ( const bool patternMatch, - const word& keyword, + const word& Keyword, DLList<entry*>::iterator& wcLink, DLList<autoPtr<regExp>>::iterator& reLink ); @@ -363,6 +363,18 @@ public: bool patternMatch = true ) const; + //- Find and return a T, + // if not found throw a fatal error. + // If recursive, search parent dictionaries. + // If patternMatch, use regular expressions. + template<class T> + T lookupType + ( + const word&, + bool recursive=false, + bool patternMatch=true + ) const; + //- Find and return a T, or return the given default value // If recursive, search parent dictionaries. // If patternMatch, use regular expressions. @@ -438,7 +450,7 @@ public: //- Find and return a sub-dictionary if found // otherwise return this dictionary - const dictionary& optionalSubDict(const word& keyword) const; + const dictionary& optionalSubDict(const word&) const; //- Return the table of contents wordList toc() const; @@ -518,7 +530,7 @@ public: void set(const keyType& k, const T& t); //- Remove an entry specified by keyword - bool remove(const word& keyword); + bool remove(const word& Keyword); //- Change the keyword for an entry, // optionally forcing overwrite of an existing entry diff --git a/src/OpenFOAM/db/dictionary/dictionaryEntry/dictionaryEntryIO.C b/src/OpenFOAM/db/dictionary/dictionaryEntry/dictionaryEntryIO.C index 0b2c5315eccba1f8844f0f6d0f3684f8a6c266de..5a4feda30eb15d1e611e3882fe7192c117099c2d 100644 --- a/src/OpenFOAM/db/dictionary/dictionaryEntry/dictionaryEntryIO.C +++ b/src/OpenFOAM/db/dictionary/dictionaryEntry/dictionaryEntryIO.C @@ -38,11 +38,7 @@ Foam::dictionaryEntry::dictionaryEntry entry(keyType(is)), dictionary(parentDict, is) { - is.fatalCheck - ( - "dictionaryEntry::dictionaryEntry" - "(const dictionary& parentDict, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); } @@ -56,11 +52,7 @@ Foam::dictionaryEntry::dictionaryEntry entry(key), dictionary(key, parentDict, is) { - is.fatalCheck - ( - "dictionaryEntry::dictionaryEntry" - "(const keyType&, const dictionary& parentDict, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); } diff --git a/src/OpenFOAM/db/dictionary/dictionaryListEntry/dictionaryListEntryIO.C b/src/OpenFOAM/db/dictionary/dictionaryListEntry/dictionaryListEntryIO.C index 7d31932e9a106fbd4aa04bc958a44aa4c03dd64d..5043a206c22371f63f52b5c6de1572d76365dd22 100644 --- a/src/OpenFOAM/db/dictionary/dictionaryListEntry/dictionaryListEntryIO.C +++ b/src/OpenFOAM/db/dictionary/dictionaryListEntry/dictionaryListEntryIO.C @@ -115,8 +115,7 @@ void Foam::dictionaryListEntry::write(Ostream& os) const // Write end delimiter os << decrIndent << indent << token::END_LIST << nl; - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const dictionaryListEntry&)"); + os.check(FUNCTION_NAME); } diff --git a/src/OpenFOAM/db/dictionary/dictionaryTemplates.C b/src/OpenFOAM/db/dictionary/dictionaryTemplates.C index 5d2164e52be5c5a344c478255b727a3b7e35dd90..b247dfe8122647d5ea367c06b24a51d99628705e 100644 --- a/src/OpenFOAM/db/dictionary/dictionaryTemplates.C +++ b/src/OpenFOAM/db/dictionary/dictionaryTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,6 +28,30 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class T> +T Foam::dictionary::lookupType +( + const word& keyword, + bool recursive, + bool patternMatch +) const +{ + const entry* entryPtr = lookupEntryPtr(keyword, recursive, patternMatch); + + if (entryPtr == nullptr) + { + FatalIOErrorInFunction + ( + *this + ) << "keyword " << keyword << " is undefined in dictionary " + << name() + << exit(FatalIOError); + } + + return pTraits<T>(entryPtr->stream()); +} + + template<class T> T Foam::dictionary::lookupOrDefault ( diff --git a/src/OpenFOAM/db/dictionary/functionEntries/functionEntry/functionEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/functionEntry/functionEntry.C index f91ee70bf65d6c5f21b4d1a245d0860563d896c8..d72a67791f0cf02a34eecab3c15f3d47c01cac2c 100644 --- a/src/OpenFOAM/db/dictionary/functionEntries/functionEntry/functionEntry.C +++ b/src/OpenFOAM/db/dictionary/functionEntries/functionEntry/functionEntry.C @@ -84,11 +84,7 @@ bool Foam::functionEntry::execute Istream& is ) { - is.fatalCheck - ( - "functionEntry::execute" - "(const word& functionName, dictionary& parentDict, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); if (!executedictionaryIstreamMemberFunctionTablePtr_) { @@ -127,11 +123,7 @@ bool Foam::functionEntry::execute Istream& is ) { - is.fatalCheck - ( - "functionEntry::execute" - "(const word&, const dictionary&, primitiveEntry&, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); if (!executeprimitiveEntryIstreamMemberFunctionTablePtr_) { diff --git a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntryIO.C b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntryIO.C index 1c447e88abcbe44dadb7ccb65a88538ca226fa24..39580f5a4fe3e3f2b034335d44fb266c1b3c860f 100644 --- a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntryIO.C +++ b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntryIO.C @@ -91,10 +91,7 @@ bool Foam::primitiveEntry::expandFunction bool Foam::primitiveEntry::read(const dictionary& dict, Istream& is) { - is.fatalCheck - ( - "primitiveEntry::readData(const dictionary&, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); label blockCount = 0; token currToken; @@ -145,10 +142,7 @@ bool Foam::primitiveEntry::read(const dictionary& dict, Istream& is) } } - is.fatalCheck - ( - "primitiveEntry::readData(const dictionary&, Istream&)" - ); + is.fatalCheck(FUNCTION_NAME); if (currToken.good()) { diff --git a/src/OpenFOAM/db/regIOobject/regIOobjectRead.C b/src/OpenFOAM/db/regIOobject/regIOobjectRead.C index 72f76bbaca490bb6006725bf6e1187a77f52367c..8fa856d357d2fe13b6b3efa21b3736204a2afa78 100644 --- a/src/OpenFOAM/db/regIOobject/regIOobjectRead.C +++ b/src/OpenFOAM/db/regIOobject/regIOobjectRead.C @@ -104,7 +104,7 @@ bool Foam::regIOobject::read IPstream fromAbove ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, myComm.above(), 0, Pstream::msgType(), @@ -119,7 +119,7 @@ bool Foam::regIOobject::read { OPstream toBelow ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, myComm.below()[belowI], 0, Pstream::msgType(), diff --git a/src/OpenFOAM/dimensionSet/dimensionSetIO.C b/src/OpenFOAM/dimensionSet/dimensionSetIO.C index 7f7648e10d1e6a94541763e57a1d4cc7603e71eb..768acc8efc8569248b2c03789ab7cf0b45bb3a22 100644 --- a/src/OpenFOAM/dimensionSet/dimensionSetIO.C +++ b/src/OpenFOAM/dimensionSet/dimensionSetIO.C @@ -477,9 +477,8 @@ Foam::Istream& Foam::dimensionSet::read << exit(FatalIOError); } } - // Check state of Istream - is.check("Istream& operator>>(Istream&, dimensionSet&)"); + is.check(FUNCTION_NAME); return is; } @@ -617,9 +616,7 @@ Foam::Istream& Foam::dimensionSet::read } } - // Check state of Istream - is.check("Istream& operator>>(Istream&, dimensionSet&)"); - + is.check(FUNCTION_NAME); return is; } @@ -691,9 +688,7 @@ Foam::Ostream& Foam::dimensionSet::write os << token::END_SQR; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const dimensionSet&)"); - + os.check(FUNCTION_NAME); return os; } @@ -722,9 +717,7 @@ Foam::Istream& Foam::operator>>(Istream& is, dimensionSet& dset) << exit(FatalIOError); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, dimensionSet&)"); - + is.check(FUNCTION_NAME); return is; } @@ -734,9 +727,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const dimensionSet& dset) scalar multiplier; dset.write(os, multiplier); - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const dimensionSet&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedSphericalTensor/dimensionedSphericalTensor.H b/src/OpenFOAM/dimensionedTypes/dimensionedSphericalTensor/dimensionedSphericalTensor.H index 2ac54853a210c0bafc1fc60c4d190f7eb59e120e..7b2b331d8252a00b620da9e4c74912f217e0165a 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedSphericalTensor/dimensionedSphericalTensor.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedSphericalTensor/dimensionedSphericalTensor.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,4 +64,3 @@ dimensionedSphericalTensor inv(const dimensionedSphericalTensor&); #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H index 0fd1b882e721762834fa66c8097cd2b02506b7af..2797c807c72478ed4af3e46de9fec1d751a9f5bf 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,4 +86,3 @@ dimensionedTensor operator*(const dimensionedVector&); #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C index dca595c6a3e3ef4b34f26669c5c68f3726c21b19..d281845b9220af52708310f96d1b1af5dba0690b 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C +++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C @@ -339,12 +339,7 @@ Foam::dimensioned<Type>::read(Istream& is, const dictionary& readSet) is >> value_; value_ *= mult; - // Check state of Istream - is.check - ( - "Istream& dimensioned<Type>::read(Istream& is, const dictionary&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -367,13 +362,7 @@ Foam::Istream& Foam::dimensioned<Type>::read is >> value_; value_ *= mult; - // Check state of Istream - is.check - ( - "Istream& dimensioned<Type>::read" - "(Istream& is, const HashTable<dimensionedScalar>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -392,12 +381,7 @@ Foam::Istream& Foam::dimensioned<Type>::read(Istream& is) is >> value_; value_ *= mult; - // Check state of Istream - is.check - ( - "Istream& dimensioned<Type>::read(Istream& is)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -612,9 +596,7 @@ Foam::Istream& Foam::operator>>(Istream& is, dimensioned<Type>& dt) is >> dt.value_; dt.value_ *= multiplier; - // Check state of Istream - is.check("Istream& operator>>(Istream&, dimensioned<Type>&)"); - + is.check(FUNCTION_NAME); return is; } @@ -634,9 +616,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const dimensioned<Type>& dt) // Write the value os << dt.value()/mult; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const dimensioned<Type>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedVector/dimensionedVector.H b/src/OpenFOAM/dimensionedTypes/dimensionedVector/dimensionedVector.H index 4a93c36b3f64366b0a24a71e4a47e611079ca81f..657f6c4c462cfb28525f8edee5b600dd37ec910b 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedVector/dimensionedVector.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedVector/dimensionedVector.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,4 +56,3 @@ typedef dimensioned<vector> dimensionedVector; #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C index 5823ee3f57c1ea360c962e4119788cf50acd18d4..e4717cd7fecf18ee9a9d749e39859c49bd0388b4 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C @@ -80,7 +80,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(field), mesh_(mesh), - dimensions_(dims) + dimensions_(dims), + oriented_() { checkFieldSize(); } @@ -134,7 +135,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(GeoMesh::size(mesh)), mesh_(mesh), - dimensions_(dims) + dimensions_(dims), + oriented_() { if (checkIOFlags) { @@ -155,7 +157,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(GeoMesh::size(mesh), dt.value()), mesh_(mesh), - dimensions_(dt.dimensions()) + dimensions_(dt.dimensions()), + oriented_() { if (checkIOFlags) { @@ -173,7 +176,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(df), Field<Type>(df), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -187,7 +191,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(df, reuse), Field<Type>(df, reuse), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -200,7 +205,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(df(), true), Field<Type>(df), mesh_(df->mesh_), - dimensions_(df->dimensions_) + dimensions_(df->dimensions_), + oriented_(df->oriented_) {} @@ -218,7 +224,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField tdf.isTmp() ), mesh_(tdf().mesh_), - dimensions_(tdf().dimensions_) + dimensions_(tdf().dimensions_), + oriented_(tdf().oriented_) { tdf.clear(); } @@ -235,7 +242,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(df), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -250,7 +258,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io, df), Field<Type>(df, reuse), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -264,7 +273,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(newName, df, newName == df.name()), Field<Type>(df), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -279,7 +289,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(newName, df, true), Field<Type>(df, reuse), mesh_(df.mesh_), - dimensions_(df.dimensions_) + dimensions_(df.dimensions_), + oriented_(df.oriented_) {} @@ -293,7 +304,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(newName, df, true), Field<Type>(df), mesh_(df->mesh_), - dimensions_(df->dimensions_) + dimensions_(df->dimensions_), + oriented_(df->oriented_) {} @@ -312,7 +324,8 @@ DimensionedField<Type, GeoMesh>::DimensionedField tdf.isTmp() ), mesh_(tdf().mesh_), - dimensions_(tdf().dimensions_) + dimensions_(tdf().dimensions_), + oriented_(tdf().oriented_) { tdf.clear(); } @@ -487,6 +500,7 @@ void DimensionedField<Type, GeoMesh>::operator= checkField(*this, df, "="); dimensions_ = df.dimensions(); + oriented_ = df.oriented(); Field<Type>::operator=(df); } @@ -510,6 +524,7 @@ void DimensionedField<Type, GeoMesh>::operator= checkField(*this, df, "="); dimensions_ = df.dimensions(); + oriented_ = df.oriented(); this->transfer(const_cast<DimensionedField<Type, GeoMesh>&>(df)); tdf.clear(); } @@ -537,6 +552,7 @@ void DimensionedField<Type, GeoMesh>::operator op \ checkField(*this, df, #op); \ \ dimensions_ op df.dimensions(); \ + oriented_ op df.oriented(); \ Field<Type>::operator op(df); \ } \ \ diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H index b37c63724fcc35b71d80e2f131b78ede67087687..e37bcccc214413a624a3c6d3c39637f307da5775 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H @@ -41,6 +41,7 @@ SourceFiles #include "regIOobject.H" #include "Field.H" #include "dimensionedType.H" +#include "orientedType.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -65,7 +66,7 @@ template<class Type, class GeoMesh> Ostream& operator<< /*---------------------------------------------------------------------------*\ - Class DimensionedField Declaration + Class DimensionedField Declaration \*---------------------------------------------------------------------------*/ template<class Type, class GeoMesh> @@ -99,6 +100,9 @@ private: //- Dimension set for this field dimensionSet dimensions_; + //- Oriented flag + orientedType oriented_; + // Private Member Functions @@ -283,6 +287,15 @@ public: //- Return non-const access to dimensions inline dimensionSet& dimensions(); + //- Return oriented type + inline const orientedType& oriented() const; + + //- Return non-const access to the oriented type + inline orientedType& oriented(); + + //- Set the oriented flag + inline void setOriented(const bool oriented = true); + //- Return field inline const Field<Type>& field() const; diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldFunctionsM.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldFunctionsM.C index 6da09d945c4afbdddffaf9d023134f39a0e2f9a6..8e69d617454b145dbf6a30fb6f1f19305b3ddcba 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldFunctionsM.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldFunctionsM.C @@ -52,6 +52,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field()); \ \ + tRes.ref().oriented() = Dfunc(df1.oriented()); \ + \ return tRes; \ } \ \ @@ -75,6 +77,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field()); \ \ + tRes.ref().oriented() = Dfunc(df1.oriented()); \ + \ tdf1.clear(); \ \ return tRes; \ @@ -108,6 +112,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field()); \ \ + tRes.ref().oriented() = Dfunc(df1.oriented()); \ + \ return tRes; \ } \ \ @@ -131,6 +137,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field()); \ \ + tRes.ref().oriented() = Dfunc(df1.oriented()); \ + \ tdf1.clear(); \ \ return tRes; \ @@ -165,6 +173,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \ + \ return tRes; \ } \ \ @@ -189,6 +199,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \ + \ tdf2.clear(); \ \ return tRes; \ @@ -215,6 +227,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \ + \ tdf1.clear(); \ \ return tRes; \ @@ -244,6 +258,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \ + \ tdf1.clear(); \ tdf2.clear(); \ \ @@ -279,6 +295,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), dt1.value(), df2.field()); \ \ + tRes.ref().oriented() = df2.oriented(); \ + \ return tRes; \ } \ \ @@ -314,6 +332,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), dt1.value(), df2.field()); \ \ + tRes.ref().oriented() = df2.oriented(); \ + \ tdf2.clear(); \ \ return tRes; \ @@ -356,6 +376,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), dt2.value()); \ \ + tRes.ref().oriented() = df1.oriented(); \ + \ return tRes; \ } \ \ @@ -391,6 +413,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \ \ Func(tRes.ref().field(), df1.field(), dt2.value()); \ \ + tRes.ref().oriented() = df1.oriented(); \ + \ tdf1.clear(); \ \ return tRes; \ @@ -440,6 +464,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \ + \ return tRes; \ } \ \ @@ -464,6 +490,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \ + \ tdf2.clear(); \ \ return tRes; \ @@ -490,6 +518,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \ + \ tdf1.clear(); \ \ return tRes; \ @@ -519,6 +549,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \ \ + tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \ + \ tdf1.clear(); \ tdf2.clear(); \ \ @@ -528,7 +560,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \ +#define BINARY_TYPE_OPERATOR_SF(ReturnType, Type1, Type2, Op, OpName, OpFunc) \ \ TEMPLATE \ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ @@ -552,6 +584,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ ) \ ); \ \ + tRes.ref().oriented() = df2.oriented(); \ + \ Foam::OpFunc(tRes.ref().field(), dt1.value(), df2.field()); \ \ return tRes; \ @@ -589,6 +623,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), dt1.value(), tdf2().field()); \ \ + tRes.ref().oriented() = df2.oriented(); \ + \ tdf2.clear(); \ \ return tRes; \ @@ -605,7 +641,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ } -#define BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc) \ +#define BINARY_TYPE_OPERATOR_FS(ReturnType, Type1, Type2, Op, OpName, OpFunc) \ \ TEMPLATE \ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ @@ -631,6 +667,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), df1.field(), dt2.value()); \ \ + tRes.ref().oriented() = df1.oriented(); \ + \ return tRes; \ } \ \ @@ -666,6 +704,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \ \ Foam::OpFunc(tRes.ref().field(), tdf1().field(), dt2.value()); \ \ + tRes.ref().oriented() = df1.oriented(); \ + \ tdf1.clear(); \ \ return tRes; \ diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldI.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldI.H index 64cfd315895bc29de04ac1b18ceb88dc4e2b8fd3..b4a5b5d8b5afdca66c34240db825b06be1b9a2bd 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldI.H +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldI.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -48,14 +48,39 @@ Foam::DimensionedField<Type, GeoMesh>::dimensions() const return dimensions_; } + template<class Type, class GeoMesh> -inline Foam::dimensionSet& -Foam::DimensionedField<Type, GeoMesh>::dimensions() +inline Foam::dimensionSet& Foam::DimensionedField<Type, GeoMesh>::dimensions() { return dimensions_; } +template<class Type, class GeoMesh> +inline const Foam::orientedType& +Foam::DimensionedField<Type, GeoMesh>::oriented() const +{ + return oriented_; +} + + +template<class Type, class GeoMesh> +inline Foam::orientedType& Foam::DimensionedField<Type, GeoMesh>::oriented() +{ + return oriented_; +} + + +template<class Type, class GeoMesh> +inline void Foam::DimensionedField<Type, GeoMesh>::setOriented +( + const bool oriented +) +{ + oriented_.setOriented(oriented); +} + + template<class Type, class GeoMesh> inline const Foam::Field<Type>& Foam::DimensionedField<Type, GeoMesh>::field() const @@ -63,6 +88,7 @@ Foam::DimensionedField<Type, GeoMesh>::field() const return *this; } + template<class Type, class GeoMesh> inline Foam::Field<Type>& Foam::DimensionedField<Type, GeoMesh>::field() diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C index 74da71025c3122c36fe03cdb041c232f742a9b6f..9ecc2a0ff43cda42a64f4d60f313309b8044ca33 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedFieldIO.C @@ -37,6 +37,7 @@ void Foam::DimensionedField<Type, GeoMesh>::readField ) { dimensions_.reset(dimensionSet(fieldDict.lookup("dimensions"))); + oriented_.read(fieldDict); Field<Type> f(fieldDictEntry, fieldDict, GeoMesh::size(mesh_)); this->transfer(f); @@ -74,7 +75,8 @@ Foam::DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(0), mesh_(mesh), - dimensions_(dimless) + dimensions_(dimless), + oriented_() { readField(dictionary(readStream(typeName)), fieldDictEntry); } @@ -92,7 +94,8 @@ Foam::DimensionedField<Type, GeoMesh>::DimensionedField regIOobject(io), Field<Type>(0), mesh_(mesh), - dimensions_(dimless) + dimensions_(dimless), + oriented_() { readField(fieldDict, fieldDictEntry); } @@ -107,19 +110,15 @@ bool Foam::DimensionedField<Type, GeoMesh>::writeData const word& fieldDictEntry ) const { - os.writeKeyword("dimensions") << dimensions() << token::END_STATEMENT - << nl << nl; + os.writeEntry("dimensions", dimensions()); + oriented_.writeEntry(os); - Field<Type>::writeEntry(fieldDictEntry, os); + os<< nl << nl; - // Check state of Ostream - os.check - ( - "bool DimensionedField<Type, GeoMesh>::writeData" - "(Ostream& os, const word& fieldDictEntry) const" - ); + Field<Type>::writeEntry(fieldDictEntry, os); - return (os.good()); + os.check(FUNCTION_NAME); + return os.good(); } diff --git a/src/OpenFOAM/fields/FieldFields/FieldField/FieldFieldFunctionsM.C b/src/OpenFOAM/fields/FieldFields/FieldField/FieldFieldFunctionsM.C index a32972d21a13561fa1cd0318cda272cff1287a7a..4160f382ab809bf4e62e95189d297cba14bad754 100644 --- a/src/OpenFOAM/fields/FieldFields/FieldField/FieldFieldFunctionsM.C +++ b/src/OpenFOAM/fields/FieldFields/FieldField/FieldFieldFunctionsM.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -206,44 +206,44 @@ TEMPLATE \ void Func \ ( \ FieldField<Field, ReturnType>& f, \ - const FieldField<Field, Type1>& f1, \ - const Type2& s \ + const Type1& s, \ + const FieldField<Field, Type2>& f2 \ ) \ { \ forAll(f, i) \ { \ - Func(f[i], f1[i], s); \ + Func(f[i], s, f2[i]); \ } \ } \ \ TEMPLATE \ tmp<FieldField<Field, ReturnType>> Func \ ( \ - const FieldField<Field, Type1>& f1, \ - const Type2& s \ + const Type1& s, \ + const FieldField<Field, Type2>& f2 \ ) \ { \ tmp<FieldField<Field, ReturnType>> tRes \ ( \ - FieldField<Field, Type1>::NewCalculatedType(f1) \ + FieldField<Field, Type2>::NewCalculatedType(f2) \ ); \ - Func(tRes.ref(), f1, s); \ + Func(tRes.ref(), s, f2); \ return tRes; \ } \ \ TEMPLATE \ tmp<FieldField<Field, ReturnType>> Func \ ( \ - const tmp<FieldField<Field, Type1>>& tf1, \ - const Type2& s \ + const Type1& s, \ + const tmp<FieldField<Field, Type2>>& tf2 \ ) \ { \ tmp<FieldField<Field, ReturnType>> tRes \ ( \ - reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \ + reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \ ); \ - Func(tRes.ref(), tf1(), s); \ - tf1.clear(); \ + Func(tRes.ref(), s, tf2()); \ + tf2.clear(); \ return tRes; \ } @@ -254,44 +254,44 @@ TEMPLATE \ void Func \ ( \ FieldField<Field, ReturnType>& f, \ - const Type1& s, \ - const FieldField<Field, Type2>& f2 \ + const FieldField<Field, Type1>& f1, \ + const Type2& s \ ) \ { \ forAll(f, i) \ { \ - Func(f[i], s, f2[i]); \ + Func(f[i], f1[i], s); \ } \ } \ \ TEMPLATE \ tmp<FieldField<Field, ReturnType>> Func \ ( \ - const Type1& s, \ - const FieldField<Field, Type2>& f2 \ + const FieldField<Field, Type1>& f1, \ + const Type2& s \ ) \ { \ tmp<FieldField<Field, ReturnType>> tRes \ ( \ - FieldField<Field, Type2>::NewCalculatedType(f2) \ + FieldField<Field, Type1>::NewCalculatedType(f1) \ ); \ - Func(tRes.ref(), s, f2); \ + Func(tRes.ref(), f1, s); \ return tRes; \ } \ \ TEMPLATE \ tmp<FieldField<Field, ReturnType>> Func \ ( \ - const Type1& s, \ - const tmp<FieldField<Field, Type2>>& tf2 \ + const tmp<FieldField<Field, Type1>>& tf1, \ + const Type2& s \ ) \ { \ tmp<FieldField<Field, ReturnType>> tRes \ ( \ - reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \ + reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \ ); \ - Func(tRes.ref(), s, tf2()); \ - tf2.clear(); \ + Func(tRes.ref(), tf1(), s); \ + tf1.clear(); \ return tRes; \ } diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C index f60ed5047b5ad7b94800058aa22e4470de4224bd..f6ca2a766c6e02a958545682b2fa1bccd38e7b6f 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.C +++ b/src/OpenFOAM/fields/Fields/Field/Field.C @@ -28,7 +28,6 @@ License #include "dictionary.H" #include "contiguous.H" #include "mapDistributeBase.H" -#include "flipOp.H" // * * * * * * * * * * * * * * * Static Members * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/fields/Fields/zeroField/zeroField.H b/src/OpenFOAM/fields/Fields/zeroField/zeroField.H index f8e53959e631fa94c4fb34170122e8f579b3c5f0..15f25f504db759b30dedd4ff1c2815a86925f4a0 100644 --- a/src/OpenFOAM/fields/Fields/zeroField/zeroField.H +++ b/src/OpenFOAM/fields/Fields/zeroField/zeroField.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,6 +66,10 @@ public: inline scalar operator[](const label) const; inline zeroField field() const; + + inline zeroField operator()() const; + + inline zeroField operator-() const; }; diff --git a/src/OpenFOAM/fields/Fields/zeroField/zeroFieldI.H b/src/OpenFOAM/fields/Fields/zeroField/zeroFieldI.H index fb63a48bf9e13e7764ee7d4fadf6fe650d724824..59287815fd55259380c13407362806c15e5f1808 100644 --- a/src/OpenFOAM/fields/Fields/zeroField/zeroFieldI.H +++ b/src/OpenFOAM/fields/Fields/zeroField/zeroFieldI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,4 +39,80 @@ inline Foam::zeroField Foam::zeroField::field() const } +inline Foam::zeroField Foam::zeroField::operator()() const +{ + return zeroField(); +} + + +inline Foam::zeroField Foam::zeroField::operator-() const +{ + return zeroField(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +inline const zeroField operator+(const zeroField&, const zeroField&) +{ + return zeroField(); +} + +template<class Type> +inline const Type& operator+(const Type& t, const zeroField&) +{ + return t; +} + +template<class Type> +inline const Type& operator+(const zeroField&, const Type& t) +{ + return t; +} + +inline const zeroField operator-(const zeroField&, const zeroField&) +{ + return zeroField(); +} + +template<class Type> +inline const Type& operator-(const Type& t, const zeroField&) +{ + return t; +} + +template<class Type> +inline Type operator-(const zeroField&, const Type& t) +{ + return -t; +} + +template<class Type> +inline zeroField operator*(const Type& t, const zeroField&) +{ + return zeroField(); +} + +template<class Type> +inline zeroField operator*(const zeroField&, const Type& t) +{ + return zeroField(); +} + +template<class Type> +inline zeroField operator/(const zeroField&, const Type& t) +{ + return zeroField(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + // ************************************************************************* // diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricBoundaryField.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricBoundaryField.C index 5eb896084adcb2ae4070650341d0fd8915d0fdb1..c37fcf3fda48345a134cbdf1165368497e58c889 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricBoundaryField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricBoundaryField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -422,8 +422,8 @@ evaluate() if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { label nReq = Pstream::nRequests(); @@ -437,7 +437,7 @@ evaluate() if ( Pstream::parRun() - && Pstream::defaultCommsType == Pstream::nonBlocking + && Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { Pstream::waitRequests(nReq); @@ -448,7 +448,7 @@ evaluate() this->operator[](patchi).evaluate(Pstream::defaultCommsType); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = bmesh_.mesh().globalData().patchSchedule(); @@ -458,12 +458,12 @@ evaluate() if (patchSchedule[patchEvali].init) { this->operator[](patchSchedule[patchEvali].patch) - .initEvaluate(Pstream::scheduled); + .initEvaluate(Pstream::commsTypes::scheduled); } else { this->operator[](patchSchedule[patchEvali].patch) - .evaluate(Pstream::scheduled); + .evaluate(Pstream::commsTypes::scheduled); } } } @@ -573,12 +573,7 @@ writeEntry(const word& keyword, Ostream& os) const this->writeEntries(os); os.endBlock() << flush; - // Check state of IOstream - os.check - ( - "GeometricField<Type, PatchField, GeoMesh>::Boundary::" - "writeEntry(const word& keyword, Ostream& os) const" - ); + os.check(FUNCTION_NAME); } diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C index e7d6ea91402d1fde6091a64fc9ef35f886fd09bd..c985a3135f6af3720c87d3091ef4e36bc3146c14 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1175,12 +1175,20 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::operator= // Only assign field contents not ID this->dimensions() = gf.dimensions(); + this->oriented() = gf.oriented(); - // Transfer the storage from the tmp - primitiveFieldRef().transfer - ( - const_cast<Field<Type>&>(gf.primitiveField()) - ); + if (tgf.isTmp()) + { + // Transfer the storage from the tmp + primitiveFieldRef().transfer + ( + const_cast<Field<Type>&>(gf.primitiveField()) + ); + } + else + { + primitiveFieldRef() = gf.primitiveField(); + } boundaryFieldRef() = gf.boundaryField(); @@ -1239,7 +1247,7 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::operator op \ { \ checkField(*this, gf, #op); \ \ - ref() op gf(); \ + ref() op gf(); \ boundaryFieldRef() op gf.boundaryField(); \ } \ \ @@ -1259,7 +1267,7 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::operator op \ const dimensioned<TYPE>& dt \ ) \ { \ - ref() op dt; \ + ref() op dt; \ boundaryFieldRef() op dt.value(); \ } @@ -1284,14 +1292,8 @@ Foam::Ostream& Foam::operator<< os << nl; gf.boundaryField().writeEntry("boundaryField", os); - // Check state of IOstream - os.check - ( - "Ostream& operator<<(Ostream&, " - "const GeometricField<Type, PatchField, GeoMesh>&)" - ); - - return (os); + os.check(FUNCTION_NAME); + return os; } diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctions.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctions.C index 49a7ce2d62202ceaa566ae33c7fd9a2496e5141d..4113b1d752b68430395af1e3d0231123cd9eb69a 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctions.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctions.C @@ -51,6 +51,7 @@ void component { component(gcf.primitiveFieldRef(), gf.primitiveField(), d); component(gcf.boundaryFieldRef(), gf.boundaryField(), d); + gcf.oriented() = gf.oriented(); } @@ -63,6 +64,7 @@ void T { T(gf.primitiveFieldRef(), gf1.primitiveField()); T(gf.boundaryFieldRef(), gf1.boundaryField()); + gf.oriented() = gf1.oriented(); } @@ -81,6 +83,7 @@ void pow { pow(gf.primitiveFieldRef(), gf1.primitiveField(), r); pow(gf.boundaryFieldRef(), gf1.boundaryField(), r); + gf.oriented() = pow(gf1.oriented(), r); } template @@ -175,6 +178,7 @@ void sqr { sqr(gf.primitiveFieldRef(), gf1.primitiveField()); sqr(gf.boundaryFieldRef(), gf1.boundaryField()); + gf.oriented() = sqr(gf1.oriented()); } template<class Type, template<class> class PatchField, class GeoMesh> @@ -263,6 +267,7 @@ void magSqr { magSqr(gsf.primitiveFieldRef(), gf.primitiveField()); magSqr(gsf.boundaryFieldRef(), gf.boundaryField()); + gsf.oriented() = magSqr(gf.oriented()); } template<class Type, template<class> class PatchField, class GeoMesh> @@ -335,6 +340,7 @@ void mag { mag(gsf.primitiveFieldRef(), gf.primitiveField()); mag(gsf.boundaryFieldRef(), gf.boundaryField()); + gsf.oriented() = mag(gf.oriented()); } template<class Type, template<class> class PatchField, class GeoMesh> @@ -412,6 +418,7 @@ void cmptAv { cmptAv(gcf.primitiveFieldRef(), gf.primitiveField()); cmptAv(gcf.boundaryFieldRef(), gf.boundaryField()); + gcf.oriented() = cmptAv(gf.oriented()); } template<class Type, template<class> class PatchField, class GeoMesh> @@ -611,6 +618,8 @@ void opFunc \ gf1.boundaryField(), \ gf2.boundaryField() \ ); \ + \ + gf.oriented() = gf1.oriented() op gf2.oriented(); \ } \ \ template \ @@ -757,6 +766,7 @@ void opFunc \ { \ Foam::opFunc(gf.primitiveFieldRef(), gf1.primitiveField(), dvs.value()); \ Foam::opFunc(gf.boundaryFieldRef(), gf1.boundaryField(), dvs.value()); \ + gf.oriented() = gf1.oriented(); \ } \ \ template \ @@ -870,6 +880,7 @@ void opFunc \ { \ Foam::opFunc(gf.primitiveFieldRef(), dvs.value(), gf1.primitiveField()); \ Foam::opFunc(gf.boundaryFieldRef(), dvs.value(), gf1.boundaryField()); \ + gf.oriented() = gf1.oriented(); \ } \ \ template \ diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctionsM.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctionsM.C index 377339dae972d2c59c39574d9f129392b9ac405e..9ff2ed8639cca3cd015240e441ce8c9249b7a23e 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctionsM.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricFieldFunctionsM.C @@ -43,6 +43,7 @@ void Func \ { \ Foam::Func(res.primitiveFieldRef(), gf1.primitiveField()); \ Foam::Func(res.boundaryFieldRef(), gf1.boundaryField()); \ + res.oriented() = gf1.oriented(); \ } \ \ TEMPLATE \ @@ -112,6 +113,7 @@ void OpFunc \ { \ Foam::OpFunc(res.primitiveFieldRef(), gf1.primitiveField()); \ Foam::OpFunc(res.boundaryFieldRef(), gf1.boundaryField()); \ + res.oriented() = gf1.oriented(); \ } \ \ TEMPLATE \ @@ -192,6 +194,7 @@ void Func \ gf1.boundaryField(), \ gf2.boundaryField() \ ); \ + res.oriented() = Func(gf1.oriented(), gf2.oriented()); \ } \ \ TEMPLATE \ @@ -320,6 +323,7 @@ void Func \ { \ Foam::Func(res.primitiveFieldRef(), dt1.value(), gf2.primitiveField()); \ Foam::Func(res.boundaryFieldRef(), dt1.value(), gf2.boundaryField()); \ + res.oriented() = gf2.oriented(); \ } \ \ TEMPLATE \ @@ -411,6 +415,7 @@ void Func \ { \ Foam::Func(res.primitiveFieldRef(), gf1.primitiveField(), dt2.value()); \ Foam::Func(res.boundaryFieldRef(), gf1.boundaryField(), dt2.value()); \ + res.oriented() = gf1.oriented(); \ } \ \ TEMPLATE \ @@ -511,6 +516,7 @@ void OpFunc \ (res.primitiveFieldRef(), gf1.primitiveField(), gf2.primitiveField()); \ Foam::OpFunc \ (res.boundaryFieldRef(), gf1.boundaryField(), gf2.boundaryField()); \ + res.oriented() = gf1.oriented() Op gf2.oriented(); \ } \ \ TEMPLATE \ @@ -639,6 +645,8 @@ void OpFunc \ { \ Foam::OpFunc(res.primitiveFieldRef(), dt1.value(), gf2.primitiveField()); \ Foam::OpFunc(res.boundaryFieldRef(), dt1.value(), gf2.boundaryField()); \ + res.oriented() = gf2.oriented(); \ + \ } \ \ TEMPLATE \ @@ -730,6 +738,7 @@ void OpFunc \ { \ Foam::OpFunc(res.primitiveFieldRef(), gf1.primitiveField(), dt2.value()); \ Foam::OpFunc(res.boundaryFieldRef(), gf1.boundaryField(), dt2.value()); \ + res.oriented() = gf1.oriented(); \ } \ \ TEMPLATE \ diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H b/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H index 93a47eda9fe07e933a2c699b299ebf86e72d7f9d..864318a4b0015dbff681a43458300afbb848d7df 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -51,7 +51,7 @@ public: void operator() ( - Field<Type>& field, + DimensionedField<Type, GeoMesh>& field, const MeshMapper& mapper ) const; }; @@ -72,10 +72,12 @@ void MapGeometricFields const MeshMapper& mapper ) { - HashTable<const GeometricField<Type, PatchField, GeoMesh>*> fields + typedef GeometricField<Type, PatchField, GeoMesh> FieldType; + + HashTable<const FieldType*> fields ( mapper.thisDb().objectRegistry::template - lookupClass<GeometricField<Type, PatchField, GeoMesh>>() + lookupClass<FieldType>() ); // It is necessary to enforce that all old-time fields are stored @@ -83,17 +85,9 @@ void MapGeometricFields // old-time-level field is mapped before the field itself, sizes // will not match. - for - ( - typename HashTable<const GeometricField<Type, PatchField, GeoMesh>*>:: - iterator fieldIter = fields.begin(); - fieldIter != fields.end(); - ++fieldIter - ) + forAllConstIter(typename HashTable<const FieldType*>, fields, fieldIter) { - GeometricField<Type, PatchField, GeoMesh>& field = - const_cast<GeometricField<Type, PatchField, GeoMesh>&> - (*fieldIter()); + FieldType& field = const_cast<FieldType&>(*fieldIter()); //Note: check can be removed once pointFields are actually stored on // the pointMesh instead of now on the polyMesh! @@ -103,17 +97,9 @@ void MapGeometricFields } } - for - ( - typename HashTable<const GeometricField<Type, PatchField, GeoMesh>*>:: - iterator fieldIter = fields.begin(); - fieldIter != fields.end(); - ++fieldIter - ) + forAllConstIter(typename HashTable<const FieldType*>, fields, fieldIter) { - GeometricField<Type, PatchField, GeoMesh>& field = - const_cast<GeometricField<Type, PatchField, GeoMesh>&> - (*fieldIter()); + FieldType& field = const_cast<FieldType&>(*fieldIter()); if (&field.mesh() == &mapper.mesh()) { @@ -124,15 +110,11 @@ void MapGeometricFields } // Map the internal field - MapInternalField<Type, MeshMapper, GeoMesh>() - ( - field.primitiveFieldRef(), - mapper - ); + MapInternalField<Type, MeshMapper, GeoMesh>()(field.ref(), mapper); // Map the patch fields - typename GeometricField<Type, PatchField, GeoMesh> - ::Boundary& bfield = field.boundaryFieldRef(); + typename FieldType::Boundary& bfield = field.boundaryFieldRef(); + forAll(bfield, patchi) { // Cannot check sizes for patch fields because of diff --git a/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroField.H b/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroField.H index 0eb7c87235d0cfc6fb79e7d10599d8383ba18c30..2a9b4fe591a84ff83c9dea70acd8e6d47e101222 100644 --- a/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroField.H +++ b/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -72,6 +72,8 @@ public: inline zeroField field() const; + inline zeroField operator()() const; + inline zeroField oldTime() const; inline zeroFieldField boundaryField() const; @@ -84,7 +86,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - #include "geometricZeroFieldI.H" +#include "geometricZeroFieldI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroFieldI.H b/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroFieldI.H index d6188702d58937a8d260261dd045e66395021dd6..ca5d89f3f05b5a2ece4f3326acb712632ef94c2e 100644 --- a/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroFieldI.H +++ b/src/OpenFOAM/fields/GeometricFields/geometricZeroField/geometricZeroFieldI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,6 +42,11 @@ inline Foam::zeroField Foam::geometricZeroField::field() const return zeroField(); } +inline Foam::zeroField Foam::geometricZeroField::operator()() const +{ + return zeroField(); +} + inline Foam::zeroField Foam::geometricZeroField::oldTime() const { return zeroField(); diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H index 3529c77b7d7bb784fa9c66e4dd189f5599400ff4..115081596eeb2da32164d2a8e387036a43fb0c01 100644 --- a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -124,7 +124,8 @@ public: //- Update the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); }; diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H index d9cac6941f4a689c091807750caa5ed5e366b4c3..19e9be93c81d8caeec93d1d84046319405bf2655 100644 --- a/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/basic/coupled/coupledPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -116,7 +116,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) = 0; //- Initialise swap of patch point values diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H index 298eabeecb7084e4ee202f631d6ad616381b2cc8..3058b8e5b0b257e0561433a481da802b98fcfe02 100644 --- a/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/basic/value/valuePointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -162,7 +162,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H index 50b4afbe68ee6596b006b3f9941fcd2808dca94b..af0e4c24c6d8e2f6a1f329171acdaf3bf8f85ff2 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -161,7 +161,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H index 22b39163eb4d7b592020c4f96984dd05b58fb3b8..aa55cd242ffe153f58e1b78444cdd5582794fdff 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -122,14 +122,11 @@ public: // Member functions - // Evaluation functions - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); - + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); }; diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H index b6ef3e2a8c9b583b38b57a6d1f66b846762e9982..84710c325b7c94b22ff01201a99e9098ea9632b3 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -122,14 +122,11 @@ public: // Member functions - // Evaluation functions - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); - + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); }; diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H index c8028b47107f512c6dfdf62b91ddd2451d7c569a..3db9be39c2be85f6124ac9183e4f6dfa2ee03f3a 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -157,7 +157,7 @@ public: } - //- Constraint handling + // Constraint handling //- Return the constraint type this pointPatchField implements virtual const word& constraintType() const @@ -171,7 +171,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.C index 74707a9a93e8dfade08fbfcf13982c1e7b1b0165..aac70da39ff1321d01386809778d8a3e3593b272 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.C +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -113,7 +113,7 @@ void Foam::processorCyclicPointPatchField<Type>::initSwapAddSeparated ) ); - if (commsType == Pstream::nonBlocking) + if (commsType == Pstream::commsTypes::nonBlocking) { receiveBuf_.setSize(pf.size()); IPstream::read @@ -149,7 +149,7 @@ void Foam::processorCyclicPointPatchField<Type>::swapAddSeparated if (Pstream::parRun()) { // If nonblocking data has already been received into receiveBuf_ - if (commsType != Pstream::nonBlocking) + if (commsType != Pstream::commsTypes::nonBlocking) { receiveBuf_.setSize(this->size()); IPstream::read diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H index 2859591bed104b156ab7b5f2a0ac03f36f99a346..656f6991475cf37468422db2c0c058860d3eaee6 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processorCyclic/processorCyclicPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -166,7 +166,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H index acbba86d2102220f1e6895f0c61384f4bfd4c199..ded2b84a1f94cc5562e526823737e7646c342009 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -134,13 +134,11 @@ public: return symmetryPlanePointPatch::typeName; } - // Evaluation functions - - //- Update the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Update the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); }; diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H index e14fb992e60a876512722b4cd6755cc43ca3ec86..c0863d4394011a3f5fe47cb4cdd79913dc299d5c 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -122,21 +122,17 @@ public: // Member functions - //- Constraint handling - - //- Return the constraint type this pointPatchField implements - virtual const word& constraintType() const - { - return type(); - } - - // Evaluation functions + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return type(); + } - //- Update the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Update the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); }; diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H index 49e206709bbb438d64f77e7df6518b404f5ab4de..f75db6282bf18ad400eae12bdb13eef13e597492 100644 --- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -231,7 +231,7 @@ public: //- Evaluate the patch field, sets Updated to false virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking ); //- Write diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H index cff5af3d6e7ed3381a45f8f5dbb58b18e0550b73..d57b68a58b3af4056cb5d61ec9e7f7d8966c5038 100644 --- a/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/derived/fixedNormalSlip/fixedNormalSlipPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,14 +139,11 @@ public: // Member functions - // Evaluation functions - - //- Update the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); - + //- Update the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); //- Write virtual void write(Ostream&) const; diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.C index 53a26f00ba328e93a55bbc163b719a9a16ee792a..2c98caa0e5cc105e311e4099b8a81eabc27ed4a2 100644 --- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.C +++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.C @@ -329,7 +329,7 @@ Foam::Ostream& Foam::operator<< { ptf.write(os); - os.check("Ostream& operator<<(Ostream&, const pointPatchField<Type>&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H index 34b0e6336ef4e310c967188e37ae1becd443033e..b4ac7f2dc8d425778cbbcfa24875c3dd82d98f7a 100644 --- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -418,14 +418,16 @@ public: //- Initialise evaluation of the patch field (do nothing) virtual void initEvaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C index a869e791f35fd195747fcde4f382db31b3f6e722..72215bc0a03341c09cddebc145d9aac534f2e9bb 100644 --- a/src/OpenFOAM/global/argList/argList.C +++ b/src/OpenFOAM/global/argList/argList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -680,6 +680,17 @@ void Foam::argList::parse adjustOpt = true; source = source/"decomposeParDict"; } + + if + ( + !source.isAbsolute() + && !(source.size() && source[0] == '.') + ) + { + source = rootPath_/globalCase_/source; + adjustOpt = true; + } + // Could also check for absolute path, but shouldn't be needed if (adjustOpt) { @@ -795,7 +806,7 @@ void Foam::argList::parse { options_.set("case", roots[slave-1]/globalCase_); - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << args_ << options_ << roots.size(); } options_.erase("case"); @@ -846,7 +857,7 @@ void Foam::argList::parse slave++ ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << args_ << options_ << roots.size(); } } @@ -854,7 +865,11 @@ void Foam::argList::parse else { // Collect the master's argument list - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); fromMaster >> args_ >> options_ >> distributed_; // Establish rootPath_/globalCase_/case_ for slave @@ -888,7 +903,7 @@ void Foam::argList::parse slave++ ) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); string slaveBuild; string slaveMachine; @@ -911,7 +926,11 @@ void Foam::argList::parse } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster << string(Foam::FOAMbuild) << hostName() << pid(); } } diff --git a/src/OpenFOAM/global/profiling/profiling.H b/src/OpenFOAM/global/profiling/profiling.H index 03a014f48be5d9da8cda5d3c9d0f8b8c3c4b550d..26337bcc4e09b5dc21f583de9f3adb2722c3a4fb 100644 --- a/src/OpenFOAM/global/profiling/profiling.H +++ b/src/OpenFOAM/global/profiling/profiling.H @@ -54,6 +54,7 @@ SourceFiles #include "profilingTrigger.H" #include "HashPtrTable.H" +#include "Tuple2.H" #include "LIFOStack.H" #include "Map.H" #include "Time.H" diff --git a/src/OpenFOAM/global/unitConversion/unitConversion.H b/src/OpenFOAM/global/unitConversion/unitConversion.H index 6582d07ffee6a4f33cdb3c191850c4879c82df79..10263f2a61d90403a8f2f354eb11ca01169bd863 100644 --- a/src/OpenFOAM/global/unitConversion/unitConversion.H +++ b/src/OpenFOAM/global/unitConversion/unitConversion.H @@ -42,29 +42,43 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // //- Conversion from degrees to radians -inline scalar degToRad(const scalar deg) +inline constexpr scalar degToRad(const scalar deg) noexcept { - return (deg*constant::mathematical::pi/180.0); + return (deg*Foam::constant::mathematical::pi/180.0); } //- Conversion from radians to degrees -inline scalar radToDeg(const scalar rad) +inline constexpr scalar radToDeg(const scalar rad) noexcept { - return (rad*180.0/constant::mathematical::pi); + return (rad*180.0/Foam::constant::mathematical::pi); } //- Conversion from atm to Pa -inline scalar atmToPa(const scalar atm) +inline constexpr scalar atmToPa(const scalar atm) noexcept { return (atm*101325.0); } //- Conversion from atm to Pa -inline scalar paToAtm(const scalar pa) +inline constexpr scalar paToAtm(const scalar pa) noexcept { return (pa/101325.0); } + +//- User literal for degrees to radians conversion (integers) +inline constexpr scalar operator "" _deg(unsigned long long int deg) noexcept +{ + return (deg*Foam::constant::mathematical::pi/180.0); +} + +//- User literal for degrees to radians conversion (floats) +inline constexpr scalar operator "" _deg(long double deg) noexcept +{ + return (deg*Foam::constant::mathematical::pi/180.0); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/graph/curve/curve.C b/src/OpenFOAM/graph/curve/curve.C index aadff19fce167ec6241625446f8015d5bb444fc4..87260649760ffb16a39a500d67f5c1b98e256132 100644 --- a/src/OpenFOAM/graph/curve/curve.C +++ b/src/OpenFOAM/graph/curve/curve.C @@ -63,7 +63,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const curve& c) << c.style_ << nl << static_cast<const scalarField&>(c); - os.check("Ostream& operator>>(Ostream&, const curve&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/graph/graph.C b/src/OpenFOAM/graph/graph.C index e21540d1851ac28ca4d100221a40fcb9450a4a65..105c69bcd563db2283fe02c9482e8bf973240a92 100644 --- a/src/OpenFOAM/graph/graph.C +++ b/src/OpenFOAM/graph/graph.C @@ -298,7 +298,7 @@ void Foam::graph::write Foam::Ostream& Foam::operator<<(Ostream& os, const graph& g) { g.writeTable(os); - os.check("Ostream& operator<<(Ostream&, const graph&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C index cbca72250493e8dbbf4f5ff98a656213c522fa4b..01c0aaa9590a84ab3aea5dfaa18a27f0a75f7504 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -93,7 +93,7 @@ Foam::interpolation2DTable<Type>::interpolation2DTable(const dictionary& dict) : List<Tuple2<scalar, List<Tuple2<scalar, Type>>>>(), boundsHandling_(wordToBoundsHandling(dict.lookup("outOfBounds"))), - fileName_(dict.lookup("fileName")), + fileName_(dict.lookup("file")), reader_(tableReader<Type>::New(dict)) { readTable(); @@ -123,10 +123,10 @@ Type Foam::interpolation2DTable<Type>::interpolateValue const scalar lookupValue ) const { - label n = data.size(); + const label n = data.size(); - scalar minLimit = data.first().first(); - scalar maxLimit = data.last().first(); + const scalar minLimit = data.first().first(); + const scalar maxLimit = data.last().first(); if (lookupValue < minLimit) { @@ -147,7 +147,9 @@ Type Foam::interpolation2DTable<Type>::interpolateValue << "bound (" << minLimit << ")" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return data.first().second(); + break; } case interpolation2DTable::CLAMP: { @@ -175,7 +177,9 @@ Type Foam::interpolation2DTable<Type>::interpolateValue << "bound (" << maxLimit << ")" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return data.last().second(); + break; } case interpolation2DTable::CLAMP: { @@ -251,16 +255,19 @@ Foam::label Foam::interpolation2DTable<Type>::Xi WarningInFunction << "value (" << valueX << ") out of bounds" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return limitI; + break; } case interpolation2DTable::CLAMP: { return limitI; + break; } default: { FatalErrorInFunction - << "Un-handled enumeration " << boundsHandling_ + << "Unhandled enumeration " << boundsHandling_ << abort(FatalError); } } @@ -299,7 +306,7 @@ Type Foam::interpolation2DTable<Type>::operator() ) const { // Considers all of the list in Y being equal - label nX = this->size(); + const label nX = this->size(); const table& t = *this; @@ -320,8 +327,8 @@ Type Foam::interpolation2DTable<Type>::operator() // have 2-D data, interpolate // find low and high indices in the X range that bound valueX - label x0i = Xi(lessOp<scalar>(), valueX, false); - label x1i = Xi(greaterOp<scalar>(), valueX, true); + const label x0i = Xi(lessOp<scalar>(), valueX, false); + const label x1i = Xi(greaterOp<scalar>(), valueX, true); if (x0i == x1i) { @@ -333,8 +340,8 @@ Type Foam::interpolation2DTable<Type>::operator() Type y1(interpolateValue(t[x1i].second(), valueY)); // gradient in X - scalar x0 = t[x0i].first(); - scalar x1 = t[x1i].first(); + const scalar x0 = t[x0i].first(); + const scalar x1 = t[x1i].first(); Type mX = (y1 - y0)/(x1 - x0); // interpolate @@ -420,7 +427,7 @@ Foam::interpolation2DTable<Type>::outOfBounds template<class Type> void Foam::interpolation2DTable<Type>::checkOrder() const { - label n = this->size(); + const label n = this->size(); const table& t = *this; scalar prevValue = t[0].first(); @@ -445,10 +452,8 @@ void Foam::interpolation2DTable<Type>::checkOrder() const template<class Type> void Foam::interpolation2DTable<Type>::write(Ostream& os) const { - os.writeKeyword("fileName") - << fileName_ << token::END_STATEMENT << nl; - os.writeKeyword("outOfBounds") - << boundsHandlingToWord(boundsHandling_) << token::END_STATEMENT << nl; + os.writeEntry("file", fileName_); + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); os << *this; } diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H index 9a3750385c4520e9628a66379934510c8d2005f5..e38b0a979a486ea9b26a8ff21c85a3f8af86f8b4 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H @@ -66,7 +66,7 @@ public: CLAMP //!< Clamp value to the start/end value }; - //- Cconvenience typedef + //- Convenience typedef typedef List<Tuple2<scalar, List<Tuple2<scalar, Type>>>> table; @@ -156,7 +156,7 @@ public: const List<Tuple2<scalar, Type>>& operator[](const label) const; //- Return an interpolated value - Type operator()(const scalar, const scalar) const; + Type operator()(const scalar valueX, const scalar valueY) const; }; diff --git a/src/OpenFOAM/interpolations/interpolationLookUpTable/interpolationLookUpTable.C b/src/OpenFOAM/interpolations/interpolationLookUpTable/interpolationLookUpTable.C index a0ee16918805f1508213face85b80b9f4e27500a..32e76884b6180eb70ff11ab52afe8bc20805c84f 100644 --- a/src/OpenFOAM/interpolations/interpolationLookUpTable/interpolationLookUpTable.C +++ b/src/OpenFOAM/interpolations/interpolationLookUpTable/interpolationLookUpTable.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -284,7 +284,7 @@ Foam::interpolationLookUpTable<Type>::interpolationLookUpTable ) : List<scalarField>(), - fileName_(fileName(dict.lookup("fileName")).expand()), + fileName_(fileName(dict.lookup("file")).expand()), dim_(0), min_(0.0), delta_(0.0), diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C index 8f09b560acb4534eb76ab139abdfd7e5577cac9b..695e13dca46e1d3902e2739610d522057050b8bb 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -97,7 +97,7 @@ Foam::interpolationTable<Type>::interpolationTable(const dictionary& dict) : List<Tuple2<scalar, Type>>(), boundsHandling_(wordToBoundsHandling(dict.lookup("outOfBounds"))), - fileName_(dict.lookup("fileName")), + fileName_(dict.lookup("file")), reader_(tableReader<Type>::New(dict)) { readTable(); @@ -205,8 +205,8 @@ Foam::interpolationTable<Type>::outOfBounds template<class Type> void Foam::interpolationTable<Type>::check() const { - label n = this->size(); - scalar prevValue = List<Tuple2<scalar, Type>>::operator[](0).first(); + const label n = this->size(); + scalar prevValue = this->first().first(); for (label i=1; i<n; ++i) { @@ -229,10 +229,8 @@ void Foam::interpolationTable<Type>::check() const template<class Type> void Foam::interpolationTable<Type>::write(Ostream& os) const { - os.writeKeyword("fileName") - << fileName_ << token::END_STATEMENT << nl; - os.writeKeyword("outOfBounds") - << boundsHandlingToWord(boundsHandling_) << token::END_STATEMENT << nl; + os.writeEntry("file", fileName_); + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); if (reader_.valid()) { reader_->write(os); @@ -251,8 +249,8 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const return 0; } - scalar minLimit = List<Tuple2<scalar, Type>>::operator[](0).first(); - scalar maxLimit = List<Tuple2<scalar, Type>>::operator[](n-1).first(); + const scalar minLimit = this->first().first(); + const scalar maxLimit = this->last().first(); scalar lookupValue = value; if (lookupValue < minLimit) @@ -272,7 +270,9 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const << "value (" << lookupValue << ") underflow" << nl << " Zero rate of change." << endl; - // fall-through to 'CLAMP' + // behaviour as per 'CLAMP' + return 0; + break; } case interpolationTable::CLAMP: { @@ -305,7 +305,9 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const << "value (" << lookupValue << ") overflow" << nl << " Zero rate of change." << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return 0; + break; } case interpolationTable::CLAMP: { @@ -346,7 +348,7 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const } else if (hi == 0) { - // this treatment should should only occur under these conditions: + // this treatment should only occur under these conditions: // -> the 'REPEAT' treatment // -> (0 <= value <= minLimit) // -> minLimit > 0 @@ -414,7 +416,9 @@ Foam::interpolationTable<Type>::operator[](const label i) const << "index (" << ii << ") underflow" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + ii = 0; + break; } case interpolationTable::CLAMP: { @@ -448,7 +452,9 @@ Foam::interpolationTable<Type>::operator[](const label i) const << "index (" << ii << ") overflow" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + ii = n - 1; + break; } case interpolationTable::CLAMP: { @@ -477,11 +483,11 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const if (n <= 1) { - return List<Tuple2<scalar, Type>>::operator[](0).second(); + return this->first().second(); } - scalar minLimit = List<Tuple2<scalar, Type>>::operator[](0).first(); - scalar maxLimit = List<Tuple2<scalar, Type>>::operator[](n-1).first(); + const scalar minLimit = this->first().first(); + const scalar maxLimit = this->last().first(); scalar lookupValue = value; if (lookupValue < minLimit) @@ -501,17 +507,19 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const << "value (" << lookupValue << ") underflow" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return this->first().second(); + break; } case interpolationTable::CLAMP: { - return List<Tuple2<scalar, Type>>::operator[](0).second(); + return this->first().second(); break; } case interpolationTable::REPEAT: { // adjust lookupValue to >= minLimit - scalar span = maxLimit-minLimit; + const scalar span = maxLimit-minLimit; lookupValue = fmod(lookupValue-minLimit, span) + minLimit; break; } @@ -534,17 +542,19 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const << "value (" << lookupValue << ") overflow" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return this->last().second(); + break; } case interpolationTable::CLAMP: { - return List<Tuple2<scalar, Type>>::operator[](n-1).second(); + return this->last().second(); break; } case interpolationTable::REPEAT: { // adjust lookupValue <= maxLimit - scalar span = maxLimit-minLimit; + const scalar span = maxLimit-minLimit; lookupValue = fmod(lookupValue-minLimit, span) + minLimit; break; } @@ -575,7 +585,7 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const } else if (hi == 0) { - // this treatment should should only occur under these conditions: + // this treatment should only occur under these conditions: // -> the 'REPEAT' treatment // -> (0 <= value <= minLimit) // -> minLimit > 0 diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C index 6c9f0eff7335abb09119ae16a871ee53b9a618d7..77fa34f6999b9ef9de0f738c1e56180dccd5c972 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -97,7 +97,7 @@ Foam::LUscalarMatrix::LUscalarMatrix ( IPstream ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, slave, 0, // bufSize Pstream::msgType(), @@ -111,7 +111,7 @@ Foam::LUscalarMatrix::LUscalarMatrix { OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), 0, // bufSize Pstream::msgType(), diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C index 432c39917c6f0f58aabd3e8a4e33cdbe8f00f40b..91c4cf37ff7b72123563d393ed06bfee64d414c7 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,7 +62,7 @@ void Foam::LUscalarMatrix::solve { IPstream::read ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, slave, reinterpret_cast<char*> ( @@ -78,7 +78,7 @@ void Foam::LUscalarMatrix::solve { OPstream::write ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), reinterpret_cast<const char*>(x.begin()), x.byteSize(), @@ -106,7 +106,7 @@ void Foam::LUscalarMatrix::solve { OPstream::write ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, slave, reinterpret_cast<const char*> ( @@ -122,7 +122,7 @@ void Foam::LUscalarMatrix::solve { IPstream::read ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), reinterpret_cast<char*>(x.begin()), x.byteSize(), diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.C index 0e944bd3adb629c7f5644ae2092811faf7e087e3..b7cf4836c0df8ff312aab437a985f79ebc716359 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.C @@ -363,7 +363,7 @@ Foam::Ostream& Foam::operator<< << endl << endl; } - os.check("Ostream& operator<<(Ostream&, const LduMatrix&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H index 1da27f106b6fd6a7964403ae49e5b4cb16c2861c..f96d583b1f2abf352a54ff64f2985a98aa33a482 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -122,6 +122,9 @@ public: //- Dictionary of controls dictionary controlDict_; + //- Default maximum number of iterations in the solver + static const label defaultMaxIter_ = 1000; + //- Maximum number of iterations in the solver label maxIter_; diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C index aebe9cb16f228c29f4b8d7c29502796bc3cb0782..8338abdbf4486ef0eb4d30c4e352b087727ae1f6 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -131,7 +131,7 @@ Foam::LduMatrix<Type, DType, LUType>::solver::solver controlDict_(solverDict), - maxIter_(1000), + maxIter_(defaultMaxIter_), minIter_(0), tolerance_(1e-6*pTraits<Type>::one), relTol_(Zero) diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C index 8bf7a15194eb9d5bddf3858543f70dee1dec12c4..465c097bf0939ab2100cea1cd66eb4b841e6ebcb 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,8 +38,8 @@ void Foam::LduMatrix<Type, DType, LUType>::initMatrixInterfaces { if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(interfaces_, interfacei) @@ -57,7 +57,7 @@ void Foam::LduMatrix<Type, DType, LUType>::initMatrixInterfaces } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = this->patchSchedule(); @@ -78,7 +78,7 @@ void Foam::LduMatrix<Type, DType, LUType>::initMatrixInterfaces psiif, interfaceCoeffs[interfacei], //Amultiplier<Type, LUType>(interfaceCoeffs[interfacei]), - Pstream::blocking + Pstream::commsTypes::blocking ); } } @@ -103,12 +103,12 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces { if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { // Block until all sends/receives have been finished - if (Pstream::defaultCommsType == Pstream::nonBlocking) + if (Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking) { IPstream::waitRequests(); OPstream::waitRequests(); @@ -129,7 +129,7 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = this->patchSchedule(); @@ -148,7 +148,7 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces psiif, interfaceCoeffs[interfacei], //Amultiplier<Type, LUType>(interfaceCoeffs[interfacei]), - Pstream::scheduled + Pstream::commsTypes::scheduled ); } else @@ -159,7 +159,7 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces psiif, interfaceCoeffs[interfacei], //Amultiplier<Type, LUType>(interfaceCoeffs[interfacei]), - Pstream::scheduled + Pstream::commsTypes::scheduled ); } } @@ -182,7 +182,7 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces psiif, interfaceCoeffs[interfacei], //Amultiplier<Type, LUType>(interfaceCoeffs[interfacei]), - Pstream::blocking + Pstream::commsTypes::blocking ); } } diff --git a/src/OpenFOAM/matrices/Matrix/MatrixIO.C b/src/OpenFOAM/matrices/Matrix/MatrixIO.C index fc315f4ca46ed33c11456c0801520cbbc313bd02..46b0b29f1255a67cb473f2970b21f14a6105982b 100644 --- a/src/OpenFOAM/matrices/Matrix/MatrixIO.C +++ b/src/OpenFOAM/matrices/Matrix/MatrixIO.C @@ -48,7 +48,7 @@ Foam::Istream& Foam::operator>>(Istream& is, Matrix<Form, Type>& M) // Anull matrix M.clear(); - is.fatalCheck("operator>>(Istream&, Matrix<Form, Type>&)"); + is.fatalCheck(FUNCTION_NAME); token firstToken(is); @@ -250,9 +250,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const Matrix<Form, Type>& M) } } - // Check state of IOstream - os.check("Ostream& operator<<(Ostream&, const Matrix&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterfacePtrsList.H b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterfacePtrsList.H index 4e8a19b70a22fab764b876e5c1344362b23f1f21..b0e7d896eec7438608259ae4c803d3c76867e4e5 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterfacePtrsList.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterfacePtrsList.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,4 +47,3 @@ namespace Foam #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C index 8ba519430a6e70b5845f8b82e2dec5c703145c1f..853a046bc829c383d33f60da5c2456a69339874d 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,7 +38,11 @@ void Foam::processorLduInterface::send { label nBytes = f.byteSize(); - if (commsType == Pstream::blocking || commsType == Pstream::scheduled) + if + ( + commsType == Pstream::commsTypes::blocking + || commsType == Pstream::commsTypes::scheduled + ) { OPstream::write ( @@ -50,7 +54,7 @@ void Foam::processorLduInterface::send comm() ); } - else if (commsType == Pstream::nonBlocking) + else if (commsType == Pstream::commsTypes::nonBlocking) { resizeBuf(receiveBuf_, nBytes); @@ -80,7 +84,7 @@ void Foam::processorLduInterface::send else { FatalErrorInFunction - << "Unsupported communications type " << commsType + << "Unsupported communications type " << int(commsType) << exit(FatalError); } } @@ -93,7 +97,11 @@ void Foam::processorLduInterface::receive UList<Type>& f ) const { - if (commsType == Pstream::blocking || commsType == Pstream::scheduled) + if + ( + commsType == Pstream::commsTypes::blocking + || commsType == Pstream::commsTypes::scheduled + ) { IPstream::read ( @@ -105,14 +113,14 @@ void Foam::processorLduInterface::receive comm() ); } - else if (commsType == Pstream::nonBlocking) + else if (commsType == Pstream::commsTypes::nonBlocking) { memcpy(f.begin(), receiveBuf_.begin(), f.byteSize()); } else { FatalErrorInFunction - << "Unsupported communications type " << commsType + << "Unsupported communications type " << int(commsType) << exit(FatalError); } } @@ -158,7 +166,11 @@ void Foam::processorLduInterface::compressedSend reinterpret_cast<Type&>(fArray[nm1]) = f.last(); - if (commsType == Pstream::blocking || commsType == Pstream::scheduled) + if + ( + commsType == Pstream::commsTypes::blocking + || commsType == Pstream::commsTypes::scheduled + ) { OPstream::write ( @@ -170,7 +182,7 @@ void Foam::processorLduInterface::compressedSend comm() ); } - else if (commsType == Pstream::nonBlocking) + else if (commsType == Pstream::commsTypes::nonBlocking) { resizeBuf(receiveBuf_, nBytes); @@ -197,7 +209,7 @@ void Foam::processorLduInterface::compressedSend else { FatalErrorInFunction - << "Unsupported communications type " << commsType + << "Unsupported communications type " << int(commsType) << exit(FatalError); } } @@ -222,7 +234,11 @@ void Foam::processorLduInterface::compressedReceive label nFloats = nm1 + nlast; label nBytes = nFloats*sizeof(float); - if (commsType == Pstream::blocking || commsType == Pstream::scheduled) + if + ( + commsType == Pstream::commsTypes::blocking + || commsType == Pstream::commsTypes::scheduled + ) { resizeBuf(receiveBuf_, nBytes); @@ -236,10 +252,10 @@ void Foam::processorLduInterface::compressedReceive comm() ); } - else if (commsType != Pstream::nonBlocking) + else if (commsType != Pstream::commsTypes::nonBlocking) { FatalErrorInFunction - << "Unsupported communications type " << commsType + << "Unsupported communications type " << int(commsType) << exit(FatalError); } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterfaceFields/lduInterfaceField/lduInterfaceFieldPtrsList.H b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterfaceFields/lduInterfaceField/lduInterfaceFieldPtrsList.H index 9934682b1140b492fd17da00064fbb7080eddde8..9e37cde45334ccd0ab11cd4a1330cd0b7d775152 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterfaceFields/lduInterfaceField/lduInterfaceFieldPtrsList.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterfaceFields/lduInterfaceField/lduInterfaceFieldPtrsList.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,4 +47,3 @@ namespace Foam #endif // ************************************************************************* // - diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C index 11cdf31485f3b81a70828042859dcb9195519ccd..922f9b8c5946a9ab9baf1291c782ece8991b3ef3 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,6 +35,9 @@ namespace Foam } +const Foam::label Foam::lduMatrix::solver::defaultMaxIter_ = 1000; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Foam::lduMatrix::lduMatrix(const lduMesh& mesh) @@ -335,7 +338,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const lduMatrix& ldum) os << ldum.upper(); } - os.check("Ostream& operator<<(Ostream&, const lduMatrix&"); + os.check(FUNCTION_NAME); return os; } @@ -395,7 +398,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const InfoProxy<lduMatrix>& ip) // os << endl; //} - os.check("Ostream& operator<<(Ostream&, const lduMatrix&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H index 5da8c96dd10f34ed291d875487f3a85e2c76449b..4ef5055cfb124246053d74a1b5f0cbcf2538e74a 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -107,6 +107,9 @@ public: //- Dictionary of controls dictionary controlDict_; + //- Default maximum number of iterations in the solver + static const label defaultMaxIter_; + //- Maximum number of iterations in the solver label maxIter_; diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C index 88c57332441ca503e78775c4c9b416774cf01969..5caa6d627ce551bef1b85d9ad1ba9467da987643 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -158,10 +158,10 @@ Foam::lduMatrix::solver::solver void Foam::lduMatrix::solver::readControls() { - maxIter_ = controlDict_.lookupOrDefault<label>("maxIter", 1000); - minIter_ = controlDict_.lookupOrDefault<label>("minIter", 0); + maxIter_ = controlDict_.lookupOrDefault<label>("maxIter", defaultMaxIter_); + minIter_ = controlDict_.lookupOrDefault<label>("minIter", 0); tolerance_ = controlDict_.lookupOrDefault<scalar>("tolerance", 1e-6); - relTol_ = controlDict_.lookupOrDefault<scalar>("relTol", 0); + relTol_ = controlDict_.lookupOrDefault<scalar>("relTol", 0); } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixUpdateMatrixInterfaces.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixUpdateMatrixInterfaces.C index 3709218436bd727d1dc6de4b5df400b21e33dd83..af65e1bc68626562ed41c0573bcfbe4898147608 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixUpdateMatrixInterfaces.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixUpdateMatrixInterfaces.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,8 +38,8 @@ void Foam::lduMatrix::initMatrixInterfaces { if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(interfaces, interfacei) @@ -57,7 +57,7 @@ void Foam::lduMatrix::initMatrixInterfaces } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = this->patchSchedule(); @@ -78,7 +78,7 @@ void Foam::lduMatrix::initMatrixInterfaces psiif, coupleCoeffs[interfacei], cmpt, - Pstream::blocking + Pstream::commsTypes::blocking ); } } @@ -102,7 +102,7 @@ void Foam::lduMatrix::updateMatrixInterfaces const direction cmpt ) const { - if (Pstream::defaultCommsType == Pstream::blocking) + if (Pstream::defaultCommsType == Pstream::commsTypes::blocking) { forAll(interfaces, interfacei) { @@ -119,7 +119,7 @@ void Foam::lduMatrix::updateMatrixInterfaces } } } - else if (Pstream::defaultCommsType == Pstream::nonBlocking) + else if (Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking) { // Try and consume interfaces as they become available bool allUpdated = false; @@ -198,7 +198,7 @@ void Foam::lduMatrix::updateMatrixInterfaces } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = this->patchSchedule(); @@ -217,7 +217,7 @@ void Foam::lduMatrix::updateMatrixInterfaces psiif, coupleCoeffs[interfacei], cmpt, - Pstream::scheduled + Pstream::commsTypes::scheduled ); } else @@ -228,7 +228,7 @@ void Foam::lduMatrix::updateMatrixInterfaces psiif, coupleCoeffs[interfacei], cmpt, - Pstream::scheduled + Pstream::commsTypes::scheduled ); } } @@ -251,7 +251,7 @@ void Foam::lduMatrix::updateMatrixInterfaces psiif, coupleCoeffs[interfacei], cmpt, - Pstream::blocking + Pstream::commsTypes::blocking ); } } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C index 334346962ae64e5e60956d9b32762794ad933760..4036107e96e76171d04e74e6122cdf94553fb943 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -279,7 +279,7 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing { fineInterfaces[inti].initInternalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, restrictMap ); } @@ -322,7 +322,7 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing fineInterfaces[inti].interfaceInternalField(restrictMap), fineInterfaces[inti].internalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, restrictMap ), fineLevelIndex, @@ -488,7 +488,7 @@ void Foam::GAMGAgglomeration::procAgglomerateRestrictAddressing procRestrictAddressing, UPstream::msgType(), - Pstream::nonBlocking //Pstream::scheduled + Pstream::commsTypes::nonBlocking //Pstream::commsTypes::scheduled ); @@ -645,7 +645,7 @@ void Foam::GAMGAgglomeration::combineLevels(const label curLevel) // label& slaveVal = vals[i]; // IPstream::read // ( -// Pstream::scheduled, +// Pstream::commsTypes::scheduled, // procIDs[i], // reinterpret_cast<char*>(&slaveVal), // sizeof(slaveVal), @@ -658,7 +658,7 @@ void Foam::GAMGAgglomeration::combineLevels(const label curLevel) // { // OPstream::write // ( -// Pstream::scheduled, +// Pstream::commsTypes::scheduled, // procIDs[0], // reinterpret_cast<const char*>(&myVal), // sizeof(myVal), diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerationTemplates.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerationTemplates.C index 372accc31bd3236b986948779babee60486c0a46..56c16ab0ce2a8423bd96308ee9d1390a6592071f 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerationTemplates.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerationTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,7 +48,7 @@ void Foam::GAMGAgglomeration::gatherList { IPstream fromSlave ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[i], 0, tag, @@ -62,7 +62,7 @@ void Foam::GAMGAgglomeration::gatherList { OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[0], 0, tag, @@ -128,7 +128,7 @@ void Foam::GAMGAgglomeration::restrictField procIDs, cf, UPstream::msgType(), - Pstream::nonBlocking //Pstream::scheduled + Pstream::commsTypes::nonBlocking //Pstream::commsTypes::scheduled ); } } @@ -201,7 +201,7 @@ void Foam::GAMGAgglomeration::prolongField cf, allCf, UPstream::msgType(), - Pstream::nonBlocking //Pstream::scheduled + Pstream::commsTypes::nonBlocking //Pstream::commsTypes::scheduled ); forAll(fineToCoarse, i) diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/GAMGProcAgglomeration/GAMGProcAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/GAMGProcAgglomeration/GAMGProcAgglomeration.C index 0f8ababa3aabfe9efbc4e2cdf2d18ff20ddb3fd7..642151da87a517584f65b675026623e2f8bf7b61 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/GAMGProcAgglomeration/GAMGProcAgglomeration.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/GAMGProcAgglomeration/GAMGProcAgglomeration.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -150,7 +150,7 @@ Foam::labelListList Foam::GAMGProcAgglomeration::globalCellCells { interfaces[inti].initInternalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, globalIndices ); } @@ -172,7 +172,7 @@ Foam::labelListList Foam::GAMGProcAgglomeration::globalCellCells ( interfaces[inti].internalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, globalIndices ) ) diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverAgglomerateMatrix.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverAgglomerateMatrix.C index 33b7d009299a4a2c43f3f49a715fe8eff2828b42..58a8da4dd3941264ac2656cb1e47d337acf525ce 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverAgglomerateMatrix.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverAgglomerateMatrix.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -318,7 +318,7 @@ void Foam::GAMGSolver::gatherMatrices IPstream fromSlave ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[proci], 0, // bufSize Pstream::msgType(), @@ -387,7 +387,7 @@ void Foam::GAMGSolver::gatherMatrices OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[0], 0, Pstream::msgType(), diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverScale.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverScale.C index a587b667c7ff37434eefc41b6a953e282e829e6a..ff5d9490044b5f4143ac7425b943e4558641eb48 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverScale.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverScale.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -67,7 +67,7 @@ void Foam::GAMGSolver::scale vector2D scalingVector(scalingFactorNum, scalingFactorDenom); A.mesh().reduce(scalingVector, sumOp<vector2D>()); - scalar sf = scalingVector.x()/stabilise(scalingVector.y(), VSMALL); + const scalar sf = scalingVector.x()/stabilise(scalingVector.y(), VSMALL); if (debug >= 2) { diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C index 2730b8666b0d45b4007eefb82eb051d59b863ffe..852caef35f968ae705b246cc3425ae7056f95d20 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,14 +104,18 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. scalarReceiveBuf_.setSize(scalarSendBuf_.size()); outstandingRecvRequest_ = UPstream::nRequests(); IPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procInterface_.neighbProcNo(), reinterpret_cast<char*>(scalarReceiveBuf_.begin()), scalarReceiveBuf_.byteSize(), @@ -122,7 +126,7 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate outstandingSendRequest_ = UPstream::nRequests(); OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procInterface_.neighbProcNo(), reinterpret_cast<const char*>(scalarSendBuf_.begin()), scalarSendBuf_.byteSize(), @@ -160,7 +164,11 @@ void Foam::processorGAMGInterfaceField::updateInterfaceMatrix const labelUList& faceCells = procInterface_.faceCells(); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C index 54088f550fc1953ab8cad63c562fe1e54172a840..b4e630571f6a71339666acef8d36ad61aa563f8e 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -208,6 +208,16 @@ Foam::solverPerformance Foam::PBiCG::solve ); } + // Recommend PBiCGStab if PBiCG fails to converge + if (solverPerf.nIterations() > max(defaultMaxIter_, maxIter_)) + { + FatalErrorInFunction + << "PBiCG has failed to converge within the maximum number" + " of iterations " << max(defaultMaxIter_, maxIter_) << nl + << " Please try the more robust PBiCGStab solver." + << exit(FatalError); + } + return solverPerf; } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C index f73bf0fbb6a46ae5ae48f192c1f46cb4afb8b08f..8fbbb57f240df8fc97dff0256cac43324978f484 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,6 +31,9 @@ namespace Foam { defineTypeNameAndDebug(PBiCGStab, 0); + lduMatrix::solver::addsymMatrixConstructorToTable<PBiCGStab> + addPBiCGStabSymMatrixConstructorToTable_; + lduMatrix::solver::addasymMatrixConstructorToTable<PBiCGStab> addPBiCGStabAsymMatrixConstructorToTable_; } diff --git a/src/OpenFOAM/matrices/scalarMatrices/SVD/SVD.C b/src/OpenFOAM/matrices/scalarMatrices/SVD/SVD.C index 8b090ff275d344bbb0283acc068eae3ff9a4cb76..89105de6559b447850b62e97cb9ff7536bd96a1a 100644 --- a/src/OpenFOAM/matrices/scalarMatrices/SVD/SVD.C +++ b/src/OpenFOAM/matrices/scalarMatrices/SVD/SVD.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -156,7 +156,7 @@ Foam::SVD::SVD(const scalarRectangularMatrix& A, const scalar minCondition) { if (i < Un-1) { - if (g != 0) + if (g*U_(i, l) != 0) { for (label j=l; j<Un; j++) { @@ -199,7 +199,7 @@ Foam::SVD::SVD(const scalarRectangularMatrix& A, const scalar minCondition) U_(i, j) = 0; } - if (g != 0) + if (g*U_(i, i) != 0) { g = 1.0/g; diff --git a/src/OpenFOAM/memory/autoPtr/autoPtr.H b/src/OpenFOAM/memory/autoPtr/autoPtr.H index 5da9a9ff03e5862d59d066f40160c075c2782eea..24be938dd981049d695618db9d58e10147419ddb 100644 --- a/src/OpenFOAM/memory/autoPtr/autoPtr.H +++ b/src/OpenFOAM/memory/autoPtr/autoPtr.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -142,6 +142,9 @@ public: //- Return const object pointer inline const T* operator->() const; + //- Take over the object pointer from parameter + inline void operator=(T*); + //- Take over the object pointer from parameter inline void operator=(const autoPtr<T>&); }; diff --git a/src/OpenFOAM/memory/autoPtr/autoPtrI.H b/src/OpenFOAM/memory/autoPtr/autoPtrI.H index cb991b7f9ed838981893e3ba2040f5d21ffc22a4..746bce0d81ba834988071879aa8e8ba95bb54d59 100644 --- a/src/OpenFOAM/memory/autoPtr/autoPtrI.H +++ b/src/OpenFOAM/memory/autoPtr/autoPtrI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -218,6 +218,13 @@ inline const T* Foam::autoPtr<T>::operator->() const } +template<class T> +inline void Foam::autoPtr<T>::operator=(T* p) +{ + reset(p); +} + + template<class T> inline void Foam::autoPtr<T>::operator=(const autoPtr<T>& ap) { diff --git a/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H b/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H index 03942bb9ad1b0db9cbcf6d45486409ea5a1e959c..a0d82fb77947844808aea58ce931691d757909f3 100644 --- a/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H +++ b/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H @@ -142,9 +142,7 @@ Ostream& operator<<(Ostream& os, const DynamicID<ObjectType>& dynId) << dynId.name() << token::SPACE << dynId.index() << token::END_LIST; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const DynamicID<ObjectType>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.C b/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.C index 9b7fc8a548d93335410f3091d10e427fad0d62af..e68137a628f921d8de72d62a7107ec960ef50bf4 100644 --- a/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.C +++ b/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.C @@ -134,16 +134,18 @@ Foam::coupleGroupIdentifier::coupleGroupIdentifier() {} -Foam::coupleGroupIdentifier::coupleGroupIdentifier(const word& name) +Foam::coupleGroupIdentifier::coupleGroupIdentifier(const word& patchGroupName) : - name_(name) + name_(patchGroupName) {} Foam::coupleGroupIdentifier::coupleGroupIdentifier(const dictionary& dict) : - name_(dict.lookupOrDefault<word>("coupleGroup", "")) -{} + name_() +{ + dict.readIfPresent("coupleGroup", name_); +} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // @@ -222,7 +224,7 @@ void Foam::coupleGroupIdentifier::write(Ostream& os) const { if (valid()) { - os.writeKeyword("coupleGroup") << name() << token::END_STATEMENT << nl; + os.writeEntry("coupleGroup", name()); } } @@ -232,7 +234,7 @@ void Foam::coupleGroupIdentifier::write(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream& os, const coupleGroupIdentifier& p) { p.write(os); - os.check("Ostream& operator<<(Ostream& os, const coupleGroupIdentifier& p"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.H b/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.H index 895dcf53ffabc0fa5fa5cd81dc17f091ce9027a8..cf1caa3667c58f43bacd624b9750319369a5bea5 100644 --- a/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.H +++ b/src/OpenFOAM/meshes/Identifiers/patch/coupleGroupIdentifier.H @@ -53,11 +53,11 @@ class Ostream; // Forward declaration of friend functions and operators class coupleGroupIdentifier; -Ostream& operator<<(Ostream&, const coupleGroupIdentifier&); +Ostream& operator<<(Ostream& os, const coupleGroupIdentifier& p); /*---------------------------------------------------------------------------*\ - Class coupleGroupIdentifier Declaration + Class coupleGroupIdentifier Declaration \*---------------------------------------------------------------------------*/ class coupleGroupIdentifier @@ -71,7 +71,11 @@ class coupleGroupIdentifier // Private Member Functions //- Find other patch in specified mesh. Returns index of patch or -1. - label findOtherPatchID(const polyMesh&, const polyPatch&) const; + label findOtherPatchID + ( + const polyMesh& mesh, + const polyPatch& thisPatch + ) const; public: @@ -85,7 +89,7 @@ public: coupleGroupIdentifier(const word& patchGroupName); //- Construct from dictionary - coupleGroupIdentifier(const dictionary&); + coupleGroupIdentifier(const dictionary& dict); // Member Functions @@ -97,19 +101,27 @@ public: inline bool valid() const; //- Find other patch in same region. Returns index of patch or -1. - label findOtherPatchID(const polyPatch&) const; + label findOtherPatchID(const polyPatch& thisPatch) const; //- Find other patch and region. Returns index of patch and sets // otherRegion to name of region. Fatal error if patch not found - label findOtherPatchID(const polyPatch&, word&) const; + label findOtherPatchID + ( + const polyPatch& thisPatch, + word& otherRegion + ) const; //- Write the data as a dictionary - void write(Ostream&) const; + void write(Ostream& os) const; // IOstream Operators - friend Ostream& operator<<(Ostream&, const coupleGroupIdentifier&); + friend Ostream& operator<< + ( + Ostream& os, + const coupleGroupIdentifier& p + ); }; diff --git a/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C index b69ffae4f4c7b4695a5ae797806ccd43d80205a9..c535e5b0bf6c9ad6d5f03a2d51013e4972d7ae54 100644 --- a/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C +++ b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C @@ -90,23 +90,23 @@ void Foam::patchIdentifier::write(Ostream& os) const { if (physicalType_.size()) { - os.writeKeyword("physicalType") << physicalType_ - << token::END_STATEMENT << nl; + os.writeEntry("physicalType", physicalType_); } if (inGroups_.size()) { - os.writeKeyword("inGroups") << inGroups_ - << token::END_STATEMENT << nl; + os.writeKeyword("inGroups"); + // Write list with flatOutput + inGroups_.writeList(os, 0) << token::END_STATEMENT << nl; } } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -Foam::Ostream& Foam::operator<<(Ostream& os, const patchIdentifier& pi) +Foam::Ostream& Foam::operator<<(Ostream& os, const patchIdentifier& p) { - pi.write(os); - os.check("Ostream& operator<<(Ostream&, const patchIdentifier&)"); + p.write(os); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H index e54d27673302e5b298e30e7ac8429eded6f92eb6..760744a87e95442a9d8165b369a9c70b9184ef98 100644 --- a/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H +++ b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H @@ -25,7 +25,7 @@ Class Foam::patchIdentifier Description - Identifies patch by name, patch index and physical type + Identifies a patch by name, patch index and physical type SourceFiles patchIdentifier.C @@ -48,11 +48,11 @@ class dictionary; // Forward declaration of friend functions and operators class patchIdentifier; -Ostream& operator<<(Ostream&, const patchIdentifier&); +Ostream& operator<<(Ostream& os, const patchIdentifier& p); /*---------------------------------------------------------------------------*\ - Class patchIdentifier Declaration + Class patchIdentifier Declaration \*---------------------------------------------------------------------------*/ class patchIdentifier @@ -68,7 +68,7 @@ class patchIdentifier //- Optional physical type mutable word physicalType_; - //- Optional groups patch belongs to + //- Optional groups to which the patch belongs wordList inGroups_; public: @@ -88,14 +88,14 @@ public: patchIdentifier ( const word& name, - const dictionary&, + const dictionary& dict, const label index ); - //- Construct from geometric patch, resetting the index + //- Copy construct from geometric patch, resetting the index patchIdentifier ( - const patchIdentifier&, + const patchIdentifier& p, const label index ); @@ -106,64 +106,64 @@ public: // Member Functions - //- Return name + //- Return the patch name const word& name() const { return name_; } - //- Return name for modification + //- Modifiable patch name word& name() { return name_; } - //- Return the optional physical type of the patch + //- The optional physical type of the patch const word& physicalType() const { return physicalType_; } - //- Return the optional physical type of the patch for modification + //- Modifiable optional physical type of the patch word& physicalType() { return physicalType_; } - //- Return the index of this patch in the boundaryMesh + //- The index of this patch in the boundaryMesh label index() const { return index_; } - //- Return the index of this patch in the boundaryMesh for modification + //- Modifiable the index of this patch in the boundaryMesh label& index() { return index_; } - //- Return the optional groups patch belongs to + //- The optional groups that the patch belongs to const wordList& inGroups() const { return inGroups_; } - //- Return the optional groups patch belongs to for modification + //- Modifiable optional groups that the patch belongs to wordList& inGroups() { return inGroups_; } - //- Test if in group - bool inGroup(const word&) const; + //- Check if the patch is in named group + bool inGroup(const word& name) const; //- Write patchIdentifier as a dictionary - void write(Ostream&) const; + void write(Ostream& os) const; // Ostream Operator - friend Ostream& operator<<(Ostream&, const patchIdentifier&); + friend Ostream& operator<<(Ostream& os, const patchIdentifier& p); }; diff --git a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C index d9179f42748bb4b1763183e056ec596c2e556896..33e933ba23028f7a2466095f7012da0c71c82df3 100644 --- a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C +++ b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C @@ -106,29 +106,22 @@ void Foam::surfZoneIdentifier::write(Ostream& os) const } -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // -// needed for list output -bool Foam::surfZoneIdentifier::operator!= -( - const surfZoneIdentifier& rhs -) const +bool Foam::operator==(const surfZoneIdentifier& a, const surfZoneIdentifier& b) { - return !(*this == rhs); + return + ( + (a.index() == b.index()) + && (a.name() == b.name()) + && (a.geometricType() == b.geometricType()) + ); } -bool Foam::surfZoneIdentifier::operator== -( - const surfZoneIdentifier& rhs -) const +bool Foam::operator!=(const surfZoneIdentifier& a, const surfZoneIdentifier& b) { - return - ( - (index() == rhs.index()) - && (name() == rhs.name()) - && (geometricType() == rhs.geometricType()) - ); + return !(a == b); } @@ -137,17 +130,15 @@ bool Foam::surfZoneIdentifier::operator== Foam::Istream& Foam::operator>>(Istream& is, surfZoneIdentifier& obj) { is >> obj.name_ >> obj.geometricType_; - return is; } Foam::Ostream& Foam::operator<<(Ostream& os, const surfZoneIdentifier& obj) { - // newlines to separate, since that is what triSurface currently expects + // Newlines to separate, since that is what triSurface currently expects os << nl << obj.name_ << nl << obj.geometricType_; - - os.check("Ostream& operator<<(Ostream&, const surfZoneIdentifier&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H index a084e0196a3145d550df311ef9f9cc38d4e8fb08..26922f5aef8b54203d18411cbda4fbea72915ea1 100644 --- a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H +++ b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H @@ -51,8 +51,8 @@ class dictionary; // Forward declaration of friend functions and operators class surfZoneIdentifier; -Istream& operator>>(Istream&, surfZoneIdentifier&); -Ostream& operator<<(Ostream&, const surfZoneIdentifier&); +Istream& operator>>(Istream& is, surfZoneIdentifier& p); +Ostream& operator<<(Ostream& os, const surfZoneIdentifier& p); /*---------------------------------------------------------------------------*\ Class surfZoneIdentifier Declaration @@ -94,21 +94,20 @@ public: const word& name, const label index, const word& geometricType = word::null - ); //- Construct from dictionary surfZoneIdentifier ( const word& name, - const dictionary&, + const dictionary& dict, const label index ); - //- Construct from another zone identifier, resetting the index + //- Copy construct from another zone identifier, resetting the index surfZoneIdentifier ( - const surfZoneIdentifier&, + const surfZoneIdentifier& p, const label index ); @@ -156,14 +155,8 @@ public: } - //- Write surfZoneIdentifier as a dictionary - void write(Ostream&) const; - - - // Member Operators - - bool operator!=(const surfZoneIdentifier&) const; - bool operator==(const surfZoneIdentifier&) const; + //- Write identifier as a dictionary + void write(Ostream& os) const; // Ostream Operator @@ -171,20 +164,29 @@ public: //- Read name/type. friend Istream& operator>> ( - Istream&, - surfZoneIdentifier& + Istream& is, + surfZoneIdentifier& ob ); //- Write name/type. friend Ostream& operator<< ( - Ostream&, - const surfZoneIdentifier& + Ostream& os, + const surfZoneIdentifier& obj ); }; +// Global Operators + +//- Compare zone indentifiers for equality +bool operator==(const surfZoneIdentifier& a, const surfZoneIdentifier& b); + +//- Compare zone indentifiers for inequality +bool operator!=(const surfZoneIdentifier& a, const surfZoneIdentifier& b); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/meshes/ProcessorTopology/ProcessorTopology.C b/src/OpenFOAM/meshes/ProcessorTopology/ProcessorTopology.C index a7e9fbacd69e8ccc47e47aa41debbb238123e62d..c027cb58b02e368d9a85517770a4b19e675ac5b9 100644 --- a/src/OpenFOAM/meshes/ProcessorTopology/ProcessorTopology.C +++ b/src/OpenFOAM/meshes/ProcessorTopology/ProcessorTopology.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -124,7 +124,11 @@ Foam::ProcessorTopology<Container, ProcPatch>::ProcessorTopology Pstream::scatterList(*this, Pstream::msgType(), comm); } - if (Pstream::parRun() && Pstream::defaultCommsType == Pstream::scheduled) + if + ( + Pstream::parRun() + && Pstream::defaultCommsType == Pstream::commsTypes::scheduled + ) { label patchEvali = 0; diff --git a/src/OpenFOAM/meshes/boundBox/boundBox.C b/src/OpenFOAM/meshes/boundBox/boundBox.C index 08da5b207a67b60e698817b7837a44936be73699..a03a7e7597fc3d3f31c33b7c3689b6c3d6a18bac 100644 --- a/src/OpenFOAM/meshes/boundBox/boundBox.C +++ b/src/OpenFOAM/meshes/boundBox/boundBox.C @@ -259,8 +259,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const boundBox& bb) ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const boundBox&)"); + os.check(FUNCTION_NAME); return os; } @@ -280,8 +279,7 @@ Foam::Istream& Foam::operator>>(Istream& is, boundBox& bb) ); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, boundBox&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/lduMesh/lduMesh.C b/src/OpenFOAM/meshes/lduMesh/lduMesh.C index 1717be26c68e28f01bcee18382bc8bdf8fc96302..911cf0a93bd60dd375c4c52c7d17f614a6bd5270 100644 --- a/src/OpenFOAM/meshes/lduMesh/lduMesh.C +++ b/src/OpenFOAM/meshes/lduMesh/lduMesh.C @@ -139,7 +139,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const InfoProxy<lduMesh>& ip) } } - os.check("Ostream& operator<<(Ostream&, const lduMesh&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/lduMesh/lduPrimitiveMesh.C b/src/OpenFOAM/meshes/lduMesh/lduPrimitiveMesh.C index e7acb85c59867a6db1db2ceea1db62aa4bdf67c3..bdd63ab03564a56243527259b5252122d77e14f7 100644 --- a/src/OpenFOAM/meshes/lduMesh/lduPrimitiveMesh.C +++ b/src/OpenFOAM/meshes/lduMesh/lduPrimitiveMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -993,7 +993,7 @@ void Foam::lduPrimitiveMesh::gather IPstream fromSlave ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[i], 0, // bufSize Pstream::msgType(), @@ -1066,7 +1066,7 @@ void Foam::lduPrimitiveMesh::gather OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, procIDs[0], 0, Pstream::msgType(), diff --git a/src/OpenFOAM/meshes/meshShapes/face/faceI.H b/src/OpenFOAM/meshes/meshShapes/face/faceI.H index ce807528c6598dbbeae7b5489f3f187d6adbeafe..d312560843c35033a0246ebfae1255704dda80b7 100644 --- a/src/OpenFOAM/meshes/meshShapes/face/faceI.H +++ b/src/OpenFOAM/meshes/meshShapes/face/faceI.H @@ -176,9 +176,7 @@ inline Foam::Istream& Foam::operator>>(Istream& is, face& f) is >> static_cast<labelList&>(f); } - // Check state of Ostream - is.check("Istream& operator>>(Istream&, face&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTriI.H b/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTriI.H index 861be7665ae56edbff050e0dd13b687adfac06cf..3975314e00911f0769c4a3e202fdd1c107f0ed56 100644 --- a/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTriI.H +++ b/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTriI.H @@ -137,9 +137,7 @@ inline Foam::Istream& Foam::operator>>(Istream& is, labelledTri& t) is.read(reinterpret_cast<char*>(&t), sizeof(labelledTri)); } - // Check state of Ostream - is.check("Istream& operator>>(Istream&, labelledTri&)"); - + is.check(FUNCTION_NAME); return is; } @@ -161,9 +159,7 @@ inline Foam::Ostream& Foam::operator<<(Ostream& os, const labelledTri& t) ); } - // Check state of Ostream os.check(FUNCTION_NAME); - return os; } diff --git a/src/OpenFOAM/meshes/meshTools/mergePoints.C b/src/OpenFOAM/meshes/meshTools/mergePoints.C index 3fae7980550af9a6a40fa7338a72943eacb8c524..2b99235b72b3fabf38346b39b5937317c11c2567 100644 --- a/src/OpenFOAM/meshes/meshTools/mergePoints.C +++ b/src/OpenFOAM/meshes/meshTools/mergePoints.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -29,16 +29,18 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template<class Type> +template<class PointList> Foam::label Foam::mergePoints ( - const UList<Type>& points, + const PointList& points, const scalar mergeTol, const bool verbose, labelList& pointMap, - const Type& origin + typename PointList::const_reference origin ) { + typedef typename PointList::value_type point_type; + // Create a old to new point mapping array pointMap.setSize(points.size()); pointMap = -1; @@ -49,10 +51,10 @@ Foam::label Foam::mergePoints } // Explicitly convert to Field to support various list types - tmp<Field<Type>> tPoints(new Field<Type>(points)); + tmp<Field<point_type>> tPoints(new Field<point_type>(points)); - Type compareOrigin = origin; - if (origin == Type::max) + point_type compareOrigin = origin; + if (origin == point_type::max) { compareOrigin = sum(tPoints())/points.size(); } @@ -69,7 +71,7 @@ Foam::label Foam::mergePoints const scalar mergeTolSqr = Foam::sqr(scalar(mergeTol)); // Sort points by magSqr - const Field<Type> d(tPoints - compareOrigin); + const Field<point_type> d(tPoints - compareOrigin); List<scalar> magSqrD(d.size()); forAll(d, pointi) @@ -77,15 +79,16 @@ Foam::label Foam::mergePoints magSqrD[pointi] = magSqr(d[pointi]); } labelList order; - sortedOrder(magSqrD, order); + Foam::sortedOrder(magSqrD, order); Field<scalar> sortedTol(points.size()); forAll(order, sortI) { - label pointi = order[sortI]; + const label pointi = order[sortI]; // Convert to scalar precision + // NOTE: not yet using point_type template parameter const point pt ( scalar(d[pointi].x()), @@ -104,9 +107,11 @@ Foam::label Foam::mergePoints for (label sortI = 1; sortI < order.size(); sortI++) { // Get original point index - label pointi = order[sortI]; + const label pointi = order[sortI]; const scalar mag2 = magSqrD[order[sortI]]; + // Convert to scalar precision + // NOTE: not yet using point_type template parameter const point pt ( scalar(points[pointi].x()), @@ -126,7 +131,10 @@ Foam::label Foam::mergePoints prevSortI-- ) { - label prevPointi = order[prevSortI]; + const label prevPointi = order[prevSortI]; + + // Convert to scalar precision + // NOTE: not yet using point_type template parameter const point prevPt ( scalar(points[prevPointi].x()), @@ -169,18 +177,18 @@ Foam::label Foam::mergePoints } -template<class Type> +template<class PointList> bool Foam::mergePoints ( - const UList<Type>& points, + const PointList& points, const scalar mergeTol, const bool verbose, labelList& pointMap, - List<Type>& newPoints, - const Type& origin + List<typename PointList::value_type>& newPoints, + typename PointList::const_reference origin ) { - label nUnique = mergePoints + const label nUnique = mergePoints ( points, mergeTol, diff --git a/src/OpenFOAM/meshes/meshTools/mergePoints.H b/src/OpenFOAM/meshes/meshTools/mergePoints.H index 37d41f3e7b3226aa3691095f5342d5acdecf627e..791075d04a4fbd197bc55c609b240d8414b5c724 100644 --- a/src/OpenFOAM/meshes/meshTools/mergePoints.H +++ b/src/OpenFOAM/meshes/meshTools/mergePoints.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -46,27 +46,28 @@ namespace Foam //- Sorts and merges points. All points closer than/equal mergeTol get merged. // Returns the number of unique points and a map from old to new. -template<class Type> +template<class PointList> label mergePoints ( - const UList<Type>& points, + const PointList& points, const scalar mergeTol, const bool verbose, labelList& pointMap, - const Type& origin = Type::zero + typename PointList::const_reference origin = PointList::value_type::zero ); + //- Sorts and merges points. Determines new points. Returns true if anything // merged (though newPoints still sorted even if not merged). -template<class Type> +template<class PointList> bool mergePoints ( - const UList<Type>& points, + const PointList& points, const scalar mergeTol, const bool verbose, labelList& pointMap, - List<Type>& newPoints, - const Type& origin = Type::zero + List<typename PointList::value_type>& newPoints, + typename PointList::const_reference origin = PointList::value_type::zero ); } // End namespace Foam diff --git a/src/OpenFOAM/meshes/pointMesh/pointBoundaryMesh/pointBoundaryMesh.C b/src/OpenFOAM/meshes/pointMesh/pointBoundaryMesh/pointBoundaryMesh.C index 7ba9428d372bd7846a8b94afbf8f14f7bde470e6..b466bbc30f3b6493f50155556a263684aa787133 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointBoundaryMesh/pointBoundaryMesh.C +++ b/src/OpenFOAM/meshes/pointMesh/pointBoundaryMesh/pointBoundaryMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,8 +80,8 @@ void Foam::pointBoundaryMesh::calcGeometry() if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -96,7 +96,7 @@ void Foam::pointBoundaryMesh::calcGeometry() operator[](patchi).calcGeometry(pBufs); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); @@ -126,8 +126,8 @@ void Foam::pointBoundaryMesh::movePoints(const pointField& p) if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -142,7 +142,7 @@ void Foam::pointBoundaryMesh::movePoints(const pointField& p) operator[](patchi).movePoints(pBufs, p); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); @@ -172,8 +172,8 @@ void Foam::pointBoundaryMesh::updateMesh() if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -188,7 +188,7 @@ void Foam::pointBoundaryMesh::updateMesh() operator[](patchi).updateMesh(pBufs); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H index 5e2ff81d1efd073de440b2b5dcded610fa4abdf9..50492f31662253007eada02248ff4a69c739fc96 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -161,7 +161,8 @@ public: const UList<Type>& fld, List<Type>& allFld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ); //- Collect data in processor order on master (== procIDs[0]). @@ -174,7 +175,8 @@ public: const UList<Type>& fld, List<Type>& allFld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ) const { gather(offsets_, comm, procIDs, fld, allFld, tag, commsType); @@ -190,7 +192,8 @@ public: const labelList& procIDs, List<Type>& fld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ); //- Inplace collect data in processor order on master @@ -202,7 +205,8 @@ public: const labelList& procIDs, List<Type>& fld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ) const { gather(offsets_, comm, procIDs, fld, tag, commsType); @@ -218,7 +222,8 @@ public: const UList<Type>& allFld, UList<Type>& fld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ); //- Distribute data in processor order. Requires fld to be sized! @@ -230,7 +235,8 @@ public: const UList<Type>& allFld, UList<Type>& fld, const int tag = UPstream::msgType(), - const Pstream::commsTypes commsType=Pstream::nonBlocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::nonBlocking ) const { scatter(offsets_, comm, procIDs, allFld, fld, tag, commsType); diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C index 3be3a3a90b668f6baf3e2c3c4acd966ef804e6bf..de3a7bb9f1097a7a8843e688989df0ee05603075 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,7 +46,11 @@ void Foam::globalIndex::gather // Assign my local data SubList<Type>(allFld, fld.size(), 0) = fld; - if (commsType == Pstream::scheduled || commsType == Pstream::blocking) + if + ( + commsType == Pstream::commsTypes::scheduled + || commsType == Pstream::commsTypes::blocking + ) { for (label i = 1; i < procIDs.size(); i++) { @@ -113,7 +117,11 @@ void Foam::globalIndex::gather } else { - if (commsType == Pstream::scheduled || commsType == Pstream::blocking) + if + ( + commsType == Pstream::commsTypes::scheduled + || commsType == Pstream::commsTypes::blocking + ) { if (contiguous<Type>()) { @@ -209,7 +217,11 @@ void Foam::globalIndex::scatter { fld.deepCopy(SubList<Type>(allFld, off[1]-off[0])); - if (commsType == Pstream::scheduled || commsType == Pstream::blocking) + if + ( + commsType == Pstream::commsTypes::scheduled + || commsType == Pstream::commsTypes::blocking + ) { for (label i = 1; i < procIDs.size(); i++) { @@ -286,7 +298,11 @@ void Foam::globalIndex::scatter } else { - if (commsType == Pstream::scheduled || commsType == Pstream::blocking) + if + ( + commsType == Pstream::commsTypes::scheduled + || commsType == Pstream::commsTypes::blocking + ) { if (contiguous<Type>()) { diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C index 60a22158d6c838524feb90ee8abf9cc973dbe2fb..81dbaf798d8e96f33f89aacead1876bbe72c34ff 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -84,7 +84,7 @@ void Foam::globalMeshData::initProcAddr() if (Pstream::parRun()) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send indices of my processor patches to my neighbours forAll(processorPatches_, i) @@ -401,7 +401,7 @@ void Foam::globalMeshData::calcSharedEdges() const ) { // Receive the edges using shared points from the slave. - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); EdgeMap<labelList> procSharedEdges(fromSlave); if (debug) @@ -450,7 +450,7 @@ void Foam::globalMeshData::calcSharedEdges() const ) { // Receive the edges using shared points from the slave. - OPstream toSlave(Pstream::blocking, slave); + OPstream toSlave(Pstream::commsTypes::blocking, slave); toSlave << globalShared; } } @@ -459,14 +459,20 @@ void Foam::globalMeshData::calcSharedEdges() const { // Send local edges to master { - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); - + OPstream toMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); toMaster << localShared; } // Receive merged edges from master. { - IPstream fromMaster(Pstream::blocking, Pstream::masterNo()); - + IPstream fromMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); fromMaster >> globalShared; } } @@ -1920,7 +1926,7 @@ Foam::pointField Foam::globalMeshData::sharedPoints() const slave++ ) { - IPstream fromSlave(Pstream::blocking, slave); + IPstream fromSlave(Pstream::commsTypes::blocking, slave); labelList nbrSharedPointAddr; pointField nbrSharedPoints; @@ -1944,7 +1950,7 @@ Foam::pointField Foam::globalMeshData::sharedPoints() const { OPstream toSlave ( - Pstream::blocking, + Pstream::commsTypes::blocking, slave, sharedPoints.size()*sizeof(Zero) ); @@ -1956,8 +1962,11 @@ Foam::pointField Foam::globalMeshData::sharedPoints() const // Slave: // send points { - OPstream toMaster(Pstream::blocking, Pstream::masterNo()); - + OPstream toMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); toMaster << pointAddr << UIndirectList<point>(mesh_.points(), pointLabels)(); @@ -1965,7 +1974,11 @@ Foam::pointField Foam::globalMeshData::sharedPoints() const // Receive sharedPoints { - IPstream fromMaster(Pstream::blocking, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::blocking, + Pstream::masterNo() + ); fromMaster >> sharedPoints; } } diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C index 88b3113a58b09475cb90be09664a617d8d1bf07d..2cace80f4b5cb73f23f374b155301ccc857928f4 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -901,8 +901,8 @@ void Foam::globalPoints::calculateSharedPoints PstreamBuffers pBufs ( ( - Pstream::defaultCommsType == Pstream::scheduled - ? Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::scheduled + ? Pstream::commsTypes::nonBlocking : Pstream::defaultCommsType ) ); @@ -939,8 +939,8 @@ void Foam::globalPoints::calculateSharedPoints PstreamBuffers pBufs ( ( - Pstream::defaultCommsType == Pstream::scheduled - ? Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::scheduled + ? Pstream::commsTypes::nonBlocking : Pstream::defaultCommsType ) ); diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C index 800dfd4d80acaf1288f23d07a1d9bdccb7aa7b91..d1fc64caea5147836a5dd2123e566399580cdef0 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C @@ -545,7 +545,7 @@ void Foam::mapDistribute::operator=(const mapDistribute& rhs) Foam::Istream& Foam::operator>>(Istream& is, mapDistribute& map) { - is.fatalCheck("operator>>(Istream&, mapDistribute&)"); + is.fatalCheck(FUNCTION_NAME); is >> static_cast<mapDistributeBase&>(map) >> map.transformElements_ >> map.transformStart_; diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C index ece914d8c0ee02925af3c4a5e2519ca7daeb9cff..fce5b416c3c438b0163d9e05ef41a8f92823eeff 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -84,7 +84,7 @@ Foam::List<Foam::labelPair> Foam::mapDistributeBase::schedule slave++ ) { - IPstream fromSlave(Pstream::scheduled, slave, 0, tag); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave, 0, tag); List<labelPair> nbrData(fromSlave); forAll(nbrData, i) @@ -105,20 +105,26 @@ Foam::List<Foam::labelPair> Foam::mapDistributeBase::schedule slave++ ) { - OPstream toSlave(Pstream::scheduled, slave, 0, tag); + OPstream toSlave(Pstream::commsTypes::scheduled, slave, 0, tag); toSlave << allComms; } } else { { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo(), 0, tag); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo(), + 0, + tag + ); toMaster << allComms; } { IPstream fromMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), 0, tag @@ -861,7 +867,7 @@ void Foam::mapDistributeBase::compact(const boolList& elemIsUsed, const int tag) recvFields[domain].setSize(map.size()); IPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<char*>(recvFields[domain].begin()), recvFields[domain].size()*sizeof(bool), @@ -894,7 +900,7 @@ void Foam::mapDistributeBase::compact(const boolList& elemIsUsed, const int tag) OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<const char*>(subField.begin()), subField.size()*sizeof(bool), @@ -1028,7 +1034,7 @@ void Foam::mapDistributeBase::compact recvFields[domain].setSize(map.size()); IPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<char*>(recvFields[domain].begin()), recvFields[domain].size()*sizeof(bool), @@ -1060,7 +1066,7 @@ void Foam::mapDistributeBase::compact OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<const char*>(subField.begin()), subField.size()*sizeof(bool), @@ -1242,7 +1248,7 @@ void Foam::mapDistributeBase::operator=(const mapDistributeBase& rhs) Foam::Istream& Foam::operator>>(Istream& is, mapDistributeBase& map) { - is.fatalCheck("operator>>(Istream&, mapDistributeBase&)"); + is.fatalCheck(FUNCTION_NAME); is >> map.constructSize_ >> map.subMap_ >> map.constructMap_ >> map.subHasFlip_ >> map.constructHasFlip_; diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.H b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.H index 76b9d2ea493127ec2c20a5d16c7b34d222f491ce..f469a6876b2ebc1e6139fc78d74a8a574e200e07 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.H +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -364,8 +364,9 @@ public: const int tag = UPstream::msgType() ); - //- Distribute data. Note:schedule only used for Pstream::scheduled - // for now, all others just use send-to-all, receive-from-all. + //- Distribute data. Note:schedule only used for + // Pstream::commsTypes::scheduled for now, all others just use + // send-to-all, receive-from-all. template<class T, class negateOp> static void distribute ( diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C index b6ba7799e3108716f4e405948ad7f58a74c415cf..82d03af3107f728a770e52990763c1a00c92ea38 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -159,7 +159,7 @@ void Foam::mapDistributeBase::distribute return; } - if (commsType == Pstream::blocking) + if (commsType == Pstream::commsTypes::blocking) { // Since buffered sending can reuse the field to collect the // received data. @@ -171,7 +171,7 @@ void Foam::mapDistributeBase::distribute if (domain != Pstream::myProcNo() && map.size()) { - OPstream toNbr(Pstream::blocking, domain, 0, tag); + OPstream toNbr(Pstream::commsTypes::blocking, domain, 0, tag); List<T> subField(map.size()); forAll(subField, i) @@ -219,7 +219,7 @@ void Foam::mapDistributeBase::distribute if (domain != Pstream::myProcNo() && map.size()) { - IPstream fromNbr(Pstream::blocking, domain, 0, tag); + IPstream fromNbr(Pstream::commsTypes::blocking, domain, 0, tag); List<T> subField(fromNbr); checkReceivedSize(domain, map.size(), subField.size()); @@ -236,7 +236,7 @@ void Foam::mapDistributeBase::distribute } } } - else if (commsType == Pstream::scheduled) + else if (commsType == Pstream::commsTypes::scheduled) { // Need to make sure I don't overwrite field with received data // since the data might need to be sent to another processor. So @@ -285,7 +285,13 @@ void Foam::mapDistributeBase::distribute { // I am send first, receive next { - OPstream toNbr(Pstream::scheduled, recvProc, 0, tag); + OPstream toNbr + ( + Pstream::commsTypes::scheduled, + recvProc, + 0, + tag + ); const labelList& map = subMap[recvProc]; List<T> subField(map.size()); @@ -302,7 +308,13 @@ void Foam::mapDistributeBase::distribute toNbr << subField; } { - IPstream fromNbr(Pstream::scheduled, recvProc, 0, tag); + IPstream fromNbr + ( + Pstream::commsTypes::scheduled, + recvProc, + 0, + tag + ); List<T> subField(fromNbr); const labelList& map = constructMap[recvProc]; @@ -324,7 +336,13 @@ void Foam::mapDistributeBase::distribute { // I am receive first, send next { - IPstream fromNbr(Pstream::scheduled, sendProc, 0, tag); + IPstream fromNbr + ( + Pstream::commsTypes::scheduled, + sendProc, + 0, + tag + ); List<T> subField(fromNbr); const labelList& map = constructMap[sendProc]; @@ -342,7 +360,13 @@ void Foam::mapDistributeBase::distribute ); } { - OPstream toNbr(Pstream::scheduled, sendProc, 0, tag); + OPstream toNbr + ( + Pstream::commsTypes::scheduled, + sendProc, + 0, + tag + ); const labelList& map = subMap[sendProc]; List<T> subField(map.size()); @@ -362,13 +386,13 @@ void Foam::mapDistributeBase::distribute } field.transfer(newField); } - else if (commsType == Pstream::nonBlocking) + else if (commsType == Pstream::commsTypes::nonBlocking) { label nOutstanding = Pstream::nRequests(); if (!contiguous<T>()) { - PstreamBuffers pBufs(Pstream::nonBlocking, tag); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking, tag); // Stream data into buffer for (label domain = 0; domain < Pstream::nProcs(); domain++) @@ -484,7 +508,7 @@ void Foam::mapDistributeBase::distribute OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<const char*>(subField.begin()), subField.byteSize(), @@ -506,7 +530,7 @@ void Foam::mapDistributeBase::distribute recvFields[domain].setSize(map.size()); IPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<char*>(recvFields[domain].begin()), recvFields[domain].byteSize(), @@ -591,7 +615,7 @@ void Foam::mapDistributeBase::distribute else { FatalErrorInFunction - << "Unknown communication schedule " << commsType + << "Unknown communication schedule " << int(commsType) << abort(FatalError); } } @@ -638,7 +662,7 @@ void Foam::mapDistributeBase::distribute return; } - if (commsType == Pstream::blocking) + if (commsType == Pstream::commsTypes::blocking) { // Since buffered sending can reuse the field to collect the // received data. @@ -650,7 +674,7 @@ void Foam::mapDistributeBase::distribute if (domain != Pstream::myProcNo() && map.size()) { - OPstream toNbr(Pstream::blocking, domain, 0, tag); + OPstream toNbr(Pstream::commsTypes::blocking, domain, 0, tag); List<T> subField(map.size()); forAll(subField, i) { @@ -690,7 +714,7 @@ void Foam::mapDistributeBase::distribute if (domain != Pstream::myProcNo() && map.size()) { - IPstream fromNbr(Pstream::blocking, domain, 0, tag); + IPstream fromNbr(Pstream::commsTypes::blocking, domain, 0, tag); List<T> subField(fromNbr); checkReceivedSize(domain, map.size(), subField.size()); @@ -707,7 +731,7 @@ void Foam::mapDistributeBase::distribute } } } - else if (commsType == Pstream::scheduled) + else if (commsType == Pstream::commsTypes::scheduled) { // Need to make sure I don't overwrite field with received data // since the data might need to be sent to another processor. So @@ -759,7 +783,13 @@ void Foam::mapDistributeBase::distribute { // I am send first, receive next { - OPstream toNbr(Pstream::scheduled, recvProc, 0, tag); + OPstream toNbr + ( + Pstream::commsTypes::scheduled, + recvProc, + 0, + tag + ); const labelList& map = subMap[recvProc]; @@ -777,7 +807,13 @@ void Foam::mapDistributeBase::distribute toNbr << subField; } { - IPstream fromNbr(Pstream::scheduled, recvProc, 0, tag); + IPstream fromNbr + ( + Pstream::commsTypes::scheduled, + recvProc, + 0, + tag + ); List<T> subField(fromNbr); const labelList& map = constructMap[recvProc]; @@ -798,7 +834,13 @@ void Foam::mapDistributeBase::distribute { // I am receive first, send next { - IPstream fromNbr(Pstream::scheduled, sendProc, 0, tag); + IPstream fromNbr + ( + Pstream::commsTypes::scheduled, + sendProc, + 0, + tag + ); List<T> subField(fromNbr); const labelList& map = constructMap[sendProc]; @@ -815,7 +857,13 @@ void Foam::mapDistributeBase::distribute ); } { - OPstream toNbr(Pstream::scheduled, sendProc, 0, tag); + OPstream toNbr + ( + Pstream::commsTypes::scheduled, + sendProc, + 0, + tag + ); const labelList& map = subMap[sendProc]; @@ -836,13 +884,13 @@ void Foam::mapDistributeBase::distribute } field.transfer(newField); } - else if (commsType == Pstream::nonBlocking) + else if (commsType == Pstream::commsTypes::nonBlocking) { label nOutstanding = Pstream::nRequests(); if (!contiguous<T>()) { - PstreamBuffers pBufs(Pstream::nonBlocking, tag); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking, tag); // Stream data into buffer for (label domain = 0; domain < Pstream::nProcs(); domain++) @@ -961,7 +1009,7 @@ void Foam::mapDistributeBase::distribute OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<const char*>(subField.begin()), subField.size()*sizeof(T), @@ -983,7 +1031,7 @@ void Foam::mapDistributeBase::distribute recvFields[domain].setSize(map.size()); UIPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, domain, reinterpret_cast<char*>(recvFields[domain].begin()), recvFields[domain].size()*sizeof(T), @@ -1067,7 +1115,7 @@ void Foam::mapDistributeBase::distribute else { FatalErrorInFunction - << "Unknown communication schedule " << commsType + << "Unknown communication schedule " << int(commsType) << abort(FatalError); } } @@ -1155,11 +1203,11 @@ void Foam::mapDistributeBase::distribute const int tag ) const { - if (Pstream::defaultCommsType == Pstream::nonBlocking) + if (Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking) { distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), constructSize_, subMap_, @@ -1171,11 +1219,11 @@ void Foam::mapDistributeBase::distribute tag ); } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, schedule(), constructSize_, subMap_, @@ -1191,7 +1239,7 @@ void Foam::mapDistributeBase::distribute { distribute ( - Pstream::blocking, + Pstream::commsTypes::blocking, List<labelPair>(), constructSize_, subMap_, @@ -1245,11 +1293,11 @@ void Foam::mapDistributeBase::reverseDistribute const int tag ) const { - if (Pstream::defaultCommsType == Pstream::nonBlocking) + if (Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking) { distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), constructSize, constructMap_, @@ -1261,11 +1309,11 @@ void Foam::mapDistributeBase::reverseDistribute tag ); } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, schedule(), constructSize, constructMap_, @@ -1281,7 +1329,7 @@ void Foam::mapDistributeBase::reverseDistribute { distribute ( - Pstream::blocking, + Pstream::commsTypes::blocking, List<labelPair>(), constructSize, constructMap_, @@ -1308,11 +1356,11 @@ void Foam::mapDistributeBase::reverseDistribute const int tag ) const { - if (Pstream::defaultCommsType == Pstream::nonBlocking) + if (Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking) { distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), constructSize, constructMap_, @@ -1326,11 +1374,11 @@ void Foam::mapDistributeBase::reverseDistribute tag ); } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, schedule(), constructSize, constructMap_, @@ -1348,7 +1396,7 @@ void Foam::mapDistributeBase::reverseDistribute { distribute ( - Pstream::blocking, + Pstream::commsTypes::blocking, List<labelPair>(), constructSize, constructMap_, diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributePolyMesh.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributePolyMesh.C index 4adda18a496961cbd8792797ae7ffa90d3cd7508..2f44c1d9a6a58373fe12de6e178a43471c1e9899 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributePolyMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributePolyMesh.C @@ -309,7 +309,7 @@ void Foam::mapDistributePolyMesh::operator=(const mapDistributePolyMesh& rhs) Foam::Istream& Foam::operator>>(Istream& is, mapDistributePolyMesh& map) { - is.fatalCheck("operator>>(Istream&, mapDistributePolyMesh&)"); + is.fatalCheck(FUNCTION_NAME); is >> map.nOldPoints_ >> map.nOldFaces_ diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/objectMap/objectMapI.H b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/objectMap/objectMapI.H index 878452a62aafb82f216f5fe478f2db0d304db78e..1563a11fcc63b2825f57cf5f6c1e5184dfaa2176 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/objectMap/objectMapI.H +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/objectMap/objectMapI.H @@ -58,8 +58,7 @@ inline objectMap::objectMap(Istream& is) // Read master of objectMap is.readEnd("objectMap"); - // Check state of Istream - is.check("objectMap::objectMap(Istream&)"); + is.check(FUNCTION_NAME); } @@ -115,9 +114,7 @@ inline Ostream& operator<<(Ostream& os, const objectMap& a) << a.masterObjects_ << token::END_LIST; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const objectMap&)"); - + os.check(FUNCTION_NAME); return os; } @@ -128,9 +125,7 @@ inline Istream& operator>>(Istream& is, objectMap& a) is >> a.index_ >> a.masterObjects_; is.readEnd("objectMap"); - // Check state of Istream - is.check("Istream& operator>>(Istream&, objectMap&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C index f7068f4249033117ac57d5244b06f8815494816b..4790770647978217d20c7dad3a2b0847552278cb 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,12 +86,7 @@ Foam::polyBoundaryMesh::polyBoundaryMesh ); } - // Check state of IOstream - is.check - ( - "polyBoundaryMesh::polyBoundaryMesh" - "(const IOobject&, const polyMesh&)" - ); + is.check(FUNCTION_NAME); close(); } @@ -155,12 +150,7 @@ Foam::polyBoundaryMesh::polyBoundaryMesh ); } - // Check state of IOstream - is.check - ( - "polyBoundaryMesh::polyBoundaryMesh" - "(const IOobject&, const polyMesh&, const polyPatchList&)" - ); + is.check(FUNCTION_NAME); close(); } @@ -212,8 +202,8 @@ void Foam::polyBoundaryMesh::calcGeometry() if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -228,7 +218,7 @@ void Foam::polyBoundaryMesh::calcGeometry() operator[](patchi).calcGeometry(pBufs); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); @@ -992,8 +982,8 @@ void Foam::polyBoundaryMesh::movePoints(const pointField& p) if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -1008,7 +998,7 @@ void Foam::polyBoundaryMesh::movePoints(const pointField& p) operator[](patchi).movePoints(pBufs, p); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); @@ -1042,8 +1032,8 @@ void Foam::polyBoundaryMesh::updateMesh() if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { forAll(*this, patchi) @@ -1058,7 +1048,7 @@ void Foam::polyBoundaryMesh::updateMesh() operator[](patchi).updateMesh(pBufs); } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = mesh().globalData().patchSchedule(); @@ -1121,9 +1111,7 @@ bool Foam::polyBoundaryMesh::writeData(Ostream& os) const os << decrIndent << token::END_LIST; - // Check state of IOstream - os.check("polyBoundaryMesh::writeData(Ostream& os) const"); - + os.check(FUNCTION_NAME); return os.good(); } diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.C b/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.C index 8e0d4f3581a7fd4ae504a68f796781dec9484027..bfe4e2088ef877d2af5af7cf94c8a228ffb41c02 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshTetDecomposition/tetIndices.C @@ -114,12 +114,7 @@ Foam::Istream& Foam::operator>>(Istream& is, tetIndices& tI) >> tI.facePtB() >> tI.tetPt(); - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::tetIndices&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -134,13 +129,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const tetIndices& tI) << tI.tetPt() << token::SPACE << endl; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::tetIndices&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C index 546702bb54ec7ac9c5fd8cdf7f4a83e13436a0a8..7a26581fe7baa08483851392317370989678fd84 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C @@ -421,7 +421,7 @@ void Foam::polyPatch::operator=(const polyPatch& p) Foam::Ostream& Foam::operator<<(Ostream& os, const polyPatch& p) { p.write(os); - os.check("Ostream& operator<<(Ostream& os, const polyPatch& p"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C b/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C index acd3a0075821beb10f1e24f36ce5d9eaf9d425eb..4f5ad0b5c6d93c15c94a9829ba769712274c9dc5 100644 --- a/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -129,7 +129,7 @@ void Foam::syncTools::syncPointMap if (Pstream::parRun()) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send @@ -311,7 +311,7 @@ void Foam::syncTools::syncPointMap slave++ ) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); Map<T> nbrValues(fromSlave); // Merge neighbouring values with my values @@ -335,7 +335,7 @@ void Foam::syncTools::syncPointMap slave++ ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << sharedPointValues; } } @@ -343,14 +343,18 @@ void Foam::syncTools::syncPointMap { // Slave: send to master { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster << sharedPointValues; } // Receive merged values { IPstream fromMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo() ); fromMaster >> sharedPointValues; @@ -405,7 +409,7 @@ void Foam::syncTools::syncEdgeMap if (Pstream::parRun()) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send @@ -687,7 +691,7 @@ void Foam::syncTools::syncEdgeMap slave++ ) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); EdgeMap<T> nbrValues(fromSlave); // Merge neighbouring values with my values @@ -712,7 +716,7 @@ void Foam::syncTools::syncEdgeMap ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << sharedEdgeValues; } } @@ -720,12 +724,20 @@ void Foam::syncTools::syncEdgeMap { // Send to master { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster << sharedEdgeValues; } // Receive merged values { - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); fromMaster >> sharedEdgeValues; } } @@ -799,7 +811,7 @@ void Foam::syncTools::syncEdgeMap // // if (Pstream::parRun()) // { -// PstreamBuffers pBufs(Pstream::nonBlocking); +// PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // // // Send // @@ -1302,7 +1314,7 @@ void Foam::syncTools::syncBoundaryFaceList if (parRun) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send @@ -1422,7 +1434,7 @@ void Foam::syncTools::syncFaceList if (parRun) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send diff --git a/src/OpenFOAM/meshes/polyMesh/zones/cellZone/cellZone.C b/src/OpenFOAM/meshes/polyMesh/zones/cellZone/cellZone.C index a408ec87a77b5a62fb86bfac84b3d640369fda72..c59ec220911ca966e40cc645db8504a42aae7658 100644 --- a/src/OpenFOAM/meshes/polyMesh/zones/cellZone/cellZone.C +++ b/src/OpenFOAM/meshes/polyMesh/zones/cellZone/cellZone.C @@ -173,7 +173,7 @@ void Foam::cellZone::operator=(const Xfer<labelList>& addr) Foam::Ostream& Foam::operator<<(Ostream& os, const cellZone& zn) { zn.write(os); - os.check("Ostream& operator<<(Ostream&, const cellZone&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C index 9a6238c73354bc891e2683adcd61a8625bfb6f5a..459e8002d7e2372baa89ab58e073de6e1bcb3f4f 100644 --- a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C +++ b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C @@ -544,7 +544,7 @@ void Foam::faceZone::writeDict(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream& os, const faceZone& zn) { zn.write(os); - os.check("Ostream& operator<<(Ostream&, const faceZone&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/polyMesh/zones/pointZone/pointZone.C b/src/OpenFOAM/meshes/polyMesh/zones/pointZone/pointZone.C index ccb109025d180840bb8d470ca6e81fd92fe41b02..31680ccf1a0310b12077ce86c2f62af83c449d73 100644 --- a/src/OpenFOAM/meshes/polyMesh/zones/pointZone/pointZone.C +++ b/src/OpenFOAM/meshes/polyMesh/zones/pointZone/pointZone.C @@ -225,7 +225,7 @@ void Foam::pointZone::operator=(const Xfer<labelList>& addr) Foam::Ostream& Foam::operator<<(Ostream& os, const pointZone& zn) { zn.write(os); - os.check("Ostream& operator<<(Ostream&, const pointZone&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/polyMesh/zones/zone/zone.C b/src/OpenFOAM/meshes/polyMesh/zones/zone/zone.C index 8e26d4e81933da1535bf7bf40e8b95fce48409db..5ff0eebb7b49ed8985b29722c416e513dbd1d84a 100644 --- a/src/OpenFOAM/meshes/polyMesh/zones/zone/zone.C +++ b/src/OpenFOAM/meshes/polyMesh/zones/zone/zone.C @@ -242,7 +242,7 @@ void Foam::zone::write(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream& os, const zone& z) { z.write(os); - os.check("Ostream& operator<<(Ostream& f, const zone& z"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C index 85dbb2cdc825f0101eab8d7e74e77e772a47c0cd..d100ad3fe816a6f769985df7385e28df20108df1 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C +++ b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -182,7 +182,7 @@ void Foam::PatchTools::gatherAndMerge // Receive slave ones for (int slave=1; slave<Pstream::nProcs(); slave++) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointField slavePoints(fromSlave); List<FaceType> slaveFaces(fromSlave); @@ -210,7 +210,7 @@ void Foam::PatchTools::gatherAndMerge // be improved. OPstream toMaster ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, Pstream::masterNo(), myPoints.byteSize() + 4*sizeof(label)*myFaces.size() ); diff --git a/src/OpenFOAM/meshes/primitiveShapes/line/lineI.H b/src/OpenFOAM/meshes/primitiveShapes/line/lineI.H index c4757716cfc9ad71d0fd17e3eaac235a55ee8cbe..034f86878034c75a7e60b95cf812206f05b6ebd9 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/line/lineI.H +++ b/src/OpenFOAM/meshes/primitiveShapes/line/lineI.H @@ -280,7 +280,7 @@ inline Foam::Istream& Foam::operator>> is >> l.a_ >> l.b_; is.readEnd("line"); - is.check("Istream& operator>>(Istream&, line&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H index 13118adb01524280993bff4af8697135c4522a2b..63a8068cb510721c523670dec0f0d87a56f5445b 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H +++ b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointIndexHit.H @@ -212,12 +212,11 @@ public: ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const PointIndexHit&)"); - + os.check(FUNCTION_NAME); return os; } + friend Istream& operator>>(Istream& is, PointIndexHit& pHit) { if (is.format() == IOstream::ASCII) @@ -233,9 +232,7 @@ public: ); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, PointIndexHit&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/primitiveShapes/pyramid/pyramidI.H b/src/OpenFOAM/meshes/primitiveShapes/pyramid/pyramidI.H index 636990dcc681119a86a51aa5e3d83a933c831ba0..a657a889f8150b7ec82ea543da343926cc8332c3 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/pyramid/pyramidI.H +++ b/src/OpenFOAM/meshes/primitiveShapes/pyramid/pyramidI.H @@ -45,7 +45,7 @@ template<class Point, class PointRef, class polygonRef> inline Foam::pyramid<Point, PointRef, polygonRef>::pyramid(Istream& is) { is >> base_ >> apex_; - is.check("pyramid::pyramid(Istream&)"); + is.check(FUNCTION_NAME); } @@ -105,7 +105,7 @@ inline Foam::Istream& Foam::operator>> ) { is >> p.base_ >> p.apex_; - is.check("Istream& operator>>(Istream&, pyramid&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/primitiveShapes/tetrahedron/tetrahedronI.H b/src/OpenFOAM/meshes/primitiveShapes/tetrahedron/tetrahedronI.H index d95f42dc1ebe2fbf4198f0a848032b730168a6ae..b98fc15bb8088f36443445877435677f365ed3cf 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/tetrahedron/tetrahedronI.H +++ b/src/OpenFOAM/meshes/primitiveShapes/tetrahedron/tetrahedronI.H @@ -967,7 +967,7 @@ inline Foam::Istream& Foam::operator>> is >> t.a_ >> t.b_ >> t.c_ >> t.d_; is.readEnd("tetrahedron"); - is.check("Istream& operator>>(Istream&, tetrahedron&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H b/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H index 605e10589b58666229c99f26a676cf7e406ed268..7608c1ceb4058f6899ad1c527a410b8ab4efe1ab 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H +++ b/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H @@ -869,7 +869,7 @@ inline Foam::Istream& Foam::operator>> is >> t.a_ >> t.b_ >> t.c_; is.readEnd("triangle"); - is.check("Istream& operator>>(Istream&, triangle&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/orientedType/orientedType.C b/src/OpenFOAM/orientedType/orientedType.C new file mode 100644 index 0000000000000000000000000000000000000000..4a04453ac09a3da6e0190477bcaef7562c7db649 --- /dev/null +++ b/src/OpenFOAM/orientedType/orientedType.C @@ -0,0 +1,562 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "orientedType.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + template<> + const char* NamedEnum + < + orientedType::orientedOption, + 3 + >::names[] = + { + "oriented", + "unoriented", + "unknown" + }; +} + +const Foam::NamedEnum<Foam::orientedType::orientedOption, 3> + Foam::orientedType::orientedOptionNames; + + +bool Foam::orientedType::checkType +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + if + ( + (ot1.oriented() == UNKNOWN) + || (ot2.oriented() == UNKNOWN) + || (ot1.oriented() == ot2.oriented()) + ) + { + return true; + } + else + { + return false; + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::orientedType::orientedType() +: + oriented_(UNKNOWN) +{} + + +Foam::orientedType::orientedType(const orientedType& ot) +: + oriented_(ot.oriented_) +{} + + +Foam::orientedType::orientedType(const bool oriented) +: + oriented_(oriented ? ORIENTED : UNORIENTED) +{} + + +Foam::orientedType::orientedType(Istream& is) +: + oriented_(orientedOptionNames.read(is)) +{ + is.check(FUNCTION_NAME); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::orientedType::orientedOption& Foam::orientedType::oriented() +{ + return oriented_; +} + + +Foam::orientedType::orientedOption Foam::orientedType::oriented() const +{ + return oriented_; +} + + +void Foam::orientedType::setOriented(const bool oriented) +{ + oriented_ = oriented ? ORIENTED : UNORIENTED; +} + + +void Foam::orientedType::read(const dictionary& dict) +{ + if (dict.found("oriented")) + { + oriented_ = orientedOptionNames.read(dict.lookup("oriented")); + } + else + { + oriented_ = UNKNOWN; + } +} + + +void Foam::orientedType::writeEntry(Ostream& os) const +{ + if (oriented_ == ORIENTED) + { + os.writeEntry("oriented", orientedOptionNames[oriented_]); + } +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +void Foam::orientedType::operator=(const orientedType& ot) +{ + // Oriented state is inherited on assignment + oriented_ = ot.oriented(); +} + + +void Foam::orientedType::operator+=(const orientedType& ot) +{ + // Set the oriented status if it was unknown + if (oriented_ == UNKNOWN) + { + oriented_ = ot.oriented(); + } + + if (!checkType(*this, ot)) + { + FatalErrorInFunction + << "Operator += is undefined for " + << orientedOptionNames[oriented_] << " and " + << orientedOptionNames[ot.oriented()] << " types" + << abort(FatalError); + } +} + + +void Foam::orientedType::operator-=(const orientedType& ot) +{ + // Set the oriented status if it was unknown + if (oriented_ == UNKNOWN) + { + oriented_ = ot.oriented(); + } + + if (!checkType(*this, ot)) + { + FatalErrorInFunction + << "Operator -= is undefined for " + << orientedOptionNames[oriented_] << " and " + << orientedOptionNames[ot.oriented()] << " types" + << abort(FatalError); + } +} + + +void Foam::orientedType::operator*=(const orientedType& ot) +{ + const orientedType& ot1 = *this; + if (ot1() ^ ot()) + { + oriented_ = ORIENTED; + } + else + { + oriented_ = UNORIENTED; + } +} + + +void Foam::orientedType::operator/=(const orientedType& ot) +{ + const orientedType& ot1 = *this; + if (ot1() ^ ot()) + { + oriented_ = ORIENTED; + } + else + { + oriented_ = UNORIENTED; + } +} + + +void Foam::orientedType::operator*=(const scalar s) +{ + // No change to oriented_ flag +} + + +void Foam::orientedType::operator/=(const scalar s) +{ + // No change to oriented_ flag +} + + +bool Foam::orientedType::operator()() const +{ + return oriented_ == ORIENTED; +} + + +// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // + +Foam::orientedType Foam::max(const orientedType& ot1, const orientedType& ot2) +{ + if (!orientedType::checkType(ot1, ot2)) + { + FatalErrorInFunction + << "Operator max is undefined for " + << orientedType::orientedOptionNames[ot1.oriented()] << " and " + << orientedType::orientedOptionNames[ot2.oriented()] << " types" + << abort(FatalError); + } + + return ot1; +} + + +Foam::orientedType Foam::min(const orientedType& ot1, const orientedType& ot2) +{ + if (!orientedType::checkType(ot1, ot2)) + { + FatalErrorInFunction + << "Operator min is undefined for " + << orientedType::orientedOptionNames[ot1.oriented()] << " and " + << orientedType::orientedOptionNames[ot2.oriented()] << "types" + << abort(FatalError); + } + + return ot1; +} + + +Foam::orientedType Foam::cmptMultiply +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return ot1 ^ ot2; +} + + +Foam::orientedType Foam::cmptDivide +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return ot1 ^ ot2; +} + + +Foam::orientedType Foam::cmptAv(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::pow(const orientedType& ot, const scalar r) +{ + // Undefined??? + // - only defined for integers where: + // - odd powers = oriented_ = yes (if ot is oriented) + // - even powers = oriented_ = no + return ot; +} + + +Foam::orientedType Foam::sqr(const orientedType& ot) +{ + return orientedType(false); +} + + +Foam::orientedType Foam::pow3(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::pow4(const orientedType& ot) +{ + return orientedType(false); +} + + +Foam::orientedType Foam::pow5(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::pow6(const orientedType& ot) +{ + return orientedType(false); +} + + +Foam::orientedType Foam::pow025(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::sqrt(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::cbrt(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::magSqr(const orientedType& ot) +{ + return orientedType(false); +} + + +Foam::orientedType Foam::mag(const orientedType& ot) +{ + return orientedType(false); +} + + +Foam::orientedType Foam::sign(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::pos(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::neg(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::posPart(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::negPart(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::inv(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::trans(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::atan2 +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + if (!orientedType::checkType(ot1, ot2)) + { + FatalErrorInFunction + << "Operator atan2 is undefined for " + << orientedType::orientedOptionNames[ot1.oriented()] << " and " + << orientedType::orientedOptionNames[ot2.oriented()] << "types" + << abort(FatalError); + } + + return ot1; +} + + +Foam::orientedType Foam::transform(const orientedType& ot) +{ + return ot; +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +Foam::Istream& Foam::operator>>(Istream& is, orientedType& ot) +{ + ot.oriented_ = orientedType::orientedOptionNames.read(is); + + is.check(FUNCTION_NAME); + + return is; +} + + +Foam::Ostream& Foam::operator<<(Ostream& os, const orientedType& ot) +{ + os << orientedType::orientedOptionNames[ot.oriented()]; + + os.check(FUNCTION_NAME); + + return os; +} + + +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // + +Foam::orientedType Foam::operator+ +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + if (!orientedType::checkType(ot1, ot2)) + { + FatalErrorInFunction + << "Operator + is undefined for " + << orientedType::orientedOptionNames[ot1.oriented()] << " and " + << orientedType::orientedOptionNames[ot2.oriented()] << " types" + << abort(FatalError); + } + + // Note use of () operators to convert to boolean op + return orientedType(ot1() || ot2()); +} + + +Foam::orientedType Foam::operator-(const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::operator- +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + if (!orientedType::checkType(ot1, ot2)) + { + FatalErrorInFunction + << "Operator - is undefined for " + << orientedType::orientedOptionNames[ot1.oriented()] << " and " + << orientedType::orientedOptionNames[ot2.oriented()] << " types" + << abort(FatalError); + } + + // Note use of () operators to convert to boolean op + return orientedType(ot1() || ot2()); +} + + +Foam::orientedType Foam::operator*(const scalar s, const orientedType& ot) +{ + return ot; +} + + +Foam::orientedType Foam::operator/(const orientedType& ot, const scalar s) +{ + return ot; +} + + +Foam::orientedType Foam::operator/ +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return ot1 ^ ot2; +} + + +Foam::orientedType Foam::operator* +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return ot1 ^ ot2; +} + + +Foam::orientedType Foam::operator^ +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + // Note use of () operators to convert to boolean op + return orientedType(ot1() ^ ot2()); +} + + +Foam::orientedType Foam::operator& +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return ot1 ^ ot2; +} + + +Foam::orientedType Foam::operator&& +( + const orientedType& ot1, + const orientedType& ot2 +) +{ + return orientedType(false); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/orientedType/orientedType.H b/src/OpenFOAM/orientedType/orientedType.H new file mode 100644 index 0000000000000000000000000000000000000000..d050f71dcb5aaeb960f7e2a7b4658d55b04f1b0f --- /dev/null +++ b/src/OpenFOAM/orientedType/orientedType.H @@ -0,0 +1,202 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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::orientedType + +Description + Class to determine the 'oriented' status of surface fields + +SourceFiles + orientedType.C + +\*---------------------------------------------------------------------------*/ + +#ifndef orientedType_H +#define orientedType_H + +#include "Istream.H" +#include "Ostream.H" +#include "dictionary.H" +#include "NamedEnum.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +class orientedType; + +Istream& operator>>(Istream&, orientedType&); + +Ostream& operator<<(Ostream&, const orientedType&); + +/*---------------------------------------------------------------------------*\ + Class orientedType Declaration +\*---------------------------------------------------------------------------*/ + +class orientedType +{ +public: + + // Public data types + + //- Enumeration defining the valid oriented flags + enum orientedOption + { + ORIENTED, + UNORIENTED, + UNKNOWN + }; + + static const NamedEnum<orientedOption, 3> orientedOptionNames; + + +private: + + // Private data + + //- Oriented flag + orientedOption oriented_; + + +public: + + // Constructors + + //- Null constructor - flag initialised to false + orientedType(); + + //- Copy constructor + orientedType(const orientedType& ot); + + //- Construct from bool + orientedType(const bool oriented); + + //- Construct from Istream + orientedType(Istream& is); + + + // Member functions + + //- Return true if can operate on this pair of oriented types + static bool checkType + ( + const orientedType& ot1, + const orientedType& ot2 + ); + + //- Return non-const reference to the oriented flag + orientedOption& oriented(); + + //- Return const reference to the oriented flag + orientedOption oriented() const; + + //- Set the oriented flag + void setOriented(const bool oriented = true); + + //- Read the oriented state from dictionary + void read(const dictionary& dict); + + //- Write the oriented flag entry + void writeEntry(Ostream& os) const; + + + // Member operators + + void operator=(const orientedType& ot); + + void operator+=(const orientedType& ot); + void operator-=(const orientedType& ot); + void operator*=(const orientedType& ot); + void operator/=(const orientedType& ot); + void operator*=(const scalar s); + void operator/=(const scalar s); + bool operator()() const; + + + // IOstream operators + + friend Istream& operator>>(Istream& is, orientedType& ot); + + friend Ostream& operator<<(Ostream& os, const orientedType& ot); +}; + + +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // + +orientedType max(const orientedType& ot1, const orientedType& ot2); +orientedType min(const orientedType& ot1, const orientedType& ot2); +orientedType cmptMultiply(const orientedType& ot1, const orientedType& ot2); +orientedType cmptDivide(const orientedType& ot1, const orientedType& ot); +orientedType cmptAv(const orientedType& ot); + + +orientedType pow(const orientedType& ot, const scalar r); +orientedType sqr(const orientedType& ot); +orientedType pow3(const orientedType& ot); +orientedType pow4(const orientedType& ot); +orientedType pow5(const orientedType& ot); +orientedType pow6(const orientedType& ot); +orientedType pow025(const orientedType& ot); + + +orientedType sqrt(const orientedType& ot); +orientedType cbrt(const orientedType& ot); +orientedType magSqr(const orientedType& ot); +orientedType mag(const orientedType& ot); +orientedType sign(const orientedType& ot); +orientedType pos(const orientedType& ot); +orientedType neg(const orientedType& ot); +orientedType posPart(const orientedType& ot); +orientedType negPart(const orientedType& ot); +orientedType inv(const orientedType& ot); + + +orientedType trans(const orientedType& ot); +orientedType atan2(const orientedType& ot1, const orientedType& ot2); +orientedType transform(const orientedType& ot); + +orientedType operator-(const orientedType& ot); +orientedType operator*(const scalar s, const orientedType& ot); +orientedType operator/(const orientedType& ot, const scalar s); + +orientedType operator+(const orientedType& ot1, const orientedType& ot2); +orientedType operator-(const orientedType& ot1, const orientedType& ot2); +orientedType operator/(const orientedType& ot1, const orientedType& ot2); +orientedType operator*(const orientedType& ot1, const orientedType& ot2); +orientedType operator^(const orientedType& ot1, const orientedType& ot2); +orientedType operator&(const orientedType& ot1, const orientedType& ot2); +orientedType operator&&(const orientedType& ot1, const orientedType& ot2); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.C b/src/OpenFOAM/primitives/Scalar/Scalar.C index a801378b2185b69ea7c06f4b172b7cd011005e10..941349cce66314793c405c09af1827db90a64c9e 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.C +++ b/src/OpenFOAM/primitives/Scalar/Scalar.C @@ -111,9 +111,7 @@ Istream& operator>>(Istream& is, Scalar& s) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, Scalar&)"); - + is.check(FUNCTION_NAME); return is; } @@ -121,7 +119,7 @@ Istream& operator>>(Istream& is, Scalar& s) Ostream& operator<<(Ostream& os, const Scalar s) { os.write(s); - os.check("Ostream& operator<<(Ostream&, const Scalar&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C index ec5920c6b7c2eacd55f0997fa1f45e262083d375..0914c279a4dab28bc85265fdd274029b3fefcf90 100644 --- a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C +++ b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "tensor.H" +#include "cubicEqn.H" #include "mathematicalConstants.H" using namespace Foam::constant::mathematical; @@ -70,125 +71,65 @@ const Foam::tensor Foam::tensor::I // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::vector Foam::eigenValues(const tensor& T) +Foam::vector Foam::eigenValues(const tensor& t) { - // The eigenvalues - scalar i, ii, iii; - - // diagonal matrix - const scalar onDiagMagSum = - ( - mag(T.xx()) + mag(T.yy()) + mag(T.zz()) - ); - - const scalar offDiagMagSum = - ( - mag(T.xy()) + mag(T.xz()) + mag(T.yx()) - + mag(T.yz()) + mag(T.zx()) + mag(T.zy()) - ); - - const scalar magSum = onDiagMagSum + offDiagMagSum; - - if (offDiagMagSum < max(VSMALL, SMALL*magSum)) + // Coefficients of the characteristic cubic polynomial (a = 1) + const scalar b = + - t.xx() - t.yy() - t.zz(); + const scalar c = + t.xx()*t.yy() + t.xx()*t.zz() + t.yy()*t.zz() + - t.xy()*t.yx() - t.yz()*t.zy() - t.zx()*t.xz(); + const scalar d = + - t.xx()*t.yy()*t.zz() + - t.xy()*t.yz()*t.zx() - t.xz()*t.zy()*t.yx() + + t.xx()*t.yz()*t.zy() + t.yy()*t.zx()*t.xz() + t.zz()*t.xy()*t.yx(); + + // Solve + Roots<3> roots = cubicEqn(1, b, c, d).roots(); + + // Check the root types + vector lambda = vector::zero; + forAll(roots, i) { - i = T.xx(); - ii = T.yy(); - iii = T.zz(); - } - - // non-diagonal matrix - else - { - // Coefficients of the characteristic polynmial - // x^3 + a*x^2 + b*x + c = 0 - scalar a = - - T.xx() - T.yy() - T.zz(); - - scalar b = - T.xx()*T.yy() + T.xx()*T.zz() + T.yy()*T.zz() - - T.xy()*T.yx() - T.yz()*T.zy() - T.zx()*T.xz(); - - scalar c = - - T.xx()*T.yy()*T.zz() - - T.xy()*T.yz()*T.zx() - T.xz()*T.zy()*T.yx() - + T.xx()*T.yz()*T.zy() + T.yy()*T.zx()*T.xz() + T.zz()*T.xy()*T.yx(); - - // Auxillary variables - scalar aBy3 = a/3; - - scalar P = (a*a - 3*b)/9; // == -p_wikipedia/3 - scalar PPP = P*P*P; - - scalar Q = (2*a*a*a - 9*a*b + 27*c)/54; // == q_wikipedia/2 - scalar QQ = Q*Q; - - // Three identical roots - if (mag(P) < SMALL*sqr(magSum) && mag(Q) < SMALL*pow3(magSum)) - { - return vector(- aBy3, - aBy3, - aBy3); - } - - // Two identical roots and one distinct root - else if (mag(PPP - QQ) < SMALL*pow6(magSum)) + switch (roots.type(i)) { - scalar sqrtP = sqrt(P); - scalar signQ = sign(Q); - - i = ii = signQ*sqrtP - aBy3; - iii = - 2*signQ*sqrtP - aBy3; - } - - // Three distinct roots - else if (PPP > QQ) - { - scalar sqrtP = sqrt(P); - scalar value = cos(acos(Q/sqrt(PPP))/3); - scalar delta = sqrt(3 - 3*value*value); - - i = - 2*sqrtP*value - aBy3; - ii = sqrtP*(value + delta) - aBy3; - iii = sqrtP*(value - delta) - aBy3; - } - - // One real root, two imaginary roots - // based on the above logic, PPP must be less than QQ - else - { - WarningInFunction - << "complex eigenvalues detected for tensor: " << T - << endl; - - if (mag(P) < SMALL*sqr(magSum)) - { - i = cbrt(QQ/2); - } - else - { - scalar w = cbrt(- Q - sqrt(QQ - PPP)); - i = w + P/w - aBy3; - } - - return vector(-VGREAT, i, VGREAT); + case roots::real: + lambda[i] = roots[i]; + break; + case roots::complex: + WarningInFunction + << "Complex eigenvalues detected for tensor: " << t + << endl; + lambda[i] = 0; + break; + case roots::posInf: + lambda[i] = VGREAT; + break; + case roots::negInf: + lambda[i] = - VGREAT; + break; + case roots::nan: + FatalErrorInFunction + << "Eigenvalue calculation failed for tensor: " << t + << exit(FatalError); } } // Sort the eigenvalues into ascending order - if (i > ii) + if (lambda.x() > lambda.y()) { - Swap(i, ii); + Swap(lambda.x(), lambda.y()); } - - if (ii > iii) + if (lambda.y() > lambda.z()) { - Swap(ii, iii); + Swap(lambda.y(), lambda.z()); } - - if (i > ii) + if (lambda.x() > lambda.y()) { - Swap(i, ii); + Swap(lambda.x(), lambda.y()); } - return vector(i, ii, iii); + return lambda; } diff --git a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C index 36f972525588a4e2e79a92a0be5902e73ffcc9b3..bf5a12aa7f5b77742f21230eae27e60e8c9ddb6a 100644 --- a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C +++ b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "tensor2D.H" +#include "quadraticEqn.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -85,95 +86,96 @@ const Foam::tensor2D Foam::tensor2D::I Foam::vector2D Foam::eigenValues(const tensor2D& t) { - scalar i = 0; - scalar ii = 0; + // Coefficients of the characteristic quadratic polynomial (a = 1) + const scalar b = - t.xx() - t.yy(); + const scalar c = t.xx()*t.yy() - t.xy()*t.yx(); - if (mag(t.xy()) < SMALL && mag(t.yx()) < SMALL) - { - i = t.xx(); - ii = t.yy(); - } - else - { - scalar mb = t.xx() + t.yy(); - scalar c = t.xx()*t.yy() - t.xy()*t.yx(); + // Solve + Roots<2> roots = quadraticEqn(1, b, c).roots(); - // If there is a zero root - if (mag(c) < SMALL) - { - i = 0; - ii = mb; - } - else + // Check the root types + vector2D lambda = vector2D::zero; + forAll(roots, i) + { + switch (roots.type(i)) { - scalar disc = sqr(mb) - 4*c; - - if (disc > 0) - { - scalar q = sqrt(disc); - - i = 0.5*(mb - q); - ii = 0.5*(mb + q); - } - else - { + case roots::real: + lambda[i] = roots[i]; + break; + case roots::complex: + WarningInFunction + << "Complex eigenvalues detected for tensor: " << t + << endl; + lambda[i] = 0; + break; + case roots::posInf: + lambda[i] = VGREAT; + break; + case roots::negInf: + lambda[i] = - VGREAT; + break; + case roots::nan: FatalErrorInFunction - << "zero and complex eigenvalues in tensor2D: " << t - << abort(FatalError); - } + << "Eigenvalue calculation failed for tensor: " << t + << exit(FatalError); } } // Sort the eigenvalues into ascending order - if (i > ii) + if (lambda.x() > lambda.y()) { - Swap(i, ii); + Swap(lambda.x(), lambda.y()); } - return vector2D(i, ii); + return lambda; } -Foam::vector2D Foam::eigenVector(const tensor2D& t, const scalar lambda) +Foam::vector2D Foam::eigenVector +( + const tensor2D& T, + const scalar lambda, + const vector2D& direction1 +) { - if (lambda < SMALL) - { - return vector2D::zero; - } + // Construct the linear system for this eigenvalue + tensor2D A(T - lambda*tensor2D::I); - if (mag(t.xy()) < SMALL && mag(t.yx()) < SMALL) + // Evaluate the eigenvector using the largest divisor + if (mag(A.yy()) > mag(A.xx()) && mag(A.yy()) > SMALL) { - if (lambda > min(t.xx(), t.yy())) - { - return vector2D(1, 0); - } - else - { - return vector2D(0, 1); - } - } - else if (mag(t.xy()) < SMALL) - { - return vector2D(lambda - t.yy(), t.yx()); + vector2D ev(1, - A.yx()/A.yy()); + + return ev/mag(ev); } - else + else if (mag(A.xx()) > SMALL) { - return vector2D(t.xy(), lambda - t.yy()); + vector2D ev(- A.xy()/A.xx(), 1); + + return ev/mag(ev); } + + // Repeated eigenvalue + return vector2D(- direction1.y(), direction1.x()); } -Foam::tensor2D Foam::eigenVectors(const tensor2D& t) +Foam::tensor2D Foam::eigenVectors(const tensor2D& T, const vector2D& lambdas) { - vector2D evals(eigenValues(t)); + vector2D Ux(1, 0), Uy(0, 1); + + Ux = eigenVector(T, lambdas.x(), Uy); + Uy = eigenVector(T, lambdas.y(), Ux); + + return tensor2D(Ux, Uy); +} + - tensor2D evs - ( - eigenVector(t, evals.x()), - eigenVector(t, evals.y()) - ); +Foam::tensor2D Foam::eigenVectors(const tensor2D& T) +{ + const vector2D lambdas(eigenValues(T)); - return evs; + return eigenVectors(T, lambdas); } diff --git a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H index 1b7cf2f60077c217574246f307b079005cf74430..feb7f0e2756693703de17b5135c98497c1c30eb7 100644 --- a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H +++ b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,13 @@ namespace Foam typedef Tensor2D<scalar> tensor2D; vector2D eigenValues(const tensor2D& t); -vector2D eigenVector(const tensor2D& t, const scalar lambda); +vector2D eigenVector +( + const tensor2D& t, + const scalar lambda, + const vector2D& direction1 +); +tensor2D eigenVectors(const tensor2D& t, const vector2D& lambdas); tensor2D eigenVectors(const tensor2D& t); //- Data associated with tensor2D type are contiguous diff --git a/src/OpenFOAM/primitives/Tuple2/Tuple2.H b/src/OpenFOAM/primitives/Tuple2/Tuple2.H index c19b645ddf384b5730a7c222c494046799a8904a..bf911ebc56bfc42ca40e2fdc66e558a7d9fee582 100644 --- a/src/OpenFOAM/primitives/Tuple2/Tuple2.H +++ b/src/OpenFOAM/primitives/Tuple2/Tuple2.H @@ -234,9 +234,7 @@ inline Istream& operator>>(Istream& is, Tuple2<Type1, Type2>& t2) is >> t2.f_ >> t2.s_; is.readEnd("Tuple2"); - // Check state of Istream - is.check("operator>>(Istream&, Tuple2<Type1, Type2>&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.C b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.C index baba05c6ec8bca3ca68944492e4ffd516088667b..27b68c50108d865d055c012c39161c922c75c718 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.C +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.C @@ -48,7 +48,7 @@ Foam::VectorSpace<Form, Cmpt, Ncmpts>::VectorSpace is.readEnd("VectorSpace<Form, Cmpt, Ncmpts>"); // Check state of Istream - is.check("VectorSpace<Form, Cmpt, Ncmpts>::VectorSpace(Istream&)"); + is.check(FUNCTION_NAME); } @@ -94,7 +94,7 @@ Foam::Istream& Foam::operator>> is.readEnd("VectorSpace<Form, Cmpt, Ncmpts>"); // Check state of Istream - is.check("operator>>(Istream&, VectorSpace<Form, Cmpt, Ncmpts>&)"); + is.check(FUNCTION_NAME); return is; } @@ -116,9 +116,7 @@ Foam::Ostream& Foam::operator<< os << token::END_LIST; - // Check state of Ostream - os.check("operator<<(Ostream&, const VectorSpace<Form, Cmpt, Ncmpts>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/chars/char/charIO.C b/src/OpenFOAM/primitives/chars/char/charIO.C index ca69b91e0598436f36db305ba408aa532fe0883c..583cd24b0cf1e8ae9ecd7fb7ca34de1ca5f86145 100644 --- a/src/OpenFOAM/primitives/chars/char/charIO.C +++ b/src/OpenFOAM/primitives/chars/char/charIO.C @@ -39,7 +39,7 @@ char Foam::readChar(Istream& is) Foam::Istream& Foam::operator>>(Istream& is, char& c) { is.read(c); - is.check("Istream& operator>>(Istream&, char&)"); + is.check(FUNCTION_NAME); return is; } @@ -47,7 +47,7 @@ Foam::Istream& Foam::operator>>(Istream& is, char& c) Foam::Ostream& Foam::operator<<(Ostream& os, const char c) { os.write(c); - os.check("Ostream& operator<<(Ostream&, const char)"); + os.check(FUNCTION_NAME); return os; } @@ -55,7 +55,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const char c) Foam::Ostream& Foam::operator<<(Ostream& os, const char* s) { os.write(s); - os.check("Ostream& operator<<(Ostream&, const char*)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/chars/wchar/wcharIO.C b/src/OpenFOAM/primitives/chars/wchar/wcharIO.C index a7bf57cddf029101ddd8011e9cc76ac0e1f779cd..fc710a52dd38901c60cd106cf83f4831f8e5ae25 100644 --- a/src/OpenFOAM/primitives/chars/wchar/wcharIO.C +++ b/src/OpenFOAM/primitives/chars/wchar/wcharIO.C @@ -95,7 +95,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const wchar_t wc) os.write(char(0xBD)); } - os.check("Ostream& operator<<(Ostream&, const wchar_t)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/complex/complex.C b/src/OpenFOAM/primitives/complex/complex.C index 91f9a529eed9599ca98112775eee49752fe7b933..959659c76b59c0c247feff1023123edb2c273c33 100644 --- a/src/OpenFOAM/primitives/complex/complex.C +++ b/src/OpenFOAM/primitives/complex/complex.C @@ -64,9 +64,7 @@ Foam::Istream& Foam::operator>>(Istream& is, complex& c) // Read end of complex is.readEnd("complex"); - // Check state of Istream - is.check("operator>>(Istream&, complex&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/enums/Enum.C b/src/OpenFOAM/primitives/enums/Enum.C new file mode 100644 index 0000000000000000000000000000000000000000..8b4f2100f0d8a03d772619074e8d863d5434c70a --- /dev/null +++ b/src/OpenFOAM/primitives/enums/Enum.C @@ -0,0 +1,238 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "Enum.H" +#include "dictionary.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class EnumType> +Foam::label Foam::Enum<EnumType>::getIndex(const word& enumName) const +{ + const label n = size(); + for (label idx=0; idx < n; ++idx) + { + if (names_[idx] == enumName) + { + return idx; + } + } + + return -1; +} + + +template<class EnumType> +Foam::label Foam::Enum<EnumType>::getIndex(const EnumType e) const +{ + const int val = int(e); + + const label n = size(); + for (label idx=0; idx < n; ++idx) + { + if (values_[idx] == val) + { + return idx; + } + } + + return -1; +} + + +template<class EnumType> +EnumType Foam::Enum<EnumType>::getEnum(const word& enumName) const +{ + const label idx = getIndex(enumName); + + if (idx < 0) + { + FatalErrorInFunction + << enumName << " is not in enumeration: " + << names_ << exit(FatalError); + } + + return EnumType(values_[idx]); +} + + +template<class EnumType> +const Foam::word& Foam::Enum<EnumType>::getName(const EnumType e) const +{ + const label idx = getIndex(e); + + if (idx < 0) + { + return word::null; + } + else + { + return names_[idx]; + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class EnumType> +Foam::Enum<EnumType>::Enum +( + std::initializer_list<std::pair<EnumType, word>> lst +) +: + names_(lst.size()), + values_(lst.size()) +{ + int idx = 0; + for (const auto& pair : lst) + { + names_[idx] = pair.second; + values_[idx] = int(pair.first); + + ++idx; + } +} + + +template<class EnumType> +Foam::Enum<EnumType>::Enum +( + const EnumType start, + std::initializer_list<word> lst +) +: + names_(lst.size()), + values_(lst.size()) +{ + int val = int(start); + + int idx = 0; + for (const auto& key : lst) + { + names_[idx] = key; + values_[idx] = val; + + ++val; + ++idx; + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class EnumType> +Foam::List<Foam::word> Foam::Enum<EnumType>::sortedToc() const +{ + wordList lst(names_); + Foam::sort(lst); + + return lst; +} + + +template<class EnumType> +EnumType Foam::Enum<EnumType>::read(Istream& is) const +{ + const word enumName(is); + const label idx = getIndex(enumName); + + if (idx < 0) + { + FatalIOErrorInFunction(is) + << enumName << " is not in enumeration: " + << names_ << nl + << exit(FatalIOError); + } + + return EnumType(values_[idx]); +} + + +template<class EnumType> +void Foam::Enum<EnumType>::write(const EnumType e, Ostream& os) const +{ + const label idx = getIndex(e); + if (idx >= 0) + { + os << names_[idx]; + } +} + + +template<class EnumType> +EnumType Foam::Enum<EnumType>::lookup +( + const word& key, + const dictionary& dict +) const +{ + const word enumName(dict.lookup(key)); + const label idx = getIndex(enumName); + + if (idx < 0) + { + FatalIOErrorInFunction(dict) + << enumName << " is not in enumeration: " + << names_ << nl + << exit(FatalIOError); + } + + return EnumType(values_[idx]); +} + + +template<class EnumType> +EnumType Foam::Enum<EnumType>::lookupOrDefault +( + const word& key, + const dictionary& dict, + const EnumType deflt +) const +{ + if (dict.found(key)) + { + return lookup(key, dict); + } + else + { + return deflt; + } +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template<class EnumType> +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const Enum<EnumType>& wrapped +) +{ + return wrapped.names().writeList(os, 10); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/enums/Enum.H b/src/OpenFOAM/primitives/enums/Enum.H new file mode 100644 index 0000000000000000000000000000000000000000..dde620fb26a3e3ab7126325eb2884d32429628d2 --- /dev/null +++ b/src/OpenFOAM/primitives/enums/Enum.H @@ -0,0 +1,220 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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::Enum + +Description + A Enum is a wrapper around a list of names/values that represent + particular enumeration values. + +SourceFiles + Enum.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Enum_H +#define Enum_H + +#include "wordList.H" +#include <initializer_list> +#include <utility> + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +// Forward declarations +class dictionary; +template<class EnumType> class Enum; + +template<class EnumType> +Ostream& operator<<(Ostream& os, const Enum<EnumType>& wrapped); + +/*---------------------------------------------------------------------------*\ + Class Enum Declaration +\*---------------------------------------------------------------------------*/ + +template<class EnumType> +class Enum +{ + // Private Member Data + + //- The names for the enum + List<word> names_; + + //- The values for the enum + List<int> values_; + + + // Private Member Functions + + //- The index for the given name. -1 if not found. + label getIndex(const word& enumName) const; + + //- The index for the given enumeration. -1 if not found. + label getIndex(const EnumType e) const; + + //- Lookup enumeration corresponding to the given name. + // FatalError if not found. + EnumType getEnum(const word& enumName) const; + + //- Lookup name corresponding to the given enumeration. + // Return empty word if not found. + const word& getName(const EnumType e) const; + + + //- Disallow default bitwise copy construct + Enum(const Enum&) = delete; + + //- Disallow default bitwise assignment + void operator=(const Enum&) = delete; + + +public: + + //- The type of enumeration wrapped by Enum + typedef EnumType value_type; + + + // Constructors + + //- Construct from a values/names list. + // Duplicate values are permitted (eg, for aliases). + // Duplicate names are permitted, but won't make much sense. + explicit Enum(std::initializer_list<std::pair<EnumType, word>> lst); + + //- Construct from a list of names with values incremented from the + // specified start value. + Enum(const EnumType start, std::initializer_list<word> lst); + + + // Member Functions + + // Access + + //- The number of lookup names for the enumeration + inline label size() const; + + //- The list of enum names, in construction order + inline const List<word>& names() const; + + //- The list of enum names, in construction order + inline const List<word>& toc() const; + + //- The sorted list of enum names + List<word> sortedToc() const; + + //- The list of enum values, in construction order + inline const List<int>& values() const; + + + // Query + + //- Test if there is an enumeration corresponding to the given name. + inline bool hasEnum(const word& enumName) const; + + //- Test if there is a name corresponding to the given enumeration. + inline bool hasName(const EnumType e) const; + + + // Lookup + + //- Lookup the key in the dictionary and return the corresponding + // enumeration element based on its name. + // Fatal if anything is incorrect. + EnumType lookup + ( + const word& key, + const dictionary& dict + ) const; + + //- Find the key in the dictionary and return the corresponding + // enumeration element based on its name. + // Return the default value if the key was not found in the dictionary. + // Fatal if the enumerated name was incorrect. + EnumType lookupOrDefault + ( + const word& key, + const dictionary& dict, + const EnumType deflt + ) const; + + + // IO + + //- Read a word from Istream and return the corresponding enumeration + EnumType read(Istream& is) const; + + //- Write the name representation of the enumeration to an Ostream + // A noop if the enumeration wasn't found. + void write(const EnumType e, Ostream& os) const; + + //- Write the names as a list to an Ostream + inline Ostream& writeList + ( + Ostream& os, + const label shortListLen=0 + ) const; + + + // Member Operators + + //- Return the enumeration corresponding to the given name + // Fatal if the name cannot be found. + inline const EnumType operator[](const word& name) const; + + //- Return the first name corresponding to the given enumeration. + // Returns an empty word on failure. + inline const word& operator[](const EnumType e) const; + + + // IOstream operators + + //- Write names to Ostream, as per writeList() with shortListLen=10 + friend Ostream& operator<< <EnumType> + ( + Ostream& os, + const Enum<EnumType>& wrapped + ); + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "EnumI.H" + +#ifdef NoRepository + #include "Enum.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/enums/EnumI.H b/src/OpenFOAM/primitives/enums/EnumI.H new file mode 100644 index 0000000000000000000000000000000000000000..a991fd53d352a6b83b046eee5b787c5bb3618dbd --- /dev/null +++ b/src/OpenFOAM/primitives/enums/EnumI.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class EnumType> +inline Foam::label Foam::Enum<EnumType>::size() const +{ + return names_.size(); +} + + +template<class EnumType> +inline const Foam::wordList& Foam::Enum<EnumType>::names() const +{ + return names_; +} + + +template<class EnumType> +inline const Foam::wordList& Foam::Enum<EnumType>::toc() const +{ + return names_; +} + + +template<class EnumType> +inline const Foam::List<int>& Foam::Enum<EnumType>::values() const +{ + return values_; +} + + +template<class EnumType> +inline bool Foam::Enum<EnumType>::hasEnum(const word& enumName) const +{ + return getIndex(enumName) >= 0; +} + + +template<class EnumType> +inline bool Foam::Enum<EnumType>::hasName(const EnumType e) const +{ + return getIndex(e) >= 0; +} + + +template<class EnumType> +inline Foam::Ostream& Foam::Enum<EnumType>::writeList +( + Ostream& os, + const label shortListLen +) const +{ + return names_.writeList(os, shortListLen); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template<class EnumType> +inline const EnumType Foam::Enum<EnumType>::operator[] +( + const word& name +) const +{ + return getEnum(name); +} + + +template<class EnumType> +inline const Foam::word& Foam::Enum<EnumType>::operator[] +( + const EnumType e +) const +{ + return getName(e); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/enums/NamedEnum.C b/src/OpenFOAM/primitives/enums/NamedEnum.C new file mode 100644 index 0000000000000000000000000000000000000000..7b5cc701de35ac15bc25f95abf7d7804cf9621ac --- /dev/null +++ b/src/OpenFOAM/primitives/enums/NamedEnum.C @@ -0,0 +1,212 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "NamedEnum.H" +#include "dictionary.H" +#include "stdFoam.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class EnumType, int nEnum> +Foam::NamedEnum<EnumType, nEnum>::NamedEnum() +: + lookup_(2*nEnum) +{ + for (int enumi=0; enumi < nEnum; ++enumi) + { + if (names[enumi] && names[enumi][0]) + { + lookup_.insert(names[enumi], enumi); + } + else + { + // Bad name - generate error message + List<string> goodNames(enumi); + + for (int i = 0; i < enumi; ++i) + { + goodNames[i] = names[i]; + } + + FatalErrorInFunction + << "Illegal enumeration name at position " << enumi << nl + << "after entries " << goodNames << nl + << "Possibly your NamedEnum<EnumType, nEnum>::names array" + << " is not of size " << nEnum << endl + << abort(FatalError); + } + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class EnumType, int nEnum> +Foam::wordList Foam::NamedEnum<EnumType, nEnum>::words() const +{ + List<word> lst(nEnum); + + label count = 0; + for (int enumi=0; enumi < nEnum; ++enumi) + { + if (names[enumi] && names[enumi][0]) + { + lst[count++] = names[enumi]; + } + } + + lst.setSize(count); + return lst; +} + + +template<class EnumType, int nEnum> +Foam::List<int> Foam::NamedEnum<EnumType, nEnum>::values() const +{ + List<int> lst(nEnum); + + label count = 0; + for (int enumi=0; enumi < nEnum; ++enumi) + { + if (names[enumi] && names[enumi][0]) + { + auto iter = lookup_.cfind(names[enumi]); + + if (iter.found()) + { + lst[count++] = iter.object(); + } + } + } + + lst.setSize(count); + return lst; +} + + +template<class EnumType, int nEnum> +bool Foam::NamedEnum<EnumType, nEnum>::hasName(const EnumType e) const +{ + const int enumValue(e); + + forAllConstIters(lookup_, iter) + { + if (iter.object() == enumValue) + { + return true; + } + } + return false; +} + + +template<class EnumType, int nEnum> +EnumType Foam::NamedEnum<EnumType, nEnum>::lookup +( + const word& key, + const dictionary& dict +) const +{ + const word enumName(dict.lookup(key)); + auto iter = lookup_.cfind(enumName); + + if (!iter.found()) + { + FatalIOErrorInFunction(dict) + << enumName << " is not in enumeration: " + << lookup_.sortedToc() << nl + << exit(FatalIOError); + } + + return EnumType(iter.object()); +} + + +template<class EnumType, int nEnum> +EnumType Foam::NamedEnum<EnumType, nEnum>::lookupOrDefault +( + const word& key, + const dictionary& dict, + const EnumType deflt +) const +{ + if (dict.found(key)) + { + return lookup(key, dict); + } + else + { + return deflt; + } +} + + +template<class EnumType, int nEnum> +EnumType Foam::NamedEnum<EnumType, nEnum>::read(Istream& is) const +{ + const word enumName(is); + auto iter = lookup_.cfind(enumName); + + if (!iter.found()) + { + FatalIOErrorInFunction(is) + << enumName << " is not in enumeration: " + << lookup_.sortedToc() << nl + << exit(FatalIOError); + } + + return EnumType(iter.object()); +} + + +template<class EnumType, int nEnum> +void Foam::NamedEnum<EnumType, nEnum>::write +( + const EnumType e, + Ostream& os +) const +{ + const int idx = int(e); + if (idx >= 0 && idx < nEnum) + { + os << names[idx]; + } +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template<class EnumType, int nEnum> +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const NamedEnum<EnumType, nEnum>& wrapped +) +{ + return wrapped.lookup_.writeKeys(os, 10); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/enums/NamedEnum.H b/src/OpenFOAM/primitives/enums/NamedEnum.H new file mode 100644 index 0000000000000000000000000000000000000000..db41012cada589fcd781ac5fd2a661774866d200 --- /dev/null +++ b/src/OpenFOAM/primitives/enums/NamedEnum.H @@ -0,0 +1,200 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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::NamedEnum + +Description + A NamedEnum is a wrapper around a list of names that represent + particular enumeration values. + +SourceFiles + NamedEnum.C + +\*---------------------------------------------------------------------------*/ + +#ifndef NamedEnum_H +#define NamedEnum_H + +#include "HashTable.H" +#include "wordList.H" +#include <type_traits> + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +// Forward declarations +class dictionary; +template<class EnumType, int nEnum> class NamedEnum; + +template<class EnumType, int nEnum> +Ostream& operator<<(Ostream& os, const NamedEnum<EnumType, nEnum>& wrapped); + + +/*---------------------------------------------------------------------------*\ + Class NamedEnum Declaration +\*---------------------------------------------------------------------------*/ + +template<class EnumType, int nEnum> +class NamedEnum +{ + //- The nEnum must be positive (non-zero) + static_assert(nEnum > 0, "nEnum must be positive (non-zero)"); + + // Private Member Data + + //- The values for the enum + HashTable<int> lookup_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + NamedEnum(const NamedEnum&) = delete; + + //- Disallow default bitwise assignment + void operator=(const NamedEnum&) = delete; + + +public: + + //- The type of enumeration wrapped by NamedEnum + typedef EnumType value_type; + + + // Static data members + + //- The set of names corresponding to the enumeration EnumType + static const char* names[nEnum]; + + + // Constructors + + //- Construct from names + NamedEnum(); + + + // Member Functions + + // Access + + //- The number of lookup names for the enumeration + inline label size() const; + + //- The list of enum names + inline wordList toc() const; + + //- The sorted list of enum names + inline wordList sortedToc() const; + + //- The list of enum names, in construction order + wordList words() const; + + //- The list of enum values, in construction order + List<int> values() const; + + + // Query + + //- Test if there is an enumeration corresponding to the given name. + inline bool found(const word& enumName) const; + + //- Test if there is an enumeration corresponding to the given name. + inline bool hasEnum(const word& enumName) const; + + //- Test if there is a name corresponding to the given enumeration. + bool hasName(const EnumType e) const; + + + // Lookup + + //- Lookup the key in the dictionary and return the corresponding + // enumeration element based on its name. + // Fatal if anything is incorrect. + EnumType lookup + ( + const word& key, + const dictionary& dict + ) const; + + //- Find the key in the dictionary and return the corresponding + // enumeration element based on its name. + // Return the default value if the key was not found in the dictionary. + // Fatal if enumerated name was incorrect. + EnumType lookupOrDefault + ( + const word& key, + const dictionary& dict, + const EnumType deflt + ) const; + + + // IO + + //- Read a word from Istream and return the corresponding enumeration + EnumType read(Istream& is) const; + + //- Write the name representation of the enumeration to an Ostream + // A noop if the enumeration wasn't found. + void write(const EnumType e, Ostream& os) const; + + + // Member Operators + + //- Return the enumeration element corresponding to the given name + inline const EnumType operator[](const word& name) const; + + //- Return the name of the given enumeration element + inline const char* operator[](const EnumType e) const; + + + // IOstream operators + + //- Write names to Ostream, as per writeKeys() with shortListLen=10 + friend Ostream& operator<< <EnumType, nEnum> + ( + Ostream& os, + const NamedEnum<EnumType, nEnum>& wrapped + ); + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "NamedEnumI.H" + +#ifdef NoRepository + #include "NamedEnum.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/enums/NamedEnumI.H b/src/OpenFOAM/primitives/enums/NamedEnumI.H new file mode 100644 index 0000000000000000000000000000000000000000..f40a43185add9ee0ec3e856a74a2e80f32d92b91 --- /dev/null +++ b/src/OpenFOAM/primitives/enums/NamedEnumI.H @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class EnumType, int nEnum> +inline Foam::label Foam::NamedEnum<EnumType, nEnum>::size() const +{ + return lookup_.size(); +} + + +template<class EnumType, int nEnum> +inline Foam::wordList Foam::NamedEnum<EnumType, nEnum>::toc() const +{ + return lookup_.toc(); +} + + +template<class EnumType, int nEnum> +inline Foam::wordList Foam::NamedEnum<EnumType, nEnum>::sortedToc() const +{ + return lookup_.sortedToc(); +} + + +template<class EnumType, int nEnum> +inline bool Foam::NamedEnum<EnumType, nEnum>::found +( + const word& enumName +) const +{ + return lookup_.found(enumName); +} + + +template<class EnumType, int nEnum> +inline bool Foam::NamedEnum<EnumType, nEnum>::hasEnum +( + const word& enumName +) const +{ + return lookup_.found(enumName); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template<class EnumType, int nEnum> +inline const EnumType Foam::NamedEnum<EnumType, nEnum>::operator[] +( + const word& name +) const +{ + return EnumType(lookup_[name]); +} + + +template<class EnumType, int nEnum> +inline const char* Foam::NamedEnum<EnumType, nEnum>::operator[] +( + const EnumType e +) const +{ + return names[int(e)]; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C index b82b4d30102d192a255567e8364dd29222a41829..e05e3c4fb42255f2f6c5bebbb79101b184799bf6 100644 --- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C +++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C @@ -2,8 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -204,18 +204,16 @@ Foam::Function1Types::CSV<Type>::CSV ( const word& entryName, const dictionary& dict, - const word& ext, const fileName& fName ) : - TableBase<Type>(entryName, dict.subDict(entryName + ext)), - coeffs_(dict.subDict(entryName + ext)), - nHeaderLine_(readLabel(coeffs_.lookup("nHeaderLine"))), - refColumn_(readLabel(coeffs_.lookup("refColumn"))), - componentColumns_(coeffs_.lookup("componentColumns")), - separator_(coeffs_.lookupOrDefault<string>("separator", string(","))[0]), - mergeSeparators_(readBool(coeffs_.lookup("mergeSeparators"))), - fName_(fName != fileName::null ? fName : coeffs_.lookup("fileName")) + TableBase<Type>(entryName, dict), + nHeaderLine_(readLabel(dict.lookup("nHeaderLine"))), + refColumn_(readLabel(dict.lookup("refColumn"))), + componentColumns_(dict.lookup("componentColumns")), + separator_(dict.lookupOrDefault<string>("separator", string(","))[0]), + mergeSeparators_(readBool(dict.lookup("mergeSeparators"))), + fName_(fName != fileName::null ? fName : dict.lookup("file")) { if (componentColumns_.size() != pTraits<Type>::nComponents) { @@ -273,7 +271,7 @@ void Foam::Function1Types::CSV<Type>::writeData(Ostream& os) const TableBase<Type>::writeEntries(os); os.writeEntry("nHeaderLine", nHeaderLine_); - os.writeEntry("refColumn", refColumn_); + os.writeEntry("refColumn", refColumn_); // Force writing labelList in ascii const enum IOstream::streamFormat fmt = os.format(); @@ -281,9 +279,9 @@ void Foam::Function1Types::CSV<Type>::writeData(Ostream& os) const os.writeEntry("componentColumns", componentColumns_); os.format(fmt); - os.writeEntry("separator", string(separator_)); + os.writeEntry("separator", string(separator_)); os.writeEntry("mergeSeparators", mergeSeparators_); - os.writeEntry("fileName", fName_); + os.writeEntry("file", fName_); os.endBlock() << flush; } diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H index ddba48afa5ed32519fa9d56e588eea5b828cff62..711bffe50769b1a9b7fe3798898266c6f2d8a161 100644 --- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H +++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,9 +25,11 @@ Class Foam::Function1Types::CSV Description - Templated CSV container data entry. Reference column is always a scalar, - e.g. time + Templated CSV function. + Reference column is always a scalar, e.g. time. + + Usage: \verbatim <entryName> csvFile; <entryName>Coeffs @@ -75,9 +77,6 @@ class CSV { // Private data - //- Coefficients dictionary (for convenience on reading) - dictionary coeffs_; - //- Number header lines label nHeaderLine_; @@ -122,7 +121,6 @@ public: ( const word& entryName, const dictionary& dict, - const word& ext = "Coeffs", const fileName& fName = fileName::null ); diff --git a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H index 3e02e0286dcaa2d0b9637a6f1fa515e89278430f..744b07b4f6b95a1675ebe682737a6c1231c75082 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H +++ b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -25,9 +25,9 @@ Class Foam::Function1Types::Constant Description - Templated basic entry that holds a constant value. + Templated function that returns a constant value. - Usage - for entry \<entryName\> having the value <value>: + Usage - for entry \<entryName\> returning the value <value>: \verbatim <entryName> constant <value> \endverbatim diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.C b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.C index bccc14d7f5ebfd51d17ae823d881ad60db63736b..c551c91271119e750fdc2ff37d4e77fade18e0e9 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.C +++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.C @@ -133,11 +133,7 @@ Foam::Ostream& Foam::operator<< const Function1<Type>& f1 ) { - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const Function1<Type>&)" - ); + os.check(FUNCTION_NAME); os << f1.name_; f1.writeData(os); diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H index fb71134add09ba2c5a94b9b7a7a7b8586a6b9732..a0492f66ee1684bc2591ff715e76110064b8cb71 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H +++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -162,7 +162,7 @@ public: friend Ostream& operator<< <Type> ( Ostream& os, - const Function1<Type>& de + const Function1<Type>& func ); //- Write in dictionary format @@ -195,6 +195,14 @@ public: add##SS##Type##ConstructorToTable_; +#define makeScalarFunction1(SS) \ + \ + defineTypeNameAndDebug(SS, 0); \ + \ + Function1<scalar>::adddictionaryConstructorToTable<SS> \ + add##SS##ConstructorToTable_; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C index 5a965acbecc25dfafd2dd8e3c6cb2badc874a6b1..b9a8682a0b6117b80f2846e6cf762f170936d079 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C +++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,39 +34,70 @@ Foam::autoPtr<Foam::Function1<Type>> Foam::Function1<Type>::New const dictionary& dict ) { - Istream& is(dict.lookup(entryName, false)); + if (dict.isDict(entryName)) + { + const dictionary& coeffsDict(dict.subDict(entryName)); - token firstToken(is); - word Function1Type; + const word Function1Type(coeffsDict.lookup("type")); - if (!firstToken.isWord()) - { - is.putBack(firstToken); - return autoPtr<Function1<Type>> - ( - new Function1Types::Constant<Type>(entryName, is) - ); + typename dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(Function1Type); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown Function1 type " + << Function1Type << " for Function1 " + << entryName << nl << nl + << "Valid Function1 types are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() << nl + << exit(FatalError); + } + + return cstrIter()(entryName, coeffsDict); } else { - Function1Type = firstToken.wordToken(); - } + Istream& is(dict.lookup(entryName, false)); - typename dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(Function1Type); + token firstToken(is); + word Function1Type; - if (!cstrIter.found()) - { - FatalErrorInFunction - << "Unknown Function1 type " - << Function1Type << " for Function1 " - << entryName << nl << nl - << "Valid Function1 types are:" << nl - << dictionaryConstructorTablePtr_->sortedToc() << nl - << exit(FatalError); - } + if (!firstToken.isWord()) + { + is.putBack(firstToken); + return autoPtr<Function1<Type>> + ( + new Function1Types::Constant<Type>(entryName, is) + ); + } + else + { + Function1Type = firstToken.wordToken(); + } + + typename dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(Function1Type); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown Function1 type " + << Function1Type << " for Function1 " + << entryName << nl << nl + << "Valid Function1 types are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() << nl + << exit(FatalError); + } - return cstrIter()(entryName, dict); + return cstrIter() + ( + entryName, + dict.found(entryName + "Coeffs") + ? dict.subDict(entryName + "Coeffs") + : dict + ); + } } diff --git a/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.C b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.C new file mode 100644 index 0000000000000000000000000000000000000000..42779f7953eddac416ca35784cfe9283699ab8a8 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.C @@ -0,0 +1,84 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "OneConstant.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::Function1Types::OneConstant<Type>::OneConstant(const word& entryName) +: + Function1<Type>(entryName) +{} + + +template<class Type> +Foam::Function1Types::OneConstant<Type>::OneConstant +( + const word& entryName, + const dictionary& dict +) +: + Function1<Type>(entryName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::Function1Types::OneConstant<Type>::~OneConstant() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Type Foam::Function1Types::OneConstant<Type>::value(const scalar x) const +{ + return pTraits<Type>::one; +} + + +template<class Type> +Type Foam::Function1Types::OneConstant<Type>::integrate +( + const scalar x1, + const scalar x2 +) const +{ + return (x2 - x1)*pTraits<Type>::one; +} + + +template<class Type> +void Foam::Function1Types::OneConstant<Type>::writeData(Ostream& os) const +{ + Function1<Type>::writeData(os); + + os << token::END_STATEMENT << nl; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H new file mode 100644 index 0000000000000000000000000000000000000000..60ec52c3e4e7dcf2288a86638eaf3f686051a064 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::OneConstant + +Description + Templated function that returns the corresponding 1 (one). + + Usage: + \verbatim + <entryName> one; + \endverbatim + +SourceFiles + OneConstant.C + +\*---------------------------------------------------------------------------*/ + +#ifndef OneConstant_H +#define OneConstant_H + +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class OneConstant Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class OneConstant +: + public Function1<Type> +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const OneConstant<Type>&); + + +public: + + // Runtime type information + TypeName("one"); + + + // Constructors + + //- Construct from entry name + OneConstant(const word& entryName); + + //- Construct from entry name and dictionary + OneConstant(const word& entryName, const dictionary& dict); + + //- Construct and return a clone + virtual tmp<Function1<Type>> clone() const + { + return tmp<Function1<Type>>(new OneConstant<Type>(*this)); + } + + + //- Destructor + virtual ~OneConstant(); + + + // Member Functions + + //- Return constant value + Type value(const scalar) const; + + //- Integrate between two values + Type integrate(const scalar x1, const scalar x2) const; + + //- Write in dictionary format + virtual void writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "OneConstant.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.C b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.C new file mode 100644 index 0000000000000000000000000000000000000000..37342b2e575cb17c48fbf50763457de83d4ca772 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "Scale.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +void Foam::Function1Types::Scale<Type>::read(const dictionary& coeffs) +{ + scale_ = Function1<scalar>::New("scale", coeffs); + value_ = Function1<Type>::New("value", coeffs); +} + + +template<class Type> +Foam::Function1Types::Scale<Type>::Scale +( + const word& entryName, + const dictionary& dict +) +: + Function1<Type>(entryName) +{ + read(dict); +} + + +template<class Type> +Foam::Function1Types::Scale<Type>::Scale(const Scale<Type>& se) +: + Function1<Type>(se), + scale_(se.scale_, false), + value_(se.value_, false) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::Function1Types::Scale<Type>::~Scale() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Type Foam::Function1Types::Scale<Type>::value(const scalar t) const +{ + return scale_->value(t)*value_->value(t); +} + + +template<class Type> +void Foam::Function1Types::Scale<Type>::writeData(Ostream& os) const +{ + Function1<Type>::writeData(os); + os << token::END_STATEMENT << nl; + os << indent << word(this->name() + "Coeffs") << nl; + os << indent << token::BEGIN_BLOCK << incrIndent << nl; + scale_->writeData(os); + value_->writeData(os); + os << decrIndent << indent << token::END_BLOCK << endl; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H new file mode 100644 index 0000000000000000000000000000000000000000..80f5f639bdb9b8971a7a594085b645622e796850 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H @@ -0,0 +1,165 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::Scale + +Description + Function1 which scales a given 'value' function by a scalar 'scale' + function. + + This is particularly useful to ramp a time-varying value by one of the + monotonic ramp functions. + + Usage for a vector: + \verbatim + <entryName> + { + type scale; + + scale + { + type linearRamp; + + start 0; + duration 10; + } + + value + { + type sine; + + frequency 10; + amplitude 1; + scale (1 0.1 0); + level (10 1 0); + } + } + \endverbatim + + Where: + \table + Property | Description | Required + value | Function of type Function1<Type> | yes + scale | Scaling function of type Function1<scalar> | yes + \endtable + +SourceFiles + Scale.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Scale_H +#define Scale_H + +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class Scale Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class Scale +: + public Function1<Type> +{ + // Private data + + //- Scalar scaling function + autoPtr<Function1<scalar>> scale_; + + //- Value function + autoPtr<Function1<Type>> value_; + + + // Private Member Functions + + //- Read the coefficients from the given dictionary + void read(const dictionary& coeffs); + + //- Disallow default bitwise assignment + void operator=(const Scale<Type>&); + + +public: + + // Runtime type information + TypeName("scale"); + + + // Constructors + + //- Construct from entry name and dictionary + Scale + ( + const word& entryName, + const dictionary& dict + ); + + //- Copy constructor + Scale(const Scale<Type>& se); + + //- Construct and return a clone + virtual tmp<Function1<Type>> clone() const + { + return tmp<Function1<Type>>(new Scale<Type>(*this)); + } + + + //- Destructor + virtual ~Scale(); + + + // Member Functions + + //- Return value for time t + Type value(const scalar t) const; + + //- Write in dictionary format + virtual void writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "Scale.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C index a11acd4df832588b90316e675c41027d8c14d778..d6b0a6659f04e73bdcb681a0abb0cf1df857ab68 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C +++ b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -43,13 +43,12 @@ template<class Type> Foam::Function1Types::Sine<Type>::Sine ( const word& entryName, - const dictionary& dict, - const word& ext + const dictionary& dict ) : Function1<Type>(entryName) { - read(dict.subDict(entryName + ext)); + read(dict); } diff --git a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H index 66c9f11058ce183c2c2a926918ea80d11737b681..d18291862f2be0014345b833068642a8785a2a69 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H +++ b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -132,8 +132,7 @@ public: Sine ( const word& entryName, - const dictionary& dict, - const word& ext = "Coeffs" + const dictionary& dict ); //- Copy constructor diff --git a/src/OpenFOAM/primitives/functions/Function1/Square/Square.C b/src/OpenFOAM/primitives/functions/Function1/Square/Square.C index 0e258bc30eace0e6e611fce3c5eaa92c11933b5e..5442e8a989c8b230540b0257e87a5913961e19df 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Square/Square.C +++ b/src/OpenFOAM/primitives/functions/Function1/Square/Square.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -43,13 +43,12 @@ template<class Type> Foam::Function1Types::Square<Type>::Square ( const word& entryName, - const dictionary& dict, - const word& ext + const dictionary& dict ) : Function1<Type>(entryName) { - read(dict.subDict(entryName + ext)); + read(dict); } diff --git a/src/OpenFOAM/primitives/functions/Function1/Square/Square.H b/src/OpenFOAM/primitives/functions/Function1/Square/Square.H index 9ca2079c00b18cb12b7cde956744b47f709ef178..df6ec25deb4505b4efffcad0ae6ac32ee38276a9 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Square/Square.H +++ b/src/OpenFOAM/primitives/functions/Function1/Square/Square.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,8 +139,7 @@ public: Square ( const word& entryName, - const dictionary& dict, - const word& ext = "Coeffs" + const dictionary& dict ); //- Copy constructor diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H index c11eb621db83ce13ed0c4ac71644560d4f676fbe..5d50acca48c09c30e7b0650f106df475d750d368 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H +++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,10 +25,12 @@ Class Foam::Function1Types::Table Description - Templated table container data entry. Items are stored in a list of - Tuple2's. First column is always stored as scalar entries. Data is read - in Tuple2 form, e.g. for an entry \<entryName\> that is (scalar, vector): + Templated table container function. + Items are stored in a list of Tuple2's. First column is always stored as + scalar entries. Data is read in Tuple2 form. + + Usage: \verbatim <entryName> table ( diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C index 95a5fce3e449af529ffb6c00b85f4128c6f04702..02d3b186eff9a0984f89f63c3feb5882981a4228 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C +++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C @@ -195,7 +195,7 @@ void Foam::Function1Types::TableBase<Type>::check() const << nl << exit(FatalError); } - label n = table_.size(); + const label n = table_.size(); scalar prevValue = table_[0].first(); for (label i = 1; i < n; ++i) @@ -221,7 +221,7 @@ bool Foam::Function1Types::TableBase<Type>::checkMinBounds scalar& xDash ) const { - if (x < table_[0].first()) + if (x < table_.first().first()) { switch (boundsHandling_) { @@ -238,19 +238,28 @@ bool Foam::Function1Types::TableBase<Type>::checkMinBounds << "value (" << x << ") underflow" << nl << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + xDash = table_.first().first(); + return true; + break; } case CLAMP: { - xDash = table_[0].first(); + xDash = table_.first().first(); return true; break; } case REPEAT: { // adjust x to >= minX - scalar span = table_.last().first() - table_[0].first(); - xDash = fmod(x - table_[0].first(), span) + table_[0].first(); + const scalar span = + table_.last().first() - table_.first().first(); + + xDash = + ( + fmod(x - table_.first().first(), span) + + table_.first().first() + ); break; } } @@ -288,7 +297,10 @@ bool Foam::Function1Types::TableBase<Type>::checkMaxBounds << "value (" << x << ") overflow" << nl << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + xDash = table_.last().first(); + return true; + break; } case CLAMP: { @@ -299,8 +311,14 @@ bool Foam::Function1Types::TableBase<Type>::checkMaxBounds case REPEAT: { // adjust x to >= minX - scalar span = table_.last().first() - table_[0].first(); - xDash = fmod(x - table_[0].first(), span) + table_[0].first(); + const scalar span = + table_.last().first() - table_.first().first(); + + xDash = + ( + fmod(x - table_.first().first(), span) + + table_.first().first() + ); break; } } @@ -335,7 +353,7 @@ Type Foam::Function1Types::TableBase<Type>::value(const scalar x) const if (checkMinBounds(x, xDash)) { - return table_[0].second(); + return table_.first().second(); } if (checkMaxBounds(xDash, xDash)) @@ -411,13 +429,11 @@ void Foam::Function1Types::TableBase<Type>::writeEntries(Ostream& os) const { if (boundsHandling_ != CLAMP) { - os.writeKeyword("outOfBounds") << boundsHandlingToWord(boundsHandling_) - << token::END_STATEMENT << nl; + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); } if (interpolationScheme_ != "linear") { - os.writeKeyword("interpolationScheme") << interpolationScheme_ - << token::END_STATEMENT << nl; + os.writeEntry("interpolationScheme", interpolationScheme_); } } diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C index 3682836999f4ce95ca3927370e053f27b2510af3..d867d4a52d8302d4d17eafdf0e08c22763e55ebd 100644 --- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C +++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C @@ -2,8 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,11 +34,10 @@ Foam::Function1Types::TableFile<Type>::TableFile const dictionary& dict ) : - TableBase<Type>(entryName, dict.subDict(entryName + "Coeffs")), + TableBase<Type>(entryName, dict), fName_("none") { - const dictionary coeffs(dict.subDict(entryName + "Coeffs")); - coeffs.lookup("fileName") >> fName_; + dict.lookup("file") >> fName_; fileName expandedFile(fName_); IFstream is(expandedFile.expand()); @@ -86,7 +85,7 @@ void Foam::Function1Types::TableFile<Type>::writeData(Ostream& os) const // the values themselves TableBase<Type>::writeEntries(os); - os.writeEntry("fileName", fName_); + os.writeEntry("file", fName_); os.endBlock() << flush; } diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H index a44ba48d7f8245eb2412d5ce45667133f2778531..d4973639bf446377f5e05506b64302da3a0e4175 100644 --- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H +++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,9 @@ Class Foam::Function1Types::TableFile Description - Templated table container data entry where data is read from file. + Templated table container function where data is read from file. + Usage: \verbatim <entryName> tableFile; <entryName>Coeffs @@ -37,7 +38,7 @@ Description } \endverbatim - Items are stored in a list of Tuple2's. First column is always stored as + Data is stored as a list of Tuple2's. First column is always stored as scalar entries. Data is read in the form, e.g. for an entry \<entryName\> that is (scalar, vector): \verbatim @@ -47,7 +48,6 @@ Description ); \endverbatim - SourceFiles TableFile.C diff --git a/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.C b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.C new file mode 100644 index 0000000000000000000000000000000000000000..fd89eff02dc44ded14b16ff7556a87b7bb1e32ac --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.C @@ -0,0 +1,77 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "ZeroConstant.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::Function1Types::ZeroConstant<Type>::ZeroConstant +( + const word& entryName, + const dictionary& dict +) +: + Function1<Type>(entryName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::Function1Types::ZeroConstant<Type>::~ZeroConstant() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Type Foam::Function1Types::ZeroConstant<Type>::value(const scalar x) const +{ + return pTraits<Type>::zero; +} + + +template<class Type> +Type Foam::Function1Types::ZeroConstant<Type>::integrate +( + const scalar x1, + const scalar x2 +) const +{ + return pTraits<Type>::zero; +} + + +template<class Type> +void Foam::Function1Types::ZeroConstant<Type>::writeData(Ostream& os) const +{ + Function1<Type>::writeData(os); + + os << token::END_STATEMENT << nl; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H new file mode 100644 index 0000000000000000000000000000000000000000..7d486150bc06228fe177e4ddd897b628042099dc --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::ZeroConstant + +Description + Templated function that returns the corresponding 0 (zero). + + Usage: + \verbatim + <entryName> zero; + \endverbatim + +SourceFiles + ZeroConstant.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ZeroConstant_H +#define ZeroConstant_H + +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class ZeroConstant Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class ZeroConstant +: + public Function1<Type> +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const ZeroConstant<Type>&); + + +public: + + // Runtime type information + TypeName("zero"); + + + // Constructors + + //- Construct from entry name and dictionary + ZeroConstant(const word& entryName, const dictionary& dict); + + //- Construct and return a clzero + virtual tmp<Function1<Type>> clzero() const + { + return tmp<Function1<Type>>(new ZeroConstant<Type>(*this)); + } + + + //- Destructor + virtual ~ZeroConstant(); + + + // Member Functions + + //- Return constant value + Type value(const scalar) const; + + //- Integrate between two values + Type integrate(const scalar x1, const scalar x2) const; + + //- Write in dictionary format + virtual void writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "ZeroConstant.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.C b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.C new file mode 100644 index 0000000000000000000000000000000000000000..7478be74123a0643179fec8dd3cafd36698d49ca --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "halfCosineRamp.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + makeScalarFunction1(halfCosineRamp); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::Function1Types::halfCosineRamp::halfCosineRamp +( + const word& entryName, + const dictionary& dict +) +: + ramp(entryName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::halfCosineRamp::~halfCosineRamp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::scalar Foam::Function1Types::halfCosineRamp::value(const scalar t) const +{ + return 0.5*(1 - cos(constant::mathematical::pi*linearRamp(t))); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H new file mode 100644 index 0000000000000000000000000000000000000000..452fb4d5486bcbff6926d386e5290caa61303f55 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::halfCosineRamp + +Description + Half-cosine ramp function starting from 0 and increasing to 1 from \c start + over the \c duration and remaining at 1 thereafter. + +See also + Foam::Function1Types::ramp + +SourceFiles + halfCosineRamp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef halfCosineRamp_H +#define halfCosineRamp_H + +#include "ramp.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class halfCosineRamp Declaration +\*---------------------------------------------------------------------------*/ + +class halfCosineRamp +: + public ramp +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const halfCosineRamp&); + + +public: + + // Runtime type information + TypeName("halfCosineRamp"); + + + // Constructors + + //- Construct from entry name and dictionary + halfCosineRamp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~halfCosineRamp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.C b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.C new file mode 100644 index 0000000000000000000000000000000000000000..039e526f68e76cc0df7ae9f13ef987f59aed94a6 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "linearRamp.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + makeScalarFunction1(linearRamp); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::Function1Types::linearRamp::linearRamp +( + const word& entryName, + const dictionary& dict +) +: + ramp(entryName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::linearRamp::~linearRamp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::scalar Foam::Function1Types::linearRamp::value(const scalar t) const +{ + return ramp::linearRamp(t); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H new file mode 100644 index 0000000000000000000000000000000000000000..ae956c0995a78224a0f663df4829aaea0ab6981d --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::linearRamp + +Description + Linear ramp function starting from 0 and increasing linearRamply to 1 from + \c start over the \c duration and remaining at 1 thereafter. + +See also + Foam::Function1Types::ramp + +SourceFiles + linearRamp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef linearRamp_H +#define linearRamp_H + +#include "ramp.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class linearRamp Declaration +\*---------------------------------------------------------------------------*/ + +class linearRamp +: + public ramp +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const linearRamp&); + + +public: + + // Runtime type information + TypeName("linearRamp"); + + + // Constructors + + //- Construct from entry name and dictionary + linearRamp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~linearRamp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/makeDataEntries.C b/src/OpenFOAM/primitives/functions/Function1/makeDataEntries.C index babb5bad63b68ce060f0ca7a368b16e1e41f04fc..b7c93ca1b3d7c2932be5f804234eb3dcaf5f65ca 100644 --- a/src/OpenFOAM/primitives/functions/Function1/makeDataEntries.C +++ b/src/OpenFOAM/primitives/functions/Function1/makeDataEntries.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,15 @@ License \*---------------------------------------------------------------------------*/ #include "Constant.H" +#include "ZeroConstant.H" +#include "OneConstant.H" #include "PolynomialEntry.H" #include "Sine.H" #include "Square.H" #include "CSV.H" #include "Table.H" #include "TableFile.H" +#include "Scale.H" #include "fieldTypes.H" @@ -38,12 +41,15 @@ License #define makeFunction1s(Type) \ makeFunction1(Type); \ makeFunction1Type(Constant, Type); \ + makeFunction1Type(ZeroConstant, Type); \ + makeFunction1Type(OneConstant, Type); \ makeFunction1Type(Polynomial, Type); \ makeFunction1Type(Sine, Type); \ makeFunction1Type(Square, Type); \ makeFunction1Type(CSV, Type); \ makeFunction1Type(Table, Type); \ - makeFunction1Type(TableFile, Type); + makeFunction1Type(TableFile, Type); \ + makeFunction1Type(Scale, Type); namespace Foam { diff --git a/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.C b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.C new file mode 100644 index 0000000000000000000000000000000000000000..96945a77172a46b20d68a4ec34d35c3625d431fe --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "quadraticRamp.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + makeScalarFunction1(quadraticRamp); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::Function1Types::quadraticRamp::quadraticRamp +( + const word& entryName, + const dictionary& dict +) +: + ramp(entryName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::quadraticRamp::~quadraticRamp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::scalar Foam::Function1Types::quadraticRamp::value(const scalar t) const +{ + return sqr(linearRamp(t)); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H new file mode 100644 index 0000000000000000000000000000000000000000..e05de5342533db59e7632d4e54c19a8286cdb808 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::quadraticRamp + +Description + Quadratic ramp function starting from 0 and increasing quadraticRampally + to 1 from \c t_0 over the \c duration and remaining at 1 thereafter. + +See also + Foam::Function1Types::ramp + +SourceFiles + quadraticRamp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef quadraticRamp_H +#define quadraticRamp_H + +#include "ramp.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class quadraticRamp Declaration +\*---------------------------------------------------------------------------*/ + +class quadraticRamp +: + public ramp +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const quadraticRamp&); + + +public: + + // Runtime type information + TypeName("quadraticRamp"); + + + // Constructors + + //- Construct from entry name and dictionary + quadraticRamp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~quadraticRamp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.C b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.C new file mode 100644 index 0000000000000000000000000000000000000000..21b438b748ea03999c849b9351a146700ccf0942 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "quarterCosineRamp.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + makeScalarFunction1(quarterCosineRamp); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::Function1Types::quarterCosineRamp::quarterCosineRamp +( + const word& entryName, + const dictionary& dict +) +: + ramp(entryName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::quarterCosineRamp::~quarterCosineRamp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::scalar Foam::Function1Types::quarterCosineRamp::value +( + const scalar t +) const +{ + return 1 - cos(0.5*constant::mathematical::pi*linearRamp(t)); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H new file mode 100644 index 0000000000000000000000000000000000000000..4fa845294755fb3a89c5bbbb6386c8d0c17c0158 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::quarterCosineRamp + +Description + Quarter-cosine ramp function starting from 0 and increasing to 1 from \c + start over the \c duration and remaining at 1 thereafter. + +See also + Foam::Function1Types::ramp + +SourceFiles + quarterCosineRamp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef quarterCosineRamp_H +#define quarterCosineRamp_H + +#include "ramp.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class quarterCosineRamp Declaration +\*---------------------------------------------------------------------------*/ + +class quarterCosineRamp +: + public ramp +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const quarterCosineRamp&); + + +public: + + // Runtime type information + TypeName("quarterCosineRamp"); + + + // Constructors + + //- Construct from entry name and dictionary + quarterCosineRamp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~quarterCosineRamp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.C b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.C new file mode 100644 index 0000000000000000000000000000000000000000..d6b73876d1236dfa9e4086d75c5d75b945656d3b --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "quarterSineRamp.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + makeScalarFunction1(quarterSineRamp); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::Function1Types::quarterSineRamp::quarterSineRamp +( + const word& entryName, + const dictionary& dict +) +: + ramp(entryName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::quarterSineRamp::~quarterSineRamp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::scalar Foam::Function1Types::quarterSineRamp::value(const scalar t) const +{ + return sin(0.5*constant::mathematical::pi*linearRamp(t)); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H new file mode 100644 index 0000000000000000000000000000000000000000..95ef17d734cb8fd645e49c984f5fa19b15cc7493 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::quarterSineRamp + +Description + Quarter-sine ramp function starting from 0 and increasing to 1 from \c start + over the \c duration and remaining at 1 thereafter. + +See also + Foam::Function1Types::ramp + +SourceFiles + quarterSineRamp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef quarterSineRamp_H +#define quarterSineRamp_H + +#include "ramp.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class quarterSineRamp Declaration +\*---------------------------------------------------------------------------*/ + +class quarterSineRamp +: + public ramp +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const quarterSineRamp&); + + +public: + + // Runtime type information + TypeName("quarterSineRamp"); + + + // Constructors + + //- Construct from entry name and dictionary + quarterSineRamp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~quarterSineRamp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C new file mode 100644 index 0000000000000000000000000000000000000000..40645aa1910708f1fdc6e363d793b5f631ae22ee --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "ramp.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +void Foam::Function1Types::ramp::read(const dictionary& coeffs) +{ + start_ = coeffs.lookupOrDefault<scalar>("start", 0); + duration_ = coeffs.lookupType<scalar>("duration"); +} + + +Foam::Function1Types::ramp::ramp +( + const word& entryName, + const dictionary& dict +) +: + Function1<scalar>(entryName) +{ + read(dict); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::Function1Types::ramp::~ramp() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::Function1Types::ramp::writeData(Ostream& os) const +{ + Function1<scalar>::writeData(os); + os << token::END_STATEMENT << nl; + os << indent << word(this->name() + "Coeffs") << nl; + os << indent << token::BEGIN_BLOCK << incrIndent << nl; + os.writeKeyword("start") << start_ << token::END_STATEMENT << nl; + os.writeKeyword("duration") << duration_ << token::END_STATEMENT << nl; + os << decrIndent << indent << token::END_BLOCK << endl; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H new file mode 100644 index 0000000000000000000000000000000000000000..08a5d4c64e8b54acdbf1de93f8a6e8dfe91f8b22 --- /dev/null +++ b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H @@ -0,0 +1,150 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Function1Types::ramp + +Description + Ramp function base class for the set of scalar functions starting from 0 and + increasing monotonically to 1 from \c start over the \c duration and + remaining at 1 thereafter. + + Usage: + \verbatim + <entryName> <rampFunction>; + <entryName>Coeffs + { + start 10; + duration 20; + } + \endverbatim + or + \verbatim + <entryName> + { + type <rampFunction>; + start 10; + duration 20; + } + \endverbatim + + Where: + \table + Property | Description | Required | Default value + start | Start time | no | 0 + duration | Duration | yes | + \endtable + +See also + Foam::Function1 + +SourceFiles + ramp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ramp_H +#define ramp_H + +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace Function1Types +{ + +/*---------------------------------------------------------------------------*\ + Class ramp Declaration +\*---------------------------------------------------------------------------*/ + +class ramp +: + public Function1<scalar> +{ +protected: + + // Protected data + + //- Start-time of the ramp function + scalar start_; + + //- Duration of the ramp function + scalar duration_; + + //- Simple linear ramp function + // which form the basis of many more complex ramp functions + inline scalar linearRamp(const scalar t) const + { + return max(min((t - start_)/duration_, 1), 0); + } + + +private: + + // Private Member Functions + + //- Read the coefficients from the given dictionary + void read(const dictionary& coeffs); + + //- Disallow default bitwise assignment + void operator=(const ramp&); + + +public: + + // Constructors + + //- Construct from entry name and dictionary + ramp + ( + const word& entryName, + const dictionary& dict + ); + + + //- Destructor + virtual ~ramp(); + + + // Member Functions + + //- Return value for time t + scalar value(const scalar t) const = 0; + + //- Write in dictionary format + virtual void writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Function1Types +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H index 2d8f11d3af9e7d68add9c4ba04483101d3a8c886..7ba6f797c9fced7f2f17afe9882886863e8a4da2 100644 --- a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H +++ b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H @@ -27,17 +27,19 @@ Class Description Polynomial templated on size (order): - poly = sum(coeff_[i]*x^i) logCoeff*log(x) + \verbatim + poly = sum(coeffs[i]*x^i) + logCoeff*log(x) + \endverbatim - where 0 \<= i \<= N + where <tt> 0 <= i <= N </tt> - integer powers, starting at zero - - value(x) to evaluate the poly for a given value - - derivative(x) returns derivative at value - - integral(x1, x2) returns integral between two scalar values - - integral() to return a new, integral coeff polynomial + - \c value(x) to evaluate the poly for a given value + - \c derivative(x) returns derivative at value + - \c integral(x1, x2) returns integral between two scalar values + - \c integral() to return a new, integral coeff polynomial - increases the size (order) - - integralMinus1() to return a new, integral coeff polynomial where + - \c integralMinus1() to return a new, integral coeff polynomial where the base poly starts at order -1 SourceFiles diff --git a/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C b/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C index 0b24c9578f822cbe3548757990d34fc1e0b3cd56..7af8e6e5b31023b1e8c423b76f4bae0f23fac4d9 100644 --- a/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C +++ b/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C @@ -37,12 +37,7 @@ Foam::Ostream& Foam::operator<< os << static_cast <VectorSpace<Polynomial<PolySize>, scalar, PolySize>>(poly); - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const Polynomial<PolySize>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.C b/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.C index e10d5a7c97a287cc95c406664e20f8b374b3d55e..c93c1d125644c1d898036827a066869c8f0f13fd 100644 --- a/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.C +++ b/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.C @@ -320,7 +320,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const polynomialFunction& poly) // Check state of Ostream - os.check("operator<<(Ostream&, const polynomialFunction&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.H b/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.H index 1fe767582d2ff7b481616d9609b202bc8049f15d..500469d94f5d9f25326521fa2b481d5c416eb010 100644 --- a/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.H +++ b/src/OpenFOAM/primitives/functions/Polynomial/polynomialFunction.H @@ -27,16 +27,18 @@ Class Description Polynomial function representation - poly = logCoeff*log(x) + sum(coeff_[i]*x^i) + \verbatim + poly = logCoeff*log(x) + sum(coeffs[i]*x^i) + \endverbatim - where 0 \<= i \<= N + where <tt> 0 <= i <= N </tt> - integer powers, starting at zero - - value(x) to evaluate the poly for a given value - - integrate(x1, x2) between two scalar values - - integral() to return a new, integral coeff polynomial + - \c value(x) to evaluate the poly for a given value + - \c integrate(x1, x2) between two scalar values + - \c integral() to return a new, integral coeff polynomial - increases the size (order) - - integralMinus1() to return a new, integral coeff polynomial where + - \c integralMinus1() to return a new, integral coeff polynomial where the base poly starts at order -1 See also diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.C b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.C index b0b7df27ef45730922234b26b963eee5f51c24d7..488d6dc366210a90b5e7c6b53af81b08dc37fabd 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.C +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.C @@ -107,7 +107,7 @@ Foam::Istream& Foam::operator>>(Istream& is, vectorTensorTransform& tr) is.readEnd("vectorTensorTransform"); // Check state of Istream - is.check("operator>>(Istream&, vectorTensorTransform&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/hashes/SHA1/SHA1Digest.C b/src/OpenFOAM/primitives/hashes/SHA1/SHA1Digest.C index 478681b20496adb4356778ab3f3a1775bf5ab347..6fe25953b1ae2f03127f5246350c8bad07fb6a06 100644 --- a/src/OpenFOAM/primitives/hashes/SHA1/SHA1Digest.C +++ b/src/OpenFOAM/primitives/hashes/SHA1/SHA1Digest.C @@ -147,7 +147,7 @@ Foam::Ostream& Foam::SHA1Digest::write(Ostream& os, const bool prefixed) const os.write(hexChars[(v_[i] & 0xF)]); } - os.check("SHA1Digest::write(Ostream&, const bool)"); + os.check(FUNCTION_NAME); return os; } @@ -268,7 +268,7 @@ Foam::Istream& Foam::operator>>(Istream& is, SHA1Digest& dig) v[i] = (c1 << 4) + c2; } - is.check("Istream& operator>>(Istream&, SHA1Digest&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/ints/int32/int32IO.C b/src/OpenFOAM/primitives/ints/int32/int32IO.C index c5023315f026dad37ec6e4e240a76b03abe1b872..1759f87daa508a2afb64445480dc65b8b74aef64 100644 --- a/src/OpenFOAM/primitives/ints/int32/int32IO.C +++ b/src/OpenFOAM/primitives/ints/int32/int32IO.C @@ -71,9 +71,7 @@ Foam::Istream& Foam::operator>>(Istream& is, int32_t& i) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, int32_t&)"); - + is.check(FUNCTION_NAME); return is; } @@ -102,7 +100,7 @@ bool Foam::read(const char* buf, int32_t& s) Foam::Ostream& Foam::operator<<(Ostream& os, const int32_t i) { os.write(label(i)); - os.check("Ostream& operator<<(Ostream&, const int32_t)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/ints/int64/int64IO.C b/src/OpenFOAM/primitives/ints/int64/int64IO.C index 0523bb94cbbbac954481bc7890ef9463a9b82b03..fe6ce5f56896857a26f86e26199699eb778e46be 100644 --- a/src/OpenFOAM/primitives/ints/int64/int64IO.C +++ b/src/OpenFOAM/primitives/ints/int64/int64IO.C @@ -71,9 +71,7 @@ Foam::Istream& Foam::operator>>(Istream& is, int64_t& i) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, int64_t&)"); - + is.check(FUNCTION_NAME); return is; } @@ -100,7 +98,7 @@ bool Foam::read(const char* buf, int64_t& s) Foam::Ostream& Foam::operator<<(Ostream& os, const int64_t i) { os.write(label(i)); - os.check("Ostream& operator<<(Ostream&, const int64_t)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/ints/uint32/uint32IO.C b/src/OpenFOAM/primitives/ints/uint32/uint32IO.C index f88f5b1ad86d403cd0568f3278ab8ac950c7c1ad..9c46c5d649c1fd1708722b4ee04417709d58456d 100644 --- a/src/OpenFOAM/primitives/ints/uint32/uint32IO.C +++ b/src/OpenFOAM/primitives/ints/uint32/uint32IO.C @@ -69,9 +69,7 @@ Foam::Istream& Foam::operator>>(Istream& is, uint32_t& i) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, uint32_t&)"); - + is.check(FUNCTION_NAME); return is; } @@ -97,7 +95,7 @@ bool Foam::read(const char* buf, uint32_t& s) Foam::Ostream& Foam::operator<<(Ostream& os, const uint32_t i) { os.write(label(i)); - os.check("Ostream& operator<<(Ostream&, const uint32_t)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/ints/uint64/uint64IO.C b/src/OpenFOAM/primitives/ints/uint64/uint64IO.C index 3e110d933a63e19d401bbf77d136aa5f2c49d9ee..02e8d2284dee9935c2d0a0aebf68a7677c99ae5f 100644 --- a/src/OpenFOAM/primitives/ints/uint64/uint64IO.C +++ b/src/OpenFOAM/primitives/ints/uint64/uint64IO.C @@ -69,9 +69,7 @@ Foam::Istream& Foam::operator>>(Istream& is, uint64_t& i) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, uint64_t&)"); - + is.check(FUNCTION_NAME); return is; } @@ -97,7 +95,7 @@ bool Foam::read(const char* buf, uint64_t& s) Foam::Ostream& Foam::operator<<(Ostream& os, const uint64_t i) { os.write(label(i)); - os.check("Ostream& operator<<(Ostream&, const uint64_t)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/polynomialEqns/Roots.H b/src/OpenFOAM/primitives/polynomialEqns/Roots.H new file mode 100644 index 0000000000000000000000000000000000000000..27829eee46b97b22b30c489fc66dc023f2e56108 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/Roots.H @@ -0,0 +1,131 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::Roots + +Description + Templated storage for the roots of polynomial equations, plus flags to + indicate the nature of the roots. + +SourceFiles + RootsI.H + Roots.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Roots_H +#define Roots_H + +#include "VectorSpace.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace roots +{ + +//- Types of root +enum type +{ + real = 0, + complex, + posInf, + negInf, + nan +}; + +} + +/*---------------------------------------------------------------------------*\ + Class Roots Declaration +\*---------------------------------------------------------------------------*/ + +template<direction N> +class Roots +: + public VectorSpace<Roots<N>, scalar, N> +{ + // Private data + + //- Root types, encoded into a single integer + label types_; + +public: + + // Constructors + + //- Construct null + inline Roots(); + + //- Construct with a uniform value + inline Roots(const roots::type t, const scalar x); + + //- Construct by concatenation + inline Roots + ( + const roots::type t, + const scalar x, + const Roots<N - 1>& xs + ); + + //- Construct by concatenation + inline Roots + ( + const Roots<N - 1>& xs, + const roots::type t, + const scalar x + ); + + //- Construct by concatenation + template <direction M> + inline Roots(const Roots<M>& xs, const Roots<N - M>& ys); + + + // Member Functions + + //- Set the type of the i-th root + inline void type(const direction i, const roots::type t); + + //- Return the type of the i-th root + inline roots::type type(const direction i) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "RootsI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/RootsI.H b/src/OpenFOAM/primitives/polynomialEqns/RootsI.H new file mode 100644 index 0000000000000000000000000000000000000000..dd1052f0afdb4297f397a19f63ce3eb07b8820d9 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/RootsI.H @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 <Foam::direction N> +inline Foam::Roots<N>::Roots() +: + types_(0) +{ + forAll(*this, i) + { + type(i, roots::nan); + } +} + + +template <Foam::direction N> +inline Foam::Roots<N>::Roots(const roots::type t, const scalar x) +: + types_(0) +{ + forAll(*this, i) + { + this->v_[i] = x; + type(i, t); + } +} + + +template <Foam::direction N> +inline Foam::Roots<N>::Roots +( + const roots::type t, + const scalar x, + const Roots<N - 1>& xs +) +: + types_(0) +{ + this->v_[0] = x; + type(0, t); + forAll(xs, i) + { + this->v_[i+1] = xs[i]; + type(i + 1, xs.type(i)); + } +} + + +template <Foam::direction N> +inline Foam::Roots<N>::Roots +( + const Roots<N - 1>& xs, + const roots::type t, + const scalar x +) +: + types_(0) +{ + forAll(xs, i) + { + this->v_[i] = xs[i]; + type(i, xs.type(i)); + } + this->v_[N-1] = x; + type(N - 1, t); +} + + +template <Foam::direction N> +template <Foam::direction M> +inline Foam::Roots<N>::Roots +( + const Roots<M>& xs, + const Roots<N - M>& ys +) +: + types_(0) +{ + forAll(xs, i) + { + this->v_[i] = xs[i]; + type(i, xs.type(i)); + } + forAll(ys, i) + { + this->v_[i + M] = ys[i]; + type(i + M, ys.type(i)); + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template <Foam::direction N> +inline void Foam::Roots<N>::type +( + const direction i, + const roots::type t +) +{ + types_ += (t - type(i)) << 3*i; +} + + +template <Foam::direction N> +inline Foam::roots::type Foam::Roots<N>::type(const direction i) const +{ + return static_cast<roots::type>((types_ >> 3*i) & 7); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C new file mode 100644 index 0000000000000000000000000000000000000000..c46b794c38ea16d67c8dd3dbc8f6a697d3567fa5 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C @@ -0,0 +1,164 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "linearEqn.H" +#include "quadraticEqn.H" +#include "cubicEqn.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::Roots<3> Foam::cubicEqn::roots() const +{ + /* + + This function solves a cubic equation of the following form: + + a*x^3 + b*x^2 + c*x + d = 0 + x^3 + B*x^2 + C*x + D = 0 + + The following two substitutions are used: + + x = t - B/3 + t = w - P/3/w + + This reduces the problem to a quadratic in w^3. + + w^6 + Q*w^3 - P = 0 + + Where Q and P are given in the code below. + + The properties of the cubic can be related to the properties of this + quadratic in w^3. If it has a repeated root a zero, the cubic has a tripl + root. If it has a repeated root not at zero, the cubic has two real roots, + one repeated and one not. If it has two complex roots, the cubic has three + real roots. If it has two real roots, then the cubic has one real root and + two complex roots. + + This is solved for the most numerically accurate value of w^3. See the + quadratic function for details on how to pick a value. This single value of + w^3 can yield up to three cube roots for w, which relate to the three + solutions for x. + + Only a single root, or pair of conjugate roots, is directly evaluated; the + one, or ones with the lowest relative numerical error. Root identities are + then used to recover the remaining roots, possibly utilising a quadratic + and/or linear solution. This seems to be a good way of maintaining the + accuracy of roots at very different magnitudes. + + */ + + const scalar a = this->a(); + const scalar b = this->b(); + const scalar c = this->c(); + const scalar d = this->d(); + + if (a == 0) + { + return Roots<3>(quadraticEqn(b, c, d).roots(), roots::nan, 0); + } + + // This is assumed not to over- or under-flow. If it does, all bets are off. + const scalar p = c*a - b*b/3; + const scalar q = b*b*b*(2.0/27.0) - b*c*a/3 + d*a*a; + const scalar disc = p*p*p/27 + q*q/4; + + // How many roots of what types are available? + const bool oneReal = disc == 0 && p == 0; + const bool twoReal = disc == 0 && p != 0; + const bool threeReal = disc < 0; + //const bool oneRealTwoComplex = disc > 0; + + static const scalar sqrt3 = sqrt(3.0); + + scalar x; + + if (oneReal) + { + const Roots<1> r = linearEqn(- a, b/3).roots(); + return Roots<3>(r.type(0), r[0]); + } + else if (twoReal) + { + if (q*b > 0) + { + x = - 2*cbrt(q/2) - b/3; + } + else + { + x = cbrt(q/2) - b/3; + const Roots<1> r = linearEqn(- a, x).roots(); + return Roots<3>(Roots<2>(r, r), linearEqn(x*x, a*d).roots()); + } + } + else if (threeReal) + { + const scalar wCbRe = - q/2, wCbIm = sqrt(- disc); + const scalar wAbs = cbrt(hypot(wCbRe, wCbIm)); + const scalar wArg = atan2(wCbIm, wCbRe)/3; + const scalar wRe = wAbs*cos(wArg), wIm = wAbs*sin(wArg); + if (b > 0) + { + x = - wRe - mag(wIm)*sqrt3 - b/3; + } + else + { + x = 2*wRe - b/3; + } + } + else // if (oneRealTwoComplex) + { + const scalar wCb = - q/2 - sign(q)*sqrt(disc); + const scalar w = cbrt(wCb); + const scalar t = w - p/(3*w); + if (p + t*b < 0) + { + x = t - b/3; + } + else + { + const scalar xRe = - t/2 - b/3, xIm = sqrt3/2*(w + p/3/w); + x = - a*a*d/(xRe*xRe + xIm*xIm); + + // This form of solving for the remaining roots seems more stable + // for this case. This has been determined by trial and error. + return + Roots<3> + ( + linearEqn(- a, x).roots(), + quadraticEqn(a*x, x*x + b*x, - a*d).roots() + ); + } + } + + return + Roots<3> + ( + linearEqn(- a, x).roots(), + quadraticEqn(- x*x, c*x + a*d, d*x).roots() + ); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H new file mode 100644 index 0000000000000000000000000000000000000000..db923761452ff0235937a111af8b366b171fbc07 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::cubicEqn + +Description + Cubic equation of the form a*x^3 + b*x^2 + c*x + d = 0 + +SourceFiles + cubicEqnI.H + cubicEqn.C + +\*---------------------------------------------------------------------------*/ + +#ifndef cubicEqn_H +#define cubicEqn_H + +#include "Roots.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class cubicEqn Declaration +\*---------------------------------------------------------------------------*/ + +class cubicEqn +: + public VectorSpace<cubicEqn, scalar, 4> +{ +public: + + //- Component labeling enumeration + enum components { A, B, C, D }; + + + // Constructors + + //- Construct null + inline cubicEqn(); + + //- Construct initialized to zero + inline cubicEqn(const Foam::zero); + + //- Construct from components + inline cubicEqn + ( + const scalar a, + const scalar b, + const scalar c, + const scalar d + ); + + + // Member Functions + + // Access + + inline scalar a() const; + inline scalar b() const; + inline scalar c() const; + inline scalar d() const; + + inline scalar& a(); + inline scalar& b(); + inline scalar& c(); + inline scalar& d(); + + //- Evaluate at x + inline scalar value(const scalar x) const; + + //- Estimate the error of evaluation at x + inline scalar error(const scalar x) const; + + //- Get the roots + Roots<3> roots() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "cubicEqnI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H new file mode 100644 index 0000000000000000000000000000000000000000..eb6a3283e45156413c9251bb6ac232f95e4766ff --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 * * * * * * * * * * * * * * // + +inline Foam::cubicEqn::cubicEqn() +{} + + +inline Foam::cubicEqn::cubicEqn(const Foam::zero) +: + VectorSpace<cubicEqn, scalar, 4>(Foam::zero()) +{} + + +inline Foam::cubicEqn::cubicEqn +( + const scalar a, + const scalar b, + const scalar c, + const scalar d +) +{ + this->v_[A] = a; + this->v_[B] = b; + this->v_[C] = c; + this->v_[D] = d; +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::scalar Foam::cubicEqn::a() const +{ + return this->v_[A]; +} + + +inline Foam::scalar Foam::cubicEqn::b() const +{ + return this->v_[B]; +} + + +inline Foam::scalar Foam::cubicEqn::c() const +{ + return this->v_[C]; +} + + +inline Foam::scalar Foam::cubicEqn::d() const +{ + return this->v_[D]; +} + + +inline Foam::scalar& Foam::cubicEqn::a() +{ + return this->v_[A]; +} + + +inline Foam::scalar& Foam::cubicEqn::b() +{ + return this->v_[B]; +} + + +inline Foam::scalar& Foam::cubicEqn::c() +{ + return this->v_[C]; +} + + +inline Foam::scalar& Foam::cubicEqn::d() +{ + return this->v_[D]; +} + + +inline Foam::scalar Foam::cubicEqn::value(const scalar x) const +{ + return x*(x*(x*a() + b()) + c()) + d(); +} + + +inline Foam::scalar Foam::cubicEqn::error(const scalar x) const +{ + return mag(SMALL*x*(x*(x*3*a() + 2*b()) + c())); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/IMULES.H b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H similarity index 55% rename from src/finiteVolume/fvMatrices/solvers/MULES/IMULES.H rename to src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H index fdef6b283b9a00d8d91c9fad28352d2a8eb3ad7b..debc52cc01ddb7875d6ca9e07bf93154d8a05d84 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/IMULES.H +++ b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -21,71 +21,81 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -Global - IMULES +Class + Foam::linearEqn Description - IMULES: Multidimensional universal limiter for implicit solution. - - Solve a convective-only transport equation using an explicit universal - multi-dimensional limiter applied to an implicit formulation requiring - iteration to guarantee boundedness. The number of iterations required - to obtain boundedness increases with the Courant number of the simulation. - - It may be more efficient to use CMULES. + Linear equation of the form a*x + b = 0 SourceFiles - IMULES.C - IMULESTemplates.C + linearEqnI.H \*---------------------------------------------------------------------------*/ -#ifndef IMULES_H -#define IMULES_H +#ifndef linearEqn_H +#define linearEqn_H -#include "MULES.H" +#include "Roots.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -namespace MULES + +/*---------------------------------------------------------------------------*\ + Class linearEqn Declaration +\*---------------------------------------------------------------------------*/ + +class linearEqn +: + public VectorSpace<linearEqn, scalar, 2> { +public: -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + //- Component labeling enumeration + enum components { A, B }; + + + // Constructors + + //- Construct null + inline linearEqn(); + + //- Construct initialized to zero + inline linearEqn(const Foam::zero); + + //- Construct from components + inline linearEqn(const scalar a, const scalar b); + + + // Member Functions + + // Access + + inline scalar a() const; + inline scalar b() const; + + inline scalar& a(); + inline scalar& b(); + + //- Evaluate at x + inline scalar value(const scalar x) const; + + //- Estimate the error of evaluation at x + inline scalar error(const scalar x) const; + + //- Get the roots + inline Roots<1> roots() const; +}; -template<class RhoType, class SpType, class SuType> -void implicitSolve -( - const RhoType& rho, - volScalarField& gamma, - const surfaceScalarField& phi, - surfaceScalarField& phiCorr, - const SpType& Sp, - const SuType& Su, - const scalar psiMax, - const scalar psiMin -); - -void implicitSolve -( - volScalarField& gamma, - const surfaceScalarField& phi, - surfaceScalarField& phiCorr, - const scalar psiMax, - const scalar psiMin -); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace MULES } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#ifdef NoRepository - #include "IMULESTemplates.C" -#endif +#include "linearEqnI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H new file mode 100644 index 0000000000000000000000000000000000000000..e86ccbdd0a6d9105504a3552eea7e40c97a9f493 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 * * * * * * * * * * * * * * // + +inline Foam::linearEqn::linearEqn() +{} + + +inline Foam::linearEqn::linearEqn(const Foam::zero) +: + VectorSpace<linearEqn, scalar, 2>(Foam::zero()) +{} + + +inline Foam::linearEqn::linearEqn(const scalar a, const scalar b) +{ + this->v_[A] = a; + this->v_[B] = b; +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::scalar Foam::linearEqn::a() const +{ + return this->v_[A]; +} + + +inline Foam::scalar Foam::linearEqn::b() const +{ + return this->v_[B]; +} + + +inline Foam::scalar& Foam::linearEqn::a() +{ + return this->v_[A]; +} + + +inline Foam::scalar& Foam::linearEqn::b() +{ + return this->v_[B]; +} + + +inline Foam::scalar Foam::linearEqn::value(const scalar x) const +{ + return x*a() + b(); +} + + +inline Foam::scalar Foam::linearEqn::error(const scalar x) const +{ + return mag(SMALL*x*a()); +} + + +inline Foam::Roots<1> Foam::linearEqn::roots() const +{ + /* + + This function solves a linear equation of the following form: + + a*x + b = 0 + x + B = 0 + + */ + + const scalar a = this->a(); + const scalar b = this->b(); + + if (a == 0) + { + return Roots<1>(roots::nan, 0); + } + + if (mag(b/VGREAT) >= mag(a)) + { + return Roots<1>(sign(a) == sign(b) ? roots::negInf : roots::posInf, 0); + } + + return Roots<1>(roots::real, - b/a); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C new file mode 100644 index 0000000000000000000000000000000000000000..d84c2928c25b133d4712829768c11439cf8179a5 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "linearEqn.H" +#include "quadraticEqn.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::Roots<2> Foam::quadraticEqn::roots() const +{ + /* + + This function solves a quadraticEqn equation of the following form: + + a*x^2 + b*x + c = 0 + x^2 + B*x + C = 0 + + The quadraticEqn formula is as follows: + + x = - B/2 +- sqrt(B*B - 4*C)/2 + + If the sqrt generates a complex number, this provides the result. If not + then the real root with the smallest floating point error is calculated. + + x0 = - B/2 - sign(B)*sqrt(B*B - 4*C)/2 + + The other root is the obtained using an identity. + + x1 = C/x0 + + */ + + const scalar a = this->a(); + const scalar b = this->b(); + const scalar c = this->c(); + + if (a == 0) + { + return Roots<2>(linearEqn(b, c).roots(), roots::nan, 0); + } + + // This is assumed not to over- or under-flow. If it does, all bets are off. + const scalar disc = b*b/4 - a*c; + + // How many roots of what types are available? + const bool oneReal = disc == 0; + const bool twoReal = disc > 0; + //const bool twoComplex = disc < 0; + + if (oneReal) + { + const Roots<1> r = linearEqn(- a, b/2).roots(); + return Roots<2>(r, r); + } + else if (twoReal) + { + const scalar x = - b/2 - sign(b)*sqrt(disc); + return Roots<2>(linearEqn(- a, x).roots(), linearEqn(- x, c).roots()); + } + else // if (twoComplex) + { + return Roots<2>(roots::complex, 0); + } +} + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H new file mode 100644 index 0000000000000000000000000000000000000000..1327dc15c943b8acb0429a2658d69bbe445a8a22 --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::quadraticEqn + +Description + Quadratic equation of the form a*x^2 + b*x + c = 0 + +SourceFiles + quadraticEqnI.H + quadraticEqn.C + +\*---------------------------------------------------------------------------*/ + +#ifndef quadraticEqn_H +#define quadraticEqn_H + +#include "Roots.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class quadraticEqn Declaration +\*---------------------------------------------------------------------------*/ + +class quadraticEqn +: + public VectorSpace<quadraticEqn, scalar, 3> +{ +public: + + //- Component labeling enumeration + enum components { A, B, C }; + + + // Constructors + + //- Construct null + inline quadraticEqn(); + + //- Construct initialized to zero + inline quadraticEqn(const Foam::zero); + + //- Construct from components + inline quadraticEqn(const scalar a, const scalar b, const scalar c); + + + // Member Functions + + // Access + + inline scalar a() const; + inline scalar b() const; + inline scalar c() const; + + inline scalar& a(); + inline scalar& b(); + inline scalar& c(); + + //- Evaluate at x + inline scalar value(const scalar x) const; + + //- Estimate the error of evaluation at x + inline scalar error(const scalar x) const; + + //- Get the roots + Roots<2> roots() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "quadraticEqnI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H new file mode 100644 index 0000000000000000000000000000000000000000..4b4aacae614a57de75db138ed46ead5b1fb23f4e --- /dev/null +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 * * * * * * * * * * * * * * // + +inline Foam::quadraticEqn::quadraticEqn() +{} + + +inline Foam::quadraticEqn::quadraticEqn(const Foam::zero) +: + VectorSpace<quadraticEqn, scalar, 3>(Foam::zero()) +{} + + +inline Foam::quadraticEqn::quadraticEqn +( + const scalar a, + const scalar b, + const scalar c +) +{ + this->v_[A] = a; + this->v_[B] = b; + this->v_[C] = c; +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::scalar Foam::quadraticEqn::a() const +{ + return this->v_[A]; +} + + +inline Foam::scalar Foam::quadraticEqn::b() const +{ + return this->v_[B]; +} + + +inline Foam::scalar Foam::quadraticEqn::c() const +{ + return this->v_[C]; +} + + +inline Foam::scalar& Foam::quadraticEqn::a() +{ + return this->v_[A]; +} + + +inline Foam::scalar& Foam::quadraticEqn::b() +{ + return this->v_[B]; +} + + +inline Foam::scalar& Foam::quadraticEqn::c() +{ + return this->v_[C]; +} + + +inline Foam::scalar Foam::quadraticEqn::value(const scalar x) const +{ + return x*(x*a() + b()) + c(); +} + + +inline Foam::scalar Foam::quadraticEqn::error(const scalar x) const +{ + return mag(SMALL*x*(x*2*a() + b())); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/predicates/predicates.H b/src/OpenFOAM/primitives/predicates/predicates.H index 8731fb451899bfc348202d340d0c9d71a608c006..e751c7e957f662c98f2d643d6559985c3aa206f0 100644 --- a/src/OpenFOAM/primitives/predicates/predicates.H +++ b/src/OpenFOAM/primitives/predicates/predicates.H @@ -59,7 +59,7 @@ public: inline always() {} - //- Evalulated as a bool - return true + //- Evaluated as a bool - return true inline operator bool() const { return true; @@ -79,8 +79,8 @@ public: return true; } - //- String matching returning true - inline bool match(const std::string& unused, bool literal=false) const + //- String match returning true + inline bool match(const std::string&, bool literal=false) const { return true; } @@ -101,7 +101,7 @@ public: inline never() {} - //- Evalulated as a bool - return false + //- Evaluated as a bool - return false inline operator bool() const { return false; @@ -121,8 +121,8 @@ public: return false; } - //- String matching returning false - inline bool match(const std::string& unused, bool literal=false) const + //- String match returning false + inline bool match(const std::string&, bool literal=false) const { return false; } diff --git a/src/OpenFOAM/primitives/quaternion/quaternion.C b/src/OpenFOAM/primitives/quaternion/quaternion.C index fa509113e0ae7dbc0d1fc2b9ebf6dbfbe6057975..18cfda5a60e8103bf2409d1b229176c6e5670cc8 100644 --- a/src/OpenFOAM/primitives/quaternion/quaternion.C +++ b/src/OpenFOAM/primitives/quaternion/quaternion.C @@ -159,9 +159,7 @@ Foam::Istream& Foam::operator>>(Istream& is, quaternion& q) // Read end of quaternion is.readEnd("quaternion"); - // Check state of Istream - is.check("operator>>(Istream&, quaternion&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/ranges/labelRange/labelRange.C b/src/OpenFOAM/primitives/ranges/labelRange/labelRange.C index 38349e92b2f0892a9ea65e85d7ecf097666b9a29..b0715f8b403190930a42f45ff5228df427dcb9b2 100644 --- a/src/OpenFOAM/primitives/ranges/labelRange/labelRange.C +++ b/src/OpenFOAM/primitives/ranges/labelRange/labelRange.C @@ -185,7 +185,7 @@ Foam::Istream& Foam::operator>>(Istream& is, labelRange& range) is >> range.start_ >> range.size_; is.readEnd("labelRange"); - is.check("operator>>(Istream&, labelRange&)"); + is.check(FUNCTION_NAME); // Disallow invalid sizes if (range.size_ < 0) @@ -204,7 +204,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const labelRange& range) << range.start() << token::SPACE << range.size() << token::END_LIST; - os.check("operator<<(Ostream&, const labelRange&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/septernion/septernion.C b/src/OpenFOAM/primitives/septernion/septernion.C index 33cdf44c7c5ed4e3de8f6080ef26c12878e0c9ba..6e786ce7a09dc6197c2bf2c3c8080ca05e717f94 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.C +++ b/src/OpenFOAM/primitives/septernion/septernion.C @@ -111,9 +111,7 @@ Foam::Istream& Foam::operator>>(Istream& is, septernion& s) // Read end of septernion is.readEnd("septernion"); - // Check state of Istream - is.check("operator>>(Istream&, septernion&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.C b/src/OpenFOAM/primitives/strings/fileName/fileName.C index 258167fc1e0d29464d478221a536f56cf8ce4c3a..87ddec68b7c3c1cdab8df0fa3462ff721ad7c661 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.C @@ -41,15 +41,15 @@ const Foam::fileName Foam::fileName::null; Foam::fileName::fileName(const UList<word>& lst) { // Estimate overall size - size_type sz = lst.size(); - for (const word& item : lst) + size_type sz = lst.size(); // Approx number of '/' needed + for (const auto& item : lst) { sz += item.size(); } reserve(sz); sz = 0; - for (const word& item : lst) + for (const auto& item : lst) { if (item.size()) { @@ -63,15 +63,15 @@ Foam::fileName::fileName(const UList<word>& lst) Foam::fileName::fileName(std::initializer_list<word> lst) { // Estimate overall size - size_type sz = lst.size(); - for (const word& item : lst) + size_type sz = lst.size(); // Approx number of '/' needed + for (const auto& item : lst) { sz += item.size(); } reserve(sz); sz = 0; - for (const word& item : lst) + for (const auto& item : lst) { if (item.size()) { @@ -90,12 +90,6 @@ Foam::fileName::Type Foam::fileName::type(const bool followLink) const } -bool Foam::fileName::isAbsolute() const -{ - return !empty() && operator[](0) == '/'; -} - - Foam::fileName& Foam::fileName::toAbsolute() { fileName& f = *this; @@ -294,81 +288,26 @@ Foam::fileName Foam::fileName::lessExt() const Foam::word Foam::fileName::ext() const { - const size_type i = find_ext(); - - if (i == npos) - { - return word::null; - } - else - { - return substr(i+1, npos); - } + return string::ext(); } Foam::fileName& Foam::fileName::ext(const word& ending) { - if (!ending.empty() && !empty() && operator[](size()-1) != '/') - { - append("."); - append(ending); - } - + string::ext(ending); return *this; } -bool Foam::fileName::hasExt() const -{ - return (find_ext() != npos); -} - - bool Foam::fileName::hasExt(const word& ending) const { - size_type i = find_ext(); - if (i == npos) - { - return false; - } - - ++i; // Do next comparison *after* the dot - return - ( - // Lengths must match - ((size() - i) == ending.size()) - && !compare(i, npos, ending) - ); + return string::hasExt(ending); } bool Foam::fileName::hasExt(const wordRe& ending) const { - const size_type i = find_ext(); - if (i == npos) - { - return false; - } - - std::string end = substr(i+1, npos); - return ending.match(end); -} - - -bool Foam::fileName::removeExt() -{ - const size_type i = find_ext(); - - if (i == npos) - { - return false; - } - else - { - this->resize(i); - return true; - } + return string::hasExt(ending); } @@ -444,7 +383,7 @@ void Foam::fileName::operator=(const char* str) } -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // Foam::fileName Foam::operator/(const string& a, const string& b) { diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.H b/src/OpenFOAM/primitives/strings/fileName/fileName.H index a8f17cf6b0414e989100d2faef12a01c743bd63e..19cd295120f4a066f73c28ba22af9824b8ad4f77 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.H +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.H @@ -74,10 +74,6 @@ class fileName { // Private Member Functions - //- Find position of the file extension dot, return npos on failure. - // A wrapped version of find_last_of("./") with additional logic. - inline size_type find_ext() const; - //- Strip invalid characters inline void stripInvalid(); @@ -154,6 +150,7 @@ public: // // * Removes trailing '/' // + // \return True if any contents changed bool clean(); //- Cleanup file name @@ -167,8 +164,8 @@ public: // LINK (only if followLink=false) Type type(const bool followLink = true) const; - //- Return true if file name is absolute - bool isAbsolute() const; + //- Return true if file name is absolute (starts with a '/') + inline bool isAbsolute() const; //- Convert from relative to absolute fileName& toAbsolute(); @@ -194,8 +191,8 @@ public: word nameLessExt() const; //- Return basename, optionally without extension - // \deprecated in favour of name() or nameLessExt() which more - // explicitly describe their behaviour (MAR-2017). + // \deprecated in favour of name() or nameLessExt() which describe + // their behaviour more explicitly (MAR-2017). word name(const bool noExt) const { return noExt ? this->nameLessExt() : this->name(); @@ -227,7 +224,7 @@ public: fileName& ext(const word& ending); //- Return true if it has an extension or simply ends with a '.' - bool hasExt() const; + inline bool hasExt() const; //- Return true if the extension is the same as the given ending. bool hasExt(const word& ending) const; @@ -236,7 +233,7 @@ public: bool hasExt(const wordRe& ending) const; //- Remove extension, returning true if string changed. - bool removeExt(); + inline bool removeExt(); //- Return path components as wordList @@ -288,6 +285,8 @@ public: }; +// Global Operators + //- Assemble words and fileNames as pathnames by adding a '/' separator. // No '/' separator is added if either argument is an empty string. fileName operator/(const string& a, const string& b); diff --git a/src/OpenFOAM/primitives/strings/fileName/fileNameI.H b/src/OpenFOAM/primitives/strings/fileName/fileNameI.H index e2055f74746685b214aa0b9fe605543eebc7015f..b1199263056a8ca5b1fca44bdc93af252bcf6cbf 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileNameI.H +++ b/src/OpenFOAM/primitives/strings/fileName/fileNameI.H @@ -25,21 +25,6 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline std::string::size_type Foam::fileName::find_ext() const -{ - const size_type i = find_last_of("./"); - - if (i == npos || i == 0 || operator[](i) == '/') - { - return npos; - } - else - { - return i; - } -} - - inline void Foam::fileName::stripInvalid() { // skip stripping unless debug is active to avoid @@ -130,4 +115,22 @@ inline bool Foam::fileName::valid(char c) } +inline bool Foam::fileName::isAbsolute() const +{ + return !empty() && operator[](0) == '/'; +} + + +inline bool Foam::fileName::hasExt() const +{ + return string::hasExt(); +} + + +inline bool Foam::fileName::removeExt() +{ + return string::removeExt(); +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C index dd686bb1314107e4630f6bf1e9f01a022f57580e..42ab4f6936a947a1a8ab42d3ada616ab650c7e46 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,9 +62,7 @@ Foam::Istream& Foam::operator>>(Istream& is, fileName& fn) fn.stripInvalid(); - // Check state of Istream - is.check("Istream& operator>>(Istream&, fileName&)"); - + is.check(FUNCTION_NAME); return is; } @@ -72,7 +70,7 @@ Foam::Istream& Foam::operator>>(Istream& is, fileName& fn) Foam::Ostream& Foam::operator<<(Ostream& os, const fileName& fn) { os.write(fn); - os.check("Ostream& operator<<(Ostream&, const fileName&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/strings/keyType/keyType.C b/src/OpenFOAM/primitives/strings/keyType/keyType.C index 05f54c255455d1b4aec02782cb118c75a9ce3225..e9b120e8e9720602c4d2fd027f4ec42b8cc96852 100644 --- a/src/OpenFOAM/primitives/strings/keyType/keyType.C +++ b/src/OpenFOAM/primitives/strings/keyType/keyType.C @@ -104,9 +104,7 @@ Foam::Istream& Foam::operator>>(Istream& is, keyType& kw) return is; } - // Check state of IOstream - is.check("Istream& operator>>(Istream&, keyType&)"); - + is.check(FUNCTION_NAME); return is; } @@ -114,7 +112,7 @@ Foam::Istream& Foam::operator>>(Istream& is, keyType& kw) Foam::Ostream& Foam::operator<<(Ostream& os, const keyType& kw) { os.write(kw); - os.check("Ostream& operator<<(Ostream&, const keyType&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/strings/string/string.C b/src/OpenFOAM/primitives/strings/string/string.C index 5f03edeba1c97c0168e8cb149e4b31d3c9582906..dff562641182c6ed17f01b3d1836560df23cc230 100644 --- a/src/OpenFOAM/primitives/strings/string/string.C +++ b/src/OpenFOAM/primitives/strings/string/string.C @@ -25,6 +25,8 @@ License #include "string.H" #include "stringOps.H" +#include "word.H" +#include "wordRe.H" /* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */ @@ -33,13 +35,75 @@ int Foam::string::debug(Foam::debug::debugSwitch(string::typeName, 0)); const Foam::string Foam::string::null; +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::word Foam::string::ext() const +{ + const size_type i = find_ext(); + + if (i == npos) + { + return word::null; + } + else + { + return substr(i+1, npos); + } +} + + +bool Foam::string::ext(const Foam::word& ending) +{ + if (!ending.empty() && !empty() && operator[](size()-1) != '/') + { + append(1u, '.'); + append(ending); + + return true; + } + + return false; +} + + +bool Foam::string::hasExt(const word& ending) const +{ + size_type i = find_ext(); + if (i == npos) + { + return false; + } + + ++i; // Compare *after* the dot + return + ( + // Lengths must match + ((size() - i) == ending.size()) + && !compare(i, npos, ending) + ); +} + + +bool Foam::string::hasExt(const wordRe& ending) const +{ + const size_type i = find_ext(); + if (i == npos) + { + return false; + } + + const std::string end = substr(i+1, npos); // Compare *after* the dot + return ending.match(end); +} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::string::size_type Foam::string::count(const char c) const { size_type cCount = 0; - for (const_iterator iter = begin(); iter != end(); ++iter) + for (const_iterator iter = cbegin(); iter != cend(); ++iter) { if (*iter == c) { diff --git a/src/OpenFOAM/primitives/strings/string/string.H b/src/OpenFOAM/primitives/strings/string/string.H index 87cb00104b2f507b787cd71e0d6a48006838fb0e..e624a68456709d7149fef7501215fe1e4d8a04d7 100644 --- a/src/OpenFOAM/primitives/strings/string/string.H +++ b/src/OpenFOAM/primitives/strings/string/string.H @@ -58,6 +58,8 @@ namespace Foam { // Forward declaration of classes +class word; +class wordRe; class Istream; class Ostream; @@ -76,6 +78,37 @@ class string : public std::string { +protected: + + // Protected Member Functions + + //- Find position of a file extension dot, return npos on failure. + // A wrapped version of find_last_of("./") with additional logic. + inline size_type find_ext() const; + + //- Return file name extension (part after last .) + word ext() const; + + //- Append a '.' and the ending. + // The '.' and ending will not be added when the ending is empty, + // or when the object was or ended with a '/'. + // + // \return True if append occurred. + bool ext(const word& ending); + + //- Return true if it has an extension or simply ends with a '.' + inline bool hasExt() const; + + //- Return true if the extension is the same as the given ending. + bool hasExt(const word& ending) const; + + //- Return true if the extension matches the given ending. + bool hasExt(const wordRe& ending) const; + + //- Remove extension, returning true if string changed. + inline bool removeExt(); + + public: // Static data members diff --git a/src/OpenFOAM/primitives/strings/string/stringI.H b/src/OpenFOAM/primitives/strings/string/stringI.H index b23a71b2d53e0c7d52c23be2895f09b5eb8a7ac8..bae33b3342f081d77271b2a9bb74156cd19f05bf 100644 --- a/src/OpenFOAM/primitives/strings/string/stringI.H +++ b/src/OpenFOAM/primitives/strings/string/stringI.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -25,6 +25,45 @@ License #include <iostream> +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +inline std::string::size_type Foam::string::find_ext() const +{ + const size_type i = find_last_of("./"); + + if (i == npos || i == 0 || operator[](i) == '/') + { + return npos; + } + else + { + return i; + } +} + + +inline bool Foam::string::hasExt() const +{ + return (find_ext() != npos); +} + + +inline bool Foam::string::removeExt() +{ + const size_type i = find_ext(); + + if (i == npos) + { + return false; + } + else + { + this->resize(i); + return true; + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // inline Foam::string::string() diff --git a/src/OpenFOAM/primitives/strings/string/stringIO.C b/src/OpenFOAM/primitives/strings/string/stringIO.C index 954290fff7b2a19bb66705951bc1494e547eb42d..53c728b548c07d37fdf7d94f48051949f04d3ffd 100644 --- a/src/OpenFOAM/primitives/strings/string/stringIO.C +++ b/src/OpenFOAM/primitives/strings/string/stringIO.C @@ -60,9 +60,7 @@ Foam::Istream& Foam::operator>>(Istream& is, string& s) return is; } - // Check state of Istream - is.check("Istream& operator>>(Istream&, string&)"); - + is.check(FUNCTION_NAME); return is; } @@ -70,7 +68,7 @@ Foam::Istream& Foam::operator>>(Istream& is, string& s) Foam::Ostream& Foam::operator<<(Ostream& os, const string& s) { os.write(s); - os.check("Ostream& operator<<(Ostream&, const string&)"); + os.check(FUNCTION_NAME); return os; } @@ -78,7 +76,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const string& s) Foam::Ostream& Foam::operator<<(Ostream& os, const std::string& s) { os.write(string(s)); - os.check("Ostream& operator<<(Ostream&, const std::string&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/strings/stringOps/stringOps.C b/src/OpenFOAM/primitives/strings/stringOps/stringOps.C index 6df273e13842a0c66895b9e7ea1d3682609e2f3d..dca9fe5e087f60cbe395df2aeef9e9f20bc40b7c 100644 --- a/src/OpenFOAM/primitives/strings/stringOps/stringOps.C +++ b/src/OpenFOAM/primitives/strings/stringOps/stringOps.C @@ -308,7 +308,7 @@ Foam::string Foam::stringOps::getVariable } } - if (value.empty()) + if (!allowEmpty && value.empty()) { FatalIOErrorInFunction ( @@ -317,7 +317,8 @@ Foam::string Foam::stringOps::getVariable << name << exit(FatalIOError); } } - else + + if (!allowEmpty && value.empty()) { FatalIOErrorInFunction ( diff --git a/src/OpenFOAM/primitives/strings/word/word.C b/src/OpenFOAM/primitives/strings/word/word.C index bbd4050a338a486438ae9cb628311710c8e63e72..2f418d721d2540ebb798ad0d2033bf412f294b8c 100644 --- a/src/OpenFOAM/primitives/strings/word/word.C +++ b/src/OpenFOAM/primitives/strings/word/word.C @@ -91,4 +91,46 @@ Foam::word Foam::word::validated(const std::string& s) } +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::word Foam::word::lessExt() const +{ + const size_type i = find_ext(); + + if (i == npos) + { + return *this; + } + else + { + return substr(0, i); + } +} + + +Foam::word Foam::word::ext() const +{ + return string::ext(); +} + + +Foam::word& Foam::word::ext(const word& ending) +{ + string::ext(ending); + return *this; +} + + +bool Foam::word::hasExt(const word& ending) const +{ + return string::hasExt(ending); +} + + +bool Foam::word::hasExt(const wordRe& ending) const +{ + return string::hasExt(ending); +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/strings/word/word.H b/src/OpenFOAM/primitives/strings/word/word.H index 4561292ab9076b66cf60c377b00df8ccf4dbd8a8..ebff4c523509b848e6306c4ce87ee8f0968fcfc5 100644 --- a/src/OpenFOAM/primitives/strings/word/word.H +++ b/src/OpenFOAM/primitives/strings/word/word.H @@ -117,13 +117,46 @@ public: static word validated(const std::string& s); + // File-like functions + + //- Return word without extension (part before last .) + word lessExt() const; + + //- Return file name extension (part after last .) + word ext() const; + + //- Append a '.' and the ending, and return the object. + // The '.' and ending will not be added when the ending is empty, + // or when the file name is empty or ended with a '/'. + word& ext(const word& ending); + + //- Return true if it has an extension or simply ends with a '.' + inline bool hasExt() const; + + //- Return true if the extension is the same as the given ending. + bool hasExt(const word& ending) const; + + //- Return true if the extension matches the given ending. + bool hasExt(const wordRe& ending) const; + + //- Remove extension, returning true if string changed. + inline bool removeExt(); + + // Member operators // Assignment + //- Copy, no character validation required inline void operator=(const word& w); + + //- Copy, stripping invalid characters inline void operator=(const string& s); + + //- Copy, stripping invalid characters inline void operator=(const std::string& s); + + //- Copy, stripping invalid characters inline void operator=(const char* s); diff --git a/src/OpenFOAM/primitives/strings/word/wordI.H b/src/OpenFOAM/primitives/strings/word/wordI.H index 7f7aa10829b813e04404ccd5fb1e47b8d59aa901..eb170970143a7aa2771d7c69c77eddbf36018c6f 100644 --- a/src/OpenFOAM/primitives/strings/word/wordI.H +++ b/src/OpenFOAM/primitives/strings/word/wordI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,6 @@ License #include <cctype> -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // inline void Foam::word::stripInvalid() @@ -129,6 +127,18 @@ inline bool Foam::word::valid(char c) } +inline bool Foam::word::hasExt() const +{ + return string::hasExt(); +} + + +inline bool Foam::word::removeExt() +{ + return string::removeExt(); +} + + // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // inline void Foam::word::operator=(const word& w) diff --git a/src/OpenFOAM/primitives/strings/word/wordIO.C b/src/OpenFOAM/primitives/strings/word/wordIO.C index 19221fa2b7f8c9f28e615a222cb40642d450f73e..476dde86fa4c264f72d1734a70f1e46b25c68746 100644 --- a/src/OpenFOAM/primitives/strings/word/wordIO.C +++ b/src/OpenFOAM/primitives/strings/word/wordIO.C @@ -79,9 +79,7 @@ Foam::Istream& Foam::operator>>(Istream& is, word& w) return is; } - // Check state of IOstream - is.check("Istream& operator>>(Istream&, word&)"); - + is.check(FUNCTION_NAME); return is; } @@ -89,7 +87,7 @@ Foam::Istream& Foam::operator>>(Istream& is, word& w) Foam::Ostream& Foam::operator<<(Ostream& os, const word& w) { os.write(w); - os.check("Ostream& operator<<(Ostream&, const word&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/strings/wordRe/wordRe.C b/src/OpenFOAM/primitives/strings/wordRe/wordRe.C index d7725323ca7ed787902cfc3cebd5c744c67060a3..cbee07ee734976148c6ac465b99bbf8f728d3d5d 100644 --- a/src/OpenFOAM/primitives/strings/wordRe/wordRe.C +++ b/src/OpenFOAM/primitives/strings/wordRe/wordRe.C @@ -85,9 +85,7 @@ Foam::Istream& Foam::operator>>(Istream& is, wordRe& w) return is; } - // Check state of IOstream - is.check("Istream& operator>>(Istream&, wordRe&)"); - + is.check(FUNCTION_NAME); return is; } @@ -95,7 +93,7 @@ Foam::Istream& Foam::operator>>(Istream& is, wordRe& w) Foam::Ostream& Foam::operator<<(Ostream& os, const wordRe& w) { os.writeQuoted(w, w.isPattern()); - os.check("Ostream& operator<<(Ostream&, const wordRe&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/primitives/strings/wordRe/wordRe.H b/src/OpenFOAM/primitives/strings/wordRe/wordRe.H index ede0a7a047ea7714941da7ef2aae17e7ddd1d789..4df4325efda64be0beb6e2ba74d759ee323ef53a 100644 --- a/src/OpenFOAM/primitives/strings/wordRe/wordRe.H +++ b/src/OpenFOAM/primitives/strings/wordRe/wordRe.H @@ -25,8 +25,8 @@ Class Foam::wordRe Description - A wordRe is a word, but can also have a regular expression for matching - words. + A wordRe is a Foam::word, but can contain a regular expression for + matching words or strings. By default the constructors will generally preserve the argument as a string literal and the assignment operators will use the wordRe::DETECT diff --git a/src/OpenFOAM/primitives/strings/wordRes/wordRes.C b/src/OpenFOAM/primitives/strings/wordRes/wordRes.C index 3f53f6492ff3a0b8909add61b50f5911cec516a5..618c47932c46f591068930fe430afb04e5e626bb 100644 --- a/src/OpenFOAM/primitives/strings/wordRes/wordRes.C +++ b/src/OpenFOAM/primitives/strings/wordRes/wordRes.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,15 +36,12 @@ Foam::wordReList Foam::wordRes::uniq(const UList<wordRe>& input) label count = 0; forAll(input, i) { - const wordRe& select = input[i]; + const auto& select = input[i]; - if - ( - select.isPattern() - || uniqWord.insert(static_cast<const word&>(select)) - ) + if (select.isPattern() || uniqWord.insert(select)) { - retain[count++] = select; + retain[count] = select; + ++count; } } @@ -53,4 +50,27 @@ Foam::wordReList Foam::wordRes::uniq(const UList<wordRe>& input) } +void Foam::wordRes::inplaceUniq(wordReList& input) +{ + wordHashSet uniqWord; + + label count = 0; + forAll(input, i) + { + const auto& select = input[i]; + + if (select.isPattern() || uniqWord.insert(select)) + { + if (count != i) + { + input[count] = input[i]; + } + ++count; + } + } + + input.setSize(count); +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/strings/wordRes/wordRes.H b/src/OpenFOAM/primitives/strings/wordRes/wordRes.H index 5cfe6b9b5758ca341ce4db9b96cd5d16b241700e..00ca657fe80b2c5656a3f3a5f1c810dd71fbcb3c 100644 --- a/src/OpenFOAM/primitives/strings/wordRes/wordRes.H +++ b/src/OpenFOAM/primitives/strings/wordRes/wordRes.H @@ -78,6 +78,10 @@ public: // No filtering is done on regular expressions. static wordReList uniq(const UList<wordRe>& input); + //- Inplace subset of wordReList with duplicate words filtered out. + // No filtering is done on regular expressions. + static void inplaceUniq(wordReList& input); + // Member Functions diff --git a/src/Pstream/mpi/UIPread.C b/src/Pstream/mpi/UIPread.C index 524f09dcea587877536c68e18d5b0022cc9a0f1a..48ee5b3a3e84adae4fe5b6f887476924f95dd4ee 100644 --- a/src/Pstream/mpi/UIPread.C +++ b/src/Pstream/mpi/UIPread.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,7 +60,7 @@ Foam::UIPstream::UIPstream setOpened(); setGood(); - if (commsType == UPstream::nonBlocking) + if (commsType == commsTypes::nonBlocking) { // Message is already received into externalBuf } @@ -135,7 +135,11 @@ Foam::UIPstream::UIPstream(const int fromProcNo, PstreamBuffers& buffers) clearAtEnd_(true), messageSize_(0) { - if (commsType() != UPstream::scheduled && !buffers.finishedSendsCalled_) + if + ( + commsType() != UPstream::commsTypes::scheduled + && !buffers.finishedSendsCalled_ + ) { FatalErrorInFunction << "PstreamBuffers::finishedSends() never called." << endl @@ -147,7 +151,7 @@ Foam::UIPstream::UIPstream(const int fromProcNo, PstreamBuffers& buffers) setOpened(); setGood(); - if (commsType() == UPstream::nonBlocking) + if (commsType() == commsTypes::nonBlocking) { // Message is already received into externalBuf messageSize_ = buffers.recvBuf_[fromProcNo].size(); @@ -251,7 +255,7 @@ Foam::label Foam::UIPstream::read error::printStack(Pout); } - if (commsType == blocking || commsType == scheduled) + if (commsType == commsTypes::blocking || commsType == commsTypes::scheduled) { MPI_Status status; @@ -301,7 +305,7 @@ Foam::label Foam::UIPstream::read return messageSize; } - else if (commsType == nonBlocking) + else if (commsType == commsTypes::nonBlocking) { MPI_Request request; @@ -344,7 +348,7 @@ Foam::label Foam::UIPstream::read { FatalErrorInFunction << "Unsupported communications type " - << commsType + << int(commsType) << Foam::abort(FatalError); return 0; diff --git a/src/Pstream/mpi/UOPwrite.C b/src/Pstream/mpi/UOPwrite.C index b3188f0009a1c1e7559dd5a2ccf4d1648aa50abe..563163966c36d8a5ec462e4077620e723f269555 100644 --- a/src/Pstream/mpi/UOPwrite.C +++ b/src/Pstream/mpi/UOPwrite.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,7 +68,7 @@ bool Foam::UOPstream::write bool transferFailed = true; - if (commsType == blocking) + if (commsType == commsTypes::blocking) { transferFailed = MPI_Bsend ( @@ -88,7 +88,7 @@ bool Foam::UOPstream::write << Foam::endl; } } - else if (commsType == scheduled) + else if (commsType == commsTypes::scheduled) { transferFailed = MPI_Send ( @@ -108,7 +108,7 @@ bool Foam::UOPstream::write << Foam::endl; } } - else if (commsType == nonBlocking) + else if (commsType == commsTypes::nonBlocking) { MPI_Request request; diff --git a/src/TurbulenceModels/compressible/CompressibleTurbulenceModel/CompressibleTurbulenceModel.H b/src/TurbulenceModels/compressible/CompressibleTurbulenceModel/CompressibleTurbulenceModel.H index 6ca563af9163217560c14e8b0277fb006d9c6104..e87e73f9cba788fc801cbda7ac64f9629b14fde0 100644 --- a/src/TurbulenceModels/compressible/CompressibleTurbulenceModel/CompressibleTurbulenceModel.H +++ b/src/TurbulenceModels/compressible/CompressibleTurbulenceModel/CompressibleTurbulenceModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -115,6 +115,19 @@ public: return this->transport_.mu(patchi); } + //- Return the laminar viscosity + virtual tmp<volScalarField> nu() const + { + return this->transport_.mu()/this->rho_; + } + + //- Return the laminar viscosity on patchi + virtual tmp<scalarField> nu(const label patchi) const + { + return + this->transport_.mu(patchi)/this->rho_.boundaryField()[patchi]; + } + //- Return the turbulence dynamic viscosity virtual tmp<volScalarField> mut() const { diff --git a/src/TurbulenceModels/compressible/Make/files b/src/TurbulenceModels/compressible/Make/files index 53b83f60b9f1f76cd04ec8af55e9bf71f6cfaa9b..c7b6100132fc7e76581b4abf95517337c7750dae 100644 --- a/src/TurbulenceModels/compressible/Make/files +++ b/src/TurbulenceModels/compressible/Make/files @@ -2,7 +2,6 @@ compressibleTurbulenceModel.C turbulentFluidThermoModels/turbulentFluidThermoModels.C BCs = turbulentFluidThermoModels/derivedFvPatchFields -$(BCs)/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C $(BCs)/temperatureCoupledBase/temperatureCoupledBase.C $(BCs)/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C $(BCs)/thermalBaffle1D/thermalBaffle1DFvPatchScalarFields.C diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C index ab1abe4657f9a378dd3bc4869e3ee490e1cc077d..3aa29ad806292d412dee811a6b76f1c3a8e0068c 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -27,6 +27,9 @@ License #include "addToRunTimeSelectionTable.H" #include "fvPatchFieldMapper.H" #include "volFields.H" +#include "physicoChemicalConstants.H" + +using Foam::constant::physicoChemical::sigma; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -40,12 +43,11 @@ namespace Foam 3 >::names[] = { - "fixed_heat_flux", - "fixed_heat_transfer_coefficient", - "unknown" + "power", + "flux", + "coefficient" }; - -} // End namespace Foam +} const Foam::NamedEnum < @@ -65,45 +67,21 @@ externalWallHeatFluxTemperatureFvPatchScalarField : mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), "undefined", "undefined", "undefined-K"), - mode_(unknown), - q_(p.size(), 0.0), - h_(p.size(), 0.0), - Ta_(p.size(), 0.0), - QrPrevious_(p.size(), 0.0), - QrRelaxation_(1), - QrName_("undefined-Qr"), + mode_(fixedHeatFlux), + Q_(0), + relaxation_(1), + emissivity_(0), + qrRelaxation_(1), + qrName_("undefined-qr"), thicknessLayers_(), kappaLayers_() { - refValue() = 0.0; - refGrad() = 0.0; - valueFraction() = 1.0; + refValue() = 0; + refGrad() = 0; + valueFraction() = 1; } -Foam::externalWallHeatFluxTemperatureFvPatchScalarField:: -externalWallHeatFluxTemperatureFvPatchScalarField -( - const externalWallHeatFluxTemperatureFvPatchScalarField& ptf, - const fvPatch& p, - const DimensionedField<scalar, volMesh>& iF, - const fvPatchFieldMapper& mapper -) -: - mixedFvPatchScalarField(ptf, p, iF, mapper), - temperatureCoupledBase(patch(), ptf), - mode_(ptf.mode_), - q_(ptf.q_, mapper), - h_(ptf.h_, mapper), - Ta_(ptf.Ta_, mapper), - QrPrevious_(ptf.QrPrevious_, mapper), - QrRelaxation_(ptf.QrRelaxation_), - QrName_(ptf.QrName_), - thicknessLayers_(ptf.thicknessLayers_), - kappaLayers_(ptf.kappaLayers_) -{} - - Foam::externalWallHeatFluxTemperatureFvPatchScalarField:: externalWallHeatFluxTemperatureFvPatchScalarField ( @@ -114,60 +92,67 @@ externalWallHeatFluxTemperatureFvPatchScalarField : mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), dict), - mode_(unknown), - q_(p.size(), 0.0), - h_(p.size(), 0.0), - Ta_(p.size(), 0.0), - QrPrevious_(p.size(), 0.0), - QrRelaxation_(dict.lookupOrDefault<scalar>("relaxation", 1)), - QrName_(dict.lookupOrDefault<word>("Qr", "none")), + mode_(operationModeNames.read(dict.lookup("mode"))), + Q_(0), + relaxation_(dict.lookupOrDefault<scalar>("relaxation", 1)), + emissivity_(dict.lookupOrDefault<scalar>("emissivity", 0)), + qrRelaxation_(dict.lookupOrDefault<scalar>("qrRelaxation", 1)), + qrName_(dict.lookupOrDefault<word>("qr", "none")), thicknessLayers_(), kappaLayers_() { - if (dict.found("q") && !dict.found("h") && !dict.found("Ta")) - { - mode_ = fixedHeatFlux; - q_ = scalarField("q", dict, p.size()); - } - else if (dict.found("h") && dict.found("Ta") && !dict.found("q")) + switch (mode_) { - mode_ = fixedHeatTransferCoeff; - h_ = scalarField("h", dict, p.size()); - Ta_ = scalarField("Ta", dict, p.size()); - if (dict.found("thicknessLayers")) + case fixedPower: + { + dict.lookup("Q") >> Q_; - if (dict.readIfPresent("thicknessLayers", thicknessLayers_)) + break; + } + case fixedHeatFlux: + { + q_ = scalarField("q", dict, p.size()); + + break; + } + case fixedHeatTransferCoeff: { - dict.lookup("kappaLayers") >> kappaLayers_; + h_ = scalarField("h", dict, p.size()); + Ta_ = scalarField("Ta", dict, p.size()); - if (thicknessLayers_.size() != kappaLayers_.size()) + if (dict.found("thicknessLayers")) { - FatalIOErrorInFunction(dict) - << "\n number of layers for thicknessLayers and " - << "kappaLayers must be the same" - << "\n for patch " << p.name() - << " of field " << internalField().name() - << " in file " << internalField().objectPath() - << exit(FatalIOError); + dict.lookup("thicknessLayers") >> thicknessLayers_; + dict.lookup("kappaLayers") >> kappaLayers_; + + if (thicknessLayers_.size() != kappaLayers_.size()) + { + FatalIOErrorInFunction(dict) + << "\n number of layers for thicknessLayers and " + << "kappaLayers must be the same" + << "\n for patch " << p.name() + << " of field " << internalField().name() + << " in file " << internalField().objectPath() + << exit(FatalIOError); + } } + + break; } } - else - { - FatalErrorInFunction - << "\n patch type '" << p.type() - << "' either q or h and Ta were not found '" - << "\n for patch " << p.name() - << " of field " << internalField().name() - << " in file " << internalField().objectPath() - << exit(FatalError); - } fvPatchScalarField::operator=(scalarField("value", dict, p.size())); - if (dict.found("QrPrevious")) + if (qrName_ != "none") { - QrPrevious_ = scalarField("QrPrevious", dict, p.size()); + if (dict.found("qrPrevious")) + { + qrPrevious_ = scalarField("qrPrevious", dict, p.size()); + } + else + { + qrPrevious_.setSize(p.size(), 0); + } } if (dict.found("refValue")) @@ -181,8 +166,56 @@ externalWallHeatFluxTemperatureFvPatchScalarField { // Start from user entered data. Assume fixedValue. refValue() = *this; - refGrad() = 0.0; - valueFraction() = 1.0; + refGrad() = 0; + valueFraction() = 1; + } +} + + +Foam::externalWallHeatFluxTemperatureFvPatchScalarField:: +externalWallHeatFluxTemperatureFvPatchScalarField +( + const externalWallHeatFluxTemperatureFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper), + temperatureCoupledBase(patch(), ptf), + mode_(ptf.mode_), + Q_(ptf.Q_), + relaxation_(ptf.relaxation_), + emissivity_(ptf.emissivity_), + qrRelaxation_(ptf.qrRelaxation_), + qrName_(ptf.qrName_), + thicknessLayers_(ptf.thicknessLayers_), + kappaLayers_(ptf.kappaLayers_) +{ + switch (mode_) + { + case fixedPower: + { + break; + } + case fixedHeatFlux: + { + q_.autoMap(mapper); + + break; + } + case fixedHeatTransferCoeff: + { + h_.autoMap(mapper); + Ta_.autoMap(mapper); + + break; + } + } + + if (qrName_ != "none") + { + qrPrevious_.autoMap(mapper); } } @@ -190,41 +223,47 @@ externalWallHeatFluxTemperatureFvPatchScalarField Foam::externalWallHeatFluxTemperatureFvPatchScalarField:: externalWallHeatFluxTemperatureFvPatchScalarField ( - const externalWallHeatFluxTemperatureFvPatchScalarField& tppsf + const externalWallHeatFluxTemperatureFvPatchScalarField& ewhftpsf ) : - mixedFvPatchScalarField(tppsf), - temperatureCoupledBase(tppsf), - mode_(tppsf.mode_), - q_(tppsf.q_), - h_(tppsf.h_), - Ta_(tppsf.Ta_), - QrPrevious_(tppsf.QrPrevious_), - QrRelaxation_(tppsf.QrRelaxation_), - QrName_(tppsf.QrName_), - thicknessLayers_(tppsf.thicknessLayers_), - kappaLayers_(tppsf.kappaLayers_) + mixedFvPatchScalarField(ewhftpsf), + temperatureCoupledBase(ewhftpsf), + mode_(ewhftpsf.mode_), + Q_(ewhftpsf.Q_), + q_(ewhftpsf.q_), + h_(ewhftpsf.h_), + Ta_(ewhftpsf.Ta_), + relaxation_(ewhftpsf.relaxation_), + emissivity_(ewhftpsf.emissivity_), + qrPrevious_(ewhftpsf.qrPrevious_), + qrRelaxation_(ewhftpsf.qrRelaxation_), + qrName_(ewhftpsf.qrName_), + thicknessLayers_(ewhftpsf.thicknessLayers_), + kappaLayers_(ewhftpsf.kappaLayers_) {} Foam::externalWallHeatFluxTemperatureFvPatchScalarField:: externalWallHeatFluxTemperatureFvPatchScalarField ( - const externalWallHeatFluxTemperatureFvPatchScalarField& tppsf, + const externalWallHeatFluxTemperatureFvPatchScalarField& ewhftpsf, const DimensionedField<scalar, volMesh>& iF ) : - mixedFvPatchScalarField(tppsf, iF), - temperatureCoupledBase(patch(), tppsf), - mode_(tppsf.mode_), - q_(tppsf.q_), - h_(tppsf.h_), - Ta_(tppsf.Ta_), - QrPrevious_(tppsf.QrPrevious_), - QrRelaxation_(tppsf.QrRelaxation_), - QrName_(tppsf.QrName_), - thicknessLayers_(tppsf.thicknessLayers_), - kappaLayers_(tppsf.kappaLayers_) + mixedFvPatchScalarField(ewhftpsf, iF), + temperatureCoupledBase(patch(), ewhftpsf), + mode_(ewhftpsf.mode_), + Q_(ewhftpsf.Q_), + q_(ewhftpsf.q_), + h_(ewhftpsf.h_), + Ta_(ewhftpsf.Ta_), + relaxation_(ewhftpsf.relaxation_), + emissivity_(ewhftpsf.emissivity_), + qrPrevious_(ewhftpsf.qrPrevious_), + qrRelaxation_(ewhftpsf.qrRelaxation_), + qrName_(ewhftpsf.qrName_), + thicknessLayers_(ewhftpsf.thicknessLayers_), + kappaLayers_(ewhftpsf.kappaLayers_) {} @@ -236,10 +275,32 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::autoMap ) { mixedFvPatchScalarField::autoMap(m); - q_.autoMap(m); - h_.autoMap(m); - Ta_.autoMap(m); - QrPrevious_.autoMap(m); + + switch (mode_) + { + case fixedPower: + { + break; + } + case fixedHeatFlux: + { + q_.autoMap(m); + + break; + } + case fixedHeatTransferCoeff: + { + h_.autoMap(m); + Ta_.autoMap(m); + + break; + } + } + + if (qrName_ != "none") + { + qrPrevious_.autoMap(m); + } } @@ -251,13 +312,34 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::rmap { mixedFvPatchScalarField::rmap(ptf, addr); - const externalWallHeatFluxTemperatureFvPatchScalarField& tiptf = + const externalWallHeatFluxTemperatureFvPatchScalarField& ewhftpsf = refCast<const externalWallHeatFluxTemperatureFvPatchScalarField>(ptf); - q_.rmap(tiptf.q_, addr); - h_.rmap(tiptf.h_, addr); - Ta_.rmap(tiptf.Ta_, addr); - QrPrevious_.rmap(tiptf.QrPrevious_, addr); + switch (mode_) + { + case fixedPower: + { + break; + } + case fixedHeatFlux: + { + q_.rmap(ewhftpsf.q_, addr); + + break; + } + case fixedHeatTransferCoeff: + { + h_.rmap(ewhftpsf.h_, addr); + Ta_.rmap(ewhftpsf.Ta_, addr); + + break; + } + } + + if (qrName_ != "none") + { + qrPrevious_.rmap(ewhftpsf.qrPrevious_, addr); + } } @@ -268,65 +350,114 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs() return; } - const scalarField Tp(*this); - scalarField hp(patch().size(), 0.0); + const scalarField& Tp(*this); - scalarField Qr(Tp.size(), 0.0); - if (QrName_ != "none") + scalarField qr(Tp.size(), 0); + if (qrName_ != "none") { - Qr = patch().lookupPatchField<volScalarField, scalar>(QrName_); + qr = + qrRelaxation_ + *patch().lookupPatchField<volScalarField, scalar>(qrName_) + + (1 - qrRelaxation_)*qrPrevious_; - Qr = QrRelaxation_*Qr + (1.0 - QrRelaxation_)*QrPrevious_; - QrPrevious_ = Qr; + qrPrevious_ = qr; } switch (mode_) { + case fixedPower: + { + refGrad() = (Q_/gSum(patch().magSf()) + qr)/kappa(Tp); + refValue() = 0; + valueFraction() = 0; + + break; + } case fixedHeatFlux: { - refGrad() = (q_ + Qr)/kappa(Tp); - refValue() = 0.0; - valueFraction() = 0.0; + refGrad() = (q_ + qr)/kappa(Tp); + refValue() = 0; + valueFraction() = 0; break; } case fixedHeatTransferCoeff: { - scalar totalSolidRes = 0.0; - if (thicknessLayers_.size() > 0) + scalar totalSolidRes = 0; + if (thicknessLayers_.size()) { forAll(thicknessLayers_, iLayer) { const scalar l = thicknessLayers_[iLayer]; - if (kappaLayers_[iLayer] > 0.0) + if (kappaLayers_[iLayer] > 0) { totalSolidRes += l/kappaLayers_[iLayer]; } } } - hp = 1.0/(1.0/h_ + totalSolidRes); + scalarField hp(1/(1/h_ + totalSolidRes)); + + scalarField hpTa(hp*Ta_); + + if (emissivity_ > 0) + { + // Evaluate the radiative flux to the environment + // from the surface temperature ... + if (totalSolidRes > 0) + { + // ... including the effect of the solid wall thermal + // resistance + scalarField TpLambda(h_/(h_ + 1/totalSolidRes)); + scalarField Ts(TpLambda*Tp + (1 - TpLambda)*Ta_); + scalarField lambdaTa4(pow4((1 - TpLambda)*Ta_)); + + hp += emissivity_*sigma.value()*(pow4(Ts) - lambdaTa4)/Tp; + hpTa += sigma.value()*(emissivity_*lambdaTa4 + pow4(Ta_)); + } + else + { + // ... if there is no solid wall thermal resistance use + // the current wall temperature + hp += emissivity_*sigma.value()*pow3(Tp); + hpTa += sigma.value()*pow4(Ta_); + } + } - Qr /= Tp; - refGrad() = 0.0; - refValue() = hp*Ta_/(hp - Qr); - valueFraction() = - (hp - Qr)/((hp - Qr) + kappa(Tp)*patch().deltaCoeffs()); + const scalarField kappaDeltaCoeffs + ( + this->kappa(Tp)*patch().deltaCoeffs() + ); + + refGrad() = 0; + + forAll(Tp, i) + { + if (qr[i] < 0) + { + const scalar hpmqr = hp[i] - qr[i]/Tp[i]; + + refValue()[i] = hpTa[i]/hpmqr; + valueFraction()[i] = hpmqr/(hpmqr + kappaDeltaCoeffs[i]); + } + else + { + refValue()[i] = (hpTa[i] + qr[i])/hp[i]; + valueFraction()[i] = hp[i]/(hp[i] + kappaDeltaCoeffs[i]); + } + } break; } - default: - { - FatalErrorInFunction - << "Illegal heat flux mode " << operationModeNames[mode_] - << exit(FatalError); - } } + valueFraction() = relaxation_*valueFraction() + (1 - relaxation_); + refValue() = relaxation_*refValue() + (1 - relaxation_)*Tp; + mixedFvPatchScalarField::updateCoeffs(); if (debug) { - scalar Q = gSum(kappa(Tp)*patch().magSf()*snGrad()); + const scalar Q = gSum(kappa(Tp)*patch().magSf()*snGrad()); Info<< patch().boundaryMesh().mesh().name() << ':' << patch().name() << ':' @@ -346,37 +477,68 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write Ostream& os ) const { - mixedFvPatchScalarField::write(os); - temperatureCoupledBase::write(os); + fvPatchScalarField::write(os); - QrPrevious_.writeEntry("QrPrevious", os); - os.writeKeyword("Qr")<< QrName_ << token::END_STATEMENT << nl; - os.writeKeyword("relaxation")<< QrRelaxation_ - << token::END_STATEMENT << nl; + os.writeKeyword("mode") + << operationModeNames[mode_] << token::END_STATEMENT << nl; + temperatureCoupledBase::write(os); switch (mode_) { + case fixedPower: + { + os.writeKeyword("Q") + << Q_ << token::END_STATEMENT << nl; + break; + } case fixedHeatFlux: { q_.writeEntry("q", os); + break; } case fixedHeatTransferCoeff: { h_.writeEntry("h", os); Ta_.writeEntry("Ta", os); - thicknessLayers_.writeEntry("thicknessLayers", os); - kappaLayers_.writeEntry("kappaLayers", os); + + if (relaxation_ < 1) + { + os.writeKeyword("relaxation") + << relaxation_ << token::END_STATEMENT << nl; + } + + if (emissivity_ > 0) + { + os.writeKeyword("emissivity") + << emissivity_ << token::END_STATEMENT << nl; + } + + if (thicknessLayers_.size()) + { + thicknessLayers_.writeEntry("thicknessLayers", os); + kappaLayers_.writeEntry("kappaLayers", os); + } + break; } - default: - { - FatalErrorInFunction - << "Illegal heat flux mode " << operationModeNames[mode_] - << abort(FatalError); - } } + + os.writeKeyword("qr")<< qrName_ << token::END_STATEMENT << nl; + + if (qrName_ != "none") + { + os.writeKeyword("qrRelaxation") + << qrRelaxation_ << token::END_STATEMENT << nl; + + qrPrevious_.writeEntry("qrPrevious", os); + } + + refValue().writeEntry("refValue", os); + refGrad().writeEntry("refGradient", os); + valueFraction().writeEntry("valueFraction", os); + writeEntry("value", os); } diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H index a253a040f4ff83bab02441cc3561ece524c8c104..f823eb6fa79ee6f1c4913e90b81cd7554c824a70 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,37 +28,43 @@ Group grpThermoBoundaryConditions grpWallBoundaryConditions Description - This boundary condition supplies a heat flux condition for temperature - on an external wall. Optional thin thermal layer resistances can be - specified through thicknessLayers and kappaLayers entries for the - fixed heat transfer coefficient mode. + This boundary condition applies a heat flux condition to temperature + on an external wall in one of three modes: - The condition can operate in two modes: - - fixed heat transfer coefficient: supply h and Ta + - fixed power: supply Q - fixed heat flux: supply q + - fixed heat transfer coefficient: supply h and Ta where: \vartable - h | heat transfer coefficient [W/m^2/K] - Ta | ambient temperature [K] - q | heat flux [W/m^2] + Q | Power [W] + q | Heat flux [W/m^2] + h | Heat transfer coefficient [W/m^2/K] + Ta | Ambient temperature [K] \endvartable + For heat transfer coefficient mode optional thin thermal layer resistances + can be specified through thicknessLayers and kappaLayers entries. + The thermal conductivity \c kappa can either be retrieved from various possible sources, as detailed in the class temperatureCoupledBase. Usage \table - Property | Description | Required | Default value - q | heat flux [W/m^2] | yes* | - Ta | ambient temperature [K] | yes* | - h | heat transfer coefficient [W/m^2/K] | yes*| - thicknessLayers | list of thicknesses per layer [m] | yes | - kappaLayers | list of thermal conductivities per layer [W/m/K] | yes | - Qr | name of the radiative field | no | no - relaxation | relaxation factor for radiative field | no | 1 - kappaMethod | inherited from temperatureCoupledBase | inherited | - kappa | inherited from temperatureCoupledBase | inherited | + Property | Description | Required | Default value + mode | 'power', 'flux' or 'coefficient' | yes | + Q | Power [W] | for mode 'power' | + q | Heat flux [W/m^2] | for mode 'flux' | + h | Heat transfer coefficient [W/m^2/K] | for mode 'coefficent' | + Ta | Ambient temperature [K] | for mode 'coefficient' | + thicknessLayers | Layer thicknesses [m] | no | + kappaLayers | Layer thermal conductivities [W/m/K] | no | + relaxation | Relaxation for the wall temperature | no | 1 + emissivity | Surface emissivity for radiative flux to ambient | no | 0 + qr | Name of the radiative field | no | none + qrRelaxation | Relaxation factor for radiative field | no | 1 + kappaMethod | Inherited from temperatureCoupledBase | inherited | + kappa | Inherited from temperatureCoupledBase | inherited | \endtable Example of the boundary condition specification: @@ -66,24 +72,23 @@ Usage <patchName> { type externalWallHeatFluxTemperature; - q uniform 1000; + + mode coefficient; + Ta uniform 300.0; h uniform 10.0; thicknessLayers (0.1 0.2 0.3 0.4); kappaLayers (1 2 3 4); - value uniform 300.0; - Qr none; - relaxation 1; - kappaMethod fluidThermo; - kappa none; + + kappaMethod fluidThermo; + + value $internalField; } \endverbatim - Note: - - Only supply \c h and \c Ta, or \c q in the dictionary (see above) - See also Foam::temperatureCoupledBase + Foam::mixedFvPatchScalarField SourceFiles externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -117,9 +122,9 @@ public: //- Operation mode enumeration enum operationMode { - fixedHeatFlux, //!< Fixed heat flux + fixedPower, //!< Fixed heat power [W] + fixedHeatFlux, //!< Fixed heat flux [W/m2] fixedHeatTransferCoeff, //!< Fixed heat transfer coefficient - unknown }; static const NamedEnum<operationMode, 3> operationModeNames; @@ -132,23 +137,32 @@ private: //- Operation mode operationMode mode_; - //- Heat flux / [W/m2] + //- Heat power [W] + scalar Q_; + + //- Heat flux [W/m2] scalarField q_; - //- Heat transfer coefficient / [W/m2K] + //- Heat transfer coefficient [W/m2K] scalarField h_; - //- Ambient temperature / [K] + //- Ambient temperature [K] scalarField Ta_; - //- Chache Qr for relaxation - scalarField QrPrevious_; + //- Relaxation for the wall temperature (thermal inertia) + scalar relaxation_; + + //- Optional surface emissivity for radiative transfer to ambient + scalar emissivity_; + + //- Cache qr for relaxation + scalarField qrPrevious_; - //- Relaxation for Qr - scalar QrRelaxation_; + //- Relaxation for qr + scalar qrRelaxation_; //- Name of the radiative heat flux - const word QrName_; + const word qrName_; //- Thickness of layers scalarList thicknessLayers_; @@ -181,8 +195,8 @@ public: ); //- Construct by mapping given - // externalWallHeatFluxTemperatureFvPatchScalarField - // onto a new patch + // externalWallHeatFluxTemperatureFvPatchScalarField + // onto a new patch externalWallHeatFluxTemperatureFvPatchScalarField ( const externalWallHeatFluxTemperatureFvPatchScalarField&, diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C index 8a7027a59c9e8bb2a0595a00f0d0510cd9f048ca..50c15be701b224cacd6d181e7a04c0dff92085fb 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C @@ -111,7 +111,7 @@ Foam::tmp<Foam::scalarField> Foam::temperatureCoupledBase::kappa { typedef compressible::turbulenceModel turbulenceModel; - word turbName(turbulenceModel::propertiesName); + const word turbName(turbulenceModel::propertiesName); if ( @@ -205,8 +205,8 @@ Foam::tmp<Foam::scalarField> Foam::temperatureCoupledBase::kappa << " on mesh " << mesh.name() << " patch " << patch_.name() << nl << "Please set 'kappaMethod' to one of " - << KMethodTypeNames_.toc() - << " and 'kappa' to the name of the volScalar" + << flatOutput(KMethodTypeNames_.sortedToc()) << nl + << "and 'kappa' to the name of the volScalar" << " or volSymmTensor field (if kappaMethod=lookup)" << exit(FatalError); } @@ -219,8 +219,8 @@ Foam::tmp<Foam::scalarField> Foam::temperatureCoupledBase::kappa FatalErrorInFunction << "Unimplemented method " << KMethodTypeNames_[method_] << nl << "Please set 'kappaMethod' to one of " - << KMethodTypeNames_.toc() - << " and 'kappa' to the name of the volScalar" + << flatOutput(KMethodTypeNames_.sortedToc()) << nl + << "and 'kappa' to the name of the volScalar" << " or volSymmTensor field (if kappaMethod=lookup)" << exit(FatalError); } diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C index 71c695e80de410e9e1d6ef6a9405a6f7040ae6e8..6ed6e4f72afb060258182e8c36403d934863d02a 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,9 +53,9 @@ thermalBaffle1DFvPatchScalarField Qs_(p.size()), solidDict_(), solidPtr_(nullptr), - QrPrevious_(p.size()), - QrRelaxation_(1), - QrName_("undefined-Qr") + qrPrevious_(p.size()), + qrRelaxation_(1), + qrName_("undefined-qr") {} @@ -77,9 +77,9 @@ thermalBaffle1DFvPatchScalarField Qs_(ptf.Qs_, mapper), solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_), - QrPrevious_(ptf.QrPrevious_, mapper), - QrRelaxation_(ptf.QrRelaxation_), - QrName_(ptf.QrName_) + qrPrevious_(ptf.qrPrevious_, mapper), + qrRelaxation_(ptf.qrRelaxation_), + qrName_(ptf.qrName_) {} @@ -100,9 +100,9 @@ thermalBaffle1DFvPatchScalarField Qs_(p.size(), 0), solidDict_(dict), solidPtr_(), - QrPrevious_(p.size(), 0.0), - QrRelaxation_(dict.lookupOrDefault<scalar>("relaxation", 1)), - QrName_(dict.lookupOrDefault<word>("Qr", "none")) + qrPrevious_(p.size(), 0.0), + qrRelaxation_(dict.lookupOrDefault<scalar>("relaxation", 1)), + qrName_(dict.lookupOrDefault<word>("qr", "none")) { fvPatchScalarField::operator=(scalarField("value", dict, p.size())); @@ -116,9 +116,9 @@ thermalBaffle1DFvPatchScalarField Qs_ = scalarField("Qs", dict, p.size()); } - if (dict.found("QrPrevious")) + if (dict.found("qrPrevious")) { - QrPrevious_ = scalarField("QrPrevious", dict, p.size()); + qrPrevious_ = scalarField("qrPrevious", dict, p.size()); } if (dict.found("refValue") && baffleActivated_) @@ -154,9 +154,9 @@ thermalBaffle1DFvPatchScalarField Qs_(ptf.Qs_), solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_), - QrPrevious_(ptf.QrPrevious_), - QrRelaxation_(ptf.QrRelaxation_), - QrName_(ptf.QrName_) + qrPrevious_(ptf.qrPrevious_), + qrRelaxation_(ptf.qrRelaxation_), + qrName_(ptf.qrName_) {} @@ -176,9 +176,9 @@ thermalBaffle1DFvPatchScalarField Qs_(ptf.Qs_), solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_), - QrPrevious_(ptf.QrPrevious_), - QrRelaxation_(ptf.QrRelaxation_), - QrName_(ptf.QrName_) + qrPrevious_(ptf.qrPrevious_), + qrRelaxation_(ptf.qrRelaxation_), + qrName_(ptf.qrName_) {} @@ -364,15 +364,15 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs() patch().template lookupPatchField<volScalarField, scalar>(TName_); - scalarField Qr(Tp.size(), 0.0); + scalarField qr(Tp.size(), 0.0); - if (QrName_ != "none") + if (qrName_ != "none") { - Qr = patch().template lookupPatchField<volScalarField, scalar> - (QrName_); + qr = patch().template lookupPatchField<volScalarField, scalar> + (qrName_); - Qr = QrRelaxation_*Qr + (1.0 - QrRelaxation_)*QrPrevious_; - QrPrevious_ = Qr; + qr = qrRelaxation_*qr + (1.0 - qrRelaxation_)*qrPrevious_; + qrPrevious_ = qr; } tmp<scalarField> Ti = patchInternalField(); @@ -393,7 +393,7 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs() scalarField KDeltaSolid(kappas/baffleThickness()); - scalarField alpha(KDeltaSolid - Qr/Tp); + scalarField alpha(KDeltaSolid - qr/Tp); valueFraction() = alpha/(alpha + myKDelta); @@ -435,9 +435,9 @@ void thermalBaffle1DFvPatchScalarField<solidType>::write(Ostream& os) const solid().write(os); } - QrPrevious_.writeEntry("QrPrevious", os); - os.writeKeyword("Qr")<< QrName_ << token::END_STATEMENT << nl; - os.writeKeyword("relaxation")<< QrRelaxation_ + qrPrevious_.writeEntry("qrPrevious", os); + os.writeKeyword("qr")<< qrName_ << token::END_STATEMENT << nl; + os.writeKeyword("relaxation")<< qrRelaxation_ << token::END_STATEMENT << nl; } diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H index 23dedf0b07b4ea04b8985fe4632bc53efd776aeb..f9491806fecfdde79494d021c10b96b524745e30 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,8 +31,8 @@ Description This BC solves a steady 1D thermal baffle. The solid properties are specify as dictionary. Optionaly radiative heat - flux (Qr) can be incorporated into the balance. Some under-relaxation might - be needed on Qr. Baffle and solid properties need to be specified on the + flux (qr) can be incorporated into the balance. Some under-relaxation might + be needed on qr. Baffle and solid properties need to be specified on the master side of the baffle. Usage @@ -48,13 +48,12 @@ Usage thickness uniform 0.005; // thickness [m] Qs uniform 100; // heat flux [W/m2] - Qr none; + qr none; relaxation 1; // Solid thermo specie { - nMoles 1; molWeight 20; } transport @@ -79,7 +78,7 @@ Usage type compressible::thermalBaffle1D<hConstSolidThermoPhysics>; samplePatch <masterPatchName>; - Qr none; + qr none; relaxation 1; } \endverbatim @@ -133,14 +132,14 @@ class thermalBaffle1DFvPatchScalarField //- Solid thermo mutable autoPtr<solidType> solidPtr_; - //- Cache Qr for relaxation - scalarField QrPrevious_; + //- Cache qr for relaxation + scalarField qrPrevious_; - //- Relaxation for Qr - scalar QrRelaxation_; + //- Relaxation for qr + scalar qrRelaxation_; //- Name of the radiative heat flux in local region - const word QrName_; + const word qrName_; // Private members diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C deleted file mode 100644 index 786ceae3e9d924008aa0aa3e56103a862b1ad1ff..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C +++ /dev/null @@ -1,262 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 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 "turbulentHeatFluxTemperatureFvPatchScalarField.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" - - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - // declare specialization within 'Foam' namespace - template<> - const char* NamedEnum - < - Foam::compressible:: - turbulentHeatFluxTemperatureFvPatchScalarField::heatSourceType, - 2 - >::names[] = - { - "power", - "flux" - }; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -namespace Foam -{ - -namespace compressible -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -const NamedEnum -< - turbulentHeatFluxTemperatureFvPatchScalarField::heatSourceType, - 2 -> turbulentHeatFluxTemperatureFvPatchScalarField::heatSourceTypeNames_; - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -turbulentHeatFluxTemperatureFvPatchScalarField:: -turbulentHeatFluxTemperatureFvPatchScalarField -( - const fvPatch& p, - const DimensionedField<scalar, volMesh>& iF -) -: - fixedGradientFvPatchScalarField(p, iF), - temperatureCoupledBase(patch(), "undefined", "undefined", "undefined-K"), - heatSource_(hsPower), - q_(p.size(), 0.0), - QrName_("undefinedQr") -{} - - -turbulentHeatFluxTemperatureFvPatchScalarField:: -turbulentHeatFluxTemperatureFvPatchScalarField -( - const turbulentHeatFluxTemperatureFvPatchScalarField& ptf, - const fvPatch& p, - const DimensionedField<scalar, volMesh>& iF, - const fvPatchFieldMapper& mapper -) -: - fixedGradientFvPatchScalarField(ptf, p, iF, mapper), - temperatureCoupledBase(patch(), ptf), - heatSource_(ptf.heatSource_), - q_(ptf.q_, mapper), - QrName_(ptf.QrName_) -{} - - -turbulentHeatFluxTemperatureFvPatchScalarField:: -turbulentHeatFluxTemperatureFvPatchScalarField -( - const fvPatch& p, - const DimensionedField<scalar, volMesh>& iF, - const dictionary& dict -) -: - fixedGradientFvPatchScalarField(p, iF), - temperatureCoupledBase(patch(), dict), - heatSource_(heatSourceTypeNames_.read(dict.lookup("heatSource"))), - q_("q", dict, p.size()), - QrName_(dict.lookupOrDefault<word>("Qr", "none")) -{ - if (dict.found("value") && dict.found("gradient")) - { - fvPatchField<scalar>::operator=(Field<scalar>("value", dict, p.size())); - gradient() = Field<scalar>("gradient", dict, p.size()); - } - else - { - // Still reading so cannot yet evaluate. Make up a value. - fvPatchField<scalar>::operator=(patchInternalField()); - gradient() = 0.0; - } -} - - -turbulentHeatFluxTemperatureFvPatchScalarField:: -turbulentHeatFluxTemperatureFvPatchScalarField -( - const turbulentHeatFluxTemperatureFvPatchScalarField& thftpsf -) -: - fixedGradientFvPatchScalarField(thftpsf), - temperatureCoupledBase(patch(), thftpsf), - heatSource_(thftpsf.heatSource_), - q_(thftpsf.q_), - QrName_(thftpsf.QrName_) -{} - - -turbulentHeatFluxTemperatureFvPatchScalarField:: -turbulentHeatFluxTemperatureFvPatchScalarField -( - const turbulentHeatFluxTemperatureFvPatchScalarField& thftpsf, - const DimensionedField<scalar, volMesh>& iF -) -: - fixedGradientFvPatchScalarField(thftpsf, iF), - temperatureCoupledBase(patch(), thftpsf), - heatSource_(thftpsf.heatSource_), - q_(thftpsf.q_), - QrName_(thftpsf.QrName_) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void turbulentHeatFluxTemperatureFvPatchScalarField::autoMap -( - const fvPatchFieldMapper& m -) -{ - fixedGradientFvPatchScalarField::autoMap(m); - q_.autoMap(m); -} - - -void turbulentHeatFluxTemperatureFvPatchScalarField::rmap -( - const fvPatchScalarField& ptf, - const labelList& addr -) -{ - fixedGradientFvPatchScalarField::rmap(ptf, addr); - - const turbulentHeatFluxTemperatureFvPatchScalarField& thftptf = - refCast<const turbulentHeatFluxTemperatureFvPatchScalarField> - ( - ptf - ); - - q_.rmap(thftptf.q_, addr); -} - - -void turbulentHeatFluxTemperatureFvPatchScalarField::updateCoeffs() -{ - if (updated()) - { - return; - } - - const scalarField& Tp = *this; - - scalarField qr(this->size(), 0.0); - - //- Qr is negative going into the domain - if (QrName_ != "none") - { - qr = patch().lookupPatchField<volScalarField, scalar>(QrName_); - } - - switch (heatSource_) - { - case hsPower: - { - const scalar Ap = gSum(patch().magSf()); - gradient() = (q_/Ap + qr)/kappa(Tp); - break; - } - case hsFlux: - { - gradient() = (q_ + qr)/kappa(Tp); - break; - } - default: - { - FatalErrorInFunction - << "Unknown heat source type. Valid types are: " - << heatSourceTypeNames_ << nl << exit(FatalError); - } - } - - fixedGradientFvPatchScalarField::updateCoeffs(); -} - - -void turbulentHeatFluxTemperatureFvPatchScalarField::write -( - Ostream& os -) const -{ - fixedGradientFvPatchScalarField::write(os); - os.writeKeyword("heatSource") << heatSourceTypeNames_[heatSource_] - << token::END_STATEMENT << nl; - temperatureCoupledBase::write(os); - q_.writeEntry("q", os); - os.writeKeyword("Qr")<< QrName_ << token::END_STATEMENT << nl; - writeEntry("value", os); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePatchTypeField -( - fvPatchScalarField, - turbulentHeatFluxTemperatureFvPatchScalarField -); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace compressible -} // End namespace Foam - - -// ************************************************************************* // diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C index f2629e6f4057ff873d8d42c7b6967db96c872ad4..e8fad80ee703f74bd6b8e278da42bd3e51ee2e1f 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd ------------------------------------------------------------------------------- License @@ -49,8 +49,8 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), "undefined", "undefined", "undefined-K"), TnbrName_("undefined-Tnbr"), - QrNbrName_("undefined-QrNbr"), - QrName_("undefined-Qr"), + qrNbrName_("undefined-qrNbr"), + qrName_("undefined-qr"), thicknessLayers_(0), kappaLayers_(0), contactRes_(0), @@ -74,8 +74,8 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField mixedFvPatchScalarField(psf, p, iF, mapper), temperatureCoupledBase(patch(), psf), TnbrName_(psf.TnbrName_), - QrNbrName_(psf.QrNbrName_), - QrName_(psf.QrName_), + qrNbrName_(psf.qrNbrName_), + qrName_(psf.qrName_), thicknessLayers_(psf.thicknessLayers_), kappaLayers_(psf.kappaLayers_), contactRes_(psf.contactRes_), @@ -94,8 +94,8 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), dict), TnbrName_(dict.lookupOrDefault<word>("Tnbr", "T")), - QrNbrName_(dict.lookupOrDefault<word>("QrNbr", "none")), - QrName_(dict.lookupOrDefault<word>("Qr", "none")), + qrNbrName_(dict.lookupOrDefault<word>("qrNbr", "none")), + qrName_(dict.lookupOrDefault<word>("qr", "none")), thicknessLayers_(0), kappaLayers_(0), contactRes_(0.0), @@ -156,8 +156,8 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField mixedFvPatchScalarField(psf, iF), temperatureCoupledBase(patch(), psf), TnbrName_(psf.TnbrName_), - QrNbrName_(psf.QrNbrName_), - QrName_(psf.QrName_), + qrNbrName_(psf.qrNbrName_), + qrName_(psf.qrName_), thicknessLayers_(psf.thicknessLayers_), kappaLayers_(psf.kappaLayers_), contactRes_(psf.contactRes_), @@ -182,6 +182,7 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs() UPstream::msgType() = oldTag+1; // Get the coupling information from the mappedPatchBase + const label patchi = patch().index(); const mappedPatchBase& mpp = refCast<const mappedPatchBase>(patch().patch()); const polyMesh& nbrMesh = mpp.sampleMesh(); @@ -219,17 +220,17 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs() scalarField KDelta(kappa(Tp)*patch().deltaCoeffs()); - scalarField Qr(Tp.size(), 0.0); - if (QrName_ != "none") + scalarField qr(Tp.size(), 0.0); + if (qrName_ != "none") { - Qr = patch().lookupPatchField<volScalarField, scalar>(QrName_); + qr = patch().lookupPatchField<volScalarField, scalar>(qrName_); } - scalarField QrNbr(Tp.size(), 0.0); - if (QrNbrName_ != "none") + scalarField qrNbr(Tp.size(), 0.0); + if (qrNbrName_ != "none") { - QrNbr = nbrPatch.lookupPatchField<volScalarField, scalar>(QrNbrName_); - mpp.distribute(QrNbr); + qrNbr = nbrPatch.lookupPatchField<volScalarField, scalar>(qrNbrName_); + mpp.distribute(qrNbr); } // inertia therm @@ -244,10 +245,15 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs() if (thermo) { + const scalarField& ppn = + thermo->p().boundaryField()[samplePatchi]; + const scalarField& Tpn = + thermo->T().boundaryField()[samplePatchi]; + mCpDtNbr = ( - thermo->Cp()().boundaryField()[nbrPatch.index()] - * thermo->rho()().boundaryField()[nbrPatch.index()] + thermo->Cp(ppn, Tpn, samplePatchi) + * thermo->rho(samplePatchi) / nbrPatch.deltaCoeffs()/dt ); @@ -268,10 +274,12 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs() if (thermo) { + const scalarField& pp = thermo->p().boundaryField()[patchi]; + mCpDt = ( - thermo->rho()().boundaryField()[patch().index()] - * thermo->Cp()().boundaryField()[patch().index()] + thermo->Cp(pp, Tp, patchi) + * thermo->rho(patchi) / patch().deltaCoeffs()/dt ); } @@ -288,21 +296,20 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs() this->internalField().name() ); - const fvPatchField<scalar>& TpOld = - T.oldTime().boundaryField()[patch().index()]; + const fvPatchField<scalar>& TpOld = T.oldTime().boundaryField()[patchi]; scalarField alpha(KDeltaNbr + mCpDt + mCpDtNbr); valueFraction() = alpha/(alpha + KDelta); scalarField c(KDeltaNbr*TcNbr + (mCpDt + mCpDtNbr)*TpOld); refValue() = c/alpha; - refGrad() = (Qr + QrNbr)/kappa(Tp); + refGrad() = (qr + qrNbr)/kappa(Tp); } else { valueFraction() = KDeltaNbr/(KDeltaNbr + KDelta); refValue() = TcNbr; - refGrad() = (Qr + QrNbr)/kappa(Tp); + refGrad() = (qr + qrNbr)/kappa(Tp); } mixedFvPatchScalarField::updateCoeffs(); @@ -337,8 +344,8 @@ void turbulentTemperatureRadCoupledMixedFvPatchScalarField::write { mixedFvPatchScalarField::write(os); os.writeKeyword("Tnbr")<< TnbrName_ << token::END_STATEMENT << nl; - os.writeKeyword("QrNbr")<< QrNbrName_ << token::END_STATEMENT << nl; - os.writeKeyword("Qr")<< QrName_ << token::END_STATEMENT << nl; + os.writeKeyword("qrNbr")<< qrNbrName_ << token::END_STATEMENT << nl; + os.writeKeyword("qr")<< qrName_ << token::END_STATEMENT << nl; os.writeEntry("thermalInertia", thermalInertia_); thicknessLayers_.writeEntry("thicknessLayers", os); diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H index 1efecea9d02923d5f4dcdcc5403e2b3aac4d8458..a28a965bf16aab40297cc9f0b2d8f82c9932af03 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd ------------------------------------------------------------------------------- License @@ -38,8 +38,8 @@ Usage \table Property | Description | Required | Default value Tnbr | name of the field | no | T - QrNbr | name of the radiative flux in the nbr region | no | none - Qr | name of the radiative flux in this region | no | none + qrNbr | name of the radiative flux in the nbr region | no | none + qr | name of the radiative flux in this region | no | none thicknessLayers | list of thicknesses per layer [m] | no | kappaLayers | list of thermal conductivites per layer [W/m/K] | no | kappaMethod | inherited from temperatureCoupledBase | inherited | @@ -53,8 +53,8 @@ Usage { type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; - QrNbr Qr; // or none. Name of Qr field on neighbour region - Qr Qr; // or none. Name of Qr field on local region + qrNbr qr; // or none. Name of qr field on neighbour region + qr qr; // or none. Name of qr field on local region thicknessLayers (0.1 0.2 0.3 0.4); kappaLayers (1 2 3 4); thermalInertia false/true; @@ -103,10 +103,10 @@ class turbulentTemperatureRadCoupledMixedFvPatchScalarField const word TnbrName_; //- Name of the radiative heat flux in the neighbout region - const word QrNbrName_; + const word qrNbrName_; //- Name of the radiative heat flux in local region - const word QrName_; + const word qrName_; //- Thickness of layers scalarList thicknessLayers_; diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H.orig similarity index 52% rename from src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H rename to src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H.orig index a19de4fff8a8fc63988411b2ba45cf3d721bac28..9b725409dce0b690de15d9d3d39fbf2639c845b5 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H.orig @@ -2,8 +2,13 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | +<<<<<<< HEAD \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd +======= + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | +>>>>>>> d2a62df7c ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -22,12 +27,14 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::compressible::turbulentHeatFluxTemperatureFvPatchScalarField + Foam::compressible:: + turbulentTemperatureRadCoupledMixedFvPatchScalarField Description - Fixed heat boundary condition to specify temperature gradient. Input - heat source either specified in terms of an absolute power [W], or as a - flux [W/m^2]. + Mixed boundary condition for temperature and radiation heat transfer + to be used for in multiregion cases. Optional thin thermal layer + resistances can be specified through thicknessLayers and kappaLayers + entries. The thermal conductivity \c kappa can either be retrieved from various possible sources, as detailed in the class temperatureCoupledBase. @@ -35,43 +42,49 @@ Description Usage \table Property | Description | Required | Default value - heatSource | 'power' [W] or 'flux' [W/m^2] | yes | - q | heat power or flux field | yes | - Qr | name of the radiative flux field | yes | - value | initial temperature value | no | calculated - gradient | initial gradient value | no | 0.0 + Tnbr | name of the field | no | T + qrNbr | name of the radiative flux in the nbr region | no | none + qr | name of the radiative flux in this region | no | none + thicknessLayers | list of thicknesses per layer [m] | no | + kappaLayers | list of thermal conductivites per layer [W/m/K] | no | kappaMethod | inherited from temperatureCoupledBase | inherited | kappa | inherited from temperatureCoupledBase | inherited | + thermalInertia | Add thermal inertia to wall node | no | false \endtable - Note: If needed, both 'value' and 'gradient' must be defined to be used. - - Example usage: + Example of the boundary condition specification: \verbatim - hotWall + <patchName> { - type compressible::turbulentHeatFluxTemperature; - heatSource flux; - q uniform 10; - kappaMethod fluidThermo; - kappa none; - Qr none; + type compressible::turbulentTemperatureRadCoupledMixed; + Tnbr T; + qrNbr qr; // or none. Name of qr field on neighbour region + qr qr; // or none. Name of qr field on local region + thicknessLayers (0.1 0.2 0.3 0.4); + kappaLayers (1 2 3 4); + thermalInertia false/true; + kappaMethod lookup; + kappa kappa; + value uniform 300; } \endverbatim + Needs to be on underlying mapped(Wall)FvPatch. + See also Foam::temperatureCoupledBase SourceFiles - turbulentHeatFluxTemperatureFvPatchScalarField.C + turbulentTemperatureRadCoupledMixedFvPatchScalarField.C \*---------------------------------------------------------------------------*/ -#ifndef turbulentHeatFluxTemperatureFvPatchScalarFields_H -#define turbulentHeatFluxTemperatureFvPatchScalarFields_H +#ifndef turbulentTemperatureRadCoupledMixedFvPatchScalarField_H +#define turbulentTemperatureRadCoupledMixedFvPatchScalarField_H -#include "fixedGradientFvPatchFields.H" +#include "mixedFvPatchFields.H" #include "temperatureCoupledBase.H" +#include "scalarList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -81,60 +94,55 @@ namespace compressible { /*---------------------------------------------------------------------------*\ - Class turbulentHeatFluxTemperatureFvPatchScalarField Declaration + Class turbulentTemperatureRadCoupledMixedFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ -class turbulentHeatFluxTemperatureFvPatchScalarField +class turbulentTemperatureRadCoupledMixedFvPatchScalarField : - public fixedGradientFvPatchScalarField, + public mixedFvPatchScalarField, public temperatureCoupledBase { -public: - - // Data types - - //- Enumeration listing the possible hest source input modes - enum heatSourceType - { - hsPower, - hsFlux - }; + // Private data + //- Name of field on the neighbour region + const word TnbrName_; -private: + //- Name of the radiative heat flux in the neighbout region + const word qrNbrName_; - // Private data + //- Name of the radiative heat flux in local region + const word qrName_; - //- Heat source type names - static const NamedEnum<heatSourceType, 2> heatSourceTypeNames_; + //- Thickness of layers + scalarList thicknessLayers_; - //- Heat source type - heatSourceType heatSource_; + //- Conductivity of layers + scalarList kappaLayers_; - //- Heat power [W] or flux [W/m2] - scalarField q_; + //- Total contact resistance + scalar contactRes_; - //- Name of radiative in flux field - word QrName_; + //- Thermal inertia term + Switch thermalInertia_; public: //- Runtime type information - TypeName("compressible::turbulentHeatFluxTemperature"); + TypeName("compressible::turbulentTemperatureRadCoupledMixed"); // Constructors //- Construct from patch and internal field - turbulentHeatFluxTemperatureFvPatchScalarField + turbulentTemperatureRadCoupledMixedFvPatchScalarField ( const fvPatch&, const DimensionedField<scalar, volMesh>& ); //- Construct from patch, internal field and dictionary - turbulentHeatFluxTemperatureFvPatchScalarField + turbulentTemperatureRadCoupledMixedFvPatchScalarField ( const fvPatch&, const DimensionedField<scalar, volMesh>&, @@ -142,35 +150,33 @@ public: ); //- Construct by mapping given - // turbulentHeatFluxTemperatureFvPatchScalarField onto - // a new patch - turbulentHeatFluxTemperatureFvPatchScalarField + // turbulentTemperatureCoupledBaffleMixedFvPatchScalarField onto a + // new patch + turbulentTemperatureRadCoupledMixedFvPatchScalarField ( - const turbulentHeatFluxTemperatureFvPatchScalarField&, + const + turbulentTemperatureRadCoupledMixedFvPatchScalarField&, const fvPatch&, const DimensionedField<scalar, volMesh>&, const fvPatchFieldMapper& ); - //- Construct as copy - turbulentHeatFluxTemperatureFvPatchScalarField - ( - const turbulentHeatFluxTemperatureFvPatchScalarField& - ); - //- Construct and return a clone virtual tmp<fvPatchScalarField> clone() const { return tmp<fvPatchScalarField> ( - new turbulentHeatFluxTemperatureFvPatchScalarField(*this) + new turbulentTemperatureRadCoupledMixedFvPatchScalarField + ( + *this + ) ); } //- Construct as copy setting internal field reference - turbulentHeatFluxTemperatureFvPatchScalarField + turbulentTemperatureRadCoupledMixedFvPatchScalarField ( - const turbulentHeatFluxTemperatureFvPatchScalarField&, + const turbulentTemperatureRadCoupledMixedFvPatchScalarField&, const DimensionedField<scalar, volMesh>& ); @@ -182,7 +188,7 @@ public: { return tmp<fvPatchScalarField> ( - new turbulentHeatFluxTemperatureFvPatchScalarField + new turbulentTemperatureRadCoupledMixedFvPatchScalarField ( *this, iF @@ -193,29 +199,11 @@ public: // Member functions - // Mapping functions - - //- Map (and resize as needed) from self given a mapping object - virtual void autoMap(const fvPatchFieldMapper&); - - //- Reverse map the given fvPatchField onto this fvPatchField - virtual void rmap - ( - const fvPatchScalarField&, - const labelList& - ); - - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); - - - // I-O + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); - //- Write - virtual void write(Ostream&) const; + //- Write + virtual void write(Ostream&) const; }; diff --git a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C index 7f0af09be6231f6b798329e18fdec3d538a8572f..8db844d9a8fde8fc70e34df0cb3de5cb135a8393 100644 --- a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C +++ b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -130,7 +130,10 @@ kOmegaSSTSato<BasicTurbulenceModel>::gasTurbulence() const template<class BasicTurbulenceModel> -void kOmegaSSTSato<BasicTurbulenceModel>::correctNut() +void kOmegaSSTSato<BasicTurbulenceModel>::correctNut +( + const volScalarField& S2 +) { const PhaseCompressibleTurbulenceModel<transportModel>& gasTurbulence = this->gasTurbulence(); @@ -145,7 +148,7 @@ void kOmegaSSTSato<BasicTurbulenceModel>::correctNut() /max ( this->a1_*this->omega_, - this->F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_))) + this->b1_*this->F23()*sqrt(S2) ) + sqr(1 - exp(-yPlus/16.0)) *Cmub_*gasTurbulence.transport().d()*gasTurbulence.alpha() diff --git a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.H b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.H index 4a95eb1aba60429f8751d15e72c2dc848dd870cc..ac42f2a77770f128c28ac9af4c85984332b940eb 100644 --- a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.H +++ b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,8 +68,8 @@ Description to specify the near-wall omega as appropriate. The blending functions (15) and (16) are not currently used because of the - uncertainty in their origin, range of applicability and that is y+ becomes - sufficiently small blending u_tau in this manner clearly becomes nonsense. + uncertainty in their origin, range of applicability and that as y+ becomes + sufficiently small blending u_tau in this manner is clearly nonsense. The default model coefficients correspond to the following: \verbatim @@ -156,7 +156,8 @@ protected: // Protected Member Functions - virtual void correctNut(); + virtual void correctNut(const volScalarField& S2); + public: diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C b/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C index 6d449e0698d80c57b240883a8be8e262446343eb..5257a4c52a066d86191ed9268c9e2acde8f09480 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,7 @@ void Foam::LESModel<BasicTurbulenceModel>::printCoeffs(const word& type) { if (printCoeffs_) { - Info<< type << "Coeffs" << coeffDict_ << endl; + Info<< coeffDict_.dictName() << coeffDict_ << endl; } } @@ -67,7 +67,7 @@ Foam::LESModel<BasicTurbulenceModel>::LESModel LESDict_(this->subOrEmptyDict("LES")), turbulence_(LESDict_.lookup("turbulence")), printCoeffs_(LESDict_.lookupOrDefault<Switch>("printCoeffs", false)), - coeffDict_(LESDict_.subOrEmptyDict(type + "Coeffs")), + coeffDict_(LESDict_.optionalSubDict(type + "Coeffs")), kMin_ ( @@ -183,10 +183,7 @@ bool Foam::LESModel<BasicTurbulenceModel>::read() LESDict_ <<= this->subDict("LES"); LESDict_.lookup("turbulence") >> turbulence_; - if (const dictionary* dictPtr = LESDict_.subDictPtr(type() + "Coeffs")) - { - coeffDict_ <<= *dictPtr; - } + coeffDict_ <<= LESDict_.optionalSubDict(type() + "Coeffs"); delta_().read(LESDict_); diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.C index f23ee3f528173d03e1897902b4c435159b3dca71..c7e478ebce54e79e485a50be77f05ac393255667 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -151,7 +151,11 @@ Foam::LESModels::IDDESDelta::IDDESDelta ), Cw_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Cw", 0.15) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "Cw", + 0.15 + ) ) { calcDelta(); @@ -162,7 +166,7 @@ Foam::LESModels::IDDESDelta::IDDESDelta void Foam::LESModels::IDDESDelta::read(const dictionary& dict) { - const dictionary& coeffsDict(dict.subDict(type() + "Coeffs")); + const dictionary& coeffsDict(dict.optionalSubDict(type() + "Coeffs")); coeffsDict.readIfPresent<scalar>("Cw", Cw_); diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/PrandtlDelta/PrandtlDelta.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/PrandtlDelta/PrandtlDelta.C index d2b9f762b4a2589ed6c8f1038945ccb4783112d5..f09e9c240bb38c3640ff77581efe50e07bbae88b 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/PrandtlDelta/PrandtlDelta.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/PrandtlDelta/PrandtlDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,13 +67,17 @@ Foam::LESModels::PrandtlDelta::PrandtlDelta ( name, turbulence, - dict.subDict(type() + "Coeffs") + dict.optionalSubDict(type() + "Coeffs") ) ), kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)), Cdelta_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Cdelta", 0.158) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "Cdelta", + 0.158 + ) ) { calcDelta(); @@ -84,7 +88,7 @@ Foam::LESModels::PrandtlDelta::PrandtlDelta void Foam::LESModels::PrandtlDelta::read(const dictionary& dict) { - const dictionary& coeffDict(dict.subDict(type() + "Coeffs")); + const dictionary& coeffDict(dict.optionalSubDict(type() + "Coeffs")); geometricDelta_().read(coeffDict); dict.readIfPresent<scalar>("kappa", kappa_); diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/cubeRootVolDelta/cubeRootVolDelta.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/cubeRootVolDelta/cubeRootVolDelta.C index 16bfdc9f3206c7ef7d3cd83b0662234c74e4d345..5b88de32cd8188175c7a49f71b74ba35b5641db1 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/cubeRootVolDelta/cubeRootVolDelta.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/cubeRootVolDelta/cubeRootVolDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -94,7 +94,11 @@ Foam::LESModels::cubeRootVolDelta::cubeRootVolDelta LESdelta(name, turbulence), deltaCoeff_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("deltaCoeff", 1) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "deltaCoeff", + 1 + ) ) { calcDelta(); @@ -105,7 +109,7 @@ Foam::LESModels::cubeRootVolDelta::cubeRootVolDelta void Foam::LESModels::cubeRootVolDelta::read(const dictionary& dict) { - dict.subDict(type() + "Coeffs").readIfPresent<scalar> + dict.optionalSubDict(type() + "Coeffs").readIfPresent<scalar> ( "deltaCoeff", deltaCoeff_ diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/maxDeltaxyz/maxDeltaxyz.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/maxDeltaxyz/maxDeltaxyz.C index 6aa84d132f12e2debf6d52065064533bff10b529..351d0fb11f35f966a5bc3be5ca6965e71bd0c7a0 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/maxDeltaxyz/maxDeltaxyz.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/maxDeltaxyz/maxDeltaxyz.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -110,7 +110,11 @@ Foam::LESModels::maxDeltaxyz::maxDeltaxyz LESdelta(name, turbulence), deltaCoeff_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("deltaCoeff", 1) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "deltaCoeff", + 1 + ) ) { calcDelta(); @@ -121,7 +125,7 @@ Foam::LESModels::maxDeltaxyz::maxDeltaxyz void Foam::LESModels::maxDeltaxyz::read(const dictionary& dict) { - const dictionary& coeffsDict(dict.subDict(type() + "Coeffs")); + const dictionary& coeffsDict(dict.optionalSubDict(type() + "Coeffs")); coeffsDict.readIfPresent<scalar>("deltaCoeff", deltaCoeff_); diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.C index b8877829117beac4d93dc6964bdf9acc3c200b79..a93225c735519947e7f4879ee822bf61edd6f820 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -156,12 +156,15 @@ Foam::LESModels::smoothDelta::smoothDelta ( "geometricDelta", turbulence, - dict.subDict(type() + "Coeffs") + dict.optionalSubDict(type() + "Coeffs") ) ), maxDeltaRatio_ ( - readScalar(dict.subDict(type() + "Coeffs").lookup("maxDeltaRatio")) + readScalar + ( + dict.optionalSubDict(type() + "Coeffs").lookup("maxDeltaRatio") + ) ) { calcDelta(); @@ -172,7 +175,7 @@ Foam::LESModels::smoothDelta::smoothDelta void Foam::LESModels::smoothDelta::read(const dictionary& dict) { - const dictionary& coeffsDict(dict.subDict(type() + "Coeffs")); + const dictionary& coeffsDict(dict.optionalSubDict(type() + "Coeffs")); geometricDelta_().read(coeffsDict); coeffsDict.lookup("maxDeltaRatio") >> maxDeltaRatio_; diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/vanDriestDelta/vanDriestDelta.C b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/vanDriestDelta/vanDriestDelta.C index 97effadd45a44facdba30df40364a88ffb11a801..05b1774c2f6c3a4af8c358c0067b325339c51cec 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/vanDriestDelta/vanDriestDelta.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/vanDriestDelta/vanDriestDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -108,21 +108,29 @@ Foam::LESModels::vanDriestDelta::vanDriestDelta ( IOobject::groupName("geometricDelta", turbulence.U().group()), turbulence, - dict.subDict(type() + "Coeffs") + dict.optionalSubDict(type() + "Coeffs") ) ), kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)), Aplus_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Aplus", 26.0) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "Aplus", + 26.0 + ) ), Cdelta_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<scalar>("Cdelta", 0.158) + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<scalar> + ( + "Cdelta", + 0.158 + ) ), calcInterval_ ( - dict.subDict(type() + "Coeffs").lookupOrDefault<label> + dict.optionalSubDict(type() + "Coeffs").lookupOrDefault<label> ( "calcInterval", 1 @@ -137,7 +145,7 @@ Foam::LESModels::vanDriestDelta::vanDriestDelta void Foam::LESModels::vanDriestDelta::read(const dictionary& dict) { - const dictionary& coeffsDict(dict.subDict(type() + "Coeffs")); + const dictionary& coeffsDict(dict.optionalSubDict(type() + "Coeffs")); geometricDelta_().read(coeffsDict); dict.readIfPresent<scalar>("kappa", kappa_); diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESfilters/anisotropicFilter/anisotropicFilter.C b/src/TurbulenceModels/turbulenceModels/LES/LESfilters/anisotropicFilter/anisotropicFilter.C index 467949de78a36f5ee7521382dc6e2b10efbc9bc5..f988138fe3ef6b65b73940bd1baf00c535c9ec12 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESfilters/anisotropicFilter/anisotropicFilter.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESfilters/anisotropicFilter/anisotropicFilter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,7 +84,10 @@ Foam::anisotropicFilter::anisotropicFilter ) : LESfilter(mesh), - widthCoeff_(readScalar(bd.subDict(type() + "Coeffs").lookup("widthCoeff"))), + widthCoeff_ + ( + readScalar(bd.optionalSubDict(type() + "Coeffs").lookup("widthCoeff")) + ), coeff_ ( IOobject @@ -118,7 +121,7 @@ Foam::anisotropicFilter::anisotropicFilter void Foam::anisotropicFilter::read(const dictionary& bd) { - bd.subDict(type() + "Coeffs").lookup("widthCoeff") >> widthCoeff_; + bd.optionalSubDict(type() + "Coeffs").lookup("widthCoeff") >> widthCoeff_; } diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESfilters/laplaceFilter/laplaceFilter.C b/src/TurbulenceModels/turbulenceModels/LES/LESfilters/laplaceFilter/laplaceFilter.C index 11fea8654316d9f30947c3ac63df91f0d7a550d8..61934975af14fce6da0f1452fded9888ae9ac125 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESfilters/laplaceFilter/laplaceFilter.C +++ b/src/TurbulenceModels/turbulenceModels/LES/LESfilters/laplaceFilter/laplaceFilter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,7 +64,10 @@ Foam::laplaceFilter::laplaceFilter(const fvMesh& mesh, scalar widthCoeff) Foam::laplaceFilter::laplaceFilter(const fvMesh& mesh, const dictionary& bd) : LESfilter(mesh), - widthCoeff_(readScalar(bd.subDict(type() + "Coeffs").lookup("widthCoeff"))), + widthCoeff_ + ( + readScalar(bd.optionalSubDict(type() + "Coeffs").lookup("widthCoeff")) + ), coeff_ ( IOobject @@ -86,7 +89,7 @@ Foam::laplaceFilter::laplaceFilter(const fvMesh& mesh, const dictionary& bd) void Foam::laplaceFilter::read(const dictionary& bd) { - bd.subDict(type() + "Coeffs").lookup("widthCoeff") >> widthCoeff_; + bd.optionalSubDict(type() + "Coeffs").lookup("widthCoeff") >> widthCoeff_; } diff --git a/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C b/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C index 9a4e218d07b8e2cbb70f6e5738783e0b830c1492..28ad1eb75aa31cc0cbadec5e940e77e1de9c383b 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C +++ b/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -185,7 +185,7 @@ void dynamicLagrangian<BasicTurbulenceModel>::correct() volScalarField invT ( - (1.0/(theta_.value()*this->delta()))*pow(flm_*fmm_, 1.0/8.0) + alpha*rho*(1.0/(theta_.value()*this->delta()))*pow(flm_*fmm_, 1.0/8.0) ); volScalarField LM(L && M); @@ -195,8 +195,8 @@ void dynamicLagrangian<BasicTurbulenceModel>::correct() fvm::ddt(alpha, rho, flm_) + fvm::div(alphaRhoPhi, flm_) == - alpha*rho*invT*LM - - fvm::Sp(alpha*rho*invT, flm_) + invT*LM + - fvm::Sp(invT, flm_) + fvOptions(alpha, rho, flm_) ); @@ -213,8 +213,8 @@ void dynamicLagrangian<BasicTurbulenceModel>::correct() fvm::ddt(alpha, rho, fmm_) + fvm::div(alphaRhoPhi, fmm_) == - alpha*rho*invT*MM - - fvm::Sp(alpha*rho*invT, fmm_) + invT*MM + - fvm::Sp(invT, fmm_) + fvOptions(alpha, rho, fmm_) ); diff --git a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C index d5093fd157008bf652ff1f7604e9986fb077b9a7..5c5b870d746a24be39c11bcd561034f85cc03f78 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -153,7 +153,7 @@ LaunderSharmaKE<BasicTurbulenceModel>::LaunderSharmaKE ( "C3", this->coeffDict_, - -0.33 + 0 ) ), sigmak_ @@ -273,7 +273,7 @@ void LaunderSharmaKE<BasicTurbulenceModel>::correct() - fvm::laplacian(alpha*rho*DepsilonEff(), epsilon_) == C1_*alpha*rho*G*epsilon_/k_ - - fvm::SuSp(((2.0/3.0)*C1_ + C3_)*alpha*rho*divU, epsilon_) + - fvm::SuSp(((2.0/3.0)*C1_ - C3_)*alpha*rho*divU, epsilon_) - fvm::Sp(C2_*f2()*alpha*rho*epsilon_/k_, epsilon_) + alpha*rho*E + epsilonSource() diff --git a/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C b/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C index 1937ef097b27077a5abd4f9523339a68d239bdf9..a4b283ff785e57edfcb140f87877110e4cc33777 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,7 @@ void Foam::RASModel<BasicTurbulenceModel>::printCoeffs(const word& type) { if (printCoeffs_) { - Info<< type << "Coeffs" << coeffDict_ << endl; + Info<< coeffDict_.dictName() << coeffDict_ << endl; } } @@ -67,7 +67,7 @@ Foam::RASModel<BasicTurbulenceModel>::RASModel RASDict_(this->subOrEmptyDict("RAS")), turbulence_(RASDict_.lookup("turbulence")), printCoeffs_(RASDict_.lookupOrDefault<Switch>("printCoeffs", false)), - coeffDict_(RASDict_.subOrEmptyDict(type + "Coeffs")), + coeffDict_(RASDict_.optionalSubDict(type + "Coeffs")), kMin_ ( @@ -173,10 +173,7 @@ bool Foam::RASModel<BasicTurbulenceModel>::read() RASDict_ <<= this->subDict("RAS"); RASDict_.lookup("turbulence") >> turbulence_; - if (const dictionary* dictPtr = RASDict_.subDictPtr(type() + "Coeffs")) - { - coeffDict_ <<= *dictPtr; - } + coeffDict_ <<= RASDict_.optionalSubDict(type() + "Coeffs"); kMin_.readIfPresent(RASDict_); epsilonMin_.readIfPresent(RASDict_); diff --git a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C index fbe18212c1d68bec61ada22d62139eb630ceaeff..5356ad4e9655c36f6cbaef835049d3968b537987 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -137,7 +137,7 @@ RNGkEpsilon<BasicTurbulenceModel>::RNGkEpsilon ( "C3", this->coeffDict_, - -0.33 + 0 ) ), sigmak_ @@ -282,7 +282,7 @@ void RNGkEpsilon<BasicTurbulenceModel>::correct() - fvm::laplacian(alpha*rho*DepsilonEff(), epsilon_) == (C1_ - R)*alpha*rho*G*epsilon_/k_ - - fvm::SuSp(((2.0/3.0)*C1_ + C3_)*alpha*rho*divU, epsilon_) + - fvm::SuSp(((2.0/3.0)*C1_ - C3_)*alpha*rho*divU, epsilon_) - fvm::Sp(C2_*alpha*rho*epsilon_/k_, epsilon_) + epsilonSource() + fvOptions(alpha, rho, epsilon_) diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C index 54a0db76ce8578953388fe5fa7238d82c59eaf0c..a660faa979c1da0a91d25e14cfa9f656e5ad4ea3 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -137,7 +137,7 @@ kEpsilon<BasicTurbulenceModel>::kEpsilon ( "C3", this->coeffDict_, - -0.33 + 0 ) ), sigmak_ @@ -259,7 +259,7 @@ void kEpsilon<BasicTurbulenceModel>::correct() - fvm::laplacian(alpha*rho*DepsilonEff(), epsilon_) == C1_*alpha()*rho()*G*epsilon_()/k_() - - fvm::SuSp(((2.0/3.0)*C1_ + C3_)*alpha()*rho()*divU, epsilon_) + - fvm::SuSp(((2.0/3.0)*C1_ - C3_)*alpha()*rho()*divU, epsilon_) - fvm::Sp(C2_*alpha()*rho()*epsilon_()/k_(), epsilon_) + epsilonSource() + fvOptions(alpha, rho, epsilon_) diff --git a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C index 77d01435f645ef11e125948051fe799b47945ea0..7bfeabc0ab8041979390a4d39b6e8c33358fcfc7 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -151,16 +151,6 @@ realizableKE<BasicTurbulenceModel>::realizableKE transport, propertiesName ), - - Cmu_ - ( - dimensioned<scalar>::lookupOrAddToDict - ( - "Cmu", - this->coeffDict_, - 0.09 - ) - ), A0_ ( dimensioned<scalar>::lookupOrAddToDict @@ -240,7 +230,6 @@ bool realizableKE<BasicTurbulenceModel>::read() { if (eddyViscosity<RASModel<BasicTurbulenceModel>>::read()) { - Cmu_.readIfPresent(this->coeffDict()); A0_.readIfPresent(this->coeffDict()); C2_.readIfPresent(this->coeffDict()); sigmak_.readIfPresent(this->coeffDict()); diff --git a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.H b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.H index f47616f4f355a6d727fa924182907114f974c0ac..9738b104559d9cf4ab985980e858e361a4ac395c 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.H +++ b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,7 +48,6 @@ Description \verbatim realizableKECoeffs { - Cmu 0.09; A0 4.0; C2 1.9; sigmak 1.0; @@ -90,7 +89,6 @@ protected: // Model coefficients - dimensionedScalar Cmu_; dimensionedScalar A0_; dimensionedScalar C2_; dimensionedScalar sigmak_; diff --git a/src/TurbulenceModels/turbulenceModels/TurbulenceModel/TurbulenceModel.H b/src/TurbulenceModels/turbulenceModels/TurbulenceModel/TurbulenceModel.H index bff236d48643af65dc272fa3e779192bd0d7970a..61e0ac3d7f7ff6d8a4965ea194f0099c0bfbb41b 100644 --- a/src/TurbulenceModels/turbulenceModels/TurbulenceModel/TurbulenceModel.H +++ b/src/TurbulenceModels/turbulenceModels/TurbulenceModel/TurbulenceModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -158,13 +158,13 @@ public: } //- Return the laminar viscosity - tmp<volScalarField> nu() const + virtual tmp<volScalarField> nu() const { return transport_.nu(); } //- Return the laminar viscosity on patchi - tmp<scalarField> nu(const label patchi) const + virtual tmp<scalarField> nu(const label patchi) const { return transport_.nu(patchi); } diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H index 006f06b170cd231d04167c25f514c7895f9c4db9..c4061a22da51d541d3a6cbe993f505a4b1d50e0a 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -148,19 +148,14 @@ public: // Member functions - // Evaluation functions - - //- Evaluate the patchField - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::Pstream::blocking - ); - - - // I-O + //- Evaluate the patchField + virtual void evaluate + ( + const Pstream::commsTypes commsType = Pstream::commsTypes::blocking + ); - //- Write - virtual void write(Ostream&) const; + //- Write + virtual void write(Ostream&) const; }; diff --git a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H index c214b9930b9c8c5caafaf064a27cfe107cc369cf..3d3b2c96d846972deac42b09f9ea1b26442bd514 100644 --- a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H +++ b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,13 +102,6 @@ public: //- Re-read model coefficients if they have changed virtual bool read() = 0; - //- Return non-const access to the turbulence viscosity - // to allow modification by means other than derivation - volScalarField& evNut() - { - return nut_; - } - //- Return the turbulence viscosity virtual tmp<volScalarField> nut() const { diff --git a/src/TurbulenceModels/turbulenceModels/laminar/laminarModel/laminarModel.C b/src/TurbulenceModels/turbulenceModels/laminar/laminarModel/laminarModel.C index 82675e8bb45d4879eef74e6446501cc3a3aea0c4..33bba64b66901df02a36a8c8a77189ae9e7a0572 100644 --- a/src/TurbulenceModels/turbulenceModels/laminar/laminarModel/laminarModel.C +++ b/src/TurbulenceModels/turbulenceModels/laminar/laminarModel/laminarModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,7 +33,7 @@ void Foam::laminarModel<BasicTurbulenceModel>::printCoeffs(const word& type) { if (printCoeffs_) { - Info<< type << "Coeffs" << coeffDict_ << endl; + Info<< coeffDict_.dictName() << coeffDict_ << endl; } } @@ -67,7 +67,7 @@ Foam::laminarModel<BasicTurbulenceModel>::laminarModel laminarDict_(this->subOrEmptyDict("laminar")), printCoeffs_(laminarDict_.lookupOrDefault<Switch>("printCoeffs", false)), - coeffDict_(laminarDict_.subOrEmptyDict(type + "Coeffs")) + coeffDict_(laminarDict_.optionalSubDict(type + "Coeffs")) { // Force the construction of the mesh deltaCoeffs which may be needed // for the construction of the derived models and BCs @@ -170,14 +170,7 @@ bool Foam::laminarModel<BasicTurbulenceModel>::read() { laminarDict_ <<= this->subDict("laminar"); - if - ( - const dictionary* dictPtr = - laminarDict_.subDictPtr(type() + "Coeffs") - ) - { - coeffDict_ <<= *dictPtr; - } + coeffDict_ <<= laminarDict_.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/src/combustionModels/EDC/EDC.C b/src/combustionModels/EDC/EDC.C new file mode 100644 index 0000000000000000000000000000000000000000..64d822ee5225657f9c63c05fd4c61a5648143e99 --- /dev/null +++ b/src/combustionModels/EDC/EDC.C @@ -0,0 +1,248 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "EDC.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::combustionModels::EDC<Type>::EDC +( + const word& modelType, + const fvMesh& mesh, + const word& combustionProperties, + const word& phaseName +) +: + laminar<Type>(modelType, mesh, combustionProperties, phaseName), + version_ + ( + EDCversionNames + [ + this->coeffs().lookupOrDefault + ( + "version", + word(EDCversionNames[EDCdefaultVersion]) + ) + ] + ), + C1_(this->coeffs().lookupOrDefault("C1", 0.05774)), + C2_(this->coeffs().lookupOrDefault("C2", 0.5)), + Cgamma_(this->coeffs().lookupOrDefault("Cgamma", 2.1377)), + Ctau_(this->coeffs().lookupOrDefault("Ctau", 0.4083)), + exp1_(this->coeffs().lookupOrDefault("exp1", EDCexp1[int(version_)])), + exp2_(this->coeffs().lookupOrDefault("exp2", EDCexp2[int(version_)])), + kappa_ + ( + IOobject + ( + IOobject::groupName(typeName + ":kappa", phaseName), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("kappa", dimless, 0) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::combustionModels::EDC<Type>::~EDC() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Type> +void Foam::combustionModels::EDC<Type>::correct() +{ + if (this->active()) + { + tmp<volScalarField> tepsilon(this->turbulence().epsilon()); + const volScalarField& epsilon = tepsilon(); + + tmp<volScalarField> tmu(this->turbulence().mu()); + const volScalarField& mu = tmu(); + + tmp<volScalarField> tk(this->turbulence().k()); + const volScalarField& k = tk(); + + tmp<volScalarField> trho(this->rho()); + const volScalarField& rho = trho(); + + scalarField tauStar(epsilon.size(), 0); + + if (version_ == EDCversions::v2016) + { + tmp<volScalarField> ttc(this->chemistryPtr_->tc()); + const volScalarField& tc = ttc(); + + forAll(tauStar, i) + { + const scalar nu = mu[i]/(rho[i] + SMALL); + + const scalar Da = + max(min(sqrt(nu/(epsilon[i] + SMALL))/tc[i], 10), 1e-10); + + const scalar ReT = sqr(k[i])/(nu*epsilon[i] + SMALL); + const scalar CtauI = min(C1_/(Da*sqrt(ReT + 1)), 2.1377); + + const scalar CgammaI = + max(min(C2_*sqrt(Da*(ReT + 1)), 5), 0.4082); + + const scalar gammaL = + CgammaI*pow025(nu*epsilon[i]/(sqr(k[i]) + SMALL)); + + tauStar[i] = CtauI*sqrt(nu/(epsilon[i] + SMALL)); + + if (gammaL >= 1) + { + kappa_[i] = 1; + } + else + { + kappa_[i] = + max + ( + min + ( + pow(gammaL, exp1_)/(1 - pow(gammaL, exp2_)), + 1 + ), + 0 + ); + } + } + } + else + { + forAll(tauStar, i) + { + const scalar nu = mu[i]/(rho[i] + SMALL); + const scalar gammaL = + Cgamma_*pow025(nu*epsilon[i]/(sqr(k[i]) + SMALL)); + + tauStar[i] = Ctau_*sqrt(nu/(epsilon[i] + SMALL)); + if (gammaL >= 1) + { + kappa_[i] = 1; + } + else + { + kappa_[i] = + max + ( + min + ( + pow(gammaL, exp1_)/(1 - pow(gammaL, exp2_)), + 1 + ), + 0 + ); + } + } + } + + this->chemistryPtr_->solve(tauStar); + } +} + + +template<class Type> +Foam::tmp<Foam::fvScalarMatrix> +Foam::combustionModels::EDC<Type>::R(volScalarField& Y) const +{ + return kappa_*laminar<Type>::R(Y); +} + + +template<class Type> +Foam::tmp<Foam::volScalarField> +Foam::combustionModels::EDC<Type>::Qdot() const +{ + tmp<volScalarField> tQdot + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName(typeName + ":Qdot", this->phaseName_), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh(), + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0) + ) + ); + + if (this->active()) + { + tQdot.ref() = kappa_*this->chemistryPtr_->Qdot(); + } + + return tQdot; +} + + +template<class Type> +bool Foam::combustionModels::EDC<Type>::read() +{ + if (Type::read()) + { + version_ = + ( + EDCversionNames + [ + this->coeffs().lookupOrDefault + ( + "version", + word(EDCversionNames[EDCdefaultVersion]) + ) + ] + ); + C1_ = this->coeffs().lookupOrDefault("C1", 0.05774); + C2_ = this->coeffs().lookupOrDefault("C2", 0.5); + Cgamma_ = this->coeffs().lookupOrDefault("Cgamma", 2.1377); + Ctau_ = this->coeffs().lookupOrDefault("Ctau", 0.4083); + exp1_ = this->coeffs().lookupOrDefault("exp1", EDCexp1[int(version_)]); + exp2_ = this->coeffs().lookupOrDefault("exp2", EDCexp2[int(version_)]); + + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/combustionModels/EDC/EDC.H b/src/combustionModels/EDC/EDC.H new file mode 100644 index 0000000000000000000000000000000000000000..d9ed191f9998793afa82df37b77feb62cc65ee6c --- /dev/null +++ b/src/combustionModels/EDC/EDC.H @@ -0,0 +1,214 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::combustionModels::EDC + +Description + Eddy Dissipation Concept (EDC) turbulent combustion model. + + This model considers that the reaction occurs in the regions of the flow + where the dissipation of turbulence kinetic energy takes place (fine + structures). The mass fraction of the fine structures and the mean residence + time are provided by an energy cascade model. + + There are many versions and developments of the EDC model, 4 of which are + currently supported in this implementation: v1981, v1996, v2005 and + v2016. The model variant is selected using the optional \c version entry in + the \c EDCCoeffs dictionary, \eg + + \verbatim + EDCCoeffs + { + version v2016; + } + \endverbatim + + The default version is \c v2015 if the \c version entry is not specified. + + Model versions and references: + \verbatim + Version v2005: + + Cgamma = 2.1377 + Ctau = 0.4083 + kappa = gammaL^exp1 / (1 - gammaL^exp2), + + where exp1 = 2, and exp2 = 2. + + Magnussen, B. F. (2005, June). + The Eddy Dissipation Concept - + A Bridge Between Science and Technology. + In ECCOMAS thematic conference on computational combustion + (pp. 21-24). + + Version v1981: + + Changes coefficients exp1 = 3 and exp2 = 3 + + Magnussen, B. (1981, January). + On the structure of turbulence and a generalized + eddy dissipation concept for chemical reaction in turbulent flow. + In 19th Aerospace Sciences Meeting (p. 42). + + Version v1996: + + Changes coefficients exp1 = 2 and exp2 = 3 + + Gran, I. R., & Magnussen, B. F. (1996). + A numerical study of a bluff-body stabilized diffusion flame. + Part 2. Influence of combustion modeling and finite-rate chemistry. + Combustion Science and Technology, 119(1-6), 191-217. + + Version v2016: + + Use local constants computed from the turbulent Da and Re numbers. + + Parente, A., Malik, M. R., Contino, F., Cuoci, A., & Dally, B. B. + (2016). + Extension of the Eddy Dissipation Concept for + turbulence/chemistry interactions to MILD combustion. + Fuel, 163, 98-111. + \endverbatim + +SourceFiles + EDC.C + +\*---------------------------------------------------------------------------*/ + +#ifndef EDC_H +#define EDC_H + +#include "../laminar/laminar.H" +#include "NamedEnum.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace combustionModels +{ + +//- EDC model versions +enum class EDCversions +{ + v1981, + v1996, + v2005, + v2016 +}; + +extern const NamedEnum<EDCversions, 4> EDCversionNames; +extern const EDCversions EDCdefaultVersion; + +const scalar EDCexp1[] = {3, 2, 2, 2}; +const scalar EDCexp2[] = {3, 3, 2, 2}; + +/*---------------------------------------------------------------------------*\ + Class EDC Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class EDC +: + public laminar<Type> +{ + // Private data + + //- The selected model version + EDCversions version_; + + scalar C1_; + scalar C2_; + scalar Cgamma_; + scalar Ctau_; + scalar exp1_; + scalar exp2_; + + //- Mixing parameter + volScalarField kappa_; + + + // Private Member Functions + + //- Disallow copy construct + EDC(const EDC&); + + //- Disallow default bitwise assignment + void operator=(const EDC&); + + +public: + + //- Runtime type information + TypeName("EDC"); + + + // Constructors + + //- Construct from components + EDC + ( + const word& modelType, + const fvMesh& mesh, + const word& combustionProperties, + const word& phaseName + ); + + + //- Destructor + virtual ~EDC(); + + + // Member Functions + + //- Correct combustion rate + virtual void correct(); + + //- Fuel consumption rate matrix. + virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; + + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; + + //- Update properties from given dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace combustionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "EDC.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/combustionModels/EDC/EDCs.C b/src/combustionModels/EDC/EDCs.C new file mode 100644 index 0000000000000000000000000000000000000000..280d6c3db31cc29e31456c80127079b57d2e36d3 --- /dev/null +++ b/src/combustionModels/EDC/EDCs.C @@ -0,0 +1,61 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "makeCombustionTypes.H" + +#include "psiChemistryCombustion.H" +#include "rhoChemistryCombustion.H" +#include "EDC.H" + +// * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * // + +template<> +const char* Foam::NamedEnum +< + Foam::combustionModels::EDCversions, + 4 +>::names[] = +{ + "v1981", + "v1996", + "v2005", + "v2016" +}; + +const Foam::NamedEnum<Foam::combustionModels::EDCversions, 4> + Foam::combustionModels::EDCversionNames; + +const Foam::combustionModels::EDCversions +Foam::combustionModels::EDCdefaultVersion +( + Foam::combustionModels::EDCversions::v2005 +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makeCombustionTypes(EDC, psiChemistryCombustion, psiCombustionModel); +makeCombustionTypes(EDC, rhoChemistryCombustion, rhoCombustionModel); + +// ************************************************************************* // diff --git a/src/combustionModels/FSD/FSD.C b/src/combustionModels/FSD/FSD.C index 25ed498fce6ed287f19093bde285c5ac5f998d02..1bc995bef7c1b151a45d7639e2be748bbae06ee8 100644 --- a/src/combustionModels/FSD/FSD.C +++ b/src/combustionModels/FSD/FSD.C @@ -58,7 +58,7 @@ FSD<CombThermoType, ThermoType>::FSD ( this->coeffs(), this->mesh(), - *this + *this ) ), ft_ @@ -190,14 +190,18 @@ void FSD<CombThermoType, ThermoType>::calculateSourceNorm() volScalarField& omegaFuelBar = tomegaFuel.ref(); // Calculation of the mixture fraction variance (ftVar) - // TODO: generalize delta for RAS and LES. - const volScalarField& delta = - refCast<const compressible::LESModel>(this->turbulence()).delta(); + const compressible::LESModel& lesModel = + YO2.db().lookupObject<compressible::LESModel> + ( + turbulenceModel::propertiesName + ); + const volScalarField& delta = lesModel.delta(); const volScalarField ftVar(Cv_*sqr(delta)*sqr(mgft)); // Thickened flame (average flame thickness for counterflow configuration // is 1.5 mm) + volScalarField deltaF ( delta/dimensionedScalar("flame", dimLength, 1.5e-3) diff --git a/src/combustionModels/FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameArea.C b/src/combustionModels/FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameArea.C index 4e767ca3ad18240b24ed1520de34d49a9a56692f..1208979f7d6e55cc85ffd0594336ed5057434f9e 100644 --- a/src/combustionModels/FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameArea.C +++ b/src/combustionModels/FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameArea.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,7 @@ Foam::reactionRateFlameArea::reactionRateFlameArea const combustionModel& combModel ) : - coeffDict_(dict.subDict(modelType + "Coeffs")), + coeffDict_(dict.optionalSubDict(modelType + "Coeffs")), mesh_(mesh), combModel_(combModel), fuel_(dict.lookup("fuel")), diff --git a/src/combustionModels/FSD/reactionRateFlameAreaModels/relaxation/relaxation.C b/src/combustionModels/FSD/reactionRateFlameAreaModels/relaxation/relaxation.C index c714bc5cd2552420d14369c32b27eb32770eb4fd..3ae9d31c297ba2b860452511b982cc935d6fa5e6 100644 --- a/src/combustionModels/FSD/reactionRateFlameAreaModels/relaxation/relaxation.C +++ b/src/combustionModels/FSD/reactionRateFlameAreaModels/relaxation/relaxation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,9 +56,12 @@ Foam::reactionRateFlameAreaModels::relaxation::relaxation ) : reactionRateFlameArea(modelType, dict, mesh, combModel), - correlation_(dict.subDict(typeName + "Coeffs").subDict(fuel_)), - C_(readScalar(dict.subDict(typeName + "Coeffs").lookup("C"))), - alpha_(readScalar(dict.subDict(typeName + "Coeffs").lookup("alpha"))) + correlation_(dict.optionalSubDict(typeName + "Coeffs").subDict(fuel_)), + C_(readScalar(dict.optionalSubDict(typeName + "Coeffs").lookup("C"))), + alpha_ + ( + readScalar(dict.optionalSubDict(typeName + "Coeffs").lookup("alpha")) + ) {} @@ -148,7 +151,7 @@ bool Foam::reactionRateFlameAreaModels::relaxation::read { if (reactionRateFlameArea::read(dict)) { - coeffDict_ = dict.subDict(typeName + "Coeffs"); + coeffDict_ = dict.optionalSubDict(typeName + "Coeffs"); coeffDict_.lookup("C") >> C_; coeffDict_.lookup("alpha") >> alpha_; correlation_.read diff --git a/src/combustionModels/Make/files b/src/combustionModels/Make/files index 09844f061e9966cbbe7b044f8120f051d1f3823b..39ffebeb540bd594c91449ff85096424732be27e 100644 --- a/src/combustionModels/Make/files +++ b/src/combustionModels/Make/files @@ -14,21 +14,23 @@ diffusion/diffusions.C infinitelyFastChemistry/infinitelyFastChemistrys.C PaSR/PaSRs.C +EDC/EDCs.C eddyDissipationDiffusionModel/eddyDissipationDiffusionModels.C laminar/laminars.C -/* + FSD/reactionRateFlameAreaModels/consumptionSpeed/consumptionSpeed.C FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameArea.C FSD/reactionRateFlameAreaModels/reactionRateFlameArea/reactionRateFlameAreaNew.C FSD/reactionRateFlameAreaModels/relaxation/relaxation.C FSD/FSDs.C -*/ + diffusionMulticomponent/diffusionMulticomponents.C + zoneCombustion/zoneCombustions.C noCombustion/noCombustions.C diff --git a/src/combustionModels/PaSR/PaSR.C b/src/combustionModels/PaSR/PaSR.C index 5fd8fdf1044f81a3bd5e287968fab1aed88600c5..6358104a9b764046799f62e298ffd81bcb823ee0 100644 --- a/src/combustionModels/PaSR/PaSR.C +++ b/src/combustionModels/PaSR/PaSR.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "PaSR.H" -#include "fvmSup.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -39,19 +38,18 @@ Foam::combustionModels::PaSR<Type>::PaSR : laminar<Type>(modelType, mesh, combustionProperties, phaseName), Cmix_(readScalar(this->coeffs().lookup("Cmix"))), - turbulentReaction_(this->coeffs().lookup("turbulentReaction")), kappa_ ( IOobject ( - IOobject::groupName("PaSR:kappa", phaseName), + IOobject::groupName(typeName + ":kappa", phaseName), mesh.time().timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, - dimensionedScalar("kappa", dimless, 0.0) + dimensionedScalar("kappa", dimless, 0) ) {} @@ -72,35 +70,31 @@ void Foam::combustionModels::PaSR<Type>::correct() { laminar<Type>::correct(); - if (turbulentReaction_) + tmp<volScalarField> tepsilon(this->turbulence().epsilon()); + const scalarField& epsilon = tepsilon(); + + tmp<volScalarField> tmuEff(this->turbulence().muEff()); + const scalarField& muEff = tmuEff(); + + tmp<volScalarField> ttc(this->tc()); + const scalarField& tc = ttc(); + + tmp<volScalarField> trho(this->rho()); + const scalarField& rho = trho(); + + forAll(epsilon, i) { - tmp<volScalarField> tepsilon(this->turbulence().epsilon()); - const volScalarField& epsilon = tepsilon(); - tmp<volScalarField> tmuEff(this->turbulence().muEff()); - const volScalarField& muEff = tmuEff(); - tmp<volScalarField> ttc(this->tc()); - const volScalarField& tc = ttc(); - tmp<volScalarField> trho(this->rho()); - const volScalarField& rho = trho(); - - forAll(epsilon, i) + const scalar tk = + Cmix_*sqrt(max(muEff[i]/rho[i]/(epsilon[i] + SMALL), 0)); + + if (tk > SMALL) { - scalar tk = - Cmix_*sqrt(max(muEff[i]/rho[i]/(epsilon[i] + SMALL), 0)); - - if (tk > SMALL) - { - kappa_[i] = tc[i]/(tc[i] + tk); - } - else - { - kappa_[i] = 1.0; - } + kappa_[i] = tc[i]/(tc[i] + tk); + } + else + { + kappa_[i] = 1.0; } - } - else - { - kappa_ = 1.0; } } } @@ -116,29 +110,14 @@ Foam::combustionModels::PaSR<Type>::R(volScalarField& Y) const template<class Type> Foam::tmp<Foam::volScalarField> -Foam::combustionModels::PaSR<Type>::dQ() const -{ - return tmp<volScalarField> - ( - new volScalarField - ( - IOobject::groupName("PaSR:dQ", this->phaseName_), - kappa_*laminar<Type>::dQ() - ) - ); -} - - -template<class Type> -Foam::tmp<Foam::volScalarField> -Foam::combustionModels::PaSR<Type>::Sh() const +Foam::combustionModels::PaSR<Type>::Qdot() const { return tmp<volScalarField> ( new volScalarField ( - IOobject::groupName("PaSR:Sh", this->phaseName_), - kappa_*laminar<Type>::Sh() + IOobject::groupName(typeName + ":Qdot", this->phaseName_), + kappa_*laminar<Type>::Qdot() ) ); } @@ -150,7 +129,6 @@ bool Foam::combustionModels::PaSR<Type>::read() if (laminar<Type>::read()) { this->coeffs().lookup("Cmix") >> Cmix_; - this->coeffs().lookup("turbulentReaction") >> turbulentReaction_; return true; } else diff --git a/src/combustionModels/PaSR/PaSR.H b/src/combustionModels/PaSR/PaSR.H index 085d7245ee606011f5682b42d6e30bfcd7802a73..e83b3eb52e30d47bc883f43ffb951ae77984643a 100644 --- a/src/combustionModels/PaSR/PaSR.H +++ b/src/combustionModels/PaSR/PaSR.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,10 +28,11 @@ Group grpCombustionModels Description - Partially stirred reactor combustion model. The model calculates a finite - rate, based on both turbulence and chemistry time scales. Depending on - mesh resolution, the Cmix parameter can be used to scale the turbulence - mixing time scale. + Partially stirred reactor turbulent combustion model. + + This model calculates a finite rate, based on both turbulence and chemistry + time scales. Depending on mesh resolution, the Cmix parameter can be used + to scale the turbulence mixing time scale. SourceFiles PaSR.C @@ -64,9 +65,6 @@ class PaSR //- Mixing constant scalar Cmix_; - //- Turbulent reaction switch - Switch turbulentReaction_; - //- Mixing parameter volScalarField kappa_; @@ -110,11 +108,8 @@ public: //- Fuel consumption rate matrix. virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; //- Update properties from given dictionary virtual bool read(); diff --git a/src/combustionModels/combustionModel/combustionModel.C b/src/combustionModels/combustionModel/combustionModel.C index b27a5f232001ed7d24f1404f7b00aa7f6535ccea..1ed899200cb2abf071b8460493d75c525cb1cbfc 100644 --- a/src/combustionModels/combustionModel/combustionModel.C +++ b/src/combustionModels/combustionModel/combustionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,7 +62,7 @@ Foam::combustionModel::combustionModel turbulencePtr_(), mesh_(mesh), active_(lookupOrDefault<Switch>("active", true)), - coeffs_(subDict(modelType + "Coeffs")), + coeffs_(optionalSubDict(modelType + "Coeffs")), modelType_(modelType), phaseName_(phaseName) {} @@ -81,13 +81,12 @@ Foam::combustionModel::~combustionModel() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - bool Foam::combustionModel::read() { if (regIOobject::read()) { this->lookup("active") >> active_; - coeffs_ = subDict(modelType_ + "Coeffs"); + coeffs_ = optionalSubDict(modelType_ + "Coeffs"); return true; } else @@ -97,25 +96,4 @@ bool Foam::combustionModel::read() } -Foam::tmp<Foam::volScalarField> Foam::combustionModel::Sh() const -{ - return tmp<Foam::volScalarField> - ( - new volScalarField - ( - IOobject - ( - IOobject::groupName("Sh", phaseName_), - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0.0) - ) - ); -} - - // ************************************************************************* // diff --git a/src/combustionModels/combustionModel/combustionModel.H b/src/combustionModels/combustionModel/combustionModel.H index d428e27a78b00a883c03ddac656f28d114d9697e..bfb46167b11418384d8e5409b715544a49ae1c67 100644 --- a/src/combustionModels/combustionModel/combustionModel.H +++ b/src/combustionModels/combustionModel/combustionModel.H @@ -140,11 +140,8 @@ public: //- Fuel consumption rate matrix, i.e. source term for fuel equation virtual tmp<fvScalarMatrix> R(volScalarField& Y) const = 0; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const = 0; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const = 0; //- Update properties from given dictionary virtual bool read(); diff --git a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C index aa2bfdb754ac24aeff12d481ad2695550601a39d..aa4893c07877a4b8129eb58f540d9027b829f713 100644 --- a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C +++ b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C @@ -369,8 +369,10 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct() template<class CombThermoType, class ThermoType> Foam::tmp<Foam::fvScalarMatrix> -Foam::combustionModels::diffusionMulticomponent<CombThermoType, ThermoType>:: -R(volScalarField& Y) const +Foam::combustionModels::diffusionMulticomponent<CombThermoType, ThermoType>::R +( + volScalarField& Y +) const { tmp<fvScalarMatrix> tSu(new fvScalarMatrix(Y, dimMass/dimTime)); @@ -378,7 +380,7 @@ R(volScalarField& Y) const if (this->active()) { - const label specieI = this->thermo().composition().species()[Y.name()]; + const label specieI = this->thermo().composition().species()[Y.member()]; Su += this->chemistryPtr_->RR(specieI); } @@ -389,15 +391,15 @@ R(volScalarField& Y) const template<class CombThermoType, class ThermoType> Foam::tmp<Foam::volScalarField> Foam::combustionModels::diffusionMulticomponent<CombThermoType, ThermoType>:: -dQ() const +Qdot() const { - tmp<volScalarField> tdQ + tmp<volScalarField> tQdot ( new volScalarField ( IOobject ( - "dQ", + "Qdot", this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -412,45 +414,11 @@ dQ() const if (this->active()) { - volScalarField& dQ = tdQ.ref(); - dQ = this->chemistryPtr_->dQ(); - } - - return tdQ; -} - - -template<class CombThermoType, class ThermoType> -Foam::tmp<Foam::volScalarField> -Foam::combustionModels::diffusionMulticomponent<CombThermoType, ThermoType>:: -Sh() const -{ - tmp<volScalarField> tSh - ( - new volScalarField - ( - IOobject - ( - "Sh", - this->mesh().time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh(), - dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0), - zeroGradientFvPatchScalarField::typeName - ) - ); - - if (this->active()) - { - scalarField& Sh = tSh.ref(); - Sh = this->chemistryPtr_->Sh(); + volScalarField& Qdot = tQdot.ref(); + Qdot = this->chemistryPtr_->Qdot(); } - return tSh; + return tQdot; } diff --git a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.H b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.H index 48af00efd9fe57717b6d926b90a91adf35c52a4b..b1f7f40ba02da9a1b8deaf8787e4c693b47a85aa 100644 --- a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.H +++ b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.H @@ -191,10 +191,7 @@ public: virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + virtual tmp<volScalarField> Qdot() const; // IO diff --git a/src/combustionModels/laminar/laminar.C b/src/combustionModels/laminar/laminar.C index dcf9c6450c46fe2adb8f44e769536b23bb7436b8..b33f302b18cf7815ec58e9820b8aa6e3f3fafbec 100644 --- a/src/combustionModels/laminar/laminar.C +++ b/src/combustionModels/laminar/laminar.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -136,15 +136,15 @@ Foam::combustionModels::laminar<Type>::R(volScalarField& Y) const template<class Type> Foam::tmp<Foam::volScalarField> -Foam::combustionModels::laminar<Type>::dQ() const +Foam::combustionModels::laminar<Type>::Qdot() const { - tmp<volScalarField> tdQ + tmp<volScalarField> tQdot ( new volScalarField ( IOobject ( - IOobject::groupName(typeName + ":dQ", this->phaseName_), + IOobject::groupName(typeName + ":Qdot", this->phaseName_), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -152,47 +152,16 @@ Foam::combustionModels::laminar<Type>::dQ() const false ), this->mesh(), - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ) ); if (this->active()) { - tdQ.ref() = this->chemistryPtr_->dQ(); + tQdot.ref() = this->chemistryPtr_->Qdot(); } - return tdQ; -} - - -template<class Type> -Foam::tmp<Foam::volScalarField> -Foam::combustionModels::laminar<Type>::Sh() const -{ - tmp<volScalarField> tSh - ( - new volScalarField - ( - IOobject - ( - IOobject::groupName(typeName + ":Sh", this->phaseName_), - this->mesh().time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh(), - dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) - ) - ); - - if (this->active()) - { - tSh.ref() = this->chemistryPtr_->Sh(); - } - - return tSh; + return tQdot; } @@ -201,8 +170,8 @@ bool Foam::combustionModels::laminar<Type>::read() { if (Type::read()) { - this->coeffs().lookup("integrateReactionRate") - >> integrateReactionRate_; + integrateReactionRate_ = + this->coeffs().lookupOrDefault("integrateReactionRate", true); return true; } else diff --git a/src/combustionModels/laminar/laminar.H b/src/combustionModels/laminar/laminar.H index 7c882c8bbbb92c8d2d231cb782e3c1d41cbbaed0..073cd101e515744be537d8dfd7cd3ae6738350f9 100644 --- a/src/combustionModels/laminar/laminar.H +++ b/src/combustionModels/laminar/laminar.H @@ -108,11 +108,8 @@ public: //- Fuel consumption rate matrix. virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; //- Update properties from given dictionary virtual bool read(); diff --git a/src/combustionModels/noCombustion/noCombustion.C b/src/combustionModels/noCombustion/noCombustion.C index 7caeac0fe4bb3af5ca249c9c5f1fa27ec10ae6d6..4101ed61cae71c50ab6f0e8f880b89f026264bb2 100644 --- a/src/combustionModels/noCombustion/noCombustion.C +++ b/src/combustionModels/noCombustion/noCombustion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,9 +52,7 @@ Foam::combustionModels::noCombustion<CombThermoType>::~noCombustion() template<class CombThermoType> void Foam::combustionModels::noCombustion<CombThermoType>::correct() -{ -// Do Nothing -} +{} template<class CombThermoType> @@ -75,41 +73,15 @@ Foam::combustionModels::noCombustion<CombThermoType>::R template<class CombThermoType> Foam::tmp<Foam::volScalarField> -Foam::combustionModels::noCombustion<CombThermoType>::dQ() const -{ - tmp<volScalarField> tdQ - ( - new volScalarField - ( - IOobject - ( - IOobject::groupName("dQ", this->phaseName_), - this->mesh().time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh(), - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) - ) - ); - - return tdQ; -} - - -template<class CombThermoType> -Foam::tmp<Foam::volScalarField> -Foam::combustionModels::noCombustion<CombThermoType>::Sh() const +Foam::combustionModels::noCombustion<CombThermoType>::Qdot() const { - tmp<volScalarField> tSh + tmp<volScalarField> tQdot ( new volScalarField ( IOobject ( - IOobject::groupName("Sh", this->phaseName_), + IOobject::groupName(typeName + ":Qdot", this->phaseName_), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -117,11 +89,11 @@ Foam::combustionModels::noCombustion<CombThermoType>::Sh() const false ), this->mesh(), - dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) + dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0) ) ); - return tSh; + return tQdot; } diff --git a/src/combustionModels/noCombustion/noCombustion.H b/src/combustionModels/noCombustion/noCombustion.H index 74711d613ca70e3b41536114f7ab4c737896cdd7..0438c62121c4b2a1ee873b0bca55daa6343679e7 100644 --- a/src/combustionModels/noCombustion/noCombustion.H +++ b/src/combustionModels/noCombustion/noCombustion.H @@ -92,11 +92,8 @@ public: //- Fuel consumption rate matrix virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; //- Update properties from given dictionary virtual bool read(); diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.C b/src/combustionModels/singleStepCombustion/singleStepCombustion.C index c2a243747bb4ebe11b11ff6f18568ddd1031343f..668a3c0726178871ac796509499f90ffde46a586 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.C +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.C @@ -127,7 +127,7 @@ tmp<fvScalarMatrix> singleStepCombustion<CombThermoType, ThermoType>::R template<class CombThermoType, class ThermoType> tmp<volScalarField> -singleStepCombustion<CombThermoType, ThermoType>::Sh() const +singleStepCombustion<CombThermoType, ThermoType>::Qdot() const { const label fuelI = singleMixturePtr_->fuelIndex(); volScalarField& YFuel = @@ -137,37 +137,6 @@ singleStepCombustion<CombThermoType, ThermoType>::Sh() const } -template<class CombThermoType, class ThermoType> -tmp<volScalarField> -singleStepCombustion<CombThermoType, ThermoType>::dQ() const -{ - tmp<volScalarField> tdQ - ( - new volScalarField - ( - IOobject - ( - IOobject::groupName("dQ", this->phaseName_), - this->mesh_.time().timeName(), - this->mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh_, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) - ) - ); - - if (this->active()) - { - volScalarField& dQ = tdQ.ref(); - dQ.ref() = this->mesh().V()*Sh()(); - } - return tdQ; -} - - template<class CombThermoType, class ThermoType> bool singleStepCombustion<CombThermoType, ThermoType>::read() { diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.H b/src/combustionModels/singleStepCombustion/singleStepCombustion.H index bb31657cf8687261f6de27124ae3accecd7277fd..b7c5cb5c5656c4e7a7a2f503e782633dec5470fb 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.H +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.H @@ -102,11 +102,8 @@ public: //- Fuel consumption rate matrix virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Sensible enthalpy source term - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; //- Update properties from given dictionary virtual bool read(); diff --git a/src/combustionModels/zoneCombustion/zoneCombustion.C b/src/combustionModels/zoneCombustion/zoneCombustion.C index 3cec4e1197a0fa50b4e668fafc718d9ea7899b79..3284c2aca5cedfa98e5b7606b01108fc407a8723 100644 --- a/src/combustionModels/zoneCombustion/zoneCombustion.C +++ b/src/combustionModels/zoneCombustion/zoneCombustion.C @@ -165,17 +165,9 @@ Foam::combustionModels::zoneCombustion<Type>::R(volScalarField& Y) const template<class Type> Foam::tmp<Foam::volScalarField> -Foam::combustionModels::zoneCombustion<Type>::dQ() const +Foam::combustionModels::zoneCombustion<Type>::Qdot() const { - return filter(combustionModelPtr_->dQ()); -} - - -template<class Type> -Foam::tmp<Foam::volScalarField> -Foam::combustionModels::zoneCombustion<Type>::Sh() const -{ - return filter(combustionModelPtr_->Sh()); + return filter(combustionModelPtr_->Qdot()); } diff --git a/src/combustionModels/zoneCombustion/zoneCombustion.H b/src/combustionModels/zoneCombustion/zoneCombustion.H index ca014f98dd5f56c55fc1ef0cc2b277f12bb01882..351b40cab07b664a40f3a921b18a945b19491142 100644 --- a/src/combustionModels/zoneCombustion/zoneCombustion.H +++ b/src/combustionModels/zoneCombustion/zoneCombustion.H @@ -114,11 +114,8 @@ public: //- Fuel consumption rate matrix. virtual tmp<fvScalarMatrix> R(volScalarField& Y) const; - //- Heat release rate calculated from fuel consumption rate matrix - virtual tmp<volScalarField> dQ() const; - - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; + //- Heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; //- Update properties from given dictionary virtual bool read(); diff --git a/src/conversion/Make/options b/src/conversion/Make/options index 4ff461186ccfa78b8effcbd50daebaf0f1007595..22e6c0f6f16e32946224243da8e688f1728158d0 100644 --- a/src/conversion/Make/options +++ b/src/conversion/Make/options @@ -1,9 +1,8 @@ EXE_INC = \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ - -lfileFormats \ -lfiniteVolume \ -lmeshTools diff --git a/src/conversion/ccm/Make/files b/src/conversion/ccm/Make/files index 89ec20a1db35f1404009aea7b0e367eff3d00a9a..34495168b9b8e736be7a7a24070ddea1f780fd28 100644 --- a/src/conversion/ccm/Make/files +++ b/src/conversion/ccm/Make/files @@ -11,6 +11,4 @@ writer/ccmWriter.C writer/ccmWriterMesh.C writer/ccmWriterSolution.C -/* misc/mergePoints1.C */ - LIB = $(FOAM_LIBBIN)/libccm diff --git a/src/conversion/ccm/Make/options b/src/conversion/ccm/Make/options index ef4b6bb2798726d4b87bff3808ec8807b560a1c0..3272da3576e6873a7df424ad1570e472552df73f 100644 --- a/src/conversion/ccm/Make/options +++ b/src/conversion/ccm/Make/options @@ -3,9 +3,9 @@ EXE_INC = \ /* -DDEBUG_BAFFLES */ \ /* -DDEBUG_CCMIOREAD */ \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/conversion/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(CCMIO_ARCH_PATH)/include LIB_LIBS = \ diff --git a/src/conversion/ccm/common/ccmBase.H b/src/conversion/ccm/common/ccmBase.H index 5f789eadd0aaa100ae07ad4952d7ecc19b627aad..203420d9227698e814e8156f4d244abb58da5bce 100644 --- a/src/conversion/ccm/common/ccmBase.H +++ b/src/conversion/ccm/common/ccmBase.H @@ -111,7 +111,7 @@ public: // Member Functions - // Access + // Access //- Explicity close the file and terminate ccmio access. // Return false if it was already closed. diff --git a/src/conversion/ccm/misc/ListOps1Templates.C b/src/conversion/ccm/misc/ListOps1Templates.C deleted file mode 100644 index 14a9ac38c9284f3e017187a76b188c73d8391d72..0000000000000000000000000000000000000000 --- a/src/conversion/ccm/misc/ListOps1Templates.C +++ /dev/null @@ -1,117 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can 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 "ListOps1.H" - -// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // - -template<class ListType> -ListType Foam::reorder -( - const labelUList& oldToNew, - const ListType& lst, - const bool prune -) -{ - const label sz = lst.size(); - - // Create copy - ListType newLst(sz); - - // Ensure consistent addressable size (eg, DynamicList) - newLst.setSize(sz); - - - label maxIdx = 0; - forAll(lst, elemI) - { - const label newIdx = oldToNew[elemI]; - if (newIdx >= 0) // could also require newIdx < sz - { - newLst[newIdx] = lst[elemI]; - if (prune && maxIdx < newIdx) - { - maxIdx = newIdx; - } - } - else if (!prune) - { - newLst[elemI] = lst[elemI]; - } - } - - if (prune && maxIdx < sz) - { - newLst.setSize(maxIdx); - } - - return newLst; -} - - -template<class ListType> -void Foam::inplaceReorder -( - const labelUList& oldToNew, - ListType& lst, - const bool prune -) -{ - const label sz = lst.size(); - - // Create copy - ListType newLst(sz); - - // Ensure consistent addressable size (eg, DynamicList) - newLst.setSize(sz); - - label maxIdx = 0; - forAll(lst, elemI) - { - const label newIdx = oldToNew[elemI]; - if (newIdx >= 0) // could also require newIdx < sz - { - newLst[newIdx] = lst[elemI]; - if (prune && maxIdx < newIdx) - { - maxIdx = newIdx; - } - } - else if (!prune) - { - newLst[elemI] = lst[elemI]; - } - } - - if (prune && maxIdx < sz) - { - newLst.setSize(maxIdx); - } - - lst.transfer(newLst); -} - - -// ************************************************************************* // diff --git a/src/conversion/ccm/misc/mergePoints1.C b/src/conversion/ccm/misc/mergePoints1.C deleted file mode 100644 index c1114df3ca0b6850af134dc77df5358e9bca9359..0000000000000000000000000000000000000000 --- a/src/conversion/ccm/misc/mergePoints1.C +++ /dev/null @@ -1,177 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can 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 "ListOps.H" -#include "point.H" -#include "Field.H" - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - - -// template<class Type, template<class> class ListType=UList> -template<class Type> -Foam::label Foam::mergePoints -( - const bool dummy, - const UIndirectList<Type>& points, - const scalar mergeTol, - const bool verbose, - labelList& pointMap, - const Type& origin -) -{ - // Create a old to new point mapping array - pointMap.setSize(points.size()); - pointMap = -1; - - if (points.empty()) - { - return 0; - } - - // No normal field operations on UIndirectList. - // Use a tmp pointField instead. - tmp<Field<Type>> tPoints(new pointField(points)); - - Type compareOrigin = origin; - if (origin == Type::max) - { - compareOrigin = sum(tPoints())/points.size(); - } - - // We're comparing distance squared to origin first. - // Say if starting from two close points: - // x, y, z - // x+mergeTol, y+mergeTol, z+mergeTol - // Then the magSqr of both will be - // x^2+y^2+z^2 - // x^2+y^2+z^2 + 2*mergeTol*(x+z+y) + mergeTol^2*... - // so the difference will be 2*mergeTol*(x+y+z) - - const scalar mergeTolSqr = Foam::sqr(scalar(mergeTol)); - - // Sort points by magSqr - const Field<Type> d(tPoints - compareOrigin); - - List<scalar> magSqrD(d.size()); - forAll(d, pointI) - { - magSqrD[pointI] = magSqr(d[pointI]); - } - labelList order; - sortedOrder(magSqrD, order); - - - Field<scalar> sortedTol(points.size()); - forAll(order, sortI) - { - label pointI = order[sortI]; - - // Convert to scalar precision - const point pt - ( - scalar(d[pointI].x()), - scalar(d[pointI].y()), - scalar(d[pointI].z()) - ); - sortedTol[sortI] = 2*mergeTol*(mag(pt.x())+mag(pt.y())+mag(pt.z())); - } - - label newPointI = 0; - - // Handle 0th point separately (is always unique) - label pointI = order[0]; - pointMap[pointI] = newPointI++; - - - for (label sortI = 1; sortI < order.size(); sortI++) - { - // Get original point index - label pointI = order[sortI]; - const scalar mag2 = magSqrD[order[sortI]]; - // Convert to scalar precision - const point pt - ( - scalar(points[pointI].x()), - scalar(points[pointI].y()), - scalar(points[pointI].z()) - ); - - - // Compare to previous points to find equal one. - label equalPointI = -1; - - for - ( - label prevSortI = sortI - 1; - prevSortI >= 0 - && (mag(magSqrD[order[prevSortI]] - mag2) <= sortedTol[sortI]); - prevSortI-- - ) - { - label prevPointI = order[prevSortI]; - const point prevPt - ( - scalar(points[prevPointI].x()), - scalar(points[prevPointI].y()), - scalar(points[prevPointI].z()) - ); - - if (magSqr(pt - prevPt) <= mergeTolSqr) - { - // Found match. - equalPointI = prevPointI; - - break; - } - } - - - if (equalPointI != -1) - { - // Same coordinate as equalPointI. Map to same new point. - pointMap[pointI] = pointMap[equalPointI]; - - if (verbose) - { - Pout<< "Foam::mergePoints : Merging points " - << pointI << " and " << equalPointI - << " with coordinates:" << points[pointI] - << " and " << points[equalPointI] - << endl; - } - } - else - { - // Differs. Store new point. - pointMap[pointI] = newPointI++; - } - } - - return newPointI; -} - - -// ************************************************************************* // diff --git a/src/conversion/ccm/reader/ccmBoundaryInfo.H b/src/conversion/ccm/reader/ccmBoundaryInfo.H index 2e5f2377eb82c5743d7b24ed4e9ee20b61ad9226..78655b898d857a1e356f0c0df63a297101bf3884 100644 --- a/src/conversion/ccm/reader/ccmBoundaryInfo.H +++ b/src/conversion/ccm/reader/ccmBoundaryInfo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Description - Containers for holding STARCCM boundary information + Container for holding STARCCM boundary information \*---------------------------------------------------------------------------*/ #ifndef ccmBoundaryInfo_H @@ -40,8 +40,11 @@ namespace Foam namespace ccm { +class ccmBoundaryInfo; +Ostream& operator<<(Ostream& os, const ccmBoundaryInfo& entry); + /*---------------------------------------------------------------------------*\ - Class ccm::ccmBoundaryInfo Declaration + Class Foam::ccm::ccmBoundaryInfo Declaration \*---------------------------------------------------------------------------*/ //- Helper when reading raw boundary information @@ -95,6 +98,7 @@ public: return ccmIndex != rhs.ccmIndex; } + //- Ostream Operator friend Ostream& operator<<(Ostream& os, const ccmBoundaryInfo& entry) { diff --git a/src/conversion/ccm/reader/ccmInterfaceDefinitions.H b/src/conversion/ccm/reader/ccmInterfaceDefinitions.H index 1c9ea2c8e55da3b5ee3642f1afc118a0f339a984..066340be8062a949155c63e930622215f563a5cb 100644 --- a/src/conversion/ccm/reader/ccmInterfaceDefinitions.H +++ b/src/conversion/ccm/reader/ccmInterfaceDefinitions.H @@ -38,8 +38,14 @@ namespace Foam namespace ccm { +class interfaceEntry; +class interfaceDefinitions; + +Ostream& operator<<(Ostream& os, const interfaceEntry& entry); +Ostream& operator<<(Ostream& os, const interfaceDefinitions& defs); + /*---------------------------------------------------------------------------*\ - Class ccm::interfaceEntry Declaration + Class Foam::ccm::interfaceEntry Declaration \*---------------------------------------------------------------------------*/ //- A STARCCM interface definition is a pair of boundary ids @@ -57,6 +63,7 @@ public: //- The second boundary label bnd1; + // Constructors //- Construct null @@ -106,6 +113,12 @@ public: return bndId == bnd0 || bndId == bnd1; } + //- True if all internal ids are non-negative + bool valid() const + { + return (id >= 0 && bnd0 >= 0 && bnd1 >= 0 && bnd0 != bnd1); + } + //- Canonical name for boundary 0 word canonicalName0() const @@ -161,42 +174,57 @@ class interfaceDefinitions : public Map<interfaceEntry> { + + inline Map<interfaceEntry>& map() + { + return *this; + } + + inline const Map<interfaceEntry>& map() const + { + return *this; + } + + public: // Constructor //- Null construct interfaceDefinitions() - : - Map<interfaceEntry>() {} + //- Size + label size() const + { + return map().size(); + } - //- Scan available interface entries for one matching this boundary id - bool add(interfaceEntry entry) + //- Size + bool empty() const { - if - ( - entry.id >= 0 - && entry.bnd0 >= 0 && entry.bnd1 >= 0 - && entry.bnd0 != entry.bnd1 - ) - { - this->set(entry.id, entry); - return true; - } - else - { - return false; - } + return map().empty(); + } + + //- Clear + void clear() + { + map().clear(); + } + + + //- Add (valid) interface entry + bool add(const interfaceEntry& entry) + { + return (entry.valid() && map().set(entry.id, entry)); } //- Scan available interface entries for one matching this boundary id bool isInterface(label bndId) { - forAllConstIter(Map<interfaceEntry>, *this, iter) + forAllConstIters(map(), iter) { - if (iter().inInterface(bndId)) + if (iter.object().inInterface(bndId)) { return true; } @@ -210,9 +238,9 @@ public: word interfaceName(label bndId) { word ifname; - forAllConstIter(Map<interfaceEntry>, *this, iter) + forAllConstIters(map(), iter) { - ifname = iter().canonicalName(bndId); + ifname = iter.object().canonicalName(bndId); if (!ifname.empty()) { break; @@ -231,9 +259,7 @@ public: const interfaceDefinitions& defs ) { - os << static_cast<const Map<interfaceEntry>& >(defs) - << nl; - + os << defs.map() << nl; return os; } diff --git a/src/conversion/ccm/reader/ccmReader.H b/src/conversion/ccm/reader/ccmReader.H index 14408d3f944bf40fbc26426c609b91cf3c415eb1..67d937f1365d1c8c4e3b324a7df3ff69578f2085 100644 --- a/src/conversion/ccm/reader/ccmReader.H +++ b/src/conversion/ccm/reader/ccmReader.H @@ -368,7 +368,7 @@ private: void validateInterface(List<labelPair>&); //- Renumber interface faces - void renumberInterfaces(const List<label>&); + void renumberInterfaces(const labelUList& oldToNew); //- Remove interfaces between domains (fluid/porosity; fluid/solid, etc) // reorganize baffle interfaces into [0-N/2; N/2-N] lists at the @@ -394,23 +394,27 @@ private: ) const; // polyMesh Friend Functions - void addPatches(polyMesh&) const; + void addPatches(polyMesh& mesh) const; //- Add faceZones based on monitoring boundary conditions - void addFaceZones(polyMesh&) const; + void addFaceZones(polyMesh& mesh) const; //- Get information about all available solutions bool detectSolution(); //- Get information about available fields // assume that all fields are available for all solution intervals - void determineFieldInfo(const ccmID& fieldSetNode, fieldTable&); + void determineFieldInfo + ( + const ccmID& fieldSetNode, + fieldTable& table + ); // Static Members //- Get map of porous regions - static Map<word> selectPorous(const Map<dictionary>&); + static Map<word> selectPorous(const Map<dictionary>& table); public: @@ -418,13 +422,13 @@ public: // Static Members //- Warn about repeated name - static void warnDuplicates(const word& context, const wordList&); + static void warnDuplicates(const word& context, const wordList& lst); // Constructors //- Open a file for reading - reader(const fileName&, const options& opts); + reader(const fileName& file, const reader::options& opts); //- Destructor (closes file) @@ -433,7 +437,7 @@ public: // Member Functions - // Access + // Access //- Reference to the reader options const reader::options& option() const; @@ -459,7 +463,7 @@ public: // const pointField& points() const { return points_; } - // Check + // Check //- Return true if file has geometry associated with it bool hasGeometry(); @@ -468,7 +472,7 @@ public: bool hasSolution(); - // Edit + // Edit //- Remap cellTable and boundaryRegion according to dictionary bool remapMeshInfo @@ -478,17 +482,17 @@ public: ); - // Write + // Write //- Write the polyMesh void writeMesh ( - const polyMesh&, + const polyMesh& mesh, IOstream::streamFormat fmt = IOstream::BINARY ) const; //- Write cellTable, boundaryRegion and interface information - void writeAux(const objectRegistry&) const; + void writeAux(const objectRegistry& registry) const; //- Detect and read geometry if possible bool readGeometry(const scalar scaleFactor = 1.0); @@ -593,12 +597,10 @@ class reader::options //- Merge in-place interfaces (default true) bool mergeInterfaces_; - //- Rename interface boundaries as InterfaceN_0, InterfaceN_1 (default true) + //- Rename interface boundaries as InterfaceN_0, InterfaceN_1 + // (default true) bool renameInterfaces_; - //- Combine identically named boundaries (default false) - bool combineBoundaries_; - //- Remove baffles by merging their respective faces (default false) bool removeBaffles_; @@ -623,7 +625,7 @@ public: // Member Functions - // Access + // Access //- Keep fluid regions (default true) bool keepFluid() const; @@ -640,12 +642,10 @@ public: //- Merge in-place interfaces (default true) bool mergeInterfaces() const; - //- Rename interface boundaries as InterfaceN_0, InterfaceN_1 (default true) + //- Rename interface boundaries as InterfaceN_0, InterfaceN_1 + // (default true) bool renameInterfaces() const; - //- Combine identically named boundaries (default false) - bool combineBoundaries() const; - //- Remove baffles by merging their respective faces (default false) bool removeBaffles() const; @@ -660,37 +660,35 @@ public: scalar undefScalar() const; - // Edit + // Edit //- Keep fluid regions - void keepFluid(bool); + void keepFluid(bool b); //- Keep porous regions - void keepPorous(bool); + void keepPorous(bool b); //- Keep solid regions - void keepSolid(bool); + void keepSolid(bool b); //- Merge in-place interfaces - void mergeInterfaces(bool); + void mergeInterfaces(bool b); //- Rename interface boundaries as InterfaceN_0, InterfaceN_1 - void renameInterfaces(bool); + void renameInterfaces(bool b); - //- Combine identically named boundaries - void combineBoundaries(bool); //- Remove baffles by merging their respective faces - void removeBaffles(bool); + void removeBaffles(bool b); //- Use numbered names (eg, patch_0, zone_0) instead of human-readable - void useNumberedNames(bool); + void useNumberedNames(bool b); //- Merge tolerance for points (default 0.05e-3) - void mergeTol(const scalar&); + void mergeTol(const scalar& tol); //- Value to assign for undefined solutions (default: NaN) - void undefScalar(const scalar&); + void undefScalar(const scalar& val); }; diff --git a/src/conversion/ccm/reader/ccmReaderAux.C b/src/conversion/ccm/reader/ccmReaderAux.C index f820dcb7f531871860e9232691cb518d8e121550..717cdd20e884a97c093262c1e542d3947333f038 100644 --- a/src/conversion/ccm/reader/ccmReaderAux.C +++ b/src/conversion/ccm/reader/ccmReaderAux.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,7 @@ Foam::Map<Foam::word> Foam::ccm::reader::selectPorous { Map<word> lookup; - forAllConstIter(Map<dictionary>, table, iter) + forAllConstIters(table, iter) { if (iter().lookupOrDefault<label>("PorosityId", 0) != 0) { @@ -70,21 +70,21 @@ void Foam::ccm::reader::warnDuplicates const wordList& lst ) { - HashTable<label> hashed(lst.size()); + HashTable<label> hashed(2*lst.size()); bool duplicates = false; - forAll(lst, elemI) + for (const word& item : lst) { - // Check duplicate name - HashTable<label>::iterator iter = hashed.find(lst[elemI]); - if (iter != hashed.end()) + // Check duplicate names + auto iter = hashed.find(item); + if (iter.found()) { (*iter)++; duplicates = true; } else { - hashed.insert(lst[elemI], 1); + hashed.insert(item, 1); } } @@ -92,9 +92,9 @@ void Foam::ccm::reader::warnDuplicates if (duplicates) { Info << nl << "WARNING: " << context << " with identical names:"; - forAllConstIter(HashTable<label>, hashed, iter) + forAllConstIters(hashed, iter) { - if (*iter > 1) + if (iter.object() > 1) { Info << " " << iter.key(); } diff --git a/src/conversion/ccm/reader/ccmReaderMesh.C b/src/conversion/ccm/reader/ccmReaderMesh.C index 5c4bf5c1fd90e9abbb6f48038b0f3b4784b4e1d5..bb8196062527f9dedc1cf94ed91cec017496d981 100644 --- a/src/conversion/ccm/reader/ccmReaderMesh.C +++ b/src/conversion/ccm/reader/ccmReaderMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,8 +37,8 @@ License #include "PackedList.H" #include "uindirectPrimitivePatch.H" #include "SortableList.H" -#include "mergePoints1.H" -#include "ListOps1.H" +#include "mergePoints.H" +#include "ListOps.H" #include "ccmInternal.H" // include last to avoid any strange interactions @@ -479,8 +479,8 @@ void Foam::ccm::reader::readCells info.setPatchName(ccmReadOptstr("Label", nodeId)); // Lookup the name, type from boundary region info: - Map<dictionary>::iterator dictIter = boundaryRegion_.find(info.ccmIndex); - if (dictIter != boundaryRegion_.end()) + auto dictIter = boundaryRegion_.find(info.ccmIndex); + if (dictIter.found()) { word patchName(dictIter()["Label"]); word patchType(dictIter()["BoundaryType"]); @@ -517,51 +517,6 @@ void Foam::ccm::reader::readCells origBndId_ = -1; nPatches = 0; - HashTable<label, std::string> hashedNames; - if (option().combineBoundaries()) - { - // Ensure all the interfaces are orderd up-front: - forAll(interfaceDefinitions_, interI) - { - const interfaceEntry& ifentry = interfaceDefinitions_[interI]; - - label info0Index = -1; - label info1Index = -1; - - forAll(bndInfo, infoI) - { - if (bndInfo[infoI].ccmIndex == ifentry.bnd0) - { - info0Index = infoI; - } - else if (bndInfo[infoI].ccmIndex == ifentry.bnd1) - { - info1Index = infoI; - } - } - - if (info0Index == info1Index || info0Index < 0 || info1Index < 0) - { - // this should never be able to happen - continue; - } - - ccmBoundaryInfo& info0 = bndInfo[info0Index]; - ccmBoundaryInfo& info1 = bndInfo[info1Index]; - - // Preserve interface order - info0.patchId = nPatches++; - info1.patchId = nPatches++; - - // full safety: - info0.patchName = ifentry.canonicalName0(); - info1.patchName = ifentry.canonicalName1(); - - hashedNames.insert(info0.patchName, info0Index); - hashedNames.insert(info1.patchName, info1Index); - } - } - forAll(bndInfo, infoI) { ccmBoundaryInfo& info = bndInfo[infoI]; @@ -573,27 +528,8 @@ void Foam::ccm::reader::readCells } else { - if (option().combineBoundaries()) - { - // Check if patch name was already seen - HashTable<label, std::string>::const_iterator citer = hashedNames.find(info.patchName); - if (citer != hashedNames.end()) - { - info.patchId = bndInfo[citer()].patchId; - } - else - { - hashedNames.insert(info.patchName, infoI); - - info.patchId = nPatches++; - origBndId_[info.patchId] = info.ccmIndex; - } - } - else - { - info.patchId = nPatches++; - origBndId_[info.patchId] = info.ccmIndex; - } + info.patchId = nPatches++; + origBndId_[info.patchId] = info.ccmIndex; } patchSizes_[info.patchId] += info.size; @@ -622,20 +558,6 @@ void Foam::ccm::reader::readCells ccmLookupOrder.resetAddressing(addr.xfer()); } - if (option().combineBoundaries()) - { - Info<<"patches combined by name: "; - if (nPatches == bndInfo.size()) - { - Info<<"none" << endl; - } - else - { - Info<< bndInfo.size() << " into " << nPatches << endl; - } - // Info<< ccmLookupOrder << endl; - } - // // Now we are ready to do the reading @@ -775,7 +697,11 @@ void Foam::ccm::reader::readCells kCCMIOStart, kCCMIOEnd ); - assertNoError("Error reading boundary face cells - index " + ::Foam::name(info.ccmIndex)); + assertNoError + ( + "Error reading boundary face cells - index " + + ::Foam::name(info.ccmIndex) + ); // Copy into Foam list // ccmFaces are organized as [nVert vrt1 .. vrtN] @@ -797,7 +723,11 @@ void Foam::ccm::reader::readCells } else { - assertNoError("Error reading boundary faces - index " + ::Foam::name(info.ccmIndex)); + assertNoError + ( + "Error reading boundary faces - index " + + ::Foam::name(info.ccmIndex) + ); } } @@ -1106,11 +1036,10 @@ void Foam::ccm::reader::readMonitoring << "ccmRegionId: " << ccmRegionId << endl; #endif - Map<dictionary>::const_iterator - iter = boundaryRegion_.find(ccmRegionId); + auto iter = boundaryRegion_.cfind(ccmRegionId); word zoneName; - if (iter != boundaryRegion_.end()) + if (iter.found()) { iter().lookup("Label") >> zoneName; } @@ -1314,7 +1243,7 @@ void Foam::ccm::reader::removeUnwanted() { Map<word> keepMap; - forAllConstIter(Map<dictionary>, cellTable_, iter) + forAllConstIters(cellTable_, iter) { const label tableId = iter.key(); if (!removeMap.found(tableId)) @@ -1326,17 +1255,19 @@ void Foam::ccm::reader::removeUnwanted() Info<<"remove "<< nRemove << " cells in " << removeMap.size() << " unwanted cellZone(s)" << nl; - forAllConstIter(Map<word>, removeMap, iter) + forAllConstIters(removeMap, iter) { - Info<< " zone " << iter.key() << " : "<< iter() << nl; + Info<< " zone " + << iter.key() << " : " << iter.object() << nl; } Info<<"retain "<< (nCells_ - nRemove) << " cells in " << keepMap.size() << " cellZone(s)" << nl; - forAllConstIter(Map<word>, keepMap, iter) + forAllConstIters(keepMap, iter) { - Info<< " zone " << iter.key() << " : "<< iter() << nl; + Info<< " zone " + << iter.key() << " : " << iter.object() << nl; } } } @@ -1512,7 +1443,7 @@ void Foam::ccm::reader::validateInterface void Foam::ccm::reader::renumberInterfaces ( - const labelList& oldToNew + const labelUList& oldToNew ) { forAll(domInterfaces_, elemI) @@ -1544,8 +1475,8 @@ void Foam::ccm::reader::cleanupInterfaces() if (bafInterfaces_.size() <= 0 && domInterfaces_.size() <= 0) { - Info<<"0 baffle interface pairs" << endl; - Info<<"0 domain interface pairs" << endl; + Info<<"0 baffle interface pairs" << nl + <<"0 domain interface pairs" << endl; return; } @@ -1559,8 +1490,8 @@ void Foam::ccm::reader::cleanupInterfaces() forAll(domInterfaces_, elemI) { - label face0 = domInterfaces_[elemI][0]; - label face1 = domInterfaces_[elemI][1]; + const label face0 = domInterfaces_[elemI][0]; + const label face1 = domInterfaces_[elemI][1]; Info<< "interface [" << elemI << "] = " << face0 << " - " << face1 << " own/neigh = " @@ -1821,7 +1752,7 @@ void Foam::ccm::reader::cleanupInterfaces() // << SubList<label>(oldToNew, nFaces_ - nInternalFaces_, nInternalFaces_) // << endl; - forAllIter(HashTable<labelList>, monitoringSets_, iter) + forAllIters(monitoringSets_, iter) { inplaceRenumber(oldToNew, iter()); } @@ -1893,9 +1824,11 @@ void Foam::ccm::reader::mergeInplaceInterfaces() // List of patch pairs that are interfaces DynamicList<labelPair> interfacePatches(interfaceDefinitions_.size()); - forAll(interfaceDefinitions_, interI) + label nWarn = 0; + + forAllConstIters(interfaceDefinitions_, iter) { - const interfaceEntry& ifentry = interfaceDefinitions_[interI]; + const interfaceEntry& ifentry = iter.object(); labelPair patchPair ( @@ -1903,10 +1836,15 @@ void Foam::ccm::reader::mergeInplaceInterfaces() findIndex(origBndId_, ifentry.bnd1) ); - if (patchPair[0] == patchPair[1] || patchPair[0] < 0 || patchPair[1] < 0) + if + ( + patchPair[0] == patchPair[1] + || patchPair[0] < 0 + || patchPair[1] < 0 + ) { // This should not happen - Info<<"Warning : bad interface " << interI << " " << ifentry + Info<<"Warning : bad interface " << ifentry.id << " " << ifentry <<" on patches " << patchPair << endl; } else if @@ -1916,11 +1854,18 @@ void Foam::ccm::reader::mergeInplaceInterfaces() || patchSizes_[patchPair[1]] == 0 ) { - Info<<"Warning : skip interface " << interI << " " << ifentry - <<" on patches " << patchPair << nl - <<" has zero or different number of faces: (" - << patchSizes_[patchPair[0]] << " " << patchSizes_[patchPair[1]] << ")" - << endl; + if (!nWarn++) + { + Info<<"Warning: skip interface with zero or different" + << " number of faces" << nl; + } + + Info<<" Interface:" << ifentry.id << " " << ifentry + <<" patches " << patchPair + <<" sizes (" + << patchSizes_[patchPair[0]] + << " " << patchSizes_[patchPair[1]] << ")" + << nl; } else { @@ -1947,7 +1892,8 @@ void Foam::ccm::reader::mergeInplaceInterfaces() // Markup points to merge PackedBoolList whichPoints(points_.size()); - Info<< "interface merge points (tol=" << option().mergeTol() << "):" << endl; + Info<< "interface merge points (tol=" + << option().mergeTol() << "):" << endl; DynamicList<label> interfacesToMerge(interfacePatches.size()); forAll(interfacePatches, interI) @@ -1985,12 +1931,11 @@ void Foam::ccm::reader::mergeInplaceInterfaces() const UIndirectList<point> pointsToMerge(points_, addr); - Info<< " patch " << patch0 << ", " << patch1 << ": (" + Info<< " patch " << patch0 << "," << patch1 << ": (" << nPatch0Faces << " and " << nPatch1Faces << " faces) " << flush; - label nMerged = mergePoints + const label nMerged = mergePoints ( - true, pointsToMerge, option().mergeTol(), false, @@ -2003,9 +1948,9 @@ void Foam::ccm::reader::mergeInplaceInterfaces() if (nMerged) { // Transcribe local to global addressing - forAll(mergedPointMap, lookupI) + forAll(mergedPointMap, i) { - oldToNew[addr[lookupI]] = addr[mergedPointMap[lookupI]]; + oldToNew[addr[i]] = addr[mergedPointMap[i]]; } interfacesToMerge.append(interI); @@ -2175,11 +2120,11 @@ void Foam::ccm::reader::mergeInplaceInterfaces() // Note which one were successful labelHashSet done(failed0.size()); - forAllConstIter(labelHashSet, failed0, iter0) + forAllConstIters(failed0, iter0) { const label face0I = iter0.key(); - forAllConstIter(labelHashSet, failed1, iter1) + forAllConstIters(failed1, iter1) { const label face1I = iter1.key(); @@ -2421,10 +2366,10 @@ void Foam::ccm::reader::reorderMesh() inplaceReorder(oldToNew, faceNeighbour_); inplaceReorder(oldToNew, origFaceId_); - forAllIter(HashTable<labelList>, monitoringSets_, iter) + forAllIters(monitoringSets_, iter) { - inplaceRenumber(oldToNew, iter()); - labelList &lst = iter(); + labelList& lst = iter.object(); + inplaceRenumber(oldToNew, lst); // disallow monitoring on boundaries label nElem = 0; @@ -2436,7 +2381,7 @@ void Foam::ccm::reader::reorderMesh() { lst[nElem] = lst[i]; } - nElem++; + ++nElem; } } @@ -2478,10 +2423,9 @@ void Foam::ccm::reader::addPatches word patchName; word patchType; - Map<dictionary>::const_iterator - citer = boundaryRegion_.find(origBndId_[patchI]); + auto citer = boundaryRegion_.cfind(origBndId_[patchI]); - if (citer != boundaryRegion_.end()) + if (citer.found()) { citer().lookup("Label") >> patchName; citer().lookup("BoundaryType") >> patchType; @@ -2593,7 +2537,7 @@ void Foam::ccm::reader::addFaceZones } nZone = 0; - forAllConstIter(HashTable<labelList>, monitoringSets_, iter) + forAllConstIters(monitoringSets_, iter) { Info<< "faceZone " << nZone << " (size: " << iter().size() << ") name: " @@ -2612,7 +2556,7 @@ void Foam::ccm::reader::addFaceZones ) ); - nZone++; + ++nZone; } mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE; diff --git a/src/conversion/ccm/reader/ccmReaderOptions.C b/src/conversion/ccm/reader/ccmReaderOptions.C index c6bfe87d7dc6413818aeb0a5d3f50f7883073a66..994dba080cafe258625314408005c93503a0b545 100644 --- a/src/conversion/ccm/reader/ccmReaderOptions.C +++ b/src/conversion/ccm/reader/ccmReaderOptions.C @@ -34,7 +34,6 @@ Foam::ccm::reader::options::options() keepSolid_(true), mergeInterfaces_(false), renameInterfaces_(true), - combineBoundaries_(false), removeBaffles_(false), useNumberedNames_(false), mergeTol_(0.05e-3), @@ -80,12 +79,6 @@ bool Foam::ccm::reader::options::renameInterfaces() const } -bool Foam::ccm::reader::options::combineBoundaries() const -{ - return combineBoundaries_; -} - - bool Foam::ccm::reader::options::removeBaffles() const { return removeBaffles_; @@ -141,12 +134,6 @@ void Foam::ccm::reader::options::renameInterfaces(bool b) } -void Foam::ccm::reader::options::combineBoundaries(bool b) -{ - combineBoundaries_ = b; -} - - void Foam::ccm::reader::options::removeBaffles(bool b) { removeBaffles_ = b; diff --git a/src/conversion/ccm/reader/ccmReaderSolution.C b/src/conversion/ccm/reader/ccmReaderSolution.C index 04881011f355398f79489875fd0245249512daaa..e849823b346113ab4c4b692bf00cf5e349c9df5e 100644 --- a/src/conversion/ccm/reader/ccmReaderSolution.C +++ b/src/conversion/ccm/reader/ccmReaderSolution.C @@ -622,7 +622,7 @@ Foam::ccm::reader::readField // transcribe to output list forAll(mapData, i) { - label cellId = mapData[i]; + const label cellId = mapData[i]; scalarData[cellId] = rawData[i]; } diff --git a/src/conversion/ccm/reader/ccmSolutionTable.H b/src/conversion/ccm/reader/ccmSolutionTable.H index e223d1c7480cca60c7b476de073ce0b7e9ad0010..1a58d67cc68e49c22399e2980d92c177f6cd6978 100644 --- a/src/conversion/ccm/reader/ccmSolutionTable.H +++ b/src/conversion/ccm/reader/ccmSolutionTable.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,8 +29,8 @@ Description #define ccmSolutionTable_H #include "SLList.H" -#include "stringListOps.H" #include "Ostream.H" +#include "stringListOps.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -39,8 +39,16 @@ namespace Foam namespace ccm { +class fieldEntry; +class fieldTable; +class solutionEntry; + +Ostream& operator<<(Ostream& os, const fieldEntry& entry); +Ostream& operator<<(Ostream& os, const fieldTable& entry); +Ostream& operator<<(Ostream& os, const solutionEntry& entry); + /*---------------------------------------------------------------------------*\ - Class ccm::namesList Declaration + Class Foam::ccm::namesList Declaration \*---------------------------------------------------------------------------*/ //- A linked-list that is searchable by the 'name()' of the items @@ -50,8 +58,8 @@ class namesList public SLList<T> { public: - typedef typename SLList<T>::const_iterator const_iterator; - typedef typename SLList<T>::iterator iterator; + using const_iterator = typename SLList<T>::const_iterator; + using iterator = typename SLList<T>::iterator; // Constructors @@ -65,12 +73,7 @@ public: //- Return true if a list element has a name that matches key bool found(const word& key) const { - for - ( - const_iterator iter = SLList<T>::begin(); - iter != SLList<T>::end(); - ++iter - ) + forAllConstIters(*this, iter) { if (iter().name() == key) { @@ -85,12 +88,7 @@ public: //- Find a list element has a name matching key iterator find(const word& key) { - for - ( - iterator iter = SLList<T>::begin(); - iter != SLList<T>::end(); - ++iter - ) + forAllIters(*this, iter) { if (iter().name() == key) { @@ -112,12 +110,7 @@ public: List<word> matched(SLList<T>::size()); label matchI = 0; - for - ( - const_iterator iter = SLList<T>::begin(); - iter != SLList<T>::end(); - ++iter - ) + forAllConstIters(*this, iter) { const word& name = iter().name(); @@ -139,7 +132,7 @@ public: /*---------------------------------------------------------------------------*\ - Class ccm::fieldEntry Declaration + Class Foam::ccm::fieldEntry Declaration \*---------------------------------------------------------------------------*/ //- A ccm field entry with short name, name, maxId and type @@ -223,15 +216,6 @@ public: // Edit - //- Set the field units - void units(const char* units) - { - if (units && *units) - { - units_ = units; - } - } - //- Set the field units void units(const std::string& units) { @@ -279,8 +263,9 @@ public: }; + /*---------------------------------------------------------------------------*\ - Class ccm::solutionEntry Declaration + Class Foam::ccm::solutionEntry Declaration \*---------------------------------------------------------------------------*/ //- A ccm solution entry with name, iteration and time @@ -306,8 +291,8 @@ public: solutionEntry ( const word& name, - const label& iteration, - const scalar& timeValue = 0 + const label iteration, + const scalar timeValue = 0 ) : name_(name), @@ -355,7 +340,7 @@ public: /*---------------------------------------------------------------------------*\ - Class ccm::solutionTable Declaration + Class Foam::ccm::solutionTable Declaration \*---------------------------------------------------------------------------*/ // Typedef: ccm::solutionTable @@ -364,7 +349,7 @@ typedef namesList<solutionEntry> solutionTable; /*---------------------------------------------------------------------------*\ - Class ccm::fieldTable Declaration + Class Foam::ccm::fieldTable Declaration \*---------------------------------------------------------------------------*/ //- A list of the available fields @@ -382,15 +367,16 @@ public: namesList<fieldEntry>() {} + // Access //- The maximum cell Id referenced in the list label maxCellId() const { label maxId = 0; - forAllConstIter(namesList<fieldEntry>, *this, iter) + forAllConstIters(*this, iter) { - label currMax = (iter()).maxCellId(); + const label currMax = iter().maxCellId(); if (maxId < currMax) { @@ -406,10 +392,9 @@ public: label maxFaceId() const { label maxId = 0; - - forAllConstIter(namesList<fieldEntry>, *this, iter) + forAllConstIters(*this, iter) { - label currMax = (iter()).maxFaceId(); + const label currMax = iter().maxFaceId(); if (maxId < currMax) { diff --git a/src/conversion/ccm/writer/ccmWriter.C b/src/conversion/ccm/writer/ccmWriter.C index c78a2fa068626d15cf77f154581529ff6546d631..8cd6dfdd503573d3276d9e5c6dd5c7e4c4ca21ba 100644 --- a/src/conversion/ccm/writer/ccmWriter.C +++ b/src/conversion/ccm/writer/ccmWriter.C @@ -95,7 +95,7 @@ void Foam::ccm::writer::writeBoundaryRegion // Create dictionary lookup for constant/boundaryRegion dictionary typeDict; - forAllConstIter(Map<dictionary>, boundaryRegion_, iter) + forAllConstIters(boundaryRegion_, iter) { const dictionary& dict = iter(); if @@ -207,7 +207,7 @@ void Foam::ccm::writer::writeCellTable ccmID nodeId; - forAllConstIter(Map<dictionary>, cellTable_, iter) + forAllConstIters(cellTable_, iter) { label intVal = iter.key(); const dictionary& dict = iter(); @@ -292,7 +292,6 @@ void Foam::ccm::writer::writeProblem // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct for writing geometry Foam::ccm::writer::writer ( const fileName& file, diff --git a/src/conversion/ccm/writer/ccmWriter.H b/src/conversion/ccm/writer/ccmWriter.H index a2d57148c9bb8633630cc79f4fbdd60ce08a2cb1..c7b71c6311dace04ff91ac91474b540e6a5c83d6 100644 --- a/src/conversion/ccm/writer/ccmWriter.H +++ b/src/conversion/ccm/writer/ccmWriter.H @@ -219,7 +219,12 @@ public: // Constructors //- Open a file for writing, with backup/overwrite existing file - writer(const fileName&, const polyMesh&, const bool backup=true); + writer + ( + const fileName& file, + const polyMesh& mesh, + const bool backup=true + ); //- Destructor (closes file) @@ -228,7 +233,7 @@ public: // Member Functions - // Write + // Write //- Write the mesh void writeGeometry(); @@ -237,7 +242,7 @@ public: // provide optional remapping dictionary void writeSolution ( - const IOobjectList&, + const IOobjectList& objects, const fileName& remappingDictName = fileName::null ); diff --git a/src/conversion/ccm/writer/ccmWriterMesh.C b/src/conversion/ccm/writer/ccmWriterMesh.C index f17a56a5304653c84e8af386df8721de8df8a9d2..1e2bd0f2b28dbe5d80892a29a91da214aafd8d8b 100644 --- a/src/conversion/ccm/writer/ccmWriterMesh.C +++ b/src/conversion/ccm/writer/ccmWriterMesh.C @@ -567,9 +567,9 @@ void Foam::ccm::writer::writeCells tableId = cellTable_.append(dict); } - forAll(cZone, i) + for (auto id : cZone) { - mapData[cZone[i]] = tableId; + mapData[id] = tableId; } } } @@ -582,11 +582,11 @@ void Foam::ccm::writer::writeCells dict.add("MaterialType", "fluid"); label tableId = cellTable_.append(dict); - forAll(mapData, i) + for (auto& id : mapData) { - if (mapData[i] < 0) + if (id < 0) { - mapData[i] = tableId; + id = tableId; } } } diff --git a/src/conversion/ccm/writer/ccmWriterSolution.C b/src/conversion/ccm/writer/ccmWriterSolution.C index 354e9cdf93294330ae0007386e16eff4cc900e41..3887f895e50e38bbbd562f1e40a80579e7a8fb69 100644 --- a/src/conversion/ccm/writer/ccmWriterSolution.C +++ b/src/conversion/ccm/writer/ccmWriterSolution.C @@ -463,8 +463,6 @@ void Foam::ccm::writer::writeSolution &phaseNode ); - - forAllConstIter(IOobjectList, objects, iter) { word fieldName = (*iter()).name(); diff --git a/src/conversion/ensight/mesh/ensightMeshIO.C b/src/conversion/ensight/mesh/ensightMeshIO.C index 4337a95c159e41b883d06d8a67ebe5f3d6c4e23b..213fd57eb5a95924651b8a124f38009895f341d4 100644 --- a/src/conversion/ensight/mesh/ensightMeshIO.C +++ b/src/conversion/ensight/mesh/ensightMeshIO.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -274,7 +274,7 @@ void Foam::ensightMesh::writePolysConnectivity // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); labelList addr(fromSlave); cellList cellFaces(fromSlave); @@ -283,7 +283,7 @@ void Foam::ensightMesh::writePolysConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo()); toMaster << addr << cellFaces; @@ -303,7 +303,7 @@ void Foam::ensightMesh::writePolysConnectivity // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); labelList addr(fromSlave); cellList cellFaces(fromSlave); faceList meshFaces(fromSlave); @@ -319,7 +319,7 @@ void Foam::ensightMesh::writePolysConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo()); toMaster << addr << cellFaces @@ -349,7 +349,7 @@ void Foam::ensightMesh::writePolysConnectivity // Slaves for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); labelList addr(fromSlave); cellList cellFaces(fromSlave); faceList faces(fromSlave); @@ -367,7 +367,7 @@ void Foam::ensightMesh::writePolysConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo()); toMaster << addr << cellFaces @@ -423,7 +423,7 @@ void Foam::ensightMesh::writeCellConnectivity for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); cellShapeList received(fromSlave); writeCellShapes(received, os); @@ -431,7 +431,12 @@ void Foam::ensightMesh::writeCellConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << shapes; } @@ -505,7 +510,7 @@ void Foam::ensightMesh::writeFaceConnectivity for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); faceList received(fromSlave); writeFaceSizes(received, os); @@ -513,7 +518,12 @@ void Foam::ensightMesh::writeFaceConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << faces; } @@ -527,7 +537,7 @@ void Foam::ensightMesh::writeFaceConnectivity for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); faceList received(fromSlave); writeFaceList(received, os); @@ -535,7 +545,12 @@ void Foam::ensightMesh::writeFaceConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << faces; } @@ -573,7 +588,7 @@ void Foam::ensightMesh::writeFaceConnectivity for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); faceList received(fromSlave); writeFaceSizes(received, os); @@ -581,7 +596,12 @@ void Foam::ensightMesh::writeFaceConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << faces; } @@ -594,7 +614,7 @@ void Foam::ensightMesh::writeFaceConnectivity for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); faceList received(fromSlave); writeFaceList(received, os); @@ -602,7 +622,12 @@ void Foam::ensightMesh::writeFaceConnectivity } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << faces; } @@ -679,7 +704,7 @@ void Foam::ensightMesh::writeAllPoints for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); scalarField received(fromSlave); os.writeList(received); } @@ -689,7 +714,12 @@ void Foam::ensightMesh::writeAllPoints { for (direction cmpt=0; cmpt < point::nComponents; ++cmpt) { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << uniquePoints.component(cmpt); } diff --git a/src/conversion/ensight/output/ensightOutputTemplates.C b/src/conversion/ensight/output/ensightOutputTemplates.C index 2689c1266403f39034ec51ed20bfa1f8f2e41db2..2ce1af6cd7943ab49fc4d5882d2c383f3c21d3f6 100644 --- a/src/conversion/ensight/output/ensightOutputTemplates.C +++ b/src/conversion/ensight/output/ensightOutputTemplates.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -63,7 +63,7 @@ void Foam::ensightOutput::writeFieldContent for (int slave=1; slave<Pstream::nProcs(); ++slave) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); scalarField received(fromSlave); os.writeList(received); } @@ -75,7 +75,12 @@ void Foam::ensightOutput::writeFieldContent { const label cmpt = ensightPTraits<Type>::componentOrder[d]; - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << fld.component(cmpt); } diff --git a/src/conversion/fire/FIREMeshReader.C b/src/conversion/fire/FIREMeshReader.C index e79d70b060d28d3025c135696e0c5aa50f82bdad..c57a188615836393f331c44adb891d313f02f114 100644 --- a/src/conversion/fire/FIREMeshReader.C +++ b/src/conversion/fire/FIREMeshReader.C @@ -375,7 +375,7 @@ bool Foam::fileFormats::FIREMeshReader::readGeometry(const scalar scaleFactor) IOstream::streamFormat fmt = IOstream::ASCII; const word ext = geometryFile_.ext(); - bool supported = FIRECore::file3dExtensions.found(ext); + bool supported = FIRECore::file3dExtensions.hasEnum(ext); if (supported) { FIRECore::fileExt3d fireFileType = FIRECore::file3dExtensions[ext]; diff --git a/src/conversion/fire/FIREMeshWriter.C b/src/conversion/fire/FIREMeshWriter.C index 29746005d077f069cf23f14214cfdd7c86d059c0..9c6146c3e00a9f4470432cd98807b7478df8cc58 100644 --- a/src/conversion/fire/FIREMeshWriter.C +++ b/src/conversion/fire/FIREMeshWriter.C @@ -278,7 +278,7 @@ bool Foam::fileFormats::FIREMeshWriter::write(const fileName& meshName) const { const word ext = baseName.ext(); - if (FIRECore::file3dExtensions.found(ext)) + if (FIRECore::file3dExtensions.hasEnum(ext)) { FIRECore::fileExt3d fireFileType = FIRECore::file3dExtensions[ext]; if (fireFileType == FIRECore::POLY_ASCII) diff --git a/src/dynamicFvMesh/Make/options b/src/dynamicFvMesh/Make/options index 966b56964d720cb3acf3a2f006a63d6b14284ef5..3540c13bfc8d77a85b5642874b6806561cfdacd8 100644 --- a/src/dynamicFvMesh/Make/options +++ b/src/dynamicFvMesh/Make/options @@ -1,11 +1,10 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude LIB_LIBS = \ - -ltriSurface \ -lmeshTools \ -ldynamicMesh \ -lfiniteVolume diff --git a/src/dynamicFvMesh/dynamicInkJetFvMesh/dynamicInkJetFvMesh.C b/src/dynamicFvMesh/dynamicInkJetFvMesh/dynamicInkJetFvMesh.C index a26ea293d3e0606ad517077570a78634d9852648..737e27877e5647d927c91bd9249a3e96eb86ef42 100644 --- a/src/dynamicFvMesh/dynamicInkJetFvMesh/dynamicInkJetFvMesh.C +++ b/src/dynamicFvMesh/dynamicInkJetFvMesh/dynamicInkJetFvMesh.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,7 +55,7 @@ Foam::dynamicInkJetFvMesh::dynamicInkJetFvMesh(const IOobject& io) IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ), amplitude_(readScalar(dynamicMeshCoeffs_.lookup("amplitude"))), frequency_(readScalar(dynamicMeshCoeffs_.lookup("frequency"))), diff --git a/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C b/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C index 6ef49e4951f06db6817eaa1c008d10688d85ac2b..41f8d34b17d04c4a5fe796e912a66164c91f581a 100644 --- a/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C +++ b/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -191,7 +191,7 @@ void Foam::dynamicRefineFvMesh::readDict() IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ); List<Pair<word>> fluxVelocities = List<Pair<word>> @@ -1248,7 +1248,7 @@ bool Foam::dynamicRefineFvMesh::update() IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ); label refineInterval = readLabel(refineDict.lookup("refineInterval")); diff --git a/src/dynamicMesh/Make/options b/src/dynamicMesh/Make/options index 0757c296783738fafdd35fc63fafb035a5fc1500..45af15fb9c7c125f13cac614136a45aa14a41855 100644 --- a/src/dynamicMesh/Make/options +++ b/src/dynamicMesh/Make/options @@ -1,10 +1,10 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/mesh/extrudeModel/lnInclude LIB_LIBS = \ -lfiniteVolume \ - -ltriSurface \ + -lsurfMesh \ -lextrudeModel diff --git a/src/dynamicMesh/boundaryPatch/boundaryPatch.C b/src/dynamicMesh/boundaryPatch/boundaryPatch.C index b405ad517df3a3622d3bbb08bee19fa11f3ab6ea..fe2f9796e4ce679facb71467d8e5d3d323225cd2 100644 --- a/src/dynamicMesh/boundaryPatch/boundaryPatch.C +++ b/src/dynamicMesh/boundaryPatch/boundaryPatch.C @@ -100,7 +100,7 @@ void Foam::boundaryPatch::write(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream& os, const boundaryPatch& p) { p.write(os); - os.check("Ostream& operator<<(Ostream& f, const boundaryPatch&)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C index 23a13b9096086168ae99cd43c21dd6c38a548fb7..89245c0094c518492ef9e64f8f67e87d4534a199 100644 --- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C +++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1870,7 +1870,7 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::fvMeshDistribute::distribute // Allocate buffers - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // What to send to neighbouring domains @@ -1899,7 +1899,7 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::fvMeshDistribute::distribute } // Pstream for sending mesh and fields - //OPstream str(Pstream::blocking, recvProc); + //OPstream str(Pstream::commsTypes::blocking, recvProc); UOPstream str(recvProc, pBufs); // Mesh subsetting engine diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C index 86a9617750af5326ad4955c145ffa8137d45068d..e03840aaa531ea6e7a07fe26c019c806989145a7 100644 --- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C +++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -205,6 +205,8 @@ void Foam::fvMeshDistribute::mapExposedFaces forAllIter(typename HashTable<fldType*>, flds, iter) { fldType& fld = *iter(); + const bool oriented = fld.oriented()(); + typename fldType::Boundary& bfld = fld.boundaryFieldRef(); const Field<T>& oldInternal = oldFlds[fieldI++]; @@ -225,7 +227,7 @@ void Foam::fvMeshDistribute::mapExposedFaces { patchFld[i] = oldInternal[oldFaceI]; - if (map.flipFaceFlux().found(faceI)) + if (oriented && map.flipFaceFlux().found(faceI)) { patchFld[i] = flipOp()(patchFld[i]); } diff --git a/src/dynamicMesh/fvMeshSubset/fvMeshSubset.C b/src/dynamicMesh/fvMeshSubset/fvMeshSubset.C index 422891cae64b5ac6aefe3720dd48d3575a85789c..f7a105ae0810a0a152fb3297f67fd12bc1c9aefc 100644 --- a/src/dynamicMesh/fvMeshSubset/fvMeshSubset.C +++ b/src/dynamicMesh/fvMeshSubset/fvMeshSubset.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -105,7 +105,7 @@ void Foam::fvMeshSubset::doCoupledPatches if (syncPar && Pstream::parRun()) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send face usage across processor patches forAll(oldPatches, oldPatchi) diff --git a/src/dynamicMesh/fvMeshSubset/fvMeshSubset.H b/src/dynamicMesh/fvMeshSubset/fvMeshSubset.H index 7d9c453b5e3a58f75bec2f02a069158855d32318..3f057d2d574a6ae46fedf8cff309ebeebe4eef65 100644 --- a/src/dynamicMesh/fvMeshSubset/fvMeshSubset.H +++ b/src/dynamicMesh/fvMeshSubset/fvMeshSubset.H @@ -283,16 +283,14 @@ public: const fvMesh& sMesh, const labelList& patchMap, const labelList& cellMap, - const labelList& faceMap, - const bool negateIfFlipped = true + const labelList& faceMap ); template<class Type> tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> interpolate ( - const GeometricField<Type, fvsPatchField, surfaceMesh>&, - const bool negateIfFlipped = true + const GeometricField<Type, fvsPatchField, surfaceMesh>& ) const; //- Map point field diff --git a/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C b/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C index 7a0192ee06c9c5862ae8d94b4e75f3ff1278b5ef..228b7df26da3e7ad51f3366f50e8d39f07bcdf18 100644 --- a/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C +++ b/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C @@ -102,6 +102,7 @@ tmp<GeometricField<Type, fvPatchField, volMesh>> fvMeshSubset::interpolate ) ); GeometricField<Type, fvPatchField, volMesh>& resF = tresF.ref(); + resF.oriented() = vf.oriented(); // 2. Change the fvPatchFields to the correct type using a mapper @@ -180,8 +181,7 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate const fvMesh& sMesh, const labelList& patchMap, const labelList& cellMap, - const labelList& faceMap, - const bool negateIfFlipped + const labelList& faceMap ) { // 1. Create the complete field with dummy patch fields @@ -247,6 +247,7 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate ) ); GeometricField<Type, fvsPatchField, surfaceMesh>& resF = tresF.ref(); + resF.oriented() = vf.oriented(); // 2. Change the fvsPatchFields to the correct type using a mapper @@ -310,7 +311,7 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate { Type val = vf.internalField()[baseFacei]; - if (cellMap[fc[i]] == own[baseFacei] || !negateIfFlipped) + if (cellMap[fc[i]] == own[baseFacei] || !vf.oriented()()) { pfld[i] = val; } @@ -342,8 +343,7 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate template<class Type> tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate ( - const GeometricField<Type, fvsPatchField, surfaceMesh>& sf, - const bool negateIfFlipped + const GeometricField<Type, fvsPatchField, surfaceMesh>& sf ) const { return interpolate @@ -352,8 +352,7 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> fvMeshSubset::interpolate subMesh(), patchMap(), cellMap(), - faceMap(), - negateIfFlipped + faceMap() ); } @@ -423,6 +422,7 @@ fvMeshSubset::interpolate ) ); GeometricField<Type, pointPatchField, pointMesh>& resF = tresF.ref(); + resF.oriented() = vf.oriented(); // 2. Change the pointPatchFields to the correct type using a mapper @@ -532,6 +532,8 @@ tmp<DimensionedField<Type, volMesh>> fvMeshSubset::interpolate ) ); + tresF.ref().oriented() = df.oriented(); + return tresF; } diff --git a/src/dynamicMesh/fvMeshTools/fvMeshTools.C b/src/dynamicMesh/fvMeshTools/fvMeshTools.C index fd51c2af8886812250a8ef563578152e495729ea..ad06dcafca271349e9c4fadf3f2846afb11be261 100644 --- a/src/dynamicMesh/fvMeshTools/fvMeshTools.C +++ b/src/dynamicMesh/fvMeshTools/fvMeshTools.C @@ -477,14 +477,14 @@ Foam::autoPtr<Foam::fvMesh> Foam::fvMeshTools::newMesh slave++ ) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << patchEntries; } } else { // Receive patches - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster(Pstream::commsTypes::scheduled, Pstream::masterNo()); fromMaster >> patchEntries; } diff --git a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C index 912132391a6b1343bf7bb2c4ada37ce6d3692a93..3ef151d7396ad4fabe4c441a0eadb18f9c1f99ef 100644 --- a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C +++ b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.C @@ -218,10 +218,8 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const directionInfo&)"); + os.check(FUNCTION_NAME); return os; - } @@ -240,8 +238,7 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::directionInfo& wDist) ); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, directionInfo&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/dynamicMesh/meshCut/refineCell/refineCell.C b/src/dynamicMesh/meshCut/refineCell/refineCell.C index f5e4f585e5a17f881daee2048103d3eb5f2b27d9..d1e0d230a2adb56567c7325c50246124407b579a 100644 --- a/src/dynamicMesh/meshCut/refineCell/refineCell.C +++ b/src/dynamicMesh/meshCut/refineCell/refineCell.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,4 +94,3 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const refineCell& r) // ************************************************************************* // - diff --git a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C index 819ebc99e00fff66ce087e622470084d78aeeb2f..9776a08cf7101599fb356450e4e186cad39b02e9 100644 --- a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C +++ b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.C @@ -46,11 +46,11 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const wallNormalInfo&)"); + os.check(FUNCTION_NAME); return os; } + Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::wallNormalInfo& wDist) { if (is.format() == IOstream::ASCII) @@ -66,9 +66,9 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::wallNormalInfo& wDist) ); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, wallNormalInfo&)"); + is.check(FUNCTION_NAME); return is; } + // ************************************************************************* // diff --git a/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.C b/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.C index 0f3760654cb11e43358124b3f66d71f1799f9bbb..2e55e4a0ea3d5207d2ed38e28ec747593999d048 100644 --- a/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.C +++ b/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.C @@ -90,9 +90,13 @@ void Foam::meshSubsetHelper::correct(bool verbose) Foam::polyMesh::readUpdateState Foam::meshSubsetHelper::readUpdate() { - polyMesh::readUpdateState meshState = baseMesh_.readUpdate(); + const polyMesh::readUpdateState meshState = baseMesh_.readUpdate(); - if (meshState != polyMesh::UNCHANGED) + if + ( + meshState == polyMesh::TOPO_CHANGE + || meshState == polyMesh::TOPO_PATCH_CHANGE + ) { correct(true); } diff --git a/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.H b/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.H index 891e6d94a6ed625f6a4416203f7deebb9bdf80dc..f531535e79c7b00f251d82f04b6b104eb87ceaee 100644 --- a/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.H +++ b/src/dynamicMesh/meshSubsetHelper/meshSubsetHelper.H @@ -146,7 +146,7 @@ public: //- Update mesh subset void correct(bool verbose = false); - //- Read mesh + //- Read mesh. Correct on topo-change polyMesh::readUpdateState readUpdate(); diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C index 959e13a0bb714bcce698e7c6922067b173755d94..ee586e29690afa1c49d73def4f8a09f81bf7ce70 100644 --- a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C +++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -470,12 +470,12 @@ void Foam::motionSmootherAlgo::setDisplacementPatchFields if (patchSchedule[patchEvalI].init) { displacementBf[patchi] - .initEvaluate(Pstream::scheduled); + .initEvaluate(Pstream::commsTypes::scheduled); } else { displacementBf[patchi] - .evaluate(Pstream::scheduled); + .evaluate(Pstream::commsTypes::scheduled); } } } @@ -627,12 +627,12 @@ void Foam::motionSmootherAlgo::correctBoundaryConditions if (patchSchedule[patchEvalI].init) { displacementBf[patchi] - .initEvaluate(Pstream::blocking); + .initEvaluate(Pstream::commsTypes::blocking); } else { displacementBf[patchi] - .evaluate(Pstream::blocking); + .evaluate(Pstream::commsTypes::blocking); } } } @@ -648,12 +648,12 @@ void Foam::motionSmootherAlgo::correctBoundaryConditions if (patchSchedule[patchEvalI].init) { displacementBf[patchi] - .initEvaluate(Pstream::blocking); + .initEvaluate(Pstream::commsTypes::blocking); } else { displacementBf[patchi] - .evaluate(Pstream::blocking); + .evaluate(Pstream::commsTypes::blocking); } } } diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C index 89180f26db879bdbe2f4c4da209364c5f20782e0..fa48a7c10a526cb8ed80fb262c910f82f3896637 100644 --- a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C +++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -64,12 +64,12 @@ void Foam::motionSmootherAlgo::checkConstraints forAllReverse(bFld, patchi) { - bFld[patchi].initEvaluate(Pstream::blocking); // buffered + bFld[patchi].initEvaluate(Pstream::commsTypes::blocking); // buffered } forAllReverse(bFld, patchi) { - bFld[patchi].evaluate(Pstream::blocking); + bFld[patchi].evaluate(Pstream::commsTypes::blocking); } diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C index fd2fb3a9d205923c49bd544d22ca6f1417fc3829..e57fc35ee5ea00e25e3a149b963fa2528dcf2a13 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,7 @@ Foam::solidBodyMotionFunction::solidBodyMotionFunction : SBMFCoeffs_ ( - SBMFCoeffs.subDict + SBMFCoeffs.optionalSubDict ( word(SBMFCoeffs.lookup("solidBodyMotionFunction")) + "Coeffs" ) @@ -63,7 +63,7 @@ Foam::solidBodyMotionFunction::~solidBodyMotionFunction() bool Foam::solidBodyMotionFunction::read(const dictionary& SBMFCoeffs) { - SBMFCoeffs_ = SBMFCoeffs.subDict(type() + "Coeffs"); + SBMFCoeffs_ = SBMFCoeffs.optionalSubDict(type() + "Coeffs"); return true; } diff --git a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C index 943c227b87e1e224917eb8cdc7ae1bb6a00f6029..a3d8580554165bc93b2dcec69071a7a137663957 100644 --- a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C +++ b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,7 +85,7 @@ Foam::motionSolver::motionSolver : IOdictionary(stealRegistration(dict), dict), mesh_(mesh), - coeffDict_(dict.subDict(type + "Coeffs")) + coeffDict_(dict.optionalSubDict(type + "Coeffs")) {} @@ -104,7 +104,12 @@ Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New const IOdictionary& solverDict ) { - const word solverTypeName(solverDict.lookup("solver")); + const word solverTypeName + ( + solverDict.found("motionSolver") + ? solverDict.lookup("motionSolver") + : solverDict.lookup("solver") + ); Info<< "Selecting motion solver: " << solverTypeName << endl; @@ -227,7 +232,7 @@ bool Foam::motionSolver::read() { if (regIOobject::read()) { - coeffDict_ = subDict(type() + "Coeffs"); + coeffDict_ = optionalSubDict(type() + "Coeffs"); return true; } diff --git a/src/dynamicMesh/polyTopoChange/polyMeshModifier/polyMeshModifier.C b/src/dynamicMesh/polyTopoChange/polyMeshModifier/polyMeshModifier.C index ecad881894322f0808e183f47757433e04ece84d..13eb5c6ee94f8cde63cb3848b8a5fd3b9824202a 100644 --- a/src/dynamicMesh/polyTopoChange/polyMeshModifier/polyMeshModifier.C +++ b/src/dynamicMesh/polyTopoChange/polyMeshModifier/polyMeshModifier.C @@ -77,7 +77,7 @@ const Foam::polyTopoChanger& Foam::polyMeshModifier::topoChanger() const Foam::Ostream& Foam::operator<<(Ostream& os, const polyMeshModifier& pmm) { pmm.write(os); - os.check("Ostream& operator<<(Ostream& f, const polyMeshModifier& pmm)"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C index f804091922d686db01782f080e762cccc8ba0700..83d29c214c93ae3639630cafd8c1f502741d00ed 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C index f65a4972878a29ddd14ad629e46ab623573d1451..e68fb0b4b4e5fb2c931d541b5bd218ba6d1bbbd4 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1939,7 +1939,7 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh, const bool readHistory) polyMesh::meshSubDir, mesh_, IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), labelList(mesh_.nCells(), 0) ), @@ -1952,7 +1952,7 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh, const bool readHistory) polyMesh::meshSubDir, mesh_, IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), labelList(mesh_.nPoints(), 0) ), @@ -1965,7 +1965,7 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh, const bool readHistory) polyMesh::meshSubDir, mesh_, IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), dimensionedScalar("level0Edge", dimLength, getLevel0EdgeLength()) ), @@ -1978,9 +1978,10 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh, const bool readHistory) polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), - (readHistory ? mesh_.nCells() : 0) // All cells visible if not be read + // All cells visible if not read or readHistory = false + (readHistory ? mesh_.nCells() : 0) ), faceRemover_(mesh_, GREAT), // merge boundary faces wherever possible savedPointLevel_(0), @@ -2058,7 +2059,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), cellLevel ), @@ -2071,7 +2072,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), pointLevel ), @@ -2084,7 +2085,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), dimensionedScalar ( @@ -2102,7 +2103,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), history ), @@ -2166,7 +2167,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), cellLevel ), @@ -2179,7 +2180,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), pointLevel ), @@ -2192,7 +2193,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), dimensionedScalar ( @@ -2210,7 +2211,7 @@ Foam::hexRef8::hexRef8 polyMesh::meshSubDir, mesh_, IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), List<refinementHistory::splitCell8>(0), labelList(0), @@ -3070,7 +3071,7 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 // fMesh.time().timeName(), // fMesh, // IOobject::NO_READ, - // IOobject::AUTO_WRITE, + // IOobject::NO_WRITE, // false // ), // fMesh, diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C index fb4254a4e279682a0aea729877dfd9d7f3890a59..22599e045317372c52049be75cd9bc3c6b987328 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -336,7 +336,6 @@ void Foam::refinementHistory::freeSplitCell(const label index) } -// Mark entry in splitCells. Recursively mark its parent and subs. void Foam::refinementHistory::markSplit ( const label index, @@ -373,7 +372,6 @@ void Foam::refinementHistory::markSplit } -// Mark index and all its descendants void Foam::refinementHistory::mark ( const label val, @@ -739,7 +737,6 @@ Foam::refinementHistory::refinementHistory } -// Construct as copy Foam::refinementHistory::refinementHistory ( const IOobject& io, @@ -760,7 +757,6 @@ Foam::refinementHistory::refinementHistory } -// Construct from multiple Foam::refinementHistory::refinementHistory ( const IOobject& io, @@ -877,7 +873,6 @@ Foam::refinementHistory::refinementHistory } -// Construct from Istream Foam::refinementHistory::refinementHistory(const IOobject& io, Istream& is) : regIOobject(io), @@ -1154,7 +1149,6 @@ void Foam::refinementHistory::updateMesh(const mapPolyMesh& map) } -// Update numbering for subsetting void Foam::refinementHistory::subset ( const labelList& pointMap, @@ -1409,7 +1403,7 @@ void Foam::refinementHistory::distribute(const mapDistributePolyMesh& map) // Send to neighbours - OPstream toNbr(Pstream::blocking, proci); + OPstream toNbr(Pstream::commsTypes::blocking, proci); toNbr << newSplitCells << newVisibleCells; } @@ -1427,7 +1421,7 @@ void Foam::refinementHistory::distribute(const mapDistributePolyMesh& map) for (label proci = 0; proci < Pstream::nProcs(); proci++) { - IPstream fromNbr(Pstream::blocking, proci); + IPstream fromNbr(Pstream::commsTypes::blocking, proci); List<splitCell8> newSplitCells(fromNbr); labelList newVisibleCells(fromNbr); diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C index 0606d0bf2eec17c0d6b0d375f24b048ed65164cc..b60301b503491128279c133f2688a0ca008349b3 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1946,7 +1946,7 @@ void Foam::polyTopoChange::reorderCoupledFaces // Rotation on new faces. labelList rotation(faces_.size(), 0); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Send ordering forAll(boundary, patchi) diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.C index 66c70841ed76c3eb77a430de405f6b55f60ff402..e6411fb94ebe659209757c5382cab41ce9f39e15 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.C @@ -46,8 +46,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const refinementData&)"); + os.check(FUNCTION_NAME); return os; } @@ -67,8 +66,7 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, Foam::refinementData& wDist) ); } - // Check state of Istream - is.check("Istream& operator>>(Istream&, refinementData&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTopoChanger.C b/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTopoChanger.C index b2e5955f690fffeb68a194edcf58ed2c04263659..8023a5d98b2831e90471f498bcbdce7689b7a868 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTopoChanger.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTopoChanger.C @@ -74,7 +74,7 @@ void Foam::polyTopoChanger::readModifiers() } // Check state of IOstream - is.check("polyTopoChanger::readModifiers()"); + is.check(FUNCTION_NAME); close(); } diff --git a/src/edgeMesh/Make/files b/src/edgeMesh/Make/files deleted file mode 100644 index 0438dd204ecc140496f78f4c18a567406a645bd4..0000000000000000000000000000000000000000 --- a/src/edgeMesh/Make/files +++ /dev/null @@ -1,47 +0,0 @@ -em = . - -$(em)/edgeMesh.C -$(em)/edgeMeshIO.C -$(em)/edgeMeshNew.C - - -edgeMeshFormats = $(em)/edgeMeshFormats -$(edgeMeshFormats)/edgeMeshFormatsCore.C - -$(edgeMeshFormats)/edgeMesh/edgeMeshFormat.C -$(edgeMeshFormats)/edgeMesh/edgeMeshFormatRunTime.C - -$(edgeMeshFormats)/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C -$(edgeMeshFormats)/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C - - -$(edgeMeshFormats)/nas/NASedgeFormat.C -$(edgeMeshFormats)/nas/NASedgeFormatRunTime.C - -$(edgeMeshFormats)/obj/OBJedgeFormat.C -$(edgeMeshFormats)/obj/OBJedgeFormatRunTime.C - -$(edgeMeshFormats)/starcd/STARCDedgeFormat.C -$(edgeMeshFormats)/starcd/STARCDedgeFormatRunTime.C - -$(edgeMeshFormats)/vtk/VTKedgeFormat.C -$(edgeMeshFormats)/vtk/VTKedgeFormatRunTime.C - - -$(em)/featureEdgeMesh/featureEdgeMesh.C - -eem = $(em)/extendedEdgeMesh - -$(eem)/extendedEdgeMesh.C -$(eem)/extendedEdgeMeshNew.C - -$(eem)/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C -$(eem)/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C - -efm = $(eem)/extendedFeatureEdgeMesh - -$(efm)/extendedFeatureEdgeMesh.C - - - -LIB = $(FOAM_LIBBIN)/libedgeMesh diff --git a/src/edgeMesh/Make/options b/src/edgeMesh/Make/options deleted file mode 100644 index d488d6522e5113c40833de9767808d3422723db5..0000000000000000000000000000000000000000 --- a/src/edgeMesh/Make/options +++ /dev/null @@ -1,10 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude - -LIB_LIBS = \ - -ltriSurface \ - -lmeshTools \ - -lsurfMesh diff --git a/src/engine/ignition/ignitionSiteIO.C b/src/engine/ignition/ignitionSiteIO.C index 5e8c3d53d4080f1e975149a5421adfef8e8c9077..588a03898b720558489a98f8d601c39a902f93b7 100644 --- a/src/engine/ignition/ignitionSiteIO.C +++ b/src/engine/ignition/ignitionSiteIO.C @@ -58,7 +58,7 @@ Foam::ignitionSite::ignitionSite timeIndex_(db_.timeIndex()) { // Check state of Istream - is.check("ignitionSite::ignitionSite(Istream&)"); + is.check(FUNCTION_NAME); findIgnitionCells(mesh_); } @@ -94,7 +94,7 @@ Foam::ignitionSite::ignitionSite timeIndex_(db_.timeIndex()) { // Check state of Istream - is.check("ignitionSite::ignitionSite(Istream&)"); + is.check(FUNCTION_NAME); findIgnitionCells(mesh_); } diff --git a/src/fileFormats/sampledSetWriters/csv/csvSetWriter.C b/src/fileFormats/sampledSetWriters/csv/csvSetWriter.C index 8d69d32cb3773e25a77e11d6aa8d3416f552588e..e87fb0338c35836a236a76ecb11782622ae955b2 100644 --- a/src/fileFormats/sampledSetWriters/csv/csvSetWriter.C +++ b/src/fileFormats/sampledSetWriters/csv/csvSetWriter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -147,7 +147,7 @@ namespace Foam os << nl; } -} // end namespace +} template<class Type> @@ -183,17 +183,24 @@ void Foam::csvSetWriter<Type>::writeCoordHeader Ostream& os ) const { + const word axisName(points.axis()); + if (points.hasVectorAxis()) { - forAll(points, i) + for + ( + word::const_iterator iter = axisName.begin(); + iter != axisName.end(); + ++iter + ) { - os << points.axis()[i]; + os << *iter; writeSeparator(os); } } else { - os << points.axis(); + os << axisName; writeSeparator(os); } } diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 43f7545f9068163b8753bf849d275cad5c0fb6ee..1087c3e378540fe4988f956fed8b379fe1b177fe 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -238,7 +238,6 @@ fvMatrices/fvMatrices.C fvMatrices/fvScalarMatrix/fvScalarMatrix.C fvMatrices/solvers/MULES/MULES.C fvMatrices/solvers/MULES/CMULES.C -fvMatrices/solvers/MULES/IMULES.C fvMatrices/solvers/GAMGSymSolver/GAMGAgglomerations/faceAreaPairGAMGAgglomeration/faceAreaPairGAMGAgglomeration.C interpolation = interpolation/interpolation @@ -406,6 +405,7 @@ $(general)/constrainHbyA/constrainHbyA.C $(general)/adjustPhi/adjustPhi.C $(general)/bound/bound.C $(general)/CorrectPhi/correctUphiBCs.C +$(general)/pressureControl/pressureControl.C solutionControl = $(general)/solutionControl $(solutionControl)/solutionControl/solutionControl.C @@ -421,6 +421,7 @@ $(porosity)/porosityModel/IOporosityModelList.C $(porosity)/DarcyForchheimer/DarcyForchheimer.C $(porosity)/fixedCoeff/fixedCoeff.C $(porosity)/powerLaw/powerLaw.C +$(porosity)/solidification/solidification.C MRF = $(general)/MRF $(MRF)/MRFZone.C diff --git a/src/finiteVolume/Make/options b/src/finiteVolume/Make/options index 1c1990e5f3e5f624194a3d86a9cd7f3f30ce2aca..4ac4139c42af757a6d7bee668e4dee0bdb7f90a6 100644 --- a/src/finiteVolume/Make/options +++ b/src/finiteVolume/Make/options @@ -1,8 +1,7 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -lOpenFOAM \ - -ltriSurface \ -lmeshTools diff --git a/src/finiteVolume/cfdTools/general/CorrectPhi/CorrectPhi.C b/src/finiteVolume/cfdTools/general/CorrectPhi/CorrectPhi.C index f0fd91f4bae11a0b2cde9b2c601d9fff6a907f3b..fa4164c1b349333e86e440b6d02876fb5340dba2 100644 --- a/src/finiteVolume/cfdTools/general/CorrectPhi/CorrectPhi.C +++ b/src/finiteVolume/cfdTools/general/CorrectPhi/CorrectPhi.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,7 +102,11 @@ void Foam::CorrectPhi ); pcorrEqn.setReference(0, 0); - pcorrEqn.solve(); + + pcorrEqn.solve + ( + mesh.solver(pcorr.select(pimple.finalNonOrthogonalIter())) + ); if (pimple.finalNonOrthogonalIter()) { @@ -174,7 +178,10 @@ void Foam::CorrectPhi divRhoU ); - pcorrEqn.solve(); + pcorrEqn.solve + ( + mesh.solver(pcorr.select(pimple.finalNonOrthogonalIter())) + ); if (pimple.finalNonOrthogonalIter()) { diff --git a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C index 3e1c92a108a33ed42c2d5182c4ff65eb8e404747..9d7d2c2516ef1137cb90e1c9c9e69aa292bf9802 100644 --- a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C +++ b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,7 +61,7 @@ Foam::SRF::SRFModel::SRFModel mesh_(Urel_.mesh()), origin_("origin", dimLength, lookup("origin")), axis_(lookup("axis")), - SRFModelCoeffs_(subDict(type + "Coeffs")), + SRFModelCoeffs_(optionalSubDict(type + "Coeffs")), omega_(dimensionedVector("omega", dimless/dimTime, Zero)) { // Normalise the axis @@ -89,7 +89,7 @@ bool Foam::SRF::SRFModel::read() axis_ /= mag(axis_); // Re-read sub-model coeffs - SRFModelCoeffs_ = subDict(type() + "Coeffs"); + SRFModelCoeffs_ = optionalSubDict(type() + "Coeffs"); return true; } diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C index 0d24e83a7bfa2c010154a10e81eb4fb8e4158ac8..136fdda5959fff389f885509978bc9c8c12330e8 100644 --- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C +++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,7 +27,7 @@ License // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // -void Foam::setRefCell +bool Foam::setRefCell ( const volScalarField& field, const volScalarField& fieldRef, @@ -109,11 +109,17 @@ void Foam::setRefCell } refValue = readScalar(dict.lookup(refValueName)); + + return true; + } + else + { + return false; } } -void Foam::setRefCell +bool Foam::setRefCell ( const volScalarField& field, const dictionary& dict, @@ -122,7 +128,7 @@ void Foam::setRefCell const bool forceReference ) { - setRefCell(field, field, dict, refCelli, refValue, forceReference); + return setRefCell(field, field, dict, refCelli, refValue, forceReference); } diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H index 8a9d3d100a0578ad55f63f932e306d84b8ca42d3..1532c718e787feddfaa7ae6fcc5eabe6baee94d9 100644 --- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H +++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,8 +46,8 @@ namespace Foam //- If the field fieldRef needs referencing find the reference cell nearest // (in index) to the given cell looked-up for field, but which is not on a -// cyclic, symmetry or processor patch. -void setRefCell +// cyclic, symmetry or processor patch and return true, otherwise return false. +bool setRefCell ( const volScalarField& field, const volScalarField& fieldRef, @@ -59,8 +59,8 @@ void setRefCell //- If the field needs referencing find the reference cell nearest // (in index) to the given cell looked-up for field, but which is not on a -// cyclic, symmetry or processor patch. -void setRefCell +// cyclic, symmetry or processor patch and return true, otherwise return false. +bool setRefCell ( const volScalarField& field, const dictionary& dict, diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C index 1f51c3d00a6eddf8c81b3842fa54ada3c3a05e84..f63fd852bf2dd26a5e01ba5f792e2647b827514c 100644 --- a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C +++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,7 +52,7 @@ Foam::fv::option::option modelType_(modelType), mesh_(mesh), dict_(dict), - coeffs_(dict.subDict(modelType + "Coeffs")), + coeffs_(dict.optionalSubDict(modelType + "Coeffs")), active_(dict_.lookupOrDefault<Switch>("active", true)), fieldNames_(), applied_() @@ -75,6 +75,13 @@ Foam::autoPtr<Foam::fv::option> Foam::fv::option::New Info<< indent << "Selecting finite volume options model type " << modelType << endl; + const_cast<Time&>(mesh.time()).libs().open + ( + coeffs, + "libs", + dictionaryConstructorTablePtr_ + ); + dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(modelType); diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H index 506a868bc5bdfeb47e1e99a3ca05d2c0d293fa8a..cab111236859da53856dd0f6b222b3eb04d5a66f 100644 --- a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H +++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionIO.C b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionIO.C index 0f6c45322631cf68eced3c5b732abc3adf1374df..88730167b863aa358ce6d30ffa98ce916759c8e8 100644 --- a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionIO.C +++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,8 @@ void Foam::fv::option::writeData(Ostream& os) const bool Foam::fv::option::read(const dictionary& dict) { dict.readIfPresent("active", active_); - coeffs_ = dict.subDict(modelType_ + "Coeffs"); + + coeffs_ = dict.optionalSubDict(modelType_ + "Coeffs"); return true; } diff --git a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H index 4f1751e1b85214123358f38028f2defca0ceaf2f..ac0a6871bb3c01b48ab5a2719a74bd52983dd597 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H +++ b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::DarcyForchheimer + Foam::porosityModels::DarcyForchheimer Description Darcy-Forchheimer law porosity model, given by: diff --git a/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H index 4ccfa87da584d4a306aaa8ef282b2846eb6aee54..e9ca67327f38c675fa2888d642f4a7c57a62fd8c 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H +++ b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fixedCoeff + Foam::porosityModels::fixedCoeff Description Fixed coefficient form of porosity model diff --git a/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C b/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C index eb5550222e80d7c63f449db3f11413e8e5fc23ec..4ca403cdf07b49893ad3aa2cff7617ff0f288305 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C +++ b/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -97,7 +97,7 @@ Foam::porosityModel::porosityModel name_(name), mesh_(mesh), dict_(dict), - coeffs_(dict.subDict(modelType + "Coeffs")), + coeffs_(dict.optionalSubDict(modelType + "Coeffs")), active_(true), zoneName_(cellZoneName), cellZoneIDs_(), @@ -105,7 +105,7 @@ Foam::porosityModel::porosityModel { if (zoneName_ == word::null) { - dict.lookup("active") >> active_; + dict.readIfPresent("active", active_); dict_.lookup("cellZone") >> zoneName_; } @@ -258,8 +258,10 @@ bool Foam::porosityModel::writeData(Ostream& os) const bool Foam::porosityModel::read(const dictionary& dict) { - active_ = readBool(dict.lookup("active")); - coeffs_ = dict.subDict(type() + "Coeffs"); + dict.readIfPresent("active", active_); + + coeffs_ = dict.optionalSubDict(type() + "Coeffs"); + dict.lookup("cellZone") >> zoneName_; cellZoneIDs_ = mesh_.cellZones().findIndices(zoneName_); diff --git a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.C b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.C index e49e2a410ac2210e26e3c8e20edfe23d9cd00107..280b0e4ba27af5ed6d0f13eb84ae3c1059cd78a0 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.C +++ b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,14 +94,16 @@ void Foam::porosityModels::powerLaw::correct fvVectorMatrix& UEqn ) const { - const vectorField& U = UEqn.psi(); + const volVectorField& U = UEqn.psi(); const scalarField& V = mesh_.V(); scalarField& Udiag = UEqn.diag(); - + if (UEqn.dimensions() == dimForce) { - const volScalarField& rho = - mesh_.lookupObject<volScalarField>(rhoName_); + const volScalarField& rho = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(rhoName_, U.group()) + ); apply(Udiag, V, rho, U); } @@ -122,7 +124,7 @@ void Foam::porosityModels::powerLaw::correct const vectorField& U = UEqn.psi(); const scalarField& V = mesh_.V(); scalarField& Udiag = UEqn.diag(); - + apply(Udiag, V, rho, U); } @@ -133,12 +135,14 @@ void Foam::porosityModels::powerLaw::correct volTensorField& AU ) const { - const vectorField& U = UEqn.psi(); + const volVectorField& U = UEqn.psi(); if (UEqn.dimensions() == dimForce) { - const volScalarField& rho = - mesh_.lookupObject<volScalarField>(rhoName_); + const volScalarField& rho = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(rhoName_, U.group()) + ); apply(AU, rho, U); } diff --git a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H index f17a639e09eaa4a833d566496b1e4b65b1c4fb07..33db437908a020ecaf9d17da1aa525fe3c168cc2 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H +++ b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::powerLaw + Foam::porosityModels::powerLaw Description Power law porosity model, given by: @@ -37,7 +37,6 @@ Description C_1 | model exponent coefficient \endvartable - SourceFiles powerLaw.C powerLawTemplates.C diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C new file mode 100644 index 0000000000000000000000000000000000000000..68d3edcf774cab5822d157e55284aa0218558c06 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C @@ -0,0 +1,164 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "addToRunTimeSelectionTable.H" +#include "solidification.H" +#include "geometricOneField.H" +#include "fvMatrices.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace porosityModels + { + defineTypeNameAndDebug(solidification, 0); + addToRunTimeSelectionTable(porosityModel, solidification, mesh); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::porosityModels::solidification::solidification +( + const word& name, + const word& modelType, + const fvMesh& mesh, + const dictionary& dict, + const word& cellZoneName +) +: + porosityModel(name, modelType, mesh, dict, cellZoneName), + TName_(coeffs_.lookupOrDefault<word>("T", "T")), + alphaName_(coeffs_.lookupOrDefault<word>("alpha", "none")), + rhoName_(coeffs_.lookupOrDefault<word>("rho", "rho")), + D_(Function1<scalar>::New("D", coeffs_)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::porosityModels::solidification::~solidification() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::porosityModels::solidification::calcTransformModelData() +{} + + +void Foam::porosityModels::solidification::calcForce +( + const volVectorField& U, + const volScalarField& rho, + const volScalarField& mu, + vectorField& force +) const +{ + scalarField Udiag(U.size(), 0.0); + const scalarField& V = mesh_.V(); + + apply(Udiag, V, rho, U); + + force = Udiag*U; +} + + +void Foam::porosityModels::solidification::correct +( + fvVectorMatrix& UEqn +) const +{ + const volVectorField& U = UEqn.psi(); + const scalarField& V = mesh_.V(); + scalarField& Udiag = UEqn.diag(); + + if (UEqn.dimensions() == dimForce) + { + const volScalarField& rho = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(rhoName_, U.group()) + ); + + apply(Udiag, V, rho, U); + } + else + { + apply(Udiag, V, geometricOneField(), U); + } +} + + +void Foam::porosityModels::solidification::correct +( + fvVectorMatrix& UEqn, + const volScalarField& rho, + const volScalarField& mu +) const +{ + const volVectorField& U = UEqn.psi(); + const scalarField& V = mesh_.V(); + scalarField& Udiag = UEqn.diag(); + + apply(Udiag, V, rho, U); +} + + +void Foam::porosityModels::solidification::correct +( + const fvVectorMatrix& UEqn, + volTensorField& AU +) const +{ + const volVectorField& U = UEqn.psi(); + + if (UEqn.dimensions() == dimForce) + { + const volScalarField& rho = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(rhoName_, U.group()) + ); + + apply(AU, rho, U); + } + else + { + apply(AU, geometricOneField(), U); + } +} + + +bool Foam::porosityModels::solidification::writeData(Ostream& os) const +{ + os << indent << name_ << endl; + dict_.write(os); + + return true; +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H new file mode 100644 index 0000000000000000000000000000000000000000..119ba5680533c16dfadd90b3d3e8c5d90ee46198 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H @@ -0,0 +1,242 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::porosityModels::solidification + +Description + Simple solidification porosity model + + This is a simple approximation to solidification where the solid phase + is represented as a porous blockage with the drag-coefficient evaluated from + + \f[ + S = - \alpha \rho D(T) U + \f] + + where + \vartable + \alpha | Optional phase-fraction of solidifying phase + D(T) | User-defined drag-coefficient as function of temperature + \endvartable + + Note that the latent heat of solidification is not included and the + temperature is unchanged by the modelled change of phase. + + Example of the solidification model specification: + \verbatim + type solidification; + + solidificationCoeffs + { + // Solidify between 330K and 330.5K + D table + ( + (330.0 10000) // Solid below 330K + (330.5 0) // Liquid above 330.5K + ); + + // Optional phase-fraction of solidifying phase + alpha alpha.liquid; + + // Solidification porosity is isotropic + // use the global coordinate system + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation + { + type axesRotation; + e1 (1 0 0); + e2 (0 1 0); + } + } + } + \endverbatim + +SourceFiles + solidification.C + solidificationTemplates.C + +\*---------------------------------------------------------------------------*/ + +#ifndef solidification_H +#define solidification_H + +#include "porosityModel.H" +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace porosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class solidification Declaration +\*---------------------------------------------------------------------------*/ + +class solidification +: + public porosityModel +{ + // Private data + + //- Name of temperature field, default = "T" + word TName_; + + //- Name of optional phase-fraction field, default = "none" + word alphaName_; + + //- Name of density field, default = "rho" + word rhoName_; + + //- User-defined drag-coefficient as function of temperature + autoPtr<Function1<scalar>> D_; + + + // Private Member Functions + + //- Apply resistance + template<class AlphaFieldType, class RhoFieldType> + void apply + ( + scalarField& Udiag, + const scalarField& V, + const AlphaFieldType& alpha, + const RhoFieldType& rho, + const volVectorField& U + ) const; + + //- Apply resistance + template<class AlphaFieldType, class RhoFieldType> + void apply + ( + tensorField& AU, + const AlphaFieldType& alpha, + const RhoFieldType& rho, + const volVectorField& U + ) const; + + //- Apply resistance + template<class RhoFieldType> + void apply + ( + scalarField& Udiag, + const scalarField& V, + const RhoFieldType& rho, + const volVectorField& U + ) const; + + //- Apply resistance + template<class RhoFieldType> + void apply + ( + tensorField& AU, + const RhoFieldType& rho, + const volVectorField& U + ) const; + + //- Disallow default bitwise copy construct + solidification(const solidification&); + + //- Disallow default bitwise assignment + void operator=(const solidification&); + + +public: + + //- Runtime type information + TypeName("solidification"); + + //- Constructor + solidification + ( + const word& name, + const word& modelType, + const fvMesh& mesh, + const dictionary& dict, + const word& cellZoneName + ); + + //- Destructor + virtual ~solidification(); + + + // Member Functions + + //- Transform the model data wrt mesh changes + virtual void calcTransformModelData(); + + //- Calculate the porosity force + virtual void calcForce + ( + const volVectorField& U, + const volScalarField& rho, + const volScalarField& mu, + vectorField& force + ) const; + + //- Add resistance + virtual void correct(fvVectorMatrix& UEqn) const; + + //- Add resistance + virtual void correct + ( + fvVectorMatrix& UEqn, + const volScalarField& rho, + const volScalarField& mu + ) const; + + //- Add resistance + virtual void correct + ( + const fvVectorMatrix& UEqn, + volTensorField& AU + ) const; + + + // I-O + + //- Write + bool writeData(Ostream& os) const; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace porosityModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "solidificationTemplates.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C new file mode 100644 index 0000000000000000000000000000000000000000..d9ea04d59eb99dcbed77a68179efad455eb17fd7 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "volFields.H" +#include "geometricOneField.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class AlphaFieldType, class RhoFieldType> +void Foam::porosityModels::solidification::apply +( + scalarField& Udiag, + const scalarField& V, + const AlphaFieldType& alpha, + const RhoFieldType& rho, + const volVectorField& U +) const +{ + const volScalarField& T = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(TName_, U.group()) + ); + + forAll(cellZoneIDs_, zoneI) + { + const labelList& cells = mesh_.cellZones()[cellZoneIDs_[zoneI]]; + + forAll(cells, i) + { + const label celli = cells[i]; + Udiag[celli] += + V[celli]*alpha[celli]*rho[celli]*D_->value(T[celli]); + } + } +} + + +template<class AlphaFieldType, class RhoFieldType> +void Foam::porosityModels::solidification::apply +( + tensorField& AU, + const AlphaFieldType& alpha, + const RhoFieldType& rho, + const volVectorField& U +) const +{ + const volScalarField& T = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(TName_, U.group()) + ); + + forAll(cellZoneIDs_, zoneI) + { + const labelList& cells = mesh_.cellZones()[cellZoneIDs_[zoneI]]; + + forAll(cells, i) + { + const label celli = cells[i]; + AU[celli] += + tensor::I*alpha[celli]*rho[celli]*D_->value(T[celli]); + } + } +} + + +template<class RhoFieldType> +void Foam::porosityModels::solidification::apply +( + scalarField& Udiag, + const scalarField& V, + const RhoFieldType& rho, + const volVectorField& U +) const +{ + if (alphaName_ == "none") + { + return apply(Udiag, V, geometricOneField(), rho, U); + } + else + { + const volScalarField& alpha = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(alphaName_, U.group()) + ); + + return apply(Udiag, V, alpha, rho, U); + } +} + + +template<class RhoFieldType> +void Foam::porosityModels::solidification::apply +( + tensorField& AU, + const RhoFieldType& rho, + const volVectorField& U +) const +{ + if (alphaName_ == "none") + { + return apply(AU, geometricOneField(), rho, U); + } + else + { + const volScalarField& alpha = mesh_.lookupObject<volScalarField> + ( + IOobject::groupName(alphaName_, U.group()) + ); + + return apply(AU, alpha, rho, U); + } +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.C b/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.C new file mode 100644 index 0000000000000000000000000000000000000000..aca22e769907b6bfaec86482e1cfd11f62f32335 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.C @@ -0,0 +1,221 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "pressureControl.H" +#include "findRefCell.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::pressureControl::pressureControl +( + const volScalarField& p, + const volScalarField& rho, + const dictionary& dict, + const bool pRefRequired +) +: + refCell_(-1), + refValue_(0), + pMax_("pMax", dimPressure, 0), + pMin_("pMin", dimPressure, GREAT) +{ + bool pLimits = false; + + // Set the reference cell and value for closed domain simulations + if (pRefRequired && setRefCell(p, dict, refCell_, refValue_)) + { + pLimits = true; + + pMax_.value() = refValue_; + pMin_.value() = refValue_; + } + + if (dict.found("pMax") && dict.found("pMin")) + { + pMax_.value() = readScalar(dict.lookup("pMax")); + pMin_.value() = readScalar(dict.lookup("pMin")); + } + else + { + const volScalarField::Boundary& pbf = p.boundaryField(); + const volScalarField::Boundary& rhobf = rho.boundaryField(); + + scalar rhoRefMax = -GREAT; + scalar rhoRefMin = GREAT; + bool rhoLimits = false; + + forAll(pbf, patchi) + { + if (pbf[patchi].fixesValue()) + { + pLimits = true; + rhoLimits = true; + + pMax_.value() = max(pMax_.value(), max(pbf[patchi])); + pMin_.value() = min(pMin_.value(), min(pbf[patchi])); + + rhoRefMax = max(rhoRefMax, max(rhobf[patchi])); + rhoRefMin = min(rhoRefMin, min(rhobf[patchi])); + } + } + + reduce(rhoLimits, andOp<bool>()); + if (rhoLimits) + { + reduce(pMax_.value(), maxOp<scalar>()); + reduce(pMin_.value(), minOp<scalar>()); + + reduce(rhoRefMax, maxOp<scalar>()); + reduce(rhoRefMin, minOp<scalar>()); + } + + if (dict.found("pMax")) + { + pMax_.value() = readScalar(dict.lookup("pMax")); + } + else if (dict.found("pMaxFactor")) + { + if (!pLimits) + { + FatalIOErrorInFunction(dict) + << "'pMaxFactor' specified rather than 'pMax'" << nl + << " but the corresponding reference pressure cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMax' rather than 'pMaxFactor'" + << exit(FatalIOError); + } + + const scalar pMaxFactor(readScalar(dict.lookup("pMaxFactor"))); + pMax_ *= pMaxFactor; + } + else if (dict.found("rhoMax")) + { + // For backward-compatibility infer the pMax from rhoMax + + IOWarningInFunction(dict) + << "'rhoMax' specified rather than 'pMax' or 'pMaxFactor'" + << nl + << " This is supported for backward-compatibility but " + "'pMax' or 'pMaxFactor' are more reliable." << endl; + + if (!pLimits) + { + FatalIOErrorInFunction(dict) + << "'rhoMax' specified rather than 'pMax'" << nl + << " but the corresponding reference pressure cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMax' rather than 'rhoMax'" + << exit(FatalIOError); + } + + if (!rhoLimits) + { + FatalIOErrorInFunction(dict) + << "'rhoMax' specified rather than 'pMaxFactor'" << nl + << " but the corresponding reference density cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMaxFactor' rather than 'rhoMax'" + << exit(FatalIOError); + } + + dimensionedScalar rhoMax("rhoMax", dimDensity, dict); + + pMax_ *= max(rhoMax.value()/rhoRefMax, 1); + } + + if (dict.found("pMin")) + { + pMin_.value() = readScalar(dict.lookup("pMin")); + } + else if (dict.found("pMinFactor")) + { + if (!pLimits) + { + FatalIOErrorInFunction(dict) + << "'pMinFactor' specified rather than 'pMin'" << nl + << " but the corresponding reference pressure cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMin' rather than 'pMinFactor'" + << exit(FatalIOError); + } + + const scalar pMinFactor(readScalar(dict.lookup("pMinFactor"))); + pMin_ *= pMinFactor; + } + else if (dict.found("rhoMin")) + { + // For backward-compatibility infer the pMin from rhoMin + + IOWarningInFunction(dict) + << "'rhoMin' specified rather than 'pMin' or 'pMinFactor'" << nl + << " This is supported for backward-compatibility but" + "'pMin' or 'pMinFactor' are more reliable." << endl; + + if (!pLimits) + { + FatalIOErrorInFunction(dict) + << "'rhoMin' specified rather than 'pMin'" << nl + << " but the corresponding reference pressure cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMin' rather than 'rhoMin'" + << exit(FatalIOError); + } + + if (!rhoLimits) + { + FatalIOErrorInFunction(dict) + << "'rhoMin' specified rather than 'pMinFactor'" << nl + << " but the corresponding reference density cannot" + " be evaluated from the boundary conditions." << nl + << " Please specify 'pMinFactor' rather than 'rhoMin'" + << exit(FatalIOError); + } + + dimensionedScalar rhoMin("rhoMin", dimDensity, dict); + + pMin_ *= min(rhoMin.value()/rhoRefMin, 1); + } + } + + Info<< "pressureControl" << nl + << " pMax/pMin " << pMax_.value() << " " << pMin_.value() + << nl << endl; +} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void Foam::pressureControl::limit(volScalarField& p) const +{ + Info<< "pressureControl: p max/min " + << max(p).value() << " " + << min(p).value() << endl; + + p = max(p, pMin_); + p = min(p, pMax_); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.H b/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.H new file mode 100644 index 0000000000000000000000000000000000000000..61f510ac60301d489b3ec26522d04e005b6545aa --- /dev/null +++ b/src/finiteVolume/cfdTools/general/pressureControl/pressureControl.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::pressureControl + +Description + Provides controls for the pressure reference is closed-volume simulations + and a general method for limiting the pressure during the startup of + steady-state simulations. + +SourceFiles + pressureControlI.H + pressureControl.C + +\*---------------------------------------------------------------------------*/ + +#ifndef pressureControl_H +#define pressureControl_H + +#include "dimensionedScalar.H" +#include "volFieldsFwd.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class pressureControl Declaration +\*---------------------------------------------------------------------------*/ + +class pressureControl +{ + // Private data + + //- Optional cell in which the reference pressure is set + label refCell_; + + //- Optional pressure reference level + scalar refValue_; + + //- Pressure lower-limit + dimensionedScalar pMax_; + + //- Pressure upper-limit + dimensionedScalar pMin_; + + +public: + + // Constructors + + //- Construct from the SIMPLE/PIMPLE sub-dictionary + pressureControl + ( + const volScalarField& p, + const volScalarField& rho, + const dictionary& dict, + const bool pRefRequired = true + ); + + + // Member Functions + + //- Return the cell in which the reference pressure is set + inline label refCell() const; + + //- Return the pressure reference level + inline scalar refValue() const; + + //- Limit the pressure + void limit(volScalarField& p) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "pressureControlI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.C b/src/finiteVolume/cfdTools/general/pressureControl/pressureControlI.H similarity index 64% rename from src/meshTools/edgeFaceCirculator/edgeFaceCirculator.C rename to src/finiteVolume/cfdTools/general/pressureControl/pressureControlI.H index 40d52a2fba2bf708c222f4f21ddef7e94131051d..6548d43455d9b0137c67ec385fa2080a66f883da 100644 --- a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.C +++ b/src/finiteVolume/cfdTools/general/pressureControl/pressureControlI.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) 2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,23 +23,18 @@ License \*---------------------------------------------------------------------------*/ -#include "edgeFaceCirculator.H" -#include "primitiveMesh.H" -#include "nullObject.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -const Foam::edgeFaceCirculator Foam::edgeFaceCirculator::endConstIter -( - *reinterpret_cast<const primitiveMesh*> - ( - NullObject::nullObject.pointer() // nullptr dummy - ), - -1, // faceLabel - false, // ownerSide - -1, // index - false // isBoundaryEdge -); +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::label Foam::pressureControl::refCell() const +{ + return refCell_; +} + + +inline Foam::scalar Foam::pressureControl::refValue() const +{ + return refValue_; +} // ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C index 2622f94867b464b62a2672bfd448b5209a9ca053..e500ab75872fa4676acf2ca686e929150e1b644f 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C @@ -40,8 +40,9 @@ void Foam::pimpleControl::read() { solutionControl::read(false); - // Read solution controls const dictionary& pimpleDict = dict(); + + solveFlow_ = pimpleDict.lookupOrDefault<Switch>("solveFlow", true); nCorrPIMPLE_ = pimpleDict.lookupOrDefault<label>("nOuterCorrectors", 1); nCorrPISO_ = pimpleDict.lookupOrDefault<label>("nCorrectors", 1); turbOnFinalIterOnly_ = @@ -123,6 +124,7 @@ bool Foam::pimpleControl::criteriaSatisfied() Foam::pimpleControl::pimpleControl(fvMesh& mesh, const word& dictName) : solutionControl(mesh, dictName), + solveFlow_(true), nCorrPIMPLE_(0), nCorrPISO_(0), corrPISO_(0), diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H index b1ff49b6868985d694d0a833eb35a4dfc1b25d64..033ce84d2f54a6029712f74f7c49c584fc96402d 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H @@ -69,6 +69,9 @@ protected: // Solution controls + //- Flag to indicate whether to solve for the flow + bool solveFlow_; + //- Maximum number of PIMPLE correctors label nCorrPIMPLE_; @@ -131,22 +134,25 @@ public: //- PIMPLE loop virtual bool loop(); - //- Pressure corrector loop + //- Pressure corrector loop control inline bool correct(); - //- Helper function to identify when to store the intial residuals + //- Return true to store the intial residuals inline bool storeInitialResiduals() const; - //- Helper function to identify first PIMPLE (outer) iteration + //- Return true for first PIMPLE (outer) iteration inline bool firstIter() const; - //- Helper function to identify final PIMPLE (outer) iteration + //- Return true fore final PIMPLE (outer) iteration inline bool finalIter() const; - //- Helper function to identify final inner iteration + //- Return true for final inner iteration inline bool finalInnerIter() const; - //- Helper function to identify whether to solve for turbulence + //- Return true to solve for flow + inline bool solveFlow() const; + + //- Return true to solve for turbulence inline bool turbCorr() const; }; diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H index 2a777908b829697e691c76aaac2567316c7b2743..f6c6e0ce35fbd7bd100455ed0035f46ba28cb34b 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,6 +92,12 @@ inline bool Foam::pimpleControl::finalInnerIter() const } +inline bool Foam::pimpleControl::solveFlow() const +{ + return solveFlow_; +} + + inline bool Foam::pimpleControl::turbCorr() const { return !turbOnFinalIterOnly_ || finalIter(); diff --git a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H index 01af21c5fe02d79d7ba96e7eb3e1637109698103..236f4666f608406110afe0e8019c4e7ad4b0d797 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -122,19 +122,17 @@ public: // Member functions - // Evaluation functions + //- Return gradient at boundary + virtual tmp<Field<Type>> snGrad() const; - //- Return gradient at boundary - virtual tmp<Field<Type>> snGrad() const; - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); - //- Return face-gradient transform diagonal - virtual tmp<Field<Type>> snGradTransformDiag() const; + //- Return face-gradient transform diagonal + virtual tmp<Field<Type>> snGradTransformDiag() const; }; diff --git a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H index d40a605f74d50beded6cc93a2fa410d5df1cdb94..cdda48792bfda6f88edc44ecf048f2b59bb956d6 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -204,7 +204,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return face-gradient transform diagonal diff --git a/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H index f9eb61e28561d5e55f3e18bef42f6ce0d8993300..42c57a2a7fa0e96a05e35196ff086d516e2ef092 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/extrapolatedCalculated/extrapolatedCalculatedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -136,13 +136,11 @@ public: // Member functions - // Evaluation functions - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); }; diff --git a/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H index 622a52fcdea74faf091037ef4809722286a4fdc9..698a14312fd60b0cebc9df297ad17ea5c324aba0 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -198,7 +198,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return the matrix diagonal coefficients corresponding to the diff --git a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H index 1da39dc1989effaf956151cb864497d8e0be948d..b237174ab8c614c14a656995e494859231eabca8 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -242,7 +242,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return the matrix diagonal coefficients corresponding to the diff --git a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H index 5b29aa77b57a5cfa40c06bba59eba7300a123fa2..0a56dd30bf71c0344228354238c35483b7780c3e 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -172,14 +172,16 @@ public: //- Initialise the evaluation of the patch field virtual void initEvaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} //- Evaluate the patch field, sets Updated to false virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H index c8c1ec4b507e40eb67dea8f492ea6e8d9eefe81b..fa612fc0882c8b98c2ce9f92c722e8ab5f5aec1c 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -149,7 +149,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return the matrix diagonal coefficients corresponding to the diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C index b4241bb27109b85eded51c58f16226ca1441eda6..db36178e73e2ebb3430fb189f9c744fa9d1b287a 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,7 +64,7 @@ Foam::cyclicFvPatchField<Type>::cyclicFvPatchField << exit(FatalIOError); } - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C index 0b9335fb8f8543a4135e8a7a9db49b0c2b518169..124c42fb87e007f2d41777650cf6b4e8f54d95e1 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,7 +68,7 @@ Foam::cyclicACMIFvPatchField<Type>::cyclicACMIFvPatchField if (!dict.found("value") && this->coupled()) { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C index 7d8fec72c12e968fe1068b75143887ce007db5ad..50f0b5593832e021423b2443fff468d5189b379b 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ Foam::cyclicAMIFvPatchField<Type>::cyclicAMIFvPatchField if (!dict.found("value") && this->coupled()) { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C index 801d446627ed3f582e382e7b2e246a9243e55a8e..36705e2111c0b7dd19b5f4ddb71ac29fad2d4be6 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,7 +62,7 @@ Foam::jumpCyclicFvPatchField<Type>::jumpCyclicFvPatchField cyclicFvPatchField<Type>(p, iF, dict) { // Call this evaluation in derived classes - //this->evaluate(Pstream::blocking); + //this->evaluate(Pstream::commsTypes::blocking); } diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C index 2947bb5656f7c37579ac63bcb2d7943ccae58881..e22390f84a286746b12a1671c1c4558ea4e1b2fe 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,7 @@ Foam::jumpCyclicAMIFvPatchField<Type>::jumpCyclicAMIFvPatchField cyclicAMIFvPatchField<Type>(p, iF, dict) { // Call this evaluation in derived classes - //this->evaluate(Pstream::blocking); + //this->evaluate(Pstream::commsTypes::blocking); } diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C index 0a7c8e7bea5e07967a96a6d764f8088fad630d73..39b92ea77cda55e623b0b6d0104df835a20ec65c 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -225,14 +225,18 @@ void Foam::processorFvPatchField<Type>::initEvaluate { this->patchInternalField(sendBuf_); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. Receive into *this this->setSize(sendBuf_.size()); outstandingRecvRequest_ = UPstream::nRequests(); UIPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<char*>(this->begin()), this->byteSize(), @@ -243,7 +247,7 @@ void Foam::processorFvPatchField<Type>::initEvaluate outstandingSendRequest_ = UPstream::nRequests(); UOPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<const char*>(sendBuf_.begin()), this->byteSize(), @@ -267,7 +271,11 @@ void Foam::processorFvPatchField<Type>::evaluate { if (Pstream::parRun()) { - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. Received into *this @@ -318,7 +326,11 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate { this->patch().patchInternalField(psiInternal, scalarSendBuf_); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if (debug && !this->ready()) @@ -334,7 +346,7 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate outstandingRecvRequest_ = UPstream::nRequests(); UIPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<char*>(scalarReceiveBuf_.begin()), scalarReceiveBuf_.byteSize(), @@ -345,7 +357,7 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate outstandingSendRequest_ = UPstream::nRequests(); UOPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<const char*>(scalarSendBuf_.begin()), scalarSendBuf_.byteSize(), @@ -379,7 +391,11 @@ void Foam::processorFvPatchField<Type>::updateInterfaceMatrix const labelUList& faceCells = this->patch().faceCells(); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if @@ -437,7 +453,11 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate { this->patch().patchInternalField(psiInternal, sendBuf_); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if (debug && !this->ready()) @@ -453,7 +473,7 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate outstandingRecvRequest_ = UPstream::nRequests(); IPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<char*>(receiveBuf_.begin()), receiveBuf_.byteSize(), @@ -464,7 +484,7 @@ void Foam::processorFvPatchField<Type>::initInterfaceMatrixUpdate outstandingSendRequest_ = UPstream::nRequests(); OPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<const char*>(sendBuf_.begin()), sendBuf_.byteSize(), @@ -497,7 +517,11 @@ void Foam::processorFvPatchField<Type>::updateInterfaceMatrix const labelUList& faceCells = this->patch().faceCells(); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchScalarField.C index 40ba0865fce524ce15c54d0333ecf4a6aed45381..53ebbb18e2ef9c6792971e5d9c21ac4cede4332a 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,11 @@ void processorFvPatchField<scalar>::initInterfaceMatrixUpdate { this->patch().patchInternalField(psiInternal, scalarSendBuf_); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if (debug && !this->ready()) @@ -60,7 +64,7 @@ void processorFvPatchField<scalar>::initInterfaceMatrixUpdate outstandingRecvRequest_ = UPstream::nRequests(); UIPstream::read ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<char*>(scalarReceiveBuf_.begin()), scalarReceiveBuf_.byteSize(), @@ -71,7 +75,7 @@ void processorFvPatchField<scalar>::initInterfaceMatrixUpdate outstandingSendRequest_ = UPstream::nRequests(); UOPstream::write ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, procPatch_.neighbProcNo(), reinterpret_cast<const char*>(scalarSendBuf_.begin()), scalarSendBuf_.byteSize(), @@ -105,7 +109,11 @@ void processorFvPatchField<scalar>::updateInterfaceMatrix const labelUList& faceCells = this->patch().faceCells(); - if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) + if + ( + commsType == Pstream::commsTypes::nonBlocking + && !Pstream::floatTransfer + ) { // Fast path. if diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.C index a2e322b35f77a2f62a7969ba716587ac1e3ced21..4cc2a4d53c51cb97ef840c4ced0bc6b523db2193 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,7 +66,7 @@ Foam::processorCyclicFvPatchField<Type>::processorCyclicFvPatchField << exit(FatalIOError); } - if (Pstream::defaultCommsType == Pstream::scheduled) + if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { WarningInFunction << "Scheduled communication with split cyclics not supported." diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H index ab6057d9dee69cc45f48b652c651e897f2bf5e82..8ecb4c362738b9da584d9b4f3e60494554f88322 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -143,19 +143,17 @@ public: // Member functions - // Evaluation functions + //- Return gradient at boundary + virtual tmp<Field<Type>> snGrad() const; - //- Return gradient at boundary - virtual tmp<Field<Type>> snGrad() const; - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); - //- Return face-gradient transform diagonal - virtual tmp<Field<Type>> snGradTransformDiag() const; + //- Return face-gradient transform diagonal + virtual tmp<Field<Type>> snGradTransformDiag() const; }; diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H index eab75d121a2b29e6acb256489d33db7264552dd5..fec234b91953ad2a69999d5b0ad6494aba564351 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -138,19 +138,17 @@ public: // Member functions - // Evaluation functions + //- Return gradient at boundary + virtual tmp<Field<Type>> snGrad() const; - //- Return gradient at boundary - virtual tmp<Field<Type>> snGrad() const; - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); - //- Return face-gradient transform diagonal - virtual tmp<Field<Type>> snGradTransformDiag() const; + //- Return face-gradient transform diagonal + virtual tmp<Field<Type>> snGradTransformDiag() const; }; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H index e8f7453d4dcb7506d8fb1580de9ac20b0bbae0e5..df891131d46704f6dae0a7738414a0ed20ea921c 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -227,7 +227,7 @@ public: //- Evaluate the patch field, sets Updated to false virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking ); //- Write diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H index 37b20c9c45736bc4657444ef43a8cbdb422621dd..94caaee33165b5a7b6d8797f82baea3687d7ee7a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -239,7 +239,7 @@ public: // to false. virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking ); //- Write diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C index 8810b9f8a448714690dc1d273c7ea315260f8637..51ad29066f1b165dca9520d802a0b3b2e0830239 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -123,7 +123,7 @@ Foam::fanFvPatchField<Foam::scalar>::fanFvPatchField } else { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C index 13eba7efa00748075b369225ec94c5656e8c10ed..52764fc6a3d6a8fcc4abad4507bc80b3cb0754b9 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,7 @@ Foam::fixedJumpFvPatchField<Type>::fixedJumpFvPatchField } else { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C index 354a84bb2d59cc69eaa17599f8de650ccf6de36e..2229069a14dac4f0bcc98710c8cf9e05b91f0353 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJumpAMI/fixedJumpAMIFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,7 @@ Foam::fixedJumpAMIFvPatchField<Type>::fixedJumpAMIFvPatchField } else { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H index 93c11806223a539832127d4dd70daeb37e56b5b9..5b4771844374fb22121ed0f3a64e19d8f366355a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -194,7 +194,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return face-gradient transform diagonal diff --git a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C index 2c5d40f1709bef01dfc80f2f2b07b21441d26e08..8fe4162cc7d4ea78f2d9442cb8818d8c9d2e3cb5 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,7 @@ flowRateInletVelocityFvPatchVectorField } else { - evaluate(Pstream::blocking); + evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H index b4369b12bcec37538f8d0f00abb0965138e8c354..0800656d5ff9e4514fcdeae92cb4f3025b54959b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -169,14 +169,11 @@ public: // Member functions - // Evaluation functions - - //- Evaluate the patch field - virtual void evaluate - ( - const Pstream::commsTypes commsType=Pstream::blocking - ); - + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking + ); //- Write virtual void write(Ostream&) const; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H index 7b4916c136f35a0a5c74bd9025ed173fb2d93d6d..7b21872e098b063e5ad04d6c2539a2adc8bf2d8d 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -195,7 +195,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); //- Return face-gradient transform diagonal diff --git a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.H index a284712178d547af7dbe45caa25270718655bf35..a7c1516eb5d0bfb12407a7bfee81d6714a49d411 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/prghTotalPressure/prghTotalPressureFvPatchScalarField.H @@ -33,6 +33,9 @@ Description \f[ p_rgh = p - \rho g.(h - hRef) + \f] + + \f[ p = p0 - 0.5 \rho |U|^2 \f] diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C index 41ee0ebe634cc6a81534fea9429a23c1a9a80e93..5ba985a24e248f1771e28de3527077a7ed1f3b6a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -113,7 +113,7 @@ timeVaryingMappedFixedValueFvPatchField // by re-setting of fvatchfield::updated_ flag. This is // so if first use is in the next time step it retriggers // a new update. - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyIO.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyIO.C index cb5a49bbaee378daa0300d136819a3f126dc2277..a9009dc03fc95dcc9e22615a19d9c281a1f98dff 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyIO.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyIO.C @@ -39,7 +39,7 @@ Foam::eddy::eddy(Istream& is) c1_(readScalar(is)), dir1_(readLabel(is)) { - is.check("Foam::eddy::eddy(Foam::Istream&)"); + is.check(FUNCTION_NAME); } @@ -62,11 +62,7 @@ void Foam::eddy::operator=(const eddy& e) Foam::Istream& Foam::operator>>(Istream& is, eddy& e) { - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::eddy&)" - ); + is.check(FUNCTION_NAME); is >> e.patchFaceI_ >> e.position0_ @@ -77,23 +73,14 @@ Foam::Istream& Foam::operator>>(Istream& is, eddy& e) >> e.c1_ >> e.dir1_; - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::eddy&)" - ); - + is.check(FUNCTION_NAME); return is; } Foam::Ostream& Foam::operator<<(Ostream& os, const eddy& e) { - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::eddy&)" - ); + os.check(FUNCTION_NAME); os << e.patchFaceI_ << token::SPACE << e.position0_ << token::SPACE @@ -104,12 +91,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const eddy& e) << e.c1_ << token::SPACE << e.dir1_; - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::eddy&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C index 5449a6f5e7f795a20ca627c7736954bab3f26e4a..62957304cc0060e8ea42d8f4c5a0ce164bf4d8ca 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C @@ -673,7 +673,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::calcOverlappingProcEddies mapDistribute map(segmentI, sendMap.xfer(), constructMap.xfer()); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); for (label domain = 0; domain < Pstream::nProcs(); domain++) { diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C index 00f30731de9e16b09fae527a8c9460f33942b430..265bbf3ec484a8270947b3f9610b463671a42695 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,7 @@ Foam::uniformJumpFvPatchField<Type>::uniformJumpFvPatchField } else { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformJumpAMI/uniformJumpAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformJumpAMI/uniformJumpAMIFvPatchField.C index 61339e232ea07d38a9e2f3d7e08521c1f863ace9..12857efacb77f6007f34293f9db961ecc95e6065 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformJumpAMI/uniformJumpAMIFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformJumpAMI/uniformJumpAMIFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -75,7 +75,7 @@ Foam::uniformJumpAMIFvPatchField<Type>::uniformJumpAMIFvPatchField } else { - this->evaluate(Pstream::blocking); + this->evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C index f44f574a7c142b73df2e648dc5e5c32755c786e7..52bd26e80950583cc398602c9ef9a797ac66df56 100644 --- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C @@ -594,7 +594,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const fvPatchField<Type>& ptf) { ptf.write(os); - os.check("Ostream& operator<<(Ostream&, const fvPatchField<Type>&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H index 483b7f052905e1e8e3bcdb977320aec068f7bea4..da0953aeba9b018dbc643c7d59a1d0860725fc03 100644 --- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -438,14 +438,16 @@ public: //- Initialise the evaluation of the patch field virtual void initEvaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} //- Evaluate the patch field, sets Updated to false virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ); diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchFieldNew.C b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchFieldNew.C index 664f3ca2f28bc51fe9ed5217884f5e3e2662daae..bf62d071dc2469c1d99832e4ac8c62c85ea88645 100644 --- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchFieldNew.C +++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchFieldNew.C @@ -148,11 +148,7 @@ Foam::tmp<Foam::fvPatchField<Type>> Foam::fvPatchField<Type>::New typename dictionaryConstructorTable::iterator patchTypeCstrIter = dictionaryConstructorTablePtr_->find(p.type()); - if - ( - patchTypeCstrIter != dictionaryConstructorTablePtr_->end() - && patchTypeCstrIter() != cstrIter() - ) + if (patchTypeCstrIter.found() && patchTypeCstrIter() != cstrIter()) { FatalIOErrorInFunction ( diff --git a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C index cb0276cc7c49c4c9e8f395804ac7fa99a5155e6e..8a8c96244c34cd17bd23011729a7a3153eb74d63 100644 --- a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C +++ b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,6 +26,7 @@ License #include "IOobject.H" #include "dictionary.H" #include "fvMesh.H" +#include "surfaceMesh.H" #include "fvPatchFieldMapper.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -93,20 +94,15 @@ Foam::fvsPatchField<Type>::fvsPatchField } else { - FatalIOErrorInFunction - ( - dict - ) << "essential value entry not provided" + FatalIOErrorInFunction(dict) + << "essential 'value' entry not provided" << exit(FatalIOError); } } template<class Type> -Foam::fvsPatchField<Type>::fvsPatchField -( - const fvsPatchField<Type>& ptf -) +Foam::fvsPatchField<Type>::fvsPatchField(const fvsPatchField<Type>& ptf) : Field<Type>(ptf), patch_(ptf.patch_), @@ -149,12 +145,10 @@ void Foam::fvsPatchField<Type>::check(const fvsPatchField<Type>& ptf) const template<class Type> -void Foam::fvsPatchField<Type>::autoMap -( - const fvPatchFieldMapper& m -) +void Foam::fvsPatchField<Type>::autoMap(const fvPatchFieldMapper& m) { - Field<Type>::autoMap(m); + const bool oriented = internalField_.oriented()(); + Field<Type>::autoMap(m, oriented); } @@ -382,7 +376,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const fvsPatchField<Type>& ptf) { ptf.write(os); - os.check("Ostream& operator<<(Ostream&, const fvsPatchField<Type>&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H index 6c2f12a436fd076b98e9f031d9e88bdeb90b61ac..1b9f0aa2acaf3ca7a966c2dc0a6174256d26e295 100644 --- a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H +++ b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchField.H @@ -286,8 +286,7 @@ public: } //- Return dimensioned internal field reference - const DimensionedField<Type, surfaceMesh>& - internalField() const + const DimensionedField<Type, surfaceMesh>& internalField() const { return internalField_; } diff --git a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchFieldNew.C b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchFieldNew.C index 32c567f95d051852be424603dc310bbac09335cc..12af314f87581998f7e9af3380e269247ca2cb2d 100644 --- a/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchFieldNew.C +++ b/src/finiteVolume/fields/fvsPatchFields/fvsPatchField/fvsPatchFieldNew.C @@ -136,11 +136,7 @@ Foam::tmp<Foam::fvsPatchField<Type>> Foam::fvsPatchField<Type>::New typename dictionaryConstructorTable::iterator patchTypeCstrIter = dictionaryConstructorTablePtr_->find(p.type()); - if - ( - patchTypeCstrIter != dictionaryConstructorTablePtr_->end() - && patchTypeCstrIter() != cstrIter() - ) + if (patchTypeCstrIter.found() && patchTypeCstrIter() != cstrIter()) { FatalIOErrorInFunction ( diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C index fc31e4b1c5a0d72da1f798e9371a97cdf575ff28..71be26d88d1a16a688e6794f6457de155c3b6c5a 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,6 +27,7 @@ License #include "surfaceInterpolate.H" #include "fvcDiv.H" #include "fvMatrices.H" +#include "Constant.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -74,8 +75,7 @@ CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field template<class Type> template<class GeoField> -label CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>:: -startTimeIndex() const +label CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::startTimeIndex() const { return startTimeIndex_; } @@ -83,8 +83,7 @@ startTimeIndex() const template<class Type> template<class GeoField> -GeoField& CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>:: -operator()() +GeoField& CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::operator()() { return *this; } @@ -92,8 +91,10 @@ operator()() template<class Type> template<class GeoField> -void CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>:: -operator=(const GeoField& gf) +void CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::operator= +( + const GeoField& gf +) { GeoField::operator=(gf); } @@ -198,13 +199,13 @@ scalar CrankNicolsonDdtScheme<Type>::coef_ const DDt0Field<GeoField>& ddt0 ) const { - if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 0) + if (mesh().time().timeIndex() > ddt0.startTimeIndex()) { - return 1.0 + ocCoeff_; + return 1 + ocCoeff(); } else { - return 1.0; + return 1; } } @@ -216,13 +217,13 @@ scalar CrankNicolsonDdtScheme<Type>::coef0_ const DDt0Field<GeoField>& ddt0 ) const { - if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 1) + if (mesh().time().timeIndex() > ddt0.startTimeIndex() + 1) { - return 1.0 + ocCoeff_; + return 1 + ocCoeff(); } else { - return 1.0; + return 1; } } @@ -256,9 +257,9 @@ tmp<GeoField> CrankNicolsonDdtScheme<Type>::offCentre_ const GeoField& ddt0 ) const { - if (ocCoeff_ < 1.0) + if (ocCoeff() < 1) { - return ocCoeff_*ddt0; + return ocCoeff()*ddt0; } else { @@ -277,7 +278,70 @@ const FieldField<fvPatchField, Type>& ff } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +CrankNicolsonDdtScheme<Type>::CrankNicolsonDdtScheme(const fvMesh& mesh) +: + ddtScheme<Type>(mesh), + ocCoeff_(new Function1Types::Constant<scalar>("ocCoeff", 1)) +{ + // Ensure the old-old-time cell volumes are available + // for moving meshes + if (mesh.moving()) + { + mesh.V00(); + } +} + + +template<class Type> +CrankNicolsonDdtScheme<Type>::CrankNicolsonDdtScheme +( + const fvMesh& mesh, + Istream& is +) +: + ddtScheme<Type>(mesh, is) +{ + token firstToken(is); + + if (firstToken.isNumber()) + { + const scalar ocCoeff = firstToken.number(); + if (ocCoeff < 0 || ocCoeff > 1) + { + FatalIOErrorInFunction + ( + is + ) << "Off-centreing coefficient = " << ocCoeff + << " should be >= 0 and <= 1" + << exit(FatalIOError); + } + + ocCoeff_ = new Function1Types::Constant<scalar> + ( + "ocCoeff", + ocCoeff + ); + } + else + { + is.putBack(firstToken); + dictionary dict(is); + ocCoeff_ = Function1<scalar>::New("ocCoeff", dict); + } + + // Ensure the old-old-time cell volumes are available + // for moving meshes + if (mesh.moving()) + { + mesh.V00(); + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> tmp<GeometricField<Type, fvPatchField, volMesh>> @@ -368,7 +432,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -456,7 +520,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -546,7 +610,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -647,7 +711,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -773,7 +837,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt fvMatrix<Type>& fvm = tfvm.ref(); - scalar rDtCoef = rDtCoef_(ddt0).value(); + const scalar rDtCoef = rDtCoef_(ddt0).value(); fvm.diag() = rDtCoef*mesh().V(); vf.oldTime().oldTime(); @@ -782,7 +846,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -855,7 +919,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt ); fvMatrix<Type>& fvm = tfvm.ref(); - scalar rDtCoef = rDtCoef_(ddt0).value(); + const scalar rDtCoef = rDtCoef_(ddt0).value(); fvm.diag() = rDtCoef*rho.value()*mesh().V(); vf.oldTime().oldTime(); @@ -864,7 +928,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -937,7 +1001,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt ); fvMatrix<Type>& fvm = tfvm.ref(); - scalar rDtCoef = rDtCoef_(ddt0).value(); + const scalar rDtCoef = rDtCoef_(ddt0).value(); fvm.diag() = rDtCoef*rho.primitiveField()*mesh().V(); vf.oldTime().oldTime(); @@ -947,7 +1011,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -1028,7 +1092,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt ); fvMatrix<Type>& fvm = tfvm.ref(); - scalar rDtCoef = rDtCoef_(ddt0).value(); + const scalar rDtCoef = rDtCoef_(ddt0).value(); fvm.diag() = rDtCoef*alpha.primitiveField()*rho.primitiveField()*mesh().V(); vf.oldTime().oldTime(); @@ -1039,7 +1103,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt { if (evaluate(ddt0)) { - scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + const scalar rDtCoef0 = rDtCoef0_(ddt0).value(); ddt0.primitiveFieldRef() = ( @@ -1124,14 +1188,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = ddt0_<GeometricField<Type, fvPatchField, volMesh>> ( - "ddt0(" + U.name() + ')', + "ddtCorrDdt0(" + U.name() + ')', U.dimensions() ); DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 = ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>> ( - "ddt0(" + Uf.name() + ')', + "ddtCorrDdt0(" + Uf.name() + ')', Uf.dimensions() ); @@ -1185,16 +1249,17 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = ddt0_<GeometricField<Type, fvPatchField, volMesh>> ( - "ddt0(" + U.name() + ')', + "ddtCorrDdt0(" + U.name() + ')', U.dimensions() ); DDt0Field<fluxFieldType>& dphidt0 = ddt0_<fluxFieldType> ( - "ddt0(" + phi.name() + ')', + "ddtCorrDdt0(" + phi.name() + ')', phi.dimensions() ); + dphidt0.setOriented(); dimensionedScalar rDtCoef = rDtCoef_(ddt0); @@ -1254,14 +1319,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = ddt0_<GeometricField<Type, fvPatchField, volMesh>> ( - "ddt0(" + rho.name() + ',' + U.name() + ')', - U.dimensions() + "ddtCorrDdt0(" + rho.name() + ',' + U.name() + ')', + rho.dimensions()*U.dimensions() ); DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 = ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>> ( - "ddt0(" + Uf.name() + ')', + "ddtCorrDdt0(" + Uf.name() + ')', Uf.dimensions() ); @@ -1349,14 +1414,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = ddt0_<GeometricField<Type, fvPatchField, volMesh>> ( - "ddt0(" + rho.name() + ',' + U.name() + ')', - U.dimensions() + "ddtCorrDdt0(" + rho.name() + ',' + U.name() + ')', + rho.dimensions()*U.dimensions() ); DDt0Field<fluxFieldType>& dphidt0 = ddt0_<fluxFieldType> ( - "ddt0(" + phi.name() + ')', + "ddtCorrDdt0(" + phi.name() + ')', phi.dimensions() ); @@ -1439,6 +1504,8 @@ tmp<surfaceScalarField> CrankNicolsonDdtScheme<Type>::meshPhi dimVolume ); + meshPhi0.setOriented(); + if (evaluate(meshPhi0)) { meshPhi0 = diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H index 65b0cc6e7d2e38218d3e9831c5a4f3c6597f6e8c..331d2c5bbc110bbb57326b59967a9e801e4a08b0 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,13 +35,28 @@ Description geometries and it is necessary to "off-centre" the scheme to stabilize it while retaining greater temporal accuracy than the first-order Euler-implicit scheme. Off-centering is specified via the mandatory - coefficient in the range [0,1] following the scheme name e.g. + coefficient \c ocCoeff in the range [0,1] following the scheme name e.g. \verbatim ddtSchemes { default CrankNicolson 0.9; } \endverbatim + or with an optional "ramp" function to transition from the Euler scheme to + Crank-Nicolson over a initial period to avoid start-up problems, e.g. + \verbatim + ddtSchemes + { + default CrankNicolson + ocCoeff + { + type scale; + scale linearRamp; + duration 0.01; + value 0.9; + }; + } + \endverbatim With a coefficient of 1 the scheme is fully centred and second-order, with a coefficient of 0 the scheme is equivalent to Euler-implicit. A coefficient of 0.9 has been found to be suitable for a range of cases for @@ -79,6 +94,7 @@ SourceFiles #define CrankNicolsonDdtScheme_H #include "ddtScheme.H" +#include "Function1.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -140,8 +156,9 @@ class CrankNicolsonDdtScheme }; - //- Off-centering coefficient, 1 -> CN, less than one blends with EI - scalar ocCoeff_; + //- Off-centering coefficient function + // 1 -> CN, less than one blends with EI + autoPtr<Function1<scalar>> ocCoeff_; // Private Member Functions @@ -197,28 +214,10 @@ public: // Constructors //- Construct from mesh - CrankNicolsonDdtScheme(const fvMesh& mesh) - : - ddtScheme<Type>(mesh), - ocCoeff_(1.0) - {} + CrankNicolsonDdtScheme(const fvMesh& mesh); //- Construct from mesh and Istream - CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is) - : - ddtScheme<Type>(mesh, is), - ocCoeff_(readScalar(is)) - { - if (ocCoeff_ < 0 || ocCoeff_ > 1) - { - FatalIOErrorInFunction - ( - is - ) << "Off-centreing coefficient = " << ocCoeff_ - << " should be >= 0 and <= 1" - << exit(FatalIOError); - } - } + CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is); // Member Functions @@ -229,10 +228,10 @@ public: return fv::ddtScheme<Type>::mesh(); } - //- Return the off-centreing coefficient + //- Return the current off-centreing coefficient scalar ocCoeff() const { - return ocCoeff_; + return ocCoeff_->value(mesh().time().value()); } tmp<GeometricField<Type, fvPatchField, volMesh>> fvcDdt diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H index bfab0f7fc342d7e679b60fc00d743f112055980d..af321f143f2ae19111ffa4ab389d07b1f4d5f986 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,13 +92,27 @@ public: backwardDdtScheme(const fvMesh& mesh) : ddtScheme<Type>(mesh) - {} + { + // Ensure the old-old-time cell volumes are available + // for moving meshes + if (mesh.moving()) + { + mesh.V00(); + } + } //- Construct from mesh and Istream backwardDdtScheme(const fvMesh& mesh, Istream& is) : ddtScheme<Type>(mesh, is) - {} + { + // Ensure the old-old-time cell volumes are available + // for moving meshes + if (mesh.moving()) + { + mesh.V00(); + } + } // Member Functions diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C index 795fbff9759d98eed2020424d125062249f98ef4..5f372b1e841354886befc3aae8f968a04efa748d 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C @@ -115,6 +115,7 @@ gaussLaplacianScheme<Type, GType>::gammaSnGradCorr *vf.dimensions()*mesh.deltaCoeffs().dimensions() ) ); + tgammaSnGradCorr.ref().oriented() = SfGammaCorr.oriented(); for (direction cmpt = 0; cmpt < pTraits<Type>::nComponents; cmpt++) { diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C index ae7d0de4585474b8f04bd671b301a69e7c8964e8..5644e7a6b1a4998986354d967af12385b69e7307 100644 --- a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C +++ b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C @@ -124,6 +124,7 @@ snGradScheme<Type>::snGrad ) ); GeometricField<Type, fvsPatchField, surfaceMesh>& ssf = tsf.ref(); + ssf.setOriented(); // set reference to difference factors array const scalarField& deltaCoeffs = tdeltaCoeffs(); diff --git a/src/finiteVolume/functionObjects/volRegion/volRegion.C b/src/finiteVolume/functionObjects/volRegion/volRegion.C index b650a4785edd6c1c7900e10a51f9284464bf5029..ab2f65fcfb06a49e6075d78055be88f115255539 100644 --- a/src/finiteVolume/functionObjects/volRegion/volRegion.C +++ b/src/finiteVolume/functionObjects/volRegion/volRegion.C @@ -144,7 +144,7 @@ bool Foam::functionObjects::volRegion::read { FatalIOErrorInFunction(dict) << "Unknown region type. Valid region types are:" - << regionTypeNames_ + << regionTypeNames_.toc() << exit(FatalIOError); } } diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C index 4c2ffb5a1f18bc3f11a3f0be6a21833d98738ec2..db21f33d451d6fa4943cccbd21477e847654f434 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C @@ -892,6 +892,8 @@ flux() const GeometricField<Type, fvsPatchField, surfaceMesh>& fieldFlux = tfieldFlux.ref(); + fieldFlux.setOriented(); + for (direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++) { fieldFlux.primitiveFieldRef().replace @@ -2385,7 +2387,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const fvMatrix<Type>& fvm) << fvm.internalCoeffs_ << nl << fvm.boundaryCoeffs_ << endl; - os.check("Ostream& operator<<(Ostream&, fvMatrix<Type>&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C index b5f0a33533465ab8f3bd7ef16f23d54c3560fea8..c5b1637478836916bef4b15676217c5c1c460b95 100644 --- a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C +++ b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -117,7 +117,7 @@ Foam::solverPerformance Foam::fvMatrix<Foam::scalar>::fvSolver::solve scalarField totalSource(fvMat_.source()); fvMat_.addBoundarySource(totalSource, false); - // assign new solver controls + // Assign new solver controls solver_->read(solverControls); solverPerformance solverPerf = solver_->solve diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C index 41fc3b1194dd53da69b605a7680b9cc4761c319f..e55889eaa365b10d489af1396bcbb7e856d8b189 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -151,17 +151,17 @@ void Foam::MULES::limiterCorr const dictionary& MULEScontrols = mesh.solverDict(psi.name()); - label nLimiterIter + const label nLimiterIter ( readLabel(MULEScontrols.lookup("nLimiterIter")) ); - scalar smoothLimiter + const scalar smoothLimiter ( MULEScontrols.lookupOrDefault<scalar>("smoothLimiter", 0) ); - scalar extremaCoeff + const scalar extremaCoeff ( MULEScontrols.lookupOrDefault<scalar>("extremaCoeff", 0) ); @@ -207,8 +207,8 @@ void Foam::MULES::limiterCorr forAll(phiCorrIf, facei) { - label own = owner[facei]; - label nei = neighb[facei]; + const label own = owner[facei]; + const label nei = neighb[facei]; psiMaxn[own] = max(psiMaxn[own], psiIf[nei]); psiMinn[own] = min(psiMinn[own], psiIf[nei]); @@ -216,9 +216,9 @@ void Foam::MULES::limiterCorr psiMaxn[nei] = max(psiMaxn[nei], psiIf[own]); psiMinn[nei] = min(psiMinn[nei], psiIf[own]); - scalar phiCorrf = phiCorrIf[facei]; + const scalar phiCorrf = phiCorrIf[facei]; - if (phiCorrf > 0.0) + if (phiCorrf > 0) { sumPhip[own] += phiCorrf; mSumPhim[nei] += phiCorrf; @@ -249,24 +249,34 @@ void Foam::MULES::limiterCorr psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPNf[pFacei]); } } - else + else if (psiPf.fixesValue()) { forAll(phiCorrPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; psiMaxn[pfCelli] = max(psiMaxn[pfCelli], psiPf[pFacei]); psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPf[pFacei]); } } + else + { + forAll(phiCorrPf, pFacei) + { + const label pfCelli = pFaceCells[pFacei]; + + psiMaxn[pfCelli] = max(psiMaxn[pfCelli], psiMax); + psiMinn[pfCelli] = min(psiMinn[pfCelli], psiMin); + } + } forAll(phiCorrPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; - scalar phiCorrf = phiCorrPf[pFacei]; + const scalar phiCorrf = phiCorrPf[pFacei]; - if (phiCorrf > 0.0) + if (phiCorrf > 0) { sumPhip[pfCelli] += phiCorrf; } @@ -309,17 +319,17 @@ void Foam::MULES::limiterCorr for (int j=0; j<nLimiterIter; j++) { - sumlPhip = 0.0; - mSumlPhim = 0.0; + sumlPhip = 0; + mSumlPhim = 0; forAll(lambdaIf, facei) { - label own = owner[facei]; - label nei = neighb[facei]; + const label own = owner[facei]; + const label nei = neighb[facei]; - scalar lambdaPhiCorrf = lambdaIf[facei]*phiCorrIf[facei]; + const scalar lambdaPhiCorrf = lambdaIf[facei]*phiCorrIf[facei]; - if (lambdaPhiCorrf > 0.0) + if (lambdaPhiCorrf > 0) { sumlPhip[own] += lambdaPhiCorrf; mSumlPhim[nei] += lambdaPhiCorrf; @@ -344,7 +354,7 @@ void Foam::MULES::limiterCorr scalar lambdaPhiCorrf = lambdaPf[pFacei]*phiCorrfPf[pFacei]; - if (lambdaPhiCorrf > 0.0) + if (lambdaPhiCorrf > 0) { sumlPhip[pfCelli] += lambdaPhiCorrf; } @@ -379,7 +389,7 @@ void Foam::MULES::limiterCorr forAll(lambdaIf, facei) { - if (phiCorrIf[facei] > 0.0) + if (phiCorrIf[facei] > 0) { lambdaIf[facei] = min ( @@ -415,9 +425,9 @@ void Foam::MULES::limiterCorr forAll(lambdaPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; - if (phiCorrfPf[pFacei] > 0.0) + if (phiCorrfPf[pFacei] > 0) { lambdaPf[pFacei] = min(lambdaPf[pFacei], lambdap[pfCelli]); @@ -438,11 +448,11 @@ void Foam::MULES::limiterCorr forAll(lambdaPf, pFacei) { // Limit outlet faces only - if (phiPf[pFacei] > SMALL*SMALL) + if ((phiPf[pFacei] + phiCorrfPf[pFacei]) > SMALL*SMALL) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; - if (phiCorrfPf[pFacei] > 0.0) + if (phiCorrfPf[pFacei] > 0) { lambdaPf[pFacei] = min(lambdaPf[pFacei], lambdap[pfCelli]); diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/IMULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/IMULESTemplates.C deleted file mode 100644 index c636cc8033ac31082a597acf76c2239c4646ca51..0000000000000000000000000000000000000000 --- a/src/finiteVolume/fvMatrices/solvers/MULES/IMULESTemplates.C +++ /dev/null @@ -1,239 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can 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 "IMULES.H" -#include "gaussConvectionScheme.H" -#include "surfaceInterpolate.H" -#include "fvmDdt.H" -#include "fvmSup.H" -#include "fvcDiv.H" -#include "profiling.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace MULES -{ - template<class RhoType> - inline tmp<surfaceScalarField> interpolate(const RhoType& rho) - { - NotImplemented; - return tmp<surfaceScalarField>(nullptr); - } - - template<> - inline tmp<surfaceScalarField> interpolate(const volScalarField& rho) - { - return fvc::interpolate(rho); - } -} -} - - -template<class RhoType, class SpType, class SuType> -void Foam::MULES::implicitSolve -( - const RhoType& rho, - volScalarField& psi, - const surfaceScalarField& phi, - surfaceScalarField& phiPsi, - const SpType& Sp, - const SuType& Su, - const scalar psiMax, - const scalar psiMin -) -{ - addProfiling(solve, "MULES::implicitSolve"); - - const fvMesh& mesh = psi.mesh(); - - const dictionary& MULEScontrols = mesh.solverDict(psi.name()); - - label maxIter - ( - readLabel(MULEScontrols.lookup("maxIter")) - ); - - scalar maxUnboundedness - ( - readScalar(MULEScontrols.lookup("maxUnboundedness")) - ); - - scalar CoCoeff - ( - readScalar(MULEScontrols.lookup("CoCoeff")) - ); - - scalarField allCoLambda(mesh.nFaces()); - - { - slicedSurfaceScalarField CoLambda - ( - IOobject - ( - "CoLambda", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh, - dimless, - allCoLambda, - false // Use slices for the couples - ); - - if (phi.dimensions() == dimDensity*dimVelocity*dimArea) - { - tmp<surfaceScalarField> Cof = - mesh.time().deltaT()*mesh.surfaceInterpolation::deltaCoeffs() - *mag(phi/interpolate(rho))/mesh.magSf(); - - CoLambda == 1.0/max(CoCoeff*Cof, scalar(1)); - } - else - { - tmp<surfaceScalarField> Cof = - mesh.time().deltaT()*mesh.surfaceInterpolation::deltaCoeffs() - *mag(phi)/mesh.magSf(); - - CoLambda == 1.0/max(CoCoeff*Cof, scalar(1)); - } - } - - scalarField allLambda(allCoLambda); - //scalarField allLambda(mesh.nFaces(), 1.0); - - slicedSurfaceScalarField lambda - ( - IOobject - ( - "lambda", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh, - dimless, - allLambda, - false // Use slices for the couples - ); - - linear<scalar> CDs(mesh); - upwind<scalar> UDs(mesh, phi); - //fv::uncorrectedSnGrad<scalar> snGrads(mesh); - - fvScalarMatrix psiConvectionDiffusion - ( - fvm::ddt(rho, psi) - + fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi) - //- fv::gaussLaplacianScheme<scalar, scalar>(mesh, CDs, snGrads) - //.fvmLaplacian(Dpsif, psi) - - fvm::Sp(Sp, psi) - - Su - ); - - surfaceScalarField phiBD(psiConvectionDiffusion.flux()); - - surfaceScalarField& phiCorr = phiPsi; - phiCorr -= phiBD; - - for (label i=0; i<maxIter; i++) - { - if (i != 0 && i < 4) - { - allLambda = allCoLambda; - } - - limiter - ( - allLambda, - 1.0/mesh.time().deltaTValue(), - rho, - psi, - phiBD, - phiCorr, - Sp, - Su, - psiMax, - psiMin - ); - - solve - ( - psiConvectionDiffusion + fvc::div(lambda*phiCorr), - MULEScontrols - ); - - scalar maxPsiM1 = gMax(psi.primitiveField()) - 1.0; - scalar minPsi = gMin(psi.primitiveField()); - - scalar unboundedness = max(max(maxPsiM1, 0.0), -min(minPsi, 0.0)); - - if (unboundedness < maxUnboundedness) - { - break; - } - else - { - Info<< "MULES: max(" << psi.name() << " - 1) = " << maxPsiM1 - << " min(" << psi.name() << ") = " << minPsi << endl; - - phiBD = psiConvectionDiffusion.flux(); - - /* - word gammaScheme("div(phi,gamma)"); - word gammarScheme("div(phirb,gamma)"); - - const surfaceScalarField& phir = - mesh.lookupObject<surfaceScalarField>("phir"); - - phiCorr = - fvc::flux - ( - phi, - psi, - gammaScheme - ) - + fvc::flux - ( - -fvc::flux(-phir, scalar(1) - psi, gammarScheme), - psi, - gammarScheme - ) - - phiBD; - */ - } - } - - phiPsi = psiConvectionDiffusion.flux() + lambda*phiCorr; -} - - -// ************************************************************************* // diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C index 3272d81d9f9d88cb9784d07c4d452a5d7ba98238..4ad56866257f02236dac5904b1c1f3f5c7fd8b3f 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -185,16 +185,21 @@ void Foam::MULES::limiter const dictionary& MULEScontrols = mesh.solverDict(psi.name()); - label nLimiterIter + const label nLimiterIter ( MULEScontrols.lookupOrDefault<label>("nLimiterIter", 3) ); - scalar smoothLimiter + const scalar smoothLimiter ( MULEScontrols.lookupOrDefault<scalar>("smoothLimiter", 0) ); + const scalar extremaCoeff + ( + MULEScontrols.lookupOrDefault<scalar>("extremaCoeff", 0) + ); + const scalarField& psi0 = psi.oldTime(); const labelUList& owner = mesh.owner(); @@ -228,8 +233,7 @@ void Foam::MULES::limiter ); scalarField& lambdaIf = lambda; - surfaceScalarField::Boundary& lambdaBf = - lambda.boundaryFieldRef(); + surfaceScalarField::Boundary& lambdaBf = lambda.boundaryFieldRef(); scalarField psiMaxn(psiIf.size(), psiMin); scalarField psiMinn(psiIf.size(), psiMax); @@ -241,8 +245,8 @@ void Foam::MULES::limiter forAll(phiCorrIf, facei) { - label own = owner[facei]; - label nei = neighb[facei]; + const label own = owner[facei]; + const label nei = neighb[facei]; psiMaxn[own] = max(psiMaxn[own], psiIf[nei]); psiMinn[own] = min(psiMinn[own], psiIf[nei]); @@ -253,9 +257,9 @@ void Foam::MULES::limiter sumPhiBD[own] += phiBDIf[facei]; sumPhiBD[nei] -= phiBDIf[facei]; - scalar phiCorrf = phiCorrIf[facei]; + const scalar phiCorrf = phiCorrIf[facei]; - if (phiCorrf > 0.0) + if (phiCorrf > 0) { sumPhip[own] += phiCorrf; mSumPhim[nei] += phiCorrf; @@ -281,32 +285,42 @@ void Foam::MULES::limiter forAll(phiCorrPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; psiMaxn[pfCelli] = max(psiMaxn[pfCelli], psiPNf[pFacei]); psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPNf[pFacei]); } } - else + else if (psiPf.fixesValue()) { forAll(phiCorrPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; psiMaxn[pfCelli] = max(psiMaxn[pfCelli], psiPf[pFacei]); psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPf[pFacei]); } } + else + { + forAll(phiCorrPf, pFacei) + { + const label pfCelli = pFaceCells[pFacei]; + + psiMaxn[pfCelli] = max(psiMaxn[pfCelli], psiMax); + psiMinn[pfCelli] = min(psiMinn[pfCelli], psiMin); + } + } forAll(phiCorrPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; sumPhiBD[pfCelli] += phiBDPf[pFacei]; - scalar phiCorrf = phiCorrPf[pFacei]; + const scalar phiCorrf = phiCorrPf[pFacei]; - if (phiCorrf > 0.0) + if (phiCorrf > 0) { sumPhip[pfCelli] += phiCorrf; } @@ -317,8 +331,8 @@ void Foam::MULES::limiter } } - psiMaxn = min(psiMaxn, psiMax); - psiMinn = max(psiMinn, psiMin); + psiMaxn = min(psiMaxn + extremaCoeff*(psiMax - psiMin), psiMax); + psiMinn = max(psiMinn - extremaCoeff*(psiMax - psiMin), psiMin); if (smoothLimiter > SMALL) { @@ -376,17 +390,17 @@ void Foam::MULES::limiter for (int j=0; j<nLimiterIter; j++) { - sumlPhip = 0.0; - mSumlPhim = 0.0; + sumlPhip = 0; + mSumlPhim = 0; forAll(lambdaIf, facei) { - label own = owner[facei]; - label nei = neighb[facei]; + const label own = owner[facei]; + const label nei = neighb[facei]; scalar lambdaPhiCorrf = lambdaIf[facei]*phiCorrIf[facei]; - if (lambdaPhiCorrf > 0.0) + if (lambdaPhiCorrf > 0) { sumlPhip[own] += lambdaPhiCorrf; mSumlPhim[nei] += lambdaPhiCorrf; @@ -407,11 +421,11 @@ void Foam::MULES::limiter forAll(lambdaPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; - - scalar lambdaPhiCorrf = lambdaPf[pFacei]*phiCorrfPf[pFacei]; + const label pfCelli = pFaceCells[pFacei]; + const scalar lambdaPhiCorrf = + lambdaPf[pFacei]*phiCorrfPf[pFacei]; - if (lambdaPhiCorrf > 0.0) + if (lambdaPhiCorrf > 0) { sumlPhip[pfCelli] += lambdaPhiCorrf; } @@ -446,7 +460,7 @@ void Foam::MULES::limiter forAll(lambdaIf, facei) { - if (phiCorrIf[facei] > 0.0) + if (phiCorrIf[facei] > 0) { lambdaIf[facei] = min ( @@ -464,7 +478,6 @@ void Foam::MULES::limiter } } - forAll(lambdaBf, patchi) { fvsPatchScalarField& lambdaPf = lambdaBf[patchi]; @@ -482,9 +495,9 @@ void Foam::MULES::limiter forAll(lambdaPf, pFacei) { - label pfCelli = pFaceCells[pFacei]; + const label pfCelli = pFaceCells[pFacei]; - if (phiCorrfPf[pFacei] > 0.0) + if (phiCorrfPf[pFacei] > 0) { lambdaPf[pFacei] = min(lambdaPf[pFacei], lambdap[pfCelli]); @@ -496,33 +509,6 @@ void Foam::MULES::limiter } } } - else - { - const labelList& pFaceCells = - mesh.boundary()[patchi].faceCells(); - const scalarField& phiBDPf = phiBDBf[patchi]; - const scalarField& phiCorrPf = phiCorrBf[patchi]; - - forAll(lambdaPf, pFacei) - { - // Limit outlet faces only - if ((phiBDPf[pFacei] + phiCorrPf[pFacei]) > SMALL*SMALL) - { - label pfCelli = pFaceCells[pFacei]; - - if (phiCorrfPf[pFacei] > 0.0) - { - lambdaPf[pFacei] = - min(lambdaPf[pFacei], lambdap[pfCelli]); - } - else - { - lambdaPf[pFacei] = - min(lambdaPf[pFacei], lambdam[pfCelli]); - } - } - } - } } syncTools::syncFaceList(mesh, allLambda, minEqOp<scalar>()); @@ -549,6 +535,19 @@ void Foam::MULES::limit surfaceScalarField phiBD(upwind<scalar>(psi.mesh(), phi).flux(psi)); + surfaceScalarField::Boundary& phiBDBf = phiBD.boundaryFieldRef(); + const surfaceScalarField::Boundary& phiPsiBf = phiPsi.boundaryField(); + + forAll(phiBDBf, patchi) + { + fvsPatchScalarField& phiBDPf = phiBDBf[patchi]; + + if (!phiBDPf.coupled()) + { + phiBDPf = phiPsiBf[patchi]; + } + } + surfaceScalarField& phiCorr = phiPsi; phiCorr -= phiBD; diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/globalIndexStencils/CFCFaceToCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/globalIndexStencils/CFCFaceToCellStencil.C index 9348d33273cc5406f3b05dc254afb308af22f4dc..43e22bb860dde53359c9ee5c9335e9bba106fdd3 100644 --- a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/globalIndexStencils/CFCFaceToCellStencil.C +++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/globalIndexStencils/CFCFaceToCellStencil.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,9 +71,7 @@ void Foam::CFCFaceToCellStencil::calcFaceBoundaryData } } else if (isA<emptyPolyPatch>(pp)) - { - // Do nothing. - } + {} else { // Do nothing since face itself already in stencil diff --git a/src/finiteVolume/fvMesh/fvMesh.C b/src/finiteVolume/fvMesh/fvMesh.C index 544f66035f7e62a3531362c036a7378b66491e84..6b071d913198021a89ae1fb8662e569cc5df1857 100644 --- a/src/finiteVolume/fvMesh/fvMesh.C +++ b/src/finiteVolume/fvMesh/fvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -267,7 +267,7 @@ Foam::fvMesh::fvMesh(const IOobject& io) InfoInFunction << "Constructing fvMesh from IOobject" << endl; } - // Check the existance of the cell volumes and read if present + // Check the existence of the cell volumes and read if present // and set the storage of V00 if (isFile(time().timePath()/"V0")) { @@ -288,7 +288,7 @@ Foam::fvMesh::fvMesh(const IOobject& io) V00(); } - // Check the existance of the mesh fluxes, read if present and set the + // Check the existence of the mesh fluxes, read if present and set the // mesh to be moving if (isFile(time().timePath()/"meshPhi")) { diff --git a/src/finiteVolume/fvMesh/fvMeshGeometry.C b/src/finiteVolume/fvMesh/fvMeshGeometry.C index a05569849f22117a41c7b234fa8f6a5981c60fa0..c530ee0a9a0c8032062d4bf68e7f3584993c39b8 100644 --- a/src/finiteVolume/fvMesh/fvMeshGeometry.C +++ b/src/finiteVolume/fvMesh/fvMeshGeometry.C @@ -67,6 +67,8 @@ void Foam::fvMesh::makeSf() const dimArea, faceAreas() ); + + SfPtr_->setOriented(); } @@ -271,8 +273,7 @@ const Foam::volScalarField::Internal& Foam::fvMesh::V00() const } -Foam::tmp<Foam::volScalarField::Internal> -Foam::fvMesh::Vsc() const +Foam::tmp<Foam::volScalarField::Internal> Foam::fvMesh::Vsc() const { if (moving() && time().subCycling()) { @@ -300,8 +301,7 @@ Foam::fvMesh::Vsc() const } -Foam::tmp<Foam::volScalarField::Internal> -Foam::fvMesh::Vsc0() const +Foam::tmp<Foam::volScalarField::Internal> Foam::fvMesh::Vsc0() const { if (moving() && time().subCycling()) { @@ -400,6 +400,7 @@ Foam::tmp<Foam::surfaceVectorField> Foam::fvMesh::delta() const ) ); surfaceVectorField& delta = tdelta.ref(); + delta.setOriented(); const volVectorField& C = this->C(); const labelUList& owner = this->owner(); @@ -410,8 +411,7 @@ Foam::tmp<Foam::surfaceVectorField> Foam::fvMesh::delta() const delta[facei] = C[neighbour[facei]] - C[owner[facei]]; } - surfaceVectorField::Boundary& deltabf = - delta.boundaryFieldRef(); + surfaceVectorField::Boundary& deltabf = delta.boundaryFieldRef(); forAll(deltabf, patchi) { @@ -438,6 +438,8 @@ const Foam::surfaceScalarField& Foam::fvMesh::phi() const (*phiPtr_) = dimensionedScalar("0", dimVolume/dimTime, 0.0); } + phiPtr_->setOriented(); + return *phiPtr_; } diff --git a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C index 78f25810e5ce1b1bcd2921d25394c7ef63abe225..9e0826340a13519d2315a1aac98a03a83510cd94 100644 --- a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C +++ b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::patchDistMethods::advectionDiffusion::advectionDiffusion ) : patchDistMethod(mesh, patchIDs), - coeffs_(dict.subDict(type() + "Coeffs")), + coeffs_(dict.optionalSubDict(type() + "Coeffs")), pdmPredictor_ ( patchDistMethod::New diff --git a/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvSurfaceField.H b/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvSurfaceField.H index 40dfd16f7918cda1e55d4621080764141330fb39..d1f21db48ae9c7a7fcead0390be5c84498a42329 100644 --- a/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvSurfaceField.H +++ b/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvSurfaceField.H @@ -48,7 +48,7 @@ public: void operator() ( - Field<Type>& field, + DimensionedField<Type, surfaceMesh>& field, const MeshMapper& mapper ) const; }; @@ -57,7 +57,7 @@ public: template<class Type, class MeshMapper> void MapInternalField<Type, MeshMapper, surfaceMesh>::operator() ( - Field<Type>& field, + DimensionedField<Type, surfaceMesh>& field, const MeshMapper& mapper ) const { @@ -69,16 +69,22 @@ void MapInternalField<Type, MeshMapper, surfaceMesh>::operator() << abort(FatalError); } - field.autoMap(mapper.surfaceMap()); + // Passing in oriented flag so that oriented fields (e.g. phi) are negated + // if flipped. Un-oriented fields, e.g U interpolated to faces (Uf) are not + // touched + field.autoMap(mapper.surfaceMap(), field.oriented()()); - // Flip the flux - const labelList flipFaces = mapper.surfaceMap().flipFaceFlux().toc(); - - forAll(flipFaces, i) + if (field.oriented()()) { - if (flipFaces[i] < field.size()) + // Flip the flux + const labelList flipFaces = mapper.surfaceMap().flipFaceFlux().toc(); + + forAll(flipFaces, i) { - field[flipFaces[i]] *= -1.0; + if (flipFaces[i] < field.size()) + { + field[flipFaces[i]] *= -1.0; + } } } } diff --git a/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvVolField.H b/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvVolField.H index db8c9ce72b83df1d94023836bf9ca62f4709b434..f23517342fc83625915224a4f17dfa74643e6213 100644 --- a/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvVolField.H +++ b/src/finiteVolume/interpolation/mapping/fvFieldMappers/MapFvVolField.H @@ -48,7 +48,7 @@ public: void operator() ( - Field<Type>& field, + DimensionedField<Type, volMesh>& field, const MeshMapper& mapper ) const; }; @@ -57,7 +57,7 @@ public: template<class Type, class MeshMapper> void MapInternalField<Type, MeshMapper, volMesh>::operator() ( - Field<Type>& field, + DimensionedField<Type, volMesh>& field, const MeshMapper& mapper ) const { diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolation/surfaceInterpolation.C b/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolation/surfaceInterpolation.C index 6e8f8bc7d459c0eedc7c03377d58484839478849..f13c646316b1ec18efafad56511002b4e62560fa 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolation/surfaceInterpolation.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolation/surfaceInterpolation.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -73,8 +73,7 @@ Foam::surfaceInterpolation::~surfaceInterpolation() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::surfaceScalarField& -Foam::surfaceInterpolation::weights() const +const Foam::surfaceScalarField& Foam::surfaceInterpolation::weights() const { if (!weights_) { @@ -85,8 +84,7 @@ Foam::surfaceInterpolation::weights() const } -const Foam::surfaceScalarField& -Foam::surfaceInterpolation::deltaCoeffs() const +const Foam::surfaceScalarField& Foam::surfaceInterpolation::deltaCoeffs() const { if (!deltaCoeffs_) { @@ -156,11 +154,12 @@ void Foam::surfaceInterpolation::makeWeights() const dimless ); surfaceScalarField& weights = *weights_; + weights.setOriented(); // Set local references to mesh data - // (note that we should not use fvMesh sliced fields at this point yet - // since this causes a loop when generating weighting factors in - // coupledFvPatchField evaluation phase) + // Note that we should not use fvMesh sliced fields at this point yet + // since this causes a loop when generating weighting factors in + // coupledFvPatchField evaluation phase const labelUList& owner = mesh_.owner(); const labelUList& neighbour = mesh_.neighbour(); @@ -174,7 +173,7 @@ void Foam::surfaceInterpolation::makeWeights() const forAll(owner, facei) { // Note: mag in the dot-product. - // For all valid meshes, the non-orthogonality will be less that + // For all valid meshes, the non-orthogonality will be less than // 90 deg and the dot-product will be positive. For invalid // meshes (d & s <= 0), this will stabilise the calculation // but the result will be poor. @@ -183,8 +182,7 @@ void Foam::surfaceInterpolation::makeWeights() const w[facei] = SfdNei/(SfdOwn + SfdNei); } - surfaceScalarField::Boundary& wBf = - weights.boundaryFieldRef(); + surfaceScalarField::Boundary& wBf = weights.boundaryFieldRef(); forAll(mesh_.boundary(), patchi) { @@ -228,6 +226,7 @@ void Foam::surfaceInterpolation::makeDeltaCoeffs() const dimless/dimLength ); surfaceScalarField& deltaCoeffs = *deltaCoeffs_; + deltaCoeffs.setOriented(); // Set local references to mesh data @@ -278,6 +277,7 @@ void Foam::surfaceInterpolation::makeNonOrthDeltaCoeffs() const dimless/dimLength ); surfaceScalarField& nonOrthDeltaCoeffs = *nonOrthDeltaCoeffs_; + nonOrthDeltaCoeffs.setOriented(); // Set local references to mesh data @@ -342,6 +342,7 @@ void Foam::surfaceInterpolation::makeNonOrthCorrectionVectors() const dimless ); surfaceVectorField& corrVecs = *nonOrthCorrectionVectors_; + corrVecs.setOriented(); // Set local references to mesh data const volVectorField& C = mesh_.C(); diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationScheme.C b/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationScheme.C index 089d21bee2fae6ad72b7dcf9fd97127d06413a6a..0fbf63650b1034e24cca8fe46fcfb9791a6965fa 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationScheme.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationScheme.C @@ -311,6 +311,8 @@ Foam::surfaceInterpolationScheme<Type>::dotInterpolate tlambdas.clear(); +// tsf.ref().oriented() = Sf.oriented(); + return tsf; } @@ -363,6 +365,8 @@ Foam::surfaceInterpolationScheme<Type>::dotInterpolate > > tsf = dotInterpolate(Sf, vf, weights(vf)); + tsf.ref().oriented() = Sf.oriented(); + if (corrected()) { tsf.ref() += Sf & correction(vf); @@ -397,6 +401,7 @@ Foam::surfaceInterpolationScheme<Type>::dotInterpolate surfaceMesh > > tSfDotinterpVf = dotInterpolate(Sf, tvf()); + tvf.clear(); return tSfDotinterpVf; } diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C index 47d9ab90d97a8d9273a09248469bcb286716a814..cd4090a7c85109884bf080a60f1df67e63b22e3a 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -233,7 +233,16 @@ void Foam::pointConstraints::makePatchPatchAddressing() // Allocate new constraint if (patchPatchPoints.size() <= pppi) { + // Check if not enough space. This + // can occasionally happen if -coupled points connect + // to the inside of a patch -these coupled points also + // carry a constraint patchPatchPoints.setSize(pppi+100); + patchPatchPointConstraints_.setSize + ( + pppi+100, + pointConstraint() + ); } patchPatchPointSet.insert(meshPointi, pppi); patchPatchPoints[pppi] = meshPointi; diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C index 46d79abafb3734f2b0a31369849ee79d0b5cbf2e..92830410264dd6a29987aa213866d836436bbf3d 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -99,7 +99,7 @@ void Foam::volPointInterpolation::addSeparated refCast<coupledPointPatchField<Type>> (pfbf[patchi]).initSwapAddSeparated ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, pfi ); } @@ -115,7 +115,7 @@ void Foam::volPointInterpolation::addSeparated refCast<coupledPointPatchField<Type>> (pfbf[patchi]).swapAddSeparated ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, pfi ); } diff --git a/src/functionObjects/field/externalCoupled/externalCoupled.C b/src/functionObjects/field/externalCoupled/externalCoupled.C index d56174a81e4d4a3f4e0a13ef7ad5689f7117bef6..ae04ca981fce4414136837b522ac557a69d7e1f9 100644 --- a/src/functionObjects/field/externalCoupled/externalCoupled.C +++ b/src/functionObjects/field/externalCoupled/externalCoupled.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -322,7 +322,7 @@ void Foam::functionObjects::externalCoupled::readColumns // Get sizes for all processors const globalIndex globalFaces(nRows); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); if (Pstream::master()) { string line; @@ -391,7 +391,7 @@ void Foam::functionObjects::externalCoupled::readLines // Get sizes for all processors const globalIndex globalFaces(nRows); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); if (Pstream::master()) { diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H index a13c46aee490aab7e9685b029321753cb0ec1a7b..0a9f39bd2f2ac6edb03b74eb682fc3d2a42eeadf 100644 --- a/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H +++ b/src/functionObjects/field/externalCoupled/externalCoupledTemperatureMixed/externalCoupledTemperatureMixedFvPatchScalarField.H @@ -32,40 +32,52 @@ Description application. Values are transferred as plain text files, where OpenFOAM data is written as: + \verbatim # Patch: \<patch name\> \<magSf1\> \<value1\> \<qDot1\> \<htc1\> \<magSf2\> \<value2\> \<qDot2\> \<htc2\> \<magSf3\> \<value3\> \<qDot3\> \<htc2\> ... \<magSfN\> \<valueN\> \<qDotN\> \<htcN\> + \endverbatim and received as the constituent pieces of the `mixed' condition, i.e. + \verbatim # Patch: \<patch name\> \<value1\> \<gradient1\> \<valueFracion1\> \<value2\> \<gradient2\> \<valueFracion2\> \<value3\> \<gradient3\> \<valueFracion3\> ... \<valueN\> \<gradientN\> \<valueFracionN\> + \endverbatim Data is sent/received as a single file for all patches from the directory + \verbatim $FOAM_CASE/\<commsDir\> + \endverbatim At start-up, the boundary creates a lock file, i.e.. + \verbatim OpenFOAM.lock + \endverbatim ... to signal the external source to wait. During the boundary condition update, boundary values are written to file, e.g. + \verbatim \<fileName\>.out + \endverbatim The lock file is then removed, instructing the external source to take control of the program execution. When ready, the external program should create the return values, e.g. to file + \verbatim \<fileName\>.in + \endverbatim ... and then re-instate the lock file. The boundary condition will then read the return values, and pass program execution back to OpenFOAM. diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C index 90d6fc3b06b2bddf5c72b22fcad276c6a0b66c50..84f092836d3ff486d809eb63516f46ef637e9f1e 100644 --- a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C +++ b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -438,14 +438,24 @@ bool Foam::functionObjects::externalCoupled::writeData for (label proci = 1; proci < Pstream::nProcs(); proci++) { - IPstream fromSlave(Pstream::scheduled, proci); + IPstream fromSlave + ( + Pstream::commsTypes::scheduled, + proci + ); + string str(fromSlave); masterFilePtr() << str.c_str(); } } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); + toMaster << os.str(); } } diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.C b/src/functionObjects/field/fieldAverage/fieldAverage.C index 5ed8b6634b1a7a763a979c8bd16c2f32010d4ab9..be75c66f09be20e5587d34cac4acf5708f65369c 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverage.C +++ b/src/functionObjects/field/fieldAverage/fieldAverage.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -67,6 +67,27 @@ void Foam::functionObjects::fieldAverage::resetFields() void Foam::functionObjects::fieldAverage::initialize() { + if (!totalIter_.size()) + { + totalIter_.setSize(faItems_.size(), 1); + } + + if (!totalTime_.size()) + { + totalTime_.setSize(faItems_.size(), obr_.time().deltaTValue()); + } + else + { + // Check if totalTime_ has been set otherwise initialize + forAll(totalTime_, fieldi) + { + if (totalTime_[fieldi] < 0) + { + totalTime_[fieldi] = obr_.time().deltaTValue(); + } + } + } + resetFields(); Log << type() << " " << name() << ":" << nl; @@ -113,10 +134,7 @@ void Foam::functionObjects::fieldAverage::restart() << nl << endl; totalIter_.clear(); - totalIter_.setSize(faItems_.size(), 1); - totalTime_.clear(); - totalTime_.setSize(faItems_.size(), obr().time().deltaTValue()); initialize(); } @@ -217,8 +235,10 @@ void Foam::functionObjects::fieldAverage::readAveragingProperties() totalIter_.clear(); totalIter_.setSize(faItems_.size(), 1); + // Initialize totalTime with negative values + // to indicate that it has not been set totalTime_.clear(); - totalTime_.setSize(faItems_.size(), obr().time().deltaTValue()); + totalTime_.setSize(faItems_.size(), -1); if (restartOnRestart_ || restartOnOutput_) { diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.H b/src/functionObjects/field/fieldAverage/fieldAverage.H index 66c7799f6394531658c7f58b54b51d90e4f87c83..e0de5ee6fbcd099acb643e42aa5e6fa7f65fa465 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverage.H +++ b/src/functionObjects/field/fieldAverage/fieldAverage.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -35,7 +35,7 @@ Description Fields are entered as a list of sub-dictionaries, which indicate the type of averages to perform, and can be updated during the calculation. The current options include: - - \c mean: arithmetic mean: + - \c mean: arithmetic mean \f[ \overline{x} = \frac{1}{N}\displaystyle\sum\limits_{i=0}^N x_i \f] @@ -44,14 +44,14 @@ Description \overline{x'}^2 = \frac{1}{N}\displaystyle\sum\limits_{i=0}^N (x_i - \overline{x})^2 \f] - - base: average over 'time', or 'iteration' (\f$N\f$ in the above) - - window: optional averaging window, specified in 'base' units + - \c base: average over 'time', or 'iteration' (\f$N\f$ in the above) + - \c window: optional averaging window, specified in 'base' units Average field names are constructed by concatenating the base field with the averaging type, e.g. when averaging field 'U', the resultant fields are: - - arithmetic mean field, UMean - - prime-squared field, UPrime2Mean + - arithmetic mean field, \c UMean + - prime-squared field, \c UPrime2Mean Information regarding the number of averaging steps, and total averaging time are written on a per-field basis to the @@ -101,12 +101,12 @@ Usage Where the entries comprise: \table - Property | Description | Required | Default value - type | type name: fieldAverage | yes | - restartOnRestart | Restart the averaging on restart | no | no - restartOnOutput | Restart the averaging on output | no | no - periodicRestart | Periodically restart the averaging | no | no - restartPeriod | Periodic restart period | conditional | + Property | Description | Required | Default + type | type name: fieldAverage | yes | + restartOnRestart | Restart the averaging on restart | no | no + restartOnOutput | Restart the averaging on output | no | no + periodicRestart | Periodically restart the averaging | no | no + restartPeriod | Periodic restart period | conditional | restartTime | One-shot reset of the averaging | no | great fields | list of fields and averaging options | yes | subRegion | name of a sub-region such as a surface name | no | diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C index 7aaf5b494684d570504942e7ca15fe9e5fe2348c..65e4e21abcb46bd79ce500c4ed152c0fa08f131d 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C +++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C @@ -40,11 +40,7 @@ Foam::functionObjects::fieldAverageItem::fieldAverageItem(Istream& is) base_(ITER), window_(-1.0) { - is.check - ( - "Foam::functionObjects::fieldAverageItem::fieldAverageItem" - "(Foam::Istream&)" - ); + is.check(FUNCTION_NAME); const dictionaryEntry entry(dictionary::null, is); @@ -73,11 +69,7 @@ Foam::Istream& Foam::functionObjects::operator>> fieldAverageItem& faItem ) { - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::functionObjects::fieldAverageItem&)" - ); + is.check(FUNCTION_NAME); const dictionaryEntry entry(dictionary::null, is); @@ -111,11 +103,7 @@ Foam::Ostream& Foam::functionObjects::operator<< const fieldAverageItem& faItem ) { - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)" - ); + os.check(FUNCTION_NAME); os << faItem.fieldName_ << nl << token::BEGIN_BLOCK << nl; os.writeKeyword("mean") << faItem.mean_ << token::END_STATEMENT << nl; @@ -138,12 +126,7 @@ Foam::Ostream& Foam::functionObjects::operator<< os << token::END_BLOCK << nl; - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/functionObjects/field/fieldAverage/fieldAverageTemplates.C b/src/functionObjects/field/fieldAverage/fieldAverageTemplates.C index 422a1499391db06f4a70353cdf9d474e6ea843ee..490325d809547e0ea174b40b63b35fa78ae326b1 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverageTemplates.C +++ b/src/functionObjects/field/fieldAverage/fieldAverageTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -43,9 +43,7 @@ void Foam::functionObjects::fieldAverage::addMeanFieldType(const label fieldi) Log << " Reading/initialising field " << meanFieldName << endl; if (foundObject<Type>(meanFieldName)) - { - // do nothing - } + {} else if (obr().found(meanFieldName)) { Log << " Cannot allocate average field " << meanFieldName @@ -120,9 +118,7 @@ void Foam::functionObjects::fieldAverage::addPrime2MeanFieldType Log << " Reading/initialising field " << prime2MeanFieldName << nl; if (foundObject<Type2>(prime2MeanFieldName)) - { - // do nothing - } + {} else if (obr().found(prime2MeanFieldName)) { Log << " Cannot allocate average field " << prime2MeanFieldName diff --git a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C index c9aabb275c4653da6204d7014bc30eaeca1ac207..296fb0d081a5b324dbe4f6eca387459cfc1935de 100644 --- a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C +++ b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ fieldCoordinateSystemTransform : fvMeshFunctionObject(name, runTime, dict), fieldSet_(), - coordSys_(mesh_, dict) + coordSys_(mesh_, dict.subDict("coordinateSystem")) { read(dict); diff --git a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H index f08a2459252254cdc7b8444495d308966e60196e..f588d4f7341bd71634837db7b2d9c60789b44576 100644 --- a/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H +++ b/src/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -46,13 +46,16 @@ Usage UMean UPrime2Mean ); - origin (0.001 0 0); - coordinateRotation + coordinateSystem { - type axesRotation; - e1 (1 0.15 0); - e3 (0 0 -1); + origin (0.001 0 0); + coordinateRotation + { + type axesRotation; + e1 (1 0.15 0); + e3 (0 0 -1); + } } } \endverbatim @@ -62,9 +65,7 @@ Usage Property | Description | Required | Default value type | type name: fieldCoordinateSystemTransform | yes | fields | list of fields to be transformed |yes | - origin | origin of local co-ordinate system | yes | - coordinateRotation | orientation of local co-ordinate system | yes | - log | Log to standard output | no | yes + coordinateSystem | local co-ordinate system | yes | \endtable See also @@ -108,9 +109,6 @@ protected: //- Co-ordinate system to transform to coordinateSystem coordSys_; - //- Switch to send output to Info as well as to file - Switch log_; - // Protected Member Functions diff --git a/src/functionObjects/field/fieldCoordinateSystemTransform/postProcessingDict b/src/functionObjects/field/fieldCoordinateSystemTransform/postProcessingDict index c5abd511d9f9af0d0a8a5dfaddb816507009e407..0ae79e5d236c1160bbedb0b1167a52ab707daecb 100644 --- a/src/functionObjects/field/fieldCoordinateSystemTransform/postProcessingDict +++ b/src/functionObjects/field/fieldCoordinateSystemTransform/postProcessingDict @@ -38,13 +38,15 @@ functions UPrime2Mean ); - origin (0.001 0 0); - - coordinateRotation + coordinateSystem { - type axesRotation; - e1 (1 0.15 0); - e3 (0 0 -1); + origin (0 0 0); + coordinateRotation + { + type axesRotation; + e1 (1 0.15 0); + e3 (0 0 -1); + } } } } diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/functionObjects/field/fieldMinMax/fieldMinMax.H index 86d61d0d09963aaeb07b3b3a2deab6ea138a36eb..1871fdbfe9b8fdc2474986ba32ddb29eb967af95 100644 --- a/src/functionObjects/field/fieldMinMax/fieldMinMax.H +++ b/src/functionObjects/field/fieldMinMax/fieldMinMax.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -135,6 +135,8 @@ protected: ( const word& fieldName, const word& outputName, + const label minCell, + const label maxCell, const vector& minC, const vector& maxC, const label minProci, diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C b/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C index 691e31382117475fc2a62795661b68ac4e174aa2..95389d0151a1d107b544efe052fc5038a0a00efc 100644 --- a/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C +++ b/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -33,6 +33,8 @@ void Foam::functionObjects::fieldMinMax::output ( const word& fieldName, const word& outputName, + const label minCell, + const label maxCell, const vector& minC, const vector& maxC, const label minProci, @@ -68,6 +70,7 @@ void Foam::functionObjects::fieldMinMax::output file<< endl; Log << " min(" << outputName << ") = " << minValue + << " in cell " << minCell << " at location " << minC; if (Pstream::parRun()) @@ -76,6 +79,7 @@ void Foam::functionObjects::fieldMinMax::output } Log << nl << " max(" << outputName << ") = " << maxValue + << " in cell " << maxCell << " at location " << maxC; if (Pstream::parRun()) @@ -96,9 +100,11 @@ void Foam::functionObjects::fieldMinMax::output // Write state/results information word nameStr('(' + outputName + ')'); this->setResult("min" + nameStr, minValue); + this->setResult("min" + nameStr + "_cell", minCell); this->setResult("min" + nameStr + "_position", minC); this->setResult("min" + nameStr + "_processor", minProci); this->setResult("max" + nameStr, maxValue); + this->setResult("max" + nameStr + "_cell", maxCell); this->setResult("max" + nameStr + "_position", maxC); this->setResult("max" + nameStr + "_processor", maxProci); } @@ -131,17 +137,19 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields magField.boundaryField(); scalarList minVs(Pstream::nProcs()); + labelList minCells(Pstream::nProcs()); List<vector> minCs(Pstream::nProcs()); label minProci = findMin(magField); minVs[proci] = magField[minProci]; + minCells[proci] = minProci; minCs[proci] = mesh_.C()[minProci]; - - labelList maxIs(Pstream::nProcs()); scalarList maxVs(Pstream::nProcs()); + labelList maxCells(Pstream::nProcs()); List<vector> maxCs(Pstream::nProcs()); label maxProci = findMax(magField); maxVs[proci] = magField[maxProci]; + maxCells[proci] = maxProci; maxCs[proci] = mesh_.C()[maxProci]; forAll(magFieldBoundary, patchi) @@ -151,10 +159,14 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields { const vectorField& Cfp = CfBoundary[patchi]; + const labelList& faceCells = + magFieldBoundary[patchi].patch().faceCells(); + label minPi = findMin(mfp); if (mfp[minPi] < minVs[proci]) { minVs[proci] = mfp[minPi]; + minCells[proci] = faceCells[minPi]; minCs[proci] = Cfp[minPi]; } @@ -162,6 +174,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields if (mfp[maxPi] > maxVs[proci]) { maxVs[proci] = mfp[maxPi]; + maxCells[proci] = faceCells[maxPi]; maxCs[proci] = Cfp[maxPi]; } } @@ -169,26 +182,34 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields Pstream::gatherList(minVs); Pstream::scatterList(minVs); + Pstream::gatherList(minCells); + Pstream::scatterList(minCells); Pstream::gatherList(minCs); Pstream::scatterList(minCs); Pstream::gatherList(maxVs); Pstream::scatterList(maxVs); + Pstream::gatherList(maxCells); + Pstream::scatterList(maxCells); Pstream::gatherList(maxCs); Pstream::scatterList(maxCs); label mini = findMin(minVs); scalar minValue = minVs[mini]; + const label minCell = minCells[mini]; const vector& minC = minCs[mini]; label maxi = findMax(maxVs); scalar maxValue = maxVs[maxi]; + const label maxCell = minCells[maxi]; const vector& maxC = maxCs[maxi]; output ( fieldName, word("mag(" + fieldName + ")"), + minCell, + maxCell, minC, maxC, mini, @@ -204,31 +225,37 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields fieldBoundary = field.boundaryField(); List<Type> minVs(Pstream::nProcs()); + labelList minCells(Pstream::nProcs()); List<vector> minCs(Pstream::nProcs()); label minProci = findMin(field); minVs[proci] = field[minProci]; + minCells[proci] = minProci; minCs[proci] = mesh_.C()[minProci]; - Pstream::gatherList(minVs); - Pstream::gatherList(minCs); - List<Type> maxVs(Pstream::nProcs()); + labelList maxCells(Pstream::nProcs()); List<vector> maxCs(Pstream::nProcs()); label maxProci = findMax(field); maxVs[proci] = field[maxProci]; + maxCells[proci] = maxProci; maxCs[proci] = mesh_.C()[maxProci]; forAll(fieldBoundary, patchi) { const Field<Type>& fp = fieldBoundary[patchi]; + if (fp.size()) { const vectorField& Cfp = CfBoundary[patchi]; + const labelList& faceCells = + fieldBoundary[patchi].patch().faceCells(); + label minPi = findMin(fp); if (fp[minPi] < minVs[proci]) { minVs[proci] = fp[minPi]; + minCells[proci] = faceCells[minPi]; minCs[proci] = Cfp[minPi]; } @@ -236,6 +263,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields if (fp[maxPi] > maxVs[proci]) { maxVs[proci] = fp[maxPi]; + maxCells[proci] = faceCells[maxPi]; maxCs[proci] = Cfp[maxPi]; } } @@ -243,26 +271,34 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields Pstream::gatherList(minVs); Pstream::scatterList(minVs); + Pstream::gatherList(minCells); + Pstream::scatterList(minCells); Pstream::gatherList(minCs); Pstream::scatterList(minCs); Pstream::gatherList(maxVs); Pstream::scatterList(maxVs); + Pstream::gatherList(maxCells); + Pstream::scatterList(maxCells); Pstream::gatherList(maxCs); Pstream::scatterList(maxCs); label mini = findMin(minVs); Type minValue = minVs[mini]; + const label minCell = minCells[mini]; const vector& minC = minCs[mini]; label maxi = findMax(maxVs); Type maxValue = maxVs[maxi]; + const label maxCell = maxCells[maxi]; const vector& maxC = maxCs[maxi]; output ( fieldName, fieldName, + minCell, + maxCell, minC, maxC, mini, diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index 1b3258354a28a2fc07d3e575c7e5c3858934c67c..3d39aa4655d3b13b5637d85ca81a796d00b8cc41 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -71,8 +71,8 @@ const char* Foam::NamedEnum { "none", "sum", - "sumMag", "weightedSum", + "sumMag", "sumDirection", "sumDirectionBalance", "average", @@ -154,7 +154,7 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::setFaceZoneFaces() DynamicList<label> faceIds(fZone.size()); DynamicList<label> facePatchIds(fZone.size()); - DynamicList<bool> faceFlip(fZone.size()); + DynamicList<bool> faceFlip(fZone.size()); forAll(fZone, i) { @@ -459,7 +459,7 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::totalArea() const } else { - totalArea = gSum(filterField(mesh_.magSf(), false)); + totalArea = gSum(filterField(mesh_.magSf())); } return totalArea; @@ -479,10 +479,13 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::needsSf() const case opAverage: case opMin: case opMax: + { return false; - + } default: + { return true; + } } } @@ -496,10 +499,13 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::needsWeight() const case opWeightedAverage: case opWeightedAreaAverage: case opWeightedAreaIntegrate: + { return true; - + } default: + { return false; + } } } @@ -558,9 +564,10 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise { FatalErrorInFunction << type() << " " << name() << ": " - << regionTypeNames_[regionType_] << "(" << regionName_ << "):" + << int(regionType_) << "(" << regionName_ << "):" << nl << " Unknown region type. Valid region types are:" - << regionTypeNames_.sortedToc() << nl << exit(FatalError); + << regionTypeNames_ << nl + << exit(FatalError); } } @@ -596,7 +603,6 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise weightFieldName_ = "none"; - orientWeightField_ = false; if (needsWeight()) { if (dict.readIfPresent("weightField", weightFieldName_)) @@ -610,41 +616,21 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise Info<< " weight field = " << weightFieldName_ << nl; } - - if (dict.found("orientedWeightField")) - { - if (regionType_ == stSurface || regionType_ == stSampledSurface) - { - FatalIOErrorInFunction(dict) - << "Cannot use orientedWeightField " - << "for surface/sampledSurface" - << exit(FatalIOError); - } - - if (weightFieldName_ == "none") - { - dict.lookup("orientedWeightField") >> weightFieldName_; - orientWeightField_ = true; - - Info<< " weight field = " << weightFieldName_ << nl; - } - else - { - FatalIOErrorInFunction(dict) - << "Cannot specify both weightField and orientedWeightField" - << exit(FatalIOError); - } - } } + // Backwards compatibility for v1612+ and older List<word> orientedFields; - orientedFieldsStart_ = labelMax; if (dict.readIfPresent("orientedFields", orientedFields)) { - orientedFieldsStart_ = fields_.size(); + WarningInFunction + << "The 'orientedFields' option is deprecated. These fields can " + << "and have been added to the standard 'fields' list." + << endl; + fields_.append(orientedFields); } + surfaceWriterPtr_.clear(); if (writeFields_) { @@ -854,8 +840,6 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::surfaceFieldValue [dict.lookupOrDefault<word>("postOperation", "none")] ), weightFieldName_("none"), - orientWeightField_(false), - orientedFieldsStart_(labelMax), writeArea_(dict.lookupOrDefault("writeArea", false)), nFaces_(0), faceId_(), @@ -883,8 +867,6 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::surfaceFieldValue [dict.lookupOrDefault<word>("postOperation", "none")] ), weightFieldName_("none"), - orientWeightField_(false), - orientedFieldsStart_(labelMax), writeArea_(dict.lookupOrDefault("writeArea", false)), nFaces_(0), faceId_(), @@ -959,7 +941,7 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::write() } else { - Sf = filterField(mesh_.Sf(), true); // Oriented Sf + Sf = filterField(mesh_.Sf()); } } @@ -988,12 +970,7 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::write() { scalarField weightField ( - getFieldValues<scalar> - ( - weightFieldName_, - true, - orientWeightField_ - ) + getFieldValues<scalar>(weightFieldName_, true) ); // Process the fields @@ -1003,12 +980,7 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::write() { vectorField weightField ( - getFieldValues<vector> - ( - weightFieldName_, - true, - orientWeightField_ - ) + getFieldValues<vector>(weightFieldName_, true) ); // Process the fields diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H index 8a5113bc3cadc77e42619c3e5beb11adde4faaf2..a58b27b8a0b55170f214eae7999d2685b1458494 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -91,7 +91,6 @@ Usage orientedWeightField | name of oriented field to apply weighting | no | scaleFactor | scale factor | no | 1 fields | list of fields to operate on | yes | - orientedFields | list of oriented fields to operate on | no | \endtable Where \c regionType is defined by @@ -130,8 +129,6 @@ Note - faces on empty patches get ignored - if the field is a volField the \c faceZone can only consist of boundary faces - - the `oriented' entries relate to mesh-oriented fields, such as the - flux, phi. These fields will be oriented according to the face normals. - Using \c surface: - The keyword %subRegion should not be used to select surfaces. Specify instead the regionType 'surface' and provide the surface name. @@ -285,12 +282,6 @@ protected: //- Weight field name - optional word weightFieldName_; - //- Flag to indicate if flipMap should be applied to the weight field - bool orientWeightField_; - - //- Start index of fields that require application of flipMap - label orientedFieldsStart_; - //- Total area of the surfaceFieldValue scalar totalArea_; @@ -353,8 +344,7 @@ protected: tmp<Field<Type>> getFieldValues ( const word& fieldName, - const bool mustGet = false, - const bool applyOrientation = false + const bool mustGet = false ) const; //- Apply the 'operation' to the values. Operation must preserve Type. @@ -380,16 +370,14 @@ protected: template<class Type> tmp<Field<Type>> filterField ( - const GeometricField<Type, fvsPatchField, surfaceMesh>& field, - const bool applyOrientation + const GeometricField<Type, fvsPatchField, surfaceMesh>& field ) const; //- Filter a volume field according to faceIds template<class Type> tmp<Field<Type>> filterField ( - const GeometricField<Type, fvPatchField, volMesh>& field, - const bool applyOrientation + const GeometricField<Type, fvPatchField, volMesh>& field ) const; //- Weighting factor @@ -424,7 +412,6 @@ protected: const word& fieldName, const vectorField& Sf, const Field<WeightType>& weightField, - const bool orient, const meshedSurf& surfToWrite ); diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C index 0577870ad3241d3b7db7907d83884e51a225bb6d..806a06845460250ed251e09c7a2bc40b4cd81218 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -57,8 +57,7 @@ Foam::tmp<Foam::Field<Type>> Foam::functionObjects::fieldValues::surfaceFieldValue::getFieldValues ( const word& fieldName, - const bool mustGet, - const bool applyOrientation + const bool mustGet ) const { typedef GeometricField<Type, fvsPatchField, surfaceMesh> sf; @@ -71,7 +70,7 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::getFieldValues } else if (regionType_ != stSampledSurface && foundObject<sf>(fieldName)) { - return filterField(lookupObject<sf>(fieldName), applyOrientation); + return filterField(lookupObject<sf>(fieldName)); } else if (foundObject<vf>(fieldName)) { @@ -112,7 +111,7 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::getFieldValues } else { - return filterField(fld, applyOrientation); + return filterField(fld); } } @@ -140,7 +139,9 @@ processSameTypeValues switch (operation_) { case opNone: + { break; + } case opSum: { result = gSum(values); @@ -154,7 +155,7 @@ processSameTypeValues } else { - tmp<scalarField> weight = weightingFactor(weightField); + tmp<scalarField> weight(weightingFactor(weightField)); result = gSum(weight*values); } @@ -258,8 +259,10 @@ processSameTypeValues case opAreaNormalAverage: case opAreaNormalIntegrate: - // handled in specializations only + { + // Handled in specializations only break; + } } return result; @@ -302,30 +305,17 @@ Foam::label Foam::functionObjects::fieldValues::surfaceFieldValue::writeAll forAll(fields_, i) { const word& fieldName = fields_[i]; - const bool orient = (i >= orientedFieldsStart_); if ( - writeValues<scalar> - ( - fieldName, Sf, weightField, orient, surfToWrite - ) - || writeValues<vector> - ( - fieldName, Sf, weightField, orient, surfToWrite - ) + writeValues<scalar>(fieldName, Sf, weightField, surfToWrite) + || writeValues<vector>(fieldName, Sf, weightField, surfToWrite) || writeValues<sphericalTensor> ( - fieldName, Sf, weightField, orient, surfToWrite - ) - || writeValues<symmTensor> - ( - fieldName, Sf, weightField, orient, surfToWrite - ) - || writeValues<tensor> - ( - fieldName, Sf, weightField, orient, surfToWrite + fieldName, Sf, weightField, surfToWrite ) + || writeValues<symmTensor>(fieldName, Sf, weightField, surfToWrite) + || writeValues<tensor>(fieldName, Sf, weightField, surfToWrite) ) { ++nProcessed; @@ -349,7 +339,6 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues const word& fieldName, const vectorField& Sf, const Field<WeightType>& weightField, - const bool orient, const meshedSurf& surfToWrite ) { @@ -357,7 +346,7 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues if (ok) { - Field<Type> values(getFieldValues<Type>(fieldName, true, orient)); + Field<Type> values(getFieldValues<Type>(fieldName, true)); // Write raw values on surface if specified if (surfaceWriterPtr_.valid()) @@ -389,7 +378,9 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues switch (postOperation_) { case postOpNone: + { break; + } case postOpSqrt: { // sqrt: component-wise - doesn't change the type @@ -438,8 +429,7 @@ template<class Type> Foam::tmp<Foam::Field<Type>> Foam::functionObjects::fieldValues::surfaceFieldValue::filterField ( - const GeometricField<Type, fvPatchField, volMesh>& field, - const bool applyOrientation + const GeometricField<Type, fvPatchField, volMesh>& field ) const { tmp<Field<Type>> tvalues(new Field<Type>(faceId_.size())); @@ -464,16 +454,7 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::filterField } } - if (applyOrientation) - { - forAll(values, i) - { - if (faceFlip_[i]) - { - values[i] *= -1; - } - } - } + // No need to flip values - all boundary faces point outwards return tvalues; } @@ -483,8 +464,7 @@ template<class Type> Foam::tmp<Foam::Field<Type>> Foam::functionObjects::fieldValues::surfaceFieldValue::filterField ( - const GeometricField<Type, fvsPatchField, surfaceMesh>& field, - const bool applyOrientation + const GeometricField<Type, fvsPatchField, surfaceMesh>& field ) const { tmp<Field<Type>> tvalues(new Field<Type>(faceId_.size())); @@ -504,7 +484,13 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::filterField } } - if (applyOrientation) + if (debug) + { + Pout<< "field " << field.name() << " oriented: " + << field.oriented()() << endl; + } + + if (field.oriented()()) { forAll(values, i) { diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C index b7217770287e463e36526e9201901af3ba67e1f4..fa77d962b08eefb0fe4e8382fbc52c73dc696ef8 100644 --- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C +++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H index 64f2f1d0ddb3ed2efa84cb56e64564bc05d67202..db9b34bc1e0ff2b6fa1c2fcd7e7eb95d686d6b5c 100644 --- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H +++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -80,19 +80,19 @@ Usage The \c operation is one of: \plaintable - none | No operation - sum | Sum - weightedSum | Weighted sum - sumMag | Sum of component magnitudes - average | Ensemble average - weightedAverage | Weighted average - volAverage | Volume weighted average - weightedVolAverage | Weighted volume average - volIntegrate | Volume integral + none | No operation + sum | Sum + weightedSum | Weighted sum + sumMag | Sum of component magnitudes + average | Ensemble average + weightedAverage | Weighted average + volAverage | Volume weighted average + weightedVolAverage | Weighted volume average + volIntegrate | Volume integral weightedVolIntegrate | Weighted volume integral - min | Minimum - max | Maximum - CoV | Coefficient of variation: standard deviation/mean + min | Minimum + max | Maximum + CoV | Coefficient of variation: standard deviation/mean \endplaintable See also @@ -163,7 +163,7 @@ protected: //- Operation to apply to values operationType operation_; - //- Weight field name - only used for opWeightedAverage mode + //- Weight field name - only used for weighted modes word weightFieldName_; diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C index c5a30db000999b9e02f4d5f351e302d53a665e86..a4f1fb82a6cd4609c38052ed828722b10c45ce35 100644 --- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C +++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/functionObjects/field/mapFields/mapFields.C b/src/functionObjects/field/mapFields/mapFields.C index 00a387ad6e32265cda85d875f4275cdc722230e9..f0d250f659db059da500aee4ebd812dfff3d7120 100644 --- a/src/functionObjects/field/mapFields/mapFields.C +++ b/src/functionObjects/field/mapFields/mapFields.C @@ -71,14 +71,14 @@ void Foam::functionObjects::mapFields::createInterpolation ) ); const fvMesh& mapRegion = mapRegionPtr_(); - word mapMethodName(dict.lookup("mapMethod")); - if (!meshToMesh::interpolationMethodNames_.found(mapMethodName)) + const word mapMethodName(dict.lookup("mapMethod")); + if (!meshToMesh::interpolationMethodNames_.hasEnum(mapMethodName)) { FatalErrorInFunction << type() << " " << name() << ": unknown map method " << mapMethodName << nl << "Available methods include: " - << meshToMesh::interpolationMethodNames_.sortedToc() + << meshToMesh::interpolationMethodNames_ << exit(FatalError); } diff --git a/src/functionObjects/field/mapFields/mapFieldsTemplates.C b/src/functionObjects/field/mapFields/mapFieldsTemplates.C index 2b473ac3289d5de43bfad59bae0253a833e29686..792dff4e59c1c646d7183332acd8afcf2662238d 100644 --- a/src/functionObjects/field/mapFields/mapFieldsTemplates.C +++ b/src/functionObjects/field/mapFields/mapFieldsTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,8 +40,8 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes if ( - Pstream::defaultCommsType == Pstream::blocking - || Pstream::defaultCommsType == Pstream::nonBlocking + Pstream::defaultCommsType == Pstream::commsTypes::blocking + || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { label nReq = Pstream::nRequests(); @@ -64,7 +64,7 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes if ( Pstream::parRun() - && Pstream::defaultCommsType == Pstream::nonBlocking + && Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking ) { Pstream::waitRequests(nReq); @@ -84,7 +84,7 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes } } } - else if (Pstream::defaultCommsType == Pstream::scheduled) + else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled) { const lduSchedule& patchSchedule = fld.mesh().globalData().patchSchedule(); @@ -102,11 +102,11 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes { if (patchSchedule[patchEvali].init) { - tgtField.initEvaluate(Pstream::scheduled); + tgtField.initEvaluate(Pstream::commsTypes::scheduled); } else { - tgtField.evaluate(Pstream::scheduled); + tgtField.evaluate(Pstream::commsTypes::scheduled); } } } diff --git a/src/functionObjects/field/nearWallFields/findCellParticle.C b/src/functionObjects/field/nearWallFields/findCellParticle.C index 5f57285a2675d0460628cc5c0c9cc0d01728c951..6c69be4f18052c80d929e1d62f6584f7a1dfb8c7 100644 --- a/src/functionObjects/field/nearWallFields/findCellParticle.C +++ b/src/functionObjects/field/nearWallFields/findCellParticle.C @@ -70,12 +70,7 @@ Foam::findCellParticle::findCellParticle } } - // Check state of Istream - is.check - ( - "findCellParticle::findCellParticle" - "(const Cloud<findCellParticle>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -227,9 +222,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const findCellParticle& p) ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const findCellParticle&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/functionObjects/field/streamLine/streamLine.H b/src/functionObjects/field/streamLine/streamLine.H index 0638c5fc68d2ca3fbceedc7c21c171424e7a77f5..f26af7c800784ef9f976f30195895d761f69712c 100644 --- a/src/functionObjects/field/streamLine/streamLine.H +++ b/src/functionObjects/field/streamLine/streamLine.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -42,19 +42,22 @@ Usage writeControl writeTime; setFormat vtk; + U U; trackForward yes; + fields ( U p ); + lifeTime 10000; trackLength 1e-3; nSubCycle 5; bounds (0.2 -10 -10)(0.22 10 10); cloudName particleTracks; - seedSampleSet uniform; - uniformCoeffs + + seedSampleSet { type uniform; axis x; //distance; @@ -70,7 +73,7 @@ Usage Property | Description | Required | Default value type | Type name: streamLine | yes | setFormat | Output data type | yes | - U | Tracking velocity field name | yes | + U | Tracking velocity field name | no | U fields | Fields to sample | yes | lifetime | Maximum number of particle tracking steps | yes | trackLength | Tracking segment length | no | @@ -80,7 +83,7 @@ Usage seedSampleSet| Seeding method (see below)| yes | \endtable - Where \c seedSampleSet is typically one of + Where \c seedSampleSet \c type is typically one of \plaintable uniform | uniform particle seeding cloud | cloud of points diff --git a/src/functionObjects/field/streamLine/streamLineBase.C b/src/functionObjects/field/streamLine/streamLineBase.C index d5741a6c2bf613de9c96eff6070981a1beafd489..305ab37636edd1f23aa71d964cc6b89a30cf56f8 100644 --- a/src/functionObjects/field/streamLine/streamLineBase.C +++ b/src/functionObjects/field/streamLine/streamLineBase.C @@ -561,18 +561,15 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict) //Info<< " using interpolation " << interpolationScheme_ << endl; cloudName_ = dict.lookupOrDefault<word>("cloud", type()); - dict.lookup("seedSampleSet") >> seedSet_; - - const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs"); sampledSetPtr_ = sampledSet::New ( - seedSet_, + "seedSampleSet", mesh_, meshSearchMeshObject::New(mesh_), - coeffsDict + dict.subDict("seedSampleSet") ); - coeffsDict.lookup("axis") >> sampledSetAxis_; + sampledSetAxis_ = sampledSetPtr_->axis(); scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat")); vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat")); @@ -644,7 +641,7 @@ bool Foam::functionObjects::streamLineBase::write() allTracks_.shrink(); mapDistributeBase::distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, distMap.schedule(), distMap.constructSize(), distMap.subMap(), @@ -662,7 +659,7 @@ bool Foam::functionObjects::streamLineBase::write() allScalars_[scalari].shrink(); mapDistributeBase::distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, distMap.schedule(), distMap.constructSize(), distMap.subMap(), @@ -680,7 +677,7 @@ bool Foam::functionObjects::streamLineBase::write() allVectors_[vectori].shrink(); mapDistributeBase::distribute ( - Pstream::scheduled, + Pstream::commsTypes::scheduled, distMap.schedule(), distMap.constructSize(), distMap.subMap(), diff --git a/src/functionObjects/field/streamLine/streamLineParticle.C b/src/functionObjects/field/streamLine/streamLineParticle.C index e88f903f8a2e08833d5ed75946a8cf63e3779064..04189af71edf0f71e201a7d937198e04dc8372d1 100644 --- a/src/functionObjects/field/streamLine/streamLineParticle.C +++ b/src/functionObjects/field/streamLine/streamLineParticle.C @@ -148,12 +148,7 @@ Foam::streamLineParticle::streamLineParticle } } - // Check state of Istream - is.check - ( - "streamLineParticle::streamLineParticle" - "(const Cloud<streamLineParticle>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -497,9 +492,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const streamLineParticle& p) << token::SPACE << p.sampledScalars_ << token::SPACE << p.sampledVectors_; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const streamLineParticle&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C index f27d8603222ae1aa7ee7e93e5eea4f99e159bd93..8166029dbd4335426cbf0b4605a6180c383e174f 100644 --- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C +++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C @@ -331,12 +331,7 @@ Foam::wallBoundedParticle::wallBoundedParticle } } - // Check state of Istream - is.check - ( - "wallBoundedParticle::wallBoundedParticle" - "(const Cloud<wallBoundedParticle>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H index 77dad3fb711df646aa61fece58917b295b64dbce..69d619cafb110329280065851542c719c3343013 100644 --- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H +++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -57,8 +57,7 @@ Usage bounds (0.2 -10 -10)(0.22 10 10); cloudName particleTracks; - seedSampleSet patchSeed; - patchSeedCoeffs + seedSampleSet { type patchSeed; patches (wall); @@ -83,10 +82,10 @@ Usage seedSampleSet| Seeding method (see below)| yes | \endtable - Where \c seedSampleSet is typically one of + Where \c seedSampleSet \c type is typically one of \plaintable - uniform | uniform particle seeding - cloud | cloud of points + uniform | uniform particle seeding + cloud | cloud of points patchSeed | seeding via patch faces triSurfaceMeshPointSet | points according to a tri-surface mesh \endplaintable diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C index 82fccd411522471eb8426b9017b5f0abba749209..d626c63fcb9c6d94594e597456b7ee011cef6e7a 100644 --- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C +++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C @@ -185,12 +185,7 @@ Foam::wallBoundedStreamLineParticle::wallBoundedStreamLineParticle } } - // Check state of Istream - is.check - ( - "wallBoundedStreamLineParticle::wallBoundedStreamLineParticle" - "(const Cloud<wallBoundedStreamLineParticle>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -422,12 +417,7 @@ Foam::Ostream& Foam::operator<< << token::SPACE << p.sampledScalars_ << token::SPACE << p.sampledVectors_; - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const wallBoundedStreamLineParticle&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C index 8d4486fc9eb54b765960ce0e8de8bf8b318993c4..e41c11de1e047a9201ace5a4f15ab2cabda9be55 100644 --- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C +++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -75,11 +75,11 @@ void Foam::functionObjects::wallHeatFlux::calcHeatFlux wallHeatFluxBf[patchi] = heatFluxBf[patchi]; } - if (foundObject<volScalarField>("Qr")) + if (foundObject<volScalarField>("qr")) { - const volScalarField& Qr = lookupObject<volScalarField>("Qr"); + const volScalarField& qr = lookupObject<volScalarField>("qr"); - const volScalarField::Boundary& radHeatFluxBf = Qr.boundaryField(); + const volScalarField::Boundary& radHeatFluxBf = qr.boundaryField(); forAll(wallHeatFluxBf, patchi) { @@ -279,7 +279,7 @@ bool Foam::functionObjects::wallHeatFlux::write() << endl; } - Log << " min/max(" << pp.name() << ") = " + Log << " min/max/integ(" << pp.name() << ") = " << minHfp << ", " << maxHfp << ", " << integralHfp << endl; } diff --git a/src/functionObjects/forces/Make/options b/src/functionObjects/forces/Make/options index 3f85a6262bd84458a9eb451687bfdaa28d220cf4..219b130f9e21afc91d84f23702b0ea2aadd9c4f4 100644 --- a/src/functionObjects/forces/Make/options +++ b/src/functionObjects/forces/Make/options @@ -1,13 +1,13 @@ EXE_INC = \ -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude + -I$(LIB_SRC)/finiteVolume/lnInclude LIB_LIBS = \ -lfluidThermophysicalModels \ @@ -17,6 +17,5 @@ LIB_LIBS = \ -lincompressibleTurbulenceModels \ -lcompressibleTurbulenceModels \ -lspecie \ - -lfileFormats \ -lfiniteVolume \ -lmeshTools diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C index eee66616e2a323a482ec0e34508e66b77c109e73..fc6f21a9aee67d54abb17cabff2d45cc73d5070d 100644 --- a/src/functionObjects/forces/forces/forces.C +++ b/src/functionObjects/forces/forces/forces.C @@ -870,7 +870,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict) // Reference density needed for incompressible calculations if (rhoName_ == "rhoInf") { - rhoRef_ = readScalar(dict.lookup("rhoInf")); + dict.lookup("rhoInf") >> rhoRef_; } // Reference pressure, 0 by default diff --git a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt index b5c3bf081526683d091a4b7c44fd09c9a5921672..9dc15138fde6a5ef2052b653cf5f4c77502d47e0 100644 --- a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt +++ b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt @@ -13,7 +13,7 @@ endif() include_directories( $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude - $ENV{WM_PROJECT_DIR}/src/triSurface/lnInclude + $ENV{WM_PROJECT_DIR}/src/surfMesh/lnInclude $ENV{WM_PROJECT_DIR}/src/finiteVolume/lnInclude ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @@ -70,7 +70,7 @@ file(GLOB SOURCE_FILES set(OPENFOAM_LIBRARIES OpenFOAM - triSurface + surfMesh finiteVolume ) diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.C b/src/functionObjects/solvers/scalarTransport/scalarTransport.C index ebee2bc436ae70c55327903028a4a9495a625929..878b5b6f09a75ca07b687e802aaf2eb959dbe27b 100644 --- a/src/functionObjects/solvers/scalarTransport/scalarTransport.C +++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -139,7 +139,11 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::D return tmp<volScalarField> ( - new volScalarField(Dname, model.nuEff()) + new volScalarField + ( + Dname, + alphaD_*model.nu() + alphaDt_*model.nut() + ) ); } else if (foundObject<cmpModel>(turbulenceModel::propertiesName)) @@ -151,7 +155,11 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::D return tmp<volScalarField> ( - new volScalarField(Dname, model.muEff()) + new volScalarField + ( + Dname, + alphaD_*model.mu() + alphaDt_*model.mut() + ) ); } else @@ -236,6 +244,8 @@ bool Foam::functionObjects::scalarTransport::read(const dictionary& dict) schemesField_ = dict.lookupOrDefault("schemesField", fieldName_); constantD_ = dict.readIfPresent("D", D_); + alphaD_ = dict.lookupOrDefault("alphaD", 1.0); + alphaDt_ = dict.lookupOrDefault("alphaDt", 1.0); dict.readIfPresent("nCorr", nCorr_); dict.readIfPresent("resetOnStartUp", resetOnStartUp_); @@ -358,7 +368,7 @@ bool Foam::functionObjects::scalarTransport::execute() FatalErrorInFunction << "Incompatible dimensions for phi: " << phi.dimensions() << nl << "Dimensions should be " << dimMass/dimTime << " or " - << dimVolume/dimTime << endl; + << dimVolume/dimTime << exit(FatalError); } Log << endl; diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.H b/src/functionObjects/solvers/scalarTransport/scalarTransport.H index bc743e7eea2601e965340214ae3a7ab71eb125c0..7633017c4aa57acc2c5a6bacaa278346d8ee6819 100644 --- a/src/functionObjects/solvers/scalarTransport/scalarTransport.H +++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -30,18 +30,24 @@ Group Description Evolves a passive scalar transport equation. - - To specify the field name set the 'field' entry + - To specify the field name set the \c field entry - To employ the same numerical schemes as another field set - the 'schemesField' entry, + the \c schemesField entry, - The diffusivity can be set manually using the 'D' entry, retrieved from the turbulence model or specified nut + - Alternatively if a turbulence model is available a turbulent diffusivity + may be constructed from the laminar and turbulent viscosities using the + optional diffusivity coefficients \c alphaD and \c alphaDt (which default + to 1): + \verbatim + D = alphaD*nu + alphaDt*nut + \endverbatim - To specify a transport quantity within a phase enter phase. - bounded01 bounds the transported scalar within 0 and 1. Usage Example of function object specification to solve a scalar transport equation: - \verbatim functions { scalar1 @@ -181,6 +187,12 @@ class scalarTransport //- Flag to indicate whether a constant, uniform D_ is specified bool constantD_; + //- Laminar diffusion coefficient (optional) + scalar alphaD_; + + //- Turbulent diffusion coefficient (optional) + scalar alphaDt_; + //- Number of corrector iterations (optional) label nCorr_; diff --git a/src/functionObjects/utilities/abort/abort.C b/src/functionObjects/utilities/abort/abort.C index 90a8db66b4d06f5c2be059a028f0799ef51d94eb..ef2b3cbf39b35e7888812c52c5ec29c22f35c1e6 100644 --- a/src/functionObjects/utilities/abort/abort.C +++ b/src/functionObjects/utilities/abort/abort.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -125,7 +125,7 @@ bool Foam::functionObjects::abort::read(const dictionary& dict) action_ = nextWrite; } - if (dict.readIfPresent("fileName", abortFile_)) + if (dict.readIfPresent("file", abortFile_)) { abortFile_.expand(); } diff --git a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C index df771eb9bbde374e297c2ace61a3dcb20354d6cd..51917aa5549376e5b061dc8bf62f33c2d67c5ebd 100644 --- a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C +++ b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -291,6 +291,16 @@ bool Foam::functionObjects::codedFunctionObject::read(const dictionary& dict) ); } + if(!dataPtr && !readPtr && !execPtr && !writePtr && !endPtr) + { + IOWarningInFunction + ( + dict + ) << "No critical \"code\" prefixed keywords were found." + << " Please check the code documentation for more details." + << nl << endl; + } + updateLibrary(name_); return redirectFunctionObject().read(dict); } diff --git a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H index f11c43d4b430c6caa9cbfef8f0452c7a980ab379..d5ff5ce8aca8d48857236a919a8a20bf517126e9 100644 --- a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H +++ b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,16 +30,18 @@ Group Description Provides a general interface to enable dynamic code compilation. - The entries are - codeInclude : include files - codeOptions : include paths; inserted into EXE_INC in Make/options - codeLibs : link line; inserted into LIB_LIBS in Make/options - codeData : c++; local member data (null constructed); - localCode : c++; local static functions - codeRead : c++; upon functionObject::read(); - codeExecute : c++;upon functionObject::execute(); - codeWrite : c++; upon functionObject::write() - codeEnd : c++; upon functionObject::end(); + The entries are: + \plaintable + codeInclude | include files + codeOptions | include paths; inserted into EXE_INC in Make/options + codeLibs | link line; inserted into LIB_LIBS in Make/options + codeData | c++; local member data (null constructed); + localCode | c++; local static functions; + codeRead | c++; upon functionObject::read(); + codeExecute | c++; upon functionObject::execute(); + codeWrite | c++; upon functionObject::write() + codeEnd | c++; upon functionObject::end(); + \endplaintable Usage Example of function object specification: diff --git a/src/functionObjects/utilities/ensightWrite/ensightWrite.C b/src/functionObjects/utilities/ensightWrite/ensightWrite.C index 30b11ffc9e373ea8f9f08bec40f13a8f6af3d8f4..47cd1050bed4fb196242aee6c254a0c3e2df5124 100644 --- a/src/functionObjects/utilities/ensightWrite/ensightWrite.C +++ b/src/functionObjects/utilities/ensightWrite/ensightWrite.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,6 +26,7 @@ License #include "ensightWrite.H" #include "Time.H" #include "polyMesh.H" +#include "wordRes.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -47,25 +48,6 @@ namespace functionObjects // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::functionObjects::ensightWrite::uniqWords(wordReList& lst) -{ - boolList retain(lst.size()); - wordHashSet uniq; - forAll(lst, i) - { - const wordRe& select = lst[i]; - - retain[i] = - ( - select.isPattern() - || uniq.insert(static_cast<const word&>(select)) - ); - } - - inplaceSubset(retain, lst); -} - - int Foam::functionObjects::ensightWrite::process(const word& fieldName) { int state = 0; @@ -140,7 +122,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict) if (dict.found("patches")) { wordReList lst(dict.lookup("patches")); - uniqWords(lst); + wordRes::inplaceUniq(lst); writeOpts_.patchSelection(lst); } @@ -148,7 +130,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict) if (dict.found("faceZones")) { wordReList lst(dict.lookup("faceZones")); - uniqWords(lst); + wordRes::inplaceUniq(lst); writeOpts_.faceZoneSelection(lst); } @@ -174,7 +156,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict) // output fields // dict.lookup("fields") >> selectFields_; - uniqWords(selectFields_); + wordRes::inplaceUniq(selectFields_); return true; } diff --git a/src/functionObjects/utilities/ensightWrite/ensightWrite.H b/src/functionObjects/utilities/ensightWrite/ensightWrite.H index edba7c8535a7cafaf3571fbff0b4a4e7497d92a2..67bc5ca3cbcd799c762c0551c5c3118b5c203a11 100644 --- a/src/functionObjects/utilities/ensightWrite/ensightWrite.H +++ b/src/functionObjects/utilities/ensightWrite/ensightWrite.H @@ -135,9 +135,6 @@ class ensightWrite // Private Member Functions - //- Eliminate duplicate 'word' entries - static void uniqWords(wordReList&); - //- Ensight case handler ensightCase& ensCase() { diff --git a/src/functionObjects/utilities/setTimeStep/setTimeStepFunctionObject.H b/src/functionObjects/utilities/setTimeStep/setTimeStepFunctionObject.H index 149023c90c33e4443ff788fc5ce43cc60672cb55..70925dc0a046abd07bc161dd89f4718ce2985237 100644 --- a/src/functionObjects/utilities/setTimeStep/setTimeStepFunctionObject.H +++ b/src/functionObjects/utilities/setTimeStep/setTimeStepFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,11 +28,13 @@ Group grpUtilitiesFunctionObjects Description - This function object overrides the calculation time step. Can only be used - with solvers with adjustTimeStep control (e.g. pimpleFoam). It makes no - attempt to co-operate with other time step 'controllers', e.g. maxCo, other - functionObjects. Supports 'enabled' flag but none of the other options - 'timeStart', 'timeEnd', 'writeControl' etc. + This function object overrides the calculation time step. + + Can only be used with solvers with adjustTimeStep control (e.g. + pimpleFoam). It makes no attempt to co-operate with other time step + 'controllers', e.g. maxCo, other functionObjects. Supports 'enabled' + flag but none of the other options 'timeStart', 'timeEnd', 'writeControl' + etc. Usage Example of function object specification to manipulate the time step: diff --git a/src/functionObjects/utilities/writeObjects/writeObjects.C b/src/functionObjects/utilities/writeObjects/writeObjects.C index aad0e40554e6d8b0ffc41597fdb2efe5f4450d44..eade94640241e57bd18c4fc9af480457cf0752c5 100644 --- a/src/functionObjects/utilities/writeObjects/writeObjects.C +++ b/src/functionObjects/utilities/writeObjects/writeObjects.C @@ -196,7 +196,8 @@ bool Foam::functionObjects::writeObjects::write() FatalErrorInFunction << "Unknown writeOption " << writeOptionNames_[writeOption_] - << ". Valid writeOption types are" << writeOptionNames_ + << ". Valid writeOption types are " + << writeOptionNames_ << exit(FatalError); } } diff --git a/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/MGridGenGAMGAgglomeration.C b/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/MGridGenGAMGAgglomeration.C index 644a585366dc70168269715f007ac74e1ba6648a..637e65a6e838dc67bc88c0ffe0cb96286e343ba4 100644 --- a/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/MGridGenGAMGAgglomeration.C +++ b/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/MGridGenGAMGAgglomeration.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,7 +59,7 @@ void Foam::MGridGenGAMGAgglomeration::swap { interfaces[inti].initInternalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, cellValues ); } @@ -83,7 +83,7 @@ void Foam::MGridGenGAMGAgglomeration::swap ( interfaces[inti].internalFieldTransfer ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, cellValues ) ) diff --git a/src/fvMotionSolver/Make/options b/src/fvMotionSolver/Make/options index c4bc7921795d4223f04e45221b080c67f4473937..94dc2f7c814ad42812576827f0ca6c2f32fc7271 100644 --- a/src/fvMotionSolver/Make/options +++ b/src/fvMotionSolver/Make/options @@ -1,15 +1,13 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/functionObjects/forces/lnInclude \ LIB_LIBS = \ - -ltriSurface \ -lmeshTools \ -ldynamicMesh \ - -lfiniteVolume \ - -lfileFormats + -lfiniteVolume /*-lforces include in controlDict if needed */ diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C index bc33e0cc8c16548c88051a086a3739157a17689e..2bed22c26cce395ca3f3199a75e2fd878ec58364 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,7 +64,7 @@ Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver const IOdictionary& dict ) : - displacementMotionSolver(mesh, dict, dict.lookup("solver")), + displacementMotionSolver(mesh, dict, typeName), fvMotionSolver(mesh), cellDisplacement_ ( diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H index 7adb6d3d83bded3d6b58b32fe2159a379f1cc8ea..1e1cc4838e7f169687a1d7e16f640b22d352d4cb 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-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -197,7 +197,7 @@ public: //- Update the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking ); //- Write diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C index f14cb3d7f6d582bf22ddb7a2bff3ff9f8db64bac..886f9440e98b6d0a109d37e5828dd42ac8321f9b 100644 --- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C +++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -118,7 +118,7 @@ timeVaryingMappedFixedValuePointPatchField // of the pointPatchField::updated_ flag. This is // so if first use is in the next time step it retriggers // a new update. - pointPatchField<Type>::evaluate(Pstream::blocking); + pointPatchField<Type>::evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/fvOptions/cellSetOption/cellSetOption.C b/src/fvOptions/cellSetOption/cellSetOption.C index 665b98343df360f464033b23509db5ac59bc0c57..929b457a7ee93995ba7c0f182c7fa243671d94bb 100644 --- a/src/fvOptions/cellSetOption/cellSetOption.C +++ b/src/fvOptions/cellSetOption/cellSetOption.C @@ -82,7 +82,8 @@ void Foam::fv::cellSetOption::setSelection(const dictionary& dict) FatalErrorInFunction << "Unknown selectionMode " << selectionModeTypeNames_[selectionMode_] - << ". Valid selectionMode types are" << selectionModeTypeNames_ + << ". Valid selectionMode types are " + << selectionModeTypeNames_ << exit(FatalError); } } @@ -186,7 +187,8 @@ void Foam::fv::cellSetOption::setCellSet() FatalErrorInFunction << "Unknown selectionMode " << selectionModeTypeNames_[selectionMode_] - << ". Valid selectionMode types are" << selectionModeTypeNames_ + << ". Valid selectionMode types are " + << selectionModeTypeNames_ << exit(FatalError); } } diff --git a/src/fvOptions/cellSetOption/cellSetOption.H b/src/fvOptions/cellSetOption/cellSetOption.H index 050abd5f0a9d423e16f28fb4f29a3b882a25c672..6dd94847c7bae739fb22bc7f37fee181a3d75805 100644 --- a/src/fvOptions/cellSetOption/cellSetOption.H +++ b/src/fvOptions/cellSetOption/cellSetOption.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -31,15 +31,12 @@ Description type scalarExplicitSource // Source type active on; // on/off switch - scalarExplicitSourceCoeffs - { - timeStart 0.0; // Start time - duration 1000.0; // Duration - selectionMode cellSet; // cellSet, points, cellZone - . - . - . - } + timeStart 0.0; // Start time + duration 1000.0; // Duration + selectionMode cellSet; // cellSet, points, cellZone + . + . + . \endverbatim Note diff --git a/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H b/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H index 84da7ba1c490dedbe832f596f9d040f0115ccbe1..a7c702944bef9f530d18523fd05d08ada446b0dc 100644 --- a/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H +++ b/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,16 +37,13 @@ Usage type fixedTemperatureConstraint; active yes; - fixedTemperatureConstraintCoeffs - { - mode uniform; // uniform or lookup + mode uniform; // uniform or lookup - // For uniform option - temperature constant 500; // fixed temperature with time [K] + // For uniform option + temperature constant 500; // fixed temperature with time [K] - // For lookup option - // T <Tname>; // optional temperature field name - } + // For lookup option + // T <Tname>; // optional temperature field name } \endverbatim diff --git a/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.H b/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.H index 83e95f57fdc3c565491ea87dd534c6df4df1f85f..c7b5382b7f11681de4b3dfca891d80615518dd9c 100644 --- a/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.H +++ b/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,15 +38,12 @@ Usage type scalarFixedValueConstraint; active yes; - scalarFixedValueConstraintCoeffs + selectionMode cellZone; + cellZone porosity; + fieldValues { - selectionMode cellZone; - cellZone porosity; - fieldValues - { - k 1; - epsilon 150; - } + k 1; + epsilon 150; } } \endverbatim diff --git a/src/fvOptions/corrections/limitTemperature/limitTemperature.H b/src/fvOptions/corrections/limitTemperature/limitTemperature.H index d81072db4e0138b68f8cb7f8da1b6e370b6f409f..b0657a168d286e621c529b0edf15c7f2e635cf0b 100644 --- a/src/fvOptions/corrections/limitTemperature/limitTemperature.H +++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,12 +39,9 @@ Usage type limitTemperature; active yes; - limitTemperatureCoeffs - { - selectionMode all; - min 200; - max 500; - } + selectionMode all; + min 200; + max 500; } \endverbatim diff --git a/src/fvOptions/corrections/limitVelocity/limitVelocity.H b/src/fvOptions/corrections/limitVelocity/limitVelocity.H index b1c3f1b0482a9f3b8513faca8ececa9cb523160e..15ff1a8b6a6f589444a1733c807b763b4fba3614 100644 --- a/src/fvOptions/corrections/limitVelocity/limitVelocity.H +++ b/src/fvOptions/corrections/limitVelocity/limitVelocity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,11 +35,8 @@ Usage type limitVelocity; active yes; - limitVelocityCoeffs - { - selectionMode all; - max 100; - } + selectionMode all; + max 100; } \endverbatim diff --git a/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.H b/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.H index 845c1a3294be9e489acd0927798068f6a4ded899..c8fb363781f4b9c3cd24c97ebec021dff8f81140 100644 --- a/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.H +++ b/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,15 +50,12 @@ Description Usage Example usage: \verbatim - actuationDiskSourceCoeffs - { - fields (U); // names of fields to apply source - diskDir (-1 0 0); // disk direction - Cp 0.1; // power coefficient - Ct 0.5; // thrust coefficient - diskArea 5.0; // disk area - upstreamPoint (0 0 0); // upstream point - } + fields (U); // names of fields to apply source + diskDir (-1 0 0); // disk direction + Cp 0.1; // power coefficient + Ct 0.5; // thrust coefficient + diskArea 5.0; // disk area + upstreamPoint (0 0 0); // upstream point \endverbatim diff --git a/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.H b/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.H index 7ea680dad8a1f0ac20d2afa2cd3e15cdf9631b46..192290494d51f52f1d38411d534cf301a5718bea 100644 --- a/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.H +++ b/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,10 +34,7 @@ Description Usage Example usage: \verbatim - buoyancyEnergyCoeffs - { - fields (h); // Name of energy field - } + fields (h); // Name of energy field \endverbatim SourceFiles diff --git a/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.H b/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.H index 8ddba4676d7e8684c975137d8bdc5bbec7b69f19..6bc681d03451a081da3d61fcd6d0a809d508a007 100644 --- a/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.H +++ b/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,10 +34,7 @@ Description Usage Example usage: \verbatim - buoyancyForceCoeffs - { - fields (U); // Name of velocity field - } + fields (U); // Name of velocity field \endverbatim SourceFiles diff --git a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C index 7607aacf7935564fa2c1b7d431d5f22611085ba9..0bc5217e98d55757faf856e0e03e97ada298cfdc 100644 --- a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C +++ b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C @@ -236,7 +236,7 @@ directionalPressureGradientExplicitSource << "Did not find mode " << model_ << nl << "Please set 'model' to one of " - << PressureDropModelNames_.toc() + << PressureDropModelNames_ << exit(FatalError); } @@ -290,7 +290,6 @@ void Foam::fv::directionalPressureGradientExplicitSource::correct const scalarField nu(turbModel.nu(), cells_); gradPporous_ = -flowDir_*(D_*nu + I_*0.5*magUn)*magUn*length_; - break; } else { @@ -307,6 +306,7 @@ void Foam::fv::directionalPressureGradientExplicitSource::correct gradPporous_ = - flowDir_*(D_*mu + I_*0.5*rho*magUn)*magUn*length_; } + break; } case pConstant: { diff --git a/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.H b/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.H index 56afff2adb6d13c8e2ecf88aab32d264696bec8e..8893abb3e57c15324de1d6abae9f8bfb72ac9396 100644 --- a/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.H +++ b/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -70,18 +70,15 @@ Usage type effectivenessHeatExchangerSource; active yes; - effectivenessHeatExchangerSourceCoeffs - { - selectionMode cellZone; - cellZone porosity; - - secondaryMassFlowRate 1.0; - secondaryInletT 336; - // primaryInletT 293; // Constrain to this T if present - faceZone facesZoneInletOriented; - outOfBounds clamp; - fileName "effTable"; - } + selectionMode cellZone; + cellZone porosity; + + secondaryMassFlowRate 1.0; + secondaryInletT 336; + // primaryInletT 293; // Constrain to this T if present + faceZone facesZoneInletOriented; + outOfBounds clamp; + file "effTable"; } \endverbatim @@ -124,7 +121,7 @@ Usage \endverbatim Note -- the table with name "fileName" should have the same units as the +- the table with name "file" should have the same units as the secondary mass flow rate and kg/s for phi - faceZone is the faces at the inlet of the cellzone, it needs to be created with flip map flags. It is used to integrate the net mass flow diff --git a/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.H b/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.H index dfa5b96ea74945d06de7a37fbc120feb3f83673c..5f2cb2648cc3972ec51101b567bb6ace0153b5d8 100644 --- a/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.H +++ b/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,13 +36,10 @@ Description Usage Example usage: \verbatim - meanVelocityForceCoeffs - { - selectionMode all; // Apply force to all cells - fields (U); // Name of velocity field - Ubar (10.0 0 0); // Desired mean velocity - relaxation 0.2; // Optional relaxation factor - } + selectionMode all; // Apply force to all cells + fields (U); // Name of velocity field + Ubar (10.0 0 0); // Desired mean velocity + relaxation 0.2; // Optional relaxation factor \endverbatim SourceFiles diff --git a/src/fvOptions/sources/derived/meanVelocityForce/patchMeanVelocityForce/patchMeanVelocityForce.H b/src/fvOptions/sources/derived/meanVelocityForce/patchMeanVelocityForce/patchMeanVelocityForce.H index 7413cd497e1e1531750e26161d6aee2961add30b..75b175def6cd011c19c7df36f8e8f3ebc144a0ba 100644 --- a/src/fvOptions/sources/derived/meanVelocityForce/patchMeanVelocityForce/patchMeanVelocityForce.H +++ b/src/fvOptions/sources/derived/meanVelocityForce/patchMeanVelocityForce/patchMeanVelocityForce.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,14 +33,11 @@ Description Usage Example usage: \verbatim - patchMeanVelocityForceCoeffs - { - selectionMode all; // Apply force to all cells - fields (U); // Name of velocity field - patch inlet; // Name of the patch - Ubar (10.0 0 0); // Desired mean velocity - relaxation 0.2; // Optional relaxation factor - } + selectionMode all; // Apply force to all cells + fields (U); // Name of velocity field + patch inlet; // Name of the patch + Ubar (10.0 0 0); // Desired mean velocity + relaxation 0.2; // Optional relaxation factor \endverbatim SourceFiles diff --git a/src/fvOptions/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H b/src/fvOptions/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H index 8dc38312d679354dbc36883b1ad2ab7cf6089c03..0c0ab8dd9f7079da2354569e1ec40cc4fc0a8f70 100644 --- a/src/fvOptions/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H +++ b/src/fvOptions/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,16 +56,13 @@ Description Usage Example usage: \verbatim - actuationDiskSourceCoeffs - { - fields (U); // names of fields to apply source - diskDir (-1 0 0); // disk direction - Cp 0.1; // power coefficient - Ct 0.5; // thrust coefficient - diskArea 5.0; // disk area - coeffs (0.1 0.5 0.01); // radial distribution coefficients - upstreamPoint (0 0 0); // upstream point - } + fields (U); // names of fields to apply source + diskDir (-1 0 0); // disk direction + Cp 0.1; // power coefficient + Ct 0.5; // thrust coefficient + diskArea 5.0; // disk area + coeffs (0.1 0.5 0.01); // radial distribution coefficients + upstreamPoint (0 0 0); // upstream point \endverbatim diff --git a/src/fvOptions/sources/derived/rotorDiskSource/profileModel/profileModel.C b/src/fvOptions/sources/derived/rotorDiskSource/profileModel/profileModel.C index c4f4b1a1ceb5468ffa00db8e4162a8462db43d5e..a9b037a8ae5cfdcdc7f5cf47be2a8b6c00bc9fad 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/profileModel/profileModel.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/profileModel/profileModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,7 @@ Foam::profileModel::profileModel(const dictionary& dict, const word& name) name_(name), fName_(fileName::null) { - dict.readIfPresent("fileName", fName_); + dict.readIfPresent("file", fName_); } // * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C index 129d5b1699841cd58e3b99971bbefdd19aec8bc1..bf8594073bb207229c3ebca119b0551584e99dff 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C @@ -376,7 +376,8 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem() FatalErrorInFunction << "Unknown geometryMode " << geometryModeTypeNames_[gm] << ". Available geometry modes include " - << geometryModeTypeNames_ << exit(FatalError); + << geometryModeTypeNames_ + << exit(FatalError); } } diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H index db6b8db3758a5242a3960044b643abb5646b44e4..2ff034676ad9902e773351ebc92590daaf181f37 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H +++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,8 +36,6 @@ Description Usage Example usage: \verbatim - rotorDiskSourceCoeffs - { fields (U); // names of fields on which to apply source nBlades 3; // number of blades tipEffect 0.96; // normalised radius above which lift = 0 @@ -76,7 +74,6 @@ Usage ... } } - } \endverbatim Where: diff --git a/src/fvOptions/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C b/src/fvOptions/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C index 5522250772b63ebbf25743925704a3e3a0da6ebc..d0b3468d54c0e6fa58fa2c51a99835f5901f5585 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -91,9 +91,7 @@ void Foam::fixedTrim::correct const vectorField& U, vectorField& force ) -{ - // do nothing -} +{} void Foam::fixedTrim::correct @@ -101,9 +99,7 @@ void Foam::fixedTrim::correct const volScalarField rho, const vectorField& U, vectorField& force) -{ - // do nothing -} +{} // ************************************************************************* // diff --git a/src/fvOptions/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C b/src/fvOptions/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C index 9126ee841d42cbad4f85a063a0613d79c58c8fb9..bfd9f3d9352858d9759108e1ceb737f4cc7aec2c 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,7 +60,7 @@ Foam::trimModel::~trimModel() void Foam::trimModel::read(const dictionary& dict) { - coeffs_ = dict.subDict(name_ + "Coeffs"); + coeffs_ = dict.optionalSubDict(name_ + "Coeffs"); } diff --git a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C index 859ef24a2b1d6366c3faaa59d5da8704bcebe03f..7867633b8dfdf4407efee3bfa442f88a674d601a 100644 --- a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C +++ b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -243,7 +243,7 @@ Foam::fv::solidificationMeltingSource::solidificationMeltingSource } } - applied_.setSize(2, false); + applied_.setSize(fieldNames_.size(), false); } diff --git a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.H b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.H index be21eec8ce4bfb16619b7c6efd7cbbbdfeab3c12..d1ea36c07cfa6bdf78cdc5b3bd756a42b9554c31 100644 --- a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.H +++ b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,17 +55,14 @@ Usage type solidificationMeltingSource; active yes; - solidificationMeltingSourceCoeffs - { - selectionMode cellZone; - cellZone iceZone; - - Tmelt 273; - L 334000; - thermoMode thermo; - beta 50e-6; - rhoRef 800; - } + selectionMode cellZone; + cellZone iceZone; + + Tmelt 273; + L 334000; + thermoMode thermo; + beta 50e-6; + rhoRef 800; } \endverbatim diff --git a/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.H b/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.H index 9c113f59a92242d35dd4b9af203c18a0119ac946..0a9b56195538b74249c0023265e8c5c0d00fb313 100644 --- a/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.H +++ b/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,10 +38,7 @@ Usage type tabulatedAccelerationSource; active yes; - tabulatedAccelerationSourceCoeffs - { - timeDataFileName "constant/acceleration-terms.dat"; - } + timeDataFileName "constant/acceleration-terms.dat"; } \endverbatim diff --git a/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.H b/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.H index 73e5f3a56e2b4db7a1ff20f81535477c1c582fca..9b22b05bc62869ac6421a40b8cc87cb0408a32ba 100644 --- a/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.H +++ b/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,14 +45,11 @@ Description Example of the source specification: \verbatim - <Type>SemiImplicitSourceCoeffs + volumeMode absolute; // specific + injectionRateSuSp { - volumeMode absolute; // specific - injectionRateSuSp - { - k (30.7 0); - epsilon (1.5 0); - } + k (30.7 0); + epsilon (1.5 0); } \endverbatim diff --git a/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C b/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C index 292f445f9328aeff6ad7fcc37fa42bb2dab6b343..155280d17cef3e2c11d75468fde9a1a74185d49b 100644 --- a/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C +++ b/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C @@ -66,12 +66,7 @@ Foam::DSMCParcel<ParcelType>::DSMCParcel } } - // Check state of Istream - is.check - ( - "DSMCParcel<ParcelType>::DSMCParcel" - "(const Cloud<ParcelType>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -164,12 +159,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const DSMCParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C index 4dd3558af7b8ef4d0a41480ef2de7c280b0512b8..9b66f53706aabc512eba6538d2b50e7fdad4c8cb 100644 --- a/src/lagrangian/basic/Cloud/Cloud.C +++ b/src/lagrangian/basic/Cloud/Cloud.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -232,7 +232,7 @@ void Foam::Cloud<ParticleType>::move(TrackData& td, const scalar trackTime) ); // Allocate transfer buffers - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // While there are particles to transfer diff --git a/src/lagrangian/basic/Cloud/CloudIO.C b/src/lagrangian/basic/Cloud/CloudIO.C index 33e26087860f513faab420d27a42221430c24179..83369d1a4f0c28cca547af0324f4ded8a5417275 100644 --- a/src/lagrangian/basic/Cloud/CloudIO.C +++ b/src/lagrangian/basic/Cloud/CloudIO.C @@ -262,9 +262,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const Cloud<ParticleType>& pc) { pc.writeData(os); - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const Cloud<ParticleType>&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/basic/IOPosition/IOPosition.C b/src/lagrangian/basic/IOPosition/IOPosition.C index b89b2c0b4c3a30aa8202db746275c8f57aa30ed5..5c977b54d29754244db1fea82c9321cb3e568af8 100644 --- a/src/lagrangian/basic/IOPosition/IOPosition.C +++ b/src/lagrangian/basic/IOPosition/IOPosition.C @@ -139,11 +139,7 @@ void Foam::IOPosition<CloudType>::readData(CloudType& c, bool checkClass) << firstToken.info() << exit(FatalIOError); } - // Check state of IOstream - is.check - ( - "void IOPosition<CloudType>::readData(CloudType&, bool)" - ); + is.check(FUNCTION_NAME); } diff --git a/src/lagrangian/basic/InteractionLists/InteractionLists.H b/src/lagrangian/basic/InteractionLists/InteractionLists.H index 613c5fd31fb55063c9ce0103ec53d31504243399..f44a17ead530f5746fd03f25a7e665e3af47dbdd 100644 --- a/src/lagrangian/basic/InteractionLists/InteractionLists.H +++ b/src/lagrangian/basic/InteractionLists/InteractionLists.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,7 +37,7 @@ Description Simultaneous communication and computation is possible using: \verbatim - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); label startOfRequests = Pstream::nRequests(); il_.sendReferredData(cellOccupancy_, pBufs); // Do other things diff --git a/src/lagrangian/basic/InteractionLists/referredWallFace/referredWallFace.C b/src/lagrangian/basic/InteractionLists/referredWallFace/referredWallFace.C index e8ce9f9da0780f1ac77663d6430768981d38ea28..25550be99096ec4de511039ff37c09446cfbffb1 100644 --- a/src/lagrangian/basic/InteractionLists/referredWallFace/referredWallFace.C +++ b/src/lagrangian/basic/InteractionLists/referredWallFace/referredWallFace.C @@ -101,13 +101,7 @@ Foam::Istream& Foam::operator>>(Istream& is, referredWallFace& rWF) { is >> static_cast<face&>(rWF) >> rWF.pts_ >> rWF.patchi_; - // Check state of Istream - is.check - ( - "Foam::Istream& " - "Foam::operator>>(Foam::Istream&, Foam::referredWallFace&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -118,13 +112,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const referredWallFace& rWF) << rWF.pts_ << token::SPACE << rWF.patchi_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::referredWallFace&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/basic/injectedParticle/injectedParticleIO.C b/src/lagrangian/basic/injectedParticle/injectedParticleIO.C index 3ae1edd1685e6d304883f49b5bf3e48d957a28eb..39313222c98c2a84c5c109ce2bd8c011d7ff8685 100644 --- a/src/lagrangian/basic/injectedParticle/injectedParticleIO.C +++ b/src/lagrangian/basic/injectedParticle/injectedParticleIO.C @@ -72,12 +72,7 @@ Foam::injectedParticle::injectedParticle } } - // Check state of Istream - is.check - ( - "injectedParticle::injectedParticle" - "(const polyMesh&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -207,12 +202,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const injectedParticle&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/basic/particle/particleIO.C b/src/lagrangian/basic/particle/particleIO.C index 3c9513f898935873ab187d380cc25b1226866886..b9e40bc3d9228fb6da0a26b74f4787edf9ef41d3 100644 --- a/src/lagrangian/basic/particle/particleIO.C +++ b/src/lagrangian/basic/particle/particleIO.C @@ -83,7 +83,7 @@ Foam::particle::particle(const polyMesh& mesh, Istream& is, bool readFields) } // Check state of Istream - is.check("particle::particle(Istream&, bool)"); + is.check(FUNCTION_NAME); } @@ -99,7 +99,7 @@ void Foam::particle::writePosition(Ostream& os) const } // Check state of Ostream - os.check("particle::writePosition(Ostream& os, bool) const"); + os.check(FUNCTION_NAME); } diff --git a/src/lagrangian/coalCombustion/Make/options b/src/lagrangian/coalCombustion/Make/options index 87e1d6a7102e0b872d994a0be3c72aaa803a6bb6..faa05e8bd21b0b6a6c88f0d2c3c509195ea3ce6c 100644 --- a/src/lagrangian/coalCombustion/Make/options +++ b/src/lagrangian/coalCombustion/Make/options @@ -5,10 +5,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ @@ -31,10 +28,7 @@ LIB_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lradiationModels \ diff --git a/src/lagrangian/distributionModels/distributionModel/distributionModel.C b/src/lagrangian/distributionModels/distributionModel/distributionModel.C index 6343ea37574ca56cbb0c417c19f10208767e5c96..27cf79a7ed79edd0b9c837c3619298a5308c2cf2 100644 --- a/src/lagrangian/distributionModels/distributionModel/distributionModel.C +++ b/src/lagrangian/distributionModels/distributionModel/distributionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,17 +29,14 @@ License namespace Foam { - namespace distributionModels - { - defineTypeNameAndDebug(distributionModel, 0); - defineRunTimeSelectionTable(distributionModel, dictionary); - } + defineTypeNameAndDebug(distributionModel, 0); + defineRunTimeSelectionTable(distributionModel, dictionary); } // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::distributionModels::distributionModel::check() const +void Foam::distributionModel::check() const { if (minValue() < 0) { @@ -62,7 +59,7 @@ void Foam::distributionModels::distributionModel::check() const // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::distributionModels::distributionModel::distributionModel +Foam::distributionModel::distributionModel ( const word& name, const dictionary& dict, @@ -74,7 +71,7 @@ Foam::distributionModels::distributionModel::distributionModel {} -Foam::distributionModels::distributionModel::distributionModel +Foam::distributionModel::distributionModel ( const distributionModel& p ) @@ -86,7 +83,7 @@ Foam::distributionModels::distributionModel::distributionModel // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::distributionModels::distributionModel::~distributionModel() +Foam::distributionModel::~distributionModel() {} diff --git a/src/lagrangian/distributionModels/distributionModel/distributionModel.H b/src/lagrangian/distributionModels/distributionModel/distributionModel.H index 0be1489929be966b7e3ab435cd6f517926df86ab..c9611e8a3116c7fba2702db0175c8f7924a2c5b1 100644 --- a/src/lagrangian/distributionModels/distributionModel/distributionModel.H +++ b/src/lagrangian/distributionModels/distributionModel/distributionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,8 +61,6 @@ SourceFiles namespace Foam { -namespace distributionModels -{ /*---------------------------------------------------------------------------*\ Class distributionModel Declaration @@ -155,7 +153,6 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace distributionModels } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/distributionModels/distributionModel/distributionModelNew.C b/src/lagrangian/distributionModels/distributionModel/distributionModelNew.C index d5d3132187cba0fb0480cbcb733661577e047404..9fa9d5c334cb5aa6c469346d27454cf9647f08a3 100644 --- a/src/lagrangian/distributionModels/distributionModel/distributionModelNew.C +++ b/src/lagrangian/distributionModels/distributionModel/distributionModelNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -27,8 +27,7 @@ License // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::distributionModels::distributionModel> -Foam::distributionModels::distributionModel::New +Foam::autoPtr<Foam::distributionModel> Foam::distributionModel::New ( const dictionary& dict, Random& rndGen diff --git a/src/lagrangian/intermediate/Make/options b/src/lagrangian/intermediate/Make/options index a94e947f6790a21592b4ada355306eac76d41b95..879f3ef6345aae57dc3d43c23b6d4407fc0aba41 100644 --- a/src/lagrangian/intermediate/Make/options +++ b/src/lagrangian/intermediate/Make/options @@ -4,10 +4,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ @@ -27,10 +24,7 @@ LIB_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lradiationModels \ diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C index a5d5074f52776c8d1897abae16d8d66bf8372d4b..f63e02daf069dc90586b16d23ada49232c53366d 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C @@ -73,12 +73,7 @@ Foam::CollidingParcel<ParcelType>::CollidingParcel is >> collisionRecords_; } - // Check state of Istream - is.check - ( - "CollidingParcel<ParcelType>::Collisions" - "(const polyMesh&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -335,12 +330,7 @@ Foam::Ostream& Foam::operator<< os << p.collisionRecords(); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const CollidingParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/CollisionRecordList.C b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/CollisionRecordList.C index d8622ad69a45a71cf8716d99f6721a75cd802494..06f0f24da9cbfff293aba69db17db89d6425efc8 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/CollisionRecordList.C +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/CollisionRecordList.C @@ -42,12 +42,7 @@ Foam::CollisionRecordList<PairType, WallType>::CollisionRecordList(Istream& is) pairRecords_(is), wallRecords_(is) { - // Check state of Istream - is.check - ( - "Foam::CollisionRecordList<PairType, WallType>::" - "CollisionRecordList(Foam::Istream&)" - ); + is.check(FUNCTION_NAME); } @@ -448,13 +443,7 @@ Foam::Istream& Foam::operator>> { is >> cRL.pairRecords_ >> cRL.wallRecords_; - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::CollisionRecordList<PairType, WallType>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -468,13 +457,7 @@ Foam::Ostream& Foam::operator<< { os << cRL.pairRecords_ << cRL.wallRecords_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::CollisionRecordList<PairType, WallType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/PairCollisionRecord/PairCollisionRecordIO.C b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/PairCollisionRecord/PairCollisionRecordIO.C index 880febc61351caa53a51d889054346526af06d3e..56e5195d7caf721867b2bfef281c98f0eae83dbf 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/PairCollisionRecord/PairCollisionRecordIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/PairCollisionRecord/PairCollisionRecordIO.C @@ -35,11 +35,7 @@ Foam::PairCollisionRecord<Type>::PairCollisionRecord(Istream& is) origIdOfOther_(readLabel(is)), data_(is) { - // Check state of Istream - is.check - ( - "Foam::PairCollisionRecord<Type>::PairCollisionRecord(Foam::Istream&)" - ); + is.check(FUNCTION_NAME); } @@ -50,13 +46,7 @@ Foam::Istream& Foam::operator>>(Istream& is, PairCollisionRecord<Type>& pCR) { is >> pCR.origProcOfOther_ >> pCR.origIdOfOther_ >> pCR.data_; - // Check state of Istream - is.check - ( - "Foam::Istream&" - "Foam::operator>>(Foam::Istream&, Foam::PairCollisionRecord<Type>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -72,13 +62,7 @@ Foam::Ostream& Foam::operator<< << token::SPACE << pCR.origIdOfOther_ << token::SPACE << pCR.data_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::PairCollisionRecord<Type>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/WallCollisionRecord/WallCollisionRecordIO.C b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/WallCollisionRecord/WallCollisionRecordIO.C index 48159c01b4759a496a28a7a12b655dac7d5fc030..767aee8cce385afc635bec1f618e6e84d3f6ef20 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/WallCollisionRecord/WallCollisionRecordIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollisionRecordList/WallCollisionRecord/WallCollisionRecordIO.C @@ -35,11 +35,7 @@ Foam::WallCollisionRecord<Type>::WallCollisionRecord(Istream& is) pRel_(is), data_(is) { - // Check state of Istream - is.check - ( - "Foam::WallCollisionRecord<Type>::WallCollisionRecord(Foam::Istream&)" - ); + is.check(FUNCTION_NAME); } @@ -50,13 +46,7 @@ Foam::Istream& Foam::operator>>(Istream& is, WallCollisionRecord<Type>& wCR) { is >> wCR.accessed_ >> wCR.pRel_ >> wCR.data_; - // Check state of Istream - is.check - ( - "Foam::Istream&" - "Foam::operator>>(Foam::Istream&, Foam::WallCollisionRecord<Type>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -72,13 +62,7 @@ Foam::Ostream& Foam::operator<< << token::SPACE << wCR.pRel_ << token::SPACE << wCR.data_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::WallCollisionRecord<Type>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index c4c4ddda835d0cc58aa778c00dd97fa602b98624..b593d4393bff82a69edb1d7a43b77512d065e29e 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -402,10 +402,15 @@ bool Foam::KinematicParcel<ParcelType>::hitPatch td.keepParticle ); - // Invoke surface film model - if (td.cloud().surfaceFilm().transferParcel(p, pp, td.keepParticle)) + if (isA<processorPolyPatch>(pp)) { - // All interactions done + // Skip processor patches + return false; + } + else if (td.cloud().surfaceFilm().transferParcel(p, pp, td.keepParticle)) + { + // Surface film model consumes the interaction, i.e. all + // interactions done return true; } else diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C index 2e44545ca523e135b89dfcdcaccedef94e7f3884..7e3b838d7c658bdccd2ba327efcb671313133156 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C @@ -92,12 +92,7 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel } } - // Check state of Istream - is.check - ( - "KinematicParcel<ParcelType>::KinematicParcel" - "(const polyMesh&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -302,12 +297,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const KinematicParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C index 452b5b0eab6559f8d45e81be0c72331099693ba7..ec582209c6e75380c2ffcde3139240bec0a72ee7 100644 --- a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C @@ -69,11 +69,7 @@ Foam::MPPICParcel<ParcelType>::MPPICParcel } } - is.check - ( - "MPPICParcel<ParcelType>::Collisions" - "(const polyMesh&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -182,11 +178,7 @@ Foam::Ostream& Foam::operator<< ); } - os.check - ( - "Ostream& operator<<(Ostream&, const MPPICParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C index cf15a6d49782964089ed5b83e7a7c183c807aae0..399f67879d8472654229a63c4a0c02e6b7f44e39 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C @@ -78,16 +78,7 @@ Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel YSolid_ /= YMix[SLD] + ROOTVSMALL; } - // Check state of Istream - is.check - ( - "ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel" - "(" - "const polyMesh&, " - "Istream&, " - "bool" - ")" - ); + is.check(FUNCTION_NAME); } @@ -454,16 +445,7 @@ Foam::Ostream& Foam::operator<< os << YGasLoc << YLiquidLoc << YSolidLoc; } - // Check state of Ostream - os.check - ( - "Ostream& operator<<" - "(" - "Ostream&, " - "const ReactingMultiphaseParcel<ParcelType>&" - ")" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C index 1b6e90cbe3280fc12e3cb60960905a70c985722e..6574af96cf185ea2ac07201e7924e6f455253d2b 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C @@ -75,16 +75,7 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel Y_.transfer(Ymix); } - // Check state of Istream - is.check - ( - "ReactingParcel<ParcelType>::ReactingParcel" - "(" - "const polyMesh&, " - "Istream&, " - "bool" - ")" - ); + is.check(FUNCTION_NAME); } @@ -328,12 +319,7 @@ Foam::Ostream& Foam::operator<< os << p.Y(); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const ReactingParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C index 60f2e82d6960ccef7c7da355dd01228f1c4d66a8..f23059e22fba52ef83361e1feda2f9c52dd5493a 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C @@ -73,11 +73,7 @@ Foam::ThermoParcel<ParcelType>::ThermoParcel } } - // Check state of Istream - is.check - ( - "ThermoParcel::ThermoParcel(const polyMesh&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -189,12 +185,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const ThermoParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H index b2556cba13bb25757f06f16d603c7558de3ed4f4..510e3bb8132fe09cf152a297d3fb0d7edc8a77f6 100644 --- a/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H +++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,4 +47,3 @@ License #endif // ************************************************************************* // - diff --git a/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C index eded687e414b2175e70be70b722f15a17bda1c8d..e981fc903b9ad38a5f8697f6122928de60b4c5f5 100644 --- a/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C +++ b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C @@ -36,7 +36,7 @@ Foam::phaseProperties::phaseProperties(Istream& is) Y_(0), carrierIds_(0) { - is.check("Foam::phaseProperties::phaseProperties(Istream& is)"); + is.check(FUNCTION_NAME); dictionaryEntry phaseInfo(dictionary::null, is); @@ -67,10 +67,7 @@ Foam::phaseProperties::phaseProperties(Istream& is) Foam::Istream& Foam::operator>>(Istream& is, phaseProperties& pp) { - is.check - ( - "Foam::Istream& Foam::operator>>(Istream&, phaseProperties&)" - ); + is.check(FUNCTION_NAME); dictionaryEntry phaseInfo(dictionary::null, is); @@ -102,10 +99,7 @@ Foam::Istream& Foam::operator>>(Istream& is, phaseProperties& pp) Foam::Ostream& Foam::operator<<(Ostream& os, const phaseProperties& pp) { - os.check - ( - "Foam::Ostream& Foam::operator<<(Ostream&, const phaseProperties&)" - ); + os.check(FUNCTION_NAME); os << pp.phaseTypeNames[pp.phase_] << nl << token::BEGIN_BLOCK << nl << incrIndent; @@ -118,11 +112,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const phaseProperties& pp) os << decrIndent << token::END_BLOCK << nl; - os.check - ( - "Foam::Ostream& Foam::operator<<(Ostream&, const phaseProperties&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C index b0e6c2b32e600df4185429c86d92a21d8e335f8a..20d230625c099161e2a9e933d735236ea0d93a16 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -95,9 +95,7 @@ Foam::CloudFunctionObject<CloudType>::~CloudFunctionObject() template<class CloudType> void Foam::CloudFunctionObject<CloudType>::preEvolve() -{ - // do nothing -} +{} template<class CloudType> @@ -119,9 +117,7 @@ void Foam::CloudFunctionObject<CloudType>::postMove const point&, bool& ) -{ - // do nothing -} +{} template<class CloudType> @@ -133,9 +129,7 @@ void Foam::CloudFunctionObject<CloudType>::postPatch const tetIndices&, bool& ) -{ - // do nothing -} +{} template<class CloudType> @@ -145,9 +139,7 @@ void Foam::CloudFunctionObject<CloudType>::postFace const label, bool& ) -{ - // do nothing -} +{} template<class CloudType> diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C index 5cc2c3a76703f684e8a72019bec35439a1833bbe..835aa969eb0e6e4aa8b4cf2d835b5d760eadda38 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -200,7 +200,7 @@ void Foam::ParticleCollector<CloudType>::initConcentricCircles() label nPoint = radius_.size()*nPointPerRadius; label nFace = radius_.size()*nS; - // add origin + // Add origin nPoint++; points_.setSize(nPoint); @@ -213,7 +213,7 @@ void Foam::ParticleCollector<CloudType>::initConcentricCircles() points_[0] = origin; - // points + // Points forAll(radius_, radI) { label pointOffset = radI*nPointPerRadius + 1; @@ -226,7 +226,7 @@ void Foam::ParticleCollector<CloudType>::initConcentricCircles() } } - // faces + // Faces DynamicList<label> facePts(2*nPointPerSector); forAll(radius_, radI) { @@ -236,7 +236,7 @@ void Foam::ParticleCollector<CloudType>::initConcentricCircles() { facePts.clear(); - // append origin point + // Append origin point facePts.append(0); for (label ptI = 0; ptI < nPointPerSector; ptI++) @@ -304,16 +304,16 @@ void Foam::ParticleCollector<CloudType>::collectParcelPolygon if (sign(d1) == sign(d2)) { - // did not cross polygon plane + // Did not cross polygon plane continue; } - // intersection point + // Intersection point const point pIntersect = p1 + (d1/(d1 - d2))*(p2 - p1); const List<face>& tris = faceTris_[facei]; - // identify if point is within poly bounds + // Identify if point is within poly bounds forAll(tris, triI) { const face& tri = tris[triI]; @@ -347,11 +347,11 @@ void Foam::ParticleCollector<CloudType>::collectParcelConcentricCircles if (sign(d1) == sign(d2)) { - // did not cross plane + // Did not cross plane return; } - // intersection point in cylindrical co-ordinate system + // Intersection point in cylindrical co-ordinate system const point pCyl = coordSys_.localPosition(p1 + (d1/(d1 - d2))*(p2 - p1)); scalar r = pCyl[0]; @@ -379,7 +379,10 @@ void Foam::ParticleCollector<CloudType>::collectParcelConcentricCircles scalar(nSector_)*theta/constant::mathematical::twoPi ); } + } + if (secI != -1) + { hitFaceIDs_.append(secI); } } @@ -657,7 +660,7 @@ void Foam::ParticleCollector<CloudType>::postMove return; } - // slightly extend end position to avoid falling within tracking tolerances + // Slightly extend end position to avoid falling within tracking tolerances const point position1 = position0 + 1.0001*(p.position() - position0); hitFaceIDs_.clear(); @@ -675,8 +678,7 @@ void Foam::ParticleCollector<CloudType>::postMove break; } default: - { - } + {} } @@ -687,15 +689,33 @@ void Foam::ParticleCollector<CloudType>::postMove if (negateParcelsOppositeNormal_) { + scalar Unormal = 0; vector Uhat = p.U(); + switch (mode_) + { + case mtPolygon: + { + Unormal = Uhat & normal_[facei]; + break; + } + case mtConcentricCircle: + { + Unormal = Uhat & normal_[0]; + break; + } + default: + {} + } + Uhat /= mag(Uhat) + ROOTVSMALL; - if ((Uhat & normal_[facei]) < 0) + + if (Unormal < 0) { - m *= -1.0; + m = -m; } } - // add mass contribution + // Add mass contribution mass_[facei] += m; if (nSector_ == 1) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C index 5c0087e52f5e7930fb53fc73a9ec394a8eb3f021..24090749f2f25ac5e3ef1ec32e8c7bfbefdd73c8 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ void Foam::PairCollision<CloudType>::preInteraction() template<class CloudType> void Foam::PairCollision<CloudType>::parcelInteraction() { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); label startOfRequests = Pstream::nRequests(); diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallSiteData/WallSiteData.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallSiteData/WallSiteData.C index f14910bb9010d5b210e5ec094a46d978732637bc..e70bfc03cb2ef0a949da1d3395441a491c5e902e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallSiteData/WallSiteData.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallSiteData/WallSiteData.C @@ -87,13 +87,7 @@ Foam::Istream& Foam::operator>> { is >> wIS.patchi_ >> wIS.wallData_; - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::WallSiteData<Type>&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -107,13 +101,7 @@ Foam::Ostream& Foam::operator<< { os << wIS.patchi_ << token::SPACE << wIS.wallData_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Ostream&, const WallSiteData<Type>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C index eec313925fb99c033e2eaced3fb73f188e71f300..51d706f6a003f55b7ea00b4afbc57bdc91287dec 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,7 +68,6 @@ Foam::vector Foam::NoDispersion<CloudType>::update scalar& ) { - // Do nothing return Uc; } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C index 06ed2d542c4e44545b8be7bfbb87f7dfed7f4895..1e39c9050ac72531a637ecb9b813367d74d87515 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -179,7 +179,7 @@ Foam::CellZoneInjection<CloudType>::CellZoneInjection U0_(this->coeffDict().lookup("U0")), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() ) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H index 38ac9a0f061f988a43619127a78470b7b2af7b91..0e7b3d401e27a92de6f27a38904717b83431db22 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,7 @@ class CellZoneInjection const vector U0_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; // Private Member Functions diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C index 11300c42734d04bd4a3135b4666c3898426746ce..6651a9573feeb71b6e68a2dfa9b00265961328c1 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -88,7 +88,7 @@ Foam::ConeInjection<CloudType>::ConeInjection ), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() ) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H index ff2a7ab01d99b20e6f46f2df56ce011230895fbd..1f5ae584338b6acc85b447fcdc3eac34274a4e1c 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,7 +100,7 @@ class ConeInjection const TimeFunction1<scalar> thetaOuter_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; //- Number of parcels per injector already injected mutable label nInjected_; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C index b8bcd7464ed7858e73efe58b5b71be478bff9709..6ac062ee574c727af5a45f1e1dd5efc91084c7af 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C @@ -146,7 +146,7 @@ Foam::ConeNozzleInjection<CloudType>::ConeNozzleInjection ), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H index 5412745fea8c4ddafd566111b1496dc7599297ab..f84b9fd0b728b718c5b5dd9186905a9d4fe8886f 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -152,7 +152,7 @@ private: const TimeFunction1<scalar> thetaOuter_; //- Parcel size PDF model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; // Tangential vectors to the direction vector diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C index d39184b4734291773b5cb38ec67abab97022bc8e..70daf04625d11a17cafd6210a0004dcced85b84d 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -79,7 +79,7 @@ Foam::FieldActivatedInjection<CloudType>::FieldActivatedInjection diameters_(positions_.size()), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H index 24740ef063a87adae342e45738e1ddcf3d541fc7..c4ec33c2785e56c1b92d102ef459cc8a384cfd0e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -115,7 +115,7 @@ class FieldActivatedInjection scalarList diameters_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> + const autoPtr<distributionModel> sizeDistribution_; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C index 41cf67a56ddc8422af67bc105a21ea3995962819..5078830ad98cdcb573f15abd9755fbc6becd0aee 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -72,7 +72,7 @@ Foam::InflationInjection<CloudType>::InflationInjection dSeed_(SMALL), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() @@ -155,9 +155,7 @@ Foam::InflationInjection<CloudType>::~InflationInjection() template<class CloudType> void Foam::InflationInjection<CloudType>::updateMesh() -{ - // do nothing -} +{} template<class CloudType> diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H index 2529b3deaa6acbd8535d35c86b8b4d4b0503abdc..13d4843f94bad9f3e148a6e1db8e9c35ec5fda80 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -111,7 +111,7 @@ class InflationInjection scalar dSeed_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; public: diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C index 95e598629ccf04da9421014d3b5d33427ad0445a..6c93eee808aa5f86d1a76ea777a315a3fdae5646 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C @@ -44,7 +44,7 @@ Foam::kinematicParcelInjectionData::kinematicParcelInjectionData(Istream& is) is.check("reading mDot"); is >> mDot_; - is.check("kinematicParcelInjectionData(Istream& is)"); + is.check(FUNCTION_NAME); } @@ -79,7 +79,7 @@ Foam::Istream& Foam::operator>>(Istream& is, kinematicParcelInjectionData& data) is.check("reading mDot"); is >> data.mDot_; - is.check("operator(Istream&, kinematicParcelInjectionData&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C index da1ab62839e76e760fc4f51b7b014a58d497fc70..4898bc12da568e1cda7c95f57a8bd707d544dd13 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -59,7 +59,7 @@ Foam::ManualInjection<CloudType>::ManualInjection U0_(this->coeffDict().lookup("U0")), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H index e8e2e50a5ce23852be6db5cde0a73776350c5599..ea2d0752dfa7d928faddcd3cd3fb8c13a4b51288 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -90,7 +90,7 @@ class ManualInjection const vector U0_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; //- Flag to suppress errors if particle injection site is out-of-bounds Switch ignoreOutOfBounds_; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.C index 1244c85dcb58c8b029b1a5374a655d6551f73971..a7ad2372dd4beb2817d5117dd6e5742bbbb8b379 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -59,7 +59,7 @@ Foam::PatchFlowRateInjection<CloudType>::PatchFlowRateInjection ), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.H index 33adae4528cdd13e107de4163d3cb315275510e2..2e9f1e71a84a191aebb683e44bbdf22aaa67bd1b 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchFlowRateInjection/PatchFlowRateInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,7 +89,7 @@ class PatchFlowRateInjection const scalar parcelConcentration_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; public: diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C index c0a898c1565d5fa234fe7c8e18778493b351b124..a56d81e3cef4bed340f6bbcf9585842d22c07272 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::PatchInjection<CloudType>::PatchInjection ), sizeDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( this->coeffDict().subDict("sizeDistribution"), owner.rndGen() diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H index 7eec81c2b415e6a1caf51c82b8ba7b0be2d261b1..12267aef30b999990af7dc73a2f47c2ca21fdbbd 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,7 +87,7 @@ class PatchInjection const TimeFunction1<scalar> flowRateProfile_; //- Parcel size distribution model - const autoPtr<distributionModels::distributionModel> sizeDistribution_; + const autoPtr<distributionModel> sizeDistribution_; public: diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C index 713c994902e582e1ac984d9fdb3e7689c7015e62..a0c012704343ac424693267954c50c25338c75a0 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -201,29 +201,57 @@ void Foam::patchInjectionBase::setPositionAndCell // Position perturbed away from face (into domain) const scalar a = rnd.position(scalar(0.1), scalar(0.5)); const vector& pc = mesh.cellCentres()[cellOwner]; - const vector d = mag(pf - pc)*patchNormal_[facei]; + const vector d = + mag((pf - pc) & patchNormal_[facei])*patchNormal_[facei]; position = pf - a*d; - // The position is between the face and cell centre, which could - // be in any tet of the decomposed cell, so arbitrarily choose the - // first face of the cell as the tetFace and the first point after - // the base point on the face as the tetPt. The tracking will pick - // the cell consistent with the motion in the first tracking step - //tetFaceI = mesh.cells()[cellOwner][0]; - //tetPtI = 1; - - //SAF: temporary fix for patchInjection. - // This function finds both cellOwner and tetFaceI. The particle - // was injected in a non-boundary cell and the tracking function - // could not find the cellOwner - mesh.findCellFacePt - ( - position, - cellOwner, - tetFacei, - tetPti - ); + // Try to find tetFacei and tetPti in the current position + mesh.findTetFacePt(cellOwner, position, tetFacei, tetPti); + + // tetFacei and tetPti not found, check if the cell has changed + if (tetFacei == -1 ||tetPti == -1) + { + mesh.findCellFacePt(position, cellOwner, tetFacei, tetPti); + } + + // Both searches failed, choose a random position within + // the original cell + if (tetFacei == -1 ||tetPti == -1) + { + // Reset cellOwner + cellOwner = cellOwners_[facei]; + const scalarField& V = mesh.V(); + + // Construct cell tet indices + const List<tetIndices> cellTetIs = + polyMeshTetDecomposition::cellTetIndices(mesh, cellOwner); + + // Construct cell tet volume fractions + scalarList cTetVFrac(cellTetIs.size(), 0.0); + for (label teti=1; teti<cellTetIs.size()-1; teti++) + { + cTetVFrac[teti] = + cTetVFrac[teti-1] + + cellTetIs[teti].tet(mesh).mag()/V[cellOwner]; + } + cTetVFrac.last() = 1; + + // Set new particle position + const scalar volFrac = rnd.sample01<scalar>(); + label teti = 0; + forAll(cTetVFrac, vfI) + { + if (cTetVFrac[vfI] > volFrac) + { + teti = vfI; + break; + } + } + position = cellTetIs[teti].tet(mesh).randomPoint(rnd); + tetFacei = cellTetIs[teti].face(); + tetPti = cellTetIs[teti].tetPt(); + } } else { diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C index e023c1d0ea47ad93f6ae66ec7b4a4b021326931c..23b5045a7ebfe405cfb7b465e505ada0dc52fd42 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -121,7 +121,7 @@ void Foam::NonInertialFrameForce<CloudType>::cacheFields(const bool store) ) ) { - uniformDimensionedVectorField W = this->mesh().template + const uniformDimensionedVectorField& W = this->mesh().template lookupObject<uniformDimensionedVectorField>(WName_); W_ = W.value(); @@ -135,7 +135,7 @@ void Foam::NonInertialFrameForce<CloudType>::cacheFields(const bool store) ) ) { - uniformDimensionedVectorField omega = this->mesh().template + const uniformDimensionedVectorField& omega = this->mesh().template lookupObject<uniformDimensionedVectorField>(omegaName_); omega_ = omega.value(); @@ -149,7 +149,8 @@ void Foam::NonInertialFrameForce<CloudType>::cacheFields(const bool store) ) ) { - uniformDimensionedVectorField omegaDot = this->mesh().template + const uniformDimensionedVectorField& omegaDot = + this->mesh().template lookupObject<uniformDimensionedVectorField>(omegaDotName_); omegaDot_ = omegaDot.value(); @@ -163,7 +164,7 @@ void Foam::NonInertialFrameForce<CloudType>::cacheFields(const bool store) ) ) { - uniformDimensionedVectorField centreOfRotation = + const uniformDimensionedVectorField& centreOfRotation = this->mesh().template lookupObject<uniformDimensionedVectorField> ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C index 5be57f6620d4d2cd25c7408f7df3f7f3be7625cd..4f68230634776c3ba3461634bc311dbaa21583ad 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -190,6 +190,10 @@ bool Foam::LocalInteraction<CloudType>::correct switch (it) { + case PatchInteractionModel<CloudType>::itNone: + { + return false; + } case PatchInteractionModel<CloudType>::itEscape: { scalar dm = p.mass()*p.nParticle(); diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C index 145d7590a5a35a54bfcfc6383cd14d9ea4ef9db6..2f6d4f3f21d775aaa5984809941b835df6dee2fd 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C @@ -72,7 +72,7 @@ Foam::Istream& Foam::operator>> patchInteractionData& pid ) { - is.check("Istream& operator>>(Istream&, patchInteractionData&)"); + is.check(FUNCTION_NAME); const dictionaryEntry entry(dictionary::null, is); diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionDataList.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionDataList.C index 5a409811535937179811f6c83ecb5c3c19dd5cda..9033ab2b8929a784c9e2bfdce4fc2e2b2d794d5b 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionDataList.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionDataList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,7 +26,6 @@ License #include "patchInteractionDataList.H" #include "stringListOps.H" #include "emptyPolyPatch.H" -#include "cyclicAMIPolyPatch.H" // * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * // @@ -74,7 +73,6 @@ Foam::patchInteractionDataList::patchInteractionDataList ( !pp.coupled() && !isA<emptyPolyPatch>(pp) - && !isA<cyclicAMIPolyPatch>(pp) && applyToPatch(pp.index()) < 0 ) { diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C index 942c89b22e4ef80cc1d8ef5818e58fb650018aeb..7c04d40d98a53e0ca51b1a6720cc2da9a310fc96 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C @@ -51,6 +51,11 @@ Foam::word Foam::PatchInteractionModel<CloudType>::interactionTypeToWord switch (itEnum) { + case itNone: + { + it = "none"; + break; + } case itRebound: { it = "rebound"; @@ -82,6 +87,10 @@ Foam::PatchInteractionModel<CloudType>::wordToInteractionType const word& itWord ) { + if (itWord == "none") + { + return itNone; + } if (itWord == "rebound") { return itRebound; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H index dac9faa0bba1b39a72e0db70b7595e09595c2864..3f259def9cf6887eadbe83514a39a0ac6cf28221 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,6 +68,7 @@ public: // Interaction types enum interactionType { + itNone, itRebound, itStick, itEscape, diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C index 9d2afb7d04108d63b8aa53a5911febe2d21e2747..ad478e068294f37939a505979ceaae35dbec9a1d 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -67,9 +67,7 @@ Foam::StandardWallInteraction<CloudType>::StandardWallInteraction break; } default: - { - // do nothing - } + {} } } @@ -116,6 +114,10 @@ bool Foam::StandardWallInteraction<CloudType>::correct { switch (interactionType_) { + case PatchInteractionModel<CloudType>::itNone: + { + return false; + } case PatchInteractionModel<CloudType>::itEscape: { keepParticle = false; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/NoStochasticCollision/NoStochasticCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/NoStochasticCollision/NoStochasticCollision.C index 563c0caaef69eb33063e7b143de1d0d93a44e856..9a62cf70e4b6f4ba96b80c11a22f8ffa8fbd530b 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/NoStochasticCollision/NoStochasticCollision.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/NoStochasticCollision/NoStochasticCollision.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,9 +29,7 @@ License template<class CloudType> void Foam::NoStochasticCollision<CloudType>::collide(const scalar) -{ - // do nothing -} +{} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/submodels/MPPIC/IsotropyModels/NoIsotropy/NoIsotropy.C b/src/lagrangian/intermediate/submodels/MPPIC/IsotropyModels/NoIsotropy/NoIsotropy.C index d8b0fb075d96b6da4dcb5ea33f49a80108e5d4d7..822f368e38487ff35ea8f613c0aee5bdd171937d 100644 --- a/src/lagrangian/intermediate/submodels/MPPIC/IsotropyModels/NoIsotropy/NoIsotropy.C +++ b/src/lagrangian/intermediate/submodels/MPPIC/IsotropyModels/NoIsotropy/NoIsotropy.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,9 +59,7 @@ Foam::IsotropyModels::NoIsotropy<CloudType>::~NoIsotropy() template<class CloudType> void Foam::IsotropyModels::NoIsotropy<CloudType>::calculate() -{ - // do nothing -} +{} template<class CloudType> diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C index 146543c7df1ef94f7881edbf07cacb1758705349..afc9de8766d2af52a7901956f8d9f1fb2066bdb0 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C +++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C @@ -34,7 +34,7 @@ Foam::reactingParcelInjectionData::reactingParcelInjectionData(Istream& is) is.check("reading Y's"); is >> Y_; - is.check("reactingParcelInjectionData(Istream& is)"); + is.check(FUNCTION_NAME); } @@ -61,7 +61,7 @@ Foam::Istream& Foam::operator>>(Istream& is, reactingParcelInjectionData& data) is.check("reading Y's"); is >> data.Y_; - is.check("operator(Istream&, reactingParcelInjectionData&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIO.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIO.C index cf0244e52f32a4df01ebcc549dbf56dee995791c..c455b08d22820e7c02e407cde064a56d27eca6f2 100644 --- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIO.C +++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIO.C @@ -41,7 +41,7 @@ reactingMultiphaseParcelInjectionData(Istream& is) is.check("reading YSolid's"); is >> YSolid_; - is.check("reactingMultiphaseParcelInjectionData(Istream& is)"); + is.check(FUNCTION_NAME); } @@ -78,7 +78,7 @@ Foam::Istream& Foam::operator>> is.check("reading YSolid's"); is >> data.YSolid_; - is.check("operator(Istream&, reactingMultiphaseParcelInjectionData&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C index 25a80d7a3b701c6ca6fe0a727f602f3ddb031b60..8ded8aca5f660e8f4e449fdd20daa1f213909e43 100644 --- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C +++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,8 +86,7 @@ Foam::scalar Foam::NoSurfaceReaction<CloudType>::calculate scalarField& ) const { - // do nothing - return 0.0; + return 0; } diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C index 259c7c53b425b8dc2fe780870b1927e2867c59a4..67c88f5e80b31eabf430aaab8e2fab85f35266cc 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C @@ -37,7 +37,7 @@ Foam::thermoParcelInjectionData::thermoParcelInjectionData(Istream& is) is.check("reading Cp"); is >> Cp_; - is.check("thermoParcelInjectionData(Istream& is)"); + is.check(FUNCTION_NAME); } @@ -67,7 +67,7 @@ Foam::Istream& Foam::operator>>(Istream& is, thermoParcelInjectionData& data) is.check("reading Cp"); is >> data.Cp_; - is.check("operator(Istream&, thermoParcelInjectionData&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C index a47b35df94908d12dc50f21832e83b415d351d60..c8adea407c39a08ae258f9a3fc7a77ce052bffd6 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -111,13 +111,13 @@ Foam::vector Foam::ThermoSurfaceFilm<CloudType>::splashDirection const vector& nf ) const { - // azimuthal angle [rad] + // Azimuthal angle [rad] const scalar phiSi = twoPi*rndGen_.sample01<scalar>(); - // ejection angle [rad] + // Ejection angle [rad] const scalar thetaSi = pi/180.0*(rndGen_.sample01<scalar>()*(50 - 5) + 5); - // direction vector of new parcel + // Direction vector of new parcel const scalar alpha = sin(thetaSi); const scalar dcorr = cos(thetaSi); const vector normal = alpha*(tanVec1*cos(phiSi) + tanVec2*sin(phiSi)); @@ -226,7 +226,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::drySplashInteraction const vector& Up = this->owner().U().boundaryField()[pp.index()][facei]; const vector& nf = pp.faceNormals()[facei]; - // local pressure + // Local pressure const scalar pc = thermo_.thermo().p()[p.cell()]; // Retrieve parcel properties @@ -247,13 +247,13 @@ void Foam::ThermoSurfaceFilm<CloudType>::drySplashInteraction // Critical Weber number const scalar Wec = Adry_*pow(La, -0.183); - if (We < Wec) // adhesion - assume absorb + if (We < Wec) // Adhesion - assume absorb { absorbInteraction(filmModel, p, pp, facei, m, keepParticle); } - else // splash + else // Splash { - // ratio of incident mass to splashing mass + // Ratio of incident mass to splashing mass const scalar mRatio = 0.2 + 0.6*rndGen_.sample01<scalar>(); splashInteraction (filmModel, p, pp, facei, mRatio, We, Wec, sigma, keepParticle); @@ -282,7 +282,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::wetSplashInteraction const vector& Up = this->owner().U().boundaryField()[pp.index()][facei]; const vector& nf = pp.faceNormals()[facei]; - // local pressure + // Local pressure const scalar pc = thermo_.thermo().p()[p.cell()]; // Retrieve parcel properties @@ -305,31 +305,31 @@ void Foam::ThermoSurfaceFilm<CloudType>::wetSplashInteraction // Critical Weber number const scalar Wec = Awet_*pow(La, -0.183); - if (We < 1) // adhesion - assume absorb + if (We < 2) // Adhesion - assume absorb { absorbInteraction(filmModel, p, pp, facei, m, keepParticle); } - else if ((We >= 1) && (We < 20)) // bounce + else if ((We >= 2) && (We < 20)) // Bounce { - // incident angle of impingement + // Incident angle of impingement const scalar theta = pi/2 - acos(U/mag(U) & nf); - // restitution coefficient + // Restitution coefficient const scalar epsilon = 0.993 - theta*(1.76 - theta*(1.56 - theta*0.49)); - // update parcel velocity + // Update parcel velocity U = -epsilon*(Un) + 5/7*(Ut); keepParticle = true; return; } - else if ((We >= 20) && (We < Wec)) // spread - assume absorb + else if ((We >= 20) && (We < Wec)) // Spread - assume absorb { absorbInteraction(filmModel, p, pp, facei, m, keepParticle); } - else // splash + else // Splash { - // ratio of incident mass to splashing mass + // Ratio of incident mass to splashing mass // splash mass can be > incident mass due to film entrainment const scalar mRatio = 0.2 + 0.9*rndGen_.sample01<scalar>(); splashInteraction @@ -371,24 +371,24 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction const vector& posC = mesh.C()[p.cell()]; const vector& posCf = mesh.Cf().boundaryField()[pp.index()][facei]; - // total mass of (all) splashed parcels + // Total mass of (all) splashed parcels const scalar mSplash = m*mRatio; - // number of splashed particles per incoming particle + // Number of splashed particles per incoming particle const scalar Ns = 5.0*(We/Wec - 1.0); - // average diameter of splashed particles + // Average diameter of splashed particles const scalar dBarSplash = 1/cbrt(6.0)*cbrt(mRatio/Ns)*d + ROOTVSMALL; - // cumulative diameter splash distribution + // Cumulative diameter splash distribution const scalar dMax = 0.9*cbrt(mRatio)*d; const scalar dMin = 0.1*dMax; const scalar K = exp(-dMin/dBarSplash) - exp(-dMax/dBarSplash); - // surface energy of secondary parcels [J] + // Surface energy of secondary parcels [J] scalar ESigmaSec = 0; - // sample splash distribution to determine secondary parcel diameters + // Sample splash distribution to determine secondary parcel diameters scalarList dNew(parcelsPerSplash_); scalarList npNew(parcelsPerSplash_); forAll(dNew, i) @@ -399,26 +399,26 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction ESigmaSec += npNew[i]*sigma*p.areaS(dNew[i]); } - // incident kinetic energy [J] + // Incident kinetic energy [J] const scalar EKIn = 0.5*m*magSqr(Urel); - // incident surface energy [J] + // Incident surface energy [J] const scalar ESigmaIn = np*sigma*p.areaS(d); - // dissipative energy + // Dissipative energy const scalar Ed = max(0.8*EKIn, np*Wec/12*pi*sigma*sqr(d)); - // total energy [J] + // Total energy [J] const scalar EKs = EKIn + ESigmaIn - ESigmaSec - Ed; - // switch to absorb if insufficient energy for splash + // Switch to absorb if insufficient energy for splash if (EKs <= 0) { absorbInteraction(filmModel, p, pp, facei, m, keepParticle); return; } - // helper variables to calculate magUns0 + // Helper variables to calculate magUns0 const scalar logD = log(d); const scalar coeff2 = log(dNew[0]) - logD + ROOTVSMALL; scalar coeff1 = 0.0; @@ -427,7 +427,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction coeff1 += sqr(log(dNew[i]) - logD); } - // magnitude of the normal velocity of the first splashed parcel + // Magnitude of the normal velocity of the first splashed parcel const scalar magUns0 = sqrt(2.0*parcelsPerSplash_*EKs/mSplash/(1.0 + coeff1/sqr(coeff2))); @@ -448,7 +448,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction pPtr->typeId() = splashParcelType_; } - // perturb new parcels towards the owner cell centre + // Perturb new parcels towards the owner cell centre pPtr->position() += 0.5*rndGen_.sample01<scalar>()*(posC - posCf); pPtr->nParticle() = npNew[i]; @@ -466,7 +466,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction nParcelsSplashed_++; } - // transfer remaining part of parcel to film 0 - splashMass can be -ve + // Transfer remaining part of parcel to film 0 - splashMass can be -ve // if entraining from the film const scalar mDash = m - mSplash; absorbInteraction(filmModel, p, pp, facei, mDash, keepParticle); @@ -613,11 +613,11 @@ bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel } } - // transfer parcel/parcel interactions complete + // Transfer parcel/parcel interactions complete return true; } - // parcel not interacting with film + // Parcel not interacting with film return false; } diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H index 0de4186d093f158ece63d828c66329f52d40b4ff..fd2fb238c91ba4b51caf65741c9fa1a2b570fbbd 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description Bai and Gosman, `Mathematical modelling of wall films formed by impinging sprays', SAE 960626, 1996 - Bai et al, `Modelling off gasoline spray impingement', Atom. Sprays, + Bai et al, `Modelling of gasoline spray impingement', Atom. Sprays, vol 12, pp 1-27, 2002 diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C index 88d8888a49a4a8a6ac72e0e7886626ee7bd2ca3e..228b5b05d82b673eaeb6b20009504526f9e113bf 100644 --- a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C +++ b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C @@ -37,13 +37,7 @@ Foam::operator<<(Ostream& os, const bufferedAccumulator<Type>& bA) << static_cast<const List<Field<Type>>&>(bA) << bA.bufferOffsets(); - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::bufferedAccumulator&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C index 63d7b68c88c7038e788b2a7ca0938d10ab93f0bf..0886797ea13c09c6b4b0b642182ea29047aab186 100644 --- a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C +++ b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C @@ -57,13 +57,7 @@ Foam::Ostream& Foam::operator<< << nl << cF.tZeroBuffers() << nl << static_cast<const bufferedAccumulator<scalar>&>(cF); - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Ostream&, const correlationFunction<Type>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C index da37720b9c10fbfc302bea43290c325aa9ab7497..2091a519ad0882f9643e99de8a9f2286bec478d8 100644 --- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C +++ b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C @@ -464,13 +464,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const distribution& d) os << d.binWidth_ << static_cast<const Map<label>&>(d); - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, " - "const distribution&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C index 9b15c28c189b673567fe7fdd5a6455cdbed14ef0..d0fe212e6c8eea30f099a9ecddc78c3121e47434 100644 --- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C +++ b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C @@ -82,12 +82,7 @@ Foam::molecule::molecule } } - // Check state of Istream - is.check - ( - "Foam::molecule::molecule" - "(const Cloud<molecule>& cloud, Foam::Istream&), bool" - ); + is.check(FUNCTION_NAME); } @@ -281,13 +276,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const molecule& mol) os << mol.siteForces_ << mol.sitePositions_; } - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::molecule&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C index 7db8ded1222cc6e39e64b249fd731d75d5409440..5318c57867bb597184c8b640ddb9209181acb867 100644 --- a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -127,7 +127,7 @@ void Foam::moleculeCloud::buildCellOccupancy() void Foam::moleculeCloud::calculatePairForce() { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Start sending referred data label startOfRequests = Pstream::nRequests(); @@ -359,7 +359,7 @@ void Foam::moleculeCloud::removeHighEnergyOverlaps() buildCellOccupancy(); - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Start sending referred data label startOfRequests = Pstream::nRequests(); diff --git a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C index 7ee1f39bd088000edf3ef0fe27f2e3d6bfb58f0c..0524db861a57a5cb16171f08420f9f3ef2a89875 100644 --- a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C +++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C @@ -46,13 +46,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const reducedUnits& rU) << tab << "refNumberDensity = " << rU.refNumberDensity() << " m^-3" << endl; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::reducedUnits&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/solidParticle/solidParticleIO.C b/src/lagrangian/solidParticle/solidParticleIO.C index c27cdbb94d311bbe208b8699e86a179f5439feb8..7cecee7418386936d4674c5fe346dbec343520d7 100644 --- a/src/lagrangian/solidParticle/solidParticleIO.C +++ b/src/lagrangian/solidParticle/solidParticleIO.C @@ -58,8 +58,7 @@ Foam::solidParticle::solidParticle } } - // Check state of Istream - is.check("solidParticle::solidParticle(Istream&)"); + is.check(FUNCTION_NAME); } @@ -134,9 +133,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const solidParticle& p) ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const solidParticle&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/spray/Make/options b/src/lagrangian/spray/Make/options index 34e92f4b47f08c643ecc8f3ce0fbcbc75208f6c0..7fd4496c0613c523e61bfdd92f91427e1a455131 100644 --- a/src/lagrangian/spray/Make/options +++ b/src/lagrangian/spray/Make/options @@ -6,10 +6,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ @@ -34,10 +31,7 @@ LIB_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lradiationModels \ diff --git a/src/lagrangian/spray/clouds/derived/basicSprayCloud/basicSprayCloud.H b/src/lagrangian/spray/clouds/derived/basicSprayCloud/basicSprayCloud.H index a52e39a4043bee49cbe305140a1c9cf7a4202a21..00151736e7212b8ac886188b893df0ee2067d136 100644 --- a/src/lagrangian/spray/clouds/derived/basicSprayCloud/basicSprayCloud.H +++ b/src/lagrangian/spray/clouds/derived/basicSprayCloud/basicSprayCloud.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,4 +66,3 @@ namespace Foam #endif // ************************************************************************* // - diff --git a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C index 1afeb4d32b5985134797da919a392b6da9b6ac19..4f421eed0f790ca8b532cf9248a5d70081f0a45a 100644 --- a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C +++ b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C @@ -93,16 +93,7 @@ Foam::SprayParcel<ParcelType>::SprayParcel } } - // Check state of Istream - is.check - ( - "SprayParcel<ParcelType>::SprayParcel" - "(" - "const polyMesh&, " - "Istream&, " - "bool" - ")" - ); + is.check(FUNCTION_NAME); } @@ -389,12 +380,7 @@ Foam::Ostream& Foam::operator<< ); } - // Check state of Ostream - os.check - ( - "Ostream& operator<<(Ostream&, const SprayParcel<ParcelType>&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/lagrangian/spray/submodels/BreakupModel/NoBreakup/NoBreakup.C b/src/lagrangian/spray/submodels/BreakupModel/NoBreakup/NoBreakup.C index 1a233e2b2969fb06015849bc35fe597d03066aad..dda61effa50c7ca02b320ea41870422116d2a330 100644 --- a/src/lagrangian/spray/submodels/BreakupModel/NoBreakup/NoBreakup.C +++ b/src/lagrangian/spray/submodels/BreakupModel/NoBreakup/NoBreakup.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -88,7 +88,6 @@ bool Foam::NoBreakup<CloudType>::update scalar& massChild ) { - // Do nothing return false; } diff --git a/src/lagrangian/spray/submodels/BreakupModel/TAB/TABSMDCalcMethod1.H b/src/lagrangian/spray/submodels/BreakupModel/TAB/TABSMDCalcMethod1.H index 7c663ab391f98d3ff481dc165e697c48c8a1fe05..15b5aa65f8fb7756914a8b76911e8aacef1cfc77 100644 --- a/src/lagrangian/spray/submodels/BreakupModel/TAB/TABSMDCalcMethod1.H +++ b/src/lagrangian/spray/submodels/BreakupModel/TAB/TABSMDCalcMethod1.H @@ -11,5 +11,3 @@ } rNew = 0.04*n*rs; } - - diff --git a/src/lagrangian/turbulence/Make/options b/src/lagrangian/turbulence/Make/options index 7b2fc4bea88fb6df9d69954051ba03a7af2872e6..4a7f193503ef311793a5520b2197eafd68262fa5 100644 --- a/src/lagrangian/turbulence/Make/options +++ b/src/lagrangian/turbulence/Make/options @@ -5,10 +5,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ @@ -30,10 +27,7 @@ LIB_LIBS = \ -lspecie \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lradiationModels \ diff --git a/src/mesh/blockMesh/Make/files b/src/mesh/blockMesh/Make/files index 5831633613d88cf5e29a50861feeb48cad4aff5b..7d567453f887fd53f1b77e2bb2192f5e723e7aaf 100644 --- a/src/mesh/blockMesh/Make/files +++ b/src/mesh/blockMesh/Make/files @@ -39,6 +39,4 @@ blockMesh/blockMeshMergeFast.C blockMeshTools/blockMeshTools.C -searchableExtrudedCircle/searchableExtrudedCircle.C - LIB = $(FOAM_LIBBIN)/libblockMesh diff --git a/src/mesh/blockMesh/Make/options b/src/mesh/blockMesh/Make/options index 5467dc3ce38635ce1b666c5263855f795f66e302..6f44ed691266a97c24a5f09b60a76f31237a6575 100644 --- a/src/mesh/blockMesh/Make/options +++ b/src/mesh/blockMesh/Make/options @@ -1,11 +1,7 @@ EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ - -lmeshTools \ - -lfileFormats \ - -ledgeMesh \ - -lsurfMesh + -lmeshTools diff --git a/src/mesh/blockMesh/blockEdges/arcEdge/arcEdge.H b/src/mesh/blockMesh/blockEdges/arcEdge/arcEdge.H index 260e5dc7bb4da21c43246ffff1530eb35bd010a6..caf5ea259d59b16195c5e747c4afaed6252685ab 100644 --- a/src/mesh/blockMesh/blockEdges/arcEdge/arcEdge.H +++ b/src/mesh/blockMesh/blockEdges/arcEdge/arcEdge.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -56,9 +56,9 @@ class arcEdge // Private data point p1_, p2_, p3_; - cylindricalCS cs_; scalar angle_; scalar radius_; + cylindricalCS cs_; // Private Member Functions diff --git a/src/mesh/blockMesh/blockMeshTools/blockMeshTools.C b/src/mesh/blockMesh/blockMeshTools/blockMeshTools.C index 465998ce9d65ecd4ea802126e077d6e3517741ba..45eebc495645407c26d80a182a9cc29aac4e7c93 100644 --- a/src/mesh/blockMesh/blockMeshTools/blockMeshTools.C +++ b/src/mesh/blockMesh/blockMeshTools/blockMeshTools.C @@ -69,10 +69,7 @@ void Foam::blockMeshTools::read << exit(FatalIOError); } - is.fatalCheck - ( - "operator>>(Istream&, List<T>&) : reading entry" - ); + is.fatalCheck(FUNCTION_NAME); } diff --git a/src/mesh/blockMesh/gradingDescriptor/gradingDescriptor.C b/src/mesh/blockMesh/gradingDescriptor/gradingDescriptor.C index 6c54e2c4f5347e38a8cf8e94b1cead6e58a57676..ea58a0495e443887082f2c7e9aac6ce951ce79fe 100644 --- a/src/mesh/blockMesh/gradingDescriptor/gradingDescriptor.C +++ b/src/mesh/blockMesh/gradingDescriptor/gradingDescriptor.C @@ -122,9 +122,7 @@ Foam::Istream& Foam::operator>>(Istream& is, gradingDescriptor& gd) is.readEnd("gradingDescriptor"); } - // Check state of Istream - is.check("operator>>(Istream&, gradingDescriptor&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/mesh/blockMesh/gradingDescriptor/gradingDescriptors.C b/src/mesh/blockMesh/gradingDescriptor/gradingDescriptors.C index 6e6418af3d730c4ca42441e653218330b2bf1240..439707ddff573824962e95f80a9f33a211e1642b 100644 --- a/src/mesh/blockMesh/gradingDescriptor/gradingDescriptors.C +++ b/src/mesh/blockMesh/gradingDescriptor/gradingDescriptors.C @@ -73,7 +73,7 @@ Foam::Istream& Foam::operator>>(Istream& is, gradingDescriptors& gds) is >> static_cast<List<gradingDescriptor>& >(gds); // Check state of Istream - is.check("operator>>(Istream&, gradingDescriptor&)"); + is.check(FUNCTION_NAME); // Normalize the blockFractions and nDivFractions // of the list of gradingDescriptors diff --git a/src/mesh/extrudeModel/Make/options b/src/mesh/extrudeModel/Make/options index 2dd02e7d86ab8098d1cd1605d70c1bc4423d0bde..979289742c4824e1951b5884b1b7f70bf89e2732 100644 --- a/src/mesh/extrudeModel/Make/options +++ b/src/mesh/extrudeModel/Make/options @@ -1,6 +1,6 @@ EXE_INC = \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude LIB_LIBS = \ diff --git a/src/mesh/extrudeModel/extrudeModel/extrudeModel.C b/src/mesh/extrudeModel/extrudeModel/extrudeModel.C index f6a2a132892fe6b346c45ac6a3f8a84f4be87baf..cb041871f6226377111d617c226cdddc42aa1d25 100644 --- a/src/mesh/extrudeModel/extrudeModel/extrudeModel.C +++ b/src/mesh/extrudeModel/extrudeModel/extrudeModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,7 @@ Foam::extrudeModel::extrudeModel nLayers_(dict.lookupOrDefault<label>("nLayers", 1)), expansionRatio_(dict.lookupOrDefault<scalar>("expansionRatio", 1)), dict_(dict), - coeffDict_(dict.subDict(modelType + "Coeffs")) + coeffDict_(dict.optionalSubDict(modelType + "Coeffs")) {} diff --git a/src/mesh/snappyHexMesh/Make/options b/src/mesh/snappyHexMesh/Make/options index 42f1b1d19f93c5f28deb5eccfe2a9f8e52840185..9a7fe18cd6c4e63b940a124639c5799e245b2850 100644 --- a/src/mesh/snappyHexMesh/Make/options +++ b/src/mesh/snappyHexMesh/Make/options @@ -3,19 +3,14 @@ EXE_INC = \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -ldynamicMesh \ -lfiniteVolume \ -llagrangian \ -lmeshTools \ - -ledgeMesh \ - -lsurfMesh \ - -ltriSurface \ -lfvMotionSolvers \ -ldistributed diff --git a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C index 55284b36081d77cd839a93415275076557e30156..267ba41c122cc7afcce2d44923533924a4e7245f 100644 --- a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C +++ b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C @@ -74,7 +74,7 @@ Foam::displacementMeshMoverMotionSolver::meshMover() const meshMoverPtr_ = externalDisplacementMeshMover::New ( moverType, - coeffDict().subDict(moverType + "Coeffs"), + coeffDict().optionalSubDict(moverType + "Coeffs"), localPointRegion::findDuplicateFacePairs(mesh()), pointDisplacement_ ); @@ -105,7 +105,7 @@ void Foam::displacementMeshMoverMotionSolver::solve() labelList checkFaces(identity(mesh().nFaces())); meshMover().move ( - coeffDict().subDict(meshMover().type() + "Coeffs"), + coeffDict().optionalSubDict(meshMover().type() + "Coeffs"), nAllowableErrors, checkFaces ); diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C index acd25a6e595d0a2ef459adb2da7a1f783bf55343..d09b9a95dfa6a37886bb3df20547dc8f649aeda8 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -72,7 +72,6 @@ namespace Foam >::names[] = { "mesh", - //"scalarLevels", "intersections", "featureSeeds", "attraction", @@ -93,10 +92,11 @@ namespace Foam const char* Foam::NamedEnum < Foam::meshRefinement::IOwriteType, - 4 + 5 >::names[] = { "mesh", + "noRefinement", "scalarLevels", "layerSets", "layerFields" @@ -110,7 +110,7 @@ Foam::meshRefinement::IOdebugTypeNames; const Foam::NamedEnum<Foam::meshRefinement::IOoutputType, 1> Foam::meshRefinement::IOoutputTypeNames; -const Foam::NamedEnum<Foam::meshRefinement::IOwriteType, 4> +const Foam::NamedEnum<Foam::meshRefinement::IOwriteType, 5> Foam::meshRefinement::IOwriteTypeNames; @@ -143,26 +143,26 @@ void Foam::meshRefinement::calcNeighbourData labelHashSet addedPatchIDSet(meshedPatches()); - forAll(patches, patchI) + forAll(patches, patchi) { - const polyPatch& pp = patches[patchI]; + const polyPatch& pp = patches[patchi]; const labelUList& faceCells = pp.faceCells(); const vectorField::subField faceCentres = pp.faceCentres(); const vectorField::subField faceAreas = pp.faceAreas(); - label bFaceI = pp.start()-mesh_.nInternalFaces(); + label bFacei = pp.start()-mesh_.nInternalFaces(); if (pp.coupled()) { forAll(faceCells, i) { - neiLevel[bFaceI] = cellLevel[faceCells[i]]; - neiCc[bFaceI] = cellCentres[faceCells[i]]; - bFaceI++; + neiLevel[bFacei] = cellLevel[faceCells[i]]; + neiCc[bFacei] = cellCentres[faceCells[i]]; + bFacei++; } } - else if (addedPatchIDSet.found(patchI)) + else if (addedPatchIDSet.found(patchi)) { // Face was introduced from cell-cell intersection. Try to // reconstruct other side cell(centre). Three possibilities: @@ -192,19 +192,19 @@ void Foam::meshRefinement::calcNeighbourData // Other cell more refined. Adjust normal distance d *= 0.5; } - neiLevel[bFaceI] = faceLevel; + neiLevel[bFacei] = faceLevel; // Calculate other cell centre by extrapolation - neiCc[bFaceI] = faceCentres[i] + d*fn; - bFaceI++; + neiCc[bFacei] = faceCentres[i] + d*fn; + bFacei++; } } else { forAll(faceCells, i) { - neiLevel[bFaceI] = cellLevel[faceCells[i]]; - neiCc[bFaceI] = faceCentres[i]; - bFaceI++; + neiLevel[bFacei] = cellLevel[faceCells[i]]; + neiCc[bFacei] = faceCentres[i]; + bFacei++; } } } @@ -234,12 +234,12 @@ void Foam::meshRefinement::calcCellCellRays forAll(testFaces, i) { - label faceI = testFaces[i]; - label own = mesh_.faceOwner()[faceI]; + label facei = testFaces[i]; + label own = mesh_.faceOwner()[facei]; - if (mesh_.isInternalFace(faceI)) + if (mesh_.isInternalFace(facei)) { - label nei = mesh_.faceNeighbour()[faceI]; + label nei = mesh_.faceNeighbour()[facei]; start[i] = cellCentres[own]; end[i] = cellCentres[nei]; @@ -247,11 +247,11 @@ void Foam::meshRefinement::calcCellCellRays } else { - label bFaceI = faceI - mesh_.nInternalFaces(); + label bFacei = facei - mesh_.nInternalFaces(); start[i] = cellCentres[own]; - end[i] = neiCc[bFaceI]; - minLevel[i] = min(cellLevel[own], neiLevel[bFaceI]); + end[i] = neiCc[bFacei]; + minLevel[i] = min(cellLevel[own], neiLevel[bFacei]); } } @@ -264,8 +264,6 @@ void Foam::meshRefinement::calcCellCellRays } -// Find intersections of edges (given by their two endpoints) with surfaces. -// Returns first intersection if there are more than one. void Foam::meshRefinement::updateIntersections(const labelList& changedFaces) { // Stats on edges to test. Count proc faces only once. @@ -273,9 +271,9 @@ void Foam::meshRefinement::updateIntersections(const labelList& changedFaces) { label nMasterFaces = 0; - forAll(isMasterFace, faceI) + forAll(isMasterFace, facei) { - if (isMasterFace.get(faceI) == 1) + if (isMasterFace.get(facei) == 1) { nMasterFaces++; } @@ -388,13 +386,13 @@ void Foam::meshRefinement::testSyncPointList maxEqOp<scalar>(), -GREAT ); - forAll(minFld, pointI) + forAll(minFld, pointi) { - const scalar& minVal = minFld[pointI]; - const scalar& maxVal = maxFld[pointI]; + const scalar& minVal = minFld[pointi]; + const scalar& maxVal = maxFld[pointi]; if (mag(minVal-maxVal) > SMALL) { - Pout<< msg << " at:" << mesh.points()[pointI] << nl + Pout<< msg << " at:" << mesh.points()[pointi] << nl << " minFld:" << minVal << nl << " maxFld:" << maxVal << nl << endl; @@ -435,13 +433,13 @@ void Foam::meshRefinement::testSyncPointList maxMagSqrEqOp<point>(), vector::zero ); - forAll(minFld, pointI) + forAll(minFld, pointi) { - const point& minVal = minFld[pointI]; - const point& maxVal = maxFld[pointI]; + const point& minVal = minFld[pointi]; + const point& maxVal = maxFld[pointi]; if (mag(minVal-maxVal) > SMALL) { - Pout<< msg << " at:" << mesh.points()[pointI] << nl + Pout<< msg << " at:" << mesh.points()[pointi] << nl << " minFld:" << minVal << nl << " maxFld:" << maxVal << nl << endl; @@ -505,17 +503,17 @@ void Foam::meshRefinement::checkData() pointField start(mesh_.nFaces()); pointField end(mesh_.nFaces()); - forAll(start, faceI) + forAll(start, facei) { - start[faceI] = mesh_.cellCentres()[mesh_.faceOwner()[faceI]]; + start[facei] = mesh_.cellCentres()[mesh_.faceOwner()[facei]]; - if (mesh_.isInternalFace(faceI)) + if (mesh_.isInternalFace(facei)) { - end[faceI] = mesh_.cellCentres()[mesh_.faceNeighbour()[faceI]]; + end[facei] = mesh_.cellCentres()[mesh_.faceNeighbour()[facei]]; } else { - end[faceI] = neiCc[faceI-mesh_.nInternalFaces()]; + end[facei] = neiCc[facei-mesh_.nInternalFaces()]; } } @@ -554,43 +552,43 @@ void Foam::meshRefinement::checkData() syncTools::swapBoundaryFaceList(mesh_, neiHit); // Check - forAll(surfaceHit, faceI) + forAll(surfaceHit, facei) { - if (surfaceIndex_[faceI] != surfaceHit[faceI]) + if (surfaceIndex_[facei] != surfaceHit[facei]) { - if (mesh_.isInternalFace(faceI)) + if (mesh_.isInternalFace(facei)) { WarningInFunction - << "Internal face:" << faceI - << " fc:" << mesh_.faceCentres()[faceI] - << " cached surfaceIndex_:" << surfaceIndex_[faceI] - << " current:" << surfaceHit[faceI] + << "Internal face:" << facei + << " fc:" << mesh_.faceCentres()[facei] + << " cached surfaceIndex_:" << surfaceIndex_[facei] + << " current:" << surfaceHit[facei] << " ownCc:" - << mesh_.cellCentres()[mesh_.faceOwner()[faceI]] + << mesh_.cellCentres()[mesh_.faceOwner()[facei]] << " neiCc:" - << mesh_.cellCentres()[mesh_.faceNeighbour()[faceI]] + << mesh_.cellCentres()[mesh_.faceNeighbour()[facei]] << endl; } else if ( - surfaceIndex_[faceI] - != neiHit[faceI-mesh_.nInternalFaces()] + surfaceIndex_[facei] + != neiHit[facei-mesh_.nInternalFaces()] ) { WarningInFunction - << "Boundary face:" << faceI - << " fc:" << mesh_.faceCentres()[faceI] - << " cached surfaceIndex_:" << surfaceIndex_[faceI] - << " current:" << surfaceHit[faceI] + << "Boundary face:" << facei + << " fc:" << mesh_.faceCentres()[facei] + << " cached surfaceIndex_:" << surfaceIndex_[facei] + << " current:" << surfaceHit[facei] << " ownCc:" - << mesh_.cellCentres()[mesh_.faceOwner()[faceI]] + << mesh_.cellCentres()[mesh_.faceOwner()[facei]] << " neiCc:" - << neiCc[faceI-mesh_.nInternalFaces()] - << " end:" << end[faceI] + << neiCc[facei-mesh_.nInternalFaces()] + << " end:" << end[facei] << " ownLevel:" - << meshCutter_.cellLevel()[mesh_.faceOwner()[faceI]] + << meshCutter_.cellLevel()[mesh_.faceOwner()[facei]] << " faceLevel:" - << meshCutter_.faceLevel(faceI) + << meshCutter_.faceLevel(facei) << endl; } } @@ -661,8 +659,6 @@ void Foam::meshRefinement::setInstance(const fileName& inst) } -// Remove cells. Put exposedFaces (output of getExposedFaces(cellsToRemove)) -// into exposedPatchIDs. Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRemoveCells ( const labelList& cellsToRemove, @@ -722,7 +718,6 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRemoveCells } -// Split faces void Foam::meshRefinement::doSplitFaces ( const labelList& splitFaces, @@ -733,8 +728,8 @@ void Foam::meshRefinement::doSplitFaces { forAll(splitFaces, i) { - label faceI = splitFaces[i]; - const face& f = mesh_.faces()[faceI]; + label facei = splitFaces[i]; + const face& f = mesh_.faces()[facei]; // Split as start and end index in face const labelPair& split = splits[i]; @@ -767,43 +762,47 @@ void Foam::meshRefinement::doSplitFaces // Determine face properties - label own = mesh_.faceOwner()[faceI]; + label own = mesh_.faceOwner()[facei]; label nei = -1; - label patchI = -1; - if (faceI >= mesh_.nInternalFaces()) + label patchi = -1; + if (facei >= mesh_.nInternalFaces()) { - patchI = mesh_.boundaryMesh().whichPatch(faceI); + patchi = mesh_.boundaryMesh().whichPatch(facei); } else { - nei = mesh_.faceNeighbour()[faceI]; + nei = mesh_.faceNeighbour()[facei]; } - label zoneI = mesh_.faceZones().whichZone(faceI); + label zonei = mesh_.faceZones().whichZone(facei); bool zoneFlip = false; - if (zoneI != -1) + if (zonei != -1) { - const faceZone& fz = mesh_.faceZones()[zoneI]; - zoneFlip = fz.flipMap()[fz.whichFace(faceI)]; + const faceZone& fz = mesh_.faceZones()[zonei]; + zoneFlip = fz.flipMap()[fz.whichFace(facei)]; } - //Pout<< "face:" << faceI << " verts:" << f - // << " split into f0:" << f0 - // << " f1:" << f1 << endl; + if (debug) + { + Pout<< "face:" << facei << " verts:" << f + << " split into f0:" << f0 + << " f1:" << f1 << endl; + } // Change/add faces meshMod.modifyFace ( f0, // modified face - faceI, // label of face + facei, // label of face own, // owner nei, // neighbour false, // face flip - patchI, // patch for face - zoneI, // zone for face + patchi, // patch for face + zonei, // zone for face zoneFlip // face flip in zone ); + meshMod.addFace ( f1, // modified face @@ -811,10 +810,10 @@ void Foam::meshRefinement::doSplitFaces nei, // neighbour -1, // master point -1, // master edge - faceI, // master face + facei, // master face false, // face flip - patchI, // patch for face - zoneI, // zone for face + patchi, // patch for face + zonei, // zone for face zoneFlip // face flip in zone ); @@ -902,23 +901,23 @@ Foam::label Foam::meshRefinement::splitFacesUndo splitFaceToIndex.insert(splitFaces[i], i); } - forAll(map().faceMap(), faceI) + forAll(map().faceMap(), facei) { - label oldFaceI = map().faceMap()[faceI]; + label oldFacei = map().faceMap()[facei]; Map<label>::iterator oldFaceFnd = splitFaceToIndex.find ( - oldFaceI + oldFacei ); if (oldFaceFnd != splitFaceToIndex.end()) { labelPair& twoFaces = facePairs[oldFaceFnd()]; if (twoFaces[0] == -1) { - twoFaces[0] = faceI; + twoFaces[0] = facei; } else if (twoFaces[1] == -1) { - twoFaces[1] = faceI; + twoFaces[1] = facei; } else { @@ -1045,21 +1044,21 @@ Foam::label Foam::meshRefinement::splitFacesUndo // Determine face properties label own = mesh_.faceOwner()[twoFaces[0]]; label nei = -1; - label patchI = -1; + label patchi = -1; if (twoFaces[0] >= mesh_.nInternalFaces()) { - patchI = mesh_.boundaryMesh().whichPatch(twoFaces[0]); + patchi = mesh_.boundaryMesh().whichPatch(twoFaces[0]); } else { nei = mesh_.faceNeighbour()[twoFaces[0]]; } - label zoneI = mesh_.faceZones().whichZone(twoFaces[0]); + label zonei = mesh_.faceZones().whichZone(twoFaces[0]); bool zoneFlip = false; - if (zoneI != -1) + if (zonei != -1) { - const faceZone& fz = mesh_.faceZones()[zoneI]; + const faceZone& fz = mesh_.faceZones()[zonei]; zoneFlip = fz.flipMap()[fz.whichFace(twoFaces[0])]; } @@ -1071,8 +1070,8 @@ Foam::label Foam::meshRefinement::splitFacesUndo own, // owner nei, // neighbour false, // face flip - patchI, // patch for face - zoneI, // zone for face + patchi, // patch for face + zonei, // zone for face zoneFlip // face flip in zone ); // Merge second face into first @@ -1209,7 +1208,6 @@ Foam::label Foam::meshRefinement::splitFacesUndo // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct from components Foam::meshRefinement::meshRefinement ( fvMesh& mesh, @@ -1264,9 +1262,9 @@ Foam::label Foam::meshRefinement::countHits() const label nHits = 0; - forAll(surfaceIndex_, faceI) + forAll(surfaceIndex_, facei) { - if (surfaceIndex_[faceI] >= 0 && isMasterFace.get(faceI) == 1) + if (surfaceIndex_[facei] >= 0 && isMasterFace.get(facei) == 1) { nHits++; } @@ -1288,11 +1286,6 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance if (Pstream::parRun()) { - //if (debug_) - //{ - // const_cast<Time&>(mesh_.time())++; - //} - // Wanted distribution labelList distribution; @@ -1338,22 +1331,22 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance // Get faces whose owner and neighbour should stay together, // i.e. they are not 'blocked'. - forAll(fZones, zoneI) + forAll(fZones, zonei) { - const faceZone& fZone = fZones[zoneI]; + const faceZone& fZone = fZones[zonei]; forAll(fZone, i) { - label faceI = fZone[i]; - if (blockedFace[faceI]) + label facei = fZone[i]; + if (blockedFace[facei]) { if ( - mesh_.isInternalFace(faceI) - || pbm[pbm.whichPatch(faceI)].coupled() + mesh_.isInternalFace(facei) + || pbm[pbm.whichPatch(facei)].coupled() ) { - blockedFace[faceI] = false; + blockedFace[facei] = false; nUnblocked++; } } @@ -1386,13 +1379,13 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance selectSeparatedCoupledFaces(separatedCoupledFace); label nSeparated = 0; - forAll(separatedCoupledFace, faceI) + forAll(separatedCoupledFace, facei) { - if (separatedCoupledFace[faceI]) + if (separatedCoupledFace[facei]) { - if (blockedFace[faceI]) + if (blockedFace[facei]) { - blockedFace[faceI] = false; + blockedFace[facei] = false; nSeparated++; } } @@ -1435,11 +1428,11 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance couples.setSize(nBnd); label nCpl = 0; - forAll(coupledFace, faceI) + forAll(coupledFace, facei) { - if (coupledFace[faceI] != -1 && faceI < coupledFace[faceI]) + if (coupledFace[facei] != -1 && facei < coupledFace[facei]) { - couples[nCpl++] = labelPair(faceI, coupledFace[faceI]); + couples[nCpl++] = labelPair(facei, coupledFace[facei]); } } couples.setSize(nCpl); @@ -1481,9 +1474,9 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance Pstream::listCombineScatter(nProcCells); Pout<< "Wanted resulting decomposition:" << endl; - forAll(nProcCells, procI) + forAll(nProcCells, proci) { - Pout<< " " << procI << '\t' << nProcCells[procI] << endl; + Pout<< " " << proci << '\t' << nProcCells[proci] << endl; } Pout<< endl; } @@ -1506,21 +1499,21 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance const polyBoundaryMesh& pbm = mesh_.boundaryMesh(); // Check that faceZone faces are indeed internal - forAll(fZones, zoneI) + forAll(fZones, zonei) { - const faceZone& fZone = fZones[zoneI]; + const faceZone& fZone = fZones[zonei]; forAll(fZone, i) { - label faceI = fZone[i]; - label patchI = pbm.whichPatch(faceI); + label facei = fZone[i]; + label patchi = pbm.whichPatch(facei); - if (patchI >= 0 && pbm[patchI].coupled()) + if (patchi >= 0 && pbm[patchi].coupled()) { WarningInFunction - << "Face at " << mesh_.faceCentres()[faceI] + << "Face at " << mesh_.faceCentres()[facei] << " on zone " << fZone.name() - << " is on coupled patch " << pbm[patchI].name() + << " is on coupled patch " << pbm[patchi].name() << endl; } } @@ -1532,14 +1525,13 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance } -// Helper function to get intersected faces Foam::labelList Foam::meshRefinement::intersectedFaces() const { label nBoundaryFaces = 0; - forAll(surfaceIndex_, faceI) + forAll(surfaceIndex_, facei) { - if (surfaceIndex_[faceI] != -1) + if (surfaceIndex_[facei] != -1) { nBoundaryFaces++; } @@ -1548,18 +1540,17 @@ Foam::labelList Foam::meshRefinement::intersectedFaces() const labelList surfaceFaces(nBoundaryFaces); nBoundaryFaces = 0; - forAll(surfaceIndex_, faceI) + forAll(surfaceIndex_, facei) { - if (surfaceIndex_[faceI] != -1) + if (surfaceIndex_[facei] != -1) { - surfaceFaces[nBoundaryFaces++] = faceI; + surfaceFaces[nBoundaryFaces++] = facei; } } return surfaceFaces; } -// Helper function to get points used by faces Foam::labelList Foam::meshRefinement::intersectedPoints() const { const faceList& faces = mesh_.faces(); @@ -1568,11 +1559,11 @@ Foam::labelList Foam::meshRefinement::intersectedPoints() const PackedBoolList isBoundaryPoint(mesh_.nPoints()); label nBoundaryPoints = 0; - forAll(surfaceIndex_, faceI) + forAll(surfaceIndex_, facei) { - if (surfaceIndex_[faceI] != -1) + if (surfaceIndex_[facei] != -1) { - const face& f = faces[faceI]; + const face& f = faces[facei]; forAll(f, fp) { @@ -1588,17 +1579,17 @@ Foam::labelList Foam::meshRefinement::intersectedPoints() const //labelList adaptPatchIDs(meshedPatches()); //forAll(adaptPatchIDs, i) //{ - // label patchI = adaptPatchIDs[i]; + // label patchi = adaptPatchIDs[i]; // - // if (patchI != -1) + // if (patchi != -1) // { - // const polyPatch& pp = mesh_.boundaryMesh()[patchI]; + // const polyPatch& pp = mesh_.boundaryMesh()[patchi]; // - // label faceI = pp.start(); + // label facei = pp.start(); // // forAll(pp, i) // { - // const face& f = faces[faceI]; + // const face& f = faces[facei]; // // forAll(f, fp) // { @@ -1606,7 +1597,7 @@ Foam::labelList Foam::meshRefinement::intersectedPoints() const // nBoundaryPoints++; // } // } - // faceI++; + // facei++; // } // } //} @@ -1615,11 +1606,11 @@ Foam::labelList Foam::meshRefinement::intersectedPoints() const // Pack labelList boundaryPoints(nBoundaryPoints); nBoundaryPoints = 0; - forAll(isBoundaryPoint, pointI) + forAll(isBoundaryPoint, pointi) { - if (isBoundaryPoint.get(pointI) == 1u) + if (isBoundaryPoint.get(pointi) == 1u) { - boundaryPoints[nBoundaryPoints++] = pointI; + boundaryPoints[nBoundaryPoints++] = pointi; } } @@ -1654,11 +1645,11 @@ Foam::autoPtr<Foam::indirectPrimitivePatch> Foam::meshRefinement::makePatch { const polyPatch& pp = patches[patchIDs[i]]; - label meshFaceI = pp.start(); + label meshFacei = pp.start(); forAll(pp, i) { - addressing[nFaces++] = meshFaceI++; + addressing[nFaces++] = meshFacei++; } } @@ -1673,7 +1664,6 @@ Foam::autoPtr<Foam::indirectPrimitivePatch> Foam::meshRefinement::makePatch } -// Construct pointVectorField with correct boundary conditions Foam::tmp<Foam::pointVectorField> Foam::meshRefinement::makeDisplacementField ( const pointMesh& pMesh, @@ -1697,15 +1687,15 @@ Foam::tmp<Foam::pointVectorField> Foam::meshRefinement::makeDisplacementField fixedValuePointPatchVectorField::typeName; } - forAll(pointPatches, patchI) + forAll(pointPatches, patchi) { - if (isA<processorPointPatch>(pointPatches[patchI])) + if (isA<processorPointPatch>(pointPatches[patchi])) { - patchFieldTypes[patchI] = calculatedPointPatchVectorField::typeName; + patchFieldTypes[patchi] = calculatedPointPatchVectorField::typeName; } - else if (isA<cyclicPointPatch>(pointPatches[patchI])) + else if (isA<cyclicPointPatch>(pointPatches[patchi])) { - patchFieldTypes[patchI] = cyclicSlipPointPatchVectorField::typeName; + patchFieldTypes[patchi] = cyclicSlipPointPatchVectorField::typeName; } } @@ -1744,16 +1734,16 @@ void Foam::meshRefinement::checkCoupledFaceZones(const polyMesh& mesh) Pstream::gatherList(zoneNames); Pstream::scatterList(zoneNames); // All have same data now. Check. - forAll(zoneNames, procI) + forAll(zoneNames, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - if (zoneNames[procI] != zoneNames[Pstream::myProcNo()]) + if (zoneNames[proci] != zoneNames[Pstream::myProcNo()]) { FatalErrorInFunction << "faceZones are not synchronised on processors." << nl - << "Processor " << procI << " has faceZones " - << zoneNames[procI] << nl + << "Processor " << proci << " has faceZones " + << zoneNames[proci] << nl << "Processor " << Pstream::myProcNo() << " has faceZones " << zoneNames[Pstream::myProcNo()] << nl @@ -1767,21 +1757,21 @@ void Foam::meshRefinement::checkCoupledFaceZones(const polyMesh& mesh) labelList faceToZone(mesh.nFaces()-mesh.nInternalFaces(), -1); - forAll(fZones, zoneI) + forAll(fZones, zonei) { - const faceZone& fZone = fZones[zoneI]; + const faceZone& fZone = fZones[zonei]; forAll(fZone, i) { - label bFaceI = fZone[i]-mesh.nInternalFaces(); + label bFacei = fZone[i]-mesh.nInternalFaces(); - if (bFaceI >= 0) + if (bFacei >= 0) { - if (faceToZone[bFaceI] == -1) + if (faceToZone[bFacei] == -1) { - faceToZone[bFaceI] = zoneI; + faceToZone[bFacei] = zonei; } - else if (faceToZone[bFaceI] == zoneI) + else if (faceToZone[bFacei] == zonei) { FatalErrorInFunction << "Face " << fZone[i] << " in zone " @@ -1795,7 +1785,7 @@ void Foam::meshRefinement::checkCoupledFaceZones(const polyMesh& mesh) << "Face " << fZone[i] << " in zone " << fZone.name() << " is also in zone " - << fZones[faceToZone[bFaceI]].name() + << fZones[faceToZone[bFacei]].name() << abort(FatalError); } } @@ -1835,9 +1825,9 @@ void Foam::meshRefinement::calculateEdgeWeights edgeWeights.setSize(isMasterEdge.size()); invSumWeight.setSize(meshPoints.size()); - forAll(edges, edgeI) + forAll(edges, edgei) { - const edge& e = edges[edgeI]; + const edge& e = edges[edgei]; scalar eMag = max ( SMALL, @@ -1847,7 +1837,7 @@ void Foam::meshRefinement::calculateEdgeWeights - pts[meshPoints[e[0]]] ) ); - edgeWeights[edgeI] = 1.0/eMag; + edgeWeights[edgei] = 1.0/eMag; } // Sum per point all edge weights @@ -1863,13 +1853,13 @@ void Foam::meshRefinement::calculateEdgeWeights ); // Inplace invert - forAll(invSumWeight, pointI) + forAll(invSumWeight, pointi) { - scalar w = invSumWeight[pointI]; + scalar w = invSumWeight[pointi]; if (w > 0.0) { - invSumWeight[pointI] = 1.0/w; + invSumWeight[pointi] = 1.0/w; } } } @@ -1878,7 +1868,7 @@ void Foam::meshRefinement::calculateEdgeWeights Foam::label Foam::meshRefinement::appendPatch ( fvMesh& mesh, - const label insertPatchI, + const label insertPatchi, const word& patchName, const dictionary& patchDict ) @@ -1890,28 +1880,28 @@ Foam::label Foam::meshRefinement::appendPatch const_cast<polyBoundaryMesh&>(mesh.boundaryMesh()); fvBoundaryMesh& fvPatches = const_cast<fvBoundaryMesh&>(mesh.boundary()); - label patchI = polyPatches.size(); + label patchi = polyPatches.size(); // Add polyPatch at the end - polyPatches.setSize(patchI+1); + polyPatches.setSize(patchi+1); polyPatches.set ( - patchI, + patchi, polyPatch::New ( patchName, patchDict, - insertPatchI, + insertPatchi, polyPatches ) ); - fvPatches.setSize(patchI+1); + fvPatches.setSize(patchi+1); fvPatches.set ( - patchI, + patchi, fvPatch::New ( - polyPatches[patchI], // point to newly added polyPatch + polyPatches[patchi], // point to newly added polyPatch mesh.boundary() ) ); @@ -1969,11 +1959,10 @@ Foam::label Foam::meshRefinement::appendPatch mesh, calculatedFvPatchField<tensor>::typeName ); - return patchI; + return patchi; } -// Adds patch if not yet there. Returns patchID. Foam::label Foam::meshRefinement::addPatch ( fvMesh& mesh, @@ -1985,53 +1974,53 @@ Foam::label Foam::meshRefinement::addPatch const_cast<polyBoundaryMesh&>(mesh.boundaryMesh()); fvBoundaryMesh& fvPatches = const_cast<fvBoundaryMesh&>(mesh.boundary()); - const label patchI = polyPatches.findPatchID(patchName); - if (patchI != -1) + const label patchi = polyPatches.findPatchID(patchName); + if (patchi != -1) { // Already there - return patchI; + return patchi; } - label insertPatchI = polyPatches.size(); - label startFaceI = mesh.nFaces(); + label insertPatchi = polyPatches.size(); + label startFacei = mesh.nFaces(); - forAll(polyPatches, patchI) + forAll(polyPatches, patchi) { - const polyPatch& pp = polyPatches[patchI]; + const polyPatch& pp = polyPatches[patchi]; if (isA<processorPolyPatch>(pp)) { - insertPatchI = patchI; - startFaceI = pp.start(); + insertPatchi = patchi; + startFacei = pp.start(); break; } } dictionary patchDict(patchInfo); patchDict.set("nFaces", 0); - patchDict.set("startFace", startFaceI); + patchDict.set("startFace", startFacei); // Below is all quite a hack. Feel free to change once there is a better // mechanism to insert and reorder patches. - label addedPatchI = appendPatch(mesh, insertPatchI, patchName, patchDict); + label addedPatchi = appendPatch(mesh, insertPatchi, patchName, patchDict); // Create reordering list // patches before insert position stay as is - labelList oldToNew(addedPatchI+1); - for (label i = 0; i < insertPatchI; i++) + labelList oldToNew(addedPatchi+1); + for (label i = 0; i < insertPatchi; i++) { oldToNew[i] = i; } // patches after insert position move one up - for (label i = insertPatchI; i < addedPatchI; i++) + for (label i = insertPatchi; i < addedPatchi; i++) { oldToNew[i] = i+1; } // appended patch gets moved to insert position - oldToNew[addedPatchI] = insertPatchI; + oldToNew[addedPatchi] = insertPatchi; // Shuffle into place polyPatches.reorder(oldToNew, true); @@ -2048,7 +2037,7 @@ Foam::label Foam::meshRefinement::addPatch reorderPatchFields<surfaceSymmTensorField>(mesh, oldToNew); reorderPatchFields<surfaceTensorField>(mesh, oldToNew); - return insertPatchI; + return insertPatchi; } @@ -2058,9 +2047,9 @@ Foam::label Foam::meshRefinement::addMeshedPatch const dictionary& patchInfo ) { - label meshedI = findIndex(meshedPatches_, name); + label meshedi = findIndex(meshedPatches_, name); - if (meshedI != -1) + if (meshedi != -1) { // Already there. Get corresponding polypatch return mesh_.boundaryMesh().findPatchID(name); @@ -2068,7 +2057,7 @@ Foam::label Foam::meshRefinement::addMeshedPatch else { // Add patch - label patchI = addPatch(mesh_, name, patchInfo); + label patchi = addPatch(mesh_, name, patchInfo); // dictionary patchDict(patchInfo); // patchDict.set("nFaces", 0); @@ -2083,7 +2072,7 @@ Foam::label Foam::meshRefinement::addMeshedPatch // mesh_.boundaryMesh() // ) // ); -// label patchI = fvMeshTools::addPatch +// label patchi = fvMeshTools::addPatch // ( // mesh_, // ppPtr(), @@ -2098,7 +2087,7 @@ Foam::label Foam::meshRefinement::addMeshedPatch // Clear patch based addressing faceToCoupledPatch_.clear(); - return patchI; + return patchi; } } @@ -2110,18 +2099,18 @@ Foam::labelList Foam::meshRefinement::meshedPatches() const DynamicList<label> patchIDs(meshedPatches_.size()); forAll(meshedPatches_, i) { - label patchI = patches.findPatchID(meshedPatches_[i]); + label patchi = patches.findPatchID(meshedPatches_[i]); - if (patchI == -1) + if (patchi == -1) { WarningInFunction << "Problem : did not find patch " << meshedPatches_[i] << endl << "Valid patches are " << patches.names() << endl; //abort(FatalError); } - else if (!polyPatch::constraintType(patches[patchI].type())) + else if (!polyPatch::constraintType(patches[patchi].type())) { - patchIDs.append(patchI); + patchIDs.append(patchi); } } @@ -2137,7 +2126,7 @@ Foam::label Foam::meshRefinement::addFaceZone const surfaceZonesInfo::faceZoneType& fzType ) { - label zoneI = surfaceZonesInfo::addFaceZone + label zonei = surfaceZonesInfo::addFaceZone ( fzName, //name labelList(0), //addressing @@ -2149,7 +2138,7 @@ Foam::label Foam::meshRefinement::addFaceZone faceZoneToSlavePatch_.insert(fzName, slavePatch); faceZoneToType_.insert(fzName, fzType); - return zoneI; + return zonei; } @@ -2186,14 +2175,14 @@ void Foam::meshRefinement::selectSeparatedCoupledFaces(boolList& selected) const { const polyBoundaryMesh& patches = mesh_.boundaryMesh(); - forAll(patches, patchI) + forAll(patches, patchi) { - // Check all coupled. Avoid using .coupled() so we also pick up AMI. - if (isA<coupledPolyPatch>(patches[patchI])) + // Check all coupled. Avoid using .coupled() so we also pick up AMi. + if (isA<coupledPolyPatch>(patches[patchi])) { const coupledPolyPatch& cpp = refCast<const coupledPolyPatch> ( - patches[patchI] + patches[patchi] ); if (cpp.separated() || !cpp.parallel()) @@ -2216,40 +2205,40 @@ Foam::label Foam::meshRefinement::findRegion const point& p ) { - label regionI = -1; + label regioni = -1; // Force calculation of base points (needs to be synchronised) (void)mesh.tetBasePtIs(); - label cellI = mesh.findCell(p); - //if (cellI != -1) + label celli = mesh.findCell(p); + //if (celli != -1) //{ - // Pout<< "findRegion : Found point:" << p << " in cell " << cellI - // << " at:" << mesh.cellCentres()[cellI] << endl; + // Pout<< "findRegion : Found point:" << p << " in cell " << celli + // << " at:" << mesh.cellCentres()[celli] << endl; //} //else //{ - // Pout<< "findRegion : Found point:" << p << " in cell " << cellI + // Pout<< "findRegion : Found point:" << p << " in cell " << celli // << endl; //} - if (cellI != -1) + if (celli != -1) { - regionI = cellToRegion[cellI]; + regioni = cellToRegion[celli]; } - reduce(regionI, maxOp<label>()); + reduce(regioni, maxOp<label>()); - if (regionI == -1) + if (regioni == -1) { // See if we can perturb a bit - cellI = mesh.findCell(p+perturbVec); - if (cellI != -1) + celli = mesh.findCell(p+perturbVec); + if (celli != -1) { - regionI = cellToRegion[cellI]; + regioni = cellToRegion[celli]; } - reduce(regionI, maxOp<label>()); + reduce(regioni, maxOp<label>()); } - return regionI; + return regioni; } //XXXXXXXX //Foam::labelList Foam::meshRefinement::findRegion @@ -2264,20 +2253,20 @@ Foam::label Foam::meshRefinement::findRegion // // forAll(pts, i) // { -// label cellI = mesh.findCell(pts[i]); -// if (cellI != -1) +// label celli = mesh.findCell(pts[i]); +// if (celli != -1) // { -// regions[i] = cellToRegion[cellI]; +// regions[i] = cellToRegion[celli]; // } // reduce(regions[i], maxOp<label>()); // // if (regions[i] == -1) // { // // See if we can perturb a bit -// cellI = mesh.findCell(pts[i]+perturbVec); -// if (cellI != -1) +// celli = mesh.findCell(pts[i]+perturbVec); +// if (celli != -1) // { -// regions[i] = cellToRegion[cellI]; +// regions[i] = cellToRegion[celli]; // } // reduce(regions[i], maxOp<label>()); // } @@ -2323,7 +2312,7 @@ void Foam::meshRefinement::findRegions forAll(insideRegions, i) { // Find the region containing the point - label regionI = findRegion + label regioni = findRegion ( mesh, cellRegion, @@ -2331,14 +2320,14 @@ void Foam::meshRefinement::findRegions locationsInMesh[i] ); - insideRegions[i] = regionI; + insideRegions[i] = regioni; // Mark all cells in the region as being inside - forAll(cellRegion, cellI) + forAll(cellRegion, celli) { - if (cellRegion[cellI] == regionI) + if (cellRegion[celli] == regioni) { - insideCell[cellI] = true; + insideCell[celli] = true; } } } @@ -2350,7 +2339,7 @@ void Foam::meshRefinement::findRegions forAll(locationsOutsideMesh, i) { // Find the region containing the point - label regionI = findRegion + label regioni = findRegion ( mesh, cellRegion, @@ -2358,16 +2347,16 @@ void Foam::meshRefinement::findRegions locationsOutsideMesh[i] ); - if (regionI != -1) + if (regioni != -1) { // Do a quick check for locationsOutsideMesh overlapping with // inside ones. - label index = findIndex(insideRegions, regionI); + label index = findIndex(insideRegions, regioni); if (index != -1) { FatalErrorInFunction << "Location in mesh " << locationsInMesh[index] - << " is inside same mesh region " << regionI + << " is inside same mesh region " << regioni << " as location outside mesh " << locationsOutsideMesh[i] << exit(FatalError); @@ -2377,11 +2366,11 @@ void Foam::meshRefinement::findRegions // Now update cellRegion to -1 for unreachable cells - forAll(insideCell, cellI) + forAll(insideCell, celli) { - if (!insideCell[cellI]) + if (!insideCell[celli]) { - cellRegion[cellI] = -1; + cellRegion[celli] = -1; } } } @@ -2421,11 +2410,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMeshRegions // Get cells to remove DynamicList<label> cellsToRemove(mesh_.nCells()); - forAll(cellRegion, cellI) + forAll(cellRegion, celli) { - if (cellRegion[cellI] == -1) + if (cellRegion[celli] == -1) { - cellsToRemove.append(cellI); + cellsToRemove.append(celli); } } cellsToRemove.shrink(); @@ -2551,7 +2540,6 @@ void Foam::meshRefinement::distribute(const mapDistributePolyMesh& map) } -// Update local data for a mesh change void Foam::meshRefinement::updateMesh ( const mapPolyMesh& map, @@ -2609,11 +2597,11 @@ void Foam::meshRefinement::updateMesh Map<label> newFaceToPatch(faceToCoupledPatch_.size()); forAllConstIter(Map<label>, faceToCoupledPatch_, iter) { - label newFaceI = map.reverseFaceMap()[iter.key()]; + label newFacei = map.reverseFaceMap()[iter.key()]; - if (newFaceI >= 0) + if (newFacei >= 0) { - newFaceToPatch.insert(newFaceI, iter()); + newFaceToPatch.insert(newFacei, iter()); } } faceToCoupledPatch_.transfer(newFaceToPatch); @@ -2638,13 +2626,13 @@ void Foam::meshRefinement::updateMesh // keep master only labelList newFaceData(map.faceMap().size(), -1); - forAll(newFaceData, faceI) + forAll(newFaceData, facei) { - label oldFaceI = map.faceMap()[faceI]; + label oldFacei = map.faceMap()[facei]; - if (oldFaceI >= 0 && map.reverseFaceMap()[oldFaceI] == faceI) + if (oldFacei >= 0 && map.reverseFaceMap()[oldFacei] == facei) { - newFaceData[faceI] = data[oldFaceI]; + newFaceData[facei] = data[oldFacei]; } } data.transfer(newFaceData); @@ -2658,31 +2646,31 @@ void Foam::meshRefinement::updateMesh // These get marked with -1 in reverseFaceMap labelList reverseFaceMap(map.reverseFaceMap()); - forAll(map.faceMap(), faceI) + forAll(map.faceMap(), facei) { - label oldFaceI = map.faceMap()[faceI]; + label oldFacei = map.faceMap()[facei]; - if (oldFaceI >= 0) + if (oldFacei >= 0) { - if (reverseFaceMap[oldFaceI] != faceI) + if (reverseFaceMap[oldFacei] != facei) { - // faceI is slave face. Mark old face. - reverseFaceMap[oldFaceI] = -1; + // facei is slave face. Mark old face. + reverseFaceMap[oldFacei] = -1; } } } // 2. Map only faces with intact reverseFaceMap labelList newFaceData(map.faceMap().size(), -1); - forAll(newFaceData, faceI) + forAll(newFaceData, facei) { - label oldFaceI = map.faceMap()[faceI]; + label oldFacei = map.faceMap()[facei]; - if (oldFaceI >= 0) + if (oldFacei >= 0) { - if (reverseFaceMap[oldFaceI] == faceI) + if (reverseFaceMap[oldFacei] == facei) { - newFaceData[faceI] = data[oldFaceI]; + newFaceData[facei] = data[oldFacei]; } } } @@ -2694,11 +2682,7 @@ void Foam::meshRefinement::updateMesh bool Foam::meshRefinement::write() const { - bool writeOk = - mesh_.write() - && meshCutter_.write() - && surfaceIndex_.write(); - + bool writeOk = mesh_.write(); // Make sure that any distributed surfaces (so ones which probably have // been changed) get written as well. @@ -2740,9 +2724,9 @@ Foam::PackedBoolList Foam::meshRefinement::getMasterPoints const globalIndex globalPoints(meshPoints.size()); labelList myPoints(meshPoints.size()); - forAll(meshPoints, pointI) + forAll(meshPoints, pointi) { - myPoints[pointI] = globalPoints.toGlobal(pointI); + myPoints[pointi] = globalPoints.toGlobal(pointi); } syncTools::syncPointList @@ -2756,11 +2740,11 @@ Foam::PackedBoolList Foam::meshRefinement::getMasterPoints PackedBoolList isPatchMasterPoint(meshPoints.size()); - forAll(meshPoints, pointI) + forAll(meshPoints, pointi) { - if (myPoints[pointI] == globalPoints.toGlobal(pointI)) + if (myPoints[pointi] == globalPoints.toGlobal(pointi)) { - isPatchMasterPoint[pointI] = true; + isPatchMasterPoint[pointi] = true; } } @@ -2777,9 +2761,9 @@ Foam::PackedBoolList Foam::meshRefinement::getMasterEdges const globalIndex globalEdges(meshEdges.size()); labelList myEdges(meshEdges.size()); - forAll(meshEdges, edgeI) + forAll(meshEdges, edgei) { - myEdges[edgeI] = globalEdges.toGlobal(edgeI); + myEdges[edgei] = globalEdges.toGlobal(edgei); } syncTools::syncEdgeList @@ -2793,11 +2777,11 @@ Foam::PackedBoolList Foam::meshRefinement::getMasterEdges PackedBoolList isMasterEdge(meshEdges.size()); - forAll(meshEdges, edgeI) + forAll(meshEdges, edgei) { - if (myEdges[edgeI] == globalEdges.toGlobal(edgeI)) + if (myEdges[edgei] == globalEdges.toGlobal(edgei)) { - isMasterEdge[edgeI] = true; + isMasterEdge[edgei] = true; } } @@ -2854,18 +2838,18 @@ const labelList nCells(gMax(cellLevel)+1, 0); - forAll(cellLevel, cellI) + forAll(cellLevel, celli) { - nCells[cellLevel[cellI]]++; + nCells[cellLevel[celli]]++; } Pstream::listCombineGather(nCells, plusEqOp<label>()); Pstream::listCombineScatter(nCells); Info<< "Cells per refinement level:" << endl; - forAll(nCells, levelI) + forAll(nCells, leveli) { - Info<< " " << levelI << '\t' << nCells[levelI] + Info<< " " << leveli << '\t' << nCells[leveli] << endl; } } @@ -2909,9 +2893,9 @@ void Foam::meshRefinement::dumpRefinementLevel() const const labelList& cellLevel = meshCutter_.cellLevel(); - forAll(volRefLevel, cellI) + forAll(volRefLevel, celli) { - volRefLevel[cellI] = cellLevel[cellI]; + volRefLevel[celli] = cellLevel[celli]; } volRefLevel.write(); @@ -2938,9 +2922,9 @@ void Foam::meshRefinement::dumpRefinementLevel() const const labelList& pointLevel = meshCutter_.pointLevel(); - forAll(pointRefLevel, pointI) + forAll(pointRefLevel, pointi) { - pointRefLevel[pointI] = pointLevel[pointI]; + pointRefLevel[pointi] = pointLevel[pointi]; } pointRefLevel.write(); @@ -2952,7 +2936,7 @@ void Foam::meshRefinement::dumpIntersections(const fileName& prefix) const { { OFstream str(prefix + "_edges.obj"); - label vertI = 0; + label verti = 0; Pout<< "meshRefinement::dumpIntersections :" << " Writing cellcentre-cellcentre intersections to file " << str.name() << endl; @@ -3001,13 +2985,13 @@ void Foam::meshRefinement::dumpIntersections(const fileName& prefix) const if (surfaceHit[i] != -1) { meshTools::writeOBJ(str, start[i]); - vertI++; + verti++; meshTools::writeOBJ(str, surfaceHitInfo[i].hitPoint()); - vertI++; + verti++; meshTools::writeOBJ(str, end[i]); - vertI++; - str << "l " << vertI-2 << ' ' << vertI-1 << nl - << "l " << vertI-1 << ' ' << vertI << nl; + verti++; + str << "l " << verti-2 << ' ' << verti-1 << nl + << "l " << verti-1 << ' ' << verti << nl; } } } @@ -3027,10 +3011,18 @@ void Foam::meshRefinement::write { write(); } + + if (writeFlags && !(writeFlags & NOWRITEREFINEMENT)) + { + meshCutter_.write(); + surfaceIndex_.write(); + } + if (writeFlags & WRITELEVELS) { dumpRefinementLevel(); } + if (debugFlags & OBJINTERSECTIONS && prefix.size()) { dumpIntersections(prefix); diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H index 8b04374266f1fb48309617e6a497e876dacb073f..3500a3aef13090a724d6d8a2d57607249757e7e7 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -77,7 +77,7 @@ class snapParameters; /*---------------------------------------------------------------------------*\ - Class meshRefinement Declaration + Class meshRefinement Declaration \*---------------------------------------------------------------------------*/ class meshRefinement @@ -91,17 +91,16 @@ public: enum IOdebugType { IOMESH, - //IOSCALARLEVELS, IOOBJINTERSECTIONS, IOFEATURESEEDS, IOATTRACTION, IOLAYERINFO }; + static const NamedEnum<IOdebugType, 5> IOdebugTypeNames; enum debugType { MESH = 1<<IOMESH, - //SCALARLEVELS = 1<<IOSCALARLEVELS, OBJINTERSECTIONS = 1<<IOOBJINTERSECTIONS, FEATURESEEDS = 1<<IOFEATURESEEDS, ATTRACTION = 1<< IOATTRACTION, @@ -113,6 +112,7 @@ public: { IOOUTPUTLAYERINFO }; + static const NamedEnum<IOoutputType, 1> IOoutputTypeNames; enum outputType { @@ -123,14 +123,17 @@ public: enum IOwriteType { IOWRITEMESH, + IONOWRITEREFINEMENT, IOWRITELEVELS, IOWRITELAYERSETS, IOWRITELAYERFIELDS }; - static const NamedEnum<IOwriteType, 4> IOwriteTypeNames; + + static const NamedEnum<IOwriteType, 5> IOwriteTypeNames; enum writeType { WRITEMESH = 1<<IOWRITEMESH, + NOWRITEREFINEMENT = 1<<IONOWRITEREFINEMENT, WRITELEVELS = 1<<IOWRITELEVELS, WRITELAYERSETS = 1<<IOWRITELAYERSETS, WRITELAYERFIELDS = 1<<IOWRITELAYERFIELDS @@ -1487,7 +1490,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository -# include "meshRefinementTemplates.C" + #include "meshRefinementTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementTemplates.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementTemplates.C index 3ffb9dbb6f788b917261b836fad878e5111c5006..64a59adea491c5f9d6e8224ef256c296edcbe457 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementTemplates.C +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementTemplates.C @@ -171,7 +171,7 @@ void Foam::meshRefinement::collectAndPrint points, allPoints, UPstream::msgType(), - Pstream::blocking + Pstream::commsTypes::blocking ); List<T> allData; @@ -182,7 +182,7 @@ void Foam::meshRefinement::collectAndPrint data, allData, UPstream::msgType(), - Pstream::blocking + Pstream::commsTypes::blocking ); diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C index a8ebbcd9ea072b4a5e787bb52158e84548af3fda..e24f9c549728a96f7b7ea933e12a60044428bd73 100644 --- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C +++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C @@ -493,9 +493,22 @@ void Foam::snappyLayerDriver::handleNonStringConnected // warning from checkMesh. These faces cannot be extruded so // there is no need to even attempt it. -List<extrudeMode> oldExtrudeStatus(extrudeStatus); -OBJstream str(meshRefiner_.mesh().time().path()/"nonStringConnected.obj"); -Pout<< "Dumping string edges to " << str.name(); + List<extrudeMode> oldExtrudeStatus; + autoPtr<OBJstream> str; + if (debug&meshRefinement::LAYERINFO) + { + oldExtrudeStatus = extrudeStatus; + str.reset + ( + new OBJstream + ( + meshRefiner_.mesh().time().path() + /"nonStringConnected.obj" + ) + ); + Pout<< "Dumping string edges to " << str().name(); + } + // 1) Local Map<label> nCommonPoints(100); @@ -521,15 +534,21 @@ Pout<< "Dumping string edges to " << str.name(); // 2) TDB. Other face remote -forAll(extrudeStatus, pointi) -{ - if (extrudeStatus[pointi] != oldExtrudeStatus[pointi]) - { - str.write(meshRefiner_.mesh().points()[pp.meshPoints()[pointi]]); - } -} + if (debug&meshRefinement::LAYERINFO) + { + forAll(extrudeStatus, pointi) + { + if (extrudeStatus[pointi] != oldExtrudeStatus[pointi]) + { + str().write + ( + meshRefiner_.mesh().points()[pp.meshPoints()[pointi]] + ); + } + } + } } diff --git a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C index dec8a9f47f2b516ec674e64a86084c4e4c578bec..e4ba1c54092df9844d90129ea7efd1f55b57da5a 100644 --- a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C +++ b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C @@ -81,12 +81,7 @@ Foam::trackedParticle::trackedParticle } } - // Check state of Istream - is.check - ( - "trackedParticle::trackedParticle" - "(const Cloud<trackedParticle>&, Istream&, bool)" - ); + is.check(FUNCTION_NAME); } @@ -270,9 +265,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const trackedParticle& p) ); } - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const trackedParticle&)"); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/meshTools/AABBTree/AABBTree.C b/src/meshTools/AABBTree/AABBTree.C index 19c11f33a970842855b5b91244a84162d797e6ff..a8f02d3aa2f89404add3e9c8d40e95dddc26a9cd 100644 --- a/src/meshTools/AABBTree/AABBTree.C +++ b/src/meshTools/AABBTree/AABBTree.C @@ -492,7 +492,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const AABBTree<Type>& tree) << tree.addressing_; } - os.check("Ostream& operator<<(Ostream&, const AABBTree<Type>&)"); + os.check(FUNCTION_NAME); return os; } @@ -519,7 +519,7 @@ Foam::Istream& Foam::operator>>(Istream& is, AABBTree<Type>& tree) >> tree.addressing_; } - is.check("Istream& operator>>(Istream&, AABBTree<Type>&)"); + is.check(FUNCTION_NAME); return is; } diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C index 3e73a365969dd34e5332845068aa6556a234932e..ad1df281542465cd3f4038deefaf39dddaa340b9 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1017,7 +1017,7 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), tgtPatch.size(), map.constructMap(), @@ -1032,7 +1032,7 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), tgtPatch.size(), map.constructMap(), diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolationParallelOps.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolationParallelOps.C index cad23ec1eb383364fa401223df3b4fc12748dac4..070a4b7054947c1ea68a2f68c6a87614d95af5fe 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolationParallelOps.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolationParallelOps.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -126,7 +126,7 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::distributePatches List<labelList>& faceIDs ) const { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); for (label domain = 0; domain < Pstream::nProcs(); domain++) { diff --git a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H index 78b70675da8a27256c29317c4132fa709ad72d92..2c108b2451ab7f7ebbed6e6dc4f02f30f06d2d6d 100644 --- a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H +++ b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPointPatchField/cyclicACMIPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -211,7 +211,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H index 5a02c944799313650e6ca4f7ffa0ea7588e02e12..64765e52f74194b8ccb5525ebc78814aa83b61b6 100644 --- a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H +++ b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPointPatchField/cyclicAMIPointPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -211,7 +211,8 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType = + Pstream::commsTypes::blocking ) {} diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files index 2e21915df2c22339cbc388e4f0c5eb42b9c55c67..f9af11d9bef117e32cc43b44f7da06f863f18e40 100644 --- a/src/meshTools/Make/files +++ b/src/meshTools/Make/files @@ -1,3 +1,50 @@ +em = edgeMesh + +$(em)/edgeMesh.C +$(em)/edgeMeshIO.C +$(em)/edgeMeshNew.C + +edgeMeshFormats = $(em)/edgeMeshFormats +$(edgeMeshFormats)/edgeMeshFormatsCore.C + +$(edgeMeshFormats)/edgeMesh/edgeMeshFormat.C +$(edgeMeshFormats)/edgeMesh/edgeMeshFormatRunTime.C + +$(edgeMeshFormats)/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C +$(edgeMeshFormats)/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C + +$(edgeMeshFormats)/nas/NASedgeFormat.C +$(edgeMeshFormats)/nas/NASedgeFormatRunTime.C + +$(edgeMeshFormats)/obj/OBJedgeFormat.C +$(edgeMeshFormats)/obj/OBJedgeFormatRunTime.C + +$(edgeMeshFormats)/starcd/STARCDedgeFormat.C +$(edgeMeshFormats)/starcd/STARCDedgeFormatRunTime.C + +$(edgeMeshFormats)/vtk/VTKedgeFormat.C +$(edgeMeshFormats)/vtk/VTKedgeFormatRunTime.C + + +edgeMeshTools = $(em)/edgeMeshTools +$(edgeMeshTools)/edgeMeshTools.C +$(edgeMeshTools)/edgeMeshFeatureProximity.C + + +$(em)/featureEdgeMesh/featureEdgeMesh.C + +eem = $(em)/extendedEdgeMesh + +$(eem)/extendedEdgeMesh.C +$(eem)/extendedEdgeMeshNew.C + +$(eem)/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C +$(eem)/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C + +efm = $(eem)/extendedFeatureEdgeMesh + +$(efm)/extendedFeatureEdgeMesh.C + cellClassification/cellClassification.C cellClassification/cellInfo.C @@ -22,8 +69,6 @@ $(csys)/coordinateRotation/EulerCoordinateRotation.C $(csys)/coordinateRotation/STARCDCoordinateRotation.C $(csys)/coordinateRotation/cylindrical.C -edgeFaceCirculator/edgeFaceCirculator.C - polyMeshZipUpCells/polyMeshZipUpCells.C primitiveMeshGeometry/primitiveMeshGeometry.C @@ -63,23 +108,24 @@ indexedOctree/treeDataPoint.C indexedOctree/treeDataPrimitivePatchName.C indexedOctree/treeDataTriSurface.C -searchableSurface = searchableSurface -$(searchableSurface)/searchableBox.C -$(searchableSurface)/searchableRotatedBox.C -$(searchableSurface)/searchableCylinder.C -$(searchableSurface)/searchableCone.C -$(searchableSurface)/searchableDisk.C -$(searchableSurface)/searchablePlane.C -$(searchableSurface)/searchablePlate.C -$(searchableSurface)/searchableSphere.C -$(searchableSurface)/searchableSurface.C -$(searchableSurface)/searchableSurfaceCollection.C -$(searchableSurface)/searchableSurfaces.C -$(searchableSurface)/searchableSurfacesQueries.C -$(searchableSurface)/searchableSurfaceWithGaps.C -$(searchableSurface)/triSurfaceMesh.C -$(searchableSurface)/closedTriSurfaceMesh.C -$(searchableSurface)/subTriSurfaceMesh.C + +searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.C +searchableSurfaces/searchableBox/searchableBox.C +searchableSurfaces/searchableCone/searchableCone.C +searchableSurfaces/searchableCylinder/searchableCylinder.C +searchableSurfaces/searchableDisk/searchableDisk.C +searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.C +searchableSurfaces/searchablePlane/searchablePlane.C +searchableSurfaces/searchablePlate/searchablePlate.C +searchableSurfaces/searchableRotatedBox/searchableRotatedBox.C +searchableSurfaces/searchableSphere/searchableSphere.C +searchableSurfaces/searchableSurface/searchableSurface.C +searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.C +searchableSurfaces/searchableSurfaces/searchableSurfaces.C +searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.C +searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.C +searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C +searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C topoSets = sets/topoSets $(topoSets)/cellSet.C @@ -175,6 +221,8 @@ triSurface/triangleFuncs/triangleFuncs.C triSurface/surfaceFeatures/surfaceFeatures.C triSurface/triSurfaceLoader/triSurfaceLoader.C triSurface/triSurfaceTools/triSurfaceTools.C +triSurface/triSurfaceTools/triSurfaceCloseness.C +triSurface/triSurfaceTools/triSurfaceCurvature.C triSurface/triSurfaceTools/geompack/geompack.C triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C diff --git a/src/meshTools/Make/options b/src/meshTools/Make/options index 98853e61fbbda0f1c48b945d89a0b56ee9e2c939..210c65589602fc5911b063e86e95879380069bc9 100644 --- a/src/meshTools/Make/options +++ b/src/meshTools/Make/options @@ -1,8 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude LIB_LIBS = \ - -ltriSurface \ -lsurfMesh diff --git a/src/meshTools/algorithms/MeshWave/FaceCellWave.C b/src/meshTools/algorithms/MeshWave/FaceCellWave.C index f76d71657456766cb37b3fc8fc5c716e8860ca6a..a4394ae6e7ee3411b6dbfc7e09a2cba8814ce391 100644 --- a/src/meshTools/algorithms/MeshWave/FaceCellWave.C +++ b/src/meshTools/algorithms/MeshWave/FaceCellWave.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -514,7 +514,7 @@ void Foam::FaceCellWave<Type, TrackingData>::handleProcPatches() // Send all - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); forAll(procPatches, i) { diff --git a/src/meshTools/algorithms/PointEdgeWave/PointEdgeWave.C b/src/meshTools/algorithms/PointEdgeWave/PointEdgeWave.C index b0d01a81b360918a77b6de17a6aac8b8808d1b52..668f1f9b6710eae1bd13235c917d646c425df9c9 100644 --- a/src/meshTools/algorithms/PointEdgeWave/PointEdgeWave.C +++ b/src/meshTools/algorithms/PointEdgeWave/PointEdgeWave.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -311,7 +311,7 @@ void Foam::PointEdgeWave<Type, TrackingData>::handleProcPatches() { // 1. Send all point info on processor patches. - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); DynamicList<Type> patchInfo; DynamicList<label> thisPoints; diff --git a/src/meshTools/coordinateSystems/coordinateRotation/EulerCoordinateRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/EulerCoordinateRotation.H index d55d8e418a52d8fe060b148bf1f8c91d9dd3cddd..984df3912d9732c9eef5c798c0409067d163c90b 100644 --- a/src/meshTools/coordinateSystems/coordinateRotation/EulerCoordinateRotation.H +++ b/src/meshTools/coordinateSystems/coordinateRotation/EulerCoordinateRotation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -155,9 +155,7 @@ public: //- Update the rotation for a list of cells virtual void updateCells(const polyMesh&, const labelList&) - { - // do nothing - } + {} //- Return local-to-global transformation tensor virtual const tensor& R() const diff --git a/src/meshTools/coordinateSystems/coordinateRotation/STARCDCoordinateRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/STARCDCoordinateRotation.H index cb471e077ebdd9f8ce5cd3cf7ead257232625fe3..e25507005837d1350ff439d0dac5f7ea780fc353 100644 --- a/src/meshTools/coordinateSystems/coordinateRotation/STARCDCoordinateRotation.H +++ b/src/meshTools/coordinateSystems/coordinateRotation/STARCDCoordinateRotation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -147,9 +147,7 @@ public: //- Update the rotation for a list of cells virtual void updateCells(const polyMesh&, const labelList&) - { - // do nothing - } + {} //- Return local-to-global transformation tensor virtual const tensor& R() const diff --git a/src/meshTools/coordinateSystems/coordinateRotation/axesRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/axesRotation.H index 77f39d60e53381452315636918c9eecb0b5ab603..2f51342ba4157f25ab84773a4d99230ece625b4a 100644 --- a/src/meshTools/coordinateSystems/coordinateRotation/axesRotation.H +++ b/src/meshTools/coordinateSystems/coordinateRotation/axesRotation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -141,9 +141,7 @@ public: //- Update the rotation for a list of cells virtual void updateCells(const polyMesh&, const labelList&) - { - // Do nothing - } + {} //- Return local-to-global transformation tensor virtual const tensor& R() const diff --git a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotationNew.C b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotationNew.C index ef1a0a0a278a938244d3d8e8f9c9df20b365e703..b1457329ff11971407236ec23a9a120336323789 100644 --- a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotationNew.C +++ b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotationNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,10 +49,8 @@ Foam::autoPtr<Foam::coordinateRotation> Foam::coordinateRotation::New if (!cstrIter.found()) { - FatalIOErrorInFunction - ( - dict - ) << "Unknown coordinateRotation type " + FatalIOErrorInFunction(dict) + << "Unknown coordinateRotation type " << rotType << nl << nl << "Valid coordinateRotation types are :" << nl << "[default: axes ]" @@ -83,13 +81,10 @@ Foam::autoPtr<Foam::coordinateRotation> Foam::coordinateRotation::New if (!cstrIter.found()) { - FatalIOErrorInFunction - ( - dict - ) << "Unknown coordinateRotation type " + FatalIOErrorInFunction(dict) + << "Unknown coordinateRotation type " << rotType << nl << nl << "Valid coordinateRotation types are :" << nl - << "[default: axes ]" << dictionaryConstructorTablePtr_->sortedToc() << exit(FatalIOError); } @@ -97,4 +92,5 @@ Foam::autoPtr<Foam::coordinateRotation> Foam::coordinateRotation::New return autoPtr<coordinateRotation>(cstrIter()(dict)); } + // ************************************************************************* // diff --git a/src/meshTools/coordinateSystems/coordinateSystem.C b/src/meshTools/coordinateSystems/coordinateSystem.C index e3150ff8f589195cdfab5b284db243ecfdc8215b..e8c507a7f848e6177ca7a6dbc697af94703b1841 100644 --- a/src/meshTools/coordinateSystems/coordinateSystem.C +++ b/src/meshTools/coordinateSystems/coordinateSystem.C @@ -378,7 +378,7 @@ bool Foam::operator!=(const coordinateSystem& a, const coordinateSystem& b) Foam::Ostream& Foam::operator<<(Ostream& os, const coordinateSystem& cs) { cs.write(os); - os.check("Ostream& operator<<(Ostream&, const coordinateSystem&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H b/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H index 8aa85d978b9a715356ebd48d1e2e16567b9785dc..a6a1e9f6ce968675e478a9780a878b63a6a75432 100644 --- a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H +++ b/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,16 +86,10 @@ class primitiveMesh; class edgeFaceCirculator { - // Static data members + // Private Member Data - //- End iterator - static const edgeFaceCirculator endConstIter; - - - // Private data - - //- Mesh - const primitiveMesh& mesh_; + //- The underlying mesh pointer + const primitiveMesh* meshPtr_; //- Current face label faceLabel_; @@ -116,16 +110,21 @@ class edgeFaceCirculator // Private Member Functions + //- The underlying mesh + inline const primitiveMesh& mesh() const; + //- Set to end() iterator inline void setEnd(); //- Check and set faceLabel_ and ownerSide_ inline void setFace(const label facei, const label celli); - //- Set faceLabel_ to be the other face on the cell that uses the - // edge. + //- Set faceLabel_ to be the other face on the cell that uses the edge. inline void otherFace(const label celli); + //- Construct null - this is also an end iterator + inline edgeFaceCirculator(); + public: @@ -142,7 +141,7 @@ public: ); //- Construct as copy - inline edgeFaceCirculator(const edgeFaceCirculator&); + inline edgeFaceCirculator(const edgeFaceCirculator& circ); // Member Functions @@ -156,8 +155,12 @@ public: const label v1 ); + //- Return the face label, -1 for end iterator inline label faceLabel() const; + //- Return true if the face label corresponds to an internal face + inline bool isInternalFace() const; + inline bool ownerSide() const; inline label index() const; @@ -194,8 +197,8 @@ public: inline edgeFaceCirculator cbegin() const; //- Iterator set to beyond the end of the walk. - inline const edgeFaceCirculator& end() const; - inline const edgeFaceCirculator& cend() const; + inline const edgeFaceCirculator end() const; + inline const edgeFaceCirculator cend() const; }; diff --git a/src/meshTools/edgeFaceCirculator/edgeFaceCirculatorI.H b/src/meshTools/edgeFaceCirculator/edgeFaceCirculatorI.H index bbebe4382f11ca074d987018e9eb06252795ac87..23c1f76faf4269482d161048c80f07ffb6e82388 100644 --- a/src/meshTools/edgeFaceCirculator/edgeFaceCirculatorI.H +++ b/src/meshTools/edgeFaceCirculator/edgeFaceCirculatorI.H @@ -27,6 +27,12 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +inline const Foam::primitiveMesh& Foam::edgeFaceCirculator::mesh() const +{ + return *meshPtr_; +} + + void Foam::edgeFaceCirculator::setEnd() { faceLabel_ = -1; @@ -42,7 +48,7 @@ void Foam::edgeFaceCirculator::setFace { faceLabel_ = facei; - if (!isBoundaryEdge_ && !mesh_.isInternalFace(facei)) + if (!isBoundaryEdge_ && !mesh().isInternalFace(facei)) { FatalErrorInFunction << "Edge is not defined as boundary edge but still walked to" @@ -54,11 +60,11 @@ void Foam::edgeFaceCirculator::setFace void Foam::edgeFaceCirculator::otherFace(const label celli) { - const face& f = mesh_.faces()[faceLabel_]; + const face& f = mesh().faces()[faceLabel_]; label v0 = f[index_]; label v1 = f.nextLabel(index_); - const cell& cFaces = mesh_.cells()[celli]; + const cell& cFaces = mesh().cells()[celli]; forAll(cFaces, i) { @@ -66,7 +72,7 @@ void Foam::edgeFaceCirculator::otherFace(const label celli) if (faceB != faceLabel_) { - label fp = getMinIndex(mesh_.faces()[faceB], v0, v1); + label fp = getMinIndex(mesh().faces()[faceB], v0, v1); if (fp >= 0) { @@ -81,14 +87,24 @@ void Foam::edgeFaceCirculator::otherFace(const label celli) << "Could not find next face stepping" << " through cell along edge." << endl << "face:" << faceLabel_ << " index in face:" << index_ - << " edge:" << mesh_.points()[v0] << mesh_.points()[v1] + << " edge:" << mesh().points()[v0] << mesh().points()[v1] << abort(FatalError); } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -//- Construct from components +Foam::edgeFaceCirculator::edgeFaceCirculator() +: + meshPtr_(nullptr), + faceLabel_(-1), + ownerSide_(false), + index_(-1), + isBoundaryEdge_(false), + startFaceLabel_(0) +{} + + Foam::edgeFaceCirculator::edgeFaceCirculator ( const primitiveMesh& mesh, @@ -98,7 +114,7 @@ Foam::edgeFaceCirculator::edgeFaceCirculator const bool isBoundaryEdge ) : - mesh_(mesh), + meshPtr_(&mesh), faceLabel_(faceLabel), ownerSide_(ownerSide), index_(index), @@ -107,10 +123,9 @@ Foam::edgeFaceCirculator::edgeFaceCirculator {} -//- Construct copy Foam::edgeFaceCirculator::edgeFaceCirculator(const edgeFaceCirculator& circ) : - mesh_(circ.mesh_), + meshPtr_(circ.meshPtr_), faceLabel_(circ.faceLabel_), ownerSide_(circ.ownerSide_), index_(circ.index_), @@ -158,6 +173,17 @@ Foam::label Foam::edgeFaceCirculator::faceLabel() const } +bool Foam::edgeFaceCirculator::isInternalFace() const +{ + return + ( + faceLabel_ >= 0 + && meshPtr_ + && meshPtr_->isInternalFace(faceLabel_) + ); +} + + bool Foam::edgeFaceCirculator::ownerSide() const { return ownerSide_; @@ -174,11 +200,11 @@ Foam::label Foam::edgeFaceCirculator::cellLabel() const { if (ownerSide_) { - return mesh_.faceOwner()[faceLabel_]; + return mesh().faceOwner()[faceLabel_]; } - else if (mesh_.isInternalFace(faceLabel_)) + else if (mesh().isInternalFace(faceLabel_)) { - return mesh_.faceNeighbour()[faceLabel_]; + return mesh().faceNeighbour()[faceLabel_]; } else { @@ -189,7 +215,7 @@ Foam::label Foam::edgeFaceCirculator::cellLabel() const bool Foam::edgeFaceCirculator::sameOrder(const label v0, const label v1) const { - const face& f = mesh_.faces()[faceLabel_]; + const face& f = mesh().faces()[faceLabel_]; label fp = getMinIndex(f, v0, v1); @@ -216,21 +242,21 @@ void Foam::edgeFaceCirculator::setCanonical() while (true) { - if (mesh_.isInternalFace(faceLabel_)) + if (mesh().isInternalFace(faceLabel_)) { if (ownerSide_) { - label celli = mesh_.faceNeighbour()[faceLabel_]; + label celli = mesh().faceNeighbour()[faceLabel_]; otherFace(celli); // Maintain reverse direction of walking - ownerSide_ = (mesh_.faceOwner()[faceLabel_] == celli); + ownerSide_ = (mesh().faceOwner()[faceLabel_] == celli); } else { - label celli = mesh_.faceOwner()[faceLabel_]; + label celli = mesh().faceOwner()[faceLabel_]; otherFace(celli); // Maintain reverse direction of walking - ownerSide_ = (mesh_.faceOwner()[faceLabel_] == celli); + ownerSide_ = (mesh().faceOwner()[faceLabel_] == celli); } } else if (ownerSide_) @@ -239,22 +265,22 @@ void Foam::edgeFaceCirculator::setCanonical() } else { - label celli = mesh_.faceOwner()[faceLabel_]; + label celli = mesh().faceOwner()[faceLabel_]; otherFace(celli); // Maintain reverse direction of walking - ownerSide_ = (mesh_.faceOwner()[faceLabel_] == celli); + ownerSide_ = (mesh().faceOwner()[faceLabel_] == celli); } i++; if (i >= 1000) { - const face& f = mesh_.faces()[faceLabel_]; + const face& f = mesh().faces()[faceLabel_]; FatalErrorInFunction << "Walked " << i << " cells around edge " - << mesh_.points()[f[index_]] - << mesh_.points()[f.nextLabel(index_)] + << mesh().points()[f[index_]] + << mesh().points()[f.nextLabel(index_)] << " without reaching a boundary face." << " Are you sure this is a boundary edge?" << abort(FatalError); @@ -281,15 +307,15 @@ void Foam::edgeFaceCirculator::setCanonical() break; } - if (!mesh_.isInternalFace(faceLabel_)) + if (!mesh().isInternalFace(faceLabel_)) { - const face& f = mesh_.faces()[faceLabel_]; + const face& f = mesh().faces()[faceLabel_]; FatalErrorInFunction << "Reached boundary face " << faceLabel_ << " when walking around internal edge " - << mesh_.points()[f[index_]] - << mesh_.points()[f.nextLabel(index_)] + << mesh().points()[f[index_]] + << mesh().points()[f.nextLabel(index_)] << "." << endl << "Are you sure this is an internal edge?" << abort(FatalError); @@ -360,10 +386,10 @@ Foam::edgeFaceCirculator::operator++() else if (ownerSide_) { // Step to owner - label celli = mesh_.faceOwner()[faceLabel_]; + label celli = mesh().faceOwner()[faceLabel_]; otherFace(celli); // Maintain direction of walking - ownerSide_ = (mesh_.faceOwner()[faceLabel_] != celli); + ownerSide_ = (mesh().faceOwner()[faceLabel_] != celli); // Check for internal edge : ends on starting face. if (!isBoundaryEdge_ && faceLabel_ == startFaceLabel_) @@ -371,13 +397,13 @@ Foam::edgeFaceCirculator::operator++() setEnd(); } } - else if (mesh_.isInternalFace(faceLabel_)) + else if (mesh().isInternalFace(faceLabel_)) { // Step to neighbour - label celli = mesh_.faceNeighbour()[faceLabel_]; + label celli = mesh().faceNeighbour()[faceLabel_]; otherFace(celli); // Maintain direction of walking - ownerSide_ = (mesh_.faceOwner()[faceLabel_] != celli); + ownerSide_ = (mesh().faceOwner()[faceLabel_] != celli); // Check for internal edge : ends on starting face. if (!isBoundaryEdge_ && faceLabel_ == startFaceLabel_) @@ -399,7 +425,7 @@ Foam::edgeFaceCirculator Foam::edgeFaceCirculator::begin() const { edgeFaceCirculator iter ( - mesh_, + *meshPtr_, faceLabel_, ownerSide_, index_, @@ -418,7 +444,7 @@ Foam::edgeFaceCirculator Foam::edgeFaceCirculator::cbegin() const { edgeFaceCirculator iter ( - mesh_, + *meshPtr_, faceLabel_, ownerSide_, index_, @@ -433,14 +459,14 @@ Foam::edgeFaceCirculator Foam::edgeFaceCirculator::cbegin() const } -const Foam::edgeFaceCirculator& Foam::edgeFaceCirculator::end() const +const Foam::edgeFaceCirculator Foam::edgeFaceCirculator::end() const { - return endConstIter; + return edgeFaceCirculator(); } -const Foam::edgeFaceCirculator& Foam::edgeFaceCirculator::cend() const +const Foam::edgeFaceCirculator Foam::edgeFaceCirculator::cend() const { - return endConstIter; + return edgeFaceCirculator(); } diff --git a/src/edgeMesh/edgeMesh.C b/src/meshTools/edgeMesh/edgeMesh.C similarity index 100% rename from src/edgeMesh/edgeMesh.C rename to src/meshTools/edgeMesh/edgeMesh.C diff --git a/src/edgeMesh/edgeMesh.H b/src/meshTools/edgeMesh/edgeMesh.H similarity index 99% rename from src/edgeMesh/edgeMesh.H rename to src/meshTools/edgeMesh/edgeMesh.H index 06294780d91a64bc3a576f382f07e015174d8994..9a5404736bfa2fde71deb7d5f9b4d0f1299b4641 100644 --- a/src/edgeMesh/edgeMesh.H +++ b/src/meshTools/edgeMesh/edgeMesh.H @@ -82,6 +82,7 @@ class edgeMesh //- From point to edges mutable autoPtr<labelListList> pointEdgesPtr_; + // Private Member Functions //- Calculate point-edge addressing (inverse of edges) diff --git a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C similarity index 94% rename from src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C index 4206a3477458f966b7585f8adc497573592d91f5..d8b14d5a9cc98d5e618e5c8b5ac1613a26a2a87e 100644 --- a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -144,13 +144,7 @@ Foam::Ostream& Foam::fileFormats::edgeMeshFormat::write IOobject::writeDivider(os); - // Check state of Ostream - os.check - ( - "edgeMeshFormat::write" - "(Ostream&, const pointField&, const edgeList&)" - ); - + os.check(FUNCTION_NAME); return os; } @@ -208,8 +202,7 @@ void Foam::fileFormats::edgeMeshFormat::write write(os, mesh.points(), mesh.edges()); - // Check state of Ostream - os.check("edgeMeshFormat::write(Ostream&)"); + os.check(FUNCTION_NAME); } diff --git a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H similarity index 98% rename from src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H index 99ea8c5434c3a3716d002ac4c9dfb57e1714150d..8f9d1a6bf6c9d218ccd7499a7e1aea403cf6e624 100644 --- a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C index 2f191be35eafaeec5a63480c0168445939e68ebb..b552638ae8321c8ab69e6d8815b98b9d00541597 100644 --- a/src/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C similarity index 98% rename from src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C rename to src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C index 9cd5e35fda2cdaae80c1eddb04204f834b791643..45ea4229c70e5137dcb19a52a297ea5b0e17928c 100644 --- a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H similarity index 98% rename from src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H rename to src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H index 0f5bbb83ce83b185a35dc5e6b215452e640a9bb4..fa68510084f56a017d0f7a860b482521e4ef1f82 100644 --- a/src/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMeshFormatsCore.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C index 3c72541702ca3408b1bd9a851a4dbdc83fa50c08..a25999ecb90ea763004df61e12423ea14d17c63c 100644 --- a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H similarity index 97% rename from src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H index cabc9beec0cbdeec8da2294f03f57b1e715f8510..3582b2f59f193147ea8050954935a27283a9d5e2 100644 --- a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C similarity index 95% rename from src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C index 958f99facb7a08bf71748b188d76c1beb4b9b922..5d64582de66c091c3289657a6a3fa2e616ddb26a 100644 --- a/src/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C similarity index 99% rename from src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C index 643c161cb1726ee65c12bff2a7cd55932731c586..6eaab1996586221889342dc7532cf90fd9c4dc0d 100644 --- a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H similarity index 97% rename from src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H index 4ed631bc427a1101f88676fed70f8aba62b8292d..03f403f8abf0122091a82af9bdebd93bebd85b28 100644 --- a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C index c2932e179d39e32361b57b331090beb07703f764..018934d33d3fbd541d67501e9df2cb42ecdb7f4a 100644 --- a/src/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/nas/NASedgeFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C similarity index 99% rename from src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C index 9f423b0e6b296ce638bd048445fe3404c98fa8dd..e7441e160ae8693958ba1f3a3ac86405787f2cd7 100644 --- a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H similarity index 98% rename from src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H index 11affeddb0e0b5e8077ef21cb7fa8e0e2b5be24c..baa87877315e4d4f1ebc37d6d6899cbba73402b7 100644 --- a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C index 5bda1bb6b42e556bd81938feb4aa1277b125c8d2..ef56e7525d55e94e8b30ee0321ae1aac198324ce 100644 --- a/src/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/obj/OBJedgeFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C similarity index 99% rename from src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C index f575a60a2a4f08a6bdb3e04e47239725d44728d6..39b16d7ccb4abf02b07becb8355e11031ad4686d 100644 --- a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H similarity index 98% rename from src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H index 295cbebfbc354cd7cb047dbb27693021ad0fd7d4..a6b0bbfb2f67849b26ee327740cd71bfba3663d0 100644 --- a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C index 63f690609ba6b0e756b59e50042cd32e6fe17961..c03bb42293caf0626aef163280351953211054dc 100644 --- a/src/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/starcd/STARCDedgeFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C similarity index 98% rename from src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C rename to src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C index fe18c897f497378d3d3efac1895ca2087295f3dd..4accc8044eed87fa49d011d9b09416077af382fc 100644 --- a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H similarity index 98% rename from src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H rename to src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H index 2285cf61a0f7a4006d6520383df7658c5f69f5c7..b85e134d757714f4a1cbef7c237a9ce8a831cffb 100644 --- a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H +++ b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C similarity index 96% rename from src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C rename to src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C index 35720040266859ad8593019cd512000d1eb68edb..891804b4eeb1a37dcb00fa22119fbd7daa012899 100644 --- a/src/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshI.H b/src/meshTools/edgeMesh/edgeMeshI.H similarity index 97% rename from src/edgeMesh/edgeMeshI.H rename to src/meshTools/edgeMesh/edgeMeshI.H index 5ccff22321492bc97d18f82c77e527954bbebadd..b5034362de1957e71769f06f18b5de381ae89ffc 100644 --- a/src/edgeMesh/edgeMeshI.H +++ b/src/meshTools/edgeMesh/edgeMeshI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/edgeMeshIO.C b/src/meshTools/edgeMesh/edgeMeshIO.C similarity index 93% rename from src/edgeMesh/edgeMeshIO.C rename to src/meshTools/edgeMesh/edgeMeshIO.C index 64f918b1938499fd96d25b9dc4d4b9608d85d516..a187cb2d6c24eeaac1f47de3bc9352bd7c99241e 100644 --- a/src/edgeMesh/edgeMeshIO.C +++ b/src/meshTools/edgeMesh/edgeMeshIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -128,9 +128,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const edgeMesh& em) { fileFormats::edgeMeshFormat::write(os, em.points_, em.edges_); - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const edgeMesh&)"); - + os.check(FUNCTION_NAME); return os; } @@ -141,9 +139,7 @@ Foam::Istream& Foam::operator>>(Istream& is, edgeMesh& em) em.pointEdgesPtr_.clear(); - // Check state of Istream - is.check("Istream& operator>>(Istream&, edgeMesh&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/edgeMesh/edgeMeshNew.C b/src/meshTools/edgeMesh/edgeMeshNew.C similarity index 96% rename from src/edgeMesh/edgeMeshNew.C rename to src/meshTools/edgeMesh/edgeMeshNew.C index 608c5033df7698173601d869f73ee8efaafbbfb6..fa488d6f556cb196298103f338562d6767732e93 100644 --- a/src/edgeMesh/edgeMeshNew.C +++ b/src/meshTools/edgeMesh/edgeMeshNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshFeatureProximity.C b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshFeatureProximity.C new file mode 100644 index 0000000000000000000000000000000000000000..c5e9e883e7019930185eb201dc9c9d6a03727dab --- /dev/null +++ b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshFeatureProximity.C @@ -0,0 +1,228 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "edgeMeshTools.H" + +#include "extendedEdgeMesh.H" +#include "triSurface.H" +#include "triSurfaceFields.H" +#include "pointIndexHit.H" +#include "MeshedSurface.H" +#include "OFstream.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +static scalar calcProximityOfFeaturePoints +( + const List<pointIndexHit>& hitList, + const scalar defaultCellSize +) +{ + scalar minDist = defaultCellSize; + + for + ( + label hI1 = 0; + hI1 < hitList.size() - 1; + ++hI1 + ) + { + const pointIndexHit& pHit1 = hitList[hI1]; + + if (pHit1.hit()) + { + for + ( + label hI2 = hI1 + 1; + hI2 < hitList.size(); + ++hI2 + ) + { + const pointIndexHit& pHit2 = hitList[hI2]; + + if (pHit2.hit()) + { + scalar curDist = mag(pHit1.hitPoint() - pHit2.hitPoint()); + + minDist = min(curDist, minDist); + } + } + } + } + + return minDist; +} + + +scalar calcProximityOfFeatureEdges +( + const edgeMesh& emesh, + const List<pointIndexHit>& hitList, + const scalar defaultCellSize +) +{ + scalar minDist = defaultCellSize; + + for + ( + label hI1 = 0; + hI1 < hitList.size() - 1; + ++hI1 + ) + { + const pointIndexHit& pHit1 = hitList[hI1]; + + if (pHit1.hit()) + { + const edge& e1 = emesh.edges()[pHit1.index()]; + + for + ( + label hI2 = hI1 + 1; + hI2 < hitList.size(); + ++hI2 + ) + { + const pointIndexHit& pHit2 = hitList[hI2]; + + if (pHit2.hit()) + { + const edge& e2 = emesh.edges()[pHit2.index()]; + + // Don't refine if the edges are connected to each other + if (!e1.connects(e2)) + { + scalar curDist = + mag(pHit1.hitPoint() - pHit2.hitPoint()); + + minDist = min(curDist, minDist); + } + } + } + } + } + + return minDist; +} + +} // End namespace Foam + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::tmp<Foam::scalarField> Foam::edgeMeshTools::featureProximity +( + const extendedEdgeMesh& emesh, + const triSurface& surf, + const scalar searchDistance +) +{ + tmp<scalarField> tfld(new scalarField(surf.size(), searchDistance)); + scalarField& featureProximity = tfld.ref(); + + Info<< "Extracting proximity of close feature points and " + << "edges to the surface" << endl; + + forAll(surf, fI) + { + const triPointRef& tri = surf[fI].tri(surf.points()); + const point& triCentre = tri.circumCentre(); + + const scalar radiusSqr = min + ( + sqr(4*tri.circumRadius()), + sqr(searchDistance) + ); + + List<pointIndexHit> hitList; + + emesh.allNearestFeatureEdges(triCentre, radiusSqr, hitList); + + featureProximity[fI] = + calcProximityOfFeatureEdges + ( + emesh, + hitList, + featureProximity[fI] + ); + + emesh.allNearestFeaturePoints(triCentre, radiusSqr, hitList); + + featureProximity[fI] = + calcProximityOfFeaturePoints + ( + hitList, + featureProximity[fI] + ); + } + + return tfld; +} + + +Foam::tmp<Foam::scalarField> Foam::edgeMeshTools::writeFeatureProximity +( + const Time& runTime, + const word& basename, + const extendedEdgeMesh& emesh, + const triSurface& surf, + const scalar searchDistance +) +{ + Info<< nl << "Extracting curvature of surface at the points." + << endl; + + + tmp<scalarField> tfld = + edgeMeshTools::featureProximity(emesh, surf, searchDistance); + scalarField& featureProximity = tfld.ref(); + + triSurfaceScalarField outputField + ( + IOobject + ( + basename + ".featureProximity", + runTime.constant(), + "triSurface", + runTime, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + surf, + dimLength, + scalarField() + ); + + outputField.swap(featureProximity); + outputField.write(); + outputField.swap(featureProximity); + + return tfld; +} + +// ************************************************************************* // diff --git a/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.C b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.C new file mode 100644 index 0000000000000000000000000000000000000000..eac159b8e9844c40096be8be0a9dc41f570d49f5 --- /dev/null +++ b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "edgeMeshTools.H" + +#include "extendedFeatureEdgeMesh.H" +#include "OFstream.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +void Foam::edgeMeshTools::writeStats +( + Ostream& os, + const extendedFeatureEdgeMesh& emesh +) +{ + os << "Feature set:" << nl + << " points : " << emesh.points().size() << nl + << " of which" << nl + << " convex : " + << emesh.concaveStart() << nl + << " concave : " + << (emesh.mixedStart()-emesh.concaveStart()) << nl + << " mixed : " + << (emesh.nonFeatureStart()-emesh.mixedStart()) << nl + << " non-feature : " + << (emesh.points().size()-emesh.nonFeatureStart()) << nl + << " edges : " << emesh.edges().size() << nl + << " of which" << nl + << " external edges : " + << emesh.internalStart() << nl + << " internal edges : " + << (emesh.flatStart()- emesh.internalStart()) << nl + << " flat edges : " + << (emesh.openStart()- emesh.flatStart()) << nl + << " open edges : " + << (emesh.multipleStart()- emesh.openStart()) << nl + << " multiply connected : " + << (emesh.edges().size()- emesh.multipleStart()) << endl; +} + + +// ************************************************************************* // diff --git a/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.H b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.H new file mode 100644 index 0000000000000000000000000000000000000000..aab9216f34f6c9ec367138dae810ffa84401ecce --- /dev/null +++ b/src/meshTools/edgeMesh/edgeMeshTools/edgeMeshTools.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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/>. + +Namespace + Foam::edgeMeshTools + +Description + Collection of static functions related to edgeMesh features. + +SourceFiles + edgeMeshTools.C + edgeMeshFeatureProximity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef edgeMeshTools_H +#define edgeMeshTools_H + +#include "tmp.H" +#include "scalarField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class edgeMesh; +class extendedEdgeMesh; +class extendedFeatureEdgeMesh; +class triSurface; +class Time; +class Ostream; + +/*---------------------------------------------------------------------------*\ + Namespace edgeMeshTools Declaration +\*---------------------------------------------------------------------------*/ + +namespace edgeMeshTools +{ + //- Write some information + void writeStats + ( + Ostream& os, + const extendedFeatureEdgeMesh& emesh + ); + + + //- Calculate proximity of the features to the surface + tmp<scalarField> featureProximity + ( + const extendedEdgeMesh& emesh, + const triSurface& surf, + const scalar searchDistance + ); + + + //- Calculate proximity of the features to the surface and write the field + tmp<scalarField> writeFeatureProximity + ( + const Time& runTime, + const word& basename, + const extendedEdgeMesh& emesh, + const triSurface& surf, + const scalar searchDistance + ); + +} // End namespace edgeMeshTools + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C similarity index 99% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C index d1c768666d0cfe2d29ecb9dd0c5872705ff51b62..24c13c35594c8f6a4e813954dd9ebde87b7be292 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -1277,13 +1277,15 @@ void Foam::extendedEdgeMesh::add(const extendedEdgeMesh& fem) ); } - pointField newEdgeDirections(newEdgeI); + pointField newEdgeDirections + ( + edgeDirections().size() + + fem.edgeDirections().size() + ); newEdgeDirections.rmap(edgeDirections(), reverseEdgeMap); newEdgeDirections.rmap(fem.edgeDirections(), reverseFemEdgeMap); - - // Normals // ~~~~~~~ @@ -2446,9 +2448,7 @@ Foam::Istream& Foam::operator>> vt = static_cast<Foam::extendedEdgeMesh::sideVolumeType>(type); - // Check state of Istream - is.check("operator>>(Istream&, sideVolumeType&)"); - + is.check(FUNCTION_NAME); return is; } @@ -2497,9 +2497,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const extendedEdgeMesh& em) << em.regionEdges_ << endl; - // Check state of Ostream - os.check("Ostream& operator<<(Ostream&, const extendedEdgeMesh&)"); - + os.check(FUNCTION_NAME); return os; } @@ -2523,9 +2521,7 @@ Foam::Istream& Foam::operator>>(Istream& is, extendedEdgeMesh& em) >> em.featurePointEdges_ >> em.regionEdges_; - // Check state of Istream - is.check("Istream& operator>>(Istream&, extendedEdgeMesh&)"); - + is.check(FUNCTION_NAME); return is; } diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H similarity index 96% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H index 80573b33c2766d9c0a7f6a2e9f87af01aa54174d..71a4b8177956ce89717000e58253504985d8fb97 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -94,23 +94,22 @@ public: enum pointStatus { - CONVEX, // Fully convex point (w.r.t normals) - CONCAVE, // Fully concave point - MIXED, // A point surrounded by both convex and concave edges - NONFEATURE // Not a feature point + CONVEX, //!< Fully convex point (w.r.t normals) + CONCAVE, //!< Fully concave point + MIXED, //!< A point surrounded by both convex and concave edges + NONFEATURE //!< Not a feature point }; static const Foam::NamedEnum<pointStatus, 4> pointStatusNames_; enum edgeStatus { - EXTERNAL, // "Convex" edge - INTERNAL, // "Concave" edge - FLAT, // Neither concave or convex, on a flat surface - OPEN, // i.e. only connected to one face - MULTIPLE, // Multiply connected (connected to more than two faces) - NONE // Not a classified feature edge (consistency with - // surfaceFeatures) + EXTERNAL, //!< "Convex" edge + INTERNAL, //!< "Concave" edge + FLAT, //!< Neither concave or convex, on a flat surface + OPEN, //!< Only connected to a single face + MULTIPLE, //!< Multiply connected (connected to more than two faces) + NONE //!< Unclassified (consistency with surfaceFeatures) }; static const Foam::NamedEnum<edgeStatus, 6> edgeStatusNames_; @@ -118,10 +117,10 @@ public: //- Normals point to the outside enum sideVolumeType { - INSIDE = 0, // mesh inside - OUTSIDE = 1, // mesh outside - BOTH = 2, // e.g. a baffle - NEITHER = 3 // not sure when this may be used + INSIDE = 0, //!< mesh inside + OUTSIDE = 1, //!< mesh outside + BOTH = 2, //!< e.g. a baffle + NEITHER = 3 //!< not sure when this may be used }; static const Foam::NamedEnum<sideVolumeType, 4> sideVolumeTypeNames_; diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C similarity index 97% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C index ecdf7128dcf91c4b645c53a04505d0c2ed9352d9..ca3ffa8521f09ea2bbe4009632c9b01f5be95d71 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H similarity index 97% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H index 0bd618e07319b980cb4ca475307ab84af79a4bc6..8c3e2d95bc491fbcba954ecb966fcbe1f47cf39f 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C similarity index 95% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C index a98e8ecbe176d62d86b110af02393fb2bac3d0a7..e35744a557ac6fdd9a7d69653e281b13ea25daca 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormatRunTime.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H similarity index 98% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H index 098f7e399e7acc5d435fd700b05b286c1501f230..8067971c039bba4abbefeaa32ddbae061cba0d2b 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C similarity index 97% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C index 96ca550f8b5fd6228714ad0ab1890b0177ea808e..c960f1037052371d406f3c89465f79c16de8f83f 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C similarity index 99% rename from src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C index 1f2051a3365bd7a81e60808797eba93f080871d7..3cb86ec3a62e1d88bc077835c62f0b763aa8a215 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C similarity index 97% rename from src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C index 5e686fae148a169451b688125bbf07eb76c32725..3df1a97fb45bc188801d7cdd7c1f42a011e8a3d1 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -250,9 +250,7 @@ bool Foam::extendedFeatureEdgeMesh::writeData(Ostream& os) const // // vt = static_cast<Foam::extendedFeatureEdgeMesh::sideVolumeType>(type); // -// // Check state of Istream -// is.check("operator>>(Istream&, sideVolumeType&)"); -// +// is.check(FUNCTION_NAME); // return is; //} // diff --git a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H similarity index 100% rename from src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H diff --git a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H similarity index 98% rename from src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H index 55cc8ffa6275c613a9ab3b18984411e046bef23d..6eead24de3600b68701da753a10ec87463e1ca44 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C similarity index 99% rename from src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C rename to src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C index 8aba7d0b595af4d042dcbf85688f126889c34c3e..5b7eec3c5af0d282558fea23791e50344000690f 100644 --- a/src/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMeshTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C b/src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.C similarity index 97% rename from src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C rename to src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.C index f34c29745f3f1c4e24adf8e6b563804c35bcae19..c1e013eaf858069ca2262e2cb8a839ab547359f3 100644 --- a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C +++ b/src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H b/src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.H similarity index 98% rename from src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H rename to src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.H index ed275ff8f8b85b4887b96b9f6147944109c2ca37..95552422247a15a0a90d3b7df93235183845854c 100644 --- a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H +++ b/src/meshTools/edgeMesh/featureEdgeMesh/featureEdgeMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C index 1972082d7882de7bd9a66d6ca9c0da6fb4e1e7f0..ac6be7983dea5bccb7d1745be44b25d05fa0af97 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C @@ -1070,7 +1070,7 @@ Foam::mappedPatchBase::mappedPatchBase { offsetMode_ = offsetModeNames_.read(dict.lookup("offsetMode")); - switch(offsetMode_) + switch (offsetMode_) { case UNIFORM: { @@ -1109,7 +1109,7 @@ Foam::mappedPatchBase::mappedPatchBase ( dict ) << "Please supply the offsetMode as one of " - << NamedEnum<offsetMode, 3>::words() + << offsetModeNames_ << exit(FatalIOError); } } diff --git a/src/meshTools/meshSearch/meshSearch.C b/src/meshTools/meshSearch/meshSearch.C index b809a4f664dba9341bdf158df24e193ef507427f..c0e4cb2fa885370bb572505bb594a43fd83b4d18 100644 --- a/src/meshTools/meshSearch/meshSearch.C +++ b/src/meshTools/meshSearch/meshSearch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -35,9 +35,9 @@ License namespace Foam { -defineTypeNameAndDebug(meshSearch, 0); + defineTypeNameAndDebug(meshSearch, 0); -scalar meshSearch::tol_ = 1e-3; + scalar meshSearch::tol_ = 1e-3; } @@ -117,7 +117,6 @@ Foam::label Foam::meshSearch::findNearestCellTree(const point& location) const } -// linear searching Foam::label Foam::meshSearch::findNearestCellLinear(const point& location) const { const vectorField& centres = mesh_.cellCentres(); @@ -137,7 +136,6 @@ Foam::label Foam::meshSearch::findNearestCellLinear(const point& location) const } -// walking from seed Foam::label Foam::meshSearch::findNearestCellWalk ( const point& location, @@ -174,7 +172,6 @@ Foam::label Foam::meshSearch::findNearestCellWalk } -// tree based searching Foam::label Foam::meshSearch::findNearestFaceTree(const point& location) const { // Search nearest cell centre. @@ -214,7 +211,6 @@ Foam::label Foam::meshSearch::findNearestFaceTree(const point& location) const } -// linear searching Foam::label Foam::meshSearch::findNearestFaceLinear(const point& location) const { const vectorField& centres = mesh_.faceCentres(); @@ -234,7 +230,6 @@ Foam::label Foam::meshSearch::findNearestFaceLinear(const point& location) const } -// walking from seed Foam::label Foam::meshSearch::findNearestFaceWalk ( const point& location, @@ -322,7 +317,6 @@ Foam::label Foam::meshSearch::findCellLinear(const point& location) const } -// walking from seed Foam::label Foam::meshSearch::findCellWalk ( const point& location, @@ -514,7 +508,6 @@ Foam::meshSearch::meshSearch } -// Construct with a custom bounding box Foam::meshSearch::meshSearch ( const polyMesh& mesh, @@ -549,8 +542,8 @@ Foam::meshSearch::~meshSearch() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::indexedOctree<Foam::treeDataFace>& Foam::meshSearch::boundaryTree() - const +const Foam::indexedOctree<Foam::treeDataFace>& +Foam::meshSearch::boundaryTree() const { if (!boundaryTreePtr_.valid()) { @@ -602,8 +595,8 @@ const Foam::indexedOctree<Foam::treeDataFace>& Foam::meshSearch::boundaryTree() } -const Foam::indexedOctree<Foam::treeDataCell>& Foam::meshSearch::cellTree() -const +const Foam::indexedOctree<Foam::treeDataCell>& +Foam::meshSearch::cellTree() const { if (!cellTreePtr_.valid()) { @@ -648,92 +641,6 @@ const } -//// Is the point in the cell -//// Works by checking if there is a face inbetween the point and the cell -//// centre. -//// Check for internal uses proper face decomposition or just average normal. -//bool Foam::meshSearch::pointInCell(const point& p, label celli) const -//{ -// if (faceDecomp_) -// { -// const point& ctr = mesh_.cellCentres()[celli]; -// -// vector dir(p - ctr); -// scalar magDir = mag(dir); -// -// // Check if any faces are hit by ray from cell centre to p. -// // If none -> p is in cell. -// const labelList& cFaces = mesh_.cells()[celli]; -// -// // Make sure half_ray does not pick up any faces on the wrong -// // side of the ray. -// scalar oldTol = intersection::setPlanarTol(0.0); -// -// forAll(cFaces, i) -// { -// label facei = cFaces[i]; -// -// pointHit inter = mesh_.faces()[facei].ray -// ( -// ctr, -// dir, -// mesh_.points(), -// intersection::HALF_RAY, -// intersection::VECTOR -// ); -// -// if (inter.hit()) -// { -// scalar dist = inter.distance(); -// -// if (dist < magDir) -// { -// // Valid hit. Hit face so point is not in cell. -// intersection::setPlanarTol(oldTol); -// -// return false; -// } -// } -// } -// -// intersection::setPlanarTol(oldTol); -// -// // No face inbetween point and cell centre so point is inside. -// return true; -// } -// else -// { -// const labelList& f = mesh_.cells()[celli]; -// const labelList& owner = mesh_.faceOwner(); -// const vectorField& cf = mesh_.faceCentres(); -// const vectorField& Sf = mesh_.faceAreas(); -// -// forAll(f, facei) -// { -// label nFace = f[facei]; -// vector proj = p - cf[nFace]; -// vector normal = Sf[nFace]; -// if (owner[nFace] == celli) -// { -// if ((normal & proj) > 0) -// { -// return false; -// } -// } -// else -// { -// if ((normal & proj) < 0) -// { -// return false; -// } -// } -// } -// -// return true; -// } -//} - - Foam::label Foam::meshSearch::findNearestCell ( const point& location, @@ -949,7 +856,6 @@ bool Foam::meshSearch::isInside(const point& p) const } -// Delete all storage void Foam::meshSearch::clearOut() { boundaryTreePtr_.clear(); diff --git a/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C b/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C index 02583cd7d76b641d2504712af1967339a34158a0..bbdb866f94f1b85d92afe6ab2ba15622922e52ae 100644 --- a/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C +++ b/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -325,7 +325,6 @@ bool Foam::regionCoupledBase::order rotation.setSize(pp.size()); rotation = 0; - // do nothing return false; } diff --git a/src/meshTools/searchableSurface/closedTriSurfaceMesh.C b/src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.C similarity index 96% rename from src/meshTools/searchableSurface/closedTriSurfaceMesh.C rename to src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.C index 04e07f0af46af1d4e79784931037c24ec520fc70..b5ea3d9ec72b8bfe8c83dfbdd7b5ffa306a47748 100644 --- a/src/meshTools/searchableSurface/closedTriSurfaceMesh.C +++ b/src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/closedTriSurfaceMesh.H b/src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.H similarity index 97% rename from src/meshTools/searchableSurface/closedTriSurfaceMesh.H rename to src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.H index 845d6fa6ccee3395e9f3d647e925b3c1c92f32c1..8212f906c4b0476f9a044f7078603d991d333ce0 100644 --- a/src/meshTools/searchableSurface/closedTriSurfaceMesh.H +++ b/src/meshTools/searchableSurfaces/closedTriSurfaceMesh/closedTriSurfaceMesh.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableBox.C b/src/meshTools/searchableSurfaces/searchableBox/searchableBox.C similarity index 100% rename from src/meshTools/searchableSurface/searchableBox.C rename to src/meshTools/searchableSurfaces/searchableBox/searchableBox.C diff --git a/src/meshTools/searchableSurface/searchableBox.H b/src/meshTools/searchableSurfaces/searchableBox/searchableBox.H similarity index 100% rename from src/meshTools/searchableSurface/searchableBox.H rename to src/meshTools/searchableSurfaces/searchableBox/searchableBox.H diff --git a/src/meshTools/searchableSurface/searchableCone.C b/src/meshTools/searchableSurfaces/searchableCone/searchableCone.C similarity index 100% rename from src/meshTools/searchableSurface/searchableCone.C rename to src/meshTools/searchableSurfaces/searchableCone/searchableCone.C diff --git a/src/meshTools/searchableSurface/searchableCone.H b/src/meshTools/searchableSurfaces/searchableCone/searchableCone.H similarity index 100% rename from src/meshTools/searchableSurface/searchableCone.H rename to src/meshTools/searchableSurfaces/searchableCone/searchableCone.H diff --git a/src/meshTools/searchableSurface/searchableCylinder.C b/src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.C similarity index 99% rename from src/meshTools/searchableSurface/searchableCylinder.C rename to src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.C index c158e32b85ce8778a84a5a01f57d145c29d3a941..6ffd74f8ca073c5d4939b95f65c22fb33a162d1c 100644 --- a/src/meshTools/searchableSurface/searchableCylinder.C +++ b/src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableCylinder.H b/src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.H similarity index 99% rename from src/meshTools/searchableSurface/searchableCylinder.H rename to src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.H index c120ae174b45815e870e983b6f8c60718f98aa34..df46a18c48151375635bbf97249a04bacc1f033a 100644 --- a/src/meshTools/searchableSurface/searchableCylinder.H +++ b/src/meshTools/searchableSurfaces/searchableCylinder/searchableCylinder.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableDisk.C b/src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.C similarity index 99% rename from src/meshTools/searchableSurface/searchableDisk.C rename to src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.C index a62604c25941f91679f90b7d666f1b8f42d66779..0ed845d2e5dcb362b99cf70d558593ed9560d379 100644 --- a/src/meshTools/searchableSurface/searchableDisk.C +++ b/src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableDisk.H b/src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.H similarity index 99% rename from src/meshTools/searchableSurface/searchableDisk.H rename to src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.H index 8e6bee01b2b2f18989319e321a2bd00c362d518b..5cebb1cede55a7cac16ca449d747fa940f97e2c4 100644 --- a/src/meshTools/searchableSurface/searchableDisk.H +++ b/src/meshTools/searchableSurfaces/searchableDisk/searchableDisk.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.C b/src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.C similarity index 98% rename from src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.C rename to src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.C index 9656656b77b726405f0b19bfe9ba227d7b100872..3d1b3f76c26459264dfbf586f01dca1430db255f 100644 --- a/src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.C +++ b/src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,7 @@ Foam::searchableExtrudedCircle::searchableExtrudedCircle ( dict.lookup("file"), // name io.time().constant(), // instance - "triSurface", // local + "geometry", // local io.time(), // registry IOobject::MUST_READ, IOobject::NO_WRITE, diff --git a/src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.H b/src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.H similarity index 98% rename from src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.H rename to src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.H index 864638dbc171ebc42ffa0d62de561525876b5dc9..83f537ab65980fae099035e8c52231cba466ef2e 100644 --- a/src/mesh/blockMesh/searchableExtrudedCircle/searchableExtrudedCircle.H +++ b/src/meshTools/searchableSurfaces/searchableExtrudedCircle/searchableExtrudedCircle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchablePlane.C b/src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.C similarity index 98% rename from src/meshTools/searchableSurface/searchablePlane.C rename to src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.C index 81cf1f98cd49c322293ab93fa032f80cc94bdaf9..a5e7b0430d1c2bc02000f66e4d714a4ba6b60fed 100644 --- a/src/meshTools/searchableSurface/searchablePlane.C +++ b/src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchablePlane.H b/src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.H similarity index 98% rename from src/meshTools/searchableSurface/searchablePlane.H rename to src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.H index 3e15a8e34c1619fbb44242fb980e203c2e8249fd..0e782a0198d8a4f6a7a6c6fa036d23143d7fbece 100644 --- a/src/meshTools/searchableSurface/searchablePlane.H +++ b/src/meshTools/searchableSurfaces/searchablePlane/searchablePlane.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchablePlate.C b/src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.C similarity index 99% rename from src/meshTools/searchableSurface/searchablePlate.C rename to src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.C index 6ae652d1b45c35edab550101d760fe1c95bf8653..650bb1f3e82b49db53389747471d367700276ccb 100644 --- a/src/meshTools/searchableSurface/searchablePlate.C +++ b/src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchablePlate.H b/src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.H similarity index 99% rename from src/meshTools/searchableSurface/searchablePlate.H rename to src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.H index 48d270987ff49e2d49e76521965c6f17d731e977..944179e0cb901006a16764bec5009afd839d7ca7 100644 --- a/src/meshTools/searchableSurface/searchablePlate.H +++ b/src/meshTools/searchableSurfaces/searchablePlate/searchablePlate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableRotatedBox.C b/src/meshTools/searchableSurfaces/searchableRotatedBox/searchableRotatedBox.C similarity index 100% rename from src/meshTools/searchableSurface/searchableRotatedBox.C rename to src/meshTools/searchableSurfaces/searchableRotatedBox/searchableRotatedBox.C diff --git a/src/meshTools/searchableSurface/searchableRotatedBox.H b/src/meshTools/searchableSurfaces/searchableRotatedBox/searchableRotatedBox.H similarity index 100% rename from src/meshTools/searchableSurface/searchableRotatedBox.H rename to src/meshTools/searchableSurfaces/searchableRotatedBox/searchableRotatedBox.H diff --git a/src/meshTools/searchableSurface/searchableSphere.C b/src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.C similarity index 99% rename from src/meshTools/searchableSurface/searchableSphere.C rename to src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.C index 3db3e7c80a43c2ed6279ed13a95c5085812b9286..512edb074027c57220efae7a4b19f69e963ee6de 100644 --- a/src/meshTools/searchableSurface/searchableSphere.C +++ b/src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSphere.H b/src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSphere.H rename to src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.H index 4096d2f4606ad33af78c2f723eb783071a526542..1346df359b6ce7b02490bebb4b59618959a4f042 100644 --- a/src/meshTools/searchableSurface/searchableSphere.H +++ b/src/meshTools/searchableSurfaces/searchableSphere/searchableSphere.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurface.C b/src/meshTools/searchableSurfaces/searchableSurface/searchableSurface.C similarity index 100% rename from src/meshTools/searchableSurface/searchableSurface.C rename to src/meshTools/searchableSurfaces/searchableSurface/searchableSurface.C diff --git a/src/meshTools/searchableSurface/searchableSurface.H b/src/meshTools/searchableSurfaces/searchableSurface/searchableSurface.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSurface.H rename to src/meshTools/searchableSurfaces/searchableSurface/searchableSurface.H index cc23e56666c9937d0952800fe76fce723a69557e..63fd160ad25dce331f9ab4ef1613ced88058fa9b 100644 --- a/src/meshTools/searchableSurface/searchableSurface.H +++ b/src/meshTools/searchableSurfaces/searchableSurface/searchableSurface.H @@ -61,7 +61,7 @@ class mapDistribute; class treeBoundBox; /*---------------------------------------------------------------------------*\ - Class searchableSurface Declaration + Class searchableSurface Declaration \*---------------------------------------------------------------------------*/ class searchableSurface @@ -74,6 +74,7 @@ class searchableSurface boundBox bounds_; + // Private Member Functions //- Disallow default bitwise copy construct diff --git a/src/meshTools/searchableSurface/searchableSurfaceCollection.C b/src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.C similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaceCollection.C rename to src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.C index e61b690e9e2c4d25a86f0e7597178295467ee237..53ee84a76df4b07446882634b0622afb29a222cb 100644 --- a/src/meshTools/searchableSurface/searchableSurfaceCollection.C +++ b/src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfaceCollection.H b/src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaceCollection.H rename to src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.H index 0c274c7ad551424bc6b5cd8139532119314a095b..79456389073b4e1638a4d96df41612dd82c304d4 100644 --- a/src/meshTools/searchableSurface/searchableSurfaceCollection.H +++ b/src/meshTools/searchableSurfaces/searchableSurfaceCollection/searchableSurfaceCollection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C b/src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.C similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaceWithGaps.C rename to src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.C index 9371c32757b5929eafa301081d4a9e4480f38dab..7af6d6c8e8f47ccd915549b5b60a62906fd717bb 100644 --- a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C +++ b/src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H b/src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaceWithGaps.H rename to src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.H index ad56aee199cef7eb6a0f90c933bd05a5f68f3561..8faf3308786b60a42fb4ea7e461f446029071c2e 100644 --- a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H +++ b/src/meshTools/searchableSurfaces/searchableSurfaceWithGaps/searchableSurfaceWithGaps.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfaces.C b/src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.C similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaces.C rename to src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.C index 0bb5a89d1c2ed0c1f3f6c2fb1caba6b5b646af24..9686901cec1774045d79d49738b76fe7a29b1341 100644 --- a/src/meshTools/searchableSurface/searchableSurfaces.C +++ b/src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfaces.H b/src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfaces.H rename to src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.H index c9f4abec0bbfbca654e7003581fe06417e3f3036..26fe024b590328a31a9817c0f7acb51031162b9b 100644 --- a/src/meshTools/searchableSurface/searchableSurfaces.H +++ b/src/meshTools/searchableSurfaces/searchableSurfaces/searchableSurfaces.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfacesQueries.C b/src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.C similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfacesQueries.C rename to src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.C index 9b8788c1a48f29462c9a4900695262bb65aa2e12..ec083c1c14545ed02db95efac484e23dd6e0f5b8 100644 --- a/src/meshTools/searchableSurface/searchableSurfacesQueries.C +++ b/src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/searchableSurfacesQueries.H b/src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.H similarity index 99% rename from src/meshTools/searchableSurface/searchableSurfacesQueries.H rename to src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.H index 52dfa040b1c2934921458ab3ce6e8c36bf6097c1..404bb857759bb93645380acdd005e8cce27e5f3d 100644 --- a/src/meshTools/searchableSurface/searchableSurfacesQueries.H +++ b/src/meshTools/searchableSurfaces/searchableSurfacesQueries/searchableSurfacesQueries.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/meshTools/searchableSurface/subTriSurfaceMesh.C b/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C similarity index 100% rename from src/meshTools/searchableSurface/subTriSurfaceMesh.C rename to src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C diff --git a/src/meshTools/searchableSurface/subTriSurfaceMesh.H b/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.H similarity index 100% rename from src/meshTools/searchableSurface/subTriSurfaceMesh.H rename to src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.H diff --git a/src/meshTools/searchableSurface/triSurfaceMesh.C b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C similarity index 79% rename from src/meshTools/searchableSurface/triSurfaceMesh.C rename to src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C index 3815c31eeac5b12e197e02d70827dddac0d3195a..617243c138285d984caa4f2e0c64a46e95448b91 100644 --- a/src/meshTools/searchableSurface/triSurfaceMesh.C +++ b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -35,83 +35,70 @@ License namespace Foam { - -defineTypeNameAndDebug(triSurfaceMesh, 0); -addToRunTimeSelectionTable(searchableSurface, triSurfaceMesh, dict); - -word triSurfaceMesh::meshSubDir = "triSurface"; - + defineTypeNameAndDebug(triSurfaceMesh, 0); + addToRunTimeSelectionTable(searchableSurface, triSurfaceMesh, dict); + word triSurfaceMesh::meshSubDir = "triSurface"; } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -//// Special version of Time::findInstance that does not check headerOk -//// to search for instances of raw files -//Foam::word Foam::triSurfaceMesh::findRawInstance -//( -// const Time& runTime, -// const fileName& dir, -// const word& name -//) -//{ -// // Check current time first -// if (isFile(runTime.path()/runTime.timeName()/dir/name)) -// { -// return runTime.timeName(); -// } -// instantList ts = runTime.times(); -// label instanceI; -// -// for (instanceI = ts.size()-1; instanceI >= 0; --instanceI) -// { -// if (ts[instanceI].value() <= runTime.timeOutputValue()) -// { -// break; -// } -// } -// -// // continue searching from here -// for (; instanceI >= 0; --instanceI) -// { -// if (isFile(runTime.path()/ts[instanceI].name()/dir/name)) -// { -// return ts[instanceI].name(); -// } -// } -// -// -// // not in any of the time directories, try constant -// -// // Note. This needs to be a hard-coded constant, rather than the -// // constant function of the time, because the latter points to -// // the case constant directory in parallel cases -// -// if (isFile(runTime.path()/runTime.constant()/dir/name)) -// { -// return runTime.constant(); -// } -// -// FatalErrorInFunction -// << "Cannot find file \"" << name << "\" in directory " -// << runTime.constant()/dir -// << exit(FatalError); -// -// return runTime.constant(); -//} - - -const Foam::fileName& Foam::triSurfaceMesh::checkFile +Foam::fileName Foam::triSurfaceMesh::checkFile ( - const fileName& fName, - const fileName& objectName + const IOobject& io, + const bool isGlobal ) { + const fileName fName + ( + isGlobal + ? io.globalFilePath() + : io.localFilePath() + ); if (fName.empty()) { FatalErrorInFunction << "Cannot find triSurfaceMesh starting from " - << objectName << exit(FatalError); + << io.objectPath() << exit(FatalError); } + + return fName; +} + + +Foam::fileName Foam::triSurfaceMesh::checkFile +( + const IOobject& io, + const dictionary& dict, + const bool isGlobal +) +{ + fileName fName; + if (dict.readIfPresent("file", fName, false, false)) + { + fName.expand(); + if (!fName.isAbsolute()) + { + fName = io.objectPath().path()/fName; + } + if (!exists(fName)) + { + FatalErrorInFunction + << "Cannot find triSurfaceMesh at " << fName + << exit(FatalError); + } + } + else + { + fName = (isGlobal ? io.globalFilePath() : io.localFilePath()); + + if (!exists(fName)) + { + FatalErrorInFunction + << "Cannot find triSurfaceMesh starting from " + << io.objectPath() << exit(FatalError); + } + } + return fName; } @@ -227,7 +214,7 @@ Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io, const triSurface& s) ( io.name(), io.instance(), - io.local(), //"triSurfaceFields", + io.local(), io.db(), io.readOpt(), io.writeOpt(), @@ -235,7 +222,7 @@ Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io, const triSurface& s) ) ), triSurface(s), - triSurfaceRegionSearch(static_cast<const triSurface&>(*this)), + triSurfaceRegionSearch(s), minQuality_(-1), surfaceClosed_(-1), outsideVolType_(volumeType::UNKNOWN) @@ -250,26 +237,47 @@ Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io) : // Find instance for triSurfaceMesh searchableSurface(io), - //( - // IOobject - // ( - // io.name(), - // io.time().findInstance(io.local(), word::null), - // io.local(), - // io.db(), - // io.readOpt(), - // io.writeOpt(), - // io.registerObject() - // ) - //), // Reused found instance in objectRegistry objectRegistry ( IOobject ( io.name(), - static_cast<const searchableSurface&>(*this).instance(), - io.local(), //"triSurfaceFields", + searchableSurface::instance(), + io.local(), + io.db(), + io.readOpt(), + io.writeOpt(), + false // searchableSurface already registered under name + ) + ), + triSurface(checkFile(static_cast<const searchableSurface&>(*this), true)), + triSurfaceRegionSearch(static_cast<const triSurface&>(*this)), + minQuality_(-1), + surfaceClosed_(-1), + outsideVolType_(volumeType::UNKNOWN) +{ + const pointField& pts = triSurface::points(); + + bounds() = boundBox(pts, false); +} + + +Foam::triSurfaceMesh::triSurfaceMesh +( + const IOobject& io, + const dictionary& dict +) +: + searchableSurface(io), + // Reused found instance in objectRegistry + objectRegistry + ( + IOobject + ( + io.name(), + searchableSurface::instance(), + io.local(), io.db(), io.readOpt(), io.writeOpt(), @@ -278,15 +286,63 @@ Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io) ), triSurface ( - checkFile + checkFile(static_cast<const searchableSurface&>(*this), dict, true) + ), + triSurfaceRegionSearch(static_cast<const triSurface&>(*this), dict), + minQuality_(-1), + surfaceClosed_(-1), + outsideVolType_(volumeType::UNKNOWN) +{ + // Reading from supplied file name instead of objectPath/filePath + dict.readIfPresent("file", fName_, false, false); + + scalar scaleFactor = 0; + + // Allow rescaling of the surface points + // eg, CAD geometries are often done in millimeters + if (dict.readIfPresent("scale", scaleFactor) && scaleFactor > 0) + { + Info<< searchableSurface::name() << " : using scale " << scaleFactor + << endl; + triSurface::scalePoints(scaleFactor); + } + + const pointField& pts = triSurface::points(); + + bounds() = boundBox(pts, false); + + // Have optional minimum quality for normal calculation + if (dict.readIfPresent("minQuality", minQuality_) && minQuality_ > 0) + { + Info<< searchableSurface::name() + << " : ignoring triangles with quality < " + << minQuality_ << " for normals calculation." << endl; + } +} + + +Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io, const bool isGlobal) +: + // Find instance for triSurfaceMesh + searchableSurface(io), + // Reused found instance in objectRegistry + objectRegistry + ( + IOobject ( - typeFilePath<searchableSurface> - ( - static_cast<const searchableSurface&>(*this) - ), - searchableSurface::objectPath() + io.name(), + searchableSurface::instance(), + io.local(), + io.db(), + io.readOpt(), + io.writeOpt(), + false // searchableSurface already registered under name ) ), + triSurface + ( + checkFile(static_cast<const searchableSurface&>(*this), isGlobal) + ), triSurfaceRegionSearch(static_cast<const triSurface&>(*this)), minQuality_(-1), surfaceClosed_(-1), @@ -294,37 +350,26 @@ Foam::triSurfaceMesh::triSurfaceMesh(const IOobject& io) { const pointField& pts = triSurface::points(); - bounds() = boundBox(pts, false); + bounds() = boundBox(pts, isGlobal); } Foam::triSurfaceMesh::triSurfaceMesh ( const IOobject& io, - const dictionary& dict + const dictionary& dict, + const bool isGlobal ) : searchableSurface(io), - //( - // IOobject - // ( - // io.name(), - // io.time().findInstance(io.local(), word::null), - // io.local(), - // io.db(), - // io.readOpt(), - // io.writeOpt(), - // io.registerObject() - // ) - //), // Reused found instance in objectRegistry objectRegistry ( IOobject ( io.name(), - static_cast<const searchableSurface&>(*this).instance(), - io.local(), //"triSurfaceFields", + searchableSurface::instance(), + io.local(), io.db(), io.readOpt(), io.writeOpt(), @@ -333,23 +378,19 @@ Foam::triSurfaceMesh::triSurfaceMesh ), triSurface ( - checkFile - ( - typeFilePath<searchableSurface> - ( - static_cast<const searchableSurface&>(*this) - ), - searchableSurface::objectPath() - ) + checkFile(static_cast<const searchableSurface&>(*this), dict, isGlobal) ), triSurfaceRegionSearch(static_cast<const triSurface&>(*this), dict), minQuality_(-1), surfaceClosed_(-1), outsideVolType_(volumeType::UNKNOWN) { + // Reading from supplied file name instead of objectPath/filePath + dict.readIfPresent("file", fName_, false, false); + scalar scaleFactor = 0; - // allow rescaling of the surface points + // Allow rescaling of the surface points // eg, CAD geometries are often done in millimeters if (dict.readIfPresent("scale", scaleFactor) && scaleFactor > 0) { @@ -360,7 +401,7 @@ Foam::triSurfaceMesh::triSurfaceMesh const pointField& pts = triSurface::points(); - bounds() = boundBox(pts, false); + bounds() = boundBox(pts, isGlobal); // Have optional minimum quality for normal calculation if (dict.readIfPresent("minQuality", minQuality_) && minQuality_ > 0) @@ -371,7 +412,6 @@ Foam::triSurfaceMesh::triSurfaceMesh } } - // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::triSurfaceMesh::~triSurfaceMesh() @@ -495,7 +535,7 @@ Foam::triSurfaceMesh::edgeTree() const label nPoints; PatchTools::calcBounds ( - static_cast<const triSurface&>(*this), + *this, bb, nPoints ); @@ -526,7 +566,7 @@ Foam::triSurfaceMesh::edgeTree() const bEdges // selected edges ), bb, // bb - maxTreeDepth(), // maxLevel + maxTreeDepth(), // maxLevel 10, // leafsize 3.0 // duplicity ) @@ -552,7 +592,6 @@ const Foam::wordList& Foam::triSurfaceMesh::regions() const } -// Find out if surface is closed. bool Foam::triSurfaceMesh::hasVolumeType() const { if (surfaceClosed_ == -1) @@ -660,7 +699,7 @@ void Foam::triSurfaceMesh::getNormal vectorField& normal ) const { - const triSurface& s = static_cast<const triSurface&>(*this); + const triSurface& s = *this; const pointField& pts = s.points(); normal.setSize(info.size()); @@ -865,7 +904,24 @@ bool Foam::triSurfaceMesh::writeObject runTime.timeName(); } - fileName fullPath(searchableSurface::objectPath()); + fileName fullPath; + if (fName_.size()) + { + // Override file name + + fullPath = fName_; + + fullPath.expand(); + if (!fullPath.isAbsolute()) + { + // Add directory from regIOobject + fullPath = searchableSurface::objectPath().path()/fullPath; + } + } + else + { + fullPath = searchableSurface::objectPath(); + } if (!mkDir(fullPath.path())) { diff --git a/src/meshTools/searchableSurface/triSurfaceMesh.H b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.H similarity index 86% rename from src/meshTools/searchableSurface/triSurfaceMesh.H rename to src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.H index c5633e65d5b0f6c7929bd09915ea82676603a5f9..d1691dba1861e9e24a399fa9307190a47fcf62c1 100644 --- a/src/meshTools/searchableSurface/triSurfaceMesh.H +++ b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -68,10 +68,11 @@ class triSurfaceMesh public triSurface, public triSurfaceRegionSearch { -private: - // Private member data + //- Supplied fileName override + fileName fName_; + //- Optional min triangle quality. Triangles below this get // ignored for normal calculation scalar minQuality_; @@ -91,19 +92,15 @@ private: // Private Member Functions - ////- Helper: find instance of files without header - //static word findRawInstance - //( - // const Time&, - // const fileName&, - // const word& - //); + //- Return fileName to load IOobject from + static fileName checkFile(const IOobject& io, const bool isGlobal); - //- Check file existence - static const fileName& checkFile + //- Return fileName to load IOobject from. Optional override of fileName + static fileName checkFile ( - const fileName& fName, - const fileName& objectName + const IOobject&, + const dictionary&, + const bool isGlobal ); //- Helper function for isSurfaceClosed @@ -149,7 +146,7 @@ public: //- Construct from triSurface triSurfaceMesh(const IOobject&, const triSurface&); - //- Construct read. + //- Construct read triSurfaceMesh(const IOobject& io); //- Construct from IO and dictionary (used by searchableSurface). @@ -161,6 +158,19 @@ public: ); + // Special constructors for use by distributedTriSurface. File search + // status (local/global) supplied. + + triSurfaceMesh(const IOobject& io, const bool isGlobal); + + triSurfaceMesh + ( + const IOobject& io, + const dictionary& dict, + const bool isGlobal + ); + + //- Destructor virtual ~triSurfaceMesh(); @@ -293,9 +303,30 @@ public: IOstream::versionNumber ver, IOstream::compressionType cmp ) const; + + //- Is object global + virtual bool global() const + { + return true; + } + + //- Return complete path + object name if the file exists + // either in the case/processor or case otherwise null + virtual fileName filePath() const + { + return searchableSurface::globalFilePath(); + } }; +//- Template function for obtaining global status +template<> +inline bool typeGlobal<triSurfaceMesh>() +{ + return true; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.C b/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.C index 87405317a2a7cabeafbe52d94cc8242262546c5d..8491d6dee1a6a9b84d8b4cac1f6faa010a0b588e 100644 --- a/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.C +++ b/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.C @@ -27,56 +27,37 @@ License #include "triSurface.H" #include "surfaceIntersection.H" #include "meshTools.H" -#include "OFstream.H" +#include "OBJstream.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { defineTypeNameAndDebug(edgeSurface, 0); -} - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Write whole pointField and edges to stream -void Foam::edgeSurface::writeOBJ -( - const pointField& points, - const edgeList& edges, - Ostream& os -) +// file-scope +// Write points in obj format +static void writeObjPoints(const UList<point>& pts, Ostream& os) { - forAll(points, pointi) + forAll(pts, i) { - const point& pt = points[pointi]; - - os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << endl; - } - forAll(edges, edgeI) - { - const edge& e = edges[edgeI]; - - os << "l " << e.start()+1 << ' ' << e.end()+1 << endl; + const point& pt = pts[i]; + os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl; } } // Write whole pointField and selected edges to stream -void Foam::edgeSurface::writeOBJ +void writeObjEdges ( - const pointField& points, + const UList<point>& points, const edgeList& edges, const labelList& edgeLabels, Ostream& os ) { - forAll(points, pointi) - { - const point& pt = points[pointi]; + writeObjPoints(points, os); - os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << endl; - } forAll(edgeLabels, i) { const edge& e = edges[edgeLabels[i]]; @@ -85,6 +66,10 @@ void Foam::edgeSurface::writeOBJ } } +} // End namespace Foam + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // Pointedges in edgeSurface indices only. void Foam::edgeSurface::calcPointEdges() @@ -253,29 +238,16 @@ Foam::edgeSurface::edgeSurface } - - // Add intersection edges to faceEdges // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - forAllConstIter(labelPairLookup, inter.facePairToEdge(), iter) + forAllConstIters(inter.facePairToEdgeId(), iter) { - // Edge label in intersection - const label edgeI = iter(); - - // Get the face from the correct surface - const FixedList<label, 2>& twoFaces = iter.key(); + // The faceId from the correct surface + const label facei = iter.key()[isFirstSurface ? 0 : 1]; - label facei; - - if (isFirstSurface) - { - facei = twoFaces[0]; - } - else - { - facei = twoFaces[1]; - } + // Edge label in intersection + const label edgeI = iter.object(); // Store on face-edge addressing. (note: offset edge) allFaceEdges[facei].append(edgeI + nSurfaceEdges_); @@ -312,18 +284,17 @@ Foam::edgeSurface::edgeSurface << " to " << faceFName << endl; OFstream fStream(faceFName); - writeOBJ(points_, edges_, fEdges, fStream); + writeObjEdges(points_, edges_, fEdges, fStream); } } Pout<< "edgeSurface : Dumping edges to edges.obj" << endl; - OFstream eStream("edges.obj"); - writeOBJ(points_, edges_, eStream); + OBJstream("edges.obj").write(edges_, points_); Pout<< "edgeSurface : Dumping intersectionEdges to" << " intersectionEdges.obj" << endl; - OFstream intEdgesStream("intersectionEdges.obj"); + OFstream intEdgesStream("intersectionEdges.obj"); labelList edgeLabels(edges_.size() - nSurfaceEdges_); label i = 0; @@ -332,7 +303,7 @@ Foam::edgeSurface::edgeSurface edgeLabels[i++] = edgeI; } - writeOBJ(points_, edges_, edgeLabels, intEdgesStream); + writeObjEdges(points_, edges_, edgeLabels, intEdgesStream); } } diff --git a/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.H b/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.H index d8564be949c487386d4c909d731f7850b54aa228..76c83ee2edbdda78e554c78a5a77d21ebd63cb22 100644 --- a/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.H +++ b/src/meshTools/triSurface/booleanOps/intersectedSurface/edgeSurface.H @@ -93,25 +93,12 @@ private: //- From face to our edges_ labelListList faceEdges_; - //- Constructed from above: pointEdges labelListList pointEdges_; // Private Member Functions - //- Dump edges in obj format - static void writeOBJ(const pointField&, const edgeList&, Ostream&); - - //- Dump selected edges in obj format - static void writeOBJ - ( - const pointField&, - const edgeList&, - const labelList&, - Ostream& - ); - //- Calculate pointEdges void calcPointEdges(); diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C index a98dd53e9151ea45b1e81469e831aaa306c969e6..8c552335d462c8f3757de0d7120fa471ae0745d4 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -25,8 +25,9 @@ License #include "surfaceIntersection.H" #include "triSurfaceSearch.H" -#include "OFstream.H" +#include "OBJstream.H" #include "labelPairHashes.H" +#include "PackedBoolList.H" #include "triSurface.H" #include "pointIndexHit.H" #include "mergePoints.H" @@ -40,221 +41,205 @@ namespace Foam defineTypeNameAndDebug(surfaceIntersection, 0); } +const Foam::Enum<Foam::surfaceIntersection::intersectionType> +Foam::surfaceIntersection::selfIntersectionNames +{ + { intersectionType::SELF, "self" }, + { intersectionType::SELF_REGION, "region" }, + { intersectionType::NONE, "none" }, +}; + // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Checks if there exists a special topological situation that causes -// edge and the face it hit not to be recognized. -// -// For now if the face shares a point with the edge -bool Foam::surfaceIntersection::excludeEdgeHit -( - const triSurface& surf, - const label edgeI, - const label facei, - const scalar -) +void Foam::surfaceIntersection::setOptions(const dictionary& dict) { - const triSurface::FaceType& f = surf.localFaces()[facei]; - const edge& e = surf.edges()[edgeI]; - - forAll(f, fp) - { - if (f[0] == e.start() || f[0] == e.end()) - { - return true; - } - } - -// { -// // Get edge vector -// vector eVec = e.vec(surf.localPoints()); -// eVec /= mag(eVec) + VSMALL; -// -// const labelList& eLabels = surf.faceEdges()[facei]; -// -// // Get edge vector of 0th edge of face -// vector e0Vec = surf.edges()[eLabels[0]].vec(surf.localPoints()); -// e0Vec /= mag(e0Vec) + VSMALL; -// -// vector n = e0Vec ^ eVec; -// -// if (mag(n) < SMALL) -// { -// // e0 is aligned with e. Choose next edge of face. -// vector e1Vec = surf.edges()[eLabels[1]].vec(surf.localPoints()); -// e1Vec /= mag(e1Vec) + VSMALL; -// -// n = e1Vec ^ eVec; -// -// if (mag(n) < SMALL) -// { -// // Problematic triangle. Two edges aligned with edgeI. Give -// // up. -// return true; -// } -// } -// -// // Check if same as faceNormal -// if (mag(n & surf.faceNormals()[facei]) > 1-tol) -// { -// -// Pout<< "edge:" << e << " face:" << facei -// << " e0Vec:" << e0Vec << " n:" << n -// << " normalComponent:" << (n & surf.faceNormals()[facei]) -// << " tol:" << tol << endl; -// -// return true; -// } -// else -// { -// return false; -// } -// } - - return false; + dict.readIfPresent("tolerance", tolerance_); + dict.readIfPresent("allowEdgeHits", allowEdgeHits_); + dict.readIfPresent("snap", snapToEnd_); + dict.readIfPresent("warnDegenerate", warnDegenerate_); } -//// Find intersection of plane with edges of hitFacei. Returns -//// - edgeI -//// - intersection point -//Foam::pointIndexHit Foam::surfaceIntersection::faceEdgeIntersection -//( -// const triSurface& surf, -// const label hitFacei, -// -// const vector& n, -// const point& eStart, -// const point& eEnd -//) -//{ -// pointIndexHit pInter; -// -// const pointField& points = surf.points(); -// -// const triSurface::FaceType& f = surf.localFaces()[hitFacei]; -// -// // Plane for intersect test. -// plane pl(eStart, n); -// -// forAll(f, fp) -// { -// label fp1 = f.fcIndex(fp); -// -// const point& start = points[f[fp]]; -// const point& end = points[f[fp1]]; -// -// vector eVec(end - start); -// -// scalar s = pl.normalIntersect(start, eVec); -// -// if (s < 0 || s > 1) -// { -// pInter.setPoint(start + s*eVec); -// -// // Check if is correct one: orientation walking -// // eStart - eEnd - hitPoint should be opposite n -// vector n2(triPointRef(start, end, pInter.hitPoint()).normal()); -// -// Pout<< "plane normal:" << n -// << " start:" << start << " end:" << end -// << " hit at:" << pInter.hitPoint() -// << " resulting normal:" << n2 << endl; -// -// if ((n2 & n) < 0) -// { -// pInter.setHit(); -// -// // Find corresponding edge between f[fp] f[fp1] -// label edgeI = -// meshTools::findEdge -// ( -// surf.edges(), -// surf.faceEdges()[hitFacei], -// f[fp], -// f[fp1] -// ); -// -// pInter.setIndex(edgeI); -// -// return pInter; -// } -// } -// } -// -// FatalErrorInFunction -// << "Did not find intersection of plane " << pl -// << " with edges of face " << hitFacei << " verts:" << f -// << abort(FatalError); -// -// return pInter; -//} - - void Foam::surfaceIntersection::storeIntersection ( - const bool isFirstSurf, + const enum intersectionType cutFrom, const labelList& facesA, const label faceB, - DynamicList<edge>& allCutEdges, - DynamicList<point>& allCutPoints + const UList<point>& allCutPoints, + const label cutPointId, + DynamicList<edge>& allCutEdges ) { + // Our lookup for two faces - populate with faceB (invariant) + // Normally always have face from the first surface as first element + labelPair twoFaces(faceB, faceB); + forAll(facesA, facesAI) { - label faceA = facesA[facesAI]; + const label faceA = facesA[facesAI]; - // Combine two faces. Always make sure the face from the first surface - // is element 0. - FixedList<label, 2> twoFaces; - if (isFirstSurf) - { - twoFaces[0] = faceA; - twoFaces[1] = faceB; - } - else + switch (cutFrom) { - twoFaces[0] = faceB; - twoFaces[1] = faceA; + case surfaceIntersection::FIRST: + { + // faceA from 1st, faceB from 2nd + twoFaces.first() = faceA; + break; + } + case surfaceIntersection::SECOND: + { + // faceA from 2nd, faceB from 1st + twoFaces.second() = faceA; + break; + } + case surfaceIntersection::SELF: + case surfaceIntersection::SELF_REGION: + { + // Lookup should be commutativity - use sorted order + if (faceA < faceB) + { + twoFaces.first() = faceA; + twoFaces.second() = faceB; + } + else + { + twoFaces.first() = faceB; + twoFaces.second() = faceA; + } + break; + } + + case surfaceIntersection::NONE: + return; + break; } - labelPairLookup::const_iterator iter = facePairToVertex_.find(twoFaces); - if (iter == facePairToVertex_.end()) + // Get existing edge, or create a null edge (with -1) + edge& thisEdge = facePairToEdge_(twoFaces); + const label pointCount = thisEdge.count(); + + if (pointCount == 0) { - // New intersection. Store face-face intersection. - facePairToVertex_.insert(twoFaces, allCutPoints.size()-1); + // First intersection of the faces - record it. + thisEdge.insert(cutPointId); + + if (debug & 4) + { + Pout<< "intersect faces " << twoFaces + << " point-1: " << cutPointId << " = " + << allCutPoints[cutPointId] << endl; + } + continue; } - else + else if (pointCount == 2) { - // Second occurrence of surf1-surf2 intersection. - // Or rather the face on surf1 intersects a face on - // surface2 twice -> we found edge. + // This occurs for ugly surfaces with shards that result in multiple + // cuts very near a snapped end point. + if (debug & 4) + { + Pout<< "suppressed double intersection " << twoFaces + << thisEdge << endl; + } + continue; + } - // Check whether perhaps degenerate - const point& prevHit = allCutPoints[*iter]; - const point& thisHit = allCutPoints.last(); + if (thisEdge.insert(cutPointId)) + { + // Second intersection of the faces - this is an edge, + // with special treatment: + // - avoid duplicate points: addressed by the insert() above + // - avoid degenerate lengths + // - avoid duplicate edges - can occur with really dirty geometry - if (mag(prevHit - thisHit) < SMALL) + if (edgeToId_.found(thisEdge)) { - WarningInFunction - << "Encountered degenerate edge between face " - << twoFaces[0] << " on first surface" - << " and face " << twoFaces[1] << " on second surface" - << endl - << "Point on first surface:" << prevHit << endl - << "Point on second surface:" << thisHit << endl - << endl; + // Already have this edgeId, but not for this intersection. + thisEdge.sort(); + if (facePairToEdge_.insert(twoFaces, thisEdge)) + { + if (debug & 4) + { + Pout<< "reuse edge - faces " << twoFaces << " edge#" + << edgeToId_[thisEdge] << " edge " << thisEdge + << " = " << thisEdge.line(allCutPoints) + << endl; + } + } + } + else if (thisEdge.mag(allCutPoints) < SMALL) + { + // Degenerate length + // - eg, end snapping was disabled or somehow failed. + + // Don't normally emit warnings, since these also arise for + // manifold connections. For example, + // + // e1| /e2 + // | / + // |/ + // ----.---- plane + // + // The plane is correctly pierced at the '.' by both edge-1 + // and edge-2, which belong to the same originating face. + + // Filter/merge away the extraneous points later. + if (warnDegenerate_ > 0) + { + --warnDegenerate_; + WarningInFunction + << "Degenerate edge between faces " << twoFaces + << " on 1st/2nd surface with points " + << thisEdge.line(allCutPoints) + << endl; + } + else if (debug & 4) + { + Pout<< "degenerate edge face-pair " << twoFaces << " " + << thisEdge[0] << " point " << allCutPoints[thisEdge[0]] + << endl; + } + + // This is a failed edge - undo this second interaction + thisEdge.erase(cutPointId); } else { - allCutEdges.append(edge(*iter, allCutPoints.size()-1)); + // This is a new edge. + const label edgeId = allCutEdges.size(); - // Remember face on surf - facePairToEdge_.insert(twoFaces, allCutEdges.size()-1); + if (facePairToEdgeId_.insert(twoFaces, edgeId)) + { + // Record complete (line) intersection of two faces + thisEdge.sort(); + edgeToId_.insert(thisEdge, edgeId); + allCutEdges.append(thisEdge); + + if (debug & 4) + { + Pout<< "create edge - faces " << twoFaces << " edge#" + << edgeId << " edge " << thisEdge + << " = " << thisEdge.line(allCutPoints) + << endl; + } + } + else + { + // Faces already had an intersection + // This should not fail, but for safety. + Info<<"WARN " << twoFaces + << " already intersected= " << thisEdge << endl; + thisEdge.erase(cutPointId); + } } } + else + { + // Duplicate point - usually zero-length edge from snapping + // - can discard this face/face interaction entirely + facePairToEdge_.erase(twoFaces); + } } } @@ -274,17 +259,16 @@ void Foam::surfaceIntersection::classifyHit const triSurface& surf1, const scalarField& surf1PointTol, const triSurface& surf2, - const bool isFirstSurf, + const enum intersectionType cutFrom, const label edgeI, - const scalar tolDim, const pointIndexHit& pHit, - DynamicList<edge>& allCutEdges, DynamicList<point>& allCutPoints, + DynamicList<edge>& allCutEdges, List<DynamicList<label>>& surfEdgeCuts ) { - const edge& e = surf1.edges()[edgeI]; + const edge& e1 = surf1.edges()[edgeI]; const labelList& facesA = surf1.edgeFaces()[edgeI]; @@ -294,6 +278,7 @@ void Foam::surfaceIntersection::classifyHit // Classify point on surface2 const triSurface::FaceType& f2 = surf2.localFaces()[surf2Facei]; + const pointField& surf1Pts = surf1.localPoints(); const pointField& surf2Pts = surf2.localPoints(); label nearType, nearLabel; @@ -301,14 +286,14 @@ void Foam::surfaceIntersection::classifyHit f2.nearestPointClassify(pHit.hitPoint(), surf2Pts, nearType, nearLabel); // Classify points on edge of surface1 - label edgeEnd = + const label edgeEnd = classify ( - surf1PointTol[e.start()], - surf1PointTol[e.end()], + surf1PointTol[e1.start()], + surf1PointTol[e1.end()], pHit.hitPoint(), - e, - surf1.localPoints() + e1, + surf1Pts ); if (nearType == triPointRef::POINT) @@ -318,37 +303,87 @@ void Foam::surfaceIntersection::classifyHit // 1. Point hits point. Do nothing. if (debug & 2) { - Pout<< pHit.hitPoint() << " is surf1:" - << " end point of edge " << e + Pout<< "hit-type[1] " << pHit.hitPoint() << " is surf1:" + << " end point of edge[" << edgeI << "] " << e1 + << "==" << e1.line(surf1Pts) << " surf2: vertex " << f2[nearLabel] - << " coord:" << surf2Pts[f2[nearLabel]] << endl; + << " coord:" << surf2Pts[f2[nearLabel]] + << " - suppressed" << endl; } } else { // 2. Edge hits point. Cut edge with new point. + label cutPointId = -1; + const label nearVert = f2[nearLabel]; + + // For self-intersection, we have tolerances for each point + // (surf2 is actually surf1) so we shift the hit to coincide + // identically. + if + ( + cutFrom == surfaceIntersection::SELF + || cutFrom == surfaceIntersection::SELF_REGION + ) + { + const point& nearPt = surf1Pts[nearVert]; + + if + ( + mag(pHit.hitPoint() - nearPt) + < surf1PointTol[nearVert] + ) + { + cutPointId = allCutPoints.size(); + + if (snapToEnd_) + { + if (snappedEnds_.insert(nearVert, cutPointId)) + { + // Initial snap + allCutPoints.append(nearPt); + } + else + { + // Already snapped this point. + cutPointId = snappedEnds_[nearVert]; + } + } + else + { + allCutPoints.append(nearPt); + } + } + } + if (debug & 2) { - Pout<< pHit.hitPoint() << " is surf1:" - << " somewhere on edge " << e + Pout<< "hit-type[2] " << pHit.hitPoint() << " is surf1:" + << " from edge[" << edgeI << "] " << e1 << " surf2: vertex " << f2[nearLabel] - << " coord:" << surf2Pts[f2[nearLabel]] << endl; + << " coord:" << surf2Pts[f2[nearLabel]] + << " - " + << (cutPointId >= 0 ? "snapped" : "stored") << endl; } - allCutPoints.append(pHit.hitPoint()); - surfEdgeCuts[edgeI].append(allCutPoints.size()-1); + if (cutPointId == -1) + { + cutPointId = allCutPoints.size(); + allCutPoints.append(pHit.hitPoint()); + } + surfEdgeCuts[edgeI].append(cutPointId); const labelList& facesB = surf2.pointFaces()[f2[nearLabel]]; - forAll(facesB, faceBI) { storeIntersection ( - isFirstSurf, + cutFrom, facesA, facesB[faceBI], - allCutEdges, - allCutPoints + allCutPoints, + cutPointId, + allCutEdges ); } } @@ -357,18 +392,123 @@ void Foam::surfaceIntersection::classifyHit { if (edgeEnd >= 0) { - // 3. Point hits edge. Do nothing on this side. Reverse - // is handled by 2 (edge hits point) - label edge2I = getEdge(surf2, surf2Facei, nearLabel); + // 3. Point hits edge. + // Normally do nothing on this side since the reverse + // (edge hits point) is handled by 2. + // However, if the surfaces are separated by a minor gap, + // the end-point of a tolerance-extended edge can intersect another + // edge without itself being intersected by an edge. + + const label edge2I = getEdge(surf2, surf2Facei, nearLabel); const edge& e2 = surf2.edges()[edge2I]; + const label nearVert = e1[edgeEnd]; + + label cutPointId = -1; + + // Storage treatment + // =0: nothing/ignore + // >0: store point/edge-cut. Attempt to create new edge. + // <0: store point/edge-cut only + int handling = (allowEdgeHits_ ? 1 : 0); + if + ( + allowEdgeHits_ + && + ( + cutFrom == surfaceIntersection::SELF + || cutFrom == surfaceIntersection::SELF_REGION + ) + ) + { + // The edge-edge intersection is hashed as an 'edge' to + // exploit the commutative lookup. + // Ie, only do the cut once + const edge intersect(edgeI, edge2I); + + if (e2.found(nearVert)) + { + // Actually the same as #1 above, but missed due to + // tolerancing + handling = 0; // suppress + } + else if (edgeEdgeIntersection_.insert(intersect)) + { + const point& nearPt = surf1Pts[nearVert]; + + if + ( + mag(pHit.hitPoint() - nearPt) + < surf1PointTol[nearVert] + ) + { + cutPointId = allCutPoints.size(); + + if (snapToEnd_) + { + if (snappedEnds_.insert(nearVert, cutPointId)) + { + // Initial snap + allCutPoints.append(nearPt); + } + else + { + // Already snapped this point. + cutPointId = snappedEnds_[nearVert]; + handling = 2; // cached + } + } + else + { + allCutPoints.append(nearPt); + } + } + } + else + { + handling = 0; // ignore - already did this interaction + } + } + + if (debug & 2) + { + Pout<< "hit-type[3] " << pHit.hitPoint() << " is surf1:" + << " end point of edge[" << edgeI << "] " << e1 + << "==" << e1.line(surf1Pts) + << " surf2: edge[" << edge2I << "] " << e2 + << " coords:" << e2.line(surf2Pts) + << " - " + << ( + handling > 1 + ? "cached" : handling + ? "stored" : "suppressed" + ) << endl; + } + + if (handling) + { + if (cutPointId == -1) + { + cutPointId = allCutPoints.size(); + allCutPoints.append(pHit.hitPoint()); + } + surfEdgeCuts[edgeI].append(cutPointId); + } - if (debug&2) + if (handling > 0) { - Pout<< pHit.hitPoint() << " is surf1:" - << " end point of edge " << e - << " surf2: edge " << e2 - << " coords:" << surf2Pts[e2.start()] - << surf2Pts[e2.end()] << endl; + const labelList& facesB = surf2.edgeFaces()[edge2I]; + forAll(facesB, faceBI) + { + storeIntersection + ( + cutFrom, + facesA, + facesB[faceBI], + allCutPoints, + cutPointId, + allCutEdges + ); + } } } else @@ -379,42 +519,141 @@ void Foam::surfaceIntersection::classifyHit // doing the surf2 with surf1 intersection but these // are merged later on) - label edge2I = getEdge(surf2, surf2Facei, nearLabel); - const edge& e2 = surf2.edges()[edge2I]; + // edge hits all faces on surf2 connected to the edge + // + // The edge-edge intersection is symmetric, store only once. + // - When intersecting two surfaces, note which edges are cut each + // time, but only create an edge from the first pass. + // - For self-intersection, it is slightly trickier if we don't + // want too many duplicate points. - if (debug&2) + const label edge2I = getEdge(surf2, surf2Facei, nearLabel); + const edge& e2 = surf2.edges()[edge2I]; + label cutPointId = -1; + + // Storage treatment + // =0: nothing/ignore + // >0: store point/edge-cut. Attempt to create new edge. + // <0: store point/edge-cut only + int handling = 0; + switch (cutFrom) { - Pout<< pHit.hitPoint() << " is surf1:" - << " somewhere on edge " << e - << " surf2: edge " << e2 - << " coords:" << surf2Pts[e2.start()] - << surf2Pts[e2.end()] << endl; + case surfaceIntersection::FIRST: + { + handling = 1; + break; + } + case surfaceIntersection::SECOND: + { + handling = -1; + break; + } + case surfaceIntersection::SELF: + case surfaceIntersection::SELF_REGION: + { + // The edge-edge intersection is hashed as an 'edge' to + // exploit the commutative lookup. + // Ie, only do the cut once + const edge intersect(edgeI, edge2I); + + if (edgeEdgeIntersection_.insert(intersect)) + { + handling = 1; + forAll(e1, edgepti) + { + const label endId = e1[edgepti]; + const point& nearPt = surf1Pts[endId]; + + if + ( + mag(pHit.hitPoint() - nearPt) + < surf1PointTol[endId] + ) + { + cutPointId = allCutPoints.size(); + + if (snapToEnd_) + { + if (snappedEnds_.insert(endId, cutPointId)) + { + // First time with this end-point + allCutPoints.append(nearPt); + } + else + { + // Already seen this end point + cutPointId = snappedEnds_[endId]; + handling = 2; // cached + } + } + else + { + allCutPoints.append(nearPt); + } + + break; + } + } + } + + break; + } + + case surfaceIntersection::NONE: + return; + break; } - allCutPoints.append(pHit.hitPoint()); - surfEdgeCuts[edgeI].append(allCutPoints.size()-1); + if (debug & 2) + { + Pout<< "hit-type[4] " << pHit.hitPoint() << " is surf1:" + << " from edge[" << edgeI << "] " << e1 + << "==" << e1.line(surf1Pts) + << " surf2: edge[" << edge2I << "] " << e2 + << " coords:" << e2.line(surf2Pts) + << " - " + << ( + handling < 0 + ? "cut-point" : handling + ? "stored" : "suppressed" + ) + << endl; + } - // edge hits all faces on surf2 connected to the edge + if (handling) + { + if (cutPointId == -1) + { + cutPointId = allCutPoints.size(); + allCutPoints.append(pHit.hitPoint()); + } + surfEdgeCuts[edgeI].append(cutPointId); + } - if (isFirstSurf) + if (handling) { - // edge-edge intersection is symmetric, store only - // once. - // edge hits all faces on surf2 connected to the - // edge + const vector eVec = e1.unitVec(surf1Pts); const labelList& facesB = surf2.edgeFaces()[edge2I]; - forAll(facesB, faceBI) { - storeIntersection + // Intersecting edge should be non-coplanar with face + if ( - isFirstSurf, - facesA, - facesB[faceBI], - allCutEdges, - allCutPoints - ); + mag((surf2.faceNormals()[facesB[faceBI]] & eVec)) + > 0.01 + ) + { + storeIntersection + ( + cutFrom, + facesA, + facesB[faceBI], + allCutPoints, + cutPointId, + allCutEdges + ); + } } } } @@ -425,131 +664,117 @@ void Foam::surfaceIntersection::classifyHit { // 5. Point hits face. Do what? Introduce // point & triangulation in face? - if (debug&2) - { - Pout<< pHit.hitPoint() << " is surf1:" - << " end point of edge " << e - << " surf2: face " << surf2Facei - << endl; - } - // // Look exactly at what side (of surf2) edge is. Leave out ones on // inside of surf2 (i.e. on opposite side of normal) - // - - // Vertex on/near surf2 - label nearVert = -1; - - if (edgeEnd == 0) - { - nearVert = e.start(); - } - else - { - nearVert = e.end(); - } - - const point& nearPt = surf1.localPoints()[nearVert]; - - // Vertex away from surf2 - label otherVert = e.otherVertex(nearVert); - const point& otherPt = surf1.localPoints()[otherVert]; + // Vertex on/near surf2; vertex away from surf2 + // otherVert on outside of surf2 + const label nearVert = (edgeEnd == 0 ? e1.start() : e1.end()); + const label otherVert = (edgeEnd == 0 ? e1.end() : e1.start()); + const point& nearPt = surf1Pts[nearVert]; + const point& otherPt = surf1Pts[otherVert]; - if (debug) - { - Pout - << pHit.hitPoint() << " is surf1:" - << " end point of edge " << e << " coord:" - << surf1.localPoints()[nearVert] - << " surf2: face " << surf2Facei << endl; - } - - vector eVec = otherPt - nearPt; + const vector eVec = otherPt - nearPt; if ((surf2.faceNormals()[surf2Facei] & eVec) > 0) { - // otherVert on outside of surf2 - - // Shift hitPoint a bit along edge. - //point hitPt = nearPt + 0.1*eVec; - point hitPt = nearPt; + // map to nearVert + // Reclassify as normal edge-face pierce (see below) + bool cached = false; - if (debug&2) + label cutPointId = allCutPoints.size(); + if (snapToEnd_) + { + if (snappedEnds_.insert(nearVert, cutPointId)) + { + // First time with this end-point + allCutPoints.append(nearPt); + } + else + { + // Already seen this end point + cutPointId = snappedEnds_[nearVert]; + cached = true; + } + } + else { - Pout<< "Shifted " << pHit.hitPoint() - << " to " << hitPt - << " along edge:" << e - << " coords:" << surf1.localPoints()[e.start()] - << surf1.localPoints()[e.end()] << endl; + allCutPoints.append(nearPt); } - // Reclassify as normal edge-face pierce (see below) + surfEdgeCuts[edgeI].append(cutPointId); - allCutPoints.append(hitPt); - surfEdgeCuts[edgeI].append(allCutPoints.size()-1); + if (debug & 2) + { + Pout<< "hit-type[5] " << pHit.hitPoint() + << " shifted to " << nearPt + << " from edge[" << edgeI << "] " << e1 + << "==" << e1.line(surf1Pts) + << " hits surf2 face[" << surf2Facei << "]" + << " - " + << (cached ? "cached" : "stored") << endl; + } // edge hits single face only storeIntersection ( - isFirstSurf, + cutFrom, facesA, surf2Facei, - allCutEdges, - allCutPoints + allCutPoints, + cutPointId, + allCutEdges ); } else { - if (debug&2) + if (debug & 2) { - Pout<< "Discarding " << pHit.hitPoint() - << " since edge " << e << " on inside of surf2." - << " surf2 normal:" << surf2.faceNormals()[surf2Facei] - << endl; + Pout<< "hit-type[5] " << pHit.hitPoint() + << " from edge[" << edgeI << "] " << e1 + << " hits inside of surf2 face[" << surf2Facei << "]" + << " - discarded" << endl; } } } else { // 6. Edge pierces face. 'Normal' situation. - if (debug&2) + if (debug & 2) { - Pout<< pHit.hitPoint() << " is surf1:" - << " somewhere on edge " << e - << " surf2: face " << surf2Facei - << endl; + Pout<< "hit-type[6] " << pHit.hitPoint() + << " from edge[" << edgeI << "] " << e1 + << "==" << e1.line(surf1Pts) + << " hits surf2 face[" << surf2Facei << "]" + << " - stored" << endl; } - // edgeI intersects surf2. Store point. + const label cutPointId = allCutPoints.size(); allCutPoints.append(pHit.hitPoint()); - surfEdgeCuts[edgeI].append(allCutPoints.size()-1); + surfEdgeCuts[edgeI].append(cutPointId); // edge hits single face only storeIntersection ( - isFirstSurf, + cutFrom, facesA, surf2Facei, - allCutEdges, - allCutPoints + allCutPoints, + cutPointId, + allCutEdges ); } } - if (debug&2) - { - Pout<< endl; - } } // Cut all edges of surf1 with surf2. Sets // - cutPoints : coordinates of cutPoints // - cutEdges : newly created edges between cutPoints -// - facePairToVertex : hash from face1I and face2I to cutPoint -// - facePairToEdge : hash from face1I and face2I to cutEdge +// - facePairToVertex : hash from face1I and face2I to edge +// - facePairToEdgeId : hash from face1I and face2I to index in cutEdge // - surfEdgeCuts : gives for each edge the cutPoints // (in order from start to end) // @@ -557,15 +782,14 @@ void Foam::surfaceIntersection::doCutEdges ( const triSurface& surf1, const triSurfaceSearch& querySurf2, - const bool isFirstSurf, - const bool isSelfIntersection, + const enum intersectionType cutFrom, - DynamicList<edge>& allCutEdges, DynamicList<point>& allCutPoints, + DynamicList<edge>& allCutEdges, List<DynamicList<label>>& surfEdgeCuts ) { - scalar oldTol = intersection::setPlanarTol(1e-3); + const scalar oldTol = intersection::setPlanarTol(tolerance_); const pointField& surf1Pts = surf1.localPoints(); @@ -574,152 +798,289 @@ void Foam::surfaceIntersection::doCutEdges forAll(surf1PointTol, pointi) { - surf1PointTol[pointi] = - intersection::planarTol() - * minEdgeLen(surf1, pointi); + surf1PointTol[pointi] = tolerance_ * minEdgeLen(surf1, pointi); } - const triSurface& surf2 = querySurf2.surface(); + const indexedOctree<treeDataPrimitivePatch<triSurface>>& searchTree + = querySurf2.tree(); - forAll(surf1.edges(), edgeI) + if + ( + cutFrom == surfaceIntersection::SELF + || cutFrom == surfaceIntersection::SELF_REGION + ) { - const edge& e = surf1.edges()[edgeI]; + // An edge may intersect multiple faces + // - mask out faces that have already been hit before trying again + // - never intersect with faces attached to the edge itself + DynamicList<label> maskFaces(32); - point pStart = surf1Pts[e.start()]; - const point& pEnd = surf1Pts[e.end()]; + // Optionally prevent intersection within a single region. + // Like self-intersect, but only if regions are different + PackedBoolList maskRegions(32); - const point tolVec = intersection::planarTol()*(pEnd-pStart); - const scalar tolDim = mag(tolVec); + treeDataTriSurface::findAllIntersectOp + allIntersectOp(searchTree, maskFaces); - bool doTrack = false; - do + forAll(surf1.edges(), edgeI) { - pointIndexHit pHit = querySurf2.tree().findLine(pStart, pEnd); + const edge& e = surf1.edges()[edgeI]; + const vector edgeVec = e.vec(surf1Pts); + + // Extend start/end by 1/2 tolerance - ensures cleaner cutting + const point ptStart = + surf1Pts[e.start()] - 0.5*surf1PointTol[e.start()]*edgeVec; + const point ptEnd = + surf1Pts[e.end()] + 0.5*surf1PointTol[e.end()]*edgeVec; - if (pHit.hit()) + maskRegions.clear(); + if (cutFrom == surfaceIntersection::SELF_REGION) { - if (isSelfIntersection) + for (auto& facei : surf1.edgeFaces()[edgeI]) { - // Skip all intersections which are hit at endpoints of - // edge. - // Problem is that if faces are almost coincident the - // intersection point will be calculated quite incorrectly - // The error might easily be larger than 1% of the edge - // length. - // So what we do here is to exclude hit faces if our edge - // is in their plane and they share a point with the edge. - - // Label of face on surface2 edgeI intersected - label hitFacei = pHit.index(); + maskRegions.set(surf1[facei].region()); + } + } - if - ( - !excludeEdgeHit - ( - surf1, - edgeI, - hitFacei, - 0.1 // 1-cos of angle between normals - ) - ) - { - // Classify point on surface1 - label edgeEnd = classify - ( - surf1PointTol[e.start()], - surf1PointTol[e.end()], - pHit.hitPoint(), - e, - surf1Pts - ); + // Never intersect with faces attached directly to the edge itself, + // nor with faces attached to its end points. This mask contains + // some duplicates, but filtering them out is less efficient. + maskFaces = surf1.pointFaces()[e.start()]; + maskFaces.append(surf1.pointFaces()[e.end()]); - if (edgeEnd < 0) - { - if (debug) - { - Pout<< "edge:" << edgeI << " vertices:" << e - << " start:" << surf1Pts[e.start()] - << " end:" << surf1Pts[e.end()] - << " hit:" << pHit.hitPoint() - << " tolDim:" << tolDim - << " planarTol:" - << intersection::planarTol() - << endl; - } - allCutPoints.append(pHit.hitPoint()); - surfEdgeCuts[edgeI].append(allCutPoints.size()-1); - } - } - } - else + while (true) + { + pointIndexHit pHit = searchTree.findLine + ( + ptStart, + ptEnd, + allIntersectOp + ); + + if (!pHit.hit()) { - classifyHit - ( - surf1, - surf1PointTol, - surf2, - isFirstSurf, - edgeI, - tolDim, - pHit, - - allCutEdges, - allCutPoints, - surfEdgeCuts - ); + break; } - if (mag(pHit.hitPoint() - pEnd) < tolDim) + maskFaces.append(pHit.index()); + + if (maskRegions[surf1[pHit.index()].region()]) { - doTrack = false; + continue; } - else + + classifyHit + ( + surf1, + surf1PointTol, + surf1, + cutFrom, + edgeI, + pHit, + + allCutPoints, + allCutEdges, + surfEdgeCuts + ); + } + } + } + else + { + const triSurface& surf2 = querySurf2.surface(); + + forAll(surf1.edges(), edgeI) + { + const edge& e = surf1.edges()[edgeI]; + const vector edgeVec = e.vec(surf1Pts); + + const point tolVec = intersection::planarTol()*(edgeVec); + const scalar tolDim = mag(tolVec); + + // Extend start/end by 1/2 tolerance - ensures cleaner cutting + point ptStart = + surf1Pts[e.start()] - 0.5*surf1PointTol[e.start()]*edgeVec; + const point ptEnd = + surf1Pts[e.end()] + 0.5*surf1PointTol[e.end()]*edgeVec; + + bool doTrack = false; + do + { + pointIndexHit pHit = searchTree.findLine(ptStart, ptEnd); + + if (!pHit.hit()) { - pStart = pHit.hitPoint() + tolVec; + break; + } + + classifyHit + ( + surf1, + surf1PointTol, + surf2, + cutFrom, + edgeI, + pHit, + + allCutPoints, + allCutEdges, + surfEdgeCuts + ); - doTrack = true; + if (tolerance_ > 0) + { + if (mag(pHit.hitPoint() - ptEnd) < tolDim) + { + // Near the end => done + doTrack = false; + } + else + { + // Continue tracking a bit further on + ptStart = pHit.hitPoint() + tolVec; + doTrack = true; + } } } - else + while (doTrack); // execute at least once + } + } + if (debug & 2) + { + Pout<< endl; + } + + // These temporaries are now unneeded: + edgeEdgeIntersection_.clear(); + snappedEnds_.clear(); + + intersection::setPlanarTol(oldTol); +} + + +void Foam::surfaceIntersection::joinDisconnected +( + DynamicList<edge>& allCutEdges +) +{ + // This simple heuristic seems to work just as well (or better) than + // more complicated schemes + // + // For any face/face intersection that only appears once, + // consider which other faces/points are involved and connect between + // those points. + // Just do a simple connect-the-dots? + + Pair<Map<labelPairHashSet>> missedFacePoint; + + // Stage 1: + // - Extract "faceId -> (faceId, pointId)" + // for all face/face pairs that only have one interaction + forAllConstIters(facePairToEdge_, iter) + { + const labelPair& twoFaces = iter.key(); + const edge& e = iter.object(); + + if (e.count() == 1) + { + // minVertex = -1 (unused), maxVertex = pointId + const label pointId = e.maxVertex(); + + missedFacePoint[0](twoFaces[0]).insert + ( + labelPair(twoFaces[1], pointId) + ); + + missedFacePoint[1](twoFaces[1]).insert + ( + labelPair(twoFaces[0], pointId) + ); + } + } + + + // Stage 2: + // - anything with two cross-interactions could cause a new edge: + + edgeHashSet newEdges; + forAll(missedFacePoint, sidei) + { + const auto& mapping = missedFacePoint[sidei]; + + forAllConstIters(mapping, iter) + { + const auto& connect = iter.object(); + + if (connect.size() == 2) { - doTrack = false; + // exactly two face/face cross-interactions + + edge e; + for (const auto& facePoint : connect) + { + e.insert(facePoint.second()); + } + e.sort(); + + // Only consider edges with two unique ends, + // and do not introduce duplicates + if (e.count() == 2 && !edgeToId_.found(e)) + { + newEdges.insert(e); + } } } - while (doTrack); } - intersection::setPlanarTol(oldTol); + label edgeId = allCutEdges.size(); + edgeList newEdgesLst = newEdges.sortedToc(); + for (const auto& e : newEdgesLst) + { + // Record complete (line) intersection of two faces + allCutEdges.append(e); + edgeToId_.insert(e, edgeId); + ++edgeId; + } } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Null constructor Foam::surfaceIntersection::surfaceIntersection() : + tolerance_(1e-3), + allowEdgeHits_(true), + snapToEnd_(true), + warnDegenerate_(0), cutPoints_(0), cutEdges_(0), - facePairToVertex_(0), facePairToEdge_(0), + facePairToEdgeId_(0), surf1EdgeCuts_(0), surf2EdgeCuts_(0) {} -// Construct from two surfaces Foam::surfaceIntersection::surfaceIntersection ( const triSurfaceSearch& query1, - const triSurfaceSearch& query2 + const triSurfaceSearch& query2, + const dictionary& dict ) : + tolerance_(1e-3), + allowEdgeHits_(true), + snapToEnd_(true), + warnDegenerate_(0), cutPoints_(0), cutEdges_(0), - facePairToVertex_(2*max(query1.surface().size(), query2.surface().size())), facePairToEdge_(2*max(query1.surface().size(), query2.surface().size())), + facePairToEdgeId_(2*max(query1.surface().size(), query2.surface().size())), surf1EdgeCuts_(0), surf2EdgeCuts_(0) { + setOptions(dict); + const triSurface& surf1 = query1.surface(); const triSurface& surf2 = query2.surface(); @@ -732,23 +1093,21 @@ Foam::surfaceIntersection::surfaceIntersection } - DynamicList<edge> allCutEdges(surf1.nEdges()/20); + DynamicList<edge> allCutEdges(surf1.nEdges()/20); DynamicList<point> allCutPoints(surf1.nPoints()/20); // From edge to cut index on surface1 List<DynamicList<label>> edgeCuts1(query1.surface().nEdges()); + // 1st surf (for labelPair order) doCutEdges ( surf1, query2, - true, // is first surface; construct labelPair in correct - // order - false, // not self intersection - - allCutEdges, + surfaceIntersection::FIRST, allCutPoints, + allCutEdges, edgeCuts1 ); // Transfer to straight labelListList @@ -766,24 +1125,25 @@ Foam::surfaceIntersection::surfaceIntersection // From edge to cut index List<DynamicList<label>> edgeCuts2(query2.surface().nEdges()); + // 2nd surf (for labelPair order) doCutEdges ( surf2, query1, - false, // is second surface - false, // not self intersection - - allCutEdges, + surfaceIntersection::SECOND, allCutPoints, + allCutEdges, edgeCuts2 ); + // join disconnected intersection points + joinDisconnected(allCutEdges); + // Transfer to straight label(List)List transfer(edgeCuts2, surf2EdgeCuts_); cutEdges_.transfer(allCutEdges); cutPoints_.transfer(allCutPoints); - if (debug) { Pout<< "surfaceIntersection : Intersection generated:" @@ -794,8 +1154,7 @@ Foam::surfaceIntersection::surfaceIntersection Pout<< "surfaceIntersection : Writing intersection to intEdges.obj" << endl; - OFstream intStream("intEdges.obj"); - writeOBJ(cutPoints_, cutEdges_, intStream); + OBJstream("intEdges.obj").write(cutEdges_, cutPoints_); // Dump all cut edges to files Pout<< "Dumping cut edges of surface1 to surf1EdgeCuts.obj" << endl; @@ -806,10 +1165,127 @@ Foam::surfaceIntersection::surfaceIntersection OFstream edge2Stream("surf2EdgeCuts.obj"); writeIntersectedEdges(surf2, surf2EdgeCuts_, edge2Stream); } + + // Temporaries + facePairToEdge_.clear(); + + // Cleanup any duplicate cuts? + // mergeEdges(); +} + + +Foam::surfaceIntersection::surfaceIntersection +( + const triSurfaceSearch& query1, + const dictionary& dict +) +: + tolerance_(1e-3), + allowEdgeHits_(true), + snapToEnd_(true), + warnDegenerate_(0), + cutPoints_(0), + cutEdges_(0), + facePairToEdge_(2*query1.surface().size()), + facePairToEdgeId_(2*query1.surface().size()), + surf1EdgeCuts_(0), + surf2EdgeCuts_(0) +{ + setOptions(dict); + + const intersectionType cutFrom = selfIntersectionNames.lookupOrDefault + ( + "intersectionMethod", + dict, + intersectionType::SELF + ); + + if (cutFrom == intersectionType::NONE) + { + if (debug) + { + Pout<< "Skipping self-intersection (selected: none)" << endl; + } + + // Temporaries + facePairToEdge_.clear(); + facePairToEdgeId_.clear(); + + return; + } + + const triSurface& surf1 = query1.surface(); + + // + // Cut all edges of surf1 with surf1 itself. + // + if (debug) + { + Pout<< "Cutting surf1 edges" << endl; + } + + DynamicList<edge> allCutEdges; + DynamicList<point> allCutPoints; + + // From edge to cut index on surface1 + List<DynamicList<label>> edgeCuts1(query1.surface().nEdges()); + + // self-intersection + doCutEdges + ( + surf1, + query1, + cutFrom, + allCutPoints, + allCutEdges, + edgeCuts1 + ); + + // join disconnected intersection points + joinDisconnected(allCutEdges); + + // Transfer to straight label(List)List + transfer(edgeCuts1, surf1EdgeCuts_); + cutEdges_.transfer(allCutEdges); + cutPoints_.transfer(allCutPoints); + + // Short-circuit + if (cutPoints_.empty() && cutEdges_.empty()) + { + if (debug) + { + Pout<< "Empty intersection" << endl; + } + return; + } + + if (debug) + { + Pout<< "surfaceIntersection : Intersection generated and compressed:" + << endl + << " points:" << cutPoints_.size() << endl + << " edges :" << cutEdges_.size() << endl; + + + Pout<< "surfaceIntersection : Writing intersection to intEdges.obj" + << endl; + + OBJstream("intEdges.obj").write(cutEdges_, cutPoints_); + + // Dump all cut edges to files + Pout<< "Dumping cut edges of surface1 to surf1EdgeCuts.obj" << endl; + OFstream edge1Stream("surf1EdgeCuts.obj"); + writeIntersectedEdges(surf1, surf1EdgeCuts_, edge1Stream); + } + + // Temporaries + facePairToEdge_.clear(); + + // // Cleanup any duplicate cuts? + // mergeEdges(); } -// Construct from full intersection information Foam::surfaceIntersection::surfaceIntersection ( const triSurface& surf1, @@ -818,16 +1294,20 @@ Foam::surfaceIntersection::surfaceIntersection const edgeIntersections& intersections2 ) : + tolerance_(1e-3), + allowEdgeHits_(true), + snapToEnd_(true), + warnDegenerate_(0), cutPoints_(0), cutEdges_(0), - facePairToVertex_(2*max(surf1.size(), surf2.size())), facePairToEdge_(2*max(surf1.size(), surf2.size())), + facePairToEdgeId_(2*max(surf1.size(), surf2.size())), surf1EdgeCuts_(0), surf2EdgeCuts_(0) { // All intersection Pout (so for both surfaces) - DynamicList<edge> allCutEdges((surf1.nEdges() + surf2.nEdges())/20); + DynamicList<edge> allCutEdges((surf1.nEdges() + surf2.nEdges())/20); DynamicList<point> allCutPoints((surf1.nPoints() + surf2.nPoints())/20); @@ -849,19 +1329,21 @@ Foam::surfaceIntersection::surfaceIntersection forAll(intersections, i) { + // edgeI intersects surf2. Store point. const pointIndexHit& pHit = intersections[i]; + const label cutPointId = allCutPoints.size(); - // edgeI intersects surf2. Store point. allCutPoints.append(pHit.hitPoint()); - edgeCuts1[edgeI].append(allCutPoints.size()-1); + edgeCuts1[edgeI].append(cutPointId); storeIntersection ( - true, // is first surface + surfaceIntersection::FIRST, surf1.edgeFaces()[edgeI], - pHit.index(), // surf2Facei - allCutEdges, - allCutPoints + pHit.index(), + allCutPoints, + cutPointId, + allCutEdges ); } } @@ -871,7 +1353,6 @@ Foam::surfaceIntersection::surfaceIntersection } - // Cut all edges of surf2 with surf1 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -890,19 +1371,21 @@ Foam::surfaceIntersection::surfaceIntersection forAll(intersections, i) { + // edgeI intersects surf1. Store point. const pointIndexHit& pHit = intersections[i]; + const label cutPointId = allCutPoints.size(); - // edgeI intersects surf1. Store point. allCutPoints.append(pHit.hitPoint()); - edgeCuts2[edgeI].append(allCutPoints.size()-1); + edgeCuts2[edgeI].append(cutPointId); storeIntersection ( - false, // is second surface + surfaceIntersection::SECOND, surf2.edgeFaces()[edgeI], - pHit.index(), // surf2Facei - allCutEdges, - allCutPoints + pHit.index(), + allCutPoints, + cutPointId, + allCutEdges ); } } @@ -927,8 +1410,7 @@ Foam::surfaceIntersection::surfaceIntersection Pout<< "surfaceIntersection : Writing intersection to intEdges.obj" << endl; - OFstream intStream("intEdges.obj"); - writeOBJ(cutPoints_, cutEdges_, intStream); + OBJstream("intEdges.obj").write(cutEdges_, cutPoints_); // Dump all cut edges to files Pout<< "Dumping cut edges of surface1 to surf1EdgeCuts.obj" << endl; @@ -940,243 +1422,139 @@ Foam::surfaceIntersection::surfaceIntersection writeIntersectedEdges(surf2, surf2EdgeCuts_, edge2Stream); } + // Temporaries + facePairToEdge_.clear(); - // Debugging stuff - { - // Check all facePairToVertex is used. - labelHashSet usedPoints; + // // Cleanup any duplicate cuts? + // mergeEdges(); +} - forAllConstIter(labelPairLookup, facePairToEdge_, iter) - { - label edgeI = iter(); - const edge& e = cutEdges_[edgeI]; +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - usedPoints.insert(e[0]); - usedPoints.insert(e[1]); - } +const Foam::pointField& Foam::surfaceIntersection::cutPoints() const +{ + return cutPoints_; +} - forAllConstIter(labelPairLookup, facePairToVertex_, iter) - { - label pointi = iter(); - if (!usedPoints.found(pointi)) - { - WarningInFunction - << "Problem: cut point:" << pointi - << " coord:" << cutPoints_[pointi] - << " not used by any edge" << endl; - } - } - } +const Foam::edgeList& Foam::surfaceIntersection::cutEdges() const +{ + return cutEdges_; } -// Construct from single surface. Used to test for self-intersection. -Foam::surfaceIntersection::surfaceIntersection -( - const triSurfaceSearch& query1 -) -: - cutPoints_(0), - cutEdges_(0), - facePairToVertex_(2*query1.surface().size()), - facePairToEdge_(2*query1.surface().size()), - surf1EdgeCuts_(0), - surf2EdgeCuts_(0) +const Foam::labelPairLookup& Foam::surfaceIntersection::facePairToEdgeId() const { - const triSurface& surf1 = query1.surface(); + return facePairToEdgeId_; +} - // - // Cut all edges of surf1 with surf1 itself. - // - if (debug) + +const Foam::labelListList& Foam::surfaceIntersection::edgeCuts +( + const bool isFirstSurf +) const +{ + if (isFirstSurf) { - Pout<< "Cutting surf1 edges" << endl; + return surf1EdgeCuts_; } + else + { + return surf2EdgeCuts_; + } +} - DynamicList<edge> allCutEdges; - DynamicList<point> allCutPoints; - - // From edge to cut index on surface1 - List<DynamicList<label>> edgeCuts1(query1.surface().nEdges()); - - doCutEdges - ( - surf1, - query1, - true, // is first surface; construct labelPair in correct - // order - true, // self intersection - - - allCutEdges, - allCutPoints, - edgeCuts1 - ); - // Transfer to straight label(List)List - transfer(edgeCuts1, surf1EdgeCuts_); - cutEdges_.transfer(allCutEdges); - cutPoints_.transfer(allCutPoints); +const Foam::labelListList& Foam::surfaceIntersection::surf1EdgeCuts() const +{ + return surf1EdgeCuts_; +} - // Shortcut. - if (cutPoints_.empty() && cutEdges_.empty()) - { - if (debug) - { - Pout<< "Empty intersection" << endl; - } - return; - } - // - // Remove duplicate points (from edge-point or edge-edge cutting) - // +const Foam::labelListList& Foam::surfaceIntersection::surf2EdgeCuts() const +{ + return surf2EdgeCuts_; +} - // Get typical dimension. - scalar minEdgeLen = GREAT; - forAll(surf1.edges(), edgeI) - { - minEdgeLen = min - ( - minEdgeLen, - surf1.edges()[edgeI].mag(surf1.localPoints()) - ); - } - // Merge points - labelList pointMap; +void Foam::surfaceIntersection::mergePoints(const scalar mergeDist) +{ pointField newPoints; + labelList pointMap; - bool hasMerged = mergePoints + const label nMerged = Foam::mergePoints ( cutPoints_, - minEdgeLen*intersection::planarTol(), + mergeDist, false, pointMap, newPoints ); - if (hasMerged) + if (nMerged) { - if (debug) - { - Pout<< "Merged:" << hasMerged - << " mergeDist:" << minEdgeLen*intersection::planarTol() - << " cutPoints:" << cutPoints_.size() - << " newPoints:" << newPoints.size() - << endl; - } - - // Copy points cutPoints_.transfer(newPoints); - // Renumber vertices referenced by edges - forAll(cutEdges_, edgeI) + forAll(cutEdges_, edgei) { - edge& e = cutEdges_[edgeI]; - - e.start() = pointMap[e.start()]; - e.end() = pointMap[e.end()]; + edge& e = cutEdges_[edgei]; - if (e.mag(cutPoints_) < minEdgeLen*intersection::planarTol()) - { - if (debug) - { - Pout<< "Degenerate cut:" << edgeI << " vertices:" << e - << " coords:" << cutPoints_[e.start()] << ' ' - << cutPoints_[e.end()] << endl; - } - } + e[0] = pointMap[e[0]]; + e[1] = pointMap[e[1]]; } - // Renumber vertices referenced by edgeCut lists. Remove duplicates. - forAll(surf1EdgeCuts_, edgeI) + forAll(surf1EdgeCuts_, edgei) { - // Get indices of cutPoints this edge is cut by - labelList& cutVerts = surf1EdgeCuts_[edgeI]; - - removeDuplicates(pointMap, cutVerts); + inplaceRenumber(pointMap, surf1EdgeCuts_[edgei]); + inplaceUniqueSort(surf1EdgeCuts_[edgei]); + } + forAll(surf2EdgeCuts_, edgei) + { + inplaceRenumber(pointMap, surf2EdgeCuts_[edgei]); + inplaceUniqueSort(surf2EdgeCuts_[edgei]); } } - if (debug) - { - Pout<< "surfaceIntersection : Intersection generated and compressed:" - << endl - << " points:" << cutPoints_.size() << endl - << " edges :" << cutEdges_.size() << endl; - - - Pout<< "surfaceIntersection : Writing intersection to intEdges.obj" - << endl; - - OFstream intStream("intEdges.obj"); - writeOBJ(cutPoints_, cutEdges_, intStream); - } - - if (debug) - { - // Dump all cut edges to files - Pout<< "Dumping cut edges of surface1 to surf1EdgeCuts.obj" << endl; - OFstream edge1Stream("surf1EdgeCuts.obj"); - writeIntersectedEdges(surf1, surf1EdgeCuts_, edge1Stream); - } + this->mergeEdges(); } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -const Foam::pointField& Foam::surfaceIntersection::cutPoints() const -{ - return cutPoints_; -} - - -const Foam::edgeList& Foam::surfaceIntersection::cutEdges() const -{ - return cutEdges_; -} - - -const Foam::labelPairLookup& Foam::surfaceIntersection::facePairToVertex() const +void Foam::surfaceIntersection::mergeEdges() { - return facePairToVertex_; -} + HashSet<edge, Hash<edge>> uniqEdges(2*cutEdges_.size()); + label nUniqEdges = 0; + labelList edgeNumbering(cutEdges_.size(), -1); -const Foam::labelPairLookup& Foam::surfaceIntersection::facePairToEdge() const -{ - return facePairToEdge_; -} - - -const Foam::labelListList& Foam::surfaceIntersection::edgeCuts -( - const bool isFirstSurf -) const -{ - if (isFirstSurf) - { - return surf1EdgeCuts_; - } - else + forAll(cutEdges_, edgeI) { - return surf2EdgeCuts_; - } -} + const edge& e = cutEdges_[edgeI]; + // Remove degenerate and repeated edges + // - reordering (e[0] < e[1]) is not really necessary + if (e[0] != e[1] && uniqEdges.insert(e)) + { + edgeNumbering[edgeI] = nUniqEdges; + if (nUniqEdges != edgeI) + { + cutEdges_[nUniqEdges] = e; + } + cutEdges_[nUniqEdges].sort(); + ++nUniqEdges; + } + } -const Foam::labelListList& Foam::surfaceIntersection::surf1EdgeCuts() const -{ - return surf1EdgeCuts_; -} - + // if (nUniqEdges < cutEdges_.size()) + // { + // // Additional safety, in case the edge was replaced? + // forAllIters(facePairToEdge_, iter) + // { + // iter.object() = edgeNumbering[iter.object()]; + // } + // } -const Foam::labelListList& Foam::surfaceIntersection::surf2EdgeCuts() const -{ - return surf2EdgeCuts_; + cutEdges_.setSize(nUniqEdges); // truncate } diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H index 99265c9b353f5a90d9357015aa872348923eb5b9..d91ef507dd673aaa2f4d5e42a423b9ce2e8d4f73 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -41,11 +41,20 @@ Description hit of both faces and an edge is created between the retrieved vertex and the new one. - Note: when doing intersecting itself uses intersection::planarTol() as a - fraction of + Note: when doing intersecting itself uses 'tolerance' as a fraction of current edge length to determine if intersection is a point-touching one instead of an edge-piercing action. + Some constructors allow a dictionary of intersection controls: + \table + Property | Description | Type | Default value + tolerance | Edge-length tolerance | scalar | 1e-3 + allowEdgeHits | Edge-end cuts another edge | bool | true + snap | Snap near end-points | bool | true + warnDegenerate | Number of warnings about degenerate edges | label | 0 + intersectionMethod | Control for self intersection | (self,region,none) + \endtable + SourceFiles surfaceIntersection.C surfaceIntersectionFuncs.C @@ -58,11 +67,12 @@ SourceFiles #include "DynamicList.H" #include "point.H" -#include "edge.H" -#include "labelPairHashes.H" -#include "typeInfo.H" +#include "edgeHashes.H" #include "edgeList.H" +#include "labelPairHashes.H" #include "pointIndexHit.H" +#include "typeInfo.H" +#include "Enum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -74,50 +84,88 @@ class triSurfaceSearch; class triSurface; class edgeIntersections; + +//- Key is non-commutative pair of labels. Value is commutative pair of labels +typedef LabelPairMap<edge> labelPairEdgeLookup; + +//- Map from edge back to all parents (pairs of faces) +typedef EdgeMap<labelPairHashSet> edgelabelPairHashLookup; + + /*---------------------------------------------------------------------------*\ - Class surfaceIntersection Declaration + Class surfaceIntersection Declaration \*---------------------------------------------------------------------------*/ class surfaceIntersection { +public: + + //- Surface intersection types for classify, doCutEdges + enum intersectionType + { + FIRST, //!< First surface + SECOND, //!< Second surface + SELF, //!< Self-intersection + SELF_REGION, //!< Self-intersection, region-wise only + NONE //!< None = invalid (for input only) + }; + + //- The user-selectable self-intersection enumeration names + static const Enum<intersectionType> selfIntersectionNames; + + +private: + // Private data + //- Tolerance for intersections + scalar tolerance_; + + //- Allow edge-ends to cut another edge. + bool allowEdgeHits_; + + //- Snap cut points near edge ends (default: true) + bool snapToEnd_; + + //- Maximum number of warnings about degenerate edges + label warnDegenerate_; + //- Newly introduced points. pointField cutPoints_; - //- Newly introduced edges (are on both surfaces). Reference into - // cutPoints. + //- Newly introduced edges (are on both surfaces). + // Reference into cutPoints. edgeList cutEdges_; - //- From face on surf1 and face on surf2 to intersection point - // (label in cutPoints) - labelPairLookup facePairToVertex_; - //- From face on surf1 and face on surf2 to intersection edge + labelPairEdgeLookup facePairToEdge_; + + //- From face on surf1 and face on surf2 to intersection edgeId // (label in cutEdges) - labelPairLookup facePairToEdge_; + labelPairLookup facePairToEdgeId_; - //- Edges on surf1 that are cut. From edge on surf1 to label in cutPoint - // If multiple cuts:sorted from edge.start to edge.end + //- Edges on surf1 that are cut. + // From edgeId on surf1 to location in cutPoint labelListList surf1EdgeCuts_; - //- Edges on surf2 that are cut. From edge on surf2 to label in cutPoint - // If multiple cuts:sorted from edge.start to edge.end + //- Edges on surf2 that are cut. + // From edgeId on surf2 to location in cutPoint labelListList surf2EdgeCuts_; + //- Temporary storage to manage edge-edge self-intersections. + edgeHashSet edgeEdgeIntersection_; - // Private Member Functions + //- Temporary storage to manage cuts/intersections from the edge ends + Map<label> snappedEnds_; - //- Write point in obj format. - static void writeOBJ(const point& pt, Ostream& os); + //- Temporary storage + EdgeMap<label> edgeToId_; - //- Write points and edges in obj format - static void writeOBJ - ( - const List<point>&, - const List<edge>&, - Ostream& - ); + + // Private Member Functions + + //- Adjust intersection options according to the dictionary entries + void setOptions(const dictionary& dict); //- Transfer contents of List<DynamicList<..>> to List<List<..>> template<class T> @@ -138,9 +186,6 @@ class surfaceIntersection // to new (-1 if element removed) static void removeDuplicates(const labelList& map, labelList& labels); - //- Apply map to elements of a labelList - static void inlineRemap(const labelList& map, labelList& elems); - // Remove all duplicate and degenerate elements. Return unique elements // and map from old to new. static edgeList filterEdges(const edgeList&, labelList& map); @@ -148,30 +193,6 @@ class surfaceIntersection //- Remove all duplicate elements. static labelList filterLabels(const labelList& elems, labelList& map); - //- Do some checks if edge and face (resulting from hit) - // should not be considered. Returns true if can be discarded. - static bool excludeEdgeHit - ( - const triSurface& surf, - const label edgeI, - const label facei, - const scalar tol - ); - - ////- Given edge (eStart - eEnd) and normal direction construct plane - //// and intersect all edges of hitFace with it. - //// Return the edge and coordinate of hit. - //static pointIndexHit faceEdgeIntersection - //( - // const triSurface&, - // const label hitFacei, - // - // const vector& n, - // const point& eStart, - // const point& eEnd - //); - - //- Debugging: Dump intersected edges to stream void writeIntersectedEdges ( @@ -188,18 +209,19 @@ class surfaceIntersection const scalar endTol, const point& p, const edge& e, - const pointField& points + const UList<point>& points ); - //- Update reference between faceA and faceB. Updates facePairToVertex_ - // (first occurrence of face pair) and facePairToEdge_ (second occ.) + //- Update reference between faceA and faceB. + // Updates facePairToEdge_ and facePairToEdgeId_ (on the second hit) void storeIntersection ( - const bool isFirstSurf, + const enum intersectionType cutFrom, const labelList& facesA, const label faceB, - DynamicList<edge>&, - DynamicList<point>& + const UList<point>& allCutPoints, + const label cutPointId, + DynamicList<edge>& allCutEdges ); //- Investigate pHit to whether is case of point hits point, @@ -209,13 +231,12 @@ class surfaceIntersection const triSurface& surf1, const scalarField& surf1PointTol, const triSurface& surf2, - const bool isFirstSurf, + const enum intersectionType cutFrom, const label edgeI, - const scalar tolDim, const pointIndexHit& pHit, - DynamicList<edge>& allCutEdges, DynamicList<point>& allCutPoints, + DynamicList<edge>& allCutEdges, List<DynamicList<label>>& surfEdgeCuts ); @@ -224,17 +245,21 @@ class surfaceIntersection ( const triSurface& surf1, const triSurfaceSearch& querySurf2, - const bool isFirstSurf, - const bool isSelfIntersection, + const enum intersectionType cutFrom, - DynamicList<edge>& allCutEdges, DynamicList<point>& allCutPoints, + DynamicList<edge>& allCutEdges, List<DynamicList<label>>& surfEdgeCuts ); + //- Join disconnected intersection points + void joinDisconnected(DynamicList<edge>& allCutEdges); + public: + // Public Data, Declarations + ClassName("surfaceIntersection"); @@ -243,6 +268,23 @@ public: //- Construct null surfaceIntersection(); + //- Construct from two surfaces. + // Does its own cutting. Has problems with degenerate cuts + surfaceIntersection + ( + const triSurfaceSearch& querySurf1, + const triSurfaceSearch& querySurf2, + const dictionary& dict = dictionary::null + ); + + //- Construct from self-intersections. + // Does its own cutting, but has problems with degenerate cuts + surfaceIntersection + ( + const triSurfaceSearch& querySurf1, + const dictionary& dict = dictionary::null + ); + //- Construct from precalculated intersection information. // Advantage: intersection information is guaranteed to have no // degenerate cuts. @@ -254,36 +296,36 @@ public: const edgeIntersections& intersections2 ); - //- Construct from two surfaces. Does all its own cutting. - // Has problems with degenerate cuts - surfaceIntersection - ( - const triSurfaceSearch& querySurf1, - const triSurfaceSearch& querySurf2 - ); - - //- Special: intersect surface with itself. Used to check for - // self-intersection. - surfaceIntersection(const triSurfaceSearch& querySurf1); - // Member Functions + //- The list of cut points const pointField& cutPoints() const; + //- The list of created edges const edgeList& cutEdges() const; - const labelPairLookup& facePairToVertex() const; - - const labelPairLookup& facePairToEdge() const; + //- Lookup of pairs of faces to created edges + const labelPairLookup& facePairToEdgeId() const; //- Access either surf1EdgeCuts (isFirstSurface = true) or // surf2EdgeCuts - const labelListList& edgeCuts(const bool) const; + const labelListList& edgeCuts(const bool isFirstSurf) const; + //- List of cut points on edges of surface1 const labelListList& surf1EdgeCuts() const; + //- List of cut points on edges of surface2 const labelListList& surf2EdgeCuts() const; + + + //- Geometric merge points (points within mergeDist) prior to + // automatically calling mergeEdges(). + void mergePoints(const scalar mergeDist); + + //- Merge duplicate edges + void mergeEdges(); + }; diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionFuncs.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionFuncs.C index cd3af9da0c10aee2746a7f89600cfd85e6d874c5..d8797736b0b4a405103a00f9b005870e0c377036 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionFuncs.C +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionFuncs.C @@ -24,41 +24,32 @@ License \*---------------------------------------------------------------------------*/ #include "surfaceIntersection.H" +#include "triSurface.H" #include "triSurfaceSearch.H" #include "labelPairHashes.H" #include "OFstream.H" -#include "HashSet.H" -#include "triSurface.H" -#include "pointIndexHit.H" -#include "meshTools.H" -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -void Foam::surfaceIntersection::writeOBJ(const point& pt, Ostream& os) +namespace Foam { - os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << endl; -} - -void Foam::surfaceIntersection::writeOBJ -( - const List<point>& pts, - const List<edge>& edges, - Ostream& os -) +// file-scope +// Write points in obj format +static void writeObjPoints(const UList<point>& pts, Ostream& os) { forAll(pts, i) { - writeOBJ(pts[i], os); - } - forAll(edges, i) - { - const edge& e = edges[i]; - - os << "l " << e.start()+1 << ' ' << e.end()+1 << endl; + const point& pt = pts[i]; + os << "v " << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl; } } +} // End namespace Foam + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + // Get minimum length of all edges connected to point Foam::scalar Foam::surfaceIntersection::minEdgeLen @@ -162,20 +153,6 @@ void Foam::surfaceIntersection::removeDuplicates } -// Remap. -void Foam::surfaceIntersection::inlineRemap -( - const labelList& map, - labelList& elems -) -{ - forAll(elems, elemI) - { - elems[elemI] = map[elems[elemI]]; - } -} - - // Remove all duplicate and degenerate elements. Return unique elements and // map from old to new. Foam::edgeList Foam::surfaceIntersection::filterEdges @@ -265,14 +242,8 @@ void Foam::surfaceIntersection::writeIntersectedEdges // Dump all points (surface followed by cutPoints) const pointField& pts = surf.localPoints(); - forAll(pts, pointi) - { - writeOBJ(pts[pointi], os); - } - forAll(cutPoints(), cutPointi) - { - writeOBJ(cutPoints()[cutPointi], os); - } + writeObjPoints(pts, os); + writeObjPoints(cutPoints(), os); forAll(edgeCutVerts, edgeI) { @@ -284,16 +255,16 @@ void Foam::surfaceIntersection::writeIntersectedEdges // Start of original edge to first extra point os << "l " << e.start()+1 << ' ' - << extraVerts[0] + surf.nPoints() + 1 << endl; + << extraVerts[0] + surf.nPoints() + 1 << nl; for (label i = 1; i < extraVerts.size(); i++) { os << "l " << extraVerts[i-1] + surf.nPoints() + 1 << ' ' - << extraVerts[i] + surf.nPoints() + 1 << endl; + << extraVerts[i] + surf.nPoints() + 1 << nl; } os << "l " << extraVerts.last() + surf.nPoints() + 1 - << ' ' << e.end()+1 << endl; + << ' ' << e.end()+1 << nl; } } } @@ -306,7 +277,7 @@ Foam::label Foam::surfaceIntersection::classify const scalar endTol, const point& p, const edge& e, - const pointField& points + const UList<point>& points ) { if (mag(p - points[e.start()]) < startTol) diff --git a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C index 767b4bb7fa206358f2922217e5762d1ec2236932..c727121a60144f4854e012946b37f35c50500496 100644 --- a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C +++ b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -42,7 +42,30 @@ namespace Foam defineTypeNameAndDebug(surfaceFeatures, 0); const scalar surfaceFeatures::parallelTolerance = sin(degToRad(1.0)); + + +//! \cond fileScope +// Check if the point is on the line +static bool onLine(const Foam::point& p, const linePointRef& line) +{ + const point& a = line.start(); + const point& b = line.end(); + + if + ( + (p.x() < min(a.x(), b.x()) || p.x() > max(a.x(), b.x())) + || (p.y() < min(a.y(), b.y()) || p.y() > max(a.y(), b.y())) + || (p.z() < min(a.z(), b.z()) || p.z() > max(a.z(), b.z())) + ) + { + return false; + } + + return true; } +//! \endcond + +} // End namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // @@ -442,6 +465,181 @@ Foam::surfaceFeatures::labelScalar Foam::surfaceFeatures::walkSegment } +//- Divide into multiple normal bins +// - return REGION if != 2 normals +// - return REGION if 2 normals that make feature angle +// - otherwise return NONE and set normals,bins +// +// This has been relocated from surfaceFeatureExtract and could be cleaned +// up some more. +// +Foam::surfaceFeatures::edgeStatus +Foam::surfaceFeatures::surfaceFeatures::checkFlatRegionEdge +( + const scalar tol, + const scalar includedAngle, + const label edgeI +) const +{ + const triSurface& surf = surf_; + + const edge& e = surf.edges()[edgeI]; + const labelList& eFaces = surf.edgeFaces()[edgeI]; + + // Bin according to normal + + DynamicList<vector> normals(2); + DynamicList<labelList> bins(2); + + forAll(eFaces, eFacei) + { + const vector& n = surf.faceNormals()[eFaces[eFacei]]; + + // Find the normal in normals + label index = -1; + forAll(normals, normalI) + { + if (mag(n & normals[normalI]) > (1-tol)) + { + index = normalI; + break; + } + } + + if (index != -1) + { + bins[index].append(eFacei); + } + else if (normals.size() >= 2) + { + // Would be third normal. Mark as feature. + //Pout<< "** at edge:" << surf.localPoints()[e[0]] + // << surf.localPoints()[e[1]] + // << " have normals:" << normals + // << " and " << n << endl; + return surfaceFeatures::REGION; + } + else + { + normals.append(n); + bins.append(labelList(1, eFacei)); + } + } + + + // Check resulting number of bins + if (bins.size() == 1) + { + // Note: should check here whether they are two sets of faces + // that are planar or indeed 4 faces al coming together at an edge. + //Pout<< "** at edge:" + // << surf.localPoints()[e[0]] + // << surf.localPoints()[e[1]] + // << " have single normal:" << normals[0] + // << endl; + return surfaceFeatures::NONE; + } + else + { + // Two bins. Check if normals make an angle + + //Pout<< "** at edge:" + // << surf.localPoints()[e[0]] + // << surf.localPoints()[e[1]] << nl + // << " normals:" << normals << nl + // << " bins :" << bins << nl + // << endl; + + if (includedAngle >= 0) + { + scalar minCos = Foam::cos(degToRad(180.0 - includedAngle)); + + forAll(eFaces, i) + { + const vector& ni = surf.faceNormals()[eFaces[i]]; + for (label j=i+1; j<eFaces.size(); j++) + { + const vector& nj = surf.faceNormals()[eFaces[j]]; + if (mag(ni & nj) < minCos) + { + //Pout<< "have sharp feature between normal:" << ni + // << " and " << nj << endl; + + // Is feature. Keep as region or convert to + // feature angle? For now keep as region. + return surfaceFeatures::REGION; + } + } + } + } + + // So now we have two normals bins but need to make sure both + // bins have the same regions in it. + + // 1. store + or - region number depending + // on orientation of triangle in bins[0] + const labelList& bin0 = bins[0]; + labelList regionAndNormal(bin0.size()); + forAll(bin0, i) + { + const labelledTri& t = surf.localFaces()[eFaces[bin0[i]]]; + int dir = t.edgeDirection(e); + + if (dir > 0) + { + regionAndNormal[i] = t.region()+1; + } + else if (dir == 0) + { + FatalErrorInFunction + << exit(FatalError); + } + else + { + regionAndNormal[i] = -(t.region()+1); + } + } + + // 2. check against bin1 + const labelList& bin1 = bins[1]; + labelList regionAndNormal1(bin1.size()); + forAll(bin1, i) + { + const labelledTri& t = surf.localFaces()[eFaces[bin1[i]]]; + int dir = t.edgeDirection(e); + + label myRegionAndNormal; + if (dir > 0) + { + myRegionAndNormal = t.region()+1; + } + else + { + myRegionAndNormal = -(t.region()+1); + } + + regionAndNormal1[i] = myRegionAndNormal; + + label index = findIndex(regionAndNormal, -myRegionAndNormal); + if (index == -1) + { + // Not found. + //Pout<< "cannot find region " << myRegionAndNormal + // << " in regions " << regionAndNormal << endl; + + return surfaceFeatures::REGION; + } + } + + // Passed all checks, two normal bins with the same contents. + //Pout<< "regionAndNormal:" << regionAndNormal << endl; + //Pout<< "myRegionAndNormal:" << regionAndNormal1 << endl; + } + + return surfaceFeatures::NONE; +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::surfaceFeatures::surfaceFeatures(const triSurface& surf) @@ -829,24 +1027,141 @@ Foam::labelList Foam::surfaceFeatures::trimFeatures } -void Foam::surfaceFeatures::writeDict(Ostream& writeFile) const +void Foam::surfaceFeatures::excludeBox +( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb +) const +{ + deleteBox(edgeStat, bb, true); +} + + +void Foam::surfaceFeatures::subsetBox +( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb +) const +{ + deleteBox(edgeStat, bb, false); +} + + +void Foam::surfaceFeatures::deleteBox +( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb, + const bool removeInside +) const +{ + const edgeList& surfEdges = surf_.edges(); + const pointField& surfLocalPoints = surf_.localPoints(); + + forAll(edgeStat, edgei) + { + const point eMid = surfEdges[edgei].centre(surfLocalPoints); + + if (removeInside ? bb.contains(eMid) : !bb.contains(eMid)) + { + edgeStat[edgei] = surfaceFeatures::NONE; + } + } +} + + +void Foam::surfaceFeatures::subsetPlane +( + List<edgeStatus>& edgeStat, + const plane& cutPlane +) const { + const edgeList& surfEdges = surf_.edges(); + const pointField& pts = surf_.points(); + const labelList& meshPoints = surf_.meshPoints(); + + forAll(edgeStat, edgei) + { + const edge& e = surfEdges[edgei]; + + const point& p0 = pts[meshPoints[e.start()]]; + const point& p1 = pts[meshPoints[e.end()]]; + const linePointRef line(p0, p1); + + // If edge does not intersect the plane, delete. + scalar intersect = cutPlane.lineIntersect(line); + + point featPoint = intersect * (p1 - p0) + p0; + if (!onLine(featPoint, line)) + { + edgeStat[edgei] = surfaceFeatures::NONE; + } + } +} + + +void Foam::surfaceFeatures::excludeOpen +( + List<edgeStatus>& edgeStat +) const +{ + forAll(edgeStat, edgei) + { + if (surf_.edgeFaces()[edgei].size() == 1) + { + edgeStat[edgei] = surfaceFeatures::NONE; + } + } +} + + +//- Divide into multiple normal bins +// - return REGION if != 2 normals +// - return REGION if 2 normals that make feature angle +// - otherwise return NONE and set normals,bins +void Foam::surfaceFeatures::checkFlatRegionEdge +( + List<edgeStatus>& edgeStat, + const scalar tol, + const scalar includedAngle +) const +{ + forAll(edgeStat, edgei) + { + if (edgeStat[edgei] == surfaceFeatures::REGION) + { + const labelList& eFaces = surf_.edgeFaces()[edgei]; + + if (eFaces.size() > 2 && (eFaces.size() % 2) == 0) + { + edgeStat[edgei] = checkFlatRegionEdge + ( + tol, + includedAngle, + edgei + ); + } + } + } +} + + +void Foam::surfaceFeatures::writeDict(Ostream& os) const +{ dictionary featInfoDict; featInfoDict.add("externalStart", externalStart_); featInfoDict.add("internalStart", internalStart_); featInfoDict.add("featureEdges", featureEdges_); featInfoDict.add("featurePoints", featurePoints_); - featInfoDict.write(writeFile); + featInfoDict.write(os); } void Foam::surfaceFeatures::write(const fileName& fName) const { - OFstream str(fName); - - writeDict(str); + OFstream os(fName); + writeDict(os); } @@ -904,6 +1219,18 @@ void Foam::surfaceFeatures::writeObj(const fileName& prefix) const } +void Foam::surfaceFeatures::writeStats(Ostream& os) const +{ + os << "Feature set:" << nl + << " points : " << this->featurePoints().size() << nl + << " edges : " << this->featureEdges().size() << nl + << " of which" << nl + << " region edges : " << this->nRegionEdges() << nl + << " external edges : " << this->nExternalEdges() << nl + << " internal edges : " << this->nInternalEdges() << endl; +} + + // Get nearest vertex on patch for every point of surf in pointSet. Foam::Map<Foam::label> Foam::surfaceFeatures::nearestSamples ( diff --git a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.H b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.H index 3eb4e6f025fed538e918f68e64017dfeb3f4c9f5..a4a3083f1a254617e6237f4c8ea4a208e02fd301 100644 --- a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.H +++ b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -60,7 +60,9 @@ namespace Foam { // Forward declaration of classes +class plane; class triSurface; +class treeBoundBox; /*---------------------------------------------------------------------------*\ Class surfaceFeatures Declaration @@ -70,12 +72,13 @@ class surfaceFeatures { public: + //- Edge status enum edgeStatus { - NONE, - REGION, - EXTERNAL, - INTERNAL + NONE, //!< Not a classified feature edge + REGION, // + EXTERNAL, //!< "Convex" edge + INTERNAL //!< "Concave" edge }; @@ -169,6 +172,17 @@ private: labelList& featVisited ); + //- Divide into multiple normal bins + // - set REGION if != 2 normals + // - set REGION if 2 normals that make feature angle + // - otherwise set NONE and set normals,bins + edgeStatus checkFlatRegionEdge + ( + const scalar tol, + const scalar includedAngle, + const label edgeI + ) const; + public: ClassName("surfaceFeatures"); @@ -176,12 +190,12 @@ public: // Constructors //- Construct from surface - surfaceFeatures(const triSurface&); + surfaceFeatures(const triSurface& surf); //- Construct from components surfaceFeatures ( - const triSurface&, + const triSurface& surf, const labelList& featurePoints, const labelList& featureEdges, const label externalStart, @@ -194,7 +208,7 @@ public: // geometric criteria surfaceFeatures ( - const triSurface&, + const triSurface& surf, const scalar includedAngle, const scalar minLen = 0, const label minElems = 0, @@ -202,15 +216,15 @@ public: ); //- Construct from dictionary - surfaceFeatures(const triSurface&, const dictionary& dict); + surfaceFeatures(const triSurface& surf, const dictionary& dict); //- Construct from file - surfaceFeatures(const triSurface&, const fileName& fName); + surfaceFeatures(const triSurface& surf, const fileName& fName); //- Construct from pointField and edgeList (edgeMesh) surfaceFeatures ( - const triSurface&, + const triSurface& surf, const pointField& points, const edgeList& edges, const scalar mergeTol = 1e-6, @@ -218,7 +232,7 @@ public: ); //- Construct as copy - surfaceFeatures(const surfaceFeatures&); + surfaceFeatures(const surfaceFeatures& sf); // Member Functions @@ -299,6 +313,50 @@ public: const scalar includedAngle ); + //- Mark edge status inside box as 'NONE' + void excludeBox + ( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb + ) const; + + //- Mark edge status outside box as 'NONE' + void subsetBox + ( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb + ) const; + + //- Mark edge status as 'NONE' for edges inside/outside box. + void deleteBox + ( + List<edgeStatus>& edgeStat, + const treeBoundBox& bb, + const bool removeInside + ) const; + + //- If edge does not intersect the plane, mark as 'NONE' + void subsetPlane + ( + List<edgeStatus>& edgeStat, + const plane& cutPlane + ) const; + + //- Mark edges with a single connected face as 'NONE' + void excludeOpen(List<edgeStatus>& edgeStat) const; + + //- Divide into multiple normal bins + // - set REGION if != 2 normals + // - set REGION if 2 normals that make feature angle + // - otherwise set NONE and set normals,bins + void checkFlatRegionEdge + ( + List<edgeStatus>& edgeStat, + const scalar tol, + const scalar includedAngle + ) const; + + //- From member feature edges to status per edge. List<edgeStatus> toStatus() const; @@ -404,7 +462,7 @@ public: // Write //- Write as dictionary - void writeDict(Ostream&) const; + void writeDict(Ostream& os) const; //- Write as dictionary to file void write(const fileName& fName) const; @@ -413,11 +471,14 @@ public: // feature points) for visualization void writeObj(const fileName& prefix) const; + //- Write some information + void writeStats(Ostream& os) const; + // Member Operators - void operator=(const surfaceFeatures&); + void operator=(const surfaceFeatures& rhs); }; diff --git a/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.C b/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.C index d5e6d4d8e7135ac879f7b9642b6fcc2a23381864..d40c00877671782dcd92cfd5df4c7c9b75769281 100644 --- a/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.C +++ b/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.C @@ -28,6 +28,15 @@ License #include "Time.H" #include "OSspecific.H" +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +const Foam::Enum<Foam::triSurfaceLoader::loadingOption> +Foam::triSurfaceLoader::loadingOptionNames +( + SINGLE_REGION, { "single", "file", "offset", "merge" } +); + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::triSurfaceLoader::triSurfaceLoader(const fileName& directory) @@ -201,24 +210,56 @@ Foam::label Foam::triSurfaceLoader::select(const wordReList& matcher) } -Foam::autoPtr<Foam::triSurface> Foam::triSurfaceLoader::load() const +Foam::autoPtr<Foam::triSurface> Foam::triSurfaceLoader::load +( + const enum loadingOption opt +) const { + autoPtr<triSurface> output; + if (selected_.empty()) { - return autoPtr<triSurface>(); + return output; } else if (selected_.size() == 1) { - return autoPtr<triSurface>(new triSurface(directory_/selected_[0])); + output.set(new triSurface(directory_/selected_[0])); + + triSurface& surf = output(); + + if + ( + opt == loadingOption::SINGLE_REGION + || opt == loadingOption::FILE_REGION + ) + { + for (labelledTri& f : surf) + { + f.region() = 0; + } + + if (surf.patches().size()) + { + surf.patches().setSize(1); + } + else + { + surf.patches().append + ( + geometricSurfacePatch(selected_[0].lessExt(), 0) + ); + } + } + + return output; } + List<labelledTri> faces; pointField points; - label regoff = 0; // region offset - // collect all patches, preserving names. - // This will be horrible for output, but is good if we are relying on - // the names for defining baffles. + Map<label> oldToNew; + HashTable<label> patchNameLookup; DynamicList<geometricSurfacePatch> patches(16*selected_.size()); forAll(selected_, surfi) @@ -227,22 +268,114 @@ Foam::autoPtr<Foam::triSurface> Foam::triSurfaceLoader::load() const List<labelledTri> addfaces(addsurf.xferFaces()); List<point> addpoints(addsurf.xferPoints()); - patches.append(addsurf.patches()); + // Offset the points for all additional surfaces if (surfi) { - const label ptoff = points.size(); // point offset + const label ptoff = points.size(); - forAll(addfaces, facei) + for (labelledTri& f : addfaces) { - labelledTri& f = addfaces[facei]; forAll(f, fi) { f[fi] += ptoff; } - f.region() += regoff; + } + } + + switch (opt) + { + case loadingOption::SINGLE_REGION: + { + for (labelledTri& f : addfaces) + { + f.region() = 0; + } + + if (patches.empty() && !addsurf.patches().empty()) + { + patches.append(addsurf.patches().first()); + } + + break; + } + + case loadingOption::FILE_REGION: + { + for (labelledTri& f : addfaces) + { + f.region() = surfi; + } + + // Use surface name for region + patches.append + ( + geometricSurfacePatch(selected_[surfi].lessExt(), surfi) + ); + + break; + } + + case loadingOption::OFFSET_REGION: + { + // Collect all patches, preserving names. + // This will be horrible for output, but is good if we rely + // on the names for defining baffles. + + // region offset + const label regoff = patches.size(); + patches.append(addsurf.patches()); + + if (surfi) + { + for (labelledTri& f : addfaces) + { + f.region() += regoff; + } + } + break; } + case loadingOption::MERGE_REGION: + { + // Merge by name + geometricSurfacePatchList& addpatches = addsurf.patches(); + + // Build lookup tables with name->id and localId -> mergedId + oldToNew.clear(); + forAll(addpatches, patchi) + { + geometricSurfacePatch& p = addpatches[patchi]; + const word& patchName = p.name(); + + label patchId = patches.size(); + if (patchNameLookup.insert(patchName, patchId)) + { + p.index() = patchId; + patches.append(p); + } + else + { + patchId = patchNameLookup[patchName]; + } + + oldToNew.insert(patchi, patchId); + } + + if (surfi) + { + // Relabel regions accordingly + for (labelledTri& f : addfaces) + { + f.region() = oldToNew[f.region()]; + } + } + break; + } + } + + if (surfi) + { faces.append(addfaces); points.append(addpoints); } @@ -251,11 +384,11 @@ Foam::autoPtr<Foam::triSurface> Foam::triSurfaceLoader::load() const faces.transfer(addfaces); points.transfer(addpoints); } - - regoff += addsurf.patches().size(); } - return autoPtr<triSurface>(new triSurface(faces, patches, points, true)); + output.set(new triSurface(faces, patches, points, true)); + + return output; } diff --git a/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.H b/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.H index aec554ec5285cb2a064ddb757e4942b8a1f7767f..7332026f765d7f6d74dc7ceb78ed6d36b78c845c 100644 --- a/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.H +++ b/src/meshTools/triSurface/triSurfaceLoader/triSurfaceLoader.H @@ -42,6 +42,7 @@ SourceFiles #include "triSurface.H" #include "wordReList.H" +#include "Enum.H" #include "hashedWordList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -59,6 +60,23 @@ class Time; class triSurfaceLoader { +public: + + //- The file loading options for triSurfaceLoader + enum loadingOption + { + SINGLE_REGION, //!< "single" = One region for all files + FILE_REGION, //!< "file" = One region for each file + OFFSET_REGION, //!< "offset" = Offset regions per file + MERGE_REGION //!< "merge" = Merge regions by name + }; + + //- The loading enumeration names + static const Enum<loadingOption> loadingOptionNames; + + +private: + // Private data //- The directory to load from (eg, case/constant/triSurface) @@ -136,7 +154,10 @@ public: label select(const wordReList& matcher); //- Load a single file, or load and combine multiple selected files - autoPtr<triSurface> load() const; + autoPtr<triSurface> load + ( + const enum loadingOption opt = loadingOption::OFFSET_REGION + ) const; }; diff --git a/src/meshTools/triSurface/triSurfaceTools/triSurfaceCloseness.C b/src/meshTools/triSurface/triSurfaceTools/triSurfaceCloseness.C new file mode 100644 index 0000000000000000000000000000000000000000..3925950b73baf989ebe7cf066b7b7a77207fe143 --- /dev/null +++ b/src/meshTools/triSurface/triSurfaceTools/triSurfaceCloseness.C @@ -0,0 +1,360 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "triSurfaceTools.H" + +#include "triSurface.H" +#include "triSurfaceMesh.H" +#include "triSurfaceFields.H" +#include "MeshedSurface.H" +#include "OFstream.H" +#include "unitConversion.H" +#include "meshTools.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +static void drawHitProblem +( + label fI, + const triSurface& surf, + const pointField& start, + const pointField& faceCentres, + const pointField& end, + const List<pointIndexHit>& hitInfo +) +{ + Info<< nl << "# findLineAll did not hit its own face." + << nl << "# fI " << fI + << nl << "# start " << start[fI] + << nl << "# f centre " << faceCentres[fI] + << nl << "# end " << end[fI] + << nl << "# hitInfo " << hitInfo + << endl; + + meshTools::writeOBJ(Info, start[fI]); + meshTools::writeOBJ(Info, faceCentres[fI]); + meshTools::writeOBJ(Info, end[fI]); + + Info<< "l 1 2 3" << endl; + + meshTools::writeOBJ(Info, surf.points()[surf[fI][0]]); + meshTools::writeOBJ(Info, surf.points()[surf[fI][1]]); + meshTools::writeOBJ(Info, surf.points()[surf[fI][2]]); + + Info<< "f 4 5 6" << endl; + + forAll(hitInfo, hI) + { + label hFI = hitInfo[hI].index(); + + meshTools::writeOBJ(Info, surf.points()[surf[hFI][0]]); + meshTools::writeOBJ(Info, surf.points()[surf[hFI][1]]); + meshTools::writeOBJ(Info, surf.points()[surf[hFI][2]]); + + Info<< "f " + << 3*hI + 7 << " " + << 3*hI + 8 << " " + << 3*hI + 9 + << endl; + } +} + +} // End namespace Foam + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::Pair<Foam::tmp<Foam::scalarField>> +Foam::triSurfaceTools::writeCloseness +( + const Time& runTime, + const word& basename, + const triSurface& surf, + const scalar internalAngleTolerance, + const scalar externalAngleTolerance +) +{ + Pair<tmp<scalarField>> tpair + ( + tmp<scalarField>(new scalarField(surf.size(), GREAT)), + tmp<scalarField>(new scalarField(surf.size(), GREAT)) + ); + + Info<< "Extracting internal and external closeness of surface." << endl; + + triSurfaceMesh searchSurf + ( + IOobject + ( + basename + ".closeness", + runTime.constant(), + "triSurface", + runTime, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + surf + ); + + // Prepare start and end points for intersection tests + + const vectorField& normals = searchSurf.faceNormals(); + const scalar span = searchSurf.bounds().mag(); + + const scalar externalToleranceCosAngle = + Foam::cos + ( + degToRad(180 - externalAngleTolerance) + ); + + const scalar internalToleranceCosAngle = + Foam::cos + ( + degToRad(180 - internalAngleTolerance) + ); + + Info<< "externalToleranceCosAngle: " << externalToleranceCosAngle << nl + << "internalToleranceCosAngle: " << internalToleranceCosAngle << endl; + + // Info<< "span " << span << endl; + + const pointField start(searchSurf.faceCentres() - span*normals); + const pointField end(searchSurf.faceCentres() + span*normals); + const pointField& faceCentres = searchSurf.faceCentres(); + + List<List<pointIndexHit>> allHitInfo; + + // Find all intersections (in order) + searchSurf.findLineAll(start, end, allHitInfo); + + scalarField& internalCloseness = tpair[0].ref(); + scalarField& externalCloseness = tpair[1].ref(); + + forAll(allHitInfo, fI) + { + const List<pointIndexHit>& hitInfo = allHitInfo[fI]; + + if (hitInfo.size() < 1) + { + drawHitProblem(fI, surf, start, faceCentres, end, hitInfo); + + // FatalErrorInFunction + // << "findLineAll did not hit its own face." + // << exit(FatalError); + } + else if (hitInfo.size() == 1) + { + if (!hitInfo[0].hit()) + { + // FatalErrorInFunction + // << "findLineAll did not hit any face." + // << exit(FatalError); + } + else if (hitInfo[0].index() != fI) + { + drawHitProblem + ( + fI, + surf, + start, + faceCentres, + end, + hitInfo + ); + + // FatalErrorInFunction + // << "findLineAll did not hit its own face." + // << exit(FatalError); + } + } + else + { + label ownHitI = -1; + + forAll(hitInfo, hI) + { + // Find the hit on the triangle that launched the ray + + if (hitInfo[hI].index() == fI) + { + ownHitI = hI; + + break; + } + } + + if (ownHitI < 0) + { + drawHitProblem + ( + fI, + surf, + start, + faceCentres, + end, + hitInfo + ); + + // FatalErrorInFunction + // << "findLineAll did not hit its own face." + // << exit(FatalError); + } + else if (ownHitI == 0) + { + // There are no internal hits, the first hit is the + // closest external hit + + if + ( + ( + normals[fI] + & normals[hitInfo[ownHitI + 1].index()] + ) + < externalToleranceCosAngle + ) + { + externalCloseness[fI] = + mag + ( + faceCentres[fI] + - hitInfo[ownHitI + 1].hitPoint() + ); + } + } + else if (ownHitI == hitInfo.size() - 1) + { + // There are no external hits, the last but one hit is + // the closest internal hit + + if + ( + ( + normals[fI] + & normals[hitInfo[ownHitI - 1].index()] + ) + < internalToleranceCosAngle + ) + { + internalCloseness[fI] = + mag + ( + faceCentres[fI] + - hitInfo[ownHitI - 1].hitPoint() + ); + } + } + else + { + if + ( + ( + normals[fI] + & normals[hitInfo[ownHitI + 1].index()] + ) + < externalToleranceCosAngle + ) + { + externalCloseness[fI] = + mag + ( + faceCentres[fI] + - hitInfo[ownHitI + 1].hitPoint() + ); + } + + if + ( + ( + normals[fI] + & normals[hitInfo[ownHitI - 1].index()] + ) + < internalToleranceCosAngle + ) + { + internalCloseness[fI] = + mag + ( + faceCentres[fI] + - hitInfo[ownHitI - 1].hitPoint() + ); + } + } + } + } + + // write as 'internalCloseness' + { + triSurfaceScalarField outputField + ( + IOobject + ( + basename + ".internalCloseness", + runTime.constant(), + "triSurface", + runTime, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + surf, + dimLength, + scalarField() + ); + + outputField.swap(internalCloseness); + outputField.write(); + outputField.swap(internalCloseness); + } + + // write as 'externalCloseness' + { + triSurfaceScalarField outputField + ( + IOobject + ( + basename + ".externalCloseness", + runTime.constant(), + "triSurface", + runTime, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + surf, + dimLength, + scalarField() + ); + + outputField.swap(externalCloseness); + outputField.write(); + outputField.swap(externalCloseness); + } + + return tpair; +} + + +// ************************************************************************* // diff --git a/src/meshTools/triSurface/triSurfaceTools/triSurfaceCurvature.C b/src/meshTools/triSurface/triSurfaceTools/triSurfaceCurvature.C new file mode 100644 index 0000000000000000000000000000000000000000..2518b095164eb5ce909e82503aeee76c6d0ecf60 --- /dev/null +++ b/src/meshTools/triSurface/triSurfaceTools/triSurfaceCurvature.C @@ -0,0 +1,386 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can 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 "triSurfaceTools.H" + +#include "triSurface.H" +#include "MeshedSurfaces.H" +#include "triSurfaceFields.H" +#include "OFstream.H" +#include "plane.H" +#include "tensor2D.H" +#include "symmTensor2D.H" +#include "scalarMatrices.H" +#include "transform.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::scalar Foam::triSurfaceTools::vertexNormalWeight +( + const triFace& f, + const label pI, + const vector& fN, + const UList<point>& points +) +{ + label index = findIndex(f, pI); + + if (index == -1) + { + FatalErrorInFunction + << "Point not in face" << abort(FatalError); + } + + const vector e1 = points[f[index]] - points[f[f.fcIndex(index)]]; + const vector e2 = points[f[index]] - points[f[f.rcIndex(index)]]; + + return mag(fN)/(magSqr(e1)*magSqr(e2) + VSMALL); +} + + +Foam::tmp<Foam::vectorField> +Foam::triSurfaceTools::vertexNormals(const triSurface& surf) +{ + // Weighted average of normals of faces attached to the vertex + // Weight = fA / (mag(e0)^2 * mag(e1)^2); + + Info<< "Calculating vertex normals" << endl; + + tmp<vectorField> tfld(new vectorField(surf.nPoints(), Zero)); + vectorField& pointNormals = tfld.ref(); + + const pointField& points = surf.points(); + const labelListList& pointFaces = surf.pointFaces(); + const labelList& meshPoints = surf.meshPoints(); + + forAll(pointFaces, pI) + { + const labelList& pFaces = pointFaces[pI]; + + forAll(pFaces, fI) + { + const label facei = pFaces[fI]; + const triFace& f = surf[facei]; + + vector fN = f.normal(points); + + const scalar weight = vertexNormalWeight + ( + f, + meshPoints[pI], + fN, + points + ); + + pointNormals[pI] += weight*fN; + } + + pointNormals[pI] /= mag(pointNormals[pI]) + VSMALL; + } + + return tfld; +} + + +Foam::tmp<Foam::triadField> +Foam::triSurfaceTools::vertexTriads +( + const triSurface& surf, + const vectorField& pointNormals +) +{ + const pointField& points = surf.points(); + const Map<label>& meshPointMap = surf.meshPointMap(); + + tmp<triadField> tfld(new triadField(points.size())); + triadField& pointTriads = tfld.ref(); + + forAll(points, pI) + { + const point& pt = points[pI]; + const vector& normal = pointNormals[meshPointMap[pI]]; + + if (mag(normal) < SMALL) + { + pointTriads[meshPointMap[pI]] = triad::unset; + continue; + } + + plane p(pt, normal); + + // Pick arbitrary point in plane + vector dir1 = pt - p.somePointInPlane(1e-3); + dir1 /= mag(dir1); + + vector dir2 = dir1 ^ normal; + dir2 /= mag(dir2); + + pointTriads[meshPointMap[pI]] = triad(dir1, dir2, normal); + } + + return tfld; +} + + +Foam::tmp<Foam::scalarField> +Foam::triSurfaceTools::curvatures +( + const triSurface& surf, + const vectorField& pointNormals, + const triadField& pointTriads +) +{ + Info<< "Calculating face curvature" << endl; + + const pointField& points = surf.points(); + const labelList& meshPoints = surf.meshPoints(); + const Map<label>& meshPointMap = surf.meshPointMap(); + + List<symmTensor2D> pointFundamentalTensors + ( + points.size(), + symmTensor2D::zero + ); + + scalarList accumulatedWeights(points.size(), 0.0); + + forAll(surf, fI) + { + const triFace& f = surf[fI]; + const edgeList fEdges = f.edges(); + + // Calculate the edge vectors and the normal differences + vectorField edgeVectors(f.size(), Zero); + vectorField normalDifferences(f.size(), Zero); + + forAll(fEdges, feI) + { + const edge& e = fEdges[feI]; + + edgeVectors[feI] = e.vec(points); + normalDifferences[feI] = + pointNormals[meshPointMap[e[0]]] + - pointNormals[meshPointMap[e[1]]]; + } + + // Set up a local coordinate system for the face + const vector& e0 = edgeVectors[0]; + const vector eN = f.normal(points); + const vector e1 = (e0 ^ eN); + + if (magSqr(eN) < ROOTVSMALL) + { + continue; + } + + triad faceCoordSys(e0, e1, eN); + faceCoordSys.normalize(); + + // Construct the matrix to solve + scalarSymmetricSquareMatrix T(3, 0); + scalarDiagonalMatrix Z(3, 0); + + // Least Squares + for (label i = 0; i < 3; ++i) + { + scalar x = edgeVectors[i] & faceCoordSys[0]; + scalar y = edgeVectors[i] & faceCoordSys[1]; + + T(0, 0) += sqr(x); + T(1, 0) += x*y; + T(1, 1) += sqr(x) + sqr(y); + T(2, 1) += x*y; + T(2, 2) += sqr(y); + + scalar dndx = normalDifferences[i] & faceCoordSys[0]; + scalar dndy = normalDifferences[i] & faceCoordSys[1]; + + Z[0] += dndx*x; + Z[1] += dndx*y + dndy*x; + Z[2] += dndy*y; + } + + // Perform Cholesky decomposition and back substitution. + // Decomposed matrix is in T and solution is in Z. + LUsolve(T, Z); + symmTensor2D secondFundamentalTensor(Z[0], Z[1], Z[2]); + + // Loop over the face points adding the contribution of the face + // curvature to the points. + forAll(f, fpI) + { + const label patchPointIndex = meshPointMap[f[fpI]]; + + const triad& ptCoordSys = pointTriads[patchPointIndex]; + + if (!ptCoordSys.set()) + { + continue; + } + + // Rotate faceCoordSys to ptCoordSys + tensor rotTensor = rotationTensor(ptCoordSys[2], faceCoordSys[2]); + triad rotatedFaceCoordSys = rotTensor & tensor(faceCoordSys); + + // Project the face curvature onto the point plane + + vector2D cmp1 + ( + ptCoordSys[0] & rotatedFaceCoordSys[0], + ptCoordSys[0] & rotatedFaceCoordSys[1] + ); + vector2D cmp2 + ( + ptCoordSys[1] & rotatedFaceCoordSys[0], + ptCoordSys[1] & rotatedFaceCoordSys[1] + ); + + tensor2D projTensor + ( + cmp1, + cmp2 + ); + + symmTensor2D projectedFundamentalTensor + ( + projTensor.x() & (secondFundamentalTensor & projTensor.x()), + projTensor.x() & (secondFundamentalTensor & projTensor.y()), + projTensor.y() & (secondFundamentalTensor & projTensor.y()) + ); + + // Calculate weight + // TODO: Voronoi area weighting + scalar weight = triSurfaceTools::vertexNormalWeight + ( + f, + meshPoints[patchPointIndex], + f.normal(points), + points + ); + + // Sum contribution of face to this point + pointFundamentalTensors[patchPointIndex] += + weight*projectedFundamentalTensor; + + accumulatedWeights[patchPointIndex] += weight; + } + + if (false) + { + Info<< "Points = " << points[f[0]] << " " + << points[f[1]] << " " + << points[f[2]] << endl; + Info<< "edgeVecs = " << edgeVectors[0] << " " + << edgeVectors[1] << " " + << edgeVectors[2] << endl; + Info<< "normDiff = " << normalDifferences[0] << " " + << normalDifferences[1] << " " + << normalDifferences[2] << endl; + Info<< "faceCoordSys = " << faceCoordSys << endl; + Info<< "T = " << T << endl; + Info<< "Z = " << Z << endl; + } + } + + tmp<scalarField> tfld(new scalarField(points.size(), Zero)); + scalarField& curvatureAtPoints = tfld.ref(); + + forAll(curvatureAtPoints, pI) + { + pointFundamentalTensors[pI] /= (accumulatedWeights[pI] + SMALL); + + vector2D principalCurvatures = eigenValues(pointFundamentalTensors[pI]); + + //scalar curvature = + // (principalCurvatures[0] + principalCurvatures[1])/2; + scalar curvature = max + ( + mag(principalCurvatures[0]), + mag(principalCurvatures[1]) + ); + //scalar curvature = principalCurvatures[0]*principalCurvatures[1]; + + curvatureAtPoints[meshPoints[pI]] = curvature; + } + + return tfld; +} + + +Foam::tmp<Foam::scalarField> +Foam::triSurfaceTools::curvatures +( + const triSurface& surf +) +{ + tmp<vectorField> norms = triSurfaceTools::vertexNormals(surf); + tmp<triadField> triads = triSurfaceTools::vertexTriads(surf, norms()); + + tmp<scalarField> curv = curvatures(surf, norms(), triads()); + norms.clear(); + triads.clear(); + + return curv; +} + + +Foam::tmp<Foam::scalarField> +Foam::triSurfaceTools::writeCurvature +( + const Time& runTime, + const word& basename, + const triSurface& surf +) +{ + Info<< "Extracting curvature of surface at the points." << endl; + + tmp<scalarField> tfld = triSurfaceTools::curvatures(surf); + scalarField& curv = tfld.ref(); + + triSurfacePointScalarField outputField + ( + IOobject + ( + basename + ".curvature", + runTime.constant(), + "triSurface", + runTime, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + surf, + dimLength, + scalarField() + ); + + outputField.swap(curv); + outputField.write(); + outputField.swap(curv); + + return tfld; +} + + +// ************************************************************************* // diff --git a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C index aec02f8e06bb0795ee86aee91a31cea04ac5fa3a..d1da45a001c11739382289a15d395b2b1d19b6e1 100644 --- a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C +++ b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.C @@ -33,7 +33,6 @@ License #include "plane.H" #include "geompack.H" - // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // const Foam::label Foam::triSurfaceTools::ANYEDGE = -1; @@ -1376,54 +1375,6 @@ Foam::labelList Foam::triSurfaceTools::getVertexVertices } -//// Order vertices consistent with face -//void Foam::triSurfaceTools::orderVertices -//( -// const labelledTri& f, -// const label v1, -// const label v2, -// label& vA, -// label& vB -//) -//{ -// // Order v1, v2 in anticlockwise order. -// bool reverse = false; -// -// if (f[0] == v1) -// { -// if (f[1] != v2) -// { -// reverse = true; -// } -// } -// else if (f[1] == v1) -// { -// if (f[2] != v2) -// { -// reverse = true; -// } -// } -// else -// { -// if (f[0] != v2) -// { -// reverse = true; -// } -// } -// -// if (reverse) -// { -// vA = v2; -// vB = v1; -// } -// else -// { -// vA = v1; -// vB = v2; -// } -//} - - // Get the other face using edgeI Foam::label Foam::triSurfaceTools::otherFace ( @@ -2633,7 +2584,6 @@ void Foam::triSurfaceTools::calcInterpolationWeights { const point& samplePt = samplePts[i]; - FixedList<label, 3>& verts = allVerts[i]; FixedList<scalar, 3>& weights = allWeights[i]; diff --git a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.H b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.H index d90c862dc972b298baece9ee24484dbb6e432bef..28960823dbf5119d54d9fa3fdc443dccd060ce8f 100644 --- a/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.H +++ b/src/meshTools/triSurface/triSurfaceTools/triSurfaceTools.H @@ -27,8 +27,21 @@ Class Description A collection of tools for triSurface. +Note + The curvature calculation is an implementation of the algorithm from: + \verbatim + "Estimating Curvatures and their Derivatives on Triangle Meshes" + by S. Rusinkiewicz + 3DPVT'04 Proceedings of the 3D Data Processing, + Visualization, and Transmission, 2nd International Symposium + Pages 486-493 + http://gfx.cs.princeton.edu/pubs/_2004_ECA/curvpaper.pdf + \endverbatim + SourceFiles triSurfaceTools.C + triSurfaceCloseness.C + triSurfaceCurvature.C \*---------------------------------------------------------------------------*/ @@ -37,9 +50,12 @@ SourceFiles #include "boolList.H" #include "pointField.H" +#include "vectorField.H" +#include "triadFieldFwd.H" #include "DynamicList.H" #include "HashSet.H" #include "FixedList.H" +#include "Pair.H" #include "vector2D.H" #include "triPointRef.H" #include "surfaceLocation.H" @@ -56,6 +72,7 @@ class polyBoundaryMesh; class plane; class triSurface; class face; +class Time; template<class Face> class MeshedSurface; @@ -280,16 +297,6 @@ public: const edge& e ); - ////- Order vertices consistent with face - //static void orderVertices - //( - // const labelledTri& f, - // const label v1, - // const label v2, - // label& vA, - // label& vB - //); - //- Get face connected to edge not facei static label otherFace ( @@ -490,12 +497,16 @@ public: // Triangulation and interpolation + //- Do unconstrained Delaunay of points. Returns triSurface with 3D + // points with z=0. All triangles in region 0. + static triSurface delaunay2D(const List<vector2D>&); + //- Calculate linear interpolation weights for point (guaranteed to be // inside triangle) static void calcInterpolationWeights ( - const triPointRef&, - const point&, + const triPointRef& tri, + const point& p, FixedList<scalar, 3>& weights ); @@ -510,13 +521,86 @@ public: ( const triSurface& s, const pointField& samplePts, - List<FixedList<label, 3>>& verts, - List<FixedList<scalar, 3>>& weights + List<FixedList<label, 3>>& allVerts, + List<FixedList<scalar, 3>>& allWeights ); - //- Do unconstrained Delaunay of points. Returns triSurface with 3D - // points with z=0. All triangles in region 0. - static triSurface delaunay2D(const List<vector2D>&); + + // Curvature + + //- Weighting for normals of faces attached to vertex + static scalar vertexNormalWeight + ( + const triFace& f, + const label pI, + const vector& fN, + const UList<point>& points + ); + + //- Weighted average of normals of attached faces + static tmp<vectorField> vertexNormals(const triSurface& surf); + + //- Local coordinate-system for each point normal + static tmp<triadField> vertexTriads + ( + const triSurface& surf, + const vectorField& pointNormals + ); + + //- Surface curvatures at the vertex points + static tmp<scalarField> curvatures + ( + const triSurface& surf, + const vectorField& pointNormals, + const triadField& pointTriads + ); + + //- Surface curvatures at the vertex points + static tmp<scalarField> curvatures + ( + const triSurface& surf + ); + + //- Write surface curvature at the vertex points and return the field + static tmp<scalarField> writeCurvature + ( + const Time& runTime, + const word& basename, + const triSurface& surf + ); + + + // Closeness + + //- Check and write internal/external closeness fields + static Pair<tmp<scalarField>> writeCloseness + ( + const Time& runTime, + const word& basename, + const triSurface& surf, + const scalar internalAngleTolerance = 45, + const scalar externalAngleTolerance = 10 + ); + + + // Feature Proximity + + //- Calculate feature proximity + scalarField featureProximity + ( + const triSurface& surf, + const scalar searchDistance + ); + + //- Check and write internal/external closeness fields + static void writeFeatureProximity + ( + const Time& runTime, + const word& basename, + const triSurface& surf, + const bool writeVTK, + const scalar searchDistance + ); // Surface checking functionality diff --git a/src/parallel/decompose/decompose/fvFieldDecomposer.C b/src/parallel/decompose/decompose/fvFieldDecomposer.C index 310d0ce1fec4c7cd7c4e85de059546cc3a9d1dd7..8ff6ee3e06e41b6cc36b85b3e8665ee4657ff310 100644 --- a/src/parallel/decompose/decompose/fvFieldDecomposer.C +++ b/src/parallel/decompose/decompose/fvFieldDecomposer.C @@ -107,7 +107,7 @@ processorSurfacePatchFieldDecomposer weights_[i].setSize(1); addressing_[i][0] = mag(addressingSlice[i]) - 1; - weights_[i][0] = sign(addressingSlice[i]); + weights_[i][0] = 1; } } @@ -126,59 +126,75 @@ Foam::fvFieldDecomposer::fvFieldDecomposer faceAddressing_(faceAddressing), cellAddressing_(cellAddressing), boundaryAddressing_(boundaryAddressing), - patchFieldDecomposerPtrs_ - ( - procMesh_.boundary().size(), - static_cast<patchFieldDecomposer*>(nullptr) - ), - processorVolPatchFieldDecomposerPtrs_ - ( - procMesh_.boundary().size(), - static_cast<processorVolPatchFieldDecomposer*>(nullptr) - ), - processorSurfacePatchFieldDecomposerPtrs_ - ( - procMesh_.boundary().size(), - static_cast<processorSurfacePatchFieldDecomposer*>(nullptr) - ) + patchFieldDecomposerPtrs_(procMesh_.boundary().size()), + processorVolPatchFieldDecomposerPtrs_(procMesh_.boundary().size()), + processorSurfacePatchFieldDecomposerPtrs_(procMesh_.boundary().size()), + faceSign_(procMesh_.boundary().size()) { forAll(boundaryAddressing_, patchi) { + const fvPatch& fvp = procMesh_.boundary()[patchi]; + if ( boundaryAddressing_[patchi] >= 0 && !isA<processorLduInterface>(procMesh.boundary()[patchi]) ) { - patchFieldDecomposerPtrs_[patchi] = new patchFieldDecomposer + patchFieldDecomposerPtrs_.set ( - procMesh_.boundary()[patchi].patchSlice(faceAddressing_), - completeMesh_.boundaryMesh() - [ - boundaryAddressing_[patchi] - ].start() + patchi, + new patchFieldDecomposer + ( + fvp.patchSlice(faceAddressing_), + completeMesh_.boundaryMesh() + [ + boundaryAddressing_[patchi] + ].start() + ) ); } else { - processorVolPatchFieldDecomposerPtrs_[patchi] = + processorVolPatchFieldDecomposerPtrs_.set + ( + patchi, new processorVolPatchFieldDecomposer ( completeMesh_, - procMesh_.boundary()[patchi].patchSlice(faceAddressing_) - ); + fvp.patchSlice(faceAddressing_) + ) + ); - processorSurfacePatchFieldDecomposerPtrs_[patchi] = + processorSurfacePatchFieldDecomposerPtrs_.set + ( + patchi, new processorSurfacePatchFieldDecomposer ( static_cast<const labelUList&> ( - procMesh_.boundary()[patchi].patchSlice + fvp.patchSlice ( faceAddressing_ ) ) - ); + ) + ); + + faceSign_.set + ( + patchi, + new scalarField(fvp.patchSlice(faceAddressing_).size()) + ); + + { + const SubList<label> fa = fvp.patchSlice(faceAddressing_); + scalarField& s = faceSign_[patchi]; + forAll(s, i) + { + s[i] = sign(fa[i]); + } + } } } } @@ -187,30 +203,7 @@ Foam::fvFieldDecomposer::fvFieldDecomposer // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::fvFieldDecomposer::~fvFieldDecomposer() -{ - forAll(patchFieldDecomposerPtrs_, patchi) - { - if (patchFieldDecomposerPtrs_[patchi]) - { - delete patchFieldDecomposerPtrs_[patchi]; - } - } +{} - forAll(processorVolPatchFieldDecomposerPtrs_, patchi) - { - if (processorVolPatchFieldDecomposerPtrs_[patchi]) - { - delete processorVolPatchFieldDecomposerPtrs_[patchi]; - } - } - - forAll(processorSurfacePatchFieldDecomposerPtrs_, patchi) - { - if (processorSurfacePatchFieldDecomposerPtrs_[patchi]) - { - delete processorSurfacePatchFieldDecomposerPtrs_[patchi]; - } - } -} // ************************************************************************* // diff --git a/src/parallel/decompose/decompose/fvFieldDecomposer.H b/src/parallel/decompose/decompose/fvFieldDecomposer.H index c6953b37a4aa056e5d415b70ce6e6771da4edc63..b4193edc97adced5649596aba0bad02edc5cbe1d 100644 --- a/src/parallel/decompose/decompose/fvFieldDecomposer.H +++ b/src/parallel/decompose/decompose/fvFieldDecomposer.H @@ -215,15 +215,18 @@ private: const labelList& boundaryAddressing_; //- List of patch field decomposers - List<patchFieldDecomposer*> patchFieldDecomposerPtrs_; + PtrList<patchFieldDecomposer> patchFieldDecomposerPtrs_; - List<processorVolPatchFieldDecomposer*> + PtrList<processorVolPatchFieldDecomposer> processorVolPatchFieldDecomposerPtrs_; - List<processorSurfacePatchFieldDecomposer*> + PtrList<processorSurfacePatchFieldDecomposer> processorSurfacePatchFieldDecomposerPtrs_; + PtrList<scalarField> faceSign_; + + // Private Member Functions //- Disallow default bitwise copy construct diff --git a/src/parallel/decompose/decompose/fvFieldDecomposerDecomposeFields.C b/src/parallel/decompose/decompose/fvFieldDecomposerDecomposeFields.C index a5e87d2097ca5f247eb11f7a1d4d5189a1b307b7..cffd1a6e1e239ca899475eee1b67a6f9c9addbc1 100644 --- a/src/parallel/decompose/decompose/fvFieldDecomposerDecomposeFields.C +++ b/src/parallel/decompose/decompose/fvFieldDecomposerDecomposeFields.C @@ -40,6 +40,8 @@ Foam::fvFieldDecomposer::decomposeField const bool allowUnknownPatchFields ) const { + typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType; + // 1. Create the complete field with dummy patch fields PtrList<fvPatchField<Type>> patchFields(boundaryAddressing_.size()); @@ -58,9 +60,9 @@ Foam::fvFieldDecomposer::decomposeField } // Create the field for the processor - tmp<GeometricField<Type, fvPatchField, volMesh>> tresF + tmp<VolFieldType> tresF ( - new GeometricField<Type, fvPatchField, volMesh> + new VolFieldType ( IOobject ( @@ -76,18 +78,18 @@ Foam::fvFieldDecomposer::decomposeField patchFields ) ); - GeometricField<Type, fvPatchField, volMesh>& resF = tresF.ref(); + VolFieldType& resF = tresF.ref(); + resF.oriented() = field().oriented(); // 2. Change the fvPatchFields to the correct type using a mapper // constructor (with reference to the now correct internal field) - typename GeometricField<Type, fvPatchField, volMesh>:: - Boundary& bf = resF.boundaryFieldRef(); + typename VolFieldType::Boundary& bf = resF.boundaryFieldRef(); forAll(bf, patchi) { - if (patchFieldDecomposerPtrs_[patchi]) + if (patchFieldDecomposerPtrs_.set(patchi)) { bf.set ( @@ -97,7 +99,7 @@ Foam::fvFieldDecomposer::decomposeField field.boundaryField()[boundaryAddressing_[patchi]], procMesh_.boundary()[patchi], resF(), - *patchFieldDecomposerPtrs_[patchi] + patchFieldDecomposerPtrs_[patchi] ) ); } @@ -113,7 +115,7 @@ Foam::fvFieldDecomposer::decomposeField Field<Type> ( field.primitiveField(), - *processorVolPatchFieldDecomposerPtrs_[patchi] + processorVolPatchFieldDecomposerPtrs_[patchi] ) ) ); @@ -130,7 +132,7 @@ Foam::fvFieldDecomposer::decomposeField Field<Type> ( field.primitiveField(), - *processorVolPatchFieldDecomposerPtrs_[patchi] + processorVolPatchFieldDecomposerPtrs_[patchi] ) ) ); @@ -166,6 +168,8 @@ Foam::fvFieldDecomposer::decomposeField const GeometricField<Type, fvsPatchField, surfaceMesh>& field ) const { + typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType; + labelList mapAddr ( labelList::subList @@ -200,7 +204,7 @@ Foam::fvFieldDecomposer::decomposeField forAll(field.boundaryField(), patchi) { - const Field<Type> & p = field.boundaryField()[patchi]; + const Field<Type>& p = field.boundaryField()[patchi]; const label patchStart = field.mesh().boundaryMesh()[patchi].start(); @@ -228,9 +232,9 @@ Foam::fvFieldDecomposer::decomposeField ); } - tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> tresF + tmp<SurfaceFieldType> tresF ( - new GeometricField<Type, fvsPatchField, surfaceMesh> + new SurfaceFieldType ( IOobject ( @@ -246,18 +250,17 @@ Foam::fvFieldDecomposer::decomposeField patchFields ) ); - GeometricField<Type, fvsPatchField, surfaceMesh>& resF = tresF.ref(); - + SurfaceFieldType& resF = tresF.ref(); + resF.oriented() = field().oriented(); // 2. Change the fvsPatchFields to the correct type using a mapper // constructor (with reference to the now correct internal field) - typename GeometricField<Type, fvsPatchField, surfaceMesh>:: - Boundary& bf = resF.boundaryFieldRef(); + typename SurfaceFieldType::Boundary& bf = resF.boundaryFieldRef(); forAll(boundaryAddressing_, patchi) { - if (patchFieldDecomposerPtrs_[patchi]) + if (patchFieldDecomposerPtrs_.set(patchi)) { bf.set ( @@ -267,7 +270,7 @@ Foam::fvFieldDecomposer::decomposeField field.boundaryField()[boundaryAddressing_[patchi]], procMesh_.boundary()[patchi], resF(), - *patchFieldDecomposerPtrs_[patchi] + patchFieldDecomposerPtrs_[patchi] ) ); } @@ -283,10 +286,15 @@ Foam::fvFieldDecomposer::decomposeField Field<Type> ( allFaceField, - *processorSurfacePatchFieldDecomposerPtrs_[patchi] + processorSurfacePatchFieldDecomposerPtrs_[patchi] ) ) ); + + if (resF.oriented()()) + { + bf[patchi] *= faceSign_[patchi]; + } } else if (isA<processorFvPatch>(procMesh_.boundary()[patchi])) { @@ -300,10 +308,15 @@ Foam::fvFieldDecomposer::decomposeField Field<Type> ( allFaceField, - *processorSurfacePatchFieldDecomposerPtrs_[patchi] + processorSurfacePatchFieldDecomposerPtrs_[patchi] ) ) ); + + if (resF.oriented()()) + { + bf[patchi] *= faceSign_[patchi]; + } } else { diff --git a/src/parallel/decompose/decompositionMethods/decompositionConstraints/decompositionConstraint/decompositionConstraint.C b/src/parallel/decompose/decompositionMethods/decompositionConstraints/decompositionConstraint/decompositionConstraint.C index 3f6e7f60027950ea023816e7586c6e0e5cc8a17f..8ede3a729438b2323dbf1fd4498a727e9e7341e2 100644 --- a/src/parallel/decompose/decompositionMethods/decompositionConstraints/decompositionConstraint/decompositionConstraint.C +++ b/src/parallel/decompose/decompositionMethods/decompositionConstraints/decompositionConstraint/decompositionConstraint.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -29,8 +29,8 @@ License namespace Foam { -defineTypeNameAndDebug(decompositionConstraint, 1); -defineRunTimeSelectionTable(decompositionConstraint, dictionary); + defineTypeNameAndDebug(decompositionConstraint, 1); + defineRunTimeSelectionTable(decompositionConstraint, dictionary); } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -41,7 +41,6 @@ Foam::decompositionConstraint::decompositionConstraint const word& type ) : - //coeffDict_(constraintsDict.subOrEmptyDict(type + "Coeffs")) coeffDict_(constraintsDict) {} diff --git a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C index a416d0dc30440f1ef93cae66d639eb4ea5301a72..6f741b09598b7415b01320cd0ad58b351f2d06dd 100644 --- a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C +++ b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,7 +34,7 @@ Foam::geomDecomp::geomDecomp ) : decompositionMethod(decompositionDict), - geomDecomDict_(decompositionDict.subDict(derivedType + "Coeffs")), + geomDecomDict_(decompositionDict.optionalSubDict(derivedType + "Coeffs")), n_(geomDecomDict_.lookup("n")), delta_(readScalar(geomDecomDict_.lookup("delta"))), rotDelta_(I) diff --git a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C index 8af9083bc1fb1765a7d5c6ed8f52d2c306200e6b..0c42d691f6c4e33b8f8f9385aeb582d10861aae8 100644 --- a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C +++ b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,8 +53,10 @@ Foam::manualDecomp::manualDecomp(const dictionary& decompositionDict) decompositionMethod(decompositionDict), decompDataFile_ ( - decompositionDict.subDict(word(decompositionDict.lookup("method")) - + "Coeffs").lookup("dataFile") + decompositionDict.optionalSubDict + ( + word(decompositionDict.lookup("method")) + "Coeffs" + ).lookup("dataFile") ) {} diff --git a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C index 219365e0e4392facb3aa34699070dd31198d19f2..3ab449d3d3ffae022c3622b8cfdfb64b54f436ea 100644 --- a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C +++ b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -243,7 +243,7 @@ void Foam::multiLevelDecomp::decompose // Retrieve original level0 dictionary and modify number of domains dictionary::const_iterator iter = - decompositionDict_.subDict(typeName + "Coeffs").begin(); + decompositionDict_.optionalSubDict(typeName + "Coeffs").begin(); dictionary myDict = iter().dict(); myDict.set("numberOfSubdomains", nTotal); @@ -330,7 +330,7 @@ void Foam::multiLevelDecomp::decompose Foam::multiLevelDecomp::multiLevelDecomp(const dictionary& decompositionDict) : decompositionMethod(decompositionDict), - methodsDict_(decompositionDict_.subDict(typeName + "Coeffs")) + methodsDict_(decompositionDict_.optionalSubDict(typeName + "Coeffs")) { methods_.setSize(methodsDict_.size()); label i = 0; diff --git a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C index e0e27a516630ff51ed7609b645716398dfe1c1b1..a91b743a18e3532a7fac5c5d6bdc7574e07064cc 100644 --- a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C +++ b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -331,7 +331,7 @@ Foam::labelList Foam::simpleGeomDecomp::decompose // Add slaves for (int slave=1; slave<Pstream::nProcs(); slave++) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointField nbrPoints(fromSlave); SubField<point> ( @@ -348,7 +348,7 @@ Foam::labelList Foam::simpleGeomDecomp::decompose // Send back for (int slave=1; slave<Pstream::nProcs(); slave++) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << SubField<label> ( finalDecomp, @@ -365,12 +365,20 @@ Foam::labelList Foam::simpleGeomDecomp::decompose { // Send my points { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster<< points; } // Receive back decomposition - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); labelList finalDecomp(fromMaster); return finalDecomp; @@ -408,7 +416,7 @@ Foam::labelList Foam::simpleGeomDecomp::decompose // Add slaves for (int slave=1; slave<Pstream::nProcs(); slave++) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); pointField nbrPoints(fromSlave); scalarField nbrWeights(fromSlave); SubField<point> @@ -432,7 +440,7 @@ Foam::labelList Foam::simpleGeomDecomp::decompose // Send back for (int slave=1; slave<Pstream::nProcs(); slave++) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << SubField<label> ( finalDecomp, @@ -449,12 +457,20 @@ Foam::labelList Foam::simpleGeomDecomp::decompose { // Send my points { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster<< points << weights; } // Receive back decomposition - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); labelList finalDecomp(fromMaster); return finalDecomp; diff --git a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C index dd6f9e9236c3ca496fcccbe0543aa36569f8277a..2d9dbeff3fa6829be5bc8217877ba40c0f44f2d0 100644 --- a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C +++ b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,7 @@ namespace Foam Foam::structuredDecomp::structuredDecomp(const dictionary& decompositionDict) : decompositionMethod(decompositionDict), - methodDict_(decompositionDict_.subDict(typeName + "Coeffs")), + methodDict_(decompositionDict_.optionalSubDict(typeName + "Coeffs")), patches_(methodDict_.lookup("patches")) { methodDict_.set("numberOfSubdomains", nDomains()); diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C index c459252e1cd1f3ae8d2a8004f48147b2e84233d3..d0035de8d8b1e337e22000a97b4cabcc5568e023 100644 --- a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C +++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -316,7 +316,8 @@ void Foam::ptscotchDecomp::check(const int retVal, const char* str) // if (Pstream::myProcNo() >= 1 && nSendCells[Pstream::myProcNo()-1] > 0) // { // // Receive cells from previous processor -// IPstream fromPrevProc(Pstream::blocking, Pstream::myProcNo()-1); +// IPstream fromPrevProc(Pstream::commsTypes::blocking, +// Pstream::myProcNo()-1); // // Field<int> prevXadj(fromPrevProc); // Field<int> prevAdjncy(fromPrevProc); @@ -346,7 +347,8 @@ void Foam::ptscotchDecomp::check(const int retVal, const char* str) // if (nSendCells[Pstream::myProcNo()] > 0) // { // // Send cells to next processor -// OPstream toNextProc(Pstream::blocking, Pstream::myProcNo()+1); +// OPstream toNextProc(Pstream::commsTypes::blocking, +// Pstream::myProcNo()+1); // // label nCells = nSendCells[Pstream::myProcNo()]; // label startCell = xadj.size()-1 - nCells; @@ -395,7 +397,8 @@ void Foam::ptscotchDecomp::check(const int retVal, const char* str) // // Receive back from next processor if I sent something // if (nSendCells[Pstream::myProcNo()] > 0) // { -// IPstream fromNextProc(Pstream::blocking, Pstream::myProcNo()+1); +// IPstream fromNextProc(Pstream::commsTypes::blocking, +// Pstream::myProcNo()+1); // // List<label> nextFinalDecomp(fromNextProc); // @@ -414,7 +417,8 @@ void Foam::ptscotchDecomp::check(const int retVal, const char* str) // // Send back to previous processor. // if (Pstream::myProcNo() >= 1 && nSendCells[Pstream::myProcNo()-1] > 0) // { -// OPstream toPrevProc(Pstream::blocking, Pstream::myProcNo()-1); +// OPstream toPrevProc(Pstream::commsTypes::blocking, +// Pstream::myProcNo()-1); // // label nToPrevious = nSendCells[Pstream::myProcNo()-1]; // diff --git a/src/parallel/decompose/scotchDecomp/scotchDecomp.C b/src/parallel/decompose/scotchDecomp/scotchDecomp.C index 8090e0f9943b889dd82e003a4a12e0268de0586d..45af4fa1e64b1661ca0989899f632e8e608c4f1c 100644 --- a/src/parallel/decompose/scotchDecomp/scotchDecomp.C +++ b/src/parallel/decompose/scotchDecomp/scotchDecomp.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -225,7 +225,7 @@ Foam::label Foam::scotchDecomp::decompose for (int slave=1; slave<Pstream::nProcs(); slave++) { - IPstream fromSlave(Pstream::scheduled, slave); + IPstream fromSlave(Pstream::commsTypes::scheduled, slave); Field<label> nbrAdjncy(fromSlave); Field<label> nbrXadj(fromSlave); scalarField nbrWeights(fromSlave); @@ -260,7 +260,7 @@ Foam::label Foam::scotchDecomp::decompose // Send allFinalDecomp back for (int slave=1; slave<Pstream::nProcs(); slave++) { - OPstream toSlave(Pstream::scheduled, slave); + OPstream toSlave(Pstream::commsTypes::scheduled, slave); toSlave << SubField<label> ( allFinalDecomp, @@ -279,13 +279,21 @@ Foam::label Foam::scotchDecomp::decompose { // Send my part of the graph (already in global numbering) { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); toMaster<< adjncy << SubField<label>(xadj, xadj.size()-1) << cWeights; } // Receive back decomposition - IPstream fromMaster(Pstream::scheduled, Pstream::masterNo()); + IPstream fromMaster + ( + Pstream::commsTypes::scheduled, + Pstream::masterNo() + ); fromMaster >> finalDecomp; } } diff --git a/src/parallel/distributed/Make/options b/src/parallel/distributed/Make/options index 6753a2306c31eebb65871b16a17b2300eaee376c..232875c50486aaceed6ab63b15c44be659323175 100644 --- a/src/parallel/distributed/Make/options +++ b/src/parallel/distributed/Make/options @@ -1,10 +1,8 @@ EXE_INC = \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude LIB_LIBS = \ - -ltriSurface \ - -ldecompositionMethods \ - -lmeshTools + -lmeshTools \ + -ldecompositionMethods diff --git a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C index 0f18e2a0b0f93394767720909dcaf0e8c3bdd592..ae6f0b8c7ab31f26b6da7d09a1a2f5a13e1e85f1 100644 --- a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C +++ b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C @@ -100,9 +100,9 @@ bool Foam::distributedTriSurfaceMesh::isLocal const point& end ) { - forAll(myBbs, bbI) + forAll(myBbs, bbi) { - if (myBbs[bbI].contains(start) && myBbs[bbI].contains(end)) + if (myBbs[bbi].contains(start) && myBbs[bbi].contains(end)) { return true; } @@ -113,7 +113,7 @@ bool Foam::distributedTriSurfaceMesh::isLocal //void Foam::distributedTriSurfaceMesh::splitSegment //( -// const label segmentI, +// const label segmenti, // const point& start, // const point& end, // const treeBoundBox& bb, @@ -135,8 +135,8 @@ bool Foam::distributedTriSurfaceMesh::isLocal // { // // segment from start to clippedStart passes // // through proc. -// sendMap[procI].append(allSegments.size()); -// allSegmentMap.append(segmentI); +// sendMap[proci].append(allSegments.size()); +// allSegmentMap.append(segmenti); // allSegments.append(segment(start, clipPt0)); // } // } @@ -147,8 +147,8 @@ bool Foam::distributedTriSurfaceMesh::isLocal // // if (clipped) // { -// sendMap[procI].append(allSegments.size()); -// allSegmentMap.append(segmentI); +// sendMap[proci].append(allSegments.size()); +// allSegmentMap.append(segmenti); // allSegments.append(segment(clipPt0, end)); // } // } @@ -164,8 +164,8 @@ bool Foam::distributedTriSurfaceMesh::isLocal // if (clippedEnd) // { // // middle part of segment passes through proc. -// sendMap[procI].append(allSegments.size()); -// allSegmentMap.append(segmentI); +// sendMap[proci].append(allSegments.size()); +// allSegmentMap.append(segmenti); // allSegments.append(segment(clipPt0, clipPt1)); // } // } @@ -175,7 +175,7 @@ bool Foam::distributedTriSurfaceMesh::isLocal void Foam::distributedTriSurfaceMesh::distributeSegment ( - const label segmentI, + const label segmenti, const point& start, const point& end, @@ -194,16 +194,16 @@ void Foam::distributedTriSurfaceMesh::distributeSegment // 2. If fully inside one other processor, then only need to send // to that one processor even if it intersects another. Rare occurrence // but cheap to test. - forAll(procBb_, procI) + forAll(procBb_, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - const List<treeBoundBox>& bbs = procBb_[procI]; + const List<treeBoundBox>& bbs = procBb_[proci]; if (isLocal(bbs, start, end)) { - sendMap[procI].append(allSegments.size()); - allSegmentMap.append(segmentI); + sendMap[proci].append(allSegments.size()); + allSegmentMap.append(segmenti); allSegments.append(segment(start, end)); return; } @@ -213,13 +213,13 @@ void Foam::distributedTriSurfaceMesh::distributeSegment // 3. If not contained in single processor send to all intersecting // processors. - forAll(procBb_, procI) + forAll(procBb_, proci) { - const List<treeBoundBox>& bbs = procBb_[procI]; + const List<treeBoundBox>& bbs = procBb_[proci]; - forAll(bbs, bbI) + forAll(bbs, bbi) { - const treeBoundBox& bb = bbs[bbI]; + const treeBoundBox& bb = bbs[bbi]; // Scheme a: any processor that intersects the segment gets // the segment. @@ -229,8 +229,8 @@ void Foam::distributedTriSurfaceMesh::distributeSegment if (bb.intersects(start, end, clipPt)) { - sendMap[procI].append(allSegments.size()); - allSegmentMap.append(segmentI); + sendMap[proci].append(allSegments.size()); + allSegmentMap.append(segmenti); allSegments.append(segment(start, end)); } @@ -239,14 +239,14 @@ void Foam::distributedTriSurfaceMesh::distributeSegment // truncation errors. //splitSegment //( - // segmentI, + // segmenti, // start, // end, // bb, // // allSegments, // allSegmentMap, - // sendMap[procI] + // sendMap[proci] //); } } @@ -280,13 +280,13 @@ Foam::distributedTriSurfaceMesh::distributeSegments // Per processor indices into allSegments to send List<DynamicList<label>> dynSendMap(Pstream::nProcs()); - forAll(start, segmentI) + forAll(start, segmenti) { distributeSegment ( - segmentI, - start[segmentI], - end[segmentI], + segmenti, + start[segmenti], + end[segmenti], dynAllSegments, dynAllSegmentMap, @@ -296,10 +296,10 @@ Foam::distributedTriSurfaceMesh::distributeSegments // Convert dynamicList to labelList sendMap.setSize(Pstream::nProcs()); - forAll(sendMap, procI) + forAll(sendMap, proci) { - dynSendMap[procI].shrink(); - sendMap[procI].transfer(dynSendMap[procI]); + dynSendMap[proci].shrink(); + sendMap[proci].transfer(dynSendMap[proci]); } allSegments.transfer(dynAllSegments.shrink()); @@ -307,12 +307,12 @@ Foam::distributedTriSurfaceMesh::distributeSegments } - // Send over how many I need to receive. + // Send over how many i need to receive. labelListList sendSizes(Pstream::nProcs()); sendSizes[Pstream::myProcNo()].setSize(Pstream::nProcs()); - forAll(sendMap, procI) + forAll(sendMap, proci) { - sendSizes[Pstream::myProcNo()][procI] = sendMap[procI].size(); + sendSizes[Pstream::myProcNo()][proci] = sendMap[proci].size(); } Pstream::gatherList(sendSizes); Pstream::scatterList(sendSizes); @@ -327,18 +327,18 @@ Foam::distributedTriSurfaceMesh::distributeSegments sendMap[Pstream::myProcNo()].size() ); - label segmentI = constructMap[Pstream::myProcNo()].size(); - forAll(constructMap, procI) + label segmenti = constructMap[Pstream::myProcNo()].size(); + forAll(constructMap, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - // What I need to receive is what other processor is sending to me. - label nRecv = sendSizes[procI][Pstream::myProcNo()]; - constructMap[procI].setSize(nRecv); + // What i need to receive is what other processor is sending to me. + label nRecv = sendSizes[proci][Pstream::myProcNo()]; + constructMap[proci].setSize(nRecv); for (label i = 0; i < nRecv; i++) { - constructMap[procI][i] = segmentI++; + constructMap[proci][i] = segmenti++; } } } @@ -347,7 +347,7 @@ Foam::distributedTriSurfaceMesh::distributeSegments ( new mapDistribute ( - segmentI, // size after construction + segmenti, // size after construction sendMap.xfer(), constructMap.xfer() ) @@ -458,7 +458,7 @@ void Foam::distributedTriSurfaceMesh::findLine map.distribute(allSegments); - // Do tests I need to do + // Do tests i need to do // ~~~~~~~~~~~~~~~~~~~~~ // Intersections @@ -506,8 +506,8 @@ void Foam::distributedTriSurfaceMesh::findLine forAll(intersections, i) { const pointIndexHit& allInfo = intersections[i]; - label segmentI = allSegmentMap[i]; - pointIndexHit& hitInfo = info[segmentI]; + label segmenti = allSegmentMap[i]; + pointIndexHit& hitInfo = info[segmenti]; if (allInfo.hit()) { @@ -521,8 +521,8 @@ void Foam::distributedTriSurfaceMesh::findLine // Nearest intersection if ( - magSqr(allInfo.hitPoint()-start[segmentI]) - < magSqr(hitInfo.hitPoint()-start[segmentI]) + magSqr(allInfo.hitPoint()-start[segmenti]) + < magSqr(hitInfo.hitPoint()-start[segmenti]) ) { hitInfo = allInfo; @@ -563,17 +563,17 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries { if (info[i].hit()) { - label procI = triIndexer.whichProcID(info[i].index()); - nSend[procI]++; + label proci = triIndexer.whichProcID(info[i].index()); + nSend[proci]++; } } // 2. Size sendMap labelListList sendMap(Pstream::nProcs()); - forAll(nSend, procI) + forAll(nSend, proci) { - sendMap[procI].setSize(nSend[procI]); - nSend[procI] = 0; + sendMap[proci].setSize(nSend[proci]); + nSend[proci] = 0; } // 3. Fill sendMap @@ -581,9 +581,9 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries { if (info[i].hit()) { - label procI = triIndexer.whichProcID(info[i].index()); - triangleIndex[i] = triIndexer.toLocal(procI, info[i].index()); - sendMap[procI][nSend[procI]++] = i; + label proci = triIndexer.whichProcID(info[i].index()); + triangleIndex[i] = triIndexer.toLocal(proci, info[i].index()); + sendMap[proci][nSend[proci]++] = i; } else { @@ -592,14 +592,14 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries } - // Send over how many I need to receive + // Send over how many i need to receive // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ labelListList sendSizes(Pstream::nProcs()); sendSizes[Pstream::myProcNo()].setSize(Pstream::nProcs()); - forAll(sendMap, procI) + forAll(sendMap, proci) { - sendSizes[Pstream::myProcNo()][procI] = sendMap[procI].size(); + sendSizes[Pstream::myProcNo()][proci] = sendMap[proci].size(); } Pstream::gatherList(sendSizes); Pstream::scatterList(sendSizes); @@ -616,18 +616,18 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries sendMap[Pstream::myProcNo()].size() ); - label segmentI = constructMap[Pstream::myProcNo()].size(); - forAll(constructMap, procI) + label segmenti = constructMap[Pstream::myProcNo()].size(); + forAll(constructMap, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - // What I need to receive is what other processor is sending to me. - label nRecv = sendSizes[procI][Pstream::myProcNo()]; - constructMap[procI].setSize(nRecv); + // What i need to receive is what other processor is sending to me. + label nRecv = sendSizes[proci][Pstream::myProcNo()]; + constructMap[proci].setSize(nRecv); for (label i = 0; i < nRecv; i++) { - constructMap[procI][i] = segmentI++; + constructMap[proci][i] = segmenti++; } } } @@ -640,7 +640,7 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries ( new mapDistribute ( - segmentI, // size after construction + segmenti, // size after construction sendMap.xfer(), constructMap.xfer() ) @@ -668,15 +668,15 @@ Foam::label Foam::distributedTriSurfaceMesh::calcOverlappingProcs overlaps = false; label nOverlaps = 0; - forAll(procBb_, procI) + forAll(procBb_, proci) { - const List<treeBoundBox>& bbs = procBb_[procI]; + const List<treeBoundBox>& bbs = procBb_[proci]; - forAll(bbs, bbI) + forAll(bbs, bbi) { - if (bbs[bbI].overlaps(centre, radiusSqr)) + if (bbs[bbi].overlaps(centre, radiusSqr)) { - overlaps[procI] = true; + overlaps[proci] = true; nOverlaps++; break; } @@ -717,34 +717,34 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries // Work array - whether processor bb overlaps the bounding sphere. boolList procBbOverlaps(Pstream::nProcs()); - forAll(centres, centreI) + forAll(centres, centrei) { // Find the processor this sample+radius overlaps. calcOverlappingProcs ( - centres[centreI], - radiusSqr[centreI], + centres[centrei], + radiusSqr[centrei], procBbOverlaps ); - forAll(procBbOverlaps, procI) + forAll(procBbOverlaps, proci) { - if (procI != Pstream::myProcNo() && procBbOverlaps[procI]) + if (proci != Pstream::myProcNo() && procBbOverlaps[proci]) { - dynSendMap[procI].append(dynAllCentres.size()); - dynAllSegmentMap.append(centreI); - dynAllCentres.append(centres[centreI]); - dynAllRadiusSqr.append(radiusSqr[centreI]); + dynSendMap[proci].append(dynAllCentres.size()); + dynAllSegmentMap.append(centrei); + dynAllCentres.append(centres[centrei]); + dynAllRadiusSqr.append(radiusSqr[centrei]); } } } // Convert dynamicList to labelList sendMap.setSize(Pstream::nProcs()); - forAll(sendMap, procI) + forAll(sendMap, proci) { - dynSendMap[procI].shrink(); - sendMap[procI].transfer(dynSendMap[procI]); + dynSendMap[proci].shrink(); + sendMap[proci].transfer(dynSendMap[proci]); } allCentres.transfer(dynAllCentres.shrink()); @@ -753,12 +753,12 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries } - // Send over how many I need to receive. + // Send over how many i need to receive. labelListList sendSizes(Pstream::nProcs()); sendSizes[Pstream::myProcNo()].setSize(Pstream::nProcs()); - forAll(sendMap, procI) + forAll(sendMap, proci) { - sendSizes[Pstream::myProcNo()][procI] = sendMap[procI].size(); + sendSizes[Pstream::myProcNo()][proci] = sendMap[proci].size(); } Pstream::gatherList(sendSizes); Pstream::scatterList(sendSizes); @@ -773,18 +773,18 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries sendMap[Pstream::myProcNo()].size() ); - label segmentI = constructMap[Pstream::myProcNo()].size(); - forAll(constructMap, procI) + label segmenti = constructMap[Pstream::myProcNo()].size(); + forAll(constructMap, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - // What I need to receive is what other processor is sending to me. - label nRecv = sendSizes[procI][Pstream::myProcNo()]; - constructMap[procI].setSize(nRecv); + // What i need to receive is what other processor is sending to me. + label nRecv = sendSizes[proci][Pstream::myProcNo()]; + constructMap[proci].setSize(nRecv); for (label i = 0; i < nRecv; i++) { - constructMap[procI][i] = segmentI++; + constructMap[proci][i] = segmenti++; } } } @@ -793,7 +793,7 @@ Foam::distributedTriSurfaceMesh::calcLocalQueries ( new mapDistribute ( - segmentI, // size after construction + segmenti, // size after construction sendMap.xfer(), constructMap.xfer() ) @@ -878,9 +878,9 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs // Do decomposition according to triangle centre pointField triCentres(s.size()); - forAll(s, triI) + forAll(s, trii) { - triCentres[triI] = s[triI].centre(s.points()); + triCentres[trii] = s[trii].centre(s.points()); } @@ -893,24 +893,24 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs // Initialise to inverted box List<List<treeBoundBox>> bbs(Pstream::nProcs()); - forAll(bbs, procI) + forAll(bbs, proci) { - bbs[procI].setSize(1, treeBoundBox(boundBox::invertedBox)); + bbs[proci].setSize(1, treeBoundBox(boundBox::invertedBox)); } - forAll(s, triI) + forAll(s, trii) { - const triSurface::FaceType& f = s[triI]; + const triSurface::FaceType& f = s[trii]; - treeBoundBox& bb = bbs[distribution[triI]][0]; + treeBoundBox& bb = bbs[distribution[trii]][0]; bb.add(s.points(), f); } // Now combine for all processors and convert to correct format. - forAll(bbs, procI) + forAll(bbs, proci) { - Pstream::listCombineGather(bbs[procI], plusEqOp<boundBox>()); - Pstream::listCombineScatter(bbs[procI]); + Pstream::listCombineGather(bbs[proci], plusEqOp<boundBox>()); + Pstream::listCombineScatter(bbs[proci]); } return bbs; @@ -930,9 +930,9 @@ bool Foam::distributedTriSurfaceMesh::overlaps triBb.add(p1); triBb.add(p2); - forAll(bbs, bbI) + forAll(bbs, bbi) { - const treeBoundBox& bb = bbs[bbI]; + const treeBoundBox& bb = bbs[bbi]; // Exact test of triangle intersecting bb @@ -977,32 +977,32 @@ void Foam::distributedTriSurfaceMesh::subsetMeshMap oldToNewPoints.setSize(s.points().size()); oldToNewPoints = -1; { - label faceI = 0; - label pointI = 0; + label facei = 0; + label pointi = 0; forAll(include, oldFacei) { if (include[oldFacei]) { // Store new faces compact - newToOldFaces[faceI++] = oldFacei; + newToOldFaces[facei++] = oldFacei; // Renumber labels for face const triSurface::FaceType& f = s[oldFacei]; forAll(f, fp) { - label oldPointI = f[fp]; + label oldPointi = f[fp]; - if (oldToNewPoints[oldPointI] == -1) + if (oldToNewPoints[oldPointi] == -1) { - oldToNewPoints[oldPointI] = pointI; - newToOldPoints[pointI++] = oldPointI; + oldToNewPoints[oldPointi] = pointi; + newToOldPoints[pointi++] = oldPointi; } } } } - newToOldPoints.setSize(pointI); + newToOldPoints.setSize(pointi); } } @@ -1100,7 +1100,7 @@ Foam::triSurface Foam::distributedTriSurfaceMesh::subsetMesh newToOldPoints.setSize(s.points().size()); labelList oldToNewPoints(s.points().size(), -1); { - label pointI = 0; + label pointi = 0; forAll(include, oldFacei) { @@ -1111,17 +1111,17 @@ Foam::triSurface Foam::distributedTriSurfaceMesh::subsetMesh forAll(f, fp) { - label oldPointI = f[fp]; + label oldPointi = f[fp]; - if (oldToNewPoints[oldPointI] == -1) + if (oldToNewPoints[oldPointi] == -1) { - oldToNewPoints[oldPointI] = pointI; - newToOldPoints[pointI++] = oldPointI; + oldToNewPoints[oldPointi] = pointi; + newToOldPoints[pointi++] = oldPointi; } } } } - newToOldPoints.setSize(pointI); + newToOldPoints.setSize(pointi); } return subsetMesh @@ -1196,24 +1196,24 @@ void Foam::distributedTriSurfaceMesh::merge // Add all unmatched points // ~~~~~~~~~~~~~~~~~~~~~~~~ - label allPointI = nOldAllPoints; - forAll(pointConstructMap, pointI) + label allPointi = nOldAllPoints; + forAll(pointConstructMap, pointi) { - if (pointConstructMap[pointI] == -1) + if (pointConstructMap[pointi] == -1) { - pointConstructMap[pointI] = allPointI++; + pointConstructMap[pointi] = allPointi++; } } - if (allPointI > nOldAllPoints) + if (allPointi > nOldAllPoints) { - allPoints.setSize(allPointI); + allPoints.setSize(allPointi); - forAll(pointConstructMap, pointI) + forAll(pointConstructMap, pointi) { - if (pointConstructMap[pointI] >= nOldAllPoints) + if (pointConstructMap[pointi] >= nOldAllPoints) { - allPoints[pointConstructMap[pointI]] = subPoints[pointI]; + allPoints[pointConstructMap[pointi]] = subPoints[pointi]; } } } @@ -1227,14 +1227,14 @@ void Foam::distributedTriSurfaceMesh::merge // Add all unmatched triangles // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - label allTriI = allTris.size(); - allTris.setSize(allTriI + subTris.size()); + label allTrii = allTris.size(); + allTris.setSize(allTrii + subTris.size()); faceConstructMap.setSize(subTris.size()); - forAll(subTris, triI) + forAll(subTris, trii) { - const labelledTri& subTri = subTris[triI]; + const labelledTri& subTri = subTris[trii]; // Get triangle in new numbering labelledTri mappedTri @@ -1272,24 +1272,24 @@ void Foam::distributedTriSurfaceMesh::merge if (i == -1) { // Add - faceConstructMap[triI] = allTriI; - allTris[allTriI] = mappedTri; - allTriI++; + faceConstructMap[trii] = allTrii; + allTris[allTrii] = mappedTri; + allTrii++; } else { - faceConstructMap[triI] = i; + faceConstructMap[trii] = i; } } else { // Add - faceConstructMap[triI] = allTriI; - allTris[allTriI] = mappedTri; - allTriI++; + faceConstructMap[trii] = allTrii; + allTris[allTrii] = mappedTri; + allTrii++; } } - allTris.setSize(allTriI); + allTris.setSize(allTrii); } @@ -1333,10 +1333,10 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh Pstream::scatterList(nTris); Info<< endl<< "\tproc\ttris\tbb" << endl; - forAll(nTris, procI) + forAll(nTris, proci) { - Info<< '\t' << procI << '\t' << nTris[procI] - << '\t' << procBb_[procI] << endl; + Info<< '\t' << proci << '\t' << nTris[proci] + << '\t' << procBb_[proci] << endl; } Info<< endl; } @@ -1345,7 +1345,6 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh(const IOobject& io) : - //triSurfaceMesh(io), triSurfaceMesh ( IOobject @@ -1357,7 +1356,8 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh(const IOobject& io) io.readOpt(), io.writeOpt(), io.registerObject() - ) + ), + false ), dict_ ( @@ -1389,10 +1389,10 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh(const IOobject& io) Pstream::scatterList(nTris); Info<< endl<< "\tproc\ttris\tbb" << endl; - forAll(nTris, procI) + forAll(nTris, proci) { - Info<< '\t' << procI << '\t' << nTris[procI] - << '\t' << procBb_[procI] << endl; + Info<< '\t' << proci << '\t' << nTris[proci] + << '\t' << procBb_[proci] << endl; } Info<< endl; } @@ -1405,7 +1405,6 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh const dictionary& dict ) : - //triSurfaceMesh(io, dict), triSurfaceMesh ( IOobject @@ -1418,7 +1417,8 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh io.writeOpt(), io.registerObject() ), - dict + dict, + false ), dict_ ( @@ -1450,10 +1450,10 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh Pstream::scatterList(nTris); Info<< endl<< "\tproc\ttris\tbb" << endl; - forAll(nTris, procI) + forAll(nTris, proci) { - Info<< '\t' << procI << '\t' << nTris[procI] - << '\t' << procBb_[procI] << endl; + Info<< '\t' << proci << '\t' << nTris[proci] + << '\t' << procBb_[proci] << endl; } Info<< endl; } @@ -1619,23 +1619,23 @@ void Foam::distributedTriSurfaceMesh::findNearest { if (allInfo[i].hit()) { - label pointI = allSegmentMap[i]; + label pointi = allSegmentMap[i]; - if (!info[pointI].hit()) + if (!info[pointi].hit()) { // No intersection yet so take this one - info[pointI] = allInfo[i]; + info[pointi] = allInfo[i]; } else { // Nearest intersection if ( - magSqr(allInfo[i].hitPoint()-samples[pointI]) - < magSqr(info[pointI].hitPoint()-samples[pointI]) + magSqr(allInfo[i].hitPoint()-samples[pointi]) + < magSqr(info[pointi].hitPoint()-samples[pointi]) ) { - info[pointI] = allInfo[i]; + info[pointi] = allInfo[i]; } } } @@ -1719,35 +1719,35 @@ void Foam::distributedTriSurfaceMesh::findLineAll labelList pointMap(start.size()); pointField e0(start.size()); pointField e1(start.size()); - label compactI = 0; + label compacti = 0; info.setSize(hitInfo.size()); - forAll(hitInfo, pointI) + forAll(hitInfo, pointi) { - if (hitInfo[pointI].hit()) + if (hitInfo[pointi].hit()) { - info[pointI].setSize(1); - info[pointI][0] = hitInfo[pointI]; + info[pointi].setSize(1); + info[pointi][0] = hitInfo[pointi]; - point pt = hitInfo[pointI].hitPoint() + smallVec[pointI]; + point pt = hitInfo[pointi].hitPoint() + smallVec[pointi]; - if (((pt-start[pointI])&dirVec[pointI]) <= magSqrDirVec[pointI]) + if (((pt-start[pointi])&dirVec[pointi]) <= magSqrDirVec[pointi]) { - e0[compactI] = pt; - e1[compactI] = end[pointI]; - pointMap[compactI] = pointI; - compactI++; + e0[compacti] = pt; + e1[compacti] = end[pointi]; + pointMap[compacti] = pointi; + compacti++; } } else { - info[pointI].clear(); + info[pointi].clear(); } } - e0.setSize(compactI); - e1.setSize(compactI); - pointMap.setSize(compactI); + e0.setSize(compacti); + e1.setSize(compacti); + pointMap.setSize(compacti); label iter = 0; @@ -1763,38 +1763,38 @@ void Foam::distributedTriSurfaceMesh::findLineAll // Extract - label compactI = 0; + label compacti = 0; forAll(hitInfo, i) { if (hitInfo[i].hit()) { - label pointI = pointMap[i]; + label pointi = pointMap[i]; - label sz = info[pointI].size(); - info[pointI].setSize(sz+1); - info[pointI][sz] = hitInfo[i]; + label sz = info[pointi].size(); + info[pointi].setSize(sz+1); + info[pointi][sz] = hitInfo[i]; - point pt = hitInfo[i].hitPoint() + smallVec[pointI]; + point pt = hitInfo[i].hitPoint() + smallVec[pointi]; // Check current coordinate along ray - scalar d = ((pt-start[pointI])&dirVec[pointI]); + scalar d = ((pt-start[pointi])&dirVec[pointi]); // Note check for d>0. Very occasionally the octree will find // an intersection to the left of the ray due to tolerances. - if (d > 0 && d <= magSqrDirVec[pointI]) + if (d > 0 && d <= magSqrDirVec[pointi]) { - e0[compactI] = pt; - e1[compactI] = end[pointI]; - pointMap[compactI] = pointI; - compactI++; + e0[compacti] = pt; + e1[compacti] = end[pointi]; + pointMap[compacti] = pointi; + compacti++; } } } // Trim - e0.setSize(compactI); - e1.setSize(compactI); - pointMap.setSize(compactI); + e0.setSize(compacti); + e1.setSize(compacti); + pointMap.setSize(compacti); iter++; @@ -1862,8 +1862,8 @@ void Foam::distributedTriSurfaceMesh::getRegion forAll(triangleIndex, i) { - label triI = triangleIndex[i]; - region[i] = s[triI].region(); + label trii = triangleIndex[i]; + region[i] = s[trii].region(); } @@ -1911,8 +1911,8 @@ void Foam::distributedTriSurfaceMesh::getNormal forAll(triangleIndex, i) { - label triI = triangleIndex[i]; - normal[i] = s[triI].normal(s.points()); + label trii = triangleIndex[i]; + normal[i] = s[trii].normal(s.points()); normal[i] /= mag(normal[i]) + VSMALL; } @@ -1966,8 +1966,8 @@ void Foam::distributedTriSurfaceMesh::getField forAll(triangleIndex, i) { - label triI = triangleIndex[i]; - values[i] = fld[triI]; + label trii = triangleIndex[i]; + values[i] = fld[trii]; } @@ -2016,16 +2016,16 @@ Foam::triSurface Foam::distributedTriSurfaceMesh::overlappingSurface bbsX[i].max() = mid + halfSpan; } - forAll(s, triI) + forAll(s, trii) { - const labelledTri& f = s[triI]; + const labelledTri& f = s[trii]; const point& p0 = s.points()[f[0]]; const point& p1 = s.points()[f[1]]; const point& p2 = s.points()[f[2]]; if (overlaps(bbsX, p0, p1, p2)) { - includedFace[triI] = true; + includedFace[trii] = true; } } @@ -2096,9 +2096,9 @@ void Foam::distributedTriSurfaceMesh::distribute InfoInFunction << "before distribution:" << endl << "\tproc\ttris" << endl; - forAll(nTris, procI) + forAll(nTris, proci) { - Info<< '\t' << procI << '\t' << nTris[procI] << endl; + Info<< '\t' << proci << '\t' << nTris[proci] << endl; } Info<< endl; } @@ -2110,21 +2110,21 @@ void Foam::distributedTriSurfaceMesh::distribute labelListList faceSendMap(Pstream::nProcs()); labelListList pointSendMap(Pstream::nProcs()); - forAll(procBb_, procI) + forAll(procBb_, proci) { overlappingSurface ( *this, - procBb_[procI], - pointSendMap[procI], - faceSendMap[procI] + procBb_[proci], + pointSendMap[proci], + faceSendMap[proci] ); if (debug) { - //Pout<< "Overlapping with proc " << procI - // << " faces:" << faceSendMap[procI].size() - // << " points:" << pointSendMap[procI].size() << endl << endl; + //Pout<< "Overlapping with proc " << proci + // << " faces:" << faceSendMap[proci].size() + // << " points:" << pointSendMap[proci].size() << endl << endl; } } @@ -2137,13 +2137,13 @@ void Foam::distributedTriSurfaceMesh::distribute boolList includedFace(s.size(), true); - forAll(faceSendMap, procI) + forAll(faceSendMap, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - forAll(faceSendMap[procI], i) + forAll(faceSendMap[proci], i) { - includedFace[faceSendMap[procI][i]] = false; + includedFace[faceSendMap[proci][i]] = false; } } } @@ -2166,14 +2166,14 @@ void Foam::distributedTriSurfaceMesh::distribute } - // Send over how many faces/points I need to receive + // Send over how many faces/points i need to receive // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ labelListList faceSendSizes(Pstream::nProcs()); faceSendSizes[Pstream::myProcNo()].setSize(Pstream::nProcs()); - forAll(faceSendMap, procI) + forAll(faceSendMap, proci) { - faceSendSizes[Pstream::myProcNo()][procI] = faceSendMap[procI].size(); + faceSendSizes[Pstream::myProcNo()][proci] = faceSendMap[proci].size(); } Pstream::gatherList(faceSendSizes); Pstream::scatterList(faceSendSizes); @@ -2226,13 +2226,13 @@ void Foam::distributedTriSurfaceMesh::distribute PstreamBuffers pBufs(Pstream::defaultCommsType); - forAll(faceSendSizes, procI) + forAll(faceSendSizes, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - if (faceSendSizes[Pstream::myProcNo()][procI] > 0) + if (faceSendSizes[Pstream::myProcNo()][proci] > 0) { - UOPstream str(procI, pBufs); + UOPstream str(proci, pBufs); labelList pointMap; triSurface subSurface @@ -2240,15 +2240,15 @@ void Foam::distributedTriSurfaceMesh::distribute subsetMesh ( *this, - faceSendMap[procI], + faceSendMap[proci], pointMap ) ); //if (debug) //{ - // Pout<< "Sending to " << procI - // << " faces:" << faceSendMap[procI].size() + // Pout<< "Sending to " << proci + // << " faces:" << faceSendMap[proci].size() // << " points:" << subSurface.points().size() << endl // << endl; //} @@ -2264,20 +2264,20 @@ void Foam::distributedTriSurfaceMesh::distribute // Receive and merge all // ~~~~~~~~~~~~~~~~~~~~~ - forAll(faceSendSizes, procI) + forAll(faceSendSizes, proci) { - if (procI != Pstream::myProcNo()) + if (proci != Pstream::myProcNo()) { - if (faceSendSizes[procI][Pstream::myProcNo()] > 0) + if (faceSendSizes[proci][Pstream::myProcNo()] > 0) { - UIPstream str(procI, pBufs); + UIPstream str(proci, pBufs); // Receive triSurface subSurface(str); //if (debug) //{ - // Pout<< "Received from " << procI + // Pout<< "Received from " << proci // << " faces:" << subSurface.size() // << " points:" << subSurface.points().size() << endl // << endl; @@ -2292,8 +2292,8 @@ void Foam::distributedTriSurfaceMesh::distribute allTris, allPoints, - faceConstructMap[procI], - pointConstructMap[procI] + faceConstructMap[proci], + pointConstructMap[proci] ); //if (debug) @@ -2354,9 +2354,9 @@ void Foam::distributedTriSurfaceMesh::distribute InfoInFunction << "after distribution:" << endl << "\tproc\ttris" << endl; - forAll(nTris, procI) + forAll(nTris, proci) { - Info<< '\t' << procI << '\t' << nTris[procI] << endl; + Info<< '\t' << proci << '\t' << nTris[proci] << endl; } Info<< endl; @@ -2367,9 +2367,9 @@ void Foam::distributedTriSurfaceMesh::distribute { pointField pts(myBbs[i].points()); const edgeList& es = treeBoundBox::edges; - forAll(es, eI) + forAll(es, ei) { - const edge& e = es[eI]; + const edge& e = es[ei]; str.write(linePointRef(pts[e[0]], pts[e[1]])); } } diff --git a/src/parallel/reconstruct/reconstruct/fvFieldReconstructorReconstructFields.C b/src/parallel/reconstruct/reconstruct/fvFieldReconstructorReconstructFields.C index 88a8d1b5320feab5e9d3e43e87f3c886428e786b..e7bd26b2cc95d2c4351c269360a2f62fde4b2f32 100644 --- a/src/parallel/reconstruct/reconstruct/fvFieldReconstructorReconstructFields.C +++ b/src/parallel/reconstruct/reconstruct/fvFieldReconstructorReconstructFields.C @@ -56,7 +56,7 @@ Foam::fvFieldReconstructor::reconstructFvVolumeInternalField ); } - return tmp<DimensionedField<Type, volMesh>> + tmp<DimensionedField<Type, volMesh>> tfield ( new DimensionedField<Type, volMesh> ( @@ -66,6 +66,10 @@ Foam::fvFieldReconstructor::reconstructFvVolumeInternalField internalField ) ); + + tfield.ref().oriented() = procFields[0].oriented(); + + return tfield; } @@ -282,7 +286,7 @@ Foam::fvFieldReconstructor::reconstructFvVolumeField // Now construct and write the field // setting the internalField and patchFields - return tmp<GeometricField<Type, fvPatchField, volMesh>> + tmp<GeometricField<Type, fvPatchField, volMesh>> tfield ( new GeometricField<Type, fvPatchField, volMesh> ( @@ -293,6 +297,10 @@ Foam::fvFieldReconstructor::reconstructFvVolumeField patchFields ) ); + + tfield.ref().oriented() = procFields[0].oriented(); + + return tfield; } @@ -523,7 +531,7 @@ Foam::fvFieldReconstructor::reconstructFvSurfaceField // Now construct and write the field // setting the internalField and patchFields - return tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> + tmp<GeometricField<Type, fvsPatchField, surfaceMesh>> tfield ( new GeometricField<Type, fvsPatchField, surfaceMesh> ( @@ -534,6 +542,10 @@ Foam::fvFieldReconstructor::reconstructFvSurfaceField patchFields ) ); + + tfield.ref().oriented() = procFields[0].oriented(); + + return tfield; } diff --git a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C index 3449b3295c534f5f87047401a7cdb3394a517849..209febd8c99421583031ed112650ef45818cb796 100644 --- a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C +++ b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C @@ -249,9 +249,9 @@ void pointNoise::calculate() if (!fName.isAbsolute()) { fName = "$FOAM_CASE"/fName; + fName.expand(); } - fName.expand(); - Function1Types::CSV<scalar> data("pressure", dict_, "Data", fName); + Function1Types::CSV<scalar> data("pressure", dict_, fName); processData(filei, data); } } @@ -261,13 +261,12 @@ bool pointNoise::read(const dictionary& dict) { if (noiseModel::read(dict)) { - if (!dict.readIfPresent("inputFiles", inputFileNames_)) + if (!dict.readIfPresent("files", inputFileNames_)) { inputFileNames_.setSize(1); - // Note: unsafe lookup of file name from pressureData sub-dict! - dict.subDict("pressureData").lookup("fileName") - >> inputFileNames_[0]; + // Note: lookup uses same keyword as used by the CSV constructor + dict.lookup("file") >> inputFileNames_[0]; } return true; diff --git a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.H b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.H index 693418939a8bacea33782a1726705dc9aa5504df..3e05e14cb7d45606bb593bc426e08d7ade41fc4d 100644 --- a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.H +++ b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.H @@ -53,15 +53,13 @@ Description } // Pressure data supplied in CSV file format - csvFileData - { - fileName "pressureData"; - nHeaderLine 1; - refColumn 0; - componentColumns (1); - separator " "; - mergeSeparators yes; - } + file "pressureData"; + //files ("pressureData1" "pressureData2"); + nHeaderLine 1; + refColumn 0; + componentColumns (1); + separator " "; + mergeSeparators yes; graphFormat raw; diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C index 7b9e6180b95fd27d1b2f069a75e3c9f330b8fab7..bc8f2a9c4525025a06a25b6a35d5d9e1f46d8a99 100644 --- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C +++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C @@ -126,7 +126,7 @@ void surfaceNoise::readSurfaceData if (Pstream::parRun()) { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); // Procedure: // 1. Master processor reads pressure data for all faces for all times @@ -243,7 +243,7 @@ Foam::scalar surfaceNoise::writeSurfaceData { // Collect the surface data so that we can output the surfaces - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); if (!Pstream::master()) { @@ -342,7 +342,7 @@ Foam::scalar surfaceNoise::surfaceAverage { // Collect the surface data so that we can output the surfaces - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); if (!Pstream::master()) { @@ -431,14 +431,14 @@ bool surfaceNoise::read(const dictionary& dict) { if (noiseModel::read(dict)) { - if (dict.found("inputFile")) + if (dict.found("file")) { inputFileNames_.setSize(1); - dict.lookup("inputFile") >> inputFileNames_[0]; + dict.lookup("file") >> inputFileNames_[0]; } else { - dict.lookup("inputFiles") >> inputFileNames_; + dict.lookup("files") >> inputFileNames_; } dict.readIfPresent("fftWriteInterval", fftWriteInterval_); diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H index 6450881d76f4006fc300983312d4de123126552c..ad7cedebcc054f150868f94b1072488416514e07 100644 --- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H +++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H @@ -53,7 +53,8 @@ Description } // Input file - inputFiles ("postProcessing/faceSource1/surface/patch/patch.case"); + file "postProcessing/faceSource1/surface/patch/patch.case"; + //files ("postProcessing/faceSource1/surface/patch/patch.case"); // Write interval for FFT data, default = 1 fftWriteInterval 100; diff --git a/src/randomProcesses/processes/UOprocess/UOprocess.C b/src/randomProcesses/processes/UOprocess/UOprocess.C index b15e8ff84d51c2c40b7f3e91d9c66793b77cff92..800d79025f8e0b6b93849b27d4038202abe10e13 100644 --- a/src/randomProcesses/processes/UOprocess/UOprocess.C +++ b/src/randomProcesses/processes/UOprocess/UOprocess.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -127,4 +127,3 @@ const complexVectorField& UOprocess::newField() } // End namespace Foam // ************************************************************************* // - diff --git a/src/regionCoupled/derivedFvPatchFields/energyRegionCoupled/energyRegionCoupledFvPatchScalarField.C b/src/regionCoupled/derivedFvPatchFields/energyRegionCoupled/energyRegionCoupledFvPatchScalarField.C index 2935936e8bb69129cbb2cca79ffbef731111d986..72afb55582a16c9d6325c225bb11530ed2d297ee 100644 --- a/src/regionCoupled/derivedFvPatchFields/energyRegionCoupled/energyRegionCoupledFvPatchScalarField.C +++ b/src/regionCoupled/derivedFvPatchFields/energyRegionCoupled/energyRegionCoupledFvPatchScalarField.C @@ -134,7 +134,7 @@ kappa() const << " on mesh " << this->db().name() << " patch " << patch().name() << " could not find a method in. Methods are: " - << methodTypeNames_.toc() + << methodTypeNames_ << " Not turbulenceModel or thermophysicalProperties" << " were found" << exit(FatalError); diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H index b7220ce97d4fd1c6d0c33f876f61c52b037b3ce2..67cec6fdc0ab8dde0c1e1c6a278669115a0860b5 100644 --- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H +++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::noPyrolysis + Foam::regionModels::pyrolysisModels::noPyrolysis Description Dummy surface pyrolysis model for 'none' diff --git a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C index 61f5502341e83ff16ececef0fd0ef0ea9df2b730..8d818996119e76178161a225e92d68664fdd1b75 100644 --- a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C +++ b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,9 +43,7 @@ defineRunTimeSelectionTable(pyrolysisModel, dictionary); // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // void pyrolysisModel::readPyrolysisControls() -{ - // do nothing -} +{} bool pyrolysisModel::read() diff --git a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModelCollection.H b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModelCollection.H index 06d3597c62f40cd944135c41b60616d0e9e19f84..c91e727bf466cb83fe2513b4f96daabd70346cba 100644 --- a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModelCollection.H +++ b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModelCollection.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::pyrolysisModelCollection + Foam::regionModels::pyrolysisModels::pyrolysisModelCollection Description A centralized pyrolysis collection. diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C index 7163edbb3c6286ce88b061ea2cd59bc043cb598d..2403be771ae77ca04074b05ec547bf56038af97a 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -25,13 +25,11 @@ License #include "reactingOneDim.H" #include "addToRunTimeSelectionTable.H" -#include "surfaceInterpolate.H" #include "fvm.H" #include "fvcDiv.H" #include "fvcVolumeIntegrate.H" -#include "fvMatrices.H" -#include "absorptionEmissionModel.H" #include "fvcLaplacian.H" +#include "absorptionEmissionModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,13 +54,9 @@ void reactingOneDim::readReactingOneDimControls() const dictionary& solution = this->solution().subDict("SIMPLE"); solution.lookup("nNonOrthCorr") >> nNonOrthCorr_; time().controlDict().lookup("maxDi") >> maxDiff_; - coeffs().lookup("minimumDelta") >> minimumDelta_; - gasHSource_ = coeffs().lookupOrDefault<bool>("gasHSource", false); - - coeffs().lookup("QrHSource") >> QrHSource_; - + coeffs().lookup("qrHSource") >> qrHSource_; useChemistrySolvers_ = coeffs().lookupOrDefault<bool>("useChemistrySolvers", true); } @@ -96,41 +90,41 @@ bool reactingOneDim::read(const dictionary& dict) } -void reactingOneDim::updateQr() +void reactingOneDim::updateqr() { - // Update local Qr from coupled Qr field - Qr_ == dimensionedScalar("zero", Qr_.dimensions(), 0.0); + // Update local qr from coupled qr field + qr_ == dimensionedScalar("zero", qr_.dimensions(), 0.0); // Retrieve field from coupled region using mapped boundary conditions - Qr_.correctBoundaryConditions(); + qr_.correctBoundaryConditions(); - volScalarField::Boundary& QrBf = Qr_.boundaryFieldRef(); + volScalarField::Boundary& qrBf = qr_.boundaryFieldRef(); forAll(intCoupledPatchIDs_, i) { const label patchi = intCoupledPatchIDs_[i]; - // Qr is positive going in the solid + // qr is positive going in the solid // If the surface is emitting the radiative flux is set to zero - QrBf[patchi] = max(QrBf[patchi], scalar(0.0)); + qrBf[patchi] = max(qrBf[patchi], scalar(0.0)); } const vectorField& cellC = regionMesh().cellCentres(); tmp<volScalarField> kappa = kappaRad(); - // Propagate Qr through 1-D regions + // Propagate qr through 1-D regions label localPyrolysisFacei = 0; forAll(intCoupledPatchIDs_, i) { const label patchi = intCoupledPatchIDs_[i]; - const scalarField& Qrp = Qr_.boundaryField()[patchi]; + const scalarField& qrp = qr_.boundaryField()[patchi]; const vectorField& Cf = regionMesh().Cf().boundaryField()[patchi]; - forAll(Qrp, facei) + forAll(qrp, facei) { - const scalar Qr0 = Qrp[facei]; + const scalar qr0 = qrp[facei]; point Cf0 = Cf[facei]; const labelList& cells = boundaryFaceCells_[localPyrolysisFacei++]; scalar kappaInt = 0.0; @@ -140,7 +134,7 @@ void reactingOneDim::updateQr() const point& Cf1 = cellC[celli]; const scalar delta = mag(Cf1 - Cf0); kappaInt += kappa()[celli]*delta; - Qr_[celli] = Qr0*exp(-kappaInt); + qr_[celli] = qr0*exp(-kappaInt); Cf0 = Cf1; } } @@ -204,9 +198,9 @@ void reactingOneDim::updatePhiGas() void reactingOneDim::updateFields() { - if (QrHSource_) + if (qrHSource_) { - updateQr(); + updateqr(); } //Note: Commented out as the sensible gas energy is included in energy eq. @@ -239,22 +233,21 @@ void reactingOneDim::solveContinuity() InfoInFunction << endl; } - if (!moveMesh_) { fvScalarMatrix rhoEqn ( - fvm::ddt(rho_) - == - - solidChemistry_->RRg() + fvm::ddt(rho_) == -solidChemistry_->RRg() ); rhoEqn.solve(); } else { - const scalarField deltaV = - -solidChemistry_->RRg()*regionMesh().V()*time_.deltaT()/rho_; + const scalarField deltaV + ( + -solidChemistry_->RRg()*regionMesh().V()*time_.deltaT()/rho_ + ); updateMesh(deltaV); } @@ -276,9 +269,7 @@ void reactingOneDim::solveSpeciesMass() fvScalarMatrix YiEqn ( - fvm::ddt(rho_, Yi) - == - solidChemistry_->RRs(i) + fvm::ddt(rho_, Yi) == solidChemistry_->RRs(i) ); if (regionMesh().moving()) @@ -318,7 +309,7 @@ void reactingOneDim::solveEnergy() + fvc::laplacian(alpha, h_) - fvc::laplacian(kappa(), T()) == - chemistrySh_ + chemistryQdot_ + solidChemistry_->RRsHs() ); @@ -332,10 +323,10 @@ void reactingOneDim::solveEnergy() } */ - if (QrHSource_) + if (qrHSource_) { - const surfaceScalarField phiQr(fvc::interpolate(Qr_)*nMagSf()); - hEqn += fvc::div(phiQr); + const surfaceScalarField phiqr(fvc::interpolate(qr_)*nMagSf()); + hEqn += fvc::div(phiqr); } /* @@ -371,7 +362,7 @@ void reactingOneDim::calculateMassTransfer() if (infoOutput_) { - totalHeatRR_ = fvc::domainIntegrate(chemistrySh_); + totalHeatRR_ = fvc::domainIntegrate(chemistryQdot_); addedGasMass_ += fvc::domainIntegrate(solidChemistry_->RRg())*time_.deltaT(); @@ -440,11 +431,11 @@ reactingOneDim::reactingOneDim dimensionedScalar("zero", dimEnergy/dimTime, 0.0) ), - chemistrySh_ + chemistryQdot_ ( IOobject ( - "chemistrySh", + "chemistryQdot", time().timeName(), regionMesh(), IOobject::NO_READ, @@ -454,11 +445,11 @@ reactingOneDim::reactingOneDim dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", time().timeName(), regionMesh(), IOobject::MUST_READ, @@ -472,7 +463,7 @@ reactingOneDim::reactingOneDim totalGasMassFlux_(0.0), totalHeatRR_(dimensionedScalar("zero", dimEnergy/dimTime, 0.0)), gasHSource_(false), - QrHSource_(false), + qrHSource_(false), useChemistrySolvers_(true) { if (active_) @@ -540,11 +531,11 @@ reactingOneDim::reactingOneDim dimensionedScalar("zero", dimEnergy/dimTime, 0.0) ), - chemistrySh_ + chemistryQdot_ ( IOobject ( - "chemistrySh", + "chemistryQdot", time().timeName(), regionMesh(), IOobject::NO_READ, @@ -554,11 +545,11 @@ reactingOneDim::reactingOneDim dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", time().timeName(), regionMesh(), IOobject::MUST_READ, @@ -572,7 +563,7 @@ reactingOneDim::reactingOneDim totalGasMassFlux_(0.0), totalHeatRR_(dimensionedScalar("zero", dimEnergy/dimTime, 0.0)), gasHSource_(false), - QrHSource_(false), + qrHSource_(false), useChemistrySolvers_(true) { if (active_) @@ -624,9 +615,9 @@ scalar reactingOneDim::solidRegionDiffNo() const { surfaceScalarField KrhoCpbyDelta ( - regionMesh().surfaceInterpolation::deltaCoeffs() - * fvc::interpolate(kappa()) - / fvc::interpolate(Cp()*rho_) + sqr(regionMesh().surfaceInterpolation::deltaCoeffs()) + *fvc::interpolate(kappa()) + /fvc::interpolate(Cp()*rho_) ); DiNum = max(KrhoCpbyDelta.primitiveField())*time().deltaTValue(); @@ -699,7 +690,7 @@ void reactingOneDim::evolveRegion() solveContinuity(); - chemistrySh_ = solidChemistry_->Sh()(); + chemistryQdot_ = solidChemistry_->Qdot()(); updateFields(); diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H index ae875ae1c77f4f78aa7ddebb5150fd83a1bfd45e..ed25394608de449c0c4cc9e69cc7db075880f142 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::reactingOneDim + Foam::regionModels::pyrolysisModels::reactingOneDim Description Reacting, 1-D pyrolysis model @@ -119,18 +119,18 @@ protected: //- Sensible enthalpy gas flux [J/m2/s] volScalarField phiHsGas_; - //- Heat release [J/s/m3] - volScalarField chemistrySh_; + //- Heat release rate [J/s/m3] + volScalarField chemistryQdot_; // Source term fields //- Coupled region radiative heat flux [W/m2] // Requires user to input mapping info for coupled patches - //volScalarField QrCoupled_; + //volScalarField qrCoupled_; //- In depth radiative heat flux [W/m2] - volScalarField Qr_; + volScalarField qr_; // Checks @@ -154,7 +154,7 @@ protected: bool gasHSource_; //- Add in depth radiation source term - bool QrHSource_; + bool qrHSource_; //- Use chemistry solvers (ode or sequential) bool useChemistrySolvers_; @@ -175,7 +175,7 @@ protected: void updateMesh(const scalarField& mass0); //- Update radiative flux in pyrolysis region - void updateQr(); + void updateqr(); //- Update enthalpy flux for pyrolysis gases void updatePhiGas(); diff --git a/src/regionModels/pyrolysisModels/thermo/thermo.H b/src/regionModels/pyrolysisModels/thermo/thermo.H index 82489aa0cb51e5ba1bca1db9f9e68cfc3acf1cc3..8efd72872a12cf0827cc3f66c8062180e01fedfa 100644 --- a/src/regionModels/pyrolysisModels/thermo/thermo.H +++ b/src/regionModels/pyrolysisModels/thermo/thermo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thermo + Foam::regionModels::pyrolysisModels::thermo Description Pyrolysis model which solves only the energy equation in the region. diff --git a/src/regionModels/regionCoupling/Make/options b/src/regionModels/regionCoupling/Make/options index 379349b0452682a0dd9cea8cd72041d23aab1e2c..a5cab5feb112fbbe3b2aaa55615891754eba6bc1 100644 --- a/src/regionModels/regionCoupling/Make/options +++ b/src/regionModels/regionCoupling/Make/options @@ -7,11 +7,8 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude\ -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidSpecie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \ -I$(LIB_SRC)/turbulenceModels/lnInclude \ diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C index e5152f43c4dfeeadce6c01314bc54f94342d4980..dac63860b81a145b358556159c3197f0d0c28135 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -110,7 +110,7 @@ filmPyrolysisRadiativeCoupledMixedFvPatchScalarField filmRegionName_("surfaceFilmProperties"), pyrolysisRegionName_("pyrolysisProperties"), TnbrName_("undefined-Tnbr"), - QrName_("undefined-Qr"), + qrName_("undefined-qr"), convectiveScaling_(1.0), filmDeltaDry_(0.0), filmDeltaWet_(0.0) @@ -135,7 +135,7 @@ filmPyrolysisRadiativeCoupledMixedFvPatchScalarField filmRegionName_(psf.filmRegionName_), pyrolysisRegionName_(psf.pyrolysisRegionName_), TnbrName_(psf.TnbrName_), - QrName_(psf.QrName_), + qrName_(psf.qrName_), convectiveScaling_(psf.convectiveScaling_), filmDeltaDry_(psf.filmDeltaDry_), filmDeltaWet_(psf.filmDeltaWet_) @@ -161,7 +161,7 @@ filmPyrolysisRadiativeCoupledMixedFvPatchScalarField dict.lookupOrDefault<word>("pyrolysisRegion", "pyrolysisProperties") ), TnbrName_(dict.lookup("Tnbr")), - QrName_(dict.lookup("Qr")), + qrName_(dict.lookup("qr")), convectiveScaling_(dict.lookupOrDefault<scalar>("convectiveScaling", 1.0)), filmDeltaDry_(readScalar(dict.lookup("filmDeltaDry"))), filmDeltaWet_(readScalar(dict.lookup("filmDeltaWet"))) @@ -207,7 +207,7 @@ filmPyrolysisRadiativeCoupledMixedFvPatchScalarField filmRegionName_(psf.filmRegionName_), pyrolysisRegionName_(psf.pyrolysisRegionName_), TnbrName_(psf.TnbrName_), - QrName_(psf.QrName_), + qrName_(psf.qrName_), convectiveScaling_(psf.convectiveScaling_), filmDeltaDry_(psf.filmDeltaDry_), filmDeltaWet_(psf.filmDeltaWet_) @@ -268,25 +268,25 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::updateCoeffs() const pyrolysisModelType& pyrolysis = pyrModel(); const filmModelType& film = filmModel(); - // Obtain Rad heat (Qr) - scalarField Qr(patch().size(), 0.0); + // Obtain Rad heat (qr) + scalarField qr(patch().size(), 0.0); label coupledPatchi = -1; if (pyrolysisRegionName_ == mesh.name()) { coupledPatchi = patchi; - if (QrName_ != "none") + if (qrName_ != "none") { - Qr = nbrPatch.lookupPatchField<volScalarField, scalar>(QrName_); - mpp.distribute(Qr); + qr = nbrPatch.lookupPatchField<volScalarField, scalar>(qrName_); + mpp.distribute(qr); } } else if (pyrolysis.primaryMesh().name() == mesh.name()) { coupledPatchi = nbrPatch.index(); - if (QrName_ != "none") + if (qrName_ != "none") { - Qr = patch().lookupPatchField<volScalarField, scalar>(QrName_); + qr = patch().lookupPatchField<volScalarField, scalar>(qrName_); } } else @@ -344,7 +344,7 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::updateCoeffs() scalarField qConv(ratio*htcwfilm*(Tfilm - Tp)*convectiveScaling_); - scalarField qRad((1.0 - ratio)*Qr); + scalarField qRad((1.0 - ratio)*qr); scalarField alpha(KDeltaNbr - (qRad + qConv)/Tp); @@ -357,7 +357,7 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::updateCoeffs() if (debug) { scalar Qc = gSum(qConv*patch().magSf()); - scalar Qr = gSum(qRad*patch().magSf()); + scalar qr = gSum(qRad*patch().magSf()); scalar Qt = gSum((qConv + qRad)*patch().magSf()); Info<< mesh.name() << ':' @@ -367,7 +367,7 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::updateCoeffs() << nbrPatch.name() << ':' << this->internalField().name() << " :" << nl << " convective heat[W] : " << Qc << nl - << " radiative heat [W] : " << Qr << nl + << " radiative heat [W] : " << qr << nl << " total heat [W] : " << Qt << nl << " wall temperature " << " min:" << gMin(*this) @@ -399,7 +399,7 @@ void filmPyrolysisRadiativeCoupledMixedFvPatchScalarField::write pyrolysisRegionName_ ); os.writeKeyword("Tnbr")<< TnbrName_ << token::END_STATEMENT << nl; - os.writeKeyword("Qr")<< QrName_ << token::END_STATEMENT << nl; + os.writeKeyword("qr")<< qrName_ << token::END_STATEMENT << nl; os.writeKeyword("convectiveScaling") << convectiveScaling_ << token::END_STATEMENT << nl; os.writeKeyword("filmDeltaDry") << filmDeltaDry_ diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.H b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.H index abdd47b6b8084a996382b14975cd29a25dae43d4..697f8c879cd0bbb136e76a85e7915e69a802e853 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.H +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisRadiativeCoupledMixed/filmPyrolysisRadiativeCoupledMixedFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ Description Tnbr T; kappaMethod fluidThermo; kappa none; - Qr Qr; + qr qr; filmDeltaDry 0.0; filmDeltaWet 3e-4; value $internalField; @@ -58,16 +58,15 @@ Description \verbatim qConv = ratio*htcwfilm*(Tfilm - *this); - qRad = (1.0 - ratio)*Qr; + qRad = (1.0 - ratio)*qr; \endverbatim Then the solid can gain or loose energy through radiation or conduction towards the film. Notes: - - \c kappaMethod and \c kappa are inherited from temperatureCoupledBase. - - Qr is the radiative flux defined in the radiation model. + - qr is the radiative flux defined in the radiation model. See also @@ -124,7 +123,7 @@ private: const word TnbrName_; //- Name of the radiative heat flux - const word QrName_; + const word qrName_; //- Convective Scaling Factor (as determined by Prateep's tests) const scalar convectiveScaling_; diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C index 6d1e2ee2dd5f67e63195d157498d58fbf9723279..b2cd87b200e363e39e49ebb24a1576e066dd10c7 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -138,7 +138,7 @@ void Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField::updateCoeffs() if (!filmOk || !pyrOk) { - // do nothing on construction - film model doesn't exist yet + // Do nothing on construction - film model doesn't exist yet return; } diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C index 8bf2ea9908ffd0626ee58efc6228f43930c46145..b88f3d57d8be1a9a7779c64c0de36b12692d9170 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -138,7 +138,7 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::updateCoeffs() if (!foundFilm || !foundPyrolysis) { - // do nothing on construction - film model doesn't exist yet + // Do nothing on construction - film model doesn't exist yet return; } @@ -172,9 +172,7 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::updateCoeffs() db().lookupObject<surfaceScalarField>(phiName_); if (phi.dimensions() == dimVelocity*dimArea) - { - // do nothing - } + {} else if (phi.dimensions() == dimDensity*dimVelocity*dimArea) { const fvPatchField<scalar>& rhop = diff --git a/src/regionModels/regionModel/regionModel/regionModel.C b/src/regionModels/regionModel/regionModel/regionModel.C index 97e4575fc3787b80159902ad6bf16303f819ccd3..c1446d7cafe3f6204400a9e6cad660635aecae2d 100644 --- a/src/regionModels/regionModel/regionModel/regionModel.C +++ b/src/regionModels/regionModel/regionModel/regionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -63,31 +63,6 @@ void Foam::regionModels::regionModel::constructMeshObjects() } -void Foam::regionModels::regionModel::constructMeshObjects -( - const dictionary& dict -) -{ - // construct region mesh - if (!time_.foundObject<fvMesh>(regionName_)) - { - regionMeshPtr_.reset - ( - new fvMesh - ( - IOobject - ( - regionName_, - time_.timeName(), - time_, - IOobject::MUST_READ - ) - ) - ); - } -} - - void Foam::regionModels::regionModel::initialise() { if (debug) @@ -484,7 +459,7 @@ Foam::regionModels::regionModel::regionModel { if (active_) { - constructMeshObjects(dict); + constructMeshObjects(); initialise(); if (readFields) @@ -544,9 +519,7 @@ void Foam::regionModels::regionModel::preEvolveRegion() void Foam::regionModels::regionModel::evolveRegion() -{ - // do nothing -} +{} void Foam::regionModels::regionModel::postEvolveRegion() @@ -556,9 +529,7 @@ void Foam::regionModels::regionModel::postEvolveRegion() void Foam::regionModels::regionModel::info() -{ - // do nothing -} +{} // ************************************************************************* // diff --git a/src/regionModels/regionModel/regionModel/regionModel.H b/src/regionModels/regionModel/regionModel/regionModel.H index d0cfcc65d3c8a065d47e33a4a8030046bf16cd84..3c30cb0f1c7010dd4bac2d26991ee583368104c7 100644 --- a/src/regionModels/regionModel/regionModel/regionModel.H +++ b/src/regionModels/regionModel/regionModel/regionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::regionModel + Foam::regionModels::regionModel Description Base class for region models @@ -73,9 +73,6 @@ private: //- Construct region mesh and fields void constructMeshObjects(); - //- Construct region mesh and dictionary - void constructMeshObjects(const dictionary& dict); - //- Initialise the region void initialise(); diff --git a/src/regionModels/regionModel/regionModel1D/regionModel1D.H b/src/regionModels/regionModel/regionModel1D/regionModel1D.H index 3663a946488ab172711bf4d6ca63a1a2bc50a298..1a5452696256efb326669bcb2cc0450191206dbb 100644 --- a/src/regionModels/regionModel/regionModel1D/regionModel1D.H +++ b/src/regionModels/regionModel/regionModel1D/regionModel1D.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::regionModel1D + Foam::regionModels::regionModel1D Description Base class for 1-D region models diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.C b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.C index 121ab4a3e92cf4afc85dc327f0ca0c5184c5fa90..474ef1f9eabb50695b9685dc058a701ea02b9381 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.C +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,11 +41,11 @@ namespace regionModels Foam::regionModels::regionModelFunctionObject::regionModelFunctionObject ( - regionModel& owner + regionModel& region ) : dict_(dictionary::null), - owner_(owner), + regionModel_(region), modelType_("modelType") {} @@ -53,12 +53,12 @@ Foam::regionModels::regionModelFunctionObject::regionModelFunctionObject Foam::regionModels::regionModelFunctionObject::regionModelFunctionObject ( const dictionary& dict, - regionModel& owner, + regionModel& region, const word& type ) : dict_(dict), - owner_(owner), + regionModel_(region), modelType_(type) {} @@ -69,7 +69,7 @@ Foam::regionModels::regionModelFunctionObject::regionModelFunctionObject ) : dict_(rmfo.dict_), - owner_(rmfo.owner_), + regionModel_(rmfo.regionModel_), modelType_(rmfo.modelType_) {} @@ -83,14 +83,12 @@ Foam::regionModels::regionModelFunctionObject::~regionModelFunctionObject() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::regionModels::regionModelFunctionObject::preEvolveRegion() -{ - // do nothing -} +{} void Foam::regionModels::regionModelFunctionObject::postEvolveRegion() { - if (owner_.regionMesh().time().writeTime()) + if (regionModel_.regionMesh().time().writeTime()) { write(); } @@ -98,9 +96,7 @@ void Foam::regionModels::regionModelFunctionObject::postEvolveRegion() void Foam::regionModels::regionModelFunctionObject::write() const -{ - // do nothing -} +{} // ************************************************************************* // diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.H b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.H index 77e56b14d19b329dd880ff0c3425ee7432392545..e39918ed61b553c7e292505a8f932feca2a76406 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.H +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::regionModelFunctionObject + Foam::regionModels::regionModelFunctionObject Description Region model function object base class @@ -64,7 +64,7 @@ protected: dictionary dict_; //- Reference to the region model - regionModel& owner_; + regionModel& regionModel_; //- Model type name word modelType_; @@ -83,22 +83,22 @@ public: dictionary, ( const dictionary& dict, - regionModel& owner + regionModel& region ), - (dict, owner) + (dict, region) ); // Constructors - //- Construct null from owner - regionModelFunctionObject(regionModel& owner); + //- Construct null from region + regionModelFunctionObject(regionModel& region); //- Construct from dictionary regionModelFunctionObject ( const dictionary& dict, - regionModel& owner, + regionModel& region, const word& modelType ); @@ -123,7 +123,7 @@ public: static autoPtr<regionModelFunctionObject> New ( const dictionary& dict, - regionModel& owner, + regionModel& region, const word& modelType ); diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.C b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.C index 366ec496badd36fd3371b245115346e6b0129e3b..d3b6bf0c4cd12d8517eb2375493721e2d922ff91 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.C +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,24 +29,24 @@ License Foam::regionModels::regionModelFunctionObjectList::regionModelFunctionObjectList ( - regionModel& owner + regionModel& region ) : PtrList<regionModelFunctionObject>(), - owner_(owner), + regionModel_(region), dict_(dictionary::null) {} Foam::regionModels::regionModelFunctionObjectList::regionModelFunctionObjectList ( - regionModel& owner, + regionModel& region, const dictionary& dict, const bool readFields ) : PtrList<regionModelFunctionObject>(), - owner_(owner), + regionModel_(region), dict_(dict) { if (readFields) @@ -69,7 +69,7 @@ Foam::regionModels::regionModelFunctionObjectList::regionModelFunctionObjectList regionModelFunctionObject::New ( dict, - owner, + region, modelName ) ); @@ -89,7 +89,7 @@ Foam::regionModels::regionModelFunctionObjectList::regionModelFunctionObjectList ) : PtrList<regionModelFunctionObject>(cfol), - owner_(cfol.owner_), + regionModel_(cfol.regionModel_), dict_(cfol.dict_) {} diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.H b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.H index 22488f18c8f4527a0c883c9c78a00ffe6a08a332..0e292b8b9ef501e52ce41579f0106de57359acaa 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.H +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::regionModelFunctionObjectList + Foam::regionModels::regionModelFunctionObjectList Description List of cloud function objects @@ -60,8 +60,8 @@ protected: // Protected Data - //- Reference to the owner region model - regionModel& owner_; + //- Reference to the region region model + regionModel& regionModel_; //- Dictionary const dictionary dict_; @@ -72,12 +72,12 @@ public: // Constructors //- Null constructor - regionModelFunctionObjectList(regionModel& owner); + regionModelFunctionObjectList(regionModel& region); //- Construct from mesh regionModelFunctionObjectList ( - regionModel& owner, + regionModel& region, const dictionary& dict, const bool readFields = true ); @@ -97,11 +97,11 @@ public: // Access - //- Return const access to the cloud owner - inline const regionModel& owner() const; + //- Return const access to the cloud region + inline const regionModel& region() const; - //- Return refernce to the cloud owner - inline regionModel& owner(); + //- Return refernce to the cloud region + inline regionModel& region(); //- Return the forces dictionary inline const dictionary& dict() const; diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectListI.H b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectListI.H index a0a90d0f67535a0852fef3cc7a8675d1034b2782..d65d19cc255c0fd8cfa3296cf8143e1f7ce9936d 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectListI.H +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectListI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,16 +24,16 @@ License \*---------------------------------------------------------------------------*/ inline const Foam::regionModels::regionModel& -Foam::regionModels::regionModelFunctionObjectList::owner() const +Foam::regionModels::regionModelFunctionObjectList::region() const { - return owner_; + return regionModel_; } inline Foam::regionModels::regionModel& -Foam::regionModels::regionModelFunctionObjectList::owner() +Foam::regionModels::regionModelFunctionObjectList::region() { - return owner_; + return regionModel_; } diff --git a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectNew.C b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectNew.C index 8c4b1bce3488587cfaa6de015ee3a95735553b67..7d585e7e2d72b4593d59d927b3b1b479fb351424 100644 --- a/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectNew.C +++ b/src/regionModels/regionModel/regionModelFunctionObject/regionModelFunctionObject/regionModelFunctionObjectNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,7 @@ Foam::autoPtr<Foam::regionModels::regionModelFunctionObject> Foam::regionModels::regionModelFunctionObject::New ( const dictionary& dict, - regionModel& owner, + regionModel& region, const word& modelName ) { @@ -58,7 +58,7 @@ Foam::regionModels::regionModelFunctionObject::New cstrIter() ( dict.subDict(modelName), - owner + region ) ); } diff --git a/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.H b/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.H index ccababa2724e5519daa8ba72c01e952e951f01cd..4dbb1eda9744b45298215478c9cfd3405642c75b 100644 --- a/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.H +++ b/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::singleLayerRegion + Foam::regionModels::singleLayerRegion Description Base class for single layer region models diff --git a/src/regionModels/surfaceFilmModels/Make/files b/src/regionModels/surfaceFilmModels/Make/files index e17e76bbf7e4df079b3534a61c27bcc7ab9969e9..f53e0a03898560af9ced82d66546439622206f01 100644 --- a/src/regionModels/surfaceFilmModels/Make/files +++ b/src/regionModels/surfaceFilmModels/Make/files @@ -13,7 +13,10 @@ KINEMATICMODELS=submodels/kinematic $(KINEMATICMODELS)/force/force/force.C $(KINEMATICMODELS)/force/force/forceNew.C $(KINEMATICMODELS)/force/forceList/forceList.C -$(KINEMATICMODELS)/force/contactAngleForce/contactAngleForce.C +$(KINEMATICMODELS)/force/contactAngleForces/contactAngleForce/contactAngleForce.C +$(KINEMATICMODELS)/force/contactAngleForces/distribution/distributionContactAngleForce.C +$(KINEMATICMODELS)/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.C +$(KINEMATICMODELS)/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.C $(KINEMATICMODELS)/force/thermocapillaryForce/thermocapillaryForce.C $(KINEMATICMODELS)/injectionModel/injectionModel/injectionModel.C diff --git a/src/regionModels/surfaceFilmModels/Make/options b/src/regionModels/surfaceFilmModels/Make/options index a0eb4828eaa8393b4c2a6c690113957d7bd4359b..566ec315e503a4101380392351f6c1a4256cfc62 100644 --- a/src/regionModels/surfaceFilmModels/Make/options +++ b/src/regionModels/surfaceFilmModels/Make/options @@ -2,10 +2,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \ @@ -17,10 +14,7 @@ LIB_LIBS = \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -ldistributionModels \ diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/Make/options b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/Make/options index c736bdc8265f299a1f91c1c654be204dcbecfc12..9f799143bc58b74dfb2c422af5af3dcbbe363c7d 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/Make/options +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/Make/options @@ -2,10 +2,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ @@ -19,10 +16,7 @@ LIB_LIBS = \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lspecie \ - -lliquidProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lsolidMixtureProperties \ + -lthermophysicalProperties \ -lreactionThermophysicalModels \ -lSLGThermo \ -lturbulenceModels \ diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C index e39f61b38af88bb8bec7afb27a46e3bb985ea327..cc7c60f985f015034fe976363c97883c519e7154 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -153,7 +153,7 @@ void alphatFilmWallFunctionFvPatchScalarField::updateCoeffs() if (!foundFilm) { - // do nothing on construction - film model doesn't exist yet + // Do nothing on construction - film model doesn't exist yet return; } diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C index a763e903ffd3d8a5bc08b870e19af41519959375..22ede927ceaa734847803077b6e96707d57bc4d2 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/nutkFilmWallFunction/nutkFilmWallFunctionFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ tmp<scalarField> nutkFilmWallFunctionFvPatchScalarField::calcUTau if (!foundFilm) { - // do nothing on construction - film model doesn't exist yet + // Do nothing on construction - film model doesn't exist yet return tuTau; } diff --git a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H index bedb0957d736ab040c6882ed2315396e4ce1ebe4..8c3325b7afff7a7b543e17ec11222ac187810d2b 100644 --- a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H +++ b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::kinematicSingleLayer + Foam::regionModels::surfaceFilmModels::kinematicSingleLayer Description Kinematic form of single-cell layer surface film model diff --git a/src/regionModels/surfaceFilmModels/noFilm/noFilm.C b/src/regionModels/surfaceFilmModels/noFilm/noFilm.C index d4f5d8781eac399a07d811a299a8db83515b7e99..65a775bd946ad78704e3ac8549ecf2207d9089bd 100644 --- a/src/regionModels/surfaceFilmModels/noFilm/noFilm.C +++ b/src/regionModels/surfaceFilmModels/noFilm/noFilm.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,9 +89,7 @@ void noFilm::addSources const scalar, const scalar ) -{ - // do nothing -} +{} const volScalarField& noFilm::delta() const diff --git a/src/regionModels/surfaceFilmModels/noFilm/noFilm.H b/src/regionModels/surfaceFilmModels/noFilm/noFilm.H index 20e115fecf7be5e11a56baf48f3e9680e8cd2410..7421b64ac9eac469c867f803acf93d25d0cdb224 100644 --- a/src/regionModels/surfaceFilmModels/noFilm/noFilm.H +++ b/src/regionModels/surfaceFilmModels/noFilm/noFilm.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::noFilm + Foam::regionModels::surfaceFilmModels::noFilm Description Dummy surface film model for 'none' diff --git a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.C b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.C index 88bef475a6dab06439d72d890f78393e3e4f314b..479836a93a6be6b3ffef8557774e340ee2480a15 100644 --- a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.C +++ b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,16 +36,16 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -filmSubModelBase::filmSubModelBase(surfaceFilmModel& owner) +filmSubModelBase::filmSubModelBase(surfaceFilmModel& film) : - subModelBase(owner.outputProperties()), - owner_(owner) + subModelBase(film.outputProperties()), + filmModel_(film) {} filmSubModelBase::filmSubModelBase ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& baseName, const word& modelType, @@ -54,20 +54,20 @@ filmSubModelBase::filmSubModelBase : subModelBase ( - owner.outputProperties(), + film.outputProperties(), dict, baseName, modelType, dictExt ), - owner_(owner) + filmModel_(film) {} filmSubModelBase::filmSubModelBase ( const word& modelName, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& baseName, const word& modelType @@ -76,12 +76,12 @@ filmSubModelBase::filmSubModelBase subModelBase ( modelName, - owner.outputProperties(), + film.outputProperties(), dict, baseName, modelType ), - owner_(owner) + filmModel_(film) {} @@ -95,7 +95,7 @@ filmSubModelBase::~filmSubModelBase() bool filmSubModelBase::writeTime() const { - return active() && owner_.time().writeTime(); + return active() && filmModel_.time().writeTime(); } diff --git a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.H b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.H index cc4e3c090bc3563f01a1c8f90f72e856758f3758..8d4cfd54c5d47255037832fa1a5895f06fd2db1a 100644 --- a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.H +++ b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBase.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::subModelBase + Foam::regionModels::surfaceFilmModels::filmSubModelBase Description Base class for surface film sub-models @@ -60,8 +60,8 @@ protected: // Protected data - //- Reference to the owner surface film model - surfaceFilmModel& owner_; + //- Reference to the film surface film model + surfaceFilmModel& filmModel_; public: @@ -69,23 +69,23 @@ public: // Constructors //- Construct null - filmSubModelBase(surfaceFilmModel& owner); + filmSubModelBase(surfaceFilmModel& film); - //- Construct from owner film wihout name + //- Construct from film film wihout name filmSubModelBase ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& baseName, const word& modelType, const word& dictExt = "Coeffs" ); - //- Construct from owner film with name + //- Construct from film film with name filmSubModelBase ( const word& modelName, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& baseName, const word& modelType @@ -103,11 +103,11 @@ public: //- Flag to indicate when to write a property virtual bool writeTime() const; - //- Return const access to the owner surface film model - inline const surfaceFilmModel& owner() const; + //- Return const access to the film surface film model + inline const surfaceFilmModel& film() const; - //- Return the reference to the owner surface film model - inline surfaceFilmModel& owner(); + //- Return the reference to the film surface film model + inline surfaceFilmModel& film(); template<class FilmType> inline const FilmType& filmType() const; diff --git a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseI.H b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseI.H index c9149735cd8c7baac777553b9b070a313b00d238..2dced7e4f504ccd7a9a84df7e5c28aad82d293fe 100644 --- a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseI.H +++ b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,15 +34,15 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -inline const surfaceFilmModel& filmSubModelBase::owner() const +inline const surfaceFilmModel& filmSubModelBase::film() const { - return owner_; + return filmModel_; } -inline surfaceFilmModel& filmSubModelBase::owner() +inline surfaceFilmModel& filmSubModelBase::film() { - return owner_; + return filmModel_; } diff --git a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseTemplates.C b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseTemplates.C index c9e8aa719bdd2eb9da99190bbba903a398127dab..28011a63e3f2b57894504755c4d9772d78c21e23 100644 --- a/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseTemplates.C +++ b/src/regionModels/surfaceFilmModels/submodels/filmSubModelBaseTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,15 +35,15 @@ namespace surfaceFilmModels template<class FilmType> const FilmType& filmSubModelBase::filmType() const { - if (!isA<FilmType>(owner_)) + if (!isA<FilmType>(filmModel_)) { FatalErrorInFunction << "Model " << this->modelType() << " requested film type " - << FilmType::typeName << " but film is type " << owner_.type() + << FilmType::typeName << " but film is type " << filmModel_.type() << abort(FatalError); } - return refCast<const FilmType>(owner_); + return refCast<const FilmType>(filmModel_); } diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.C index 9c3845102ff2042de0f9973e553c33e078f58597..bae1439ce3384acad5d7d1a14037506c704c04d9 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,11 +61,11 @@ void constantFilmThermo::init(thermoData& td) constantFilmThermo::constantFilmThermo ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmThermoModel(typeName, owner, dict), + filmThermoModel(typeName, film, dict), name_(coeffDict_.lookup("specie")), rho0_("rho0"), mu0_("mu0"), @@ -264,12 +264,12 @@ tmp<volScalarField> constantFilmThermo::rho() const IOobject ( type() + ':' + rho0_.name_, - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimDensity, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -291,12 +291,12 @@ tmp<volScalarField> constantFilmThermo::mu() const IOobject ( type() + ':' + mu0_.name_, - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimPressure*dimTime, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -318,12 +318,12 @@ tmp<volScalarField> constantFilmThermo::sigma() const IOobject ( type() + ':' + sigma0_.name_, - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimMass/sqr(dimTime), 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -345,12 +345,12 @@ tmp<volScalarField> constantFilmThermo::Cp() const IOobject ( type() + ':' + Cp0_.name_, - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimEnergy/dimMass/dimTemperature, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -372,12 +372,12 @@ tmp<volScalarField> constantFilmThermo::kappa() const IOobject ( type() + ':' + kappa0_.name_, - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimPower/dimLength/dimTemperature, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.H index 10822db6e995766dd350f7fe6b1fd927881d4112..eed60f09e0e34cd0b5c506ad73b23d437e8a0629 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/constantFilmThermo/constantFilmThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantFilmThermo + Foam::regionModels::surfaceFilmModels::constantFilmThermo Description Constant thermo model @@ -140,7 +140,7 @@ public: //- Construct from surface film model and dictionary constantFilmThermo ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.C index 173e512bfa2ede7434f44aa66220c3c724df8f53..f11b3399aa871b6bd3040c551f51bd52411e792a 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,21 +43,21 @@ defineRunTimeSelectionTable(filmThermoModel, dictionary); filmThermoModel::filmThermoModel ( - surfaceFilmModel& owner + surfaceFilmModel& film ) : - filmSubModelBase(owner) + filmSubModelBase(film) {} filmThermoModel::filmThermoModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(film, dict, typeName, modelType) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.H index 86ce265ee3301f6c0c2b8ca4d941fea02a2d3e56..efa1de6517150f24f97f384eb7b61cb87f44d4a4 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/filmThermoModel/filmThermoModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::filmThermoModel + Foam::regionModels::surfaceFilmModels::filmThermoModel Description Base class for film thermo models @@ -81,22 +81,22 @@ public: filmThermoModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - filmThermoModel(surfaceFilmModel& owner); + filmThermoModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model filmThermoModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -106,7 +106,7 @@ public: //- Return a reference to the selected phase change model static autoPtr<filmThermoModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.C index be96128ec96a5b92868d56fb048df4b0aee5b4d1..af11a6986837d81e47b91076b3781ad1ab9fedec 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,17 +55,17 @@ addToRunTimeSelectionTable const thermoSingleLayer& liquidFilmThermo::thermoFilm() const { - if (!isA<thermoSingleLayer>(owner_)) + if (!isA<thermoSingleLayer>(filmModel_)) { FatalErrorInFunction << "Thermo model requires a " << thermoSingleLayer::typeName << " film to supply the pressure and temperature, but " - << owner_.type() << " film model selected. " + << filmModel_.type() << " film model selected. " << "Use the 'useReferenceValues' flag to employ reference " << "pressure and temperature" << exit(FatalError); } - return refCast<const thermoSingleLayer>(owner_); + return refCast<const thermoSingleLayer>(filmModel_); } @@ -78,13 +78,13 @@ void liquidFilmThermo::initLiquid(const dictionary& dict) dict.lookup("liquid") >> name_; - if (owner_.primaryMesh().foundObject<SLGThermo>("SLGThermo")) + if (filmModel_.primaryMesh().foundObject<SLGThermo>("SLGThermo")) { // retrieve from film thermo ownLiquid_ = false; const SLGThermo& thermo = - owner_.primaryMesh().lookupObject<SLGThermo>("SLGThermo"); + filmModel_.primaryMesh().lookupObject<SLGThermo>("SLGThermo"); label id = thermo.liquidId(name_); liquidPtr_ = &thermo.liquids().properties()[id]; } @@ -93,7 +93,8 @@ void liquidFilmThermo::initLiquid(const dictionary& dict) // new liquid create ownLiquid_ = true; - liquidPtr_ = new liquidProperties(dict.subDict(name_ + "Coeffs")); + liquidPtr_ = + liquidProperties::New(dict.optionalSubDict(name_ + "Coeffs")).ptr(); } } @@ -102,11 +103,11 @@ void liquidFilmThermo::initLiquid(const dictionary& dict) liquidFilmThermo::liquidFilmThermo ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmThermoModel(typeName, owner, dict), + filmThermoModel(typeName, film, dict), name_("unknown_liquid"), liquidPtr_(nullptr), ownLiquid_(false), @@ -189,7 +190,7 @@ scalar liquidFilmThermo::kappa const scalar T ) const { - return liquidPtr_->K(p, T); + return liquidPtr_->kappa(p, T); } @@ -244,12 +245,12 @@ tmp<volScalarField> liquidFilmThermo::rho() const IOobject ( type() + ":rho", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimDensity, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -289,12 +290,12 @@ tmp<volScalarField> liquidFilmThermo::mu() const IOobject ( type() + ":mu", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimPressure*dimTime, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -334,12 +335,12 @@ tmp<volScalarField> liquidFilmThermo::sigma() const IOobject ( type() + ":sigma", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimMass/sqr(dimTime), 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -379,12 +380,12 @@ tmp<volScalarField> liquidFilmThermo::Cp() const IOobject ( type() + ":Cp", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimEnergy/dimMass/dimTemperature, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) @@ -424,12 +425,12 @@ tmp<volScalarField> liquidFilmThermo::kappa() const IOobject ( type() + ":kappa", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("0", dimPower/dimLength/dimTemperature, 0.0), extrapolatedCalculatedFvPatchScalarField::typeName ) diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.H index 6c952e435952d27eb623ea5d85f3262c12876c0e..4b3b2b9ae6d98a163cf02831f62b8dab3655a6b8 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmThermoModel/liquidFilmThermo/liquidFilmThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::liquidFilmThermo + Foam::regionModels::surfaceFilmModels::liquidFilmThermo Description Liquid thermo model @@ -107,7 +107,7 @@ public: //- Construct from surface film model and dictionary liquidFilmThermo ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.C index 1d17112954efe585034d7219f1171f30864fa69c..90e1df57803373fd9b70b83887e76c3b9fc3dac6 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,20 +41,20 @@ defineRunTimeSelectionTable(filmTurbulenceModel, dictionary); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -filmTurbulenceModel::filmTurbulenceModel(surfaceFilmModel& owner) +filmTurbulenceModel::filmTurbulenceModel(surfaceFilmModel& film) : - filmSubModelBase(owner) + filmSubModelBase(film) {} filmTurbulenceModel::filmTurbulenceModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(film, dict, typeName, modelType) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.H index 31928cd85f9189ce2c41c290a9b2091ae83d07fb..cb35b71f90d91fdce31f48941d66941799132b13 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/filmTurbulenceModel/filmTurbulenceModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -83,22 +83,22 @@ public: filmTurbulenceModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - filmTurbulenceModel(surfaceFilmModel& owner); + filmTurbulenceModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model filmTurbulenceModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -108,7 +108,7 @@ public: //- Return a reference to the selected injection model static autoPtr<filmTurbulenceModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.C index fea96634771f0bbb9c1c3ba0a876502b9b0a3535..44046a183a63bf04d82f4c2a4967729419c200e5 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,11 +51,11 @@ addToRunTimeSelectionTable(filmTurbulenceModel, laminar, dictionary); laminar::laminar ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmTurbulenceModel(type(), owner, dict), + filmTurbulenceModel(type(), film, dict), Cf_(readScalar(coeffDict_.lookup("Cf"))) {} @@ -77,19 +77,19 @@ tmp<volVectorField> laminar::Us() const IOobject ( typeName + ":Us", - owner_.regionMesh().time().timeName(), - owner_.regionMesh(), + filmModel_.regionMesh().time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedVector("zero", dimVelocity, Zero), extrapolatedCalculatedFvPatchVectorField::typeName ) ); // apply quadratic profile - tUs.ref() = Foam::sqrt(2.0)*owner_.U(); + tUs.ref() = Foam::sqrt(2.0)*filmModel_.U(); tUs.ref().correctBoundaryConditions(); return tUs; @@ -105,12 +105,12 @@ tmp<volScalarField> laminar::mut() const IOobject ( typeName + ":mut", - owner_.regionMesh().time().timeName(), - owner_.regionMesh(), + filmModel_.regionMesh().time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedScalar("zero", dimMass/dimLength/dimTime, 0.0) ) ); @@ -118,16 +118,14 @@ tmp<volScalarField> laminar::mut() const void laminar::correct() -{ - // do nothing -} +{} tmp<fvVectorMatrix> laminar::Su(volVectorField& U) const { // local reference to film model const kinematicSingleLayer& film = - static_cast<const kinematicSingleLayer&>(owner_); + static_cast<const kinematicSingleLayer&>(filmModel_); // local references to film fields const volScalarField& mu = film.mu(); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.H index 5ff3b877658e0cd8592fd9cdd3154a8a2cc64d8a..71aa54c1e970dd5e9a403791f7c837827c685bfe 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/filmTurbulenceModel/laminar/laminar.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,7 +80,7 @@ public: // Constructors //- Construct from surface film model - laminar(surfaceFilmModel& owner, const dictionary& dict); + laminar(surfaceFilmModel& film, const dictionary& dict); //- Destructor diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.C similarity index 67% rename from src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.C rename to src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.C index ef46144e4bfa3a658958fb5e5d1e3624141a86c0..957b571e495046d9a3431868a64f7f3d9165c574 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,7 +27,6 @@ License #include "addToRunTimeSelectionTable.H" #include "fvcGrad.H" #include "unitConversion.H" -#include "fvPatchField.H" #include "meshWavePatchDistMethod.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -42,17 +41,19 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // defineTypeNameAndDebug(contactAngleForce, 0); -addToRunTimeSelectionTable(force, contactAngleForce, dictionary); // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // void contactAngleForce::initialise() { - const wordReList zeroForcePatches(coeffDict_.lookup("zeroForcePatches")); + const wordReList zeroForcePatches + ( + coeffDict_.lookupOrDefault<wordReList>("zeroForcePatches", wordReList()) + ); if (zeroForcePatches.size()) { - const polyBoundaryMesh& pbm = owner_.regionMesh().boundaryMesh(); + const polyBoundaryMesh& pbm = filmModel_.regionMesh().boundaryMesh(); scalar dLim = readScalar(coeffDict_.lookup("zeroForceDistance")); Info<< " Assigning zero contact force within " << dLim @@ -67,19 +68,19 @@ void contactAngleForce::initialise() } // Temporary implementation until run-time selection covers this case - patchDistMethods::meshWave dist(owner_.regionMesh(), patchIDs); + patchDistMethods::meshWave dist(filmModel_.regionMesh(), patchIDs); volScalarField y ( IOobject ( "y", - owner_.regionMesh().time().timeName(), - owner_.regionMesh(), + filmModel_.regionMesh().time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE, false ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedScalar("y", dimLength, GREAT) ); dist.correct(y); @@ -93,32 +94,24 @@ void contactAngleForce::initialise() contactAngleForce::contactAngleForce ( - surfaceFilmModel& owner, + const word& typeName, + surfaceFilmModel& film, const dictionary& dict ) : - force(typeName, owner, dict), + force(typeName, film, dict), Ccf_(readScalar(coeffDict_.lookup("Ccf"))), - rndGen_(), - distribution_ - ( - distributionModels::distributionModel::New - ( - coeffDict_.subDict("contactAngleDistribution"), - rndGen_ - ) - ), mask_ ( IOobject ( typeName + ":contactForceMask", - owner_.time().timeName(), - owner_.regionMesh(), + filmModel_.time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedScalar("mask", dimless, 1.0) ) { @@ -143,27 +136,30 @@ tmp<fvVectorMatrix> contactAngleForce::correct(volVectorField& U) IOobject ( typeName + ":contactForce", - owner_.time().timeName(), - owner_.regionMesh(), + filmModel_.time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedVector("zero", dimForce/dimArea, Zero) ) ); vectorField& force = tForce.ref().primitiveFieldRef(); - const labelUList& own = owner_.regionMesh().owner(); - const labelUList& nbr = owner_.regionMesh().neighbour(); + const labelUList& own = filmModel_.regionMesh().owner(); + const labelUList& nbr = filmModel_.regionMesh().neighbour(); - const scalarField& magSf = owner_.magSf(); + const scalarField& magSf = filmModel_.magSf(); - const volScalarField& alpha = owner_.alpha(); - const volScalarField& sigma = owner_.sigma(); + const volScalarField& alpha = filmModel_.alpha(); + const volScalarField& sigma = filmModel_.sigma(); - volVectorField gradAlpha(fvc::grad(alpha)); + const tmp<volScalarField> ttheta = theta(); + const volScalarField& theta = ttheta(); + + const volVectorField gradAlpha(fvc::grad(alpha)); forAll(nbr, facei) { @@ -182,37 +178,39 @@ tmp<fvVectorMatrix> contactAngleForce::correct(volVectorField& U) if (celli != -1 && mask_[celli] > 0.5) { - const scalar invDx = owner_.regionMesh().deltaCoeffs()[facei]; + const scalar invDx = filmModel_.regionMesh().deltaCoeffs()[facei]; const vector n = gradAlpha[celli]/(mag(gradAlpha[celli]) + ROOTVSMALL); - scalar theta = cos(degToRad(distribution_->sample())); - force[celli] += Ccf_*n*sigma[celli]*(1.0 - theta)/invDx; + const scalar cosTheta = cos(degToRad(theta[celli])); + force[celli] += Ccf_*n*sigma[celli]*(1 - cosTheta)/invDx; } } forAll(alpha.boundaryField(), patchi) { - if (!owner().isCoupledPatch(patchi)) + if (!filmModel_.isCoupledPatch(patchi)) { - const fvPatchField<scalar>& alphaf = alpha.boundaryField()[patchi]; - const fvPatchField<scalar>& maskf = mask_.boundaryField()[patchi]; - const scalarField& invDx = alphaf.patch().deltaCoeffs(); - const labelUList& faceCells = alphaf.patch().faceCells(); - - forAll(alphaf, facei) + const fvPatchField<scalar>& alphaPf = alpha.boundaryField()[patchi]; + const fvPatchField<scalar>& maskPf = mask_.boundaryField()[patchi]; + const fvPatchField<scalar>& sigmaPf = sigma.boundaryField()[patchi]; + const fvPatchField<scalar>& thetaPf = theta.boundaryField()[patchi]; + const scalarField& invDx = alphaPf.patch().deltaCoeffs(); + const labelUList& faceCells = alphaPf.patch().faceCells(); + + forAll(alphaPf, facei) { - if (maskf[facei] > 0.5) + if (maskPf[facei] > 0.5) { label cellO = faceCells[facei]; - if ((alpha[cellO] > 0.5) && (alphaf[facei] < 0.5)) + if ((alpha[cellO] > 0.5) && (alphaPf[facei] < 0.5)) { const vector n = gradAlpha[cellO] /(mag(gradAlpha[cellO]) + ROOTVSMALL); - scalar theta = cos(degToRad(distribution_->sample())); + const scalar cosTheta = cos(degToRad(thetaPf[facei])); force[cellO] += - Ccf_*n*sigma[cellO]*(1.0 - theta)/invDx[facei]; + Ccf_*n*sigmaPf[facei]*(1 - cosTheta)/invDx[facei]; } } } @@ -221,13 +219,15 @@ tmp<fvVectorMatrix> contactAngleForce::correct(volVectorField& U) force /= magSf; - if (owner_.regionMesh().time().writeTime()) + if (filmModel_.regionMesh().time().writeTime()) { tForce().write(); } - tmp<fvVectorMatrix> - tfvm(new fvVectorMatrix(U, dimForce/dimArea*dimVolume)); + tmp<fvVectorMatrix> tfvm + ( + new fvVectorMatrix(U, dimForce/dimArea*dimVolume) + ); tfvm.ref() += tForce; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.H similarity index 85% rename from src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.H rename to src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.H index 44e5efc176ec595744be9a7e689105c86495a9f3..4d2e86e174f4887837f95532c749adec90e9fd7d 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForce/contactAngleForce.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/contactAngleForce/contactAngleForce.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,10 +22,10 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::contactAngleForce + Foam::regionModels::surfaceFilmModels::contactAngleForce Description - Film contact angle force + Base-class for film contact angle force models. The effect of the contact angle force can be ignored over a specified distance from patches. @@ -39,8 +39,6 @@ SourceFiles #define contactAngleForce_H #include "force.H" -#include "distributionModel.H" -#include "Random.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -59,19 +57,11 @@ class contactAngleForce : public force { -private: - // Private Data //- Coefficient applied to the contact angle force scalar Ccf_; - //- Random number generator - Random rndGen_; - - //- Parcel size PDF model - const autoPtr<distributionModels::distributionModel> distribution_; - //- Mask over which force is applied volScalarField mask_; @@ -88,6 +78,12 @@ private: void operator=(const contactAngleForce&); +protected: + + //- Return the contact angle field + virtual tmp<volScalarField> theta() const = 0; + + public: //- Runtime type information @@ -99,7 +95,8 @@ public: //- Construct from surface film model contactAngleForce ( - surfaceFilmModel& owner, + const word& typeName, + surfaceFilmModel& film, const dictionary& dict ); @@ -110,10 +107,8 @@ public: // Member Functions - // Evolution - - //- Correct - virtual tmp<fvVectorMatrix> correct(volVectorField& U); + //- Correct + virtual tmp<fvVectorMatrix> correct(volVectorField& U); }; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.C new file mode 100644 index 0000000000000000000000000000000000000000..bcf86c018d7ec61bb64be59c1dd46d6168f65520 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.C @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "distributionContactAngleForce.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(distributionContactAngleForce, 0); +addToRunTimeSelectionTable(force, distributionContactAngleForce, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +distributionContactAngleForce::distributionContactAngleForce +( + surfaceFilmModel& film, + const dictionary& dict +) +: + contactAngleForce(typeName, film, dict), + rndGen_(), + distribution_ + ( + distributionModel::New + ( + coeffDict_.subDict("distribution"), + rndGen_ + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +distributionContactAngleForce::~distributionContactAngleForce() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +tmp<volScalarField> distributionContactAngleForce::theta() const +{ + tmp<volScalarField> ttheta + ( + new volScalarField + ( + IOobject + ( + typeName + ":theta", + filmModel_.time().timeName(), + filmModel_.regionMesh() + ), + filmModel_.regionMesh(), + dimensionedScalar("0", dimless, 0) + ) + ); + + volScalarField& theta = ttheta.ref(); + volScalarField::Internal& thetai = theta.ref(); + + forAll(thetai, celli) + { + thetai[celli] = distribution_->sample(); + } + + forAll(theta.boundaryField(), patchi) + { + if (!filmModel_.isCoupledPatch(patchi)) + { + fvPatchField<scalar>& thetaf = theta.boundaryFieldRef()[patchi]; + + forAll(thetaf, facei) + { + thetaf[facei] = distribution_->sample(); + } + } + } + + return ttheta; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.H new file mode 100644 index 0000000000000000000000000000000000000000..48ffcf5da8d6ac242021c988681c448a2ff3622d --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/distribution/distributionContactAngleForce.H @@ -0,0 +1,118 @@ +/*---------------------------------------------------------------------------* \ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::regionModels::surfaceFilmModels::distributionContactAngleForce + +Description + PDF distribution based film contact angle force + +See also + Foam::regionModels::surfaceFilmModels::contactAngleForce + Foam::distributionModel + +SourceFiles + distributionContactAngleForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef distributionContactAngleForce_H +#define distributionContactAngleForce_H + +#include "contactAngleForce.H" +#include "distributionModel.H" +#include "Random.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +/*---------------------------------------------------------------------------*\ + Class distributionContactAngleForce Declaration +\*---------------------------------------------------------------------------*/ + +class distributionContactAngleForce +: + public contactAngleForce +{ + // Private Data + + //- Random number generator + Random rndGen_; + + //- Parcel size PDF model + const autoPtr<distributionModel> distribution_; + + + // Private member functions + + //- Disallow default bitwise copy construct + distributionContactAngleForce(const distributionContactAngleForce&); + + //- Disallow default bitwise assignment + void operator=(const distributionContactAngleForce&); + + +protected: + + //- Return the contact angle field + virtual tmp<volScalarField> theta() const; + + +public: + + //- Runtime type information + TypeName("distributionContactAngle"); + + + // Constructors + + //- Construct from surface film model + distributionContactAngleForce + ( + surfaceFilmModel& film, + const dictionary& dict + ); + + + //- Destructor + virtual ~distributionContactAngleForce(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.C new file mode 100644 index 0000000000000000000000000000000000000000..e42d52007405571499c26eb35b9224be982e8d65 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.C @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "perturbedTemperatureDependentContactAngleForce.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(perturbedTemperatureDependentContactAngleForce, 0); +addToRunTimeSelectionTable +( + force, + perturbedTemperatureDependentContactAngleForce, + dictionary +); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +perturbedTemperatureDependentContactAngleForce:: +perturbedTemperatureDependentContactAngleForce +( + surfaceFilmModel& film, + const dictionary& dict +) +: + contactAngleForce(typeName, film, dict), + thetaPtr_(Function1<scalar>::New("theta", coeffDict_)), + rndGen_(label(0)), + distribution_ + ( + distributionModel::New + ( + coeffDict_.subDict("distribution"), + rndGen_ + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +perturbedTemperatureDependentContactAngleForce:: +~perturbedTemperatureDependentContactAngleForce() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +tmp<volScalarField> +perturbedTemperatureDependentContactAngleForce::theta() const +{ + tmp<volScalarField> ttheta + ( + new volScalarField + ( + IOobject + ( + typeName + ":theta", + filmModel_.time().timeName(), + filmModel_.regionMesh() + ), + filmModel_.regionMesh(), + dimensionedScalar("0", dimless, 0) + ) + ); + + volScalarField& theta = ttheta.ref(); + volScalarField::Internal& thetai = theta.ref(); + + const volScalarField& T = filmModel_.T(); + + // Initialize with the function of temperature + thetai.field() = thetaPtr_->value(T()); + + // Add the stochastic perturbation + forAll(thetai, celli) + { + thetai[celli] += distribution_->sample(); + } + + forAll(theta.boundaryField(), patchi) + { + if (!filmModel_.isCoupledPatch(patchi)) + { + fvPatchField<scalar>& thetaf = theta.boundaryFieldRef()[patchi]; + + // Initialize with the function of temperature + thetaf = thetaPtr_->value(T.boundaryField()[patchi]); + + // Add the stochastic perturbation + forAll(thetaf, facei) + { + thetaf[facei] += distribution_->sample(); + } + } + } + + return ttheta; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.H new file mode 100644 index 0000000000000000000000000000000000000000..3b7a2d99ed43713f5a4193b6d5c2ee23e720d4c4 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/perturbedTemperatureDependent/perturbedTemperatureDependentContactAngleForce.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::regionModels::surfaceFilmModels:: + perturbedTemperatureDependentContactAngleForce + +Description + Temperature dependent contact angle force with a stochastic perturbation + + The contact angle in degrees is specified as a Foam::Function1 type, to + enable the use of, e.g. contant, polynomial, table values and the + stochastic perturbation obtained from a + Foam::distributionModels::distributionModel + +See also + Foam::regionModels::surfaceFilmModels::contactAngleForce + Foam::regionModels::surfaceFilmModels::temperatureDependentContactAngleForce + Foam::regionModels::surfaceFilmModels::distributionContactAngleForce + Foam::Function1Types + Foam::distributionModel + +SourceFiles + perturbedTemperatureDependentContactAngleForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef perturbedTemperatureDependentContactAngleForce_H +#define perturbedTemperatureDependentContactAngleForce_H + +#include "contactAngleForce.H" +#include "Function1.H" +#include "distributionModel.H" +#include "Random.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +/*---------------------------------------------------------------------------*\ + Class perturbedTemperatureDependentContactAngleForce Declaration +\*---------------------------------------------------------------------------*/ + +class perturbedTemperatureDependentContactAngleForce +: + public contactAngleForce +{ + // Private Data + + //- Contact angle function + autoPtr<Function1<scalar>> thetaPtr_; + + //- Random number generator + Random rndGen_; + + //- Parcel size PDF model + const autoPtr<distributionModel> distribution_; + + + // Private member functions + + //- Disallow default bitwise copy construct + perturbedTemperatureDependentContactAngleForce + ( + const perturbedTemperatureDependentContactAngleForce& + ); + + //- Disallow default bitwise assignment + void operator=(const perturbedTemperatureDependentContactAngleForce&); + + +protected: + + //- Return the contact angle field + virtual tmp<volScalarField> theta() const; + + +public: + + //- Runtime type information + TypeName("perturbedTemperatureDependentContactAngle"); + + + // Constructors + + //- Construct from surface film model + perturbedTemperatureDependentContactAngleForce + ( + surfaceFilmModel& film, + const dictionary& dict + ); + + + //- Destructor + virtual ~perturbedTemperatureDependentContactAngleForce(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.C new file mode 100644 index 0000000000000000000000000000000000000000..1c7a51ad08ad4e0a73b8ce68841ed358e9f2485c --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.C @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "temperatureDependentContactAngleForce.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(temperatureDependentContactAngleForce, 0); +addToRunTimeSelectionTable +( + force, + temperatureDependentContactAngleForce, + dictionary +); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +temperatureDependentContactAngleForce::temperatureDependentContactAngleForce +( + surfaceFilmModel& film, + const dictionary& dict +) +: + contactAngleForce(typeName, film, dict), + thetaPtr_(Function1<scalar>::New("theta", coeffDict_)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +temperatureDependentContactAngleForce::~temperatureDependentContactAngleForce() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +tmp<volScalarField> temperatureDependentContactAngleForce::theta() const +{ + tmp<volScalarField> ttheta + ( + new volScalarField + ( + IOobject + ( + typeName + ":theta", + filmModel_.time().timeName(), + filmModel_.regionMesh() + ), + filmModel_.regionMesh(), + dimensionedScalar("0", dimless, 0) + ) + ); + + volScalarField& theta = ttheta.ref(); + + const volScalarField& T = filmModel_.T(); + + theta.ref().field() = thetaPtr_->value(T()); + + forAll(theta.boundaryField(), patchi) + { + if (!filmModel_.isCoupledPatch(patchi)) + { + theta.boundaryFieldRef()[patchi] = + thetaPtr_->value(T.boundaryField()[patchi]); + } + } + + return ttheta; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.H new file mode 100644 index 0000000000000000000000000000000000000000..ca15ec0c6ab21d138dac40311d1abf82e8c841a5 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/contactAngleForces/temperatureDependent/temperatureDependentContactAngleForce.H @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::regionModels::surfaceFilmModels::temperatureDependentContactAngleForce + +Description + Temperature dependent contact angle force + + The contact angle in degrees is specified as a Foam::Function1 type, to + enable the use of, e.g. contant, polynomial, table values. + +See also + Foam::regionModels::surfaceFilmModels::contactAngleForce + Foam::Function1Types + +SourceFiles + temperatureDependentContactAngleForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef temperatureDependentContactAngleForce_H +#define temperatureDependentContactAngleForce_H + +#include "contactAngleForce.H" +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +/*---------------------------------------------------------------------------*\ + Class temperatureDependentContactAngleForce Declaration +\*---------------------------------------------------------------------------*/ + +class temperatureDependentContactAngleForce +: + public contactAngleForce +{ + // Private Data + + //- Contact angle function + autoPtr<Function1<scalar>> thetaPtr_; + + + // Private member functions + + //- Disallow default bitwise copy construct + temperatureDependentContactAngleForce + ( + const temperatureDependentContactAngleForce& + ); + + //- Disallow default bitwise assignment + void operator=(const temperatureDependentContactAngleForce&); + + +protected: + + //- Return the contact angle field + virtual tmp<volScalarField> theta() const; + + +public: + + //- Runtime type information + TypeName("temperatureDependentContactAngle"); + + + // Constructors + + //- Construct from surface film model + temperatureDependentContactAngleForce + ( + surfaceFilmModel& film, + const dictionary& dict + ); + + + //- Destructor + virtual ~temperatureDependentContactAngleForce(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.C index 976a04913a3629bbeaa0ea61f80e9b645b714c6a..472c8b21c057092f4001e2e61dd9c47313059636 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,20 +41,20 @@ defineRunTimeSelectionTable(force, dictionary); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -force::force(surfaceFilmModel& owner) +force::force(surfaceFilmModel& film) : - filmSubModelBase(owner) + filmSubModelBase(film) {} force::force ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(film, dict, typeName, modelType) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.H index 9ca13614acedffae90377a9ddbd99779e190850a..000b7d9c41f5b8da9dc82263afa121310d4f387e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/force/force.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -82,22 +82,22 @@ public: force, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - force(surfaceFilmModel& owner); + force(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model force ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -107,7 +107,7 @@ public: //- Return a reference to the selected force model static autoPtr<force> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& modelType ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.C index 56a1454c46b35e48fdb6c2fc09a80d4ad6e4cddc..ea63cc2334c740a8c12a9a550dd438eea2434814 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -forceList::forceList(surfaceFilmModel& owner) +forceList::forceList(surfaceFilmModel& film) : PtrList<force>() {} @@ -44,7 +44,7 @@ forceList::forceList(surfaceFilmModel& owner) forceList::forceList ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : @@ -59,7 +59,7 @@ forceList::forceList forAll(models, i) { - set(i, force::New(owner, dict, models[i])); + set(i, force::New(film, dict, models[i])); } } else diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.H index e09dc14d7104db1d986854248607273508752099..55ae056d3f52e9ac90a7fae827f4128019a7d48e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/forceList/forceList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::forceList + Foam::regionModels::surfaceFilmModels::forceList Description List container for film sources @@ -60,12 +60,12 @@ public: // Constructors //- Construct null - forceList(surfaceFilmModel& owner); + forceList(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model forceList ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.C index e33127c352ad38246a837380ee4a1a91074bceb9..be30e2c274775b3c8f0c6deed4e2308f83ee5f29 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,11 +45,11 @@ addToRunTimeSelectionTable(force, thermocapillaryForce, dictionary); thermocapillaryForce::thermocapillaryForce ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - force(owner) + force(film) {} @@ -63,8 +63,8 @@ thermocapillaryForce::~thermocapillaryForce() tmp<fvVectorMatrix> thermocapillaryForce::correct(volVectorField& U) { - const volScalarField& alpha = owner_.alpha(); - const volScalarField& sigma = owner_.sigma(); + const volScalarField& alpha = filmModel_.alpha(); + const volScalarField& sigma = filmModel_.sigma(); tmp<fvVectorMatrix> tfvm(new fvVectorMatrix(U, dimForce/dimArea*dimVolume)); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.H index 85e404f4b2fa346cdee560b168b4095b9b01f088..283ebbf9b15f017757d2148c5c053ca944579f9d 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/force/thermocapillaryForce/thermocapillaryForce.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thermocapillaryForce + Foam::regionModels::surfaceFilmModels::thermocapillaryForce Description Thermocapillary force @@ -76,7 +76,7 @@ public: //- Construct from surface film model thermocapillaryForce ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.C index 611849316e4100bb71f00c765e49cd9bddf343c0..fd7fd0cc81b516fe333273deed219b11dc966baf 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,15 +45,15 @@ addToRunTimeSelectionTable(injectionModel, BrunDrippingInjection, dictionary); BrunDrippingInjection::BrunDrippingInjection ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - injectionModel(type(), owner, dict), + injectionModel(type(), film, dict), ubarStar_(coeffDict_.lookupOrDefault("ubarStar", 1.62208)), dCoeff_(coeffDict_.lookupOrDefault("dCoeff", 3.3)), deltaStable_(coeffDict_.lookupOrDefault("deltaStable", scalar(0))), - diameter_(owner.regionMesh().nCells(), -1.0) + diameter_(film.regionMesh().nCells(), -1.0) {} @@ -73,7 +73,7 @@ void BrunDrippingInjection::correct ) { const kinematicSingleLayer& film = - refCast<const kinematicSingleLayer>(this->owner()); + refCast<const kinematicSingleLayer>(this->film()); // Calculate available dripping mass tmp<volScalarField> tsinAlpha(film.gNorm()/mag(film.g())); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.H index 00f23444123610b29043e6631bb1ec3aea9a9227..6c08188bb026bcb403d90622231319d39cacb691 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/BrunDrippingInjection/BrunDrippingInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::BrunDrippingInjection + Foam::regionModels::surfaceFilmModels::BrunDrippingInjection Description Film Dripping mass transfer model. @@ -118,7 +118,7 @@ public: //- Construct from surface film model BrunDrippingInjection ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C index bedaa4a9e5181bf72b7b87efdf9d1930169ec456..9c97df0880f94fc4eb33a1bf8afd9f2f33d13920 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ tmp<volScalarField> curvatureSeparation::calcInvR1 /* tmp<volScalarField> tinvR1 ( - new volScalarField("invR1", fvc::div(owner().nHat())) + new volScalarField("invR1", fvc::div(film().nHat())) ); */ @@ -82,7 +82,7 @@ tmp<volScalarField> curvatureSeparation::calcInvR1 // apply defined patch radii const scalar rMin = 1e-6; - const fvMesh& mesh = owner().regionMesh(); + const fvMesh& mesh = film().regionMesh(); const polyBoundaryMesh& pbm = mesh.boundaryMesh(); forAll(definedPatchRadii_, i) { @@ -115,7 +115,7 @@ tmp<scalarField> curvatureSeparation::calcCosAngle const surfaceScalarField& phi ) const { - const fvMesh& mesh = owner().regionMesh(); + const fvMesh& mesh = film().regionMesh(); const vectorField nf(mesh.Sf()/mesh.magSf()); const labelUList& own = mesh.owner(); const labelUList& nbr = mesh.neighbour(); @@ -220,15 +220,15 @@ tmp<scalarField> curvatureSeparation::calcCosAngle curvatureSeparation::curvatureSeparation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - injectionModel(type(), owner, dict), - gradNHat_(fvc::grad(owner.nHat())), + injectionModel(type(), film, dict), + gradNHat_(fvc::grad(film.nHat())), deltaByR1Min_(coeffDict_.lookupOrDefault<scalar>("deltaByR1Min", 0.0)), definedPatchRadii_(), - magG_(mag(owner.g().value())), + magG_(mag(film.g().value())), gHat_(Zero) { if (magG_ < ROOTVSMALL) @@ -238,10 +238,10 @@ curvatureSeparation::curvatureSeparation << exit(FatalError); } - gHat_ = owner.g().value()/magG_; + gHat_ = film.g().value()/magG_; List<Tuple2<word, scalar>> prIn(coeffDict_.lookup("definedPatchRadii")); - const wordList& allPatchNames = owner.regionMesh().boundaryMesh().names(); + const wordList& allPatchNames = film.regionMesh().boundaryMesh().names(); DynamicList<Tuple2<label, scalar>> prData(allPatchNames.size()); @@ -284,7 +284,7 @@ void curvatureSeparation::correct ) { const kinematicSingleLayer& film = - refCast<const kinematicSingleLayer>(this->owner()); + refCast<const kinematicSingleLayer>(this->film()); const fvMesh& mesh = film.regionMesh(); const volScalarField& delta = film.delta(); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H index 26d8fa57a0ef6b80e9368f9bf21d75f859685e30..9ee2cd0a4c902c08b1fe3956d2dde4b3205ca51a 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::curvatureSeparation + Foam::regionModels::surfaceFilmModels::curvatureSeparation Description Curvature film separation model @@ -121,7 +121,7 @@ public: //- Construct from surface film model curvatureSeparation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C index 3a1e40b4949aefc687560257022eb5806617154e..7a534b11043eaf42b5dfe3f1f5b9fc465d6af085 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,23 +50,23 @@ addToRunTimeSelectionTable(injectionModel, drippingInjection, dictionary); drippingInjection::drippingInjection ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - injectionModel(type(), owner, dict), + injectionModel(type(), film, dict), deltaStable_(readScalar(coeffDict_.lookup("deltaStable"))), particlesPerParcel_(readScalar(coeffDict_.lookup("particlesPerParcel"))), rndGen_(), parcelDistribution_ ( - distributionModels::distributionModel::New + distributionModel::New ( coeffDict_.subDict("parcelDistribution"), rndGen_ ) ), - diameter_(owner.regionMesh().nCells(), -1.0) + diameter_(film.regionMesh().nCells(), -1.0) {} @@ -86,7 +86,7 @@ void drippingInjection::correct ) { const kinematicSingleLayer& film = - refCast<const kinematicSingleLayer>(this->owner()); + refCast<const kinematicSingleLayer>(this->film()); const scalar pi = constant::mathematical::pi; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H index 277006fcafcea1d5d85815252d65dbde96f74d84..46476c822b11b9b40dccfb8521a3e475f5ae8b33 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,10 +22,10 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::drippingInjection + Foam::regionModels::surfaceFilmModels::drippingInjection Description - Film Dripping mass transfer model. + Film dripping mass transfer model. If the film mass exceeds that needed to generate a valid parcel, the equivalent mass is removed from the film. @@ -87,7 +87,7 @@ protected: Random rndGen_; //- Parcel size PDF model - const autoPtr<distributionModels::distributionModel> + const autoPtr<distributionModel> parcelDistribution_; //- Diameters of particles to inject into the dripping @@ -105,7 +105,7 @@ public: //- Construct from surface film model drippingInjection ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C index 12656a7300da33e1f41e938e1fca606a42944c8d..585ed54ddc4d35a0278ab50b093a84f6c888bea6 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,9 +49,9 @@ void injectionModel::addToInjectedMass(const scalar dMass) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -injectionModel::injectionModel(surfaceFilmModel& owner) +injectionModel::injectionModel(surfaceFilmModel& film) : - filmSubModelBase(owner), + filmSubModelBase(film), injectedMass_(0.0) {} @@ -59,11 +59,11 @@ injectionModel::injectionModel(surfaceFilmModel& owner) injectionModel::injectionModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType), + filmSubModelBase(film, dict, typeName, modelType), injectedMass_(0.0) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H index b365ff737c3fb9edfe501311ee93ca53f484e9aa..36d7a8bfd3b8426f5fa2a9b4cacc1dbbc126d225 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -98,23 +98,23 @@ public: injectionModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - injectionModel(surfaceFilmModel& owner); + injectionModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model injectionModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -124,7 +124,7 @@ public: //- Return a reference to the selected injection model static autoPtr<injectionModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, const word& mdoelType ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C index f860276b7af326546bc558a72fe026cce799960c..e33a5262a697f3824f9ffeac1374145957f3f112 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,16 +36,16 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -injectionModelList::injectionModelList(surfaceFilmModel& owner) +injectionModelList::injectionModelList(surfaceFilmModel& film) : PtrList<injectionModel>(), - filmSubModelBase(owner) + filmSubModelBase(film) {} injectionModelList::injectionModelList ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : @@ -53,12 +53,12 @@ injectionModelList::injectionModelList filmSubModelBase ( "injectionModelList", - owner, + film, dict, "injectionModelList", "injectionModelList" ), - massInjected_(owner.intCoupledPatchIDs().size(), 0.0) + massInjected_(film.intCoupledPatchIDs().size(), 0.0) { const wordList activeModels(dict.lookup("injectionModels")); @@ -77,7 +77,7 @@ injectionModelList::injectionModelList forAllConstIter(wordHashSet, models, iter) { const word& model = iter.key(); - set(i, injectionModel::New(owner, dict, model)); + set(i, injectionModel::New(film, dict, model)); i++; } } @@ -114,7 +114,7 @@ void injectionModelList::correct massToInject.correctBoundaryConditions(); diameterToInject.correctBoundaryConditions(); - const labelList& patchIDs = owner().intCoupledPatchIDs(); + const labelList& patchIDs = film().intCoupledPatchIDs(); forAll(patchIDs, i) { @@ -127,7 +127,7 @@ void injectionModelList::correct void injectionModelList::info(Ostream& os) { - const polyBoundaryMesh& pbm = owner().regionMesh().boundaryMesh(); + const polyBoundaryMesh& pbm = film().regionMesh().boundaryMesh(); scalar injectedMass = 0; scalarField patchInjectedMasses(pbm.size(), 0); @@ -157,7 +157,7 @@ void injectionModelList::info(Ostream& os) Pstream::listCombineGather(mass, plusEqOp<scalar>()); mass += mass0; - const labelList& patchIDs = owner().intCoupledPatchIDs(); + const labelList& patchIDs = film().intCoupledPatchIDs(); forAll(patchIDs, i) { @@ -166,7 +166,7 @@ void injectionModelList::info(Ostream& os) << mass[i] << endl; } - if (owner().time().writeTime()) + if (film().time().writeTime()) { setBaseProperty("massInjected", mass); massInjected_ = 0.0; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H index 0feb88aeefd6918ff6d9aa0d78aa51c780adebec..4976743206420fe2b22cb093075b2bc7f62f1200 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::injectionModelList + Foam::regionModels::surfaceFilmModels::injectionModelList Description List container for film injection models @@ -79,12 +79,12 @@ public: // Constructors //- Construct null - injectionModelList(surfaceFilmModel& owner); + injectionModelList(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model injectionModelList ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C index cd0e6a2fb85e1725948eb70bc519d69cf633e272..edd58b40045fe8728c0c49316d6f88522cd1439d 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,14 +44,14 @@ addToRunTimeSelectionTable(injectionModel, patchInjection, dictionary); patchInjection::patchInjection ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - injectionModel(type(), owner, dict), + injectionModel(type(), film, dict), deltaStable_(coeffDict_.lookupOrDefault<scalar>("deltaStable", 0.0)) { - const polyBoundaryMesh& pbm = owner.regionMesh().boundaryMesh(); + const polyBoundaryMesh& pbm = film.regionMesh().boundaryMesh(); patchIDs_.setSize(pbm.size()); if (coeffDict_.found("patches")) @@ -110,11 +110,11 @@ void patchInjection::correct // Do not correct if no patches selected if (!patchIDs_.size()) return; - const scalarField& delta = owner().delta(); - const scalarField& rho = owner().rho(); - const scalarField& magSf = owner().magSf(); + const scalarField& delta = film().delta(); + const scalarField& rho = film().rho(); + const scalarField& magSf = film().magSf(); - const polyBoundaryMesh& pbm = owner().regionMesh().boundaryMesh(); + const polyBoundaryMesh& pbm = film().regionMesh().boundaryMesh(); forAll(patchIDs_, pidi) { diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.H index 1e1bc813f8ed25872081981af4c81485eb23fa20..d0880c071193a648d89f5c6a1ecc5cc8e359d4f4 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,7 +86,7 @@ public: // Constructors //- Construct from surface film model - patchInjection(surfaceFilmModel& owner, const dictionary& dict); + patchInjection(surfaceFilmModel& film, const dictionary& dict); //- Destructor diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.C index 807ca3ad9111b04d59dee6e5522d6d4b537e3745..64c6be61185044466ef2786766c6e25feb34839d 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,34 +51,34 @@ addToRunTimeSelectionTable constantRadiation::constantRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmRadiationModel(typeName, owner, dict), - QrConst_ + filmRadiationModel(typeName, film, dict), + qrConst_ ( IOobject ( - typeName + ":QrConst", - owner.time().timeName(), - owner.regionMesh(), + typeName + ":qrConst", + film.time().timeName(), + film.regionMesh(), IOobject::MUST_READ, IOobject::AUTO_WRITE ), - owner.regionMesh() + film.regionMesh() ), mask_ ( IOobject ( typeName + ":mask", - owner.time().timeName(), - owner.regionMesh(), + film.time().timeName(), + film.regionMesh(), IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("one", dimless, 1.0) ), absorptivity_(readScalar(coeffDict_.lookup("absorptivity"))), @@ -110,25 +110,25 @@ tmp<volScalarField> constantRadiation::Shs() IOobject ( typeName + ":Shs", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0) ) ); - const scalar time = owner().time().value(); + const scalar time = film().time().value(); if ((time >= timeStart_) && (time <= timeStart_ + duration_)) { scalarField& Shs = tShs.ref(); - const scalarField& Qr = QrConst_; - const scalarField& alpha = owner_.alpha(); + const scalarField& qr = qrConst_; + const scalarField& alpha = filmModel_.alpha(); - Shs = mask_*Qr*alpha*absorptivity_; + Shs = mask_*qr*alpha*absorptivity_; } return tShs; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.H index b1e3b536ebfc60e67de9a86abe4710d2984f2a08..e342bd880c3f9c9135785ea203768cb0880624ee 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/constantRadiation/constantRadiation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantRadiation + Foam::regionModels::surfaceFilmModels::constantRadiation Description Film constant radiation model. The constant radiative flux is specified @@ -63,7 +63,7 @@ private: // Private data //- Constant radiative flux [kg/s3] - volScalarField QrConst_; + volScalarField qrConst_; //- Radiation mask volScalarField mask_; @@ -98,7 +98,7 @@ public: //- Construct from surface film model and dictionary constantRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -115,7 +115,7 @@ public: virtual void correct(); //- Return the radiation sensible enthalpy source - // Also updates QrNet + // Also updates qrNet virtual tmp<volScalarField> Shs(); }; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.C index 34c8ffff1d050ae8d5ec10e951c07e49d4628dda..3b0dabe7d1c5e1ffdad2a58c470211f42157e2a7 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,20 +41,20 @@ defineRunTimeSelectionTable(filmRadiationModel, dictionary); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -filmRadiationModel::filmRadiationModel(surfaceFilmModel& owner) +filmRadiationModel::filmRadiationModel(surfaceFilmModel& film) : - filmSubModelBase(owner) + filmSubModelBase(film) {} filmRadiationModel::filmRadiationModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(film, dict, typeName, modelType) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.H index b53dc65921410b35ba026844ab34d7500214b84a..eccd964c62858330166d748414e98c22de84c0ed 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/filmRadiationModel/filmRadiationModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::filmRadiationModel + Foam::regionModels::surfaceFilmModels::filmRadiationModel Description Base class for film radiation models @@ -81,22 +81,22 @@ public: filmRadiationModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - filmRadiationModel(surfaceFilmModel& owner); + filmRadiationModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model filmRadiationModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -106,7 +106,7 @@ public: //- Return a reference to the selected phase change model static autoPtr<filmRadiationModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.C index e46dd872e4a9966ee357ac87354d01a36a736d9d..5dd84d7f6ec2a4150bdd22d1c446a36234c4de62 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,11 +51,11 @@ addToRunTimeSelectionTable noRadiation::noRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmRadiationModel(owner) + filmRadiationModel(film) {} @@ -68,9 +68,7 @@ noRadiation::~noRadiation() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void noRadiation::correct() -{ - // do nothing -} +{} tmp<volScalarField> noRadiation::Shs() @@ -82,12 +80,12 @@ tmp<volScalarField> noRadiation::Shs() IOobject ( typeName + ":Shs", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0) ) ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.H index 5e6b373f0f65032603a70b13d016d0ccf3767c85..605104320f9ee7b74371c6bec9db3e73d266d898 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/noRadiation/noRadiation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::noRadiation + Foam::regionModels::surfaceFilmModels::noRadiation Description Dummy radiation model for 'none' option @@ -77,7 +77,7 @@ public: //- Construct from surface film model and dictionary noRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.C index 55ea60d3224cf3455e7020ce0e0b4459e093edb0..ec9236d802e5487659a49a08ca0a2691954cf500 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,24 +51,24 @@ addToRunTimeSelectionTable primaryRadiation::primaryRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmRadiationModel(typeName, owner, dict), + filmRadiationModel(typeName, film, dict), QinPrimary_ ( IOobject ( "Qin", // same name as Qin on primary region to enable mapping - owner.time().timeName(), - owner.regionMesh(), + film.time().timeName(), + film.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0), - owner.mappedPushedFieldPatchTypes<scalar>() + film.mappedPushedFieldPatchTypes<scalar>() ) {} @@ -97,19 +97,19 @@ tmp<volScalarField> primaryRadiation::Shs() IOobject ( typeName + ":Shs", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0) ) ); scalarField& Shs = tShs.ref(); const scalarField& QinP = QinPrimary_; - const scalarField& alpha = owner_.alpha(); + const scalarField& alpha = filmModel_.alpha(); Shs = QinP*alpha; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.H index b6568c5c21880e0d886acbe0af116d1f45a38de5..b93561d49e83bc8249c7d847a3701ceae9005727 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/primaryRadiation/primaryRadiation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::primaryRadiation + Foam::regionModels::surfaceFilmModels::primaryRadiation Description Radiation model whereby the radiative heat flux is mapped from the primary @@ -84,7 +84,7 @@ public: //- Construct from surface film model and dictionary primaryRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -101,7 +101,7 @@ public: virtual void correct(); //- Return the radiation sensible enthalpy source - // Also updates QrNet + // Also updates qrNet virtual tmp<volScalarField> Shs(); }; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.C index d8525ce4a03ff367a3badc468ef1ccbf848057a7..f333752847f435abf238e5af01eea0e2c0c97156 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,36 +52,36 @@ addToRunTimeSelectionTable standardRadiation::standardRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmRadiationModel(typeName, owner, dict), + filmRadiationModel(typeName, film, dict), QinPrimary_ ( IOobject ( "Qin", // same name as Qin on primary region to enable mapping - owner.time().timeName(), - owner.regionMesh(), + film.time().timeName(), + film.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0), - owner.mappedPushedFieldPatchTypes<scalar>() + film.mappedPushedFieldPatchTypes<scalar>() ), - QrNet_ + qrNet_ ( IOobject ( - "QrNet", - owner.time().timeName(), - owner.regionMesh(), + "qrNet", + film.time().timeName(), + film.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0), zeroGradientFvPatchScalarField::typeName ), @@ -100,7 +100,7 @@ standardRadiation::~standardRadiation() void standardRadiation::correct() { - // Transfer Qr from primary region + // Transfer qr from primary region QinPrimary_.correctBoundaryConditions(); } @@ -114,26 +114,26 @@ tmp<volScalarField> standardRadiation::Shs() IOobject ( typeName + ":Shs", - owner().time().timeName(), - owner().regionMesh(), + film().time().timeName(), + film().regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner().regionMesh(), + film().regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0) ) ); scalarField& Shs = tShs.ref(); const scalarField& QinP = QinPrimary_; - const scalarField& delta = owner_.delta(); - const scalarField& alpha = owner_.alpha(); + const scalarField& delta = filmModel_.delta(); + const scalarField& alpha = filmModel_.alpha(); Shs = beta_*QinP*alpha*(1.0 - exp(-kappaBar_*delta)); - // Update net Qr on local region - QrNet_.primitiveFieldRef() = QinP - Shs; - QrNet_.correctBoundaryConditions(); + // Update net qr on local region + qrNet_.primitiveFieldRef() = QinP - Shs; + qrNet_.correctBoundaryConditions(); return tShs; } diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.H index b5b60facc93bf9e422ec1d8f118d7417cc17e3c0..7375ef79ec9e3e75bfd8b01ae807f27565c3d97f 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmRadiationModel/standardRadiation/standardRadiation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::standardRadiation + Foam::regionModels::surfaceFilmModels::standardRadiation Description Standard radiation model @@ -63,7 +63,7 @@ private: volScalarField QinPrimary_; //- Remaining radiative flux after removing local contribution - volScalarField QrNet_; + volScalarField qrNet_; // Model coefficients @@ -95,7 +95,7 @@ public: //- Construct from surface film model and dictionary standardRadiation ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -112,7 +112,7 @@ public: virtual void correct(); //- Return the radiation sensible enthalpy source - // Also updates QrNet + // Also updates qrNet virtual tmp<volScalarField> Shs(); }; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.C index 22598e0140c29104b5399a304918d45ed25917ab..76abe99b2397bb1358dfaae1f99c1e4ed5f91d1e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,13 +51,13 @@ addToRunTimeSelectionTable ArrheniusViscosity::ArrheniusViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ) : - filmViscosityModel(typeName, owner, dict, mu), - viscosity_(filmViscosityModel::New(owner, coeffDict_, mu)), + filmViscosityModel(typeName, film, dict, mu), + viscosity_(filmViscosityModel::New(film, coeffDict_, mu)), k1_("k1", dimTemperature, coeffDict_), k2_("k2", dimTemperature, coeffDict_), Tref_("Tref", dimTemperature, coeffDict_) diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.H index ddeed31c451e4c163b7aad71050cf3522fe24c4f..079cfd588a5f8a13a919d61df04597319afe05e0 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/ArrheniusViscosity/ArrheniusViscosity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::ArrheniusViscosity + Foam::regionModels::surfaceFilmModels::ArrheniusViscosity Description The Arrhenius temperature-dependent viscosity model multiplies the viscosity @@ -100,7 +100,7 @@ public: //- Construct from surface film model ArrheniusViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.C index d1f47f17c535ecb0e355b690700ecf5cb0908eab..b3b489c42ae2ebb1bcc4d8b738a3a781844198bb 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,12 +50,12 @@ addToRunTimeSelectionTable constantViscosity::constantViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ) : - filmViscosityModel(typeName, owner, dict, mu), + filmViscosityModel(typeName, film, dict, mu), mu0_("mu0", dimDynamicViscosity, coeffDict_) { mu_ == mu0_; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.H index bca2c195d6de053a57e5feabd7778e9e7e2154a0..c93d0dddb111a85064bb09709d1d428d73023ccd 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/constantViscosity/constantViscosity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantViscosity + Foam::regionModels::surfaceFilmModels::constantViscosity Description Constant viscosity model @@ -83,7 +83,7 @@ public: //- Construct from surface film model constantViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.C index d2f861ab96c480fb45fa4de7ab630412bcce7d94..6167655809856f67bb1d0f6c852ba48c002ddd78 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,12 +44,12 @@ defineRunTimeSelectionTable(filmViscosityModel, dictionary); filmViscosityModel::filmViscosityModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ) : - filmSubModelBase(owner, dict, typeName, modelType), + filmSubModelBase(film, dict, typeName, modelType), mu_(mu) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.H index 38a7272e074847f7c6de1036a4844da51b21a579..042ea759bd666cacbbc6eba10917af003bcf5d02 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/filmViscosityModel/filmViscosityModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::filmViscosityModel + Foam::regionModels::surfaceFilmModels::filmViscosityModel Description Base class for surface film viscosity models @@ -90,11 +90,11 @@ public: filmViscosityModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ), - (owner, dict, mu) + (film, dict, mu) ); // Constructors @@ -103,7 +103,7 @@ public: filmViscosityModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); @@ -114,7 +114,7 @@ public: //- Return a reference to the selected phase change model static autoPtr<filmViscosityModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.C index 2aaad94c48879d81a8d5f01ac5e6e8bc14df36ea..de00fbee45850a3036622323254788db51df945f 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,12 +51,12 @@ addToRunTimeSelectionTable liquidViscosity::liquidViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ) : - filmViscosityModel(typeName, owner, dict, mu) + filmViscosityModel(typeName, film, dict, mu) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.H index 8004c541fb5ba2650e9139064b99a8ce4e1d7ceb..1614fade8e6ed7fb5c6aa925b346877a1fcccac5 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/liquidViscosity/liquidViscosity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::liquidViscosity + Foam::regionModels::surfaceFilmModels::liquidViscosity Description liquidViscosity viscosity model @@ -82,7 +82,7 @@ public: //- Construct from surface film model liquidViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.C index 33a124b0f1f18dbc96d2910af1719d3d9dbe46f0..7a09b686ab4770a6cc55b149f36a947c5fdb8c82 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,12 +57,12 @@ addToRunTimeSelectionTable thixotropicViscosity::thixotropicViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ) : - filmViscosityModel(typeName, owner, dict, mu), + filmViscosityModel(typeName, film, dict, mu), a_("a", dimless/dimTime, coeffDict_), b_("b", dimless, coeffDict_), d_("d", dimless, coeffDict_), @@ -75,12 +75,12 @@ thixotropicViscosity::thixotropicViscosity IOobject ( typeName + ":lambda", - owner.regionMesh().time().timeName(), - owner.regionMesh(), + film.regionMesh().time().timeName(), + film.regionMesh(), IOobject::MUST_READ, IOobject::AUTO_WRITE ), - owner.regionMesh() + film.regionMesh() ) { lambda_.min(1.0); @@ -115,7 +115,7 @@ void thixotropicViscosity::correct const volScalarField& deltaRho = film.deltaRho(); const surfaceScalarField& phi = film.phi(); const volScalarField& alpha = film.alpha(); - const Time& runTime = this->owner().regionMesh().time(); + const Time& runTime = this->film().regionMesh().time(); // Shear rate volScalarField gDot("gDot", alpha*mag(U - Uw)/(delta + film.deltaSmall())); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.H index 78661661a6aa43a172bc3da43098a848be5647c5..ff2b3d0c3b32ac0d49c4f19e681e8f7b2f0deebf 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/thixotropicViscosity/thixotropicViscosity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thixotropicViscosity + Foam::regionModels::surfaceFilmModels::thixotropicViscosity Description Thixotropic viscosity model based on the evolution of the structural @@ -140,7 +140,7 @@ public: //- Construct from surface film model thixotropicViscosity ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict, volScalarField& mu ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.C b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.C index 78769a9bdcb4cb219ede9dec8e0072d8bc67d145..605d126b002fa54d6fb7d64b496b9e230339916e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,11 +51,11 @@ addToRunTimeSelectionTable constantHeatTransfer::constantHeatTransfer ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - heatTransferModel(typeName, owner, dict), + heatTransferModel(typeName, film, dict), c0_(readScalar(coeffDict_.lookup("c0"))) {} @@ -69,9 +69,7 @@ constantHeatTransfer::~constantHeatTransfer() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void constantHeatTransfer::correct() -{ - // do nothing -} +{} tmp<volScalarField> constantHeatTransfer::h() const @@ -83,13 +81,13 @@ tmp<volScalarField> constantHeatTransfer::h() const IOobject ( "htc", - owner_.time().timeName(), - owner_.regionMesh(), + filmModel_.time().timeName(), + filmModel_.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE, false ), - owner_.regionMesh(), + filmModel_.regionMesh(), dimensionedScalar ( "c0", diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.H b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.H index f8b1c60a2637e57459cbced00a3fd970aa2f9931..6fc13fbf5e2e6e0ccf153c38c4bf3a9fe3b542c4 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/constantHeatTransfer/constantHeatTransfer.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::constantHeatTransfer + Foam::regionModels::surfaceFilmModels::constantHeatTransfer Description Constant heat transfer model @@ -83,7 +83,7 @@ public: //- Construct from surface film model and dictionary constantHeatTransfer ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.C index 6ec53f76cde21debac91dbc8e4e9fb6bd349b5e4..8fcff6baee24330f899a7510c46ed576ffd8f913 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,21 +43,21 @@ defineRunTimeSelectionTable(heatTransferModel, dictionary); heatTransferModel::heatTransferModel ( - surfaceFilmModel& owner + surfaceFilmModel& film ) : - filmSubModelBase(owner) + filmSubModelBase(film) {} heatTransferModel::heatTransferModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(film, dict, typeName, modelType) {} diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.H b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.H index 646c2d734fdb348951c3534d199bf7ecaecbab4e..80d87b7e6d277ef64b6cdbf7e8de67ab13e0cad5 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/heatTransferModel/heatTransferModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::heatTransferModel + Foam::regionModels::surfaceFilmModels::heatTransferModel Description Base class for film heat transfer models @@ -81,22 +81,22 @@ public: heatTransferModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - heatTransferModel(surfaceFilmModel& owner); + heatTransferModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model heatTransferModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -106,7 +106,7 @@ public: //- Return a reference to the selected phase change model static autoPtr<heatTransferModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.C b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.C index 3a9da6d01cf92d2d09a278756897dcc5eb590d8f..47795db101a39a53f9e3b53eb64466e6888abcd8 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,36 +52,36 @@ addToRunTimeSelectionTable mappedConvectiveHeatTransfer::mappedConvectiveHeatTransfer ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - heatTransferModel(owner), + heatTransferModel(film), htcConvPrimary_ ( IOobject ( "htcConv", - owner.time().timeName(), - owner.primaryMesh(), + film.time().timeName(), + film.primaryMesh(), IOobject::MUST_READ, IOobject::AUTO_WRITE ), - owner.primaryMesh() + film.primaryMesh() ), htcConvFilm_ ( IOobject ( htcConvPrimary_.name(), // must have same name as above for mapping - owner.time().timeName(), - owner.regionMesh(), + film.time().timeName(), + film.regionMesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimMass/pow3(dimTime)/dimTemperature, 0.0), - owner.mappedPushedFieldPatchTypes<scalar>() + film.mappedPushedFieldPatchTypes<scalar>() ) { // Update the primary-side convective heat transfer coefficient diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.H b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.H index 6de4b004efeb73e8184d63563eaaa089cecb474a..2016eb7b72d3f9ffec30bb5d589992ccb8824d37 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/heatTransferModel/mappedConvectiveHeatTransfer/mappedConvectiveHeatTransfer.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::mappedConvectiveHeatTransfer + Foam::regionModels::surfaceFilmModels::mappedConvectiveHeatTransfer Description Convective heat transfer model based on a re-working of a Nusselt number @@ -89,7 +89,7 @@ public: //- Construct from surface film model and dictionary mappedConvectiveHeatTransfer ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C index bb9e5b9ccd7ee2c247655653760572aeac883cbe..e21ce35c31bbeffd1b5aa047f8b0dba8990c8d1c 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,11 +44,11 @@ addToRunTimeSelectionTable(phaseChangeModel, noPhaseChange, dictionary); noPhaseChange::noPhaseChange ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& ) : - phaseChangeModel(owner) + phaseChangeModel(film) {} @@ -73,9 +73,7 @@ void noPhaseChange::correctModel scalarField&, scalarField& ) -{ - // do nothing -} +{} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H index 65a3a566369f702c8fa89130aa7b75e314d6eabf..9fbe036bfcc6ea4b490d2714e94307ec7a5a84e1 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::noPhaseChange + Foam::regionModels::surfaceFilmModels::noPhaseChange Description Dummy phase change model for 'none' @@ -74,7 +74,7 @@ public: // Constructors //- Construct from surface film model - noPhaseChange(surfaceFilmModel& owner, const dictionary& dict); + noPhaseChange(surfaceFilmModel& film, const dictionary& dict); //- Destructor diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C index 44325cc0b2aaae9dc8eb3dfbea263793a4c8838e..f7ddc884dfd7faca1b3807e4afd7346870059d67 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,10 +43,10 @@ defineRunTimeSelectionTable(phaseChangeModel, dictionary); phaseChangeModel::phaseChangeModel ( - surfaceFilmModel& owner + surfaceFilmModel& film ) : - filmSubModelBase(owner), + filmSubModelBase(film), latestMassPC_(0.0), totalMassPC_(0.0) {} @@ -55,11 +55,11 @@ phaseChangeModel::phaseChangeModel phaseChangeModel::phaseChangeModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType), + filmSubModelBase(film, dict, typeName, modelType), latestMassPC_(0.0), totalMassPC_(0.0) {} @@ -114,7 +114,7 @@ void phaseChangeModel::info(Ostream& os) const { const scalar massPCRate = returnReduce(latestMassPC_, sumOp<scalar>()) - /owner_.time().deltaTValue(); + /filmModel_.time().deltaTValue(); scalar phaseChangeMass = getModelProperty<scalar>("phaseChangeMass"); phaseChangeMass += returnReduce(totalMassPC_, sumOp<scalar>()); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H index 5ab77edcf53afba265a9062f1234f9d95fb9bf8d..7a59ad4d477c671405d74624383e1012a65b1d38 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::phaseChangeModel + Foam::regionModels::surfaceFilmModels::phaseChangeModel Description Base class for surface film phase change models @@ -93,22 +93,22 @@ public: phaseChangeModel, dictionary, ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ), - (owner, dict) + (film, dict) ); // Constructors //- Construct null - phaseChangeModel(surfaceFilmModel& owner); + phaseChangeModel(surfaceFilmModel& film); //- Construct from type name, dictionary and surface film model phaseChangeModel ( const word& modelType, - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); @@ -118,7 +118,7 @@ public: //- Return a reference to the selected phase change model static autoPtr<phaseChangeModel> New ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C index f5b5b36f59983888af9e3caa2ad8ffe499fa271d..93239be248e1435b846e0951792a11d27f1a1560 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,11 +51,11 @@ addToRunTimeSelectionTable solidification::solidification ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - phaseChangeModel(typeName, owner, dict), + phaseChangeModel(typeName, film, dict), T0_(readScalar(coeffDict_.lookup("T0"))), maxSolidificationFrac_ ( @@ -76,12 +76,12 @@ solidification::solidification IOobject ( typeName + ":mass", - owner.regionMesh().time().timeName(), - owner.regionMesh(), + film.regionMesh().time().timeName(), + film.regionMesh(), IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimMass, 0.0), zeroGradientFvPatchScalarField::typeName ), @@ -90,12 +90,12 @@ solidification::solidification IOobject ( typeName + ":thickness", - owner.regionMesh().time().timeName(), - owner.regionMesh(), + film.regionMesh().time().timeName(), + film.regionMesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), - owner.regionMesh(), + film.regionMesh(), dimensionedScalar("zero", dimLength, 0.0), zeroGradientFvPatchScalarField::typeName ) @@ -128,7 +128,7 @@ void solidification::correctModel maxSolidificationFrac_, ( maxSolidificationRate_ - *owner_.regionMesh().time().deltaTValue() + *filmModel_.regionMesh().time().deltaTValue() ).value() ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H index 1854feac28c487d675509ed423183a7e0822413e..e355cd373652bb739705244765e8bc021840e54a 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::solidification + Foam::regionModels::surfaceFilmModels::solidification Description Solidification phase change model where all film mass is converted when the @@ -96,7 +96,7 @@ public: // Constructors //- Construct from surface film model - solidification(surfaceFilmModel& owner, const dictionary& dict); + solidification(surfaceFilmModel& film, const dictionary& dict); //- Destructor diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C index 125cf104b265ebbdf89b82db481daef5249c51f1..110333fd564b992f8c86dd65f3b2bda8bbc2a344 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,11 +70,11 @@ scalar standardPhaseChange::Sh standardPhaseChange::standardPhaseChange ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ) : - phaseChangeModel(typeName, owner, dict), + phaseChangeModel(typeName, film, dict), deltaMin_(readScalar(coeffDict_.lookup("deltaMin"))), L_(readScalar(coeffDict_.lookup("L"))), TbFactor_(coeffDict_.lookupOrDefault<scalar>("TbFactor", 1.1)) diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H index 82a8120bdefe1c61b7fdfbce460a9b3b4de748be..5c9cbfc369b0ecf21d81f2bba81d06c5b7392cb6 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::standardPhaseChange + Foam::regionModels::surfaceFilmModels::standardPhaseChange Description Standard phase change model with modification for boiling @@ -97,7 +97,7 @@ public: //- Construct from surface film model standardPhaseChange ( - surfaceFilmModel& owner, + surfaceFilmModel& film, const dictionary& dict ); diff --git a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H index 941aa73145333c49c1623235bf3e312591afb09c..e770d8b56cb93d8c76dacc73cec9f9a0ab65ece7 100644 --- a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H +++ b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thermoSingleLayer + Foam::regionModels::surfaceFilmModels::thermoSingleLayer Description Thermodynamic form of single-cell layer surface film model diff --git a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H index 6c4198c3adcc2072c3c81aaa8c81672411ba0c24..d45b9541361a5c53982252067914fca721c18055 100644 --- a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H +++ b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,8 +54,8 @@ Usage Tnbr T; kappaMethod fluidThermo; // or solidThermo kappa none; - QrNbr Qr;//or none.Name of Qr field on neighbourregion - Qr none;// or none.Name of Qr field on localregion + qrNbr qr;//or none.Name of qr field on neighbourregion + qr none;// or none.Name of qr field on localregion value uniform 300; // Baffle region name @@ -78,7 +78,6 @@ Usage { specie { - nMoles 1; molWeight 20; } transport diff --git a/src/regionModels/thermalBaffleModels/noThermo/noThermo.H b/src/regionModels/thermalBaffleModels/noThermo/noThermo.H index 9fed26466a7489dd383411f2ba44603d766d9542..85e4396a37fd636cd0526fd054bf0bd90fa8d774 100644 --- a/src/regionModels/thermalBaffleModels/noThermo/noThermo.H +++ b/src/regionModels/thermalBaffleModels/noThermo/noThermo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::noThermo + Foam::regionModels::thermalBaffleModels::noThermo Description Dummy surface pyrolysis model for 'none' diff --git a/src/regionModels/thermalBaffleModels/thermalBaffle/thermalBaffle.H b/src/regionModels/thermalBaffleModels/thermalBaffle/thermalBaffle.H index c96cf9cf73a1b737cdf6d79f96b0cef27bac141f..48768dca9313a2398e233f98091df79f04823eaa 100644 --- a/src/regionModels/thermalBaffleModels/thermalBaffle/thermalBaffle.H +++ b/src/regionModels/thermalBaffleModels/thermalBaffle/thermalBaffle.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thermalBaffle + Foam::regionModels::thermalBaffleModels::thermalBaffle Description 2D thermal baffle diff --git a/src/regionModels/thermalBaffleModels/thermalBaffleModel/thermalBaffleModel.H b/src/regionModels/thermalBaffleModels/thermalBaffleModel/thermalBaffleModel.H index 01c3cbe5595fa8644b8cafc53193160e911cd72c..2084de8b021169013125c6b6adaba7f199647e18 100644 --- a/src/regionModels/thermalBaffleModels/thermalBaffleModel/thermalBaffleModel.H +++ b/src/regionModels/thermalBaffleModels/thermalBaffleModel/thermalBaffleModel.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::thermalBaffleModel + Foam::regionModels::thermalBaffleModels::thermalBaffleModel Description diff --git a/src/renumber/SloanRenumber/SloanRenumber.C b/src/renumber/SloanRenumber/SloanRenumber.C index ff1a123ee577bfe4d10d694cc2daf720fa7895c9..7de9bd9bb5e9becc012e56835e1d0539109f77c5 100644 --- a/src/renumber/SloanRenumber/SloanRenumber.C +++ b/src/renumber/SloanRenumber/SloanRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,9 +92,10 @@ Foam::SloanRenumber::SloanRenumber(const dictionary& renumberDict) renumberMethod(renumberDict), reverse_ ( - renumberDict.found(typeName + "Coeffs") - ? Switch(renumberDict.subDict(typeName + "Coeffs").lookup("reverse")) - : Switch(false) + renumberDict.optionalSubDict + ( + typeName + "Coeffs" + ).lookupOrDefault<Switch>("reverse", false) ) {} diff --git a/src/renumber/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C b/src/renumber/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C index fae937cb39e141a556b4d7ef3ffde0fced5b4bd0..1d375d69edaebdcbd4d60e4a566000baad816607 100644 --- a/src/renumber/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C +++ b/src/renumber/renumberMethods/CuthillMcKeeRenumber/CuthillMcKeeRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,9 +50,10 @@ Foam::CuthillMcKeeRenumber::CuthillMcKeeRenumber(const dictionary& renumberDict) renumberMethod(renumberDict), reverse_ ( - renumberDict.found(typeName + "Coeffs") - ? Switch(renumberDict.subDict(typeName + "Coeffs").lookup("reverse")) - : Switch(false) + renumberDict.optionalSubDict + ( + typeName + "Coeffs" + ).lookupOrDefault<Switch>("reverse", false) ) {} diff --git a/src/renumber/renumberMethods/manualRenumber/manualRenumber.C b/src/renumber/renumberMethods/manualRenumber/manualRenumber.C index 5db43311640b4b162bafaef7095bf14ca1ee1584..0b960137b716a51faf0df391374647cf7cc76760 100644 --- a/src/renumber/renumberMethods/manualRenumber/manualRenumber.C +++ b/src/renumber/renumberMethods/manualRenumber/manualRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,7 +50,7 @@ Foam::manualRenumber::manualRenumber(const dictionary& renumberDict) renumberMethod(renumberDict), dataFile_ ( - renumberDict.subDict(typeName+"Coeffs").lookup("dataFile") + renumberDict.optionalSubDict(typeName+"Coeffs").lookup("dataFile") ) {} diff --git a/src/renumber/renumberMethods/springRenumber/springRenumber.C b/src/renumber/renumberMethods/springRenumber/springRenumber.C index dc45768139c186f176fdd5b7397311fb251fb0e7..eb31b53b0a5b00f6f442b39ca2c91ad232338ecb 100644 --- a/src/renumber/renumberMethods/springRenumber/springRenumber.C +++ b/src/renumber/renumberMethods/springRenumber/springRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,7 +47,7 @@ namespace Foam Foam::springRenumber::springRenumber(const dictionary& renumberDict) : renumberMethod(renumberDict), - dict_(renumberDict.subDict(typeName+"Coeffs")), + dict_(renumberDict.optionalSubDict(typeName+"Coeffs")), maxCo_(readScalar(dict_.lookup("maxCo"))), maxIter_(readLabel(dict_.lookup("maxIter"))), freezeFraction_(readScalar(dict_.lookup("freezeFraction"))) diff --git a/src/renumber/renumberMethods/structuredRenumber/structuredRenumber.C b/src/renumber/renumberMethods/structuredRenumber/structuredRenumber.C index e227f2861fb6efe200d22fc4d75ab261884752fc..f56a6476e39689747eeb90ccec51e73cc7897678 100644 --- a/src/renumber/renumberMethods/structuredRenumber/structuredRenumber.C +++ b/src/renumber/renumberMethods/structuredRenumber/structuredRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,7 +52,7 @@ Foam::structuredRenumber::structuredRenumber ) : renumberMethod(renumberDict), - methodDict_(renumberDict.subDict(typeName + "Coeffs")), + methodDict_(renumberDict.optionalSubDict(typeName + "Coeffs")), patches_(methodDict_.lookup("patches")), nLayers_(methodDict_.lookupOrDefault<label>("nLayers", labelMax)), depthFirst_(methodDict_.lookup("depthFirst")), diff --git a/src/renumber/zoltanRenumber/zoltanRenumber.C b/src/renumber/zoltanRenumber/zoltanRenumber.C index 2d7a744debb90f875dceacfdd5e4f6f5fabeb066..472089da450047c8fb8dd7198a25db761e743f82 100644 --- a/src/renumber/zoltanRenumber/zoltanRenumber.C +++ b/src/renumber/zoltanRenumber/zoltanRenumber.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -262,7 +262,7 @@ static void get_geom_list Foam::zoltanRenumber::zoltanRenumber(const dictionary& renumberDict) : renumberMethod(renumberDict), - coeffsDict_(renumberDict.subDict(typeName+"Coeffs")) + coeffsDict_(renumberDict.optionalSubDict(typeName+"Coeffs")) {} diff --git a/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C b/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C index c17819b410d922abb3ac92b818df8beaa2f81216..038d42a31a01f62718f15c1b30e3e2ad85006371 100644 --- a/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C +++ b/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C @@ -59,13 +59,7 @@ Foam::Istream& Foam::RBD::operator>> >> state.qDdot_ >> state.deltaT_; - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::RBD::rigidBodyModelState&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -81,13 +75,7 @@ Foam::Ostream& Foam::RBD::operator<< << token::SPACE << state.qDdot_ << token::SPACE << state.deltaT_; - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::RBD::rigidBodyModelState&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/rigidBodyMeshMotion/Make/options b/src/rigidBodyMeshMotion/Make/options index 708015aaaf1e235166e7815dded2d2787df5aada..dd66786acedd76e65cbdc0d5f2c8f628bda981c0 100644 --- a/src/rigidBodyMeshMotion/Make/options +++ b/src/rigidBodyMeshMotion/Make/options @@ -1,14 +1,13 @@ EXE_INC = \ -I$(LIB_SRC)/rigidBodyDynamics/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/functionObjects/forces/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude LIB_LIBS = \ -lrigidBodyDynamics \ -lforces \ -lmeshTools \ - -lfileFormats \ -ldynamicMesh diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C index dc05ceb6489603560155af9847f5638785a44ff7..5c08e42a74c55a10eebfe4c43da5041914695629 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -30,6 +30,7 @@ License #include "pointConstraints.H" #include "uniformDimensionedFields.H" #include "forces.H" +#include "OneConstant.H" #include "mathematicalConstants.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -115,6 +116,7 @@ Foam::rigidBodyMeshMotion::rigidBodyMeshMotion test_(coeffDict().lookupOrDefault<Switch>("test", false)), rhoInf_(1.0), rhoName_(coeffDict().lookupOrDefault<word>("rho", "rho")), + ramp_(nullptr), curTimeIndex_(-1) { if (rhoName_ == "rhoInf") @@ -122,6 +124,15 @@ Foam::rigidBodyMeshMotion::rigidBodyMeshMotion rhoInf_ = readScalar(coeffDict().lookup("rhoInf")); } + if (coeffDict().found("ramp")) + { + ramp_ = Function1<scalar>::New("ramp", coeffDict()); + } + else + { + ramp_ = new Function1Types::OneConstant<scalar>("ramp"); + } + const dictionary& bodiesDict = coeffDict().subDict("bodies"); forAllConstIter(IDLList<entry>, bodiesDict, iter) @@ -232,10 +243,12 @@ void Foam::rigidBodyMeshMotion::solve() curTimeIndex_ = this->db().time().timeIndex(); } + const scalar ramp = ramp_->value(t.value()); + if (db().foundObject<uniformDimensionedVectorField>("g")) { model_.g() = - db().lookupObject<uniformDimensionedVectorField>("g").value(); + ramp*db().lookupObject<uniformDimensionedVectorField>("g").value(); } if (test_) @@ -270,7 +283,7 @@ void Foam::rigidBodyMeshMotion::solve() functionObjects::forces f("forces", db(), forcesDict); f.calcForcesMoment(); - fx[bodyID] = spatialVector(f.momentEff(), f.forceEff()); + fx[bodyID] = ramp*spatialVector(f.momentEff(), f.forceEff()); } model_.solve diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H index cfd0e915dd3c02642fc9809ae2994e0ab4435603..af5df08f099ea1225e79e678dd371023094609a3 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,6 +43,7 @@ SourceFiles #include "displacementMotionSolver.H" #include "rigidBodyMotion.H" +#include "ramp.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -119,6 +120,9 @@ class rigidBodyMeshMotion // as rhoInf word rhoName_; + //- Ramp the forces according to the specified function and period + autoPtr<Function1<scalar>> ramp_; + //- Current time index (used for updating) label curTimeIndex_; diff --git a/src/sampling/Make/options b/src/sampling/Make/options index 00d418481bcf4eefeb539353f61b60f620b25f58..2a3f63979533704b36eefcb23596fbd07cca2671 100644 --- a/src/sampling/Make/options +++ b/src/sampling/Make/options @@ -1,19 +1,15 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/conversion/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude - LIB_LIBS = \ -lfiniteVolume \ -lmeshTools \ - -lsurfMesh \ - -ltriSurface \ - -llagrangian \ + -lconversion \ -ldynamicMesh \ - -lconversion + -llagrangian diff --git a/src/sampling/meshToMesh/meshToMesh.C b/src/sampling/meshToMesh/meshToMesh.C index d10a652feabcfac13184c995408bfc3d7836be24..57b290851c8a291d1c3c4b23528a94d15adb4c09 100644 --- a/src/sampling/meshToMesh/meshToMesh.C +++ b/src/sampling/meshToMesh/meshToMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -536,7 +536,7 @@ void Foam::meshToMesh::calculate(const word& methodName) // set up as a reverse distribute mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), tgtRegion_.nCells(), map.constructMap(), @@ -552,7 +552,7 @@ void Foam::meshToMesh::calculate(const word& methodName) // set up as a reverse distribute mapDistributeBase::distribute ( - Pstream::nonBlocking, + Pstream::commsTypes::nonBlocking, List<labelPair>(), tgtRegion_.nCells(), map.constructMap(), diff --git a/src/sampling/meshToMesh/meshToMeshParallelOps.C b/src/sampling/meshToMesh/meshToMeshParallelOps.C index b50341c42bf010fc6ccc0a5db91beff3df9d9ed7..d0efb5f4f34b538d64054d86d3c985e031fa23ed 100644 --- a/src/sampling/meshToMesh/meshToMeshParallelOps.C +++ b/src/sampling/meshToMesh/meshToMeshParallelOps.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -275,7 +275,7 @@ void Foam::meshToMesh::distributeCells List<labelList>& procLocalFaceIDs ) const { - PstreamBuffers pBufs(Pstream::nonBlocking); + PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking); points.setSize(Pstream::nProcs()); nInternalFaces.setSize(Pstream::nProcs(), 0); diff --git a/src/sampling/sampledSet/face/faceOnlySet.C b/src/sampling/sampledSet/face/faceOnlySet.C index 4971a27787acba2eca969b4e3f5fea070ef46b97..b7d217a35c5b94a7d0c6eb5f613df5002f64d204 100644 --- a/src/sampling/sampledSet/face/faceOnlySet.C +++ b/src/sampling/sampledSet/face/faceOnlySet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -166,6 +166,7 @@ void Foam::faceOnlySet::calcSamples // << endl; const_cast<polyMesh&>(mesh()).moving(oldMoving); + const_cast<polyMesh&>(mesh()).moving(oldMoving); return; } diff --git a/src/sampling/sampledSet/sampledSet/sampledSet.C b/src/sampling/sampledSet/sampledSet/sampledSet.C index cab0f3eb1328f62ab4b47ee9deebe288388a2107..6e7ad85748521697915a5392fbf0845927ed8b26 100644 --- a/src/sampling/sampledSet/sampledSet/sampledSet.C +++ b/src/sampling/sampledSet/sampledSet/sampledSet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -468,7 +468,7 @@ Foam::autoPtr<Foam::sampledSet> Foam::sampledSet::New name, mesh, searchEngine, - dict + dict.optionalSubDict(sampleType + "Coeffs") ) ); } diff --git a/src/sampling/sampledSurface/sampledSurface/sampledSurface.C b/src/sampling/sampledSurface/sampledSurface/sampledSurface.C index 0901dc4c94150b02a2f5d1b787911377fd09ccf6..b075331031339f79facc888298c84c71e55c1c4b 100644 --- a/src/sampling/sampledSurface/sampledSurface/sampledSurface.C +++ b/src/sampling/sampledSurface/sampledSurface/sampledSurface.C @@ -244,7 +244,7 @@ void Foam::sampledSurface::print(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream &os, const sampledSurface& s) { s.print(os); - os.check("Ostream& operator<<(Ostream&, const sampledSurface&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/sampling/surface/isoSurface/isoSurface.C b/src/sampling/surface/isoSurface/isoSurface.C index 3bf7d92f6522157efa7d4b21edef9ed48110e12a..94ae0a32930bb9a8ee63e300cbfcac8f0b319b19 100644 --- a/src/sampling/surface/isoSurface/isoSurface.C +++ b/src/sampling/surface/isoSurface/isoSurface.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -154,7 +154,11 @@ void Foam::isoSurface::syncUnseparatedPoints patchInfo[nbrPointi] = pointValues[meshPts[pointi]]; } - OPstream toNbr(Pstream::blocking, pp.neighbProcNo()); + OPstream toNbr + ( + Pstream::commsTypes::blocking, + pp.neighbProcNo() + ); toNbr << patchInfo; } } @@ -177,7 +181,11 @@ void Foam::isoSurface::syncUnseparatedPoints { // We do not know the number of points on the other side // so cannot use Pstream::read. - IPstream fromNbr(Pstream::blocking, pp.neighbProcNo()); + IPstream fromNbr + ( + Pstream::commsTypes::blocking, + pp.neighbProcNo() + ); fromNbr >> nbrPatchInfo; } diff --git a/src/sixDoFRigidBodyMotion/Make/files b/src/sixDoFRigidBodyMotion/Make/files index 837d2df3fd19a45f3ff0ab7af532f190f69d1fdd..f5abd78686c976609663bdc6ef0bc667f8eeffe9 100644 --- a/src/sixDoFRigidBodyMotion/Make/files +++ b/src/sixDoFRigidBodyMotion/Make/files @@ -24,9 +24,6 @@ $(constraints)/orientation/sixDoFRigidBodyMotionOrientationConstraint.C $(constraints)/plane/sixDoFRigidBodyMotionPlaneConstraint.C $(constraints)/point/sixDoFRigidBodyMotionPointConstraint.C -pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C -pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C - sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C sixDoFSolvers/sixDoFSolver/sixDoFSolver.C diff --git a/src/sixDoFRigidBodyMotion/Make/options b/src/sixDoFRigidBodyMotion/Make/options index 11834cbddf832eaa0032645344fbb419d6e4cad2..cad98a1c41930fd175a29dff9edf9a5422f5d308 100644 --- a/src/sixDoFRigidBodyMotion/Make/options +++ b/src/sixDoFRigidBodyMotion/Make/options @@ -1,12 +1,11 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/functionObjects/forces/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude LIB_LIBS = \ - -lforces \ -lmeshTools \ - -lfileFormats \ + -lforces \ -ldynamicMesh diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C deleted file mode 100644 index daeb9adf8d976ad0d9f0e6355842790494cee6d8..0000000000000000000000000000000000000000 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ /dev/null @@ -1,290 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 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 "sixDoFRigidBodyDisplacementPointPatchVectorField.H" -#include "pointPatchFields.H" -#include "addToRunTimeSelectionTable.H" -#include "Time.H" -#include "fvMesh.H" -#include "volFields.H" -#include "uniformDimensionedFields.H" -#include "forces.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -sixDoFRigidBodyDisplacementPointPatchVectorField:: -sixDoFRigidBodyDisplacementPointPatchVectorField -( - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF -) -: - fixedValuePointPatchField<vector>(p, iF), - motion_(), - initialPoints_(p.localPoints()), - rhoInf_(1.0), - rhoName_("rho"), - lookupGravity_(-1), - g_(Zero), - curTimeIndex_(-1) -{} - - -sixDoFRigidBodyDisplacementPointPatchVectorField:: -sixDoFRigidBodyDisplacementPointPatchVectorField -( - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF, - const dictionary& dict -) -: - fixedValuePointPatchField<vector>(p, iF, dict), - motion_(dict, dict), - rhoInf_(1.0), - rhoName_(dict.lookupOrDefault<word>("rho", "rho")), - lookupGravity_(-1), - g_(Zero), - curTimeIndex_(-1) -{ - if (rhoName_ == "rhoInf") - { - rhoInf_ = readScalar(dict.lookup("rhoInf")); - } - - if (dict.readIfPresent("g", g_)) - { - lookupGravity_ = -2; - } - - if (!dict.found("value")) - { - updateCoeffs(); - } - - if (dict.found("initialPoints")) - { - initialPoints_ = vectorField("initialPoints", dict , p.size()); - } - else - { - initialPoints_ = p.localPoints(); - } -} - - -sixDoFRigidBodyDisplacementPointPatchVectorField:: -sixDoFRigidBodyDisplacementPointPatchVectorField -( - const sixDoFRigidBodyDisplacementPointPatchVectorField& ptf, - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF, - const pointPatchFieldMapper& mapper -) -: - fixedValuePointPatchField<vector>(ptf, p, iF, mapper), - motion_(ptf.motion_), - initialPoints_(ptf.initialPoints_, mapper), - rhoInf_(ptf.rhoInf_), - rhoName_(ptf.rhoName_), - lookupGravity_(ptf.lookupGravity_), - g_(ptf.g_), - curTimeIndex_(-1) -{} - - -sixDoFRigidBodyDisplacementPointPatchVectorField:: -sixDoFRigidBodyDisplacementPointPatchVectorField -( - const sixDoFRigidBodyDisplacementPointPatchVectorField& ptf, - const DimensionedField<vector, pointMesh>& iF -) -: - fixedValuePointPatchField<vector>(ptf, iF), - motion_(ptf.motion_), - initialPoints_(ptf.initialPoints_), - rhoInf_(ptf.rhoInf_), - rhoName_(ptf.rhoName_), - lookupGravity_(ptf.lookupGravity_), - g_(ptf.g_), - curTimeIndex_(-1) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void sixDoFRigidBodyDisplacementPointPatchVectorField::autoMap -( - const pointPatchFieldMapper& m -) -{ - fixedValuePointPatchField<vector>::autoMap(m); - - initialPoints_.autoMap(m); -} - - -void sixDoFRigidBodyDisplacementPointPatchVectorField::rmap -( - const pointPatchField<vector>& ptf, - const labelList& addr -) -{ - const sixDoFRigidBodyDisplacementPointPatchVectorField& sDoFptf = - refCast<const sixDoFRigidBodyDisplacementPointPatchVectorField>(ptf); - - fixedValuePointPatchField<vector>::rmap(sDoFptf, addr); - - initialPoints_.rmap(sDoFptf.initialPoints_, addr); -} - - -void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() -{ - if (this->updated()) - { - return; - } - - if (lookupGravity_ < 0) - { - if (db().foundObject<uniformDimensionedVectorField>("g")) - { - if (lookupGravity_ == -2) - { - FatalErrorInFunction - << "Specifying the value of g in this boundary condition " - << "when g is available from the database is considered " - << "a fatal error to avoid the possibility of inconsistency" - << exit(FatalError); - } - else - { - lookupGravity_ = 1; - } - } - else - { - lookupGravity_ = 0; - } - } - - const polyMesh& mesh = this->internalField().mesh()(); - const Time& t = mesh.time(); - const pointPatch& ptPatch = this->patch(); - - // Store the motion state at the beginning of the time-step - bool firstIter = false; - if (curTimeIndex_ != t.timeIndex()) - { - motion_.newTime(); - curTimeIndex_ = t.timeIndex(); - firstIter = true; - } - - dictionary forcesDict; - - forcesDict.add("type", functionObjects::forces::typeName); - forcesDict.add("patches", wordList(1, ptPatch.name())); - forcesDict.add("rhoInf", rhoInf_); - forcesDict.add("rho", rhoName_); - forcesDict.add("CofR", motion_.centreOfRotation()); - - functionObjects::forces f("forces", db(), forcesDict); - - f.calcForcesMoment(); - - // Get the forces on the patch faces at the current positions - - if (lookupGravity_ == 1) - { - uniformDimensionedVectorField g = - db().lookupObject<uniformDimensionedVectorField>("g"); - - g_ = g.value(); - } - - // scalar ramp = min(max((t.value() - 5)/10, 0), 1); - scalar ramp = 1.0; - - motion_.update - ( - firstIter, - ramp*(f.forceEff() + motion_.mass()*g_), - ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g_)), - t.deltaTValue(), - t.deltaT0Value() - ); - - Field<vector>::operator= - ( - motion_.transform(initialPoints_) - initialPoints_ - ); - - fixedValuePointPatchField<vector>::updateCoeffs(); -} - - -void sixDoFRigidBodyDisplacementPointPatchVectorField::write(Ostream& os) const -{ - pointPatchField<vector>::write(os); - - os.writeKeyword("rho") << rhoName_ << token::END_STATEMENT << nl; - - if (rhoName_ == "rhoInf") - { - os.writeKeyword("rhoInf") << rhoInf_ << token::END_STATEMENT << nl; - } - - if (lookupGravity_ == 0 || lookupGravity_ == -2) - { - os.writeKeyword("g") << g_ << token::END_STATEMENT << nl; - } - - motion_.write(os); - - initialPoints_.writeEntry("initialPoints", os); - - writeEntry("value", os); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePointPatchTypeField -( - pointPatchVectorField, - sixDoFRigidBodyDisplacementPointPatchVectorField -); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H deleted file mode 100644 index 04b001706239324ea83324304d280e93b7d07b1d..0000000000000000000000000000000000000000 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H +++ /dev/null @@ -1,196 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 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::sixDoFRigidBodyDisplacementPointPatchVectorField - -Description - Foam::sixDoFRigidBodyDisplacementPointPatchVectorField - -SourceFiles - sixDoFRigidBodyDisplacementPointPatchVectorField.C - -\*---------------------------------------------------------------------------*/ - -#ifndef sixDoFRigidBodyDisplacementPointPatchVectorField_H -#define sixDoFRigidBodyDisplacementPointPatchVectorField_H - -#include "fixedValuePointPatchField.H" -#include "sixDoFRigidBodyMotion.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class sixDoFRigidBodyDisplacementPointPatchVectorField Declaration -\*---------------------------------------------------------------------------*/ - -class sixDoFRigidBodyDisplacementPointPatchVectorField -: - public fixedValuePointPatchField<vector> -{ - // Private data - - //- Six dof motion object - sixDoFRigidBodyMotion motion_; - - //- Initial positions of points on the patch - pointField initialPoints_; - - //- Reference density required by the forces object for - // incompressible calculations, required if rho == rhoInf - scalar rhoInf_; - - //- Name of density field, optional unless used for an - // incompressible simulation, when this needs to be specified - // as rhoInf - word rhoName_; - - //- State of gravity lookup: - // -1 = not determined yet, as the BC may be instantiated before g has - // been read into the db yet. Determination deferred until first - // call to updateCoeffs. A g keyword was not supplied to the - // dictionary. - // -2 = as for -1, but a gravity value was specified in the dictionary, - // specifying a value in the dictionary is considered a fatal - // error if g is available from the db. - // 0 = Use this boundary condition's own value of gravity, as not - // available from the db. - // 1 = Lookup gravity from db. - label lookupGravity_; - - //- Gravity vector to store when not available from the db - vector g_; - - //- Current time index (used for updating) - label curTimeIndex_; - - -public: - - //- Runtime type information - TypeName("sixDoFRigidBodyDisplacement"); - - - // Constructors - - //- Construct from patch and internal field - sixDoFRigidBodyDisplacementPointPatchVectorField - ( - const pointPatch&, - const DimensionedField<vector, pointMesh>& - ); - - //- Construct from patch, internal field and dictionary - sixDoFRigidBodyDisplacementPointPatchVectorField - ( - const pointPatch&, - const DimensionedField<vector, pointMesh>&, - const dictionary& - ); - - //- Construct by mapping given patchField<vector> onto a new patch - sixDoFRigidBodyDisplacementPointPatchVectorField - ( - const sixDoFRigidBodyDisplacementPointPatchVectorField&, - const pointPatch&, - const DimensionedField<vector, pointMesh>&, - const pointPatchFieldMapper& - ); - - //- Construct and return a clone - virtual autoPtr<pointPatchField<vector>> clone() const - { - return autoPtr<pointPatchField<vector>> - ( - new sixDoFRigidBodyDisplacementPointPatchVectorField - ( - *this - ) - ); - } - - //- Construct as copy setting internal field reference - sixDoFRigidBodyDisplacementPointPatchVectorField - ( - const sixDoFRigidBodyDisplacementPointPatchVectorField&, - const DimensionedField<vector, pointMesh>& - ); - - //- Construct and return a clone setting internal field reference - virtual autoPtr<pointPatchField<vector>> clone - ( - const DimensionedField<vector, pointMesh>& iF - ) const - { - return autoPtr<pointPatchField<vector>> - ( - new sixDoFRigidBodyDisplacementPointPatchVectorField - ( - *this, - iF - ) - ); - } - - - // Member functions - - // Mapping functions - - //- Map (and resize as needed) from self given a mapping object - virtual void autoMap - ( - const pointPatchFieldMapper& - ); - - //- Reverse map the given pointPatchField onto this pointPatchField - virtual void rmap - ( - const pointPatchField<vector>&, - const labelList& - ); - - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); - - - //- Write - virtual void write(Ostream&) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C deleted file mode 100644 index 123b128b9234b14614e8e217a4f458d7995e1634..0000000000000000000000000000000000000000 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C +++ /dev/null @@ -1,216 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 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 "uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H" -#include "pointPatchFields.H" -#include "addToRunTimeSelectionTable.H" -#include "Time.H" -#include "fvMesh.H" -#include "volFields.H" -#include "uniformDimensionedFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField:: -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -( - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF -) -: - fixedValuePointPatchField<vector>(p, iF), - motion_(), - initialPoints_(p.localPoints()), - curTimeIndex_(-1) -{} - - -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField:: -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -( - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF, - const dictionary& dict -) -: - fixedValuePointPatchField<vector>(p, iF, dict), - motion_(dict, dict), - curTimeIndex_(-1) -{ - if (!dict.found("value")) - { - updateCoeffs(); - } - - if (dict.found("initialPoints")) - { - initialPoints_ = vectorField("initialPoints", dict , p.size()); - } - else - { - initialPoints_ = p.localPoints(); - } -} - - -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField:: -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -( - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField& ptf, - const pointPatch& p, - const DimensionedField<vector, pointMesh>& iF, - const pointPatchFieldMapper& mapper -) -: - fixedValuePointPatchField<vector>(ptf, p, iF, mapper), - motion_(ptf.motion_), - initialPoints_(ptf.initialPoints_, mapper), - curTimeIndex_(-1) -{} - - -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField:: -uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -( - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField& ptf, - const DimensionedField<vector, pointMesh>& iF -) -: - fixedValuePointPatchField<vector>(ptf, iF), - motion_(ptf.motion_), - initialPoints_(ptf.initialPoints_), - curTimeIndex_(-1) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::autoMap -( - const pointPatchFieldMapper& m -) -{ - fixedValuePointPatchField<vector>::autoMap(m); - - initialPoints_.autoMap(m); -} - - -void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::rmap -( - const pointPatchField<vector>& ptf, - const labelList& addr -) -{ - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField& uSDoFptf = - refCast - < - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - >(ptf); - - fixedValuePointPatchField<vector>::rmap(uSDoFptf, addr); - - initialPoints_.rmap(uSDoFptf.initialPoints_, addr); -} - - -void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() -{ - if (this->updated()) - { - return; - } - - const polyMesh& mesh = this->internalField().mesh()(); - const Time& t = mesh.time(); - - // Store the motion state at the beginning of the time-step - bool firstIter = false; - if (curTimeIndex_ != t.timeIndex()) - { - motion_.newTime(); - curTimeIndex_ = t.timeIndex(); - firstIter = true; - } - - vector gravity = Zero; - - if (db().foundObject<uniformDimensionedVectorField>("g")) - { - uniformDimensionedVectorField g = - db().lookupObject<uniformDimensionedVectorField>("g"); - - gravity = g.value(); - } - - // Do not modify the accelerations, except with gravity, where available - motion_.update - ( - firstIter, - gravity*motion_.mass(), - Zero, - t.deltaTValue(), - t.deltaT0Value() - ); - - Field<vector>::operator= - ( - motion_.transform(initialPoints_) - initialPoints_ - ); - - fixedValuePointPatchField<vector>::updateCoeffs(); -} - - -void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::write -( - Ostream& os -) const -{ - pointPatchField<vector>::write(os); - motion_.write(os); - initialPoints_.writeEntry("initialPoints", os); - writeEntry("value", os); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePointPatchTypeField -( - pointPatchVectorField, - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H deleted file mode 100644 index b5025104db503503d87a61e6a8fcd426669b6ef3..0000000000000000000000000000000000000000 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H +++ /dev/null @@ -1,171 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 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::uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - -Description - Foam::uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - -SourceFiles - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C - -\*---------------------------------------------------------------------------*/ - -#ifndef uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField_H -#define uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField_H - -#include "fixedValuePointPatchField.H" -#include "sixDoFRigidBodyMotion.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField Declaration -\*---------------------------------------------------------------------------*/ - -class uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField -: - public fixedValuePointPatchField<vector> -{ - // Private data - - //- Six dof motion object - sixDoFRigidBodyMotion motion_; - - //- Initial positions of points on the patch - pointField initialPoints_; - - //- Current time index (used for updating) - label curTimeIndex_; - - -public: - - //- Runtime type information - TypeName("uncoupledSixDoFRigidBodyDisplacement"); - - - // Constructors - - //- Construct from patch and internal field - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - const pointPatch&, - const DimensionedField<vector, pointMesh>& - ); - - //- Construct from patch, internal field and dictionary - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - const pointPatch&, - const DimensionedField<vector, pointMesh>&, - const dictionary& - ); - - //- Construct by mapping given patchField<vector> onto a new patch - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField&, - const pointPatch&, - const DimensionedField<vector, pointMesh>&, - const pointPatchFieldMapper& - ); - - //- Construct and return a clone - virtual autoPtr<pointPatchField<vector>> clone() const - { - return autoPtr<pointPatchField<vector>> - ( - new uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - *this - ) - ); - } - - //- Construct as copy setting internal field reference - uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - const uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField&, - const DimensionedField<vector, pointMesh>& - ); - - //- Construct and return a clone setting internal field reference - virtual autoPtr<pointPatchField<vector>> clone - ( - const DimensionedField<vector, pointMesh>& iF - ) const - { - return autoPtr<pointPatchField<vector>> - ( - new uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField - ( - *this, - iF - ) - ); - } - - - // Member functions - - // Mapping functions - - //- Map (and resize as needed) from self given a mapping object - virtual void autoMap - ( - const pointPatchFieldMapper& - ); - - //- Reverse map the given pointPatchField onto this pointPatchField - virtual void rmap - ( - const pointPatchField<vector>&, - const labelList& - ); - - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); - - - //- Write - virtual void write(Ostream&) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C index 24984eec5b32110ed936305d52f0dcbb0e427b49..e24f81f448c8383c1ae45da51086b8d681f82b30 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C @@ -70,13 +70,7 @@ Foam::Istream& Foam::operator>> >> sDoFRBMS.pi_ >> sDoFRBMS.tau_; - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::sixDoFRigidBodyMotionState&)" - ); - + is.check(FUNCTION_NAME); return is; } @@ -94,13 +88,7 @@ Foam::Ostream& Foam::operator<< << token::SPACE << sDoFRBMS.pi() << token::SPACE << sDoFRBMS.tau(); - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::sixDoFRigidBodyMotionState&)" - ); - + os.check(FUNCTION_NAME); return os; } diff --git a/src/surfMesh/Make/files b/src/surfMesh/Make/files index e0a2b486e47e03a30422031786fc12372a61fd10..10d6171c207a6a1f0ef8349bb1d6e12fe19ad359 100644 --- a/src/surfMesh/Make/files +++ b/src/surfMesh/Make/files @@ -40,4 +40,30 @@ $(surfaceFormats)/vtk/VTKsurfaceFormatRunTime.C $(surfaceFormats)/x3d/X3DsurfaceFormatCore.C $(surfaceFormats)/x3d/X3DsurfaceFormatRunTime.C +triSurface/triSurface.C +triSurface/triSurfaceAddressing.C +triSurface/stitchTriangles.C + +triSurface/fields/triSurfaceFields.C +triSurface/patches/geometricSurfacePatch.C +triSurface/patches/surfacePatch.C + +interfaces = triSurface/interfaces +$(interfaces)/STL/writeSTL.C +$(interfaces)/STL/readSTL.C +$(interfaces)/GTS/writeGTS.C +$(interfaces)/GTS/readGTS.C +$(interfaces)/OBJ/readOBJ.C +$(interfaces)/OBJ/writeOBJ.C +$(interfaces)/SMESH/writeSMESH.C +$(interfaces)/OFF/readOFF.C +$(interfaces)/OFF/writeOFF.C +$(interfaces)/TRI/writeTRI.C +$(interfaces)/TRI/readTRI.C +$(interfaces)/AC3D/readAC.C +$(interfaces)/AC3D/writeAC.C +$(interfaces)/VTK/readVTK.C +$(interfaces)/VTK/writeVTK.C +$(interfaces)/NAS/readNAS.C + LIB = $(FOAM_LIBBIN)/libsurfMesh diff --git a/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C b/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C index a8c8e4c7a3291292151ac3b68cc24b644a9cc4f0..296a93db1e20583857ef11b146043ce31da39af1 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C +++ b/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C @@ -38,7 +38,7 @@ Foam::Istream& Foam::MeshedSurface<Face>::read(Istream& is) >> this->storedPoints() >> this->storedFaces(); - is.check("MeshedSurface::read(Istream&)"); + is.check(FUNCTION_NAME); return is; } @@ -50,7 +50,7 @@ Foam::Ostream& Foam::MeshedSurface<Face>::write(Ostream& os) const << this->points() << this->surfFaces(); - os.check("MeshedSurface::write(Ostream&) const"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C index 7ac9a3e598c536a08433fe787aff92370aaeb6af..b54f3c4ce1da3a572c956b7c4ba96c1c53add50c 100644 --- a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C +++ b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C @@ -327,9 +327,8 @@ void Foam::UnsortedMeshedSurface<Face>::setOneZone() zoneName = "zone0"; } - // set single default zone - zoneToc_.setSize(1); - zoneToc_[0] = surfZoneIdentifier(zoneName, 0); + // Set single default zone + zoneToc_ = { surfZoneIdentifier(zoneName, 0) }; } @@ -446,7 +445,7 @@ Foam::Istream& Foam::UnsortedMeshedSurface<Face>::read(Istream& is) >> this->storedPoints() >> this->storedFaces(); - is.check("UnsortedMeshedSurface::read(Istream&)"); + is.check(FUNCTION_NAME); return is; } @@ -458,7 +457,7 @@ Foam::Ostream& Foam::UnsortedMeshedSurface<Face>::write(Ostream& os) const << this->points() << this->surfFaces(); - os.check("UnsortedMeshedSurface::write(Ostream&) const"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/surfMesh/surfZone/surfZone/surfZone.C b/src/surfMesh/surfZone/surfZone/surfZone.C index 2620f2b4fbf171e78d3908bc2aff5678e48bfe90..e2699243b5c6f5e3d409392a3a8f92a5bc4360a5 100644 --- a/src/surfMesh/surfZone/surfZone/surfZone.C +++ b/src/surfMesh/surfZone/surfZone/surfZone.C @@ -148,7 +148,7 @@ Foam::Istream& Foam::operator>>(Istream& is, surfZone& zone) { zone = surfZone(is, 0); - is.check("Istream& operator>>(Istream&, surfZone&)"); + is.check(FUNCTION_NAME); return is; } @@ -156,7 +156,7 @@ Foam::Istream& Foam::operator>>(Istream& is, surfZone& zone) Foam::Ostream& Foam::operator<<(Ostream& os, const surfZone& zone) { zone.write(os); - os.check("Ostream& operator<<(Ostream&, const surfZone&"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/triSurface/triSurfaceFields/triSurfaceFields.C b/src/surfMesh/triSurface/fields/triSurfaceFields.C similarity index 100% rename from src/triSurface/triSurfaceFields/triSurfaceFields.C rename to src/surfMesh/triSurface/fields/triSurfaceFields.C diff --git a/src/triSurface/triSurfaceFields/triSurfaceFields.H b/src/surfMesh/triSurface/fields/triSurfaceFields.H similarity index 100% rename from src/triSurface/triSurfaceFields/triSurfaceFields.H rename to src/surfMesh/triSurface/fields/triSurfaceFields.H diff --git a/src/triSurface/triSurfaceFields/triSurfaceFieldsFwd.H b/src/surfMesh/triSurface/fields/triSurfaceFieldsFwd.H similarity index 100% rename from src/triSurface/triSurfaceFields/triSurfaceFieldsFwd.H rename to src/surfMesh/triSurface/fields/triSurfaceFieldsFwd.H diff --git a/src/triSurface/triSurfaceFields/triSurfaceGeoMesh.H b/src/surfMesh/triSurface/fields/triSurfaceGeoMesh.H similarity index 100% rename from src/triSurface/triSurfaceFields/triSurfaceGeoMesh.H rename to src/surfMesh/triSurface/fields/triSurfaceGeoMesh.H diff --git a/src/triSurface/triSurfaceFields/triSurfacePointGeoMesh.H b/src/surfMesh/triSurface/fields/triSurfacePointGeoMesh.H similarity index 100% rename from src/triSurface/triSurfaceFields/triSurfacePointGeoMesh.H rename to src/surfMesh/triSurface/fields/triSurfacePointGeoMesh.H diff --git a/src/triSurface/triSurface/interfaces/AC3D/readAC.C b/src/surfMesh/triSurface/interfaces/AC3D/readAC.C similarity index 99% rename from src/triSurface/triSurface/interfaces/AC3D/readAC.C rename to src/surfMesh/triSurface/interfaces/AC3D/readAC.C index 8d300f08a1ac5ff2549c48655deb79a023504b39..f17128756885fe36e7dc0fab3939355d78e2f689 100644 --- a/src/triSurface/triSurface/interfaces/AC3D/readAC.C +++ b/src/surfMesh/triSurface/interfaces/AC3D/readAC.C @@ -183,7 +183,7 @@ bool triSurface::readAC(const fileName& ACfileName) ); // Object global values - string patchName = string("patch") + name(patchi); + string patchName = string("patch") + Foam::name(patchi); label nVerts = 0; tensor rot(I); vector loc(0, 0, 0); @@ -319,7 +319,6 @@ bool triSurface::readAC(const fileName& ACfileName) patches[patchi] = geometricSurfacePatch ( - "empty", word(patchName), patchi ); diff --git a/src/triSurface/triSurface/interfaces/AC3D/writeAC.C b/src/surfMesh/triSurface/interfaces/AC3D/writeAC.C similarity index 100% rename from src/triSurface/triSurface/interfaces/AC3D/writeAC.C rename to src/surfMesh/triSurface/interfaces/AC3D/writeAC.C diff --git a/src/triSurface/triSurface/interfaces/GTS/readGTS.C b/src/surfMesh/triSurface/interfaces/GTS/readGTS.C similarity index 100% rename from src/triSurface/triSurface/interfaces/GTS/readGTS.C rename to src/surfMesh/triSurface/interfaces/GTS/readGTS.C diff --git a/src/triSurface/triSurface/interfaces/GTS/writeGTS.C b/src/surfMesh/triSurface/interfaces/GTS/writeGTS.C similarity index 100% rename from src/triSurface/triSurface/interfaces/GTS/writeGTS.C rename to src/surfMesh/triSurface/interfaces/GTS/writeGTS.C diff --git a/src/triSurface/triSurface/interfaces/NAS/readNAS.C b/src/surfMesh/triSurface/interfaces/NAS/readNAS.C similarity index 98% rename from src/triSurface/triSurface/interfaces/NAS/readNAS.C rename to src/surfMesh/triSurface/interfaces/NAS/readNAS.C index c98b11f08c05fcad586dff2ca36f4056f47ed802..ae55c60ca37df322cf937145351b660c19b096dd 100644 --- a/src/triSurface/triSurface/interfaces/NAS/readNAS.C +++ b/src/surfMesh/triSurface/interfaces/NAS/readNAS.C @@ -372,16 +372,10 @@ bool triSurface::readNAS(const fileName& fName) // Convert groupToPatch to patchList. geometricSurfacePatchList patches(nPatches); - forAllConstIter(Map<word>, groupToName, iter) + forAllConstIters(groupToName, iter) { - label patchi = groupToPatch[iter.key()]; - - patches[patchi] = geometricSurfacePatch - ( - "empty", - iter(), - patchi - ); + const label patchIdx = groupToPatch[iter.key()]; + patches[patchIdx] = geometricSurfacePatch(iter.object(), patchIdx); } Info<< "patches:" << patches << endl; diff --git a/src/triSurface/triSurface/interfaces/OBJ/readOBJ.C b/src/surfMesh/triSurface/interfaces/OBJ/readOBJ.C similarity index 94% rename from src/triSurface/triSurface/interfaces/OBJ/readOBJ.C rename to src/surfMesh/triSurface/interfaces/OBJ/readOBJ.C index 907669961b6042bc35a1e5fe5a200a610acb356c..f13f1535bd29deb3c7c2f6815f3be7afc9f543a1 100644 --- a/src/triSurface/triSurface/interfaces/OBJ/readOBJ.C +++ b/src/surfMesh/triSurface/interfaces/OBJ/readOBJ.C @@ -1,4 +1,3 @@ - /*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox @@ -172,19 +171,19 @@ bool Foam::triSurface::readOBJ(const fileName& OBJfileName) if (maxGroupID == 0) { - // Generate default patch - patches.setSize(1); - patches[0] = geometricSurfacePatch("empty", "patch0", 0); + // Add single (default) patch + patches = { geometricSurfacePatch("patch0", 0) }; } else { - forAllConstIter(HashTable<label>, groupToPatch, iter) + forAllConstIters(groupToPatch, iter) { - patches[iter()] = geometricSurfacePatch + const label patchIdx = iter.object(); + + patches[patchIdx] = geometricSurfacePatch ( - "empty", iter.key(), - iter() + patchIdx ); } } diff --git a/src/triSurface/triSurface/interfaces/OBJ/writeOBJ.C b/src/surfMesh/triSurface/interfaces/OBJ/writeOBJ.C similarity index 100% rename from src/triSurface/triSurface/interfaces/OBJ/writeOBJ.C rename to src/surfMesh/triSurface/interfaces/OBJ/writeOBJ.C diff --git a/src/triSurface/triSurface/interfaces/OFF/readOFF.C b/src/surfMesh/triSurface/interfaces/OFF/readOFF.C similarity index 100% rename from src/triSurface/triSurface/interfaces/OFF/readOFF.C rename to src/surfMesh/triSurface/interfaces/OFF/readOFF.C diff --git a/src/triSurface/triSurface/interfaces/OFF/writeOFF.C b/src/surfMesh/triSurface/interfaces/OFF/writeOFF.C similarity index 100% rename from src/triSurface/triSurface/interfaces/OFF/writeOFF.C rename to src/surfMesh/triSurface/interfaces/OFF/writeOFF.C diff --git a/src/triSurface/triSurface/interfaces/SMESH/writeSMESH.C b/src/surfMesh/triSurface/interfaces/SMESH/writeSMESH.C similarity index 100% rename from src/triSurface/triSurface/interfaces/SMESH/writeSMESH.C rename to src/surfMesh/triSurface/interfaces/SMESH/writeSMESH.C diff --git a/src/triSurface/triSurface/interfaces/STL/readSTL.C b/src/surfMesh/triSurface/interfaces/STL/readSTL.C similarity index 100% rename from src/triSurface/triSurface/interfaces/STL/readSTL.C rename to src/surfMesh/triSurface/interfaces/STL/readSTL.C diff --git a/src/triSurface/triSurface/interfaces/STL/writeSTL.C b/src/surfMesh/triSurface/interfaces/STL/writeSTL.C similarity index 100% rename from src/triSurface/triSurface/interfaces/STL/writeSTL.C rename to src/surfMesh/triSurface/interfaces/STL/writeSTL.C diff --git a/src/triSurface/triSurface/interfaces/TRI/readTRI.C b/src/surfMesh/triSurface/interfaces/TRI/readTRI.C similarity index 98% rename from src/triSurface/triSurface/interfaces/TRI/readTRI.C rename to src/surfMesh/triSurface/interfaces/TRI/readTRI.C index f11ddcfd5ef3c898333accf756348159f4cb0eab..841ab10692d7f19f7791773180f017bba128fbf2 100644 --- a/src/triSurface/triSurface/interfaces/TRI/readTRI.C +++ b/src/surfMesh/triSurface/interfaces/TRI/readTRI.C @@ -163,7 +163,7 @@ bool Foam::triSurface::readTRI(const fileName& TRIfileName) forAll(names, nameI) { patches_[nameI].name() = names[nameI]; - patches_[nameI].geometricType() = "empty"; + patches_[nameI].geometricType() = geometricSurfacePatch::emptyType; } return true; diff --git a/src/triSurface/triSurface/interfaces/TRI/writeTRI.C b/src/surfMesh/triSurface/interfaces/TRI/writeTRI.C similarity index 100% rename from src/triSurface/triSurface/interfaces/TRI/writeTRI.C rename to src/surfMesh/triSurface/interfaces/TRI/writeTRI.C diff --git a/src/triSurface/triSurface/interfaces/VTK/readVTK.C b/src/surfMesh/triSurface/interfaces/VTK/readVTK.C similarity index 92% rename from src/triSurface/triSurface/interfaces/VTK/readVTK.C rename to src/surfMesh/triSurface/interfaces/VTK/readVTK.C index b413641102d4754d23cda88562680cecce0221cb..d19b38e96c7d61705fe2c83091b65abda6f2493b 100644 --- a/src/triSurface/triSurface/interfaces/VTK/readVTK.C +++ b/src/surfMesh/triSurface/interfaces/VTK/readVTK.C @@ -67,13 +67,13 @@ bool Foam::triSurface::readVTK(const fileName& fName) patches[zoneI] = geometricSurfacePatch ( - zone.geometricType().size() ? zone.geometricType() : "empty", regionName, - zoneI + zoneI, + zone.geometricType() ); // Set triangle regions - for (label i = zone.start(); i < zone.start()+zone.size(); i++) + for (label i = zone.start(); i < zone.start()+zone.size(); ++i) { tris[i].region() = zoneI; } @@ -81,11 +81,9 @@ bool Foam::triSurface::readVTK(const fileName& fName) } else { - // Add single patch - patches.setSize(1); - patches[0] = geometricSurfacePatch("empty", "patch0", 0); - + // Add single (default) patch // Triangle regions already set to 0 + patches = { geometricSurfacePatch("patch0", 0) }; } diff --git a/src/triSurface/triSurface/interfaces/VTK/writeVTK.C b/src/surfMesh/triSurface/interfaces/VTK/writeVTK.C similarity index 100% rename from src/triSurface/triSurface/interfaces/VTK/writeVTK.C rename to src/surfMesh/triSurface/interfaces/VTK/writeVTK.C diff --git a/src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.C b/src/surfMesh/triSurface/patches/geometricSurfacePatch.C similarity index 59% rename from src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.C rename to src/surfMesh/triSurface/patches/geometricSurfacePatch.C index 6bfd83e14c77407b669b35112ea265e5dcc527ff..45c3191b35df63422372eccfa4f0f67e5a31e39e 100644 --- a/src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.C +++ b/src/surfMesh/triSurface/patches/geometricSurfacePatch.C @@ -26,28 +26,54 @@ License #include "geometricSurfacePatch.H" #include "dictionary.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { +defineTypeNameAndDebug(geometricSurfacePatch, 0); +} -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +const Foam::word Foam::geometricSurfacePatch::emptyType = "empty"; -defineTypeNameAndDebug(geometricSurfacePatch, 0); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct null -geometricSurfacePatch::geometricSurfacePatch() +Foam::geometricSurfacePatch::geometricSurfacePatch() : - geometricType_("empty"), + geometricType_(emptyType), name_("patch"), index_(0) {} -// Construct from components -geometricSurfacePatch::geometricSurfacePatch +Foam::geometricSurfacePatch::geometricSurfacePatch(const label index) +: + geometricType_(emptyType), + name_("patch"), + index_(index) +{} + + +Foam::geometricSurfacePatch::geometricSurfacePatch +( + const word& name, + const label index, + const word& geometricType +) +: + geometricType_(geometricType), + name_(name), + index_(index) + +{ + if (geometricType_.empty()) + { + geometricType_ = emptyType; + } +} + + +Foam::geometricSurfacePatch::geometricSurfacePatch ( const word& geometricType, const word& name, @@ -61,13 +87,16 @@ geometricSurfacePatch::geometricSurfacePatch { if (geometricType_.empty()) { - geometricType_ = "empty"; + geometricType_ = emptyType; } } -// Construct from Istream -geometricSurfacePatch::geometricSurfacePatch(Istream& is, const label index) +Foam::geometricSurfacePatch::geometricSurfacePatch +( + Istream& is, + const label index +) : geometricType_(is), name_(is), @@ -75,89 +104,82 @@ geometricSurfacePatch::geometricSurfacePatch(Istream& is, const label index) { if (geometricType_.empty()) { - geometricType_ = "empty"; + geometricType_ = emptyType; } } -// Construct from dictionary -geometricSurfacePatch::geometricSurfacePatch +Foam::geometricSurfacePatch::geometricSurfacePatch ( const word& name, const dictionary& dict, const label index ) : - geometricType_(dict.lookup("geometricType")), + geometricType_(emptyType), name_(name), index_(index) { - if (geometricType_.empty()) - { - geometricType_ = "empty"; - } + dict.readIfPresent("geometricType", geometricType_); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -// Write -void geometricSurfacePatch::write(Ostream& os) const +void Foam::geometricSurfacePatch::write(Ostream& os) const { os << nl << name_ << nl << geometricType_; } -void geometricSurfacePatch::writeDict(Ostream& os) const +void Foam::geometricSurfacePatch::writeDict(Ostream& os) const { - os << " geometricType " << geometricType_ << ';' << nl; + os.writeEntry("geometricType", geometricType_); } -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // -bool Foam::geometricSurfacePatch::operator!=(const geometricSurfacePatch& p) - const +bool Foam::operator== +( + const geometricSurfacePatch& a, + const geometricSurfacePatch& b +) { - return !(*this == p); + return + ( + (a.geometricType() == b.geometricType()) + && (a.name() == b.name()) + ); } -bool Foam::geometricSurfacePatch::operator==(const geometricSurfacePatch& p) - const +bool Foam::operator!= +( + const geometricSurfacePatch& a, + const geometricSurfacePatch& b +) { - return - ( - (geometricType() == p.geometricType()) - && (name() == p.name()) - ); + return !(a == b); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -Istream& operator>>(Istream& is, geometricSurfacePatch& gp) +Foam::Istream& Foam::operator>>(Istream& is, geometricSurfacePatch& p) { - is >> gp.name_ >> gp.geometricType_; - + is >> p.name_ >> p.geometricType_; return is; } -Ostream& operator<<(Ostream& os, const geometricSurfacePatch& gp) +Foam::Ostream& Foam::operator<<(Ostream& os, const geometricSurfacePatch& p) { - gp.write(os); - os.check - ( - "Ostream& operator<<(Ostream& f, const geometricSurfacePatch& gp)" - ); + p.write(os); + os.check(FUNCTION_NAME); return os; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.H b/src/surfMesh/triSurface/patches/geometricSurfacePatch.H similarity index 69% rename from src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.H rename to src/surfMesh/triSurface/patches/geometricSurfacePatch.H index 3a54b71975b7e6d0e94b4cb472a1ece77f006762..3adfe452d7a4d77e9870040ab2d63abdc7db4318 100644 --- a/src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatch.H +++ b/src/surfMesh/triSurface/patches/geometricSurfacePatch.H @@ -47,8 +47,14 @@ namespace Foam class dictionary; +// Forward declaration of friend functions and operators +class geometricSurfacePatch; + +Istream& operator>>(Istream& is, geometricSurfacePatch& p); +Ostream& operator<<(Ostream& os, const geometricSurfacePatch& p); + /*---------------------------------------------------------------------------*\ - Class geometricSurfacePatch Declaration + Class geometricSurfacePatch Declaration \*---------------------------------------------------------------------------*/ class geometricSurfacePatch @@ -66,6 +72,12 @@ class geometricSurfacePatch public: + // Public data + + //- The name for an 'empty' type + static const word emptyType; + + //- Runtime type information ClassName("geometricSurfacePatch"); @@ -75,6 +87,17 @@ public: //- Construct null geometricSurfacePatch(); + //- Construct null with specified index + explicit geometricSurfacePatch(const label index); + + //- Construct from components + geometricSurfacePatch + ( + const word& name, + const label index, + const word& geometricType = word::null + ); + //- Construct from components geometricSurfacePatch ( @@ -83,9 +106,6 @@ public: const label index ); - //- Construct from Istream - geometricSurfacePatch(Istream&, const label index); - //- Construct from dictionary geometricSurfacePatch ( @@ -94,6 +114,9 @@ public: const label index ); + //- Construct from Istream + geometricSurfacePatch(Istream& is, const label index); + // Member Functions @@ -109,50 +132,51 @@ public: return name_; } - //- Return the type of the patch + //- Return the geometric type of the patch const word& geometricType() const { return geometricType_; } - //- Return the type of the patch + //- Return the geometric type of the patch for modification word& geometricType() { return geometricType_; } - //- Return the index of this patch in the boundaryMesh + //- Return the index of this patch in the surface mesh label index() const { return index_; } - //- Return the index of this patch in the boundaryMesh + //- Return the index of this patch in the surface mesh for modification label& index() { return index_; } //- Write - void write(Ostream&) const; + void write(Ostream& os) const; //- Write dictionary - void writeDict(Ostream&) const; + void writeDict(Ostream& os) const; - // Member Operators + // Ostream Operator - bool operator!=(const geometricSurfacePatch&) const; + friend Istream& operator>>(Istream& is, geometricSurfacePatch& p); + friend Ostream& operator<<(Ostream& os, const geometricSurfacePatch& p); +}; - //- compare. - bool operator==(const geometricSurfacePatch&) const; +// Global Operators - // Ostream Operator +//- Compare patches for equality +bool operator==(const geometricSurfacePatch& a, const geometricSurfacePatch& b); - friend Ostream& operator<<(Ostream&, const geometricSurfacePatch&); - friend Istream& operator>>(Istream&, geometricSurfacePatch&); -}; +//- Compare patches for inequality +bool operator!=(const geometricSurfacePatch& a, const geometricSurfacePatch& b); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatchList.H b/src/surfMesh/triSurface/patches/geometricSurfacePatchList.H similarity index 100% rename from src/triSurface/triSurface/geometricSurfacePatch/geometricSurfacePatchList.H rename to src/surfMesh/triSurface/patches/geometricSurfacePatchList.H diff --git a/src/triSurface/triSurface/surfacePatch/surfacePatch.C b/src/surfMesh/triSurface/patches/surfacePatch.C similarity index 98% rename from src/triSurface/triSurface/surfacePatch/surfacePatch.C rename to src/surfMesh/triSurface/patches/surfacePatch.C index 6b09d556230721e5585ea3b49a3e9afb850821c0..f3cbc76dea03fe748c1079ce0171a8c7466cf77e 100644 --- a/src/triSurface/triSurface/surfacePatch/surfacePatch.C +++ b/src/surfMesh/triSurface/patches/surfacePatch.C @@ -158,7 +158,7 @@ bool Foam::surfacePatch::operator==(const surfacePatch& p) const Foam::Ostream& Foam::operator<<(Ostream& os, const surfacePatch& p) { p.write(os); - os.check("Ostream& operator<<(Ostream& f, const surfacePatch& p"); + os.check(FUNCTION_NAME); return os; } diff --git a/src/triSurface/triSurface/surfacePatch/surfacePatch.H b/src/surfMesh/triSurface/patches/surfacePatch.H similarity index 100% rename from src/triSurface/triSurface/surfacePatch/surfacePatch.H rename to src/surfMesh/triSurface/patches/surfacePatch.H diff --git a/src/triSurface/triSurface/surfacePatch/surfacePatchList.H b/src/surfMesh/triSurface/patches/surfacePatchList.H similarity index 100% rename from src/triSurface/triSurface/surfacePatch/surfacePatchList.H rename to src/surfMesh/triSurface/patches/surfacePatchList.H diff --git a/src/triSurface/triSurface/stitchTriangles.C b/src/surfMesh/triSurface/stitchTriangles.C similarity index 100% rename from src/triSurface/triSurface/stitchTriangles.C rename to src/surfMesh/triSurface/stitchTriangles.C diff --git a/src/triSurface/triSurface/triSurface.C b/src/surfMesh/triSurface/triSurface.C similarity index 98% rename from src/triSurface/triSurface/triSurface.C rename to src/surfMesh/triSurface/triSurface.C index d1ff1919c58515a85e360f933aa521c0fb7b4191..fa8c7ba874c733346007586db38076584317fb92 100644 --- a/src/triSurface/triSurface/triSurface.C +++ b/src/surfMesh/triSurface/triSurface.C @@ -623,7 +623,7 @@ Foam::triSurface::calcPatches(labelList& faceMap) const } else { - newPatch.geometricType() = "empty"; + newPatch.geometricType() = geometricSurfacePatch::emptyType; } startFacei += newPatch.size(); @@ -1157,7 +1157,7 @@ void Foam::triSurface::write(Ostream& os) const << static_cast<const List<labelledTri>&>(*this) << endl; // Check state of Ostream - os.check("triSurface::write(Ostream&)"); + os.check(FUNCTION_NAME); } @@ -1181,14 +1181,15 @@ void Foam::triSurface::writeStats(Ostream& os) const label nPoints = 0; boundBox bb(boundBox::invertedBox); + labelHashSet regionsUsed; - forAll(*this, facei) + for (const triSurface::FaceType& f : *this) { - const triSurface::FaceType& f = operator[](facei); + regionsUsed.insert(f.region()); forAll(f, fp) { - label pointi = f[fp]; + const label pointi = f[fp]; if (pointIsUsed.set(pointi, 1)) { bb.add(points()[pointi]); @@ -1197,8 +1198,9 @@ void Foam::triSurface::writeStats(Ostream& os) const } } - os << "Triangles : " << size() << endl - << "Vertices : " << nPoints << endl + os << "Triangles : " << size() + << " in " << regionsUsed.size() << " region(s)" << nl + << "Vertices : " << nPoints << nl << "Bounding Box : " << bb << endl; } diff --git a/src/triSurface/triSurface/triSurface.H b/src/surfMesh/triSurface/triSurface.H similarity index 100% rename from src/triSurface/triSurface/triSurface.H rename to src/surfMesh/triSurface/triSurface.H diff --git a/src/triSurface/triSurface/triSurfaceAddressing.C b/src/surfMesh/triSurface/triSurfaceAddressing.C similarity index 100% rename from src/triSurface/triSurface/triSurfaceAddressing.C rename to src/surfMesh/triSurface/triSurfaceAddressing.C diff --git a/src/thermophysicalModels/Allwmake b/src/thermophysicalModels/Allwmake index 2c90db55a8d9bdf2bd7cd00d8f4e77a29e765030..2d59e0aae5ae0312e77cdc0e0cde2d0b26184024 100755 --- a/src/thermophysicalModels/Allwmake +++ b/src/thermophysicalModels/Allwmake @@ -6,8 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory wmake $targetType specie wmake $targetType solidSpecie -wmake $targetType thermophysicalFunctions -./properties/Allwmake $targetType $* +wmake $targetType thermophysicalProperties wmake $targetType basic wmake $targetType reactionThermo diff --git a/src/thermophysicalModels/SLGThermo/Make/options b/src/thermophysicalModels/SLGThermo/Make/options index a75d1bfa2e3cf6a400c476db1c362c29cdf2fffc..2c67a8d0e2bef06fa4417c0974c5f5808e352d6d 100644 --- a/src/thermophysicalModels/SLGThermo/Make/options +++ b/src/thermophysicalModels/SLGThermo/Make/options @@ -2,10 +2,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 7d10c1c952aa1d0100331a8832804f0decbad48d..83ee06f8bf1fa7bd777a1e2f035467e2d7356641 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -6,6 +6,7 @@ psiThermo/psiThermos.C rhoThermo/rhoThermo.C rhoThermo/rhoThermos.C +rhoThermo/liquidThermo.C derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.C derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C diff --git a/src/thermophysicalModels/basic/Make/options b/src/thermophysicalModels/basic/Make/options index b5c859baf1457da06327d60192105d4b8fbaad53..cb12503892c2b870ddca4bc71b2447594b60d379 100644 --- a/src/thermophysicalModels/basic/Make/options +++ b/src/thermophysicalModels/basic/Make/options @@ -1,10 +1,13 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -lcompressibleTransportModels \ + -lspecie \ + -lthermophysicalProperties \ -lfiniteVolume \ -lmeshTools diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 9d12c6de9c1be56e52e2b99e23d503756787025f..a5acf77a3232f281f417e6e5f2f2a7090ffc6b5f 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -449,14 +449,28 @@ Foam::wordList Foam::basicThermo::splitThermoName { cmpts[i] = thermoName.substr(beg, end-beg); cmpts[i++].replaceAll(">",""); + + // If the number of number of components in the name + // is greater than nCmpt return an empty list + if (i == nCmpt) + { + return wordList::null(); + } } beg = end + 1; } + // If the number of number of components in the name is not equal to nCmpt + // return an empty list + if (i + 1 != nCmpt) + { + return wordList::null(); + } + if (beg < thermoName.size()) { cmpts[i] = thermoName.substr(beg, string::npos); - cmpts[i++].replaceAll(">",""); + cmpts[i].replaceAll(">",""); } return cmpts; diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index c1d299dbb7449e15f9a0f9b1a17f865c74f6af52..5a5593886e10b5e4ece8b10e05c8bef9f87d2e03 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -135,6 +135,17 @@ public: // Selectors + //- Generic lookup for thermodynamics package thermoTypeName + template<class Thermo, class Table> + static typename Table::iterator lookupThermo + ( + const dictionary& thermoTypeDict, + Table* tablePtr, + const int nCmpt, + const char* cmptNames[], + const word& thermoTypeName + ); + //- Generic lookup for each of the related thermodynamics packages template<class Thermo, class Table> static typename Table::iterator lookupThermo diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermoTemplates.C b/src/thermophysicalModels/basic/basicThermo/basicThermoTemplates.C index c9741c645b5a56b71b04eaf364c0f865dbb8579a..56817cd219d5406aebcfef2e76755009d4fba844 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermoTemplates.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermoTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,95 +30,159 @@ License template<class Thermo, class Table> typename Table::iterator Foam::basicThermo::lookupThermo ( - const dictionary& thermoDict, - Table* tablePtr + const dictionary& thermoTypeDict, + Table* tablePtr, + const int nCmpt, + const char* cmptNames[], + const word& thermoTypeName ) { - word thermoTypeName; + // Lookup the thermo package + typename Table::iterator cstrIter = tablePtr->find(thermoTypeName); - if (thermoDict.isDict("thermoType")) + // Print error message if package not found in the table + if (!cstrIter.found()) { - const dictionary& thermoTypeDict(thermoDict.subDict("thermoType")); + FatalErrorInFunction + << "Unknown " << Thermo::typeName << " type " << nl + << "thermoType" << thermoTypeDict << nl << nl + << "Valid " << Thermo::typeName << " types are:" + << nl << nl; + + // Get the list of all the suitable thermo packages available + wordList validThermoTypeNames + ( + tablePtr->sortedToc() + ); - Info<< "Selecting thermodynamics package " << thermoTypeDict << endl; + // Build a table of the thermo packages constituent parts + // Note: row-0 contains the names of constituent parts + List<wordList> validThermoTypeNameCmpts + ( + validThermoTypeNames.size() + 1 + ); - const int nCmpt = 7; - const char* cmptNames[nCmpt] = + validThermoTypeNameCmpts[0].setSize(nCmpt); + forAll(validThermoTypeNameCmpts[0], j) { - "type", - "mixture", - "transport", - "thermo", - "equationOfState", - "specie", - "energy" - }; - - // Construct the name of the thermo package from the components - thermoTypeName = - word(thermoTypeDict.lookup("type")) + '<' - + word(thermoTypeDict.lookup("mixture")) + '<' - + word(thermoTypeDict.lookup("transport")) + '<' - + word(thermoTypeDict.lookup("thermo")) + '<' - + word(thermoTypeDict.lookup("equationOfState")) + '<' - + word(thermoTypeDict.lookup("specie")) + ">>," - + word(thermoTypeDict.lookup("energy")) + ">>>"; - - // Lookup the thermo package - typename Table::iterator cstrIter = tablePtr->find(thermoTypeName); + validThermoTypeNameCmpts[0][j] = cmptNames[j]; + } - // Print error message if package not found in the table - if (cstrIter == tablePtr->end()) + // Split the thermo package names into their constituent parts + // Removing incompatible entries from the list + label j = 0; + forAll(validThermoTypeNames, i) { - FatalErrorInFunction - << "Unknown " << Thermo::typeName << " type " << nl - << "thermoType" << thermoTypeDict << nl << nl - << "Valid " << Thermo::typeName << " types are:" << nl << nl; - - // Get the list of all the suitable thermo packages available - wordList validThermoTypeNames + wordList names ( - tablePtr->sortedToc() + Thermo::splitThermoName(validThermoTypeNames[i], nCmpt) ); - // Build a table of the thermo packages constituent parts - // Note: row-0 contains the names of constituent parts - List<wordList> validThermoTypeNameCmpts - ( - validThermoTypeNames.size() + 1 - ); - - validThermoTypeNameCmpts[0].setSize(nCmpt); - forAll(validThermoTypeNameCmpts[0], j) + if (names.size()) { - validThermoTypeNameCmpts[0][j] = cmptNames[j]; + validThermoTypeNameCmpts[j++] = names; } + } + validThermoTypeNameCmpts.setSize(j); - // Split the thermo package names into their constituent parts - forAll(validThermoTypeNames, i) - { - validThermoTypeNameCmpts[i+1] = - Thermo::splitThermoName(validThermoTypeNames[i], nCmpt); - } + // Print the table of available packages + // in terms of their constituent parts + printTable(validThermoTypeNameCmpts, FatalError); - // Print the table of available packages - // in terms of their constituent parts - printTable(validThermoTypeNameCmpts, FatalError); + FatalError<< exit(FatalError); + } - FatalError<< exit(FatalError); + return cstrIter; +} + + +template<class Thermo, class Table> +typename Table::iterator Foam::basicThermo::lookupThermo +( + const dictionary& thermoDict, + Table* tablePtr +) +{ + if (thermoDict.isDict("thermoType")) + { + const dictionary& thermoTypeDict(thermoDict.subDict("thermoType")); + + Info<< "Selecting thermodynamics package " << thermoTypeDict << endl; + + if (thermoTypeDict.found("properties")) + { + const int nCmpt = 4; + const char* cmptNames[nCmpt] = + { + "type", + "mixture", + "properties", + "energy" + }; + + // Construct the name of the thermo package from the components + const word thermoTypeName + ( + word(thermoTypeDict.lookup("type")) + '<' + + word(thermoTypeDict.lookup("mixture")) + '<' + + word(thermoTypeDict.lookup("properties")) + ',' + + word(thermoTypeDict.lookup("energy")) + ">>" + ); + + return lookupThermo<Thermo, Table> + ( + thermoTypeDict, + tablePtr, + nCmpt, + cmptNames, + thermoTypeName + ); } + else + { + const int nCmpt = 7; + const char* cmptNames[nCmpt] = + { + "type", + "mixture", + "transport", + "thermo", + "equationOfState", + "specie", + "energy" + }; + + // Construct the name of the thermo package from the components + const word thermoTypeName + ( + word(thermoTypeDict.lookup("type")) + '<' + + word(thermoTypeDict.lookup("mixture")) + '<' + + word(thermoTypeDict.lookup("transport")) + '<' + + word(thermoTypeDict.lookup("thermo")) + '<' + + word(thermoTypeDict.lookup("equationOfState")) + '<' + + word(thermoTypeDict.lookup("specie")) + ">>," + + word(thermoTypeDict.lookup("energy")) + ">>>" + ); - return cstrIter; + return lookupThermo<Thermo, Table> + ( + thermoTypeDict, + tablePtr, + nCmpt, + cmptNames, + thermoTypeName + ); + } } else { - thermoTypeName = word(thermoDict.lookup("thermoType")); + const word thermoTypeName(thermoDict.lookup("thermoType")); Info<< "Selecting thermodynamics package " << thermoTypeName << endl; typename Table::iterator cstrIter = tablePtr->find(thermoTypeName); - if (cstrIter == tablePtr->end()) + if (!cstrIter.found()) { FatalErrorInFunction << "Unknown " << Thermo::typeName << " type " diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C index 9851f44b6ff3d7b6528d9b2cb82b6bb5137573e0..a2ce75984edd22e5bde7b9eff000a5da012c6f01 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJump/energyJumpFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,7 +70,7 @@ Foam::energyJumpFvPatchScalarField::energyJumpFvPatchScalarField } else { - evaluate(Pstream::blocking); + evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C index cc8675dad9bc22114957ab568ce1b759461ef9b2..7ee32ed7e4362857c7b011658d540899f7299b22 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpAMI/energyJumpAMIFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,7 +70,7 @@ Foam::energyJumpAMIFvPatchScalarField::energyJumpAMIFvPatchScalarField } else { - evaluate(Pstream::blocking); + evaluate(Pstream::commsTypes::blocking); } } diff --git a/src/thermophysicalModels/basic/heThermo/heThermo.C b/src/thermophysicalModels/basic/heThermo/heThermo.C index 280b33999cf5b4d8883eb2f3c3a7fb875afbc829..c06ffb75d79f3ec776c29082e4f536ace82ddfe2 100644 --- a/src/thermophysicalModels/basic/heThermo/heThermo.C +++ b/src/thermophysicalModels/basic/heThermo/heThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -456,11 +456,11 @@ Foam::tmp<Foam::scalarField> Foam::heThermo<BasicThermo, MixtureType>::gamma ) const { tmp<scalarField> tgamma(new scalarField(T.size())); - scalarField& cpv = tgamma.ref(); + scalarField& gamma = tgamma.ref(); forAll(T, facei) { - cpv[facei] = + gamma[facei] = this->patchFaceMixture(patchi, facei).gamma(p[facei], T[facei]); } @@ -531,11 +531,11 @@ Foam::tmp<Foam::scalarField> Foam::heThermo<BasicThermo, MixtureType>::Cpv ) const { tmp<scalarField> tCpv(new scalarField(T.size())); - scalarField& cpv = tCpv.ref(); + scalarField& Cpv = tCpv.ref(); forAll(T, facei) { - cpv[facei] = + Cpv[facei] = this->patchFaceMixture(patchi, facei).Cpv(p[facei], T[facei]); } @@ -567,21 +567,21 @@ Foam::heThermo<BasicThermo, MixtureType>::Cpv() const ) ); - volScalarField& cpv = tCpv.ref(); + volScalarField& Cpv = tCpv.ref(); forAll(this->T_, celli) { - cpv[celli] = + Cpv[celli] = this->cellMixture(celli).Cpv(this->p_[celli], this->T_[celli]); } - volScalarField::Boundary& cpvBf = cpv.boundaryFieldRef(); + volScalarField::Boundary& CpvBf = Cpv.boundaryFieldRef(); - forAll(cpvBf, patchi) + forAll(CpvBf, patchi) { const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; - fvPatchScalarField& pCpv = cpvBf[patchi]; + fvPatchScalarField& pCpv = CpvBf[patchi]; forAll(pT, facei) { @@ -603,12 +603,12 @@ Foam::tmp<Foam::scalarField> Foam::heThermo<BasicThermo, MixtureType>::CpByCpv ) const { tmp<scalarField> tCpByCpv(new scalarField(T.size())); - scalarField& cpByCpv = tCpByCpv.ref(); + scalarField& CpByCpv = tCpByCpv.ref(); forAll(T, facei) { - cpByCpv[facei] = - this->patchFaceMixture(patchi, facei).cpBycpv(p[facei], T[facei]); + CpByCpv[facei] = + this->patchFaceMixture(patchi, facei).CpByCpv(p[facei], T[facei]); } return tCpByCpv; @@ -639,29 +639,29 @@ Foam::heThermo<BasicThermo, MixtureType>::CpByCpv() const ) ); - volScalarField& cpByCpv = tCpByCpv.ref(); + volScalarField& CpByCpv = tCpByCpv.ref(); forAll(this->T_, celli) { - cpByCpv[celli] = this->cellMixture(celli).cpBycpv + CpByCpv[celli] = this->cellMixture(celli).CpByCpv ( this->p_[celli], this->T_[celli] ); } - volScalarField::Boundary& cpByCpvBf = - cpByCpv.boundaryFieldRef(); + volScalarField::Boundary& CpByCpvBf = + CpByCpv.boundaryFieldRef(); - forAll(cpByCpvBf, patchi) + forAll(CpByCpvBf, patchi) { const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; - fvPatchScalarField& pCpByCpv = cpByCpvBf[patchi]; + fvPatchScalarField& pCpByCpv = CpByCpvBf[patchi]; forAll(pT, facei) { - pCpByCpv[facei] = this->patchFaceMixture(patchi, facei).cpBycpv + pCpByCpv[facei] = this->patchFaceMixture(patchi, facei).CpByCpv ( pp[facei], pT[facei] diff --git a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H index d49aa797ff73b20bd387f4a530adf9fecd0b524b..f7f213f10a9781eccb0983f21c7f7fb4e53b3875 100644 --- a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H +++ b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,6 +73,11 @@ public: // Member functions + const ThermoType& mixture() const + { + return mixture_; + } + const ThermoType& cellMixture(const label) const { return mixture_; diff --git a/src/thermophysicalModels/basic/rhoThermo/liquidThermo.C b/src/thermophysicalModels/basic/rhoThermo/liquidThermo.C new file mode 100644 index 0000000000000000000000000000000000000000..de4a576b10cb4dac64be11b207ade5f918274865 --- /dev/null +++ b/src/thermophysicalModels/basic/rhoThermo/liquidThermo.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "liquidThermo.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +defineTemplateTypeNameAndDebugWithName +( + heRhoThermopureMixtureliquidProperties, + "heRhoThermo<pureMixture<liquid,sensibleInternalEnergy>>", + 0 +); + +addToRunTimeSelectionTable +( + basicThermo, + heRhoThermopureMixtureliquidProperties, + fvMesh +); + +addToRunTimeSelectionTable +( + fluidThermo, + heRhoThermopureMixtureliquidProperties, + fvMesh +); + +addToRunTimeSelectionTable +( + rhoThermo, + heRhoThermopureMixtureliquidProperties, + fvMesh +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/rhoThermo/liquidThermo.H b/src/thermophysicalModels/basic/rhoThermo/liquidThermo.H new file mode 100644 index 0000000000000000000000000000000000000000..de5aed514337bbfe834b9514d2a7407217f4653c --- /dev/null +++ b/src/thermophysicalModels/basic/rhoThermo/liquidThermo.H @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "rhoThermo.H" +#include "heRhoThermo.H" +#include "pureMixture.H" +#include "thermo.H" +#include "sensibleInternalEnergy.H" +#include "thermophysicalPropertiesSelector.H" +#include "liquidProperties.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +typedef heRhoThermo +< + rhoThermo, + pureMixture + < + species::thermo + < + thermophysicalPropertiesSelector<liquidProperties>, + sensibleInternalEnergy + > + > +> heRhoThermopureMixtureliquidProperties; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/Make/options b/src/thermophysicalModels/chemistryModel/Make/options index de52d7e6ae8750b7e48f9e7dc740e3c2da538042..9da89fb7b4d6adaa903b5ca44217b5f4d42938f2 100644 --- a/src/thermophysicalModels/chemistryModel/Make/options +++ b/src/thermophysicalModels/chemistryModel/Make/options @@ -7,13 +7,14 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/ODE/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -lcompressibleTransportModels \ -lfluidThermophysicalModels \ -lreactionThermophysicalModels \ -lspecie \ - -lthermophysicalFunctions \ -lODE \ - -lfiniteVolume + -lfiniteVolume \ + -lmeshTools diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C index e74591c4f7fa3e897d13c92a71c411d7e16fa55a..8d9f0ccb6054ab1ad58d1673f70568204c04dc99 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "TDACChemistryModel.H" #include "UniformField.H" +#include "localEulerDdtScheme.H" #include "clockTime.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -37,12 +38,31 @@ Foam::TDACChemistryModel<CompType, ThermoType>::TDACChemistryModel ) : chemistryModel<CompType, ThermoType>(mesh, phaseName), + variableTimeStep_ + ( + mesh.time().controlDict().lookupOrDefault("adjustTimeStep", false) + || fv::localEulerDdt::enabled(mesh) + ), + timeSteps_(0), NsDAC_(this->nSpecie_), - completeC_(this->nSpecie_,0.0), + completeC_(this->nSpecie_, 0), reactionsDisabled_(this->reactions_.size(), false), - completeToSimplifiedIndex_(this->nSpecie_,-1), + specieComp_(this->nSpecie_), + completeToSimplifiedIndex_(this->nSpecie_, -1), simplifiedToCompleteIndex_(this->nSpecie_), - specieComp_(this->nSpecie_) + tabulationResults_ + ( + IOobject + ( + "TabulationResults", + this->time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0) + ) { basicMultiComponentMixture& composition = this->thermo().composition(); @@ -53,7 +73,7 @@ Foam::TDACChemistryModel<CompType, ThermoType>::TDACChemistryModel dynamicCast<const reactingMixture<ThermoType>&>(this->thermo()) .specieComposition(); - forAll(specieComp_,i) + forAll(specieComp_, i) { specieComp_[i] = specComp[this->Y()[i].name()]; } @@ -579,8 +599,13 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve const DeltaTType& deltaT ) { + // Increment counter of time-step + timeSteps_++; + const bool reduced = mechRed_->active(); + label nAdditionalEqn = (tabulation_->variableTimeStep() ? 1 : 0); + basicMultiComponentMixture& composition = this->thermo().composition(); // CPU time analysis @@ -591,6 +616,8 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve scalar solveChemistryCpuTime_ = 0; scalar searchISATCpuTime_ = 0; + this->resetTabulationResults(); + // Average number of active species scalar nActiveSpecies = 0; scalar nAvg = 0; @@ -625,9 +652,9 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve scalarField c0(this->nSpecie_); // Composition vector (Yi, T, p) - scalarField phiq(this->nEqns()); + scalarField phiq(this->nEqns() + nAdditionalEqn); - scalarField Rphiq(this->nEqns()); + scalarField Rphiq(this->nEqns() + nAdditionalEqn); forAll(rho, celli) { @@ -642,7 +669,12 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve phiq[i] = this->Y()[i][celli]; } phiq[this->nSpecie()]=Ti; - phiq[this->nSpecie()+1]=pi; + phiq[this->nSpecie() + 1]=pi; + if (tabulation_->variableTimeStep()) + { + phiq[this->nSpecie() + 2] = deltaT[celli]; + } + // Initialise time progress scalar timeLeft = deltaT[celli]; @@ -668,7 +700,7 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve // This position is reached when tabulation is not used OR // if the solution is not retrieved. // In the latter case, it adds the information to the tabulation - // (it will either expand the current data or add a new stored poin). + // (it will either expand the current data or add a new stored point). else { clockTime_.timeIncrement(); @@ -720,12 +752,28 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve { Rphiq[i] = c[i]/rhoi*this->specieThermo_[i].W(); } - - Rphiq[Rphiq.size()-2] = Ti; - Rphiq[Rphiq.size()-1] = pi; - tabulation_->add(phiq, Rphiq, rhoi); + if (tabulation_->variableTimeStep()) + { + Rphiq[Rphiq.size()-3] = Ti; + Rphiq[Rphiq.size()-2] = pi; + Rphiq[Rphiq.size()-1] = deltaT[celli]; + } + else + { + Rphiq[Rphiq.size()-2] = Ti; + Rphiq[Rphiq.size()-1] = pi; + } + label growOrAdd = + tabulation_->add(phiq, Rphiq, rhoi, deltaT[celli]); + if (growOrAdd) + { + this->setTabulationResultsAdd(celli); + } + else + { + this->setTabulationResultsGrow(celli); + } } - addNewLeafCpuTime_ += clockTime_.timeIncrement(); // When operations are done and if mechanism reduction is active, @@ -840,4 +888,35 @@ Foam::scalar Foam::TDACChemistryModel<CompType, ThermoType>::solve } +template<class CompType, class ThermoType> +void Foam::TDACChemistryModel<CompType, ThermoType>::setTabulationResultsAdd +( + const label celli +) +{ + tabulationResults_[celli] = 0.0; +} + + +template<class CompType, class ThermoType> +void Foam::TDACChemistryModel<CompType, ThermoType>::setTabulationResultsGrow +( + const label celli +) +{ + tabulationResults_[celli] = 1.0; +} + + +template<class CompType, class ThermoType> +void Foam::TDACChemistryModel<CompType, ThermoType>:: +setTabulationResultsRetrieve +( + const label celli +) +{ + tabulationResults_[celli] = 2.0; +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H index 52a8f0860f92002359dc5cced7e70b3e8eda868e..1e65270dbf2ebad915254688e0be3e7854df2475 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,14 +85,18 @@ class TDACChemistryModel { // Private member data + bool variableTimeStep_; + + label timeSteps_; + // Mechanism reduction label NsDAC_; scalarField completeC_; scalarField simplifiedC_; Field<bool> reactionsDisabled_; + List<List<specieElement>> specieComp_; Field<label> completeToSimplifiedIndex_; DynamicList<label> simplifiedToCompleteIndex_; - List<List<specieElement>> specieComp_; autoPtr<chemistryReductionMethod<CompType, ThermoType>> mechRed_; // Tabulation @@ -113,6 +117,12 @@ class TDACChemistryModel //- Log file for average time spent solving the chemistry autoPtr<OFstream> cpuSolveFile_; + // Field containing information about tabulation: + // 0 -> add (direct integration) + // 1 -> grow + // 2 -> retrieve + volScalarField tabulationResults_; + // Private Member Functions @@ -151,6 +161,12 @@ public: // Member Functions + //- Return true if the time-step is variable and/or non-uniform + inline bool variableTimeStep() const; + + //- Return the number of chemistry evaluations (used by ISAT) + inline label timeSteps() const; + //- Create and return a TDAC log file of the given name inline autoPtr<OFstream> logFile(const word& name) const; @@ -256,6 +272,19 @@ public: inline autoPtr<chemistryReductionMethod<CompType, ThermoType>>& mechRed(); + + tmp<volScalarField> tabulationResults() const + { + return tabulationResults_; + } + + void setTabulationResultsAdd(const label celli); + + void setTabulationResultsGrow(const label celli); + + void setTabulationResultsRetrieve(const label celli); + + inline void resetTabulationResults(); }; diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModelI.H index 8aedea057114e9bf16f1998c48f6d562e464852d..011e47aa2c08f5d06abb82bd39dc4290c7995f13 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModelI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,22 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class CompType, class ThermoType> +inline bool +Foam::TDACChemistryModel<CompType, ThermoType>::variableTimeStep() const +{ + return variableTimeStep_; +} + + +template<class CompType, class ThermoType> +inline Foam::label +Foam::TDACChemistryModel<CompType, ThermoType>::timeSteps() const +{ + return timeSteps_; +} + + template<class CompType, class ThermoType> inline Foam::autoPtr<Foam::OFstream> Foam::TDACChemistryModel<CompType, ThermoType>::logFile(const word& name) const @@ -149,4 +165,14 @@ Foam::TDACChemistryModel<CompType, ThermoType>::specieComp() } +template<class CompType, class ThermoType> +void Foam::TDACChemistryModel<CompType, ThermoType>::resetTabulationResults() +{ + forAll(tabulationResults_, tabi) + { + tabulationResults_[tabi] = 2; + } +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.C index cf54307b15ae4186f2f87f4e44cbb6fd234266cd..555365b7ba880ef4fdb5b44664224cc8c1dc4893 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,16 +41,11 @@ Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::ISAT chemistry ), chemisTree_(chemistry, this->coeffsDict_), - scaleFactor_(chemistry.nEqns(), 1.0), + scaleFactor_(chemistry.nEqns() + ((this->variableTimeStep()) ? 1 : 0), 1), runTime_(chemistry.time()), chPMaxLifeTime_ ( - this->coeffsDict_.lookupOrDefault - ( - "chPMaxLifeTime", - (runTime_.endTime().value()-runTime_.startTime().value()) - /runTime_.deltaT().value() - ) + this->coeffsDict_.lookupOrDefault("chPMaxLifeTime", INT_MAX) ), maxGrowth_(this->coeffsDict_.lookupOrDefault("maxGrowth", INT_MAX)), checkEntireTreeInterval_ @@ -103,7 +98,20 @@ Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::ISAT } } scaleFactor_[Ysize] = readScalar(scaleDict.lookup("Temperature")); - scaleFactor_[Ysize+1] = readScalar(scaleDict.lookup("Pressure")); + scaleFactor_[Ysize + 1] = readScalar(scaleDict.lookup("Pressure")); + if (this->variableTimeStep()) + { + scaleFactor_[Ysize + 2] = readScalar(scaleDict.lookup("deltaT")); + } + } + + if (this->variableTimeStep()) + { + nAdditionalEqns_ = 3; + } + else + { + nAdditionalEqns_ = 2; } if (this->log()) @@ -190,16 +198,16 @@ void Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::calcNewC scalarField& Rphiq ) { - label nEqns = this->chemistry_.nEqns(); // Full set of species + label nEqns = this->chemistry_.nEqns(); // Species, T, p bool mechRedActive = this->chemistry_.mechRed()->active(); Rphiq = phi0->Rphi(); scalarField dphi(phiq-phi0->phi()); const scalarSquareMatrix& gradientsMatrix = phi0->A(); List<label>& completeToSimplified(phi0->completeToSimplifiedIndex()); - // Rphiq[i] = Rphi0[i]+A(i, j)dphi[j] + // Rphiq[i]=Rphi0[i]+A(i, j)dphi[j] // where Aij is dRi/dphi_j - for (label i=0; i<nEqns-2; i++) + for (label i=0; i<nEqns-nAdditionalEqns_; i++) { if (mechRedActive) { @@ -216,9 +224,18 @@ void Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::calcNewC } } Rphiq[i] += - gradientsMatrix(si, phi0->nActiveSpecies())*dphi[nEqns-2]; + gradientsMatrix(si, phi0->nActiveSpecies())*dphi[nEqns - 2]; Rphiq[i] += - gradientsMatrix(si, phi0->nActiveSpecies()+1)*dphi[nEqns-1]; + gradientsMatrix(si, phi0->nActiveSpecies() + 1) + *dphi[nEqns - 1]; + + if (this->variableTimeStep()) + { + Rphiq[i] += + gradientsMatrix(si, phi0->nActiveSpecies() + 2) + *dphi[nEqns]; + } + // As we use an approximation of A, Rphiq should be checked for // negative values Rphiq[i] = max(0.0,Rphiq[i]); @@ -260,10 +277,11 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::grow // Raise a flag when the chemPoint used has been grown more than the // allowed number of time - if (!phi0->toRemove() && phi0->nGrowth() > maxGrowth_) + if (phi0->nGrowth() > maxGrowth_) { cleaningRequired_ = true; phi0->toRemove() = true; + return false; } // If the solution RphiQ is still within the tolerance we try to grow it @@ -294,14 +312,10 @@ Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::cleanAndBalance() { chemPointISAT<CompType, ThermoType>* xtmp = chemisTree_.treeSuccessor(x); - // timeOutputValue returns timeToUserTime(value()), therefore, it should - // be compare with timeToUserTime(deltaT) - scalar elapsedTime = runTime_.timeOutputValue() - x->timeTag(); - scalar maxElapsedTime = - chPMaxLifeTime_ - * runTime_.timeToUserTime(runTime_.deltaTValue()); - - if ((elapsedTime > maxElapsedTime) || (x->nGrowth() > maxGrowth_)) + + scalar elapsedTimeSteps = this->chemistry_.timeSteps() - x->timeTag(); + + if ((elapsedTimeSteps > chPMaxLifeTime_) || (x->nGrowth() > maxGrowth_)) { chemisTree_.deleteLeaf(x); treeModified = true; @@ -334,13 +348,13 @@ void Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::computeA ( scalarSquareMatrix& A, const scalarField& Rphiq, - const scalar rhoi + const scalar rhoi, + const scalar dt ) { - scalar dt = runTime_.deltaTValue(); bool mechRedActive = this->chemistry_.mechRed()->active(); label speciesNumber = this->chemistry_.nSpecie(); - scalarField Rcq(this->chemistry_.nEqns()); + scalarField Rcq(this->chemistry_.nEqns() + nAdditionalEqns_ - 2); for (label i=0; i<speciesNumber; i++) { label s2c = i; @@ -350,8 +364,12 @@ void Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::computeA } Rcq[i] = rhoi*Rphiq[s2c]/this->chemistry_.specieThermo()[s2c].W(); } - Rcq[speciesNumber] = Rphiq[Rphiq.size()-2]; - Rcq[speciesNumber+1] = Rphiq[Rphiq.size()-1]; + Rcq[speciesNumber] = Rphiq[Rphiq.size() - nAdditionalEqns_]; + Rcq[speciesNumber+1] = Rphiq[Rphiq.size() - nAdditionalEqns_ + 1]; + if (this->variableTimeStep()) + { + Rcq[speciesNumber + 2] = Rphiq[Rphiq.size() - nAdditionalEqns_ + 2]; + } // Aaa is computed implicitely, // A is given by A = C(psi0, t0+dt), where C is obtained through solving @@ -398,7 +416,11 @@ void Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::computeA // For temperature and pressure, only unity on the diagonal A(speciesNumber, speciesNumber) = 1; - A(speciesNumber+1, speciesNumber+1) = 1; + A(speciesNumber + 1, speciesNumber + 1) = 1; + if (this->variableTimeStep()) + { + A[speciesNumber + 2][speciesNumber + 2] = 1; + } // Inverse of (I-dt*J(psi(t0+dt))) LUscalarMatrix LUA(A); @@ -463,20 +485,18 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::retrieve if (retrieved) { - scalar elapsedTime = - runTime_.timeOutputValue() - phi0->timeTag(); - scalar maxElapsedTime = - chPMaxLifeTime_ - * runTime_.timeToUserTime(runTime_.deltaTValue()); + phi0->increaseNumRetrieve(); + scalar elapsedTimeSteps = + this->chemistry_.timeSteps() - phi0->timeTag(); // Raise a flag when the chemPoint has been used more than the allowed // number of time steps - if (elapsedTime > maxElapsedTime && !phi0->toRemove()) + if (elapsedTimeSteps > chPMaxLifeTime_ && !phi0->toRemove()) { cleaningRequired_ = true; phi0->toRemove() = true; } - lastSearch_->lastTimeUsed() = runTime_.timeOutputValue(); + lastSearch_->lastTimeUsed() = this->chemistry_.timeSteps(); addToMRU(phi0); calcNewC(phi0,phiq, Rphiq); nRetrieved_++; @@ -492,13 +512,15 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::retrieve template<class CompType, class ThermoType> -bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::add +Foam::label Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::add ( const scalarField& phiq, const scalarField& Rphiq, - const scalar rho + const scalar rho, + const scalar deltaT ) { + label growthOrAddFlag = 1; // If lastSearch_ holds a valid pointer to a chemPoint AND the growPoints_ // option is on, the code first tries to grow the point hold by lastSearch_ if (lastSearch_ && growPoints_) @@ -506,13 +528,12 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::add if (grow(lastSearch_,phiq, Rphiq)) { nGrowth_++; - // the structure of the tree is not modified, return false - return false; + growthOrAddFlag = 0; + //the structure of the tree is not modified, return false + return growthOrAddFlag; } } - bool treeCleanedOrCleared(false); - // If the code reach this point, it is either because lastSearch_ is not // valid, OR because growPoints_ is not on, OR because the grow operation // has failed. In the three cases, a new point is added to the tree. @@ -567,16 +588,12 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::add // The structure has been changed, it will force the binary tree to // perform a new search and find the most appropriate point still stored lastSearch_ = nullptr; - - // Either cleanAndBalance has changed the tree or it has been cleared - // in any case treeCleanedOrCleared should be set to true - treeCleanedOrCleared = true; } // Compute the A matrix needed to store the chemPoint. - label ASize = this->chemistry_.nEqns(); // Reduced when mechRed is active + label ASize = this->chemistry_.nEqns() + nAdditionalEqns_ - 2; scalarSquareMatrix A(ASize, Zero); - computeA(A, Rphiq, rho); + computeA(A, Rphiq, rho, deltaT); chemisTree().insertNewLeaf ( @@ -591,7 +608,7 @@ bool Foam::chemistryTabulationMethods::ISAT<CompType, ThermoType>::add nAdd_++; - return treeCleanedOrCleared; + return growthOrAddFlag; } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.H index 148f0be22569183136b8d2596124ff3e290b8883..3a478146d9882c85a6ed545d0df22b7ceb0aef69 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -112,6 +112,9 @@ class ISAT bool cleaningRequired_; + //- Number of equations in addition to the species eqs. + label nAdditionalEqns_; + // Private Member Functions @@ -168,7 +171,8 @@ class ISAT ( scalarSquareMatrix& A, const scalarField& Rphiq, - const scalar rho + const scalar rho, + const scalar dt ); @@ -224,11 +228,12 @@ public: // This function can grow an existing point or add a new leaf to the // binary tree Input : phiq the new composition to store Rphiq the // mapping of the new composition point - virtual bool add + virtual label add ( const scalarField& phiq, const scalarField& Rphiq, - const scalar rho + const scalar rho, + const scalar deltaT ); virtual bool update() diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.C index 45bf42a4c4e46fb0610cfb7b6a1bfdb8bd6049ce..5a4c4663b18a2e4aeaedee5501ce93276580cdf5 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,15 +28,14 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CompType, class ThermoType> -Foam::binaryNode<CompType, ThermoType>::binaryNode -( -) +Foam::binaryNode<CompType, ThermoType>::binaryNode() : leafLeft_(nullptr), leafRight_(nullptr), nodeLeft_(nullptr), nodeRight_(nullptr), - parent_(nullptr) + parent_(nullptr), + nAdditionalEqns_(0) {} @@ -53,34 +52,26 @@ Foam::binaryNode<CompType, ThermoType>::binaryNode nodeLeft_(nullptr), nodeRight_(nullptr), parent_(parent), - v_(elementLeft->completeSpaceSize(),0.0) + v_(elementLeft->completeSpaceSize(), 0) { + if (elementLeft->variableTimeStep()) + { + nAdditionalEqns_ = 3; + } + else + { + nAdditionalEqns_ = 2; + } + calcV(elementLeft, elementRight, v_); a_ = calcA(elementLeft, elementRight); } -template<class CompType, class ThermoType> -Foam::binaryNode<CompType, ThermoType>::binaryNode -( - binaryNode<CompType, ThermoType> *bn -) -: - leafLeft_(bn->leafLeft()), - leafRight_(bn->leafRight()), - nodeLeft_(bn->nodeLeft()), - nodeRight_(bn->nodeRight()), - parent_(bn->parent()), - v_(bn->v()), - a_(bn->a()) -{} - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - template<class CompType, class ThermoType> -void -Foam::binaryNode<CompType, ThermoType>::calcV +void Foam::binaryNode<CompType, ThermoType>::calcV ( chemPointISAT<CompType, ThermoType>*& elementLeft, chemPointISAT<CompType, ThermoType>*& elementRight, @@ -90,7 +81,8 @@ Foam::binaryNode<CompType, ThermoType>::calcV // LT is the transpose of the L matrix scalarSquareMatrix& LT = elementLeft->LT(); bool mechReductionActive = elementLeft->chemistry().mechRed()->active(); - // difference of composition in the full species domain + + // Difference of composition in the full species domain scalarField phiDif(elementRight->phi() - elementLeft->phi()); const scalarField& scaleFactor(elementLeft->scaleFactor()); scalar epsTol = elementLeft->tolerance(); @@ -102,28 +94,29 @@ Foam::binaryNode<CompType, ThermoType>::calcV bool outOfIndexI = true; if (mechReductionActive) { - if (i<elementLeft->completeSpaceSize()-2) + if (i<elementLeft->completeSpaceSize() - nAdditionalEqns_) { si = elementLeft->completeToSimplifiedIndex()[i]; - outOfIndexI = (si==-1); + outOfIndexI = (si == -1); } - else// temperature and pressure + else // temperature and pressure { outOfIndexI = false; - label dif = i-(elementLeft->completeSpaceSize()-2); - si = elementLeft->nActiveSpecies()+dif; + const label dif = + i - (elementLeft->completeSpaceSize() - nAdditionalEqns_); + si = elementLeft->nActiveSpecies() + dif; } } if (!mechReductionActive || (mechReductionActive && !(outOfIndexI))) { - v[i]=0.0; + v[i] = 0; for (label j=0; j<elementLeft->completeSpaceSize(); j++) { label sj = j; bool outOfIndexJ = true; if (mechReductionActive) { - if (j<elementLeft->completeSpaceSize()-2) + if (j < elementLeft->completeSpaceSize() - nAdditionalEqns_) { sj = elementLeft->completeToSimplifiedIndex()[j]; outOfIndexJ = (sj==-1); @@ -131,8 +124,13 @@ Foam::binaryNode<CompType, ThermoType>::calcV else { outOfIndexJ = false; - label dif = j-(elementLeft->completeSpaceSize()-2); - sj = elementLeft->nActiveSpecies()+dif; + const label dif = + j + - ( + elementLeft->completeSpaceSize() + - nAdditionalEqns_ + ); + sj = elementLeft->nActiveSpecies() + dif; } } if @@ -141,7 +139,7 @@ Foam::binaryNode<CompType, ThermoType>::calcV ||(mechReductionActive && !(outOfIndexJ)) ) { - // since L is a lower triangular matrix k=0->min(i, j) + // Since L is a lower triangular matrix k=0->min(i, j) for (label k=0; k<=min(si, sj); k++) { v[i] += LT(k, si)*LT(k, sj)*phiDif[j]; @@ -151,8 +149,8 @@ Foam::binaryNode<CompType, ThermoType>::calcV } else { - // when it is an inactive species the diagonal element of LT is - // 1/(scaleFactor*epsTol) + // When it is an inactive species the diagonal element of LT is + // 1/(scaleFactor*epsTol) v[i] = phiDif[i]/sqr(scaleFactor[i]*epsTol); } } @@ -166,13 +164,13 @@ Foam::scalar Foam::binaryNode<CompType, ThermoType>::calcA chemPointISAT<CompType, ThermoType>* elementRight ) { - scalar a = 0.0; - scalarField phih((elementLeft->phi()+elementRight->phi())/2); - label completeSpaceSize = elementLeft->completeSpaceSize(); - for (label i=0; i<completeSpaceSize; i++) + scalarField phih((elementLeft->phi() + elementRight->phi())/2); + scalar a = 0; + forAll(phih, i) { a += v_[i]*phih[i]; } + return a; } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.H index d747054eddbf2461a24ea023bcd187557ec998a8..99952a51f68f07547f3ae07f8bd5eed99766f72d 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,7 +67,11 @@ public: //- Parent node binaryNode<CompType, ThermoType>* parent_; + //- Number of equations in addition to the species eqs. + label nAdditionalEqns_; + scalarField v_; + scalar a_; //- Compute vector v: @@ -130,11 +134,6 @@ public: chemPointISAT<CompType, ThermoType>* elementRight, binaryNode<CompType, ThermoType>* parent ); - //- Construct from another binary node - binaryNode - ( - binaryNode<CompType, ThermoType> *bn - ); // Member functions diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.C index 7ed6495991fdb928f3f63191f2ff7c5627da9329..a0332db4628363c4e73fe662ba56ff65a99272fb 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,7 +66,7 @@ bool Foam::binaryTree<CompType, ThermoType>::inSubTree { if ((n2ndSearch_ < max2ndSearch_) && (y!=nullptr)) { - scalar vPhi=0.0; + scalar vPhi = 0; const scalarField& v = y->v(); const scalar a = y->a(); // compute v*phi @@ -74,18 +74,18 @@ bool Foam::binaryTree<CompType, ThermoType>::inSubTree { vPhi += phiq[i]*v[i]; } - if (vPhi<=a)// on the left side of the node + if (vPhi <= a)// on the left side of the node { if (y->nodeLeft() == nullptr)// left is a chemPoint { n2ndSearch_++; if (y->leafLeft()->inEOA(phiq)) { - x=y->leafLeft(); + x = y->leafLeft(); return true; } } - else// the left side is a node + else // the left side is a node { if (inSubTree(phiq, y->nodeLeft(),x)) { @@ -100,16 +100,16 @@ bool Foam::binaryTree<CompType, ThermoType>::inSubTree // we reach the end of the subTree we can return the result if (y->leafRight()->inEOA(phiq)) { - x=y->leafRight(); + x = y->leafRight(); return true; } else { - x=nullptr; + x = nullptr; return false; } } - else// test for n2ndSearch is done in the call of inSubTree + else // test for n2ndSearch is done in the call of inSubTree { return inSubTree(phiq, y->nodeRight(),x); } @@ -124,11 +124,11 @@ bool Foam::binaryTree<CompType, ThermoType>::inSubTree return true; } } - else// the right side is a node + else // the right side is a node { if (inSubTree(phiq, y->nodeRight(),x)) { - x=y->leafRight(); + x = y->leafRight(); return true; } } @@ -139,12 +139,12 @@ bool Foam::binaryTree<CompType, ThermoType>::inSubTree n2ndSearch_++; if (y->leafLeft()->inEOA(phiq)) { - x=y->leafLeft(); + x = y->leafLeft(); return true; } else { - x=nullptr; + x = nullptr; return false; } } @@ -216,7 +216,7 @@ template<class CompType, class ThermoType> Foam::chemPointISAT<CompType, ThermoType>* Foam::binaryTree<CompType, ThermoType>::chemPSibling(bn* y) { - if (y->parent()!=nullptr) + if (y->parent() != nullptr) { if (y == y->parent()->nodeLeft())// y is on the left, return right side { @@ -235,6 +235,7 @@ Foam::binaryTree<CompType, ThermoType>::chemPSibling(bn* y) return nullptr; } } + // the binaryNode is root_ and has no sibling return nullptr; } @@ -367,7 +368,9 @@ Foam::label Foam::binaryTree<CompType, ThermoType>::depth(bn* subTreeRoot) } else { - return 1+max + return + 1 + + max ( depth(subTreeRoot->nodeLeft()), depth(subTreeRoot->nodeRight()) @@ -379,14 +382,14 @@ Foam::label Foam::binaryTree<CompType, ThermoType>::depth(bn* subTreeRoot) template<class CompType, class ThermoType> void Foam::binaryTree<CompType, ThermoType>::insertNewLeaf ( - const scalarField& phiq, - const scalarField& Rphiq, - const scalarSquareMatrix& A, - const scalarField& scaleFactor, - const scalar& epsTol, - const label nCols, - chP*& phi0 - ) + const scalarField& phiq, + const scalarField& Rphiq, + const scalarSquareMatrix& A, + const scalarField& scaleFactor, + const scalar& epsTol, + const label nCols, + chP*& phi0 +) { if (size_ == 0) // no points are stored { @@ -452,7 +455,7 @@ void Foam::binaryTree<CompType, ThermoType>::insertNewLeaf root_ = newNode; } - phi0->node()=newNode; + phi0->node() = newNode; newChemPoint->node()=newNode; } size_++; @@ -530,7 +533,7 @@ bool Foam::binaryTree<CompType, ThermoType>::secondaryBTSearch n2ndSearch_++; if (xS->inEOA(phiq)) { - x=xS; + x = xS; return true; } } @@ -557,7 +560,7 @@ bool Foam::binaryTree<CompType, ThermoType>::secondaryBTSearch { return true; } - y=y->parent(); + y = y->parent(); } // if we reach this point it is either because // we did not find another covering EOA in the entire tree or @@ -574,7 +577,6 @@ bool Foam::binaryTree<CompType, ThermoType>::secondaryBTSearch template<class CompType, class ThermoType> void Foam::binaryTree<CompType, ThermoType>::deleteLeaf(chP*& phi0) { - if (size_ == 1) // only one point is stored { deleteDemandDrivenData(phi0); @@ -595,7 +597,7 @@ void Foam::binaryTree<CompType, ThermoType>::deleteLeaf(chP*& phi0) root_->leafLeft()=siblingPhi0; siblingPhi0->node()=root_; } - else if (z==z->parent()->nodeLeft()) + else if (z == z->parent()->nodeLeft()) { z->parent()->leafLeft() = siblingPhi0; z->parent()->nodeLeft() = nullptr; @@ -642,16 +644,16 @@ void Foam::binaryTree<CompType, ThermoType>::balance() //1) walk through the entire tree by starting with the tree's most left // chemPoint - chP* x=treeMin(); + chP* x = treeMin(); List<chP*> chemPoints(size_); label chPi=0; //2) compute the mean composition - while(x!=nullptr) + while (x != nullptr) { const scalarField& phij = x->phi(); mean += phij; chemPoints[chPi++] = x; - x=treeSuccessor(x); + x = treeSuccessor(x); } mean /= size_; @@ -691,15 +693,15 @@ void Foam::binaryTree<CompType, ThermoType>::balance() phiMaxDir.sort(); // delete reference to all node since the tree is reshaped deleteAllNode(); - root_=nullptr; + root_ = nullptr; // add the node for the two extremum bn* newNode = new bn - ( - chemPoints[phiMaxDir.indices()[0]], - chemPoints[phiMaxDir.indices()[phiMaxDir.size()-1]], - nullptr - ); + ( + chemPoints[phiMaxDir.indices()[0]], + chemPoints[phiMaxDir.indices()[phiMaxDir.size()-1]], + nullptr + ); root_ = newNode; chemPoints[phiMaxDir.indices()[0]]->node() = newNode; @@ -719,8 +721,8 @@ void Foam::binaryTree<CompType, ThermoType>::balance() new bn(phi0,chemPoints[phiMaxDir.indices()[cpi]], phi0->node()); // make the parent of phi0 point to the newly created node insertNode(phi0, nodeToAdd); - phi0->node()=nodeToAdd; - chemPoints[phiMaxDir.indices()[cpi]]->node()=nodeToAdd; + phi0->node() = nodeToAdd; + chemPoints[phiMaxDir.indices()[cpi]]->node() = nodeToAdd; } } @@ -800,14 +802,14 @@ Foam::binaryTree<CompType, ThermoType>::treeSuccessor(chP* x) template<class CompType, class ThermoType> void Foam::binaryTree<CompType, ThermoType>::clear() { - // recursively delete the element in the subTree + // Recursively delete the element in the subTree deleteSubTree(); - // reset root node (should already be nullptr) - root_=nullptr; + // Reset root node (should already be nullptr) + root_ = nullptr; - // reset size_ - size_=0; + // Reset size_ + size_ = 0; } @@ -818,4 +820,25 @@ bool Foam::binaryTree<CompType, ThermoType>::isFull() } +template<class CompType, class ThermoType> +void Foam::binaryTree<CompType, ThermoType>::resetNumRetrieve() +{ + // Has to go along each chP of the tree + if (size_ > 0) + { + // First finds the first leaf + chP* chP0 = treeMin(); + chP0->resetNumRetrieve(); + + // Then go to each successor + chP* nextChP = treeSuccessor(chP0); + while (nextChP != nullptr) + { + nextChP->resetNumRetrieve(); + nextChP = treeSuccessor(nextChP); + } + } +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.H index a2d267733e96d776950e29c19193e21d7557ade5..9d4275d99295d9e8d339e5b76d22f235c1c82dc9 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -230,6 +230,8 @@ public: //- ListFull bool isFull(); + + void resetNumRetrieve(); }; diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.C index aeaa4758cdeb1fab12f4acc66bfbdaf1522d4a5c..3cc07cfef6eb8bcac2df79f884edf009607516e8 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,7 +33,6 @@ License template<class CompType, class ThermoType> Foam::scalar Foam::chemPointISAT<CompType, ThermoType>::tolerance_; - // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // template<class CompType, class ThermoType> @@ -75,7 +74,7 @@ void Foam::chemPointISAT<CompType, ThermoType>::qrDecompose d[k] = -scale*sigma; for (label j=k+1; j<nCols; j++) { - sum=0; + sum = 0; for ( label i=k; i<nCols; i++) { sum += R(i, k)*R(i, j); @@ -137,11 +136,11 @@ void Foam::chemPointISAT<CompType, ThermoType>::qrUpdate } else if (mag(w[i]) > mag(w[i+1])) { - w[i] = mag(w[i])*sqrt(1 + sqr(w[i+1]/w[i])); + w[i] = mag(w[i])*sqrt(1.0 + sqr(w[i+1]/w[i])); } else { - w[i] = mag(w[i+1])*sqrt(1 + sqr(w[i]/w[i+1])); + w[i] = mag(w[i+1])*sqrt(1.0 + sqr(w[i]/w[i+1])); } } @@ -171,18 +170,18 @@ void Foam::chemPointISAT<CompType, ThermoType>::rotate if (a == 0) { c = 0; - s = (b >= 0 ? 1.0 : -1.0); + s = (b >= 0 ? 1 : -1); } else if (mag(a) > mag(b)) { fact = b/a; - c = sign(a)/sqrt(1 + sqr(fact)); + c = sign(a)/sqrt(1.0 + sqr(fact)); s = fact*c; } else { fact = a/b; - s = sign(b)/sqrt(1 + sqr(fact)); + s = sign(b)/sqrt(1.0 + sqr(fact)); c = fact*s; } for (label j=i;j<n;j++) @@ -220,20 +219,39 @@ Foam::chemPointISAT<CompType, ThermoType>::chemPointISAT completeSpaceSize_(completeSpaceSize), nGrowth_(0), nActiveSpecies_(chemistry.mechRed()->NsSimp()), - completeToSimplifiedIndex_(completeSpaceSize-2), simplifiedToCompleteIndex_(nActiveSpecies_), - timeTag_(chemistry_.time().timeOutputValue()), - lastTimeUsed_(chemistry_.time().timeOutputValue()), + timeTag_(chemistry_.timeSteps()), + lastTimeUsed_(chemistry_.timeSteps()), toRemove_(false), maxNumNewDim_(coeffsDict.lookupOrDefault("maxNumNewDim",0)), - printProportion_(coeffsDict.lookupOrDefault("printProportion",false)) + printProportion_(coeffsDict.lookupOrDefault("printProportion",false)), + numRetrieve_(0), + nLifeTime_(0), + completeToSimplifiedIndex_ + ( + completeSpaceSize - (2 + (variableTimeStep() == 1 ? 1 : 0)) + ) { - tolerance_=tolerance; + tolerance_ = tolerance; + + if (variableTimeStep()) + { + nAdditionalEqns_ = 3; + iddeltaT_ = completeSpaceSize - 1; + scaleFactor_[iddeltaT_] *= phi_[iddeltaT_] / tolerance_; + } + else + { + nAdditionalEqns_ = 2; + iddeltaT_ = completeSpaceSize; // will not be used + } + idT_ = completeSpaceSize - nAdditionalEqns_; + idp_ = completeSpaceSize - nAdditionalEqns_ + 1; bool isMechRedActive = chemistry_.mechRed()->active(); if (isMechRedActive) { - for (label i=0; i<completeSpaceSize-2; i++) + for (label i=0; i<completeSpaceSize-nAdditionalEqns_; i++) { completeToSimplifiedIndex_[i] = chemistry.completeToSimplifiedIndex()[i]; @@ -248,7 +266,7 @@ Foam::chemPointISAT<CompType, ThermoType>::chemPointISAT label reduOrCompDim = completeSpaceSize; if (isMechRedActive) { - reduOrCompDim = nActiveSpecies_ + 2; + reduOrCompDim = nActiveSpecies_+nAdditionalEqns_; } // SVD decomposition A = U*D*V^T @@ -313,14 +331,31 @@ Foam::chemPointISAT<CompType, ThermoType>::chemPointISAT completeSpaceSize_(p.completeSpaceSize()), nGrowth_(p.nGrowth()), nActiveSpecies_(p.nActiveSpecies()), - completeToSimplifiedIndex_(p.completeToSimplifiedIndex()), simplifiedToCompleteIndex_(p.simplifiedToCompleteIndex()), timeTag_(p.timeTag()), lastTimeUsed_(p.lastTimeUsed()), toRemove_(p.toRemove()), - maxNumNewDim_(p.maxNumNewDim()) + maxNumNewDim_(p.maxNumNewDim()), + numRetrieve_(0), + nLifeTime_(0), + completeToSimplifiedIndex_(p.completeToSimplifiedIndex()) { - tolerance_ = p.tolerance(); + tolerance_ = p.tolerance(); + + if (variableTimeStep()) + { + nAdditionalEqns_ = 3; + idT_ = completeSpaceSize() - 3; + idp_ = completeSpaceSize() - 2; + iddeltaT_ = completeSpaceSize() - 1; + } + else + { + nAdditionalEqns_ = 2; + idT_ = completeSpaceSize() - 2; + idp_ = completeSpaceSize() - 1; + iddeltaT_ = completeSpaceSize(); // will not be used + } } @@ -331,11 +366,20 @@ bool Foam::chemPointISAT<CompType, ThermoType>::inEOA(const scalarField& phiq) { scalarField dphi(phiq-phi()); bool isMechRedActive = chemistry_.mechRed()->active(); - label dim = (isMechRedActive) ? nActiveSpecies_ : completeSpaceSize()-2; - scalar epsTemp=0; + label dim(0); + if (isMechRedActive) + { + dim = nActiveSpecies_; + } + else + { + dim = completeSpaceSize() - nAdditionalEqns_; + } + + scalar epsTemp = 0; List<scalar> propEps(completeSpaceSize(), scalar(0)); - for (label i=0; i<completeSpaceSize()-2; i++) + for (label i=0; i<completeSpaceSize()-nAdditionalEqns_; i++) { scalar temp = 0; @@ -356,8 +400,12 @@ bool Foam::chemPointISAT<CompType, ThermoType>::inEOA(const scalarField& phiq) temp += LT_(si, j)*dphi[sj]; } - temp += LT_(si, nActiveSpecies_)*dphi[completeSpaceSize()-2]; - temp += LT_(si, nActiveSpecies_+1)*dphi[completeSpaceSize()-1]; + temp += LT_(si, dim)*dphi[idT_]; + temp += LT_(si, dim+1)*dphi[idp_]; + if (variableTimeStep()) + { + temp += LT_(si, dim+2)*dphi[iddeltaT_]; + } } else { @@ -373,28 +421,65 @@ bool Foam::chemPointISAT<CompType, ThermoType>::inEOA(const scalarField& phiq) } // Temperature - epsTemp += - sqr - ( - LT_(dim, dim)*dphi[completeSpaceSize()-2] - +LT_(dim, dim+1)*dphi[completeSpaceSize()-1] - ); + if (variableTimeStep()) + { + epsTemp += + sqr + ( + LT_(dim, dim)*dphi[idT_] + +LT_(dim, dim+1)*dphi[idp_] + +LT_(dim, dim+2)*dphi[iddeltaT_] + ); + } + else + { + epsTemp += + sqr + ( + LT_(dim, dim)*dphi[idT_] + +LT_(dim, dim+1)*dphi[idp_] + ); + } // Pressure - epsTemp += sqr(LT_(dim+1, dim+1)*dphi[completeSpaceSize()-1]); + if (variableTimeStep()) + { + epsTemp += + sqr + ( + LT_(dim+1, dim+1)*dphi[idp_] + +LT_(dim+1, dim+2)*dphi[iddeltaT_] + ); + } + else + { + epsTemp += sqr(LT_(dim+1, dim+1)*dphi[idp_]); + } + + if (variableTimeStep()) + { + epsTemp += sqr(LT_[dim+2][dim+2]*dphi[iddeltaT_]); + } if (printProportion_) { - propEps[completeSpaceSize()-2] = - sqr + propEps[idT_] = sqr ( - LT_(dim, dim)*dphi[completeSpaceSize()-2] - + LT_(dim, dim+1)*dphi[completeSpaceSize()-1] + LT_(dim, dim)*dphi[idT_] + + LT_(dim, dim+1)*dphi[idp_] ); - propEps[completeSpaceSize()-1] = - sqr(LT_(dim+1, dim+1)*dphi[completeSpaceSize()-1]); + propEps[idp_] = + sqr(LT_(dim+1, dim+1)*dphi[idp_]); + + if (variableTimeStep()) + { + propEps[iddeltaT_] = + sqr(LT_[dim+2][dim+2]*dphi[iddeltaT_]); + } + } + if (sqrt(epsTemp) > 1 + tolerance_) { if (printProportion_) @@ -410,16 +495,20 @@ bool Foam::chemPointISAT<CompType, ThermoType>::inEOA(const scalarField& phiq) } } word propName; - if (maxIndex >= completeSpaceSize()-2) + if (maxIndex >= completeSpaceSize() - nAdditionalEqns_) { - if (maxIndex == completeSpaceSize()-2) + if (maxIndex == idT_) { propName = "T"; } - else if (maxIndex == completeSpaceSize()-1) + else if (maxIndex == idp_) { propName = "p"; } + else if (maxIndex == iddeltaT_) + { + propName = "deltaT"; + } } else { @@ -461,7 +550,7 @@ bool Foam::chemPointISAT<CompType, ThermoType>::checkSolution // Since we build only the solution for the species, T and p are not // included - for (label i=0; i<completeSpaceSize()-2; i++) + for (label i=0; i<completeSpaceSize()-nAdditionalEqns_; i++) { dRl = 0; if (isMechRedActive) @@ -476,8 +565,12 @@ bool Foam::chemPointISAT<CompType, ThermoType>::checkSolution label sj=simplifiedToCompleteIndex_[j]; dRl += Avar(si, j)*dphi[sj]; } - dRl += Avar(si, nActiveSpecies_)*dphi[completeSpaceSize()-2]; - dRl += Avar(si, nActiveSpecies_+1)*dphi[completeSpaceSize()-1]; + dRl += Avar(si, nActiveSpecies_)*dphi[idT_]; + dRl += Avar(si, nActiveSpecies_+1)*dphi[idp_]; + if (variableTimeStep()) + { + dRl += Avar(si, nActiveSpecies_+2)*dphi[iddeltaT_]; + } } else { @@ -522,7 +615,7 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) // check if the difference of active species is lower than the maximum // number of new dimensions allowed - for (label i=0; i<completeSpaceSize()-2; i++) + for (label i=0; i<completeSpaceSize()-nAdditionalEqns_; i++) { // first test if the current chemPoint has an inactive species // corresponding to an active one in the query point @@ -588,8 +681,8 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) { scalarSquareMatrix LTvar = LT_; // take a copy of LT_ scalarSquareMatrix Avar = A_; // take a copy of A_ - LT_ = scalarSquareMatrix(nActiveSpecies_+2, Zero); - A_ = scalarSquareMatrix(nActiveSpecies_+2, Zero); + LT_ = scalarSquareMatrix(nActiveSpecies_+nAdditionalEqns_, Zero); + A_ = scalarSquareMatrix(nActiveSpecies_+nAdditionalEqns_, Zero); // write the initial active species for (label i=0; i<initNActiveSpecies; i++) @@ -622,6 +715,14 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) A_(nActiveSpecies_+1, nActiveSpecies_+1)= Avar(initNActiveSpecies+1, initNActiveSpecies+1); + if (variableTimeStep()) + { + LT_(nActiveSpecies_+2, nActiveSpecies_+2)= + LTvar(initNActiveSpecies+2, initNActiveSpecies+2); + A_(nActiveSpecies_+2, nActiveSpecies_+2)= + Avar(initNActiveSpecies+2, initNActiveSpecies+2); + } + for (label i=initNActiveSpecies; i<nActiveSpecies_;i++) { LT_(i, i)= @@ -631,7 +732,7 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) } } - dim = nActiveSpecies_ + 2; + dim = nActiveSpecies_ + nAdditionalEqns_; } // beginning of grow algorithm @@ -641,7 +742,7 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) for (label i=0; i<dim; i++) { - for (label j=i; j<dim-2; j++)// LT is upper triangular + for (label j=i; j<dim-nAdditionalEqns_; j++)// LT is upper triangular { label sj = j; if (isMechRedActive) @@ -650,8 +751,14 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) } phiTilde[i] += LT_(i, j)*dphi[sj]; } - phiTilde[i] += LT_(i, dim-2)*dphi[completeSpaceSize()-2]; - phiTilde[i] += LT_(i, dim-1)*dphi[completeSpaceSize()-1]; + + phiTilde[i] += LT_(i, dim-nAdditionalEqns_)*dphi[idT_]; + phiTilde[i] += LT_(i, dim-nAdditionalEqns_+1)*dphi[idp_]; + + if (variableTimeStep()) + { + phiTilde[i] += LT_(i, dim-nAdditionalEqns_ + 2)*dphi[iddeltaT_]; + } normPhiTilde += sqr(phiTilde[i]); } @@ -678,4 +785,55 @@ bool Foam::chemPointISAT<CompType, ThermoType>::grow(const scalarField& phiq) } +template<class CompType, class ThermoType> +void Foam::chemPointISAT<CompType, ThermoType>::increaseNumRetrieve() +{ + this->numRetrieve_++; +} + + +template<class CompType, class ThermoType> +void Foam::chemPointISAT<CompType, ThermoType>::resetNumRetrieve() +{ + this->numRetrieve_ = 0; +} + + +template<class CompType, class ThermoType> +void Foam::chemPointISAT<CompType, ThermoType>::increaseNLifeTime() +{ + this->nLifeTime_++; +} + + +template<class CompType, class ThermoType> +Foam::label Foam::chemPointISAT<CompType, ThermoType>:: +simplifiedToCompleteIndex +( + const label i +) +{ + if (i < nActiveSpecies_) + { + return simplifiedToCompleteIndex_[i]; + } + else if (i == nActiveSpecies_) + { + return completeSpaceSize_-nAdditionalEqns_; + } + else if (i == nActiveSpecies_ + 1) + { + return completeSpaceSize_-nAdditionalEqns_ + 1; + } + else if (variableTimeStep() && (i == nActiveSpecies_ + 2)) + { + return completeSpaceSize_-nAdditionalEqns_ + 2; + } + else + { + return -1; + } +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.H index f1cff9013df55641a510f649b084a6863254532d..3b9ed780568c6901ccb52df57fe4b0158048b11e 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -146,6 +146,7 @@ class chemPointISAT TDACChemistryModel<CompType, ThermoType>& chemistry_; //- Vector storing the composition, temperature and pressure + // and deltaT if a variable time step is set on scalarField phi_; //- Vector storing the mapping of the composition phi @@ -176,14 +177,12 @@ class chemPointISAT //- Number of active species stored in the chemPoint label nActiveSpecies_; - - // Vectors that store the index conversion between the simplified - // and the complete chemical mechanism - List<label> completeToSimplifiedIndex_; + //- Vectors that store the index conversion between the simplified + // and the complete chemical mechanism List<label> simplifiedToCompleteIndex_; - scalar timeTag_; - scalar lastTimeUsed_; + label timeTag_; + label lastTimeUsed_; bool toRemove_; @@ -191,6 +190,23 @@ class chemPointISAT Switch printProportion_; + //- Variable to store the number of retrieves the chemPoint + // will generate at each time step + label numRetrieve_; + + //- Variable to store the number of time steps the chempoint is allowed + // to still live according to the maxChPLifeTime_ parameter + label nLifeTime_; + + List<label> completeToSimplifiedIndex_; + + //- Number of equations in addition to the species eqs. + label nAdditionalEqns_; + + label idT_; + label idp_; + label iddeltaT_; + //- QR decomposition of a matrix // Input : nCols cols number // R the matrix to decompose @@ -311,6 +327,7 @@ public: { return A_; } + inline const scalarSquareMatrix& LT() const { return LT_; @@ -336,32 +353,23 @@ public: return simplifiedToCompleteIndex_; } - inline label simplifiedToCompleteIndex(label i) - { - if (i < nActiveSpecies_) - { - return simplifiedToCompleteIndex_[i]; - } - else if (i == nActiveSpecies_) - { - return completeSpaceSize_-2; - } - else if (i == nActiveSpecies_+1) - { - return completeSpaceSize_-1; - } - else - { - return -1; - } - } + //- Increases the number of retrieves the chempoint has generated + void increaseNumRetrieve(); + + //- Resets the number of retrieves at each time step + void resetNumRetrieve(); - inline const scalar& timeTag() + //- Increases the "counter" of the chP life + void increaseNLifeTime(); + + label simplifiedToCompleteIndex(const label i); + + inline const label& timeTag() { return timeTag_; } - inline scalar& lastTimeUsed() + inline label& lastTimeUsed() { return lastTimeUsed_; } @@ -376,6 +384,21 @@ public: return maxNumNewDim_; } + inline const label& numRetrieve() + { + return numRetrieve_; + } + + inline const label& nLifeTime() + { + return nLifeTime_; + } + + inline bool variableTimeStep() const + { + return chemistry_.variableTimeStep(); + } + // ISAT functions //- To RETRIEVE the mapping from the stored chemPoint phi, the query diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.C index df64804fe2943cb32cc291d7c543fc61264ff868..df1f195a64765bef05c2d774fdf8bb5d4502b1af 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.H index 66053a8c636853a5acfc0e0156e52de7fdd68988..4671e3e8502d1400bbce50e36184ddd609e34cae 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -130,6 +130,11 @@ public: return active_ && log_; } + inline bool variableTimeStep() + { + return chemistry_.variableTimeStep(); + } + inline scalar tolerance() const { return tolerance_; @@ -152,11 +157,12 @@ public: // Add function: (only virtual here) // Add information to the tabulation algorithm. Give the reference for // future retrieve (phiQ) and the corresponding result (RphiQ). - virtual bool add + virtual label add ( const scalarField& phiQ, const scalarField& RphiQ, - const scalar rho + const scalar rho, + const scalar deltaT ) = 0; // Update function: (only virtual here) diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.H index 69b5f75bc9f2b5c9ebae4eecc54b3bf44f979d11..a06dc95851295b0d93b015242bd9b3355a6f6850 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,7 @@ License add##chemistryTabulationMethods##SS##Comp##Thermo##ConstructorToTable_; -#define makeChemistryTabulationMethods(CompChemModel, Thermo) \ +#define makeChemistryTabulationMethods(CompChemModel, Thermo) \ \ typedef chemistryTabulationMethod<CompChemModel, Thermo> \ chemistryTabulationMethod##CompChemModel##Thermo; \ diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.H index 14bf59bfb220c530ac0506c51197b244042361d7..9b780013861d9102a7c07eac3ab132c29013440b 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,11 +104,12 @@ public: // existing point or add a new leaf to the binary tree Input : phiq // the new composition to store Rphiq the mapping of the new // composition point - virtual bool add + virtual label add ( const scalarField& phiq, const scalarField& Rphiq, - const scalar rho + const scalar rho, + const scalar deltaT ) { NotImplemented; diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C index 3aae3999bc1a5b2b109286a464c0ccc4717e6fb1..1dd17e8d3de7cc291a94d02736d78c74d7247095 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,9 +37,7 @@ namespace Foam // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // void Foam::basicChemistryModel::correct() -{ - // do nothing -} +{} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H index a9a6b4af6b147fef2e56393a41de233170839904..4ced57f8ed4d2899b1225d2961dee0a554c0aa6e 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H @@ -174,11 +174,8 @@ public: //- Return the chemical time scale virtual tmp<volScalarField> tc() const = 0; - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const = 0; - - //- Return the heat release, i.e. enthalpy/sec [m2/s3] - virtual tmp<volScalarField> dQ() const = 0; + //- Return the heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const = 0; }; diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C index a779d0c5b284cb37e25402d9d86dd7a2358abbe1..fe401093c71d847623b850bbb18a256d46a571ec 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ Foam::chemistryModel<CompType, ThermoType>::chemistryModel c_(nSpecie_), dcdt_(nSpecie_) { - // create the fields for the chemistry sources + // Create the fields for the chemistry sources forAll(RR_, fieldi) { RR_.set @@ -148,7 +148,6 @@ Foam::scalar Foam::chemistryModel<CompType, ThermoType>::omegaI label& rRef ) const { - const Reaction<ThermoType>& R = reactions_[index]; scalar w = omega(R, c, T, p, pf, cf, lRef, pr, cr, rRef); return(w); @@ -224,7 +223,7 @@ Foam::scalar Foam::chemistryModel<CompType, ThermoType>::omega label srRef = 0; rRef = R.rhs()[srRef].index; - // find the matrix element and element position for the rhs + // Find the matrix element and element position for the rhs pr = kr; for (label s = 1; s < Nr; s++) { @@ -285,7 +284,7 @@ void Foam::chemistryModel<CompType, ThermoType>::derivatives omega(c_, T, p, dcdt); - // constant pressure + // Constant pressure // dT/dt = ... scalar rho = 0.0; scalar cSum = 0.0; @@ -463,23 +462,6 @@ template<class CompType, class ThermoType> Foam::tmp<Foam::volScalarField> Foam::chemistryModel<CompType, ThermoType>::tc() const { - scalar pf, cf, pr, cr; - label lRef, rRef; - - const volScalarField rho - ( - IOobject - ( - "rho", - this->time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->thermo().rho() - ); - tmp<volScalarField> ttc ( new volScalarField @@ -500,24 +482,31 @@ Foam::chemistryModel<CompType, ThermoType>::tc() const ); scalarField& tc = ttc.ref(); + + tmp<volScalarField> trho(this->thermo().rho()); + const scalarField& rho = trho(); + const scalarField& T = this->thermo().T(); const scalarField& p = this->thermo().p(); const label nReaction = reactions_.size(); + scalar pf, cf, pr, cr; + label lRef, rRef; + if (this->chemistry_) { forAll(rho, celli) { - scalar rhoi = rho[celli]; - scalar Ti = T[celli]; - scalar pi = p[celli]; + const scalar rhoi = rho[celli]; + const scalar Ti = T[celli]; + const scalar pi = p[celli]; + scalar cSum = 0.0; for (label i=0; i<nSpecie_; i++) { - scalar Yi = Y_[i][celli]; - c_[i] = rhoi*Yi/specieThermo_[i].W(); + c_[i] = rhoi*Y_[i][celli]/specieThermo_[i].W(); cSum += c_[i]; } @@ -529,10 +518,10 @@ Foam::chemistryModel<CompType, ThermoType>::tc() const forAll(R.rhs(), s) { - scalar sr = R.rhs()[s].stoichCoeff; - tc[celli] += sr*pf*cf; + tc[celli] += R.rhs()[s].stoichCoeff*pf*cf; } } + tc[celli] = nReaction*cSum/tc[celli]; } } @@ -545,15 +534,15 @@ Foam::chemistryModel<CompType, ThermoType>::tc() const template<class CompType, class ThermoType> Foam::tmp<Foam::volScalarField> -Foam::chemistryModel<CompType, ThermoType>::Sh() const +Foam::chemistryModel<CompType, ThermoType>::Qdot() const { - tmp<volScalarField> tSh + tmp<volScalarField> tQdot ( new volScalarField ( IOobject ( - "Sh", + "Qdot", this->mesh_.time().timeName(), this->mesh_, IOobject::NO_READ, @@ -561,65 +550,25 @@ Foam::chemistryModel<CompType, ThermoType>::Sh() const false ), this->mesh_, - dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) + dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0.0) ) ); if (this->chemistry_) { - scalarField& Sh = tSh.ref(); + scalarField& Qdot = tQdot.ref(); forAll(Y_, i) { - forAll(Sh, celli) + forAll(Qdot, celli) { const scalar hi = specieThermo_[i].Hc(); - Sh[celli] -= hi*RR_[i][celli]; + Qdot[celli] -= hi*RR_[i][celli]; } } } - return tSh; -} - - -template<class CompType, class ThermoType> -Foam::tmp<Foam::volScalarField> -Foam::chemistryModel<CompType, ThermoType>::dQ() const -{ - tmp<volScalarField> tdQ - ( - new volScalarField - ( - IOobject - ( - "dQ", - this->mesh_.time().timeName(), - this->mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh_, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) - ) - ); - - if (this->chemistry_) - { - volScalarField& dQ = tdQ.ref(); - dQ.ref() = this->mesh_.V()*Sh()(); - } - - return tdQ; -} - - -template<class CompType, class ThermoType> -Foam::label Foam::chemistryModel<CompType, ThermoType>::nEqns() const -{ - // nEqns = number of species + temperature + pressure - return nSpecie_ + 2; + return tQdot; } @@ -634,20 +583,6 @@ Foam::chemistryModel<CompType, ThermoType>::calculateRR scalar pf, cf, pr, cr; label lRef, rRef; - const volScalarField rho - ( - IOobject - ( - "rho", - this->time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->thermo().rho() - ); - tmp<volScalarField::Internal> tRR ( new volScalarField::Internal @@ -667,6 +602,9 @@ Foam::chemistryModel<CompType, ThermoType>::calculateRR volScalarField::Internal& RR = tRR.ref(); + tmp<volScalarField> trho(this->thermo().rho()); + const scalarField& rho = trho(); + const scalarField& T = this->thermo().T(); const scalarField& p = this->thermo().p(); @@ -711,19 +649,8 @@ void Foam::chemistryModel<CompType, ThermoType>::calculate() return; } - const volScalarField rho - ( - IOobject - ( - "rho", - this->time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->thermo().rho() - ); + tmp<volScalarField> trho(this->thermo().rho()); + const scalarField& rho = trho(); const scalarField& T = this->thermo().T(); const scalarField& p = this->thermo().p(); @@ -766,19 +693,8 @@ Foam::scalar Foam::chemistryModel<CompType, ThermoType>::solve return deltaTMin; } - const volScalarField rho - ( - IOobject - ( - "rho", - this->time().timeName(), - this->mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->thermo().rho() - ); + tmp<volScalarField> trho(this->thermo().rho()); + const scalarField& rho = trho(); const scalarField& T = this->thermo().T(); const scalarField& p = this->thermo().p(); diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H index 98b2ec2a91544c5401a11ba4772a0f37a90f588d..8a69c4c95f46840733e2250129d28f1b45829f53 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -231,17 +231,14 @@ public: //- Return the chemical time scale virtual tmp<volScalarField> tc() const; - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; - - //- Return the heat release, i.e. enthalpy/sec [kg/m2/s3] - virtual tmp<volScalarField> dQ() const; + //- Return the heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; // ODE functions (overriding abstract functions in ODE.H) //- Number of ODE's to solve - virtual label nEqns() const; + inline virtual label nEqns() const; virtual void derivatives ( diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H index 44d813c64ddb7d7c3be9dd65467d4c686e41252d..f797bf6d73cc48778c02394ea317bc7e9ae674ef 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,6 +28,14 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class CompType, class ThermoType> +inline Foam::label Foam::chemistryModel<CompType, ThermoType>::nEqns() const +{ + // nEqns = number of species + temperature + pressure + return nSpecie_ + 2; +} + + template<class CompType, class ThermoType> inline Foam::PtrList<Foam::DimensionedField<Foam::scalar, Foam::volMesh>>& Foam::chemistryModel<CompType, ThermoType>::RR() diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C index 2b52c0a7cf1b4e9fdf5998f4ae082bd31215202b..70db6c7564e318504d3f16869fb845d643b15d6c 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -72,16 +72,16 @@ void Foam::EulerImplicit<ChemistryModel>::updateRRInReactionI forAll(R.lhs(), s) { - label si = R.lhs()[s].index; - scalar sl = R.lhs()[s].stoichCoeff; + const label si = R.lhs()[s].index; + const scalar sl = R.lhs()[s].stoichCoeff; RR[si][rRef] -= sl*pr*corr; RR[si][lRef] += sl*pf*corr; } forAll(R.rhs(), s) { - label si = R.rhs()[s].index; - scalar sr = R.rhs()[s].stoichCoeff; + const label si = R.rhs()[s].index; + const scalar sr = R.rhs()[s].stoichCoeff; RR[si][lRef] -= sr*pf*corr; RR[si][rRef] += sr*pr*corr; } @@ -103,40 +103,40 @@ void Foam::EulerImplicit<ChemistryModel>::solve for (label i=0; i<nSpecie; i++) { - c[i] = max(0.0, c[i]); + c[i] = max(0, c[i]); } // Calculate the absolute enthalpy - scalar cTot = sum(c); + const scalar cTot = sum(c); typename ChemistryModel::thermoType mixture ( - (c[0]/cTot)*this->specieThermo_[0] + (this->specieThermo_[0].W()*c[0])*this->specieThermo_[0] ); for (label i=1; i<nSpecie; i++) { - mixture += (c[i]/cTot)*this->specieThermo_[i]; + mixture += (this->specieThermo_[i].W()*c[i])*this->specieThermo_[i]; } - scalar ha = mixture.Ha(p, T); - - scalar deltaTEst = min(deltaT, subDeltaT); + const scalar ha = mixture.Ha(p, T); + const scalar deltaTEst = min(deltaT, subDeltaT); forAll(this->reactions(), i) { scalar pf, cf, pr, cr; label lRef, rRef; - scalar omegai = this->omegaI(i, c, T, p, pf, cf, lRef, pr, cr, rRef); + const scalar omegai = + this->omegaI(i, c, T, p, pf, cf, lRef, pr, cr, rRef); - scalar corr = 1.0; + scalar corr = 1; if (eqRateLimiter_) { - if (omegai < 0.0) + if (omegai < 0) { - corr = 1.0/(1.0 + pr*deltaTEst); + corr = 1/(1 + pr*deltaTEst); } else { - corr = 1.0/(1.0 + pf*deltaTEst); + corr = 1/(1 + pf*deltaTEst); } } @@ -161,7 +161,7 @@ void Foam::EulerImplicit<ChemistryModel>::solve else { d = max(d, SMALL); - scalar cm = max(cTot - c[i], 1.0e-5); + const scalar cm = max(cTot - c[i], 1e-5); tMin = min(tMin, cm/d); } } @@ -172,7 +172,7 @@ void Foam::EulerImplicit<ChemistryModel>::solve // Add the diagonal and source contributions from the time-derivative for (label i=0; i<nSpecie; i++) { - RR(i, i) += 1.0/deltaT; + RR(i, i) += 1/deltaT; RR.source()[i] = c[i]/deltaT; } @@ -182,26 +182,16 @@ void Foam::EulerImplicit<ChemistryModel>::solve // Limit the composition for (label i=0; i<nSpecie; i++) { - c[i] = max(0.0, c[i]); + c[i] = max(0, c[i]); } // Update the temperature - cTot = sum(c); - mixture = (c[0]/cTot)*this->specieThermo_[0]; + mixture = (this->specieThermo_[0].W()*c[0])*this->specieThermo_[0]; for (label i=1; i<nSpecie; i++) { - mixture += (c[i]/cTot)*this->specieThermo_[i]; + mixture += (this->specieThermo_[i].W()*c[i])*this->specieThermo_[i]; } T = mixture.THa(ha, p, T); - - /* - for (label i=0; i<nSpecie; i++) - { - cTp_[i] = c[i]; - } - cTp_[nSpecie] = T; - cTp_[nSpecie+1] = p; - */ } diff --git a/src/thermophysicalModels/laminarFlameSpeed/Gulders/Gulders.C b/src/thermophysicalModels/laminarFlameSpeed/Gulders/Gulders.C index 9fc5bbdf26e57d17034e7faf3c701b248c704a24..eb4c2c04a0e1fa6c57435ee86542fb375acb4b73 100644 --- a/src/thermophysicalModels/laminarFlameSpeed/Gulders/Gulders.C +++ b/src/thermophysicalModels/laminarFlameSpeed/Gulders/Gulders.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,7 +54,7 @@ Foam::laminarFlameSpeedModels::Gulders::Gulders : laminarFlameSpeed(dict, ct), - coeffsDict_(dict.subDict(typeName + "Coeffs").subDict(fuel_)), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs").subDict(fuel_)), W_(readScalar(coeffsDict_.lookup("W"))), eta_(readScalar(coeffsDict_.lookup("eta"))), xi_(readScalar(coeffsDict_.lookup("xi"))), diff --git a/src/thermophysicalModels/laminarFlameSpeed/GuldersEGR/GuldersEGR.C b/src/thermophysicalModels/laminarFlameSpeed/GuldersEGR/GuldersEGR.C index 3bf3251323274c358140ef2e62e7f5a89d766e73..befd4d0973f6b208bd766bdecfafb6f6c8b6928f 100644 --- a/src/thermophysicalModels/laminarFlameSpeed/GuldersEGR/GuldersEGR.C +++ b/src/thermophysicalModels/laminarFlameSpeed/GuldersEGR/GuldersEGR.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::laminarFlameSpeedModels::GuldersEGR::GuldersEGR : laminarFlameSpeed(dict, ct), - coeffsDict_(dict.subDict(typeName + "Coeffs").subDict(fuel_)), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs").subDict(fuel_)), W_(readScalar(coeffsDict_.lookup("W"))), eta_(readScalar(coeffsDict_.lookup("eta"))), xi_(readScalar(coeffsDict_.lookup("xi"))), diff --git a/src/thermophysicalModels/laminarFlameSpeed/RaviPetersen/RaviPetersen.C b/src/thermophysicalModels/laminarFlameSpeed/RaviPetersen/RaviPetersen.C index faaccea7484a7b057be59774882bec4e2f5ac086..1fff569d9cb929faa02a2a03a82edc975d04ce3e 100644 --- a/src/thermophysicalModels/laminarFlameSpeed/RaviPetersen/RaviPetersen.C +++ b/src/thermophysicalModels/laminarFlameSpeed/RaviPetersen/RaviPetersen.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::laminarFlameSpeedModels::RaviPetersen::RaviPetersen ) : laminarFlameSpeed(dict, ct), - coeffsDict_(dict.subDict(typeName + "Coeffs").subDict(fuel_)), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs").subDict(fuel_)), pPoints_(coeffsDict_.lookup("pPoints")), EqRPoints_(coeffsDict_.lookup("EqRPoints")), alpha_(coeffsDict_.lookup("alpha")), diff --git a/src/thermophysicalModels/properties/liquidMixtureProperties/Make/files b/src/thermophysicalModels/properties/liquidMixtureProperties/Make/files deleted file mode 100644 index 4f0959cfc7767d4395fd472df37af09a6c3ecdf6..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/liquidMixtureProperties/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -liquidMixtureProperties/liquidMixtureProperties.C - -LIB = $(FOAM_LIBBIN)/libliquidMixtureProperties diff --git a/src/thermophysicalModels/properties/liquidMixtureProperties/Make/options b/src/thermophysicalModels/properties/liquidMixtureProperties/Make/options deleted file mode 100644 index 6e1d19dbb60b095df0f8c87b45e1d7cdf4449c9e..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/liquidMixtureProperties/Make/options +++ /dev/null @@ -1,10 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude - -LIB_LIBS = \ - -lliquidProperties \ - -lthermophysicalFunctions diff --git a/src/thermophysicalModels/properties/liquidProperties/Make/files b/src/thermophysicalModels/properties/liquidProperties/Make/files deleted file mode 100644 index 9b6347d83efb26c91b368be21674673287ec972e..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/liquidProperties/Make/files +++ /dev/null @@ -1,33 +0,0 @@ -liquidProperties/liquidProperties.C -H2O/H2O.C -C7H16/C7H16.C -C12H26/C12H26.C -C10H22/C10H22.C -C8H18/C8H18.C -IC8H18/IC8H18.C -C4H10O/C4H10O.C -C2H6O/C2H6O.C -IDEA/IDEA.C -aC10H7CH3/aC10H7CH3.C -bC10H7CH3/bC10H7CH3.C -C8H10/C8H10.C -C16H34/C16H34.C -C9H20/C9H20.C -C6H6/C6H6.C -C7H8/C7H8.C -C6H14/C6H14.C -C13H28/C13H28.C -C14H30/C14H30.C -C3H8/C3H8.C -C3H6O/C3H6O.C -C2H6/C2H6.C -CH3OH/CH3OH.C -C2H5OH/C2H5OH.C -Ar/Ar.C -N2/N2.C -MB/MB.C -CH4N2O/CH4N2O.C -nC3H8O/nC3H8O.C -iC3H8O/iC3H8O.C - -LIB = $(FOAM_LIBBIN)/libliquidProperties diff --git a/src/thermophysicalModels/properties/liquidProperties/Make/options b/src/thermophysicalModels/properties/liquidProperties/Make/options deleted file mode 100644 index b964b61294c787fe650b03faee1b09bbb9b48256..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/liquidProperties/Make/options +++ /dev/null @@ -1,5 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude - -LIB_LIBS = \ - -lthermophysicalFunctions diff --git a/src/thermophysicalModels/properties/solidMixtureProperties/Make/files b/src/thermophysicalModels/properties/solidMixtureProperties/Make/files deleted file mode 100644 index e31412ed1dda107e56f16c363c48a61f2db5fa3b..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/solidMixtureProperties/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -solidMixtureProperties/solidMixtureProperties.C - -LIB = $(FOAM_LIBBIN)/libsolidMixtureProperties diff --git a/src/thermophysicalModels/properties/solidMixtureProperties/Make/options b/src/thermophysicalModels/properties/solidMixtureProperties/Make/options deleted file mode 100644 index f2d8f809d5d12dac81a95c25e5a85a21cc9adac1..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/solidMixtureProperties/Make/options +++ /dev/null @@ -1,3 +0,0 @@ -EXE_INC = \ - -I${LIB_SRC}/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude diff --git a/src/thermophysicalModels/properties/solidProperties/Make/files b/src/thermophysicalModels/properties/solidProperties/Make/files deleted file mode 100644 index 694c379453f81cd4a51e3cdd09c0af6b88da57b8..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/properties/solidProperties/Make/files +++ /dev/null @@ -1,8 +0,0 @@ -solidProperties/solidProperties.C -solidProperties/solidPropertiesNew.C - -ash/ash.C -C/C.C -CaCO3/CaCO3.C - -LIB = $(FOAM_LIBBIN)/libsolidProperties diff --git a/src/thermophysicalModels/radiation/Make/files b/src/thermophysicalModels/radiation/Make/files index 2e9d71e8fb58e0137de63deefaa57d1ef8987d1e..bd4e985783ff0de2fcba9309607ce69d17314714 100644 --- a/src/thermophysicalModels/radiation/Make/files +++ b/src/thermophysicalModels/radiation/Make/files @@ -54,4 +54,7 @@ derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchSc derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C +/* fvOptions */ +fvOptions/radiation/radiation.C + LIB = $(FOAM_LIBBIN)/libradiationModels diff --git a/src/thermophysicalModels/radiation/Make/options b/src/thermophysicalModels/radiation/Make/options index 8b4db40a1533130ea3afeac29c83177a6d368e3a..f514104f33186c7c33683e84a11f40aacd16a9b1 100644 --- a/src/thermophysicalModels/radiation/Make/options +++ b/src/thermophysicalModels/radiation/Make/options @@ -4,14 +4,11 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/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 \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/parallel/distributed/lnInclude LIB_LIBS = \ @@ -20,11 +17,7 @@ LIB_LIBS = \ -lspecie \ -lsolidThermo \ -lSLGThermo \ - -lsolidMixtureProperties \ - -lliquidMixtureProperties \ - -lsolidProperties \ - -lliquidProperties \ + -lthermophysicalProperties \ -lfiniteVolume \ -lmeshTools \ - -ldistributed \ - -ltriSurface + -ldistributed diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C index a518336a0c60394f2d805b011dd552998b352e10..72b0803f1c281b6d37ce50e869daf5647fde1ccd 100644 --- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -172,7 +172,7 @@ updateCoeffs() const scalarField nAve(n & ray.dAve()); - ray.Qr().boundaryFieldRef()[patchi] += Iw*nAve; + ray.qr().boundaryFieldRef()[patchi] += Iw*nAve; const boundaryRadiationProperties& boundaryRadiation = boundaryRadiationProperties::New(internalField().mesh()); diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C index c8f0e9376d0b1d331e394b60a7e2430208aa852f..44e347f28c94cf2143376623e7e9079fee15dbc3 100644 --- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C +++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField ) : fixedValueFvPatchScalarField(p, iF), - Qro_(), + qro_(), solarLoad_(false) {} @@ -54,7 +54,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField ) : fixedValueFvPatchScalarField(ptf, p, iF, mapper), - Qro_(ptf.Qro_, mapper), + qro_(ptf.qro_, mapper), solarLoad_(ptf.solarLoad_) {} @@ -68,7 +68,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField ) : fixedValueFvPatchScalarField(p, iF, dict, false), - Qro_("Qro", dict, p.size()), + qro_("qro", dict, p.size()), solarLoad_(dict.lookupOrDefault<bool>("solarLoad", false)) { if (dict.found("value")) @@ -93,7 +93,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField ) : fixedValueFvPatchScalarField(ptf), - Qro_(ptf.Qro_), + qro_(ptf.qro_), solarLoad_(ptf.solarLoad_) {} @@ -106,7 +106,7 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField ) : fixedValueFvPatchScalarField(ptf, iF), - Qro_(ptf.Qro_), + qro_(ptf.qro_), solarLoad_(ptf.solarLoad_) {} @@ -120,7 +120,7 @@ autoMap ) { fixedValueFvPatchScalarField::autoMap(m); - Qro_.autoMap(m); + qro_.autoMap(m); } @@ -135,7 +135,7 @@ void Foam::radiation::greyDiffusiveViewFactorFixedValueFvPatchScalarField::rmap const greyDiffusiveViewFactorFixedValueFvPatchScalarField& mrptf = refCast<const greyDiffusiveViewFactorFixedValueFvPatchScalarField>(ptf); - Qro_.rmap(mrptf.Qro_, addr); + qro_.rmap(mrptf.qro_, addr); } @@ -147,7 +147,6 @@ updateCoeffs() return; } - if (debug) { scalar Q = gSum((*this)*patch().magSf()); @@ -166,22 +165,22 @@ updateCoeffs() Foam::tmp<Foam::scalarField> Foam::radiation:: -greyDiffusiveViewFactorFixedValueFvPatchScalarField::Qro() const +greyDiffusiveViewFactorFixedValueFvPatchScalarField::qro() const { - tmp<scalarField> tQrt(new scalarField(Qro_)); + tmp<scalarField> tqrt(new scalarField(qro_)); if (solarLoad_) { const radiationModel& radiation = db().lookupObject<radiationModel>("radiationProperties"); - tQrt.ref() += patch().lookupPatchField<volScalarField,scalar> + tqrt.ref() += patch().lookupPatchField<volScalarField, scalar> ( radiation.externalRadHeatFieldName_ ); } - return tQrt; + return tqrt; } @@ -192,7 +191,7 @@ write ) const { fixedValueFvPatchScalarField::write(os); - Qro_.writeEntry("Qro", os); + qro_.writeEntry("qro", os); os.writeKeyword("solarLoad") << solarLoad_ << token::END_STATEMENT << nl; } diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H index 88cd34ccd9573a2eea44f87b9dc6e226930c6326..c509c15a3a2560df5a549fa63bdeaa1272ffc425 100644 --- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H +++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd ------------------------------------------------------------------------------- License @@ -29,12 +29,13 @@ Group Description This boundary condition provides a grey-diffuse condition for radiative - heat flux, \c Qr, for use with the view factor model + heat flux, \c qr, for use with the view factor model Usage \table Property | Description | Required | Default value - Qro | external radiative heat flux | yes | + qro | external radiative heat flux | yes | + emissivityMode | emissivity mode: solidRadiation or lookup | yes | \endtable Example of the boundary condition specification: @@ -42,7 +43,8 @@ Usage <patchName> { type greyDiffusiveRadiationViewFactor; - Qro uniform 0; + qro uniform 0; + emissivityMode solidRadiation; value uniform 0; } \endverbatim @@ -69,6 +71,7 @@ namespace Foam { namespace radiation { + /*---------------------------------------------------------------------------*\ Class greyDiffusiveViewFactorFixedValueFvPatchScalarField declaration \*---------------------------------------------------------------------------*/ @@ -80,7 +83,7 @@ class greyDiffusiveViewFactorFixedValueFvPatchScalarField // Private data //- External radiative heat flux - scalarField Qro_; + scalarField qro_; //- Activate solar load bool solarLoad_; @@ -163,7 +166,7 @@ public: // Access //- Return external + solar load radiative heat flux - tmp<scalarField> Qro() const; + tmp<scalarField> qro() const; // Evaluation functions @@ -197,8 +200,8 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace radiation } // End namespace Foam -} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C index b37192b6e081dfd9e8237fdf01f579137a42c6b6..102a8f87c5a9218fc625ea4a9805c5fdb4167166 100644 --- a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -159,7 +159,7 @@ updateCoeffs() const scalarField nAve(n & ray.dAve()); - ray.Qr().boundaryFieldRef()[patchi] += Iw*nAve; + ray.qr().boundaryFieldRef()[patchi] += Iw*nAve; const scalarField Eb ( diff --git a/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C new file mode 100644 index 0000000000000000000000000000000000000000..2a817e4e6c208663352c75446184ba8298623185 --- /dev/null +++ b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "radiation.H" +#include "fluidThermo.H" +#include "fvMatrices.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +namespace Foam +{ +namespace fv +{ + defineTypeNameAndDebug(radiation, 0); + + addToRunTimeSelectionTable + ( + option, + radiation, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::fv::radiation::radiation +( + const word& sourceName, + const word& modelType, + const dictionary& dict, + const fvMesh& mesh +) +: + option(sourceName, modelType, dict, mesh) +{ + const basicThermo& thermo = + mesh_.lookupObject<basicThermo>(basicThermo::dictName); + + fieldNames_.setSize(1); + fieldNames_[0] = thermo.he().name(); + applied_.setSize(fieldNames_.size(), false); + + radiation_ = Foam::radiation::radiationModel::New(thermo.T()); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::fv::radiation::read(const dictionary& dict) +{ + return option::read(dict); +} + + +void Foam::fv::radiation::addSup +( + const volScalarField& rho, + fvMatrix<scalar>& eqn, + const label fieldi +) +{ + const basicThermo& thermo = + mesh_.lookupObject<basicThermo>(basicThermo::dictName); + + radiation_->correct(); + + eqn += radiation_->Sh(thermo, eqn.psi()); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.H b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.H new file mode 100644 index 0000000000000000000000000000000000000000..57927a28f7dedd0c5ddd9ae33edd652004625857 --- /dev/null +++ b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.H @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::fv::radiation + +Description + Calculates and applies the buoyancy energy source rho*(U&g) to the energy + equation. + +Usage + Example usage: + \verbatim + radiationCoeffs + { + fields (h); // Name of energy field + } + \endverbatim + +SourceFiles + radiation.C + +\*---------------------------------------------------------------------------*/ + +#ifndef radiation_H +#define radiation_H + +#include "fvOption.H" +#include "uniformDimensionedFields.H" +#include "radiationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace fv +{ + +/*---------------------------------------------------------------------------*\ + Class radiation Declaration +\*---------------------------------------------------------------------------*/ + +class radiation +: + public option +{ + // Private data + + //- The radiation model pointer + autoPtr<Foam::radiation::radiationModel> radiation_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + radiation(const radiation&); + + //- Disallow default bitwise assignment + void operator=(const radiation&); + + +public: + + //- Runtime type information + TypeName("radiation"); + + + // Constructors + + //- Construct from explicit source name and mesh + radiation + ( + const word& sourceName, + const word& modelType, + const dictionary& dict, + const fvMesh& mesh + ); + + + // Member Functions + + // Evaluate + + //- Add explicit contribution to compressible momentum equation + virtual void addSup + ( + const volScalarField& rho, + fvMatrix<scalar>& eqn, + const label fieldi + ); + + + // IO + + //- Read source dictionary + virtual bool read(const dictionary& dict); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace fv +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/radiation/radiationModels/P1/P1.C b/src/thermophysicalModels/radiation/radiationModels/P1/P1.C index 3032cca499e240a51f7783fea1c197a082eb5d8e..edb306e321ac509cb2bf372f4efd6454b8e9086d 100644 --- a/src/thermophysicalModels/radiation/radiationModels/P1/P1.C +++ b/src/thermophysicalModels/radiation/radiationModels/P1/P1.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,18 +62,18 @@ Foam::radiation::P1::P1(const volScalarField& T) ), mesh_ ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh_, - dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) + dimensionedScalar("qr", dimMass/pow3(dimTime), 0.0) ), a_ ( @@ -132,18 +132,18 @@ Foam::radiation::P1::P1(const dictionary& dict, const volScalarField& T) ), mesh_ ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh_, - dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) + dimensionedScalar("qr", dimMass/pow3(dimTime), 0.0) ), a_ ( @@ -242,14 +242,14 @@ void Foam::radiation::P1::calculate() - 4.0*(e_*physicoChemical::sigma*pow4(T_) ) - E_ ); - volScalarField::Boundary& QrBf = Qr_.boundaryFieldRef(); + volScalarField::Boundary& qrBf = qr_.boundaryFieldRef(); // Calculate radiative heat flux on boundaries. forAll(mesh_.boundaryMesh(), patchi) { if (!G_.boundaryField()[patchi].coupled()) { - QrBf[patchi] = + qrBf[patchi] = -gamma.boundaryField()[patchi] *G_.boundaryField()[patchi].snGrad(); } diff --git a/src/thermophysicalModels/radiation/radiationModels/P1/P1.H b/src/thermophysicalModels/radiation/radiationModels/P1/P1.H index 0a97b1cb2aaa76b72eb2ff1aec2ed738e5006e98..e52733e3eae4978c107f123b66ccfbf20922917d 100644 --- a/src/thermophysicalModels/radiation/radiationModels/P1/P1.H +++ b/src/thermophysicalModels/radiation/radiationModels/P1/P1.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -68,7 +68,7 @@ class P1 volScalarField G_; //- Total radiative heat flux [W/m2] - volScalarField Qr_; + volScalarField qr_; //- Absorption coefficient volScalarField a_; diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.C b/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.C index c3bc3ef327b8545eb9d8e079539423ae638a87f8..1b50a08cfd0e922f318f5ea90c725d4a90fd4355 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.C +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,26 +26,6 @@ License #include "absorptionCoeffs.H" #include "IOstreams.H" -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::radiation::absorptionCoeffs::absorptionCoeffs(Istream& is) -: - Tcommon_(readScalar(is)), - Tlow_(readScalar(is)), - Thigh_(readScalar(is)), - invTemp_(readBool(is)) -{ - for (label coefLabel=0; absorptionCoeffs::nCoeffs_; coefLabel++) - { - is >> highACoeffs_[coefLabel]; - } - - for (label coefLabel=0; absorptionCoeffs::nCoeffs_; coefLabel++) - { - is >> lowACoeffs_[coefLabel]; - } -} - // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // @@ -86,12 +66,6 @@ Foam::radiation::absorptionCoeffs::coeffs } -void Foam::radiation::absorptionCoeffs::initialise(Istream&) -{ - absorptionCoeffs(Istream); -} - - void Foam::radiation::absorptionCoeffs::initialise(const dictionary& dict) { dict.lookup("Tcommon") >> Tcommon_; diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.H b/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.H index b2eed50da40335af572dd730f71b1187b76ddc20..4f18495e53d6cad4a02c094c461986d740f7f61f 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.H +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/absorptionCoeffs/absorptionCoeffs.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -90,9 +90,6 @@ public: // Constructors - //- Construct from Istream - absorptionCoeffs(Istream&); - // Null constructor absorptionCoeffs() {} @@ -110,9 +107,6 @@ public: // Initialise from a dictionary void initialise(const dictionary&); - // Initialise from an Istream - void initialise(Istream&); - // Access Functions diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.C b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.C index 24454efb3dc6b06672bba4f4f43d6ecf199e2245..71cca246dc21c930b51910215ef50ecb413bce79 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.C +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -230,18 +230,18 @@ Foam::radiation::fvDOM::fvDOM(const volScalarField& T) mesh_, dimensionedScalar("G", dimMass/pow3(dimTime), 0.0) ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh_, - dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) + dimensionedScalar("qr", dimMass/pow3(dimTime), 0.0) ), Qem_ ( @@ -323,18 +323,18 @@ Foam::radiation::fvDOM::fvDOM mesh_, dimensionedScalar("G", dimMass/pow3(dimTime), 0.0) ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh_, - dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) + dimensionedScalar("qr", dimMass/pow3(dimTime), 0.0) ), Qem_ ( @@ -508,7 +508,7 @@ void Foam::radiation::fvDOM::updateBlackBodyEmission() void Foam::radiation::fvDOM::updateG() { G_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0); - Qr_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0); + qr_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0); Qem_ = dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0); Qin_ = dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0); @@ -516,7 +516,7 @@ void Foam::radiation::fvDOM::updateG() { IRay_[rayI].addIntensity(); G_ += IRay_[rayI].I()*IRay_[rayI].omega(); - Qr_.boundaryFieldRef() += IRay_[rayI].Qr().boundaryField(); + qr_.boundaryFieldRef() += IRay_[rayI].qr().boundaryField(); Qem_.boundaryFieldRef() += IRay_[rayI].Qem().boundaryField(); Qin_.boundaryFieldRef() += IRay_[rayI].Qin().boundaryField(); } diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.H b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.H index 59346b60299b6c96de8c370a9e5f6286220ea171..84d12a057e8a587cfc441be7f4eb738109f71fbf 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.H +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOM.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -104,7 +104,7 @@ class fvDOM volScalarField G_; //- Total radiative heat flux [W/m2] - volScalarField Qr_; + volScalarField qr_; //- Emmited radiative heat flux [W/m2] volScalarField Qem_; @@ -252,7 +252,7 @@ public: inline const volScalarField& G() const; //- Const access to total radiative heat flux field - inline const volScalarField& Qr() const; + inline const volScalarField& qr() const; //- Const access to incident radiative heat flux field inline const volScalarField& Qin() const; diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOMI.H b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOMI.H index 3281f6c389e9e01434a50fe85008261593ae6fd0..dc64c7b76c218cf53883dff3d9910f3fc7eeafb0 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOMI.H +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/fvDOM/fvDOMI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,9 +86,9 @@ inline const Foam::volScalarField& Foam::radiation::fvDOM::G() const } -inline const Foam::volScalarField& Foam::radiation::fvDOM::Qr() const +inline const Foam::volScalarField& Foam::radiation::fvDOM::qr() const { - return Qr_; + return qr_; } inline const Foam::volScalarField& Foam::radiation::fvDOM::Qin() const diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C index b1a4d9c57ed78d6307615766c7825aa0fa5721aa..adf5f54912b675c5c089e340c038562a3fd118bb 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,18 +67,18 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay mesh_, dimensionedScalar("I", dimMass/pow3(dimTime), 0.0) ), - Qr_ + qr_ ( IOobject ( - "Qr" + name(rayId), + "qr" + name(rayId), mesh_.time().timeName(), mesh_, IOobject::NO_READ, IOobject::NO_WRITE ), mesh_, - dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) + dimensionedScalar("qr", dimMass/pow3(dimTime), 0.0) ), Qin_ ( @@ -251,7 +251,7 @@ Foam::radiation::radiativeIntensityRay::~radiativeIntensityRay() Foam::scalar Foam::radiation::radiativeIntensityRay::correct() { // Reset boundary heat flux to zero - Qr_.boundaryFieldRef() = 0.0; + qr_.boundaryFieldRef() = 0.0; scalar maxResidual = -GREAT; diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H index e98081378e6bcbad5795e04c8cd0063d47f89562..2dc4eb411346fb521432c4941994f196f2cffa9f 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,7 +80,7 @@ private: volScalarField I_; //- Total radiative heat flux on boundary - volScalarField Qr_; + volScalarField qr_; //- Incident radiative heat flux on boundary volScalarField Qin_; @@ -176,10 +176,10 @@ public: inline const volScalarField& I() const; //- Return const access to the boundary heat flux - inline const volScalarField& Qr() const; + inline const volScalarField& qr() const; //- Return non-const access to the boundary heat flux - inline volScalarField& Qr(); + inline volScalarField& qr(); //- Return non-const access to the boundary incident heat flux inline volScalarField& Qin(); diff --git a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H index 8761f900b4fc57055cdf31b6615d329a6e624caf..d307d890bc0233154148a7c670fc60a4921dffc9 100644 --- a/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H +++ b/src/thermophysicalModels/radiation/radiationModels/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,15 +31,15 @@ Foam::radiation::radiativeIntensityRay::I() const inline const Foam::volScalarField& -Foam::radiation::radiativeIntensityRay::Qr() const +Foam::radiation::radiativeIntensityRay::qr() const { - return Qr_; + return qr_; } -inline Foam::volScalarField& Foam::radiation::radiativeIntensityRay::Qr() +inline Foam::volScalarField& Foam::radiation::radiativeIntensityRay::qr() { - return Qr_; + return qr_; } inline const Foam::volScalarField& Foam::radiation:: diff --git a/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.C b/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.C index d7b66a87e0447114df1f326a88ee586cf9f5a099..1f097e7855781935ba2c9a305b5fd9f64ec5304b 100644 --- a/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.C +++ b/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -28,7 +28,7 @@ License #include "scatterModel.H" #include "sootModel.H" #include "fvmSup.H" -#include "fluidThermo.H" +#include "basicThermo.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -235,10 +235,10 @@ void Foam::radiation::radiationModel::correct() Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::Sh ( - fluidThermo& thermo + const basicThermo& thermo, + const volScalarField& he ) const { - volScalarField& he = thermo.he(); const volScalarField Cpv(thermo.Cpv()); const volScalarField T3(pow3(T_)); diff --git a/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.H b/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.H index 6601dba35511a05bf1565601159766545e88a079..6b21a8dbb2ecc5e3dd28b2c22107e33655acd14d 100644 --- a/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.H +++ b/src/thermophysicalModels/radiation/radiationModels/radiationModel/radiationModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,7 +55,7 @@ SourceFiles namespace Foam { -class fluidThermo; +class basicThermo; class fvMesh; namespace radiation @@ -237,7 +237,11 @@ public: virtual tmp<volScalarField::Internal> Ru() const = 0; //- Energy source term - virtual tmp<fvScalarMatrix> Sh(fluidThermo& thermo) const; + virtual tmp<fvScalarMatrix> Sh + ( + const basicThermo& thermo, + const volScalarField& he + ) const; //- Temperature source term virtual tmp<fvScalarMatrix> ST diff --git a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.C b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.C index ef1a71d71f41f9132673a23ea77aab18582276b6..85aa33091d88d9a8ec8d0d196e060d23f141093b 100644 --- a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.C +++ b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.C @@ -248,11 +248,11 @@ Foam::radiation::viewFactor::viewFactor(const volScalarField& T) mesh_, finalAgglom_ ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::MUST_READ, @@ -308,11 +308,11 @@ Foam::radiation::viewFactor::viewFactor mesh_, finalAgglom_ ), - Qr_ + qr_ ( IOobject ( - "Qr", + "qr", mesh_.time().timeName(), mesh_, IOobject::MUST_READ, @@ -382,7 +382,7 @@ void Foam::radiation::viewFactor::insertMatrixElements void Foam::radiation::viewFactor::calculate() { // Store previous iteration - Qr_.storePrevIter(); + qr_.storePrevIter(); if (useSolarLoad_) { @@ -403,7 +403,7 @@ void Foam::radiation::viewFactor::calculate() const boundaryRadiationProperties& boundaryRadiation = boundaryRadiationProperties::New(mesh_); - volScalarField::Boundary& QrBf = Qr_.boundaryFieldRef(); + volScalarField::Boundary& qrBf = qr_.boundaryFieldRef(); forAll(selectedPatches_, i) { @@ -412,18 +412,18 @@ void Foam::radiation::viewFactor::calculate() const scalarField& Tp = T_.boundaryField()[patchID]; const scalarField& sf = mesh_.magSf().boundaryField()[patchID]; - fvPatchScalarField& QrPatch = QrBf[patchID]; + fvPatchScalarField& qrPatch = qrBf[patchID]; - greyDiffusiveViewFactorFixedValueFvPatchScalarField& Qrp = + greyDiffusiveViewFactorFixedValueFvPatchScalarField& qrp = refCast < greyDiffusiveViewFactorFixedValueFvPatchScalarField - >(QrPatch); + >(qrPatch); const tmp<scalarField> teb = boundaryRadiation.emissivity(patchID); const scalarField& eb = teb(); - const tmp<scalarField> tHoi = Qrp.Qro(); + const tmp<scalarField> tHoi = qrp.qro(); const scalarField& Hoi = tHoi(); const polyPatch& pp = coarseMesh_.boundaryMesh()[patchID]; @@ -497,23 +497,23 @@ void Foam::radiation::viewFactor::calculate() // Create global size vectors scalarField T(totalNCoarseFaces_, 0.0); scalarField E(totalNCoarseFaces_, 0.0); - scalarField QrExt(totalNCoarseFaces_, 0.0); + scalarField qrExt(totalNCoarseFaces_, 0.0); // Fill lists from compact to global indexes. forAll(compactCoarseT, i) { T[compactGlobalIds[i]] = compactCoarseT[i]; E[compactGlobalIds[i]] = compactCoarseE[i]; - QrExt[compactGlobalIds[i]] = compactCoarseHo[i]; + qrExt[compactGlobalIds[i]] = compactCoarseHo[i]; } Pstream::listCombineGather(T, maxEqOp<scalar>()); Pstream::listCombineGather(E, maxEqOp<scalar>()); - Pstream::listCombineGather(QrExt, maxEqOp<scalar>()); + Pstream::listCombineGather(qrExt, maxEqOp<scalar>()); Pstream::listCombineScatter(T); Pstream::listCombineScatter(E); - Pstream::listCombineScatter(QrExt); + Pstream::listCombineScatter(qrExt); // Net radiation scalarField q(totalNCoarseFaces_, 0.0); @@ -536,7 +536,7 @@ void Foam::radiation::viewFactor::calculate() if (i==j) { C(i, j) = invEj - (invEj - 1.0)*Fmatrix_()(i, j); - q[i] += (Fmatrix_()(i, j) - 1.0)*sigmaT4 - QrExt[j]; + q[i] += (Fmatrix_()(i, j) - 1.0)*sigmaT4 - qrExt[j]; } else { @@ -592,7 +592,7 @@ void Foam::radiation::viewFactor::calculate() if (i==j) { - q[i] += (Fmatrix_()(i, j) - 1.0)*sigmaT4 - QrExt[j]; + q[i] += (Fmatrix_()(i, j) - 1.0)*sigmaT4 - qrExt[j]; } else { @@ -612,7 +612,7 @@ void Foam::radiation::viewFactor::calculate() } } - // Scatter q and fill Qr + // Scatter q and fill qr Pstream::listCombineScatter(q); Pstream::listCombineGather(q, maxEqOp<scalar>()); @@ -623,7 +623,7 @@ void Foam::radiation::viewFactor::calculate() const polyPatch& pp = mesh_.boundaryMesh()[patchID]; if (pp.size() > 0) { - scalarField& Qrp = QrBf[patchID]; + scalarField& qrp = qrBf[patchID]; const scalarField& sf = mesh_.magSf().boundaryField()[patchID]; const labelList& agglom = finalAgglom_[patchID]; label nAgglom = max(agglom)+1; @@ -644,8 +644,8 @@ void Foam::radiation::viewFactor::calculate() { label faceI = fineFaces[k]; - Qrp[faceI] = q[globalCoarse]; - heatFlux += Qrp[faceI]*sf[faceI]; + qrp[faceI] = q[globalCoarse]; + heatFlux += qrp[faceI]*sf[faceI]; } globCoarseId ++; } @@ -654,11 +654,11 @@ void Foam::radiation::viewFactor::calculate() if (debug) { - forAll(QrBf, patchID) + forAll(qrBf, patchID) { - const scalarField& Qrp = QrBf[patchID]; + const scalarField& qrp = qrBf[patchID]; const scalarField& magSf = mesh_.magSf().boundaryField()[patchID]; - scalar heatFlux = gSum(Qrp*magSf); + scalar heatFlux = gSum(qrp*magSf); InfoInFunction << "Total heat transfer rate at patch: " @@ -667,8 +667,8 @@ void Foam::radiation::viewFactor::calculate() } } - // Relax Qr if necessary - Qr_.relax(); + // Relax qr if necessary + qr_.relax(); } diff --git a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.H b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.H index 0e50d50634c5231e5c4eaa895a8601f0b4e44f66..5bd75d92ae65df34b589463ca672bd9347d9e0bd 100644 --- a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.H +++ b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,7 @@ namespace radiation { /*---------------------------------------------------------------------------*\ - Class viewFactor Declaration + Class viewFactor Declaration \*---------------------------------------------------------------------------*/ class viewFactor @@ -92,7 +92,7 @@ protected: singleCellFvMesh coarseMesh_; //- Net radiative heat flux [W/m2] - volScalarField Qr_; + volScalarField qr_; //- View factor matrix autoPtr<scalarSquareMatrix> Fmatrix_; @@ -186,7 +186,7 @@ public: // Access //- Const access to total radiative heat flux field - inline const volScalarField& Qr() const; + inline const volScalarField& qr() const; }; diff --git a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactorI.H b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactorI.H index e45f9a8ba0b42211903ded1f4f33425b2e2f81e4..b03f886ab21c6028b991e7fb5b793c9f80ecdab7 100644 --- a/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactorI.H +++ b/src/thermophysicalModels/radiation/radiationModels/viewFactor/viewFactorI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,11 +23,10 @@ License \*---------------------------------------------------------------------------*/ -inline const Foam::volScalarField& Foam::radiation::viewFactor::Qr() const +inline const Foam::volScalarField& Foam::radiation::viewFactor::qr() const { - return Qr_; + return qr_; } - // ************************************************************************* // diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C index d78e1527a531071b0f43342060aa83d4e6fbf277..09a91a8d24f867787365475c7780f1696fefb657 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::radiation::binaryAbsorptionEmission::binaryAbsorptionEmission ) : absorptionEmissionModel(dict, mesh), - coeffsDict_(dict.subDict(typeName + "Coeffs")), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs")), model1_ ( absorptionEmissionModel::New(coeffsDict_.subDict("model1"), mesh) diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C index c4dc6b246c483c6f6b8f4e4446f36b2ec359315d..6fd866c6d97a7361d128002a2a2639ae3a56c699 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::radiation::constantAbsorptionEmission::constantAbsorptionEmission ) : absorptionEmissionModel(dict, mesh), - coeffsDict_(dict.subDict(typeName + "Coeffs")), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs")), a_(coeffsDict_.lookup("absorptivity")), e_(coeffsDict_.lookup("emissivity")), E_(coeffsDict_.lookup("E")) diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C index f8ac36029e74d44818bf1d0f7b37b5b6db3dc22a..295beb0e2bcf75ebf4c9f36892301eb7e0fd81dd 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,7 @@ Foam::radiation::greyMeanAbsorptionEmission::greyMeanAbsorptionEmission ) : absorptionEmissionModel(dict, mesh), - coeffsDict_((dict.subDict(typeName + "Coeffs"))), + coeffsDict_((dict.optionalSubDict(typeName + "Coeffs"))), speciesNames_(0), specieIndex_(label(0)), lookUpTablePtr_(), @@ -73,7 +73,7 @@ Foam::radiation::greyMeanAbsorptionEmission::greyMeanAbsorptionEmission label nFunc = 0; - const dictionary& functionDicts = dict.subDict(typeName + "Coeffs"); + const dictionary& functionDicts = dict.optionalSubDict(typeName + "Coeffs"); forAllConstIter(dictionary, functionDicts, iter) { @@ -292,32 +292,32 @@ Foam::radiation::greyMeanAbsorptionEmission::ECont(const label bandI) const ) ); - if (mesh_.foundObject<volScalarField>("dQ")) + if (mesh_.foundObject<volScalarField>("Qdot")) { - const volScalarField& dQ = - mesh_.lookupObject<volScalarField>("dQ"); + const volScalarField& Qdot = + mesh_.lookupObject<volScalarField>("Qdot"); - if (dQ.dimensions() == dimEnergy/dimTime) + if (Qdot.dimensions() == dimEnergy/dimTime) { - E.ref().primitiveFieldRef() = EhrrCoeff_*dQ/mesh_.V(); + E.ref().primitiveFieldRef() = EhrrCoeff_*Qdot/mesh_.V(); } - else if (dQ.dimensions() == dimEnergy/dimTime/dimVolume) + else if (Qdot.dimensions() == dimEnergy/dimTime/dimVolume) { - E.ref().primitiveFieldRef() = EhrrCoeff_*dQ; + E.ref().primitiveFieldRef() = EhrrCoeff_*Qdot; } else { if (debug) { WarningInFunction - << "Incompatible dimensions for dQ field" << endl; + << "Incompatible dimensions for Qdot field" << endl; } } } else { WarningInFunction - << "dQ field not found in mesh" << endl; + << "Qdot field not found in mesh" << endl; } return E; diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C index 31f691e0ad1f057c896c12d3237c7504607df3f8..aef799dfecb2798cdca0fc5d254d226991adfc18 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -89,7 +89,7 @@ greyMeanSolidAbsorptionEmission ) : absorptionEmissionModel(dict, mesh), - coeffsDict_((dict.subDict(typeName + "Coeffs"))), + coeffsDict_((dict.optionalSubDict(typeName + "Coeffs"))), thermo_(mesh.lookupObject<solidThermo>(basicThermo::dictName)), speciesNames_(0), mixture_(dynamic_cast<const basicSpecieMixture&>(thermo_)), @@ -103,7 +103,7 @@ greyMeanSolidAbsorptionEmission } label nFunc = 0; - const dictionary& functionDicts = dict.subDict(typeName + "Coeffs"); + const dictionary& functionDicts = dict.optionalSubDict(typeName + "Coeffs"); forAllConstIter(dictionary, functionDicts, iter) { diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C index e51e8228c9825e14d2856eecef7cb1faf2a0b7c1..cb900d1a2680f0625a636da019353d9d639cc34a 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::radiation::wideBandAbsorptionEmission::wideBandAbsorptionEmission ) : absorptionEmissionModel(dict, mesh), - coeffsDict_((dict.subDict(typeName + "Coeffs"))), + coeffsDict_((dict.optionalSubDict(typeName + "Coeffs"))), speciesNames_(0), specieIndex_(label(0)), lookUpTable_ @@ -67,7 +67,7 @@ Foam::radiation::wideBandAbsorptionEmission::wideBandAbsorptionEmission totalWaveLength_(0) { label nBand = 0; - const dictionary& functionDicts = dict.subDict(typeName +"Coeffs"); + const dictionary& functionDicts = dict.optionalSubDict(typeName +"Coeffs"); forAllConstIter(dictionary, functionDicts, iter) { // safety: @@ -248,31 +248,32 @@ Foam::radiation::wideBandAbsorptionEmission::ECont(const label bandi) const ) ); - if (mesh().foundObject<volScalarField>("dQ")) + if (mesh().foundObject<volScalarField>("Qdot")) { - const volScalarField& dQ = mesh().lookupObject<volScalarField>("dQ"); + const volScalarField& Qdot = + mesh().lookupObject<volScalarField>("Qdot"); - if (dQ.dimensions() == dimEnergy/dimTime) + if (Qdot.dimensions() == dimEnergy/dimTime) { E.ref().primitiveFieldRef() = iEhrrCoeffs_[bandi] - *dQ.primitiveField() + *Qdot.primitiveField() *(iBands_[bandi][1] - iBands_[bandi][0]) /totalWaveLength_ /mesh_.V(); } - else if (dQ.dimensions() == dimEnergy/dimTime/dimVolume) + else if (Qdot.dimensions() == dimEnergy/dimTime/dimVolume) { E.ref().primitiveFieldRef() = iEhrrCoeffs_[bandi] - *dQ.primitiveField() + *Qdot.primitiveField() *(iBands_[bandi][1] - iBands_[bandi][0]) /totalWaveLength_; } else { WarningInFunction - << "Incompatible dimensions for dQ field" << endl; + << "Incompatible dimensions for Qdot field" << endl; } } diff --git a/src/thermophysicalModels/radiation/submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C b/src/thermophysicalModels/radiation/submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C index d5785cbbd98c447cece3730cd7ad03143c0c4bbc..369c9788a24bf4d194335739f72c9f09eb8ba110 100644 --- a/src/thermophysicalModels/radiation/submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C +++ b/src/thermophysicalModels/radiation/submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C @@ -222,7 +222,8 @@ Foam::radiation::boundaryRadiationPropertiesPatch::emissivity default: { FatalErrorInFunction - << "Please set 'mode' to one of " << methodTypeNames_.toc() + << "Please set 'mode' to one of " + << methodTypeNames_ << exit(FatalError); } break; @@ -302,7 +303,7 @@ Foam::radiation::boundaryRadiationPropertiesPatch::absorptivity FatalErrorInFunction << "Unimplemented method " << method_ << endl << "Please set 'mode' to one of " - << methodTypeNames_.toc() + << methodTypeNames_ << exit(FatalError); } break; @@ -382,7 +383,7 @@ Foam::radiation::boundaryRadiationPropertiesPatch::transmissivity FatalErrorInFunction << "Unimplemented method " << method_ << endl << "Please set 'mode' to one of " - << methodTypeNames_.toc() + << methodTypeNames_ << exit(FatalError); } break; diff --git a/src/thermophysicalModels/radiation/submodels/scatterModel/constantScatter/constantScatter.C b/src/thermophysicalModels/radiation/submodels/scatterModel/constantScatter/constantScatter.C index 12020b8d99cb485e5a08a992cef6fda41a239768..dd552d0a66853c6613d401207cdaa3d34e14ae52 100644 --- a/src/thermophysicalModels/radiation/submodels/scatterModel/constantScatter/constantScatter.C +++ b/src/thermophysicalModels/radiation/submodels/scatterModel/constantScatter/constantScatter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,7 @@ Foam::radiation::constantScatter::constantScatter ) : scatterModel(dict, mesh), - coeffsDict_(dict.subDict(typeName + "Coeffs")), + coeffsDict_(dict.optionalSubDict(typeName + "Coeffs")), sigma_(coeffsDict_.lookup("sigma")), C_(coeffsDict_.lookup("C")) {} diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L index bf5e9ac83cfc29e7fa9f8a55bba54a405c59327a..5bbf9f0e40e9ed5546d69c936c9b6aff0d45c6ac 100644 --- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L +++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -121,7 +121,7 @@ startIsotopeMolW {space}"/"{space} isotopeMolW {space}{floatNum}{space}"/"{space} specieName {space}[A-Za-z](([A-Za-z0-9)*+-])|("("[^+]))*{space} -nMoles {space}{floatNum}{space} +Y {space}{floatNum}{space} thermoTemp .{10} @@ -640,7 +640,8 @@ bool finishReaction = false; currentHighT, currentCommonT, highCpCoeffs, - lowCpCoeffs + lowCpCoeffs, + true ), transportDict_.subDict(currentSpecieName) ) @@ -687,7 +688,7 @@ bool finishReaction = false; BEGIN(readReactionKeyword); } -<readReactionKeyword>{nMoles} { +<readReactionKeyword>{Y} { currentSpecieCoeff.stoichCoeff = atof(YYText()); currentSpecieCoeff.exponent = currentSpecieCoeff.stoichCoeff; } diff --git a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C index f69cbeca54fb6e2e41254e1613e9e0b7a134ffe4..4cb6b0eb293780c183b6744dd2f6f9c91680de68 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,16 +48,6 @@ Foam::SpecieMixture<MixtureType>::SpecieMixture // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template<class MixtureType> -Foam::scalar Foam::SpecieMixture<MixtureType>::nMoles -( - const label speciei -) const -{ - return this->getLocalThermo(speciei).nMoles(); -} - - template<class MixtureType> Foam::scalar Foam::SpecieMixture<MixtureType>::W ( diff --git a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H index 72219a4ac3aece8abedcfee4c57a63223307a24d..bc387a6dd9b7869601d32a6dcfaee213dc241245 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H +++ b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,9 +78,6 @@ public: // Per specie properties - //- Number of moles of the given specie [] - virtual scalar nMoles(const label speciei) const; - //- Molecular weight of the given specie [kg/kmol] virtual scalar W(const label speciei) const; diff --git a/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H index d967e8931f64002d52a2e8419cb75db610587026..0ce2bdedc8d8f6392583aafde4b4ce638a744353 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H +++ b/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,9 +85,6 @@ public: // Per specie properties - //- Number of moles of the given specie [] - virtual scalar nMoles(const label speciei) const = 0; - //- Molecular weight of the given specie [kg/kmol] virtual scalar W(const label speciei) const = 0; diff --git a/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C index 7c52bea5d046fea85e04e2e8a299e3baa6de3331..d5e368ca9f11bdfc7fc1f172878b34dd3ed46fed 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,9 +89,9 @@ const ThermoType& Foam::egrMixture<ThermoType>::mixture scalar pr = 1 - fu - ox; - mixture_ = fu/fuel_.W()*fuel_; - mixture_ += ox/oxidant_.W()*oxidant_; - mixture_ += pr/products_.W()*products_; + mixture_ = fu*fuel_; + mixture_ += ox*oxidant_; + mixture_ += pr*products_; return mixture_; } diff --git a/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C index 7bf2f11abdab14b5a5cbf9e18c4cec34a3bc55a3..4ae9bc10bd6822625414f42afb5bc73d8af278aa 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -75,8 +75,8 @@ const ThermoType& Foam::homogeneousMixture<ThermoType>::mixture } else { - mixture_ = b/reactants_.W()*reactants_; - mixture_ += (1 - b)/products_.W()*products_; + mixture_ = b*reactants_; + mixture_ += (1 - b)*products_; return mixture_; } diff --git a/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C index 15220cab18d95878dfb01baa3299840c33cae6e0..ef7d739f51a25a5de3017ca81d4043d19e423552 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,9 +86,9 @@ const ThermoType& Foam::inhomogeneousMixture<ThermoType>::mixture scalar ox = 1 - ft - (ft - fu)*stoicRatio().value(); scalar pr = 1 - fu - ox; - mixture_ = fu/fuel_.W()*fuel_; - mixture_ += ox/oxidant_.W()*oxidant_; - mixture_ += pr/products_.W()*products_; + mixture_ = fu*fuel_; + mixture_ += ox*oxidant_; + mixture_ += pr*products_; return mixture_; } diff --git a/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C index ba651a2b515ee9590e9a4cba8c7f7317f2aace3d..bb6d4e0414101bb4beff347d2694270080e793e4 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -132,11 +132,11 @@ const ThermoType& Foam::multiComponentMixture<ThermoType>::cellMixture const label celli ) const { - mixture_ = Y_[0][celli]/speciesData_[0].W()*speciesData_[0]; + mixture_ = Y_[0][celli]*speciesData_[0]; for (label n=1; n<Y_.size(); n++) { - mixture_ += Y_[n][celli]/speciesData_[n].W()*speciesData_[n]; + mixture_ += Y_[n][celli]*speciesData_[n]; } return mixture_; @@ -150,15 +150,11 @@ const ThermoType& Foam::multiComponentMixture<ThermoType>::patchFaceMixture const label facei ) const { - mixture_ = - Y_[0].boundaryField()[patchi][facei] - /speciesData_[0].W()*speciesData_[0]; + mixture_ = Y_[0].boundaryField()[patchi][facei]*speciesData_[0]; for (label n=1; n<Y_.size(); n++) { - mixture_ += - Y_[n].boundaryField()[patchi][facei] - /speciesData_[n].W()*speciesData_[n]; + mixture_ += Y_[n].boundaryField()[patchi][facei]*speciesData_[n]; } return mixture_; diff --git a/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C index 663b79ce6820542f7c20bf1a7c03b41e84c5799b..28d71d5f86acedc853ae705eeeb6a66c79b5e007 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,9 +87,9 @@ const ThermoType& Foam::veryInhomogeneousMixture<ThermoType>::mixture scalar ox = 1 - ft - (ft - fu)*stoicRatio().value(); scalar pr = 1 - fu - ox; - mixture_ = fu/fuel_.W()*fuel_; - mixture_ += ox/oxidant_.W()*oxidant_; - mixture_ += pr/products_.W()*products_; + mixture_ = fu*fuel_; + mixture_ += ox*oxidant_; + mixture_ += pr*products_; return mixture_; } diff --git a/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C b/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C index 49c462d383547d2c1682cf7f1ee9a0c35f0540a6..4e9173530df3d13e139ad40283b2cf1a668c5967 100644 --- a/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C +++ b/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -107,6 +107,19 @@ makeReactionThermo ); +makeReactionThermo +( + psiThermo, + psiuReactionThermo, + heheuPsiThermo, + homogeneousMixture, + constTransport, + absoluteEnthalpy, + janafThermo, + perfectGas, + specie +); + makeReactionThermo ( psiThermo, diff --git a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C index 27bc73d75f737d5468b34498898f54ee031b3bca..a7431ca20074b920198eac5ce6469919e2eaaeed 100644 --- a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C +++ b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -261,7 +261,7 @@ makeReactionMixtureThermo ); - // Multi-component reaction thermo +// Multi-component reaction thermo makeReactionMixtureThermo ( @@ -318,8 +318,6 @@ makeReactionMixtureThermo ); - - // Multi-component thermo for sensible enthalpy makeReactionMixtureThermo diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.C b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.C index c7c07a760f6d1716c52b93af4f7664836e35323e..47664c4fc92b0fcf17e452edf53391aaeb5cb684 100644 --- a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.C +++ b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.C @@ -114,15 +114,15 @@ Foam::solidChemistryModel<CompType, SolidThermo>::tc() const template<class CompType, class SolidThermo> Foam::tmp<Foam::volScalarField> -Foam::solidChemistryModel<CompType, SolidThermo>::Sh() const +Foam::solidChemistryModel<CompType, SolidThermo>::Qdot() const { - tmp<volScalarField> tSh + tmp<volScalarField> tQdot ( new volScalarField ( IOobject ( - "Sh", + "Qdot", this->mesh_.time().timeName(), this->mesh_, IOobject::NO_READ, @@ -130,57 +130,25 @@ Foam::solidChemistryModel<CompType, SolidThermo>::Sh() const false ), this->mesh_, - dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) + dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0.0) ) ); if (this->chemistry_) { - scalarField& Sh = tSh.ref(); + scalarField& Qdot = tQdot.ref(); forAll(Ys_, i) { - forAll(Sh, celli) + forAll(Qdot, celli) { scalar hf = solidThermo_[i].Hc(); - Sh[celli] -= hf*RRs_[i][celli]; + Qdot[celli] -= hf*RRs_[i][celli]; } } } - return tSh; -} - - -template<class CompType, class SolidThermo> -Foam::tmp<Foam::volScalarField> -Foam::solidChemistryModel<CompType, SolidThermo>::dQ() const -{ - tmp<volScalarField> tdQ - ( - new volScalarField - ( - IOobject - ( - "dQ", - this->mesh_.time().timeName(), - this->mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - this->mesh_, - dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) - ) - ); - - if (this->chemistry_) - { - volScalarField& dQ = tdQ.ref(); - dQ.ref() = this->mesh_.V()*Sh()(); - } - - return tdQ; + return tQdot; } diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.H b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.H index 85cf69c985c050cda4ad5215d9bb0474ffd8fe44..4d022e28705d4fc69a4cb21329d9d3c128b3efbd 100644 --- a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.H +++ b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModel.H @@ -201,11 +201,8 @@ public: //- Return the chemical time scale virtual tmp<volScalarField> tc() const; - //- Return source for enthalpy equation [kg/m/s3] - virtual tmp<volScalarField> Sh() const; - - //- Return the heat release, i.e. enthalpy/sec [m2/s3] - virtual tmp<volScalarField> dQ() const; + //- Return the heat release rate [kg/m/s3] + virtual tmp<volScalarField> Qdot() const; // ODE functions (overriding abstract functions in ODE.H) diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C index b5a4cfde96bc3c02c65ac8670a8504cd895d98c4..bffd5f8d2f2ed5737f37063e81d72951755c5ac5 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C +++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,23 +59,6 @@ Foam::solidReaction<ReactionThermo>::solidReaction {} -template<class ReactionThermo> -Foam::solidReaction<ReactionThermo>::solidReaction -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -: - Reaction<ReactionThermo>(species, thermoDatabase, is), - pyrolisisGases_(), - glhs_(), - grhs_() -{ - NotImplemented; -} - - template<class ReactionThermo> Foam::solidReaction<ReactionThermo>::solidReaction ( diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H index 190e758123c31c9ee2fe703129ad5a1de3168898..6addc87494645dd78b706c80991d74e9e21ea3d1 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H +++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -120,15 +120,6 @@ public: ); - //- Construct from Istream - solidReaction - ( - const speciesTable& pyrolisisGases, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - - //- Construct from dictionary solidReaction ( diff --git a/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H index 1a734a96dbba0d63f681e10121ff519e23fa6431..c5642e627b886967de1842ae2226d75ef3e26073 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H +++ b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -75,12 +75,6 @@ public: const scalar Tcrit ); - //- Construct from Istream - inline solidArrheniusReactionRate - ( - const speciesTable& species, - Istream& is - ); //- Construct from dictionary inline solidArrheniusReactionRate diff --git a/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H index 2c59b2842820f8f89ea7ee38d494f61dcd087a9f..1ab4bcb50dda0bba6ba25b76dd9043d2ebae95c5 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H +++ b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,18 +39,6 @@ inline Foam::solidArrheniusReactionRate::solidArrheniusReactionRate {} -inline Foam::solidArrheniusReactionRate::solidArrheniusReactionRate -( - const speciesTable&, - Istream& is -) -: - A_(readScalar(is.readBegin("solidArrheniusReaction(Istream&)"))), - Ta_(readScalar(is)), - Tcrit_(readScalar(is)) -{} - - inline Foam::solidArrheniusReactionRate::solidArrheniusReactionRate ( const speciesTable&, @@ -101,9 +89,7 @@ inline Foam::Ostream& Foam::operator<< const solidArrheniusReactionRate& arr ) { - os << token::BEGIN_LIST - << arr.A_ << token::SPACE << arr.Ta_ << token::SPACE << arr.Tcrit_ - << token::END_LIST; + arr.write(os); return os; } diff --git a/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReaction.H b/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReaction.H index bc17d12bb416b0c5fcb7f5d393f2a5e8a0b35335..b5444f1e59a0ce5727fcb8eac363a58f3c4cbb18 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReaction.H +++ b/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,7 +54,6 @@ namespace Foam typedef ReactionType<solidReaction, Thermo, ReactionRate> \ ReactionType##Thermo##ReactionRate; \ \ - defineTemplateRunTimeSelectionTable(Reaction##Thermo, Istream); \ defineTemplateRunTimeSelectionTable(Reaction##Thermo, dictionary); \ \ defineTemplateTypeNameAndDebug(solidReaction##Thermo, 0); \ @@ -69,13 +68,6 @@ namespace Foam ); \ \ addToRunTimeSelectionTable \ - ( \ - Reaction##Thermo, \ - ReactionType##Thermo##ReactionRate, \ - Istream \ - ); \ - \ - addToRunTimeSelectionTable \ ( \ Reaction##Thermo, \ ReactionType##Thermo##ReactionRate, \ diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.C index bef81029444b61d4c39cd3f8570406c93d4e3b36..5a99f4caaabf6d676ade8d377641c9655c4801ea 100644 --- a/src/thermophysicalModels/solidSpecie/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-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,14 +64,7 @@ Foam::Ostream& Foam::operator<< const constAnIsoSolidTransport<Thermo>& ct ) { - operator<<(os, static_cast<const Thermo&>(ct)); - os << tab << ct.kappa_; - - os.check - ( - "Ostream& operator<<(Ostream& os,const constAnIsoSolidTransport& ct)" - ); - + ct.write(os); return os; } diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H index d7b388ccd6e972b75cf631c48fe0f4af3bc7b1f2..3b75b4ebe653979e6f33a04b56df7882afc2fabe 100644 --- a/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H +++ b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -135,9 +135,9 @@ public: inline void operator=(const constAnIsoSolidTransport&); inline void operator+=(const constAnIsoSolidTransport&); - inline void operator-=(const constAnIsoSolidTransport&); - // Friend operators + + // Friend operators friend constAnIsoSolidTransport operator* <Thermo> ( diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H index fabc997a8ddf58eef0bfe584d1e62d55b0d1751d..ee58b30acecc7eacf170cd89c21d715b715b073a 100644 --- a/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H +++ b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,7 @@ template<class Thermo> inline Foam::vector Foam::constAnIsoSolidTransport<Thermo>:: alphah(const scalar p, const scalar T) const { - return kappa_/this->Cpv(p, T); + return kappa_/this->Cp(p, T); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -113,27 +113,12 @@ inline void Foam::constAnIsoSolidTransport<Thermo>::operator+= const constAnIsoSolidTransport<Thermo>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + Y1 /= this->Y(); + scalar Y2 = ct.Y()/this->Y(); - kappa_ = molr1*kappa_ + molr2*ct.kappa_; -} - - -template<class Thermo> -inline void Foam::constAnIsoSolidTransport<Thermo>::operator-= -( - const constAnIsoSolidTransport<Thermo>& ct -) -{ - scalar molr1 = this->nMoles(); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); - - kappa_ = molr1*kappa_ - molr2*ct.kappa_; + kappa_ = Y1*kappa_ + Y2*ct.kappa_; } diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.C index 02684194fc05188d7ce2b77875f7689832908541..2d9135e811061c7cc93c81498eef3aaa487d3ce7 100644 --- a/src/thermophysicalModels/solidSpecie/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-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,14 +64,7 @@ Foam::Ostream& Foam::operator<< const constIsoSolidTransport<Thermo>& ct ) { - operator<<(os, static_cast<const Thermo&>(ct)); - os << tab << ct.kappa_; - - os.check - ( - "Ostream& operator<<(Ostream& os,const constIsoSolidTransport& ct)" - ); - + ct.write(os); return os; } diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H index 4439a279fac40acc92e53c5349f4d266ffd44f9d..5de4c38fcf9254f073d295d8cc0df02a9173a363 100644 --- a/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H +++ b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,7 +94,7 @@ public: const constIsoSolidTransport& ); - //- Construct from Istream + //- Construct from dictionary constIsoSolidTransport(const dictionary& dict); // Selector from dictionary @@ -136,7 +136,6 @@ public: inline void operator=(const constIsoSolidTransport&); inline void operator+=(const constIsoSolidTransport&); - inline void operator-=(const constIsoSolidTransport&); // Friend operators diff --git a/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H index 7ee8ee618e73c89e8525f356f9c683975b68a794..0065451548a6ad23ff4f06261eb110b33c2e8fe4 100644 --- a/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H +++ b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,7 @@ template<class thermo> inline Foam::scalar Foam::constIsoSolidTransport<thermo>:: alphah(const scalar p, const scalar T) const { - return kappa_/this->Cpv(p, T); + return kappa_/this->Cp(p, T); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -114,32 +114,16 @@ inline void Foam::constIsoSolidTransport<thermo>::operator+= const constIsoSolidTransport<thermo>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); thermo::operator+=(ct); - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + Y1 /= this->Y(); + scalar Y2 = ct.Y()/this->Y(); - kappa_ = molr1*kappa_ + molr2*ct.kappa_; + kappa_ = Y1*kappa_ + Y2*ct.kappa_; } -template<class thermo> -inline void Foam::constIsoSolidTransport<thermo>::operator-= -( - const constIsoSolidTransport<thermo>& ct -) -{ - scalar molr1 = this->nMoles(); - - thermo::operator-=(ct); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); - - kappa_ = molr1*kappa_ - molr2*ct.kappa_; -} - // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.C index 24abeac8ae772d4e2f458c71d1f0efee2dca8f0c..02d6635d3f5a692bfadf15c71d5606b07bf78b0f 100644 --- a/src/thermophysicalModels/solidSpecie/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-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -72,14 +72,7 @@ Foam::Ostream& Foam::operator<< Ostream& os, const exponentialSolidTransport<Thermo>& et ) { - operator<<(os, static_cast<const Thermo&>(et)); - os << tab << et.kappa0_ << tab << et.n0_ << tab << et.Tref_; - - os.check - ( - "Ostream& operator<<(Ostream& os, const exponentialSolidTransport& et)" - ); - + et.write(os); return os; } diff --git a/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H index f8c8267644bc0098a80de9008cd996f14c2cf545..1d69fdefad89c3981a53d416ba9dfca358ca39d2 100644 --- a/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H +++ b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -144,7 +144,6 @@ public: inline void operator=(const exponentialSolidTransport&); inline void operator+=(const exponentialSolidTransport&); - inline void operator-=(const exponentialSolidTransport&); // Friend operators diff --git a/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H index 909106e5dbb27deba577aaadb52a852acd64d844..dd5e5e526f26a058a738900cdf5a2d4abe6dac63 100644 --- a/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H +++ b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,7 +104,7 @@ template<class Thermo> inline Foam::scalar Foam::exponentialSolidTransport<Thermo>:: alphah(const scalar p, const scalar T) const { - return kappa(p, T)/this->Cpv(p, T); + return kappa(p, T)/this->Cp(p, T); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -128,31 +128,14 @@ inline void Foam::exponentialSolidTransport<Thermo>::operator+= const exponentialSolidTransport<Thermo>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + Y1 /= this->Y(); + scalar Y2 = ct.Y()/this->Y(); - kappa0_ = molr1*kappa0_ + molr2*ct.kappa0_; - n0_ = (molr1*n0_ + molr2*ct.n0_); - Tref_ = (molr1*Tref_ + molr2*ct.Tref_); -} - - -template<class Thermo> -inline void Foam::exponentialSolidTransport<Thermo>::operator-= -( - const exponentialSolidTransport<Thermo>& ct -) -{ - scalar molr1 = this->nMoles(); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); - - kappa0_ = (molr1*kappa0_ - molr2*ct.kappa0_); - n0_ = (molr1*n0_ - molr2*ct.n0_); - Tref_ = (molr1*Tref_ - molr2*ct.Tref_); + kappa0_ = Y1*kappa0_ + Y2*ct.kappa0_; + n0_ = (Y1*n0_ + Y2*ct.n0_); + Tref_ = (Y1*Tref_ + Y2*ct.Tref_); } diff --git a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.C index e43b30a2e8997156f0b8a47575f8afa94a1340dd..0a2d0a665f5713f3a3c3f5b326986ddb17e0cc0e 100644 --- a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.C +++ b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,18 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -Foam::polynomialSolidTransport<Thermo, PolySize>::polynomialSolidTransport -( - Istream& is -) -: - Thermo(is), - kappaCoeffs_("kappaCoeffs<" + Foam::name(PolySize) + '>', is) -{ -} - - template<class Thermo, int PolySize> Foam::polynomialSolidTransport<Thermo, PolySize>::polynomialSolidTransport ( @@ -85,19 +73,7 @@ Foam::Ostream& Foam::operator<< const polynomialSolidTransport<Thermo, PolySize>& pt ) { - os << static_cast<const Thermo&>(pt) << tab - << "kappaCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.kappaCoeffs_; - - os.check - ( - "Ostream& operator<<" - "(" - "Ostream&, " - "const polynomialSolidTransport<Thermo, PolySize>&" - ")" - ); - + pt.write(os); return os; } diff --git a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.H index d2f2e45fac424227f4fc32ae57c6693e178576c8..3cb7a3b3ecfe67aa53481195a4428ed32f962b86 100644 --- a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.H +++ b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,12 +25,40 @@ Class Foam::polynomialSolidTransport Description - Transport package using polynomial functions for solid kappa + Transport package using polynomial functions for solid \c kappa. + +Usage + + \table + Property | Description + kappaCoeffs<8> | Thermal conductivity polynomial coefficients + \endtable + + Example of the specification of the transport properties: + \verbatim + transport + { + kappaCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); + } + \endverbatim + + The polynomial expression is evaluated as so: + + \f[ + \kappa = 1000 - 0.05 T + 0.003 T^2 + \f] + +Note + Thermal conductivity polynomial coefficients evaluate to an expression in + [W/m/K]. SourceFiles polynomialSolidTransportI.H polynomialSolidTransport.C +See also + Foam::Polynomial + \*---------------------------------------------------------------------------*/ #ifndef polynomialSolidTransport_H @@ -54,13 +82,6 @@ inline polynomialSolidTransport<Thermo, PolySize> operator+ const polynomialSolidTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline polynomialSolidTransport<Thermo, PolySize> operator- -( - const polynomialSolidTransport<Thermo, PolySize>&, - const polynomialSolidTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> inline polynomialSolidTransport<Thermo, PolySize> operator* ( @@ -68,13 +89,6 @@ inline polynomialSolidTransport<Thermo, PolySize> operator* const polynomialSolidTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline polynomialSolidTransport<Thermo, PolySize> operator== -( - const polynomialSolidTransport<Thermo, PolySize>&, - const polynomialSolidTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> Ostream& operator<< ( @@ -113,9 +127,6 @@ public: // Constructors - //- Construct copy - inline polynomialSolidTransport(const polynomialSolidTransport&); - //- Construct as named copy inline polynomialSolidTransport ( @@ -123,18 +134,12 @@ public: const polynomialSolidTransport& ); - //- Construct from Istream - polynomialSolidTransport(Istream& is); - //- Construct from dictionary polynomialSolidTransport(const dictionary& dict); //- Construct and return a clone inline autoPtr<polynomialSolidTransport> clone() const; - // Selector from Istream - inline static autoPtr<polynomialSolidTransport> New(Istream& is); - // Selector from dictionary inline static autoPtr<polynomialSolidTransport> New ( @@ -174,7 +179,6 @@ public: inline void operator=(const polynomialSolidTransport&); inline void operator+=(const polynomialSolidTransport&); - inline void operator-=(const polynomialSolidTransport&); inline void operator*=(const scalar); @@ -186,24 +190,12 @@ public: const polynomialSolidTransport& ); - friend polynomialSolidTransport operator- <Thermo, PolySize> - ( - const polynomialSolidTransport&, - const polynomialSolidTransport& - ); - friend polynomialSolidTransport operator* <Thermo, PolySize> ( const scalar, const polynomialSolidTransport& ); - friend polynomialSolidTransport operator== <Thermo, PolySize> - ( - const polynomialSolidTransport&, - const polynomialSolidTransport& - ); - // Ostream Operator diff --git a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransportI.H index 45d4e95f4952d43c88c73a7e31be94a598dbcf2c..b0cc6e03840f74c77b554274b5f72b8b9e87f3b1 100644 --- a/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransportI.H +++ b/src/thermophysicalModels/solidSpecie/transport/polynomial/polynomialSolidTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,18 +27,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -inline Foam::polynomialSolidTransport<Thermo, PolySize>:: -polynomialSolidTransport -( - const polynomialSolidTransport& pt -) -: - Thermo(pt), - kappaCoeffs_(pt.kappaCoeffs_) -{} - - template<class Thermo, int PolySize> inline Foam::polynomialSolidTransport<Thermo, PolySize>:: polynomialSolidTransport @@ -76,17 +64,6 @@ Foam::polynomialSolidTransport<Thermo, PolySize>::clone() const } -template<class Thermo, int PolySize> -inline Foam::autoPtr<Foam::polynomialSolidTransport<Thermo, PolySize>> -Foam::polynomialSolidTransport<Thermo, PolySize>::New(Istream& is) -{ - return autoPtr<polynomialSolidTransport<Thermo, PolySize>> - ( - new polynomialSolidTransport<Thermo, PolySize>(is) - ); -} - - template<class Thermo, int PolySize> inline Foam::autoPtr<Foam::polynomialSolidTransport<Thermo, PolySize>> Foam::polynomialSolidTransport<Thermo, PolySize>::New(const dictionary& dict) @@ -141,7 +118,7 @@ inline Foam::scalar Foam::polynomialSolidTransport<Thermo, PolySize>::alphah const scalar p, const scalar T ) const { - return kappa(p, T)/this->Cpv(p, T); + return kappa(p, T)/this->Cp(p, T); } @@ -165,31 +142,14 @@ inline void Foam::polynomialSolidTransport<Thermo, PolySize>::operator+= const polynomialSolidTransport<Thermo, PolySize>& pt ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Thermo::operator+=(pt); - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); - - kappaCoeffs_ = molr1*kappaCoeffs_ + molr2*pt.kappaCoeffs_; -} - - -template<class Thermo, int PolySize> -inline void Foam::polynomialSolidTransport<Thermo, PolySize>::operator-= -( - const polynomialSolidTransport<Thermo, PolySize>& pt -) -{ - scalar molr1 = this->nMoles(); - - Thermo::operator-=(pt); - - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); + Y1 /= this->Y(); + scalar Y2 = pt.Y()/this->Y(); - kappaCoeffs_ = molr1*kappaCoeffs_ - molr2*pt.kappaCoeffs_; + kappaCoeffs_ = Y1*kappaCoeffs_ + Y2*pt.kappaCoeffs_; } @@ -217,36 +177,13 @@ inline Foam::polynomialSolidTransport<Thermo, PolySize> Foam::operator+ static_cast<const Thermo&>(pt1) + static_cast<const Thermo&>(pt2) ); - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); + scalar Y1 = pt1.Y()/t.Y(); + scalar Y2 = pt2.Y()/t.Y(); return polynomialSolidTransport<Thermo, PolySize> ( t, - molr1*pt1.kappaCoeffs_ + molr2*pt2.kappaCoeffs_ - ); -} - - -template<class Thermo, int PolySize> -inline Foam::polynomialSolidTransport<Thermo, PolySize> Foam::operator- -( - const polynomialSolidTransport<Thermo, PolySize>& pt1, - const polynomialSolidTransport<Thermo, PolySize>& pt2 -) -{ - Thermo t - ( - static_cast<const Thermo&>(pt1) - static_cast<const Thermo&>(pt2) - ); - - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); - - return polynomialSolidTransport<Thermo, PolySize> - ( - t, - molr1*pt1.kappaCoeffs_ - molr2*pt2.kappaCoeffs_ + Y1*pt1.kappaCoeffs_ + Y2*pt2.kappaCoeffs_ ); } @@ -266,15 +203,4 @@ inline Foam::polynomialSolidTransport<Thermo, PolySize> Foam::operator* } -template<class Thermo, int PolySize> -inline Foam::polynomialSolidTransport<Thermo, PolySize> Foam::operator== -( - const polynomialSolidTransport<Thermo, PolySize>& pt1, - const polynomialSolidTransport<Thermo, PolySize>& pt2 -) -{ - return pt2 - pt1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/Make/options b/src/thermophysicalModels/specie/Make/options index 34572985089de6d7f81e51e56523184aaf94bec3..79be6f3a7dd8fa81ba203d5ab8572c446c43a6c7 100644 --- a/src/thermophysicalModels/specie/Make/options +++ b/src/thermophysicalModels/specie/Make/options @@ -1 +1,3 @@ -LIB_LIBS = -lOpenFOAM +EXE_INC = + +LIB_LIBS = diff --git a/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.C b/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.C index b37ec2f9d014be6634f138e48b1a9889b56e4b5d..66ae9a7cf7a6ab0455486bcbe4d387ff0eb0b05a 100644 --- a/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.C +++ b/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,22 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::Boussinesq<Specie>::Boussinesq(Istream& is) -: - Specie(is), - rho0_(readScalar(is)), - T0_(readScalar(is)), - beta_(readScalar(is)) -{ - is.check - ( - "Boussinesq<Specie>::" - "Boussinesq(Istream& is)" - ); -} - - template<class Specie> Foam::Boussinesq<Specie>::Boussinesq ( @@ -81,16 +65,7 @@ Foam::Ostream& Foam::operator<< const Boussinesq<Specie>& b ) { - os << static_cast<const Specie&>(b) - << token::SPACE << b.rho0_ - << token::SPACE << b.T0_ - << token::SPACE << b.beta_; - - os.check - ( - "Ostream& operator<<" - "(Ostream& os, const Boussinesq<Specie>& st)" - ); + b.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.H b/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.H index 5f6f441425fa05c7d4ffb42c72dbbbfdea3193e3..7555aa27b2fcf75a46d6432020b18b5f593ff84a 100644 --- a/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.H +++ b/src/thermophysicalModels/specie/equationOfState/Boussinesq/Boussinesq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,13 +62,6 @@ inline Boussinesq<Specie> operator+ const Boussinesq<Specie>& ); -template<class Specie> -inline Boussinesq<Specie> operator- -( - const Boussinesq<Specie>&, - const Boussinesq<Specie>& -); - template<class Specie> inline Boussinesq<Specie> operator* ( @@ -125,12 +118,6 @@ public: const scalar beta ); - //- Construct from Boussinesq - inline Boussinesq(const Boussinesq& sp); - - //- Construct from Istream - Boussinesq(Istream&); - //- Construct from dictionary Boussinesq(const dictionary& dict); @@ -144,9 +131,6 @@ public: //- Construct and return a clone inline autoPtr<Boussinesq> clone() const; - // Selector from Istream - inline static autoPtr<Boussinesq> New(Istream& is); - // Selector from dictionary inline static autoPtr<Boussinesq> New ( @@ -176,14 +160,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -191,8 +175,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -205,8 +189,6 @@ public: inline void operator=(const Boussinesq&); inline void operator+=(const Boussinesq&); - inline void operator-=(const Boussinesq&); - inline void operator*=(const scalar); @@ -218,12 +200,6 @@ public: const Boussinesq& ); - friend Boussinesq operator- <Specie> - ( - const Boussinesq&, - const Boussinesq& - ); - friend Boussinesq operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/Boussinesq/BoussinesqI.H b/src/thermophysicalModels/specie/equationOfState/Boussinesq/BoussinesqI.H index 2d689847382d3b82163bffc6c863bd19b6c36d96..814a9a1e82f5c0f23c68b17cbb1d17adfe579fed 100644 --- a/src/thermophysicalModels/specie/equationOfState/Boussinesq/BoussinesqI.H +++ b/src/thermophysicalModels/specie/equationOfState/Boussinesq/BoussinesqI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,19 +41,6 @@ inline Foam::Boussinesq<Specie>::Boussinesq {} -template<class Specie> -inline Foam::Boussinesq<Specie>::Boussinesq -( - const Boussinesq& b -) -: - Specie(b), - rho0_(b.rho0_), - T0_(b.T0_), - beta_(b.beta_) -{} - - template<class Specie> inline Foam::Boussinesq<Specie>::Boussinesq ( @@ -79,20 +66,6 @@ Foam::Boussinesq<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::Boussinesq<Specie>> -Foam::Boussinesq<Specie>::New -( - Istream& is -) -{ - return autoPtr<Boussinesq<Specie>> - ( - new Boussinesq<Specie>(is) - ); -} - - template<class Specie> inline Foam::autoPtr<Foam::Boussinesq<Specie>> Foam::Boussinesq<Specie>::New @@ -121,21 +94,21 @@ inline Foam::scalar Foam::Boussinesq<Specie>::rho template<class Specie> -inline Foam::scalar Foam::Boussinesq<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::Boussinesq<Specie>::H(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::Boussinesq<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::Boussinesq<Specie>::Cp(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::Boussinesq<Specie>::s +inline Foam::scalar Foam::Boussinesq<Specie>::S ( scalar p, scalar T @@ -168,13 +141,13 @@ inline Foam::scalar Foam::Boussinesq<Specie>::Z template<class Specie> -inline Foam::scalar Foam::Boussinesq<Specie>::cpMcv +inline Foam::scalar Foam::Boussinesq<Specie>::CpMCv ( scalar p, scalar T ) const { - return RR; + return this->R(); } @@ -200,27 +173,18 @@ inline void Foam::Boussinesq<Specie>::operator+= const Boussinesq<Specie>& b ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Specie::operator+=(b); - molr1 /= this->nMoles(); - scalar molr2 = b.nMoles()/this->nMoles(); - - rho0_ = molr1*rho0_ + molr2*b.rho0_; - T0_ = molr1*T0_ + molr2*b.T0_; - beta_ = molr1*beta_ + molr2*b.beta_; -} + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = b.Y()/this->Y(); -template<class Specie> -inline void Foam::Boussinesq<Specie>::operator-= -( - const Boussinesq<Specie>& b -) -{ - Specie::operator-=(b); - rho0_ = b.rho0_; - T0_ = b.T0_; - beta_ = b.beta_; + rho0_ = Y1*rho0_ + Y2*b.rho0_; + T0_ = Y1*T0_ + Y2*b.T0_; + beta_ = Y1*beta_ + Y2*b.beta_; + } } @@ -240,36 +204,31 @@ inline Foam::Boussinesq<Specie> Foam::operator+ const Boussinesq<Specie>& b2 ) { - scalar nMoles = b1.nMoles() + b2.nMoles(); - scalar molr1 = b1.nMoles()/nMoles; - scalar molr2 = b2.nMoles()/nMoles; - - return Boussinesq<Specie> - ( - static_cast<const Specie&>(b1) - + static_cast<const Specie&>(b2), - molr1*b1.rho0_ + molr2*b2.rho0_, - molr1*b1.T0_ + molr2*b2.T0_, - molr1*b1.beta_ + molr2*b2.beta_ - ); -} - - -template<class Specie> -inline Foam::Boussinesq<Specie> Foam::operator- -( - const Boussinesq<Specie>& b1, - const Boussinesq<Specie>& b2 -) -{ - return Boussinesq<Specie> - ( - static_cast<const Specie&>(b1) - - static_cast<const Specie&>(b2), - b1.rho0_ - b2.rho0_, - b1.T0_ - b2.T0_, - b1.beta_ - b2.beta_ - ); + Specie sp(static_cast<const Specie&>(b1) + static_cast<const Specie&>(b2)); + + if (mag(sp.Y()) < SMALL) + { + return Boussinesq<Specie> + ( + sp, + b1.rho0_, + b1.T0_, + b1.beta_ + ); + } + else + { + const scalar Y1 = b1.Y()/sp.Y(); + const scalar Y2 = b2.Y()/sp.Y(); + + return Boussinesq<Specie> + ( + sp, + Y1*b1.rho0_ + Y2*b2.rho0_, + Y1*b1.T0_ + Y2*b2.T0_, + Y1*b1.beta_ + Y2*b2.beta_ + ); + } } @@ -293,11 +252,22 @@ inline Foam::Boussinesq<Specie> Foam::operator* template<class Specie> inline Foam::Boussinesq<Specie> Foam::operator== ( - const Boussinesq<Specie>& pg1, - const Boussinesq<Specie>& pg2 + const Boussinesq<Specie>& b1, + const Boussinesq<Specie>& b2 ) { - return pg2 - pg1; + Specie sp(static_cast<const Specie&>(b1) == static_cast<const Specie&>(b2)); + + const scalar Y1 = b1.Y()/sp.Y(); + const scalar Y2 = b2.Y()/sp.Y(); + + return Boussinesq<Specie> + ( + sp, + Y2*b2.rho0_ - Y1*b1.rho0_, + Y2*b2.T0_ - Y1*b1.T0_, + Y2*b2.beta_ - Y1*b1.beta_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.C b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.C index a36766ade86484f3cd28d0a3face4ce87bdfe759..e61f40d5f220898fbcc0a818414267043ed13ff5 100644 --- a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.C +++ b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,20 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::PengRobinsonGas<Specie>::PengRobinsonGas(Istream& is) -: - Specie(is), - Tc_(readScalar(is)), - Vc_(readScalar(is)), - Zc_(readScalar(is)), - Pc_(readScalar(is)), - omega_(readScalar(is)) -{ - is.check("PengRobinsonGas<Specie>::PengRobinsonGas(Istream& is)"); -} - - template<class Specie> Foam::PengRobinsonGas<Specie>::PengRobinsonGas ( @@ -78,17 +64,7 @@ Foam::Ostream& Foam::operator<< const PengRobinsonGas<Specie>& pg ) { - os << static_cast<const Specie&>(pg) - << token::SPACE << pg.Tc_ - << token::SPACE << pg.Vc_ - << token::SPACE << pg.Zc_ - << token::SPACE << pg.Pc_ - << token::SPACE << pg.omega_; - - os.check - ( - "Ostream& operator<<(Ostream& os, const PengRobinsonGas<Specie>& st)" - ); + pg.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.H b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.H index 0d4676e5133f31322202b0b7516bc4d9fd3eb409..27e2946690b0437b3ae5f6e57b20fb8ad25b97a6 100644 --- a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.H +++ b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGas.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,6 @@ inline PengRobinsonGas<Specie> operator+ const PengRobinsonGas<Specie>& ); -template<class Specie> -inline PengRobinsonGas<Specie> operator- -( - const PengRobinsonGas<Specie>&, - const PengRobinsonGas<Specie>& -); - template<class Specie> inline PengRobinsonGas<Specie> operator* ( @@ -129,9 +122,6 @@ public: const scalar& omega ); - //- Construct from Istream - PengRobinsonGas(Istream&); - //- Construct from dictionary PengRobinsonGas(const dictionary& dict); @@ -141,9 +131,6 @@ public: //- Construct and return a clone inline autoPtr<PengRobinsonGas> clone() const; - // Selector from Istream - inline static autoPtr<PengRobinsonGas> New(Istream& is); - // Selector from dictionary inline static autoPtr<PengRobinsonGas> New ( @@ -171,23 +158,23 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; - //- Return compression factor [-] + //- 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -198,8 +185,6 @@ public: // Member operators inline void operator+=(const PengRobinsonGas&); - inline void operator-=(const PengRobinsonGas&); - inline void operator*=(const scalar); @@ -211,12 +196,6 @@ public: const PengRobinsonGas& ); - friend PengRobinsonGas operator- <Specie> - ( - const PengRobinsonGas&, - const PengRobinsonGas& - ); - friend PengRobinsonGas operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGasI.H b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGasI.H index dc2ed305b4bed1914bca62b46a560a35e9bfc650..85df8cea5a21fcd0708bb82b45554c987c5beaa7 100644 --- a/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGasI.H +++ b/src/thermophysicalModels/specie/equationOfState/PengRobinsonGas/PengRobinsonGasI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,17 +77,6 @@ Foam::PengRobinsonGas<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::PengRobinsonGas<Specie>> -Foam::PengRobinsonGas<Specie>::New -( - Istream& is -) -{ - return autoPtr<PengRobinsonGas<Specie>>(new PengRobinsonGas<Specie>(is)); -} - - template<class Specie> inline Foam::autoPtr<Foam::PengRobinsonGas<Specie>> Foam::PengRobinsonGas<Specie>::New @@ -111,24 +100,25 @@ inline Foam::scalar Foam::PengRobinsonGas<Specie>::rho scalar T ) const { - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); return p/(Z*this->R()*T); } template<class Specie> -inline Foam::scalar Foam::PengRobinsonGas<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::PengRobinsonGas<Specie>::H(scalar p, scalar T) const { - scalar Pr = p/Pc_; - scalar Tr = T/Tc_; - scalar B = 0.07780*Pr/Tr; - scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); - scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); + const scalar Pr = p/Pc_; + const scalar Tr = T/Tc_; + const scalar B = 0.07780*Pr/Tr; + const scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); + const scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); return - RR*Tc_ + this->R() + *Tc_ *( Tr*(Z - 1) - 2.078*(1 + kappa)*sqrt(alpha) @@ -138,55 +128,59 @@ inline Foam::scalar Foam::PengRobinsonGas<Specie>::h(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::PengRobinsonGas<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::PengRobinsonGas<Specie>::Cp(scalar p, scalar T) const { - scalar Tr = T/Tc_; - scalar a = 0.45724*sqr(RR*Tc_)/Pc_; - scalar b = 0.07780*RR*Tc_/Pc_; - scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); - scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); + const scalar Tr = T/Tc_; + const scalar a = 0.45724*sqr(RR*Tc_)/Pc_; + const scalar b = 0.07780*RR*Tc_/Pc_; + const scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); + const scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); - scalar A = a*alpha*p/sqr(RR*T); - scalar B = b*p/(RR*T); + const scalar A = a*alpha*p/sqr(RR*T); + const scalar B = b*p/(RR*T); - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); - scalar ap = kappa*a*(kappa/Tc_ - (1 + kappa)/sqrt(T*Tc_)); - scalar app = kappa*a*(1 + kappa)/(2*sqrt(pow3(T)*Tc_)); + const scalar ap = kappa*a*(kappa/Tc_ - (1 + kappa)/sqrt(T*Tc_)); + const scalar app = kappa*a*(1 + kappa)/(2*sqrt(pow3(T)*Tc_)); - scalar M = (sqr(Z) + 2*B*Z - sqr(B))/(Z - B); - scalar N = ap*B/(b*RR); + const scalar M = (sqr(Z) + 2*B*Z - sqr(B))/(Z - B); + const scalar N = ap*B/(b*RR); const scalar root2 = sqrt(2.0); return + ( app*(T/(2*root2*b))*log((Z + (root2 + 1)*B)/(Z - (root2 - 1)*B)) + RR*sqr(M - N)/(sqr(M) - 2*A*(Z + B)) - - RR; + - RR + )/this->W(); } template<class Specie> -inline Foam::scalar Foam::PengRobinsonGas<Specie>::s +inline Foam::scalar Foam::PengRobinsonGas<Specie>::S ( scalar p, scalar T ) const { - scalar Pr = p/Pc_; - scalar Tr = T/Tc_; - scalar B = 0.07780*Pr/Tr; - scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); + const scalar Pr = p/Pc_; + const scalar Tr = T/Tc_; + const scalar B = 0.07780*Pr/Tr; + const scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); return - - RR*log(p/Pstd) - + RR + this->R() *( - log(Z - B) - - 2.078*kappa*((1 + kappa)/sqrt(Tr) - kappa) - *log((Z + 2.414*B)/(Z - 0.414*B)) + - log(p/Pstd) + + ( + log(Z - B) + - 2.078*kappa*((1 + kappa)/sqrt(Tr) - kappa) + *log((Z + 2.414*B)/(Z - 0.414*B)) + ) ); } @@ -198,7 +192,7 @@ inline Foam::scalar Foam::PengRobinsonGas<Specie>::psi scalar T ) const { - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); return 1.0/(Z*this->R()*T); } @@ -211,42 +205,44 @@ inline Foam::scalar Foam::PengRobinsonGas<Specie>::Z scalar T ) const { - scalar Tr = T/Tc_; - scalar a = 0.45724*sqr(RR*Tc_)/Pc_; - scalar b = 0.07780*RR*Tc_/Pc_; - scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); - scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); + const scalar Tr = T/Tc_; + const scalar a = 0.45724*sqr(RR*Tc_)/Pc_; + const scalar b = 0.07780*RR*Tc_/Pc_; + const scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); + const scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); - scalar A = a*alpha*p/sqr(RR*T); - scalar B = b*p/(RR*T); + const scalar A = a*alpha*p/sqr(RR*T); + const scalar B = b*p/(RR*T); - scalar a2 = B - 1; - scalar a1 = A - 2*B - 3*sqr(B); - scalar a0 = -A*B + sqr(B) + pow3(B); + const scalar a2 = B - 1; + const scalar a1 = A - 2*B - 3*sqr(B); + const scalar a0 = -A*B + sqr(B) + pow3(B); - scalar Q = (3*a1 - a2*a2)/9.0; - scalar Rl = (9*a2*a1 - 27*a0 - 2*a2*a2*a2)/54.0; + const scalar Q = (3*a1 - a2*a2)/9.0; + const scalar Rl = (9*a2*a1 - 27*a0 - 2*a2*a2*a2)/54.0; - scalar Q3 = Q*Q*Q; - scalar D = Q3 + Rl*Rl; + const scalar Q3 = Q*Q*Q; + const scalar D = Q3 + Rl*Rl; scalar root = -1; if (D <= 0) { - scalar th = ::acos(Rl/sqrt(-Q3)); - scalar qm = 2*sqrt(-Q); - scalar r1 = qm*cos(th/3.0) - a2/3.0; - scalar r2 = qm*cos((th + 2*constant::mathematical::pi)/3.0) - a2/3.0; - scalar r3 = qm*cos((th + 4*constant::mathematical::pi)/3.0) - a2/3.0; + const scalar th = ::acos(Rl/sqrt(-Q3)); + const scalar qm = 2*sqrt(-Q); + const scalar r1 = qm*cos(th/3.0) - a2/3.0; + const scalar r2 = + qm*cos((th + 2*constant::mathematical::pi)/3.0) - a2/3.0; + const scalar r3 = + qm*cos((th + 4*constant::mathematical::pi)/3.0) - a2/3.0; root = max(r1, max(r2, r3)); } else { // One root is real - scalar D05 = sqrt(D); - scalar S = pow(Rl + D05, 1.0/3.0); + const scalar D05 = sqrt(D); + const scalar S = pow(Rl + D05, 1.0/3.0); scalar Tl = 0; if (D05 > Rl) { @@ -265,28 +261,28 @@ inline Foam::scalar Foam::PengRobinsonGas<Specie>::Z template<class Specie> -inline Foam::scalar Foam::PengRobinsonGas<Specie>::cpMcv +inline Foam::scalar Foam::PengRobinsonGas<Specie>::CpMCv ( scalar p, scalar T ) const { - scalar Tr = T/Tc_; - scalar a = 0.45724*sqr(RR*Tc_)/Pc_; - scalar b = 0.07780*RR*Tc_/Pc_; - scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); - scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); + const scalar Tr = T/Tc_; + const scalar a = 0.45724*sqr(RR*Tc_)/Pc_; + const scalar b = 0.07780*RR*Tc_/Pc_; + const scalar kappa = 0.37464 + 1.54226*omega_ - 0.26992*sqr(omega_); + const scalar alpha = sqr(1 + kappa*(1 - sqrt(Tr))); - scalar A = alpha*a*p/sqr(RR*T); - scalar B = b*p/(RR*T); + const scalar A = alpha*a*p/sqr(RR*T); + const scalar B = b*p/(RR*T); - scalar Z = this->Z(p, T); + const scalar Z = this->Z(p, T); - scalar ap = kappa*a*(kappa/Tc_ - (1 + kappa)/sqrt(T*Tc_)); - scalar M = (sqr(Z) + 2*B*Z - sqr(B))/(Z - B); - scalar N = ap*B/(b*RR); + const scalar ap = kappa*a*(kappa/Tc_ - (1 + kappa)/sqrt(T*Tc_)); + const scalar M = (sqr(Z) + 2*B*Z - sqr(B))/(Z - B); + const scalar N = ap*B/(b*RR); - return RR*sqr(M - N)/(sqr(M) - 2*A*(Z + B)); + return this->R()*sqr(M - N)/(sqr(M) - 2*A*(Z + B)); } @@ -298,38 +294,20 @@ inline void Foam::PengRobinsonGas<Specie>::operator+= const PengRobinsonGas<Specie>& pg ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Specie::operator+=(pg); - molr1 /= this->nMoles(); - scalar molr2 = pg.nMoles()/this->nMoles(); - - Tc_ = molr1*Tc_ + molr2*pg.Tc_; - Vc_ = molr1*Vc_ + molr2*pg.Vc_; - Zc_ = molr1*Zc_ + molr2*pg.Zc_; - Pc_ = RR*Zc_*Tc_/Vc_; - omega_ = molr1*omega_ + molr2*pg.omega_; -} - - -template<class Specie> -inline void Foam::PengRobinsonGas<Specie>::operator-= -( - const PengRobinsonGas<Specie>& pg -) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(pg); - - molr1 /= this->nMoles(); - scalar molr2 = pg.nMoles()/this->nMoles(); - - Tc_ = molr1*Tc_ - molr2*pg.Tc_; - Vc_ = molr1*Vc_ - molr2*pg.Vc_; - Zc_ = molr1*Zc_ - molr2*pg.Zc_; - Pc_ = RR*Zc_*Tc_/Vc_; - omega_ = molr1*omega_ - molr2*pg.omega_; + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = pg.Y()/this->Y(); + + Tc_ = Y1*Tc_ + Y2*pg.Tc_; + Vc_ = Y1*Vc_ + Y2*pg.Vc_; + Zc_ = Y1*Zc_ + Y2*pg.Zc_; + Pc_ = RR*Zc_*Tc_/Vc_; + omega_ = Y1*omega_ + Y2*pg.omega_; + } } @@ -350,52 +328,43 @@ Foam::PengRobinsonGas<Specie> Foam::operator+ const PengRobinsonGas<Specie>& pg2 ) { - scalar nMoles = pg1.nMoles() + pg2.nMoles(); - scalar molr1 = pg1.nMoles()/nMoles; - scalar molr2 = pg2.nMoles()/nMoles; - - const scalar Tc = molr1*pg1.Tc_ + molr2*pg2.Tc_; - const scalar Vc = molr1*pg1.Vc_ + molr2*pg2.Vc_; - const scalar Zc = molr1*pg1.Zc_ + molr2*pg2.Zc_; - - return PengRobinsonGas<Specie> + Specie sp ( static_cast<const Specie&>(pg1) - + static_cast<const Specie&>(pg2), - Tc, - Vc, - Zc, - RR*Zc*Tc/Vc, - molr1*pg1.omega_ + molr2*pg2.omega_ + + static_cast<const Specie&>(pg2) ); -} - - -template<class Specie> -Foam::PengRobinsonGas<Specie> Foam::operator- -( - const PengRobinsonGas<Specie>& pg1, - const PengRobinsonGas<Specie>& pg2 -) -{ - scalar nMoles = pg1.nMoles() + pg2.nMoles(); - scalar molr1 = pg1.nMoles()/nMoles; - scalar molr2 = pg2.nMoles()/nMoles; - - const scalar Tc = molr1*pg1.Tc_ + molr2*pg2.Tc_; - const scalar Vc = molr1*pg1.Vc_ + molr2*pg2.Vc_; - const scalar Zc = molr1*pg1.Zc_ + molr2*pg2.Zc_; - return PengRobinsonGas<Specie> - ( - static_cast<const Specie&>(pg1) - - static_cast<const Specie&>(pg2), - Tc, - Vc, - Zc, - RR*Zc*Tc/Vc, - molr1*pg1.omega_ - molr2*pg2.omega_ - ); + if (mag(sp.Y()) < SMALL) + { + return PengRobinsonGas<Specie> + ( + sp, + pg1.Tc_, + pg1.Vc_, + pg1.Zc_, + pg1.Pc_, + pg1.omega_ + ); + } + else + { + const scalar Y1 = pg1.Y()/sp.Y(); + const scalar Y2 = pg2.Y()/sp.Y(); + + const scalar Tc = Y1*pg1.Tc_ + Y2*pg2.Tc_; + const scalar Vc = Y1*pg1.Vc_ + Y2*pg2.Vc_; + const scalar Zc = Y1*pg1.Zc_ + Y2*pg2.Zc_; + + return PengRobinsonGas<Specie> + ( + sp, + Tc, + Vc, + Zc, + RR*Zc*Tc/Vc, + Y1*pg1.omega_ + Y2*pg2.omega_ + ); + } } @@ -425,7 +394,28 @@ Foam::PengRobinsonGas<Specie> Foam::operator== const PengRobinsonGas<Specie>& pg2 ) { - return pg2 - pg1; + Specie sp + ( + static_cast<const Specie&>(pg1) + == static_cast<const Specie&>(pg2) + ); + + const scalar Y1 = pg1.Y()/sp.Y(); + const scalar Y2 = pg2.Y()/sp.Y(); + + const scalar Tc = Y2*pg2.Tc_ - Y1*pg1.Tc_; + const scalar Vc = Y2*pg2.Vc_ - Y1*pg1.Vc_; + const scalar Zc = Y2*pg2.Zc_ - Y1*pg1.Zc_; + + return PengRobinsonGas<Specie> + ( + sp, + Tc, + Vc, + Zc, + RR*Zc*Tc/Vc, + Y2*pg2.omega_ - Y1*pg1.omega_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C index 5d35425ccce01b1c0fdf7af3ceab64902fe78ef3..2c415b874818b77767011c3e3732cd7021a017be 100644 --- a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C +++ b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,22 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::adiabaticPerfectFluid<Specie>::adiabaticPerfectFluid(Istream& is) -: - Specie(is), - p0_(readScalar(is)), - rho0_(readScalar(is)), - gamma_(readScalar(is)), - B_(readScalar(is)) -{ - is.check - ( - "adiabaticPerfectFluid<Specie>::adiabaticPerfectFluid(Istream& is)" - ); -} - - template<class Specie> Foam::adiabaticPerfectFluid<Specie>::adiabaticPerfectFluid ( @@ -84,17 +68,7 @@ Foam::Ostream& Foam::operator<< const adiabaticPerfectFluid<Specie>& pf ) { - os << static_cast<const Specie&>(pf) - << token::SPACE << pf.R_ - << token::SPACE << pf.rho0_ - << token::SPACE << pf.gamma_ - << token::SPACE << pf.B_; - - os.check - ( - "Ostream& operator<<(Ostream&, const adiabaticPerfectFluid<Specie>&)" - ); - + pf.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H index cb2348744c4a40112a0cb319eadfecddb1f96762..53074ee4f7e018f275fc25832384541159f8f8fe 100644 --- a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H +++ b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,7 +28,7 @@ Group grpSpecieEquationOfState Description - AdiabaticPerfect gas equation of state. + Adiabatic perfect fluid equation of state. SourceFiles adiabaticPerfectFluidI.H @@ -57,13 +57,6 @@ inline adiabaticPerfectFluid<Specie> operator+ const adiabaticPerfectFluid<Specie>& ); -template<class Specie> -inline adiabaticPerfectFluid<Specie> operator- -( - const adiabaticPerfectFluid<Specie>&, - const adiabaticPerfectFluid<Specie>& -); - template<class Specie> inline adiabaticPerfectFluid<Specie> operator* ( @@ -124,9 +117,6 @@ public: const scalar B ); - //- Construct from Istream - adiabaticPerfectFluid(Istream&); - //- Construct from dictionary adiabaticPerfectFluid(const dictionary& dict); @@ -140,9 +130,6 @@ public: //- Construct and return a clone inline autoPtr<adiabaticPerfectFluid> clone() const; - // Selector from Istream - inline static autoPtr<adiabaticPerfectFluid> New(Istream& is); - // Selector from dictionary inline static autoPtr<adiabaticPerfectFluid> New ( @@ -170,14 +157,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -185,8 +172,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -198,8 +185,6 @@ public: // Member operators inline void operator+=(const adiabaticPerfectFluid&); - inline void operator-=(const adiabaticPerfectFluid&); - inline void operator*=(const scalar); @@ -211,12 +196,6 @@ public: const adiabaticPerfectFluid& ); - friend adiabaticPerfectFluid operator- <Specie> - ( - const adiabaticPerfectFluid&, - const adiabaticPerfectFluid& - ); - friend adiabaticPerfectFluid operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluidI.H b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluidI.H index 87adcdad2bb55ebd5f969c118c59d512b296cafc..57424a902e5b98f48ed83278bf794555990e55a2 100644 --- a/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluidI.H +++ b/src/thermophysicalModels/specie/equationOfState/adiabaticPerfectFluid/adiabaticPerfectFluidI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,17 +73,6 @@ Foam::adiabaticPerfectFluid<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::adiabaticPerfectFluid<Specie>> -Foam::adiabaticPerfectFluid<Specie>::New(Istream& is) -{ - return autoPtr<adiabaticPerfectFluid<Specie>> - ( - new adiabaticPerfectFluid<Specie>(is) - ); -} - - template<class Specie> inline Foam::autoPtr<Foam::adiabaticPerfectFluid<Specie>> Foam::adiabaticPerfectFluid<Specie>::New @@ -112,7 +101,7 @@ inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::rho template<class Specie> -inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::h +inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::H ( scalar p, scalar T @@ -123,7 +112,7 @@ inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::h template<class Specie> -inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::cp +inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::Cp ( scalar p, scalar T @@ -134,7 +123,7 @@ inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::cp template<class Specie> -inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::s +inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::S ( scalar p, scalar T @@ -168,7 +157,7 @@ inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::Z(scalar, scalar) const template<class Specie> -inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::cpMcv +inline Foam::scalar Foam::adiabaticPerfectFluid<Specie>::CpMCv ( scalar p, scalar T @@ -186,37 +175,19 @@ inline void Foam::adiabaticPerfectFluid<Specie>::operator+= const adiabaticPerfectFluid<Specie>& pf ) { - scalar molr1 = this->nMoles(); - + scalar Y1 = this->Y(); Specie::operator+=(pf); - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); - - p0_ = molr1*p0_ + molr2*pf.p0_; - rho0_ = molr1*rho0_ + molr2*pf.rho0_; - gamma_ = molr1*gamma_ + molr2*pf.gamma_; - B_ = molr1*B_ + molr2*pf.B_; -} - - -template<class Specie> -inline void Foam::adiabaticPerfectFluid<Specie>::operator-= -( - const adiabaticPerfectFluid<Specie>& pf -) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(pf); - - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = pf.Y()/this->Y(); - p0_ = molr1*p0_ - molr2*pf.p0_; - rho0_ = molr1*rho0_ - molr2*pf.rho0_; - gamma_ = molr1*gamma_ - molr2*pf.gamma_; - B_ = molr1*B_ - molr2*pf.B_; + p0_ = Y1*p0_ + Y2*pf.p0_; + rho0_ = Y1*rho0_ + Y2*pf.rho0_; + gamma_ = Y1*gamma_ + Y2*pf.gamma_; + B_ = Y1*B_ + Y2*pf.B_; + } } @@ -236,42 +207,37 @@ inline Foam::adiabaticPerfectFluid<Specie> Foam::operator+ const adiabaticPerfectFluid<Specie>& pf2 ) { - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; - - return rhoConst<Specie> + Specie sp ( static_cast<const Specie&>(pf1) - + static_cast<const Specie&>(pf2), - molr1*pf1.p0_ + molr2*pf2.p0_, - molr1*pf1.rho0_ + molr2*pf2.rho0_, - molr1*pf1.gamma_ + molr2*pf2.gamma_, - molr1*pf1.B_ + molr2*pf2.B_ + + static_cast<const Specie&>(pf2) ); -} - -template<class Specie> -inline Foam::adiabaticPerfectFluid<Specie> Foam::operator- -( - const adiabaticPerfectFluid<Specie>& pf1, - const adiabaticPerfectFluid<Specie>& pf2 -) -{ - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; - - return rhoConst<Specie> - ( - static_cast<const Specie&>(pf1) - - static_cast<const Specie&>(pf2), - molr1*pf1.p0_ - molr2*pf2.p0_, - molr1*pf1.rho0_ - molr2*pf2.rho0_, - molr1*pf1.gamma_ - molr2*pf2.gamma_, - molr1*pf1.B_ - molr2*pf2.B_ - ); + if (mag(sp.Y()) < SMALL) + { + return adiabaticPerfectFluid<Specie> + ( + sp, + pf1.p0_, + pf1.rho0_, + pf1.gamma_, + pf1.B_ + ); + } + else + { + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); + + return adiabaticPerfectFluid<Specie> + ( + sp, + Y1*pf1.p0_ + Y2*pf2.p0_, + Y1*pf1.rho0_ + Y2*pf2.rho0_, + Y1*pf1.gamma_ + Y2*pf2.gamma_, + Y1*pf1.B_ + Y2*pf2.B_ + ); + } } @@ -300,7 +266,23 @@ inline Foam::adiabaticPerfectFluid<Specie> Foam::operator== const adiabaticPerfectFluid<Specie>& pf2 ) { - return pf2 - pf1; + Specie sp + ( + static_cast<const Specie&>(pf1) + == static_cast<const Specie&>(pf2) + ); + + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); + + return adiabaticPerfectFluid<Specie> + ( + sp, + Y2*pf2.p0_ - Y1*pf1.p0_, + Y2*pf2.rho0_ - Y1*pf1.rho0_, + Y2*pf2.gamma_ - Y1*pf1.gamma_, + Y2*pf2.B_ - Y1*pf1.B_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C index 3550f8a1be3d06ec6f35adab5027aa32f82ecf72..fb5b0f5da15c81273d94f8b95f72946ddf860bcd 100644 --- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C +++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,16 +33,6 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie, int PolySize> -icoPolynomial<Specie, PolySize>::icoPolynomial(Istream& is) -: - Specie(is), - rhoCoeffs_("rhoCoeffs<" + Foam::name(PolySize) + '>', is) -{ - rhoCoeffs_ *= this->W(); -} - - template<class Specie, int PolySize> icoPolynomial<Specie, PolySize>::icoPolynomial(const dictionary& dict) : @@ -54,9 +44,7 @@ icoPolynomial<Specie, PolySize>::icoPolynomial(const dictionary& dict) "rhoCoeffs<" + Foam::name(PolySize) + '>' ) ) -{ - rhoCoeffs_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -70,7 +58,7 @@ void icoPolynomial<Specie, PolySize>::write(Ostream& os) const dict.add ( word("rhoCoeffs<" + Foam::name(PolySize) + '>'), - rhoCoeffs_/this->W() + rhoCoeffs_ ); os << indent << dict.dictName() << dict; @@ -82,16 +70,7 @@ void icoPolynomial<Specie, PolySize>::write(Ostream& os) const template<class Specie, int PolySize> Ostream& operator<<(Ostream& os, const icoPolynomial<Specie, PolySize>& ip) { - os << static_cast<const Specie&>(ip) << tab - << "rhoCoeffs<" << Foam::name(PolySize) << '>' << tab - << ip.rhoCoeffs_/ip.W(); - - os.check - ( - "Ostream& operator<<" - "(Ostream& os, const icoPolynomial<Specie, PolySize>& ip)" - ); - + ip.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H index 5438c1b60862546716a23e506679fd4f163912d1..a024e8320b1069e817db4a2261ccfaba56e9ea8b 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,10 +31,36 @@ Description Incompressible, polynomial form of equation of state, using a polynomial function for density. +Usage + \table + Property | Description + rhoCoeffs<8> | Density polynomial coefficients + \endtable + + Example of the specification of the equation of state: + \verbatim + equationOfState + { + rhoCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); + } + \endverbatim + + The polynomial expression is evaluated as so: + + \f[ + \rho = 1000 - 0.05 T + 0.003 T^2 + \f] + +Note + Input in [kg/m3], but internally uses [kg/m3/kmol]. + SourceFiles icoPolynomialI.H icoPolynomial.C +See also + Foam::Polynomial + \*---------------------------------------------------------------------------*/ #ifndef icoPolynomial_H @@ -60,13 +86,6 @@ icoPolynomial<Specie, PolySize> operator+ const icoPolynomial<Specie, PolySize>& ); -template<class Specie, int PolySize> -icoPolynomial<Specie, PolySize> operator- -( - const icoPolynomial<Specie, PolySize>&, - const icoPolynomial<Specie, PolySize>& -); - template<class Specie, int PolySize> icoPolynomial<Specie, PolySize> operator* ( @@ -101,7 +120,6 @@ class icoPolynomial // Private data //- Density polynomial coefficients - // Note: input in [kg/m3], but internally uses [kg/m3/kmol] Polynomial<PolySize> rhoCoeffs_; @@ -116,24 +134,15 @@ public: const Polynomial<PolySize>& rhoPoly ); - //- Construct from Istream - icoPolynomial(Istream&); - //- Construct from dictionary icoPolynomial(const dictionary& dict); - //- Construct as copy - inline icoPolynomial(const icoPolynomial&); - //- Construct as named copy inline icoPolynomial(const word& name, const icoPolynomial&); //- Construct and return a clone inline autoPtr<icoPolynomial> clone() const; - // Selector from Istream - inline static autoPtr<icoPolynomial> New(Istream& is); - // Selector from dictionary inline static autoPtr<icoPolynomial> New(const dictionary& dict); @@ -158,14 +167,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -173,8 +182,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -187,8 +196,6 @@ public: inline void operator=(const icoPolynomial&); inline void operator+=(const icoPolynomial&); - inline void operator-=(const icoPolynomial&); - inline void operator*=(const scalar); @@ -200,12 +207,6 @@ public: const icoPolynomial& ); - friend icoPolynomial operator- <Specie, PolySize> - ( - const icoPolynomial&, - const icoPolynomial& - ); - friend icoPolynomial operator* <Specie, PolySize> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H index 03d087c74f78b64de0471cead37394cad62d8d27..66edf3f842a62c4daa73ad2245767e50e3240ea2 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,17 +41,6 @@ inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie, int PolySize> -inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial -( - const icoPolynomial<Specie, PolySize>& ip -) -: - Specie(ip), - rhoCoeffs_(ip.rhoCoeffs_) -{} - - template<class Specie, int PolySize> inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial ( @@ -75,17 +64,6 @@ Foam::icoPolynomial<Specie, PolySize>::clone() const } -template<class Specie, int PolySize> -inline Foam::autoPtr<Foam::icoPolynomial<Specie, PolySize>> -Foam::icoPolynomial<Specie, PolySize>::New(Istream& is) -{ - return autoPtr<icoPolynomial<Specie, PolySize>> - ( - new icoPolynomial<Specie, PolySize>(is) - ); -} - - template<class Specie, int PolySize> inline Foam::autoPtr<Foam::icoPolynomial<Specie, PolySize>> Foam::icoPolynomial<Specie, PolySize>::New(const dictionary& dict) @@ -106,12 +84,12 @@ inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::rho scalar T ) const { - return rhoCoeffs_.value(T)/this->W(); + return rhoCoeffs_.value(T); } template<class Specie, int PolySize> -inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::h +inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::H ( scalar p, scalar T @@ -122,7 +100,7 @@ inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::h template<class Specie, int PolySize> -inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::cp +inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::Cp ( scalar p, scalar T @@ -133,7 +111,7 @@ inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::cp template<class Specie, int PolySize> -inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::s +inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::S ( scalar p, scalar T @@ -166,7 +144,7 @@ inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::Z template<class Specie, int PolySize> -inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::cpMcv +inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::CpMCv ( scalar p, scalar T @@ -196,31 +174,16 @@ inline void Foam::icoPolynomial<Specie, PolySize>::operator+= const icoPolynomial<Specie, PolySize>& ip ) { - scalar molr1 = this->nMoles(); - + scalar Y1 = this->Y(); Specie::operator+=(ip); - molr1 /= this->nMoles(); - scalar molr2 = ip.nMoles()/this->nMoles(); - - rhoCoeffs_ = molr1*rhoCoeffs_ + molr2*ip.rhoCoeffs_; -} - - -template<class Specie, int PolySize> -inline void Foam::icoPolynomial<Specie, PolySize>::operator-= -( - const icoPolynomial<Specie, PolySize>& ip -) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(ip); - - molr1 /= this->nMoles(); - scalar molr2 = ip.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ip.Y()/this->Y(); - rhoCoeffs_ = molr1*rhoCoeffs_ - molr2*ip.rhoCoeffs_; + rhoCoeffs_ = Y1*rhoCoeffs_ + Y2*ip.rhoCoeffs_; + } } @@ -240,36 +203,31 @@ Foam::icoPolynomial<Specie, PolySize> Foam::operator+ const icoPolynomial<Specie, PolySize>& ip2 ) { - scalar nMoles = ip1.nMoles() + ip2.nMoles(); - scalar molr1 = ip1.nMoles()/nMoles; - scalar molr2 = ip2.nMoles()/nMoles; - - return icoPolynomial<Specie, PolySize> + Specie sp ( static_cast<const Specie&>(ip1) - + static_cast<const Specie&>(ip2), - molr1*ip1.rhoCoeffs_ + molr2*ip2.rhoCoeffs_ + + static_cast<const Specie&>(ip2) ); -} - -template<class Specie, int PolySize> -Foam::icoPolynomial<Specie, PolySize> Foam::operator- -( - const icoPolynomial<Specie, PolySize>& ip1, - const icoPolynomial<Specie, PolySize>& ip2 -) -{ - scalar nMoles = ip1.nMoles() + ip2.nMoles(); - scalar molr1 = ip1.nMoles()/nMoles; - scalar molr2 = ip2.nMoles()/nMoles; - - return icoPolynomial<Specie, PolySize> - ( - static_cast<const Specie&>(ip1) - - static_cast<const Specie&>(ip2), - molr1*ip1.rhoCoeffs_ - molr2*ip2.rhoCoeffs_ - ); + if (mag(sp.Y()) < SMALL) + { + return icoPolynomial<Specie, PolySize> + ( + sp, + ip1.rhoCoeffs_ + ); + } + else + { + const scalar Y1 = ip1.Y()/sp.Y(); + const scalar Y2 = ip2.Y()/sp.Y(); + + return icoPolynomial<Specie, PolySize> + ( + sp, + Y1*ip1.rhoCoeffs_ + Y2*ip2.rhoCoeffs_ + ); + } } @@ -295,7 +253,20 @@ Foam::icoPolynomial<Specie, PolySize> Foam::operator== const icoPolynomial<Specie, PolySize>& ip2 ) { - return ip2 - ip1; + Specie sp + ( + static_cast<const Specie&>(ip1) + == static_cast<const Specie&>(ip2) + ); + + const scalar Y1 = ip1.Y()/sp.Y(); + const scalar Y2 = ip2.Y()/sp.Y(); + + return icoPolynomial<Specie, PolySize> + ( + sp, + Y2*ip2.rhoCoeffs_ - Y1*ip1.rhoCoeffs_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C index 4f957aafedfaa2995d107e4e7a939e8a86ffb3fe..c2aa3c0a8fbf7f7d76dc47502e0ffcf0e7ff29b4 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,20 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas(Istream& is) -: - Specie(is), - pRef_(readScalar(is)) -{ - is.check - ( - "incompressiblePerfectGas<Specie>::" - "incompressiblePerfectGas(Istream& is)" - ); -} - - template<class Specie> Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas ( @@ -75,14 +61,7 @@ Foam::Ostream& Foam::operator<< const incompressiblePerfectGas<Specie>& pg ) { - os << static_cast<const Specie&>(pg) - << token::SPACE << pg.pRef_; - - os.check - ( - "Ostream& operator<<" - "(Ostream& os, const incompressiblePerfectGas<Specie>& st)" - ); + pg.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H index eee696886f3d50267fb96833cab597b4b9c9637d..5f26245115385e7e182f83945654f2ec08c8aa71 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,13 +59,6 @@ inline incompressiblePerfectGas<Specie> operator+ const incompressiblePerfectGas<Specie>& ); -template<class Specie> -inline incompressiblePerfectGas<Specie> operator- -( - const incompressiblePerfectGas<Specie>&, - const incompressiblePerfectGas<Specie>& -); - template<class Specie> inline incompressiblePerfectGas<Specie> operator* ( @@ -110,12 +103,6 @@ public: //- Construct from components inline incompressiblePerfectGas(const Specie& sp, const scalar pRef); - //- Construct from incompressiblePerfectGas - inline incompressiblePerfectGas(const incompressiblePerfectGas& sp); - - //- Construct from Istream - incompressiblePerfectGas(Istream&); - //- Construct from dictionary incompressiblePerfectGas(const dictionary& dict); @@ -129,9 +116,6 @@ public: //- Construct and return a clone inline autoPtr<incompressiblePerfectGas> clone() const; - // Selector from Istream - inline static autoPtr<incompressiblePerfectGas> New(Istream& is); - // Selector from dictionary inline static autoPtr<incompressiblePerfectGas> New ( @@ -161,14 +145,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -176,8 +160,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -190,8 +174,6 @@ public: inline void operator=(const incompressiblePerfectGas&); inline void operator+=(const incompressiblePerfectGas&); - inline void operator-=(const incompressiblePerfectGas&); - inline void operator*=(const scalar); @@ -203,12 +185,6 @@ public: const incompressiblePerfectGas& ); - friend incompressiblePerfectGas operator- <Specie> - ( - const incompressiblePerfectGas&, - const incompressiblePerfectGas& - ); - friend incompressiblePerfectGas operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H index 8816c9f317c21ae7836c482097019ecceb30eacc..d04880a6db48b5965a98a04d52a4ea0c62b7e609 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,17 +39,6 @@ inline Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas {} -template<class Specie> -inline Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas -( - const incompressiblePerfectGas& ipg -) -: - Specie(ipg), - pRef_(ipg.pRef_) -{} - - template<class Specie> inline Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas ( @@ -73,20 +62,6 @@ Foam::incompressiblePerfectGas<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::incompressiblePerfectGas<Specie>> -Foam::incompressiblePerfectGas<Specie>::New -( - Istream& is -) -{ - return autoPtr<incompressiblePerfectGas<Specie>> - ( - new incompressiblePerfectGas<Specie>(is) - ); -} - - template<class Specie> inline Foam::autoPtr<Foam::incompressiblePerfectGas<Specie>> Foam::incompressiblePerfectGas<Specie>::New @@ -115,7 +90,7 @@ inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::rho template<class Specie> -inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::h +inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::H ( scalar p, scalar T @@ -126,7 +101,7 @@ inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::h template<class Specie> -inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::cp +inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::Cp ( scalar p, scalar T @@ -137,7 +112,7 @@ inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::cp template<class Specie> -inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::s +inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::S ( scalar p, scalar T @@ -170,13 +145,13 @@ inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::Z template<class Specie> -inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::cpMcv +inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::CpMCv ( scalar p, scalar T ) const { - return RR; + return this->R(); } @@ -199,23 +174,16 @@ inline void Foam::incompressiblePerfectGas<Specie>::operator+= const incompressiblePerfectGas<Specie>& ipg ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Specie::operator+=(ipg); - molr1 /= this->nMoles(); - scalar molr2 = ipg.nMoles()/this->nMoles(); - - pRef_ = molr1*pRef_ + molr2*ipg.pRef_; -} + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ipg.Y()/this->Y(); -template<class Specie> -inline void Foam::incompressiblePerfectGas<Specie>::operator-= -( - const incompressiblePerfectGas<Specie>& ipg -) -{ - Specie::operator-=(ipg); - pRef_ = ipg.pRef_; + pRef_ = Y1*pRef_ + Y2*ipg.pRef_; + } } @@ -235,32 +203,31 @@ inline Foam::incompressiblePerfectGas<Specie> Foam::operator+ const incompressiblePerfectGas<Specie>& ipg2 ) { - scalar nMoles = ipg1.nMoles() + ipg2.nMoles(); - scalar molr1 = ipg1.nMoles()/nMoles; - scalar molr2 = ipg2.nMoles()/nMoles; - - return incompressiblePerfectGas<Specie> + Specie sp ( static_cast<const Specie&>(ipg1) - + static_cast<const Specie&>(ipg2), - molr1*ipg1.pRef_ + molr2*ipg2.pRef_ + + static_cast<const Specie&>(ipg2) ); -} - -template<class Specie> -inline Foam::incompressiblePerfectGas<Specie> Foam::operator- -( - const incompressiblePerfectGas<Specie>& ipg1, - const incompressiblePerfectGas<Specie>& ipg2 -) -{ - return incompressiblePerfectGas<Specie> - ( - static_cast<const Specie&>(ipg1) - - static_cast<const Specie&>(ipg2), - ipg1.pRef_ - ); + if (mag(sp.Y()) < SMALL) + { + return incompressiblePerfectGas<Specie> + ( + sp, + ipg1.pRef_ + ); + } + else + { + const scalar Y1 = ipg1.Y()/sp.Y(); + const scalar Y2 = ipg2.Y()/sp.Y(); + + return incompressiblePerfectGas<Specie> + ( + sp, + Y1*ipg1.pRef_ + Y2*ipg2.pRef_ + ); + } } @@ -282,11 +249,24 @@ inline Foam::incompressiblePerfectGas<Specie> Foam::operator* template<class Specie> inline Foam::incompressiblePerfectGas<Specie> Foam::operator== ( - const incompressiblePerfectGas<Specie>& pg1, - const incompressiblePerfectGas<Specie>& pg2 + const incompressiblePerfectGas<Specie>& ipg1, + const incompressiblePerfectGas<Specie>& ipg2 ) { - return pg2 - pg1; + Specie sp + ( + static_cast<const Specie&>(ipg1) + == static_cast<const Specie&>(ipg2) + ); + + const scalar Y1 = ipg1.Y()/sp.Y(); + const scalar Y2 = ipg2.Y()/sp.Y(); + + return incompressiblePerfectGas<Specie> + ( + sp, + Y2*ipg2.pRef_ - Y1*ipg1.pRef_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/linear/linear.C b/src/thermophysicalModels/specie/equationOfState/linear/linear.C index 562bdecf2bd96838c961d5afff058b9d36b5a9a7..723eef4639c93b1bc32824a0c1c307479bce370c 100644 --- a/src/thermophysicalModels/specie/equationOfState/linear/linear.C +++ b/src/thermophysicalModels/specie/equationOfState/linear/linear.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,17 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::linear<Specie>::linear(Istream& is) -: - Specie(is), - psi_(readScalar(is)), - rho0_(readScalar(is)) -{ - is.check("linear<Specie>::linear(Istream& is)"); -} - - template<class Specie> Foam::linear<Specie>::linear(const dictionary& dict) : @@ -68,11 +57,7 @@ void Foam::linear<Specie>::write(Ostream& os) const template<class Specie> Foam::Ostream& Foam::operator<<(Ostream& os, const linear<Specie>& pf) { - os << static_cast<const Specie&>(pf) - << token::SPACE << pf.psi_ - << token::SPACE << pf.rho0_; - - os.check("Ostream& operator<<(Ostream&, const linear<Specie>&)"); + pf.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/linear/linear.H b/src/thermophysicalModels/specie/equationOfState/linear/linear.H index c8c69e391f3c30b96828ddaaae70e39df47ece8d..4c7308c2d697c33a4c5445758debd299f44ca850 100644 --- a/src/thermophysicalModels/specie/equationOfState/linear/linear.H +++ b/src/thermophysicalModels/specie/equationOfState/linear/linear.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,13 +61,6 @@ inline linear<Specie> operator+ const linear<Specie>& ); -template<class Specie> -inline linear<Specie> operator- -( - const linear<Specie>&, - const linear<Specie>& -); - template<class Specie> inline linear<Specie> operator* ( @@ -120,9 +113,6 @@ public: const scalar rho0 ); - //- Construct from Istream - linear(Istream&); - //- Construct from dictionary linear(const dictionary& dict); @@ -132,9 +122,6 @@ public: //- Construct and return a clone inline autoPtr<linear> clone() const; - // Selector from Istream - inline static autoPtr<linear> New(Istream& is); - // Selector from dictionary inline static autoPtr<linear> New(const dictionary& dict); @@ -159,14 +146,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -174,8 +161,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -187,8 +174,6 @@ public: // Member operators inline void operator+=(const linear&); - inline void operator-=(const linear&); - inline void operator*=(const scalar); @@ -200,12 +185,6 @@ public: const linear& ); - friend linear operator- <Specie> - ( - const linear&, - const linear& - ); - friend linear operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/linear/linearI.H b/src/thermophysicalModels/specie/equationOfState/linear/linearI.H index 701ccc3c7ce360414c84d73feaba9f9941910c3e..c3d361d2dc8d2fd3ee2e0b9f010fcee9e937b867 100644 --- a/src/thermophysicalModels/specie/equationOfState/linear/linearI.H +++ b/src/thermophysicalModels/specie/equationOfState/linear/linearI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,14 +64,6 @@ Foam::linear<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::linear<Specie>> -Foam::linear<Specie>::New(Istream& is) -{ - return autoPtr<linear<Specie>>(new linear<Specie>(is)); -} - - template<class Specie> inline Foam::autoPtr<Foam::linear<Specie>> Foam::linear<Specie>::New @@ -93,21 +85,21 @@ inline Foam::scalar Foam::linear<Specie>::rho(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::linear<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::linear<Specie>::H(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::linear<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::linear<Specie>::Cp(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::linear<Specie>::s(scalar p, scalar T) const +inline Foam::scalar Foam::linear<Specie>::S(scalar p, scalar T) const { return -log((rho0_ + psi_*p)/(rho0_ + psi_*Pstd))/(T*psi_); } @@ -128,7 +120,7 @@ inline Foam::scalar Foam::linear<Specie>::Z(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::linear<Specie>::cpMcv(scalar p, scalar T) const +inline Foam::scalar Foam::linear<Specie>::CpMCv(scalar p, scalar T) const { return 0; } @@ -142,33 +134,17 @@ inline void Foam::linear<Specie>::operator+= const linear<Specie>& pf ) { - scalar molr1 = this->nMoles(); - + scalar Y1 = this->Y(); Specie::operator+=(pf); - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = pf.Y()/this->Y(); - psi_ = molr1*psi_ + molr2*pf.psi_; - rho0_ = molr1*rho0_ + molr2*pf.rho0_; -} - - -template<class Specie> -inline void Foam::linear<Specie>::operator-= -( - const linear<Specie>& pf -) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(pf); - - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); - - psi_ = molr1*psi_ - molr2*pf.psi_; - rho0_ = molr1*rho0_ - molr2*pf.rho0_; + psi_ = Y1*psi_ + Y2*pf.psi_; + rho0_ = Y1*rho0_ + Y2*pf.rho0_; + } } @@ -188,38 +164,33 @@ inline Foam::linear<Specie> Foam::operator+ const linear<Specie>& pf2 ) { - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; - - return rhoConst<Specie> + Specie sp ( static_cast<const Specie&>(pf1) - + static_cast<const Specie&>(pf2), - molr1*pf1.psi_ + molr2*pf2.psi_, - molr1*pf1.rho0_ + molr2*pf2.rho0_ + + static_cast<const Specie&>(pf2) ); -} - -template<class Specie> -inline Foam::linear<Specie> Foam::operator- -( - const linear<Specie>& pf1, - const linear<Specie>& pf2 -) -{ - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; + if (mag(sp.Y()) < SMALL) + { + return linear<Specie> + ( + sp, + pf1.psi_, + pf1.rho0_ + ); + } + else + { + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); - return rhoConst<Specie> - ( - static_cast<const Specie&>(pf1) - - static_cast<const Specie&>(pf2), - molr1*pf1.psi_ - molr2*pf2.psi_, - molr1*pf1.rho0_ - molr2*pf2.rho0_ - ); + return linear<Specie> + ( + sp, + Y1*pf1.psi_ + Y2*pf2.psi_, + Y1*pf1.rho0_ + Y2*pf2.rho0_ + ); + } } @@ -246,7 +217,21 @@ inline Foam::linear<Specie> Foam::operator== const linear<Specie>& pf2 ) { - return pf2 - pf1; + Specie sp + ( + static_cast<const Specie&>(pf1) + == static_cast<const Specie&>(pf2) + ); + + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); + + return linear<Specie> + ( + sp, + Y2*pf2.psi_ - Y1*pf1.psi_, + Y2*pf2.rho0_ - Y1*pf1.rho0_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.C b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.C index 612fc6f9eb0bab8e4263b3e8746c6a7c20f611d5..cf64fb75a845a51a7f8ccceb3950de5c82c95d8f 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.C +++ b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,17 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::perfectFluid<Specie>::perfectFluid(Istream& is) -: - Specie(is), - R_(readScalar(is)), - rho0_(readScalar(is)) -{ - is.check("perfectFluid<Specie>::perfectFluid(Istream& is)"); -} - - template<class Specie> Foam::perfectFluid<Specie>::perfectFluid(const dictionary& dict) : @@ -68,11 +57,7 @@ void Foam::perfectFluid<Specie>::write(Ostream& os) const template<class Specie> Foam::Ostream& Foam::operator<<(Ostream& os, const perfectFluid<Specie>& pf) { - os << static_cast<const Specie&>(pf) - << token::SPACE << pf.R_ - << token::SPACE << pf.rho0_; - - os.check("Ostream& operator<<(Ostream&, const perfectFluid<Specie>&)"); + pf.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.H b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.H index 5e4afe34181a03ed3df4832825c97c755fb3814b..2b63f20dd840c86617bb3fa440a7c7510d0ea182 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.H +++ b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluid.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,6 @@ inline perfectFluid<Specie> operator+ const perfectFluid<Specie>& ); -template<class Specie> -inline perfectFluid<Specie> operator- -( - const perfectFluid<Specie>&, - const perfectFluid<Specie>& -); - template<class Specie> inline perfectFluid<Specie> operator* ( @@ -116,9 +109,6 @@ public: const scalar rho0 ); - //- Construct from Istream - perfectFluid(Istream&); - //- Construct from dictionary perfectFluid(const dictionary& dict); @@ -128,9 +118,6 @@ public: //- Construct and return a clone inline autoPtr<perfectFluid> clone() const; - // Selector from Istream - inline static autoPtr<perfectFluid> New(Istream& is); - // Selector from dictionary inline static autoPtr<perfectFluid> New(const dictionary& dict); @@ -158,14 +145,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -173,8 +160,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -186,8 +173,6 @@ public: // Member operators inline void operator+=(const perfectFluid&); - inline void operator-=(const perfectFluid&); - inline void operator*=(const scalar); @@ -199,12 +184,6 @@ public: const perfectFluid& ); - friend perfectFluid operator- <Specie> - ( - const perfectFluid&, - const perfectFluid& - ); - friend perfectFluid operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H index f58bcaaed6a73fc43462bc7c1271154f80c7ae82..a16c06c151351470ed350003f5defe0d4f0e9b57 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H +++ b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,14 +65,6 @@ Foam::perfectFluid<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::perfectFluid<Specie>> -Foam::perfectFluid<Specie>::New(Istream& is) -{ - return autoPtr<perfectFluid<Specie>>(new perfectFluid<Specie>(is)); -} - - template<class Specie> inline Foam::autoPtr<Foam::perfectFluid<Specie>> Foam::perfectFluid<Specie>::New @@ -101,23 +93,23 @@ inline Foam::scalar Foam::perfectFluid<Specie>::rho(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::perfectFluid<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::perfectFluid<Specie>::H(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::perfectFluid<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::perfectFluid<Specie>::Cp(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::perfectFluid<Specie>::s(scalar p, scalar T) const +inline Foam::scalar Foam::perfectFluid<Specie>::S(scalar p, scalar T) const { - return -RR*log(p/Pstd); + return -this->R()*log(p/Pstd); } @@ -136,7 +128,7 @@ inline Foam::scalar Foam::perfectFluid<Specie>::Z(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::perfectFluid<Specie>::cpMcv(scalar p, scalar T) const +inline Foam::scalar Foam::perfectFluid<Specie>::CpMCv(scalar p, scalar T) const { return 0; } @@ -150,33 +142,17 @@ inline void Foam::perfectFluid<Specie>::operator+= const perfectFluid<Specie>& pf ) { - scalar molr1 = this->nMoles(); - + scalar Y1 = this->Y(); Specie::operator+=(pf); - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); - - R_ = 1.0/(molr1/R_ + molr2/pf.R_); - rho0_ = molr1*rho0_ + molr2*pf.rho0_; -} - + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = pf.Y()/this->Y(); -template<class Specie> -inline void Foam::perfectFluid<Specie>::operator-= -( - const perfectFluid<Specie>& pf -) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(pf); - - molr1 /= this->nMoles(); - scalar molr2 = pf.nMoles()/this->nMoles(); - - R_ = 1.0/(molr1/R_ - molr2/pf.R_); - rho0_ = molr1*rho0_ - molr2*pf.rho0_; + R_ = 1.0/(Y1/R_ + Y2/pf.R_); + rho0_ = Y1*rho0_ + Y2*pf.rho0_; + } } @@ -196,38 +172,33 @@ inline Foam::perfectFluid<Specie> Foam::operator+ const perfectFluid<Specie>& pf2 ) { - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; - - return perfectFluid<Specie> + Specie sp ( static_cast<const Specie&>(pf1) - + static_cast<const Specie&>(pf2), - 1.0/(molr1/pf1.R_ + molr2/pf2.R_), - molr1*pf1.rho0_ + molr2*pf2.rho0_ + + static_cast<const Specie&>(pf2) ); -} - -template<class Specie> -inline Foam::perfectFluid<Specie> Foam::operator- -( - const perfectFluid<Specie>& pf1, - const perfectFluid<Specie>& pf2 -) -{ - scalar nMoles = pf1.nMoles() + pf2.nMoles(); - scalar molr1 = pf1.nMoles()/nMoles; - scalar molr2 = pf2.nMoles()/nMoles; + if (mag(sp.Y()) < SMALL) + { + return perfectFluid<Specie> + ( + sp, + pf1.R_, + pf1.rho0_ + ); + } + else + { + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); - return perfectFluid<Specie> - ( - static_cast<const Specie&>(pf1) - - static_cast<const Specie&>(pf2), - 1.0/(molr1/pf1.R_ - molr2/pf2.R_), - molr1*pf1.rho0_ - molr2*pf2.rho0_ - ); + return perfectFluid<Specie> + ( + sp, + 1.0/(Y1/pf1.R_ + Y2/pf2.R_), + Y1*pf1.rho0_ + Y2*pf2.rho0_ + ); + } } @@ -254,7 +225,21 @@ inline Foam::perfectFluid<Specie> Foam::operator== const perfectFluid<Specie>& pf2 ) { - return pf2 - pf1; + Specie sp + ( + static_cast<const Specie&>(pf1) + == static_cast<const Specie&>(pf2) + ); + + const scalar Y1 = pf1.Y()/sp.Y(); + const scalar Y2 = pf2.Y()/sp.Y(); + + return perfectFluid<Specie> + ( + sp, + 1.0/(Y2/pf2.R_ - Y1/pf1.R_), + Y2*pf2.rho0_ - Y1*pf1.rho0_ + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C index 115f7ae7cd1133c73dc5a9b9876d3b8fa9b63ecf..8f9972cda63a164ca5de6c675730a28bc07d7572 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C +++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,15 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::perfectGas<Specie>::perfectGas(Istream& is) -: - Specie(is) -{ - is.check("perfectGas<Specie>::perfectGas(Istream& is)"); -} - - template<class Specie> Foam::perfectGas<Specie>::perfectGas(const dictionary& dict) : @@ -58,9 +49,7 @@ void Foam::perfectGas<Specie>::write(Ostream& os) const template<class Specie> Foam::Ostream& Foam::operator<<(Ostream& os, const perfectGas<Specie>& pg) { - os << static_cast<const Specie&>(pg); - - os.check("Ostream& operator<<(Ostream& os, const perfectGas<Specie>& st)"); + pg.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H index 4810a09c770720ee1f99749a3489e9c1180ee66c..6824609ded05ae7802a1fa360fa1dd1b739f498d 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,6 @@ inline perfectGas<Specie> operator+ const perfectGas<Specie>& ); -template<class Specie> -inline perfectGas<Specie> operator- -( - const perfectGas<Specie>&, - const perfectGas<Specie>& -); - template<class Specie> inline perfectGas<Specie> operator* ( @@ -103,9 +96,6 @@ public: //- Construct from components inline perfectGas(const Specie& sp); - //- Construct from Istream - perfectGas(Istream&); - //- Construct from dictionary perfectGas(const dictionary& dict); @@ -115,9 +105,6 @@ public: //- Construct and return a clone inline autoPtr<perfectGas> clone() const; - // Selector from Istream - inline static autoPtr<perfectGas> New(Istream& is); - // Selector from dictionary inline static autoPtr<perfectGas> New(const dictionary& dict); @@ -142,14 +129,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -157,8 +144,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -170,8 +157,6 @@ public: // Member operators inline void operator+=(const perfectGas&); - inline void operator-=(const perfectGas&); - inline void operator*=(const scalar); @@ -183,12 +168,6 @@ public: const perfectGas& ); - friend perfectGas operator- <Specie> - ( - const perfectGas&, - const perfectGas& - ); - friend perfectGas operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H index 67a75fdb4013aaa9a2cf75b6661e2773f65c5c9e..e3baad391aa5784614b3a70b7400bd542f45e549 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-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,14 +58,6 @@ Foam::perfectGas<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::perfectGas<Specie>> -Foam::perfectGas<Specie>::New(Istream& is) -{ - return autoPtr<perfectGas<Specie>>(new perfectGas<Specie>(is)); -} - - template<class Specie> inline Foam::autoPtr<Foam::perfectGas<Specie>> Foam::perfectGas<Specie>::New ( @@ -86,23 +78,23 @@ inline Foam::scalar Foam::perfectGas<Specie>::rho(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::perfectGas<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::perfectGas<Specie>::H(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::perfectGas<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::perfectGas<Specie>::Cp(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::perfectGas<Specie>::s(scalar p, scalar T) const +inline Foam::scalar Foam::perfectGas<Specie>::S(scalar p, scalar T) const { - return -RR*log(p/Pstd); + return -this->R()*log(p/Pstd); } @@ -121,9 +113,9 @@ inline Foam::scalar Foam::perfectGas<Specie>::Z(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::perfectGas<Specie>::cpMcv(scalar p, scalar T) const +inline Foam::scalar Foam::perfectGas<Specie>::CpMCv(scalar p, scalar T) const { - return RR; + return this->R(); } @@ -136,13 +128,6 @@ inline void Foam::perfectGas<Specie>::operator+=(const perfectGas<Specie>& pg) } -template<class Specie> -inline void Foam::perfectGas<Specie>::operator-=(const perfectGas<Specie>& pg) -{ - Specie::operator-=(pg); -} - - template<class Specie> inline void Foam::perfectGas<Specie>::operator*=(const scalar s) { @@ -161,23 +146,7 @@ inline Foam::perfectGas<Specie> Foam::operator+ { return perfectGas<Specie> ( - static_cast<const Specie&>(pg1) - + static_cast<const Specie&>(pg2) - ); -} - - -template<class Specie> -inline Foam::perfectGas<Specie> Foam::operator- -( - const perfectGas<Specie>& pg1, - const perfectGas<Specie>& pg2 -) -{ - return perfectGas<Specie> - ( - static_cast<const Specie&>(pg1) - - static_cast<const Specie&>(pg2) + static_cast<const Specie&>(pg1) + static_cast<const Specie&>(pg2) ); } @@ -200,7 +169,10 @@ inline Foam::perfectGas<Specie> Foam::operator== const perfectGas<Specie>& pg2 ) { - return pg2 - pg1; + return perfectGas<Specie> + ( + static_cast<const Specie&>(pg1) == static_cast<const Specie&>(pg2) + ); } diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C index 895ec1859f96f8ab57b9811825347cd278ddcc28..f7ccfdb5a5025162ec0313257bb99a4a09b1c00b 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.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) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,16 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Specie> -Foam::rhoConst<Specie>::rhoConst(Istream& is) -: - Specie(is), - rho_(readScalar(is)) -{ - is.check("rhoConst<Specie>::rhoConst(Istream& is)"); -} - - template<class Specie> Foam::rhoConst<Specie>::rhoConst(const dictionary& dict) : @@ -65,10 +55,7 @@ void Foam::rhoConst<Specie>::write(Ostream& os) const template<class Specie> Foam::Ostream& Foam::operator<<(Ostream& os, const rhoConst<Specie>& ico) { - os << static_cast<const Specie&>(ico) - << token::SPACE << ico.rho_; - - os.check("Ostream& operator<<(Ostream& os, const rhoConst<Specie>& ico)"); + ico.write(os); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H index 7343d2e600549614559574dd6ec586d9d8b4e2d1..a1b2489931375ff18ff033ee2e3d9f8d6c75aa1f 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.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) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,6 @@ inline rhoConst<Specie> operator+ const rhoConst<Specie>& ); -template<class Specie> -inline rhoConst<Specie> operator- -( - const rhoConst<Specie>&, - const rhoConst<Specie>& -); - template<class Specie> inline rhoConst<Specie> operator* ( @@ -108,9 +101,6 @@ public: //- Construct from components inline rhoConst(const Specie& sp, const scalar rho); - //- Construct from Istream - rhoConst(Istream&); - //- Construct from dictionary rhoConst(const dictionary& dict); @@ -120,9 +110,6 @@ public: //- Construct and return a clone inline autoPtr<rhoConst> clone() const; - // Selector from Istream - inline static autoPtr<rhoConst> New(Istream& is); - // Member functions @@ -144,14 +131,14 @@ public: //- Return density [kg/m^3] inline scalar rho(scalar p, scalar T) const; - //- Return enthalpy departure [J/kmol] - inline scalar h(const scalar p, const scalar T) const; + //- Return enthalpy departure [J/kg] + inline scalar H(const scalar p, const scalar T) const; - //- Return cp departure [J/(kmol K] - inline scalar cp(scalar p, scalar T) const; + //- Return Cp departure [J/(kg K] + inline scalar Cp(scalar p, scalar T) const; - //- Return entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Return entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; //- Return compressibility rho/p [s^2/m^2] inline scalar psi(scalar p, scalar T) const; @@ -159,8 +146,8 @@ 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; + //- Return (Cp - Cv) [J/(kg K] + inline scalar CpMCv(scalar p, scalar T) const; // IO @@ -172,8 +159,6 @@ public: // Member operators inline void operator+=(const rhoConst&); - inline void operator-=(const rhoConst&); - inline void operator*=(const scalar); @@ -185,12 +170,6 @@ public: const rhoConst& ); - friend rhoConst operator- <Specie> - ( - const rhoConst&, - const rhoConst& - ); - friend rhoConst operator* <Specie> ( const scalar s, diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H index 09f884b8b7bc43bd6eee5f594935ca6183ae414a..ee41587e8a5e20f481bc7bdfe1354c24eee99751 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.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) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,14 +61,6 @@ Foam::rhoConst<Specie>::clone() const } -template<class Specie> -inline Foam::autoPtr<Foam::rhoConst<Specie>> -Foam::rhoConst<Specie>::New(Istream& is) -{ - return autoPtr<rhoConst<Specie>>(new rhoConst<Specie>(is)); -} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Specie> @@ -79,21 +71,21 @@ inline Foam::scalar Foam::rhoConst<Specie>::rho(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::rhoConst<Specie>::h(scalar p, scalar T) const +inline Foam::scalar Foam::rhoConst<Specie>::H(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::rhoConst<Specie>::cp(scalar p, scalar T) const +inline Foam::scalar Foam::rhoConst<Specie>::Cp(scalar p, scalar T) const { return 0; } template<class Specie> -inline Foam::scalar Foam::rhoConst<Specie>::s(scalar p, scalar T) const +inline Foam::scalar Foam::rhoConst<Specie>::S(scalar p, scalar T) const { return 0; } @@ -114,7 +106,7 @@ inline Foam::scalar Foam::rhoConst<Specie>::Z(scalar p, scalar T) const template<class Specie> -inline Foam::scalar Foam::rhoConst<Specie>::cpMcv(scalar p, scalar T) const +inline Foam::scalar Foam::rhoConst<Specie>::CpMCv(scalar p, scalar T) const { return 0; } @@ -125,28 +117,16 @@ inline Foam::scalar Foam::rhoConst<Specie>::cpMcv(scalar p, scalar T) const template<class Specie> inline void Foam::rhoConst<Specie>::operator+=(const rhoConst<Specie>& ico) { - scalar molr1 = this->nMoles(); - + scalar Y1 = this->Y(); Specie::operator+=(ico); - molr1 /= this->nMoles(); - scalar molr2 = ico.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ico.Y()/this->Y(); - rho_ = molr1*rho_ + molr2*ico.rho_; -} - - -template<class Specie> -inline void Foam::rhoConst<Specie>::operator-=(const rhoConst<Specie>& ico) -{ - scalar molr1 = this->nMoles(); - - Specie::operator-=(ico); - - molr1 /= this->nMoles(); - scalar molr2 = ico.nMoles()/this->nMoles(); - - rho_ = molr1*rho_ - molr2*ico.rho_; + rho_ = Y1*rho_ + Y2*ico.rho_; + } } @@ -166,36 +146,31 @@ inline Foam::rhoConst<Specie> Foam::operator+ const rhoConst<Specie>& ico2 ) { - scalar nMoles = ico1.nMoles() + ico2.nMoles(); - scalar molr1 = ico1.nMoles()/nMoles; - scalar molr2 = ico2.nMoles()/nMoles; - - return rhoConst<Specie> + Specie sp ( static_cast<const Specie&>(ico1) - + static_cast<const Specie&>(ico2), - molr1*ico1.rho_ + molr2*ico2.rho_ + + static_cast<const Specie&>(ico2) ); -} + if (mag(sp.Y()) < SMALL) + { + return rhoConst<Specie> + ( + sp, + ico1.rho_ + ); + } + else + { + const scalar Y1 = ico1.Y()/sp.Y(); + const scalar Y2 = ico2.Y()/sp.Y(); -template<class Specie> -inline Foam::rhoConst<Specie> Foam::operator- -( - const rhoConst<Specie>& ico1, - const rhoConst<Specie>& ico2 -) -{ - scalar nMoles = ico1.nMoles() + ico2.nMoles(); - scalar molr1 = ico1.nMoles()/nMoles; - scalar molr2 = ico2.nMoles()/nMoles; - - return rhoConst<Specie> - ( - static_cast<const Specie&>(ico1) - - static_cast<const Specie&>(ico2), - molr1*ico1.rho_ - molr2*ico2.rho_ - ); + return rhoConst<Specie> + ( + sp, + Y1*ico1.rho_ + Y2*ico2.rho_ + ); + } } @@ -217,7 +192,20 @@ inline Foam::rhoConst<Specie> Foam::operator== const rhoConst<Specie>& ico2 ) { - return ico2 - ico1; + Specie sp + ( + static_cast<const Specie&>(ico1) + == static_cast<const Specie&>(ico2) + ); + + const scalar Y1 = ico1.Y()/sp.Y(); + const scalar Y2 = ico2.Y()/sp.Y(); + + return rhoConst<Specie> + ( + sp, + Y2*ico2.rho_ - Y1*ico1.rho_ + ); } diff --git a/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.C b/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.C index c691af1897354be810c1b56dbdc32882acb7497b..32a301fab9ec14fa33faeb173e9dd8c675fd3df7 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,25 +45,6 @@ IrreversibleReaction {} -template -< - template<class> class ReactionType, - class ReactionThermo, - class ReactionRate -> -Foam::IrreversibleReaction<ReactionType, ReactionThermo, ReactionRate>:: -IrreversibleReaction -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -: - ReactionType<ReactionThermo>(species, thermoDatabase, is), - k_(species, is) -{} - - template < template<class> class ReactionType, diff --git a/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.H b/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.H index df99c536a9f862f978604d040d3324c1f192fcef..da4c282154f30d05eee00fa7aaeeb92fcfde9b41 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/IrreversibleReaction/IrreversibleReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -106,14 +106,6 @@ public: const speciesTable& species ); - //- Construct from Istream - IrreversibleReaction - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - //- Construct from dictionary IrreversibleReaction ( diff --git a/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.C b/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.C index f2f8b175bc04d8dd2afb7c732e1eb9923c658823..255cf2b93fd9b8c3f249f54c98d12993c466d1a5 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,32 +52,6 @@ NonEquilibriumReversibleReaction {} - -template -< - template<class> class ReactionType, - class ReactionThermo, - class ReactionRate -> -Foam::NonEquilibriumReversibleReaction -< - ReactionType, - ReactionThermo, - ReactionRate ->:: -NonEquilibriumReversibleReaction -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -: - ReactionType<ReactionThermo>(species, thermoDatabase, is), - fk_(species, is), - rk_(species, is) -{} - - template < template<class> class ReactionType, diff --git a/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.H b/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.H index 5d816b023d0107554cd582b0142b0514e5db37b7..47c3a5c1ce2fd87b99554b391800fb04bf6ad19d 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/NonEquilibriumReversibleReaction/NonEquilibriumReversibleReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,14 +100,6 @@ public: const speciesTable& species ); - //- Construct from Istream - NonEquilibriumReversibleReaction - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - //- Construct from dictionary NonEquilibriumReversibleReaction ( diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C index 6df600099fa13f57f66d7bc133caa2df2ce59552..e994ff1dce0825a8625875b4e5ffec744fd1559b 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -111,29 +111,37 @@ void Foam::Reaction<ReactionThermo>::setThermo const HashPtrTable<ReactionThermo>& thermoDatabase ) { - if (rhs_.size() > 0) - { - ReactionThermo::thermoType::operator= - ( - rhs_[0].stoichCoeff*(*thermoDatabase[species_[rhs_[0].index]]) - ); + typename ReactionThermo::thermoType rhsThermo + ( + rhs_[0].stoichCoeff + *(*thermoDatabase[species_[rhs_[0].index]]).W() + *(*thermoDatabase[species_[rhs_[0].index]]) + ); - for (label i=1; i<rhs_.size(); ++i) - { - this->operator+= - ( - rhs_[i].stoichCoeff*(*thermoDatabase[species_[rhs_[i].index]]) - ); - } + for (label i=1; i<rhs_.size(); ++i) + { + rhsThermo += + rhs_[i].stoichCoeff + *(*thermoDatabase[species_[rhs_[i].index]]).W() + *(*thermoDatabase[species_[rhs_[i].index]]); } - forAll(lhs_, i) + typename ReactionThermo::thermoType lhsThermo + ( + lhs_[0].stoichCoeff + *(*thermoDatabase[species_[lhs_[0].index]]).W() + *(*thermoDatabase[species_[lhs_[0].index]]) + ); + + for (label i=1; i<lhs_.size(); ++i) { - this->operator-= - ( - lhs_[i].stoichCoeff*(*thermoDatabase[species_[lhs_[i].index]]) - ); + lhsThermo += + lhs_[i].stoichCoeff + *(*thermoDatabase[species_[lhs_[i].index]]).W() + *(*thermoDatabase[species_[lhs_[i].index]]); } + + ReactionThermo::thermoType::operator=(lhsThermo == rhsThermo); } @@ -312,23 +320,6 @@ void Foam::Reaction<ReactionThermo>::setLRhs } -template<class ReactionThermo> -Foam::Reaction<ReactionThermo>::Reaction -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -: - ReactionThermo::thermoType(*thermoDatabase[species[0]]), - name_("un-named-reaction" + Foam::name(getNewReactionID())), - species_(species) -{ - setLRhs(is, species, lhs_, rhs_); - setThermo(thermoDatabase); -} - - template<class ReactionThermo> Foam::Reaction<ReactionThermo>::Reaction ( @@ -354,50 +345,6 @@ Foam::Reaction<ReactionThermo>::Reaction // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // -template<class ReactionThermo> -Foam::autoPtr<Foam::Reaction<ReactionThermo>> -Foam::Reaction<ReactionThermo>::New -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -{ - if (is.eof()) - { - FatalIOErrorInFunction - ( - is - ) << "Reaction type not specified" << nl << nl - << "Valid Reaction types are :" << nl - << IstreamConstructorTablePtr_->sortedToc() - << exit(FatalIOError); - } - - const word reactionTypeName(is); - - typename IstreamConstructorTable::iterator cstrIter - = IstreamConstructorTablePtr_->find(reactionTypeName); - - if (!cstrIter.found()) - { - FatalIOErrorInFunction - ( - is - ) << "Unknown reaction type " - << reactionTypeName << nl << nl - << "Valid reaction types are :" << nl - << IstreamConstructorTablePtr_->sortedToc() - << exit(FatalIOError); - } - - return autoPtr<Reaction<ReactionThermo>> - ( - cstrIter()(species, thermoDatabase, is) - ); -} - - template<class ReactionThermo> Foam::autoPtr<Foam::Reaction<ReactionThermo>> Foam::Reaction<ReactionThermo>::New diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H index ead361e11010bfb066fc5dc90fdb27b590ce5e4a..d96134aac9523d59d4b0fdb77db2663123026eab 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -164,19 +164,6 @@ public: // Declare run-time constructor selection tables - declareRunTimeSelectionTable - ( - autoPtr, - Reaction, - Istream, - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ), - (species, thermoDatabase, is) - ); - declareRunTimeSelectionTable ( autoPtr, @@ -191,36 +178,6 @@ public: ); - // Public classes - - //- Class used for the read-construction of PtrLists of reaction - class iNew - { - const speciesTable& species_; - const HashPtrTable<ReactionThermo>& thermoDatabase_; - - public: - - iNew - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase - ) - : - species_(species), - thermoDatabase_(thermoDatabase) - {} - - autoPtr<Reaction> operator()(Istream& is) const - { - return autoPtr<Reaction> - ( - Reaction::New(species_, thermoDatabase_, is) - ); - } - }; - - // Constructors //- Construct from components @@ -235,14 +192,6 @@ public: //- Construct as copy given new speciesTable Reaction(const Reaction<ReactionThermo>&, const speciesTable& species); - //- Construct from Istream - Reaction - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - //- Construct from dictionary Reaction ( @@ -275,14 +224,6 @@ public: // Selectors - //- Return a pointer to new patchField created on freestore from input - static autoPtr<Reaction<ReactionThermo>> New - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - //- Return a pointer to new patchField created on freestore from dict static autoPtr<Reaction<ReactionThermo>> New ( @@ -312,10 +253,10 @@ public: virtual const List<specieCoeffs>& grhs() const; virtual const List<specieCoeffs>& glhs() const; - // - Access to specie list + //- Access to specie list const speciesTable& species() const; - // - Access to gas specie list + //- Access to gas specie list virtual const speciesTable& gasSpecies() const; //- Construct the left- and right-hand-side reaction coefficients diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H index 6dece80ba78eb90da31f6f5b52ebc56d953e20f0..55287cbfd6cd01fc0a4c0572873cfb12b6749dfe 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,9 +67,8 @@ Reaction<ReactionThermo>::rhs() const template<class ReactionThermo> inline Ostream& operator<<(Ostream& os, const Reaction<ReactionThermo>& r) { - OStringStream reaction; - os << r.reactionStr(reaction)<< token::END_STATEMENT <<nl; - return os; + r.write(os); + return os; } diff --git a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C index ca0334107db14483e16453af7272140e72827243..6d3f2539fc3459496a136072502884797555aa77 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,25 +60,6 @@ Foam::ReactionList<ThermoType>::ReactionList } -template<class ThermoType> -Foam::ReactionList<ThermoType>::ReactionList -( - const speciesTable& species, - const HashPtrTable<ThermoType>& thermoDb, - const fileName& fName -) -: - SLPtrList<Reaction<ThermoType>> - ( - dictionary(IFstream(fName)()).lookup("reactions"), - Reaction<ThermoType>::iNew(species, thermoDb) - ), - species_(species), - thermoDb_(thermoDb), - dict_(dictionary::null) -{} - - template<class ThermoType> Foam::ReactionList<ThermoType>::ReactionList(const ReactionList& reactions) : diff --git a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.H b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.H index c9a4b2c00158ebfd12d659cf094a0cc7a50c50d7..6251fda9e4f328992fdf01a057691382cf235908 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,14 +93,6 @@ public: const dictionary& dict ); - //- Construct from file using (Istream) - ReactionList - ( - const speciesTable& species, - const HashPtrTable<ThermoType>& thermoDatabase, - const fileName& fName - ); - //- Construct copy ReactionList(const ReactionList<ThermoType>& reactions); diff --git a/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.C b/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.C index fb62950ff545ef184088691bd4f1fec0d1debf5f..2183986e261ce8ad01ad5916a0162dbef500a984 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,25 +45,6 @@ ReversibleReaction {} -template -< - template<class> class ReactionType, - class ReactionThermo, - class ReactionRate -> -Foam::ReversibleReaction<ReactionType, ReactionThermo, ReactionRate>:: -ReversibleReaction -( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is -) -: - ReactionType<ReactionThermo>(species, thermoDatabase, is), - k_(species, is) -{} - - template < template<class> class ReactionType, diff --git a/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.H b/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.H index ea8db448da440dc1afa4b3da37b0e094bf56a244..f2d957bf85472a711845daf560737ccfe02f5f53 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/ReversibleReaction/ReversibleReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -106,14 +106,6 @@ public: const speciesTable& species ); - //- Construct from Istream - ReversibleReaction - ( - const speciesTable& species, - const HashPtrTable<ReactionThermo>& thermoDatabase, - Istream& is - ); - //- Construct from dictionary ReversibleReaction ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRate.H index deb1bb2ebde28c3bfb4738af22d156251caa0173..fbe89154bae3850fa2799875ae6cec8beec95470 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,13 +77,6 @@ public: const scalar Ta ); - //- Construct from Istream - inline ArrheniusReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline ArrheniusReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRateI.H index 273e15fd9411ad4bc94340812e1ab26297b32a9c..49ec48c71e47ae0c3b6b3c049b20be3a9d8c629d 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/ArrheniusReactionRate/ArrheniusReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,20 +38,6 @@ inline Foam::ArrheniusReactionRate::ArrheniusReactionRate {} -inline Foam::ArrheniusReactionRate::ArrheniusReactionRate -( - const speciesTable&, - Istream& is -) -: - A_(readScalar(is.readBegin("ArrheniusReactionRate(Istream&)"))), - beta_(readScalar(is)), - Ta_(readScalar(is)) -{ - is.readEnd("ArrheniusReactionRate(Istream&)"); -} - - inline Foam::ArrheniusReactionRate::ArrheniusReactionRate ( const speciesTable&, @@ -103,9 +89,7 @@ inline Foam::Ostream& Foam::operator<< const ArrheniusReactionRate& arr ) { - os << token::BEGIN_LIST - << arr.A_ << token::SPACE << arr.beta_ << token::SPACE << arr.Ta_ - << token::END_LIST; + arr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRate.H index 75a8fa507e8b6e8dca0824e8ae9336e7b9566ea7..87eab0d403f93ceae574cece5088f3df31efd8eb 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,13 +84,6 @@ public: const thirdBodyEfficiencies& tbes ); - //- Construct from Istream - inline ChemicallyActivatedReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline ChemicallyActivatedReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRateI.H index 952ceaa74037cd410453daf1c89e625632c16427..3e54f9a6ab6f56ae884c6f4aa977e300f6608a1d 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/ChemicallyActivatedReactionRate/ChemicallyActivatedReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,26 +45,6 @@ inline Foam::ChemicallyActivatedReactionRate {} -template<class ReactionRate, class ChemicallyActivationFunction> -inline Foam::ChemicallyActivatedReactionRate -< - ReactionRate, - ChemicallyActivationFunction ->::ChemicallyActivatedReactionRate -( - const speciesTable& species, - Istream& is -) -: - k0_(species, is.readBegin("ChemicallyActivatedReactionRate(Istream&)")), - kInf_(species, is), - F_(is), - thirdBodyEfficiencies_(species, is) -{ - is.readEnd("ChemicallyActivatedReactionRate(Istream&)"); -} - - template<class ReactionRate, class ChemicallyActivationFunction> inline Foam::ChemicallyActivatedReactionRate < @@ -128,9 +108,7 @@ inline Foam::Ostream& Foam::operator<< <ReactionRate, ChemicallyActivationFunction>& carr ) { - os << token::BEGIN_LIST - << carr.k0_ << token::SPACE << carr.kInf_ << token::SPACE << carr.F_ - << token::END_LIST; + carr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRate.H index d668f214d04e6a279aa18de71bec2ef1bf1bbe7e..e89aa89498ec38b3ddba09c85fe4b4b6101ce134 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -83,13 +83,6 @@ public: const thirdBodyEfficiencies& tbes ); - //- Construct from Istream - inline FallOffReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline FallOffReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRateI.H index 954816aca38d516c12d8885ab389c1eb328342be..fff348d4810fac34d746bfba8cfbc66bcd383c86 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/FallOffReactionRate/FallOffReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,23 +42,6 @@ FallOffReactionRate {} -template<class ReactionRate, class FallOffFunction> -inline Foam::FallOffReactionRate<ReactionRate, FallOffFunction>:: -FallOffReactionRate -( - const speciesTable& species, - Istream& is -) -: - k0_(species, is.readBegin("FallOffReactionRate(Istream&)")), - kInf_(species, is), - F_(is), - thirdBodyEfficiencies_(species, is) -{ - is.readEnd("FallOffReactionRate(Istream&)"); -} - - template<class ReactionRate, class FallOffFunction> inline Foam::FallOffReactionRate<ReactionRate, FallOffFunction>:: FallOffReactionRate @@ -137,12 +120,7 @@ inline Foam::Ostream& Foam::operator<< const FallOffReactionRate<ReactionRate, FallOffFunction>& forr ) { - os << token::BEGIN_LIST - << forr.k0_ << token::SPACE - << forr.kInf_ << token::SPACE - << forr.F_ << token::SPACE - << forr.thirdBodyEfficiencies_ - << token::END_LIST; + forr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRate.H index bf3d10c6b9007330d0337bfaa8b5259a74306b1a..ab37e054fe145f7adeacb2550f6914c6c7409004 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,13 +80,6 @@ public: const FixedList<scalar, nb_> b ); - //- Construct from Istream - inline JanevReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline JanevReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRateI.H index 381a94e5875ba8a4f345b4db5b87d66fe0b67707..cc76c2c2c5ea82754519657092eef9e1bbb69d8c 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/JanevReactionRate/JanevReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,21 +40,6 @@ inline Foam::JanevReactionRate::JanevReactionRate {} -inline Foam::JanevReactionRate::JanevReactionRate -( - const speciesTable&, - Istream& is -) -: - A_(readScalar(is.readBegin("JanevReactionRate(Istream&)"))), - beta_(readScalar(is)), - Ta_(readScalar(is)), - b_(is) -{ - is.readEnd("JanevReactionRate(Istream&)"); -} - - inline Foam::JanevReactionRate::JanevReactionRate ( const speciesTable&, @@ -119,16 +104,7 @@ inline Foam::Ostream& Foam::operator<< const JanevReactionRate& jrr ) { - os << token::BEGIN_LIST - << jrr.A_ << token::SPACE << jrr.beta_ << token::SPACE << jrr.Ta_; - - for (int n=0; n<JanevReactionRate::nb_; n++) - { - os << token::SPACE << jrr.b_[n]; - } - - os << token::END_LIST; - + jrr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRate.H index cba8b20cb8a8262ba6d7056efd5e20fd35ff37a7..c353475be7a882b06424226b7597a0a02eadd288 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -79,13 +79,6 @@ public: const scalar C ); - //- Construct from Istream - inline LandauTellerReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline LandauTellerReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRateI.H index d3b1b79ec7e49043969c7956783a7f2b55da0990..7d2c9ecd791b158a1ae644fdfe4010bddc3bd725 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/LandauTellerReactionRate/LandauTellerReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,22 +42,6 @@ inline Foam::LandauTellerReactionRate::LandauTellerReactionRate {} -inline Foam::LandauTellerReactionRate::LandauTellerReactionRate -( - const speciesTable&, - Istream& is -) -: - A_(readScalar(is.readBegin("LandauTellerReactionRate(Istream&)"))), - beta_(readScalar(is)), - Ta_(readScalar(is)), - B_(readScalar(is)), - C_(readScalar(is)) -{ - is.readEnd("LandauTellerReactionRate(Istream&)"); -} - - inline Foam::LandauTellerReactionRate::LandauTellerReactionRate ( const speciesTable&, @@ -130,10 +114,7 @@ inline Foam::Ostream& Foam::operator<< const LandauTellerReactionRate& arr ) { - os << token::BEGIN_LIST - << arr.A_ << token::SPACE << arr.beta_ << token::SPACE << arr.Ta_ - << token::SPACE << arr.B_ << token::SPACE << arr.C_ - << token::END_LIST; + arr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRate.H index e96f9ea20cc7880e68d6083faa00a78c57f68af8..1d1c5dd337da086fa9affac298bbf961f528085e 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -81,13 +81,6 @@ public: const label no ); - //- Construct from Istream - inline LangmuirHinshelwoodReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline LangmuirHinshelwoodReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRateI.H index 26fd07bfada3f347694aa3b20f914129661e92aa..d0b13587bf48a03e4ba6e4729a5ac91df08f4655 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/LangmuirHinshelwood/LangmuirHinshelwoodReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,27 +49,6 @@ inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate } -inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate -( - const speciesTable& st, - Istream& is -) -: - co_(st["CO"]), - c3h6_(st["C3H6"]), - no_(st["NO"]) -{ - is.readBegin("LangmuirHinshelwoodReactionRate(Istream&)"); - - for (int i=0; i<n_; i++) - { - is >> A_[i] >> Ta_[i]; - } - - is.readEnd("LangmuirHinshelwoodReactionRate(Istream&)"); -} - - inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate ( const speciesTable& st, @@ -130,16 +109,7 @@ inline Foam::Ostream& Foam::operator<< const LangmuirHinshelwoodReactionRate& lhrr ) { - os << token::BEGIN_LIST; - - for (int i=0; i<LangmuirHinshelwoodReactionRate::n_; i++) - { - os << token::SPACE - << '(' << lhrr.A_[i] << token::SPACE << lhrr.Ta_[i] << ')'; - } - - os << token::END_LIST; - + lhrr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunction.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunction.H index 298ca332c5ec1528d54f4996afcb1447036832c2..76c2f3acc96019c504a4fd10ab980af161167132 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunction.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunction.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,9 +62,6 @@ public: //- Construct null inline LindemannFallOffFunction(); - //- Construct from Istream - inline LindemannFallOffFunction(Istream&); - //- Construct from dictionary inline LindemannFallOffFunction(const dictionary& dict); diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunctionI.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunctionI.H index 1dd6ba4b5582ea926caf277e6c5337ad290f1932..8421898b64fea715d32b24e9b3085c2c87eb555b 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunctionI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/LindemannFallOffFunction/LindemannFallOffFunctionI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,10 +29,6 @@ inline Foam::LindemannFallOffFunction::LindemannFallOffFunction() {} -inline Foam::LindemannFallOffFunction::LindemannFallOffFunction(Istream&) -{} - - inline Foam::LindemannFallOffFunction::LindemannFallOffFunction ( const dictionary& dict diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunction.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunction.H index 60e9bdfbd190192da0f329c59a963b3966b8bbe0..2a73db4be84fa097d612882c759c5d624b07d27f 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunction.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunction.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,9 +73,6 @@ public: const scalar e ); - //- Construct from Istream - inline SRIFallOffFunction(Istream&); - //- Construct from dictionary inline SRIFallOffFunction(const dictionary& dict); diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunctionI.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunctionI.H index 6c3dd203d71a4f4103c402f8ea2e336fd603c69d..68cce0350da547c5abee5108da1bc10e1c319a2a 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunctionI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/SRIFallOffFunction/SRIFallOffFunctionI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,18 +42,6 @@ inline Foam::SRIFallOffFunction::SRIFallOffFunction {} -inline Foam::SRIFallOffFunction::SRIFallOffFunction(Istream& is) -: - a_(readScalar(is.readBegin("SRIFallOffFunction(Istream&)"))), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)) -{ - is.readEnd("SRIFallOffFunction(Istream&)"); -} - - inline Foam::SRIFallOffFunction::SRIFallOffFunction(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), @@ -95,14 +83,7 @@ inline Foam::Ostream& Foam::operator<< const Foam::SRIFallOffFunction& srifof ) { - os << token::BEGIN_LIST - << srifof.a_ - << token::SPACE << srifof.b_ - << token::SPACE << srifof.c_ - << token::SPACE << srifof.d_ - << token::SPACE << srifof.e_ - << token::END_LIST; - + srifof.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunction.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunction.H index ba14378315f31a654b7970662f261bdbcd4582b0..18b39038fbeca376e78e5621328f38613faaff74 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunction.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunction.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,9 +73,6 @@ public: const scalar Tss ); - //- Construct from Istream - inline TroeFallOffFunction(Istream&); - //- Construct from dictionary inline TroeFallOffFunction(const dictionary& dict); diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunctionI.H b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunctionI.H index 74a8e0a17da88fac71d776c64e5f3106f295ce7e..1913985c18de2017f72a3e9548f527afe1213b96 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunctionI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/fallOffFunctions/TroeFallOffFunction/TroeFallOffFunctionI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,17 +40,6 @@ inline Foam::TroeFallOffFunction::TroeFallOffFunction {} -inline Foam::TroeFallOffFunction::TroeFallOffFunction(Istream& is) -: - alpha_(readScalar(is.readBegin("TroeFallOffFunction(Istream&)"))), - Tsss_(readScalar(is)), - Ts_(readScalar(is)), - Tss_(readScalar(is)) -{ - is.readEnd("TroeFallOffFunction(Istream&)"); -} - - inline Foam::TroeFallOffFunction::TroeFallOffFunction(const dictionary& dict) : alpha_(readScalar(dict.lookup("alpha"))), @@ -103,13 +92,7 @@ inline Foam::Ostream& Foam::operator<< const Foam::TroeFallOffFunction& tfof ) { - os << token::BEGIN_LIST - << tfof.alpha_ - << token::SPACE << tfof.Tsss_ - << token::SPACE << tfof.Ts_ - << token::SPACE << tfof.Tss_ - << token::END_LIST; - + tfof.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRate.H index 47dde38b49ccced7a67a4c426de63174df68a595..ec8abe2cdc12d245af3f74ff2cec0fa42f2b541f 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,7 +64,7 @@ public: inline infiniteReactionRate (); - //- Construct from Istream + //- Construct from dictionary inline infiniteReactionRate ( const speciesTable& species, diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRateI.H index 7d95e55395f2b807eb425ddcf991cd9e3639286e..9186034511840043a3108d30fbf8c35a9c7347d3 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/infiniteReactionRate/infiniteReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,8 +60,7 @@ inline Foam::Ostream& Foam::operator<< const infiniteReactionRate& rr ) { - os << token::BEGIN_LIST - << token::END_LIST; + rr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRate.H index a8561815be6ffb4f6f79d3d11854f2880f2003af..f12d3ba0d0600173a2547789d64081c801531604 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,13 +80,6 @@ public: const FixedList<scalar, nCoeff_> coeffs ); - //- Construct from Istream - inline powerSeriesReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline powerSeriesReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRateI.H index c14d32964161491845dc841688bf4eaed6ba8daa..fcf9b808c3bcc6c91d6a866aefe02d7523b25825 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/powerSeries/powerSeriesReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,21 +40,6 @@ inline Foam::powerSeriesReactionRate::powerSeriesReactionRate {} -inline Foam::powerSeriesReactionRate::powerSeriesReactionRate -( - const speciesTable&, - Istream& is -) -: - A_(readScalar(is.readBegin("powerSeriesReactionRate(Istream&)"))), - beta_(readScalar(is)), - Ta_(readScalar(is)), - coeffs_(is) -{ - is.readEnd("powerSeriesReactionRate(Istream&)"); -} - - inline Foam::powerSeriesReactionRate::powerSeriesReactionRate ( const speciesTable&, @@ -112,16 +97,7 @@ inline Foam::Ostream& Foam::operator<< const powerSeriesReactionRate& psrr ) { - os << token::BEGIN_LIST - << psrr.A_ << token::SPACE << psrr.beta_ << token::SPACE << psrr.Ta_; - - for (int n=0; n<powerSeriesReactionRate::nCoeff_; n++) - { - os << token::SPACE << psrr.coeffs_[n]; - } - - os << token::END_LIST; - + psrr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRate.H b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRate.H index 9e7599ac73406bde61ee71e976dd85a7fc57694b..c12d914c6344b0d56bfd5969b41707552d45f8de 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRate.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,13 +76,6 @@ public: const thirdBodyEfficiencies& tbes ); - //- Construct from Istream - inline thirdBodyArrheniusReactionRate - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline thirdBodyArrheniusReactionRate ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRateI.H b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRateI.H index 0cba38cee00d28b338307f8151aa3e33c0fd2669..d9b39b61a59ad3dc566a737862e8656750711f12 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRateI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyArrheniusReactionRate/thirdBodyArrheniusReactionRateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,23 +38,6 @@ inline Foam::thirdBodyArrheniusReactionRate::thirdBodyArrheniusReactionRate {} -inline Foam::thirdBodyArrheniusReactionRate::thirdBodyArrheniusReactionRate -( - const speciesTable& species, - Istream& is -) -: - ArrheniusReactionRate - ( - species, - is.readBegin("thirdBodyArrheniusReactionRate(Istream&)") - ), - thirdBodyEfficiencies_(species, is) -{ - is.readEnd("thirdBodyArrheniusReactionRate(Istream&)"); -} - - inline Foam::thirdBodyArrheniusReactionRate::thirdBodyArrheniusReactionRate ( const speciesTable& species, @@ -98,10 +81,7 @@ inline Foam::Ostream& Foam::operator<< const thirdBodyArrheniusReactionRate& arr ) { - os << token::BEGIN_LIST - << static_cast<const ArrheniusReactionRate&>(arr) - << token::SPACE << arr.thirdBodyEfficiencies_ - << token::END_LIST; + arr.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficiencies.H b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficiencies.H index 8b164da17165f33381ab3837e570f4fc56a82f76..62b80cb37b6b72bca17cfc34466328b8f80fa1b3 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficiencies.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficiencies.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,13 +73,6 @@ public: const scalarList& efficiencies ); - //- Construct from Istream - inline thirdBodyEfficiencies - ( - const speciesTable& species, - Istream& is - ); - //- Construct from dictionary inline thirdBodyEfficiencies ( diff --git a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficienciesI.H b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficienciesI.H index 59c25bcf4b39efda9b07b0908eedd300dc4af214..97a0e8eeed99e0d17827857c61c1a56c5b7e54a7 100644 --- a/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficienciesI.H +++ b/src/thermophysicalModels/specie/reaction/reactionRate/thirdBodyEfficiencies/thirdBodyEfficienciesI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,62 +46,6 @@ inline Foam::thirdBodyEfficiencies::thirdBodyEfficiencies } -inline Foam::thirdBodyEfficiencies::thirdBodyEfficiencies -( - const speciesTable& species, - Istream& is -) -: - scalarList(species.size()), - species_(species) -{ - is.readBeginList - ( - "thirdBodyEfficiencies::thirdBodyEfficiencies" - "(const speciesTable& species, Istream& is)" - ); - scalar defaultEff = readScalar(is); - scalarList::operator=(defaultEff); - - token t; - - while ((is >> t) && !t.isPunctuation()) - { - if (t.isWord()) - { - operator[](species[t.wordToken()]) = readScalar(is); - } - else - { - FatalIOErrorInFunction - ( - is - ) << "expected <word>, found " << t.info() - << exit(FatalIOError); - } - } - - if (t.pToken() != token::END_LIST) - { - FatalIOErrorInFunction - ( - is - ) << "expected ')', found " << t.info() - << exit(FatalIOError); - } - - if (size() != species_.size()) - { - FatalIOErrorInFunction - ( - is - ) << "number of efficiencies = " << size() - << " is not equal to the number of species " << species_.size() - << exit(FatalIOError); - } -} - - inline Foam::thirdBodyEfficiencies::thirdBodyEfficiencies ( const speciesTable& species, @@ -170,53 +114,7 @@ inline Foam::Ostream& Foam::operator<< const thirdBodyEfficiencies& tbes ) { - scalarList orderedTbes = tbes; - sort(orderedTbes); - - scalar val = orderedTbes[0]; - label count = 1; - - scalar valMaxCount = val; - label maxCount = 1; - - for (label i=1; i<orderedTbes.size(); i++) - { - if (equal(orderedTbes[i], val)) - { - count++; - } - else - { - if (count > maxCount) - { - maxCount = count; - valMaxCount = val; - } - - count = 1; - val = orderedTbes[i]; - } - } - - if (count > maxCount) - { - maxCount = count; - valMaxCount = val; - } - - os << token::BEGIN_LIST << valMaxCount; - - forAll(tbes, i) - { - if (notEqual(tbes[i], valMaxCount)) - { - os << token::SPACE << tbes.species_[i] - << token::SPACE << tbes[i]; - } - } - - os << token::END_LIST; - + tbes.write(os); return os; } diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReaction.H b/src/thermophysicalModels/specie/reaction/reactions/makeReaction.H index 74cf7c1e486f988cadc5337288f525bfd6080917..ba51a746cc44836b2f21a681661f1e229000947e 100644 --- a/src/thermophysicalModels/specie/reaction/reactions/makeReaction.H +++ b/src/thermophysicalModels/specie/reaction/reactions/makeReaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,13 +73,6 @@ namespace Foam ); \ \ addToRunTimeSelectionTable \ - ( \ - Reaction##Thermo, \ - ReactionType##Thermo##ReactionRate, \ - Istream \ - ); \ - \ - addToRunTimeSelectionTable \ ( \ Reaction##Thermo, \ ReactionType##Thermo##ReactionRate, \ @@ -121,7 +114,7 @@ namespace Foam makeReaction(Thermo, NonEquilibriumReversibleReaction, ReactionRate) -#define makePressureDependentReactions(Thermo, ReactionRate, FallOffFunction) \ +#define makePressureDependentReactions(Thermo, ReactionRate, FallOffFunction) \ \ makePressureDependentReaction \ ( \ diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReactions.C b/src/thermophysicalModels/specie/reaction/reactions/makeReactions.C index 96352b2c9bfb85c97b806674fb1b3bb08f469d4c..d6b9a3c0b46a73acde4a2f01ba79801598c200f6 100644 --- a/src/thermophysicalModels/specie/reaction/reactions/makeReactions.C +++ b/src/thermophysicalModels/specie/reaction/reactions/makeReactions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,7 +46,6 @@ License #define makeReactions(Thermo, Reaction) \ \ defineTemplateTypeNameAndDebug(Reaction, 0); \ - defineTemplateRunTimeSelectionTable(Reaction, Istream); \ defineTemplateRunTimeSelectionTable(Reaction, dictionary); \ \ makeIRNReactions(Thermo, ArrheniusReactionRate) \ diff --git a/src/thermophysicalModels/specie/specie/specie.C b/src/thermophysicalModels/specie/specie/specie.C index 8a4f7612a68e8ec4117ae769c9273ec1e62614fa..a0e81f0a0b47b3be8cbe8b5bbe03c6035dfd70cd 100644 --- a/src/thermophysicalModels/specie/specie/specie.C +++ b/src/thermophysicalModels/specie/specie/specie.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "specie.H" -#include "IOstreams.H" #include "constants.H" /* * * * * * * * * * * * * * * public constants * * * * * * * * * * * * * * */ @@ -37,20 +36,10 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::specie::specie(Istream& is) -: - name_(is), - nMoles_(readScalar(is)), - molWeight_(readScalar(is)) -{ - is.check("specie::specie(Istream& is)"); -} - - Foam::specie::specie(const dictionary& dict) : name_(dict.dictName()), - nMoles_(readScalar(dict.subDict("specie").lookup("nMoles"))), + Y_(dict.subDict("specie").lookupOrDefault("massFraction", 1.0)), molWeight_(readScalar(dict.subDict("specie").lookup("molWeight"))) {} @@ -60,7 +49,10 @@ Foam::specie::specie(const dictionary& dict) void Foam::specie::write(Ostream& os) const { dictionary dict("specie"); - dict.add("nMoles", nMoles_); + if (Y_ != 1) + { + dict.add("massFraction", Y_); + } dict.add("molWeight", molWeight_); os << indent << dict.dictName() << dict; } @@ -70,11 +62,8 @@ void Foam::specie::write(Ostream& os) const Foam::Ostream& Foam::operator<<(Ostream& os, const specie& st) { - os << st.name_ << tab - << st.nMoles_ << tab - << st.molWeight_; - - os.check("Ostream& operator<<(Ostream& os, const specie& st)"); + st.write(os); + os.check(FUNCTION_NAME); return os; } diff --git a/src/thermophysicalModels/specie/specie/specie.H b/src/thermophysicalModels/specie/specie/specie.H index 28d7290818be113d90728a1edb23d67b08a7b82c..192c42931f81dafc1586c6987462d184260394d0 100644 --- a/src/thermophysicalModels/specie/specie/specie.H +++ b/src/thermophysicalModels/specie/specie/specie.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,6 @@ namespace Foam class specie; inline specie operator+(const specie&, const specie&); -inline specie operator-(const specie&, const specie&); inline specie operator*(const scalar, const specie&); inline specie operator==(const specie&, const specie&); @@ -72,7 +71,7 @@ class specie word name_; //- Number of moles of this component in the mixture - scalar nMoles_; + scalar Y_; //- Molecular weight of specie [kg/kmol] scalar molWeight_; @@ -86,27 +85,20 @@ public: // Constructors - //- Construct from components without name - inline specie(const scalar nMoles, const scalar molWeight); + inline specie(const scalar Y, const scalar molWeight); //- Construct from components with name inline specie ( const word& name, - const scalar nMoles, + const scalar Y, const scalar molWeight ); - //- Construct as copy - inline specie(const specie&); - //- Construct as named copy inline specie(const word& name, const specie&); - //- Construct from Istream - specie(Istream&); - //- Construct from dictionary specie(const dictionary& dict); @@ -122,7 +114,7 @@ public: inline scalar W() const; //- No of moles of this species in mixture - inline scalar nMoles() const; + inline scalar Y() const; //- Gas constant [J/(kg K)] inline scalar R() const; @@ -137,20 +129,14 @@ public: // Member operators inline void operator=(const specie&); - inline void operator+=(const specie&); - inline void operator-=(const specie&); - inline void operator*=(const scalar); // Friend operators inline friend specie operator+(const specie&, const specie&); - inline friend specie operator-(const specie&, const specie&); - inline friend specie operator*(const scalar, const specie&); - inline friend specie operator==(const specie&, const specie&); diff --git a/src/thermophysicalModels/specie/specie/specieI.H b/src/thermophysicalModels/specie/specie/specieI.H index 76d979b3c7c2aa0b30012e433cd1000b2d50e6d3..780e7328bafbe3b4598fa2223bc88144290c1e71 100644 --- a/src/thermophysicalModels/specie/specie/specieI.H +++ b/src/thermophysicalModels/specie/specie/specieI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,41 +35,33 @@ namespace Foam inline specie::specie ( const word& name, - const scalar nMoles, + const scalar Y, const scalar molWeight ) : name_(name), - nMoles_(nMoles), + Y_(Y), molWeight_(molWeight) {} inline specie::specie ( - const scalar nMoles, + const scalar Y, const scalar molWeight ) : - nMoles_(nMoles), + Y_(Y), molWeight_(molWeight) {} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline specie::specie(const specie& st) -: - name_(st.name_), - nMoles_(st.nMoles_), - molWeight_(st.molWeight_) -{} - - inline specie::specie(const word& name, const specie& st) : name_(name), - nMoles_(st.nMoles_), + Y_(st.Y_), molWeight_(st.molWeight_) {} @@ -88,9 +80,9 @@ inline scalar specie::W() const } -inline scalar specie::nMoles() const +inline scalar specie::Y() const { - return nMoles_; + return Y_; } @@ -105,42 +97,26 @@ inline scalar specie::R() const inline void specie::operator=(const specie& st) { //name_ = st.name_; - nMoles_ = st.nMoles_; + Y_ = st.Y_; molWeight_ = st.molWeight_; } inline void specie::operator+=(const specie& st) { - scalar sumNmoles = max(nMoles_ + st.nMoles_, SMALL); - - molWeight_ = - nMoles_/sumNmoles*molWeight_ - + st.nMoles_/sumNmoles*st.molWeight_; - - nMoles_ = sumNmoles; -} - - -inline void specie::operator-=(const specie& st) -{ - scalar diffnMoles = nMoles_ - st.nMoles_; - if (mag(diffnMoles) < SMALL) + const scalar sumY = Y_ + st.Y_; + if (mag(sumY) > SMALL) { - diffnMoles = SMALL; + molWeight_ = sumY/(Y_/molWeight_ + st.Y_/st.molWeight_); } - molWeight_ = - nMoles_/diffnMoles*molWeight_ - - st.nMoles_/diffnMoles*st.molWeight_; - - nMoles_ = diffnMoles; + Y_ = sumY; } inline void specie::operator*=(const scalar s) { - nMoles_ *= s; + Y_ *= s; } @@ -148,31 +124,20 @@ inline void specie::operator*=(const scalar s) inline specie operator+(const specie& st1, const specie& st2) { - scalar sumNmoles = max(st1.nMoles_ + st2.nMoles_, SMALL); + const scalar sumY = max(st1.Y_ + st2.Y_, SMALL); - return specie - ( - sumNmoles, - st1.nMoles_/sumNmoles*st1.molWeight_ - + st2.nMoles_/sumNmoles*st2.molWeight_ - ); -} - - -inline specie operator-(const specie& st1, const specie& st2) -{ - scalar diffNmoles = st1.nMoles_ - st2.nMoles_; - if (mag(diffNmoles) < SMALL) + if (mag(sumY) > SMALL) { - diffNmoles = SMALL; + return specie + ( + sumY, + sumY/(st1.Y_/st1.molWeight_ + st2.Y_/st2.molWeight_) + ); + } + else + { + return st1; } - - return specie - ( - diffNmoles, - st1.nMoles_/diffNmoles*st1.molWeight_ - - st2.nMoles_/diffNmoles*st2.molWeight_ - ); } @@ -180,7 +145,7 @@ inline specie operator*(const scalar s, const specie& st) { return specie ( - s*st.nMoles_, + s*st.Y_, st.molWeight_ ); } @@ -188,7 +153,25 @@ inline specie operator*(const scalar s, const specie& st) inline specie operator==(const specie& st1, const specie& st2) { - return st2 - st1; + scalar diffY = st2.Y_ - st1.Y_; + if (mag(diffY) < SMALL) + { + diffY = SMALL; + } + + const scalar diffRW = st2.Y_/st2.molWeight_ - st1.Y_/st1.molWeight_; + + // if (mag(diffRW) > SMALL) + // { + // molWeight = diffY/diffRW; + // } + + // Using intermediate volatile bool to prevent compiler optimising out the + // if block (above) - CLANG 3.7.1 + volatile const bool valid = (mag(diffRW) > SMALL); + const scalar molWeight = valid ? diffY/diffRW : GREAT; + + return specie(diffY, molWeight); } diff --git a/src/thermophysicalModels/specie/thermo/absoluteEnthalpy/absoluteEnthalpy.H b/src/thermophysicalModels/specie/thermo/absoluteEnthalpy/absoluteEnthalpy.H index 0ea7f17d06d24e8bfbd55e8c0c3076206ba2eae0..18dfb4a7b71957279bbdc85223bf89afd9c4d45b 100644 --- a/src/thermophysicalModels/specie/thermo/absoluteEnthalpy/absoluteEnthalpy.H +++ b/src/thermophysicalModels/specie/thermo/absoluteEnthalpy/absoluteEnthalpy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,8 +28,7 @@ Group grpSpecieThermo Description - Thermodynamics mapping class to expose the absolute enthalpy function - as the standard enthalpy function h(T). + Thermodynamics mapping class to expose the absolute enthalpy functions. \*---------------------------------------------------------------------------*/ @@ -73,30 +72,19 @@ public: return "ha"; } - // Absolute enthalpy [J/kmol] - scalar he + // Heat capacity at constant pressure [J/(kg K)] + scalar Cpv ( const Thermo& thermo, const scalar p, const scalar T ) const { - return thermo.ha(p, T); + return thermo.Cp(p, T); } - // Heat capacity at constant pressure [J/(kmol K)] - scalar cpv - ( - const Thermo& thermo, - const scalar p, - const scalar T - ) const - { - return thermo.cp(p, T); - } - - //- cp/cp [] - scalar cpBycpv + //- Cp/Cp [] + scalar CpByCpv ( const Thermo& thermo, const scalar p, diff --git a/src/thermophysicalModels/specie/thermo/absoluteInternalEnergy/absoluteInternalEnergy.H b/src/thermophysicalModels/specie/thermo/absoluteInternalEnergy/absoluteInternalEnergy.H index 2d88a07a26a80a62952ec5ed93f64514a1aa582e..2b7763d07139958f50fa162ec1024743faaca940 100644 --- a/src/thermophysicalModels/specie/thermo/absoluteInternalEnergy/absoluteInternalEnergy.H +++ b/src/thermophysicalModels/specie/thermo/absoluteInternalEnergy/absoluteInternalEnergy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,8 +28,8 @@ Group grpSpecieThermo Description - Thermodynamics mapping class to expose the absolute internal energy function - as the standard internal energy function e(T). + Thermodynamics mapping class to expose the absolute internal energy + functions. \*---------------------------------------------------------------------------*/ @@ -73,30 +73,19 @@ public: return "ea"; } - // Absolute internal energy [J/kmol] - scalar he + // Heat capacity at constant volume [J/(kg K)] + scalar Cpv ( const Thermo& thermo, const scalar p, const scalar T ) const { - return thermo.ea(p, T); + return thermo.Cv(p, T); } - // Heat capacity at constant volume [J/(kmol K)] - scalar cpv - ( - const Thermo& thermo, - const scalar p, - const scalar T - ) const - { - return thermo.cv(p, T); - } - - //- cp/cv [] - scalar cpBycpv + //- Cp/Cv [] + scalar CpByCpv ( const Thermo& thermo, const scalar p, diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C index a004ed0e62b62a0aa5c6138262ff185b169ff8dc..fa283c7116acf56f88ac491655a6803f3b3c0760 100644 --- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C +++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,30 +28,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState> -Foam::eConstThermo<EquationOfState>::eConstThermo(Istream& is) -: - EquationOfState(is), - Cv_(readScalar(is)), - Hf_(readScalar(is)) -{ - is.check("eConstThermo<EquationOfState>::eConstThermo(Istream&)"); - - Cv_ *= this->W(); - Hf_ *= this->W(); -} - - template<class EquationOfState> Foam::eConstThermo<EquationOfState>::eConstThermo(const dictionary& dict) : EquationOfState(dict), Cv_(readScalar(dict.subDict("thermodynamics").lookup("Cv"))), Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))) -{ - Cv_ *= this->W(); - Hf_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -62,8 +45,8 @@ void Foam::eConstThermo<EquationOfState>::write(Ostream& os) const EquationOfState::write(os); dictionary dict("thermodynamics"); - dict.add("Cv", Cv_/this->W()); - dict.add("Hf", Hf_/this->W()); + dict.add("Cv", Cv_); + dict.add("Hf", Hf_); os << indent << dict.dictName() << dict; } @@ -77,10 +60,7 @@ Foam::Ostream& Foam::operator<< const eConstThermo<EquationOfState>& ct ) { - os << static_cast<const EquationOfState&>(ct) << tab - << ct.Cv_/ct.W() << tab << ct.Hf_/ct.W(); - - os.check("Ostream& operator<<(Ostream&, const eConstThermo&)"); + ct.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H index a0f972df4fbf07ac1d4d25fc7ef82da3420bb1a4..b6693c0fc765714f12c7818327bb41da06e04073 100644 --- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H +++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H @@ -1,8 +1,8 @@ -/*---------------------------------------------------------------------------*\ +/*---------------------------------------------------------------------------* \ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,13 +58,6 @@ inline eConstThermo<EquationOfState> operator+ const eConstThermo<EquationOfState>& ); -template<class EquationOfState> -inline eConstThermo<EquationOfState> operator- -( - const eConstThermo<EquationOfState>&, - const eConstThermo<EquationOfState>& -); - template<class EquationOfState> inline eConstThermo<EquationOfState> operator* ( @@ -122,9 +115,6 @@ public: // Constructors - //- Construct from Istream - eConstThermo(Istream&); - //- Construct from dictionary eConstThermo(const dictionary& dict); @@ -134,9 +124,6 @@ public: //- Construct and return a clone inline autoPtr<eConstThermo> clone() const; - // Selector from Istream - inline static autoPtr<eConstThermo> New(Istream& is); - // Selector from dictionary inline static autoPtr<eConstThermo> New(const dictionary& dict); @@ -155,20 +142,20 @@ public: // Fundamental properties - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kg 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; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; - //- Sensible Enthalpy [J/kmol] - inline scalar hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kmol] - inline scalar hc() const; + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // I-O @@ -180,7 +167,6 @@ public: // Member operators inline void operator+=(const eConstThermo&); - inline void operator-=(const eConstThermo&); // Friend operators @@ -191,12 +177,6 @@ public: const eConstThermo& ); - friend eConstThermo operator- <EquationOfState> - ( - const eConstThermo&, - const eConstThermo& - ); - friend eConstThermo operator* <EquationOfState> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H index 2c6bda1a697d579661637d42d3464d7a6470d9e4..4b5ba8005a1710870af0095f8203ced1869b1e79 100644 --- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H +++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,17 +65,6 @@ Foam::eConstThermo<EquationOfState>::clone() const } -template<class EquationOfState> -inline Foam::autoPtr<Foam::eConstThermo<EquationOfState>> -Foam::eConstThermo<EquationOfState>::New(Istream& is) -{ - return autoPtr<eConstThermo<EquationOfState>> - ( - new eConstThermo<EquationOfState>(is) - ); -} - - template<class EquationOfState> inline Foam::autoPtr<Foam::eConstThermo<EquationOfState>> Foam::eConstThermo<EquationOfState>::New(const dictionary& dict) @@ -100,53 +89,53 @@ inline Foam::scalar Foam::eConstThermo<EquationOfState>::limit template<class EquationOfState> -inline Foam::scalar Foam::eConstThermo<EquationOfState>::cp +inline Foam::scalar Foam::eConstThermo<EquationOfState>::Cp ( const scalar p, const scalar T ) const { - return Cv_ + this->cpMcv(p, T) + EquationOfState::cp(p, T); + return Cv_ + this->CpMCv(p, T) + EquationOfState::Cp(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::eConstThermo<EquationOfState>::ha +inline Foam::scalar Foam::eConstThermo<EquationOfState>::Ha ( const scalar p, const scalar T ) const { - return cp(p, T)*T + Hf_ + EquationOfState::h(p, T); + return Cp(p, T)*T + Hf_ + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::eConstThermo<EquationOfState>::hs +inline Foam::scalar Foam::eConstThermo<EquationOfState>::Hs ( const scalar p, const scalar T ) const { - return cp(p, T)*T + EquationOfState::h(p, T); + return Cp(p, T)*T + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::eConstThermo<EquationOfState>::hc() const +inline Foam::scalar Foam::eConstThermo<EquationOfState>::Hc() const { return Hf_; } template<class EquationOfState> -inline Foam::scalar Foam::eConstThermo<EquationOfState>::s +inline Foam::scalar Foam::eConstThermo<EquationOfState>::S ( const scalar p, const scalar T ) const { - return cp()*log(T/Tstd) + EquationOfState::s(p, T); + return Cp(p, T)*log(T/Tstd) + EquationOfState::S(p, T); } @@ -158,33 +147,18 @@ inline void Foam::eConstThermo<EquationOfState>::operator+= const eConstThermo<EquationOfState>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::operator+=(ct); - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); - - Cv_ = molr1*Cv_ + molr2*ct.Cv_; - Hf_ = molr1*Hf_ + molr2*ct.Hf_; -} - - -template<class EquationOfState> -inline void Foam::eConstThermo<EquationOfState>::operator-= -( - const eConstThermo<EquationOfState>& ct -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(ct); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ct.Y()/this->Y(); - Cv_ = molr1*Cv_ - molr2*ct.Cv_; - Hf_ = molr1*Hf_ - molr2*ct.Hf_; + Cv_ = Y1*Cv_ + Y2*ct.Cv_; + Hf_ = Y1*Hf_ + Y2*ct.Hf_; + } } @@ -203,38 +177,26 @@ inline Foam::eConstThermo<EquationOfState> Foam::operator+ + static_cast<const EquationOfState&>(ct2) ); - return eConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cv_ - + ct2.nMoles()/eofs.nMoles()*ct2.Cv_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - + ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); -} - - -template<class EquationOfState> -inline Foam::eConstThermo<EquationOfState> Foam::operator- -( - const eConstThermo<EquationOfState>& ct1, - const eConstThermo<EquationOfState>& ct2 -) -{ - EquationOfState eofs - ( - static_cast<const EquationOfState&>(ct1) - - static_cast<const EquationOfState&>(ct2) - ); - - return eConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cv_ - - ct2.nMoles()/eofs.nMoles()*ct2.Cv_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - - ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); + if (mag(eofs.Y()) < SMALL) + { + return eConstThermo<EquationOfState> + ( + eofs, + ct1.Cv_, + ct1.Hf_ + ); + } + else + { + return eConstThermo<EquationOfState> + ( + eofs, + ct1.Y()/eofs.Y()*ct1.Cv_ + + ct2.Y()/eofs.Y()*ct2.Cv_, + ct1.Y()/eofs.Y()*ct1.Hf_ + + ct2.Y()/eofs.Y()*ct2.Hf_ + ); + } } @@ -261,7 +223,20 @@ inline Foam::eConstThermo<EquationOfState> Foam::operator== const eConstThermo<EquationOfState>& ct2 ) { - return ct2 - ct1; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(ct1) + == static_cast<const EquationOfState&>(ct2) + ); + + return eConstThermo<EquationOfState> + ( + eofs, + ct2.Y()/eofs.Y()*ct2.Cv_ + - ct1.Y()/eofs.Y()*ct1.Cv_, + ct2.Y()/eofs.Y()*ct2.Hf_ + - ct1.Y()/eofs.Y()*ct1.Hf_ + ); } diff --git a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.C b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.C index e4c60c18d602d8c9d44db2aa5afc8471f6c338f2..1bfc380457f4a5e9e201cb449bbf62eb4b7405f8 100644 --- a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.C +++ b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,30 +28,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState> -Foam::hConstThermo<EquationOfState>::hConstThermo(Istream& is) -: - EquationOfState(is), - Cp_(readScalar(is)), - Hf_(readScalar(is)) -{ - is.check("hConstThermo::hConstThermo(Istream& is)"); - - Cp_ *= this->W(); - Hf_ *= this->W(); -} - - template<class EquationOfState> Foam::hConstThermo<EquationOfState>::hConstThermo(const dictionary& dict) : EquationOfState(dict), Cp_(readScalar(dict.subDict("thermodynamics").lookup("Cp"))), Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))) -{ - Cp_ *= this->W(); - Hf_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -62,8 +45,8 @@ void Foam::hConstThermo<EquationOfState>::write(Ostream& os) const EquationOfState::write(os); dictionary dict("thermodynamics"); - dict.add("Cp", Cp_/this->W()); - dict.add("Hf", Hf_/this->W()); + dict.add("Cp", Cp_); + dict.add("Hf", Hf_); os << indent << dict.dictName() << dict; } @@ -77,10 +60,7 @@ Foam::Ostream& Foam::operator<< const hConstThermo<EquationOfState>& ct ) { - os << static_cast<const EquationOfState&>(ct) << tab - << ct.Cp_/ct.W() << tab << ct.Hf_/ct.W(); - - os.check("Ostream& operator<<(Ostream& os, const hConstThermo& ct)"); + ct.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H index 77a4895b71dbb3919a75f611801e5fe73836a733..04a88b3e3b8ab622ab0c8a46ad96b9f9c6950e6a 100644 --- a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H +++ b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,13 +56,6 @@ inline hConstThermo<EquationOfState> operator+ const hConstThermo<EquationOfState>& ); -template<class EquationOfState> -inline hConstThermo<EquationOfState> operator- -( - const hConstThermo<EquationOfState>&, - const hConstThermo<EquationOfState>& -); - template<class EquationOfState> inline hConstThermo<EquationOfState> operator* ( @@ -115,9 +108,6 @@ public: // Constructors - //- Construct from Istream - hConstThermo(Istream&); - //- Construct from dictionary hConstThermo(const dictionary& dict); @@ -127,9 +117,6 @@ public: //- Construct and return a clone inline autoPtr<hConstThermo> clone() const; - //- Selector from Istream - inline static autoPtr<hConstThermo> New(Istream& is); - //- Selector from dictionary inline static autoPtr<hConstThermo> New(const dictionary& dict); @@ -148,20 +135,20 @@ public: // Fundamental properties - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kg 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; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; - //- Sensible enthalpy [J/kmol] - inline scalar hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kmol] - inline scalar hc() const; + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // I-O @@ -173,7 +160,6 @@ public: // Member operators inline void operator+=(const hConstThermo&); - inline void operator-=(const hConstThermo&); // Friend operators @@ -184,12 +170,6 @@ public: const hConstThermo& ); - friend hConstThermo operator- <EquationOfState> - ( - const hConstThermo&, - const hConstThermo& - ); - friend hConstThermo operator* <EquationOfState> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/hConst/hConstThermoI.H b/src/thermophysicalModels/specie/thermo/hConst/hConstThermoI.H index 1367c7c426c82a900b1a0015925d01a2d7fb22c5..09dcb9860336f2b7599dd2959203e75a05c54fe0 100644 --- a/src/thermophysicalModels/specie/thermo/hConst/hConstThermoI.H +++ b/src/thermophysicalModels/specie/thermo/hConst/hConstThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,17 +65,6 @@ Foam::hConstThermo<EquationOfState>::clone() const } -template<class EquationOfState> -inline Foam::autoPtr<Foam::hConstThermo<EquationOfState>> -Foam::hConstThermo<EquationOfState>::New(Istream& is) -{ - return autoPtr<hConstThermo<EquationOfState>> - ( - new hConstThermo<EquationOfState>(is) - ); -} - - template<class EquationOfState> inline Foam::autoPtr<Foam::hConstThermo<EquationOfState>> Foam::hConstThermo<EquationOfState>::New(const dictionary& dict) @@ -100,50 +89,50 @@ inline Foam::scalar Foam::hConstThermo<EquationOfState>::limit template<class EquationOfState> -inline Foam::scalar Foam::hConstThermo<EquationOfState>::cp +inline Foam::scalar Foam::hConstThermo<EquationOfState>::Cp ( const scalar p, const scalar T ) const { - return Cp_ + EquationOfState::cp(p, T); + return Cp_ + EquationOfState::Cp(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hConstThermo<EquationOfState>::ha +inline Foam::scalar Foam::hConstThermo<EquationOfState>::Ha ( const scalar p, const scalar T ) const { - return Cp_*T + Hf_ + EquationOfState::h(p, T); + return Cp_*T + Hf_ + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hConstThermo<EquationOfState>::hs +inline Foam::scalar Foam::hConstThermo<EquationOfState>::Hs ( const scalar p, const scalar T ) const { - return Cp_*T + EquationOfState::h(p, T); + return Cp_*T + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hConstThermo<EquationOfState>::hc() const +inline Foam::scalar Foam::hConstThermo<EquationOfState>::Hc() const { return Hf_; } template<class EquationOfState> -inline Foam::scalar Foam::hConstThermo<EquationOfState>::s +inline Foam::scalar Foam::hConstThermo<EquationOfState>::S ( const scalar p, const scalar T ) const { - return Cp_*log(T/Tstd) + EquationOfState::s(p, T); + return Cp_*log(T/Tstd) + EquationOfState::S(p, T); } @@ -155,33 +144,18 @@ inline void Foam::hConstThermo<EquationOfState>::operator+= const hConstThermo<EquationOfState>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::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 EquationOfState> -inline void Foam::hConstThermo<EquationOfState>::operator-= -( - const hConstThermo<EquationOfState>& ct -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(ct); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + scalar Y2 = ct.Y()/this->Y(); - Cp_ = molr1*Cp_ - molr2*ct.Cp_; - Hf_ = molr1*Hf_ - molr2*ct.Hf_; + Cp_ = Y1*Cp_ + Y2*ct.Cp_; + Hf_ = Y1*Hf_ + Y2*ct.Hf_; + } } @@ -200,38 +174,26 @@ inline Foam::hConstThermo<EquationOfState> Foam::operator+ + static_cast<const EquationOfState&>(ct2) ); - return hConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cp_ - + ct2.nMoles()/eofs.nMoles()*ct2.Cp_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - + ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); -} - - -template<class EquationOfState> -inline Foam::hConstThermo<EquationOfState> Foam::operator- -( - const hConstThermo<EquationOfState>& ct1, - const hConstThermo<EquationOfState>& ct2 -) -{ - EquationOfState eofs - ( - static_cast<const EquationOfState&>(ct1) - - static_cast<const EquationOfState&>(ct2) - ); - - return hConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cp_ - - ct2.nMoles()/eofs.nMoles()*ct2.Cp_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - - ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); + if (mag(eofs.Y()) < SMALL) + { + return hConstThermo<EquationOfState> + ( + eofs, + ct1.Cp_, + ct1.Hf_ + ); + } + else + { + return hConstThermo<EquationOfState> + ( + eofs, + ct1.Y()/eofs.Y()*ct1.Cp_ + + ct2.Y()/eofs.Y()*ct2.Cp_, + ct1.Y()/eofs.Y()*ct1.Hf_ + + ct2.Y()/eofs.Y()*ct2.Hf_ + ); + } } @@ -258,7 +220,20 @@ inline Foam::hConstThermo<EquationOfState> Foam::operator== const hConstThermo<EquationOfState>& ct2 ) { - return ct2 - ct1; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(ct1) + == static_cast<const EquationOfState&>(ct2) + ); + + return hConstThermo<EquationOfState> + ( + eofs, + ct2.Y()/eofs.Y()*ct2.Cp_ + - ct1.Y()/eofs.Y()*ct1.Cp_, + ct2.Y()/eofs.Y()*ct2.Hf_ + - ct1.Y()/eofs.Y()*ct1.Hf_ + ); } diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C index 511e871bf199b5ec0538700ce4e1361a12d09ea4..2f7817e0b8c77cbf0a9eb6617a50077473354cc3 100644 --- a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C +++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,34 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState, int PolySize> -Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo -( - Istream& is -) -: - EquationOfState(is), - Hf_(readScalar(is)), - Sf_(readScalar(is)), - CpCoeffs_("CpCoeffs<" + Foam::name(PolySize) + '>', is), - hCoeffs_(), - sCoeffs_() -{ - Hf_ *= this->W(); - Sf_ *= this->W(); - CpCoeffs_ *= this->W(); - - hCoeffs_ = CpCoeffs_.integral(); - sCoeffs_ = CpCoeffs_.integralMinus1(); - - // Offset h poly so that it is relative to the enthalpy at Tstd - hCoeffs_[0] += Hf_ - hCoeffs_.value(Tstd); - - // Offset s poly so that it is relative to the entropy at Tstd - sCoeffs_[0] += Sf_ - sCoeffs_.value(Tstd); -} - - template<class EquationOfState, int PolySize> Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo ( @@ -75,10 +47,6 @@ Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo hCoeffs_(), sCoeffs_() { - Hf_ *= this->W(); - Sf_ *= this->W(); - CpCoeffs_ *= this->W(); - hCoeffs_ = CpCoeffs_.integral(); sCoeffs_ = CpCoeffs_.integralMinus1(); @@ -101,12 +69,12 @@ void Foam::hPolynomialThermo<EquationOfState, PolySize>::write EquationOfState::write(os); dictionary dict("thermodynamics"); - dict.add("Hf", Hf_/this->W()); - dict.add("Sf", Sf_/this->W()); + dict.add("Hf", Hf_); + dict.add("Sf", Sf_); dict.add ( word("CpCoeffs<" + Foam::name(PolySize) + '>'), - CpCoeffs_/this->W() + CpCoeffs_ ); os << indent << dict.dictName() << dict; } @@ -121,21 +89,7 @@ Foam::Ostream& Foam::operator<< const hPolynomialThermo<EquationOfState, PolySize>& pt ) { - os << static_cast<const EquationOfState&>(pt) << tab - << pt.Hf_/pt.W() << tab - << pt.Sf_/pt.W() << tab - << "CpCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.CpCoeffs_/pt.W(); - - os.check - ( - "operator<<" - "(" - "Ostream&, " - "const hPolynomialThermo<EquationOfState, PolySize>&" - ")" - ); - + pt.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H index 110e188d755d3fa4a5c2bb4324b65168dbf19006..ca1a873bf957e4085184b3bad1e7ebdd8ae2193f 100644 --- a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H +++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,14 +29,48 @@ Group Description Thermodynamics package templated on the equation of state, using polynomial - functions for cp, h and s + functions for \c cp, \c h and \c s. - Polynomials for h and s derived from cp + Polynomials for \c h and \c s derived from \c cp. + +Usage + + \table + Property | Description + Hf | Heat of formation + Sf | Standard entropy + CpCoeffs<8> | Specific heat at constant pressure polynomial coeffs + \endtable + + Example of the specification of the thermodynamic properties: + \verbatim + thermodynamics + { + Hf 0; + Sf 0; + CpCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); + } + \endverbatim + + The polynomial expression is evaluated as so: + + \f[ + Cp = 1000 - 0.05 T + 0.003 T^2 + \f] + +Note + - Heat of formation is inputted in [J/kg], but internally uses [J/kmol] + - Standard entropy is inputted in [J/kg/K], but internally uses [J/kmol/K] + - Specific heat at constant pressure polynomial coefficients evaluate to an + expression in [J/(kg.K)]. SourceFiles hPolynomialThermoI.H hPolynomialThermo.C +See also + Foam::Polynomial + \*---------------------------------------------------------------------------*/ #ifndef hPolynomialThermo_H @@ -62,13 +96,6 @@ inline hPolynomialThermo<EquationOfState, PolySize> operator+ const hPolynomialThermo<EquationOfState, PolySize>& ); -template<class EquationOfState, int PolySize> -inline hPolynomialThermo<EquationOfState, PolySize> operator- -( - const hPolynomialThermo<EquationOfState, PolySize>&, - const hPolynomialThermo<EquationOfState, PolySize>& -); - template<class EquationOfState, int PolySize> inline hPolynomialThermo<EquationOfState, PolySize> operator* ( @@ -103,14 +130,12 @@ class hPolynomialThermo // Private data //- Heat of formation - // Note: input in [J/kg], but internally uses [J/kmol] scalar Hf_; //- Standard entropy - // Note: input in [J/kg/K], but internally uses [J/kmol/K] scalar Sf_; - //- Specific heat at constant pressure polynomial coeffs [J/(kg.K)] + //- Specific heat at constant pressure polynomial coeffs Polynomial<PolySize> CpCoeffs_; //- Enthalpy polynomial coeffs - derived from cp [J/kg] @@ -139,15 +164,9 @@ public: // Constructors - //- Construct from Istream - hPolynomialThermo(Istream& is); - //- Construct from dictionary hPolynomialThermo(const dictionary& dict); - //- Construct as copy - inline hPolynomialThermo(const hPolynomialThermo&); - //- Construct as a named copy inline hPolynomialThermo(const word&, const hPolynomialThermo&); @@ -166,20 +185,20 @@ public: // Fundamental properties - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kg 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; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; - //- Sensible enthalpy [J/kmol] - inline scalar hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kmol] - inline scalar hc() const; + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // I-O @@ -192,7 +211,6 @@ public: inline void operator=(const hPolynomialThermo&); inline void operator+=(const hPolynomialThermo&); - inline void operator-=(const hPolynomialThermo&); inline void operator*=(const scalar); @@ -204,12 +222,6 @@ public: const hPolynomialThermo& ); - friend hPolynomialThermo operator- <EquationOfState, PolySize> - ( - const hPolynomialThermo&, - const hPolynomialThermo& - ); - friend hPolynomialThermo operator* <EquationOfState, PolySize> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H index 7cef8ce2b53433c6aaad6962575af645212fcba5..fb5ac1bdebfddb24e975a5efa5ba0ebb654b0937 100644 --- a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H +++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,21 +49,6 @@ inline Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState, int PolySize> -inline Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo -( - const hPolynomialThermo& pt -) -: - EquationOfState(pt), - Hf_(pt.Hf_), - Sf_(pt.Sf_), - CpCoeffs_(pt.CpCoeffs_), - hCoeffs_(pt.hCoeffs_), - sCoeffs_(pt.sCoeffs_) -{} - - template<class EquationOfState, int PolySize> inline Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo ( @@ -93,37 +78,37 @@ inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::limit template<class EquationOfState, int PolySize> -inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::cp +inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::Cp ( const scalar p, const scalar T ) const { - return CpCoeffs_.value(T) + EquationOfState::cp(p, T); + return CpCoeffs_.value(T) + EquationOfState::Cp(p, T); } template<class EquationOfState, int PolySize> -inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::ha +inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::Ha ( const scalar p, const scalar T ) const { - return hCoeffs_.value(T) + EquationOfState::h(p, T); + return hCoeffs_.value(T) + EquationOfState::H(p, T); } template<class EquationOfState, int PolySize> -inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::hs +inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::Hs ( const scalar p, const scalar T ) const { - return ha(p, T) - hc(); + return Ha(p, T) - Hc(); } template<class EquationOfState, int PolySize> -inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::hc() +inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::Hc() const { return Hf_; @@ -131,13 +116,13 @@ const template<class EquationOfState, int PolySize> -inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::s +inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::S ( const scalar p, const scalar T ) const { - return sCoeffs_.value(T) + EquationOfState::s(p, T); + return sCoeffs_.value(T) + EquationOfState::S(p, T); } @@ -165,39 +150,21 @@ inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator+= const hPolynomialThermo<EquationOfState, PolySize>& pt ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::operator+=(pt); - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); - - Hf_ = molr1*Hf_ + molr2*pt.Hf_; - Sf_ = molr1*Sf_ + molr2*pt.Sf_; - CpCoeffs_ = molr1*CpCoeffs_ + molr2*pt.CpCoeffs_; - hCoeffs_ = molr1*hCoeffs_ + molr2*pt.hCoeffs_; - sCoeffs_ = molr1*sCoeffs_ + molr2*pt.sCoeffs_; -} - - -template<class EquationOfState, int PolySize> -inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator-= -( - const hPolynomialThermo<EquationOfState, PolySize>& pt -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(pt); - - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); - - Hf_ = molr1*Hf_ - molr2*pt.Hf_; - Sf_ = molr1*Sf_ - molr2*pt.Sf_; - CpCoeffs_ = molr1*CpCoeffs_ - molr2*pt.CpCoeffs_; - hCoeffs_ = molr1*hCoeffs_ - molr2*pt.hCoeffs_; - sCoeffs_ = molr1*sCoeffs_ - molr2*pt.sCoeffs_; + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = pt.Y()/this->Y(); + + Hf_ = Y1*Hf_ + Y2*pt.Hf_; + Sf_ = Y1*Sf_ + Y2*pt.Sf_; + CpCoeffs_ = Y1*CpCoeffs_ + Y2*pt.CpCoeffs_; + hCoeffs_ = Y1*hCoeffs_ + Y2*pt.hCoeffs_; + sCoeffs_ = Y1*sCoeffs_ + Y2*pt.sCoeffs_; + } } @@ -223,43 +190,32 @@ inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator+ EquationOfState eofs = pt1; eofs += pt2; - scalar molr1 = pt1.nMoles()/eofs.nMoles(); - scalar molr2 = pt2.nMoles()/eofs.nMoles(); - - return hPolynomialThermo<EquationOfState, PolySize> - ( - eofs, - molr1*pt1.Hf_ + molr2*pt2.Hf_, - molr1*pt1.Sf_ + molr2*pt2.Sf_, - molr1*pt1.CpCoeffs_ + molr2*pt2.CpCoeffs_, - molr1*pt1.hCoeffs_ + molr2*pt2.hCoeffs_, - molr1*pt1.sCoeffs_ + molr2*pt2.sCoeffs_ - ); -} - - -template<class EquationOfState, int PolySize> -inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator- -( - const hPolynomialThermo<EquationOfState, PolySize>& pt1, - const hPolynomialThermo<EquationOfState, PolySize>& pt2 -) -{ - EquationOfState eofs = pt1; - eofs -= pt2; - - scalar molr1 = pt1.nMoles()/eofs.nMoles(); - scalar molr2 = pt2.nMoles()/eofs.nMoles(); - - return hPolynomialThermo<EquationOfState, PolySize> - ( - eofs, - molr1*pt1.Hf_ - molr2*pt2.Hf_, - molr1*pt1.Sf_ - molr2*pt2.Sf_, - molr1*pt1.CpCoeffs_ - molr2*pt2.CpCoeffs_, - molr1*pt1.hCoeffs_ - molr2*pt2.hCoeffs_, - molr1*pt1.sCoeffs_ - molr2*pt2.sCoeffs_ - ); + if (mag(eofs.Y()) < SMALL) + { + return hPolynomialThermo<EquationOfState, PolySize> + ( + eofs, + pt1.Hf_, + pt1.Sf_, + pt1.CpCoeffs_, + pt1.hCoeffs_, + pt1.sCoeffs_ + ); + } + { + const scalar Y1 = pt1.Y()/eofs.Y(); + const scalar Y2 = pt2.Y()/eofs.Y(); + + return hPolynomialThermo<EquationOfState, PolySize> + ( + eofs, + Y1*pt1.Hf_ + Y2*pt2.Hf_, + Y1*pt1.Sf_ + Y2*pt2.Sf_, + Y1*pt1.CpCoeffs_ + Y2*pt2.CpCoeffs_, + Y1*pt1.hCoeffs_ + Y2*pt2.hCoeffs_, + Y1*pt1.sCoeffs_ + Y2*pt2.sCoeffs_ + ); + } } @@ -289,7 +245,24 @@ inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator== const hPolynomialThermo<EquationOfState, PolySize>& pt2 ) { - return pt2 - pt1; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(pt1) + == static_cast<const EquationOfState&>(pt2) + ); + + const scalar Y1 = pt1.Y()/eofs.Y(); + const scalar Y2 = pt2.Y()/eofs.Y(); + + return hPolynomialThermo<EquationOfState, PolySize> + ( + eofs, + Y2*pt2.Hf_ - Y1*pt1.Hf_, + Y2*pt2.Sf_ - Y1*pt1.Sf_, + Y2*pt2.CpCoeffs_ - Y1*pt1.CpCoeffs_, + Y2*pt2.hCoeffs_ - Y1*pt1.hCoeffs_, + Y2*pt2.sCoeffs_ - Y1*pt1.sCoeffs_ + ); } diff --git a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.C b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.C index 4ab71b4e65450752820e14fb2cbed4263575ee79..5e742e2388c99f26ace1c016750757b826a1843b 100644 --- a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.C +++ b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,21 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState> -Foam::hPowerThermo<EquationOfState>::hPowerThermo(Istream& is) -: - EquationOfState(is), - n0_(readScalar(is)), - Tref_(readScalar(is)), - Hf_(readScalar(is)) -{ - is.check("hPowerThermo::hPowerThermo(Istream& is)"); - - c0_ *= this->W(); - Hf_ *= this->W(); -} - - template<class EquationOfState> Foam::hPowerThermo<EquationOfState>::hPowerThermo ( @@ -54,10 +39,7 @@ Foam::hPowerThermo<EquationOfState>::hPowerThermo n0_(readScalar(dict.subDict("thermodynamics").lookup("n0"))), Tref_(readScalar(dict.subDict("thermodynamics").lookup("Tref"))), Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))) -{ - c0_ *= this->W(); - Hf_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // @@ -69,21 +51,7 @@ Foam::Ostream& Foam::operator<< const hPowerThermo<EquationOfState>& et ) { - os << static_cast<const EquationOfState&>(et) << nl - << " " << et.c0_ - << tab << et.n0_ - << tab << et.Tref_ - << tab << et.Hf_; - - os << nl << " "; - - os << endl; - - os.check - ( - "operator<<(Ostream& os, const hPowerThermo<EquationOfState>& et)" - ); - + et.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.H b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.H index 3ca30859fa3853d92f8e42be498953fad09a9fe2..ea491b755ba9fc8112606339f283f2bd1dca1bac 100644 --- a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.H +++ b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,13 +64,6 @@ inline hPowerThermo<EquationOfState> operator+ const hPowerThermo<EquationOfState>& ); -template<class EquationOfState> -inline hPowerThermo<EquationOfState> operator- -( - const hPowerThermo<EquationOfState>&, - const hPowerThermo<EquationOfState>& -); - template<class EquationOfState> inline hPowerThermo<EquationOfState> operator* ( @@ -132,9 +125,6 @@ public: // Constructors - //- Construct from Istream - hPowerThermo(Istream&); - //- Construct from dictionary hPowerThermo(const dictionary&); @@ -148,9 +138,6 @@ public: //- Construct and return a clone inline autoPtr<hPowerThermo> clone() const; - //- Selector from Istream - inline static autoPtr<hPowerThermo> New(Istream& is); - //- Selector from dictionary inline static autoPtr<hPowerThermo> New(const dictionary& dict); @@ -170,25 +157,24 @@ public: // Fundamental properties //- Heat capacity at constant pressure [J/(kg K)] - inline scalar cp(const scalar p, const scalar T) const; + inline scalar Cp(const scalar p, const scalar T) const; - //- Absolute enthalpy [J/kmol] - inline scalar ha(const scalar p, const scalar T) const; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; //- Sensible enthalpy [J/kg] - inline scalar hs(const scalar p, const scalar T) const; + inline scalar Hs(const scalar p, const scalar T) const; //- Chemical enthalpy [J/kg] - inline scalar hc() const; + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // Member operators inline void operator+=(const hPowerThermo&); - inline void operator-=(const hPowerThermo&); // Friend operators @@ -199,12 +185,6 @@ public: const hPowerThermo& ); - friend hPowerThermo operator- <EquationOfState> - ( - const hPowerThermo&, - const hPowerThermo& - ); - friend hPowerThermo operator* <EquationOfState> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermoI.H b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermoI.H index c9114a1dd81c261b5bc936a504a7d6d0fb0f6a28..3f22215dbf0314d9611ef67bbec976ee1427ccff 100644 --- a/src/thermophysicalModels/specie/thermo/hPower/hPowerThermoI.H +++ b/src/thermophysicalModels/specie/thermo/hPower/hPowerThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -90,17 +90,6 @@ Foam::hPowerThermo<EquationOfState>::clone() const } -template<class EquationOfState> -inline Foam::autoPtr<Foam::hPowerThermo<EquationOfState>> -Foam::hPowerThermo<EquationOfState>::New(Istream& is) -{ - return autoPtr<hPowerThermo<EquationOfState>> - ( - new hPowerThermo<EquationOfState>(is) - ); -} - - template<class EquationOfState> inline Foam::autoPtr<Foam::hPowerThermo<EquationOfState>> Foam::hPowerThermo<EquationOfState>::New(const dictionary& dict) @@ -125,53 +114,53 @@ inline Foam::scalar Foam::hPowerThermo<EquationOfState>::limit template<class EquationOfState> -inline Foam::scalar Foam::hPowerThermo<EquationOfState>::cp +inline Foam::scalar Foam::hPowerThermo<EquationOfState>::Cp ( const scalar p, const scalar T ) const { - return c0_*pow(T/Tref_, n0_) + EquationOfState::cp(p, T); + return c0_*pow(T/Tref_, n0_) + EquationOfState::Cp(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hPowerThermo<EquationOfState>::ha +inline Foam::scalar Foam::hPowerThermo<EquationOfState>::Ha ( const scalar p, const scalar T ) const { - return hs(p, T) + hc(); + return Hs(p, T) + Hc(); } template<class EquationOfState> -inline Foam::scalar Foam::hPowerThermo<EquationOfState>::hs +inline Foam::scalar Foam::hPowerThermo<EquationOfState>::Hs ( const scalar p, const scalar T ) const { return c0_*(pow(T, n0_ + 1) - pow(Tstd, n0_ + 1))/(pow(Tref_, n0_)*(n0_ + 1)) - + EquationOfState::h(p, T); + + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hPowerThermo<EquationOfState>::hc() const +inline Foam::scalar Foam::hPowerThermo<EquationOfState>::Hc() const { return Hf_; } template<class EquationOfState> -inline Foam::scalar Foam::hPowerThermo<EquationOfState>::s +inline Foam::scalar Foam::hPowerThermo<EquationOfState>::S ( const scalar p, const scalar T ) const { return c0_*(pow(T, n0_) - pow(Tstd, n0_))/(pow(Tref_, n0_)*n0_) - + EquationOfState::s(p, T); + + EquationOfState::S(p, T); } @@ -183,36 +172,20 @@ inline void Foam::hPowerThermo<EquationOfState>::operator+= const hPowerThermo<EquationOfState>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::operator+=(ct); - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); - - Hf_ = molr1*Hf_ + molr2*ct.Hf_; - c0_ = molr1*c0_ + molr2*ct.c0_; - n0_ = molr1*n0_ + molr2*ct.n0_; - Tref_ = molr1*Tref_ + molr2*ct.Tref_; -} - -template<class EquationOfState> -inline void Foam::hPowerThermo<EquationOfState>::operator-= -( - const hPowerThermo<EquationOfState>& ct -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(ct); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ct.Y()/this->Y(); - Hf_ = molr1*Hf_ - molr2*ct.Hf_; - c0_ = (molr1*c0_ - molr2*ct.c0_); - n0_ = (molr1*n0_ - molr2*ct.n0_); - Tref_ = (molr1*Tref_ - molr2*ct.Tref_); + Hf_ = Y1*Hf_ + Y2*ct.Hf_; + c0_ = Y1*c0_ + Y2*ct.c0_; + n0_ = Y1*n0_ + Y2*ct.n0_; + Tref_ = Y1*Tref_ + Y2*ct.Tref_; + } } @@ -231,46 +204,32 @@ inline Foam::hPowerThermo<EquationOfState> Foam::operator+ + static_cast<const EquationOfState&>(ct2) ); - return hPowerThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.c0_ - + ct2.nMoles()/eofs.nMoles()*ct2.c0_, - ct1.nMoles()/eofs.nMoles()*ct1.n0_ - + ct2.nMoles()/eofs.nMoles()*ct2.n0_, - ct1.nMoles()/eofs.nMoles()*ct1.Tref_ - + ct2.nMoles()/eofs.nMoles()*ct2.Tref_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - + ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); -} - - -template<class EquationOfState> -inline Foam::hPowerThermo<EquationOfState> Foam::operator- -( - const hPowerThermo<EquationOfState>& ct1, - const hPowerThermo<EquationOfState>& ct2 -) -{ - EquationOfState eofs - ( - static_cast<const EquationOfState&>(ct1) - + static_cast<const EquationOfState&>(ct2) - ); - - return hPowerThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.c0_ - - ct2.nMoles()/eofs.nMoles()*ct2.c0_, - ct1.nMoles()/eofs.nMoles()*ct1.n0_ - - ct2.nMoles()/eofs.nMoles()*ct2.n0_, - ct1.nMoles()/eofs.nMoles()*ct1.Tref_ - - ct2.nMoles()/eofs.nMoles()*ct2.Tref_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - - ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); + if (mag(eofs.Y()) < SMALL) + { + return hPowerThermo<EquationOfState> + ( + eofs, + ct1.c0_, + ct1.n0_, + ct1.Tref_, + ct1.Hf_ + ); + } + else + { + return hPowerThermo<EquationOfState> + ( + eofs, + ct1.Y()/eofs.Y()*ct1.c0_ + + ct2.Y()/eofs.Y()*ct2.c0_, + ct1.Y()/eofs.Y()*ct1.n0_ + + ct2.Y()/eofs.Y()*ct2.n0_, + ct1.Y()/eofs.Y()*ct1.Tref_ + + ct2.Y()/eofs.Y()*ct2.Tref_, + ct1.Y()/eofs.Y()*ct1.Hf_ + + ct2.Y()/eofs.Y()*ct2.Hf_ + ); + } } @@ -299,7 +258,24 @@ inline Foam::hPowerThermo<EquationOfState> Foam::operator== const hPowerThermo<EquationOfState>& ct2 ) { - return ct2 - ct1; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(ct1) + == static_cast<const EquationOfState&>(ct2) + ); + + return hPowerThermo<EquationOfState> + ( + eofs, + ct2.Y()/eofs.Y()*ct2.c0_ + - ct1.Y()/eofs.Y()*ct1.c0_, + ct2.Y()/eofs.Y()*ct2.n0_ + - ct1.Y()/eofs.Y()*ct1.n0_, + ct2.Y()/eofs.Y()*ct2.Tref_ + - ct1.Y()/eofs.Y()*ct1.Tref_, + ct2.Y()/eofs.Y()*ct2.Hf_ + - ct1.Y()/eofs.Y()*ct1.Hf_ + ); } diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C index fe83f1794b6bde6f1b5d0a12647f00c3f5384b7b..c7a8cb42215a0e67843322dfbf5819aa926cf4cd 100644 --- a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C +++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,23 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState> -Foam::hRefConstThermo<EquationOfState>::hRefConstThermo(Istream& is) -: - EquationOfState(is), - Cp_(readScalar(is)), - Hf_(readScalar(is)), - Tref_(readScalar(is)), - Href_(readScalar(is)) -{ - is.check("hRefConstThermo::hRefConstThermo(Istream& is)"); - - Cp_ *= this->W(); - Hf_ *= this->W(); - Href_ *= this->W(); -} - - template<class EquationOfState> Foam::hRefConstThermo<EquationOfState>::hRefConstThermo(const dictionary& dict) : @@ -53,11 +36,7 @@ Foam::hRefConstThermo<EquationOfState>::hRefConstThermo(const dictionary& dict) Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))), Tref_(readScalar(dict.subDict("thermodynamics").lookup("Tref"))), Href_(readScalar(dict.subDict("thermodynamics").lookup("Href"))) -{ - Cp_ *= this->W(); - Hf_ *= this->W(); - Href_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -68,10 +47,10 @@ void Foam::hRefConstThermo<EquationOfState>::write(Ostream& os) const EquationOfState::write(os); dictionary dict("thermodynamics"); - dict.add("Cp", Cp_/this->W()); - dict.add("Hf", Hf_/this->W()); + dict.add("Cp", Cp_); + dict.add("Hf", Hf_); dict.add("Tref", Tref_); - dict.add("Href", Href_/this->W()); + dict.add("Href", Href_); os << indent << dict.dictName() << dict; } @@ -85,11 +64,7 @@ Foam::Ostream& Foam::operator<< const hRefConstThermo<EquationOfState>& ct ) { - os << static_cast<const EquationOfState&>(ct) << tab - << ct.Cp_/ct.W() << tab << ct.Hf_/ct.W() << tab - << ct.Tref_ << tab << ct.Href_/ct.W(); - - os.check("Ostream& operator<<(Ostream& os, const hRefConstThermo& ct)"); + ct.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H index d93dfaa726db12637a80c849c65bb2894fdd252f..c2a92cb07371c0c5d234765c2d0625faf819f736 100644 --- a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H +++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,13 +56,6 @@ inline hRefConstThermo<EquationOfState> operator+ const hRefConstThermo<EquationOfState>& ); -template<class EquationOfState> -inline hRefConstThermo<EquationOfState> operator- -( - const hRefConstThermo<EquationOfState>&, - const hRefConstThermo<EquationOfState>& -); - template<class EquationOfState> inline hRefConstThermo<EquationOfState> operator* ( @@ -119,9 +112,6 @@ public: // Constructors - //- Construct from Istream - hRefConstThermo(Istream&); - //- Construct from dictionary hRefConstThermo(const dictionary& dict); @@ -131,9 +121,6 @@ public: //- Construct and return a clone inline autoPtr<hRefConstThermo> clone() const; - //- Selector from Istream - inline static autoPtr<hRefConstThermo> New(Istream& is); - //- Selector from dictionary inline static autoPtr<hRefConstThermo> New(const dictionary& dict); @@ -152,20 +139,20 @@ public: // Fundamental properties - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kg 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; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; - //- Sensible enthalpy [J/kmol] - inline scalar hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kmol] - inline scalar hc() const; + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // I-O @@ -177,7 +164,6 @@ public: // Member operators inline void operator+=(const hRefConstThermo&); - inline void operator-=(const hRefConstThermo&); // Friend operators @@ -188,12 +174,6 @@ public: const hRefConstThermo& ); - friend hRefConstThermo operator- <EquationOfState> - ( - const hRefConstThermo&, - const hRefConstThermo& - ); - friend hRefConstThermo operator* <EquationOfState> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H index 29bd2c97530a672a8ced3c1a573500278bdd328a..575a648ddf12f70319b29aa11b5eaa2aca36b27e 100644 --- a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H +++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,17 +71,6 @@ Foam::hRefConstThermo<EquationOfState>::clone() const } -template<class EquationOfState> -inline Foam::autoPtr<Foam::hRefConstThermo<EquationOfState>> -Foam::hRefConstThermo<EquationOfState>::New(Istream& is) -{ - return autoPtr<hRefConstThermo<EquationOfState>> - ( - new hRefConstThermo<EquationOfState>(is) - ); -} - - template<class EquationOfState> inline Foam::autoPtr<Foam::hRefConstThermo<EquationOfState>> Foam::hRefConstThermo<EquationOfState>::New(const dictionary& dict) @@ -106,50 +95,50 @@ inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::limit template<class EquationOfState> -inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::cp +inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::Cp ( const scalar p, const scalar T ) const { - return Cp_ + EquationOfState::cp(p, T); + return Cp_ + EquationOfState::Cp(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::ha +inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::Ha ( const scalar p, const scalar T ) const { - return Cp_*(T-Tref_) + Href_ + Hf_ + EquationOfState::h(p, T); + return Cp_*(T-Tref_) + Href_ + Hf_ + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::hs +inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::Hs ( const scalar p, const scalar T ) const { - return Cp_*(T-Tref_) + Href_ + EquationOfState::h(p, T); + return Cp_*(T-Tref_) + Href_ + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::hc() const +inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::Hc() const { return Hf_; } template<class EquationOfState> -inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::s +inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::S ( const scalar p, const scalar T ) const { - return Cp_*log(T/Tstd) + EquationOfState::s(p, T); + return Cp_*log(T/Tstd) + EquationOfState::S(p, T); } @@ -161,33 +150,18 @@ inline void Foam::hRefConstThermo<EquationOfState>::operator+= const hRefConstThermo<EquationOfState>& ct ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::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 EquationOfState> -inline void Foam::hRefConstThermo<EquationOfState>::operator-= -( - const hRefConstThermo<EquationOfState>& ct -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(ct); - - molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + const scalar Y2 = ct.Y()/this->Y(); - Cp_ = molr1*Cp_ - molr2*ct.Cp_; - Hf_ = molr1*Hf_ - molr2*ct.Hf_; + Cp_ = Y1*Cp_ + Y2*ct.Cp_; + Hf_ = Y1*Hf_ + Y2*ct.Hf_; + } } @@ -206,42 +180,32 @@ inline Foam::hRefConstThermo<EquationOfState> Foam::operator+ + static_cast<const EquationOfState&>(ct2) ); - return hRefConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cp_ - + ct2.nMoles()/eofs.nMoles()*ct2.Cp_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - + ct2.nMoles()/eofs.nMoles()*ct2.Hf_, - ct1.nMoles()/eofs.nMoles()*ct1.Tref_ - + ct2.nMoles()/eofs.nMoles()*ct2.Tref_, - ct1.nMoles()/eofs.nMoles()*ct1.Href_ - + ct2.nMoles()/eofs.nMoles()*ct2.Href_ - ); -} - - -template<class EquationOfState> -inline Foam::hRefConstThermo<EquationOfState> Foam::operator- -( - const hRefConstThermo<EquationOfState>& ct1, - const hRefConstThermo<EquationOfState>& ct2 -) -{ - EquationOfState eofs - ( - static_cast<const EquationOfState&>(ct1) - - static_cast<const EquationOfState&>(ct2) - ); - - return hRefConstThermo<EquationOfState> - ( - eofs, - ct1.nMoles()/eofs.nMoles()*ct1.Cp_ - - ct2.nMoles()/eofs.nMoles()*ct2.Cp_, - ct1.nMoles()/eofs.nMoles()*ct1.Hf_ - - ct2.nMoles()/eofs.nMoles()*ct2.Hf_ - ); + if (mag(eofs.Y()) < SMALL) + { + return hRefConstThermo<EquationOfState> + ( + eofs, + ct1.Cp_, + ct1.Hf_, + ct1.Tref_, + ct1.Href_ + ); + } + else + { + return hRefConstThermo<EquationOfState> + ( + eofs, + ct1.Y()/eofs.Y()*ct1.Cp_ + + ct2.Y()/eofs.Y()*ct2.Cp_, + ct1.Y()/eofs.Y()*ct1.Hf_ + + ct2.Y()/eofs.Y()*ct2.Hf_, + ct1.Y()/eofs.Y()*ct1.Tref_ + + ct2.Y()/eofs.Y()*ct2.Tref_, + ct1.Y()/eofs.Y()*ct1.Href_ + + ct2.Y()/eofs.Y()*ct2.Href_ + ); + } } @@ -270,7 +234,20 @@ inline Foam::hRefConstThermo<EquationOfState> Foam::operator== const hRefConstThermo<EquationOfState>& ct2 ) { - return ct2 - ct1; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(ct1) + == static_cast<const EquationOfState&>(ct2) + ); + + return hRefConstThermo<EquationOfState> + ( + eofs, + ct2.Y()/eofs.Y()*ct2.Cp_ + - ct1.Y()/eofs.Y()*ct1.Cp_, + ct2.Y()/eofs.Y()*ct2.Hf_ + - ct1.Y()/eofs.Y()*ct1.Hf_ + ); } diff --git a/src/thermophysicalModels/specie/thermo/janaf/janafThermo.C b/src/thermophysicalModels/specie/thermo/janaf/janafThermo.C index 63c379825d9eb7ddbedb0485dcbc2c615a598a95..6a4d0d4dc046b2602f55d7e1825d6f4732c38460 100644 --- a/src/thermophysicalModels/specie/thermo/janaf/janafThermo.C +++ b/src/thermophysicalModels/specie/thermo/janaf/janafThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,31 +56,6 @@ void Foam::janafThermo<EquationOfState>::checkInputData() const // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class EquationOfState> -Foam::janafThermo<EquationOfState>::janafThermo(Istream& is) -: - EquationOfState(is), - Tlow_(readScalar(is)), - Thigh_(readScalar(is)), - Tcommon_(readScalar(is)) -{ - checkInputData(); - - forAll(highCpCoeffs_, i) - { - is >> highCpCoeffs_[i]; - } - - forAll(lowCpCoeffs_, i) - { - is >> lowCpCoeffs_[i]; - } - - // Check state of Istream - is.check("janafThermo::janafThermo(Istream& is)"); -} - - template<class EquationOfState> Foam::janafThermo<EquationOfState>::janafThermo(const dictionary& dict) : @@ -91,6 +66,13 @@ Foam::janafThermo<EquationOfState>::janafThermo(const dictionary& dict) highCpCoeffs_(dict.subDict("thermodynamics").lookup("highCpCoeffs")), lowCpCoeffs_(dict.subDict("thermodynamics").lookup("lowCpCoeffs")) { + // Convert coefficients to mass-basis + for (label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) + { + highCpCoeffs_[coefLabel] *= this->R(); + lowCpCoeffs_[coefLabel] *= this->R(); + } + checkInputData(); } @@ -102,12 +84,21 @@ void Foam::janafThermo<EquationOfState>::write(Ostream& os) const { EquationOfState::write(os); + // Convert coefficients back to dimensionless form + coeffArray highCpCoeffs; + coeffArray lowCpCoeffs; + for (label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) + { + highCpCoeffs[coefLabel] = highCpCoeffs_[coefLabel]/this->R(); + lowCpCoeffs[coefLabel] = lowCpCoeffs_[coefLabel]/this->R(); + } + dictionary dict("thermodynamics"); dict.add("Tlow", Tlow_); dict.add("Thigh", Thigh_); dict.add("Tcommon", Tcommon_); - dict.add("highCpCoeffs", highCpCoeffs_); - dict.add("lowCpCoeffs", lowCpCoeffs_); + dict.add("highCpCoeffs", highCpCoeffs); + dict.add("lowCpCoeffs", lowCpCoeffs); os << indent << dict.dictName() << dict; } @@ -121,32 +112,7 @@ Foam::Ostream& Foam::operator<< const janafThermo<EquationOfState>& jt ) { - os << static_cast<const EquationOfState&>(jt) << nl - << " " << jt.Tlow_ - << tab << jt.Thigh_ - << tab << jt.Tcommon_; - - os << nl << " "; - - forAll(jt.highCpCoeffs_, i) - { - os << jt.highCpCoeffs_[i] << ' '; - } - - os << nl << " "; - - forAll(jt.lowCpCoeffs_, i) - { - os << jt.lowCpCoeffs_[i] << ' '; - } - - os << endl; - - os.check - ( - "operator<<(Ostream& os, const janafThermo<EquationOfState>& jt)" - ); - + jt.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/janaf/janafThermo.H b/src/thermophysicalModels/specie/thermo/janaf/janafThermo.H index dec8cfa01f2c89041c9b7ab1f0579087d5641dd8..916320007908374e1a32ed331d1dcb0379ede02b 100644 --- a/src/thermophysicalModels/specie/thermo/janaf/janafThermo.H +++ b/src/thermophysicalModels/specie/thermo/janaf/janafThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,13 +59,6 @@ inline janafThermo<EquationOfState> operator+ const janafThermo<EquationOfState>& ); -template<class EquationOfState> -inline janafThermo<EquationOfState> operator- -( - const janafThermo<EquationOfState>&, - const janafThermo<EquationOfState>& -); - template<class EquationOfState> inline janafThermo<EquationOfState> operator* ( @@ -138,12 +131,10 @@ public: const scalar Thigh, const scalar Tcommon, const coeffArray& highCpCoeffs, - const coeffArray& lowCpCoeffs + const coeffArray& lowCpCoeffs, + const bool convertCoeffs = false ); - //- Construct from Istream - janafThermo(Istream&); - //- Construct from dictionary janafThermo(const dictionary& dict); @@ -183,20 +174,20 @@ public: // Fundamental properties - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kg 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; + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; - //- Sensible enthalpy [J/kmol] - inline scalar hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kmol] - inline scalar hc() const; + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; - //- Entropy [J/(kmol K)] - inline scalar s(const scalar p, const scalar T) const; + //- Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; // I-O @@ -208,7 +199,6 @@ public: // Member operators inline void operator+=(const janafThermo&); - inline void operator-=(const janafThermo&); // Friend operators @@ -219,12 +209,6 @@ public: const janafThermo& ); - friend janafThermo operator- <EquationOfState> - ( - const janafThermo&, - const janafThermo& - ); - friend janafThermo operator* <EquationOfState> ( const scalar, diff --git a/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H b/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H index b3fd676a297f3117b18fa85aba4b59ad7fceaf5a..8935b04685cf19eef53b6347f9a634bd8476e6da 100644 --- a/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H +++ b/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,8 @@ inline Foam::janafThermo<EquationOfState>::janafThermo const scalar Thigh, const scalar Tcommon, const typename janafThermo<EquationOfState>::coeffArray& highCpCoeffs, - const typename janafThermo<EquationOfState>::coeffArray& lowCpCoeffs + const typename janafThermo<EquationOfState>::coeffArray& lowCpCoeffs, + const bool convertCoeffs ) : EquationOfState(st), @@ -44,10 +45,21 @@ inline Foam::janafThermo<EquationOfState>::janafThermo Thigh_(Thigh), Tcommon_(Tcommon) { - for (label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) + if (convertCoeffs) { - highCpCoeffs_[coefLabel] = highCpCoeffs[coefLabel]; - lowCpCoeffs_[coefLabel] = lowCpCoeffs[coefLabel]; + for (label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) + { + highCpCoeffs_[coefLabel] = highCpCoeffs[coefLabel]*this->R(); + lowCpCoeffs_[coefLabel] = lowCpCoeffs[coefLabel]*this->R(); + } + } + else + { + for (label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) + { + highCpCoeffs_[coefLabel] = highCpCoeffs[coefLabel]; + lowCpCoeffs_[coefLabel] = lowCpCoeffs[coefLabel]; + } } } @@ -155,7 +167,7 @@ Foam::janafThermo<EquationOfState>::lowCpCoeffs() const template<class EquationOfState> -inline Foam::scalar Foam::janafThermo<EquationOfState>::cp +inline Foam::scalar Foam::janafThermo<EquationOfState>::Cp ( const scalar p, const scalar T @@ -163,44 +175,43 @@ inline Foam::scalar Foam::janafThermo<EquationOfState>::cp { const coeffArray& a = coeffs(T); return - RR*((((a[4]*T + a[3])*T + a[2])*T + a[1])*T + a[0]) - + EquationOfState::cp(p, T); + ((((a[4]*T + a[3])*T + a[2])*T + a[1])*T + a[0]) + + EquationOfState::Cp(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::janafThermo<EquationOfState>::ha +inline Foam::scalar Foam::janafThermo<EquationOfState>::Ha ( const scalar p, const scalar T ) const { const coeffArray& a = coeffs(T); - return RR* + return ( ((((a[4]/5.0*T + a[3]/4.0)*T + a[2]/3.0)*T + a[1]/2.0)*T + a[0])*T + a[5] - ) - + EquationOfState::h(p, T); + ) + EquationOfState::H(p, T); } template<class EquationOfState> -inline Foam::scalar Foam::janafThermo<EquationOfState>::hs +inline Foam::scalar Foam::janafThermo<EquationOfState>::Hs ( const scalar p, const scalar T ) const { - return ha(p, T) - hc(); + return Ha(p, T) - Hc(); } template<class EquationOfState> -inline Foam::scalar Foam::janafThermo<EquationOfState>::hc() const +inline Foam::scalar Foam::janafThermo<EquationOfState>::Hc() const { const coeffArray& a = lowCpCoeffs_; - return RR* + return ( ( (((a[4]/5.0*Tstd + a[3]/4.0)*Tstd + a[2]/3.0)*Tstd + a[1]/2.0)*Tstd @@ -211,7 +222,7 @@ inline Foam::scalar Foam::janafThermo<EquationOfState>::hc() const template<class EquationOfState> -inline Foam::scalar Foam::janafThermo<EquationOfState>::s +inline Foam::scalar Foam::janafThermo<EquationOfState>::S ( const scalar p, const scalar T @@ -219,12 +230,10 @@ inline Foam::scalar Foam::janafThermo<EquationOfState>::s { const coeffArray& a = coeffs(T); return - RR* ( (((a[4]/4.0*T + a[3]/3.0)*T + a[2]/2.0)*T + a[1])*T + a[0]*log(T) + a[6] - ) - + EquationOfState::s(p, T); + ) + EquationOfState::S(p, T); } @@ -236,84 +245,47 @@ inline void Foam::janafThermo<EquationOfState>::operator+= const janafThermo<EquationOfState>& jt ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); EquationOfState::operator+=(jt); - molr1 /= this->nMoles(); - scalar molr2 = jt.nMoles()/this->nMoles(); - - Tlow_ = max(Tlow_, jt.Tlow_); - Thigh_ = min(Thigh_, jt.Thigh_); - - if (janafThermo<EquationOfState>::debug && notEqual(Tcommon_, jt.Tcommon_)) + if (mag(this->Y()) > SMALL) { - FatalErrorInFunction - << "Tcommon " << Tcommon_ << " for " - << (this->name().size() ? this->name() : "others") - << " != " << jt.Tcommon_ << " for " - << (jt.name().size() ? jt.name() : "others") - << exit(FatalError); - } - - for - ( - label coefLabel=0; - coefLabel<janafThermo<EquationOfState>::nCoeffs_; - coefLabel++ - ) - { - highCpCoeffs_[coefLabel] = - molr1*highCpCoeffs_[coefLabel] - + molr2*jt.highCpCoeffs_[coefLabel]; - - lowCpCoeffs_[coefLabel] = - molr1*lowCpCoeffs_[coefLabel] - + molr2*jt.lowCpCoeffs_[coefLabel]; - } -} - - -template<class EquationOfState> -inline void Foam::janafThermo<EquationOfState>::operator-= -( - const janafThermo<EquationOfState>& jt -) -{ - scalar molr1 = this->nMoles(); - - EquationOfState::operator-=(jt); - - molr1 /= this->nMoles(); - scalar molr2 = jt.nMoles()/this->nMoles(); + Y1 /= this->Y(); + const scalar Y2 = jt.Y()/this->Y(); - Tlow_ = max(Tlow_, jt.Tlow_); - Thigh_ = min(Thigh_, jt.Thigh_); + Tlow_ = max(Tlow_, jt.Tlow_); + Thigh_ = min(Thigh_, jt.Thigh_); - if (janafThermo<EquationOfState>::debug && notEqual(Tcommon_, jt.Tcommon_)) - { - FatalErrorInFunction - << "Tcommon " << Tcommon_ << " for " - << (this->name().size() ? this->name() : "others") - << " != " << jt.Tcommon_ << " for " - << (jt.name().size() ? jt.name() : "others") - << exit(FatalError); - } - - for - ( - label coefLabel=0; - coefLabel<janafThermo<EquationOfState>::nCoeffs_; - coefLabel++ - ) - { - highCpCoeffs_[coefLabel] = - molr1*highCpCoeffs_[coefLabel] - - molr2*jt.highCpCoeffs_[coefLabel]; - - lowCpCoeffs_[coefLabel] = - molr1*lowCpCoeffs_[coefLabel] - - molr2*jt.lowCpCoeffs_[coefLabel]; + if + ( + janafThermo<EquationOfState>::debug + && notEqual(Tcommon_, jt.Tcommon_) + ) + { + FatalErrorInFunction + << "Tcommon " << Tcommon_ << " for " + << (this->name().size() ? this->name() : "others") + << " != " << jt.Tcommon_ << " for " + << (jt.name().size() ? jt.name() : "others") + << exit(FatalError); + } + + for + ( + label coefLabel=0; + coefLabel<janafThermo<EquationOfState>::nCoeffs_; + coefLabel++ + ) + { + highCpCoeffs_[coefLabel] = + Y1*highCpCoeffs_[coefLabel] + + Y2*jt.highCpCoeffs_[coefLabel]; + + lowCpCoeffs_[coefLabel] = + Y1*lowCpCoeffs_[coefLabel] + + Y2*jt.lowCpCoeffs_[coefLabel]; + } } } @@ -330,66 +302,103 @@ inline Foam::janafThermo<EquationOfState> Foam::operator+ EquationOfState eofs = jt1; eofs += jt2; - scalar molr1 = jt1.nMoles()/eofs.nMoles(); - scalar molr2 = jt2.nMoles()/eofs.nMoles(); - - typename janafThermo<EquationOfState>::coeffArray highCpCoeffs; - typename janafThermo<EquationOfState>::coeffArray lowCpCoeffs; - - for - ( - label coefLabel=0; - coefLabel<janafThermo<EquationOfState>::nCoeffs_; - coefLabel++ - ) + if (mag(eofs.Y()) < SMALL) { - highCpCoeffs[coefLabel] = - molr1*jt1.highCpCoeffs_[coefLabel] - + molr2*jt2.highCpCoeffs_[coefLabel]; - - lowCpCoeffs[coefLabel] = - molr1*jt1.lowCpCoeffs_[coefLabel] - + molr2*jt2.lowCpCoeffs_[coefLabel]; + return janafThermo<EquationOfState> + ( + eofs, + jt1.Tlow_, + jt1.Thigh_, + jt1.Tcommon_, + jt1.highCpCoeffs_, + jt1.lowCpCoeffs_ + ); } - - if - ( - janafThermo<EquationOfState>::debug - && notEqual(jt1.Tcommon_, jt2.Tcommon_) - ) + else { - FatalErrorInFunction - << "Tcommon " << jt1.Tcommon_ << " for " - << (jt1.name().size() ? jt1.name() : "others") - << " != " << jt2.Tcommon_ << " for " - << (jt2.name().size() ? jt2.name() : "others") - << exit(FatalError); + const scalar Y1 = jt1.Y()/eofs.Y(); + const scalar Y2 = jt2.Y()/eofs.Y(); + + typename janafThermo<EquationOfState>::coeffArray highCpCoeffs; + typename janafThermo<EquationOfState>::coeffArray lowCpCoeffs; + + for + ( + label coefLabel=0; + coefLabel<janafThermo<EquationOfState>::nCoeffs_; + coefLabel++ + ) + { + highCpCoeffs[coefLabel] = + Y1*jt1.highCpCoeffs_[coefLabel] + + Y2*jt2.highCpCoeffs_[coefLabel]; + + lowCpCoeffs[coefLabel] = + Y1*jt1.lowCpCoeffs_[coefLabel] + + Y2*jt2.lowCpCoeffs_[coefLabel]; + } + + if + ( + janafThermo<EquationOfState>::debug + && notEqual(jt1.Tcommon_, jt2.Tcommon_) + ) + { + FatalErrorInFunction + << "Tcommon " << jt1.Tcommon_ << " for " + << (jt1.name().size() ? jt1.name() : "others") + << " != " << jt2.Tcommon_ << " for " + << (jt2.name().size() ? jt2.name() : "others") + << exit(FatalError); + } + + return janafThermo<EquationOfState> + ( + eofs, + max(jt1.Tlow_, jt2.Tlow_), + min(jt1.Thigh_, jt2.Thigh_), + jt1.Tcommon_, + highCpCoeffs, + lowCpCoeffs + ); } +} + +template<class EquationOfState> +inline Foam::janafThermo<EquationOfState> Foam::operator* +( + const scalar s, + const janafThermo<EquationOfState>& jt +) +{ return janafThermo<EquationOfState> ( - eofs, - max(jt1.Tlow_, jt2.Tlow_), - min(jt1.Thigh_, jt2.Thigh_), - jt1.Tcommon_, - highCpCoeffs, - lowCpCoeffs + s*static_cast<const EquationOfState&>(jt), + jt.Tlow_, + jt.Thigh_, + jt.Tcommon_, + jt.highCpCoeffs_, + jt.lowCpCoeffs_ ); } template<class EquationOfState> -inline Foam::janafThermo<EquationOfState> Foam::operator- +inline Foam::janafThermo<EquationOfState> Foam::operator== ( const janafThermo<EquationOfState>& jt1, const janafThermo<EquationOfState>& jt2 ) { - EquationOfState eofs = jt1; - eofs -= jt2; + EquationOfState eofs + ( + static_cast<const EquationOfState&>(jt1) + == static_cast<const EquationOfState&>(jt2) + ); - scalar molr1 = jt1.nMoles()/eofs.nMoles(); - scalar molr2 = jt2.nMoles()/eofs.nMoles(); + const scalar Y1 = jt2.Y()/eofs.Y(); + const scalar Y2 = jt1.Y()/eofs.Y(); typename janafThermo<EquationOfState>::coeffArray highCpCoeffs; typename janafThermo<EquationOfState>::coeffArray lowCpCoeffs; @@ -402,68 +411,38 @@ inline Foam::janafThermo<EquationOfState> Foam::operator- ) { highCpCoeffs[coefLabel] = - molr1*jt1.highCpCoeffs_[coefLabel] - - molr2*jt2.highCpCoeffs_[coefLabel]; + Y1*jt2.highCpCoeffs_[coefLabel] + - Y2*jt1.highCpCoeffs_[coefLabel]; lowCpCoeffs[coefLabel] = - molr1*jt1.lowCpCoeffs_[coefLabel] - - molr2*jt2.lowCpCoeffs_[coefLabel]; + Y1*jt2.lowCpCoeffs_[coefLabel] + - Y2*jt1.lowCpCoeffs_[coefLabel]; } if ( janafThermo<EquationOfState>::debug - && notEqual(jt1.Tcommon_, jt2.Tcommon_) + && notEqual(jt2.Tcommon_, jt1.Tcommon_) ) { FatalErrorInFunction - << "Tcommon " << jt1.Tcommon_ << " for " - << (jt1.name().size() ? jt1.name() : "others") - << " != " << jt2.Tcommon_ << " for " + << "Tcommon " << jt2.Tcommon_ << " for " << (jt2.name().size() ? jt2.name() : "others") + << " != " << jt1.Tcommon_ << " for " + << (jt1.name().size() ? jt1.name() : "others") << exit(FatalError); } return janafThermo<EquationOfState> ( eofs, - max(jt1.Tlow_, jt2.Tlow_), - min(jt1.Thigh_, jt2.Thigh_), - jt1.Tcommon_, + max(jt2.Tlow_, jt1.Tlow_), + min(jt2.Thigh_, jt1.Thigh_), + jt2.Tcommon_, highCpCoeffs, lowCpCoeffs ); } -template<class EquationOfState> -inline Foam::janafThermo<EquationOfState> Foam::operator* -( - const scalar s, - const janafThermo<EquationOfState>& jt -) -{ - return janafThermo<EquationOfState> - ( - s*static_cast<const EquationOfState&>(jt), - jt.Tlow_, - jt.Thigh_, - jt.Tcommon_, - jt.highCpCoeffs_, - jt.lowCpCoeffs_ - ); -} - - -template<class EquationOfState> -inline Foam::janafThermo<EquationOfState> Foam::operator== -( - const janafThermo<EquationOfState>& jt1, - const janafThermo<EquationOfState>& jt2 -) -{ - return jt2 - jt1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/sensibleEnthalpy/sensibleEnthalpy.H b/src/thermophysicalModels/specie/thermo/sensibleEnthalpy/sensibleEnthalpy.H index 9e0fd32a8a9d6cd13c90cfccc16f9866bc63318b..72ea5eee9e056a8525ff511efcb3dc16c1763c24 100644 --- a/src/thermophysicalModels/specie/thermo/sensibleEnthalpy/sensibleEnthalpy.H +++ b/src/thermophysicalModels/specie/thermo/sensibleEnthalpy/sensibleEnthalpy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,8 +28,7 @@ Group grpSpecieThermo Description - Thermodynamics mapping class to expose the sensible enthalpy function - as the standard enthalpy function h(T). + Thermodynamics mapping class to expose the sensible enthalpy functions. \*---------------------------------------------------------------------------*/ @@ -73,30 +72,19 @@ public: return "h"; } - // Sensible enthalpy [J/kmol] - scalar he + // Heat capacity at constant pressure [J/(kg K)] + scalar Cpv ( const Thermo& thermo, const scalar p, const scalar T ) const { - return thermo.hs(p, T); + return thermo.Cp(p, T); } - // Heat capacity at constant pressure [J/(kmol K)] - scalar cpv - ( - const Thermo& thermo, - const scalar p, - const scalar T - ) const - { - return thermo.cp(p, T); - } - - //- cp/cp [] - scalar cpBycpv + //- Cp/Cp [] + scalar CpByCpv ( const Thermo& thermo, const scalar p, diff --git a/src/thermophysicalModels/specie/thermo/sensibleInternalEnergy/sensibleInternalEnergy.H b/src/thermophysicalModels/specie/thermo/sensibleInternalEnergy/sensibleInternalEnergy.H index 3f4386c28260c1d58abfe75bcc76de057e2f3f83..9b2f97b053aba5c3e8e25ab3aeefe02af308544e 100644 --- a/src/thermophysicalModels/specie/thermo/sensibleInternalEnergy/sensibleInternalEnergy.H +++ b/src/thermophysicalModels/specie/thermo/sensibleInternalEnergy/sensibleInternalEnergy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,8 +28,8 @@ Group grpSpecieThermo Description - Thermodynamics mapping class to expose the sensible internal energy function - as the standard internal energy function e(T). + Thermodynamics mapping class to expose the sensible internal energy + functions. \*---------------------------------------------------------------------------*/ @@ -73,29 +73,19 @@ public: return "e"; } - //- Sensible Internal energy [J/kmol] - scalar he - ( - const Thermo& thermo, - const scalar p, - const scalar T) const - { - return thermo.es(p, T); - } - - //- Heat capacity at constant volume [J/(kmol K)] - scalar cpv + //- Heat capacity at constant volume [J/(kg K)] + scalar Cpv ( const Thermo& thermo, const scalar p, const scalar T ) const { - return thermo.cv(p, T); + return thermo.Cv(p, T); } - //- cp/cv [] - scalar cpBycpv + //- Cp/Cv [] + scalar CpByCpv ( const Thermo& thermo, const scalar p, diff --git a/src/thermophysicalModels/specie/thermo/thermo/thermo.C b/src/thermophysicalModels/specie/thermo/thermo/thermo.C index 400c2d4a88f8f646fbbc51057b3ed09916e2469b..09ce3f1d56b3c7bf1ef13d1902942a84cfdcccd6 100644 --- a/src/thermophysicalModels/specie/thermo/thermo/thermo.C +++ b/src/thermophysicalModels/specie/thermo/thermo/thermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "thermo.H" -#include "IOstreams.H" /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ @@ -37,15 +36,6 @@ const int Foam::species::thermo<Thermo, Type>::maxIter_ = 100; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, template<class> class Type> -Foam::species::thermo<Thermo, Type>::thermo(Istream& is) -: - Thermo(is) -{ - is.check("thermo<Thermo, Type>::thermo(Istream&)"); -} - - template<class Thermo, template<class> class Type> Foam::species::thermo<Thermo, Type>::thermo(const dictionary& dict) : @@ -70,9 +60,7 @@ Foam::Ostream& Foam::species::operator<< Ostream& os, const thermo<Thermo, Type>& st ) { - os << static_cast<const Thermo&>(st); - - os.check("Ostream& operator<<(Ostream&, const thermo&)"); + st.write(os); return os; } diff --git a/src/thermophysicalModels/specie/thermo/thermo/thermo.H b/src/thermophysicalModels/specie/thermo/thermo/thermo.H index 9820f114734a4d14c7f1b60bba00bf093f409c22..a5cdba6ecd84738b178fa745ec1b41d655e4821a 100644 --- a/src/thermophysicalModels/specie/thermo/thermo/thermo.H +++ b/src/thermophysicalModels/specie/thermo/thermo/thermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -59,13 +59,6 @@ inline thermo<Thermo, Type> operator+ const thermo<Thermo, Type>& ); -template<class Thermo, template<class> class Type> -inline thermo<Thermo, Type> operator- -( - const thermo<Thermo, Type>&, - const thermo<Thermo, Type>& -); - template<class Thermo, template<class> class Type> inline thermo<Thermo, Type> operator* ( @@ -134,9 +127,6 @@ public: //- Construct from components inline thermo(const Thermo& sp); - //- Construct from Istream - thermo(Istream&); - //- Construct from dictionary thermo(const dictionary& dict); @@ -154,102 +144,94 @@ public: + Type<thermo<Thermo, Type>>::typeName(); } - // Fundamental properties - // (These functions must be provided in derived types) - - // Heat capacity at constant pressure [J/(kmol K)] - // scalar cp(const scalar) const; + //- Name of Enthalpy/Internal energy + static inline word heName(); - // Absolute Enthalpy [J/kmol] - // scalar ha(const scalar) const; - // Sensible enthalpy [J/kmol] - // scalar hs(const scalar) const; - - // Chemical enthalpy [J/kmol] - // scalar hc(const scalar) const; + // Fundamental properties + // (These functions must be provided in derived types) - // Entropy [J/(kmol K)] - // scalar s(const scalar) const; + // Heat capacity at constant pressure [J/(kg K)] + // inline scalar Cp(const scalar p, const scalar T) const; + // Sensible enthalpy [J/kg] + // inline scalar Hs(const scalar p, const scalar T) const; - // Calculate and return derived properties - // (These functions need not provided in derived types) + // Chemical enthalpy [J/kg] + // inline scalar Hc() const; - // Mole specific properties + // Absolute Enthalpy [J/kg] + // inline scalar Ha(const scalar p, const scalar T) const; - //- Name of Enthalpy/Internal energy - static inline word heName(); + // Entropy [J/(kg K)] + // inline scalar S(const scalar p, const scalar T) const; - //- Enthalpy/Internal energy [J/kmol] - inline scalar he(const scalar p, const scalar T) const; - //- Heat capacity at constant volume [J/(kmol K)] - inline scalar cv(const scalar p, const scalar T) const; + // Mass specific derived properties - //- Heat capacity at constant pressure/volume [J/(kmol K)] - inline scalar cpv(const scalar p, const scalar T) const; + //- Heat capacity at constant volume [J/(kg K)] + inline scalar Cv(const scalar p, const scalar T) const; - //- Gamma = cp/cv [] - inline scalar gamma(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure/volume [J/(kg K)] + inline scalar Cpv(const scalar p, const scalar T) const; - //- Ratio of heat capacity at constant pressure to that at - // constant pressure/volume [] - inline scalar cpBycpv(const scalar p, const scalar T) const; + //- Gamma = Cp/Cv [] + inline scalar gamma(const scalar p, const scalar T) const; - //- Sensible internal energy [J/kmol] - inline scalar es(const scalar p, const scalar T) const; + //- Ratio of heat capacity at constant pressure to that at + // constant pressure/volume [] + inline scalar CpByCpv(const scalar p, const scalar T) const; - //- Absolute internal energy [J/kmol] - inline scalar ea(const scalar p, const scalar T) const; + //- Enthalpy/Internal energy [J/kg] + inline scalar HE(const scalar p, const scalar T) const; - //- Gibbs free energy [J/kmol] - inline scalar g(const scalar p, const scalar T) const; + //- Sensible internal energy [J/kg] + inline scalar Es(const scalar p, const scalar T) const; - //- Helmholtz free energy [J/kmol] - inline scalar a(const scalar p, const scalar T) const; + //- Absolute internal energy [J/kg] + inline scalar Ea(const scalar p, const scalar T) const; + //- Gibbs free energy [J/kg] + inline scalar G(const scalar p, const scalar T) const; - // Mass specific properties + //- Helmholtz free energy [J/kg] + inline scalar A(const scalar p, const scalar T) const; - //- Heat capacity at constant pressure [J/(kg K)] - inline scalar Cp(const scalar p, const scalar T) const; - //- Heat capacity at constant volume [J/(kg K)] - inline scalar Cv(const scalar p, const scalar T) const; + // Mole specific derived properties - //- Heat capacity at constant pressure/volume [J/(kg K)] - inline scalar Cpv(const scalar p, const scalar T) const; + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp(const scalar p, const scalar T) const; - //- Enthalpy/Internal energy [J/kg] - inline scalar HE(const scalar p, const scalar T) const; + //- Absolute Enthalpy [J/kmol] + inline scalar ha(const scalar p, const scalar T) const; - //- Sensible enthalpy [J/kg] - inline scalar Hs(const scalar p, const scalar T) const; + //- Sensible enthalpy [J/kmol] + inline scalar hs(const scalar p, const scalar T) const; - //- Chemical enthalpy [J/kg] - inline scalar Hc() const; + //- Chemical enthalpy [J/kmol] + inline scalar hc() const; - //- Absolute Enthalpy [J/kg] - inline scalar Ha(const scalar p, const scalar T) const; + //- Entropy [J/(kmol K)] + inline scalar s(const scalar p, const scalar T) const; - //- Entropy [J/(kg K)] - inline scalar S(const scalar p, const scalar T) const; + //- Enthalpy/Internal energy [J/kmol] + inline scalar he(const scalar p, const scalar T) const; - //- Internal energy [J/kg] - inline scalar E(const scalar p, const scalar T) const; + //- Heat capacity at constant volume [J/(kmol K)] + inline scalar cv(const scalar p, const scalar T) const; - //- Sensible internal energy [J/kg] - inline scalar Es(const scalar p, const scalar T) const; + //- Sensible internal energy [J/kmol] + inline scalar es(const scalar p, const scalar T) const; - //- Absolute internal energy [J/kg] - inline scalar Ea(const scalar p, const scalar T) const; + //- Absolute internal energy [J/kmol] + inline scalar ea(const scalar p, const scalar T) const; - //- Gibbs free energy [J/kg] - inline scalar G(const scalar p, const scalar T) const; + //- Gibbs free energy [J/kmol] + inline scalar g(const scalar p, const scalar T) const; - //- Helmholtz free energy [J/kg] - inline scalar A(const scalar p, const scalar T) const; + //- Helmholtz free energy [J/kmol] + inline scalar a(const scalar p, const scalar T) const; // Equilibrium reaction thermodynamics @@ -345,8 +327,6 @@ public: // Member operators inline void operator+=(const thermo&); - inline void operator-=(const thermo&); - inline void operator*=(const scalar); @@ -358,12 +338,6 @@ public: const thermo& ); - friend thermo operator- <Thermo, Type> - ( - const thermo&, - const thermo& - ); - friend thermo operator* <Thermo, Type> ( const scalar s, diff --git a/src/thermophysicalModels/specie/thermo/thermo/thermoI.H b/src/thermophysicalModels/specie/thermo/thermo/thermoI.H index 44197fd18f7e6a526cae47d8b591250b32819ec2..cdaa3400762d7999037e26a8321a7c313fe5e98f 100644 --- a/src/thermophysicalModels/specie/thermo/thermo/thermoI.H +++ b/src/thermophysicalModels/specie/thermo/thermo/thermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,6 +49,13 @@ inline Foam::scalar Foam::species::thermo<Thermo, Type>::T scalar (thermo<Thermo, Type>::*limit)(const scalar) const ) const { + if (T0 < 0) + { + FatalErrorInFunction + << "Negative initial temperature T0: " << T0 + << abort(FatalError); + } + scalar Test = T0; scalar Tnew = T0; scalar Ttol = T0*tol_; @@ -64,7 +71,7 @@ inline Foam::scalar Foam::species::thermo<Thermo, Type>::T if (iter++ > maxIter_) { FatalErrorInFunction - << "Maximum number of iterations exceeded" + << "Maximum number of iterations exceeded: " << maxIter_ << abort(FatalError); } @@ -99,25 +106,17 @@ Foam::species::thermo<Thermo, Type>::heName() template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::he(const scalar p, const scalar T) const -{ - return Type<thermo<Thermo, Type>>::he(*this, p, T); -} - - -template<class Thermo, template<class> class Type> -inline Foam::scalar -Foam::species::thermo<Thermo, Type>::cv(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::Cv(const scalar p, const scalar T) const { - return this->cp(p, T) - this->cpMcv(p, T); + return this->Cp(p, T) - this->CpMCv(p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::cpv(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::Cpv(const scalar p, const scalar T) const { - return Type<thermo<Thermo, Type>>::cpv(*this, p, T); + return Type<thermo<Thermo, Type>>::Cpv(*this, p, T); } @@ -125,155 +124,148 @@ template<class Thermo, template<class> class Type> inline Foam::scalar Foam::species::thermo<Thermo, Type>::gamma(const scalar p, const scalar T) const { - scalar cp = this->cp(p, T); - return cp/(cp - this->cpMcv(p, T)); + const scalar Cp = this->Cp(p, T); + return Cp/(Cp - this->CpMCv(p, T)); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::cpBycpv +Foam::species::thermo<Thermo, Type>::CpByCpv ( const scalar p, const scalar T ) const { - return Type<thermo<Thermo, Type>>::cpBycpv(*this, p, T); + return Type<thermo<Thermo, Type>>::CpByCpv(*this, p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::es(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::HE(const scalar p, const scalar T) const { - return this->hs(p, T) - p*this->W()/this->rho(p, T); + return Type<thermo<Thermo, Type>>::HE(*this, p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::ea(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::Es(const scalar p, const scalar T) const { - return this->ha(p, T) - p*this->W()/this->rho(p, T); + return this->Hs(p, T) - p/this->rho(p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::g(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::Ea(const scalar p, const scalar T) const { - return this->ha(p, T) - T*this->s(p, T); + return this->Ha(p, T) - p/this->rho(p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::a(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::G(const scalar p, const scalar T) const { - return this->ea(p, T) - T*this->s(p, T); + return this->Ha(p, T) - T*this->S(p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Cpv(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::A(const scalar p, const scalar T) const { - return this->cpv(p, T)/this->W(); + return this->Ea(p, T) - T*this->S(p, T); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Cp(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::cp(const scalar p, const scalar T) const { - return this->cp(p, T)/this->W(); + return this->Cp(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Cv(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::ha(const scalar p, const scalar T) const { - return this->cv(p, T)/this->W(); + return this->Ha(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::HE(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::hs(const scalar p, const scalar T) const { - return Type<thermo<Thermo, Type>>::HE(*this, p, T); + return this->Hs(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Hs(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::hc() const { - return this->hs(p, T)/this->W(); + return this->Hc()*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Hc() const +Foam::species::thermo<Thermo, Type>::s(const scalar p, const scalar T) const { - return this->hc()/this->W(); + return this->S(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Ha(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::he(const scalar p, const scalar T) const { - return this->ha(p, T)/this->W(); + return this->HE(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::S(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::cv(const scalar p, const scalar T) const { - return this->s(p, T)/this->W(); + return this->Cv(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::E(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::es(const scalar p, const scalar T) const { - return this->e(p, T)/this->W(); + return this->Es(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Es(const scalar p, const scalar T) const -{ - return this->es(p, T)/this->W(); -} - -template<class Thermo, template<class> class Type> -inline Foam::scalar -Foam::species::thermo<Thermo, Type>::Ea(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::ea(const scalar p, const scalar T) const { - return this->ea(p, T)/this->W(); + return this->Ea(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::G(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::g(const scalar p, const scalar T) const { - return this->g(p, T)/this->W(); + return this->G(p, T)*this->W(); } template<class Thermo, template<class> class Type> inline Foam::scalar -Foam::species::thermo<Thermo, Type>::A(const scalar p, const scalar T) const +Foam::species::thermo<Thermo, Type>::a(const scalar p, const scalar T) const { - return this->a(p, T)/this->W(); + return this->A(p, T)*this->W(); } @@ -281,9 +273,9 @@ template<class Thermo, template<class> class Type> inline Foam::scalar Foam::species::thermo<Thermo, Type>::K(const scalar p, const scalar T) const { - scalar arg = -this->nMoles()*this->g(Pstd, T)/(RR*T); + scalar arg = -this->Y()*this->G(Pstd, T)/(RR*T); - if (arg < 600.0) + if (arg < 600) { return exp(arg); } @@ -306,13 +298,15 @@ template<class Thermo, template<class> class Type> inline Foam::scalar Foam::species::thermo<Thermo, Type>::Kc(const scalar p, const scalar T) const { - if (equal(this->nMoles(), SMALL)) + const scalar nm = this->Y()/this->W(); + + if (equal(nm, SMALL)) { return Kp(p, T); } else { - return Kp(p, T)*pow(Pstd/(RR*T), this->nMoles()); + return Kp(p, T)*pow(Pstd/(RR*T), nm); } } @@ -324,13 +318,15 @@ inline Foam::scalar Foam::species::thermo<Thermo, Type>::Kx const scalar T ) const { - if (equal(this->nMoles(), SMALL)) + const scalar nm = this->Y()/this->W(); + + if (equal(nm, SMALL)) { return Kp(p, T); } else { - return Kp(p, T)*pow(Pstd/p, this->nMoles()); + return Kp(p, T)*pow(Pstd/p, nm); } } @@ -343,13 +339,15 @@ inline Foam::scalar Foam::species::thermo<Thermo, Type>::Kn const scalar n ) const { - if (equal(this->nMoles(), SMALL)) + const scalar nm = this->Y()/this->W(); + + if (equal(nm, SMALL)) { return Kp(p, T); } else { - return Kp(p, T)*pow(n*Pstd/p, this->nMoles()); + return Kp(p, T)*pow(n*Pstd/p, nm); } } @@ -458,16 +456,6 @@ inline void Foam::species::thermo<Thermo, Type>::operator+= } -template<class Thermo, template<class> class Type> -inline void Foam::species::thermo<Thermo, Type>::operator-= -( - const thermo<Thermo, Type>& st -) -{ - Thermo::operator-=(st); -} - - template<class Thermo, template<class> class Type> inline void Foam::species::thermo<Thermo, Type>::operator*=(const scalar s) { @@ -491,20 +479,6 @@ inline Foam::species::thermo<Thermo, Type> Foam::species::operator+ } -template<class Thermo, template<class> class Type> -inline Foam::species::thermo<Thermo, Type> Foam::species::operator- -( - const thermo<Thermo, Type>& st1, - const thermo<Thermo, Type>& st2 -) -{ - return thermo<Thermo, Type> - ( - static_cast<const Thermo&>(st1) - static_cast<const Thermo&>(st2) - ); -} - - template<class Thermo, template<class> class Type> inline Foam::species::thermo<Thermo, Type> Foam::species::operator* ( @@ -526,7 +500,10 @@ inline Foam::species::thermo<Thermo, Type> Foam::species::operator== const thermo<Thermo, Type>& st2 ) { - return st2 - st1; + return thermo<Thermo, Type> + ( + static_cast<const Thermo&>(st1) == static_cast<const Thermo&>(st2) + ); } diff --git a/src/thermophysicalModels/specie/transport/const/constTransport.C b/src/thermophysicalModels/specie/transport/const/constTransport.C index 92e4a19e4c82b3b573f68249e9148f561a6b8f3e..8b709c9c82161a3976341b6c5f1f47f8d987370a 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransport.C +++ b/src/thermophysicalModels/specie/transport/const/constTransport.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,17 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo> -Foam::constTransport<Thermo>::constTransport(Istream& is) -: - Thermo(is), - mu_(readScalar(is)), - rPr_(1.0/readScalar(is)) -{ - is.check("constTransport::constTransport(Istream& is)"); -} - - template<class Thermo> Foam::constTransport<Thermo>::constTransport(const dictionary& dict) : @@ -72,11 +61,7 @@ void Foam::constTransport<Thermo>::constTransport::write(Ostream& os) const template<class Thermo> Foam::Ostream& Foam::operator<<(Ostream& os, const constTransport<Thermo>& ct) { - operator<<(os, static_cast<const Thermo&>(ct)); - os << tab << ct.mu_ << tab << 1.0/ct.rPr_; - - os.check("Ostream& operator<<(Ostream&, const constTransport&)"); - + ct.write(os); return os; } diff --git a/src/thermophysicalModels/specie/transport/const/constTransport.H b/src/thermophysicalModels/specie/transport/const/constTransport.H index 7557f12f929656f60ca010ffb69c9ef1be3412f0..0cf7fe1dfd90cd4e8e070ee7490c07b97f8a5ae0 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransport.H +++ b/src/thermophysicalModels/specie/transport/const/constTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,6 @@ inline constTransport<Thermo> operator+ const constTransport<Thermo>& ); -template<class Thermo> -inline constTransport<Thermo> operator- -( - const constTransport<Thermo>&, - const constTransport<Thermo>& -); - template<class Thermo> inline constTransport<Thermo> operator* ( @@ -71,13 +64,6 @@ inline constTransport<Thermo> operator* const constTransport<Thermo>& ); -template<class Thermo> -inline constTransport<Thermo> operator== -( - const constTransport<Thermo>&, - const constTransport<Thermo>& -); - template<class Thermo> Ostream& operator<< ( @@ -122,18 +108,12 @@ public: //- Construct as named copy inline constTransport(const word&, const constTransport&); - //- Construct from Istream - constTransport(Istream&); - //- Construct from dictionary constTransport(const dictionary& dict); //- Construct and return a clone inline autoPtr<constTransport> clone() const; - // Selector from Istream - inline static autoPtr<constTransport> New(Istream& is); - // Selector from dictionary inline static autoPtr<constTransport> New(const dictionary& dict); @@ -168,8 +148,6 @@ public: inline void operator+=(const constTransport&); - inline void operator-=(const constTransport&); - inline void operator*=(const scalar); @@ -181,24 +159,12 @@ public: const constTransport& ); - friend constTransport operator- <Thermo> - ( - const constTransport&, - const constTransport& - ); - friend constTransport operator* <Thermo> ( const scalar, const constTransport& ); - friend constTransport operator== <Thermo> - ( - const constTransport&, - const constTransport& - ); - // Ostream Operator diff --git a/src/thermophysicalModels/specie/transport/const/constTransportI.H b/src/thermophysicalModels/specie/transport/const/constTransportI.H index 6c304476fd24366e5505fc4cc694d52ea14c57b9..ab865dd9abb5fbb7cb29b43a2bb71c1ae89a1633 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransportI.H +++ b/src/thermophysicalModels/specie/transport/const/constTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,20 +63,6 @@ Foam::constTransport<Thermo>::clone() const } -template<class Thermo> -inline Foam::autoPtr<Foam::constTransport<Thermo>> -Foam::constTransport<Thermo>::New -( - Istream& is -) -{ - return autoPtr<constTransport<Thermo>> - ( - new constTransport<Thermo>(is) - ); -} - - template<class Thermo> inline Foam::autoPtr<Foam::constTransport<Thermo>> Foam::constTransport<Thermo>::New @@ -147,38 +133,17 @@ inline void Foam::constTransport<Thermo>::operator+= const constTransport<Thermo>& st ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Thermo::operator+=(st); - if (mag(molr1) + mag(st.nMoles()) > SMALL) - { - molr1 /= this->nMoles(); - scalar molr2 = st.nMoles()/this->nMoles(); - - mu_ = molr1*mu_ + molr2*st.mu_; - rPr_ = 1.0/(molr1/rPr_ + molr2/st.rPr_); - } -} - - -template<class Thermo> -inline void Foam::constTransport<Thermo>::operator-= -( - const constTransport<Thermo>& st -) -{ - scalar molr1 = this->nMoles(); - - Thermo::operator-=(st); - - if (mag(molr1) + mag(st.nMoles()) > SMALL) + if (mag(this->Y()) > SMALL) { - molr1 /= this->nMoles(); - scalar molr2 = st.nMoles()/this->nMoles(); + Y1 /= this->Y(); + scalar Y2 = st.Y()/this->Y(); - mu_ = molr1*mu_ - molr2*st.mu_; - rPr_ = 1.0/(molr1/rPr_ - molr2/st.rPr_); + mu_ = Y1*mu_ + Y2*st.mu_; + rPr_ = 1.0/(Y1/rPr_ + Y2/st.rPr_); } } @@ -207,7 +172,7 @@ inline Foam::constTransport<Thermo> Foam::operator+ static_cast<const Thermo&>(ct1) + static_cast<const Thermo&>(ct2) ); - if (mag(ct1.nMoles()) + mag(ct2.nMoles()) < SMALL) + if (mag(t.Y()) < SMALL) { return constTransport<Thermo> ( @@ -218,50 +183,14 @@ inline Foam::constTransport<Thermo> Foam::operator+ } else { - scalar molr1 = ct1.nMoles()/t.nMoles(); - scalar molr2 = ct2.nMoles()/t.nMoles(); + scalar Y1 = ct1.Y()/t.Y(); + scalar Y2 = ct2.Y()/t.Y(); return constTransport<Thermo> ( t, - molr1*ct1.mu_ + molr2*ct2.mu_, - 1.0/(molr1/ct1.rPr_ + molr2/ct2.rPr_) - ); - } -} - - -template<class Thermo> -inline Foam::constTransport<Thermo> Foam::operator- -( - const constTransport<Thermo>& ct1, - const constTransport<Thermo>& ct2 -) -{ - Thermo t - ( - static_cast<const Thermo&>(ct1) - static_cast<const Thermo&>(ct2) - ); - - if (mag(ct1.nMoles()) + mag(ct2.nMoles()) < SMALL) - { - return constTransport<Thermo> - ( - t, - 0, - ct1.rPr_ - ); - } - else - { - scalar molr1 = ct1.nMoles()/t.nMoles(); - scalar molr2 = ct2.nMoles()/t.nMoles(); - - return constTransport<Thermo> - ( - t, - molr1*ct1.mu_ - molr2*ct2.mu_, - 1.0/(molr1/ct1.rPr_ - molr2/ct2.rPr_) + Y1*ct1.mu_ + Y2*ct2.mu_, + 1.0/(Y1/ct1.rPr_ + Y2/ct2.rPr_) ); } } @@ -283,15 +212,4 @@ inline Foam::constTransport<Thermo> Foam::operator* } -template<class Thermo> -inline Foam::constTransport<Thermo> Foam::operator== -( - const constTransport<Thermo>& ct1, - const constTransport<Thermo>& ct2 -) -{ - return ct2 - ct1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.C b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.C index b1fd1f8216650c157e8b7bd075e999609d00da7b..27366f2893142fd005602359a267426b0c8e58c6 100644 --- a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.C +++ b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,21 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -Foam::logPolynomialTransport<Thermo, PolySize>::logPolynomialTransport -( - Istream& is -) -: - Thermo(is), - muCoeffs_("muLogCoeffs<" + Foam::name(PolySize) + '>', is), - kappaCoeffs_("kappaLogCoeffs<" + Foam::name(PolySize) + '>', is) -{ - muCoeffs_ *= this->W(); - kappaCoeffs_ *= this->W(); -} - - template<class Thermo, int PolySize> Foam::logPolynomialTransport<Thermo, PolySize>::logPolynomialTransport ( @@ -64,10 +49,7 @@ Foam::logPolynomialTransport<Thermo, PolySize>::logPolynomialTransport "kappaLogCoeffs<" + Foam::name(PolySize) + '>' ) ) -{ - muCoeffs_ *= this->W(); - kappaCoeffs_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -84,12 +66,12 @@ void Foam::logPolynomialTransport<Thermo, PolySize>::write(Ostream& os) const dict.add ( word("muLogCoeffs<" + Foam::name(PolySize) + '>'), - muCoeffs_/this->W() + muCoeffs_ ); dict.add ( word("kappaLogCoeffs<" + Foam::name(PolySize) + '>'), - kappaCoeffs_/this->W() + kappaCoeffs_ ); os << indent << dict.dictName() << dict; @@ -106,21 +88,7 @@ Foam::Ostream& Foam::operator<< const logPolynomialTransport<Thermo, PolySize>& pt ) { - os << static_cast<const Thermo&>(pt) << tab - << "muLogCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.muCoeffs_/pt.W() << tab - << "kappaLogCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.kappaCoeffs_/pt.W(); - - os.check - ( - "Ostream& operator<<" - "(" - "Ostream&, " - "const logPolynomialTransport<Thermo, PolySize>&" - ")" - ); - + pt.write(os); return os; } diff --git a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H index b93f5348f4015f76d776890922192aef08f53ebe..2eb3b4bc413d5a955112f6e313b78747b6a29ff3 100644 --- a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H +++ b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,16 +24,61 @@ License Class Foam::logPolynomialTransport -Description - Transport package using polynomial functions of ln(T) for mu and kappa: +Group + grpSpecieTransport - ln(mu) = sum_i=1^N( a[i] * ln(T)^(i-1) ) - ln(kappa) = sum_i=1^N( b[i] * ln(T)^(i-1) ) +Description + Transport package using polynomial functions of \c ln(T) for \c mu and + \c kappa: + + \f[ + ln(mu) = \sum_{i=1}^N \left( a[i] * ln(T)^{i-1} \right) + \f] + + \f[ + ln(kappa) = \sum_{i=1}^N \left( b[i] * ln(T)^{i-1} \right) + \f] + +Usage + + \table + Property | Description + muCoeffs<8> | Dynamic viscosity polynomial coefficients + kappaCoeffs<8> | Thermal conductivity polynomial coefficients + \endtable + + Example of the specification of the transport properties: + \verbatim + transport + { + muCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); + kappaCoeffs<8> ( 2000 -0.15 0.023 0 0 0 0 0 ); + } + \endverbatim + + The polynomial expressions are evaluated as so: + + \f[ + \mu = 1000 - 0.05 ln(T) + 0.003 ln(T)^2 + \f] + + \f[ + \kappa = 2000 - 0.15 ln(T) + 0.023 ln(T)^2 + \f] + +Note + - Dynamic viscosity polynomial coefficients evaluate to an expression in + [Pa.s], but internally uses [Pa.s/kmol]. + - Thermal conductivity polynomial coefficients evaluate to an expression in + [W/m/K], but internally uses [W/m/K/kmol]. SourceFiles logPolynomialTransportI.H logPolynomialTransport.C +See also + Foam::Polynomial + \*---------------------------------------------------------------------------*/ #ifndef logPolynomialTransport_H @@ -57,13 +102,6 @@ inline logPolynomialTransport<Thermo, PolySize> operator+ const logPolynomialTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline logPolynomialTransport<Thermo, PolySize> operator- -( - const logPolynomialTransport<Thermo, PolySize>&, - const logPolynomialTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> inline logPolynomialTransport<Thermo, PolySize> operator* ( @@ -71,13 +109,6 @@ inline logPolynomialTransport<Thermo, PolySize> operator* const logPolynomialTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline logPolynomialTransport<Thermo, PolySize> operator== -( - const logPolynomialTransport<Thermo, PolySize>&, - const logPolynomialTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> Ostream& operator<< ( @@ -121,9 +152,6 @@ public: // Constructors - //- Construct copy - inline logPolynomialTransport(const logPolynomialTransport&); - //- Construct as named copy inline logPolynomialTransport ( @@ -131,18 +159,12 @@ public: const logPolynomialTransport& ); - //- Construct from Istream - logPolynomialTransport(Istream& is); - //- Construct from dictionary logPolynomialTransport(const dictionary& dict); //- Construct and return a clone inline autoPtr<logPolynomialTransport> clone() const; - // Selector from Istream - inline static autoPtr<logPolynomialTransport> New(Istream& is); - // Selector from dictionary inline static autoPtr<logPolynomialTransport> New ( @@ -177,8 +199,9 @@ public: // Member operators inline void operator=(const logPolynomialTransport&); + inline void operator+=(const logPolynomialTransport&); - inline void operator-=(const logPolynomialTransport&); + inline void operator*=(const scalar); @@ -190,24 +213,12 @@ public: const logPolynomialTransport& ); - friend logPolynomialTransport operator- <Thermo, PolySize> - ( - const logPolynomialTransport&, - const logPolynomialTransport& - ); - friend logPolynomialTransport operator* <Thermo, PolySize> ( const scalar, const logPolynomialTransport& ); - friend logPolynomialTransport operator== <Thermo, PolySize> - ( - const logPolynomialTransport&, - const logPolynomialTransport& - ); - // Ostream Operator diff --git a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransportI.H b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransportI.H index 4fb373c8939214af91e088dd97877d6d350d7fdb..558c41eb481603b76eb452424f43e369d22edccf 100644 --- a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransportI.H +++ b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,18 +27,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -inline Foam::logPolynomialTransport<Thermo, PolySize>::logPolynomialTransport -( - const logPolynomialTransport& pt -) -: - Thermo(pt), - muCoeffs_(pt.muCoeffs_), - kappaCoeffs_(pt.kappaCoeffs_) -{} - - template<class Thermo, int PolySize> inline Foam::logPolynomialTransport<Thermo, PolySize>::logPolynomialTransport ( @@ -77,17 +65,6 @@ Foam::logPolynomialTransport<Thermo, PolySize>::clone() const } -template<class Thermo, int PolySize> -inline Foam::autoPtr<Foam::logPolynomialTransport<Thermo, PolySize>> -Foam::logPolynomialTransport<Thermo, PolySize>::New(Istream& is) -{ - return autoPtr<logPolynomialTransport<Thermo, PolySize>> - ( - new logPolynomialTransport<Thermo, PolySize>(is) - ); -} - - template<class Thermo, int PolySize> inline Foam::autoPtr<Foam::logPolynomialTransport<Thermo, PolySize>> Foam::logPolynomialTransport<Thermo, PolySize>::New(const dictionary& dict) @@ -108,7 +85,7 @@ inline Foam::scalar Foam::logPolynomialTransport<Thermo, PolySize>::mu const scalar T ) const { - return exp(muCoeffs_.value(log(T))/this->W()); + return exp(muCoeffs_.value(log(T))); } @@ -119,7 +96,7 @@ inline Foam::scalar Foam::logPolynomialTransport<Thermo, PolySize>::kappa const scalar T ) const { - return exp(kappaCoeffs_.value(log(T))/this->W()); + return exp(kappaCoeffs_.value(log(T))); } @@ -129,7 +106,7 @@ inline Foam::scalar Foam::logPolynomialTransport<Thermo, PolySize>::alphah const scalar p, const scalar T ) const { - return kappa(p, T)/this->Cpv(p, T); + return kappa(p, T)/this->Cp(p, T); } @@ -154,33 +131,18 @@ inline void Foam::logPolynomialTransport<Thermo, PolySize>::operator+= const logPolynomialTransport<Thermo, PolySize>& pt ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Thermo::operator+=(pt); - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); - - muCoeffs_ = molr1*muCoeffs_ + molr2*pt.muCoeffs_; - kappaCoeffs_ = molr1*kappaCoeffs_ + molr2*pt.kappaCoeffs_; -} - - -template<class Thermo, int PolySize> -inline void Foam::logPolynomialTransport<Thermo, PolySize>::operator-= -( - const logPolynomialTransport<Thermo, PolySize>& pt -) -{ - scalar molr1 = this->nMoles(); - - Thermo::operator-=(pt); - - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + scalar Y2 = pt.Y()/this->Y(); - muCoeffs_ = molr1*muCoeffs_ - molr2*pt.muCoeffs_; - kappaCoeffs_ = molr1*kappaCoeffs_ - molr2*pt.kappaCoeffs_; + muCoeffs_ = Y1*muCoeffs_ + Y2*pt.muCoeffs_; + kappaCoeffs_ = Y1*kappaCoeffs_ + Y2*pt.kappaCoeffs_; + } } @@ -208,39 +170,28 @@ inline Foam::logPolynomialTransport<Thermo, PolySize> Foam::operator+ static_cast<const Thermo&>(pt1) + static_cast<const Thermo&>(pt2) ); - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); - - return logPolynomialTransport<Thermo, PolySize> - ( - t, - molr1*pt1.muCoeffs_ + molr2*pt2.muCoeffs_, - molr1*pt1.kappaCoeffs_ + molr2*pt2.kappaCoeffs_ - ); -} - - -template<class Thermo, int PolySize> -inline Foam::logPolynomialTransport<Thermo, PolySize> Foam::operator- -( - const logPolynomialTransport<Thermo, PolySize>& pt1, - const logPolynomialTransport<Thermo, PolySize>& pt2 -) -{ - Thermo t - ( - static_cast<const Thermo&>(pt1) - static_cast<const Thermo&>(pt2) - ); - - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); - - return logPolynomialTransport<Thermo, PolySize> - ( - t, - molr1*pt1.muCoeffs_ - molr2*pt2.muCoeffs_, - molr1*pt1.kappaCoeffs_ - molr2*pt2.kappaCoeffs_ - ); + if (mag(t.Y()) < SMALL) + { + return logPolynomialTransport<Thermo> + ( + t, + 0, + pt1.muCoeffs_, + pt1.kappaCoeffs_ + ); + } + else + { + scalar Y1 = pt1.Y()/t.Y(); + scalar Y2 = pt2.Y()/t.Y(); + + return logPolynomialTransport<Thermo, PolySize> + ( + t, + Y1*pt1.muCoeffs_ + Y2*pt2.muCoeffs_, + Y1*pt1.kappaCoeffs_ + Y2*pt2.kappaCoeffs_ + ); + } } @@ -260,15 +211,4 @@ inline Foam::logPolynomialTransport<Thermo, PolySize> Foam::operator* } -template<class Thermo, int PolySize> -inline Foam::logPolynomialTransport<Thermo, PolySize> Foam::operator== -( - const logPolynomialTransport<Thermo, PolySize>& pt1, - const logPolynomialTransport<Thermo, PolySize>& pt2 -) -{ - return pt2 - pt1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C index 32640927d95f96913c67bdbf3ce8e097e28a166b..cb907dd01d54396cdd818d80b94584c7d2c16338 100644 --- a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C +++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,18 +28,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport(Istream& is) -: - Thermo(is), - muCoeffs_("muCoeffs<" + Foam::name(PolySize) + '>', is), - kappaCoeffs_("kappaCoeffs<" + Foam::name(PolySize) + '>', is) -{ - muCoeffs_ *= this->W(); - kappaCoeffs_ *= this->W(); -} - - template<class Thermo, int PolySize> Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport ( @@ -61,10 +49,7 @@ Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport "kappaCoeffs<" + Foam::name(PolySize) + '>' ) ) -{ - muCoeffs_ *= this->W(); - kappaCoeffs_ *= this->W(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -81,12 +66,12 @@ void Foam::polynomialTransport<Thermo, PolySize>::write(Ostream& os) const dict.add ( word("muCoeffs<" + Foam::name(PolySize) + '>'), - muCoeffs_/this->W() + muCoeffs_ ); dict.add ( word("kappaCoeffs<" + Foam::name(PolySize) + '>'), - kappaCoeffs_/this->W() + kappaCoeffs_ ); os << indent << dict.dictName() << dict; @@ -103,21 +88,7 @@ Foam::Ostream& Foam::operator<< const polynomialTransport<Thermo, PolySize>& pt ) { - os << static_cast<const Thermo&>(pt) << tab - << "muCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.muCoeffs_/pt.W() << tab - << "kappaCoeffs<" << Foam::name(PolySize) << '>' << tab - << pt.kappaCoeffs_/pt.W(); - - os.check - ( - "Ostream& operator<<" - "(" - "Ostream&, " - "const polynomialTransport<Thermo, PolySize>&" - ")" - ); - + pt.write(os); return os; } diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H index 5f1d2ff50ca8210236616855fd82a519755853f5..ef5a2eb14f79cd67980898badfaf250fbd06ba14 100644 --- a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H +++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,12 +28,48 @@ Group grpSpecieTransport Description - Transport package using polynomial functions for mu and kappa + Transport package using polynomial functions for \c mu and \c kappa. + +Usage + + \table + Property | Description + muCoeffs<8> | Dynamic viscosity polynomial coefficients + kappaCoeffs<8> | Thermal conductivity polynomial coefficients + \endtable + + Example of the specification of the transport properties: + \verbatim + transport + { + muCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); + kappaCoeffs<8> ( 2000 -0.15 0.023 0 0 0 0 0 ); + } + \endverbatim + + The polynomial expressions are evaluated as so: + + \f[ + \mu = 1000 - 0.05 T + 0.003 T^2 + \f] + + \f[ + \kappa = 2000 - 0.15 T + 0.023 T^2 + \f] + +Note + - Dynamic viscosity polynomial coefficients evaluate to an expression in + [Pa.s], but internally uses [Pa.s/kmol]. + - Thermal conductivity polynomial coefficients evaluate to an expression in + [W/m/K], but internally uses [W/m/K/kmol]. SourceFiles polynomialTransportI.H polynomialTransport.C +See also + Foam::Polynomial + \*---------------------------------------------------------------------------*/ #ifndef polynomialTransport_H @@ -57,13 +93,6 @@ inline polynomialTransport<Thermo, PolySize> operator+ const polynomialTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline polynomialTransport<Thermo, PolySize> operator- -( - const polynomialTransport<Thermo, PolySize>&, - const polynomialTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> inline polynomialTransport<Thermo, PolySize> operator* ( @@ -71,13 +100,6 @@ inline polynomialTransport<Thermo, PolySize> operator* const polynomialTransport<Thermo, PolySize>& ); -template<class Thermo, int PolySize> -inline polynomialTransport<Thermo, PolySize> operator== -( - const polynomialTransport<Thermo, PolySize>&, - const polynomialTransport<Thermo, PolySize>& -); - template<class Thermo, int PolySize> Ostream& operator<< ( @@ -98,11 +120,9 @@ class polynomialTransport // Private data //- Dynamic viscosity polynomial coefficients - // Note: input in [Pa.s], but internally uses [Pa.s/kmol] Polynomial<PolySize> muCoeffs_; //- Thermal conductivity polynomial coefficients - // Note: input in [W/m/K], but internally uses [W/m/K/kmol] Polynomial<PolySize> kappaCoeffs_; @@ -121,24 +141,15 @@ public: // Constructors - //- Construct copy - inline polynomialTransport(const polynomialTransport&); - //- Construct as named copy inline polynomialTransport(const word&, const polynomialTransport&); - //- Construct from Istream - polynomialTransport(Istream& is); - //- Construct from dictionary polynomialTransport(const dictionary& dict); //- Construct and return a clone inline autoPtr<polynomialTransport> clone() const; - // Selector from Istream - inline static autoPtr<polynomialTransport> New(Istream& is); - // Selector from dictionary inline static autoPtr<polynomialTransport> New(const dictionary& dict); @@ -170,8 +181,9 @@ public: // Member operators inline void operator=(const polynomialTransport&); + inline void operator+=(const polynomialTransport&); - inline void operator-=(const polynomialTransport&); + inline void operator*=(const scalar); @@ -183,24 +195,12 @@ public: const polynomialTransport& ); - friend polynomialTransport operator- <Thermo, PolySize> - ( - const polynomialTransport&, - const polynomialTransport& - ); - friend polynomialTransport operator* <Thermo, PolySize> ( const scalar, const polynomialTransport& ); - friend polynomialTransport operator== <Thermo, PolySize> - ( - const polynomialTransport&, - const polynomialTransport& - ); - // Ostream Operator diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H index ca82f18d862ab355a725b2f36ecbe866d6fe23af..6540d00ed44e034d011dd996a5eb263bab6ae6e4 100644 --- a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H +++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,18 +27,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo, int PolySize> -inline Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport -( - const polynomialTransport& pt -) -: - Thermo(pt), - muCoeffs_(pt.muCoeffs_), - kappaCoeffs_(pt.kappaCoeffs_) -{} - - template<class Thermo, int PolySize> inline Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport ( @@ -77,17 +65,6 @@ Foam::polynomialTransport<Thermo, PolySize>::clone() const } -template<class Thermo, int PolySize> -inline Foam::autoPtr<Foam::polynomialTransport<Thermo, PolySize>> -Foam::polynomialTransport<Thermo, PolySize>::New(Istream& is) -{ - return autoPtr<polynomialTransport<Thermo, PolySize>> - ( - new polynomialTransport<Thermo, PolySize>(is) - ); -} - - template<class Thermo, int PolySize> inline Foam::autoPtr<Foam::polynomialTransport<Thermo, PolySize>> Foam::polynomialTransport<Thermo, PolySize>::New(const dictionary& dict) @@ -108,7 +85,7 @@ inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::mu const scalar T ) const { - return muCoeffs_.value(T)/this->W(); + return muCoeffs_.value(T); } @@ -119,7 +96,7 @@ inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::kappa const scalar T ) const { - return kappaCoeffs_.value(T)/this->W(); + return kappaCoeffs_.value(T); } @@ -129,7 +106,7 @@ inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::alphah const scalar p, const scalar T ) const { - return kappa(p, T)/this->Cpv(p, T); + return kappa(p, T)/this->Cp(p, T); } @@ -154,33 +131,18 @@ inline void Foam::polynomialTransport<Thermo, PolySize>::operator+= const polynomialTransport<Thermo, PolySize>& pt ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Thermo::operator+=(pt); - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); - - muCoeffs_ = molr1*muCoeffs_ + molr2*pt.muCoeffs_; - kappaCoeffs_ = molr1*kappaCoeffs_ + molr2*pt.kappaCoeffs_; -} - - -template<class Thermo, int PolySize> -inline void Foam::polynomialTransport<Thermo, PolySize>::operator-= -( - const polynomialTransport<Thermo, PolySize>& pt -) -{ - scalar molr1 = this->nMoles(); - - Thermo::operator-=(pt); - - molr1 /= this->nMoles(); - scalar molr2 = pt.nMoles()/this->nMoles(); + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + scalar Y2 = pt.Y()/this->Y(); - muCoeffs_ = molr1*muCoeffs_ - molr2*pt.muCoeffs_; - kappaCoeffs_ = molr1*kappaCoeffs_ - molr2*pt.kappaCoeffs_; + muCoeffs_ = Y1*muCoeffs_ + Y2*pt.muCoeffs_; + kappaCoeffs_ = Y1*kappaCoeffs_ + Y2*pt.kappaCoeffs_; + } } @@ -208,39 +170,28 @@ inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator+ static_cast<const Thermo&>(pt1) + static_cast<const Thermo&>(pt2) ); - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); - - return polynomialTransport<Thermo, PolySize> - ( - t, - molr1*pt1.muCoeffs_ + molr2*pt2.muCoeffs_, - molr1*pt1.kappaCoeffs_ + molr2*pt2.kappaCoeffs_ - ); -} - - -template<class Thermo, int PolySize> -inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator- -( - const polynomialTransport<Thermo, PolySize>& pt1, - const polynomialTransport<Thermo, PolySize>& pt2 -) -{ - Thermo t - ( - static_cast<const Thermo&>(pt1) - static_cast<const Thermo&>(pt2) - ); - - scalar molr1 = pt1.nMoles()/t.nMoles(); - scalar molr2 = pt2.nMoles()/t.nMoles(); - - return polynomialTransport<Thermo, PolySize> - ( - t, - molr1*pt1.muCoeffs_ - molr2*pt2.muCoeffs_, - molr1*pt1.kappaCoeffs_ - molr2*pt2.kappaCoeffs_ - ); + if (mag(t.Y()) < SMALL) + { + return polynomialTransport<Thermo> + ( + t, + 0, + pt1.muCoeffs_, + pt1.kappaCoeffs_ + ); + } + else + { + scalar Y1 = pt1.Y()/t.Y(); + scalar Y2 = pt2.Y()/t.Y(); + + return polynomialTransport<Thermo, PolySize> + ( + t, + Y1*pt1.muCoeffs_ + Y2*pt2.muCoeffs_, + Y1*pt1.kappaCoeffs_ + Y2*pt2.kappaCoeffs_ + ); + } } @@ -260,15 +211,4 @@ inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator* } -template<class Thermo, int PolySize> -inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator== -( - const polynomialTransport<Thermo, PolySize>& pt1, - const polynomialTransport<Thermo, PolySize>& pt2 -) -{ - return pt2 - pt1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.C b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.C index db8cc730268fb11f273fe0fa900945c9155d18b0..1fa07890149b1842532843dc6faae2b2c18ffee1 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.C +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,17 +41,6 @@ Foam::scalar Foam::sutherlandTransport<Thermo>::readCoeff // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template<class Thermo> -Foam::sutherlandTransport<Thermo>::sutherlandTransport(Istream& is) -: - Thermo(is), - As_(readScalar(is)), - Ts_(readScalar(is)) -{ - is.check("sutherlandTransport<Thermo>::sutherlandTransport(Istream&)"); -} - - template<class Thermo> Foam::sutherlandTransport<Thermo>::sutherlandTransport(const dictionary& dict) : @@ -102,13 +91,7 @@ Foam::Ostream& Foam::operator<< const sutherlandTransport<Thermo>& st ) { - os << static_cast<const Thermo&>(st) << tab << st.As_ << tab << st.Ts_; - - os.check - ( - "Ostream& operator<<(Ostream&, const sutherlandTransport<Thermo>&)" - ); - + st.write(os); return os; } diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H index 3aa31bb469e67608c49a7ebcc1172075cf16bc2b..f86b7bcb13325ac01910e199c2340fdec04a2f9c 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,13 +63,6 @@ inline sutherlandTransport<Thermo> operator+ const sutherlandTransport<Thermo>& ); -template<class Thermo> -inline sutherlandTransport<Thermo> operator- -( - const sutherlandTransport<Thermo>&, - const sutherlandTransport<Thermo>& -); - template<class Thermo> inline sutherlandTransport<Thermo> operator* ( @@ -77,13 +70,6 @@ inline sutherlandTransport<Thermo> operator* const sutherlandTransport<Thermo>& ); -template<class Thermo> -inline sutherlandTransport<Thermo> operator== -( - const sutherlandTransport<Thermo>&, - const sutherlandTransport<Thermo>& -); - template<class Thermo> Ostream& operator<< ( @@ -144,9 +130,6 @@ public: //- Construct as named copy inline sutherlandTransport(const word&, const sutherlandTransport&); - //- Construct from Istream - sutherlandTransport(Istream&); - //- Construct from dictionary sutherlandTransport(const dictionary& dict); @@ -156,9 +139,6 @@ public: //- Construct and return a clone inline autoPtr<sutherlandTransport> clone() const; - // Selector from Istream - inline static autoPtr<sutherlandTransport> New(Istream& is); - // Selector from dictionary inline static autoPtr<sutherlandTransport> New(const dictionary& dict); @@ -193,8 +173,6 @@ public: inline void operator+=(const sutherlandTransport&); - inline void operator-=(const sutherlandTransport&); - inline void operator*=(const scalar); @@ -206,24 +184,12 @@ public: const sutherlandTransport& ); - friend sutherlandTransport operator- <Thermo> - ( - const sutherlandTransport&, - const sutherlandTransport& - ); - friend sutherlandTransport operator* <Thermo> ( const scalar, const sutherlandTransport& ); - friend sutherlandTransport operator== <Thermo> - ( - const sutherlandTransport&, - const sutherlandTransport& - ); - // Ostream Operator diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H index 60ce87da8c532aa200e595bd01125526f2303261..e9a16c4ca11de75ccfa8922219c1c07b54ec4883 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -98,20 +98,6 @@ Foam::sutherlandTransport<Thermo>::clone() const } -template<class Thermo> -inline Foam::autoPtr<Foam::sutherlandTransport<Thermo>> -Foam::sutherlandTransport<Thermo>::New -( - Istream& is -) -{ - return autoPtr<sutherlandTransport<Thermo>> - ( - new sutherlandTransport<Thermo>(is) - ); -} - - template<class Thermo> inline Foam::autoPtr<Foam::sutherlandTransport<Thermo>> Foam::sutherlandTransport<Thermo>::New @@ -158,7 +144,7 @@ inline Foam::scalar Foam::sutherlandTransport<Thermo>::alphah ) const { - return kappa(p, T)/this->Cpv(p, T); + return kappa(p, T)/this->Cp(p, T); } @@ -183,33 +169,18 @@ inline void Foam::sutherlandTransport<Thermo>::operator+= const sutherlandTransport<Thermo>& st ) { - scalar molr1 = this->nMoles(); + scalar Y1 = this->Y(); Thermo::operator+=(st); - molr1 /= this->nMoles(); - scalar molr2 = st.nMoles()/this->nMoles(); - - As_ = molr1*As_ + molr2*st.As_; - Ts_ = molr1*Ts_ + molr2*st.Ts_; -} - + if (mag(this->Y()) > SMALL) + { + Y1 /= this->Y(); + scalar Y2 = st.Y()/this->Y(); -template<class Thermo> -inline void Foam::sutherlandTransport<Thermo>::operator-= -( - const sutherlandTransport<Thermo>& st -) -{ - scalar molr1 = this->nMoles(); - - Thermo::operator-=(st); - - molr1 /= this->nMoles(); - scalar molr2 = st.nMoles()/this->nMoles(); - - As_ = molr1*As_ - molr2*st.As_; - Ts_ = molr1*Ts_ - molr2*st.Ts_; + As_ = Y1*As_ + Y2*st.As_; + Ts_ = Y1*Ts_ + Y2*st.Ts_; + } } @@ -237,39 +208,28 @@ inline Foam::sutherlandTransport<Thermo> Foam::operator+ static_cast<const Thermo&>(st1) + static_cast<const Thermo&>(st2) ); - scalar molr1 = st1.nMoles()/t.nMoles(); - scalar molr2 = st2.nMoles()/t.nMoles(); - - return sutherlandTransport<Thermo> - ( - t, - molr1*st1.As_ + molr2*st2.As_, - molr1*st1.Ts_ + molr2*st2.Ts_ - ); -} - - -template<class Thermo> -inline Foam::sutherlandTransport<Thermo> Foam::operator- -( - const sutherlandTransport<Thermo>& st1, - const sutherlandTransport<Thermo>& st2 -) -{ - Thermo t - ( - static_cast<const Thermo&>(st1) - static_cast<const Thermo&>(st2) - ); - - scalar molr1 = st1.nMoles()/t.nMoles(); - scalar molr2 = st2.nMoles()/t.nMoles(); + if (mag(t.Y()) < SMALL) + { + return sutherlandTransport<Thermo> + ( + t, + 0, + st1.As_, + st1.Ts_ + ); + } + else + { + scalar Y1 = st1.Y()/t.Y(); + scalar Y2 = st2.Y()/t.Y(); - return sutherlandTransport<Thermo> - ( - t, - molr1*st1.As_ - molr2*st2.As_, - molr1*st1.Ts_ - molr2*st2.Ts_ - ); + return sutherlandTransport<Thermo> + ( + t, + Y1*st1.As_ + Y2*st2.As_, + Y1*st1.Ts_ + Y2*st2.Ts_ + ); + } } @@ -289,15 +249,4 @@ inline Foam::sutherlandTransport<Thermo> Foam::operator* } -template<class Thermo> -inline Foam::sutherlandTransport<Thermo> Foam::operator== -( - const sutherlandTransport<Thermo>& st1, - const sutherlandTransport<Thermo>& st2 -) -{ - return st2 - st1; -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/thermophysicalFunctions/Make/files b/src/thermophysicalModels/thermophysicalFunctions/Make/files deleted file mode 100644 index 4fbfc660d5ce4bd54f50456b723a1316bff86460..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/thermophysicalFunctions/Make/files +++ /dev/null @@ -1,17 +0,0 @@ -thermophysicalFunction = thermophysicalFunction -NSRDSfunctions = NSRDSfunctions -APIfunctions = APIfunctions - -$(thermophysicalFunction)/thermophysicalFunction.C -$(NSRDSfunctions)/NSRDSfunc0/NSRDSfunc0.C -$(NSRDSfunctions)/NSRDSfunc1/NSRDSfunc1.C -$(NSRDSfunctions)/NSRDSfunc2/NSRDSfunc2.C -$(NSRDSfunctions)/NSRDSfunc3/NSRDSfunc3.C -$(NSRDSfunctions)/NSRDSfunc4/NSRDSfunc4.C -$(NSRDSfunctions)/NSRDSfunc5/NSRDSfunc5.C -$(NSRDSfunctions)/NSRDSfunc6/NSRDSfunc6.C -$(NSRDSfunctions)/NSRDSfunc7/NSRDSfunc7.C -$(NSRDSfunctions)/NSRDSfunc14/NSRDSfunc14.C -$(APIfunctions)/APIdiffCoefFunc/APIdiffCoefFunc.C - -LIB = $(FOAM_LIBBIN)/libthermophysicalFunctions diff --git a/src/thermophysicalModels/thermophysicalProperties/Make/files b/src/thermophysicalModels/thermophysicalProperties/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..0ca22214419706ddeaede576bcb3e9caa06caeeb --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/Make/files @@ -0,0 +1,64 @@ +thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.C + +NSRDSfunctions = thermophysicalFunctions/NSRDSfunctions +$(NSRDSfunctions)/NSRDSfunc0/NSRDSfunc0.C +$(NSRDSfunctions)/NSRDSfunc1/NSRDSfunc1.C +$(NSRDSfunctions)/NSRDSfunc2/NSRDSfunc2.C +$(NSRDSfunctions)/NSRDSfunc3/NSRDSfunc3.C +$(NSRDSfunctions)/NSRDSfunc4/NSRDSfunc4.C +$(NSRDSfunctions)/NSRDSfunc5/NSRDSfunc5.C +$(NSRDSfunctions)/NSRDSfunc6/NSRDSfunc6.C +$(NSRDSfunctions)/NSRDSfunc7/NSRDSfunc7.C +$(NSRDSfunctions)/NSRDSfunc14/NSRDSfunc14.C + +APIfunctions = thermophysicalFunctions/APIfunctions +$(APIfunctions)/APIdiffCoefFunc/APIdiffCoefFunc.C + +thermophysicalProperties/thermophysicalProperties.C + + +liquidProperties/liquidProperties/liquidProperties.C +liquidProperties/liquidMixtureProperties/liquidMixtureProperties.C + +liquidProperties/H2O/H2O.C +liquidProperties/C7H16/C7H16.C +liquidProperties/C12H26/C12H26.C +liquidProperties/C10H22/C10H22.C +liquidProperties/C8H18/C8H18.C +liquidProperties/IC8H18/IC8H18.C +liquidProperties/C4H10O/C4H10O.C +liquidProperties/C2H6O/C2H6O.C +liquidProperties/IDEA/IDEA.C +liquidProperties/aC10H7CH3/aC10H7CH3.C +liquidProperties/bC10H7CH3/bC10H7CH3.C +liquidProperties/C8H10/C8H10.C +liquidProperties/C16H34/C16H34.C +liquidProperties/C9H20/C9H20.C +liquidProperties/C6H6/C6H6.C +liquidProperties/C7H8/C7H8.C +liquidProperties/C6H14/C6H14.C +liquidProperties/C13H28/C13H28.C +liquidProperties/C14H30/C14H30.C +liquidProperties/C3H8/C3H8.C +liquidProperties/C3H6O/C3H6O.C +liquidProperties/C2H6/C2H6.C +liquidProperties/CH3OH/CH3OH.C +liquidProperties/C2H5OH/C2H5OH.C +liquidProperties/Ar/Ar.C +liquidProperties/N2/N2.C +liquidProperties/MB/MB.C +liquidProperties/CH4N2O/CH4N2O.C +liquidProperties/nC3H8O/nC3H8O.C +liquidProperties/iC3H8O/iC3H8O.C + + +solidProperties/solidProperties/solidProperties.C +solidProperties/solidProperties/solidPropertiesNew.C +solidProperties/solidMixtureProperties/solidMixtureProperties.C + +solidProperties/ash/ash.C +solidProperties/C/C.C +solidProperties/CaCO3/CaCO3.C + + +LIB = $(FOAM_LIBBIN)/libthermophysicalProperties diff --git a/src/thermophysicalModels/properties/solidProperties/Make/options b/src/thermophysicalModels/thermophysicalProperties/Make/options similarity index 71% rename from src/thermophysicalModels/properties/solidProperties/Make/options rename to src/thermophysicalModels/thermophysicalProperties/Make/options index 848cce789f2aad33d9ed6eda979ea31c32377425..bdc8b074c03a509ce2f001f40aff6c0c189b0222 100644 --- a/src/thermophysicalModels/properties/solidProperties/Make/options +++ b/src/thermophysicalModels/thermophysicalProperties/Make/options @@ -1,2 +1,5 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude + +LIB_LIBS = \ + -lspecie diff --git a/src/thermophysicalModels/properties/liquidProperties/Ar/Ar.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/Ar/Ar.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.C index 8c1b9e044749a0c88fdf68fa25b0f9aab122b9ce..a9f1b61bfaa40c846b909fe08816907746e41019 100644 --- a/src/thermophysicalModels/properties/liquidProperties/Ar/Ar.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(Ar, 0); addToRunTimeSelectionTable(liquidProperties, Ar,); - addToRunTimeSelectionTable(liquidProperties, Ar, Istream); addToRunTimeSelectionTable(liquidProperties, Ar, dictionary); } @@ -78,8 +77,8 @@ Foam::Ar::Ar() ), mu_(-8.868, 204.3, -0.3831, -1.3e-22, 10.0), mug_(8.386e-07, 0.6175, 75.377, -432.5), - K_(0.1819, -0.0003176, -4.11e-06, 0.0, 0.0, 0.0), - Kg_(0.0001236, 0.8262, -132.8, 16000), + kappa_(0.1819, -0.0003176, -4.11e-06, 0.0, 0.0, 0.0), + kappag_(0.0001236, 0.8262, -132.8, 16000), sigma_(150.86, 0.03823, 1.2927, 0.0, 0.0, 0.0), D_(147.18, 20.1, 39.948, 28) // note: Same as nHeptane {} @@ -113,68 +112,36 @@ Foam::Ar::Ar B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::Ar::Ar(Istream& is) +Foam::Ar::Ar(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + Ar() +{ + readIfPresent(*this, dict); +} -Foam::Ar::Ar(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::Ar::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::Ar::Ar(const Ar& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const Ar& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/Ar/Ar.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/Ar/Ar.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.H index 40b76ae9a5a47243822edb43ca7240f4bfe9e1a7..a84320b96dd412fa4400fc00b83a8c44c0201113 100644 --- a/src/thermophysicalModels/properties/liquidProperties/Ar/Ar.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/Ar.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class Ar NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("Ar"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - Ar(Istream& is); - //- Construct from dictionary Ar(const dictionary& dict); - //- Construct copy - Ar(const Ar& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const Ar& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const Ar& l); }; +Ostream& operator<<(Ostream& os, const Ar& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/Ar/ArI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/ArI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/Ar/ArI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/ArI.H index 89100966eaa399820e6ba9156878623a280a26ef..81b12e118989450143f3a174cf392d03e581988c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/Ar/ArI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/Ar/ArI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::Ar::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::Ar::K(scalar p, scalar T) const +inline Foam::scalar Foam::Ar::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::Ar::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::Ar::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.C index 853cb2fe2c9845401f7a0045ded70e223cb4776b..14937565f914ca3cd7b968be68390ddd86111093 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C10H22, 0); addToRunTimeSelectionTable(liquidProperties, C10H22,); - addToRunTimeSelectionTable(liquidProperties, C10H22, Istream); addToRunTimeSelectionTable(liquidProperties, C10H22, dictionary); } @@ -86,8 +85,8 @@ Foam::C10H22::C10H22() ), mu_(-16.468, 1533.5, 0.7511, 0.0, 0.0), mug_(2.64e-08, 0.9487, 71.0, 0.0), - K_(0.2063, -0.000254, 0.0, 0.0, 0.0, 0.0), - Kg_(-668.4, 0.9323, -4071000000.0, 0.0), + kappa_(0.2063, -0.000254, 0.0, 0.0, 0.0, 0.0), + kappag_(-668.4, 0.9323, -4071000000.0, 0.0), sigma_(617.70, 0.055435, 1.3095, 0.0, 0.0, 0.0), D_(147.18, 20.1, 142.285, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C10H22::C10H22 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C10H22::C10H22(Istream& is) +Foam::C10H22::C10H22(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C10H22() +{ + readIfPresent(*this, dict); +} -Foam::C10H22::C10H22(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C10H22::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C10H22::C10H22(const C10H22& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C10H22& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.H index da0272542f58997733b689e73f0d38667bf67ea4..216acbf1581655e882d78b569622e7683170d820 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C10H22 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C10H22"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C10H22(Istream& is); - //- Construct from dictionary C10H22(const dictionary& dict); - //- Construct copy - C10H22(const C10H22& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,34 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } - + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C10H22& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C10H22& l); }; +Ostream& operator<<(Ostream& os, const C10H22& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22I.H index 558516478ce50d923b760d989f65a9cc8dcc5cec..e6ea047fcacdf4851a2d401e53795f44a6cbd0f2 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C10H22/C10H22I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C10H22/C10H22I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C10H22::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C10H22::K(scalar p, scalar T) const +inline Foam::scalar Foam::C10H22::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C10H22::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C10H22::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.C index 4e4c6cf95bc14fa6b5602e0fe01bf93129174da8..9dbc1dcee9a7ac155f11bfe71f116446cfa6e141 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C12H26, 0); addToRunTimeSelectionTable(liquidProperties, C12H26,); - addToRunTimeSelectionTable(liquidProperties, C12H26, Istream); addToRunTimeSelectionTable(liquidProperties, C12H26, dictionary); } @@ -78,8 +77,8 @@ Foam::C12H26::C12H26() ), mu_(-20.607, 1943, 1.3205, 0.0, 0.0), mug_(6.344e-08, 0.8287, 219.5, 0.0), - K_(0.2047, -0.0002326, 0.0, 0.0, 0.0, 0.0), - Kg_(5.719e-06, 1.4699, 579.4, 0.0), + kappa_(0.2047, -0.0002326, 0.0, 0.0, 0.0, 0.0), + kappag_(5.719e-06, 1.4699, 579.4, 0.0), sigma_(658.0, 0.055493, 1.3262, 0.0, 0.0, 0.0), D_(147.18, 20.1, 170.338, 28.0) // note: Same as nHeptane {} @@ -113,68 +112,36 @@ Foam::C12H26::C12H26 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C12H26::C12H26(Istream& is) +Foam::C12H26::C12H26(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C12H26() +{ + readIfPresent(*this, dict); +} -Foam::C12H26::C12H26(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C12H26::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C12H26::C12H26(const C12H26& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C12H26& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.H index e8fc1a2bfad90f70b8fb89feb51fb73e94515ac4..e50af5035fc5c854d1bc29c7fdc967702cd9ab58 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C12H26 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C12H26"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C12H26(Istream& is); - //- Construct from dictionary C12H26(const dictionary& dict); - //- Construct copy - C12H26(const C12H26& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C12H26& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C12H26& l); }; +Ostream& operator<<(Ostream& os, const C12H26& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26I.H index 0cb385206ebf1b270f02c084a8f7d975d6c2df1d..5a12631f14683694a7a7b71e852d5a78900af656 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C12H26/C12H26I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C12H26::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C12H26::K(scalar p, scalar T) const +inline Foam::scalar Foam::C12H26::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C12H26::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C12H26::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.C index 566edd993ef7160f5f3d5154c2f84f0a514947ec..8c046e73e50cab018357c0460047102ffd3497e4 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C13H28, 0); addToRunTimeSelectionTable(liquidProperties, C13H28,); - addToRunTimeSelectionTable(liquidProperties, C13H28, Istream); addToRunTimeSelectionTable(liquidProperties, C13H28, dictionary); } @@ -86,8 +85,8 @@ Foam::C13H28::C13H28() ), mu_(-23.341, 2121.9, 1.7208, 0.0, 0.0), mug_(3.5585e-08, 0.8987, 165.3, 0.0), - K_(0.1981, -0.0002046, 0.0, 0.0, 0.0, 0.0), - Kg_(5.3701e-06, 1.4751, 599.09, 0.0), + kappa_(0.1981, -0.0002046, 0.0, 0.0, 0.0, 0.0), + kappag_(5.3701e-06, 1.4751, 599.09, 0.0), sigma_(675.80, 0.05561, 1.3361, 0.0, 0.0, 0.0), D_(147.18, 20.1, 184.365, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C13H28::C13H28 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C13H28::C13H28(Istream& is) +Foam::C13H28::C13H28(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C13H28() +{ + readIfPresent(*this, dict); +} -Foam::C13H28::C13H28(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C13H28::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C13H28::C13H28(const C13H28& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C13H28& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.H index de0a261a35f9a4fcb569c94d42c2a85ce00f6c77..c8ebfdfdb0a2c0ef92d74e1b1b8233104197e033 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C13H28 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C13H28"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C13H28(Istream& is); - //- Construct from dictionary C13H28(const dictionary& dict); - //- Construct copy - C13H28(const C13H28& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C13H28& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C13H28& l); }; +Ostream& operator<<(Ostream& os, const C13H28& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28I.H index cafc579a87e756ec0a632ad2e7eedaed68120f9b..7f66e5f8ddfbdd5a8cdbc7f21a1821a32d3b86d8 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C13H28/C13H28I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C13H28/C13H28I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C13H28::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C13H28::K(scalar p, scalar T) const +inline Foam::scalar Foam::C13H28::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C13H28::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C13H28::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.C index 3689c0d07e4e6bb23a3ac5c3562251d7b0d99e2f..63533f8ae2ee88c6720b687e5a3467811877c657 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C14H30, 0); addToRunTimeSelectionTable(liquidProperties, C14H30,); - addToRunTimeSelectionTable(liquidProperties, C14H30, Istream); addToRunTimeSelectionTable(liquidProperties, C14H30, dictionary); } @@ -86,8 +85,8 @@ Foam::C14H30::C14H30() ), mu_(-18.964, 2010.9, 1.0648, 0.0, 0.0), mug_(4.4565e-08, 0.8684, 228.16, -4347.2), - K_(0.1957, -0.0001993, 0.0, 0.0, 0.0, 0.0), - Kg_(-0.000628, 0.944, -5490, 0.0), + kappa_(0.1957, -0.0001993, 0.0, 0.0, 0.0, 0.0), + kappag_(-0.000628, 0.944, -5490, 0.0), sigma_(692.40, 0.056436, 1.3658, 0.0, 0.0, 0.0), D_(147.18, 20.1, 198.392, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C14H30::C14H30 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C14H30::C14H30(Istream& is) +Foam::C14H30::C14H30(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C14H30() +{ + readIfPresent(*this, dict); +} -Foam::C14H30::C14H30(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C14H30::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C14H30::C14H30(const C14H30& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C14H30& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.H index a3955f6e9d6bbb25af789c359bca26e035d56b94..68351c2d4111d725c985a8804571d56cc12549e8 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C14H30 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C14H30"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C14H30(Istream& is); - //- Construct from dictionary C14H30(const dictionary& dict); - //- Construct copy - C14H30(const C14H30& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C14H30& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C14H30& l); }; +Ostream& operator<<(Ostream& os, const C14H30& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30I.H index f0f8a8db4d2db8ac468d06b68abefd2e2504bd3c..9a2771e8e50e4616627288ba22433107684a70fc 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C14H30/C14H30I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C14H30/C14H30I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C14H30::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C14H30::K(scalar p, scalar T) const +inline Foam::scalar Foam::C14H30::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C14H30::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C14H30::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.C index 38640fd60968aa90d0111757f85d4bbd3f1bb52a..bb9c5355d2131156b318295aa8228c94f4e5aad6 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C16H34, 0); addToRunTimeSelectionTable(liquidProperties, C16H34,); - addToRunTimeSelectionTable(liquidProperties, C16H34, Istream); addToRunTimeSelectionTable(liquidProperties, C16H34, dictionary); } @@ -86,8 +85,8 @@ Foam::C16H34::C16H34() ), mu_(-18.388, 2056.8, 0.98681, 0.0, 0.0), mug_(1.2463e-07, 0.7322, 395.0, 6000.0), - K_(0.1963, -0.00019, 0.0, 0.0, 0.0, 0.0), - Kg_(3.075e-06, 1.552, 678.0, 0.0), + kappa_(0.1963, -0.00019, 0.0, 0.0, 0.0, 0.0), + kappag_(3.075e-06, 1.552, 678.0, 0.0), sigma_(720.60, 0.05699, 1.3929, 0.0, 0.0, 0.0), D_(147.18, 20.1, 226.446, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C16H34::C16H34 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C16H34::C16H34(Istream& is) +Foam::C16H34::C16H34(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C16H34() +{ + readIfPresent(*this, dict); +} -Foam::C16H34::C16H34(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C16H34::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C16H34::C16H34(const C16H34& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C16H34& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.H index ac328a82eeb87424d2274f905937eee0c9e3f021..a42139cc5aed0e0be5085c344a3d88e2ee952e35 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C16H34 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C16H34"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C16H34(Istream& is); - //- Construct from dictionary C16H34(const dictionary& dict); - //- Construct copy - C16H34(const C16H34& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C16H34& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C16H34& l); }; +Ostream& operator<<(Ostream& os, const C16H34& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34I.H index 284638014b5d970985d9cd8fe9fd2fc2259750f1..bb2970d4bbe57d5afd9b5169635671531c759f97 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C16H34/C16H34I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C16H34/C16H34I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C16H34::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C16H34::K(scalar p, scalar T) const +inline Foam::scalar Foam::C16H34::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C16H34::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C16H34::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.C similarity index 75% rename from src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.C index 55a4e1920a97aef15c00b780f2f5c75583640cd3..8f80b13a480f140cfd77c32ee4f9b1db3ab8914a 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C2H5OH, 0); addToRunTimeSelectionTable(liquidProperties, C2H5OH,); - addToRunTimeSelectionTable(liquidProperties, C2H5OH, Istream); addToRunTimeSelectionTable(liquidProperties, C2H5OH, dictionary); } @@ -86,8 +85,8 @@ Foam::C2H5OH::C2H5OH() ), mu_(8.049, 776, -3.068, 0.0, 0.0), mug_(1.0613e-07, 0.8066, 52.7, 0.0), - K_(0.253, -0.000281, 0.0, 0.0, 0.0, 0.0), - Kg_(-3.12, 0.7152, -3550000.0, 0.0), + kappa_(0.253, -0.000281, 0.0, 0.0, 0.0, 0.0), + kappag_(-3.12, 0.7152, -3550000.0, 0.0), sigma_(3.7640e-02, -2.1570e-05, -1.025e-07, 0.0, 0.0, 0.0), D_(147.18, 20.1, 46.069, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C2H5OH::C2H5OH B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C2H5OH::C2H5OH(Istream& is) +Foam::C2H5OH::C2H5OH(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C2H5OH() +{ + readIfPresent(*this, dict); +} -Foam::C2H5OH::C2H5OH(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C2H5OH::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C2H5OH::C2H5OH(const C2H5OH& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C2H5OH& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.H index 6a51c1f63b8754a23f3a1530d553c46f6409ce50..4d06bdb04219881403934adb075461ec676d24a8 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OH.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OH.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C2H5OH NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc0 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C2H5OH"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C2H5OH(Istream& is); - //- Construct from dictionary C2H5OH(const dictionary& dict); - //- Construct copy - C2H5OH(const C2H5OH& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C2H5OH& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C2H5OH& l); }; +Ostream& operator<<(Ostream& os, const C2H5OH& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OHI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OHI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OHI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OHI.H index 7fe083d645de4b52b9b106a5ddfb55e7e9400d59..968c5bfd67655f17c45e32f89341bd717703c8ab 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H5OH/C2H5OHI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H5OH/C2H5OHI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C2H5OH::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C2H5OH::K(scalar p, scalar T) const +inline Foam::scalar Foam::C2H5OH::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C2H5OH::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C2H5OH::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.C index d755a0109517a18f52eb303affaa61d51b09a0e4..bfa922171b8c41c4cecd7b0d8498a1c10fa3c563 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C2H6, 0); addToRunTimeSelectionTable(liquidProperties, C2H6,); - addToRunTimeSelectionTable(liquidProperties, C2H6, Istream); addToRunTimeSelectionTable(liquidProperties, C2H6, dictionary); } @@ -77,8 +76,8 @@ Foam::C2H6::C2H6() ), mu_(-3.4134, 197.05, -1.2193, -9.2023e-26, 10.0), mug_(2.5906e-07, 0.67988, 98.902, 0.0), - K_(0.35758, -0.0011458, 6.1866e-07, 0.0, 0.0, 0.0), - Kg_(7.3869e-05, 1.1689, 500.73, 0.0), + kappa_(0.35758, -0.0011458, 6.1866e-07, 0.0, 0.0, 0.0), + kappag_(7.3869e-05, 1.1689, 500.73, 0.0), sigma_(305.32, 0.048643, 1.1981, 0.0, 0.0, 0.0), D_(147.18, 20.1, 30.070, 28) // note: Same as nHeptane {} @@ -112,68 +111,36 @@ Foam::C2H6::C2H6 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C2H6::C2H6(Istream& is) +Foam::C2H6::C2H6(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C2H6() +{ + readIfPresent(*this, dict); +} -Foam::C2H6::C2H6(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C2H6::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C2H6::C2H6(const C2H6& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C2H6& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.H index 9bfa5e98207405aa8696745f76e6f4d58a55d65a..9f69f702988b6d500a5895ef6f2ce1e776f70acc 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C2H6 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C2H6"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C2H6(Istream& is); - //- Construct from dictionary C2H6(const dictionary& dict); - //- Construct copy - C2H6(const C2H6& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C2H6& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C2H6& l); }; +Ostream& operator<<(Ostream& os, const C2H6& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6I.H index f2005a7fcfeacb15bf6bc9a2272f7f5cfdb1b126..62901b78291442c1a3106c382c63f4dd4ea02644 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6/C2H6I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6/C2H6I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C2H6::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C2H6::K(scalar p, scalar T) const +inline Foam::scalar Foam::C2H6::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C2H6::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C2H6::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.C index 475d6eccbea71c90e68e2ff7efcd35b3b0574c61..94c46d94c107ecf4bedb9c0425691cf41a4f8c04 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C2H6O, 0); addToRunTimeSelectionTable(liquidProperties, C2H6O,); - addToRunTimeSelectionTable(liquidProperties, C2H6O, Istream); addToRunTimeSelectionTable(liquidProperties, C2H6O, dictionary); } @@ -86,8 +85,8 @@ Foam::C2H6O::C2H6O() ), mu_(-10.62, 448.99, 8.3967e-05, 0.0, 0.0), mug_(7.27, 0.1091, 440600000, 0.0), - K_(0.31276, -0.0005677, 0.0, 0.0, 0.0, 0.0), - Kg_(0.2247, 0.1026, 997.06, 1762900), + kappa_(0.31276, -0.0005677, 0.0, 0.0, 0.0, 0.0), + kappag_(0.2247, 0.1026, 997.06, 1762900), sigma_(400.10, 0.06096, 1.2286, 0, 0, 0), D_(147.18, 20.1, 46.069, 28) // note: Same as nHeptane {} @@ -121,68 +120,37 @@ Foam::C2H6O::C2H6O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C2H6O::C2H6O(Istream& is) -: - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} - Foam::C2H6O::C2H6O(const dictionary& dict) : - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} + C2H6O() +{ + readIfPresent(*this, dict); +} -Foam::C2H6O::C2H6O(const C2H6O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::C2H6O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C2H6O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.H index 0bb21316775f797d5b2d52c82001232e9dce4ea8..ec54cee6c30e715c167e005c0fee6769be808ba4 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C2H6O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C2H6O"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C2H6O(Istream& is); - //- Construct from dictionary C2H6O(const dictionary& dict); - //- Construct copy - C2H6O(const C2H6O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C2H6O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C2H6O& l); }; +Ostream& operator<<(Ostream& os, const C2H6O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6OI.H index 97e2e769e9f7fe6f50b9ce5442f3f204087444df..92ce3483fd8c230d680ce23dd32554bae510f01e 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C2H6O/C2H6OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C2H6O/C2H6OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C2H6O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C2H6O::K(scalar p, scalar T) const +inline Foam::scalar Foam::C2H6O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C2H6O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C2H6O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.C index f100dbf2c414b9eefbdc8da37524b48aeed0a85a..8495142bfb88756f75bffd539027d0a1f5fa7440 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C3H6O, 0); addToRunTimeSelectionTable(liquidProperties, C3H6O,); - addToRunTimeSelectionTable(liquidProperties, C3H6O, Istream); addToRunTimeSelectionTable(liquidProperties, C3H6O, dictionary); } @@ -86,8 +85,8 @@ Foam::C3H6O::C3H6O() ), mu_(-14.918, 1023.4, 0.5961, 0.0, 0.0), mug_(3.1005e-08, 0.9762, 23.139, 0.0), - K_(0.2502, -0.000298, 0.0, 0.0, 0.0, 0.0), - Kg_(-26.8, 0.9098, -126500000, 0.0), + kappa_(0.2502, -0.000298, 0.0, 0.0, 0.0, 0.0), + kappag_(-26.8, 0.9098, -126500000, 0.0), sigma_(508.20, 0.0622, 1.124, 0.0, 0.0, 0.0), D_(147.18, 20.1, 58.08, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C3H6O::C3H6O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C3H6O::C3H6O(Istream& is) +Foam::C3H6O::C3H6O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C3H6O() +{ + readIfPresent(*this, dict); +} -Foam::C3H6O::C3H6O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C3H6O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C3H6O::C3H6O(const C3H6O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C3H6O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.H index 47d298f6238e2c11cc99da4cc1754bf9a58c17b1..f1f770a5244f1ada723d0034b26860d66234e9d9 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C3H6O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C3H6O"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C3H6O(Istream& is); - //- Construct from dictionary C3H6O(const dictionary& dict); - //- Construct copy - C3H6O(const C3H6O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,34 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - - friend Ostream& operator<<(Ostream& os, const C3H6O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C3H6O& l); }; +Ostream& operator<<(Ostream& os, const C3H6O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6OI.H index e99086a10e0cc36238332bca1b31c4efdaf1431b..2b025bb37b432416f1d813b6f4ae508b0527222c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H6O/C3H6OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H6O/C3H6OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,15 +76,15 @@ inline Foam::scalar Foam::C3H6O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C3H6O::K(scalar p, scalar T) const +inline Foam::scalar Foam::C3H6O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C3H6O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C3H6O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.C index bb4b2a2839c61daf0b15f2ccd36c99f6f70bb038..6c827993e12d6f0e882702482f9cb17fe0e22d76 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C3H8, 0); addToRunTimeSelectionTable(liquidProperties, C3H8,); - addToRunTimeSelectionTable(liquidProperties, C3H8, Istream); addToRunTimeSelectionTable(liquidProperties, C3H8, dictionary); } @@ -76,8 +75,8 @@ Foam::C3H8::C3H8() ), mu_(-6.9281, 420.76, -0.63276, -1.713e-26, 10.0), mug_(2.4993e-07, 0.68612, 179.34, -8254.6), - K_(0.26755, -0.00066457, 2.774e-07, 0.0, 0.0, 0.0), - Kg_(-1.12, 0.10972, -9834.6, -7535800), + kappa_(0.26755, -0.00066457, 2.774e-07, 0.0, 0.0, 0.0), + kappag_(-1.12, 0.10972, -9834.6, -7535800), sigma_(369.83, 0.05092, 1.2197, 0.0, 0.0, 0.0), D_(147.18, 20.1, 44.096, 28) // note: Same as nHeptane {} @@ -111,68 +110,36 @@ Foam::C3H8::C3H8 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C3H8::C3H8(Istream& is) +Foam::C3H8::C3H8(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C3H8() +{ + readIfPresent(*this, dict); +} -Foam::C3H8::C3H8(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C3H8::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C3H8::C3H8(const C3H8& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C3H8& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.H index 12a5c67ee975a270932565e674a81ff418859ba4..950b6e6085c08f1af5770d65bc697c62e7ab7ce1 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C3H8 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C3H8"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C3H8(Istream& is); - //- Construct from dictionary C3H8(const dictionary& dict); - //- Construct copy - C3H8(const C3H8& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C3H8& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C3H8& l); }; +Ostream& operator<<(Ostream& os, const C3H8& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8I.H index ce54b116eb8c528874d12363538870c02e309cd3..627ffee39375eafb7a04e3b813b1962590b6fb26 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C3H8/C3H8I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C3H8/C3H8I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C3H8::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C3H8::K(scalar p, scalar T) const +inline Foam::scalar Foam::C3H8::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C3H8::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C3H8::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.C index 06cfa49be6d04b3c1d4adfe1d72bbefefdff16fd..581e38fc3348f7708dbdb156ae243d1989d570c9 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C4H10O, 0); addToRunTimeSelectionTable(liquidProperties, C4H10O,); - addToRunTimeSelectionTable(liquidProperties, C4H10O, Istream); addToRunTimeSelectionTable(liquidProperties, C4H10O, dictionary); } @@ -86,8 +85,8 @@ Foam::C4H10O::C4H10O() ), mu_(10.197, -63.8, -3.226, 0.0, 0.0), mug_(1.948e-06, 0.41, 495.8, 0.0), - K_(0.249, -0.0004005, 0.0, 0.0, 0.0, 0.0), - Kg_(-0.0044894, 0.6155, -3266.3, 0.0), + kappa_(0.249, -0.0004005, 0.0, 0.0, 0.0, 0.0), + kappag_(-0.0044894, 0.6155, -3266.3, 0.0), sigma_(466.70, 0.057356, 1.288, 0.0, 0.0, 0.0), D_(147.18, 20.1, 74.123, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C4H10O::C4H10O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C4H10O::C4H10O(Istream& is) +Foam::C4H10O::C4H10O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C4H10O() +{ + readIfPresent(*this, dict); +} -Foam::C4H10O::C4H10O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C4H10O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C4H10O::C4H10O(const C4H10O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C4H10O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.H index 833377ae6bad9c91c1886099ad97e66e46bf3fb0..1049d3692fa27dc4216383d7b507e555f030a275 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C4H10O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C4H10O"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C4H10O(Istream& is); - //- Construct from dictionary C4H10O(const dictionary& dict); - //- Construct copy - C4H10O(const C4H10O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C4H10O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C4H10O& l); }; +Ostream& operator<<(Ostream& os, const C4H10O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10OI.H index cccec3594f8f86ff7afb56a01b1e235a50f123c2..29836f9ebd19508d07816b2721b4101a12a1f6c0 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C4H10O/C4H10OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C4H10O/C4H10OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C4H10O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C4H10O::K(scalar p, scalar T) const +inline Foam::scalar Foam::C4H10O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C4H10O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C4H10O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.C index 1dae3fe1b2a9967dba620eccb6f56f5a3f7c13cc..91cfa8f91dfe248c395c2b35729b19c0b7e8912c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C6H14, 0); addToRunTimeSelectionTable(liquidProperties, C6H14,); - addToRunTimeSelectionTable(liquidProperties, C6H14, Istream); addToRunTimeSelectionTable(liquidProperties, C6H14, dictionary); } @@ -86,8 +85,8 @@ Foam::C6H14::C6H14() ), mu_(-20.715, 1207.5, 1.4993, 0.0, 0.0), mug_(1.7514e-07, 0.70737, 157.14, 0.0), - K_(0.22492, -0.0003533, 0.0, 0.0, 0.0, 0.0), - Kg_(-650.5, 0.8053, -1412100000, 0.0), + kappa_(0.22492, -0.0003533, 0.0, 0.0, 0.0, 0.0), + kappag_(-650.5, 0.8053, -1412100000, 0.0), sigma_(507.60, 0.055003, 1.2674, 0.0, 0.0, 0.0), D_(147.18, 20.1, 86.177, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C6H14::C6H14 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C6H14::C6H14(Istream& is) +Foam::C6H14::C6H14(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C6H14() +{ + readIfPresent(*this, dict); +} -Foam::C6H14::C6H14(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C6H14::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C6H14::C6H14(const C6H14& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C6H14& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.H index 7034f06cb682624351ee82107bfa3f21a61dd202..da6301802ffbfa5a10234c97d39267241f3f1a52 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C6H14 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C6H14"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C6H14(Istream& is); - //- Construct from dictionary C6H14(const dictionary& dict); - //- Construct copy - C6H14(const C6H14& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C6H14& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C6H14& l); }; +Ostream& operator<<(Ostream& os, const C6H14& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14I.H index f9b89b427566cdaa05fe14ccd32c31a068d8e4ea..f88632998b3d287e02eb6e09185a77744fd08d18 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H14/C6H14I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H14/C6H14I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C6H14::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C6H14::K(scalar p, scalar T) const +inline Foam::scalar Foam::C6H14::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C6H14::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C6H14::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.C index 4163583a3a4a5f2353a209fa97e7aca9ab53fe73..fcce3cb513f7a331fa4a6abe8a31999e37d15fde 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C6H6, 0); addToRunTimeSelectionTable(liquidProperties, C6H6,); - addToRunTimeSelectionTable(liquidProperties, C6H6, Istream); addToRunTimeSelectionTable(liquidProperties, C6H6, dictionary); } @@ -86,8 +85,8 @@ Foam::C6H6::C6H6() ), mu_(6.764, 336.4, -2.687, 0.0, 0.0), mug_(3.134e-08, 0.9676, 7.9, 0.0), - K_(0.2407, -0.0003202, 0.0, 0.0, 0.0, 0.0), - Kg_(1.652e-05, 1.3117, 491, 0.0), + kappa_(0.2407, -0.0003202, 0.0, 0.0, 0.0, 0.0), + kappag_(1.652e-05, 1.3117, 491, 0.0), sigma_(562.16, 0.07195, 1.2389, 0.0, 0.0, 0.0), D_(147.18, 20.1, 78.114, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C6H6::C6H6 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C6H6::C6H6(Istream& is) +Foam::C6H6::C6H6(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C6H6() +{ + readIfPresent(*this, dict); +} -Foam::C6H6::C6H6(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C6H6::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C6H6::C6H6(const C6H6& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C6H6& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.H index cc1302778e3753df29751212755bd2f794c04807..da7a6f32bea6ace32473f868d2c7528adb5d0778 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C6H6 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C6H6"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C6H6(Istream& is); - //- Construct from dictionary C6H6(const dictionary& dict); - //- Construct copy - C6H6(const C6H6& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C6H6& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C6H6& l); }; +Ostream& operator<<(Ostream& os, const C6H6& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6I.H index 982298a4765c4dc40cd2487447f57d88d8fbcae6..7bf345a1f7b1abaaec3eb9749f0c721674cfe0ff 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C6H6/C6H6I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C6H6/C6H6I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C6H6::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C6H6::K(scalar p, scalar T) const +inline Foam::scalar Foam::C6H6::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C6H6::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C6H6::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.C index 349197194f3a18a93671c7a0fe2f550abb51ff58..d8e1101f1b8a7df3ab02a16e6770eb8eeae0688e 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C7H16, 0); addToRunTimeSelectionTable(liquidProperties, C7H16,); - addToRunTimeSelectionTable(liquidProperties, C7H16, Istream); addToRunTimeSelectionTable(liquidProperties, C7H16, dictionary); } @@ -85,8 +84,8 @@ Foam::C7H16::C7H16() ), mu_(-24.451, 1533.1, 2.0087, 0.0, 0.0), mug_(6.672e-08, 0.82837, 85.752, 0.0), - K_(0.215, -0.000303, 0.0, 0.0, 0.0, 0.0), - Kg_(-0.070028, 0.38068, -7049.9, -2400500.0), + kappa_(0.215, -0.000303, 0.0, 0.0, 0.0, 0.0), + kappag_(-0.070028, 0.38068, -7049.9, -2400500.0), sigma_(540.20, 0.054143, 1.2512, 0.0, 0.0, 0.0), D_(147.18, 20.1, 100.204, 28.0) {} @@ -120,68 +119,36 @@ Foam::C7H16::C7H16 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C7H16::C7H16(Istream& is) +Foam::C7H16::C7H16(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C7H16() +{ + readIfPresent(*this, dict); +} -Foam::C7H16::C7H16(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C7H16::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C7H16::C7H16(const C7H16& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C7H16& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.H index 0649b88d1f27c0380d094594165684edbfbb10cf..c30a0d4cdceb6dc4a24157a962216735856e2c62 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C7H16 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C7H16"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C7H16(Istream& is); - //- Construct from dictionary C7H16(const dictionary& dict); - //- Construct copy - C7H16(const C7H16& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C7H16& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C7H16& l); }; +Ostream& operator<<(Ostream& os, const C7H16& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16I.H index 9631cb4d7ad05bac5ca1119c7843e3049f51817a..74b13a52cec74abb02304bcf149f700ba717ed7f 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H16/C7H16I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H16/C7H16I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C7H16::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C7H16::K(scalar p, scalar T) const +inline Foam::scalar Foam::C7H16::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C7H16::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C7H16::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.C index 698b0acb3dd84277281948e2e879017d335f5ce7..142a20a09d8e5d92378cab6cf7a99a0196c9b359 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C7H8, 0); addToRunTimeSelectionTable(liquidProperties, C7H8,); - addToRunTimeSelectionTable(liquidProperties, C7H8, Istream); addToRunTimeSelectionTable(liquidProperties, C7H8, dictionary); } @@ -86,8 +85,8 @@ Foam::C7H8::C7H8() ), mu_(-13.362, 1183, 0.333, 0.0, 0.0), mug_(2.919e-08, 0.9648, 0.0, 0.0), - K_(0.2043, -0.000239, 0.0, 0.0, 0.0, 0.0), - Kg_(2.392e-05, 1.2694, 537, 0.0), + kappa_(0.2043, -0.000239, 0.0, 0.0, 0.0, 0.0), + kappag_(2.392e-05, 1.2694, 537, 0.0), sigma_(591.79, 0.06685, 1.2456, 0.0, 0.0, 0.0), D_(147.18, 20.1, 92.141, 28) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C7H8::C7H8 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C7H8::C7H8(Istream& is) +Foam::C7H8::C7H8(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C7H8() +{ + readIfPresent(*this, dict); +} -Foam::C7H8::C7H8(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C7H8::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C7H8::C7H8(const C7H8& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C7H8& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.H index 7835aaca2a4ca1f92579394e2329b621f3a27e54..16bbb8364a34ef2e0a34863b56a201ce622855c5 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C7H8 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C7H8"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C7H8(Istream& is); - //- Construct from dictionary C7H8(const dictionary& dict); - //- Construct copy - C7H8(const C7H8& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C7H8& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C7H8& l); }; +Ostream& operator<<(Ostream& os, const C7H8& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8I.H index 32359be9ef5b78cae890ec76c408c71425b35da1..b84974e28f9ec24658ffb119a67ea923eabafacc 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C7H8/C7H8I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C7H8/C7H8I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C7H8::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C7H8::K(scalar p, scalar T) const +inline Foam::scalar Foam::C7H8::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C7H8::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C7H8::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.C index 09d76b8af0bc9ad1aa08f488718ae03ecb3e4858..99f021fa030cf3156f55b29a7fa106e73e169b36 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C8H10, 0); addToRunTimeSelectionTable(liquidProperties, C8H10,); - addToRunTimeSelectionTable(liquidProperties, C8H10, Istream); addToRunTimeSelectionTable(liquidProperties, C8H10, dictionary); } @@ -86,8 +85,8 @@ Foam::C8H10::C8H10() ), mu_(-10.452, 1048.4, -0.0715, 0.0, 0.0), mug_(1.2e-06, 0.4518, 439.0, 0.0), - K_(0.20149, -0.00023988, 0.0, 0.0, 0.0, 0.0), - Kg_(1.708e-05, 1.319, 565.6, 0.0), + kappa_(0.20149, -0.00023988, 0.0, 0.0, 0.0, 0.0), + kappag_(1.708e-05, 1.319, 565.6, 0.0), sigma_(617.17, 0.066, 1.268, 0.0, 0.0, 0.0), D_(147.18, 20.1, 106.167, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C8H10::C8H10 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C8H10::C8H10(Istream& is) +Foam::C8H10::C8H10(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C8H10() +{ + readIfPresent(*this, dict); +} -Foam::C8H10::C8H10(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C8H10::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C8H10::C8H10(const C8H10& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C8H10& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.H index 689959ed48b9548eb767ebd720ca83dad2e49b87..856071437efc6e3b62288db6cc696f5f626c0bf4 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,14 +70,16 @@ class C8H10 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C8H10"); @@ -106,15 +108,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C8H10(Istream& is); - //- Construct from dictionary C8H10(const dictionary& dict); - //- Construct copy - C8H10(const C8H10& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -152,10 +148,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -170,33 +166,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C8H10& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C8H10& l); }; +Ostream& operator<<(Ostream& os, const C8H10& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10I.H index 2c6a452291bf7835c052d344cce9e082aa8e19bb..1f2703b7bfb8f3a6943098f408e97f34a11f89cb 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H10/C8H10I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H10/C8H10I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C8H10::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C8H10::K(scalar p, scalar T) const +inline Foam::scalar Foam::C8H10::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C8H10::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C8H10::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.C index 3493b9da1e5af1e64ac9d5712e5f5fa5137914ac..290984601adaa11058520d27cc2182b8257db100 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C8H18, 0); addToRunTimeSelectionTable(liquidProperties, C8H18,); - addToRunTimeSelectionTable(liquidProperties, C8H18, Istream); addToRunTimeSelectionTable(liquidProperties, C8H18, dictionary); } @@ -86,8 +85,8 @@ Foam::C8H18::C8H18() ), mu_(-20.463, 1497.4, 1.379, 0.0, 0.0), mug_(3.1191e-08, 0.92925, 55.092, 0.0), - K_(0.2156, -0.00029483, 0.0, 0.0, 0.0, 0.0), - Kg_(-8758, 0.8448, -27121000000.0, 0.0), + kappa_(0.2156, -0.00029483, 0.0, 0.0, 0.0, 0.0), + kappag_(-8758, 0.8448, -27121000000.0, 0.0), sigma_(568.70, 0.052789, 1.2323, 0.0, 0.0, 0.0), D_(147.18, 20.1, 114.231, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C8H18::C8H18 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C8H18::C8H18(Istream& is) +Foam::C8H18::C8H18(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C8H18() +{ + readIfPresent(*this, dict); +} -Foam::C8H18::C8H18(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C8H18::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C8H18::C8H18(const C8H18& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C8H18& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.H index acdb0da423c8afc472a82c742391e79bfc96491b..caf1ad885a65cea5c1370b3407203fbc1e7b01a1 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C8H18 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C8H18"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C8H18(Istream& is); - //- Construct from dictionary C8H18(const dictionary& dict); - //- Construct copy - C8H18(const C8H18& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C8H18& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C8H18& l); }; +Ostream& operator<<(Ostream& os, const C8H18& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18I.H index a59cc18b0e060920ff490a791c90927755979902..c55f1d66d76e887ad455ca8732f19e361fd97c07 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C8H18/C8H18I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C8H18/C8H18I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C8H18::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C8H18::K(scalar p, scalar T) const +inline Foam::scalar Foam::C8H18::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C8H18::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C8H18::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.C index aae2191b3ed70dd900ae3904e720407f8715f354..2062ef8edab51bea6ef193e450af27eb0712e3d8 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C9H20, 0); addToRunTimeSelectionTable(liquidProperties, C9H20,); - addToRunTimeSelectionTable(liquidProperties, C9H20, Istream); addToRunTimeSelectionTable(liquidProperties, C9H20, dictionary); } @@ -86,8 +85,8 @@ Foam::C9H20::C9H20() ), mu_(-21.149, 1658, 1.454, 0.0, 0.0), mug_(1.0344e-07, 0.77301, 220.47, 0.0), - K_(0.209, -0.000264, 0.0, 0.0, 0.0, 0.0), - Kg_(-0.065771, 0.27198, -3482.3, -1580300.0), + kappa_(0.209, -0.000264, 0.0, 0.0, 0.0, 0.0), + kappag_(-0.065771, 0.27198, -3482.3, -1580300.0), sigma_(594.60, 0.054975, 1.2897, 0.0, 0.0, 0.0), D_(147.18, 20.1, 128.258, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::C9H20::C9H20 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::C9H20::C9H20(Istream& is) +Foam::C9H20::C9H20(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + C9H20() +{ + readIfPresent(*this, dict); +} -Foam::C9H20::C9H20(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::C9H20::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::C9H20::C9H20(const C9H20& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const C9H20& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.H index b4caf6d135d5fd109510612fac60a78051a9433c..72d2d6f9378afe02c66f9628f0b83bb7779ed334 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class C9H20 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("C9H20"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - C9H20(Istream& is); - //- Construct from dictionary C9H20(const dictionary& dict); - //- Construct copy - C9H20(const C9H20& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C9H20& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const C9H20& l); }; +Ostream& operator<<(Ostream& os, const C9H20& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20I.H index 14ddb9a72cddad2a0e2ce9437d31a1c29b60e5ac..f0bcc0b169fb8c71d3a290ac7af39079a0ddd44e 100644 --- a/src/thermophysicalModels/properties/liquidProperties/C9H20/C9H20I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/C9H20/C9H20I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::C9H20::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::C9H20::K(scalar p, scalar T) const +inline Foam::scalar Foam::C9H20::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::C9H20::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::C9H20::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.C index 3b5701c8e8203298348418b31b66fe7913da8291..3e21b663364cdd29b6e9b3446d91279d5d6b13ec 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(CH3OH, 0); addToRunTimeSelectionTable(liquidProperties, CH3OH,); - addToRunTimeSelectionTable(liquidProperties, CH3OH, Istream); addToRunTimeSelectionTable(liquidProperties, CH3OH, dictionary); } @@ -86,8 +85,8 @@ Foam::CH3OH::CH3OH() ), mu_(-7.288, 1065.3, -0.6657, 0.0, 0.0), mug_(3.0663e-07, 0.69655, 205.0, 0.0), - K_(0.2837, -0.000281, 0.0, 0.0, 0.0, 0.0), - Kg_(-7.763, 1.0279, -74360000.0, 6770000000.0), + kappa_(0.2837, -0.000281, 0.0, 0.0, 0.0, 0.0), + kappag_(-7.763, 1.0279, -74360000.0, 6770000000.0), sigma_(512.58, 0.056, -0.00014583, 1.08e-07, 0.0, 0.0), D_(147.18, 20.1, 32.042, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::CH3OH::CH3OH B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::CH3OH::CH3OH(Istream& is) +Foam::CH3OH::CH3OH(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + CH3OH() +{ + readIfPresent(*this, dict); +} -Foam::CH3OH::CH3OH(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::CH3OH::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::CH3OH::CH3OH(const CH3OH& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const CH3OH& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.H index 50d2e75459bc61da8864a922df2865d2b689b806..0d359ed8311e1bb8c378469b5de68d25f9ded2cb 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OH.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OH.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class CH3OH NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("CH3OH"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - CH3OH(Istream& is); - //- Construct from dictionary CH3OH(const dictionary& dict); - //- Construct copy - CH3OH(const CH3OH& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const CH3OH& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const CH3OH& l); }; +Ostream& operator<<(Ostream& os, const CH3OH& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OHI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OHI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OHI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OHI.H index bfe2eeaed4420b37a4094591028ccee241504d79..2b2e3995cd8e71dbaeee3a4af4bfdaebda06843d 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH3OH/CH3OHI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH3OH/CH3OHI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::CH3OH::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::CH3OH::K(scalar p, scalar T) const +inline Foam::scalar Foam::CH3OH::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::CH3OH::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::CH3OH::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.C similarity index 73% rename from src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.C index e011b50d8d248103384a7deda3c8a09899ff1d29..b7120cbed033a65d88fbdefd8bc4e40ede4dbe84 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(CH4N2O, 0); addToRunTimeSelectionTable(liquidProperties, CH4N2O,); - addToRunTimeSelectionTable(liquidProperties, CH4N2O, Istream); addToRunTimeSelectionTable(liquidProperties, CH4N2O, dictionary); } @@ -70,8 +69,8 @@ Foam::CH4N2O::CH4N2O() ), mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10.0), mug_(2.6986e-06, 0.498, 1257.7, -19570.0), - K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0.0, 0.0), - Kg_(6.977e-05, 1.1243, 844.9, -148850.0), + kappa_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0.0, 0.0), + kappag_(6.977e-05, 1.1243, 844.9, -148850.0), sigma_(705.0, 1.0, 0.0, 0.0, 0.0, 0.0), // note: set to constant D_(147.18, 20.1, 60.056, 28.0) // note: Same as nHeptane {} @@ -105,68 +104,36 @@ Foam::CH4N2O::CH4N2O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::CH4N2O::CH4N2O(Istream& is) +Foam::CH4N2O::CH4N2O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + CH4N2O() +{ + readIfPresent(*this, dict); +} -Foam::CH4N2O::CH4N2O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::CH4N2O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::CH4N2O::CH4N2O(const CH4N2O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const CH4N2O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.H index 10246da1cb98e0c2d6349f9d0296f575b01a8b63..2e8be163aced519b04bb393ca0b7c2d88e25d616 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -72,13 +72,15 @@ class CH4N2O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("CH4N2O"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - CH4N2O(Istream& is); - //- Construct from dictionary CH4N2O(const dictionary& dict); - //- Construct copy - CH4N2O(const CH4N2O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const CH4N2O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const CH4N2O& l); }; +Ostream& operator<<(Ostream& os, const CH4N2O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2OI.H index c31e9fb63e87dbd9cde610f218181727fbdca701..89dc6fc672d206f17069c481b40655ea4e210ee0 100644 --- a/src/thermophysicalModels/properties/liquidProperties/CH4N2O/CH4N2OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/CH4N2O/CH4N2OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::CH4N2O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::CH4N2O::K(scalar p, scalar T) const +inline Foam::scalar Foam::CH4N2O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::CH4N2O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::CH4N2O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } @@ -108,4 +108,3 @@ inline Foam::scalar Foam::CH4N2O::D(scalar p, scalar T, scalar Wb) const // ************************************************************************* // - diff --git a/src/thermophysicalModels/properties/liquidProperties/H2O/H2O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.C similarity index 75% rename from src/thermophysicalModels/properties/liquidProperties/H2O/H2O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.C index 8c570a2a162c8bf0769ebda32499a9b95ec4951d..eb211a946f2e8730593ec61062577a326de9a30c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/H2O/H2O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(H2O, 0); addToRunTimeSelectionTable(liquidProperties, H2O,); - addToRunTimeSelectionTable(liquidProperties, H2O, Istream); addToRunTimeSelectionTable(liquidProperties, H2O, dictionary); } @@ -93,8 +92,8 @@ Foam::H2O::H2O() ), mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10), mug_(2.6986e-06, 0.498, 1257.7, -19570), - K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0), - Kg_(6.977e-05, 1.1243, 844.9, -148850), + kappa_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0), + kappag_(6.977e-05, 1.1243, 844.9, -148850), sigma_(647.13, 0.18548, 2.717, -3.554, 2.047, 0), D_(15.0, 15.0, 18.015, 28) {} @@ -128,68 +127,36 @@ Foam::H2O::H2O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::H2O::H2O(Istream& is) +Foam::H2O::H2O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + H2O() +{ + readIfPresent(*this, dict); +} -Foam::H2O::H2O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::H2O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::H2O::H2O(const H2O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const H2O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/H2O/H2O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/H2O/H2O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.H index 6852f315c214f2deeb92900b96a64e73c46702ba..dfa48fd32c4551f255ba91595e7fb97d147221e7 100644 --- a/src/thermophysicalModels/properties/liquidProperties/H2O/H2O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,14 +70,16 @@ class H2O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("H2O"); @@ -106,15 +108,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - H2O(Istream& is); - //- Construct from dictionary H2O(const dictionary& dict); - //- Construct copy - H2O(const H2O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -152,10 +148,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -170,34 +166,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } - + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const H2O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const H2O& l); }; +Ostream& operator<<(Ostream& os, const H2O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/H2O/H2OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/H2O/H2OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2OI.H index a86d4094e1343a5e4a5ef60720fb3936e77f94f4..f00d1b7a546872dc52bd8b10855e199818853fcf 100644 --- a/src/thermophysicalModels/properties/liquidProperties/H2O/H2OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/H2O/H2OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::H2O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::H2O::K(scalar p, scalar T) const +inline Foam::scalar Foam::H2O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::H2O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::H2O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.C index 76fa337dcda99149c37b82c8c42e072918422506..7f6bd4a9230df3cd3c565a24cd200125aa44795b 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(IC8H18, 0); addToRunTimeSelectionTable(liquidProperties, IC8H18,); - addToRunTimeSelectionTable(liquidProperties, IC8H18, Istream); addToRunTimeSelectionTable(liquidProperties, IC8H18, dictionary); } @@ -86,8 +85,8 @@ Foam::IC8H18::IC8H18() ), mu_(-15.811, 1282.5, 0.67791, -3.8617e-28, 10.0), mug_(1.107e-07, 0.746, 72.4, 0.0), - K_(0.1508, -0.0001712, 0.0, 0.0, 0.0, 0.0), - Kg_(1.758e-05, 1.3114, 392.9, 0.0), + kappa_(0.1508, -0.0001712, 0.0, 0.0, 0.0, 0.0), + kappag_(1.758e-05, 1.3114, 392.9, 0.0), sigma_(543.96, 0.047434, 1.1975, 0.0, 0.0, 0.0), D_(147.18, 20.1, 114.231, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::IC8H18::IC8H18 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::IC8H18::IC8H18(Istream& is) +Foam::IC8H18::IC8H18(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + IC8H18() +{ + readIfPresent(*this, dict); +} -Foam::IC8H18::IC8H18(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::IC8H18::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::IC8H18::IC8H18(const IC8H18& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const IC8H18& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.H index 79842a43c9ceac590fa0d35f28d00c090f0e452f..9be7f5885cd0d0d6d8eb64e057be591902dbc161 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class IC8H18 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("IC8H18"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - IC8H18(Istream& is); - //- Construct from dictionary IC8H18(const dictionary& dict); - //- Construct copy - IC8H18(const IC8H18& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const IC8H18& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const IC8H18& l); }; +Ostream& operator<<(Ostream& os, const IC8H18& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18I.H index a66fc479f4d1c38f1f1fe4a94c43a95b13c98a43..1c7ce68d387cf55b25e4eef302553ccfbb2a8076 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IC8H18/IC8H18I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IC8H18/IC8H18I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::IC8H18::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::IC8H18::K(scalar p, scalar T) const +inline Foam::scalar Foam::IC8H18::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::IC8H18::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::IC8H18::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.C similarity index 76% rename from src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.C index aeaff10fa4c44d9c9b061c15e5928ea38f0fede6..99bf130a16a6760ccb7858cfc6b682791b4f5f30 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(IDEA, 0); addToRunTimeSelectionTable(liquidProperties, IDEA,); - addToRunTimeSelectionTable(liquidProperties, IDEA, Istream); addToRunTimeSelectionTable(liquidProperties, IDEA, dictionary); } @@ -92,8 +91,8 @@ Foam::IDEA::IDEA() ), mu_(-6.9645853822e+01, 4.4390635942e+03, 8.4680722718e+00, 0.0, 0.0), mug_(4.2629382158e-08, 8.8144402122e-01, 9.6918097636e+01, 0.0), - K_(2.03684e-01, -2.3168e-04, 0.0, 0.0, 0.0, 0.0), - Kg_ + kappa_(2.03684e-01, -2.3168e-04, 0.0, 0.0, 0.0, 0.0), + kappag_ ( -5.664925956707e+02, 8.896721676320e-01, @@ -141,68 +140,36 @@ Foam::IDEA::IDEA B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::IDEA::IDEA(Istream& is) +Foam::IDEA::IDEA(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + IDEA() +{ + readIfPresent(*this, dict); +} -Foam::IDEA::IDEA(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::IDEA::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::IDEA::IDEA(const IDEA& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const IDEA& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.H similarity index 84% rename from src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.H index 9a68cbe1682c9dde370fa7feda55f72509d987f9..dccf97c4fcc06a3a345d8a9afbc32d4cf6633e4d 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,14 +93,16 @@ class IDEA NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("IDEA"); @@ -129,15 +131,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - IDEA(Istream& is); - //- Construct from dictionary IDEA(const dictionary& dict); - //- Construct copy - IDEA(const IDEA& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -175,10 +171,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -193,32 +189,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const IDEA& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const IDEA& l); }; +Ostream& operator<<(Ostream& os, const IDEA& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.thermo b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.thermo similarity index 100% rename from src/thermophysicalModels/properties/liquidProperties/IDEA/IDEA.thermo rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEA.thermo diff --git a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEAI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEAI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/IDEA/IDEAI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEAI.H index a5f457109bce74662e2ea634629ef9011284c429..f3f46378f1252339dff54d6ecb35d4e0aa2f9fe5 100644 --- a/src/thermophysicalModels/properties/liquidProperties/IDEA/IDEAI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/IDEA/IDEAI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::IDEA::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::IDEA::K(scalar p, scalar T) const +inline Foam::scalar Foam::IDEA::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::IDEA::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::IDEA::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/MB/MB.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.C similarity index 73% rename from src/thermophysicalModels/properties/liquidProperties/MB/MB.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.C index 3e336b3bac28eed06672c96adfc21c51ac3d18e5..d101add34efe70bcaf972a0b2fca70bfbdcedb53 100644 --- a/src/thermophysicalModels/properties/liquidProperties/MB/MB.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(MB, 0); addToRunTimeSelectionTable(liquidProperties, MB,); - addToRunTimeSelectionTable(liquidProperties, MB, Istream); addToRunTimeSelectionTable(liquidProperties, MB, dictionary); } @@ -70,8 +69,8 @@ Foam::MB::MB() ), mu_(-12.206, 1141.7, 0.15014, 0.0, 0.0), mug_(3.733e-07, 0.6177, 256.5, 0.0), - K_(0.2298, -0.0003002, 0.0, 0.0, 0.0, 0.0), - Kg_(1333.1, 0.9962, 12317000000.0, 0.0), + kappa_(0.2298, -0.0003002, 0.0, 0.0, 0.0, 0.0), + kappag_(1333.1, 0.9962, 12317000000.0, 0.0), sigma_(554.5, 0.064084, 1.2418, 0.0, 0.0, 0.0), D_(147.18, 20.1, 102.133, 28.0) // note: Same as nHeptane {} @@ -105,68 +104,36 @@ Foam::MB::MB B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::MB::MB(Istream& is) +Foam::MB::MB(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + MB() +{ + readIfPresent(*this, dict); +} -Foam::MB::MB(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::MB::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::MB::MB(const MB& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const MB& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/MB/MB.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/MB/MB.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.H index 2615511135b02ec974cfc0136a091dc121695421..9b0c7fd430891accdbd2c15b84a8e0b02b382a8a 100644 --- a/src/thermophysicalModels/properties/liquidProperties/MB/MB.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MB.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class MB NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("MB"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - MB(Istream& is); - //- Construct from dictionary MB(const dictionary& dict); - //- Construct copy - MB(const MB& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const MB& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const MB& l); }; +Ostream& operator<<(Ostream& os, const MB& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/MB/MBI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MBI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/MB/MBI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MBI.H index 9ee002bf222687726748249a3a566ff95f20c0be..d72c33e79e05a64145fdb4e7cf825edd11cc76d2 100644 --- a/src/thermophysicalModels/properties/liquidProperties/MB/MBI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/MB/MBI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::MB::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::MB::K(scalar p, scalar T) const +inline Foam::scalar Foam::MB::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::MB::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::MB::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/N2/N2.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/N2/N2.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.C index e3f09d561b2d171fa2104573b5dcb990d1ee9fcf..67e7f4b89aa0a8287bddc32825ea8d65c34196e9 100644 --- a/src/thermophysicalModels/properties/liquidProperties/N2/N2.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(N2, 0); addToRunTimeSelectionTable(liquidProperties, N2,); - addToRunTimeSelectionTable(liquidProperties, N2, Istream); addToRunTimeSelectionTable(liquidProperties, N2, dictionary); } @@ -86,8 +85,8 @@ Foam::N2::N2() ), mu_(32.165, 496.9, 3.9069, -1.08e-21, 10.0), mug_(7.632e-07, 0.58823, 67.75, 0.0), - K_(0.7259, -0.016728, 0.00016215, -5.7605e-07, 0.0, 0.0), - Kg_(0.000351, 0.7652, 25.767, 0.0), + kappa_(0.7259, -0.016728, 0.00016215, -5.7605e-07, 0.0, 0.0), + kappag_(0.000351, 0.7652, 25.767, 0.0), sigma_(126.10, 0.02898, 1.2457, 0.0, 0.0, 0.0), D_(147.18, 20.1, 28.014, 28.0) // note: Same as nHeptane {} @@ -121,68 +120,36 @@ Foam::N2::N2 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::N2::N2(Istream& is) +Foam::N2::N2(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + N2() +{ + readIfPresent(*this, dict); +} -Foam::N2::N2(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::N2::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::N2::N2(const N2& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const N2& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/N2/N2.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.H similarity index 81% rename from src/thermophysicalModels/properties/liquidProperties/N2/N2.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.H index 82ac36b36f4e44f60f5979c23b0d718ad4699527..db637e421f4e77693a4147d996bb1e4b3d9f40d6 100644 --- a/src/thermophysicalModels/properties/liquidProperties/N2/N2.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class N2 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("N2"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - N2(Istream& is); - //- Construct from dictionary N2(const dictionary& dict); - //- Construct copy - N2(const N2& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const N2& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const N2& l); }; +Ostream& operator<<(Ostream& os, const N2& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/N2/N2I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/N2/N2I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2I.H index 49e8a3faad904f6b50b81a1c3cd6421b0ee79bb3..bd3c4caf439e2e6838d51374f55a7c9dfb57974c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/N2/N2I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/N2/N2I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::N2::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::N2::K(scalar p, scalar T) const +inline Foam::scalar Foam::N2::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::N2::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::N2::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.C index e8592ecffbeb508b1485445fe900593159f79f75..09a765204a1bccbc24af96ad3a72dee0d9c83eaa 100644 --- a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(aC10H7CH3, 0); addToRunTimeSelectionTable(liquidProperties, aC10H7CH3,); - addToRunTimeSelectionTable(liquidProperties, aC10H7CH3, Istream); addToRunTimeSelectionTable(liquidProperties, aC10H7CH3, dictionary); } @@ -78,8 +77,8 @@ Foam::aC10H7CH3::aC10H7CH3() ), mu_(-93.6, 5784, 12, 0, 0), mug_(2.5672e-06, 0.3566, 825.54, 0), - K_(0.19758, -0.0001796, 0, 0, 0, 0), - Kg_(0.3911, -0.1051, -213.52, 2318300), + kappa_(0.19758, -0.0001796, 0, 0, 0, 0), + kappag_(0.3911, -0.1051, -213.52, 2318300), sigma_(772.04, 0.076, 1.33, 0, 0, 0), D_(147.18, 20.1, 142.2, 28) // note: Same as nHeptane {} @@ -113,68 +112,36 @@ Foam::aC10H7CH3::aC10H7CH3 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::aC10H7CH3::aC10H7CH3(Istream& is) +Foam::aC10H7CH3::aC10H7CH3(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + aC10H7CH3() +{ + readIfPresent(*this, dict); +} -Foam::aC10H7CH3::aC10H7CH3(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::aC10H7CH3::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::aC10H7CH3::aC10H7CH3(const aC10H7CH3& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const aC10H7CH3& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.H index 171195d6a796faaf382938242b61cacd94f8c172..370609e2f6f6cffe8f4c956a3f20fcc7e82b881f 100644 --- a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class aC10H7CH3 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("aC11H10"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - aC10H7CH3(Istream& is); - //- Construct from dictionary aC10H7CH3(const dictionary& dict); - //- Construct copy - aC10H7CH3(const aC10H7CH3& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,34 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } - + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const aC10H7CH3& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const aC10H7CH3& l); }; +Ostream& operator<<(Ostream& os, const aC10H7CH3& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3I.H index e652b547627c31005cfb9949cd7fed6af100d5d6..6d64a5e4bbf0a2d8db6ea982a2e1f32320dcf211 100644 --- a/src/thermophysicalModels/properties/liquidProperties/aC10H7CH3/aC10H7CH3I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/aC10H7CH3/aC10H7CH3I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::aC10H7CH3::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::aC10H7CH3::K(scalar p, scalar T) const +inline Foam::scalar Foam::aC10H7CH3::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::aC10H7CH3::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::aC10H7CH3::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.C index db118f430091f72ba82eb8ff9d82bd88981b98e6..5392da1737e3da7c9dc3981e65c377e1d5354ee5 100644 --- a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(bC10H7CH3, 0); addToRunTimeSelectionTable(liquidProperties, bC10H7CH3,); - addToRunTimeSelectionTable(liquidProperties, bC10H7CH3, Istream); addToRunTimeSelectionTable(liquidProperties, bC10H7CH3, dictionary); } @@ -78,8 +77,8 @@ Foam::bC10H7CH3::bC10H7CH3() ), mu_(-63.276, 4219, 7.5549, 0.0, 0.0), mug_(2.1791e-06, 0.3717, 712.53, 0.0), - K_(0.1962, -0.00018414, 0.0, 0.0, 0.0, 0.0), - Kg_(0.4477, -0.1282, -345.89, 2340100), + kappa_(0.1962, -0.00018414, 0.0, 0.0, 0.0, 0.0), + kappag_(0.4477, -0.1282, -345.89, 2340100), sigma_(761.0, 0.066442, 1.2634, 0.0, 0.0, 0.0), D_(147.18, 20.1, 142.2, 28) // note: Same as nHeptane {} @@ -113,68 +112,37 @@ Foam::bC10H7CH3::bC10H7CH3 B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::bC10H7CH3::bC10H7CH3(Istream& is) -: - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} - Foam::bC10H7CH3::bC10H7CH3(const dictionary& dict) : - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} + bC10H7CH3() +{ + readIfPresent(*this, dict); +} -Foam::bC10H7CH3::bC10H7CH3(const bC10H7CH3& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::bC10H7CH3::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const bC10H7CH3& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.H index 28dd844f84cabe6ca01017b06a9aefd184392ff1..07e700773d07a841b0fb6a9cd96207cbc4a899bb 100644 --- a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -71,14 +71,16 @@ class bC10H7CH3 NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc6 sigma_; APIdiffCoefFunc D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("bC11H10"); @@ -107,15 +109,9 @@ public: const APIdiffCoefFunc& vapourDiffussivity ); - //- Construct from Istream - bC10H7CH3(Istream& is); - //- Construct from dictionary bC10H7CH3(const dictionary& dict); - //- Construct copy - bC10H7CH3(const bC10H7CH3& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -153,10 +149,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -171,33 +167,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const bC10H7CH3& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const bC10H7CH3& l); }; +Ostream& operator<<(Ostream& os, const bC10H7CH3& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3I.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3I.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3I.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3I.H index c98233072777bd2e1a20f3ce8a0c9ba7b0f59069..1ff9ab154639caf405cc6aefc8f2604d23f52230 100644 --- a/src/thermophysicalModels/properties/liquidProperties/bC10H7CH3/bC10H7CH3I.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/bC10H7CH3/bC10H7CH3I.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::bC10H7CH3::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::bC10H7CH3::K(scalar p, scalar T) const +inline Foam::scalar Foam::bC10H7CH3::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::bC10H7CH3::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::bC10H7CH3::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } diff --git a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.C index 3e4925627411ddf568ef1255778ddeaf7edd0971..bcb9b432548ea945eb9c33746e73f8e231101b30 100644 --- a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(iC3H8O, 0); addToRunTimeSelectionTable(liquidProperties, iC3H8O,); - addToRunTimeSelectionTable(liquidProperties, iC3H8O, Istream); addToRunTimeSelectionTable(liquidProperties, iC3H8O, dictionary); } @@ -86,8 +85,8 @@ Foam::iC3H8O::iC3H8O() ), mu_(-8.23, 2282.2, -0.98495, 0.0, 0.0), mug_(1.993e-07, 0.7233, 178.0, 0.0), - K_(0.2029, -0.0002278, 0.0, 0.0, 0.0, 0.0), - Kg_(-80.642, -1.4549, -604.42, 0.0), + kappa_(0.2029, -0.0002278, 0.0, 0.0, 0.0, 0.0), + kappag_(-80.642, -1.4549, -604.42, 0.0), sigma_(0.03818, -3.818e-05, -6.51e-08, 0.0, 0.0, 0.0), D_(4.75e-10, 1.75, 0.0, 0.0, 0.0) {} @@ -121,68 +120,36 @@ Foam::iC3H8O::iC3H8O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::iC3H8O::iC3H8O(Istream& is) +Foam::iC3H8O::iC3H8O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + iC3H8O() +{ + readIfPresent(*this, dict); +} -Foam::iC3H8O::iC3H8O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::iC3H8O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::iC3H8O::iC3H8O(const iC3H8O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const iC3H8O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.H index 763a623b577314c5d6f1d520d10ed3699bbcc7ab..4f616f79d3404285123a04bbaca8c11415648e2b 100644 --- a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,13 +70,15 @@ class iC3H8O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc0 sigma_; NSRDSfunc1 D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("iC3H8O"); @@ -105,15 +107,9 @@ public: const NSRDSfunc1& vapourDiffussivity ); - //- Construct from Istream - iC3H8O(Istream& is); - //- Construct from dictionary iC3H8O(const dictionary& dict); - //- Construct copy - iC3H8O(const iC3H8O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -151,10 +147,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -170,33 +166,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const iC3H8O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const iC3H8O& l); }; +Ostream& operator<<(Ostream& os, const iC3H8O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam @@ -210,4 +189,3 @@ public: #endif // ************************************************************************* // - diff --git a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8OI.H index 660967b9e6e4ab5972ab269f835e1353c34bdfe5..7f355196dd2699dedcfa549d0ce927b7d6e2bb5f 100644 --- a/src/thermophysicalModels/properties/liquidProperties/iC3H8O/iC3H8OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/iC3H8O/iC3H8OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::iC3H8O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::iC3H8O::K(scalar p, scalar T) const +inline Foam::scalar Foam::iC3H8O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::iC3H8O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::iC3H8O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } @@ -109,4 +109,3 @@ inline Foam::scalar Foam::iC3H8O::D(scalar p, scalar T, scalar) const // ************************************************************************* // - diff --git a/src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.C similarity index 94% rename from src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.C index 84c202b8543eff1a715a213069281e8cdc782083..c07e51462f343eba652557fe86b12b346a704fb1 100644 --- a/src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,11 +47,22 @@ Foam::liquidMixtureProperties::liquidMixtureProperties forAll(components_, i) { - properties_.set - ( - i, - liquidProperties::New(dict.subDict(components_[i])) - ); + if (dict.isDict(components_[i])) + { + properties_.set + ( + i, + liquidProperties::New(dict.subDict(components_[i])) + ); + } + else + { + properties_.set + ( + i, + liquidProperties::New(components_[i]) + ); + } } } @@ -438,7 +449,7 @@ Foam::scalar Foam::liquidMixtureProperties::mu } -Foam::scalar Foam::liquidMixtureProperties::K +Foam::scalar Foam::liquidMixtureProperties::kappa ( const scalar p, const scalar T, @@ -473,8 +484,8 @@ Foam::scalar Foam::liquidMixtureProperties::K scalar Kij = 2.0 /( - 1.0/properties_[i].K(p, Ti) - + 1.0/properties_[j].K(p, Tj) + 1.0/properties_[i].kappa(p, Ti) + + 1.0/properties_[j].kappa(p, Tj) ); K += phii[i]*phii[j]*Kij; } diff --git a/src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.H similarity index 94% rename from src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.H index dd276a25472736b7d6e43b2f0dd9836842e15c03..d726a93dce699008f2f23d730d62e0cd7d181193 100644 --- a/src/thermophysicalModels/properties/liquidMixtureProperties/liquidMixtureProperties/liquidMixtureProperties.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidMixtureProperties/liquidMixtureProperties.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,17 +31,11 @@ Description \verbatim <parentDictionary> { - H2O - { - defaultCoeffs yes; // employ default coefficients - } + H2O; // employ default coefficients + C7H16 { - defaultCoeffs no; - C7H16Coeffs - { - ... user defined properties for C7H16 - } + // ... user defined properties for C7H16 } } \endverbatim @@ -57,11 +51,9 @@ See also #ifndef liquidMixtureProperties_H #define liquidMixtureProperties_H -#include "word.H" -#include "scalarField.H" -#include "PtrList.H" #include "liquidProperties.H" -#include "autoPtr.H" +#include "PtrList.H" +#include "scalarField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -226,7 +218,7 @@ public: //- Estimate thermal conductivity [W/(m K)] // Li's method, Eq. 10-12.27 - 10.12-19 - scalar K + scalar kappa ( const scalar p, const scalar T, diff --git a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C similarity index 54% rename from src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C index b7190cff5162f2925f5ac6637c557504652816fc..f454eb7bf8ab24a9482e4cf9cde99c6097872c5a 100644 --- a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,7 +33,6 @@ namespace Foam { defineTypeNameAndDebug(liquidProperties, 0); defineRunTimeSelectionTable(liquidProperties,); - defineRunTimeSelectionTable(liquidProperties, Istream); defineRunTimeSelectionTable(liquidProperties, dictionary); } @@ -54,7 +53,7 @@ Foam::liquidProperties::liquidProperties scalar delta ) : - W_(W), + thermophysicalProperties(W), Tc_(Tc), Pc_(Pc), Vc_(Vc), @@ -68,25 +67,9 @@ Foam::liquidProperties::liquidProperties {} -Foam::liquidProperties::liquidProperties(Istream& is) -: - W_(readScalar(is)), - Tc_(readScalar(is)), - Pc_(readScalar(is)), - Vc_(readScalar(is)), - Zc_(readScalar(is)), - Tt_(readScalar(is)), - Pt_(readScalar(is)), - Tb_(readScalar(is)), - dipm_(readScalar(is)), - omega_(readScalar(is)), - delta_(readScalar(is)) -{} - - Foam::liquidProperties::liquidProperties(const dictionary& dict) : - W_(readScalar(dict.lookup("W"))), + thermophysicalProperties(dict), Tc_(readScalar(dict.lookup("Tc"))), Pc_(readScalar(dict.lookup("Pc"))), Vc_(readScalar(dict.lookup("Vc"))), @@ -100,65 +83,31 @@ Foam::liquidProperties::liquidProperties(const dictionary& dict) {} -Foam::liquidProperties::liquidProperties(const liquidProperties& liq) -: - W_(liq.W_), - Tc_(liq.Tc_), - Pc_(liq.Pc_), - Vc_(liq.Vc_), - Zc_(liq.Zc_), - Tt_(liq.Tt_), - Pt_(liq.Pt_), - Tb_(liq.Tb_), - dipm_(liq.dipm_), - omega_(liq.omega_), - delta_(liq.delta_) -{} - - // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::liquidProperties> Foam::liquidProperties::New(Istream& is) +Foam::autoPtr<Foam::liquidProperties> Foam::liquidProperties::New +( + const word& name +) { if (debug) { InfoInFunction << "Constructing liquidProperties" << endl; } - const word liquidPropertiesType(is); - const word coeffs(is); + ConstructorTable::iterator cstrIter = ConstructorTablePtr_->find(name); - if (coeffs == "defaultCoeffs") - { - ConstructorTable::iterator cstrIter = - ConstructorTablePtr_->find(liquidPropertiesType); - - if (!cstrIter.found()) - { - FatalErrorInFunction - << "Unknown liquidProperties type " - << liquidPropertiesType << nl << nl - << "Valid liquidProperties types are:" << nl - << ConstructorTablePtr_->sortedToc() - << abort(FatalError); - } - - return autoPtr<liquidProperties>(cstrIter()()); - } - else if (coeffs == "coeffs") - { - return autoPtr<liquidProperties>(new liquidProperties(is)); - } - else + if (!cstrIter.found()) { FatalErrorInFunction - << "liquidProperties type " << liquidPropertiesType - << ", option " << coeffs << " given" - << ", should be coeffs or defaultCoeffs" - << abort(FatalError); - - return autoPtr<liquidProperties>(nullptr); + << "Unknown liquidProperties type " + << name << nl << nl + << "Valid liquidProperties types are:" << nl + << ConstructorTablePtr_->sortedToc() + << exit(FatalError); } + + return autoPtr<liquidProperties>(cstrIter()()); } @@ -174,24 +123,37 @@ Foam::autoPtr<Foam::liquidProperties> Foam::liquidProperties::New const word& liquidPropertiesTypeName = dict.dictName(); - const Switch defaultCoeffs(dict.lookup("defaultCoeffs")); - - if (defaultCoeffs) + if (dict.found("defaultCoeffs")) { - ConstructorTable::iterator cstrIter = - ConstructorTablePtr_->find(liquidPropertiesTypeName); + // Backward-compatibility - if (!cstrIter.found()) + if (Switch(dict.lookup("defaultCoeffs"))) { - FatalErrorInFunction - << "Unknown liquidProperties type " - << liquidPropertiesTypeName << nl << nl - << "Valid liquidProperties types are:" << nl - << ConstructorTablePtr_->sortedToc() - << abort(FatalError); + return New(liquidPropertiesTypeName); + } + else + { + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(liquidPropertiesTypeName); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown liquidProperties type " + << liquidPropertiesTypeName << nl << nl + << "Valid liquidProperties types are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr<liquidProperties> + ( + cstrIter() + ( + dict.optionalSubDict(liquidPropertiesTypeName + "Coeffs") + ) + ); } - - return autoPtr<liquidProperties>(cstrIter()()); } else { @@ -205,107 +167,20 @@ Foam::autoPtr<Foam::liquidProperties> Foam::liquidProperties::New << liquidPropertiesTypeName << nl << nl << "Valid liquidProperties types are:" << nl << dictionaryConstructorTablePtr_->sortedToc() - << abort(FatalError); + << exit(FatalError); } - return autoPtr<liquidProperties> - ( - cstrIter()(dict.subDict(liquidPropertiesTypeName + "Coeffs")) - ); + return autoPtr<liquidProperties>(cstrIter()(dict)); } } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::scalar Foam::liquidProperties::rho(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::pv(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::hl(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::Cp(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::h(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::Cpg(scalar p, scalar T) const +Foam::scalar Foam::liquidProperties::S(scalar p, scalar T) const { NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::mu(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::mug(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::K(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::Kg(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::sigma(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::D(scalar p, scalar T) const -{ - NotImplemented; - return 0.0; -} - - -Foam::scalar Foam::liquidProperties::D(scalar p, scalar T, scalar Wb) const -{ - NotImplemented; - return 0.0; + return 0; } @@ -336,7 +211,7 @@ Foam::scalar Foam::liquidProperties::pvInvert(scalar p) const while ((Thi - Tlo) > 1.0e-4) { - if ((pv(p, T) - p) <= 0.0) + if ((pv(p, T) - p) <= 0) { Tlo = T; } @@ -352,10 +227,26 @@ Foam::scalar Foam::liquidProperties::pvInvert(scalar p) const } -void Foam::liquidProperties::writeData(Ostream& os) const +void Foam::liquidProperties::readIfPresent(const dictionary &dict) { + thermophysicalProperties::readIfPresent(dict); + dict.readIfPresent("Tc", Tc_); + dict.readIfPresent("Pc", Pc_); + dict.readIfPresent("Vc", Vc_); + dict.readIfPresent("Zc", Zc_); + dict.readIfPresent("Tt", Tt_); + dict.readIfPresent("Pt", Pt_); + dict.readIfPresent("Tb", Tb_); + dict.readIfPresent("dipm", dipm_); + dict.readIfPresent("omega", omega_); + dict.readIfPresent("delta", delta_); +} + - os << W_ << token::SPACE +void Foam::liquidProperties::writeData(Ostream& os) const +{ + thermophysicalProperties::writeData(os); + os << token::SPACE << Tc_ << token::SPACE << Pc_ << token::SPACE << Vc_ << token::SPACE @@ -369,4 +260,13 @@ void Foam::liquidProperties::writeData(Ostream& os) const } +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const liquidProperties& l) +{ + l.writeData(os); + return os; +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.H similarity index 61% rename from src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.H index fa295c97c97161767c3c7ef5c6222683ae4c7b4c..7df742adca56b698fde1fb1c479628e10273a548 100644 --- a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ Class Foam::liquidProperties Description - The thermophysical properties of a liquidProperties + The thermophysical properties of a liquid SourceFiles liquidProperties.C @@ -35,12 +35,7 @@ SourceFiles #ifndef liquidProperties_H #define liquidProperties_H -#include "scalar.H" -#include "IOstreams.H" -#include "typeInfo.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" -#include "dictionary.H" +#include "thermophysicalProperties.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,12 +47,11 @@ namespace Foam \*---------------------------------------------------------------------------*/ class liquidProperties +: + public thermophysicalProperties { // Private data - //- Molecular weight [kg/kmol] - scalar W_; - //- Critical temperature [K] scalar Tc_; @@ -91,7 +85,7 @@ class liquidProperties public: - TypeName("liquidProperties"); + TypeName("liquid"); // Declare run-time constructor selection tables @@ -105,15 +99,6 @@ public: () ); - declareRunTimeSelectionTable - ( - autoPtr, - liquidProperties, - Istream, - (Istream& is), - (is) - ); - declareRunTimeSelectionTable ( autoPtr, @@ -142,26 +127,17 @@ public: scalar delta ); - //- Construct from Istream - liquidProperties(Istream& is); - //- Construct from dictionary liquidProperties(const dictionary& dict); - //- Construct copy - liquidProperties(const liquidProperties& liq); - //- Construct and return clone - virtual autoPtr<liquidProperties> clone() const - { - return autoPtr<liquidProperties>(new liquidProperties(*this)); - } + virtual autoPtr<liquidProperties> clone() const = 0; // Selectors - //- Return a pointer to a new liquidProperties created from input - static autoPtr<liquidProperties> New(Istream& is); + //- Return a pointer to a new liquidProperties created from name + static autoPtr<liquidProperties> New(const word& name); //- Return a pointer to a new liquidProperties created from dictionary static autoPtr<liquidProperties> New(const dictionary& dict); @@ -172,12 +148,23 @@ public: {} + // Static data + + //- 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; + + // Member Functions // Physical constants which define the specie - //- Molecular weight [kg/kmol] - inline scalar W() const; + //- No of moles of this species in mixture + // Note Mixing of liquidProperties is not currently supported + // so Y = 1 + inline scalar Y() const; //- Critical temperature [K] inline scalar Tc() const; @@ -209,47 +196,74 @@ public: //- Solubility parameter [(J/m^3)^(1/2)] inline scalar delta() const; + //- Limit the temperature to be in the range Tlow_ to Thigh_ + inline scalar limit(const scalar T) const; + + + // Fundamental equation of state properties + + //- Liquid compressibility rho/p [s^2/m^2] + // Note: currently it is assumed the liquid is incompressible + inline scalar psi(scalar p, scalar T) const; + + //- Return (Cp - Cv) [J/(kg K] + // Note: currently it is assumed the liquid is incompressible + // so CpMCv = 0 + inline scalar CpMCv(scalar p, scalar T) const; - // Physical property pure virtual functions - //- Liquid rho [kg/m^3] - virtual scalar rho(scalar p, scalar T) const; + // Fundamental thermodynamic properties + + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; + + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; + + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; + + // Entropy [J/(kg K)] + scalar S(const scalar p, const scalar T) const; + + + // Physical properties //- Vapour pressure [Pa] - virtual scalar pv(scalar p, scalar T) const; + virtual scalar pv(scalar p, scalar T) const = 0; //- Heat of vapourisation [J/kg] - virtual scalar hl(scalar p, scalar T) const; - - //- Liquid heat capacity [J/(kg K)] - virtual scalar Cp(scalar p, scalar T) const; + virtual scalar hl(scalar p, scalar T) const = 0; //- Liquid enthalpy [J/kg] - reference to 298.15 K - virtual scalar h(scalar p, scalar T) const; + virtual scalar h(scalar p, scalar T) const = 0; - //- Ideal gas heat capacity [J/(kg K)] - virtual scalar Cpg(scalar p, scalar T) const; + //- Vapour heat capacity [J/(kg K)] + virtual scalar Cpg(scalar p, scalar T) const = 0; //- Liquid viscosity [Pa s] - virtual scalar mu(scalar p, scalar T) const; + virtual scalar mu(scalar p, scalar T) const = 0; //- Vapour viscosity [Pa s] - virtual scalar mug(scalar p, scalar T) const; + virtual scalar mug(scalar p, scalar T) const = 0; //- Liquid thermal conductivity [W/(m K)] - virtual scalar K(scalar p, scalar T) const; + virtual scalar kappa(scalar p, scalar T) const = 0; + + //- Liquid thermal diffusivity of enthalpy [kg/ms] + inline scalar alphah(const scalar p, const scalar T) const; //- Vapour thermal conductivity [W/(m K)] - virtual scalar Kg(scalar p, scalar T) const; + virtual scalar kappag(scalar p, scalar T) const = 0; //- Surface tension [N/m] - virtual scalar sigma(scalar p, scalar T) const; + virtual scalar sigma(scalar p, scalar T) const = 0; //- Vapour diffussivity [m2/s] - virtual scalar D(scalar p, scalar T) const; + virtual scalar D(scalar p, scalar T) const = 0; //- Vapour diffussivity [m2/s] with specified binary pair - virtual scalar D(scalar p, scalar T, scalar Wb) const; + virtual scalar D(scalar p, scalar T, scalar Wb) const = 0; //- Invert the vapour pressure relationship to retrieve the // boiling temperuture as a function of pressure @@ -258,18 +272,39 @@ public: // I-O + //- Read and set the properties present it the given dictionary + void readIfPresent(const dictionary& dict); + + //- Read and set the function coefficients + // if present it the given dictionary + template<class Func> + inline void readIfPresent + ( + Func& f, + const word& name, + const dictionary& dict + ); + + //- Read and set the function coefficients + // if present it the given dictionary + template<class Liquid> + inline void readIfPresent(Liquid& l, const dictionary& dict); + //- Write the function coefficients - virtual void writeData(Ostream& os) const; + virtual void writeData(Ostream& os) const = 0;; + + //- Write the data for each of the property functions + template<class Liquid> + inline void writeData(const Liquid& l, Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const liquidProperties& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const liquidProperties& l); }; +Ostream& operator<<(Ostream& os, const liquidProperties& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidPropertiesI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidPropertiesI.H new file mode 100644 index 0000000000000000000000000000000000000000..454116fb112044d10cfeffd430d44739b3b61fc0 --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidPropertiesI.H @@ -0,0 +1,197 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2017 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/>. + +\*---------------------------------------------------------------------------*/ + +inline Foam::scalar Foam::liquidProperties::limit(const scalar T) const +{ + return T; +} + + +inline Foam::scalar Foam::liquidProperties::Y() const +{ + return 1; +} + + +inline Foam::scalar Foam::liquidProperties::Tc() const +{ + return Tc_; +} + + +inline Foam::scalar Foam::liquidProperties::Pc() const +{ + return Pc_; +} + + +inline Foam::scalar Foam::liquidProperties::Vc() const +{ + return Vc_; +} + + +inline Foam::scalar Foam::liquidProperties::Zc() const +{ + return Zc_; +} + + +inline Foam::scalar Foam::liquidProperties::Tt() const +{ + return Tt_; +} + + +inline Foam::scalar Foam::liquidProperties::Pt() const +{ + return Pt_; +} + + +inline Foam::scalar Foam::liquidProperties::Tb() const +{ + return Tb_; +} + + +inline Foam::scalar Foam::liquidProperties::dipm() const +{ + return dipm_; +} + + +inline Foam::scalar Foam::liquidProperties::omega() const +{ + return omega_; +} + + +inline Foam::scalar Foam::liquidProperties::delta() const +{ + return delta_; +} + + +inline Foam::scalar Foam::liquidProperties::psi(scalar p, scalar T) const +{ + return 0; +} + + +inline Foam::scalar Foam::liquidProperties::CpMCv(scalar p, scalar T) const +{ + return 0; +} + + +inline Foam::scalar Foam::liquidProperties::Ha(scalar p, scalar T) const +{ + return h(p, T); +} + + +inline Foam::scalar Foam::liquidProperties::Hs(scalar p, scalar T) const +{ + return h(p, T); +} + + +inline Foam::scalar Foam::liquidProperties::Hc() const +{ + return 0; +} + + +inline Foam::scalar Foam::liquidProperties::alphah(scalar p, scalar T) const +{ + return kappa(p, T)/Cp(p, T); +} + + +template<class Func> +inline void Foam::liquidProperties::readIfPresent +( + Func& f, + const word& name, + const dictionary& dict +) +{ + if (dict.found(name)) + { + f = Func(dict.subDict(name)); + } +} + + +template<class Liquid> +inline void Foam::liquidProperties::readIfPresent +( + Liquid& l, + const dictionary& dict +) +{ + l.liquidProperties::readIfPresent(dict); + readIfPresent(l.rho_, "rho", dict); + readIfPresent(l.pv_, "pv", dict); + readIfPresent(l.hl_, "hl", dict); + readIfPresent(l.Cp_, "Cp", dict); + readIfPresent(l.h_, "h", dict); + readIfPresent(l.Cpg_, "Cpg", dict); + readIfPresent(l.B_, "B", dict); + readIfPresent(l.mu_, "mu", dict); + readIfPresent(l.mug_, "mug", dict); + readIfPresent(l.kappa_, "K", dict); + readIfPresent(l.kappag_, "kappag", dict); + readIfPresent(l.sigma_, "sigma", dict); + readIfPresent(l.D_, "D", dict); +} + + +template<class Liquid> +inline void Foam::liquidProperties::writeData +( + const Liquid& l, + Ostream& os +) const +{ + l.liquidProperties::writeData(os); os << nl; + l.rho_.writeData(os); os << nl; + l.pv_.writeData(os); os << nl; + l.hl_.writeData(os); os << nl; + l.Cp_.writeData(os); os << nl; + l.h_.writeData(os); os << nl; + l.Cpg_.writeData(os); os << nl; + l.B_.writeData(os); os << nl; + l.mu_.writeData(os); os << nl; + l.mug_.writeData(os); os << nl; + l.kappa_.writeData(os); os << nl; + l.kappag_.writeData(os); os << nl; + l.sigma_.writeData(os); os << nl; + l.D_.writeData(os); os << endl; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.C similarity index 74% rename from src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.C rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.C index cbbe7714aea78c00ba0c9589b96d545f6ab289b7..dc2fac5b9b66eae92a6502e4c7653e510612ff0e 100644 --- a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.C +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(nC3H8O, 0); addToRunTimeSelectionTable(liquidProperties, nC3H8O,); - addToRunTimeSelectionTable(liquidProperties, nC3H8O, Istream); addToRunTimeSelectionTable(liquidProperties, nC3H8O, dictionary); } @@ -86,8 +85,8 @@ Foam::nC3H8O::nC3H8O() ), mu_(0.571, 1521, -2.0894, 0.0, 0.0), mug_(7.942e-07, 0.5491, 415.8, 0.0), - K_(0.204, -0.000169, 0.0, 0.0, 0.0, 0.0), - Kg_(-613.84, 0.7927, -1157400000.0, 0.0), + kappa_(0.204, -0.000169, 0.0, 0.0, 0.0, 0.0), + kappag_(-613.84, 0.7927, -1157400000.0, 0.0), sigma_(0.04533, -6.88e-05, -1.6e-08, 0.0, 0.0, 0.0), D_(4.75e-10, 1.75, 0.0, 0.0, 0.0) // note: same as iC3H8O {} @@ -121,68 +120,36 @@ Foam::nC3H8O::nC3H8O B_(secondVirialCoeff), mu_(dynamicViscosity), mug_(vapourDynamicViscosity), - K_(thermalConductivity), - Kg_(vapourThermalConductivity), + kappa_(thermalConductivity), + kappag_(vapourThermalConductivity), sigma_(surfaceTension), D_(vapourDiffussivity) {} -Foam::nC3H8O::nC3H8O(Istream& is) +Foam::nC3H8O::nC3H8O(const dictionary& dict) : - liquidProperties(is), - rho_(is), - pv_(is), - hl_(is), - Cp_(is), - h_(is), - Cpg_(is), - B_(is), - mu_(is), - mug_(is), - K_(is), - Kg_(is), - sigma_(is), - D_(is) -{} + nC3H8O() +{ + readIfPresent(*this, dict); +} -Foam::nC3H8O::nC3H8O(const dictionary& dict) -: - liquidProperties(dict), - rho_(dict.subDict("rho")), - pv_(dict.subDict("pv")), - hl_(dict.subDict("hl")), - Cp_(dict.subDict("Cp")), - h_(dict.subDict("h")), - Cpg_(dict.subDict("Cpg")), - B_(dict.subDict("B")), - mu_(dict.subDict("mu")), - mug_(dict.subDict("mug")), - K_(dict.subDict("K")), - Kg_(dict.subDict("Kg")), - sigma_(dict.subDict("sigma")), - D_(dict.subDict("D")) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::nC3H8O::writeData(Ostream& os) const +{ + liquidProperties::writeData(*this, os); +} -Foam::nC3H8O::nC3H8O(const nC3H8O& liq) -: - liquidProperties(liq), - rho_(liq.rho_), - pv_(liq.pv_), - hl_(liq.hl_), - Cp_(liq.Cp_), - h_(liq.h_), - Cpg_(liq.Cpg_), - B_(liq.B_), - mu_(liq.mu_), - mug_(liq.mug_), - K_(liq.K_), - Kg_(liq.Kg_), - sigma_(liq.sigma_), - D_(liq.D_) -{} + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const nC3H8O& l) +{ + l.writeData(os); + return os; +} // ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.H similarity index 82% rename from src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.H index c378b3ec9e08b34dcedf63ff0788163252737ccb..578e57bb2243ec8681ac6450d772ee383028998d 100644 --- a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8O.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8O.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,13 +70,15 @@ class nC3H8O NSRDSfunc4 B_; NSRDSfunc1 mu_; NSRDSfunc2 mug_; - NSRDSfunc0 K_; - NSRDSfunc2 Kg_; + NSRDSfunc0 kappa_; + NSRDSfunc2 kappag_; NSRDSfunc0 sigma_; NSRDSfunc1 D_; public: + friend class liquidProperties; + //- Runtime type information TypeName("nC3H8O"); @@ -105,15 +107,9 @@ public: const NSRDSfunc1& vapourDiffussivity ); - //- Construct from Istream - nC3H8O(Istream& is); - //- Construct from dictionary nC3H8O(const dictionary& dict); - //- Construct copy - nC3H8O(const nC3H8O& liq); - //- Construct and return clone virtual autoPtr<liquidProperties> clone() const { @@ -151,10 +147,10 @@ public: inline scalar mug(scalar p, scalar T) const; //- Liquid thermal conductivity [W/(m K)] - inline scalar K(scalar p, scalar T) const; + inline scalar kappa(scalar p, scalar T) const; //- Vapour thermal conductivity [W/(m K)] - inline scalar Kg(scalar p, scalar T) const; + inline scalar kappag(scalar p, scalar T) const; //- Surface tension [N/m] inline scalar sigma(scalar p, scalar T) const; @@ -170,33 +166,16 @@ public: // I-O //- Write the function coefficients - void writeData(Ostream& os) const - { - liquidProperties::writeData(os); os << nl; - rho_.writeData(os); os << nl; - pv_.writeData(os); os << nl; - hl_.writeData(os); os << nl; - Cp_.writeData(os); os << nl; - h_.writeData(os); os << nl; - Cpg_.writeData(os); os << nl; - B_.writeData(os); os << nl; - mu_.writeData(os); os << nl; - mug_.writeData(os); os << nl; - K_.writeData(os); os << nl; - Kg_.writeData(os); os << nl; - sigma_.writeData(os); os << nl; - D_.writeData(os); os << endl; - } + void writeData(Ostream& os) const; //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const nC3H8O& l) - { - l.writeData(os); - return os; - } + friend Ostream& operator<<(Ostream& os, const nC3H8O& l); }; +Ostream& operator<<(Ostream& os, const nC3H8O& l); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam @@ -210,4 +189,3 @@ public: #endif // ************************************************************************* // - diff --git a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8OI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8OI.H similarity index 89% rename from src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8OI.H rename to src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8OI.H index 3cb912efb26f8351a3e8f4b8a6130c3562b2a1fa..89cd732c5593791c1d972063398723c2f28dbe1d 100644 --- a/src/thermophysicalModels/properties/liquidProperties/nC3H8O/nC3H8OI.H +++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/nC3H8O/nC3H8OI.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,15 +77,15 @@ inline Foam::scalar Foam::nC3H8O::mug(scalar p, scalar T) const } -inline Foam::scalar Foam::nC3H8O::K(scalar p, scalar T) const +inline Foam::scalar Foam::nC3H8O::kappa(scalar p, scalar T) const { - return K_.f(p, T); + return kappa_.f(p, T); } -inline Foam::scalar Foam::nC3H8O::Kg(scalar p, scalar T) const +inline Foam::scalar Foam::nC3H8O::kappag(scalar p, scalar T) const { - return Kg_.f(p, T); + return kappag_.f(p, T); } @@ -109,4 +109,3 @@ inline Foam::scalar Foam::nC3H8O::D(scalar p, scalar T, scalar) const // ************************************************************************* // - diff --git a/src/thermophysicalModels/properties/solidProperties/C/C.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.C similarity index 86% rename from src/thermophysicalModels/properties/solidProperties/C/C.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.C index 2f8dfa9acba9b8529382438394556e3b2d116b39..ec7cbc0591abd6afd3215ec735e66723a36ac737 100644 --- a/src/thermophysicalModels/properties/solidProperties/C/C.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(C, 0); addToRunTimeSelectionTable(solidProperties, C,); - addToRunTimeSelectionTable(solidProperties, C, Istream); addToRunTimeSelectionTable(solidProperties, C, dictionary); } @@ -51,28 +50,12 @@ Foam::C::C() } -Foam::C::C(const solidProperties& s) -: - solidProperties(s) -{} - - -Foam::C::C(Istream& is) -: - solidProperties(is) -{} - - Foam::C::C(const dictionary& dict) : - solidProperties(dict) -{} - - -Foam::C::C(const C& s) -: - solidProperties(s) -{} + C() +{ + readIfPresent(dict); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/properties/solidProperties/C/C.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.H similarity index 85% rename from src/thermophysicalModels/properties/solidProperties/C/C.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.H index a266b152c2137d188723a1e99283cb60ec839d04..7937e75ae9d0ead70596b7b19d8baf143b2ad1b3 100644 --- a/src/thermophysicalModels/properties/solidProperties/C/C.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/C/C.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,15 +42,6 @@ SourceFiles namespace Foam { -class C; - -Ostream& operator<< -( - Ostream&, - const C& -); - - /*---------------------------------------------------------------------------*\ Class C Declaration \*---------------------------------------------------------------------------*/ @@ -59,6 +50,7 @@ class C : public solidProperties { + public: //- Runtime type information @@ -70,18 +62,9 @@ public: //- Construct null C(); - //- Construct from solidProperties - C(const solidProperties& s); - - //- Construct from Istream - C(Istream& is); - //- Construct from dictionary C(const dictionary& dict); - //- Construct copy - C(const C& s); - //- Construct and return clone virtual autoPtr<solidProperties> clone() const { @@ -94,12 +77,14 @@ public: //- Write the function coefficients void writeData(Ostream& os) const; - - //- Ostream Operator - friend Ostream& operator<<(Ostream& os, const C& s); + //- Ostream Operator + friend Ostream& operator<<(Ostream& os, const C& s); }; +Ostream& operator<<(Ostream& os, const C& s); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.C similarity index 85% rename from src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.C index a7dbb8bff46e19d2368cbfbce25d093e068050fd..77a1f057ca73aa9008a614cdc1206860de06ad96 100644 --- a/src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(CaCO3, 0); addToRunTimeSelectionTable(solidProperties, CaCO3,); - addToRunTimeSelectionTable(solidProperties, CaCO3, Istream); addToRunTimeSelectionTable(solidProperties, CaCO3, dictionary); } @@ -51,28 +50,12 @@ Foam::CaCO3::CaCO3() } -Foam::CaCO3::CaCO3(const solidProperties& s) -: - solidProperties(s) -{} - - -Foam::CaCO3::CaCO3(Istream& is) -: - solidProperties(is) -{} - - Foam::CaCO3::CaCO3(const dictionary& dict) : - solidProperties(dict) -{} - - -Foam::CaCO3::CaCO3(const CaCO3& s) -: - solidProperties(s) -{} + CaCO3() +{ + readIfPresent(dict); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.H similarity index 86% rename from src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.H index 0ff59dae284bcaab8073686c8a05ccbd6c4c4aa4..1ffb1f6b195518f401f32ec73675dcc40a51e752 100644 --- a/src/thermophysicalModels/properties/solidProperties/CaCO3/CaCO3.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/CaCO3/CaCO3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,15 +42,6 @@ SourceFiles namespace Foam { -class CaCO3; - -Ostream& operator<< -( - Ostream&, - const CaCO3& -); - - /*---------------------------------------------------------------------------*\ Class CaCO3 Declaration \*---------------------------------------------------------------------------*/ @@ -71,18 +62,9 @@ public: //- Construct null CaCO3(); - //- Construct from solidProperties - CaCO3(const solidProperties& s); - - //- Construct from Istream - CaCO3(Istream& is); - //- Construct from dictionary CaCO3(const dictionary& dict); - //- Construct copy - CaCO3(const CaCO3& s); - //- Construct and return clone virtual autoPtr<solidProperties> clone() const { @@ -95,13 +77,14 @@ public: //- Write the function coefficients void writeData(Ostream& os) const; - - // Ostream Operator - + //- Ostream Operator friend Ostream& operator<<(Ostream& os, const CaCO3& s); }; +Ostream& operator<<(Ostream& os, const CaCO3& s); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/solidProperties/ash/ash.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.C similarity index 86% rename from src/thermophysicalModels/properties/solidProperties/ash/ash.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.C index 381191f89ea538be4ff63418328405ae057baa8a..f91fd494f4a4b19af6499b942bf460bfaf28c75f 100644 --- a/src/thermophysicalModels/properties/solidProperties/ash/ash.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,6 @@ namespace Foam { defineTypeNameAndDebug(ash, 0); addToRunTimeSelectionTable(solidProperties, ash,); - addToRunTimeSelectionTable(solidProperties, ash, Istream); addToRunTimeSelectionTable(solidProperties, ash, dictionary); } @@ -51,28 +50,12 @@ Foam::ash::ash() } -Foam::ash::ash(const solidProperties& s) -: - solidProperties(s) -{} - - -Foam::ash::ash(Istream& is) -: - solidProperties(is) -{} - - Foam::ash::ash(const dictionary& dict) : - solidProperties(dict) -{} - - -Foam::ash::ash(const ash& s) -: - solidProperties(s) -{} + ash() +{ + readIfPresent(dict); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/properties/solidProperties/ash/ash.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.H similarity index 87% rename from src/thermophysicalModels/properties/solidProperties/ash/ash.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.H index 2958b798496784259b2f16f162a696f8e004c0b3..b80c0385a15956cf91b314b48fa2a70400ce0e7e 100644 --- a/src/thermophysicalModels/properties/solidProperties/ash/ash.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/ash/ash.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,15 +42,6 @@ SourceFiles namespace Foam { -class ash; - -Ostream& operator<< -( - Ostream&, - const ash& -); - - /*---------------------------------------------------------------------------*\ Class ash Declaration \*---------------------------------------------------------------------------*/ @@ -71,18 +62,9 @@ public: //- Construct null ash(); - //- Construct from solidProperties - ash(const solidProperties& s); - - //- Construct from Istream - ash(Istream& is); - //- Construct from dictionary ash(const dictionary& dict); - //- Construct copy - ash(const ash& s); - //- Construct and return clone virtual autoPtr<solidProperties> clone() const { @@ -95,13 +77,14 @@ public: //- Write the function coefficients void writeData(Ostream& os) const; - - // Ostream Operator - + //- Ostream Operator friend Ostream& operator<<(Ostream& os, const ash& s); }; +Ostream& operator<<(Ostream& os, const ash& s); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.C similarity index 79% rename from src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.C index ee37311f57d5c1e8b11676335bd9df8d1069b5c0..18fa9faa7381cddad11cd1bbf0391ed4768d2b97 100644 --- a/src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,9 +34,25 @@ Foam::solidMixtureProperties::solidMixtureProperties(const dictionary& dict) { components_ = dict.toc(); properties_.setSize(components_.size()); + forAll(components_, i) { - properties_.set(i, solidProperties::New(dict.subDict(components_[i]))); + if (dict.isDict(components_[i])) + { + properties_.set + ( + i, + solidProperties::New(dict.subDict(components_[i])) + ); + } + else + { + properties_.set + ( + i, + solidProperties::New(components_[i]) + ); + } } } @@ -72,40 +88,29 @@ Foam::autoPtr<Foam::solidMixtureProperties> Foam::solidMixtureProperties::New // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::scalarField Foam::solidMixtureProperties::X(const scalarField& Y) const +Foam::scalar Foam::solidMixtureProperties::rho(const scalarField& Y) const { - scalarField X(Y.size()); - scalar rhoInv = 0.0; - forAll(X, i) - { - rhoInv += Y[i]/properties_[i].rho(); - X[i] = Y[i]/properties_[i].rho(); - } - - tmp<scalarField> tfld(X/rhoInv); - return tfld(); -} + scalar rrho = 0; - -Foam::scalar Foam::solidMixtureProperties::rho(const scalarField& X) const -{ - scalar val = 0.0; forAll(properties_, i) { - val += properties_[i].rho()*X[i]; + rrho += Y[i]/properties_[i].rho(); } - return val; + + return 1/rrho; } Foam::scalar Foam::solidMixtureProperties::Cp(const scalarField& Y) const { - scalar val = 0.0; + scalar Cp = 0; + forAll(properties_, i) { - val += properties_[i].Cp()*Y[i]; + Cp += Y[i]*properties_[i].Cp(); } - return val; + + return Cp; } diff --git a/src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.H similarity index 84% rename from src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.H index ed0aad5bfaacd5a84f87bdd0a17cf937b270f3f2..a9cdfa732c24bd4d3c2bf2a430a325a57191f9e2 100644 --- a/src/thermophysicalModels/properties/solidMixtureProperties/solidMixtureProperties/solidMixtureProperties.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidMixtureProperties/solidMixtureProperties.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,17 +31,11 @@ Description \verbatim <parentDictionary> { - C - { - defaultCoeffs yes; // employ default coefficients - } + C; + ash { - defaultCoeffs no; - ashCoeffs - { - ... user defined properties for ash - } + //... user defined properties for ash } } \endverbatim @@ -58,10 +52,9 @@ See also #ifndef solidMixtureProperties_H #define solidMixtureProperties_H -#include "scalarField.H" -#include "PtrList.H" #include "solidProperties.H" -#include "autoPtr.H" +#include "PtrList.H" +#include "scalarField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -134,19 +127,12 @@ public: return components_.size(); } - - //- Returns the mass fractions, given mole fractions - scalarField Y(const scalarField& X) const; - - //- Returns the mole fractions, given mass fractions - scalarField X(const scalarField& Y) const; - //- Calculate the mixture density [kg/m^3] as a function of - // volume fractions - scalar rho(const scalarField& X) const; + // mass fractions + scalar rho(const scalarField& Y) const; - //- Calculate the mixture heat capacity [J/(kg K)] as a function - // of mass fractions + //- Calculate the mixture heat capacity [J/(kg K)] as a function of + // mass fractions scalar Cp(const scalarField& Y) const; }; diff --git a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.C similarity index 80% rename from src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.C index 7d889fe7075fcebd86d4eddf99b0e889bbeed565..1d9eb8fe65a4bae8df7b0c42d7f898673058ca70 100644 --- a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ namespace Foam { defineTypeNameAndDebug(solidProperties, 0); defineRunTimeSelectionTable(solidProperties,); - defineRunTimeSelectionTable(solidProperties, Istream); defineRunTimeSelectionTable(solidProperties, dictionary); } @@ -41,56 +40,52 @@ Foam::solidProperties::solidProperties ( scalar rho, scalar Cp, - scalar K, + scalar kappa, scalar Hf, scalar emissivity ) : rho_(rho), Cp_(Cp), - K_(K), + kappa_(kappa), Hf_(Hf), emissivity_(emissivity) {} -Foam::solidProperties::solidProperties(Istream& is) -: - rho_(readScalar(is)), - Cp_(readScalar(is)), - K_(readScalar(is)), - Hf_(readScalar(is)), - emissivity_(readScalar(is)) -{} - - Foam::solidProperties::solidProperties(const dictionary& dict) : rho_(readScalar(dict.lookup("rho"))), Cp_(readScalar(dict.lookup("Cp"))), - K_(readScalar(dict.lookup("K"))), + kappa_ + ( + dict.found("K") + ? readScalar(dict.lookup("K")) + : readScalar(dict.lookup("kappa")) + ), Hf_(readScalar(dict.lookup("Hf"))), emissivity_(readScalar(dict.lookup("emissivity"))) {} -Foam::solidProperties::solidProperties(const solidProperties& s) -: - rho_(s.rho_), - Cp_(s.Cp_), - K_(s.K_), - Hf_(s.Hf_), - emissivity_(s.emissivity_) -{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::solidProperties::readIfPresent(const dictionary& dict) +{ + dict.readIfPresent("rho", rho_); + dict.readIfPresent("Cp", Cp_); + dict.readIfPresent("K", kappa_); + dict.readIfPresent("kappa", kappa_); + dict.readIfPresent("Hf_", Hf_); + dict.readIfPresent("emissivity", emissivity_); +} -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::solidProperties::writeData(Ostream& os) const { os << rho_ << token::SPACE << Cp_ << token::SPACE - << K_ << token::SPACE + << kappa_ << token::SPACE << Hf_ << token::SPACE << emissivity_; } diff --git a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.H similarity index 84% rename from src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.H index 6ae416d8c89998f53d3c1f7f5fea2c78271027e6..dce26f383e52a9b7acba5747231d6b8ed55094e2 100644 --- a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidProperties.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidProperties.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,22 +45,12 @@ SourceFiles namespace Foam { -class solidProperties; - -Ostream& operator<< -( - Ostream&, - const solidProperties& -); - - /*---------------------------------------------------------------------------*\ Class solidProperties Declaration \*---------------------------------------------------------------------------*/ class solidProperties { - // Private data //- Density [kg/m3] @@ -70,7 +60,7 @@ class solidProperties scalar Cp_; //- Thermal conductivity [W/(m.K)] - scalar K_; + scalar kappa_; //- Heat of formation [J/kg] scalar Hf_; @@ -82,7 +72,7 @@ class solidProperties public: //- Runtime type information - TypeName("solidProperties"); + TypeName("solid"); // Declare run-time constructor selection tables @@ -96,15 +86,6 @@ public: () ); - declareRunTimeSelectionTable - ( - autoPtr, - solidProperties, - Istream, - (Istream& is), - (is) - ); - declareRunTimeSelectionTable ( autoPtr, @@ -122,20 +103,14 @@ public: ( scalar rho, scalar Cp, - scalar K, + scalar kappa, scalar Hf, scalar emissivity ); - //- Construct from Istream - solidProperties(Istream& is); - //- Construct from dictionary solidProperties(const dictionary& dict); - //- Construct copy - solidProperties(const solidProperties& s); - //- Construct and return clone virtual autoPtr<solidProperties> clone() const { @@ -145,8 +120,8 @@ public: // Selectors - //- Return a pointer to a new solidProperties created from input - static autoPtr<solidProperties> New(Istream& is); + //- Return a pointer to a new solidProperties created from name + static autoPtr<solidProperties> New(const word& name); //- Return a pointer to a new solidProperties created from dictionary static autoPtr<solidProperties> New(const dictionary& dict); @@ -168,7 +143,7 @@ public: inline scalar Cp() const; //- Thermal conductivity [W/(m.K)] - inline scalar K() const; + inline scalar kappa() const; //- Heat of formation [J/kg] inline scalar Hf() const; @@ -180,18 +155,22 @@ public: inline scalar emissivity() const; - // I-O + // I-O - //- Write the solidProperties properties - virtual void writeData(Ostream& os) const; + //- Read and set the properties present it the given dictionary + void readIfPresent(const dictionary& dict); + //- Write the solidProperties properties + virtual void writeData(Ostream& os) const; - // Ostream Operator - + //- Ostream Operator friend Ostream& operator<<(Ostream& os, const solidProperties& s); }; +Ostream& operator<<(Ostream&, const solidProperties&); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesI.H b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesI.H similarity index 92% rename from src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesI.H rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesI.H index 3910a4f37fada44ede1068e313281934a131dc8f..e1f3d0f190d278a2c5679896eec5a43925038577 100644 --- a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesI.H +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,9 +39,9 @@ inline Foam::scalar Foam::solidProperties::Cp() const } -inline Foam::scalar Foam::solidProperties::K() const +inline Foam::scalar Foam::solidProperties::kappa() const { - return K_; + return kappa_; } diff --git a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesNew.C b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesNew.C similarity index 52% rename from src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesNew.C rename to src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesNew.C index 259c6c01da96ca0603a69da72a980d60ed271c8d..f27570bf7b3b501ddc2d701d2c275b2443a9a41c 100644 --- a/src/thermophysicalModels/properties/solidProperties/solidProperties/solidPropertiesNew.C +++ b/src/thermophysicalModels/thermophysicalProperties/solidProperties/solidProperties/solidPropertiesNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,46 +28,29 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::solidProperties> Foam::solidProperties::New(Istream& is) +Foam::autoPtr<Foam::solidProperties> Foam::solidProperties::New +( + const word& name +) { if (debug) { - InfoInFunction << "Constructing solid" << endl; + InfoInFunction << "Constructing solidProperties" << endl; } - const word solidType(is); - const word coeffs(is); - - if (coeffs == "defaultCoeffs") - { - ConstructorTable::iterator cstrIter = - ConstructorTablePtr_->find(solidType); - - if (!cstrIter.found()) - { - FatalErrorInFunction - << "Unknown solidProperties type " << solidType << nl << nl - << "Valid solidProperties types are :" << endl - << ConstructorTablePtr_->sortedToc() - << exit(FatalError); - } + ConstructorTable::iterator cstrIter = ConstructorTablePtr_->find(name); - return autoPtr<solidProperties>(cstrIter()()); - } - else if (coeffs == "coeffs") - { - return autoPtr<solidProperties>(new solidProperties(is)); - } - else + if (!cstrIter.found()) { FatalErrorInFunction - << "solidProperties type " << solidType - << ", option " << coeffs << " given" - << ", should be coeffs or defaultCoeffs" + << "Unknown solidProperties type " + << name << nl << nl + << "Valid solidProperties types are:" << nl + << ConstructorTablePtr_->sortedToc() << exit(FatalError); - - return autoPtr<solidProperties>(nullptr); } + + return autoPtr<solidProperties>(cstrIter()()); } @@ -82,33 +65,39 @@ Foam::autoPtr<Foam::solidProperties> Foam::solidProperties::New } const word solidType(dict.dictName()); - const Switch defaultCoeffs(dict.lookup("defaultCoeffs")); - if (defaultCoeffs) + if (dict.found("defaultCoeffs")) { - ConstructorTable::iterator cstrIter = - ConstructorTablePtr_->find(solidType); + // Backward-compatibility + + if (Switch(dict.lookup("defaultCoeffs"))) + { + return New(solidType); + } + else + { + return autoPtr<solidProperties> + ( + new solidProperties(dict.optionalSubDict(solidType + "Coeffs")) + ); + } + } + else + { + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(solidType); if (!cstrIter.found()) { FatalErrorInFunction - << "Unknown solidProperties type " << solidType << nl << nl - << "Valid solidProperties types are :" << endl - << ConstructorTablePtr_->sortedToc() + << "Unknown solidProperties type " + << solidType << nl << nl + << "Valid solidProperties types are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() << exit(FatalError); } - return autoPtr<solidProperties>(cstrIter()()); - } - else - { - return autoPtr<solidProperties> - ( - new solidProperties - ( - dict.subDict(solidType + "Coeffs") - ) - ); + return autoPtr<solidProperties>(cstrIter()(dict)); } } diff --git a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.C similarity index 83% rename from src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.C index c28171c3bfa28b259ca7d9d120979bed7cd2e9cf..ff23b184027960294c5f975a3ed41e96a77897ce 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,12 +32,6 @@ namespace Foam { defineTypeNameAndDebug(APIdiffCoefFunc, 0); addToRunTimeSelectionTable - ( - thermophysicalFunction, - APIdiffCoefFunc, - Istream - ); - addToRunTimeSelectionTable ( thermophysicalFunction, APIdiffCoefFunc, @@ -64,17 +58,6 @@ Foam::APIdiffCoefFunc::APIdiffCoefFunc {} -Foam::APIdiffCoefFunc::APIdiffCoefFunc(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - wf_(readScalar(is)), - wa_(readScalar(is)), - alpha_(sqrt(1/wf_ + 1/wa_)), - beta_(sqr((cbrt(a_) + cbrt(b_)))) -{} - - Foam::APIdiffCoefFunc::APIdiffCoefFunc(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H index 164be51f0fc420c0ca70e8adc7cf4ffee0bd9e55..a431bdee6fb833135d5413f9b868c2b50954e1a4 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -79,9 +79,6 @@ public: const scalar wa ); - //- Construct from Istream - APIdiffCoefFunc(Istream& is); - //- Construct from dictionary APIdiffCoefFunc(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.C similarity index 85% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.C index fa6bf14bb1ee57e35d39c35dbc7076cafd4aef3e..0fccd567f5d99c73c15d36c112da8f8b75a75da0 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc0, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc0, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc0, dictionary); } @@ -56,17 +55,6 @@ Foam::NSRDSfunc0::NSRDSfunc0 {} -Foam::NSRDSfunc0::NSRDSfunc0(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)), - f_(readScalar(is)) -{} - - Foam::NSRDSfunc0::NSRDSfunc0(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.H index a6da31dad231f1a7b389461447acc4236e45230d..38a4e7d2bc5896184f6a0926862e4238ab8d3a02 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc0/NSRDSfunc0.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,9 +94,6 @@ public: const scalar f ); - //- Construct from Istream - NSRDSfunc0(Istream& is); - //- Construct from dictionary NSRDSfunc0(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.C index b7db748376d70206e96329a5349d76838ffcf020..60b61614b1a67cd3c672d564d82f44a7a6136e14 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc1, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc1, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc1, dictionary); } @@ -54,16 +53,6 @@ Foam::NSRDSfunc1::NSRDSfunc1 {} -Foam::NSRDSfunc1::NSRDSfunc1(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)) -{} - - Foam::NSRDSfunc1::NSRDSfunc1(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H index 87ba13277881595eb9eddf9f2783aa1a3dcfa20b..c9c8e1088e23340d826ef05211cedb0d7733f181 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,9 +93,6 @@ public: const scalar e ); - //- Construct from Istream - NSRDSfunc1(Istream& is); - //- Construct from dictionary NSRDSfunc1(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.C index b8e8c44313d922b3265d4675466a3a7ed00e8641..b5aa0669333d960e6a923ff8fd61212ef01a003f 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc14, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc14, Istream); addToRunTimeSelectionTable ( thermophysicalFunction, @@ -59,16 +58,6 @@ Foam::NSRDSfunc14::NSRDSfunc14 {} -Foam::NSRDSfunc14::NSRDSfunc14(Istream& is) -: - Tc_(readScalar(is)), - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)) -{} - - Foam::NSRDSfunc14::NSRDSfunc14(const dictionary& dict) : Tc_(readScalar(dict.lookup("Tc"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.H index 4e1890384a5a3c20038a0f7f0d7fc1bd626ef521..719aa0789ded80e155218f4f5d689ed4683d5f5c 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc14/NSRDSfunc14.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,9 +93,6 @@ public: const scalar d ); - //- Construct from Istream - NSRDSfunc14(Istream& is); - //- Construct from dictionary NSRDSfunc14(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.C index 93da6a1ce7413cdce6189c65e02511d40603fcf9..3365d08c5cc1e032109317d87558a5d86f8246fb 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc2, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc2, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc2, dictionary); } @@ -52,15 +51,6 @@ Foam::NSRDSfunc2::NSRDSfunc2 {} -Foam::NSRDSfunc2::NSRDSfunc2(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)) -{} - - Foam::NSRDSfunc2::NSRDSfunc2(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.H index 3434eb9ef90b38475a4de704c80671d26d14a1b1..58a7d46129f1152afa81f12cb35b850c12e5a3db 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc2/NSRDSfunc2.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,9 +92,6 @@ public: const scalar d ); - //- Construct from Istream - NSRDSfunc2(Istream& is); - //- Construct from dictionary NSRDSfunc2(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.C index 9ed62c74722fa645f685dbad958a5b7b1ad60cf5..2c25a0ae6e575628f4809583d7772007479240a5 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc3, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc3, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc3, dictionary); } @@ -52,15 +51,6 @@ Foam::NSRDSfunc3::NSRDSfunc3 {} -Foam::NSRDSfunc3::NSRDSfunc3(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)) -{} - - Foam::NSRDSfunc3::NSRDSfunc3(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.H index 18d8bc49614fa5b1552206fe29f3c9d916bef97f..ad9809af7f76614ff5180690844e2eaf9ad46a2f 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc3/NSRDSfunc3.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,9 +92,6 @@ public: const scalar d ); - //- Construct from Istream - NSRDSfunc3(Istream& is); - //- Construct from dictionary NSRDSfunc3(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.C index 626b0036691fff132c44a08594c5b0330fb86300..809af7aa4a807c8dd251ec243283e575044532ef 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc4, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc4, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc4, dictionary); } @@ -54,16 +53,6 @@ Foam::NSRDSfunc4::NSRDSfunc4 {} -Foam::NSRDSfunc4::NSRDSfunc4(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)) -{} - - Foam::NSRDSfunc4::NSRDSfunc4(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.H index 275ecbc82fac72aee7edc8c2d0b7eae252f31895..6da5500b7fd84f0ab7a3972c18fe3a4228c68153 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc4/NSRDSfunc4.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,9 +93,6 @@ public: const scalar e ); - //- Construct from Istream - NSRDSfunc4(Istream& is); - //- Construct from dictionary NSRDSfunc4(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.C index 151a17f26cf1a802c2aa5d489d23ae9adfb90c44..0c6100beb5296607cbb5c6db2bebac5a49e7c55f 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc5, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc5, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc5, dictionary); } @@ -52,15 +51,6 @@ Foam::NSRDSfunc5::NSRDSfunc5 {} -Foam::NSRDSfunc5::NSRDSfunc5(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)) -{} - - Foam::NSRDSfunc5::NSRDSfunc5(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.H index ec6372c71deabd7bb00876223e56031d1d84eefb..222c8686aeb90fb14a55decbaf0fc33105733d3d 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc5/NSRDSfunc5.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,9 +92,6 @@ public: const scalar d ); - //- Construct from Istream - NSRDSfunc5(Istream& is); - //- Construct from dictionary NSRDSfunc5(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.C similarity index 85% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.C index 5bfce5c5bccc266ab68352840b0a8a55e038f840..766d9e883981c25a5d42929fe4c03df14a45c79f 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc6, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc6, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc6, dictionary); } @@ -56,17 +55,6 @@ Foam::NSRDSfunc6::NSRDSfunc6 {} -Foam::NSRDSfunc6::NSRDSfunc6(Istream& is) -: - Tc_(readScalar(is)), - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)) -{} - - Foam::NSRDSfunc6::NSRDSfunc6(const dictionary& dict) : Tc_(readScalar(dict.lookup("Tc"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.H index e061dbb2b39c4413fbdea8c214831fa3499e8a80..4d8241ce986877f8813d212cb7cb0b49828f88dd 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc6/NSRDSfunc6.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,9 +94,6 @@ public: const scalar e ); - //- Construct from Istream - NSRDSfunc6(Istream& is); - //- Construct from dictionary NSRDSfunc6(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.C similarity index 86% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.C index 82f095e73694fbca8c6f4f841c60585e008a137b..a508c91d95f4fe93fb6eeeb92589a2a00baf700d 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.C +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ License namespace Foam { defineTypeNameAndDebug(NSRDSfunc7, 0); - addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc7, Istream); addToRunTimeSelectionTable(thermophysicalFunction, NSRDSfunc7, dictionary); } @@ -54,16 +53,6 @@ Foam::NSRDSfunc7::NSRDSfunc7 {} -Foam::NSRDSfunc7::NSRDSfunc7(Istream& is) -: - a_(readScalar(is)), - b_(readScalar(is)), - c_(readScalar(is)), - d_(readScalar(is)), - e_(readScalar(is)) -{} - - Foam::NSRDSfunc7::NSRDSfunc7(const dictionary& dict) : a_(readScalar(dict.lookup("a"))), diff --git a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.H similarity index 96% rename from src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.H index 0ce3da7c94bcfa31e5d75902e830b22df0a0db4d..f61ec13c3b8fc30fa6cfe8428ed5ded9f2bb5b96 100644 --- a/src/thermophysicalModels/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/NSRDSfunctions/NSRDSfunc7/NSRDSfunc7.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-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,9 +93,6 @@ public: const scalar e ); - //- Construct from Istream - NSRDSfunc7(Istream& is); - //- Construct from dictionary NSRDSfunc7(const dictionary& dict); diff --git a/src/thermophysicalModels/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.C similarity index 100% rename from src/thermophysicalModels/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.C rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.C diff --git a/src/thermophysicalModels/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.H similarity index 100% rename from src/thermophysicalModels/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalFunctions/thermophysicalFunction/thermophysicalFunction.H diff --git a/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.C new file mode 100644 index 0000000000000000000000000000000000000000..d82d3f2a2486591f87a5638f7ae1ff75f1f6bc99 --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.C @@ -0,0 +1,133 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "thermophysicalProperties.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(thermophysicalProperties, 0); + defineRunTimeSelectionTable(thermophysicalProperties,); + defineRunTimeSelectionTable(thermophysicalProperties, dictionary); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::thermophysicalProperties::thermophysicalProperties(scalar W) +: + W_(W) +{} + + +Foam::thermophysicalProperties::thermophysicalProperties(const dictionary& dict) +: + W_(readScalar(dict.lookup("W"))) +{} + + +// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::thermophysicalProperties> +Foam::thermophysicalProperties::New +( + const word& name +) +{ + if (debug) + { + InfoInFunction << "Constructing thermophysicalProperties" << endl; + } + + ConstructorTable::iterator cstrIter = ConstructorTablePtr_->find(name); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown thermophysicalProperties type " + << name << nl << nl + << "Valid thermophysicalProperties types are:" << nl + << ConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr<thermophysicalProperties>(cstrIter()()); +} + + +Foam::autoPtr<Foam::thermophysicalProperties> +Foam::thermophysicalProperties::New +( + const dictionary& dict +) +{ + if (debug) + { + InfoInFunction << "Constructing thermophysicalProperties" << endl; + } + + const word& thermophysicalPropertiesTypeName = dict.dictName(); + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(thermophysicalPropertiesTypeName); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown thermophysicalProperties type " + << thermophysicalPropertiesTypeName << nl << nl + << "Valid thermophysicalProperties types are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr<thermophysicalProperties>(cstrIter()(dict)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::thermophysicalProperties::readIfPresent(const dictionary &dict) +{ + dict.readIfPresent("W", W_); +} + + +void Foam::thermophysicalProperties::writeData(Ostream& os) const +{ + os << W_; +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const thermophysicalProperties& l) +{ + l.writeData(os); + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.H new file mode 100644 index 0000000000000000000000000000000000000000..f44237ed70956df828f44b75e3da43b5e9726b62 --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalProperties.H @@ -0,0 +1,199 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::thermophysicalProperties + +Description + Base-class for thermophysical properties of solids, liquids and gases + providing an interface compatible with the templated thermodynamics + packages. + +SourceFiles + thermophysicalPropertiesI.H + thermophysicalProperties.C + +\*---------------------------------------------------------------------------*/ + +#ifndef thermophysicalProperties_H +#define thermophysicalProperties_H + +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class thermophysicalProperties Declaration +\*---------------------------------------------------------------------------*/ + +class thermophysicalProperties +{ + // Private data + + //- Molecular weight [kg/kmol] + scalar W_; + + +public: + + TypeName("thermophysicalProperties"); + + + // Declare run-time constructor selection tables + + declareRunTimeSelectionTable + ( + autoPtr, + thermophysicalProperties, + , + (), + () + ); + + declareRunTimeSelectionTable + ( + autoPtr, + thermophysicalProperties, + dictionary, + (const dictionary& dict), + (dict) + ); + + + // Constructors + + //- Construct from molecular weight + thermophysicalProperties(scalar W); + + //- Construct from dictionary + thermophysicalProperties(const dictionary& dict); + + + // Selectors + + //- Return a pointer to a new thermophysicalProperties created from name + static autoPtr<thermophysicalProperties> New(const word& name); + + //- Return a pointer to a new thermophysicalProperties + // created from dictionary + static autoPtr<thermophysicalProperties> New(const dictionary& dict); + + + //- Destructor + virtual ~thermophysicalProperties() + {} + + + // Member Functions + + // Physical constants which define the specie + + //- Molecular weight [kg/kmol] + inline scalar W() const; + + //- Limit the temperature to be in the range Tlow_ to Thigh_ + inline scalar limit(const scalar T) const; + + + // Fundamental equation of state properties + + //- Liquid density [kg/m^3] + virtual scalar rho(scalar p, scalar T) const = 0; + + //- Liquid compressibility rho/p [s^2/m^2] + // Note: currently it is assumed the liquid is incompressible + virtual scalar psi(scalar p, scalar T) const = 0; + + //- Return (Cp - Cv) [J/(kg K] + // Note: currently it is assumed the liquid is incompressible + // so CpMCv 0 + virtual scalar CpMCv(scalar p, scalar T) const = 0; + + + // Fundamental thermodynamic properties + + //- Heat capacity at constant pressure [J/(kg K)] + virtual scalar Cp(const scalar p, const scalar T) const = 0; + + //- Absolute Enthalpy [J/kg] + virtual scalar Ha(const scalar p, const scalar T) const = 0; + + //- Sensible enthalpy [J/kg] + virtual scalar Hs(const scalar p, const scalar T) const = 0; + + //- Chemical enthalpy [J/kg] + virtual scalar Hc() const = 0; + + // Entropy [J/(kg K)] + virtual scalar S(const scalar p, const scalar T) const = 0; + + + // Physical properties + + //- Liquid viscosity [Pa s] + virtual scalar mu(scalar p, scalar T) const = 0; + + //- Liquid thermal conductivity [W/(m K)] + virtual scalar kappa(scalar p, scalar T) const = 0; + + //- Liquid thermal diffusivity of enthalpy [kg/ms] + virtual scalar alphah(const scalar p, const scalar T) const = 0; + + + // I-O + + //- Read and set the properties present it the given dictionary + void readIfPresent(const dictionary& dict); + + //- Write the function coefficients + virtual void writeData(Ostream& os) const = 0; + + //- Ostream Operator + friend Ostream& operator<< + ( + Ostream& os, + const thermophysicalProperties& l + ); +}; + + +Ostream& operator<<(Ostream& os, const thermophysicalProperties& l); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "thermophysicalPropertiesI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidPropertiesI.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalPropertiesI.H similarity index 57% rename from src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidPropertiesI.H rename to src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalPropertiesI.H index 865035fe1a323c3814b68b0de0a26c7ab59d9953..87b99ce8e325976496f8741a39e1de1823527c0e 100644 --- a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidPropertiesI.H +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalProperties/thermophysicalPropertiesI.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) 2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,69 +23,17 @@ License \*---------------------------------------------------------------------------*/ -inline Foam::scalar Foam::liquidProperties::W() const -{ - return W_; -} - - -inline Foam::scalar Foam::liquidProperties::Tc() const -{ - return Tc_; -} - +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::scalar Foam::liquidProperties::Pc() const +inline Foam::scalar Foam::thermophysicalProperties::limit(const scalar T) const { - return Pc_; + return T; } -inline Foam::scalar Foam::liquidProperties::Vc() const +inline Foam::scalar Foam::thermophysicalProperties::W() const { - return Vc_; -} - - -inline Foam::scalar Foam::liquidProperties::Zc() const -{ - return Zc_; -} - - -inline Foam::scalar Foam::liquidProperties::Tt() const -{ - return Tt_; -} - - -inline Foam::scalar Foam::liquidProperties::Pt() const -{ - return Pt_; -} - - -inline Foam::scalar Foam::liquidProperties::Tb() const -{ - return Tb_; -} - - -inline Foam::scalar Foam::liquidProperties::dipm() const -{ - return dipm_; -} - - -inline Foam::scalar Foam::liquidProperties::omega() const -{ - return omega_; -} - - -inline Foam::scalar Foam::liquidProperties::delta() const -{ - return delta_; + return W_; } diff --git a/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.C b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.C new file mode 100644 index 0000000000000000000000000000000000000000..59607a8160b0dfe3236929e6a54a0bb901580130 --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.C @@ -0,0 +1,61 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "thermophysicalPropertiesSelector.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class ThermophysicalProperties> +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>:: +thermophysicalPropertiesSelector +( + const word& name +) +: + propertiesPtr_(ThermophysicalProperties::New(name)) +{} + + +template<class ThermophysicalProperties> +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>:: +thermophysicalPropertiesSelector +( + const dictionary& dict +) +{ + const word name(dict.first()->keyword()); + + if (dict.isDict(name)) + { + propertiesPtr_ = ThermophysicalProperties::New(dict.subDict(name)); + } + else + { + propertiesPtr_ = ThermophysicalProperties::New(name); + } +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.H new file mode 100644 index 0000000000000000000000000000000000000000..7edd6225af44da03d08f5b703d219c46d8386732 --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelector.H @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::thermophysicalPropertiesSelector + +Description + Wrapper class providing run-time selection of thermophysicalProperties + for the templated thermodynamics packages. + +SourceFiles + thermophysicalPropertiesSelectorI.H + thermophysicalPropertiesSelector.C + +\*---------------------------------------------------------------------------*/ + +#ifndef thermophysicalPropertiesSelector_H +#define thermophysicalPropertiesSelector_H + +#include "thermophysicalProperties.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class thermophysicalPropertiesSelector Declaration +\*---------------------------------------------------------------------------*/ + +template<class ThermophysicalProperties> +class thermophysicalPropertiesSelector +{ + // Private member data + + autoPtr<ThermophysicalProperties> propertiesPtr_; + + +public: + + // Constructors + + //- Construct from name + thermophysicalPropertiesSelector(const word& name); + + //- Construct from dictionary + thermophysicalPropertiesSelector(const dictionary& dict); + + + // Static data + + //- Is the equation of state is incompressible i.e. rho != f(p) + static const bool incompressible = + ThermophysicalProperties::incompressible; + + //- Is the equation of state is isochoric i.e. rho = const + static const bool isochoric = + ThermophysicalProperties::isochoric; + + + // Member Functions + + //- Return reference to the selected physical properties class + inline const ThermophysicalProperties& properties() const; + + + // Physical constants which define the specie + + //- Molecular weight [kg/kmol] + inline scalar W() const; + + //- Limit the temperature to be in the range Tlow_ to Thigh_ + inline scalar limit(const scalar T) const; + + + // Fundamental equation of state properties + + //- Liquid density [kg/m^3] + inline scalar rho(scalar p, scalar T) const; + + //- Liquid compressibility rho/p [s^2/m^2] + // Note: currently it is assumed the liquid is incompressible + inline scalar psi(scalar p, scalar T) const; + + //- Return (Cp - Cv) [J/(kg K] + // Note: currently it is assumed the liquid is incompressible + // so CpMCv 0 + inline scalar CpMCv(scalar p, scalar T) const; + + + // Fundamental thermodynamic properties + + //- Heat capacity at constant pressure [J/(kg K)] + inline scalar Cp(const scalar p, const scalar T) const; + + //- Absolute Enthalpy [J/kg] + inline scalar Ha(const scalar p, const scalar T) const; + + //- Sensible enthalpy [J/kg] + inline scalar Hs(const scalar p, const scalar T) const; + + //- Chemical enthalpy [J/kg] + inline scalar Hc() const; + + // Entropy [J/(kg K)] + inline scalar S(const scalar p, const scalar T) const; + + + // Physical properties + + //- Liquid viscosity [Pa s] + inline scalar mu(scalar p, scalar T) const; + + //- Liquid thermal conductivity [W/(m K)] + inline scalar kappa(scalar p, scalar T) const; + + //- Liquid thermal diffusivity of enthalpy [kg/ms] + inline scalar alphah(const scalar p, const scalar T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "thermophysicalPropertiesSelectorI.H" + +#ifdef NoRepository + #include "thermophysicalPropertiesSelector.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelectorI.H b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelectorI.H new file mode 100644 index 0000000000000000000000000000000000000000..a074d3714690e29d73f59fe68a73f530c4fccead --- /dev/null +++ b/src/thermophysicalModels/thermophysicalProperties/thermophysicalPropertiesSelector/thermophysicalPropertiesSelectorI.H @@ -0,0 +1,183 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class ThermophysicalProperties> +inline const ThermophysicalProperties& +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties> +::properties() const +{ + return propertiesPtr_(); +} + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::W() const +{ + return propertiesPtr_->W(); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::limit +( + const scalar T +) const +{ + return propertiesPtr_->limit(T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::rho +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->rho(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::psi +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->psi(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::CpMCv +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->CpMCv(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::Cp +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->Cp(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::Ha +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->Ha(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::Hs +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->Hs(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::Hc() const +{ + return propertiesPtr_->Hc(); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::S +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->S(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::mu +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->mu(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::kappa +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->kappa(p, T); +} + + +template<class ThermophysicalProperties> +inline Foam::scalar +Foam::thermophysicalPropertiesSelector<ThermophysicalProperties>::alphah +( + scalar p, + scalar T +) const +{ + return propertiesPtr_->alphah(p, T); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/Make/files b/src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/Make/files similarity index 100% rename from src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/Make/files rename to src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/Make/files diff --git a/src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/Make/options b/src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/Make/options similarity index 74% rename from src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/Make/options rename to src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/Make/options index 3718ff0ca0ca964b79f49d167878fa17553dadb2..f4e9dc8257a60199afa6f46321f5d88d4e508737 100644 --- a/src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/Make/options +++ b/src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/Make/options @@ -3,9 +3,9 @@ EXE_INC = \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude + -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude LIB_LIBS = \ -lfiniteVolume \ -lcompressibleTurbulenceModels \ - -lliquidProperties + -lthermophysicalProperties diff --git a/src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C b/src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C similarity index 100% rename from src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C rename to src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.C diff --git a/src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.H b/src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.H similarity index 100% rename from src/thermophysicalModels/properties/liquidPropertiesFvPatchFields/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.H rename to src/thermophysicalModels/thermophysicalPropertiesFvPatchFields/liquidProperties/humidityTemperatureCoupledMixed/humidityTemperatureCoupledMixedFvPatchScalarField.H diff --git a/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C b/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C index ec1834fa46007529e02d81c58f1c7bb6a067596b..c9fbb148195502345cbaa979678f411c527c1fed 100644 --- a/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C +++ b/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -277,7 +277,7 @@ Foam::linearValveFvMesh::linearValveFvMesh(const IOobject& io) IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ), msPtr_(motionSolver::New(*this)) { diff --git a/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C b/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C index c86a550eb056cdc14f737110dc3bd3f8c22cb646..7bf5592af782b55dec3fa75cafb82d4977dea368 100644 --- a/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C +++ b/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -356,7 +356,7 @@ Foam::linearValveLayersFvMesh::linearValveLayersFvMesh(const IOobject& io) IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ) { addZonesAndModifiers(); diff --git a/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C b/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C index dec25b574613a277fe9fb88abecf499b21fa4e28..ff9ad4f17a47cf28d004278fbe9fff62a9355dc9 100644 --- a/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C +++ b/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -293,7 +293,7 @@ Foam::mixerFvMesh::mixerFvMesh IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ), csPtr_ ( diff --git a/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeTopoFvMesh.C b/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeTopoFvMesh.C index eaa569fb973a342a8280de8da8c10ef1505d23f8..151f1c10cba392ce359fb96b01a80976eb3782ea 100644 --- a/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeTopoFvMesh.C +++ b/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeTopoFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,6 +30,9 @@ License #include "addToRunTimeSelectionTable.H" #include "meshTools.H" #include "OFstream.H" +#include "mathematicalConstants.H" + +using namespace Foam::constant::mathematical; // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -244,7 +247,6 @@ void Foam::movingConeTopoFvMesh::addZonesAndModifiers() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct from components Foam::movingConeTopoFvMesh::movingConeTopoFvMesh(const IOobject& io) : topoChangerFvMesh(io), @@ -261,14 +263,13 @@ Foam::movingConeTopoFvMesh::movingConeTopoFvMesh(const IOobject& io) IOobject::NO_WRITE, false ) - ).subDict(typeName + "Coeffs") + ).optionalSubDict(typeName + "Coeffs") ), motionVelAmplitude_(motionDict_.lookup("motionVelAmplitude")), motionVelPeriod_(readScalar(motionDict_.lookup("motionVelPeriod"))), curMotionVel_ ( - motionVelAmplitude_* - Foam::sin(time().value()*M_PI/motionVelPeriod_) + motionVelAmplitude_*sin(time().value()*pi/motionVelPeriod_) ), leftEdge_(readScalar(motionDict_.lookup("leftEdge"))), curLeft_(readScalar(motionDict_.lookup("leftObstacleEdge"))), @@ -323,8 +324,7 @@ bool Foam::movingConeTopoFvMesh::update() pointField newPoints; vector curMotionVel_ = - motionVelAmplitude_* - Foam::sin(time().value()*M_PI/motionVelPeriod_); + motionVelAmplitude_*sin(time().value()*pi/motionVelPeriod_); Pout<< "time:" << time().value() << " curMotionVel_:" << curMotionVel_ << " curLeft:" << curLeft_ << " curRight:" << curRight_ @@ -387,6 +387,7 @@ bool Foam::movingConeTopoFvMesh::update() // The mesh now contains the cells with zero volume Info << "Executing mesh motion" << endl; movePoints(newPoints); + // The mesh now has got non-zero volume cells curLeft_ = average @@ -405,7 +406,6 @@ bool Foam::movingConeTopoFvMesh::update() ]().localPoints() ).x() + SMALL; - return true; } diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C index 532a9af34fbaf88c2996571a95108c5995257e7d..22e835d8b8cb2ae0ed3bcf297fceb45e25a8304c 100644 --- a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C +++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,4 +40,14 @@ immiscibleIncompressibleTwoPhaseMixture {} +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +bool Foam::immiscibleIncompressibleTwoPhaseMixture::read() +{ + return + incompressibleTwoPhaseMixture::read() + && interfaceProperties::read(); +} + + // ************************************************************************* // diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H index ded416b068f47652b39d7534b9ae4a5687f0fe88..8129ea543e2c0e27e8c7e1e4e1f265ca8dc32f7c 100644 --- a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H +++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,12 +80,7 @@ public: } //- Read base transportProperties dictionary - virtual bool read() - { - return - incompressibleTwoPhaseMixture::read() - && interfaceProperties::read(); - } + virtual bool read(); }; diff --git a/src/transportModels/incompressible/viscosityModels/BirdCarreau/BirdCarreau.C b/src/transportModels/incompressible/viscosityModels/BirdCarreau/BirdCarreau.C index 4ea9529eaeffe24a1221e6526d50d96d5945c9bb..cb486982c67c9442bcea2b7ca01e93f68dc5b186 100644 --- a/src/transportModels/incompressible/viscosityModels/BirdCarreau/BirdCarreau.C +++ b/src/transportModels/incompressible/viscosityModels/BirdCarreau/BirdCarreau.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,7 +67,10 @@ Foam::viscosityModels::BirdCarreau::BirdCarreau ) : viscosityModel(name, viscosityProperties, U, phi), - BirdCarreauCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + BirdCarreauCoeffs_ + ( + viscosityProperties.optionalSubDict(typeName + "Coeffs") + ), nu0_("nu0", dimViscosity, BirdCarreauCoeffs_), nuInf_("nuInf", dimViscosity, BirdCarreauCoeffs_), k_("k", dimTime, BirdCarreauCoeffs_), @@ -104,7 +107,8 @@ bool Foam::viscosityModels::BirdCarreau::read { viscosityModel::read(viscosityProperties); - BirdCarreauCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + BirdCarreauCoeffs_ = + viscosityProperties.optionalSubDict(typeName + "Coeffs"); BirdCarreauCoeffs_.lookup("nu0") >> nu0_; BirdCarreauCoeffs_.lookup("nuInf") >> nuInf_; diff --git a/src/transportModels/incompressible/viscosityModels/Casson/Casson.C b/src/transportModels/incompressible/viscosityModels/Casson/Casson.C index d3c88ccf8cb089209129664f8c8687048b42ea10..43e2807f138ec27011c4e7e263539b18e886227e 100644 --- a/src/transportModels/incompressible/viscosityModels/Casson/Casson.C +++ b/src/transportModels/incompressible/viscosityModels/Casson/Casson.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -83,7 +83,7 @@ Foam::viscosityModels::Casson::Casson ) : viscosityModel(name, viscosityProperties, U, phi), - CassonCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + CassonCoeffs_(viscosityProperties.optionalSubDict(typeName + "Coeffs")), m_("m", dimViscosity, CassonCoeffs_), tau0_("tau0", dimViscosity/dimTime, CassonCoeffs_), nuMin_("nuMin", dimViscosity, CassonCoeffs_), @@ -112,7 +112,7 @@ bool Foam::viscosityModels::Casson::read { viscosityModel::read(viscosityProperties); - CassonCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + CassonCoeffs_ = viscosityProperties.optionalSubDict(typeName + "Coeffs"); CassonCoeffs_.lookup("m") >> m_; CassonCoeffs_.lookup("tau0") >> tau0_; diff --git a/src/transportModels/incompressible/viscosityModels/CrossPowerLaw/CrossPowerLaw.C b/src/transportModels/incompressible/viscosityModels/CrossPowerLaw/CrossPowerLaw.C index 7359c621d0d2f3109a1dba3ad9e2e52985265fae..6b9ac760a789770023b98c8f5478623aaa1aecc5 100644 --- a/src/transportModels/incompressible/viscosityModels/CrossPowerLaw/CrossPowerLaw.C +++ b/src/transportModels/incompressible/viscosityModels/CrossPowerLaw/CrossPowerLaw.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -65,7 +65,10 @@ Foam::viscosityModels::CrossPowerLaw::CrossPowerLaw ) : viscosityModel(name, viscosityProperties, U, phi), - CrossPowerLawCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + CrossPowerLawCoeffs_ + ( + viscosityProperties.optionalSubDict(typeName + "Coeffs") + ), nu0_("nu0", dimViscosity, CrossPowerLawCoeffs_), nuInf_("nuInf", dimViscosity, CrossPowerLawCoeffs_), m_("m", dimTime, CrossPowerLawCoeffs_), @@ -94,7 +97,8 @@ bool Foam::viscosityModels::CrossPowerLaw::read { viscosityModel::read(viscosityProperties); - CrossPowerLawCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + CrossPowerLawCoeffs_ = + viscosityProperties.optionalSubDict(typeName + "Coeffs"); CrossPowerLawCoeffs_.lookup("nu0") >> nu0_; CrossPowerLawCoeffs_.lookup("nuInf") >> nuInf_; diff --git a/src/transportModels/incompressible/viscosityModels/HerschelBulkley/HerschelBulkley.C b/src/transportModels/incompressible/viscosityModels/HerschelBulkley/HerschelBulkley.C index f9ed2bb86e6724827c6eb5320280541ede5f0a33..8f1656df140b167c4397060bcef499229fcfbf78 100644 --- a/src/transportModels/incompressible/viscosityModels/HerschelBulkley/HerschelBulkley.C +++ b/src/transportModels/incompressible/viscosityModels/HerschelBulkley/HerschelBulkley.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,10 @@ Foam::viscosityModels::HerschelBulkley::HerschelBulkley ) : viscosityModel(name, viscosityProperties, U, phi), - HerschelBulkleyCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + HerschelBulkleyCoeffs_ + ( + viscosityProperties.optionalSubDict(typeName + "Coeffs") + ), k_("k", dimViscosity, HerschelBulkleyCoeffs_), n_("n", dimless, HerschelBulkleyCoeffs_), tau0_("tau0", dimViscosity/dimTime, HerschelBulkleyCoeffs_), @@ -107,7 +110,8 @@ bool Foam::viscosityModels::HerschelBulkley::read { viscosityModel::read(viscosityProperties); - HerschelBulkleyCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + HerschelBulkleyCoeffs_ = + viscosityProperties.optionalSubDict(typeName + "Coeffs"); HerschelBulkleyCoeffs_.lookup("k") >> k_; HerschelBulkleyCoeffs_.lookup("n") >> n_; diff --git a/src/transportModels/incompressible/viscosityModels/powerLaw/powerLaw.C b/src/transportModels/incompressible/viscosityModels/powerLaw/powerLaw.C index d3258f3a58026350853f9ae962a658c071a44db1..ec84ba202851f1b388a93990d097f5298bde957b 100644 --- a/src/transportModels/incompressible/viscosityModels/powerLaw/powerLaw.C +++ b/src/transportModels/incompressible/viscosityModels/powerLaw/powerLaw.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -81,7 +81,7 @@ Foam::viscosityModels::powerLaw::powerLaw ) : viscosityModel(name, viscosityProperties, U, phi), - powerLawCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + powerLawCoeffs_(viscosityProperties.optionalSubDict(typeName + "Coeffs")), k_("k", dimViscosity, powerLawCoeffs_), n_("n", dimless, powerLawCoeffs_), nuMin_("nuMin", dimViscosity, powerLawCoeffs_), @@ -110,7 +110,7 @@ bool Foam::viscosityModels::powerLaw::read { viscosityModel::read(viscosityProperties); - powerLawCoeffs_ = viscosityProperties.subDict(typeName + "Coeffs"); + powerLawCoeffs_ = viscosityProperties.optionalSubDict(typeName + "Coeffs"); powerLawCoeffs_.lookup("k") >> k_; powerLawCoeffs_.lookup("n") >> n_; diff --git a/src/transportModels/incompressible/viscosityModels/strainRateFunction/strainRateFunction.C b/src/transportModels/incompressible/viscosityModels/strainRateFunction/strainRateFunction.C index 6c218d710a7be2852c7654680c45a7203a09e1d3..29e0735bab1c4d3fd13b03664182ec3ad6c73ea3 100644 --- a/src/transportModels/incompressible/viscosityModels/strainRateFunction/strainRateFunction.C +++ b/src/transportModels/incompressible/viscosityModels/strainRateFunction/strainRateFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -56,7 +56,10 @@ Foam::viscosityModels::strainRateFunction::strainRateFunction ) : viscosityModel(name, viscosityProperties, U, phi), - strainRateFunctionCoeffs_(viscosityProperties.subDict(typeName + "Coeffs")), + strainRateFunctionCoeffs_ + ( + viscosityProperties.optionalSubDict(typeName + "Coeffs") + ), strainRateFunction_ ( Function1<scalar>::New("function", strainRateFunctionCoeffs_) @@ -119,7 +122,7 @@ bool Foam::viscosityModels::strainRateFunction::read { viscosityModel::read(viscosityProperties); - strainRateFunctionCoeffs_ = viscosityProperties.subDict + strainRateFunctionCoeffs_ = viscosityProperties.optionalSubDict ( typeName + "Coeffs" ); diff --git a/src/transportModels/interfaceProperties/Make/files b/src/transportModels/interfaceProperties/Make/files index 35c9a52b3d370a8128f489a5e563b2552ed89c70..976c263cfffe330213242f648e5bee72fc2c10fa 100644 --- a/src/transportModels/interfaceProperties/Make/files +++ b/src/transportModels/interfaceProperties/Make/files @@ -1,4 +1,9 @@ interfaceProperties.C interfaceCompression/interfaceCompression.C +surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C +surfaceTensionModels/surfaceTensionModel/surfaceTensionModelNew.C +surfaceTensionModels/constant/constantSurfaceTension.C +surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.C + LIB = $(FOAM_LIBBIN)/libinterfaceProperties diff --git a/src/transportModels/interfaceProperties/interfaceProperties.C b/src/transportModels/interfaceProperties/interfaceProperties.C index 40761a3a59c6bfd6bfe5f1c397a811d767f80760..f017fccca8f7e206fcaaacd55718c5ef5d358fb1 100644 --- a/src/transportModels/interfaceProperties/interfaceProperties.C +++ b/src/transportModels/interfaceProperties/interfaceProperties.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -167,7 +167,8 @@ Foam::interfaceProperties::interfaceProperties alpha1.mesh().solverDict(alpha1.name()).lookup("cAlpha") ) ), - sigma_("sigma", dimensionSet(1, 0, -2, 0, 0), dict), + + sigmaPtr_(surfaceTensionModel::New(dict, alpha1.mesh())), deltaN_ ( @@ -208,6 +209,13 @@ Foam::interfaceProperties::interfaceProperties // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +Foam::tmp<Foam::volScalarField> +Foam::interfaceProperties::sigmaK() const +{ + return sigmaPtr_->sigma()*K_; +} + + Foam::tmp<Foam::surfaceScalarField> Foam::interfaceProperties::surfaceTensionForce() const { @@ -222,10 +230,16 @@ Foam::interfaceProperties::nearInterface() const } +void Foam::interfaceProperties::correct() +{ + calculateK(); +} + + bool Foam::interfaceProperties::read() { alpha1_.mesh().solverDict(alpha1_.name()).lookup("cAlpha") >> cAlpha_; - transportPropertiesDict_.lookup("sigma") >> sigma_; + sigmaPtr_->readDict(transportPropertiesDict_); return true; } diff --git a/src/transportModels/interfaceProperties/interfaceProperties.H b/src/transportModels/interfaceProperties/interfaceProperties.H index c0d411d05daed12bcc94e8d25d13159bc6efcbc1..81c08948cadd7d6a6db00ad709a74c84ba19490d 100644 --- a/src/transportModels/interfaceProperties/interfaceProperties.H +++ b/src/transportModels/interfaceProperties/interfaceProperties.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,6 +40,7 @@ SourceFiles #define interfaceProperties_H #include "IOdictionary.H" +#include "surfaceTensionModel.H" #include "volFields.H" #include "surfaceFields.H" @@ -63,7 +64,7 @@ class interfaceProperties scalar cAlpha_; //- Surface tension - dimensionedScalar sigma_; + autoPtr<surfaceTensionModel> sigmaPtr_; //- Stabilisation for normalisation of the interface normal const dimensionedScalar deltaN_; @@ -127,20 +128,7 @@ public: return nHatf_; } - const volScalarField& K() const - { - return K_; - } - - const dimensionedScalar& sigma() const - { - return sigma_; - } - - tmp<volScalarField> sigmaK() const - { - return sigma_*K_; - } + tmp<volScalarField> sigmaK() const; tmp<surfaceScalarField> surfaceTensionForce() const; @@ -148,10 +136,7 @@ public: // Field values are 1 near and 0 away for the interface. tmp<volScalarField> nearInterface() const; - void correct() - { - calculateK(); - } + void correct(); //- Read transportProperties dictionary bool read(); diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.C b/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.C new file mode 100644 index 0000000000000000000000000000000000000000..9a19092e0464a865daee7a7c45adea035e859a31 --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.C @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "constantSurfaceTension.H" +#include "volFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + defineTypeNameAndDebug(constant, 0); + addToRunTimeSelectionTable(surfaceTensionModel, constant, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constant::constant +( + const dictionary& dict, + const fvMesh& mesh +) +: + surfaceTensionModel(mesh), + sigma_("sigma", dimensionSet(1, 0, -2, 0, 0), dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constant::~constant() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::surfaceTensionModels::constant::sigma() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "sigma", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + sigma_ + ) + ); +} + + +bool Foam::surfaceTensionModels::constant::readDict(const dictionary& dict) +{ + // Handle sub-dictionary format as a special case + if (dict.isDict("sigma")) + { + dict.subDict("sigma").lookup("sigma") >> sigma_; + } + else + { + dict.lookup("sigma") >> sigma_; + } + + return true; +} + + +bool Foam::surfaceTensionModels::constant::writeData(Ostream& os) const +{ + if (surfaceTensionModel::writeData(os)) + { + os << sigma_ << token::END_STATEMENT << nl; + return os.good(); + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.H b/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.H new file mode 100644 index 0000000000000000000000000000000000000000..fdc1f91b8d551beb86eb045f5965c88dbfa832aa --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/constant/constantSurfaceTension.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::surfaceTensionModels::constant + +Description + Uniform constant surface tension model. + +Usage + Example of the surface tension specification: + \verbatim + sigma + { + type constant; + sigma 0.07; + } + \endverbatim + +See also + Foam::surfaceTensionModel + +SourceFiles + constantSurfaceTension.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantSurfaceTension_H +#define constantSurfaceTension_H + +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace surfaceTensionModels +{ + +/*---------------------------------------------------------------------------*\ + Class constant Declaration +\*---------------------------------------------------------------------------*/ + +class constant +: + public surfaceTensionModel +{ + // Private data + + //- Surface tension coefficient + dimensionedScalar sigma_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from dictionary and mesh + constant + ( + const dictionary& dict, + const fvMesh& mesh + ); + + + //- Destructor + virtual ~constant(); + + + // Member Functions + + //- Surface tension coefficient + virtual tmp<volScalarField> sigma() const; + + //- Update surface tension coefficient from given dictionary + virtual bool readDict(const dictionary& dict); + + //- Write in dictionary format + virtual bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceTensionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..b0d1cbf2d92ab20c424eb239bfa2379be8fc8821 --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "surfaceTensionModel.H" +#include "fvMesh.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(surfaceTensionModel, 0); + defineRunTimeSelectionTable(surfaceTensionModel, dictionary); +} + +const Foam::dimensionSet Foam::surfaceTensionModel::dimSigma(1, 0, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::surfaceTensionModel(const fvMesh& mesh) +: + regIOobject + ( + IOobject + ( + typeName, mesh.name(), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ) + ), + mesh_(mesh) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::~surfaceTensionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::surfaceTensionModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H new file mode 100644 index 0000000000000000000000000000000000000000..a5cddff4ef9176ab28e2e23b0fe5a18a96cb56c4 --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H @@ -0,0 +1,161 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::surfaceTensionModel + +Description + Abstract base-class for surface tension models which return the surface + tension coefficient field. + +Usage + Example of the surface tension specification: + \verbatim + sigma + { + type <surface tension model type>; + <coefficient name> <coefficient value>; + . + . + . + } + \endverbatim + For simplicity and backward-compatibility the constant value format is + also supported, e.g. + \verbatim + sigma 0.07; + \endverbatim + +SourceFiles + surfaceTensionModel.C + newSurfaceTensionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef surfaceTensionModel_H +#define surfaceTensionModel_H + +#include "regIOobject.H" +#include "dimensionedTypes.H" +#include "volFieldsFwd.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class fvMesh; + +/*---------------------------------------------------------------------------*\ + Class surfaceTensionModel Declaration +\*---------------------------------------------------------------------------*/ + +class surfaceTensionModel +: + public regIOobject +{ +protected: + + // Protected member data + + //- Reference to mesh + const fvMesh& mesh_; + + + // Protected member functions + + static const dictionary& sigmaDict(const dictionary& dict) + { + return dict.subDict("sigma"); + } + + +public: + + //- Runtime type information + TypeName("surfaceTensionModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + surfaceTensionModel, + dictionary, + ( + const dictionary& dict, + const fvMesh& mesh + ), + (dict, mesh) + ); + + + // Static data members + + //- Surface tension coefficient dimensions + static const dimensionSet dimSigma; + + + // Constructors + + // Construct from mesh + surfaceTensionModel(const fvMesh& mesh); + + + //- Destructor + virtual ~surfaceTensionModel(); + + + // Selectors + + static autoPtr<surfaceTensionModel> New + ( + const dictionary& dict, + const fvMesh& mesh + ); + + + // Member Functions + + //- Surface tension coefficient + virtual tmp<volScalarField> sigma() const = 0; + + //- Update surface tension coefficient from given dictionary + virtual bool readDict(const dictionary& dict) = 0; + + //- Write in dictionary format + virtual bool writeData(Ostream& os) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModelNew.C b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModelNew.C new file mode 100644 index 0000000000000000000000000000000000000000..6b2aa962cb97a3219d1ec168fcb0fd8435540240 --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/surfaceTensionModel/surfaceTensionModelNew.C @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "surfaceTensionModel.H" +#include "constantSurfaceTension.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::surfaceTensionModel> Foam::surfaceTensionModel::New +( + const dictionary& dict, + const fvMesh& mesh +) +{ + if (dict.isDict("sigma")) + { + const dictionary& sigmaDict = surfaceTensionModel::sigmaDict(dict); + + word surfaceTensionModelType(sigmaDict.lookup("type")); + + Info<< "Selecting surfaceTensionModel " + << surfaceTensionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(surfaceTensionModelType); + + if (!cstrIter.found()) + { + FatalErrorInFunction + << "Unknown surfaceTensionModelType type " + << surfaceTensionModelType << endl << endl + << "Valid surfaceTensionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(sigmaDict, mesh); + } + else + { + return autoPtr<surfaceTensionModel> + ( + new surfaceTensionModels::constant(dict, mesh) + ); + } +} + + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.C b/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.C new file mode 100644 index 0000000000000000000000000000000000000000..03fb3a106c75cbd13f791b2c9c63a1d37cf68472 --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.C @@ -0,0 +1,138 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 "temperatureDependentSurfaceTension.H" +#include "volFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + defineTypeNameAndDebug(temperatureDependent, 0); + addToRunTimeSelectionTable + ( + surfaceTensionModel, + temperatureDependent, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::temperatureDependent::temperatureDependent +( + const dictionary& dict, + const fvMesh& mesh +) +: + surfaceTensionModel(mesh), + TName_(dict.lookupOrDefault<word>("T", "T")), + sigma_(Function1<scalar>::New("sigma", dict)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::temperatureDependent::~temperatureDependent() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::surfaceTensionModels::temperatureDependent::sigma() const +{ + tmp<volScalarField> tsigma + ( + new volScalarField + ( + IOobject + ( + "sigma", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimSigma + ) + ); + volScalarField& sigma = tsigma.ref(); + + const volScalarField& T = mesh_.lookupObject<volScalarField>(TName_); + + sigma.field() = sigma_->value(T.field()); + + volScalarField::Boundary& sigmaBf = sigma.boundaryFieldRef(); + const volScalarField::Boundary& TBf = T.boundaryField(); + + forAll(sigmaBf, patchi) + { + sigmaBf[patchi] = sigma_->value(TBf[patchi]); + } + + return tsigma; +} + + +bool Foam::surfaceTensionModels::temperatureDependent::readDict +( + const dictionary& dict +) +{ + const dictionary& sigmaDict = surfaceTensionModel::sigmaDict(dict); + + TName_ = sigmaDict.lookupOrDefault<word>("T", "T"); + sigma_ = Function1<scalar>::New("sigma", sigmaDict); + + return true; +} + + +bool Foam::surfaceTensionModels::temperatureDependent::writeData +( + Ostream& os +) const +{ + if (surfaceTensionModel::writeData(os)) + { + os << sigma_() << token::END_STATEMENT << nl; + return os.good(); + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.H b/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.H new file mode 100644 index 0000000000000000000000000000000000000000..e442fda63e679e243a5363e00fc20bb7a259a83d --- /dev/null +++ b/src/transportModels/interfaceProperties/surfaceTensionModels/temperatureDependent/temperatureDependentSurfaceTension.H @@ -0,0 +1,132 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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::surfaceTensionModels::temperatureDependent + +Description + Temperature-dependent surface tension model. + + The surface tension is evaluated from the specified Foam::Function1 for the + temperature field looked-up from the mesh database the name of which + may optionally be provided. + +Usage + \table + Property | Description | Required | Default value + T | Temperature field name | no | T + sigma | Surface tension function | yes | + \endtable + + Example of the surface tension specification: + \verbatim + sigma + { + type temperatureDependent; + sigma constant 0.07; + } + \endverbatim + +See also + Foam::surfaceTensionModel + Foam::Function1 + +SourceFiles + temperatureDependentSurfaceTension.C + +\*---------------------------------------------------------------------------*/ + +#ifndef temperatureDependentSurfaceTension_H +#define temperatureDependentSurfaceTension_H + +#include "surfaceTensionModel.H" +#include "Function1.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace surfaceTensionModels +{ + +/*---------------------------------------------------------------------------*\ + Class temperatureDependent Declaration +\*---------------------------------------------------------------------------*/ + +class temperatureDependent +: + public surfaceTensionModel +{ + // Private data + + //- Name of temperature field, default = "T" + word TName_; + + //- Surface-tension function + autoPtr<Function1<scalar>> sigma_; + + +public: + + //- Runtime type information + TypeName("temperatureDependent"); + + + // Constructors + + //- Construct from dictionary and mesh + temperatureDependent + ( + const dictionary& dict, + const fvMesh& mesh + ); + + + //- Destructor + virtual ~temperatureDependent(); + + + // Member Functions + + //- Surface tension coefficient + virtual tmp<volScalarField> sigma() const; + + //- Update surface tension coefficient from given dictionary + virtual bool readDict(const dictionary& dict); + + //- Write in dictionary format + virtual bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceTensionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H b/src/transportModels/twoPhaseProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H index e52eab3eb4bacc7094c986b0c2f34e8d177b1d12..fdc46b9e0f40012282b01a4db9eb7b7bb664ce43 100644 --- a/src/transportModels/twoPhaseProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H +++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -148,7 +148,7 @@ public: //- Evaluate the patch field virtual void evaluate ( - const Pstream::commsTypes commsType=Pstream::blocking + const Pstream::commsTypes commsType=Pstream::commsTypes::blocking ); //- Write diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H index df08b538191470e235ec816fbe624df74e7f7672..ac5ede7727494b603774bf4bc89be98daea6715c 100644 --- a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H +++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,13 +25,17 @@ Class Foam::temperatureDependentAlphaContactAngleFvPatchScalarField Description - Temperature-dependent constant alphaContactAngle scalar boundary condition. + Temperature-dependent alphaContactAngle scalar boundary condition. + + The contact angle is evaluated from the specified Foam::Function1 for the + temperature field looked-up from the mesh database the name of which + may optionally be provided. Usage \table Property | Description | Required | Default value T | Temperature field name | no | T - theta0 | Contact angle data | yes | + theta0 | Contact angle function | yes | \endtable Example of the boundary condition specification: @@ -46,6 +50,7 @@ Usage See also Foam::alphaContactAngleFvPatchScalarField Foam::constantAlphaContactAngleFvPatchScalarField + Foam::Function1 SourceFiles temperatureDependentAlphaContactAngleFvPatchScalarField.C @@ -76,7 +81,7 @@ class temperatureDependentAlphaContactAngleFvPatchScalarField //- Name of temperature field, default = "T" word TName_; - //- Equilibrium contact angle table + //- Equilibrium contact angle function autoPtr<Function1<scalar>> theta0_; diff --git a/src/triSurface/Make/files b/src/triSurface/Make/files deleted file mode 100644 index ba9df9c53d6876d8f69c16e56a841f247a1d570c..0000000000000000000000000000000000000000 --- a/src/triSurface/Make/files +++ /dev/null @@ -1,28 +0,0 @@ -triSurface/triSurface.C -triSurface/triSurfaceAddressing.C -triSurface/stitchTriangles.C - -interfaces = triSurface/interfaces -$(interfaces)/STL/writeSTL.C -$(interfaces)/STL/readSTL.C -$(interfaces)/GTS/writeGTS.C -$(interfaces)/GTS/readGTS.C -$(interfaces)/OBJ/readOBJ.C -$(interfaces)/OBJ/writeOBJ.C -$(interfaces)/SMESH/writeSMESH.C -$(interfaces)/OFF/readOFF.C -$(interfaces)/OFF/writeOFF.C -$(interfaces)/TRI/writeTRI.C -$(interfaces)/TRI/readTRI.C -$(interfaces)/AC3D/readAC.C -$(interfaces)/AC3D/writeAC.C -$(interfaces)/VTK/readVTK.C -$(interfaces)/VTK/writeVTK.C -$(interfaces)/NAS/readNAS.C - -triSurface/geometricSurfacePatch/geometricSurfacePatch.C -triSurface/surfacePatch/surfacePatch.C - -triSurfaceFields/triSurfaceFields.C - -LIB = $(FOAM_LIBBIN)/libtriSurface diff --git a/src/triSurface/Make/options b/src/triSurface/Make/options deleted file mode 100644 index 210c65589602fc5911b063e86e95879380069bc9..0000000000000000000000000000000000000000 --- a/src/triSurface/Make/options +++ /dev/null @@ -1,6 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude - -LIB_LIBS = \ - -lsurfMesh diff --git a/tutorials/DNS/dnsFoam/boxTurb16/constant/transportProperties b/tutorials/DNS/dnsFoam/boxTurb16/constant/transportProperties index 56114857ea6dbd715ff9ff3f4d961d746bfd70b4..dbaa773bc8579f03b2009f922195ca832f04612d 100644 --- a/tutorials/DNS/dnsFoam/boxTurb16/constant/transportProperties +++ b/tutorials/DNS/dnsFoam/boxTurb16/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.025; +nu 0.025; // ************************************************************************* // diff --git a/tutorials/basic/laplacianFoam/flange/constant/transportProperties b/tutorials/basic/laplacianFoam/flange/constant/transportProperties index e192dc4fbb0259f17bce71c69591ea2db06275cc..45ae631f4026915ce5bdb18580924e5c1c177b9a 100644 --- a/tutorials/basic/laplacianFoam/flange/constant/transportProperties +++ b/tutorials/basic/laplacianFoam/flange/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -DT DT [0 2 -1 0 0 0 0] 4e-05; +DT 4e-05; // ************************************************************************* // diff --git a/tutorials/basic/potentialFoam/pitzDaily/system/blockMeshDict b/tutorials/basic/potentialFoam/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/basic/potentialFoam/pitzDaily/system/blockMeshDict +++ b/tutorials/basic/potentialFoam/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/basic/scalarTransportFoam/pitzDaily/0/U b/tutorials/basic/scalarTransportFoam/pitzDaily/0/U index 3759c18d82b9eaedb3c60b988558373eb8832f21..868015f45ed6a5dd06c79e5c9998ab6123a01ba9 100644 --- a/tutorials/basic/scalarTransportFoam/pitzDaily/0/U +++ b/tutorials/basic/scalarTransportFoam/pitzDaily/0/U @@ -10,6 +10,7 @@ FoamFile version 2.0; format ascii; class volVectorField; + location "288"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -19,12231 +20,12231 @@ dimensions [0 1 -1 0 0 0 0]; internalField nonuniform List<vector> 12225 ( -(9.88226 -1.12989 2.24499e-47) -(9.78836 -0.592567 3.02929e-46) -(9.59718 -0.336074 3.48522e-45) -(9.396 -0.194502 4.22672e-44) -(9.21095 -0.112442 5.32415e-43) -(9.04186 -0.0634575 6.67702e-42) -(8.88702 -0.0334686 7.99392e-41) -(8.74567 -0.0148062 8.70783e-40) -(8.61702 -0.00311275 7.94784e-39) -(8.50007 0.00420044 4.70736e-38) -(8.3938 0.00871992 -1.77421e-37) -(8.29724 0.0114374 -1.29939e-35) -(8.20952 0.0129808 -4.734e-34) -(8.12985 0.0137506 -2.77861e-32) -(8.05754 0.0140039 -2.09542e-30) -(7.99203 0.0139462 -1.511e-28) -(7.93162 0.014069 -6.80121e-27) -(7.88238 0.000283792 9.02892e-25) -(9.99935 0.384935 1.50431e-46) -(9.99152 0.3332 2.20189e-45) -(9.96125 0.24222 2.86906e-44) -(9.92088 0.180093 3.86658e-43) -(9.88025 0.137918 5.26991e-42) -(9.83856 0.108702 7.00644e-41) -(9.79519 0.0884285 8.76363e-40) -(9.75078 0.0741815 9.86228e-39) -(9.7061 0.06393 9.19529e-38) -(9.66166 0.0563443 5.41116e-37) -(9.61788 0.0505626 -2.56256e-36) -(9.57509 0.0460174 -1.62837e-34) -(9.53361 0.0423248 -5.51408e-33) -(9.49368 0.0392162 -3.10493e-31) -(9.45559 0.036494 -2.40412e-29) -(9.41965 0.0340461 -1.96607e-27) -(9.38694 0.0319015 -1.59739e-25) -(9.35848 0.0325041 -1.26659e-23) -(9.99313 0.0247292 5.15962e-46) -(10.0012 0.0084775 8.58466e-45) -(10.0117 0.00275237 1.28306e-43) -(10.0115 0.0120212 1.94481e-42) -(10.007 0.0221732 2.92201e-41) -(9.99951 0.0297579 4.21912e-40) -(9.98912 0.0351281 5.67445e-39) -(9.97659 0.038803 6.82918e-38) -(9.96259 0.0411671 6.81555e-37) -(9.94757 0.0425449 4.41819e-36) -(9.93187 0.0431972 -1.42206e-35) -(9.91577 0.0433138 -1.0613e-33) -(9.89951 0.0430201 -2.23819e-32) -(9.88333 0.0423854 -4.52049e-31) -(9.86749 0.041424 -1.09808e-29) -(9.8523 0.0400799 9.26645e-29) -(9.8384 0.0380437 5.94193e-26) -(9.82469 0.0333857 6.87505e-24) -(9.99922 0.0243575 1.33002e-45) -(10.0098 0.0455555 2.46311e-44) -(10.0251 0.0525143 4.14072e-43) -(10.0324 0.0573837 6.99737e-42) -(10.0364 0.0595698 1.16185e-40) -(10.0389 0.0595986 1.84227e-39) -(10.0397 0.0587145 2.71245e-38) -(10.0391 0.0575308 3.57866e-37) -(10.0375 0.0562444 3.95936e-36) -(10.0351 0.054923 3.0142e-35) -(10.0321 0.0535898 -2.52399e-35) -(10.0286 0.0522389 -6.14414e-33) -(10.0249 0.050842 -1.31404e-31) -(10.0211 0.0493464 -2.35866e-30) -(10.0173 0.0476631 -1.01323e-28) -(10.0137 0.0456269 -7.09232e-27) -(10.0106 0.0428683 -4.36972e-25) -(10.0069 0.0383616 -2.31637e-23) -(10.0015 0.0163882 2.80522e-45) -(10.0125 0.0373897 5.5758e-44) -(10.0272 0.043781 1.02468e-42) -(10.0364 0.0472985 1.9026e-41) -(10.0433 0.0497054 3.47846e-40) -(10.0493 0.0509147 6.08073e-39) -(10.0542 0.051436 9.90055e-38) -(10.058 0.0515944 1.4572e-36) -(10.0611 0.0514916 1.84242e-35) -(10.0636 0.0511682 1.75123e-34) -(10.0656 0.0506511 5.29575e-34) -(10.0673 0.0499513 -2.38068e-32) -(10.0687 0.0490585 -5.69417e-31) -(10.07 0.0479358 -2.26735e-31) -(10.0712 0.0465062 4.97345e-28) -(10.0724 0.0446197 2.61127e-26) -(10.0736 0.0420058 9.90726e-25) -(10.074 0.0381184 3.29763e-23) -(10.0023 0.0180937 5.04712e-45) -(10.0121 0.0360928 1.01959e-43) -(10.0253 0.0426075 1.95933e-42) -(10.0351 0.0461282 3.91385e-41) -(10.0431 0.0486815 7.85745e-40) -(10.0503 0.0501222 1.52729e-38) -(10.0568 0.0507871 2.79408e-37) -(10.0624 0.0509973 4.69567e-36) -(10.0674 0.0508939 7.01783e-35) -(10.0719 0.0505421 8.6906e-34) -(10.0761 0.0499796 6.8354e-33) -(10.0799 0.0492212 -4.70661e-32) -(10.0836 0.0482572 -3.72031e-30) -(10.087 0.0470509 -1.08299e-28) -(10.0903 0.0455319 -2.40115e-27) -(10.0935 0.0435814 -4.48613e-26) -(10.0964 0.0410404 -7.15521e-25) -(10.0987 0.0377135 -9.37111e-24) -(10.002 0.0160959 8.20139e-45) -(10.0105 0.0309993 1.5277e-43) -(10.0222 0.0379777 2.75798e-42) -(10.0319 0.0419979 5.56114e-41) -(10.0403 0.044865 1.21085e-39) -(10.048 0.0466224 2.66434e-38) -(10.055 0.0475569 5.64377e-37) -(10.0614 0.0479746 1.12095e-35) -(10.0673 0.0480335 2.05551e-34) -(10.0727 0.0478093 3.42418e-33) -(10.0778 0.0473439 5.02175e-32) -(10.0826 0.0466547 5.93712e-31) -(10.0872 0.0457359 3.61892e-30) -(10.0916 0.0445584 -8.01998e-29) -(10.0958 0.0430694 -4.23425e-27) -(10.0998 0.0411917 -1.27126e-25) -(10.1034 0.0388509 -3.17581e-24) -(10.1065 0.0360158 -7.1865e-23) -(10.0018 0.014314 1.34802e-44) -(10.0091 0.0275025 2.09801e-43) -(10.0194 0.0347369 2.74137e-42) -(10.0287 0.0390158 3.93583e-41) -(10.037 0.0419774 7.68734e-40) -(10.0447 0.0438486 1.95559e-38) -(10.0519 0.0448979 5.23985e-37) -(10.0585 0.0454053 1.32296e-35) -(10.0647 0.0455297 3.07208e-34) -(10.0705 0.0453513 6.59394e-33) -(10.076 0.0449148 1.32504e-31) -(10.0812 0.0442408 2.53177e-30) -(10.0861 0.0433283 4.68148e-29) -(10.0908 0.0421576 8.53964e-28) -(10.0954 0.0406934 1.56501e-26) -(10.0996 0.0388912 2.91816e-25) -(10.1034 0.0367258 5.55215e-24) -(10.1069 0.0342337 1.07015e-22) -(10.0016 0.0127832 2.48006e-44) -(10.0079 0.0246144 3.63874e-43) -(10.0171 0.0317467 3.56421e-42) -(10.0259 0.036117 1.31395e-41) -(10.0339 0.0391227 -4.23452e-40) -(10.0415 0.0410697 -1.23117e-38) -(10.0486 0.042209 -1.58868e-37) -(10.0553 0.0427927 6.51923e-37) -(10.0616 0.0429751 1.03811e-34) -(10.0675 0.042839 3.69578e-33) -(10.0731 0.0424321 9.60072e-32) -(10.0785 0.0417782 2.10414e-30) -(10.0836 0.040882 4.08796e-29) -(10.0885 0.0397329 7.18336e-28) -(10.0931 0.0383108 1.14652e-26) -(10.0974 0.036595 1.64252e-25) -(10.1014 0.0345879 2.0237e-24) -(10.1049 0.0323548 1.84776e-23) -(10.0014 0.0112914 5.63086e-44) -(10.0068 0.0217657 9.24915e-43) -(10.0148 0.0285881 1.09597e-41) -(10.0229 0.0329426 7.10839e-41) -(10.0305 0.0359424 -1.07804e-39) -(10.0378 0.037926 -5.73499e-38) -(10.0448 0.0391263 -1.53985e-36) -(10.0514 0.0397662 -3.26256e-35) -(10.0577 0.0399924 -5.95814e-34) -(10.0636 0.0398891 -9.65338e-33) -(10.0693 0.0395062 -1.3986e-31) -(10.0747 0.0388716 -1.80376e-30) -(10.0798 0.037996 -2.03516e-29) -(10.0847 0.0368788 -1.93169e-28) -(10.0894 0.0355145 -1.40143e-27) -(10.0937 0.0339018 -5.33762e-27) -(10.0976 0.0320608 3.29048e-26) -(10.1013 0.0300677 6.86781e-25) -(10.0012 0.00980661 1.339e-43) -(10.0057 0.0189198 2.59209e-42) -(10.0127 0.0252691 4.1485e-41) -(10.02 0.0294939 5.78993e-40) -(10.0271 0.0324229 6.36069e-39) -(10.0341 0.0343928 3.02363e-38) -(10.0408 0.0356168 -9.95179e-37) -(10.0472 0.0362877 -4.26536e-35) -(10.0533 0.0365413 -1.10753e-33) -(10.0591 0.036461 -2.35529e-32) -(10.0647 0.0360983 -4.41247e-31) -(10.0701 0.0354847 -7.48247e-30) -(10.0752 0.0346374 -1.16059e-28) -(10.08 0.0335653 -1.64864e-27) -(10.0845 0.0322754 -2.12964e-26) -(10.0888 0.0307806 -2.45251e-25) -(10.0927 0.0291104 -2.39594e-24) -(10.0963 0.0273395 -1.68898e-23) -(10.001 0.00833817 2.71605e-43) -(10.0048 0.0161157 5.97071e-42) -(10.0107 0.0218481 1.15046e-40) -(10.0173 0.0258193 2.10189e-39) -(10.0239 0.0286011 3.63369e-38) -(10.0303 0.0304978 5.89303e-37) -(10.0367 0.0316998 8.83444e-36) -(10.0428 0.0323702 1.19039e-34) -(10.0487 0.0326305 1.35015e-33) -(10.0544 0.0325608 1.01843e-32) -(10.0598 0.0322131 -4.35052e-32) -(10.065 0.031622 -4.03337e-30) -(10.0699 0.0308104 -1.12698e-28) -(10.0746 0.0297954 -2.41057e-27) -(10.079 0.0285932 -4.48325e-26) -(10.0831 0.0272255 -7.57566e-25) -(10.0869 0.025725 -1.18707e-23) -(10.0905 0.0241578 -1.74423e-22) -(10.0009 0.00690098 3.52496e-43) -(10.004 0.0133738 8.37717e-42) -(10.009 0.018362 1.78886e-40) -(10.0148 0.0219484 3.70362e-39) -(10.0208 0.0244954 7.45377e-38) -(10.0268 0.026251 1.45748e-36) -(10.0327 0.0273784 2.76656e-35) -(10.0385 0.0280116 5.0928e-34) -(10.0441 0.0282552 9.08195e-33) -(10.0496 0.0281826 1.5672e-31) -(10.0547 0.027845 2.61406e-30) -(10.0597 0.0272784 4.21025e-29) -(10.0645 0.0265102 6.54174e-28) -(10.0689 0.0255627 9.79745e-27) -(10.0732 0.0244582 1.41338e-25) -(10.0771 0.0232221 1.96279e-24) -(10.0808 0.0218859 2.62276e-23) -(10.0843 0.0205052 3.37093e-22) -(10.0007 0.00550351 5.35065e-44) -(10.0034 0.0106986 8.30157e-43) -(10.0076 0.0148394 7.18584e-42) -(10.0126 0.017913 -6.92232e-41) -(10.018 0.0201281 -5.66052e-39) -(10.0235 0.0216667 -1.90318e-37) -(10.0291 0.0226594 -5.02859e-36) -(10.0345 0.0232124 -1.16538e-34) -(10.0398 0.0234112 -2.46423e-33) -(10.0449 0.0233199 -4.84328e-32) -(10.0499 0.022986 -8.93806e-31) -(10.0546 0.0224452 -1.55824e-29) -(10.0591 0.0217263 -2.57642e-28) -(10.0634 0.0208544 -4.05087e-27) -(10.0674 0.0198537 -6.0682e-26) -(10.0712 0.0187498 -8.67298e-25) -(10.0747 0.0175707 -1.184e-23) -(10.078 0.0163617 -1.54525e-22) -(10.0006 0.00414351 -1.39248e-43) -(10.0028 0.00807813 -3.48506e-42) -(10.0064 0.0112901 -7.66942e-41) -(10.0108 0.0137331 -1.59188e-39) -(10.0157 0.0155142 -3.13055e-38) -(10.0207 0.0167528 -5.84202e-37) -(10.0258 0.0175442 -1.03534e-35) -(10.0309 0.0179672 -1.74299e-34) -(10.0358 0.0180873 -2.78666e-33) -(10.0407 0.0179569 -4.22791e-32) -(10.0453 0.0176165 -6.07891e-31) -(10.0498 0.0170987 -8.26508e-30) -(10.0541 0.016431 -1.05911e-28) -(10.0581 0.0156378 -1.27251e-27) -(10.062 0.0147422 -1.42144e-26) -(10.0656 0.0137672 -1.45451e-25) -(10.0689 0.0127365 -1.32399e-24) -(10.0722 0.0116859 -9.9793e-24) -(10.0005 0.00280602 5.26981e-44) -(10.0024 0.00548078 1.14377e-42) -(10.0055 0.00769455 2.23848e-41) -(10.0094 0.00940051 4.31161e-40) -(10.0138 0.0106458 8.18048e-39) -(10.0183 0.011498 1.5215e-37) -(10.023 0.0120175 2.75855e-36) -(10.0278 0.0122562 4.84966e-35) -(10.0324 0.0122592 8.23041e-34) -(10.037 0.0120643 1.34366e-32) -(10.0414 0.0117025 2.1047e-31) -(10.0456 0.0112002 3.15729e-30) -(10.0496 0.0105803 4.53005e-29) -(10.0535 0.00986382 6.21111e-28) -(10.0571 0.00907019 8.13284e-27) -(10.0606 0.00821827 1.01653e-25) -(10.0638 0.00732666 1.21236e-24) -(10.0669 0.00642341 1.37918e-23) -(10.0005 0.00146136 2.3874e-43) -(10.0021 0.00285103 5.16069e-42) -(10.0049 0.00399721 9.78233e-41) -(10.0084 0.00486887 1.76889e-39) -(10.0124 0.0054809 3.06242e-38) -(10.0166 0.0058614 5.0757e-37) -(10.021 0.00603806 8.05092e-36) -(10.0254 0.00603657 1.2216e-34) -(10.0298 0.00588059 1.77223e-33) -(10.0341 0.00559142 2.45663e-32) -(10.0382 0.00518802 3.25113e-31) -(10.0423 0.00468747 4.10349e-30) -(10.0461 0.00410552 4.93295e-29) -(10.0498 0.00345699 5.63769e-28) -(10.0532 0.00275579 6.10999e-27) -(10.0565 0.00201534 6.25623e-26) -(10.0596 0.00124892 6.01878e-25) -(10.0626 0.000477787 5.39244e-24) -(10.0004 0.000142433 2.4396e-43) -(10.002 0.000260758 5.68335e-42) -(10.0046 0.000325312 1.17219e-40) -(10.0079 0.000328953 2.3109e-39) -(10.0117 0.00026911 4.36936e-38) -(10.0157 0.000142025 7.92683e-37) -(10.0199 -5.50022e-05 1.38022e-35) -(10.0242 -0.000321927 2.30714e-34) -(10.0284 -0.000656395 3.70316e-33) -(10.0325 -0.00105445 5.70865e-32) -(10.0365 -0.00151086 8.45359e-31) -(10.0403 -0.00201939 1.20275e-29) -(10.044 -0.00257304 1.64444e-28) -(10.0475 -0.00316429 2.16092e-27) -(10.0509 -0.00378526 2.72972e-26) -(10.0541 -0.00442809 3.31541e-25) -(10.0571 -0.00508462 3.87236e-24) -(10.06 -0.00573967 4.35023e-23) -(10.0004 -0.00107569 -4.45349e-43) -(10.002 -0.00214019 -1.00113e-41) -(10.0046 -0.00308817 -1.99027e-40) -(10.008 -0.00389404 -3.7928e-39) -(10.0118 -0.0045749 -6.95213e-38) -(10.0158 -0.00516747 -1.22585e-36) -(10.0199 -0.00570488 -2.07926e-35) -(10.0241 -0.00621177 -3.39247e-34) -(10.0283 -0.00670629 -5.32422e-33) -(10.0323 -0.00720132 -8.03761e-32) -(10.0362 -0.00770496 -1.16717e-30) -(10.04 -0.00822143 -1.63038e-29) -(10.0436 -0.00875209 -2.19083e-28) -(10.0471 -0.00929632 -2.8322e-27) -(10.0503 -0.00985208 -3.52259e-26) -(10.0534 -0.0104164 -4.21563e-25) -(10.0564 -0.0109852 -4.85481e-24) -(10.0592 -0.0115482 -5.38069e-23) -(10.0005 -0.00219673 -4.05711e-43) -(10.0021 -0.00436466 -8.86921e-42) -(10.0049 -0.00624643 -1.7095e-40) -(10.0085 -0.0077683 -3.15957e-39) -(10.0124 -0.00897475 -5.62206e-38) -(10.0166 -0.00994789 -9.63458e-37) -(10.0208 -0.0107538 -1.59044e-35) -(10.025 -0.0114412 -2.52939e-34) -(10.0292 -0.0120486 -3.87613e-33) -(10.0333 -0.0126048 -5.72431e-32) -(10.0372 -0.01313 -8.14794e-31) -(10.0409 -0.0136377 -1.11795e-29) -(10.0445 -0.0141363 -1.47875e-28) -(10.0479 -0.0146308 -1.88582e-27) -(10.0511 -0.0151239 -2.31885e-26) -(10.0542 -0.0156164 -2.7494e-25) -(10.0571 -0.0161075 -3.14356e-24) -(10.0599 -0.0165903 -3.46608e-23) -(10.0005 -0.00326392 -9.23808e-44) -(10.0023 -0.00652899 -1.59606e-42) -(10.0054 -0.00931442 -2.11873e-41) -(10.0093 -0.0114734 -2.04434e-40) -(10.0136 -0.0131179 -1.61186e-40) -(10.018 -0.0143974 5.91804e-38) -(10.0224 -0.0154113 2.03589e-36) -(10.0267 -0.0162313 4.97423e-35) -(10.031 -0.0169155 1.03524e-33) -(10.035 -0.0175078 1.94011e-32) -(10.039 -0.0180385 3.3552e-31) -(10.0427 -0.0185283 5.42432e-30) -(10.0463 -0.0189912 8.26152e-29) -(10.0497 -0.0194368 1.19129e-27) -(10.0529 -0.0198715 1.63189e-26) -(10.0559 -0.0202998 2.12879e-25) -(10.0588 -0.0207238 2.64929e-24) -(10.0616 -0.0211407 3.14974e-23) -(10.0005 -0.0042742 -2.2118e-44) -(10.0025 -0.00869411 -3.47356e-43) -(10.0061 -0.0123672 -4.0449e-42) -(10.0105 -0.0150519 -3.18133e-41) -(10.0151 -0.0170139 7.93226e-41) -(10.0198 -0.0184954 1.04409e-38) -(10.0244 -0.019626 2.91774e-37) -(10.0289 -0.0205019 6.1072e-36) -(10.0333 -0.0212025 1.10552e-34) -(10.0374 -0.0217848 1.82291e-33) -(10.0414 -0.0222867 2.81717e-32) -(10.0452 -0.022734 4.16544e-31) -(10.0487 -0.0231443 5.9939e-30) -(10.0521 -0.0235301 8.50836e-29) -(10.0553 -0.0239003 1.20141e-27) -(10.0583 -0.0242614 1.69046e-26) -(10.0611 -0.024618 2.36011e-25) -(10.0639 -0.0249695 3.24382e-24) -(10.0004 -0.00521602 -1.60645e-44) -(10.0026 -0.0109915 -4.14251e-43) -(10.0068 -0.0155902 -9.94846e-42) -(10.0119 -0.0187297 -2.34199e-40) -(10.017 -0.0209636 -5.33181e-39) -(10.022 -0.0226153 -1.16371e-37) -(10.0268 -0.0238291 -2.42537e-36) -(10.0315 -0.0247317 -4.82093e-35) -(10.0359 -0.0254268 -9.14002e-34) -(10.0401 -0.0259824 -1.65407e-32) -(10.0441 -0.0264415 -2.86013e-31) -(10.0478 -0.0268335 -4.73041e-30) -(10.0514 -0.0271788 -7.49081e-29) -(10.0547 -0.027492 -1.13678e-27) -(10.0578 -0.0277841 -1.65459e-26) -(10.0608 -0.0280645 -2.31145e-25) -(10.0635 -0.0283419 -3.1012e-24) -(10.0662 -0.0286225 -3.99812e-23) -(10.0002 -0.00593101 1.89415e-44) -(10.0025 -0.0133252 4.60863e-43) -(10.0076 -0.0185872 1.00943e-41) -(10.0134 -0.0218232 2.15189e-40) -(10.019 -0.0241143 4.48867e-39) -(10.0242 -0.0257853 9.16409e-38) -(10.0292 -0.0269611 1.82822e-36) -(10.034 -0.0278035 3.55445e-35) -(10.0384 -0.028439 6.71436e-34) -(10.0426 -0.0289396 1.2288e-32) -(10.0465 -0.0293478 2.17344e-31) -(10.0502 -0.0296913 3.70844e-30) -(10.0536 -0.0299888 6.0957e-29) -(10.0568 -0.0302529 9.64385e-28) -(10.0598 -0.0304931 1.46769e-26) -(10.0626 -0.0307181 2.14809e-25) -(10.0652 -0.0309375 3.02327e-24) -(10.0676 -0.03116 4.09186e-23) -(9.99977 -0.00649473 3.06029e-44) -(10.0021 -0.0170845 7.1981e-43) -(10.0084 -0.0233021 1.51123e-41) -(10.0149 -0.0266116 3.05849e-40) -(10.0207 -0.0289922 5.98265e-39) -(10.026 -0.030692 1.1302e-37) -(10.0311 -0.0318061 2.0593e-36) -(10.0357 -0.032537 3.61311e-35) -(10.04 -0.0330319 6.09267e-34) -(10.044 -0.0333718 9.8527e-33) -(10.0477 -0.0336071 1.52411e-31) -(10.0511 -0.0337726 2.24818e-30) -(10.0543 -0.033891 3.14926e-29) -(10.0572 -0.033977 4.16504e-28) -(10.0599 -0.0340403 5.15423e-27) -(10.0623 -0.0340894 5.87746e-26) -(10.0646 -0.0341378 5.99356e-25) -(10.0667 -0.0342053 5.08024e-24) -(9.99798 -0.00293555 2.23507e-44) -(9.99991 -0.0168829 4.93651e-43) -(10.008 -0.0232939 9.63464e-42) -(10.0152 -0.0260207 1.80776e-40) -(10.021 -0.0279684 3.27276e-39) -(10.0263 -0.0293743 5.71387e-38) -(10.0312 -0.0303876 9.60734e-37) -(10.0356 -0.0311965 1.55275e-35) -(10.0395 -0.0318768 2.40659e-34) -(10.043 -0.0324489 3.56668e-33) -(10.0461 -0.0329259 5.03713e-32) -(10.0489 -0.0333211 6.74956e-31) -(10.0515 -0.0336451 8.53301e-30) -(10.0537 -0.0339057 1.01017e-28) -(10.0558 -0.0341082 1.10822e-27) -(10.0575 -0.0342567 1.11039e-26) -(10.0591 -0.034361 9.96728e-26) -(10.0604 -0.0344323 7.88899e-25) -(9.99459 -0.00611883 1.11825e-44) -(9.99512 -0.0273443 2.2674e-43) -(10.0058 -0.0377523 4.02408e-42) -(10.0137 -0.0433277 6.89291e-41) -(10.019 -0.0460087 1.1447e-39) -(10.0236 -0.0465264 1.84082e-38) -(10.0274 -0.0459576 2.85981e-37) -(10.0305 -0.0450054 4.27981e-36) -(10.033 -0.043966 6.14964e-35) -(10.035 -0.0429563 8.45256e-34) -(10.0367 -0.0420264 1.1064e-32) -(10.0379 -0.0411932 1.37162e-31) -(10.0389 -0.0404543 1.59888e-30) -(10.0395 -0.0397968 1.7347e-29) -(10.0399 -0.0392018 1.72348e-28) -(10.04 -0.0386458 1.52008e-27) -(10.0399 -0.0381107 1.09666e-26) -(10.0395 -0.0375714 4.24817e-26) -(9.98548 0.00834022 4.11509e-45) -(9.98405 0.0194657 7.46464e-44) -(9.99643 0.0243368 1.17758e-42) -(10.0046 0.0168887 1.81449e-41) -(10.0094 0.00675372 2.74038e-40) -(10.0122 -0.00200611 4.04222e-39) -(10.0133 -0.00907208 5.79764e-38) -(10.0128 -0.0146954 8.04915e-37) -(10.0113 -0.0190958 1.07684e-35) -(10.009 -0.0224907 1.38157e-34) -(10.0061 -0.0250881 1.69079e-33) -(10.0028 -0.0270638 1.96112e-32) -(9.9991 -0.0285554 2.138e-31) -(9.9951 -0.0296668 2.16501e-30) -(9.99088 -0.0304712 1.9981e-29) -(9.98647 -0.0310108 1.62162e-28) -(9.9819 -0.0313004 1.06354e-27) -(9.97686 -0.0312699 4.10207e-27) -(9.99924 -0.295135 1.03445e-45) -(9.99748 -0.289148 1.64636e-44) -(9.98879 -0.227729 2.25799e-43) -(9.97492 -0.179068 3.08393e-42) -(9.96209 -0.143032 4.2049e-41) -(9.9495 -0.115955 5.67884e-40) -(9.93598 -0.0958118 7.53549e-39) -(9.9215 -0.0808756 9.75522e-38) -(9.90637 -0.0697032 1.22425e-36) -(9.8908 -0.0612368 1.48024e-35) -(9.87495 -0.0547338 1.71325e-34) -(9.85897 -0.0496697 1.88441e-33) -(9.84296 -0.0456689 1.95273e-32) -(9.82704 -0.0424582 1.88956e-31) -(9.81129 -0.0398325 1.72359e-30) -(9.79579 -0.0376225 1.76068e-29) -(9.78065 -0.0356635 3.83169e-28) -(9.76533 -0.0335315 1.82914e-26) -(9.97279 0.878007 1.20758e-46) -(9.97287 0.508408 1.70193e-45) -(9.88791 0.320158 2.02826e-44) -(9.78171 0.207505 2.46197e-43) -(9.68012 0.136331 3.05293e-42) -(9.58517 0.0900468 3.81299e-41) -(9.49606 0.0590601 4.73465e-40) -(9.41266 0.037814 5.78535e-39) -(9.33487 0.0229984 6.8979e-38) -(9.26238 0.0125402 7.96429e-37) -(9.1948 0.00509114 8.83854e-36) -(9.13177 -0.000247654 9.35324e-35) -(9.07294 -0.0040863 9.35384e-34) -(9.01801 -0.00684535 8.76576e-33) -(8.96671 -0.0088168 7.79706e-32) -(8.91878 -0.0101987 7.81781e-31) -(8.87418 -0.0111027 1.3211e-29) -(8.83147 -0.0114117 -3.40894e-28) -(0.00579529 -0.0142991 -3.03595e-23) -(0.0162142 -0.0169105 -9.24003e-23) -(0.0244395 -0.0130013 -1.89965e-22) -(0.0287075 -0.00693185 -3.74491e-22) -(0.0276408 -0.000296282 -7.60472e-23) -(0.0218531 0.00607392 2.99532e-22) -(0.0123233 0.0116805 1.66368e-22) -(-0.000814699 0.0163801 5.26071e-23) -(-0.0166465 0.0197673 -4.29377e-23) -(-0.0343143 0.0221278 -1.27405e-22) -(-0.0538123 0.0239855 -2.14208e-22) -(-0.0748553 0.0255513 2.3154e-23) -(-0.0972685 0.0268895 9.17285e-23) -(-0.120902 0.0280228 9.32367e-23) -(-0.145618 0.0289664 8.86991e-23) -(-0.171287 0.0297361 8.96211e-23) -(-0.19779 0.03035 1.00207e-22) -(-0.225017 0.0308265 1.22251e-22) -(-0.25287 0.0311842 1.38235e-22) -(-0.281262 0.0314401 1.5322e-22) -(-0.310116 0.0316101 1.70784e-22) -(-0.339368 0.0317081 9.45709e-23) -(-0.36896 0.0317465 8.88077e-23) -(-0.398843 0.0317363 5.91193e-24) -(-0.428979 0.0316866 -1.94854e-23) -(-0.459333 0.0316053 3.90222e-23) -(-0.489877 0.0314993 1.14718e-22) -(-0.520591 0.031374 1.25256e-22) -(-0.551455 0.0312341 1.25703e-22) -(-0.582457 0.0310833 1.28788e-22) -(-0.613585 0.0309244 1.39585e-22) -(-0.644833 0.0307598 9.85398e-23) -(-0.676193 0.030591 4.7414e-23) -(-0.707663 0.0304192 4.52982e-23) -(-0.739238 0.0302447 4.83158e-23) -(-0.770918 0.0300678 5.29269e-23) -(-0.802701 0.0298882 5.4017e-23) -(-0.834584 0.0297053 3.4132e-24) -(-0.866567 0.0295182 -1.91488e-23) -(-0.898648 0.0293258 -4.80659e-23) -(-0.930824 0.0291271 3.81187e-24) -(-0.963092 0.0289211 1.47694e-24) -(-0.995448 0.0287071 6.45018e-23) -(-1.02789 0.0284851 6.55264e-23) -(-1.0604 0.0282563 6.21821e-23) -(-1.093 0.028025 1.28004e-22) -(-1.12568 0.0278015 1.39023e-22) -(-1.15841 0.0276021 1.4776e-22) -(-1.19124 0.027441 1.56561e-22) -(-1.22421 0.0273205 1.09439e-22) -(-1.25731 0.0272095 1.14642e-22) -(-1.29055 0.0270862 1.242e-22) -(-1.32392 0.026959 7.60745e-23) -(-1.35741 0.0268261 1.54062e-23) -(-1.39102 0.0266857 5.72682e-23) -(-1.42472 0.0265363 5.36201e-23) -(-1.45851 0.0263765 4.53433e-23) -(-1.49238 0.0262053 -1.27399e-23) -(-1.5263 0.0260218 2.61003e-23) -(-1.56025 0.0258253 2.42395e-23) -(-1.59422 0.0256148 -2.5978e-23) -(-1.62818 0.0253898 -3.64124e-23) -(-1.66212 0.0251498 2.53335e-24) -(-1.696 0.024894 2.30707e-24) -(-1.72981 0.0246221 6.15287e-25) -(-1.76351 0.0243336 -1.36551e-24) -(-1.79707 0.024028 -3.20721e-24) -(-1.83048 0.0237048 -5.06526e-23) -(-1.8637 0.0233637 -6.45524e-23) -(-1.89669 0.0230043 -7.39129e-23) -(-1.92943 0.0226262 -8.43085e-23) -(-1.96188 0.0222289 -5.34686e-23) -(-1.99401 0.021812 -6.05421e-23) -(-2.02578 0.0213751 -2.95177e-23) -(-2.05715 0.0209177 -3.05542e-23) -(-2.08809 0.0204394 -2.91932e-23) -(-2.11855 0.0199396 -2.99053e-23) -(-2.14849 0.0194178 -2.96513e-23) -(-2.17787 0.0188735 -5.99444e-23) -(-2.20665 0.0183061 -5.99144e-23) -(-2.23476 0.0177153 -2.79599e-23) -(-2.26218 0.0171004 -2.98234e-23) -(-2.28884 0.016461 -7.41793e-23) -(-2.31469 0.0157967 -9.5508e-23) -(-2.33968 0.0151074 -5.0717e-23) -(-2.36376 0.0143927 2.59268e-24) -(-2.38686 0.0136526 -1.1566e-23) -(-2.40894 0.0128875 -2.34659e-23) -(-2.42993 0.0120975 -4.00695e-23) -(-2.44977 0.0112833 -5.09531e-23) -(-2.4684 0.0104458 1.02375e-23) -(-2.48577 0.00958601 1.08883e-23) -(-2.50182 0.00870541 7.83439e-23) -(-2.5165 0.00780559 8.72207e-23) -(-2.52975 0.0068884 2.11524e-23) -(-2.54152 0.00595585 6.25002e-23) -(-2.55177 0.00501001 6.31683e-23) -(-2.56044 0.00405297 5.60989e-23) -(-2.56752 0.00308656 5.55916e-23) -(-2.57295 0.0021116 5.64501e-23) -(-2.5767 0.0011289 5.6501e-23) -(-2.57872 0.000151591 5.69765e-23) -(-2.57903 -0.000810939 6.03029e-23) -(-2.57762 -0.00176206 1.0451e-22) -(-2.57449 -0.00270289 1.13554e-22) -(-2.56963 -0.00363331 1.27409e-22) -(-2.56304 -0.00455304 8.97373e-23) -(-2.55473 -0.00546175 9.66833e-23) -(-2.54469 -0.00635906 1.08576e-22) -(-2.53292 -0.00724458 7.91337e-23) -(-2.51943 -0.00811789 8.20594e-23) -(-2.50423 -0.00897852 9.47315e-23) -(-2.48732 -0.00982601 1.12867e-22) -(-2.4687 -0.0106598 9.75326e-23) -(-2.4484 -0.0114795 1.09508e-22) -(-2.42641 -0.0122844 9.03344e-23) -(-2.40276 -0.013074 9.56337e-23) -(-2.37745 -0.0138476 1.0191e-22) -(-2.35051 -0.0146045 9.93209e-23) -(-2.32195 -0.015344 1.14597e-22) -(-2.2918 -0.0160656 1.11176e-22) -(-2.26008 -0.0167687 9.28373e-23) -(-2.22682 -0.0174528 9.30505e-23) -(-2.19203 -0.0181177 9.51783e-23) -(-2.15577 -0.018763 9.71686e-23) -(-2.11804 -0.0193883 9.18334e-23) -(-2.0789 -0.0199933 9.09219e-23) -(-2.03836 -0.0205775 9.53574e-23) -(-1.99648 -0.0211404 9.44477e-23) -(-1.95328 -0.0216814 9.06487e-23) -(-1.90881 -0.0222004 9.51623e-23) -(-1.86312 -0.0226972 9.70117e-23) -(-1.81624 -0.023172 1.04104e-22) -(-1.76822 -0.0236252 1.1861e-22) -(-1.71911 -0.0240567 1.45228e-22) -(-1.66896 -0.0244661 1.39377e-22) -(-1.61781 -0.0248528 1.08523e-22) -(-1.56571 -0.0252172 3.03484e-23) -(-1.51272 -0.0255599 -2.43504e-23) -(-1.45889 -0.025882 -4.94636e-24) -(-1.40427 -0.0261839 4.4064e-23) -(-1.34891 -0.0264647 8.85973e-24) -(-1.29286 -0.0267244 -3.51815e-23) -(-1.23619 -0.0269646 -8.52234e-23) -(-1.17893 -0.0271886 2.64254e-23) -(-1.12114 -0.0273954 -3.84965e-25) -(-1.06287 -0.0275823 -1.75779e-22) -(-1.00417 -0.0277523 -9.93954e-23) -(-0.945099 -0.0279116 1.3261e-22) -(-0.885687 -0.0280577 1.8518e-22) -(-0.825997 -0.0281842 2.98514e-22) -(-0.766069 -0.0283074 4.86546e-22) -(-0.705927 -0.0284246 2.71872e-22) -(-0.645635 -0.0285185 2.62719e-22) -(-0.585224 -0.0286233 2.01713e-22) -(-0.524709 -0.0287244 3.39878e-23) -(-0.464132 -0.0288156 2.58345e-22) -(-0.40351 -0.0289275 4.19453e-22) -(-0.34289 -0.0290169 1.07821e-22) -(-0.282215 -0.0291569 -1.09868e-22) -(-0.221683 -0.0292824 -1.65027e-22) -(-0.160897 -0.029419 3.78695e-22) -(-0.100331 -0.0296729 2.97579e-22) -(-0.0401663 -0.029953 3.47571e-22) -(0.0216799 -0.0296448 5.22576e-22) -(0.0814305 -0.0286717 2.39976e-22) -(0.140936 -0.0277367 -3.56376e-23) -(0.199984 -0.0269273 -4.26548e-22) -(0.25864 -0.0261967 6.00369e-23) -(0.316969 -0.0255197 -4.63434e-23) -(0.375 -0.0248786 -7.68041e-23) -(0.432726 -0.0242557 -1.30709e-23) -(0.490105 -0.0236301 6.81649e-22) -(0.547008 -0.0229617 2.49584e-22) -(0.60325 -0.0222003 -4.58934e-22) -(0.658168 -0.0211672 -1.08228e-22) -(0.711339 -0.0197367 1.81757e-22) -(0.75855 -0.0167349 1.98742e-22) -(0.802412 -0.0120827 2.9295e-22) -(0.79459 0.00565451 -6.7699e-22) -(0.00264398 -0.0312631 -3.80671e-24) -(0.00470438 -0.0263754 -8.28119e-23) -(0.00125717 -0.0122901 -2.01556e-22) -(-0.00618108 0.00310432 1.40918e-22) -(-0.0163215 0.0170507 1.36221e-22) -(-0.0287984 0.0288458 8.17246e-23) -(-0.0433081 0.0384975 1.03525e-22) -(-0.0596153 0.0462274 5.36127e-23) -(-0.0775258 0.0523377 1.21466e-23) -(-0.0968857 0.0572617 -1.91887e-23) -(-0.11756 0.0613651 -3.61302e-23) -(-0.139386 0.0648495 8.97531e-23) -(-0.16222 0.0678261 2.14033e-22) -(-0.185937 0.0703579 1.4757e-22) -(-0.210429 0.0724878 1.00585e-22) -(-0.235602 0.0742524 4.41711e-23) -(-0.261372 0.0756872 -1.41774e-23) -(-0.287661 0.0768274 6.17303e-23) -(-0.314401 0.0777076 7.37151e-23) -(-0.341531 0.0783611 6.4222e-23) -(-0.368998 0.078819 4.40195e-23) -(-0.396754 0.0791101 7.41514e-23) -(-0.42476 0.0792607 8.17303e-23) -(-0.452981 0.0792942 1.42758e-22) -(-0.481389 0.0792313 9.98185e-23) -(-0.50996 0.0790902 6.13455e-23) -(-0.538676 0.0788867 1.1109e-22) -(-0.567523 0.0786342 1.50368e-22) -(-0.596488 0.0783442 1.13853e-22) -(-0.625564 0.0780263 4.46518e-23) -(-0.654747 0.0776882 2.8815e-23) -(-0.684031 0.0773363 5.45122e-23) -(-0.713417 0.0769756 2.88371e-23) -(-0.742905 0.07661 1.78044e-23) -(-0.772496 0.0762421 1.02185e-23) -(-0.802193 0.0758738 5.48128e-23) -(-0.831998 0.0755063 1.30338e-22) -(-0.861915 0.0751399 1.97553e-22) -(-0.891949 0.0747746 2.55701e-22) -(-0.922104 0.0744099 2.14502e-22) -(-0.952384 0.074045 6.71858e-23) -(-0.982793 0.0736791 1.29195e-22) -(-1.01334 0.0733113 1.06615e-22) -(-1.04402 0.0729412 1.02818e-22) -(-1.07485 0.072569 1.06789e-22) -(-1.10582 0.0721965 7.21116e-23) -(-1.13696 0.0718308 6.897e-23) -(-1.16824 0.0714864 7.81197e-23) -(-1.19968 0.0711688 8.18618e-24) -(-1.23124 0.070867 3.47778e-23) -(-1.26292 0.0705679 3.5312e-23) -(-1.29471 0.0702613 2.85165e-23) -(-1.3266 0.0699409 6.94397e-23) -(-1.35859 0.069602 1.33551e-22) -(-1.39067 0.0692404 1.23931e-22) -(-1.42282 0.0688528 1.39242e-22) -(-1.45502 0.0684363 7.75246e-23) -(-1.48726 0.0679885 9.2717e-23) -(-1.51953 0.067507 7.04178e-23) -(-1.5518 0.0669901 1.20086e-23) -(-1.58406 0.066436 3.78108e-23) -(-1.61628 0.065843 5.73377e-23) -(-1.64844 0.0652099 2.52137e-23) -(-1.68052 0.0645353 1.70306e-23) -(-1.7125 0.0638181 1.71345e-23) -(-1.74435 0.0630572 1.7791e-23) -(-1.77604 0.0622517 5.51983e-24) -(-1.80754 0.0614006 4.30215e-23) -(-1.83883 0.060503 6.06125e-24) -(-1.86987 0.0595581 1.7154e-24) -(-1.90064 0.058565 1.53839e-23) -(-1.93111 0.0575228 1.27143e-23) -(-1.96123 0.0564307 2.91626e-23) -(-1.99098 0.0552875 -9.27791e-24) -(-2.02031 0.0540924 -4.40236e-23) -(-2.0492 0.0528444 -2.61273e-23) -(-2.0776 0.0515422 -3.28506e-23) -(-2.10547 0.0501848 -1.09074e-22) -(-2.13277 0.0487709 -8.20792e-23) -(-2.15946 0.0472995 -1.04474e-23) -(-2.18549 0.0457692 9.43661e-25) -(-2.21081 0.044179 1.4431e-23) -(-2.23537 0.0425279 5.47415e-23) -(-2.25913 0.040815 1.00329e-22) -(-2.28203 0.0390397 1.10473e-22) -(-2.30401 0.0372017 1.2416e-22) -(-2.32503 0.0353012 6.77956e-23) -(-2.34501 0.0333386 8.54641e-23) -(-2.36392 0.0313151 1.9824e-23) -(-2.38168 0.0292323 -6.07193e-24) -(-2.39824 0.0270929 2.12361e-23) -(-2.41354 0.0248998 8.29214e-24) -(-2.42753 0.022657 5.6316e-23) -(-2.44015 0.0203693 9.63026e-23) -(-2.45135 0.018042 1.40563e-22) -(-2.46107 0.015681 7.8594e-23) -(-2.46927 0.0132924 1.10045e-22) -(-2.47591 0.0108826 6.18224e-23) -(-2.48095 0.00845697 5.46361e-23) -(-2.48435 0.00601821 6.04986e-23) -(-2.48606 0.00356951 5.80039e-23) -(-2.48608 0.00113535 3.72181e-23) -(-2.48441 -0.00126081 1.22999e-22) -(-2.48104 -0.00361944 7.86065e-23) -(-2.47596 -0.00594141 5.81458e-23) -(-2.46918 -0.0082264 7.28206e-23) -(-2.4607 -0.0104736 5.08666e-23) -(-2.45051 -0.0126821 5.32048e-23) -(-2.43861 -0.0148507 3.78627e-23) -(-2.42501 -0.0169783 6.20788e-23) -(-2.4097 -0.0190638 3.13805e-23) -(-2.39271 -0.021106 2.85813e-23) -(-2.37402 -0.0231035 1.7756e-23) -(-2.35365 -0.025055 5.30453e-23) -(-2.33161 -0.0269592 4.94755e-23) -(-2.30791 -0.0288146 6.93983e-23) -(-2.28256 -0.0306198 7.78908e-23) -(-2.25557 -0.0323732 1.15718e-22) -(-2.22697 -0.034073 1.54065e-22) -(-2.19678 -0.0357175 1.44972e-22) -(-2.165 -0.0373051 1.00637e-22) -(-2.13168 -0.0388346 9.30076e-23) -(-2.09682 -0.0403049 9.27295e-23) -(-2.06047 -0.041715 1.00553e-22) -(-2.02265 -0.0430642 8.43348e-23) -(-1.98339 -0.0443521 6.68611e-23) -(-1.94272 -0.0455778 8.36693e-23) -(-1.90068 -0.0467405 1.08549e-22) -(-1.8573 -0.047839 1.11537e-22) -(-1.81263 -0.048872 1.00419e-22) -(-1.7667 -0.049839 8.87763e-23) -(-1.71956 -0.0507401 8.69396e-23) -(-1.67125 -0.0515757 7.87717e-23) -(-1.62181 -0.0523467 6.58983e-23) -(-1.5713 -0.0530539 5.76646e-23) -(-1.51975 -0.0536965 8.53752e-23) -(-1.46722 -0.0542735 1.21854e-22) -(-1.41375 -0.0547853 1.29107e-22) -(-1.3594 -0.0552336 1.11412e-22) -(-1.30423 -0.0556213 9.93901e-23) -(-1.24827 -0.05595 1.00635e-22) -(-1.19158 -0.0562183 7.0106e-23) -(-1.13422 -0.0564259 3.42425e-23) -(-1.07623 -0.0565759 2.99604e-24) -(-1.01768 -0.0566761 6.34768e-23) -(-0.958599 -0.0567261 -5.96377e-23) -(-0.899046 -0.0567201 4.47709e-24) -(-0.839076 -0.056663 -4.87615e-23) -(-0.778736 -0.056568 1.0241e-22) -(-0.718062 -0.0564322 9.71834e-23) -(-0.657111 -0.056243 1.625e-22) -(-0.595929 -0.056029 3.49836e-22) -(-0.534537 -0.0557894 2.87353e-22) -(-0.472993 -0.0554933 3.2065e-22) -(-0.411324 -0.0551949 3.14733e-22) -(-0.349564 -0.054878 2.98836e-22) -(-0.287726 -0.0545278 2.09011e-22) -(-0.225851 -0.05419 1.71092e-22) -(-0.163968 -0.0538131 1.75867e-22) -(-0.101981 -0.0534695 -1.09107e-22) -(-0.0402356 -0.0531522 1.36992e-22) -(0.0220633 -0.0527401 4.43645e-22) -(0.0836995 -0.0523017 3.06773e-22) -(0.144965 -0.0519782 3.62562e-22) -(0.206229 -0.0513064 1.00288e-22) -(0.266983 -0.0502153 2.41321e-22) -(0.327571 -0.0492078 -6.17092e-23) -(0.387842 -0.0482989 -5.43458e-23) -(0.447814 -0.0474618 1.93673e-22) -(0.507507 -0.0466707 -8.13858e-23) -(0.566928 -0.0459014 -9.60528e-23) -(0.626059 -0.0451259 -1.71098e-23) -(0.684849 -0.0443051 -1.11676e-23) -(0.743166 -0.0433679 6.96758e-23) -(0.800822 -0.0421995 2.01367e-22) -(0.857257 -0.0405186 9.01331e-23) -(0.912108 -0.0379205 3.82053e-22) -(0.96242 -0.0329362 2.20299e-22) -(1.01112 -0.0238004 4.21779e-22) -(1.03437 -0.00237988 1.03107e-21) -(-0.00272624 -0.029314 1.70456e-22) -(-0.00986795 -0.0117083 1.46647e-22) -(-0.0210465 0.00975143 5.55532e-22) -(-0.0338491 0.0286216 5.01115e-22) -(-0.0479217 0.0450083 4.61825e-22) -(-0.0629897 0.0591329 4.76599e-22) -(-0.0790742 0.0711558 3.39408e-22) -(-0.0962153 0.0812694 8.92055e-23) -(-0.114422 0.0897163 7.87681e-23) -(-0.133658 0.0967824 5.77716e-23) -(-0.153842 0.102734 3.48162e-23) -(-0.174868 0.10777 -1.55992e-22) -(-0.196635 0.112031 -9.55527e-23) -(-0.219051 0.115617 2.70544e-22) -(-0.242038 0.118603 3.08577e-22) -(-0.265526 0.121051 2.01866e-22) -(-0.289458 0.12302 1.97968e-22) -(-0.313782 0.124563 1.36381e-22) -(-0.338451 0.125731 1.12574e-22) -(-0.363427 0.126572 9.77929e-23) -(-0.388673 0.127132 8.57375e-23) -(-0.41416 0.127453 8.11681e-23) -(-0.439861 0.127571 5.22244e-23) -(-0.465752 0.127521 7.42254e-24) -(-0.491817 0.127333 1.13219e-23) -(-0.51804 0.127034 -2.92333e-23) -(-0.544407 0.126647 -2.54608e-23) -(-0.570911 0.126192 -5.71101e-23) -(-0.597543 0.125686 -6.17515e-23) -(-0.6243 0.125142 -5.81527e-23) -(-0.651178 0.124573 1.16279e-23) -(-0.678177 0.123989 9.60563e-24) -(-0.705295 0.123396 3.20993e-23) -(-0.732536 0.122801 2.13094e-23) -(-0.7599 0.122207 1.06247e-22) -(-0.787391 0.121619 8.3633e-23) -(-0.815011 0.121037 1.04414e-22) -(-0.842766 0.120463 9.80702e-23) -(-0.870658 0.119896 5.9475e-23) -(-0.898692 0.119337 7.39825e-23) -(-0.926871 0.118785 1.52661e-22) -(-0.9552 0.118238 1.19647e-22) -(-0.983681 0.117697 1.05192e-22) -(-1.01232 0.117159 1.00263e-22) -(-1.04111 0.116625 3.0778e-23) -(-1.07007 0.116095 -4.18426e-24) -(-1.09918 0.11557 -8.09703e-24) -(-1.12844 0.115053 -1.17975e-22) -(-1.15784 0.114541 -6.57953e-23) -(-1.18737 0.114028 3.74907e-23) -(-1.21702 0.113503 2.0368e-23) -(-1.24677 0.112957 -9.19904e-24) -(-1.27662 0.112384 4.40114e-23) -(-1.30655 0.111778 9.99442e-23) -(-1.33656 0.111133 7.51014e-23) -(-1.36663 0.110445 6.20438e-23) -(-1.39674 0.109709 1.40538e-22) -(-1.42689 0.108923 8.9657e-23) -(-1.45705 0.108082 -7.38013e-23) -(-1.4872 0.107184 -1.13061e-23) -(-1.51733 0.106226 2.50602e-23) -(-1.54742 0.105206 8.21903e-23) -(-1.57744 0.104121 2.65836e-23) -(-1.60737 0.102971 1.34239e-23) -(-1.63719 0.101752 2.10688e-23) -(-1.66688 0.100463 6.71325e-23) -(-1.69641 0.099104 1.72752e-23) -(-1.72575 0.0976722 -2.61933e-23) -(-1.75488 0.0961666 -2.18605e-24) -(-1.78376 0.0945859 -1.6768e-23) -(-1.81237 0.0929288 -6.37115e-23) -(-1.84068 0.0911939 -2.60848e-23) -(-1.86866 0.0893799 9.60708e-23) -(-1.89628 0.0874853 7.30211e-23) -(-1.92349 0.0855084 1.14715e-22) -(-1.95026 0.0834477 5.71353e-23) -(-1.97657 0.0813013 -3.3143e-23) -(-2.00236 0.0790673 1.92888e-23) -(-2.02761 0.0767437 -5.06641e-23) -(-2.05226 0.0743286 -6.92926e-23) -(-2.07628 0.0718201 -4.65684e-23) -(-2.09962 0.0692161 1.13302e-23) -(-2.12223 0.066515 9.92687e-24) -(-2.14407 0.0637152 -1.25062e-23) -(-2.16507 0.0608158 -5.01419e-23) -(-2.1852 0.057816 -5.03276e-23) -(-2.2044 0.0547159 -1.07806e-25) -(-2.22261 0.0515163 -2.43878e-23) -(-2.23977 0.0482189 2.31215e-23) -(-2.25583 0.0448263 8.67311e-23) -(-2.27072 0.0413426 8.34902e-23) -(-2.28441 0.0377726 2.10344e-23) -(-2.29681 0.0341229 -5.46962e-24) -(-2.30789 0.0304008 -1.06664e-22) -(-2.31759 0.0266152 -8.36935e-23) -(-2.32585 0.0227755 -6.26456e-23) -(-2.33263 0.0188919 -5.25209e-24) -(-2.33789 0.0149747 1.88793e-23) -(-2.34159 0.0110331 3.38753e-23) -(-2.34368 0.00707292 7.18876e-23) -(-2.34413 0.00311536 7.73861e-23) -(-2.34296 -0.00080142 8.77365e-23) -(-2.34014 -0.00465786 -4.1459e-24) -(-2.33568 -0.00845352 4.54169e-23) -(-2.32957 -0.012188 4.59151e-24) -(-2.3218 -0.0158604 1.1029e-23) -(-2.31237 -0.0194693 3.65182e-24) -(-2.30129 -0.0230129 5.65232e-23) -(-2.28856 -0.0264895 3.3001e-23) -(-2.27417 -0.0298971 1.21322e-22) -(-2.25813 -0.0332339 1.27148e-22) -(-2.24044 -0.0364978 1.54721e-22) -(-2.22111 -0.0396865 1.31314e-22) -(-2.20015 -0.042798 8.44244e-23) -(-2.17756 -0.0458301 4.16902e-23) -(-2.15336 -0.0487804 4.12223e-23) -(-2.12755 -0.0516465 1.05284e-22) -(-2.10016 -0.0544259 1.26178e-22) -(-2.0712 -0.0571157 1.06868e-22) -(-2.04068 -0.059713 1.13159e-22) -(-2.00863 -0.0622154 1.01517e-22) -(-1.97507 -0.0646206 1.01035e-22) -(-1.94002 -0.0669268 9.89604e-23) -(-1.90352 -0.0691325 7.9715e-23) -(-1.86558 -0.0712365 6.91925e-23) -(-1.82625 -0.073238 8.90119e-23) -(-1.78554 -0.075136 9.35902e-23) -(-1.7435 -0.0769292 5.36847e-23) -(-1.70017 -0.0786156 6.6684e-23) -(-1.65556 -0.0801932 9.35207e-23) -(-1.60974 -0.081661 1.03627e-22) -(-1.56274 -0.0830188 1.14052e-22) -(-1.51459 -0.0842676 8.09224e-23) -(-1.46536 -0.0854089 6.38081e-23) -(-1.41507 -0.0864442 5.42241e-23) -(-1.36378 -0.0873727 6.63193e-23) -(-1.31153 -0.0881922 5.09439e-23) -(-1.25838 -0.0889033 6.49912e-23) -(-1.20436 -0.0895088 1.07612e-22) -(-1.14954 -0.0900135 5.34501e-23) -(-1.09396 -0.0904204 -1.22125e-23) -(-1.03767 -0.0907275 -3.2499e-23) -(-0.980727 -0.0909338 8.78649e-23) -(-0.923178 -0.091044 6.31794e-23) -(-0.865075 -0.0910707 -2.29479e-23) -(-0.806462 -0.0910145 -3.89018e-23) -(-0.747388 -0.090866 2.03169e-24) -(-0.687911 -0.0906319 -2.24377e-24) -(-0.628075 -0.0903334 1.33416e-22) -(-0.567914 -0.0899672 2.85173e-22) -(-0.507483 -0.0895136 2.87361e-22) -(-0.446826 -0.0890146 2.37885e-22) -(-0.385969 -0.0884721 5.33615e-22) -(-0.324961 -0.0878431 3.45811e-22) -(-0.263818 -0.087197 3.57415e-22) -(-0.202608 -0.086521 2.67921e-22) -(-0.141289 -0.0857908 1.88384e-22) -(-0.0799544 -0.0850686 2.32553e-22) -(-0.0186135 -0.0843128 2.68218e-22) -(0.0429189 -0.0835151 1.20408e-22) -(0.103979 -0.0827294 7.14622e-23) -(0.165033 -0.0818338 2.05311e-22) -(0.225806 -0.0808431 2.7217e-22) -(0.28631 -0.0799356 4.18842e-22) -(0.346584 -0.0788574 5.2128e-23) -(0.406654 -0.0775632 3.22616e-22) -(0.46662 -0.0763217 -1.47655e-22) -(0.526362 -0.075158 -1.46444e-22) -(0.585868 -0.0740579 -3.26119e-23) -(0.645133 -0.0729979 -1.85779e-22) -(0.704151 -0.0719493 -1.20233e-22) -(0.762897 -0.0708737 4.22988e-24) -(0.821317 -0.0697126 1.36163e-22) -(0.879288 -0.068363 2.71498e-23) -(0.936644 -0.0666539 8.72474e-23) -(0.992921 -0.0642186 8.30245e-23) -(1.04793 -0.0605025 -2.4785e-22) -(1.09952 -0.0539431 1.12066e-22) -(1.15135 -0.0428227 4.91217e-22) -(1.18915 -0.0208701 1.10019e-21) -(-0.0077507 -0.0104564 7.20807e-22) -(-0.0205681 0.0170722 1.00827e-21) -(-0.0351016 0.0402864 8.07682e-22) -(-0.0508125 0.0600958 8.20357e-22) -(-0.0670827 0.0774835 5.68255e-22) -(-0.083685 0.0927669 4.73578e-22) -(-0.100714 0.106085 2.87597e-22) -(-0.118281 0.117562 3.07597e-22) -(-0.136453 0.127364 2.27653e-22) -(-0.155249 0.135695 1.97614e-22) -(-0.174647 0.14276 1.94102e-22) -(-0.194603 0.148739 2.10963e-22) -(-0.215063 0.15378 5.16124e-23) -(-0.235976 0.157998 -7.80036e-23) -(-0.257293 0.161491 -1.15408e-22) -(-0.278972 0.164339 7.63638e-23) -(-0.300978 0.166617 1.49453e-22) -(-0.32328 0.16839 1.67207e-22) -(-0.345848 0.16972 1.68473e-22) -(-0.368661 0.170665 1.58707e-22) -(-0.391697 0.171279 1.25388e-22) -(-0.414938 0.171608 2.3126e-22) -(-0.438368 0.1717 1.84383e-22) -(-0.461974 0.171592 1.67846e-22) -(-0.485745 0.171322 1.53773e-22) -(-0.509672 0.170921 1.52769e-22) -(-0.533748 0.170415 2.60939e-23) -(-0.557967 0.16983 4.96017e-23) -(-0.582326 0.169186 8.39927e-23) -(-0.606822 0.168499 1.65451e-22) -(-0.631455 0.167784 1.72493e-22) -(-0.656224 0.167053 1.55622e-22) -(-0.681129 0.166315 1.30584e-22) -(-0.706174 0.165576 1.5677e-22) -(-0.731359 0.164843 2.15519e-22) -(-0.756687 0.164118 2.1202e-22) -(-0.782162 0.163405 1.6588e-22) -(-0.807785 0.162703 1.66115e-22) -(-0.833561 0.162014 2.0003e-22) -(-0.859491 0.161336 1.2027e-22) -(-0.885579 0.160667 1.00954e-22) -(-0.911825 0.160007 9.3561e-23) -(-0.938231 0.159353 1.13671e-22) -(-0.964798 0.158702 -3.49326e-24) -(-0.991525 0.158052 -2.3089e-23) -(-1.01841 0.157401 -8.35578e-23) -(-1.04545 0.156746 -1.90492e-23) -(-1.07263 0.156085 -1.19051e-23) -(-1.09995 0.155413 -5.46919e-23) -(-1.12739 0.154722 -3.24629e-23) -(-1.15495 0.154005 5.17725e-23) -(-1.18261 0.153253 1.31719e-23) -(-1.21036 0.152458 -6.82873e-23) -(-1.2382 0.151614 -4.23078e-23) -(-1.2661 0.150715 1.6559e-24) -(-1.29406 0.149755 1.19205e-23) -(-1.32206 0.148728 1.07123e-23) -(-1.35008 0.147631 -2.62414e-23) -(-1.37811 0.146458 8.88837e-23) -(-1.40613 0.145207 -5.02428e-24) -(-1.43413 0.143874 -9.07249e-23) -(-1.46208 0.142455 -1.08276e-22) -(-1.48995 0.140948 -4.94163e-23) -(-1.51774 0.139351 -3.50887e-23) -(-1.54542 0.137661 -7.34653e-23) -(-1.57296 0.135876 -1.02275e-22) -(-1.60034 0.133994 3.03996e-23) -(-1.62753 0.132014 4.73561e-24) -(-1.65452 0.129934 8.97889e-23) -(-1.68127 0.127752 5.50094e-23) -(-1.70775 0.125466 4.38087e-23) -(-1.73394 0.123075 7.75571e-23) -(-1.75981 0.120576 3.15851e-23) -(-1.78532 0.117969 3.96526e-24) -(-1.81045 0.11525 -3.36731e-23) -(-1.83515 0.112417 -1.17812e-22) -(-1.85941 0.109468 -8.97224e-23) -(-1.88317 0.1064 -1.15363e-22) -(-1.90641 0.103211 -1.22448e-23) -(-1.92908 0.0998967 8.62626e-23) -(-1.95114 0.096455 1.28038e-22) -(-1.97256 0.0928829 1.13609e-22) -(-1.99328 0.0891778 3.79619e-23) -(-2.01326 0.0853372 -5.37719e-23) -(-2.03244 0.0813593 2.33157e-23) -(-2.05079 0.0772429 1.20192e-23) -(-2.06824 0.0729875 5.4843e-23) -(-2.08475 0.0685939 1.09629e-23) -(-2.10025 0.064064 8.61572e-24) -(-2.11469 0.0594012 2.28865e-23) -(-2.12802 0.0546104 -4.04198e-25) -(-2.14017 0.0496984 -4.32211e-24) -(-2.1511 0.0446737 6.48499e-23) -(-2.16073 0.0395466 -6.68515e-24) -(-2.16904 0.0343291 -1.50026e-23) -(-2.17595 0.0290345 -2.6683e-23) -(-2.18142 0.0236773 -4.48998e-23) -(-2.18542 0.0182721 -1.89476e-23) -(-2.1879 0.0128327 -4.78483e-24) -(-2.18882 0.00736973 -2.97801e-23) -(-2.18816 0.00192468 -8.2657e-23) -(-2.18593 -0.00345535 -5.38238e-24) -(-2.18212 -0.00875754 1.57918e-22) -(-2.17672 -0.0139777 1.7143e-22) -(-2.16973 -0.0191142 1.60602e-22) -(-2.16114 -0.0241653 1.15197e-22) -(-2.15095 -0.0291287 1.58108e-22) -(-2.13916 -0.0340023 1.30836e-22) -(-2.12578 -0.0387835 1.55389e-22) -(-2.11079 -0.0434696 9.35027e-23) -(-2.09421 -0.048058 8.42541e-23) -(-2.07604 -0.0525456 8.65221e-24) -(-2.05629 -0.0569296 8.60119e-23) -(-2.03495 -0.061207 4.8379e-23) -(-2.01204 -0.0653746 1.08448e-22) -(-1.98758 -0.0694293 1.53162e-22) -(-1.96156 -0.0733678 1.16197e-22) -(-1.93401 -0.0771867 1.13819e-22) -(-1.90494 -0.080882 1.31723e-22) -(-1.87436 -0.0844495 8.66189e-23) -(-1.84231 -0.0878858 7.57223e-23) -(-1.80879 -0.0911877 1.12603e-22) -(-1.77384 -0.0943525 1.00903e-22) -(-1.73747 -0.0973783 9.82366e-23) -(-1.69972 -0.100263 7.21483e-23) -(-1.66062 -0.103006 7.26199e-23) -(-1.6202 -0.105606 9.18938e-23) -(-1.57848 -0.108062 8.94385e-23) -(-1.5355 -0.110369 5.43804e-23) -(-1.49131 -0.112526 6.28511e-23) -(-1.44593 -0.114531 9.36889e-23) -(-1.39941 -0.116384 1.09306e-22) -(-1.35179 -0.118085 1.12011e-22) -(-1.30311 -0.119637 8.84438e-23) -(-1.25342 -0.121043 8.4851e-23) -(-1.20275 -0.122301 7.09296e-23) -(-1.15116 -0.123408 7.41099e-23) -(-1.09869 -0.124365 6.45924e-23) -(-1.04539 -0.125175 1.2262e-22) -(-0.991318 -0.125845 6.94086e-23) -(-0.936511 -0.12638 4.3893e-23) -(-0.881016 -0.126778 1.05724e-23) -(-0.824885 -0.127036 1.61703e-23) -(-0.768174 -0.127158 4.7285e-23) -(-0.710931 -0.127166 3.95205e-23) -(-0.653196 -0.12706 -5.64956e-23) -(-0.595014 -0.126826 2.18199e-23) -(-0.536445 -0.126473 9.6783e-23) -(-0.47753 -0.12603 1.09228e-22) -(-0.418304 -0.125496 2.63668e-22) -(-0.358817 -0.12484 2.34487e-22) -(-0.299105 -0.124119 2.10906e-22) -(-0.239212 -0.123339 2.94804e-22) -(-0.179174 -0.122448 3.22653e-22) -(-0.118967 -0.121522 4.04927e-22) -(-0.058759 -0.120568 2.50208e-22) -(0.00162849 -0.119532 1.52973e-22) -(0.0619751 -0.118455 2.62452e-22) -(0.12214 -0.117345 3.63857e-22) -(0.182271 -0.116151 4.30519e-22) -(0.242163 -0.114916 4.10886e-22) -(0.301924 -0.113611 3.04226e-22) -(0.361506 -0.112223 2.46264e-22) -(0.420873 -0.110877 1.18613e-22) -(0.480003 -0.109407 3.15879e-22) -(0.539003 -0.107782 8.61453e-23) -(0.597922 -0.106185 1.14861e-22) -(0.656676 -0.104649 -2.04345e-22) -(0.715241 -0.103171 -3.39371e-22) -(0.773603 -0.101731 -3.13704e-22) -(0.831746 -0.100296 -1.36281e-22) -(0.889644 -0.0988196 4.66517e-23) -(0.947246 -0.0972238 -2.17151e-22) -(1.00445 -0.0953777 -6.62583e-23) -(1.06111 -0.0930648 4.15029e-23) -(1.11688 -0.0898655 9.5475e-23) -(1.17175 -0.085143 2.54098e-22) -(1.22415 -0.0774273 1.64969e-22) -(1.27815 -0.0652367 6.11346e-22) -(1.323 -0.0443085 8.33207e-22) -(-0.0104971 0.0207214 1.72452e-21) -(-0.0257611 0.0529842 1.13583e-21) -(-0.0422267 0.0763487 3.67507e-22) -(-0.059659 0.095825 2.11206e-22) -(-0.0772602 0.113006 2.5844e-22) -(-0.0947707 0.128321 1.69927e-22) -(-0.112294 0.141905 2.6908e-22) -(-0.129962 0.153828 2.94936e-22) -(-0.147871 0.164185 2.92517e-22) -(-0.166073 0.173101 2.96273e-22) -(-0.184592 0.180725 3.13244e-22) -(-0.203426 0.1872 3.41773e-22) -(-0.222563 0.192661 3.76525e-22) -(-0.241983 0.197225 3.3331e-22) -(-0.261665 0.200993 3.22866e-22) -(-0.281591 0.204057 1.60135e-22) -(-0.301742 0.206498 2.22072e-22) -(-0.322105 0.208389 2.52784e-22) -(-0.342667 0.209798 2.91316e-22) -(-0.363416 0.210788 3.56803e-22) -(-0.384343 0.211418 3.22753e-22) -(-0.40544 0.211739 2.2516e-22) -(-0.426699 0.2118 2.7648e-22) -(-0.448116 0.211645 3.66921e-22) -(-0.469685 0.211313 2.99259e-22) -(-0.491402 0.210837 3.30765e-22) -(-0.513266 0.210249 2.09102e-22) -(-0.535274 0.209574 7.73135e-23) -(-0.557425 0.208835 -3.17241e-23) -(-0.57972 0.208051 5.9312e-23) -(-0.602158 0.207238 -6.03951e-23) -(-0.624741 0.206408 -1.08222e-22) -(-0.64747 0.205572 3.53744e-23) -(-0.670348 0.204737 1.06141e-22) -(-0.693377 0.20391 6.82168e-23) -(-0.716558 0.203095 9.81003e-23) -(-0.739894 0.202292 1.02304e-22) -(-0.763388 0.201505 1.20704e-22) -(-0.78704 0.200731 2.05376e-24) -(-0.810854 0.199969 3.5193e-23) -(-0.834828 0.199218 4.07985e-23) -(-0.858965 0.198475 1.32439e-23) -(-0.883263 0.197735 -4.2342e-23) -(-0.907721 0.196995 2.16828e-23) -(-0.932336 0.196251 9.53219e-23) -(-0.957104 0.195498 8.37726e-23) -(-0.98202 0.19473 -1.44987e-22) -(-1.00707 0.193944 -6.64193e-23) -(-1.03226 0.193131 1.30437e-23) -(-1.05757 0.192284 -3.27622e-23) -(-1.08298 0.191395 -9.42871e-23) -(-1.1085 0.190455 -8.03412e-23) -(-1.1341 0.189456 3.15248e-23) -(-1.15978 0.188392 2.85024e-24) -(-1.18552 0.187255 -3.71271e-24) -(-1.21131 0.186039 -1.68814e-23) -(-1.23713 0.184738 -3.3894e-23) -(-1.26298 0.183345 -3.84788e-23) -(-1.28882 0.181858 -5.95068e-23) -(-1.31465 0.18027 -1.29602e-23) -(-1.34044 0.178578 6.32215e-23) -(-1.36618 0.176778 -4.80829e-23) -(-1.39185 0.174867 -2.50137e-23) -(-1.41742 0.172843 9.54088e-24) -(-1.44288 0.170702 1.16268e-22) -(-1.4682 0.168442 1.01687e-22) -(-1.49336 0.16606 1.43971e-23) -(-1.51833 0.163556 7.44108e-23) -(-1.5431 0.160926 1.02263e-22) -(-1.56762 0.158169 5.69229e-23) -(-1.59189 0.155283 7.41696e-23) -(-1.61587 0.152266 2.89943e-23) -(-1.63954 0.149115 -5.12805e-23) -(-1.66286 0.145828 1.85324e-24) -(-1.6858 0.142403 -4.04718e-23) -(-1.70834 0.138836 -1.5618e-22) -(-1.73045 0.135125 -9.29134e-23) -(-1.75208 0.131265 -6.65137e-24) -(-1.77321 0.127253 3.97424e-23) -(-1.79379 0.123086 3.03049e-23) -(-1.8138 0.118759 1.07652e-22) -(-1.83318 0.114268 7.73979e-23) -(-1.8519 0.10961 4.83701e-23) -(-1.86991 0.104781 1.18956e-22) -(-1.88717 0.099778 6.79811e-23) -(-1.90363 0.0945993 2.54483e-24) -(-1.91923 0.0892437 -1.49966e-22) -(-1.93392 0.0837114 -8.88066e-23) -(-1.94766 0.0780043 -3.49493e-23) -(-1.96038 0.0721262 -1.60534e-23) -(-1.97203 0.0660828 4.91931e-23) -(-1.98256 0.0598823 1.35002e-22) -(-1.9919 0.0535353 -7.74254e-24) -(-2 0.0470547 9.49233e-23) -(-2.00681 0.0404557 5.29648e-23) -(-2.01228 0.0337555 1.25631e-22) -(-2.01637 0.026973 4.41832e-23) -(-2.01902 0.0201273 -8.84411e-24) -(-2.0202 0.0132367 -2.37594e-23) -(-2.01986 0.00632729 -3.19595e-23) -(-2.01804 -0.000544305 3.66695e-23) -(-2.0147 -0.00733128 -1.08567e-23) -(-2.00984 -0.014022 3.12959e-24) -(-2.00346 -0.0206108 4.26088e-24) -(-1.99556 -0.0270949 6.47273e-23) -(-1.98612 -0.0334715 9.9577e-23) -(-1.97515 -0.0397379 1.61423e-22) -(-1.96265 -0.0458911 1.33711e-22) -(-1.94861 -0.051928 1.1437e-22) -(-1.93303 -0.0578451 1.36489e-22) -(-1.91593 -0.0636388 8.21108e-23) -(-1.8973 -0.0693054 8.83762e-23) -(-1.87714 -0.074841 7.51856e-23) -(-1.85548 -0.0802419 4.64794e-23) -(-1.8323 -0.0855041 8.89588e-23) -(-1.80762 -0.0906236 2.10738e-22) -(-1.78146 -0.0955965 2.01545e-22) -(-1.75382 -0.100418 1.33765e-22) -(-1.72473 -0.105084 1.67724e-22) -(-1.69419 -0.109588 1.23698e-22) -(-1.66222 -0.113926 1.06404e-22) -(-1.62886 -0.118094 9.15014e-23) -(-1.59411 -0.122088 9.67507e-23) -(-1.55801 -0.125906 4.1488e-23) -(-1.52058 -0.129545 5.91503e-23) -(-1.48185 -0.133004 8.0332e-23) -(-1.44185 -0.136282 1.14138e-22) -(-1.40061 -0.139377 9.76842e-23) -(-1.35816 -0.142286 5.5149e-23) -(-1.31454 -0.145004 6.06294e-23) -(-1.26979 -0.147528 9.5857e-23) -(-1.22393 -0.149859 1.3153e-22) -(-1.17703 -0.151998 1.09918e-22) -(-1.1291 -0.153947 7.29142e-23) -(-1.08021 -0.155711 7.4479e-23) -(-1.03038 -0.157289 5.20139e-23) -(-0.979665 -0.158676 5.77328e-23) -(-0.928106 -0.159871 1.30892e-22) -(-0.875755 -0.160878 4.69446e-23) -(-0.82266 -0.161709 1.11279e-22) -(-0.768862 -0.16237 1.03848e-22) -(-0.714407 -0.162857 1.07792e-22) -(-0.65934 -0.163165 2.64779e-23) -(-0.603721 -0.163301 1.4594e-23) -(-0.547592 -0.163291 -3.58973e-23) -(-0.490995 -0.163141 7.58853e-23) -(-0.433969 -0.162827 -8.74857e-24) -(-0.376575 -0.162359 -3.68845e-23) -(-0.318846 -0.161779 4.36996e-23) -(-0.26083 -0.161086 7.73102e-23) -(-0.202566 -0.160242 2.06957e-22) -(-0.144057 -0.159309 1.58989e-22) -(-0.0854167 -0.158303 1.50192e-22) -(-0.0266469 -0.157184 2.71874e-22) -(0.0323905 -0.155976 2.34599e-22) -(0.0912557 -0.154708 2.31061e-22) -(0.15015 -0.153358 3.6457e-22) -(0.208985 -0.151919 1.36269e-23) -(0.267705 -0.150425 4.24476e-22) -(0.326332 -0.148852 3.64524e-22) -(0.384798 -0.147224 3.48471e-22) -(0.443117 -0.145528 3.54665e-22) -(0.501289 -0.143759 2.31742e-22) -(0.559283 -0.141997 1.7173e-22) -(0.617073 -0.140143 2.65916e-22) -(0.674756 -0.138177 1.96195e-22) -(0.732366 -0.136225 3.23918e-23) -(0.789848 -0.134318 -3.31937e-22) -(0.847182 -0.132463 -2.58898e-22) -(0.904347 -0.130642 -5.15337e-23) -(0.96133 -0.128822 -8.63067e-23) -(1.0181 -0.126945 -2.05017e-22) -(1.07462 -0.124921 -2.25147e-22) -(1.13081 -0.122598 -8.4203e-23) -(1.18656 -0.119731 3.60994e-23) -(1.24163 -0.115879 1.15994e-22) -(1.29616 -0.110393 2.86464e-22) -(1.34898 -0.101985 8.11667e-23) -(1.40435 -0.0895247 7.99285e-22) -(1.45276 -0.0701408 9.12955e-22) -(-0.0111874 0.054898 -4.99037e-22) -(-0.0274722 0.0922094 1.86481e-22) -(-0.0448706 0.115259 8.7416e-22) -(-0.0630759 0.133795 5.89093e-22) -(-0.0812473 0.150102 4.63138e-22) -(-0.099085 0.16476 4.22409e-22) -(-0.11667 0.177922 4.78125e-22) -(-0.134126 0.189633 3.85245e-22) -(-0.151555 0.199936 3.57062e-22) -(-0.169028 0.2089 3.64522e-22) -(-0.186593 0.216621 3.98203e-22) -(-0.204277 0.223208 4.50715e-22) -(-0.222095 0.228772 2.04921e-22) -(-0.240052 0.23342 -8.34453e-23) -(-0.258148 0.237252 -5.38258e-23) -(-0.276384 0.240359 2.49393e-22) -(-0.294756 0.242823 3.64307e-22) -(-0.313264 0.244721 2.7386e-22) -(-0.331906 0.246123 2.64374e-22) -(-0.350682 0.247095 3.03437e-22) -(-0.36959 0.247695 2.64696e-22) -(-0.388631 0.247979 2.85593e-22) -(-0.407805 0.247995 1.56183e-22) -(-0.427112 0.247789 6.04368e-23) -(-0.446554 0.247402 1.43807e-22) -(-0.46613 0.246867 1.6549e-22) -(-0.485843 0.246217 1.62189e-22) -(-0.505694 0.24548 1.85958e-22) -(-0.525685 0.244678 8.9505e-23) -(-0.545818 0.243831 -1.53762e-22) -(-0.566094 0.242955 -7.7092e-23) -(-0.586517 0.242064 9.71711e-23) -(-0.607089 0.241169 5.57791e-23) -(-0.627812 0.240277 -1.16137e-23) -(-0.648688 0.239395 4.0966e-23) -(-0.66972 0.238525 4.62856e-23) -(-0.690909 0.237669 7.94165e-24) -(-0.712258 0.236829 -1.02711e-22) -(-0.733766 0.236003 -1.97374e-24) -(-0.755436 0.235188 3.53229e-23) -(-0.777265 0.234382 8.50774e-23) -(-0.799254 0.23358 3.41286e-23) -(-0.821401 0.232777 3.93321e-24) -(-0.843703 0.231968 -6.99179e-24) -(-0.866156 0.231147 -2.85464e-23) -(-0.888754 0.230307 -9.99582e-23) -(-0.911492 0.229442 -9.26761e-23) -(-0.934361 0.228544 -1.02847e-22) -(-0.957353 0.227606 -7.16429e-23) -(-0.980457 0.226618 -6.56833e-24) -(-1.00366 0.225572 -2.51141e-24) -(-1.02696 0.224459 7.78318e-24) -(-1.05034 0.223271 3.87483e-23) -(-1.07378 0.222 -2.28854e-23) -(-1.09727 0.220639 1.31677e-23) -(-1.12081 0.219179 -1.8235e-23) -(-1.14436 0.217615 -8.5065e-23) -(-1.16793 0.21594 -4.56554e-23) -(-1.19149 0.214149 -1.87883e-23) -(-1.21502 0.212238 -2.41274e-23) -(-1.23851 0.2102 -5.9701e-23) -(-1.26193 0.208033 -7.25469e-24) -(-1.28527 0.205732 -1.91725e-23) -(-1.30851 0.203295 -8.07044e-23) -(-1.33163 0.200719 -5.43102e-23) -(-1.3546 0.198 4.98352e-23) -(-1.3774 0.195137 5.97187e-24) -(-1.40001 0.192128 -3.60252e-23) -(-1.42241 0.18897 -4.98174e-23) -(-1.44458 0.185661 -3.74486e-23) -(-1.46648 0.182199 -1.95179e-23) -(-1.48809 0.178582 1.17025e-23) -(-1.50939 0.174807 -2.97628e-23) -(-1.53036 0.170872 -2.03376e-22) -(-1.55095 0.166773 -2.3767e-22) -(-1.57115 0.162507 -8.20379e-23) -(-1.59093 0.158071 -7.41238e-23) -(-1.61025 0.153459 -7.69262e-23) -(-1.62908 0.148668 -9.61728e-23) -(-1.6474 0.143693 -1.44386e-22) -(-1.66515 0.138528 -1.10777e-22) -(-1.68231 0.133168 -1.94123e-22) -(-1.69884 0.127609 -6.21415e-23) -(-1.71469 0.121846 7.73175e-23) -(-1.72982 0.115874 8.4319e-23) -(-1.74419 0.109691 3.29444e-23) -(-1.75775 0.103294 5.77501e-23) -(-1.77044 0.0966827 -3.86094e-23) -(-1.78221 0.0898591 -5.59518e-23) -(-1.79302 0.0828266 -6.52895e-23) -(-1.8028 0.0755916 -1.16999e-22) -(-1.81151 0.0681636 -1.57593e-22) -(-1.81907 0.0605548 -9.65154e-23) -(-1.82545 0.0527809 -1.05154e-22) -(-1.83059 0.0448604 -4.54112e-23) -(-1.83444 0.0368148 -5.19661e-23) -(-1.83695 0.0286674 -2.6634e-23) -(-1.83809 0.0204417 -2.10332e-23) -(-1.83781 0.0121577 -3.95415e-23) -(-1.83606 0.00387012 -6.39066e-23) -(-1.83291 -0.00434969 -1.9404e-23) -(-1.82832 -0.0124694 -2.83227e-23) -(-1.8223 -0.0204753 6.96643e-23) -(-1.81482 -0.0283609 3.84e-23) -(-1.80589 -0.036122 5.34265e-23) -(-1.79551 -0.0437552 9.39139e-23) -(-1.78367 -0.0512568 8.03757e-23) -(-1.77037 -0.0586232 7.8705e-23) -(-1.75561 -0.0658504 9.78887e-23) -(-1.73939 -0.0729342 5.68214e-23) -(-1.72171 -0.0798703 1.16282e-22) -(-1.70258 -0.086654 1.77248e-22) -(-1.682 -0.0932807 1.46772e-22) -(-1.65998 -0.0997457 1.45682e-22) -(-1.63652 -0.106044 1.66882e-22) -(-1.61164 -0.112172 1.14911e-22) -(-1.58534 -0.118124 1.05223e-22) -(-1.55763 -0.123894 1.15222e-22) -(-1.52854 -0.129478 1.23134e-22) -(-1.49807 -0.134868 4.91451e-23) -(-1.46625 -0.140058 1.03318e-22) -(-1.43309 -0.145044 1.05953e-22) -(-1.39862 -0.14982 7.30728e-23) -(-1.36286 -0.154385 1.03083e-22) -(-1.32584 -0.158735 1.27793e-22) -(-1.28757 -0.162868 8.15109e-23) -(-1.24811 -0.166784 7.12361e-23) -(-1.20746 -0.170481 8.25173e-23) -(-1.16566 -0.173954 8.03056e-23) -(-1.12274 -0.177197 8.54817e-23) -(-1.07874 -0.180208 1.08042e-22) -(-1.03371 -0.182985 7.96216e-23) -(-0.987663 -0.185531 8.05637e-23) -(-0.940659 -0.187847 8.92055e-23) -(-0.892731 -0.189944 8.31121e-23) -(-0.843915 -0.191818 1.01965e-22) -(-0.794254 -0.19346 1.28595e-22) -(-0.743793 -0.194871 1.33338e-22) -(-0.692581 -0.196056 1.48161e-22) -(-0.640663 -0.197028 1.06854e-22) -(-0.58808 -0.197798 1.18289e-22) -(-0.534873 -0.19836 8.81333e-23) -(-0.481087 -0.198706 3.74566e-23) -(-0.426777 -0.198841 2.83064e-23) -(-0.371981 -0.198804 -1.38146e-23) -(-0.31675 -0.198599 5.69392e-23) -(-0.261114 -0.198198 -3.07248e-23) -(-0.205128 -0.197612 -1.52769e-22) -(-0.148807 -0.196889 1.5035e-23) -(-0.0922488 -0.196032 1.00769e-22) -(-0.0354668 -0.195016 2.04105e-22) -(0.0216416 -0.193862 1.10392e-22) -(0.078754 -0.192592 1.96567e-22) -(0.135934 -0.191222 5.43027e-23) -(0.193206 -0.189721 2.99904e-22) -(0.250435 -0.188111 4.1099e-22) -(0.307647 -0.186422 3.99201e-22) -(0.364798 -0.184633 3.6919e-22) -(0.421856 -0.182774 1.29501e-22) -(0.478812 -0.180832 2.82348e-22) -(0.535636 -0.178824 2.95356e-22) -(0.592323 -0.176752 4.06562e-22) -(0.648879 -0.174613 1.95787e-22) -(0.705285 -0.172463 1.69215e-22) -(0.761524 -0.170243 2.75937e-22) -(0.817669 -0.167948 2.77047e-22) -(0.873745 -0.165659 -4.30624e-23) -(0.929723 -0.163407 2.45889e-23) -(0.985586 -0.1612 -1.58754e-22) -(1.04132 -0.159024 -8.23051e-23) -(1.0969 -0.156841 -7.2849e-23) -(1.15233 -0.154591 -1.17956e-22) -(1.20755 -0.152174 -2.33193e-22) -(1.26252 -0.149424 -7.30788e-23) -(1.31718 -0.146084 5.8712e-23) -(1.37135 -0.141716 1.43504e-22) -(1.42534 -0.135706 3.58975e-22) -(1.47821 -0.126968 5.38221e-22) -(1.53428 -0.114704 5.56373e-22) -(1.58433 -0.0969396 1.02938e-21) -(-0.0110738 0.090648 -1.4926e-22) -(-0.0274371 0.132469 -2.08057e-22) -(-0.0448915 0.154997 6.73726e-22) -(-0.0630742 0.172346 8.18031e-22) -(-0.0811423 0.187453 5.18817e-22) -(-0.0987658 0.201063 3.72083e-22) -(-0.11599 0.213376 2.58539e-22) -(-0.132918 0.224436 3.11831e-22) -(-0.149639 0.234258 3.13175e-22) -(-0.166226 0.242875 3.25923e-22) -(-0.182738 0.250343 3.90523e-22) -(-0.199218 0.256738 2.24697e-22) -(-0.215696 0.26215 4.65412e-22) -(-0.232195 0.266669 5.56259e-22) -(-0.24873 0.270386 3.6267e-22) -(-0.265313 0.273387 1.4115e-22) -(-0.281955 0.275753 -1.60186e-23) -(-0.298663 0.277559 3.70473e-23) -(-0.315446 0.278875 2.46222e-23) -(-0.332311 0.279765 -5.60096e-23) -(-0.349264 0.280289 -1.16238e-23) -(-0.366312 0.280501 -6.97429e-23) -(-0.383461 0.28045 -1.02013e-23) -(-0.400716 0.280181 1.74252e-23) -(-0.418083 0.279733 1.00766e-22) -(-0.435567 0.279143 3.52274e-23) -(-0.453172 0.278442 2.65527e-23) -(-0.470904 0.277656 -7.91541e-24) -(-0.488765 0.276809 8.10312e-23) -(-0.506761 0.27592 1.30838e-22) -(-0.524895 0.275006 2.30013e-22) -(-0.543171 0.27408 2.44193e-22) -(-0.561592 0.273151 1.75584e-22) -(-0.58016 0.272229 1.53647e-22) -(-0.598879 0.271317 1.47662e-22) -(-0.61775 0.270418 1.46384e-22) -(-0.636776 0.269535 1.49487e-22) -(-0.655956 0.268666 1.77503e-22) -(-0.675292 0.26781 1.45561e-22) -(-0.694784 0.266962 -1.15587e-23) -(-0.714429 0.266119 -8.48424e-23) -(-0.734227 0.265276 1.48577e-23) -(-0.754174 0.264425 2.29544e-23) -(-0.774266 0.263561 9.63645e-24) -(-0.794499 0.262675 -5.61991e-24) -(-0.814866 0.26176 1.66597e-25) -(-0.83536 0.260807 1.13254e-23) -(-0.855974 0.259808 1.09336e-22) -(-0.876697 0.258754 1.39995e-22) -(-0.89752 0.257634 1.54605e-22) -(-0.918432 0.256441 6.90043e-23) -(-0.93942 0.255164 5.49428e-23) -(-0.960474 0.253795 -9.7368e-23) -(-0.981579 0.252325 6.79871e-23) -(-1.00272 0.250745 -9.65682e-23) -(-1.02389 0.249049 1.28191e-23) -(-1.04506 0.247229 -3.43662e-23) -(-1.06623 0.245278 -1.81081e-23) -(-1.08737 0.243191 6.14906e-23) -(-1.10848 0.240961 4.44546e-24) -(-1.12952 0.238585 -2.95388e-23) -(-1.15048 0.236058 -8.44173e-23) -(-1.17135 0.233375 -8.91968e-24) -(-1.19209 0.230535 1.37126e-22) -(-1.2127 0.227532 1.42815e-24) -(-1.23316 0.224366 -1.82088e-22) -(-1.25343 0.221034 -6.62923e-23) -(-1.2735 0.217533 -1.631e-22) -(-1.29335 0.213862 -2.33309e-22) -(-1.31296 0.210018 -1.48639e-22) -(-1.33229 0.205999 -7.85402e-23) -(-1.35134 0.201803 -2.12871e-22) -(-1.37007 0.197427 -2.83445e-22) -(-1.38846 0.192869 -2.94504e-22) -(-1.40649 0.188125 -2.04844e-22) -(-1.42412 0.183191 -1.48347e-22) -(-1.44134 0.178063 -1.34205e-22) -(-1.45812 0.172736 -1.14522e-22) -(-1.47442 0.167205 -2.26645e-22) -(-1.49022 0.161464 -9.80448e-23) -(-1.50548 0.155506 -2.00266e-22) -(-1.52017 0.149326 -1.12701e-22) -(-1.53426 0.142916 -3.52411e-23) -(-1.5477 0.136272 -6.06301e-23) -(-1.56045 0.129387 -1.12729e-22) -(-1.57248 0.122257 -2.40348e-22) -(-1.58374 0.114878 -2.31622e-22) -(-1.59417 0.107249 -2.22547e-22) -(-1.60373 0.0993704 -8.17577e-23) -(-1.61238 0.0912461 -1.15874e-22) -(-1.62004 0.0828826 -1.46067e-22) -(-1.62668 0.0742902 3.05214e-23) -(-1.63223 0.0654829 -3.33226e-23) -(-1.63664 0.0564788 -1.39522e-22) -(-1.63987 0.0472999 -7.18916e-23) -(-1.64186 0.0379719 -2.87317e-23) -(-1.64257 0.0285228 2.30455e-24) -(-1.64196 0.0189804 -1.25789e-25) -(-1.63997 0.00937638 -1.04368e-22) -(-1.63665 -0.00020553 2.20691e-23) -(-1.63199 -0.00968997 -1.6003e-23) -(-1.62598 -0.0190581 1.3252e-22) -(-1.61861 -0.0282963 -4.96397e-23) -(-1.60989 -0.0373973 -1.03726e-22) -(-1.5998 -0.0463559 3.59042e-24) -(-1.58834 -0.0551673 6.89284e-23) -(-1.57551 -0.0638272 1.49233e-22) -(-1.56131 -0.0723312 6.29233e-23) -(-1.54573 -0.0806746 8.25508e-23) -(-1.52878 -0.0888523 6.21685e-23) -(-1.51045 -0.0968591 1.23084e-22) -(-1.49076 -0.10469 1.61961e-22) -(-1.4697 -0.112339 1.49623e-22) -(-1.44728 -0.1198 2.23882e-22) -(-1.42351 -0.127069 1.85624e-22) -(-1.3984 -0.134139 1.74117e-22) -(-1.37195 -0.141006 8.97788e-23) -(-1.34418 -0.147665 8.61321e-23) -(-1.31511 -0.154106 7.14541e-23) -(-1.28474 -0.160323 1.04459e-22) -(-1.25309 -0.166308 1.05118e-22) -(-1.22018 -0.172056 7.85577e-23) -(-1.18604 -0.177562 8.5793e-23) -(-1.15068 -0.182822 1.0189e-22) -(-1.11413 -0.187832 9.93582e-23) -(-1.07642 -0.192591 9.55721e-23) -(-1.03758 -0.197097 6.43545e-23) -(-0.997618 -0.201351 6.0221e-23) -(-0.956578 -0.205346 1.08263e-22) -(-0.914486 -0.209074 1.33826e-22) -(-0.871378 -0.212532 1.0635e-22) -(-0.82729 -0.215719 3.96203e-23) -(-0.782257 -0.218635 7.53107e-23) -(-0.736321 -0.221286 1.01755e-22) -(-0.689517 -0.223683 9.35046e-23) -(-0.641879 -0.225823 1.01623e-22) -(-0.593447 -0.227694 7.96863e-23) -(-0.544265 -0.229296 5.02891e-23) -(-0.494377 -0.230634 9.78199e-23) -(-0.443826 -0.231724 1.34979e-22) -(-0.392652 -0.232583 1.48773e-22) -(-0.340898 -0.233201 9.04366e-23) -(-0.288601 -0.233569 3.20785e-23) -(-0.235815 -0.233692 5.39564e-23) -(-0.18255 -0.233612 -4.55616e-23) -(-0.128908 -0.233338 7.50337e-23) -(-0.074895 -0.232845 -2.65783e-23) -(-0.0205495 -0.232148 -1.91576e-23) -(0.0341773 -0.231263 8.66508e-24) -(0.0890155 -0.230207 8.18685e-23) -(0.144035 -0.228997 -8.03112e-23) -(0.199232 -0.227612 2.08789e-23) -(0.254506 -0.226064 -7.30687e-23) -(0.30984 -0.224403 4.55213e-26) -(0.36521 -0.222601 5.44726e-24) -(0.420569 -0.220673 3.34663e-22) -(0.4759 -0.218648 4.24132e-22) -(0.531169 -0.216516 2.58414e-22) -(0.586356 -0.214301 2.24078e-22) -(0.641444 -0.212 2.78113e-22) -(0.696417 -0.209629 2.618e-22) -(0.751267 -0.207194 6.97948e-23) -(0.806 -0.204699 6.60719e-23) -(0.860607 -0.202183 1.31897e-22) -(0.915079 -0.199617 3.42214e-22) -(0.969468 -0.197002 -8.56891e-23) -(1.0238 -0.194395 -2.35537e-22) -(1.07805 -0.19182 -1.63864e-22) -(1.13223 -0.189286 -1.95028e-22) -(1.18631 -0.18678 -7.95627e-23) -(1.24029 -0.184264 -4.89594e-23) -(1.29415 -0.181673 -9.70023e-23) -(1.34788 -0.178903 2.25498e-22) -(1.40144 -0.175783 2.26219e-23) -(1.45483 -0.172053 4.74596e-23) -(1.50792 -0.167298 7.14492e-22) -(1.56114 -0.160959 5.81348e-22) -(1.61369 -0.152148 3.83272e-22) -(1.66989 -0.140323 2.32753e-22) -(1.72043 -0.124113 6.07518e-22) -(-0.0104948 0.125641 1.80115e-21) -(-0.0263121 0.171865 9.58861e-22) -(-0.0432348 0.193945 6.08661e-23) -(-0.0608278 0.210107 6.23726e-24) -(-0.0782857 0.223921 2.32939e-22) -(-0.0952646 0.236313 2.99329e-22) -(-0.111776 0.247549 3.11905e-22) -(-0.127894 0.257694 3.80508e-22) -(-0.143693 0.266759 1.86178e-22) -(-0.159238 0.274756 1.10905e-23) -(-0.174587 0.281717 -2.83491e-22) -(-0.18979 0.287693 -2.44534e-22) -(-0.204885 0.292751 -2.01545e-22) -(-0.219904 0.296968 -1.46992e-22) -(-0.234873 0.300422 -5.27961e-23) -(-0.249814 0.303192 -6.2688e-23) -(-0.264744 0.305354 -7.89007e-23) -(-0.279679 0.306979 -5.92155e-23) -(-0.294635 0.308136 -1.99672e-23) -(-0.309625 0.308885 5.94599e-23) -(-0.32466 0.309285 -6.56033e-24) -(-0.339753 0.309389 -1.13268e-23) -(-0.354914 0.309244 -1.53171e-22) -(-0.370153 0.308893 -2.82897e-22) -(-0.385479 0.308375 -3.0027e-22) -(-0.400901 0.307725 -2.91108e-22) -(-0.416425 0.306973 -6.49151e-23) -(-0.43206 0.306144 6.25578e-23) -(-0.447811 0.305261 1.50662e-22) -(-0.463684 0.304343 2.38235e-22) -(-0.479684 0.303405 1.5741e-22) -(-0.495817 0.30246 6.37971e-23) -(-0.512085 0.301515 2.01162e-22) -(-0.528493 0.300579 3.03157e-22) -(-0.545043 0.299655 2.63877e-22) -(-0.561737 0.298746 2.5149e-22) -(-0.578576 0.297851 2.50543e-22) -(-0.595561 0.296969 1.73468e-22) -(-0.612691 0.296097 1.92923e-22) -(-0.629966 0.29523 2.10071e-22) -(-0.647383 0.294362 2.15616e-22) -(-0.664939 0.293487 2.36598e-22) -(-0.682631 0.292598 1.07044e-22) -(-0.700454 0.291685 4.6295e-23) -(-0.718402 0.290741 -2.11939e-23) -(-0.736468 0.289755 5.00868e-23) -(-0.754643 0.288719 2.4871e-22) -(-0.77292 0.287622 1.25743e-22) -(-0.791287 0.286454 4.29761e-23) -(-0.809736 0.285206 -1.24029e-22) -(-0.828253 0.283867 -6.58212e-24) -(-0.846827 0.282428 4.99654e-23) -(-0.865445 0.280878 8.6371e-23) -(-0.884093 0.279208 -5.25655e-23) -(-0.902757 0.277411 8.01627e-23) -(-0.921423 0.275478 -1.19132e-22) -(-0.940074 0.2734 -1.71622e-22) -(-0.958694 0.271173 -9.20736e-23) -(-0.977267 0.268788 -1.29763e-22) -(-0.995775 0.266241 -5.09269e-23) -(-1.0142 0.263525 -1.86264e-24) -(-1.03252 0.260638 7.72395e-23) -(-1.05073 0.257575 1.20349e-23) -(-1.0688 0.254333 -8.3905e-23) -(-1.0867 0.250908 -5.33446e-23) -(-1.10443 0.247299 5.12704e-23) -(-1.12196 0.243503 -1.14637e-22) -(-1.13927 0.239518 -1.72449e-23) -(-1.15635 0.235342 -1.74951e-22) -(-1.17316 0.230974 -1.42238e-22) -(-1.18969 0.226411 -2.48719e-22) -(-1.20592 0.221652 -2.22243e-22) -(-1.22183 0.216694 -1.97586e-22) -(-1.2374 0.211533 -1.29849e-22) -(-1.25259 0.206168 -1.12605e-22) -(-1.2674 0.200593 -1.64815e-22) -(-1.28179 0.194803 -1.45163e-22) -(-1.29574 0.188795 -3.21049e-22) -(-1.30924 0.18256 -3.02309e-22) -(-1.32224 0.176094 -3.75623e-22) -(-1.33472 0.169387 -3.18106e-22) -(-1.34665 0.162433 -2.3961e-22) -(-1.35801 0.155224 -2.70789e-22) -(-1.36874 0.147752 -2.17747e-22) -(-1.37883 0.140009 -2.80785e-22) -(-1.38822 0.131991 -1.64137e-22) -(-1.39688 0.123691 -1.51811e-22) -(-1.40477 0.115108 -1.92021e-22) -(-1.41182 0.106239 -1.67773e-22) -(-1.41801 0.0970891 -4.39833e-23) -(-1.42327 0.0876637 5.38724e-23) -(-1.42755 0.0779741 -1.6358e-22) -(-1.4308 0.0680358 -2.21198e-22) -(-1.43297 0.0578694 6.85867e-23) -(-1.43401 0.0475004 3.59396e-23) -(-1.43387 0.0369587 -1.34983e-23) -(-1.43252 0.0262769 5.85218e-23) -(-1.42991 0.0154843 3.31346e-23) -(-1.42598 0.00465118 2.74264e-23) -(-1.42085 -0.00611806 7.53581e-23) -(-1.41447 -0.0167717 1.8541e-22) -(-1.40684 -0.0272929 1.63e-22) -(-1.39797 -0.0376695 1.66543e-22) -(-1.38783 -0.0478938 1.42421e-22) -(-1.37642 -0.0579592 6.52488e-23) -(-1.36375 -0.0678601 1.06562e-22) -(-1.3498 -0.0775912 -1.42717e-23) -(-1.33457 -0.0871471 1.26137e-22) -(-1.31807 -0.0965223 9.69906e-23) -(-1.30029 -0.105711 2.37899e-22) -(-1.28124 -0.114708 2.19707e-22) -(-1.26091 -0.123506 1.82937e-22) -(-1.23932 -0.132099 1.68503e-22) -(-1.21646 -0.14048 2.15282e-22) -(-1.19234 -0.148644 1.72301e-22) -(-1.16698 -0.156584 6.56269e-23) -(-1.14037 -0.164295 1.05819e-22) -(-1.11254 -0.17177 1.29906e-22) -(-1.08349 -0.179002 5.12497e-23) -(-1.05324 -0.18598 7.8303e-23) -(-1.0218 -0.192696 1.18972e-23) -(-0.98919 -0.199144 6.19181e-23) -(-0.955431 -0.205319 8.86109e-23) -(-0.920543 -0.211215 1.18575e-22) -(-0.884549 -0.216829 6.95919e-23) -(-0.847473 -0.222159 1.15807e-22) -(-0.809341 -0.227203 1.12828e-22) -(-0.770178 -0.231964 9.74208e-23) -(-0.730009 -0.236433 9.264e-23) -(-0.688864 -0.2406 1.12601e-22) -(-0.646777 -0.244462 8.46075e-23) -(-0.603778 -0.248017 7.02246e-23) -(-0.559902 -0.251267 1.05516e-22) -(-0.515187 -0.254213 1.14956e-22) -(-0.469665 -0.256875 1.28288e-22) -(-0.423375 -0.259249 9.18906e-23) -(-0.376349 -0.261317 7.859e-23) -(-0.32863 -0.263083 9.11253e-23) -(-0.280256 -0.26455 1.36291e-22) -(-0.231258 -0.265735 1.44487e-22) -(-0.181685 -0.266658 1.70029e-22) -(-0.131593 -0.267309 9.4919e-23) -(-0.0810015 -0.267685 3.22015e-23) -(-0.0299626 -0.267797 8.77158e-23) -(0.0215951 -0.267658 -1.20398e-22) -(0.0734156 -0.267277 -1.08405e-22) -(0.125553 -0.266667 -7.20583e-23) -(0.177961 -0.265842 3.72122e-23) -(0.230634 -0.264784 -1.89164e-23) -(0.283481 -0.263513 -1.58503e-22) -(0.336484 -0.262075 -6.61419e-23) -(0.389609 -0.260446 -1.66623e-24) -(0.442818 -0.258635 -4.20653e-24) -(0.496079 -0.256686 2.74884e-22) -(0.549357 -0.254585 1.14402e-22) -(0.602627 -0.252345 4.50192e-23) -(0.655864 -0.249992 7.88322e-23) -(0.709043 -0.247526 4.56198e-22) -(0.762145 -0.244967 3.00245e-22) -(0.815156 -0.242319 2.97689e-22) -(0.868066 -0.239599 2.41242e-22) -(0.920867 -0.236816 1.77913e-22) -(0.973565 -0.23398 -3.78478e-24) -(1.02616 -0.23112 1.21149e-22) -(1.07865 -0.228225 5.70301e-23) -(1.13106 -0.225303 -7.08456e-23) -(1.18344 -0.222392 -4.05557e-22) -(1.23576 -0.219515 -2.61089e-22) -(1.28803 -0.216678 -2.64434e-22) -(1.34025 -0.213868 -4.32825e-23) -(1.39242 -0.211048 -7.10953e-24) -(1.44452 -0.208152 -4.47113e-23) -(1.49656 -0.205072 -2.5775e-22) -(1.54853 -0.201639 -9.1537e-23) -(1.60045 -0.1976 3.96354e-23) -(1.65228 -0.192573 3.72784e-22) -(1.70448 -0.186063 6.03344e-22) -(1.75636 -0.177355 1.47638e-22) -(1.8122 -0.166092 3.77969e-22) -(1.86245 -0.151334 9.24627e-22) -(-0.00962548 0.158665 -5.41248e-22) -(-0.024497 0.209272 3.3153e-22) -(-0.0404893 0.231065 4.60172e-22) -(-0.0571023 0.246137 2.01166e-22) -(-0.0735872 0.25868 2.37614e-22) -(-0.0895994 0.269806 3.50478e-22) -(-0.105121 0.279861 1.20304e-22) -(-0.120201 0.288947 -1.59032e-22) -(-0.134893 0.297084 8.05631e-23) -(-0.149251 0.304281 2.30508e-22) -(-0.163329 0.310556 4.68858e-22) -(-0.177174 0.315943 4.05838e-22) -(-0.190829 0.320495 5.8422e-23) -(-0.204331 0.324272 -1.21158e-22) -(-0.217711 0.327343 -2.90172e-22) -(-0.230996 0.329777 -3.23754e-22) -(-0.244211 0.331646 -3.1347e-22) -(-0.257378 0.333014 -2.99736e-22) -(-0.270516 0.333946 -2.73532e-22) -(-0.283643 0.334501 -2.37295e-22) -(-0.296777 0.334733 -1.82856e-22) -(-0.309933 0.334693 -2.58395e-22) -(-0.323125 0.334426 -2.73809e-22) -(-0.336366 0.333973 -1.96246e-22) -(-0.349669 0.33337 -1.49642e-22) -(-0.363044 0.332651 -4.77119e-23) -(-0.376502 0.331843 1.21008e-24) -(-0.390051 0.330971 1.45485e-22) -(-0.4037 0.330056 1.78113e-22) -(-0.417456 0.329113 2.4579e-22) -(-0.431324 0.328158 1.43283e-22) -(-0.445311 0.327201 3.09076e-22) -(-0.45942 0.32625 3.06702e-22) -(-0.473656 0.32531 3.15911e-22) -(-0.48802 0.324384 3.21457e-22) -(-0.502514 0.323472 3.61215e-22) -(-0.51714 0.322574 1.32814e-22) -(-0.531896 0.321687 -5.03948e-23) -(-0.546782 0.320805 -1.58947e-22) -(-0.561796 0.319923 2.53103e-23) -(-0.576935 0.319034 7.84893e-23) -(-0.592195 0.31813 4.5607e-23) -(-0.60757 0.317202 4.93692e-23) -(-0.623055 0.31624 1.07469e-22) -(-0.638642 0.315235 -1.62809e-25) -(-0.654325 0.314175 -1.4044e-22) -(-0.670092 0.313051 -1.80326e-22) -(-0.685936 0.311851 5.2409e-24) -(-0.701844 0.310565 1.07655e-22) -(-0.717806 0.309181 2.55459e-22) -(-0.73381 0.307688 1.18013e-22) -(-0.749841 0.306078 1.17427e-22) -(-0.765888 0.304338 1.96973e-24) -(-0.781934 0.302461 -8.23435e-23) -(-0.797967 0.300436 -1.66574e-22) -(-0.813969 0.298255 -1.03584e-22) -(-0.829926 0.295911 1.01013e-23) -(-0.845821 0.293396 2.82213e-23) -(-0.861637 0.290704 -4.56807e-23) -(-0.877356 0.287829 -2.29562e-23) -(-0.892962 0.284766 -1.22823e-24) -(-0.908436 0.281511 2.17988e-23) -(-0.923759 0.27806 -6.19585e-24) -(-0.938913 0.274409 -4.32836e-23) -(-0.95388 0.270557 -6.63863e-23) -(-0.968641 0.266501 -1.64402e-22) -(-0.983177 0.26224 -1.69606e-22) -(-0.99747 0.257771 -2.27872e-22) -(-1.0115 0.253094 -1.07735e-22) -(-1.02525 0.248207 -2.70867e-22) -(-1.0387 0.243108 -2.93299e-22) -(-1.05183 0.237796 -1.90605e-22) -(-1.06463 0.232268 -1.51191e-22) -(-1.07706 0.226522 -2.0882e-22) -(-1.08913 0.220555 -3.20695e-22) -(-1.1008 0.214362 -2.83743e-22) -(-1.11205 0.207939 -2.85709e-22) -(-1.12287 0.201279 -1.79315e-22) -(-1.13323 0.194376 -2.2435e-22) -(-1.14311 0.187223 -2.18361e-22) -(-1.15249 0.17981 -3.50364e-22) -(-1.16134 0.17213 -2.95254e-22) -(-1.16963 0.164171 -2.74269e-22) -(-1.17734 0.155925 -4.66541e-22) -(-1.18443 0.147383 -3.97355e-22) -(-1.19086 0.138538 -1.89738e-22) -(-1.1966 0.129381 -1.30882e-22) -(-1.2016 0.119909 -6.41623e-23) -(-1.20583 0.110119 -3.71224e-23) -(-1.20924 0.100013 -8.84729e-23) -(-1.21177 0.0895969 8.11652e-23) -(-1.21338 0.0788824 2.33065e-22) -(-1.21403 0.0678863 9.06392e-23) -(-1.21365 0.0566314 -1.46197e-22) -(-1.2122 0.0451467 -7.38848e-23) -(-1.20963 0.033466 -2.60216e-23) -(-1.20593 0.0216267 -1.76748e-22) -(-1.20101 0.0096741 -4.31245e-23) -(-1.19493 -0.00227363 8.67707e-23) -(-1.18776 -0.0141127 1.341e-22) -(-1.17945 -0.0258226 1.61942e-22) -(-1.17002 -0.0373868 1.65612e-22) -(-1.15945 -0.0487944 1.10944e-22) -(-1.14773 -0.060037 2.44475e-22) -(-1.13486 -0.0711064 2.88209e-22) -(-1.12083 -0.0819957 2.00387e-22) -(-1.10563 -0.0926985 2.08769e-22) -(-1.08928 -0.103209 1.84577e-22) -(-1.07175 -0.11352 2.73834e-22) -(-1.05306 -0.123627 1.60655e-22) -(-1.03321 -0.133521 1.73768e-22) -(-1.01219 -0.143196 2.03691e-22) -(-0.990005 -0.152645 2.15946e-22) -(-0.966669 -0.16186 7.30357e-23) -(-0.942183 -0.170834 8.14468e-23) -(-0.916555 -0.179561 7.46291e-23) -(-0.889795 -0.188034 6.28234e-23) -(-0.86191 -0.196249 1.0581e-22) -(-0.832909 -0.204194 5.79989e-23) -(-0.802808 -0.211858 6.46633e-23) -(-0.77162 -0.219232 9.0616e-23) -(-0.739364 -0.22631 7.00877e-23) -(-0.706056 -0.233085 8.03312e-23) -(-0.671715 -0.239553 7.02215e-23) -(-0.63636 -0.245709 9.43813e-23) -(-0.600015 -0.251549 1.09029e-22) -(-0.562703 -0.257072 9.34284e-23) -(-0.524447 -0.262284 7.54042e-23) -(-0.485273 -0.267173 1.05341e-22) -(-0.445208 -0.271726 1.13158e-22) -(-0.404283 -0.275942 5.98136e-23) -(-0.362526 -0.279821 8.49274e-23) -(-0.319964 -0.283361 9.11078e-23) -(-0.276635 -0.286564 9.92588e-23) -(-0.232553 -0.289452 1.21773e-22) -(-0.187788 -0.29202 9.85587e-23) -(-0.142358 -0.294249 1.23006e-22) -(-0.0962981 -0.296149 2.05369e-22) -(-0.049641 -0.297726 1.56008e-22) -(-0.00238335 -0.298989 1.40552e-22) -(0.0454006 -0.299941 7.7211e-23) -(0.0936086 -0.300588 9.72549e-23) -(0.142255 -0.300942 1.75072e-22) -(0.191292 -0.30102 1.05855e-23) -(0.240714 -0.300802 -9.33689e-24) -(0.290435 -0.300297 -2.08391e-22) -(0.34044 -0.299546 -1.46424e-22) -(0.390679 -0.298558 -1.18159e-22) -(0.441127 -0.297318 -2.95896e-22) -(0.491745 -0.295842 -1.43127e-22) -(0.542499 -0.294172 -5.0949e-23) -(0.593347 -0.292295 1.95645e-24) -(0.64427 -0.290223 1.17523e-23) -(0.695232 -0.287989 -2.44621e-23) -(0.746202 -0.285593 6.23499e-23) -(0.797162 -0.283047 1.12464e-22) -(0.848087 -0.280376 1.90958e-22) -(0.898956 -0.277585 7.54017e-23) -(0.949755 -0.274695 1.99853e-22) -(1.00047 -0.271714 3.29235e-22) -(1.0511 -0.268659 2.18883e-22) -(1.10163 -0.265544 2.23548e-22) -(1.15208 -0.262382 2.66964e-22) -(1.20244 -0.259198 2.38485e-22) -(1.25273 -0.255993 -1.44806e-22) -(1.30296 -0.252777 -1.12657e-22) -(1.35316 -0.249581 -2.94484e-22) -(1.40335 -0.246422 1.55199e-22) -(1.45351 -0.243307 -2.63891e-22) -(1.50367 -0.240221 6.14472e-23) -(1.55381 -0.237128 5.15033e-23) -(1.60396 -0.233963 -2.93415e-23) -(1.65412 -0.230619 -2.84666e-22) -(1.7043 -0.226932 -9.75394e-23) -(1.75457 -0.222662 9.4119e-23) -(1.80491 -0.217465 -1.41864e-22) -(1.85586 -0.21091 -2.56792e-22) -(1.90675 -0.202431 -3.88254e-22) -(1.9618 -0.191791 4.4431e-22) -(2.01122 -0.178377 6.46505e-22) -(-0.00858973 0.188967 -3.83674e-22) -(-0.0222583 0.243966 -4.06422e-22) -(-0.0370553 0.265659 -8.75771e-22) -(-0.0524276 0.279785 -5.50206e-22) -(-0.0676904 0.291135 -1.89407e-22) -(-0.0825068 0.301017 -1.05948e-22) -(-0.0968353 0.309863 2.14298e-22) -(-0.110699 0.31782 2.25323e-22) -(-0.124135 0.324932 1.08682e-22) -(-0.137184 0.331213 6.05068e-23) -(-0.149892 0.336678 -2.31858e-23) -(-0.162302 0.341354 3.38931e-23) -(-0.174456 0.345281 2.64245e-23) -(-0.186393 0.348511 2.91417e-23) -(-0.198148 0.351101 7.91758e-23) -(-0.209753 0.353114 2.30359e-22) -(-0.221234 0.354613 3.55475e-22) -(-0.23262 0.355659 2.89743e-22) -(-0.243933 0.356311 2.51151e-22) -(-0.255196 0.356623 1.73036e-22) -(-0.266429 0.356648 4.38085e-23) -(-0.277651 0.356432 5.45771e-23) -(-0.288878 0.356016 3.45933e-23) -(-0.300127 0.355441 -2.8833e-23) -(-0.311413 0.354738 -1.87416e-22) -(-0.322748 0.353939 -3.30255e-22) -(-0.334143 0.353068 -2.9328e-22) -(-0.345611 0.352148 -1.26457e-22) -(-0.357159 0.351197 5.41104e-23) -(-0.368795 0.35023 1.56047e-22) -(-0.380527 0.349259 4.388e-22) -(-0.392359 0.348292 4.93183e-22) -(-0.404297 0.347336 3.78543e-22) -(-0.416342 0.346394 3.46201e-22) -(-0.428499 0.345467 3.27049e-22) -(-0.440766 0.344554 3.15552e-22) -(-0.453145 0.343653 4.02655e-22) -(-0.465634 0.342758 4.23465e-22) -(-0.478231 0.341864 4.17747e-22) -(-0.490933 0.340963 1.85564e-22) -(-0.503734 0.340047 1.15409e-22) -(-0.516631 0.339106 -2.06271e-22) -(-0.529615 0.33813 -1.23528e-22) -(-0.54268 0.337108 -1.39128e-22) -(-0.555817 0.336029 5.69871e-23) -(-0.569017 0.334882 6.74994e-23) -(-0.582269 0.333655 1.90961e-22) -(-0.595563 0.332335 7.7946e-23) -(-0.608886 0.330912 8.77725e-23) -(-0.622226 0.329374 6.48432e-24) -(-0.63557 0.32771 -6.77052e-23) -(-0.648903 0.325908 -1.26063e-22) -(-0.662212 0.323959 -1.36873e-22) -(-0.675481 0.321852 -1.44178e-22) -(-0.688694 0.319578 -1.53477e-22) -(-0.701837 0.317129 -1.30917e-22) -(-0.714893 0.314497 -1.27297e-22) -(-0.727844 0.311674 -2.11095e-22) -(-0.740676 0.308654 -1.9118e-22) -(-0.753369 0.305432 -2.47528e-23) -(-0.765908 0.302002 -1.86878e-23) -(-0.778274 0.298361 5.68145e-23) -(-0.790451 0.294505 1.14553e-23) -(-0.802419 0.290431 -1.98571e-23) -(-0.814163 0.286139 5.79138e-24) -(-0.825665 0.281625 -7.74381e-23) -(-0.836908 0.276889 -1.29228e-22) -(-0.847876 0.27193 -2.13739e-22) -(-0.858551 0.266748 -3.3417e-22) -(-0.868917 0.261341 -3.24972e-22) -(-0.878959 0.255708 -4.23084e-22) -(-0.88866 0.249848 -3.89679e-22) -(-0.898005 0.24376 -3.51541e-22) -(-0.906978 0.237441 -2.82353e-22) -(-0.915564 0.230889 -3.73262e-22) -(-0.923746 0.224099 -3.36857e-22) -(-0.931509 0.217067 -2.16278e-22) -(-0.938838 0.209786 -1.42145e-22) -(-0.945714 0.202249 6.47545e-23) -(-0.95212 0.194448 -1.97077e-22) -(-0.958037 0.186372 -1.22505e-22) -(-0.963444 0.178012 -2.07227e-22) -(-0.968318 0.169356 -2.0498e-22) -(-0.972633 0.160393 -6.88293e-23) -(-0.976362 0.151113 -2.40269e-24) -(-0.979475 0.141504 2.31286e-23) -(-0.981939 0.131558 -1.14336e-22) -(-0.983716 0.121268 7.7647e-23) -(-0.984768 0.11063 6.33897e-23) -(-0.98505 0.0996432 1.42964e-22) -(-0.984519 0.0883137 -4.55734e-23) -(-0.983126 0.0766529 -6.87257e-24) -(-0.980825 0.0646788 1.26845e-22) -(-0.977567 0.0524168 1.37229e-22) -(-0.97331 0.0398991 3.81983e-23) -(-0.968016 0.0271636 -1.24413e-23) -(-0.961653 0.0142472 4.55508e-23) -(-0.954146 0.00125926 6.43674e-23) -(-0.945712 -0.0116494 2.02055e-22) -(-0.93628 -0.0244288 1.79201e-22) -(-0.925857 -0.0370669 1.56603e-22) -(-0.914435 -0.0495495 1.51053e-22) -(-0.902005 -0.0618665 2.6376e-22) -(-0.888555 -0.0740087 2.87613e-22) -(-0.874078 -0.0859656 2.65844e-22) -(-0.85857 -0.0977288 2.11736e-22) -(-0.842025 -0.109291 2.27489e-22) -(-0.824441 -0.120646 1.91995e-22) -(-0.805816 -0.131786 7.43302e-23) -(-0.786147 -0.142704 1.0646e-22) -(-0.765436 -0.153393 2.53944e-23) -(-0.743683 -0.163844 3.10161e-23) -(-0.720891 -0.174049 2.59649e-23) -(-0.697063 -0.184001 1.15208e-22) -(-0.672204 -0.193692 1.25329e-22) -(-0.646321 -0.203113 2.0621e-23) -(-0.619422 -0.212257 1.15275e-22) -(-0.591513 -0.221123 1.83242e-22) -(-0.562605 -0.229697 2.02984e-22) -(-0.532709 -0.237963 1.26075e-22) -(-0.501841 -0.245913 4.83441e-23) -(-0.470014 -0.253542 7.13667e-23) -(-0.437245 -0.260842 8.89789e-23) -(-0.403547 -0.267809 8.39538e-23) -(-0.368939 -0.274437 5.43643e-23) -(-0.333439 -0.280721 4.62527e-23) -(-0.297069 -0.286659 3.41771e-23) -(-0.259844 -0.292258 1.01469e-22) -(-0.221806 -0.297505 1.40255e-22) -(-0.182973 -0.302386 1.21586e-22) -(-0.143371 -0.306902 1.05013e-22) -(-0.103025 -0.311054 8.53492e-23) -(-0.0619546 -0.314842 6.20293e-23) -(-0.0201926 -0.318271 9.45969e-23) -(0.0222976 -0.321343 1.07297e-22) -(0.0653385 -0.324048 1.28143e-22) -(0.108968 -0.326394 2.00056e-22) -(0.153151 -0.328388 1.50032e-22) -(0.197857 -0.33004 1.34579e-22) -(0.243062 -0.331345 1.18193e-22) -(0.288723 -0.332297 1.30126e-22) -(0.334795 -0.332913 1.16739e-22) -(0.381251 -0.333216 1.49831e-22) -(0.428047 -0.333216 7.56104e-23) -(0.475158 -0.332898 7.63275e-23) -(0.522544 -0.33227 -1.313e-22) -(0.57018 -0.331369 -1.86172e-22) -(0.618016 -0.330206 -1.83356e-22) -(0.666026 -0.328774 -3.14896e-22) -(0.714183 -0.32709 -1.05166e-22) -(0.762453 -0.325185 -1.89283e-23) -(0.8108 -0.323059 2.22237e-23) -(0.859205 -0.320726 4.12659e-23) -(0.90764 -0.318213 5.07322e-23) -(0.956075 -0.315527 6.95323e-23) -(1.0045 -0.312683 1.45596e-22) -(1.05288 -0.309703 2.51338e-22) -(1.10121 -0.306598 1.31499e-22) -(1.14948 -0.303389 -1.79233e-22) -(1.19768 -0.300089 3.11164e-22) -(1.2458 -0.296715 1.55626e-22) -(1.29385 -0.293286 1.81922e-22) -(1.34182 -0.289815 4.82766e-22) -(1.38973 -0.286328 3.79996e-22) -(1.43759 -0.282831 -5.63845e-23) -(1.48542 -0.279339 -1.17166e-22) -(1.53324 -0.275877 2.00716e-22) -(1.58107 -0.272459 -4.98793e-22) -(1.62892 -0.269091 1.31329e-22) -(1.67681 -0.265759 3.75741e-22) -(1.72473 -0.262428 1.1886e-22) -(1.77273 -0.259033 8.98206e-24) -(1.82081 -0.255473 -4.11625e-22) -(1.86901 -0.251591 -7.30579e-23) -(1.91743 -0.247165 1.15826e-22) -(1.96608 -0.241889 1.44437e-22) -(2.01553 -0.235392 -8.55116e-23) -(2.06512 -0.227232 1.9442e-22) -(2.119 -0.217243 1.11233e-23) -(2.16718 -0.205073 4.33672e-22) -(-0.00747647 0.2161 -1.30656e-22) -(-0.019789 0.275499 5.52098e-23) -(-0.0332276 0.297288 4.32018e-22) -(-0.0471986 0.310623 1.39542e-23) -(-0.0610807 0.320886 -9.80858e-23) -(-0.0745492 0.329579 -1.65513e-22) -(-0.0875427 0.337228 -2.44128e-22) -(-0.100063 0.344032 -1.95609e-22) -(-0.11213 0.350063 -6.80101e-23) -(-0.123773 0.355352 -3.87046e-23) -(-0.135026 0.359921 -3.23047e-23) -(-0.14593 0.363793 -2.88226e-22) -(-0.156524 0.367005 -7.28723e-23) -(-0.166848 0.369601 5.98822e-23) -(-0.176936 0.371631 1.77629e-22) -(-0.186825 0.373152 4.54317e-23) -(-0.196546 0.374218 4.68765e-23) -(-0.206128 0.374887 1.33822e-22) -(-0.215599 0.375211 2.66292e-22) -(-0.224983 0.375241 1.24621e-22) -(-0.234305 0.375025 -6.78622e-23) -(-0.243585 0.374604 -1.75842e-22) -(-0.252843 0.374018 -1.30517e-22) -(-0.262098 0.3733 -1.46865e-22) -(-0.271364 0.372483 -2.00415e-22) -(-0.280656 0.371591 6.35357e-23) -(-0.289987 0.370648 1.28628e-22) -(-0.299369 0.369673 1.81264e-23) -(-0.308811 0.368681 2.03701e-23) -(-0.31832 0.367684 3.3136e-24) -(-0.327904 0.366693 2.59699e-22) -(-0.337568 0.365712 1.39968e-22) -(-0.347315 0.364746 2.35909e-22) -(-0.357147 0.363797 3.37725e-22) -(-0.367066 0.362862 2.90489e-22) -(-0.377071 0.36194 3.88936e-23) -(-0.387162 0.361025 1.64447e-23) -(-0.397334 0.360112 1.82187e-22) -(-0.407584 0.359192 -5.29591e-25) -(-0.417907 0.358256 5.6911e-24) -(-0.428296 0.357295 2.24083e-23) -(-0.438745 0.356297 5.8682e-23) -(-0.449245 0.355252 -5.89375e-23) -(-0.459786 0.354146 -1.80781e-22) -(-0.470359 0.352968 -1.36332e-22) -(-0.480951 0.351706 1.58579e-23) -(-0.491552 0.350346 -1.92674e-22) -(-0.502148 0.348877 -1.49026e-22) -(-0.512725 0.347286 -3.23431e-22) -(-0.523271 0.345561 -2.71236e-22) -(-0.533771 0.34369 -2.81838e-22) -(-0.544209 0.341663 -4.37152e-22) -(-0.55457 0.339469 -2.95693e-22) -(-0.564839 0.337097 -2.08678e-22) -(-0.575 0.33454 -2.07589e-22) -(-0.585036 0.331787 -1.30177e-22) -(-0.594931 0.328832 -1.27864e-22) -(-0.604669 0.325667 -1.7743e-22) -(-0.614233 0.322287 -1.00646e-22) -(-0.623607 0.318686 -1.81615e-22) -(-0.632774 0.314859 -1.76322e-22) -(-0.641719 0.310804 -1.34331e-22) -(-0.650424 0.306516 -2.87289e-23) -(-0.658873 0.301995 -4.34543e-23) -(-0.667052 0.29724 -1.20315e-22) -(-0.674944 0.29225 -7.03286e-23) -(-0.682537 0.287024 -2.47156e-23) -(-0.689815 0.281562 -1.60544e-22) -(-0.696765 0.275865 -3.24662e-22) -(-0.703373 0.269932 -2.41643e-22) -(-0.709627 0.263764 -1.07187e-22) -(-0.715514 0.257359 -2.11985e-22) -(-0.721022 0.250717 -2.1221e-22) -(-0.726141 0.243837 -1.49657e-22) -(-0.730857 0.236715 -4.92229e-23) -(-0.735161 0.229349 1.59421e-22) -(-0.739041 0.221732 -2.4935e-23) -(-0.742486 0.213861 -1.23507e-22) -(-0.745484 0.205725 -2.62684e-22) -(-0.748021 0.197317 -1.18686e-22) -(-0.750085 0.188625 -1.66592e-22) -(-0.75166 0.179637 -3.16415e-22) -(-0.752728 0.170339 -2.2473e-22) -(-0.753269 0.16072 -7.31598e-23) -(-0.75326 0.150765 -1.18784e-22) -(-0.752678 0.140463 -2.31697e-22) -(-0.751492 0.129802 -9.49041e-24) -(-0.749673 0.118771 4.58085e-23) -(-0.747183 0.107364 4.10885e-23) -(-0.743984 0.0955795 1.31251e-22) -(-0.740033 0.0834206 -7.86665e-23) -(-0.735287 0.0708996 -1.59949e-22) -(-0.729701 0.0580354 -1.98875e-23) -(-0.723232 0.0448546 3.69309e-23) -(-0.715839 0.0313928 2.13105e-23) -(-0.707493 0.0176885 -2.03888e-23) -(-0.698108 0.00382713 -7.79321e-23) -(-0.687914 -0.0100099 2.68379e-23) -(-0.676891 -0.0237188 1.1797e-22) -(-0.665028 -0.037292 1.4129e-22) -(-0.652321 -0.0507157 1.38686e-22) -(-0.638761 -0.0639773 8.80649e-23) -(-0.624335 -0.0770676 1.91398e-22) -(-0.609034 -0.0899762 2.86546e-22) -(-0.592848 -0.10269 2.74011e-22) -(-0.575772 -0.115198 2.17886e-22) -(-0.557801 -0.127494 8.83141e-24) -(-0.53893 -0.13957 1.18994e-22) -(-0.519156 -0.151418 1.98368e-22) -(-0.498477 -0.16303 1.62211e-22) -(-0.476891 -0.174398 1.55357e-22) -(-0.454399 -0.185512 8.92348e-23) -(-0.431001 -0.196365 5.43201e-24) -(-0.406699 -0.206947 1.23204e-22) -(-0.381497 -0.217249 1.39519e-22) -(-0.355399 -0.227263 1.50303e-22) -(-0.328413 -0.236979 1.73681e-22) -(-0.300538 -0.246398 2.29889e-23) -(-0.271794 -0.255504 -2.28957e-23) -(-0.242189 -0.264279 6.46936e-23) -(-0.211735 -0.272716 1.41553e-22) -(-0.180445 -0.280809 1.27439e-22) -(-0.14833 -0.288551 1.09507e-22) -(-0.115402 -0.295938 6.03472e-23) -(-0.0816757 -0.302964 1.01639e-22) -(-0.0471646 -0.309624 8.12702e-23) -(-0.011882 -0.315916 1.32232e-22) -(0.0241773 -0.321837 1.10541e-22) -(0.0609102 -0.327367 1.33409e-22) -(0.0983361 -0.332509 1.22618e-22) -(0.13643 -0.337262 1.62179e-22) -(0.175172 -0.341629 1.43438e-22) -(0.214541 -0.345611 1.03698e-22) -(0.254507 -0.349211 9.6343e-23) -(0.295058 -0.352412 3.26467e-23) -(0.336135 -0.355211 1.28856e-22) -(0.377726 -0.357632 1.63133e-22) -(0.419798 -0.359678 5.9681e-23) -(0.462319 -0.361356 2.0353e-23) -(0.505261 -0.362662 -2.28522e-23) -(0.548593 -0.363591 -3.90353e-23) -(0.592288 -0.36416 1.82157e-22) -(0.636313 -0.364388 2.3112e-22) -(0.680629 -0.364288 -2.79265e-23) -(0.725206 -0.363851 -4.01511e-23) -(0.770021 -0.363086 -1.41346e-22) -(0.815045 -0.362024 -2.02592e-22) -(0.860238 -0.360675 -2.08445e-22) -(0.905573 -0.359044 -2.13194e-22) -(0.951029 -0.357145 -2.26987e-24) -(0.996575 -0.355005 3.22903e-23) -(1.04218 -0.352631 -1.05815e-23) -(1.08783 -0.350039 2.67159e-22) -(1.1335 -0.347252 1.50593e-22) -(1.17916 -0.344282 6.11977e-23) -(1.22481 -0.341148 2.44237e-22) -(1.27042 -0.337869 7.07783e-23) -(1.31598 -0.334463 6.82254e-23) -(1.36149 -0.33095 -1.73349e-22) -(1.40694 -0.327346 -1.54689e-22) -(1.45232 -0.32367 3.63194e-23) -(1.49765 -0.319944 -4.9709e-22) -(1.54293 -0.316184 2.12577e-22) -(1.58816 -0.312413 4.47269e-22) -(1.63337 -0.308646 -9.14807e-23) -(1.67857 -0.304899 -7.8001e-23) -(1.7238 -0.301192 -1.65676e-22) -(1.76907 -0.297541 1.85025e-22) -(1.81439 -0.293948 2.61122e-22) -(1.8598 -0.290402 -1.39715e-22) -(1.9053 -0.286868 -6.21841e-23) -(1.95094 -0.283286 -8.14165e-23) -(1.99675 -0.279558 1.27753e-22) -(2.04277 -0.27554 2.11969e-22) -(2.08913 -0.271027 2.01845e-22) -(2.13588 -0.265754 4.29538e-22) -(2.18358 -0.2594 -7.11226e-23) -(2.23159 -0.251627 6.28619e-22) -(2.28396 -0.242303 4.38006e-22) -(2.3306 -0.231289 7.10863e-22) -(-0.00635512 0.23985 -1.23316e-22) -(-0.0172447 0.303641 -1.64834e-22) -(-0.0292463 0.325709 -3.70046e-22) -(-0.0417373 0.338404 3.50964e-22) -(-0.0541555 0.347689 1.70619e-23) -(-0.0661891 0.35526 -1.6278e-22) -(-0.0777606 0.361739 1.1281e-22) -(-0.0888531 0.367382 2.34224e-22) -(-0.099471 0.372299 -2.62038e-23) -(-0.109632 0.376543 -1.2215e-22) -(-0.119363 0.380148 -2.33963e-22) -(-0.128699 0.383144 -1.94976e-22) -(-0.137677 0.385567 -2.66348e-23) -(-0.146337 0.387457 8.5533e-23) -(-0.154716 0.388861 2.11576e-22) -(-0.16285 0.389829 2.95997e-22) -(-0.170776 0.39041 2.04047e-22) -(-0.178526 0.390656 -2.70753e-22) -(-0.18613 0.390613 -4.65076e-22) -(-0.193615 0.390328 -5.01065e-22) -(-0.201009 0.389843 -4.30906e-22) -(-0.208334 0.389194 -2.24648e-22) -(-0.215612 0.388418 -1.41788e-22) -(-0.222861 0.387543 -1.61683e-22) -(-0.230099 0.386597 6.94483e-23) -(-0.237341 0.385602 -1.19596e-22) -(-0.2446 0.384576 -6.62791e-23) -(-0.251886 0.383536 -1.24838e-22) -(-0.25921 0.382494 1.74352e-24) -(-0.266578 0.381458 6.94715e-23) -(-0.273995 0.380436 2.82036e-23) -(-0.281467 0.379429 1.05263e-22) -(-0.288994 0.378441 4.55463e-23) -(-0.296578 0.377469 -1.87773e-22) -(-0.304217 0.37651 -1.28937e-22) -(-0.31191 0.375559 -1.34015e-23) -(-0.319652 0.374609 -1.48513e-23) -(-0.327438 0.373652 -4.915e-23) -(-0.335262 0.372679 -1.16511e-22) -(-0.343117 0.371678 -1.97033e-22) -(-0.350993 0.370639 -9.48446e-23) -(-0.35888 0.369549 -2.24163e-23) -(-0.366769 0.368396 1.06427e-23) -(-0.374646 0.367166 5.30755e-23) -(-0.3825 0.365846 1.25878e-22) -(-0.390317 0.364423 8.70635e-23) -(-0.398083 0.362885 1.30477e-22) -(-0.405783 0.361217 9.52066e-23) -(-0.413402 0.359408 -1.53307e-23) -(-0.420925 0.357445 -3.3441e-22) -(-0.428336 0.355317 -2.62451e-22) -(-0.435619 0.353012 -2.54796e-22) -(-0.442758 0.35052 -3.09797e-22) -(-0.449737 0.347832 -1.71992e-22) -(-0.456539 0.344938 6.20892e-23) -(-0.463149 0.341831 2.97394e-23) -(-0.46955 0.338503 -5.72998e-23) -(-0.475726 0.334948 9.61429e-23) -(-0.481663 0.331161 -1.74978e-22) -(-0.487345 0.327136 -1.03178e-22) -(-0.492758 0.322871 1.80968e-23) -(-0.497886 0.318361 1.86456e-23) -(-0.502715 0.313606 1.4369e-22) -(-0.507233 0.308604 8.18521e-24) -(-0.511426 0.303357 -3.61262e-23) -(-0.515282 0.297865 3.18828e-23) -(-0.518792 0.292127 -3.35572e-22) -(-0.521943 0.286146 -1.63944e-22) -(-0.524727 0.279922 2.9269e-23) -(-0.527135 0.273457 -8.68069e-23) -(-0.529156 0.26675 -1.51734e-22) -(-0.530785 0.259803 -2.50695e-22) -(-0.532013 0.252615 -1.82636e-22) -(-0.532834 0.245186 -7.13782e-23) -(-0.533241 0.237513 1.94432e-22) -(-0.533228 0.229594 -6.74019e-23) -(-0.532789 0.221424 -6.99777e-23) -(-0.531919 0.212996 -1.04434e-22) -(-0.530611 0.204303 -2.39474e-22) -(-0.528858 0.195335 -2.87316e-22) -(-0.526652 0.186079 -1.95582e-22) -(-0.523983 0.17652 -1.77827e-22) -(-0.52084 0.166644 -2.19638e-22) -(-0.517207 0.156435 -3.47632e-22) -(-0.513067 0.14588 -2.78194e-22) -(-0.508402 0.134963 -3.02544e-22) -(-0.503189 0.123668 -1.56565e-22) -(-0.4974 0.111982 -8.39922e-24) -(-0.491003 0.0998947 -4.29646e-23) -(-0.483963 0.0874023 -2.94853e-23) -(-0.476242 0.074507 6.49055e-23) -(-0.467797 0.0612212 -7.42288e-23) -(-0.458591 0.0475633 -1.48434e-23) -(-0.448582 0.0335602 1.21007e-23) -(-0.437742 0.0192482 3.63534e-23) -(-0.426002 0.00470458 -5.09777e-23) -(-0.413521 -0.00988033 4.49138e-25) -(-0.40043 -0.0243557 3.21859e-23) -(-0.386671 -0.0386993 8.86501e-23) -(-0.372243 -0.0529028 1.26152e-22) -(-0.357135 -0.0669533 1.29907e-22) -(-0.341335 -0.0808384 1.91738e-22) -(-0.324828 -0.0945491 1.27379e-22) -(-0.307603 -0.108075 3.90634e-22) -(-0.289652 -0.121399 3.22887e-22) -(-0.270969 -0.134509 2.56525e-22) -(-0.251546 -0.147399 2.75283e-22) -(-0.231378 -0.16006 2.13168e-22) -(-0.210458 -0.172483 2.10468e-22) -(-0.188784 -0.184659 1.92244e-22) -(-0.166352 -0.196579 1.5985e-22) -(-0.14316 -0.208234 6.56649e-23) -(-0.11921 -0.219613 2.24011e-22) -(-0.0944992 -0.230708 2.15769e-22) -(-0.0690302 -0.241509 1.52979e-22) -(-0.0428031 -0.252007 3.69608e-22) -(-0.0158249 -0.262195 2.23157e-22) -(0.0119289 -0.272071 2.5102e-22) -(0.0403911 -0.2816 1.52466e-22) -(0.069578 -0.290781 6.58595e-23) -(0.09948 -0.299606 1.50306e-22) -(0.13009 -0.308069 1.43467e-22) -(0.161398 -0.316163 1.50118e-22) -(0.193393 -0.323882 1.62973e-22) -(0.226064 -0.331222 1.54155e-22) -(0.259398 -0.338177 1.396e-22) -(0.293376 -0.344743 1.39086e-22) -(0.327985 -0.350901 1.38171e-22) -(0.363193 -0.356643 1.26679e-22) -(0.398992 -0.36198 1.09761e-22) -(0.435357 -0.366908 1.77453e-22) -(0.472271 -0.371427 1.93298e-22) -(0.509712 -0.375539 1.63756e-22) -(0.547653 -0.379244 1.08902e-22) -(0.586075 -0.382527 7.48598e-23) -(0.624951 -0.385387 -2.13576e-23) -(0.664263 -0.387843 3.01862e-23) -(0.703979 -0.389901 9.23923e-23) -(0.744072 -0.391565 8.98936e-23) -(0.784513 -0.392837 7.19777e-23) -(0.825279 -0.393713 4.26484e-23) -(0.866348 -0.394208 5.59754e-23) -(0.907691 -0.394339 3.56494e-23) -(0.949275 -0.394117 1.16564e-22) -(0.991073 -0.393543 -4.55411e-23) -(1.03306 -0.392626 -5.44454e-23) -(1.07522 -0.39139 -4.95414e-23) -(1.11752 -0.389849 2.53328e-23) -(1.15993 -0.388012 -4.33041e-23) -(1.20243 -0.385894 -4.3356e-23) -(1.24501 -0.383518 3.67705e-23) -(1.28762 -0.380897 6.95166e-23) -(1.33027 -0.378048 -2.34908e-22) -(1.37292 -0.374993 -7.53138e-23) -(1.41557 -0.371748 -3.91288e-23) -(1.45819 -0.368333 3.13748e-22) -(1.50078 -0.364769 2.0322e-22) -(1.54334 -0.361075 5.10574e-23) -(1.58584 -0.357272 3.57126e-22) -(1.6283 -0.353381 -3.25858e-22) -(1.67071 -0.349423 -2.04704e-22) -(1.71309 -0.345419 1.37844e-22) -(1.75543 -0.34139 3.08196e-23) -(1.79776 -0.33736 -2.56435e-22) -(1.84009 -0.333346 1.9597e-22) -(1.88245 -0.329365 -1.945e-23) -(1.92486 -0.325439 3.35628e-22) -(1.96735 -0.321581 2.04775e-22) -(2.00993 -0.317794 2.18939e-22) -(2.05265 -0.314067 9.20878e-23) -(2.09553 -0.31037 -2.72762e-23) -(2.13861 -0.306643 -1.7914e-22) -(2.18194 -0.302798 5.89505e-22) -(2.22559 -0.298701 5.28066e-22) -(2.26969 -0.294169 2.84487e-22) -(2.31432 -0.28897 6.37496e-22) -(2.36003 -0.282832 6.23487e-22) -(2.4062 -0.275499 6.3875e-22) -(2.45676 -0.266845 4.97941e-22) -(2.50158 -0.256919 3.60415e-22) -(-0.00528699 0.26021 -2.72896e-23) -(-0.0147689 0.328348 1.53883e-22) -(-0.0253332 0.35085 5.08881e-22) -(-0.0363397 0.363037 -7.05823e-23) -(-0.047277 0.371436 -1.23124e-22) -(-0.0578462 0.377939 -2.30137e-22) -(-0.0679552 0.383269 -4.02278e-22) -(-0.0775715 0.387743 -4.51448e-22) -(-0.0866872 0.391515 -4.9311e-22) -(-0.0953104 0.394666 -1.51817e-22) -(-0.103463 0.397248 1.14445e-22) -(-0.111175 0.399303 5.2206e-22) -(-0.118485 0.40087 1.97499e-22) -(-0.12543 0.401993 2.80475e-23) -(-0.132052 0.402713 3.48226e-22) -(-0.138391 0.403077 3.45778e-22) -(-0.144484 0.40313 9.42041e-23) -(-0.150368 0.402915 4.22349e-23) -(-0.156076 0.402475 -2.86484e-22) -(-0.161638 0.401849 -1.53927e-22) -(-0.167082 0.401074 7.07112e-23) -(-0.172433 0.40018 5.10059e-23) -(-0.177714 0.399198 1.43209e-22) -(-0.182944 0.398153 3.5702e-22) -(-0.188141 0.397066 3.98053e-22) -(-0.193317 0.395955 2.0745e-22) -(-0.198487 0.394835 7.05788e-23) -(-0.20366 0.393718 2.82189e-22) -(-0.208844 0.39261 1.68648e-22) -(-0.214043 0.391519 3.96026e-22) -(-0.219262 0.390447 4.54907e-22) -(-0.224502 0.389394 4.44991e-22) -(-0.229762 0.388358 3.07457e-22) -(-0.23504 0.387336 2.97098e-22) -(-0.240333 0.386321 1.77639e-22) -(-0.245634 0.385306 2.00206e-22) -(-0.250937 0.384283 1.5234e-23) -(-0.256234 0.383241 -1.85349e-22) -(-0.261513 0.382168 -2.22043e-22) -(-0.266766 0.381053 -1.11805e-22) -(-0.271978 0.379883 -1.5522e-22) -(-0.277138 0.378645 -2.32974e-23) -(-0.282231 0.377323 6.28093e-23) -(-0.287243 0.375906 2.09514e-22) -(-0.292157 0.374379 -1.48872e-23) -(-0.296958 0.372727 1.09731e-23) -(-0.301629 0.370939 1.50455e-23) -(-0.306154 0.369001 -4.29307e-23) -(-0.310516 0.366901 1.01013e-22) -(-0.314697 0.364626 1.44532e-24) -(-0.318683 0.362166 -2.71316e-23) -(-0.322454 0.359509 1.7329e-23) -(-0.325995 0.356646 -1.493e-22) -(-0.32929 0.353567 -2.49884e-22) -(-0.332323 0.350266 -1.90193e-22) -(-0.335077 0.346734 -2.46206e-22) -(-0.33754 0.342966 -3.47693e-22) -(-0.339697 0.338956 -3.32693e-22) -(-0.341535 0.3347 -5.44561e-24) -(-0.34304 0.330194 -5.00001e-23) -(-0.344203 0.325436 -5.18858e-23) -(-0.345011 0.320423 -4.95012e-23) -(-0.345453 0.315155 -1.02524e-22) -(-0.345521 0.309633 -1.28412e-22) -(-0.345206 0.30386 -9.45087e-23) -(-0.344501 0.297837 -5.76176e-23) -(-0.343401 0.291566 3.56415e-23) -(-0.3419 0.285049 -3.40369e-23) -(-0.339993 0.278288 6.86579e-23) -(-0.337678 0.271285 -4.70746e-23) -(-0.33495 0.264043 -1.26922e-22) -(-0.331808 0.256561 1.34972e-22) -(-0.32825 0.248842 -1.57694e-22) -(-0.324274 0.240886 -1.31748e-22) -(-0.319882 0.232689 -1.86471e-22) -(-0.315072 0.224251 -7.3566e-23) -(-0.309844 0.215567 4.28839e-24) -(-0.304198 0.206629 2.44949e-23) -(-0.298134 0.197431 1.98832e-22) -(-0.291651 0.18796 1.02207e-23) -(-0.284746 0.178204 -6.94113e-23) -(-0.277416 0.168146 1.65667e-23) -(-0.269653 0.157766 -1.79854e-22) -(-0.261449 0.14705 -3.1993e-22) -(-0.252793 0.135981 -3.11252e-22) -(-0.243672 0.124538 -1.14959e-22) -(-0.234066 0.112703 -2.49515e-22) -(-0.223951 0.100459 -3.40974e-22) -(-0.213302 0.0877916 -2.46498e-22) -(-0.202085 0.0746943 -2.22455e-22) -(-0.190263 0.0611667 8.71743e-24) -(-0.177802 0.0472211 1.71826e-22) -(-0.164665 0.0328759 4.99086e-23) -(-0.150821 0.0181523 1.31916e-23) -(-0.136214 0.00312696 -2.2553e-22) -(-0.12099 -0.0120019 -1.93527e-22) -(-0.105373 -0.0270459 -2.80788e-22) -(-0.0892904 -0.0419627 -3.88364e-23) -(-0.0727328 -0.0567538 7.18212e-23) -(-0.0556877 -0.071408 1.39404e-22) -(-0.0381398 -0.085912 1.06275e-22) -(-0.020074 -0.100254 6.36725e-23) -(-0.00147048 -0.114426 3.57992e-22) -(0.017679 -0.128411 2.13123e-22) -(0.0373725 -0.142183 3.75774e-22) -(0.0576286 -0.155739 3.13509e-22) -(0.078456 -0.169071 1.26119e-22) -(0.0998633 -0.182168 2.04438e-22) -(0.121858 -0.195021 2.21961e-22) -(0.144444 -0.20762 2.31769e-22) -(0.167629 -0.219955 1.6299e-22) -(0.191413 -0.232015 2.94283e-22) -(0.215801 -0.24379 1.97597e-22) -(0.240794 -0.255271 3.56218e-22) -(0.266391 -0.266447 3.23702e-22) -(0.292594 -0.27731 2.60948e-22) -(0.319398 -0.287851 1.51352e-22) -(0.346801 -0.298052 1.32095e-22) -(0.374789 -0.307893 2.53589e-22) -(0.403366 -0.317374 2.29964e-22) -(0.432522 -0.326486 1.48372e-22) -(0.462251 -0.335221 1.50448e-22) -(0.492545 -0.343572 1.7969e-22) -(0.523396 -0.351532 2.54709e-22) -(0.554793 -0.359094 1.59848e-22) -(0.586724 -0.366254 1.34443e-22) -(0.619175 -0.373004 5.60081e-23) -(0.652131 -0.379328 1.14104e-22) -(0.685581 -0.38522 1.39242e-22) -(0.719511 -0.390685 8.056e-23) -(0.753902 -0.395721 8.72524e-23) -(0.788738 -0.40033 1.75819e-22) -(0.824 -0.404511 2.03488e-22) -(0.859665 -0.408262 1.6537e-22) -(0.895716 -0.411575 1.21842e-22) -(0.932135 -0.414449 -1.62278e-23) -(0.968907 -0.416896 -9.29471e-23) -(1.006 -0.418924 1.11651e-22) -(1.0434 -0.420539 1.13046e-22) -(1.08108 -0.421741 1.73018e-22) -(1.11902 -0.422533 7.52007e-23) -(1.1572 -0.422927 1.37005e-22) -(1.19559 -0.422937 2.15704e-23) -(1.23417 -0.422575 4.00019e-23) -(1.27293 -0.421846 -2.13847e-23) -(1.31183 -0.420762 -8.59014e-23) -(1.35086 -0.419342 -1.10611e-22) -(1.38999 -0.417601 -1.62075e-22) -(1.42921 -0.415552 1.0811e-22) -(1.4685 -0.413211 2.13577e-22) -(1.50783 -0.4106 1.37935e-22) -(1.54719 -0.407735 1.00918e-22) -(1.58657 -0.404634 1.04499e-23) -(1.62595 -0.401318 -5.14087e-22) -(1.66532 -0.397808 -2.14593e-22) -(1.70467 -0.394124 -8.28604e-23) -(1.74399 -0.390288 -9.68938e-23) -(1.78328 -0.386322 5.68736e-22) -(1.82254 -0.382248 4.30308e-22) -(1.86176 -0.378089 -1.91613e-22) -(1.90096 -0.373868 -1.2267e-22) -(1.94014 -0.369609 -5.75441e-23) -(1.97932 -0.365334 7.28588e-23) -(2.01851 -0.361068 6.45195e-22) -(2.05773 -0.356832 3.25633e-22) -(2.09701 -0.352645 -6.94731e-23) -(2.13638 -0.348527 1.34403e-22) -(2.17587 -0.344491 1.01483e-22) -(2.2155 -0.340543 2.13703e-22) -(2.25532 -0.336672 2.31431e-22) -(2.29537 -0.33285 -1.55573e-22) -(2.33568 -0.329025 4.03428e-22) -(2.37634 -0.325112 7.07724e-22) -(2.41741 -0.320994 4.51583e-22) -(2.45904 -0.316506 1.13906e-21) -(2.50132 -0.31145 5.69952e-22) -(2.54481 -0.305589 2.00739e-22) -(2.58889 -0.29874 5.29818e-22) -(2.63736 -0.290762 5.23688e-22) -(2.68014 -0.281869 2.89599e-22) -(-0.00433614 0.277376 -1.12869e-21) -(-0.0125164 0.34976 -2.75361e-22) -(-0.0217256 0.372805 -3.20568e-22) -(-0.0313169 0.384574 -1.69089e-22) -(-0.0408197 0.392141 -1.19642e-22) -(-0.0499457 0.397599 1.09679e-24) -(-0.0585913 0.401773 -1.59948e-22) -(-0.0667119 0.405048 -2.07268e-22) -(-0.0742909 0.407627 -1.81843e-22) -(-0.0813318 0.409626 -8.19433e-23) -(-0.0878537 0.411121 -1.56755e-23) -(-0.0938877 0.412169 -1.05482e-22) -(-0.099472 0.41282 6.76444e-23) -(-0.104649 0.413117 1.55508e-22) -(-0.109464 0.413105 -2.82015e-22) -(-0.113959 0.412823 -5.23939e-22) -(-0.118177 0.412312 -6.51065e-22) -(-0.122158 0.411609 -2.1993e-22) -(-0.125936 0.410748 4.70241e-23) -(-0.129545 0.409763 -1.14411e-23) -(-0.133014 0.408682 1.14813e-23) -(-0.136369 0.40753 4.59252e-23) -(-0.139631 0.406331 1.12355e-22) -(-0.142819 0.405103 2.07322e-22) -(-0.14595 0.403862 3.07753e-22) -(-0.149036 0.402621 4.88779e-22) -(-0.152087 0.401389 4.54455e-22) -(-0.155111 0.400174 5.66146e-22) -(-0.158111 0.398979 5.07221e-22) -(-0.161092 0.397805 2.26194e-22) -(-0.164051 0.396651 1.22933e-22) -(-0.166988 0.395515 2.15422e-22) -(-0.169896 0.394391 3.11556e-22) -(-0.17277 0.393272 2.3043e-22) -(-0.175601 0.39215 1.88183e-22) -(-0.178379 0.391015 1.41522e-22) -(-0.181093 0.389855 1.21294e-22) -(-0.183729 0.38866 1.19598e-22) -(-0.186273 0.387415 1.52491e-22) -(-0.188709 0.386109 3.02103e-22) -(-0.191021 0.384725 1.25426e-22) -(-0.193192 0.383251 8.39657e-23) -(-0.195203 0.381672 -1.07758e-24) -(-0.197038 0.379973 -1.81889e-22) -(-0.198675 0.37814 -5.29851e-23) -(-0.200097 0.376161 -8.74781e-24) -(-0.201285 0.374022 8.63959e-24) -(-0.20222 0.371711 3.75526e-23) -(-0.202884 0.369216 1.58353e-22) -(-0.20326 0.366526 1.96633e-22) -(-0.203331 0.363631 1.34084e-22) -(-0.203079 0.36052 1.94634e-22) -(-0.202489 0.357185 4.15462e-22) -(-0.201546 0.35362 4.53152e-22) -(-0.200236 0.349816 3.30429e-22) -(-0.198546 0.34577 1.04116e-22) -(-0.196465 0.341475 1.07755e-22) -(-0.193982 0.33693 -2.23195e-22) -(-0.191089 0.332131 -1.5472e-22) -(-0.187779 0.327076 -1.24907e-22) -(-0.184044 0.321765 -1.2494e-22) -(-0.179879 0.316194 -8.35987e-23) -(-0.175279 0.310366 -3.6161e-22) -(-0.170243 0.304286 -3.41575e-22) -(-0.164769 0.297956 -2.05922e-22) -(-0.158859 0.29138 -1.78287e-22) -(-0.152511 0.28456 -1.68223e-22) -(-0.145728 0.2775 -1.91782e-22) -(-0.138513 0.270203 -2.94684e-22) -(-0.130869 0.262673 -1.07459e-22) -(-0.122801 0.254911 1.68946e-22) -(-0.114312 0.24692 -1.03806e-22) -(-0.105409 0.238702 5.27335e-23) -(-0.096097 0.230257 -1.03868e-22) -(-0.0863823 0.221584 -1.04987e-22) -(-0.0762711 0.21268 -2.24882e-23) -(-0.0657693 0.203541 1.37474e-22) -(-0.0548826 0.194159 1.42305e-23) -(-0.0436165 0.184527 -8.04479e-23) -(-0.0319751 0.174631 1.06271e-22) -(-0.0199608 0.164456 -1.09888e-22) -(-0.00757565 0.153984 -1.1763e-23) -(0.00518982 0.143186 -2.29821e-22) -(0.0183221 0.13206 -4.65154e-22) -(0.031835 0.120578 -5.16632e-22) -(0.0457394 0.108715 -5.76903e-22) -(0.0600524 0.0964476 -4.64545e-22) -(0.0747936 0.083756 -3.92451e-22) -(0.0899879 0.070621 -3.81217e-22) -(0.105663 0.0570316 -1.85442e-22) -(0.121856 0.0429833 7.74305e-23) -(0.13859 0.0284922 2.68838e-22) -(0.155904 0.0135625 6.05162e-24) -(0.173858 -0.00172883 -2.17029e-22) -(0.192213 -0.0171571 -3.53032e-22) -(0.21074 -0.0325313 -1.88292e-22) -(0.229509 -0.0477949 -1.31919e-22) -(0.248538 -0.0629503 -7.02262e-24) -(0.267843 -0.0779898 9.01635e-23) -(0.287442 -0.0929006 2.55965e-22) -(0.307352 -0.107669 9.65143e-23) -(0.32759 -0.122281 2.78706e-22) -(0.34817 -0.136723 3.3156e-22) -(0.369105 -0.150976 3.00407e-22) -(0.390408 -0.165024 3.8702e-23) -(0.412096 -0.178859 -2.76141e-23) -(0.434178 -0.19247 2.956e-22) -(0.456665 -0.205846 2.05577e-22) -(0.479565 -0.218975 2.3759e-22) -(0.502887 -0.231847 4.05529e-22) -(0.526636 -0.244451 4.76203e-22) -(0.55082 -0.256775 3.92391e-22) -(0.575442 -0.268808 2.92701e-22) -(0.600506 -0.280539 2.06135e-22) -(0.626015 -0.291959 3.04827e-22) -(0.651969 -0.303057 8.07989e-23) -(0.678367 -0.313821 8.49896e-23) -(0.705207 -0.324235 -2.79082e-23) -(0.732488 -0.334282 3.83179e-23) -(0.760212 -0.343957 1.04815e-22) -(0.788372 -0.35325 1.34205e-22) -(0.816967 -0.362155 1.42445e-22) -(0.845989 -0.370663 6.07898e-23) -(0.875432 -0.378766 1.85495e-22) -(0.90529 -0.386459 2.44267e-22) -(0.935552 -0.393734 1.89167e-22) -(0.966208 -0.400583 1.82911e-22) -(0.997248 -0.406993 7.75353e-23) -(1.02866 -0.412959 3.16166e-23) -(1.06045 -0.418481 5.19318e-23) -(1.09258 -0.423559 6.58081e-23) -(1.12506 -0.428193 1.16256e-22) -(1.15786 -0.432382 1.21378e-22) -(1.19096 -0.436124 7.05957e-23) -(1.22436 -0.439414 9.56158e-23) -(1.25804 -0.442251 1.2681e-22) -(1.29198 -0.444646 1.01109e-22) -(1.32617 -0.446605 6.12419e-23) -(1.36059 -0.448132 1.20243e-22) -(1.39522 -0.449233 3.79176e-23) -(1.43004 -0.449911 6.23209e-23) -(1.46503 -0.450176 -8.75639e-23) -(1.50019 -0.450042 -6.18886e-23) -(1.53549 -0.449521 -8.50458e-23) -(1.57091 -0.448622 1.10567e-22) -(1.60643 -0.447356 2.46177e-22) -(1.64205 -0.445742 4.58778e-22) -(1.67774 -0.443795 7.11712e-23) -(1.71348 -0.441531 2.45958e-24) -(1.74927 -0.438966 -1.25795e-22) -(1.78509 -0.436122 -5.36784e-24) -(1.82093 -0.433017 1.39421e-22) -(1.85677 -0.429671 -3.59337e-23) -(1.8926 -0.426105 3.45558e-23) -(1.92843 -0.422341 1.58625e-22) -(1.96424 -0.418401 -2.21553e-22) -(2.00003 -0.414309 -1.85969e-22) -(2.0358 -0.410088 -1.96696e-23) -(2.07155 -0.405763 3.61071e-23) -(2.10728 -0.401357 1.80441e-22) -(2.14301 -0.396897 -3.58451e-23) -(2.17875 -0.392406 6.16125e-22) -(2.21452 -0.387911 2.49496e-23) -(2.25033 -0.383436 -1.77483e-22) -(2.2862 -0.379005 4.99098e-22) -(2.32218 -0.37464 6.54345e-22) -(2.35828 -0.37036 1.70604e-22) -(2.39455 -0.36618 6.84942e-22) -(2.43101 -0.362106 4.77789e-22) -(2.46772 -0.358129 2.29714e-22) -(2.50471 -0.354226 6.16101e-22) -(2.54206 -0.350347 -2.25377e-22) -(2.57983 -0.34642 5.62573e-22) -(2.61811 -0.342337 5.59261e-22) -(2.65706 -0.337954 4.05464e-22) -(2.69678 -0.333102 5.26233e-22) -(2.73782 -0.327577 6.3061e-22) -(2.77957 -0.32125 8.42985e-22) -(2.82568 -0.313958 6.42793e-22) -(2.86624 -0.306059 5.70126e-22) -(-0.00357984 0.291778 5.28594e-22) -(-0.0106802 0.368222 1.0105e-22) -(-0.0187147 0.391842 -7.62728e-24) -(-0.0270429 0.403212 -1.47453e-22) -(-0.0352216 0.409936 -4.77884e-22) -(-0.0429717 0.414308 -1.77611e-22) -(-0.0501823 0.417265 -9.0831e-23) -(-0.0568032 0.419268 -3.53351e-23) -(-0.0628165 0.420573 4.50934e-23) -(-0.0682275 0.421338 1.43142e-22) -(-0.0730598 0.421668 3.362e-22) -(-0.0773499 0.421639 1.46285e-22) -(-0.0811425 0.421311 1.33223e-22) -(-0.0844868 0.420732 2.49835e-22) -(-0.0874326 0.419944 9.3031e-23) -(-0.0900291 0.418984 -3.11867e-22) -(-0.0923222 0.417884 -2.28955e-22) -(-0.0943542 0.416673 -1.32984e-22) -(-0.0961633 0.415378 -7.24496e-23) -(-0.0977828 0.414021 -7.96403e-23) -(-0.0992417 0.412624 -1.02151e-22) -(-0.100564 0.411203 -9.43825e-23) -(-0.101771 0.409774 -6.44703e-23) -(-0.102878 0.408347 -5.52162e-23) -(-0.103898 0.406934 -7.11204e-23) -(-0.104841 0.405539 2.30044e-22) -(-0.105711 0.404168 4.82635e-22) -(-0.106513 0.402821 3.27626e-22) -(-0.107244 0.401497 4.62834e-22) -(-0.107904 0.400192 6.20385e-22) -(-0.108484 0.398903 2.53184e-22) -(-0.108977 0.397622 -5.73808e-23) -(-0.109373 0.39634 -1.9284e-22) -(-0.109657 0.395047 5.08413e-23) -(-0.109816 0.393733 1.92241e-22) -(-0.109833 0.392386 4.99332e-23) -(-0.10969 0.390991 2.2262e-22) -(-0.109368 0.389536 3.96828e-22) -(-0.108845 0.388007 3.2849e-22) -(-0.108101 0.386389 -9.20662e-24) -(-0.107113 0.384667 1.25188e-22) -(-0.105861 0.382828 3.09006e-22) -(-0.104321 0.380857 1.48049e-22) -(-0.102471 0.37874 1.73623e-22) -(-0.100289 0.376463 8.88468e-23) -(-0.0977538 0.374014 2.09958e-23) -(-0.0948459 0.371382 -3.2625e-23) -(-0.0915461 0.368557 -1.04722e-22) -(-0.0878366 0.365527 -2.13617e-22) -(-0.0837003 0.362284 -2.04985e-23) -(-0.079122 0.358818 5.17016e-23) -(-0.0740874 0.355123 1.21931e-22) -(-0.0685841 0.35119 2.38036e-22) -(-0.0626015 0.347017 3.33504e-22) -(-0.0561305 0.342597 -8.23887e-24) -(-0.0491642 0.337929 1.14097e-22) -(-0.0416975 0.333009 1.39113e-22) -(-0.0337273 0.327838 1.87776e-22) -(-0.0252523 0.322415 -1.74104e-22) -(-0.0162729 0.316739 -1.65721e-22) -(-0.00679248 0.31081 -2.7726e-22) -(0.00319176 0.304627 -5.42474e-22) -(0.0136615 0.298201 -2.10382e-22) -(0.0246126 0.291536 1.42961e-22) -(0.0360377 0.284635 -1.84564e-22) -(0.0479277 0.277501 -2.94688e-22) -(0.0602726 0.270138 -2.94131e-22) -(0.0730613 0.262552 -2.81545e-22) -(0.0862817 0.254746 -2.8817e-22) -(0.0999215 0.246725 -2.72655e-22) -(0.113968 0.23849 -3.31948e-22) -(0.128409 0.230044 -1.58405e-22) -(0.143232 0.22139 -5.10947e-23) -(0.158423 0.212528 -2.93785e-22) -(0.17397 0.203456 -1.58465e-22) -(0.189859 0.194171 -8.51297e-23) -(0.20608 0.184668 -3.11578e-23) -(0.222622 0.17494 -4.2535e-23) -(0.239474 0.164975 -3.38838e-23) -(0.256627 0.154761 9.49493e-23) -(0.274075 0.144278 3.56175e-23) -(0.291813 0.133506 -2.4965e-22) -(0.309836 0.122426 -2.29103e-22) -(0.328142 0.111016 -2.44255e-22) -(0.346742 0.0992466 -1.86349e-22) -(0.365644 0.0870889 -1.62949e-22) -(0.384865 0.0745138 -1.40121e-22) -(0.40442 0.0615014 -3.75343e-22) -(0.424335 0.0480254 -1.96991e-22) -(0.44463 0.0340738 2.27163e-22) -(0.465355 0.0196332 1.45063e-22) -(0.486472 0.00469331 -6.06654e-23) -(0.508153 -0.0106268 -3.14248e-23) -(0.529873 -0.0260731 -5.65018e-23) -(0.551558 -0.0414948 4.24259e-23) -(0.573245 -0.0568417 -7.63366e-23) -(0.594959 -0.072109 -3.80676e-23) -(0.616725 -0.0872873 -2.41758e-26) -(0.638563 -0.102364 -2.33745e-23) -(0.660492 -0.117325 5.31676e-23) -(0.682531 -0.132156 6.0056e-22) -(0.7047 -0.146841 6.01103e-22) -(0.727014 -0.161364 2.21669e-22) -(0.749491 -0.175707 3.73977e-24) -(0.772147 -0.189854 2.48954e-22) -(0.795001 -0.203794 2.87546e-22) -(0.818064 -0.217514 2.2346e-22) -(0.841351 -0.231002 1.46986e-22) -(0.864873 -0.244247 2.79621e-23) -(0.88864 -0.257235 7.08062e-23) -(0.912662 -0.269955 1.13868e-22) -(0.936946 -0.282394 1.41134e-22) -(0.961501 -0.294541 2.12535e-22) -(0.986331 -0.306385 1.5849e-22) -(1.01144 -0.317912 1.79632e-22) -(1.03684 -0.329112 1.07856e-22) -(1.06252 -0.339973 1.41827e-22) -(1.08849 -0.350478 8.09448e-23) -(1.11475 -0.360612 -8.11198e-23) -(1.1413 -0.370367 1.05962e-22) -(1.16815 -0.379734 2.85788e-22) -(1.19529 -0.388704 2.4301e-22) -(1.22271 -0.397268 1.89039e-22) -(1.25042 -0.405419 1.69566e-22) -(1.27842 -0.413149 1.25104e-22) -(1.30669 -0.42045 6.90759e-23) -(1.33523 -0.427313 1.62874e-22) -(1.36403 -0.43373 1.47975e-22) -(1.39309 -0.439693 1.71128e-22) -(1.4224 -0.445201 6.53732e-23) -(1.45196 -0.450254 5.16191e-23) -(1.48175 -0.454849 3.95051e-23) -(1.51176 -0.458986 1.04898e-22) -(1.54198 -0.462663 2.1226e-23) -(1.5724 -0.465879 -5.16632e-23) -(1.60302 -0.468632 2.90045e-22) -(1.63381 -0.470931 2.84796e-22) -(1.66477 -0.472779 1.91195e-22) -(1.69589 -0.474185 1.89047e-22) -(1.72715 -0.475152 1.06078e-22) -(1.75854 -0.475686 1.74768e-23) -(1.79004 -0.475798 6.35446e-23) -(1.82165 -0.475499 3.34581e-23) -(1.85335 -0.474802 -7.79639e-23) -(1.88513 -0.473718 -2.38042e-23) -(1.91697 -0.472259 1.51156e-23) -(1.94887 -0.470443 2.09648e-22) -(1.98082 -0.468286 3.9282e-22) -(2.01279 -0.465805 1.34299e-22) -(2.04479 -0.463018 7.5347e-23) -(2.0768 -0.459945 8.89435e-23) -(2.10882 -0.456607 4.98885e-23) -(2.14084 -0.453024 2.66835e-22) -(2.17285 -0.44922 5.34357e-22) -(2.20485 -0.445216 4.0256e-22) -(2.23685 -0.441038 9.1821e-23) -(2.26883 -0.436708 -4.7113e-23) -(2.30081 -0.432253 -2.61842e-22) -(2.33278 -0.427699 -1.51414e-22) -(2.36477 -0.42307 -1.16077e-22) -(2.39678 -0.418395 2.32367e-23) -(2.42883 -0.4137 -1.99506e-22) -(2.46093 -0.409012 4.32942e-22) -(2.49311 -0.404358 3.64004e-22) -(2.5254 -0.399764 3.14398e-22) -(2.55783 -0.395252 9.06567e-22) -(2.59043 -0.390843 8.82241e-22) -(2.62325 -0.386554 9.15719e-22) -(2.65632 -0.382392 5.35577e-22) -(2.6897 -0.37835 2.5417e-22) -(2.72343 -0.374409 3.62806e-22) -(2.75759 -0.370527 3.37032e-22) -(2.79226 -0.366637 4.21278e-22) -(2.82754 -0.362646 4.69247e-22) -(2.86361 -0.358428 3.54205e-23) -(2.90055 -0.353839 -1.0406e-22) -(2.93891 -0.348703 -2.18106e-22) -(2.97809 -0.342936 1.47283e-21) -(3.02162 -0.336341 1.71303e-21) -(3.05976 -0.329411 1.17511e-21) -(-0.00313462 0.304191 8.87908e-22) -(-0.00953887 0.384378 1.76445e-21) -(-0.0167047 0.408468 1.48444e-21) -(-0.0240167 0.41933 1.08375e-21) -(-0.0310441 0.425076 4.37258e-22) -(-0.0375187 0.428213 2.09826e-22) -(-0.0433331 0.4298 1.39934e-22) -(-0.0484439 0.430382 1.69872e-22) -(-0.0528446 0.430277 3.38971e-22) -(-0.0565543 0.429689 1.29085e-22) -(-0.0596115 0.428754 2.46584e-23) -(-0.0620666 0.427568 -9.05176e-23) -(-0.063977 0.4262 -2.59476e-22) -(-0.0654022 0.4247 -5.74933e-22) -(-0.0664004 0.423106 -3.11173e-22) -(-0.0670261 0.421446 1.90138e-22) -(-0.0673291 0.419743 3.21681e-22) -(-0.0673531 0.418016 1.21255e-22) -(-0.067136 0.416279 8.20881e-25) -(-0.0667095 0.414543 -1.29245e-22) -(-0.0660997 0.412819 -3.54212e-22) -(-0.0653268 0.411113 -3.70784e-22) -(-0.064406 0.409433 -2.82246e-22) -(-0.0633482 0.40778 -3.70916e-22) -(-0.0621597 0.406158 -2.80087e-22) -(-0.060843 0.404566 -7.01789e-24) -(-0.0593965 0.403002 4.02662e-22) -(-0.0578155 0.40146 3.82083e-22) -(-0.0560917 0.399935 3.60509e-22) -(-0.054213 0.398417 3.28286e-22) -(-0.0521648 0.396898 2.89622e-22) -(-0.04993 0.395366 2.17585e-22) -(-0.0474888 0.39381 2.42275e-22) -(-0.0448195 0.392218 7.01526e-23) -(-0.041898 0.390574 -7.65842e-23) -(-0.038699 0.388867 7.81395e-23) -(-0.0351957 0.387079 3.23915e-22) -(-0.0313608 0.385199 4.29427e-22) -(-0.0271663 0.38321 3.27467e-22) -(-0.022584 0.381099 2.6171e-22) -(-0.0175863 0.378851 9.22871e-24) -(-0.0121456 0.376454 -2.7437e-22) -(-0.0062362 0.373893 -9.28098e-23) -(0.000169271 0.371156 2.22886e-23) -(0.00709101 0.368233 1.98971e-22) -(0.0145468 0.365117 4.07913e-23) -(0.0225567 0.361798 -3.64874e-23) -(0.0311366 0.358268 -1.93258e-22) -(0.0403 0.354518 1.1687e-22) -(0.0500582 0.350543 -1.38943e-23) -(0.0604197 0.346336 -6.44838e-23) -(0.0713907 0.341894 -8.21149e-23) -(0.0829745 0.337214 4.23373e-23) -(0.0951718 0.332293 -2.28412e-22) -(0.107981 0.327131 -4.10656e-24) -(0.121396 0.321728 2.93992e-22) -(0.135411 0.316085 1.96736e-22) -(0.150015 0.310205 2.33381e-22) -(0.165195 0.304089 2.76258e-22) -(0.180938 0.297741 -7.46281e-24) -(0.197225 0.291163 -1.61055e-22) -(0.214037 0.28436 6.59714e-23) -(0.231354 0.27734 -1.14356e-22) -(0.249158 0.270105 -2.45787e-22) -(0.267429 0.26266 -5.12519e-22) -(0.286145 0.255011 -5.92437e-22) -(0.305285 0.247161 -4.38055e-22) -(0.324826 0.239117 -3.62712e-22) -(0.344746 0.230883 -3.48208e-22) -(0.365023 0.222462 -3.54039e-22) -(0.385637 0.213855 -3.45941e-22) -(0.406567 0.205065 -2.06854e-22) -(0.427794 0.196092 -3.97864e-22) -(0.449299 0.186938 -2.3227e-22) -(0.471063 0.177598 -1.63647e-22) -(0.493069 0.168069 -1.61258e-22) -(0.515303 0.158343 -1.07486e-22) -(0.537751 0.14841 -1.0107e-22) -(0.560399 0.138261 -1.9278e-22) -(0.583237 0.127877 -3.12626e-22) -(0.606258 0.117238 -1.39698e-22) -(0.629455 0.106321 -2.41314e-22) -(0.652824 0.0951037 -1.66307e-22) -(0.676367 0.0835548 -1.35843e-22) -(0.700092 0.0716433 -4.21383e-22) -(0.724011 0.0593355 -2.98682e-22) -(0.748141 0.0465951 8.20138e-23) -(0.772499 0.0334065 3.32513e-22) -(0.797134 0.0197264 -5.76926e-24) -(0.822018 0.00550374 -4.65784e-22) -(0.847276 -0.00920322 -5.5738e-22) -(0.872678 -0.0242425 -5.55992e-22) -(0.897738 -0.0394036 5.78892e-23) -(0.922579 -0.0545628 -8.72863e-23) -(0.947186 -0.0696987 -1.80496e-22) -(0.971588 -0.0847965 4.45533e-24) -(0.99581 -0.0998421 6.22899e-23) -(1.01988 -0.114821 6.11134e-24) -(1.04381 -0.129718 -1.68731e-22) -(1.06763 -0.144517 -1.20068e-22) -(1.09137 -0.159202 3.48272e-23) -(1.11503 -0.173757 1.70529e-22) -(1.13865 -0.188165 3.65027e-22) -(1.16223 -0.202407 4.51654e-22) -(1.18581 -0.216468 4.03811e-22) -(1.20939 -0.230333 2.21885e-22) -(1.23301 -0.243988 2.07865e-22) -(1.25666 -0.257421 2.54614e-22) -(1.28037 -0.270617 2.61554e-22) -(1.30415 -0.283563 8.85831e-23) -(1.32802 -0.296246 1.05988e-22) -(1.35198 -0.308652 1.08684e-22) -(1.37604 -0.320769 9.79136e-23) -(1.40021 -0.332584 4.64173e-23) -(1.4245 -0.344084 3.26902e-23) -(1.44892 -0.355256 1.4324e-22) -(1.47347 -0.366088 1.53689e-22) -(1.49816 -0.376563 1.99472e-22) -(1.52299 -0.386668 1.29466e-22) -(1.54796 -0.396391 1.24666e-22) -(1.57309 -0.405724 2.26518e-22) -(1.59837 -0.414655 1.30711e-22) -(1.6238 -0.423176 2.39698e-22) -(1.64938 -0.431279 2.2565e-22) -(1.67512 -0.438954 2.20084e-22) -(1.701 -0.446195 1.46296e-22) -(1.72704 -0.452992 1.67908e-22) -(1.75321 -0.459336 1.18568e-22) -(1.77954 -0.465222 1.02901e-22) -(1.806 -0.470646 1.5341e-22) -(1.8326 -0.475606 8.98751e-23) -(1.85933 -0.480101 -1.30462e-23) -(1.88618 -0.484129 -6.91267e-23) -(1.91315 -0.48769 9.13994e-23) -(1.94024 -0.490781 2.09482e-23) -(1.96743 -0.493404 1.77062e-22) -(1.99472 -0.495564 2.53295e-22) -(2.0221 -0.497266 8.91748e-23) -(2.04956 -0.498516 1.70052e-22) -(2.07711 -0.49932 1.03219e-22) -(2.10472 -0.499685 -9.47763e-23) -(2.13239 -0.49962 2.92019e-23) -(2.16011 -0.499138 1.44671e-22) -(2.18788 -0.498251 -4.55171e-23) -(2.21569 -0.49697 -3.25553e-23) -(2.24352 -0.495309 -4.0521e-23) -(2.27138 -0.493286 7.66427e-23) -(2.29926 -0.490918 3.84329e-22) -(2.32715 -0.488221 5.84371e-22) -(2.35505 -0.485215 4.24196e-22) -(2.38295 -0.481921 1.98479e-22) -(2.41084 -0.47836 3.28315e-23) -(2.43874 -0.474553 1.56357e-22) -(2.46663 -0.470525 5.17037e-22) -(2.49452 -0.4663 -3.22387e-23) -(2.52241 -0.461901 -1.05998e-22) -(2.55031 -0.457356 -1.81167e-22) -(2.57822 -0.45269 -4.87214e-23) -(2.60615 -0.447931 -2.85875e-23) -(2.63412 -0.443107 -2.51389e-22) -(2.66214 -0.438246 -4.36794e-23) -(2.69023 -0.433376 1.57785e-22) -(2.71841 -0.428526 -1.32786e-22) -(2.74672 -0.423726 1.77435e-22) -(2.77517 -0.419001 2.90358e-22) -(2.80382 -0.414377 5.69783e-22) -(2.83268 -0.409876 1.14015e-21) -(2.86182 -0.405516 9.82961e-22) -(2.89127 -0.401306 1.19052e-21) -(2.92109 -0.397244 4.595e-22) -(2.95134 -0.393312 4.86106e-22) -(2.9821 -0.389476 -5.30979e-24) -(3.01347 -0.385677 6.93961e-23) -(3.04554 -0.381835 2.35304e-22) -(3.07849 -0.377839 1.06996e-22) -(3.11244 -0.373571 -1.28865e-22) -(3.1479 -0.368876 1.19031e-21) -(3.1843 -0.363705 9.6043e-22) -(3.225 -0.357827 7.78064e-22) -(3.26057 -0.351856 2.06876e-21) -(-0.00316405 0.315746 2.3697e-22) -(-0.00952797 0.399141 -4.23908e-22) -(-0.0163087 0.42337 -5.59808e-23) -(-0.0229673 0.433404 7.05532e-22) -(-0.0290701 0.437854 1.27133e-21) -(-0.0343753 0.43945 5.70946e-22) -(-0.0388038 0.439388 2.42677e-22) -(-0.042345 0.438309 -2.30417e-23) -(-0.0450273 0.436598 -3.19617e-22) -(-0.0469037 0.434505 -2.69654e-22) -(-0.0480425 0.432195 -4.14793e-22) -(-0.0485197 0.429776 -2.7107e-22) -(-0.0484123 0.427321 -3.13375e-22) -(-0.0477934 0.424873 8.79531e-23) -(-0.0467297 0.42246 1.07603e-22) -(-0.0452797 0.420097 3.08003e-22) -(-0.0434931 0.417789 5.16575e-22) -(-0.0414109 0.415541 3.09331e-22) -(-0.0390656 0.413353 1.97443e-22) -(-0.0364826 0.411222 1.6001e-22) -(-0.0336797 0.409145 2.28151e-22) -(-0.0306674 0.407118 4.08263e-22) -(-0.0274513 0.405135 -6.39597e-24) -(-0.0240313 0.403192 6.72417e-23) -(-0.0204027 0.401282 2.2832e-22) -(-0.0165556 0.399399 5.39823e-22) -(-0.012476 0.397531 2.39537e-22) -(-0.00814608 0.39567 4.07656e-22) -(-0.00354471 0.393801 2.34263e-22) -(0.00135595 0.391911 4.2666e-24) -(0.00657891 0.389989 4.21958e-22) -(0.0121557 0.388021 3.42972e-22) -(0.0181199 0.385989 2.01939e-22) -(0.0245064 0.383879 3.42223e-23) -(0.0313516 0.381676 -1.22219e-22) -(0.0386921 0.379364 -1.72827e-22) -(0.046565 0.376929 -2.7698e-22) -(0.0550062 0.374358 -5.15537e-23) -(0.0640507 0.371638 2.31745e-22) -(0.0737315 0.368755 3.97575e-23) -(0.0840793 0.365698 -9.1435e-23) -(0.0951217 0.362458 -2.17047e-22) -(0.106883 0.359026 -2.85986e-22) -(0.119383 0.355393 -3.41184e-22) -(0.132638 0.351557 -6.7187e-22) -(0.14666 0.347513 -1.16366e-22) -(0.161456 0.343255 1.5697e-22) -(0.177028 0.338781 3.32425e-22) -(0.193376 0.334089 -1.79965e-22) -(0.210493 0.329176 -1.5884e-22) -(0.228371 0.324043 -2.99631e-22) -(0.246997 0.318689 -6.67914e-22) -(0.266355 0.313115 -9.05658e-22) -(0.286426 0.307325 -4.45485e-22) -(0.307187 0.301322 -2.29515e-22) -(0.328613 0.295109 -1.02443e-22) -(0.350676 0.288692 4.02376e-23) -(0.373347 0.282076 2.87731e-22) -(0.396592 0.275266 1.10062e-22) -(0.420377 0.268268 1.44756e-23) -(0.444666 0.261085 4.68564e-22) -(0.469424 0.253723 2.32025e-22) -(0.494615 0.246188 -1.15924e-22) -(0.520208 0.238482 -3.66361e-22) -(0.546169 0.230609 -1.31678e-22) -(0.572466 0.222575 -3.31654e-22) -(0.599068 0.214384 -4.61948e-22) -(0.625943 0.206041 -3.52191e-22) -(0.653059 0.197548 -3.86575e-22) -(0.680388 0.188905 -4.74728e-22) -(0.707904 0.180112 -6.49363e-22) -(0.735584 0.171168 -6.05279e-22) -(0.763407 0.162073 -3.42945e-22) -(0.79135 0.152825 -6.5964e-23) -(0.819393 0.143421 -1.10804e-22) -(0.847519 0.13385 -3.49426e-22) -(0.875716 0.124101 -1.19432e-22) -(0.903973 0.114166 9.09304e-23) -(0.932277 0.104034 4.93892e-22) -(0.96062 0.0936792 1.84454e-22) -(0.988999 0.0830752 2.80682e-23) -(1.01742 0.0722012 1.59905e-22) -(1.04587 0.0610297 -1.69586e-22) -(1.07436 0.0495217 -7.14329e-23) -(1.10291 0.0376461 2.55258e-22) -(1.13154 0.0253636 3.01803e-22) -(1.16027 0.012607 6.30617e-23) -(1.18908 -0.000681988 -5.67094e-22) -(1.21815 -0.0144708 -4.15328e-22) -(1.24719 -0.0286387 -4.11448e-22) -(1.27579 -0.0430498 -1.76972e-22) -(1.30392 -0.0575653 -7.36863e-23) -(1.33156 -0.0721359 -1.95751e-22) -(1.35875 -0.0867522 2.18614e-22) -(1.38551 -0.101383 1.77654e-22) -(1.41187 -0.116008 1.27377e-22) -(1.43785 -0.13061 3.01886e-22) -(1.46348 -0.145171 2.43947e-22) -(1.48879 -0.159674 4.11631e-22) -(1.5138 -0.174103 3.22328e-22) -(1.53853 -0.18844 1.10515e-22) -(1.563 -0.202669 1.91175e-22) -(1.58724 -0.21677 3.92102e-22) -(1.61127 -0.230726 2.80741e-22) -(1.63511 -0.24452 2.32731e-22) -(1.65879 -0.258135 1.52512e-22) -(1.68232 -0.271556 1.02943e-22) -(1.70572 -0.284769 2.50572e-22) -(1.72901 -0.297757 2.04855e-22) -(1.75221 -0.310507 1.0699e-22) -(1.77532 -0.323004 1.52349e-22) -(1.79837 -0.335233 1.76006e-22) -(1.82136 -0.347181 1.30808e-23) -(1.84431 -0.358833 1.29396e-24) -(1.86723 -0.370175 1.10049e-22) -(1.89013 -0.381194 1.23041e-22) -(1.91301 -0.391876 1.46016e-22) -(1.93588 -0.402205 1.92254e-22) -(1.95876 -0.412167 1.5824e-22) -(1.98164 -0.421751 8.09794e-23) -(2.00454 -0.430946 1.95637e-22) -(2.02746 -0.439739 1.73988e-22) -(2.05041 -0.448123 1.83216e-22) -(2.07338 -0.456086 1.7543e-22) -(2.09638 -0.463621 1.3329e-22) -(2.11941 -0.470719 1.75479e-22) -(2.14248 -0.477371 2.63364e-22) -(2.16558 -0.483569 2.02045e-22) -(2.18871 -0.489307 1.5032e-22) -(2.21188 -0.494581 2.14075e-22) -(2.23509 -0.499387 1.47035e-22) -(2.25833 -0.503724 1.01646e-22) -(2.28161 -0.50759 -4.00363e-23) -(2.30491 -0.510985 5.01772e-23) -(2.32825 -0.513907 9.76028e-23) -(2.35161 -0.516357 5.88747e-23) -(2.37499 -0.518341 3.4509e-22) -(2.3984 -0.519862 7.33413e-23) -(2.42183 -0.520927 -2.85723e-22) -(2.44527 -0.521543 -2.18243e-22) -(2.46873 -0.521716 -2.30826e-23) -(2.4922 -0.521456 -2.13506e-22) -(2.51567 -0.520776 -3.03124e-22) -(2.53915 -0.519686 1.57848e-22) -(2.56263 -0.518201 7.84652e-23) -(2.58611 -0.516334 2.0876e-22) -(2.60959 -0.514103 4.43972e-22) -(2.63307 -0.511525 2.87684e-22) -(2.65654 -0.508617 2.65711e-22) -(2.68 -0.5054 3.33915e-22) -(2.70346 -0.501896 4.52545e-22) -(2.72692 -0.498125 -4.89643e-22) -(2.75038 -0.49411 7.00506e-24) -(2.77385 -0.489877 -6.74888e-23) -(2.79732 -0.48545 1.98382e-22) -(2.82081 -0.480854 2.92136e-22) -(2.84433 -0.476118 2.46194e-23) -(2.86788 -0.471268 -4.45291e-22) -(2.89149 -0.466333 -4.68717e-22) -(2.91516 -0.461343 5.51039e-23) -(2.93893 -0.456327 2.58092e-22) -(2.9628 -0.451315 3.20615e-22) -(2.9868 -0.446338 2.98052e-22) -(3.01097 -0.441426 -2.53454e-22) -(3.03535 -0.436608 1.78539e-22) -(3.05996 -0.43191 -8.5245e-23) -(3.08485 -0.427357 8.55797e-22) -(3.11006 -0.422968 2.1276e-22) -(3.13566 -0.418754 6.3447e-22) -(3.1617 -0.414717 7.44389e-22) -(3.18825 -0.410843 7.25125e-22) -(3.21539 -0.407105 6.67613e-22) -(3.24323 -0.403452 -5.17607e-22) -(3.27188 -0.399816 -1.82959e-22) -(3.30151 -0.396101 1.01579e-22) -(3.33225 -0.39221 -7.2771e-23) -(3.36458 -0.388006 1.31052e-21) -(3.39799 -0.38347 1.89623e-22) -(3.43562 -0.378333 6.35688e-22) -(3.46847 -0.373323 1.86984e-22) -(-0.004061 0.329329 -2.31697e-21) -(-0.011347 0.414695 -1.63997e-21) -(-0.0184171 0.438083 -5.25866e-22) -(-0.0248712 0.446431 -4.66571e-22) -(-0.0302745 0.448827 -1.78945e-22) -(-0.0344552 0.448229 1.96325e-22) -(-0.0374127 0.445982 3.55667e-22) -(-0.039216 0.44282 -1.22665e-22) -(-0.0399659 0.439192 -9.59242e-23) -(-0.0397772 0.435378 -2.29761e-22) -(-0.0387672 0.431554 1.17732e-22) -(-0.0370479 0.427825 1.03548e-22) -(-0.0347201 0.424248 1.70461e-22) -(-0.0318697 0.420844 3.59155e-22) -(-0.0285666 0.417615 1.60492e-22) -(-0.0248653 0.414553 4.61775e-22) -(-0.0208066 0.41164 3.81463e-22) -(-0.0164181 0.408858 3.20215e-22) -(-0.0117184 0.406188 2.89388e-22) -(-0.00671633 0.403611 3.19935e-22) -(-0.00141109 0.401109 7.61608e-22) -(0.00420725 0.398664 2.57069e-22) -(0.0101456 0.396264 5.65409e-22) -(0.0164286 0.393893 5.02408e-22) -(0.0230819 0.391534 5.42566e-22) -(0.0301371 0.38917 1.70881e-22) -(0.0376299 0.386787 1.0808e-22) -(0.0455998 0.384367 -3.15089e-23) -(0.0540889 0.381894 1.91915e-22) -(0.0631429 0.379349 4.78736e-22) -(0.0728096 0.376717 6.29756e-22) -(0.08314 0.373977 7.11018e-22) -(0.0941853 0.371114 2.53705e-22) -(0.105996 0.36811 -6.2263e-23) -(0.118622 0.364952 -5.03653e-22) -(0.132109 0.361626 -4.45361e-22) -(0.146499 0.358122 -8.16687e-22) -(0.161829 0.35443 -9.62048e-22) -(0.178132 0.350542 -1.12929e-21) -(0.195432 0.346454 -4.76004e-22) -(0.213746 0.342162 -3.03764e-22) -(0.233087 0.337663 -3.54525e-22) -(0.253456 0.332958 -6.13815e-22) -(0.274848 0.32805 -2.0002e-22) -(0.297252 0.322943 2.74751e-22) -(0.320648 0.317643 3.65209e-22) -(0.345011 0.312153 7.00224e-22) -(0.370308 0.30648 6.21314e-22) -(0.396501 0.300629 1.60617e-22) -(0.423551 0.294603 -3.66835e-23) -(0.451412 0.288408 -1.29006e-22) -(0.480039 0.282047 2.91697e-23) -(0.509385 0.275528 -2.04361e-22) -(0.539399 0.268855 -2.58555e-22) -(0.570029 0.262036 -3.36562e-22) -(0.601225 0.255076 -5.74333e-22) -(0.632934 0.247982 -3.91532e-22) -(0.665102 0.240761 -3.01673e-22) -(0.697678 0.233418 -1.22745e-22) -(0.73061 0.225959 2.56366e-22) -(0.763844 0.218387 -3.12918e-22) -(0.797333 0.210702 -6.03936e-22) -(0.831031 0.202906 -2.88114e-22) -(0.864898 0.194997 -2.37165e-22) -(0.898898 0.186976 -1.61819e-22) -(0.932995 0.178847 -6.14088e-23) -(0.967153 0.170612 2.0525e-22) -(1.00134 0.162272 -1.63586e-22) -(1.03552 0.153829 -3.48865e-22) -(1.06968 0.145274 -3.8866e-22) -(1.10378 0.136602 -3.17769e-22) -(1.1378 0.127808 -4.66531e-22) -(1.17175 0.11889 -3.58531e-22) -(1.20559 0.109848 -3.49545e-22) -(1.23931 0.100671 -4.77835e-22) -(1.2729 0.0913411 -3.70145e-22) -(1.30637 0.0818437 -1.30925e-22) -(1.3397 0.0721692 -1.74685e-22) -(1.3729 0.0623084 -1.04472e-22) -(1.40596 0.0522273 -5.70658e-23) -(1.4389 0.0418903 -5.18801e-22) -(1.47171 0.0312836 -9.32249e-22) -(1.50443 0.0203771 -4.87574e-22) -(1.53708 0.00910105 -4.19836e-22) -(1.56964 -0.00261974 -6.26728e-23) -(1.6022 -0.0148073 -9.28612e-23) -(1.63472 -0.027401 -1.54512e-22) -(1.66693 -0.0403554 2.9485e-22) -(1.69844 -0.053588 3.56884e-22) -(1.7293 -0.0669967 2.20384e-22) -(1.75951 -0.0805463 -3.51797e-23) -(1.78907 -0.0942247 -1.00347e-22) -(1.81798 -0.108005 -1.59113e-22) -(1.84628 -0.121866 -2.14804e-22) -(1.87399 -0.135779 -1.01592e-22) -(1.90113 -0.149722 1.16987e-23) -(1.92773 -0.163674 -2.85809e-23) -(1.95382 -0.177616 2.43552e-22) -(1.97943 -0.191531 3.28663e-22) -(2.00457 -0.205401 3.25602e-22) -(2.02927 -0.219206 8.44556e-23) -(2.05357 -0.232929 -1.42387e-22) -(2.07747 -0.24655 8.2191e-23) -(2.10101 -0.260052 2.26904e-22) -(2.12421 -0.273414 -8.62836e-25) -(2.14709 -0.286621 3.67813e-22) -(2.16967 -0.299654 4.36314e-22) -(2.19197 -0.312497 1.81071e-22) -(2.21402 -0.325134 1.74379e-22) -(2.23582 -0.337548 -5.75164e-23) -(2.2574 -0.349723 -3.51598e-23) -(2.27878 -0.361645 -1.06584e-22) -(2.29996 -0.373296 2.84933e-22) -(2.32096 -0.384664 2.59259e-22) -(2.3418 -0.395731 8.18358e-23) -(2.36248 -0.406484 1.02993e-22) -(2.38301 -0.416907 1.3271e-22) -(2.40341 -0.426985 2.48252e-22) -(2.42369 -0.436704 2.52702e-22) -(2.44385 -0.446051 -8.73445e-23) -(2.46391 -0.455014 8.32623e-24) -(2.48386 -0.463581 4.05549e-22) -(2.50373 -0.471741 1.43381e-22) -(2.52351 -0.479485 3.34936e-22) -(2.54321 -0.486802 2.02879e-22) -(2.56284 -0.493685 -4.80692e-23) -(2.5824 -0.500123 -5.35241e-24) -(2.60188 -0.50611 1.32082e-22) -(2.62131 -0.511638 1.18292e-22) -(2.64068 -0.516703 2.39662e-22) -(2.66 -0.521302 1.06846e-22) -(2.67927 -0.525431 1.8975e-22) -(2.69848 -0.529089 2.72362e-22) -(2.71765 -0.532276 1.75033e-22) -(2.73677 -0.53499 2.8748e-22) -(2.75586 -0.537234 3.71554e-23) -(2.7749 -0.53901 2.07642e-22) -(2.7939 -0.540324 1.44445e-22) -(2.81286 -0.541181 -2.35363e-22) -(2.83179 -0.541588 -1.96333e-22) -(2.85069 -0.541554 -9.99592e-23) -(2.86955 -0.541086 -5.53267e-23) -(2.88838 -0.540198 -2.56952e-22) -(2.90718 -0.538901 -2.39838e-22) -(2.92596 -0.53721 2.9861e-22) -(2.94471 -0.535138 6.5158e-22) -(2.96345 -0.532702 2.82799e-22) -(2.98216 -0.529921 -6.52968e-23) -(3.00086 -0.526813 3.06007e-22) -(3.01956 -0.523398 1.88646e-22) -(3.03824 -0.519698 -3.70413e-22) -(3.05694 -0.515735 -4.47364e-22) -(3.07564 -0.511534 -4.07462e-22) -(3.09436 -0.507118 3.53989e-22) -(3.1131 -0.502514 4.05046e-22) -(3.13189 -0.497749 1.22209e-22) -(3.15073 -0.49285 4.48117e-22) -(3.16963 -0.487847 1.28721e-22) -(3.18862 -0.482769 -3.22365e-22) -(3.20772 -0.477647 -2.06615e-22) -(3.22695 -0.472512 2.42293e-22) -(3.24632 -0.467395 5.12634e-22) -(3.26589 -0.462329 4.50266e-22) -(3.28566 -0.457344 9.3626e-23) -(3.3057 -0.452473 -3.04492e-22) -(3.32602 -0.447743 -2.27158e-22) -(3.34669 -0.44318 4.60258e-22) -(3.36776 -0.438806 -2.58409e-22) -(3.38927 -0.434635 8.04524e-22) -(3.4113 -0.430672 3.48511e-22) -(3.43392 -0.426908 3.33291e-22) -(3.45722 -0.423322 9.53895e-22) -(3.48132 -0.419872 1.65965e-21) -(3.50632 -0.416499 6.99962e-22) -(3.53242 -0.413126 2.73129e-22) -(3.55973 -0.409668 2.10271e-22) -(3.58872 -0.406006 2.15875e-22) -(3.61892 -0.402147 -7.02113e-23) -(3.65328 -0.39778 6.77162e-22) -(3.68324 -0.393747 1.06453e-21) -(-0.00561035 0.342804 9.14346e-22) -(-0.0150774 0.428685 8.28485e-22) -(-0.0233866 0.45044 7.17583e-22) -(-0.0302069 0.456458 3.73084e-22) -(-0.0351739 0.4563 -4.28097e-23) -(-0.0383006 0.453178 2.73761e-23) -(-0.0397575 0.448581 -3.29292e-23) -(-0.0397586 0.443319 6.7137e-22) -(-0.0385161 0.437862 8.21984e-22) -(-0.0362266 0.43249 5.50412e-22) -(-0.0330627 0.427356 -6.13429e-23) -(-0.0291688 0.422532 4.08777e-22) -(-0.0246607 0.418037 4.94831e-22) -(-0.0196233 0.413855 7.33069e-23) -(-0.0141119 0.409953 5.68642e-22) -(-0.00815975 0.406287 -1.54797e-23) -(-0.00178193 0.402817 1.22169e-22) -(0.00502576 0.399502 2.36746e-22) -(0.0122637 0.396312 2.7489e-22) -(0.0199629 0.393209 1.10215e-21) -(0.0281568 0.39016 8.70628e-22) -(0.0368891 0.387138 1.18873e-21) -(0.0462103 0.384119 8.23019e-22) -(0.0561793 0.381077 9.02556e-22) -(0.0668592 0.377987 5.34654e-22) -(0.0783174 0.374829 4.09267e-22) -(0.0906242 0.371582 6.89884e-23) -(0.103851 0.368225 -8.40634e-23) -(0.118067 0.364739 -4.5785e-23) -(0.133342 0.361103 -6.54298e-23) -(0.149744 0.357299 -4.29329e-22) -(0.167338 0.353308 -4.43213e-22) -(0.18618 0.349117 -1.33211e-22) -(0.206321 0.344715 5.15212e-23) -(0.2278 0.340099 5.28969e-22) -(0.250641 0.335264 2.25334e-22) -(0.274859 0.330213 5.77388e-22) -(0.300453 0.324951 5.19081e-22) -(0.327411 0.319484 4.26334e-22) -(0.355705 0.313821 1.85315e-23) -(0.385299 0.307975 -5.17357e-23) -(0.416144 0.301957 -4.2673e-23) -(0.448182 0.295781 -1.31277e-22) -(0.481348 0.289462 -2.83043e-23) -(0.515571 0.283015 1.90231e-22) -(0.550774 0.276454 5.35824e-22) -(0.586877 0.269792 1.40721e-22) -(0.623797 0.263041 -3.0316e-22) -(0.66145 0.256207 -1.29539e-22) -(0.699756 0.249297 -1.93008e-22) -(0.738637 0.242313 -4.65798e-22) -(0.778019 0.23526 -1.61711e-22) -(0.817829 0.228143 1.71451e-22) -(0.857997 0.220965 -4.29988e-23) -(0.898457 0.213731 -1.63947e-22) -(0.939144 0.206443 -3.62953e-22) -(0.979997 0.199106 -7.30382e-22) -(1.02096 0.191721 -1.01287e-21) -(1.06197 0.184291 -7.6762e-22) -(1.10299 0.176818 -5.12225e-22) -(1.14396 0.169301 -1.60997e-22) -(1.18483 0.161733 -6.41801e-23) -(1.22557 0.154103 -7.62394e-23) -(1.26615 0.146407 -1.17687e-22) -(1.30655 0.138641 -1.44228e-22) -(1.34673 0.130805 -1.93322e-22) -(1.38667 0.122898 -2.57808e-22) -(1.42636 0.11492 -6.46022e-23) -(1.46576 0.106868 5.55174e-22) -(1.50487 0.0987271 4.45924e-22) -(1.54367 0.0904796 3.58272e-22) -(1.58216 0.0821196 1.23418e-22) -(1.62035 0.0736451 -3.09008e-22) -(1.65823 0.065055 -3.15007e-22) -(1.69578 0.0563359 -1.20984e-22) -(1.73303 0.0474598 -1.06962e-23) -(1.76998 0.0384073 -6.41047e-22) -(1.80664 0.0291712 -4.91001e-22) -(1.84302 0.0197507 -9.33965e-22) -(1.87917 0.0101 -1.04798e-21) -(1.91507 0.000161344 -4.75417e-22) -(1.95072 -0.0101052 -4.42427e-22) -(1.98622 -0.0207375 -3.22455e-22) -(2.02159 -0.0317084 2.77935e-22) -(2.05657 -0.0429978 -5.59133e-23) -(2.09088 -0.0546016 -1.91892e-22) -(2.12438 -0.066463 -1.46882e-23) -(2.15719 -0.0785364 1.11245e-22) -(2.18923 -0.0908206 2.09913e-22) -(2.22053 -0.103318 3.07299e-23) -(2.25108 -0.116 2.19542e-23) -(2.28088 -0.128839 -1.99613e-22) -(2.30995 -0.141808 8.27476e-23) -(2.33831 -0.154885 4.73596e-22) -(2.36598 -0.168045 3.29285e-22) -(2.39298 -0.181265 1.12903e-22) -(2.41934 -0.194524 1.63954e-22) -(2.44509 -0.207804 2.14005e-22) -(2.47024 -0.221084 3.46338e-22) -(2.49483 -0.234346 5.24527e-22) -(2.51887 -0.24757 2.98061e-22) -(2.54239 -0.260738 -7.60618e-25) -(2.56541 -0.273829 -8.6158e-23) -(2.58796 -0.286824 -1.01533e-22) -(2.61006 -0.299704 1.21469e-22) -(2.63172 -0.31245 1.89574e-22) -(2.65298 -0.325043 -2.22819e-23) -(2.67385 -0.337465 6.6385e-23) -(2.69435 -0.3497 9.62695e-23) -(2.71451 -0.361728 2.98635e-22) -(2.73432 -0.373534 1.16792e-22) -(2.75383 -0.3851 8.27209e-23) -(2.77303 -0.39641 1.2364e-22) -(2.79194 -0.407447 3.51221e-22) -(2.81058 -0.418196 9.69028e-23) -(2.82895 -0.428641 9.02852e-23) -(2.84708 -0.438767 8.71158e-23) -(2.86497 -0.448557 1.27088e-22) -(2.88263 -0.457997 8.23493e-23) -(2.90008 -0.467073 1.85013e-22) -(2.91732 -0.475773 5.09181e-23) -(2.93436 -0.484083 -8.33837e-23) -(2.95122 -0.491993 3.03487e-22) -(2.96789 -0.499492 1.82994e-22) -(2.9844 -0.50657 1.44069e-22) -(3.00073 -0.513218 3.54221e-23) -(3.01691 -0.519426 -3.45468e-22) -(3.03294 -0.525187 -2.05271e-22) -(3.04882 -0.530494 3.81781e-22) -(3.06457 -0.535342 3.0955e-22) -(3.08018 -0.539726 -6.67576e-23) -(3.09566 -0.543645 -2.34569e-23) -(3.11103 -0.547095 2.42515e-22) -(3.12627 -0.550077 1.63399e-22) -(3.14141 -0.55259 2.35373e-22) -(3.15645 -0.554635 4.16198e-22) -(3.17138 -0.556215 9.64017e-23) -(3.18622 -0.557336 -1.80436e-23) -(3.20098 -0.558003 -1.44776e-22) -(3.21565 -0.558222 -1.82977e-22) -(3.23024 -0.558002 -1.16013e-22) -(3.24476 -0.557353 7.75374e-23) -(3.25922 -0.556286 -2.33131e-22) -(3.27362 -0.554814 2.06938e-23) -(3.28797 -0.552949 -8.77292e-23) -(3.30227 -0.550709 2.25203e-22) -(3.31653 -0.548108 1.63983e-22) -(3.33077 -0.545166 4.16267e-22) -(3.34498 -0.541901 2.78546e-22) -(3.35918 -0.538334 -2.61806e-22) -(3.37337 -0.534487 -4.67907e-23) -(3.38757 -0.530383 1.25965e-22) -(3.40179 -0.526046 -9.77278e-23) -(3.41604 -0.521501 -1.34345e-22) -(3.43033 -0.516776 6.38513e-23) -(3.44468 -0.511898 4.73312e-23) -(3.45911 -0.506895 -3.14455e-24) -(3.47363 -0.501798 3.47686e-22) -(3.48827 -0.496638 4.68898e-22) -(3.50305 -0.491445 3.24849e-22) -(3.51799 -0.486253 -1.94307e-22) -(3.53313 -0.481094 4.06998e-22) -(3.54849 -0.476002 6.42433e-22) -(3.56412 -0.47101 -1.67466e-24) -(3.58006 -0.466151 -1.61249e-22) -(3.59634 -0.461455 1.38611e-22) -(3.61302 -0.456951 -5.7521e-22) -(3.63015 -0.452661 3.07371e-22) -(3.64781 -0.448604 6.64887e-23) -(3.66604 -0.444788 5.86155e-22) -(3.68495 -0.44121 9.42711e-22) -(3.70463 -0.437853 9.4949e-22) -(3.72518 -0.434685 2.6167e-22) -(3.74674 -0.431659 2.02683e-23) -(3.76948 -0.428708 2.25827e-22) -(3.79354 -0.425766 4.88393e-22) -(3.81937 -0.422725 -4.98732e-22) -(3.84652 -0.419614 -1.48889e-22) -(3.87776 -0.416083 5.97584e-23) -(3.90505 -0.413087 -8.93502e-22) -(-0.0082635 0.359339 -1.2475e-21) -(-0.0211352 0.443687 1.03432e-21) -(-0.0310984 0.462214 -7.01253e-22) -(-0.0382929 0.464805 -1.29105e-21) -(-0.0425987 0.461449 -6.54047e-22) -(-0.0443717 0.455501 -3.8419e-23) -(-0.0440413 0.448502 2.31803e-22) -(-0.0420079 0.441245 6.43169e-22) -(-0.0386019 0.434158 9.18605e-22) -(-0.0340901 0.427465 3.94591e-22) -(-0.0286803 0.421259 -2.84356e-22) -(-0.0225259 0.415559 -3.68636e-22) -(-0.0157359 0.410333 -1.70052e-24) -(-0.00836763 0.405508 -1.24747e-22) -(-0.000439262 0.401007 -5.87712e-22) -(0.00805732 0.396765 -1.84665e-22) -(0.0171451 0.39272 -2.32694e-22) -(0.0268886 0.388809 2.3141e-22) -(0.0373571 0.38498 6.9475e-22) -(0.0486377 0.381183 5.25983e-22) -(0.0608242 0.377373 1.44913e-22) -(0.0740203 0.373512 1.75963e-22) -(0.0883368 0.369565 4.7791e-22) -(0.103888 0.365498 4.75214e-22) -(0.12079 0.361281 7.7157e-23) -(0.139152 0.356889 -7.08605e-22) -(0.159077 0.352301 -3.72624e-22) -(0.180655 0.347501 -5.27028e-22) -(0.203957 0.342477 -3.52014e-22) -(0.229036 0.337218 -4.25458e-22) -(0.255931 0.331713 -1.02649e-21) -(0.284663 0.325962 -1.05784e-21) -(0.315229 0.31997 -5.04161e-22) -(0.347605 0.313749 -1.6847e-22) -(0.381744 0.307315 1.39172e-22) -(0.417578 0.300691 2.27749e-22) -(0.455022 0.293898 2.26193e-22) -(0.493977 0.286961 -2.53141e-22) -(0.534331 0.279904 1.67694e-22) -(0.575967 0.27275 1.40284e-22) -(0.618762 0.265523 1.70449e-22) -(0.662592 0.258243 5.28956e-22) -(0.707332 0.250929 2.08773e-22) -(0.752862 0.243598 1.06187e-22) -(0.799063 0.236267 2.67967e-24) -(0.845822 0.228948 -4.24091e-22) -(0.893031 0.221653 -5.43051e-22) -(0.940586 0.214389 -3.03469e-22) -(0.988391 0.207157 -1.79261e-22) -(1.03636 0.199951 -7.41459e-23) -(1.08442 0.192767 1.54408e-22) -(1.13249 0.185604 -3.52018e-22) -(1.18053 0.178458 -2.86903e-22) -(1.22846 0.171329 2.83089e-23) -(1.27622 0.164213 1.6554e-23) -(1.32378 0.157109 1.40891e-23) -(1.37109 0.150012 2.58456e-22) -(1.4181 0.142922 3.26054e-22) -(1.46478 0.135836 -3.14096e-23) -(1.5111 0.128751 -1.21731e-24) -(1.55701 0.121662 3.95618e-22) -(1.6025 0.114553 5.97148e-22) -(1.64756 0.107405 1.24632e-22) -(1.69216 0.100207 -3.82193e-23) -(1.73631 0.0929552 -1.24296e-22) -(1.77998 0.0856454 -2.05806e-22) -(1.82318 0.078276 2.40696e-22) -(1.8659 0.0708458 3.50216e-22) -(1.90813 0.0633499 2.63566e-22) -(1.94988 0.0557631 3.65525e-22) -(1.99115 0.0480616 1.58639e-22) -(2.03196 0.0402406 1.1621e-22) -(2.0723 0.0322987 2.45345e-22) -(2.1122 0.0242372 1.88496e-22) -(2.15168 0.0160417 -6.22226e-23) -(2.19077 0.00767392 -2.58855e-22) -(2.22946 -0.000892865 -3.73191e-22) -(2.26777 -0.00967968 -2.23188e-22) -(2.30569 -0.0187445 -1.72612e-22) -(2.3435 -0.0280836 -1.4112e-22) -(2.38093 -0.0376309 -2.56688e-22) -(2.41789 -0.0474351 3.27075e-22) -(2.45417 -0.0575224 4.03764e-22) -(2.48964 -0.0678536 3.96982e-22) -(2.52442 -0.0784028 2.85443e-22) -(2.55845 -0.0891815 5.39576e-22) -(2.59172 -0.100218 -1.09411e-22) -(2.62421 -0.111504 2.18387e-23) -(2.65592 -0.123019 6.99917e-22) -(2.68685 -0.134752 6.28101e-22) -(2.717 -0.146682 2.09448e-22) -(2.74637 -0.158786 5.46448e-22) -(2.77498 -0.17104 5.5786e-22) -(2.80285 -0.183422 1.53824e-22) -(2.82998 -0.19591 2.50535e-22) -(2.8564 -0.208482 2.83334e-22) -(2.88213 -0.221117 4.04447e-22) -(2.9072 -0.233796 1.14189e-22) -(2.93162 -0.246499 5.57042e-23) -(2.95541 -0.259205 -1.96227e-23) -(2.9786 -0.271896 1.50384e-22) -(3.00121 -0.284551 2.6166e-22) -(3.02326 -0.29715 -9.2698e-23) -(3.04476 -0.309673 3.90105e-23) -(3.06575 -0.3221 -2.13525e-22) -(3.08624 -0.334412 -4.54568e-23) -(3.10624 -0.346588 5.91989e-23) -(3.12579 -0.358611 3.94557e-23) -(3.14489 -0.37046 1.69357e-23) -(3.16356 -0.382119 2.48383e-22) -(3.18183 -0.393569 9.78499e-23) -(3.1997 -0.404792 1.8294e-22) -(3.21719 -0.415772 2.5099e-22) -(3.23431 -0.42649 3.79252e-23) -(3.25108 -0.43693 1.9592e-22) -(3.26751 -0.447076 7.63748e-23) -(3.28361 -0.456912 3.02958e-23) -(3.29939 -0.466421 3.43646e-23) -(3.31487 -0.475589 4.28409e-23) -(3.33005 -0.484402 2.28703e-22) -(3.34495 -0.492845 1.24693e-22) -(3.35957 -0.500906 -1.44024e-22) -(3.37392 -0.508573 2.39141e-22) -(3.38801 -0.515836 -2.78357e-23) -(3.40186 -0.522683 -1.82059e-22) -(3.41547 -0.529105 2.30938e-22) -(3.42884 -0.535093 2.82394e-23) -(3.44199 -0.54064 5.97771e-23) -(3.45492 -0.545737 2.42227e-22) -(3.46765 -0.550381 1.6082e-22) -(3.48017 -0.554566 1.4269e-22) -(3.4925 -0.55829 -9.56304e-23) -(3.50465 -0.561549 -7.38999e-23) -(3.51661 -0.564345 7.52654e-23) -(3.52841 -0.566675 1.79001e-22) -(3.54005 -0.568543 4.37444e-22) -(3.55154 -0.569951 2.05092e-22) -(3.56288 -0.570903 1.25804e-22) -(3.57408 -0.571405 3.90249e-23) -(3.58516 -0.571465 -2.14771e-22) -(3.59611 -0.57109 -1.44681e-22) -(3.60696 -0.570291 -4.74566e-23) -(3.6177 -0.569078 2.05768e-22) -(3.62836 -0.567464 1.0575e-22) -(3.63893 -0.565464 1.80402e-23) -(3.64943 -0.563092 2.67979e-23) -(3.65988 -0.560366 -7.75567e-23) -(3.67027 -0.557304 7.8061e-23) -(3.68063 -0.553925 9.70595e-23) -(3.69096 -0.55025 1.39589e-22) -(3.70129 -0.546301 -1.41548e-23) -(3.71161 -0.542103 3.4983e-22) -(3.72196 -0.537679 -1.66991e-22) -(3.73233 -0.533055 -1.58542e-23) -(3.74276 -0.528259 2.44382e-22) -(3.75326 -0.52332 -1.53512e-23) -(3.76385 -0.518266 -8.34697e-23) -(3.77455 -0.513128 3.31171e-22) -(3.78539 -0.507939 2.74673e-22) -(3.7964 -0.502731 1.4834e-22) -(3.80759 -0.497538 1.29495e-22) -(3.81901 -0.492393 2.32068e-22) -(3.83069 -0.487333 3.51654e-22) -(3.84267 -0.482392 3.22314e-22) -(3.85499 -0.477604 1.07952e-22) -(3.86771 -0.473002 1.33849e-22) -(3.88087 -0.468616 7.53202e-23) -(3.89453 -0.464474 3.78283e-22) -(3.90876 -0.460595 -5.68188e-22) -(3.92365 -0.456992 -8.10486e-23) -(3.93926 -0.453667 -4.09848e-22) -(3.95571 -0.450612 -9.69004e-23) -(3.97312 -0.447801 -1.295e-22) -(3.99162 -0.445198 1.21638e-21) -(4.01139 -0.442747 9.11716e-22) -(4.03256 -0.440397 4.66417e-22) -(4.05557 -0.438052 -5.89529e-23) -(4.08002 -0.435761 -7.21192e-23) -(4.10844 -0.433134 2.23587e-22) -(4.13347 -0.431239 1.39892e-22) -(-0.0127595 0.380942 1.04757e-21) -(-0.0306339 0.46094 -1.12601e-21) -(-0.04241 0.474087 -3.4645e-22) -(-0.0496243 0.471802 3.13148e-22) -(-0.0526714 0.46442 9.17436e-22) -(-0.0524581 0.455237 3.04263e-22) -(-0.0497401 0.445706 3.97718e-22) -(-0.0451204 0.436482 7.79703e-22) -(-0.0390261 0.427863 1.86777e-22) -(-0.0317582 0.419968 4.36057e-22) -(-0.0235151 0.412795 5.34431e-22) -(-0.0144088 0.40629 -2.7309e-22) -(-0.00450512 0.400348 -1.27829e-22) -(0.00622627 0.394826 -5.91523e-24) -(0.0177973 0.389637 3.60409e-22) -(0.0303612 0.384651 1.72356e-22) -(0.0440731 0.379768 5.65301e-22) -(0.0591186 0.3749 2.65898e-22) -(0.0756914 0.369973 1.6828e-22) -(0.0939928 0.364917 -3.01905e-22) -(0.114222 0.359674 3.27023e-22) -(0.13657 0.354195 1.34533e-22) -(0.161211 0.348444 2.3749e-22) -(0.18829 0.342395 1.6065e-22) -(0.217916 0.336037 -4.52606e-22) -(0.250153 0.329374 -2.57276e-23) -(0.285012 0.322419 -4.95026e-22) -(0.322455 0.3152 3.99313e-22) -(0.362392 0.307747 -5.68252e-22) -(0.404694 0.300084 -4.84427e-22) -(0.449211 0.292233 -1.04674e-21) -(0.495779 0.284222 -8.91534e-22) -(0.544215 0.276088 -5.95484e-22) -(0.594324 0.267869 -3.06473e-22) -(0.645905 0.259603 -1.45276e-23) -(0.698756 0.251325 3.83947e-22) -(0.752678 0.243067 3.02513e-22) -(0.807482 0.234855 4.99794e-22) -(0.862988 0.226714 5.80697e-22) -(0.919028 0.218661 2.41408e-22) -(0.975448 0.210712 6.01727e-23) -(1.03211 0.202878 -3.1379e-22) -(1.08888 0.195167 2.60805e-22) -(1.14565 0.187583 1.58614e-22) -(1.20231 0.180131 7.10084e-23) -(1.25878 0.172811 4.06559e-23) -(1.31498 0.165625 2.01739e-22) -(1.37083 0.15857 -8.84673e-23) -(1.42627 0.151632 -1.0093e-22) -(1.48124 0.14479 -5.6724e-23) -(1.53572 0.13803 8.34592e-23) -(1.58967 0.131343 4.45183e-22) -(1.64306 0.124721 5.77285e-22) -(1.69585 0.118156 5.39453e-22) -(1.74803 0.111641 2.08873e-22) -(1.79957 0.105168 9.59531e-23) -(1.85046 0.098729 -4.76547e-23) -(1.90068 0.0923168 -4.08156e-22) -(1.95023 0.0859249 3.81182e-22) -(1.99909 0.0795482 3.52799e-23) -(2.04726 0.0731799 -5.65405e-23) -(2.09475 0.0667939 -1.8732e-22) -(2.14157 0.0603631 -2.1516e-23) -(2.18772 0.0538788 -1.59344e-22) -(2.23321 0.0473369 2.04941e-23) -(2.27803 0.0407331 1.42219e-22) -(2.32221 0.0340629 3.50723e-23) -(2.36575 0.0273235 1.8036e-22) -(2.40867 0.0205124 -2.76434e-22) -(2.45103 0.0135955 -2.70396e-22) -(2.49282 0.00654242 -1.3785e-22) -(2.53404 -0.000647651 -2.14786e-22) -(2.57471 -0.00798672 2.93841e-23) -(2.61484 -0.0155127 1.35342e-22) -(2.65459 -0.0232529 1.38688e-22) -(2.694 -0.0311681 2.6469e-22) -(2.7329 -0.0392303 1.44157e-22) -(2.77124 -0.0474777 -1.91976e-22) -(2.80898 -0.0559728 -4.18093e-22) -(2.84577 -0.0646767 -3.44976e-23) -(2.88186 -0.0735563 6.29899e-23) -(2.91726 -0.0826309 3.7794e-23) -(2.95195 -0.0919233 -6.6234e-23) -(2.98591 -0.101465 -2.53351e-22) -(3.01914 -0.111262 -5.54488e-23) -(3.05163 -0.121303 -2.08959e-22) -(3.08338 -0.131598 5.99267e-23) -(3.11437 -0.142144 3.14985e-22) -(3.14459 -0.152925 -1.01117e-22) -(3.17404 -0.163932 -1.30777e-22) -(3.20273 -0.175147 9.30265e-23) -(3.23066 -0.186549 4.52368e-23) -(3.25784 -0.198117 -1.69382e-22) -(3.28427 -0.20983 1.28335e-23) -(3.30997 -0.221669 3.3574e-22) -(3.33496 -0.233611 8.32244e-23) -(3.35925 -0.245636 1.93259e-22) -(3.38286 -0.257725 6.17823e-23) -(3.40581 -0.269857 4.57674e-23) -(3.42811 -0.282012 2.74245e-22) -(3.44978 -0.294171 5.93058e-23) -(3.47084 -0.306312 2.65306e-22) -(3.49131 -0.318415 2.459e-23) -(3.51121 -0.33046 -1.59291e-22) -(3.53054 -0.342426 3.73569e-22) -(3.54934 -0.354292 -6.90349e-23) -(3.56761 -0.36604 -7.20943e-23) -(3.58537 -0.377649 3.57139e-22) -(3.60264 -0.389099 3.81434e-22) -(3.61944 -0.400372 8.44937e-23) -(3.63577 -0.411449 2.51549e-22) -(3.65165 -0.422311 3.70656e-22) -(3.6671 -0.432941 2.66024e-22) -(3.68212 -0.443321 3.39668e-23) -(3.69674 -0.453433 1.81767e-22) -(3.71095 -0.46326 4.22516e-23) -(3.72477 -0.472786 -1.226e-22) -(3.73822 -0.481995 2.25568e-22) -(3.75129 -0.490871 2.39154e-22) -(3.76401 -0.499399 -8.42987e-24) -(3.77638 -0.507566 7.85761e-23) -(3.78841 -0.515358 3.76786e-22) -(3.80012 -0.522764 1.50917e-22) -(3.8115 -0.529771 5.47785e-23) -(3.82257 -0.53637 -1.35135e-22) -(3.83334 -0.54255 -8.73808e-23) -(3.84382 -0.548302 2.7114e-22) -(3.85401 -0.553619 1.37112e-22) -(3.86393 -0.558493 -2.51975e-22) -(3.87358 -0.562919 -2.13933e-22) -(3.88297 -0.566893 2.96999e-22) -(3.89212 -0.570411 4.01362e-22) -(3.90103 -0.57347 9.10781e-23) -(3.9097 -0.576071 6.65971e-23) -(3.91816 -0.578214 1.21947e-22) -(3.92641 -0.579899 1.82094e-22) -(3.93446 -0.58113 2.11569e-22) -(3.94232 -0.581911 2.31788e-22) -(3.95 -0.582249 5.40594e-22) -(3.95752 -0.58215 1.97627e-22) -(3.96488 -0.581622 -1.51049e-22) -(3.97209 -0.580677 1.46834e-22) -(3.97918 -0.579324 3.58539e-22) -(3.98615 -0.577577 -5.69448e-23) -(3.99301 -0.575451 -5.54273e-23) -(3.99978 -0.572959 -3.57812e-22) -(4.00647 -0.570121 -1.04731e-22) -(4.0131 -0.566953 4.30482e-22) -(4.01968 -0.563477 -1.05661e-22) -(4.02623 -0.559712 3.54663e-22) -(4.03276 -0.555682 4.88206e-22) -(4.0393 -0.55141 5.24342e-23) -(4.04585 -0.546922 2.86005e-23) -(4.05244 -0.542244 -7.22966e-23) -(4.05909 -0.537403 1.99858e-22) -(4.06583 -0.532429 -1.10498e-22) -(4.07267 -0.527353 -2.95898e-22) -(4.07963 -0.522205 1.57218e-22) -(4.08676 -0.517018 6.68719e-22) -(4.09407 -0.511827 3.23799e-22) -(4.1016 -0.506666 2.49084e-22) -(4.10939 -0.50157 1.91511e-22) -(4.11746 -0.496577 9.6439e-23) -(4.12588 -0.491723 4.83306e-22) -(4.13467 -0.487044 2.60314e-22) -(4.14389 -0.482575 4.5377e-22) -(4.15361 -0.478349 -2.62713e-22) -(4.16387 -0.474395 -1.04723e-22) -(4.17476 -0.470738 -1.98345e-22) -(4.18636 -0.467394 -2.06349e-22) -(4.19875 -0.464372 -1.48219e-22) -(4.21204 -0.461669 -2.21718e-22) -(4.22637 -0.459267 3.74974e-22) -(4.24186 -0.457141 -2.12293e-22) -(4.2587 -0.455245 9.78131e-23) -(4.27704 -0.453542 3.00931e-22) -(4.29726 -0.451945 -6.40784e-23) -(4.31907 -0.450518 4.85656e-22) -(4.3447 -0.448839 -5.36196e-22) -(4.36755 -0.448076 -4.54796e-22) -(-0.0202393 0.410981 8.04822e-22) -(-0.0451274 0.481317 1.18784e-22) -(-0.0580875 0.485852 2.13214e-22) -(-0.064379 0.476963 6.36307e-23) -(-0.0650673 0.464813 -2.97449e-22) -(-0.0618141 0.45211 2.40838e-23) -(-0.0556845 0.440006 2.61276e-22) -(-0.0474267 0.428871 -2.4179e-22) -(-0.0374722 0.418794 1.56099e-22) -(-0.0260373 0.409746 7.35946e-22) -(-0.0131794 0.401563 8.2527e-22) -(0.00116344 0.394081 1.46653e-21) -(0.0170413 0.387167 -3.58542e-22) -(0.034628 0.380582 -7.9477e-23) -(0.0542809 0.374085 2.0226e-22) -(0.0764193 0.36748 2.25478e-22) -(0.101453 0.360633 1.95351e-22) -(0.129764 0.353448 1.92314e-23) -(0.161665 0.345864 -6.84382e-22) -(0.197382 0.337853 -5.63203e-22) -(0.237025 0.329414 -1.51038e-21) -(0.280589 0.320571 -4.90336e-22) -(0.327961 0.311368 -9.67716e-23) -(0.378927 0.301862 2.05034e-23) -(0.433204 0.292122 -8.02763e-23) -(0.490453 0.282222 -3.5079e-22) -(0.550302 0.272242 2.88981e-22) -(0.612368 0.262262 -5.93015e-22) -(0.676259 0.252349 -2.19579e-22) -(0.741606 0.242535 1.353e-22) -(0.808089 0.232833 -8.91077e-24) -(0.87542 0.223268 -6.35565e-22) -(0.943339 0.213872 -4.2491e-22) -(1.0116 0.204672 -2.12691e-22) -(1.08 0.195688 -8.76964e-23) -(1.14833 0.186935 -2.56693e-22) -(1.21643 0.178424 4.30308e-23) -(1.28416 0.170158 1.72422e-22) -(1.35138 0.162138 1.66015e-22) -(1.418 0.15436 -1.00104e-22) -(1.48393 0.146817 -2.78474e-23) -(1.54909 0.139502 -4.31616e-23) -(1.61343 0.132404 2.57061e-22) -(1.6769 0.125514 1.06878e-22) -(1.73947 0.118819 -1.64065e-24) -(1.8011 0.112311 1.61533e-22) -(1.86178 0.105981 -4.323e-22) -(1.92148 0.0998192 -2.47804e-22) -(1.98022 0.0937966 -7.23165e-23) -(2.03798 0.0878799 -5.44035e-23) -(2.09479 0.0820534 -1.18188e-22) -(2.15064 0.0763067 7.61264e-23) -(2.20553 0.0706303 9.29064e-23) -(2.25948 0.0650139 -1.35138e-22) -(2.31247 0.0594473 4.99291e-23) -(2.36452 0.0539198 6.90512e-23) -(2.41564 0.0484207 3.94288e-23) -(2.46584 0.0429391 -1.14692e-22) -(2.51514 0.0374654 -4.20911e-22) -(2.56356 0.0319926 -1.81098e-22) -(2.61113 0.0265168 -3.96611e-22) -(2.6579 0.0210038 -1.01827e-22) -(2.70389 0.0154203 2.81258e-22) -(2.7491 0.0097651 4.4362e-22) -(2.79354 0.00403731 -1.00505e-23) -(2.83722 -0.00176974 -3.1131e-22) -(2.88014 -0.00767089 -5.02752e-22) -(2.92235 -0.0136964 -1.62479e-22) -(2.96392 -0.0198909 -2.33198e-22) -(3.00509 -0.0262383 -2.59165e-22) -(3.04564 -0.0326812 -1.1538e-22) -(3.08555 -0.0392325 2.80398e-23) -(3.12479 -0.0459235 -9.20848e-23) -(3.16333 -0.0527991 2.56357e-22) -(3.20104 -0.05987 6.25646e-23) -(3.23785 -0.0670962 8.59873e-23) -(3.27393 -0.0744659 1.31808e-22) -(3.30932 -0.0820012 1.13938e-22) -(3.34403 -0.0897111 1.61886e-22) -(3.37802 -0.097625 -5.48315e-23) -(3.4113 -0.105777 -1.14529e-22) -(3.4439 -0.114162 -2.77594e-23) -(3.47581 -0.122779 -1.74489e-22) -(3.50704 -0.131643 -1.01838e-22) -(3.53758 -0.140764 -2.6018e-23) -(3.56743 -0.150135 1.44507e-23) -(3.59658 -0.159761 1.86413e-22) -(3.62503 -0.16964 8.61206e-23) -(3.65276 -0.17976 -1.32376e-22) -(3.67978 -0.190111 -2.80125e-22) -(3.70608 -0.200677 -1.17704e-22) -(3.73167 -0.21144 -2.39304e-23) -(3.75655 -0.222382 -2.89268e-23) -(3.78072 -0.233482 -5.021e-23) -(3.8042 -0.244722 -2.7369e-22) -(3.827 -0.25608 -3.80605e-23) -(3.84912 -0.267538 1.21347e-22) -(3.87057 -0.279074 2.9881e-22) -(3.89138 -0.290669 1.97688e-22) -(3.91156 -0.302303 -1.59913e-22) -(3.93111 -0.313955 1.02819e-22) -(3.95005 -0.325604 1.8404e-22) -(3.96839 -0.337231 2.09095e-22) -(3.98615 -0.348814 2.57816e-22) -(4.00334 -0.360332 4.82992e-22) -(4.01998 -0.371764 3.07835e-22) -(4.03607 -0.383091 1.39316e-22) -(4.05163 -0.394291 -4.8709e-23) -(4.06668 -0.405346 3.99524e-23) -(4.08122 -0.416235 2.93367e-22) -(4.09527 -0.426939 2.32271e-22) -(4.10883 -0.437439 -1.93713e-23) -(4.12193 -0.447716 1.6178e-22) -(4.13456 -0.457753 1.85304e-22) -(4.14674 -0.467531 -7.41203e-24) -(4.15848 -0.477034 -1.39269e-23) -(4.16979 -0.486243 5.29329e-23) -(4.18068 -0.495144 4.23894e-24) -(4.19116 -0.50372 1.78557e-23) -(4.20123 -0.511956 2.70888e-22) -(4.21091 -0.519837 3.1737e-22) -(4.2202 -0.527352 1.82448e-22) -(4.22912 -0.534487 1.22652e-22) -(4.23766 -0.541231 5.38828e-23) -(4.24585 -0.547572 2.00369e-22) -(4.25369 -0.553501 2.15521e-23) -(4.26119 -0.55901 -1.2318e-22) -(4.26835 -0.564089 1.67822e-22) -(4.27519 -0.568732 -4.38554e-23) -(4.28172 -0.572934 1.76627e-23) -(4.28794 -0.576689 1.24888e-22) -(4.29388 -0.579996 7.42773e-23) -(4.29953 -0.582851 2.77467e-23) -(4.3049 -0.585254 2.62244e-23) -(4.31002 -0.587205 9.33892e-23) -(4.31489 -0.588706 -6.8554e-23) -(4.31952 -0.58976 -7.14978e-23) -(4.32393 -0.590371 1.30565e-22) -(4.32812 -0.590546 5.0243e-22) -(4.33212 -0.590291 7.21686e-22) -(4.33593 -0.589615 5.86574e-22) -(4.33957 -0.588529 2.43104e-22) -(4.34306 -0.587044 9.54439e-25) -(4.3464 -0.585172 -8.0964e-23) -(4.34962 -0.582929 -3.90567e-23) -(4.35273 -0.580329 -7.1561e-23) -(4.35575 -0.57739 -2.26493e-22) -(4.35869 -0.574132 1.81165e-22) -(4.36157 -0.570573 2.03252e-22) -(4.36442 -0.566735 1.77584e-22) -(4.36725 -0.562641 6.74531e-22) -(4.37008 -0.558316 6.57798e-22) -(4.37293 -0.553784 1.57923e-22) -(4.37583 -0.549074 3.55169e-22) -(4.37879 -0.544212 3.72497e-22) -(4.38185 -0.539229 2.92721e-22) -(4.38503 -0.534155 1.78588e-22) -(4.38835 -0.529023 3.25104e-22) -(4.39185 -0.523867 -2.94368e-22) -(4.39557 -0.518722 -1.15993e-22) -(4.39952 -0.513623 -2.664e-22) -(4.40376 -0.508608 -2.84854e-22) -(4.40832 -0.503714 -1.55168e-23) -(4.41325 -0.49898 1.53339e-22) -(4.41859 -0.494444 2.49294e-22) -(4.42441 -0.490143 -5.02073e-23) -(4.43075 -0.486113 -4.83638e-22) -(4.4377 -0.482386 -1.56345e-22) -(4.44532 -0.478991 -6.11762e-23) -(4.4537 -0.475949 -3.40941e-22) -(4.46293 -0.473273 -8.27717e-23) -(4.47313 -0.470968 -1.22576e-22) -(4.48443 -0.469025 -2.38607e-22) -(4.49697 -0.467425 -3.31693e-22) -(4.51094 -0.466135 9.8204e-23) -(4.52649 -0.465128 3.27884e-22) -(4.54397 -0.464326 3.4168e-22) -(4.56316 -0.463806 -7.80904e-22) -(4.58602 -0.463116 -7.42573e-22) -(4.60681 -0.46351 -9.07024e-23) -(-0.0330746 0.453678 1.60222e-21) -(-0.0670128 0.504144 1.95581e-22) -(-0.0788241 0.49594 -3.99289e-22) -(-0.0823032 0.479046 -1.72879e-22) -(-0.0785132 0.461774 -4.2859e-22) -(-0.0700146 0.445477 -6.762e-22) -(-0.057893 0.430871 -1.00782e-21) -(-0.0426732 0.417851 -3.60967e-22) -(-0.0245326 0.40601 -2.97411e-22) -(-0.00319785 0.39507 1.06896e-22) -(0.0218616 0.384742 1.04728e-21) -(0.050841 0.374895 5.46781e-22) -(0.084425 0.365179 1.05787e-21) -(0.123158 0.355189 -2.68235e-22) -(0.167614 0.344665 1.22934e-22) -(0.218118 0.333535 4.62251e-22) -(0.274659 0.321834 -7.64587e-22) -(0.336939 0.309647 -2.36483e-22) -(0.404447 0.297089 3.71451e-22) -(0.476535 0.284292 -1.25458e-22) -(0.552482 0.27139 -2.15253e-22) -(0.631555 0.258509 -4.89505e-22) -(0.713041 0.245763 -1.97064e-22) -(0.796281 0.23325 6.60169e-23) -(0.880681 0.22105 6.63616e-22) -(0.96572 0.209227 8.64846e-22) -(1.05095 0.197835 9.75117e-22) -(1.13599 0.186917 7.89975e-22) -(1.22051 0.176497 6.39585e-22) -(1.30426 0.166532 -3.04283e-22) -(1.38706 0.156968 -3.05434e-22) -(1.46878 0.147791 1.03714e-22) -(1.54929 0.138999 4.3798e-23) -(1.6285 0.130584 2.86949e-22) -(1.70632 0.122537 2.93944e-22) -(1.78268 0.114843 -8.70815e-23) -(1.85755 0.107486 2.30003e-22) -(1.93089 0.100447 8.09787e-23) -(2.00269 0.0937069 2.84395e-23) -(2.07296 0.0872463 1.2451e-22) -(2.14169 0.0810452 -4.8181e-23) -(2.20889 0.0750838 -1.02919e-22) -(2.2746 0.0693433 -4.30123e-23) -(2.33883 0.0638052 -2.15191e-23) -(2.40161 0.0584521 4.39993e-22) -(2.46298 0.0532683 2.93943e-22) -(2.52297 0.0482423 5.072e-22) -(2.58162 0.043367 4.91539e-22) -(2.63902 0.0386037 2.20179e-22) -(2.69518 0.033909 1.61753e-22) -(2.75015 0.0292735 2.13887e-22) -(2.80394 0.024692 5.53138e-24) -(2.85657 0.0201571 3.94915e-24) -(2.90805 0.015659 5.1483e-23) -(2.95842 0.0111869 6.81559e-23) -(3.00771 0.00672869 9.77929e-23) -(3.05593 0.00227202 2.20151e-22) -(3.10313 -0.00219712 5.21538e-22) -(3.14933 -0.0066967 4.74895e-22) -(3.1946 -0.0112559 -3.21658e-23) -(3.239 -0.0159188 -1.67929e-22) -(3.28278 -0.0206789 -1.75538e-22) -(3.32576 -0.0254877 -3.87941e-22) -(3.36794 -0.0303505 -2.68908e-22) -(3.40929 -0.0352838 4.60708e-23) -(3.44983 -0.040306 3.22414e-22) -(3.48957 -0.0454391 6.35575e-23) -(3.52851 -0.0507159 -3.28459e-22) -(3.56661 -0.0561701 -2.6298e-22) -(3.60368 -0.0617652 -3.85065e-22) -(3.63993 -0.0674684 -1.59066e-22) -(3.67542 -0.0732934 7.23237e-24) -(3.7102 -0.079261 1.62212e-22) -(3.74429 -0.0853824 2.43189e-25) -(3.77768 -0.0916687 -7.50387e-23) -(3.81036 -0.0981453 -8.24132e-23) -(3.84235 -0.104828 2.06102e-22) -(3.87367 -0.111715 1.27813e-22) -(3.90436 -0.1188 2.44057e-22) -(3.93442 -0.126099 1.19336e-22) -(3.96386 -0.133637 2.20333e-22) -(3.99267 -0.141419 1.13955e-22) -(4.02086 -0.149445 7.79513e-23) -(4.04844 -0.157723 -1.42932e-22) -(4.07541 -0.16626 9.94377e-23) -(4.10175 -0.175054 -2.01806e-24) -(4.12747 -0.184104 7.23093e-23) -(4.15256 -0.193409 -7.11379e-24) -(4.17702 -0.202957 -1.34513e-22) -(4.20083 -0.21274 8.24096e-23) -(4.224 -0.222743 7.03179e-23) -(4.24653 -0.23295 -2.27802e-22) -(4.26841 -0.243344 -1.25758e-22) -(4.28965 -0.253905 8.13174e-25) -(4.31026 -0.264615 2.62e-24) -(4.33022 -0.275455 2.76152e-22) -(4.34957 -0.286405 3.3566e-22) -(4.36829 -0.297445 1.34031e-22) -(4.3864 -0.308554 1.42507e-22) -(4.40391 -0.319714 -7.15053e-23) -(4.42083 -0.330904 -1.6261e-23) -(4.43715 -0.342102 1.8135e-22) -(4.4529 -0.353288 3.9442e-22) -(4.46808 -0.364441 3.51424e-22) -(4.4827 -0.37554 -1.94174e-22) -(4.49677 -0.386565 5.47314e-23) -(4.5103 -0.397494 2.41477e-22) -(4.52329 -0.408306 8.81813e-23) -(4.53577 -0.418983 2.46821e-23) -(4.54773 -0.429503 -8.61714e-24) -(4.55918 -0.439847 2.19147e-22) -(4.57014 -0.449996 4.67866e-22) -(4.5806 -0.45993 1.59472e-22) -(4.59059 -0.469632 1.29961e-22) -(4.6001 -0.479083 -1.1646e-23) -(4.60915 -0.488266 1.39823e-22) -(4.61774 -0.497163 7.88537e-23) -(4.62588 -0.505758 -1.7532e-23) -(4.63357 -0.514035 3.0178e-22) -(4.64084 -0.521979 2.5799e-22) -(4.64767 -0.529577 2.99925e-22) -(4.65409 -0.536813 2.29188e-22) -(4.66009 -0.543676 3.78276e-23) -(4.66569 -0.550155 -4.48107e-23) -(4.6709 -0.556237 4.63157e-24) -(4.67572 -0.561914 2.28755e-22) -(4.68016 -0.567177 1.25801e-22) -(4.68423 -0.572017 -4.31332e-23) -(4.68795 -0.576428 -3.31352e-23) -(4.69131 -0.580404 2.4122e-23) -(4.69434 -0.58394 2.79567e-22) -(4.69704 -0.587035 9.91762e-23) -(4.69942 -0.589685 -6.49099e-23) -(4.7015 -0.59189 -3.0332e-23) -(4.70329 -0.593651 9.37338e-23) -(4.70479 -0.594969 1.24667e-22) -(4.70603 -0.595848 -7.80323e-23) -(4.70701 -0.596292 1.13859e-22) -(4.70776 -0.596308 2.45552e-23) -(4.70828 -0.595902 2.38099e-22) -(4.7086 -0.595084 5.12093e-22) -(4.70872 -0.593864 1.52807e-22) -(4.70866 -0.592253 2.94139e-22) -(4.70845 -0.590265 3.14875e-22) -(4.7081 -0.587915 1.23797e-23) -(4.70762 -0.585217 3.08074e-23) -(4.70705 -0.582191 9.85466e-23) -(4.70638 -0.578854 -2.65443e-22) -(4.70566 -0.575227 2.7228e-22) -(4.7049 -0.571332 6.71668e-23) -(4.70411 -0.567191 -4.10303e-23) -(4.70333 -0.56283 6.40884e-22) -(4.70257 -0.558274 4.84388e-22) -(4.70187 -0.55355 1.52997e-22) -(4.70125 -0.548688 4.47045e-23) -(4.70072 -0.543718 4.36695e-22) -(4.70034 -0.53867 5.82936e-22) -(4.70012 -0.533579 2.45668e-23) -(4.70009 -0.528479 -5.48716e-23) -(4.7003 -0.523405 8.27632e-23) -(4.70077 -0.518395 1.60175e-23) -(4.70155 -0.513488 6.13861e-23) -(4.70269 -0.508722 -5.98734e-22) -(4.70422 -0.504137 -4.25301e-22) -(4.7062 -0.499775 -4.04739e-23) -(4.70869 -0.495674 -1.59945e-22) -(4.71175 -0.491873 4.34662e-22) -(4.71545 -0.488409 -2.57557e-22) -(4.71988 -0.485312 -2.3683e-22) -(4.72511 -0.482609 -2.05189e-22) -(4.73125 -0.480321 -6.30208e-22) -(4.73842 -0.478456 -4.13358e-22) -(4.74675 -0.477015 -7.17686e-22) -(4.7564 -0.475988 -3.69439e-22) -(4.76754 -0.475351 -4.97364e-22) -(4.78034 -0.475085 2.09748e-23) -(4.79513 -0.475123 2.26692e-22) -(4.81175 -0.475548 -2.5481e-22) -(4.83185 -0.475886 -1.22335e-21) -(4.85068 -0.477452 -2.99619e-22) -(-0.0556107 0.516579 1.26696e-21) -(-0.0996133 0.527569 7.87617e-22) -(-0.104604 0.503415 -3.02378e-22) -(-0.0996211 0.47766 -3.83011e-22) -(-0.0840346 0.455003 -9.59183e-22) -(-0.0610684 0.434169 2.02861e-23) -(-0.0307047 0.415069 -6.9937e-22) -(0.00898876 0.396922 -2.07118e-22) -(0.0578197 0.379507 1.23988e-21) -(0.116375 0.362369 8.56941e-22) -(0.185023 0.345286 -4.44793e-22) -(0.262944 0.328437 -3.26964e-22) -(0.349104 0.311668 8.45773e-22) -(0.442366 0.294597 2.89164e-22) -(0.541668 0.277222 1.79173e-22) -(0.645792 0.259833 -1.77601e-22) -(0.753415 0.242705 -5.94891e-22) -(0.863262 0.226045 -3.24675e-22) -(0.974205 0.210003 -8.98642e-23) -(1.08528 0.194684 -2.29077e-22) -(1.19572 0.180154 3.11615e-22) -(1.30488 0.166446 2.57038e-22) -(1.4123 0.153564 1.03615e-22) -(1.51762 0.141492 2.74694e-22) -(1.62059 0.130203 4.65185e-22) -(1.72104 0.11966 5.27802e-22) -(1.81887 0.10983 1.44294e-22) -(1.91404 0.100689 1.35339e-22) -(2.00654 0.0922129 2.93247e-22) -(2.09647 0.0842804 4.71853e-22) -(2.18387 0.0767685 5.05179e-22) -(2.26877 0.0696481 3.28235e-22) -(2.35121 0.0629094 1.86654e-22) -(2.43122 0.0565386 -8.57142e-23) -(2.50883 0.0505162 -1.29874e-22) -(2.58412 0.0448191 1.61628e-22) -(2.65714 0.0394227 -5.36915e-23) -(2.72798 0.0343019 -2.68529e-22) -(2.7967 0.0294322 -3.62622e-22) -(2.86339 0.02479 -3.57522e-22) -(2.92812 0.0203531 -3.74095e-22) -(2.99097 0.0161004 -3.37149e-22) -(3.05201 0.0120119 -5.57235e-23) -(3.11132 0.00806869 2.89286e-22) -(3.16897 0.00425165 9.77534e-23) -(3.22503 0.000539526 -7.04999e-23) -(3.27959 -0.00309776 2.1271e-24) -(3.33276 -0.00670675 -5.06873e-23) -(3.3848 -0.0102913 1.58326e-22) -(3.43559 -0.0138124 8.60691e-23) -(3.48514 -0.0172771 1.82589e-22) -(3.53345 -0.0207029 4.58405e-22) -(3.58055 -0.024107 4.43602e-22) -(3.62649 -0.0275049 1.7227e-22) -(3.67131 -0.0309108 1.06835e-22) -(3.71504 -0.0343379 1.21324e-22) -(3.75772 -0.0377996 2.38195e-22) -(3.7994 -0.0413102 1.71983e-22) -(3.84011 -0.044888 1.28593e-22) -(3.87988 -0.0485609 2.62958e-22) -(3.91868 -0.0523622 1.86822e-22) -(3.95637 -0.0562655 -3.55135e-23) -(3.99312 -0.0602403 -1.97207e-22) -(4.02902 -0.0642952 -9.49767e-23) -(4.06412 -0.0684465 -9.92494e-23) -(4.09846 -0.0727101 -1.38717e-22) -(4.13206 -0.0771012 2.20771e-23) -(4.16496 -0.08163 -7.97644e-23) -(4.19715 -0.0862982 -5.13539e-23) -(4.2286 -0.0911237 3.77485e-23) -(4.25935 -0.0961262 -1.75969e-22) -(4.28943 -0.101305 -5.41539e-23) -(4.31887 -0.106661 -9.07302e-23) -(4.34769 -0.112193 -2.4641e-22) -(4.37592 -0.117906 8.35817e-24) -(4.40356 -0.123818 5.19178e-23) -(4.43062 -0.129945 -2.27157e-22) -(4.45711 -0.136292 -4.61401e-23) -(4.48306 -0.142857 -1.21693e-22) -(4.50846 -0.149647 7.80062e-23) -(4.53334 -0.156682 1.17963e-22) -(4.55768 -0.163967 9.88161e-23) -(4.5815 -0.171506 5.21116e-23) -(4.60479 -0.179302 -7.35976e-23) -(4.62756 -0.187359 -2.45232e-22) -(4.64979 -0.195676 7.62366e-23) -(4.67149 -0.204251 8.62798e-23) -(4.69265 -0.213081 8.27937e-23) -(4.71326 -0.222156 1.25064e-22) -(4.73332 -0.231467 2.83648e-22) -(4.75281 -0.241001 1.4097e-22) -(4.77175 -0.250742 8.14604e-23) -(4.79012 -0.260674 2.08188e-24) -(4.80792 -0.270779 -7.94711e-23) -(4.82515 -0.281039 3.51603e-24) -(4.84182 -0.291434 2.48767e-23) -(4.85792 -0.301946 1.88022e-22) -(4.87347 -0.312556 1.95069e-22) -(4.88845 -0.323242 1.57727e-22) -(4.90287 -0.333986 8.94584e-24) -(4.91675 -0.344767 1.95221e-22) -(4.93007 -0.355563 9.00395e-23) -(4.94285 -0.366355 1.67552e-22) -(4.9551 -0.377122 1.80246e-22) -(4.9668 -0.387842 1.32318e-23) -(4.97798 -0.398494 5.1924e-23) -(4.98863 -0.409059 1.30764e-22) -(4.99876 -0.419514 8.39867e-23) -(5.00838 -0.42984 1.40895e-23) -(5.01749 -0.440016 -3.94959e-23) -(5.02609 -0.450023 -1.38465e-22) -(5.0342 -0.459841 -2.58342e-22) -(5.04181 -0.469451 -1.08414e-22) -(5.04894 -0.478834 1.35495e-22) -(5.05558 -0.487973 2.08487e-22) -(5.06174 -0.496849 1.39721e-22) -(5.06744 -0.505445 2.29704e-22) -(5.07267 -0.513745 2.90763e-23) -(5.07744 -0.521733 -6.86442e-23) -(5.08175 -0.529394 8.57219e-23) -(5.08562 -0.536714 2.15969e-23) -(5.08904 -0.543678 9.86294e-23) -(5.09203 -0.550275 5.57155e-24) -(5.0946 -0.556493 7.77912e-23) -(5.09674 -0.562322 1.92211e-22) -(5.09848 -0.56775 -7.89268e-23) -(5.09981 -0.572771 1.87939e-22) -(5.10074 -0.577375 3.79423e-22) -(5.10129 -0.581557 3.33618e-23) -(5.10147 -0.58531 1.38027e-24) -(5.10128 -0.588631 3.54305e-24) -(5.10074 -0.591517 -1.30869e-24) -(5.09985 -0.593966 4.07783e-23) -(5.09864 -0.595977 1.64604e-22) -(5.09711 -0.597551 1.58089e-22) -(5.09527 -0.598691 6.12148e-23) -(5.09315 -0.599399 -8.51004e-23) -(5.09075 -0.599681 4.98635e-23) -(5.08809 -0.599543 1.48808e-22) -(5.08519 -0.598993 6.54654e-23) -(5.08207 -0.598039 1.58271e-22) -(5.07874 -0.596693 3.08484e-22) -(5.07521 -0.594965 2.03473e-22) -(5.07152 -0.59287 3.83367e-22) -(5.06767 -0.590423 4.66811e-22) -(5.0637 -0.587639 6.55472e-24) -(5.05961 -0.584536 1.89752e-23) -(5.05544 -0.581133 -1.16669e-22) -(5.0512 -0.577452 -4.75346e-23) -(5.04691 -0.573513 2.37415e-23) -(5.04261 -0.569341 1.09051e-22) -(5.03832 -0.56496 2.63165e-22) -(5.03406 -0.560397 5.6053e-22) -(5.02986 -0.555679 1.86366e-22) -(5.02574 -0.550835 1.34552e-23) -(5.02175 -0.545897 1.25817e-22) -(5.0179 -0.540896 2.55842e-22) -(5.01423 -0.535867 6.70841e-23) -(5.01078 -0.530845 2.94627e-22) -(5.00758 -0.525866 4.04812e-22) -(5.00467 -0.520969 2.07879e-22) -(5.00209 -0.516194 -2.9558e-22) -(4.99989 -0.511581 -7.15404e-23) -(4.99812 -0.507173 -3.77051e-23) -(4.99683 -0.503012 -4.00794e-23) -(4.99608 -0.499139 -1.34112e-22) -(4.99594 -0.495597 6.18385e-24) -(4.99648 -0.492425 4.32984e-22) -(4.99778 -0.489659 2.85343e-23) -(4.99993 -0.487331 4.12367e-22) -(5.00305 -0.485465 1.07054e-23) -(5.00726 -0.484079 -4.02158e-22) -(5.01268 -0.483181 -5.36138e-22) -(5.01948 -0.482768 -2.27821e-22) -(5.02784 -0.482826 8.14274e-23) -(5.03794 -0.483344 -4.32116e-22) -(5.05006 -0.484262 -4.69729e-22) -(5.06414 -0.485667 4.98815e-23) -(5.08151 -0.487073 2.0756e-22) -(5.09847 -0.48982 -3.66824e-22) -(-0.0921023 0.616247 -2.53832e-22) -(-0.142321 0.548133 1.76825e-23) -(-0.110565 0.499848 -7.33982e-22) -(-0.0644262 0.457464 -7.94309e-22) -(0.00781436 0.418907 -3.32003e-22) -(0.101066 0.383377 -3.63126e-23) -(0.211477 0.351063 -2.86989e-23) -(0.338012 0.321063 -1.20218e-22) -(0.476481 0.293164 -3.17653e-22) -(0.623498 0.26706 -2.32502e-22) -(0.775871 0.242713 3.26311e-22) -(0.93049 0.220503 -7.36199e-23) -(1.08536 0.200173 6.26857e-23) -(1.23902 0.180813 3.93818e-22) -(1.39025 0.16216 2.62767e-22) -(1.53797 0.144481 1.42372e-22) -(1.68131 0.128011 1.85767e-22) -(1.81969 0.112851 5.24041e-23) -(1.95278 0.0990066 4.37885e-23) -(2.08045 0.0864194 1.492e-22) -(2.20272 0.0750002 -1.86935e-23) -(2.31969 0.0646447 1.898e-23) -(2.43153 0.0552464 -1.22963e-22) -(2.53845 0.0467031 -1.6488e-22) -(2.64066 0.0389208 -1.58076e-22) -(2.73842 0.0318134 -1.1963e-22) -(2.83197 0.0252979 -2.70409e-23) -(2.92158 0.0192743 4.77648e-23) -(3.00767 0.0136186 1.27817e-22) -(3.09083 0.00830748 1.96549e-22) -(3.17083 0.00340758 2.41183e-22) -(3.24772 -0.00110601 2.35492e-22) -(3.32157 -0.0052805 2.00593e-22) -(3.39252 -0.0091603 1.27543e-22) -(3.46072 -0.0127839 9.26356e-23) -(3.5263 -0.0161845 1.57504e-22) -(3.58942 -0.0193906 -1.9391e-23) -(3.65021 -0.0224272 -2.18678e-23) -(3.70882 -0.0253163 5.58953e-23) -(3.76536 -0.0280774 2.31266e-22) -(3.81995 -0.0307284 1.9504e-22) -(3.87271 -0.0332854 1.20123e-22) -(3.92373 -0.0357639 4.57556e-24) -(3.97311 -0.0381783 -1.51422e-22) -(4.02094 -0.0405441 -1.84526e-22) -(4.06729 -0.0428793 -8.91005e-23) -(4.11225 -0.0452102 -2.49329e-22) -(4.15584 -0.0475717 -1.91903e-22) -(4.19794 -0.0499454 -2.20592e-22) -(4.23876 -0.0523053 -4.2852e-23) -(4.27839 -0.0546594 -7.95941e-23) -(4.31694 -0.0570238 -1.334e-22) -(4.35445 -0.0594134 -5.26717e-23) -(4.391 -0.0618414 -6.06592e-24) -(4.42661 -0.0643197 -1.60556e-23) -(4.46134 -0.0668594 -6.16099e-23) -(4.49523 -0.0694714 -4.41128e-23) -(4.52831 -0.0721666 3.57904e-23) -(4.56061 -0.0749562 6.34234e-23) -(4.59215 -0.077849 2.37435e-23) -(4.62295 -0.0808454 6.60136e-23) -(4.653 -0.0839608 1.67e-23) -(4.68232 -0.0872131 1.08922e-22) -(4.71095 -0.0906025 1.18384e-22) -(4.73893 -0.094131 9.01601e-23) -(4.76629 -0.0978037 2.2293e-22) -(4.79304 -0.101627 3.71106e-23) -(4.81923 -0.105606 -5.11438e-23) -(4.84485 -0.109739 -1.26661e-22) -(4.86993 -0.11404 1.72025e-23) -(4.89447 -0.118528 5.70974e-23) -(4.91849 -0.123207 -3.50957e-23) -(4.942 -0.128081 -5.46518e-23) -(4.96501 -0.13315 -9.76344e-23) -(4.98755 -0.138416 -4.04036e-23) -(5.00963 -0.143893 8.50353e-23) -(5.03125 -0.149593 1.47465e-22) -(5.05243 -0.155522 -2.92501e-23) -(5.07317 -0.161683 -1.53498e-23) -(5.09348 -0.16808 8.38061e-23) -(5.11336 -0.174726 8.04182e-23) -(5.13282 -0.181626 2.29235e-22) -(5.15186 -0.188784 3.3762e-22) -(5.17047 -0.196203 3.07222e-22) -(5.18865 -0.203884 1.32342e-22) -(5.2064 -0.211826 7.44955e-23) -(5.22371 -0.220027 1.14412e-22) -(5.24057 -0.228481 1.56455e-22) -(5.25697 -0.23718 1.36247e-22) -(5.27292 -0.246115 2.72984e-22) -(5.28839 -0.255272 3.03078e-22) -(5.30339 -0.264637 3.86956e-22) -(5.31791 -0.274194 3.00449e-22) -(5.33194 -0.283926 1.11071e-22) -(5.34548 -0.293815 1.3199e-22) -(5.35852 -0.303843 1.18864e-22) -(5.37107 -0.313991 -7.40177e-23) -(5.38312 -0.324239 4.11566e-23) -(5.39467 -0.334567 6.40944e-23) -(5.40573 -0.344957 2.24669e-22) -(5.41628 -0.355386 1.04194e-22) -(5.42632 -0.365837 8.16043e-23) -(5.43587 -0.376286 1.36743e-23) -(5.44492 -0.386714 -1.8346e-23) -(5.45346 -0.397099 8.93474e-23) -(5.4615 -0.407421 1.20714e-22) -(5.46905 -0.41766 1.52229e-22) -(5.4761 -0.427793 5.18108e-23) -(5.48265 -0.437801 1.73699e-22) -(5.4887 -0.447664 1.65867e-22) -(5.49427 -0.457362 -7.19781e-23) -(5.49934 -0.466875 -7.13251e-23) -(5.50393 -0.476185 -6.21276e-23) -(5.50804 -0.485272 -8.4832e-25) -(5.51166 -0.494118 1.17315e-22) -(5.5148 -0.502707 8.29141e-23) -(5.51747 -0.511019 3.47664e-23) -(5.51966 -0.51904 1.30731e-22) -(5.52139 -0.526754 -3.81638e-23) -(5.52265 -0.534144 -1.86841e-23) -(5.52346 -0.541198 -5.66318e-23) -(5.52381 -0.547902 -1.55087e-22) -(5.52371 -0.554244 -8.75293e-24) -(5.52317 -0.560211 1.09386e-23) -(5.5222 -0.565794 -1.05641e-22) -(5.5208 -0.570983 2.02023e-22) -(5.51898 -0.575769 2.86514e-22) -(5.51675 -0.580145 3.53365e-23) -(5.51411 -0.584104 9.96932e-23) -(5.51109 -0.587642 6.03999e-23) -(5.50768 -0.590753 4.28334e-24) -(5.5039 -0.593437 1.25823e-22) -(5.49976 -0.59569 1.63004e-22) -(5.49527 -0.597514 9.31239e-23) -(5.49045 -0.598908 6.04169e-23) -(5.48531 -0.599876 -5.85459e-23) -(5.47987 -0.600421 1.41829e-22) -(5.47414 -0.600548 5.02884e-24) -(5.46813 -0.600264 5.92468e-23) -(5.46187 -0.599576 2.04486e-22) -(5.45537 -0.598495 1.53117e-22) -(5.44866 -0.597031 2.72814e-23) -(5.44174 -0.595196 2.39004e-22) -(5.43465 -0.593003 2.8367e-22) -(5.4274 -0.590469 3.78477e-22) -(5.42001 -0.587609 4.59251e-22) -(5.41251 -0.584441 3.10376e-22) -(5.40492 -0.580985 1.15329e-22) -(5.39727 -0.577262 7.74299e-23) -(5.38957 -0.573293 1.74142e-22) -(5.38186 -0.569103 3.29744e-23) -(5.37416 -0.564717 5.07009e-23) -(5.3665 -0.560162 3.1021e-22) -(5.35891 -0.555466 1.19905e-22) -(5.35142 -0.550658 7.3124e-23) -(5.34405 -0.545769 4.69176e-23) -(5.33685 -0.540834 7.9503e-23) -(5.32985 -0.535886 4.47326e-23) -(5.32308 -0.530961 3.3345e-22) -(5.31658 -0.526097 3.53752e-22) -(5.31039 -0.521335 4.83416e-22) -(5.30456 -0.516714 1.25655e-22) -(5.29912 -0.512277 -1.70849e-22) -(5.29415 -0.508068 -1.05663e-22) -(5.28968 -0.504132 -2.24774e-23) -(5.28578 -0.500513 3.09251e-23) -(5.28252 -0.497256 -2.38295e-23) -(5.27998 -0.494403 -1.87781e-22) -(5.27824 -0.491997 -2.70093e-22) -(5.27739 -0.490073 -9.85766e-23) -(5.27755 -0.488662 2.99093e-22) -(5.27885 -0.487789 6.41693e-22) -(5.28142 -0.487469 3.18618e-22) -(5.28543 -0.487709 -3.36182e-22) -(5.29105 -0.4885 -8.13035e-22) -(5.29848 -0.48984 -5.94133e-22) -(5.30797 -0.491676 -4.51068e-22) -(5.31955 -0.494091 -3.8464e-23) -(5.33419 -0.4966 -1.12326e-22) -(5.34935 -0.500529 -1.86555e-22) -(-0.0728881 0.717934 8.40006e-23) -(-0.0594596 0.475917 -6.53468e-22) -(0.201969 0.408654 -1.91508e-22) -(0.435618 0.364062 -1.47302e-22) -(0.682241 0.316835 -5.99831e-23) -(0.93352 0.271369 -2.59965e-23) -(1.18287 0.2294 1.59577e-22) -(1.42557 0.19119 7.6498e-23) -(1.65795 0.157017 1.21742e-22) -(1.87796 0.126948 3.44171e-23) -(2.08479 0.100875 2.48996e-23) -(2.27828 0.078249 9.90861e-23) -(2.46194 0.0583538 2.08519e-23) -(2.63555 0.0412514 6.34877e-23) -(2.7976 0.0269371 4.20414e-23) -(2.94819 0.0150229 5.35955e-23) -(3.08789 0.00506708 6.25604e-23) -(3.21749 -0.00331917 5.16296e-23) -(3.33788 -0.0104542 4.49434e-23) -(3.44991 -0.0165898 5.40696e-23) -(3.55439 -0.021921 3.80991e-23) -(3.65205 -0.0265982 4.17502e-23) -(3.74355 -0.0307371 8.17209e-23) -(3.82946 -0.034428 3.6769e-23) -(3.91031 -0.0377427 1.24487e-23) -(3.98656 -0.0407414 5.28711e-24) -(4.05862 -0.0434814 3.90537e-23) -(4.12684 -0.0460352 1.63673e-22) -(4.19143 -0.0484748 1.70159e-22) -(4.25231 -0.0507597 1.45492e-22) -(4.31008 -0.0528403 1.47061e-22) -(4.36508 -0.0547339 1.47243e-22) -(4.41761 -0.0564751 1.39438e-22) -(4.46788 -0.0580938 1.07631e-22) -(4.51607 -0.0596141 4.60613e-23) -(4.56235 -0.0610557 3.35949e-23) -(4.60684 -0.0624346 5.37063e-23) -(4.64967 -0.0637646 -2.61414e-23) -(4.69094 -0.0650573 -1.40031e-22) -(4.73076 -0.0663232 -7.81697e-23) -(4.7692 -0.0675716 -1.01144e-23) -(4.80636 -0.0688115 1.25569e-22) -(4.84231 -0.0700513 3.53279e-23) -(4.87712 -0.0712996 -1.90859e-23) -(4.91085 -0.0725652 -8.06087e-23) -(4.94357 -0.0738576 -1.40818e-22) -(4.97532 -0.075184 -1.12416e-22) -(5.00614 -0.0765443 -1.53052e-22) -(5.03605 -0.0779519 -1.36175e-22) -(5.0651 -0.0794247 -1.87157e-22) -(5.09333 -0.0809644 -1.27832e-22) -(5.12079 -0.0825729 -1.45018e-22) -(5.14753 -0.0842542 -1.85347e-22) -(5.17358 -0.0860138 -1.22252e-22) -(5.199 -0.0878582 -3.81147e-23) -(5.2238 -0.0897946 1.28673e-23) -(5.24802 -0.0918308 -1.13784e-22) -(5.27169 -0.0939747 -8.27448e-23) -(5.29483 -0.096234 -9.788e-23) -(5.31745 -0.098614 5.0171e-23) -(5.33958 -0.101115 6.73298e-23) -(5.36124 -0.103748 1.07028e-22) -(5.38242 -0.106528 7.02907e-23) -(5.40314 -0.109461 -7.00968e-23) -(5.42342 -0.112551 -6.41658e-24) -(5.44327 -0.115804 -9.387e-24) -(5.46271 -0.119223 4.2355e-23) -(5.48176 -0.122813 8.54763e-24) -(5.50042 -0.126572 3.24142e-23) -(5.51872 -0.130511 -7.58235e-23) -(5.53665 -0.134643 -1.73551e-23) -(5.55423 -0.138975 -3.34251e-23) -(5.57147 -0.143512 -4.1071e-23) -(5.58835 -0.148256 -4.75942e-23) -(5.60491 -0.15321 -3.00667e-23) -(5.62115 -0.158383 -1.08215e-23) -(5.63707 -0.163783 -1.70185e-23) -(5.65268 -0.169419 -1.49188e-23) -(5.66797 -0.175292 -8.24884e-23) -(5.68295 -0.181408 -7.73491e-23) -(5.69763 -0.187775 -1.61691e-23) -(5.71199 -0.194398 -6.14437e-23) -(5.72605 -0.201281 6.28443e-23) -(5.73978 -0.208424 2.69528e-22) -(5.75319 -0.215829 2.7339e-22) -(5.76626 -0.223494 9.2361e-23) -(5.779 -0.231415 3.02236e-23) -(5.79138 -0.239587 2.73134e-23) -(5.80341 -0.248002 7.13208e-23) -(5.81506 -0.25665 3.02343e-23) -(5.82634 -0.265517 1.08075e-22) -(5.83722 -0.274591 2.45543e-22) -(5.84771 -0.283856 2.03635e-22) -(5.85779 -0.293294 8.33718e-23) -(5.86746 -0.302889 1.75439e-22) -(5.8767 -0.312622 1.31904e-22) -(5.88552 -0.322475 2.29586e-23) -(5.89391 -0.332428 3.46872e-23) -(5.90186 -0.342462 4.1599e-23) -(5.90937 -0.352557 1.08067e-22) -(5.91643 -0.362694 9.02968e-23) -(5.92304 -0.372852 6.64758e-23) -(5.92919 -0.38301 3.08721e-23) -(5.93488 -0.393147 1.03677e-23) -(5.94011 -0.403244 4.82485e-23) -(5.94487 -0.413279 -3.26718e-23) -(5.94916 -0.423231 -5.12069e-23) -(5.95299 -0.43308 1.17065e-22) -(5.95634 -0.442806 2.88475e-24) -(5.95921 -0.452389 -1.30534e-23) -(5.96162 -0.461808 2.00569e-22) -(5.96354 -0.471045 2.59247e-22) -(5.965 -0.480081 9.90115e-23) -(5.96597 -0.488897 -3.2902e-23) -(5.96647 -0.497474 -6.04751e-23) -(5.9665 -0.505796 5.8175e-23) -(5.96605 -0.513846 1.53418e-22) -(5.96514 -0.521606 7.89097e-23) -(5.96375 -0.529062 1.18848e-22) -(5.9619 -0.536199 3.73861e-23) -(5.95958 -0.543003 -8.67976e-23) -(5.95681 -0.549461 -3.87597e-23) -(5.95358 -0.55556 -8.66406e-23) -(5.94991 -0.561289 -3.81372e-23) -(5.94579 -0.566638 9.1353e-23) -(5.94123 -0.571599 3.02061e-23) -(5.93625 -0.576161 5.14627e-23) -(5.93084 -0.580319 6.39882e-23) -(5.92502 -0.584065 1.89951e-22) -(5.9188 -0.587396 1.28502e-22) -(5.91219 -0.590308 -1.33266e-23) -(5.90519 -0.592798 7.21871e-23) -(5.89783 -0.594865 1.71164e-22) -(5.8901 -0.596509 1.19681e-22) -(5.88204 -0.597732 5.01106e-23) -(5.87364 -0.598536 2.10964e-23) -(5.86493 -0.598926 3.47324e-23) -(5.85593 -0.598907 4.82813e-23) -(5.84664 -0.598485 5.65995e-23) -(5.8371 -0.59767 1.52579e-22) -(5.8273 -0.59647 1.35273e-22) -(5.81729 -0.594897 1.43243e-22) -(5.80707 -0.592964 7.04081e-23) -(5.79667 -0.590684 9.3854e-23) -(5.78611 -0.588073 1.6417e-22) -(5.77542 -0.585148 2.4728e-22) -(5.76461 -0.581926 4.49276e-22) -(5.75371 -0.578428 3.06574e-22) -(5.74275 -0.574675 1.45036e-22) -(5.73176 -0.570689 1.46434e-22) -(5.72075 -0.566495 1.98671e-22) -(5.70976 -0.562118 1.11539e-22) -(5.69882 -0.557584 1.0659e-22) -(5.68796 -0.552924 1.86508e-22) -(5.67721 -0.548167 8.89772e-23) -(5.6666 -0.543344 2.6135e-22) -(5.65617 -0.53849 2.19145e-22) -(5.64594 -0.53364 1.64701e-22) -(5.63597 -0.52883 2.39849e-22) -(5.62629 -0.524099 2.8938e-22) -(5.61693 -0.519489 2.30489e-22) -(5.60795 -0.515041 1.64701e-22) -(5.5994 -0.510799 2.48589e-22) -(5.59132 -0.50681 1.37735e-22) -(5.58377 -0.503119 6.60726e-23) -(5.57682 -0.499774 2.84529e-23) -(5.57054 -0.496824 -2.83822e-23) -(5.565 -0.494315 1.25952e-22) -(5.5603 -0.492293 2.45834e-22) -(5.55653 -0.490799 2.13417e-22) -(5.5538 -0.489872 1.90128e-22) -(5.55225 -0.489542 2.16535e-22) -(5.55202 -0.489832 3.69626e-22) -(5.55328 -0.490757 2.77759e-22) -(5.55621 -0.492317 1.43974e-22) -(5.561 -0.494513 -4.89329e-23) -(5.5679 -0.4973 -1.69395e-22) -(5.57699 -0.500753 -4.08047e-22) -(5.58893 -0.504398 7.18445e-23) -(5.60234 -0.509504 -2.63846e-22) -(0.976419 0.39723 6.71634e-23) -(1.40105 0.191496 -5.53001e-23) -(1.97274 0.0953806 -7.5234e-23) -(2.45146 0.0367837 -6.83282e-23) -(2.85625 -0.0048125 -5.86165e-25) -(3.2014 -0.0342926 -3.11179e-24) -(3.49482 -0.053991 1.41007e-23) -(3.74389 -0.0662995 1.32536e-23) -(3.95557 -0.073346 1.32085e-23) -(4.13625 -0.0769287 1.08444e-24) -(4.29145 -0.0784902 -3.87806e-23) -(4.42603 -0.0793115 -2.78422e-23) -(4.5418 -0.079979 -5.10789e-23) -(4.64194 -0.0804606 -3.11229e-23) -(4.73032 -0.0807465 -3.98811e-24) -(4.80949 -0.0809508 -1.07204e-23) -(4.88127 -0.08116 -2.17755e-24) -(4.94694 -0.0814044 8.03385e-24) -(5.00748 -0.0816832 1.34175e-23) -(5.06358 -0.0819837 1.83223e-23) -(5.11582 -0.0822917 1.72215e-23) -(5.16465 -0.082596 3.26522e-23) -(5.21044 -0.0828897 8.81411e-23) -(5.25351 -0.0831704 6.83277e-23) -(5.29413 -0.0834391 6.85361e-23) -(5.33254 -0.0837 6.90419e-23) -(5.36895 -0.0839592 7.37296e-23) -(5.40354 -0.0842176 8.14351e-23) -(5.43644 -0.0844641 4.78135e-23) -(5.46776 -0.0847156 6.88702e-23) -(5.49762 -0.0849972 6.81983e-23) -(5.52612 -0.0853044 7.17801e-23) -(5.5534 -0.0856307 7.0949e-23) -(5.57957 -0.0859718 6.87295e-23) -(5.60472 -0.0863263 7.3478e-23) -(5.62894 -0.0866953 -1.90989e-23) -(5.65229 -0.0870814 -3.82837e-23) -(5.67486 -0.0874878 -2.41396e-23) -(5.69668 -0.0879187 -3.47872e-23) -(5.71782 -0.0883782 -8.19735e-23) -(5.73832 -0.0888706 -3.5479e-23) -(5.75822 -0.0894005 -6.51722e-23) -(5.77756 -0.0899728 -3.58077e-23) -(5.79637 -0.0905924 -3.25111e-23) -(5.81469 -0.0912649 -4.28291e-23) -(5.83255 -0.0919957 -7.408e-23) -(5.84996 -0.0927888 -9.85427e-23) -(5.86696 -0.093644 -6.71057e-23) -(5.88356 -0.0945687 -1.16805e-22) -(5.89978 -0.0955759 -1.0475e-22) -(5.91563 -0.0966706 -9.92073e-23) -(5.93113 -0.0978565 -9.11933e-23) -(5.94631 -0.0991376 -7.98158e-23) -(5.96117 -0.100518 -4.24819e-23) -(5.97575 -0.102004 -6.35376e-23) -(5.99004 -0.1036 -7.9739e-23) -(6.00407 -0.105312 -8.14475e-23) -(6.01786 -0.107147 -6.05904e-23) -(6.0314 -0.109109 -2.99169e-23) -(6.04472 -0.111204 -3.33242e-23) -(6.05781 -0.113432 -3.79596e-23) -(6.0707 -0.115801 7.5675e-24) -(6.08338 -0.118323 1.43991e-23) -(6.09585 -0.121005 -2.01722e-23) -(6.10813 -0.123852 -5.29669e-23) -(6.12021 -0.126869 -1.3176e-22) -(6.13209 -0.130062 -1.32204e-22) -(6.14379 -0.133432 -8.91077e-23) -(6.1553 -0.136981 -6.24373e-23) -(6.16664 -0.140717 -2.71723e-23) -(6.17781 -0.14465 -6.25381e-23) -(6.1888 -0.148785 -6.12475e-23) -(6.19962 -0.153129 -4.11036e-23) -(6.21027 -0.157684 -1.81899e-23) -(6.22074 -0.162455 6.22339e-24) -(6.23104 -0.167448 5.00732e-24) -(6.24118 -0.172672 -2.32691e-23) -(6.25113 -0.17813 4.20276e-23) -(6.26092 -0.183829 6.00311e-23) -(6.27052 -0.189772 -1.30758e-24) -(6.27994 -0.195965 1.20386e-23) -(6.28917 -0.202414 3.10704e-24) -(6.2982 -0.209119 3.67348e-24) -(6.30702 -0.216083 2.53931e-23) -(6.31562 -0.223305 1.01594e-22) -(6.324 -0.230783 1.43013e-22) -(6.33213 -0.238513 1.38037e-22) -(6.34001 -0.246489 6.53305e-23) -(6.34762 -0.254703 8.91222e-23) -(6.35496 -0.263146 9.39667e-23) -(6.362 -0.271803 9.14878e-23) -(6.36874 -0.280663 8.98375e-23) -(6.37515 -0.28971 8.12433e-23) -(6.38124 -0.298926 7.01792e-23) -(6.38699 -0.308296 4.10857e-23) -(6.3924 -0.317801 5.49384e-23) -(6.39744 -0.327424 6.03953e-23) -(6.40211 -0.337144 4.18247e-23) -(6.4064 -0.346942 3.67999e-23) -(6.41031 -0.3568 6.08361e-23) -(6.41382 -0.366698 6.09428e-23) -(6.41692 -0.376614 3.19986e-23) -(6.41962 -0.386529 8.78313e-24) -(6.42189 -0.396422 3.14854e-23) -(6.42375 -0.406274 7.53366e-23) -(6.42517 -0.416062 9.42464e-23) -(6.42615 -0.425767 5.61559e-23) -(6.42669 -0.435369 4.7144e-23) -(6.42678 -0.444848 6.73535e-23) -(6.42642 -0.454183 1.98986e-23) -(6.42561 -0.463355 -6.01527e-24) -(6.42434 -0.472345 3.55092e-23) -(6.42261 -0.481134 4.55144e-23) -(6.42041 -0.489704 3.5703e-23) -(6.41775 -0.498037 4.19616e-23) -(6.41462 -0.506115 3.28394e-23) -(6.41103 -0.513923 7.76925e-23) -(6.40697 -0.521443 4.08234e-23) -(6.40244 -0.528661 5.23735e-23) -(6.39745 -0.535562 8.5132e-23) -(6.392 -0.542133 5.54256e-23) -(6.38609 -0.54836 2.15649e-23) -(6.37973 -0.554232 -1.49535e-23) -(6.37291 -0.559738 -5.93208e-24) -(6.36565 -0.564868 6.21656e-23) -(6.35795 -0.569612 7.09743e-23) -(6.34981 -0.573964 4.7304e-23) -(6.34125 -0.577915 4.97074e-23) -(6.33227 -0.581461 1.15093e-22) -(6.32289 -0.584597 1.35809e-22) -(6.31311 -0.58732 7.44001e-23) -(6.30294 -0.589627 7.78917e-23) -(6.2924 -0.591518 1.06623e-22) -(6.28149 -0.592993 1.1951e-22) -(6.27024 -0.594054 6.60293e-23) -(6.25866 -0.594705 7.97953e-23) -(6.24676 -0.594949 1.05031e-22) -(6.23456 -0.594793 1.13196e-22) -(6.22208 -0.594244 8.57213e-23) -(6.20933 -0.59331 1.04316e-22) -(6.19634 -0.592002 1.02329e-22) -(6.18313 -0.590331 1.17843e-22) -(6.16971 -0.588309 1.4594e-22) -(6.15611 -0.585952 1.12608e-22) -(6.14236 -0.583275 9.31218e-23) -(6.12847 -0.580294 2.01288e-22) -(6.11447 -0.57703 1.83191e-22) -(6.10039 -0.573501 2.14307e-22) -(6.08625 -0.569729 2.31543e-22) -(6.07208 -0.565737 2.61867e-22) -(6.05791 -0.561551 6.52301e-23) -(6.04377 -0.557194 9.32979e-23) -(6.02968 -0.552696 1.90787e-22) -(6.01568 -0.548084 1.17841e-22) -(6.0018 -0.543391 1.15361e-22) -(5.98808 -0.538648 1.66107e-22) -(5.97454 -0.533889 1.97901e-22) -(5.96123 -0.52915 4.33625e-23) -(5.94818 -0.524469 1.16818e-22) -(5.93544 -0.519887 1.44928e-22) -(5.92305 -0.515444 3.36011e-22) -(5.91104 -0.511184 1.39293e-22) -(5.89948 -0.507154 1.69908e-22) -(5.88841 -0.5034 2.51866e-22) -(5.8779 -0.499971 3.12663e-22) -(5.86801 -0.496919 3.49211e-22) -(5.8588 -0.494294 2.11229e-22) -(5.85036 -0.492147 1.77748e-22) -(5.84278 -0.490529 1.81918e-22) -(5.83616 -0.489487 2.66647e-23) -(5.83062 -0.489066 3.33209e-23) -(5.82629 -0.489303 1.22416e-22) -(5.82332 -0.49023 2.20497e-22) -(5.82187 -0.491869 1.55971e-22) -(5.82215 -0.494227 1.01496e-22) -(5.82433 -0.49731 1.17213e-24) -(5.82866 -0.501077 7.50187e-23) -(5.83528 -0.505592 -1.36306e-23) -(5.84453 -0.510401 -1.41762e-22) -(5.85623 -0.516667 -1.58574e-22) -(7.81915 -0.0730127 2.76839e-23) -(7.72413 -0.0903797 1.73956e-23) -(7.61565 -0.100804 1.08527e-23) -(7.49341 -0.106149 2.96177e-23) -(7.36644 -0.107979 1.75307e-23) -(7.24456 -0.107967 6.17615e-24) -(7.13374 -0.10706 -6.35962e-24) -(7.03711 -0.10585 -4.41309e-23) -(6.95577 -0.104666 -6.58021e-23) -(6.88936 -0.10365 -5.72824e-23) -(6.83644 -0.102826 -6.06095e-23) -(6.79508 -0.102088 -4.78348e-23) -(6.76305 -0.101343 -8.05049e-24) -(6.73828 -0.100628 -5.46812e-23) -(6.71899 -0.0999664 -1.10579e-22) -(6.7038 -0.0993314 -7.91158e-23) -(6.69171 -0.0987006 -1.43075e-23) -(6.68196 -0.0980652 2.23666e-23) -(6.67403 -0.0974298 1.12129e-23) -(6.66753 -0.0968079 1.18826e-23) -(6.6622 -0.0962159 -1.39368e-23) -(6.65786 -0.0956687 1.92365e-23) -(6.65437 -0.0951778 3.61824e-23) -(6.65164 -0.0947501 5.87776e-23) -(6.64959 -0.0943888 1.19206e-22) -(6.64816 -0.0940942 1.26275e-22) -(6.64727 -0.093864 1.22099e-22) -(6.64688 -0.0936912 1.1009e-22) -(6.64693 -0.0935621 5.87301e-23) -(6.64737 -0.0934757 3.13471e-23) -(6.64815 -0.0934398 -7.80705e-24) -(6.64922 -0.0934497 1.81609e-23) -(6.65054 -0.0934997 7.19668e-24) -(6.65209 -0.0935861 -3.25619e-23) -(6.65385 -0.093707 -1.93051e-23) -(6.65579 -0.0938618 -6.43548e-23) -(6.65791 -0.0940509 -3.22366e-23) -(6.66019 -0.0942756 -7.61728e-23) -(6.66262 -0.094538 -1.0695e-22) -(6.6652 -0.0948407 -5.9959e-23) -(6.66792 -0.095187 -8.75657e-23) -(6.67077 -0.0955803 -1.07966e-22) -(6.67376 -0.0960246 -6.07899e-23) -(6.67686 -0.0965241 -3.12441e-23) -(6.68008 -0.0970834 -2.91054e-23) -(6.68342 -0.0977069 -4.53677e-23) -(6.68686 -0.0983981 -5.22647e-23) -(6.69041 -0.0991581 -4.33517e-23) -(6.69405 -0.0999925 -3.52181e-23) -(6.69779 -0.100911 -4.46484e-23) -(6.70162 -0.10192 -6.2061e-23) -(6.70553 -0.103024 -2.38661e-23) -(6.70951 -0.104227 -1.18382e-23) -(6.71357 -0.105535 -6.2829e-24) -(6.7177 -0.106952 -4.08151e-23) -(6.7219 -0.108483 -7.00213e-23) -(6.72617 -0.110133 -1.10933e-22) -(6.7305 -0.111909 -4.56029e-23) -(6.7349 -0.113814 -1.90749e-23) -(6.73935 -0.115854 -2.75633e-23) -(6.74385 -0.118031 -3.6434e-23) -(6.74842 -0.120351 -2.8178e-23) -(6.75303 -0.122823 -1.38164e-23) -(6.75769 -0.125454 -3.75726e-23) -(6.76239 -0.128249 -5.64139e-23) -(6.76712 -0.131214 -9.71391e-23) -(6.77188 -0.134353 -1.75563e-22) -(6.77666 -0.137671 -1.81925e-22) -(6.78146 -0.14117 -2.00942e-22) -(6.78627 -0.144856 -1.0425e-22) -(6.7911 -0.148737 -9.36178e-23) -(6.79593 -0.15282 -9.4819e-23) -(6.80076 -0.157108 -8.31371e-24) -(6.80558 -0.161608 4.63824e-23) -(6.81038 -0.166322 8.67071e-23) -(6.81516 -0.171258 1.05947e-22) -(6.81992 -0.176421 8.56721e-23) -(6.82464 -0.181817 5.11521e-23) -(6.82932 -0.18745 8.05901e-23) -(6.83395 -0.193324 4.13468e-23) -(6.83851 -0.199445 6.35805e-23) -(6.84299 -0.205815 5.54842e-23) -(6.84739 -0.212438 2.76808e-23) -(6.85168 -0.219313 2.85295e-23) -(6.85586 -0.226441 1.19353e-22) -(6.85991 -0.233818 1.11614e-22) -(6.86381 -0.24144 1.21634e-22) -(6.86754 -0.249302 5.53028e-23) -(6.8711 -0.257394 1.40556e-22) -(6.87445 -0.265708 1.77078e-22) -(6.8776 -0.27423 8.94958e-23) -(6.88051 -0.282948 7.97609e-24) -(6.88317 -0.291846 6.67072e-23) -(6.88558 -0.300909 6.14515e-23) -(6.88771 -0.310119 4.01991e-23) -(6.88955 -0.31946 3.30025e-23) -(6.89108 -0.328912 4.15572e-23) -(6.8923 -0.338457 2.42193e-23) -(6.8932 -0.348077 1.96256e-23) -(6.89375 -0.357751 4.87625e-23) -(6.89395 -0.36746 4.08008e-23) -(6.89379 -0.377185 -3.13323e-23) -(6.89325 -0.386904 -6.15361e-23) -(6.89233 -0.396599 6.85821e-23) -(6.89102 -0.406248 1.49363e-22) -(6.8893 -0.415831 1.38985e-22) -(6.88717 -0.425329 2.83518e-23) -(6.88463 -0.434721 8.37147e-23) -(6.88165 -0.443987 6.20552e-23) -(6.87824 -0.453109 -5.93346e-23) -(6.8744 -0.462065 -8.64093e-24) -(6.8701 -0.470839 5.04877e-23) -(6.86536 -0.479411 4.92589e-23) -(6.86017 -0.487762 6.14922e-23) -(6.85451 -0.495877 3.62944e-23) -(6.8484 -0.503737 4.29477e-23) -(6.84183 -0.511326 2.92576e-23) -(6.83479 -0.518629 6.82809e-23) -(6.8273 -0.525631 5.15577e-23) -(6.81934 -0.532317 3.02333e-23) -(6.81092 -0.538675 6.06388e-23) -(6.80204 -0.544691 4.73107e-23) -(6.7927 -0.550354 -2.50969e-23) -(6.78292 -0.555654 2.85283e-23) -(6.77269 -0.56058 6.52272e-23) -(6.76201 -0.565125 6.82742e-23) -(6.7509 -0.569281 1.14342e-22) -(6.73937 -0.573042 6.2818e-23) -(6.72741 -0.576401 8.83361e-23) -(6.71505 -0.579356 1.37348e-22) -(6.70228 -0.581902 9.465e-23) -(6.68913 -0.58404 8.04563e-23) -(6.67561 -0.585767 7.2352e-23) -(6.66172 -0.587086 1.052e-22) -(6.64748 -0.587998 1.13587e-22) -(6.63291 -0.588506 9.1275e-23) -(6.61803 -0.588616 1.05177e-22) -(6.60284 -0.588335 1.0227e-22) -(6.58738 -0.587669 1.28801e-22) -(6.57165 -0.586627 1.59939e-22) -(6.55568 -0.585221 8.37209e-23) -(6.53948 -0.583461 1.03024e-22) -(6.52309 -0.581362 1.33576e-22) -(6.50652 -0.578937 1.07032e-22) -(6.4898 -0.576204 1.52064e-22) -(6.47295 -0.573178 2.16383e-22) -(6.45599 -0.56988 2.81475e-22) -(6.43896 -0.56633 1.47982e-22) -(6.42187 -0.56255 1.70096e-22) -(6.40476 -0.558562 3.15483e-22) -(6.38766 -0.554392 1.45808e-22) -(6.3706 -0.550066 1.76067e-23) -(6.3536 -0.545612 8.05946e-23) -(6.33669 -0.541059 2.13807e-22) -(6.31992 -0.536439 2.69451e-22) -(6.30332 -0.531785 1.7289e-22) -(6.28691 -0.527131 9.9245e-23) -(6.27074 -0.522514 2.70919e-23) -(6.25484 -0.517972 1.69536e-22) -(6.23926 -0.513547 1.29546e-22) -(6.22404 -0.509281 2.24337e-22) -(6.20923 -0.50522 1.9946e-22) -(6.19487 -0.50141 1.56793e-22) -(6.18101 -0.497901 1.48887e-22) -(6.16773 -0.494745 2.93895e-22) -(6.15507 -0.491995 3.08416e-22) -(6.14312 -0.489705 2.02648e-22) -(6.13196 -0.487932 2.46437e-22) -(6.12167 -0.486729 8.25753e-23) -(6.11236 -0.486151 5.65134e-24) -(6.10414 -0.486248 -3.54115e-24) -(6.09716 -0.487068 8.99564e-23) -(6.09157 -0.488647 2.19678e-22) -(6.08754 -0.491016 6.59381e-23) -(6.08526 -0.494191 8.03283e-23) -(6.08493 -0.498179 6.30804e-23) -(6.08677 -0.502945 7.94176e-23) -(6.091 -0.508533 3.48603e-23) -(6.09762 -0.514522 -7.45111e-23) -(6.10769 -0.5219 -1.66376e-23) -(9.33814 0.024759 -7.97839e-23) -(9.31071 0.030128 -1.05592e-22) -(9.2803 0.0317549 -9.23194e-23) -(9.24317 0.0289298 -1.04581e-22) -(9.1981 0.0236999 -9.77678e-23) -(9.14582 0.0167612 -1.29557e-22) -(9.08692 0.00864052 -1.11017e-22) -(9.02203 -8.76627e-05 -8.27163e-23) -(8.95212 -0.00892384 -6.31733e-23) -(8.8784 -0.0174974 -7.70976e-23) -(8.80223 -0.0255615 -1.15184e-22) -(8.72495 -0.0329508 -7.35153e-23) -(8.64782 -0.0395877 -1.73978e-22) -(8.57196 -0.0455037 -2.17334e-22) -(8.49824 -0.0507551 -1.37025e-22) -(8.42736 -0.0553895 -1.36035e-22) -(8.35981 -0.0594637 -1.48611e-22) -(8.29592 -0.06304 -6.32834e-23) -(8.23584 -0.0661784 2.91806e-23) -(8.17963 -0.0689327 1.0654e-22) -(8.12721 -0.0713494 1.73151e-22) -(8.07844 -0.0734685 9.58838e-23) -(8.03313 -0.0753247 6.48016e-23) -(7.99105 -0.0769488 6.10814e-23) -(7.95195 -0.078369 6.13759e-23) -(7.91559 -0.0796112 -9.75198e-23) -(7.88173 -0.0806996 -1.50534e-22) -(7.85015 -0.0816545 -1.14021e-22) -(7.82064 -0.0824922 -7.00334e-23) -(7.79302 -0.0832347 -3.35366e-23) -(7.76713 -0.0839077 1.24817e-23) -(7.74283 -0.0845299 1.16368e-24) -(7.71997 -0.0851157 -1.2998e-23) -(7.69845 -0.0856779 -4.85411e-23) -(7.67818 -0.086228 -4.63888e-23) -(7.65906 -0.0867757 -1.26827e-22) -(7.64103 -0.0873296 -1.92781e-22) -(7.62402 -0.087897 -1.35871e-22) -(7.60797 -0.0884842 -1.57163e-22) -(7.59283 -0.0890968 -1.44814e-22) -(7.57854 -0.0897401 -9.23897e-23) -(7.56506 -0.0904188 -3.00753e-23) -(7.55235 -0.0911375 -7.15023e-24) -(7.54036 -0.0919008 6.51694e-23) -(7.52907 -0.0927132 -4.61021e-24) -(7.51842 -0.0935792 -6.76172e-23) -(7.50838 -0.0945025 -2.87778e-23) -(7.49894 -0.095486 2.45039e-24) -(7.49005 -0.0965349 7.48671e-23) -(7.4817 -0.0976569 5.32873e-23) -(7.47385 -0.0988584 7.79378e-23) -(7.46649 -0.100145 8.70117e-23) -(7.45958 -0.101522 2.92488e-23) -(7.45311 -0.102994 -1.04037e-22) -(7.44706 -0.104568 -4.34295e-23) -(7.44141 -0.106249 -8.62962e-24) -(7.43614 -0.108042 2.68087e-23) -(7.43124 -0.109954 1.29926e-23) -(7.42669 -0.111989 6.3231e-23) -(7.42248 -0.114152 -4.02008e-23) -(7.41859 -0.116447 -5.67896e-23) -(7.41502 -0.11888 -4.77945e-23) -(7.41174 -0.121459 4.10288e-24) -(7.40874 -0.124189 -1.03628e-22) -(7.40601 -0.127078 -1.95449e-22) -(7.40354 -0.13013 -3.75888e-22) -(7.4013 -0.133351 -2.88441e-22) -(7.39929 -0.136745 -1.80606e-22) -(7.3975 -0.140316 -1.8211e-22) -(7.3959 -0.144069 -8.36862e-23) -(7.3945 -0.148012 -4.6295e-24) -(7.39328 -0.15215 6.0126e-23) -(7.39222 -0.156489 8.60683e-23) -(7.39131 -0.161034 2.13275e-22) -(7.39054 -0.165788 2.45091e-22) -(7.3899 -0.170758 1.60497e-22) -(7.38938 -0.17595 -2.42242e-23) -(7.38895 -0.181368 -1.13559e-23) -(7.3886 -0.187017 -2.29845e-23) -(7.38833 -0.192901 9.49354e-23) -(7.38811 -0.199025 1.6288e-22) -(7.38793 -0.205391 9.81051e-23) -(7.38777 -0.212 8.83635e-23) -(7.38761 -0.218854 9.28266e-23) -(7.38743 -0.225952 5.29476e-23) -(7.38722 -0.23329 6.55188e-23) -(7.38694 -0.240865 6.40922e-23) -(7.38659 -0.24867 1.46433e-22) -(7.38614 -0.256696 1.54809e-22) -(7.38557 -0.264935 1.26336e-22) -(7.38486 -0.273373 -5.19966e-24) -(7.38399 -0.281999 -1.01945e-23) -(7.38294 -0.290797 7.03826e-23) -(7.38169 -0.299752 4.97728e-23) -(7.38022 -0.308847 1.65482e-23) -(7.37853 -0.318064 -5.75412e-24) -(7.37658 -0.327387 3.90485e-23) -(7.37437 -0.336796 -1.55751e-23) -(7.37187 -0.346274 -2.20821e-23) -(7.36908 -0.355799 7.78244e-23) -(7.36598 -0.365354 2.6215e-23) -(7.36255 -0.374919 -4.15002e-23) -(7.35878 -0.384474 -4.32644e-23) -(7.35465 -0.393998 1.17952e-22) -(7.35017 -0.403473 2.17627e-22) -(7.3453 -0.412878 6.2083e-23) -(7.34005 -0.422193 -6.0218e-23) -(7.3344 -0.431398 6.118e-23) -(7.32834 -0.440475 -5.13906e-23) -(7.32186 -0.449404 -2.08667e-22) -(7.31496 -0.458166 -1.17165e-22) -(7.30763 -0.466742 3.39235e-23) -(7.29987 -0.475114 6.68293e-23) -(7.29166 -0.483266 1.81492e-23) -(7.283 -0.491178 1.97563e-24) -(7.27389 -0.498836 -2.87697e-23) -(7.26432 -0.506223 7.75593e-23) -(7.2543 -0.513323 5.73487e-23) -(7.24382 -0.520123 -1.7625e-23) -(7.23289 -0.526608 6.27738e-23) -(7.22149 -0.532765 -9.57661e-24) -(7.20965 -0.538582 -3.50837e-23) -(7.19734 -0.544049 6.28775e-23) -(7.1846 -0.549155 1.01334e-22) -(7.1714 -0.553891 1.03755e-22) -(7.15777 -0.558248 7.37165e-23) -(7.1437 -0.56222 1.28584e-22) -(7.12921 -0.5658 1.51289e-22) -(7.11431 -0.568985 9.6223e-23) -(7.099 -0.571769 9.49768e-23) -(7.08329 -0.574151 7.35867e-23) -(7.0672 -0.576129 7.01875e-23) -(7.05073 -0.577704 2.67026e-23) -(7.03391 -0.578876 9.06547e-23) -(7.01675 -0.579649 1.6932e-22) -(6.99925 -0.580027 9.60424e-23) -(6.98145 -0.580013 1.18993e-22) -(6.96335 -0.579617 1.74665e-22) -(6.94498 -0.578844 1.37375e-22) -(6.92635 -0.577706 7.62443e-23) -(6.90748 -0.576212 3.29885e-23) -(6.8884 -0.574375 1.60008e-22) -(6.86913 -0.572208 1.55325e-22) -(6.84969 -0.569727 5.22024e-23) -(6.8301 -0.566947 1.61695e-22) -(6.8104 -0.563888 2.77483e-22) -(6.7906 -0.560567 2.59637e-22) -(6.77073 -0.557006 1.87653e-22) -(6.75081 -0.553227 1.10798e-22) -(6.73089 -0.549253 4.66843e-22) -(6.71098 -0.545111 4.31985e-22) -(6.69112 -0.540826 6.32684e-23) -(6.67133 -0.536426 1.09702e-23) -(6.65165 -0.531942 3.30585e-22) -(6.63211 -0.527406 4.79764e-22) -(6.61274 -0.52285 1.57031e-22) -(6.59359 -0.518311 -4.45732e-23) -(6.57468 -0.513825 3.99292e-23) -(6.55606 -0.509432 1.45103e-22) -(6.53776 -0.505174 1.07186e-22) -(6.51983 -0.501094 1.82612e-23) -(6.50231 -0.49724 7.29137e-23) -(6.48526 -0.493659 1.35236e-22) -(6.46872 -0.490404 1.81989e-22) -(6.45276 -0.487529 1.91397e-22) -(6.43744 -0.485089 1.90507e-22) -(6.42283 -0.483143 9.5529e-23) -(6.40901 -0.48175 3.34658e-22) -(6.39607 -0.480971 -9.6e-23) -(6.38412 -0.480865 -1.02905e-22) -(6.37328 -0.481491 -6.23331e-23) -(6.36369 -0.482901 1.17983e-22) -(6.3555 -0.485143 2.34923e-22) -(6.34889 -0.488255 1.5331e-22) -(6.34405 -0.492259 2.00339e-22) -(6.3412 -0.497166 1.02557e-22) -(6.34053 -0.502943 8.61545e-23) -(6.34233 -0.50961 -1.49713e-23) -(6.34632 -0.516788 1.34138e-22) -(6.35469 -0.525208 2.55238e-22) -(9.81602 0.0260222 2.4489e-23) -(9.80591 0.0216846 -2.36805e-23) -(9.79638 0.0172879 -1.34814e-23) -(9.78697 0.0127352 -1.01203e-23) -(9.77673 0.00910107 -1.96853e-25) -(9.76542 0.00647951 2.55484e-23) -(9.75284 0.00458802 -6.04828e-23) -(9.73863 0.00317321 -1.03049e-22) -(9.72243 0.00201869 -8.48613e-23) -(9.70399 0.000929665 -1.44951e-22) -(9.6831 -0.000250393 -1.359e-22) -(9.65962 -0.00161992 -6.95089e-23) -(9.63346 -0.00323412 -2.60731e-23) -(9.60462 -0.00513354 3.57735e-23) -(9.57313 -0.00732792 1.53039e-23) -(9.53907 -0.00979154 3.17265e-24) -(9.50258 -0.012482 -2.1731e-23) -(9.46386 -0.0153511 -1.18142e-22) -(9.42315 -0.0183494 -1.73445e-22) -(9.38071 -0.021429 -1.59606e-22) -(9.33683 -0.0245469 -2.18236e-22) -(9.29184 -0.0276659 -2.44816e-22) -(9.24605 -0.0307553 -1.83367e-22) -(9.19977 -0.0337904 -8.79113e-23) -(9.1533 -0.0367527 -7.83783e-23) -(9.10694 -0.0396281 1.64652e-23) -(9.06093 -0.0424067 1.05974e-22) -(9.01552 -0.0450808 -1.28386e-23) -(8.9709 -0.0476448 4.00952e-24) -(8.92724 -0.050098 4.84685e-23) -(8.88469 -0.0524448 8.67407e-24) -(8.84334 -0.0546888 -9.00533e-24) -(8.80327 -0.056833 -9.61063e-24) -(8.76452 -0.0588817 2.95137e-23) -(8.72713 -0.06084 -3.47882e-23) -(8.69108 -0.062714 -9.50743e-23) -(8.65639 -0.0645105 -9.70713e-24) -(8.62302 -0.0662372 -3.1378e-23) -(8.59094 -0.0679023 1.45225e-23) -(8.56012 -0.0695147 -2.84475e-23) -(8.53051 -0.0710836 1.40685e-24) -(8.50208 -0.0726189 1.16785e-22) -(8.47477 -0.0741306 4.86593e-23) -(8.44855 -0.0756288 7.03354e-23) -(8.42337 -0.0771237 3.37717e-23) -(8.39919 -0.0786253 5.97246e-23) -(8.37597 -0.0801428 7e-24) -(8.35368 -0.0816848 1.37998e-23) -(8.33228 -0.0832606 9.73916e-23) -(8.31175 -0.0848808 1.50405e-22) -(8.29205 -0.0865548 -8.52329e-24) -(8.27315 -0.0882908 -2.05499e-22) -(8.25502 -0.0900968 -1.38211e-22) -(8.23764 -0.0919802 -4.36519e-23) -(8.22097 -0.0939481 -3.10305e-23) -(8.205 -0.0960074 5.69357e-23) -(8.18969 -0.0981645 -2.93529e-23) -(8.17502 -0.100426 -1.29734e-22) -(8.16098 -0.102797 -3.0824e-22) -(8.14753 -0.105284 -1.37569e-22) -(8.13465 -0.10789 -1.3545e-22) -(8.12232 -0.110623 -3.11041e-22) -(8.11053 -0.11349 -3.89757e-22) -(8.09924 -0.116495 -2.37721e-22) -(8.08844 -0.119647 -2.2094e-22) -(8.07811 -0.12295 -1.6951e-22) -(8.06823 -0.12641 3.21199e-23) -(8.05877 -0.130031 3.11361e-23) -(8.04972 -0.133819 7.73594e-23) -(8.04106 -0.137779 6.55552e-23) -(8.03277 -0.141917 1.91062e-22) -(8.02484 -0.14624 1.52e-22) -(8.01724 -0.150753 1.01362e-22) -(8.00995 -0.155461 2.30836e-23) -(8.00296 -0.160369 6.24584e-23) -(7.99624 -0.165482 -8.7802e-23) -(7.98979 -0.170807 -1.95247e-22) -(7.98358 -0.176347 -4.27543e-23) -(7.97758 -0.182107 9.23626e-24) -(7.97179 -0.188092 1.34082e-22) -(7.96617 -0.194305 3.90765e-23) -(7.96071 -0.200748 2.11136e-22) -(7.95538 -0.207424 3.99807e-23) -(7.95017 -0.214332 9.28967e-23) -(7.94504 -0.221471 1.70251e-22) -(7.93997 -0.228838 4.45403e-23) -(7.93494 -0.23643 5.55218e-23) -(7.92992 -0.244239 1.67421e-22) -(7.92489 -0.252258 2.01135e-22) -(7.91983 -0.260477 -3.72987e-23) -(7.9147 -0.268885 -3.08461e-23) -(7.90949 -0.277469 8.34803e-25) -(7.90417 -0.286214 1.62448e-22) -(7.89872 -0.295105 7.64192e-24) -(7.89311 -0.304126 1.01598e-22) -(7.88734 -0.313261 1.87906e-22) -(7.88137 -0.322492 -3.21107e-23) -(7.87518 -0.331801 9.4741e-24) -(7.86877 -0.341169 1.35044e-22) -(7.8621 -0.350577 1.57698e-22) -(7.85516 -0.360008 -5.84087e-23) -(7.84794 -0.36944 -2.87514e-23) -(7.84042 -0.378856 1.66487e-22) -(7.83258 -0.388235 -4.81711e-23) -(7.8244 -0.397558 -4.43714e-23) -(7.81588 -0.406806 1.64005e-22) -(7.80701 -0.415958 1.23578e-22) -(7.79775 -0.424997 -1.806e-22) -(7.78812 -0.433902 -2.35e-22) -(7.77809 -0.442656 9.79562e-23) -(7.76766 -0.451238 5.75721e-24) -(7.75682 -0.459633 2.41389e-23) -(7.74555 -0.467821 1.69678e-22) -(7.73386 -0.475786 -1.03702e-23) -(7.72174 -0.483511 -4.77704e-23) -(7.70918 -0.49098 -9.87107e-23) -(7.69618 -0.498177 -9.39704e-23) -(7.68273 -0.505087 -1.96293e-23) -(7.66885 -0.511697 8.5782e-23) -(7.65451 -0.517993 9.93733e-23) -(7.63973 -0.523963 1.81384e-22) -(7.62451 -0.529595 2.03242e-22) -(7.60884 -0.534878 1.45352e-22) -(7.59274 -0.539803 7.14774e-23) -(7.57621 -0.54436 -7.58836e-23) -(7.55925 -0.548543 -2.71231e-23) -(7.54186 -0.552345 9.02962e-23) -(7.52407 -0.555759 1.30262e-22) -(7.50587 -0.558783 2.76403e-22) -(7.48728 -0.561411 2.20423e-22) -(7.46831 -0.563643 2.88766e-23) -(7.44896 -0.565478 6.46934e-23) -(7.42926 -0.566916 1.23513e-22) -(7.40921 -0.567959 1.0755e-22) -(7.38884 -0.568609 1.2399e-22) -(7.36815 -0.568873 1.33963e-23) -(7.34717 -0.568754 8.66475e-23) -(7.32591 -0.56826 2.21384e-22) -(7.30439 -0.567399 1.90065e-22) -(7.28263 -0.566182 1.16622e-22) -(7.26066 -0.56462 1.49073e-23) -(7.23848 -0.562724 9.91336e-23) -(7.21613 -0.56051 6.43943e-23) -(7.19363 -0.557991 1.68252e-22) -(7.17101 -0.555186 -7.93443e-25) -(7.14827 -0.552112 5.05983e-23) -(7.12546 -0.548789 5.36156e-23) -(7.1026 -0.545238 2.58419e-22) -(7.07972 -0.541481 5.85008e-22) -(7.05684 -0.537543 2.30817e-22) -(7.03398 -0.533449 8.28455e-23) -(7.0112 -0.529225 2.85935e-22) -(6.9885 -0.524901 4.31262e-22) -(6.96592 -0.520507 2.87768e-22) -(6.9435 -0.516075 2.54365e-22) -(6.92127 -0.511639 3.28349e-22) -(6.89926 -0.507235 -3.6131e-23) -(6.87751 -0.5029 -7.52553e-23) -(6.85605 -0.498676 1.70708e-22) -(6.83493 -0.494604 5.38048e-22) -(6.81419 -0.490731 3.17932e-22) -(6.79387 -0.487103 1.37441e-22) -(6.77402 -0.48377 1.67826e-22) -(6.7547 -0.480788 1.22032e-22) -(6.73595 -0.478211 3.23444e-22) -(6.71785 -0.476099 2.30893e-22) -(6.70046 -0.474514 1.33492e-22) -(6.68386 -0.47352 -8.55981e-23) -(6.66815 -0.473181 -3.20777e-22) -(6.65343 -0.473565 -3.25861e-23) -(6.63981 -0.474736 -1.10453e-22) -(6.62745 -0.476756 2.12366e-22) -(6.61649 -0.479682 2.42882e-22) -(6.60713 -0.483557 3.91963e-22) -(6.59954 -0.488413 5.07456e-22) -(6.59397 -0.494262 2.93458e-22) -(6.59059 -0.501075 -6.53625e-22) -(6.58975 -0.508839 1.93736e-22) -(6.59094 -0.517226 5.86646e-22) -(6.59734 -0.526639 -2.05522e-22) -(10.0045 0.0346854 -4.55448e-23) -(10.0014 0.0322457 4.70076e-23) -(9.99829 0.0304463 4.51837e-23) -(9.9952 0.0285622 9.78373e-23) -(9.99181 0.02663 8.4674e-23) -(9.98809 0.0246622 1.67436e-22) -(9.98413 0.0225815 2.43724e-22) -(9.97995 0.0203737 2.1143e-22) -(9.97552 0.0180829 1.70398e-22) -(9.97081 0.0157695 2.30222e-22) -(9.96575 0.0134922 2.71281e-22) -(9.96029 0.0113045 1.10445e-22) -(9.95438 0.00924499 3.51262e-23) -(9.94793 0.0073271 3.16904e-23) -(9.94086 0.00554781 4.27348e-24) -(9.93309 0.00389794 -6.5072e-23) -(9.92453 0.00236197 -8.20464e-23) -(9.91509 0.000917787 -2.00444e-22) -(9.90469 -0.000460636 -1.67827e-22) -(9.89324 -0.0018005 -1.8445e-22) -(9.88068 -0.0031281 -2.33932e-23) -(9.86694 -0.00446729 1.38012e-23) -(9.85196 -0.00583855 -1.55376e-23) -(9.8357 -0.00725842 -8.71983e-23) -(9.81812 -0.00873934 -1.24845e-22) -(9.79921 -0.0102897 -1.11245e-22) -(9.77897 -0.0119138 -1.23394e-22) -(9.7574 -0.0136124 4.81299e-23) -(9.73454 -0.0153833 -1.53657e-22) -(9.71044 -0.0172234 -2.95405e-22) -(9.68515 -0.0191301 -2.33168e-22) -(9.65877 -0.0210984 -2.11132e-22) -(9.63137 -0.0231221 -2.15303e-22) -(9.60306 -0.0251944 -3.06346e-22) -(9.57396 -0.0273085 -2.18647e-22) -(9.54417 -0.0294584 -4.76913e-23) -(9.51384 -0.0316385 2.27128e-23) -(9.48308 -0.033844 -1.29669e-22) -(9.45201 -0.0360709 -9.26186e-23) -(9.42077 -0.0383159 -8.70942e-23) -(9.38948 -0.040577 -7.9259e-23) -(9.35824 -0.0428526 -9.92609e-23) -(9.32715 -0.0451422 -2.53133e-22) -(9.29633 -0.0474458 -3.77748e-22) -(9.26584 -0.0497642 -1.52923e-22) -(9.23577 -0.0520988 -1.68443e-22) -(9.20618 -0.0544514 -1.49201e-22) -(9.17712 -0.056824 -1.50511e-22) -(9.14865 -0.0592202 -2.52415e-22) -(9.12079 -0.0616446 -2.03407e-22) -(9.09358 -0.0641023 -1.70675e-22) -(9.06703 -0.0665984 -9.06119e-23) -(9.04115 -0.0691383 -1.23021e-22) -(9.01596 -0.0717279 -5.08797e-23) -(8.99146 -0.0743733 -1.54532e-22) -(8.96763 -0.077081 -2.60392e-22) -(8.94449 -0.0798576 -2.00282e-22) -(8.92202 -0.0827101 -1.47937e-22) -(8.9002 -0.0856453 -2.87392e-23) -(8.87904 -0.0886697 7.08223e-24) -(8.85852 -0.0917901 1.46898e-22) -(8.83863 -0.0950137 -7.8646e-23) -(8.81934 -0.0983483 -3.89126e-23) -(8.80066 -0.101801 -2.73386e-22) -(8.78256 -0.10538 -1.7194e-22) -(8.76503 -0.109092 -3.04805e-22) -(8.74805 -0.112942 -4.27054e-22) -(8.73161 -0.116938 -1.52654e-22) -(8.71568 -0.121084 1.84758e-22) -(8.70025 -0.125387 1.20502e-22) -(8.68531 -0.129854 2.85868e-22) -(8.67084 -0.134491 3.77364e-22) -(8.65681 -0.139303 1.85735e-22) -(8.64321 -0.144297 6.20789e-23) -(8.63002 -0.149476 2.94883e-23) -(8.61722 -0.154847 1.97062e-22) -(8.60478 -0.160415 5.07443e-23) -(8.59269 -0.166185 -5.43215e-23) -(8.58092 -0.17216 -2.88454e-22) -(8.56946 -0.178345 -1.75268e-22) -(8.55827 -0.184743 3.93629e-23) -(8.54733 -0.191357 -2.29767e-22) -(8.53662 -0.198187 -1.01039e-22) -(8.52611 -0.205235 -2.02972e-22) -(8.51578 -0.212497 -3.14845e-22) -(8.50559 -0.219972 9.93198e-23) -(8.49552 -0.227656 5.39648e-23) -(8.48554 -0.235541 9.26448e-23) -(8.47563 -0.243621 -1.72693e-22) -(8.46575 -0.251886 -8.17395e-23) -(8.45588 -0.260324 -1.46114e-23) -(8.44599 -0.268924 3.51115e-23) -(8.43606 -0.277672 -1.75084e-22) -(8.42605 -0.286553 -6.34209e-23) -(8.41596 -0.295552 -1.41486e-22) -(8.40574 -0.304652 -2.37461e-22) -(8.39538 -0.313836 -9.79204e-23) -(8.38486 -0.323086 -6.51605e-23) -(8.37415 -0.332386 -1.91426e-23) -(8.36324 -0.341716 1.66659e-24) -(8.3521 -0.351058 5.47087e-23) -(8.34071 -0.360394 1.70325e-22) -(8.32906 -0.369703 1.11412e-22) -(8.31712 -0.378968 -4.8425e-23) -(8.30489 -0.38817 -6.01088e-24) -(8.29234 -0.397289 1.0866e-22) -(8.27946 -0.406307 -1.59327e-24) -(8.26624 -0.415204 -1.13988e-22) -(8.25266 -0.423963 -2.81681e-22) -(8.23871 -0.432565 -1.29111e-22) -(8.22438 -0.440993 2.73327e-22) -(8.20966 -0.449228 3.68017e-22) -(8.19454 -0.457254 6.7814e-23) -(8.17902 -0.465054 -4.17938e-23) -(8.16309 -0.472612 -1.48179e-22) -(8.14674 -0.479912 -2.88546e-22) -(8.12997 -0.48694 -7.52503e-23) -(8.11277 -0.493681 1.2182e-22) -(8.09515 -0.500121 1.29006e-22) -(8.0771 -0.506248 1.38427e-22) -(8.05863 -0.512051 2.49938e-22) -(8.03973 -0.517517 2.7133e-22) -(8.02041 -0.522637 1.13793e-22) -(8.00067 -0.527401 1.45886e-22) -(7.98051 -0.531802 2.23743e-22) -(7.95995 -0.535832 3.85463e-23) -(7.939 -0.539484 -8.99217e-23) -(7.91765 -0.542755 1.04792e-22) -(7.89591 -0.545639 -2.12486e-23) -(7.87381 -0.548135 2.09787e-22) -(7.85135 -0.550241 2.13228e-22) -(7.82854 -0.551955 3.76221e-23) -(7.8054 -0.55328 9.53214e-23) -(7.78193 -0.554218 1.48685e-22) -(7.75817 -0.554771 3.26415e-22) -(7.73412 -0.554945 2.42572e-22) -(7.70979 -0.554745 -1.78646e-23) -(7.68522 -0.55418 4.18128e-23) -(7.66041 -0.553257 1.91678e-22) -(7.63539 -0.551988 1.35328e-22) -(7.61018 -0.550383 7.26626e-23) -(7.58479 -0.548456 -2.83572e-22) -(7.55926 -0.54622 3.09756e-22) -(7.5336 -0.543691 2.26741e-22) -(7.50784 -0.540887 6.15142e-23) -(7.48201 -0.537826 -7.43698e-23) -(7.45611 -0.534527 -1.96971e-22) -(7.4302 -0.531012 -4.45305e-23) -(7.40428 -0.527304 7.10943e-22) -(7.37838 -0.523427 2.52839e-22) -(7.35254 -0.519406 1.15859e-22) -(7.32678 -0.51527 5.18388e-22) -(7.30114 -0.511047 2.70294e-22) -(7.27563 -0.506767 -1.36778e-22) -(7.2503 -0.502464 -3.86881e-23) -(7.22517 -0.498171 2.0557e-22) -(7.20027 -0.493926 3.86643e-22) -(7.17565 -0.489766 -1.41311e-22) -(7.15134 -0.485733 -2.52036e-22) -(7.12737 -0.48187 3.58567e-22) -(7.10378 -0.478223 1.46722e-22) -(7.08063 -0.474841 -9.49599e-24) -(7.05794 -0.471777 2.41843e-22) -(7.03578 -0.469085 5.67257e-22) -(7.0142 -0.466825 -4.07078e-22) -(6.99326 -0.465059 -4.03358e-22) -(6.97303 -0.463851 -1.71109e-22) -(6.95358 -0.463271 -2.72407e-22) -(6.93501 -0.463388 4.98369e-22) -(6.91742 -0.464277 -4.92693e-22) -(6.90093 -0.466009 -3.10584e-22) -(6.88567 -0.468655 -6.07815e-22) -(6.87182 -0.472279 -1.13068e-22) -(6.85954 -0.476936 5.25794e-23) -(6.84905 -0.482664 6.13626e-22) -(6.84058 -0.489478 -2.59153e-22) -(6.83431 -0.49735 2.89572e-22) -(6.83062 -0.506234 -7.56545e-23) -(6.82885 -0.515853 1.12158e-22) -(6.833 -0.526233 3.62261e-22) -(10.0741 0.0351572 6.44914e-23) -(10.0736 0.0324942 4.36902e-23) -(10.0729 0.0300214 5.229e-23) -(10.0722 0.0274735 -3.46906e-23) -(10.0712 0.0249154 -3.18486e-23) -(10.0701 0.0224835 -1.54791e-22) -(10.0688 0.0202239 -2.9418e-22) -(10.0675 0.018144 -2.60698e-22) -(10.0661 0.0162458 -1.61203e-22) -(10.0647 0.0145223 -1.52249e-22) -(10.0631 0.0129572 -1.75586e-22) -(10.0615 0.0115301 -1.53864e-22) -(10.0598 0.010219 -2.15707e-22) -(10.058 0.00899857 -2.38605e-22) -(10.0561 0.0078453 -1.18963e-22) -(10.0541 0.00674195 -7.60986e-23) -(10.052 0.00567749 -1.24896e-22) -(10.0498 0.00464481 5.25964e-23) -(10.0474 0.00363953 5.5884e-23) -(10.0448 0.00265927 1.11983e-22) -(10.042 0.0017029 -1.24958e-23) -(10.039 0.000769722 1.20528e-22) -(10.0357 -0.000141136 6.46192e-23) -(10.0321 -0.00103122 7.94177e-23) -(10.0282 -0.00190306 1.32238e-22) -(10.024 -0.00276024 -2.50892e-23) -(10.0193 -0.00360736 -6.15954e-23) -(10.0143 -0.00444993 -2.30888e-22) -(10.0088 -0.00529442 -9.16899e-24) -(10.0027 -0.00614884 3.26743e-23) -(9.99617 -0.00702252 -1.15084e-22) -(9.98904 -0.00792486 -7.95707e-23) -(9.9813 -0.00886472 -5.22473e-23) -(9.97291 -0.00985053 4.50519e-23) -(9.96385 -0.0108904 3.71622e-24) -(9.95408 -0.0119919 -2.50801e-23) -(9.94358 -0.013162 -1.07672e-22) -(9.93233 -0.0144071 7.51837e-24) -(9.92031 -0.0157325 -1.22248e-22) -(9.9075 -0.0171432 -8.22549e-23) -(9.89392 -0.018643 -8.9717e-23) -(9.87955 -0.0202351 -1.29515e-22) -(9.8644 -0.0219223 1.28486e-22) -(9.8485 -0.0237064 1.00596e-22) -(9.83186 -0.0255888 -1.92194e-22) -(9.81451 -0.0275703 -2.31537e-22) -(9.7965 -0.0296515 -1.21523e-22) -(9.77786 -0.0318326 5.01013e-23) -(9.75864 -0.0341139 -2.90455e-22) -(9.73891 -0.0364962 -4.99416e-22) -(9.7187 -0.0389803 -3.88633e-22) -(9.69809 -0.0415668 -5.12384e-22) -(9.67714 -0.0442563 -4.38983e-22) -(9.6559 -0.0470496 -6.45226e-22) -(9.63445 -0.0499476 -4.28057e-22) -(9.61284 -0.0529514 -3.34648e-22) -(9.59114 -0.0560624 -2.52847e-22) -(9.56939 -0.059282 -1.30257e-22) -(9.54766 -0.0626119 1.15623e-22) -(9.526 -0.0660539 9.41569e-24) -(9.50445 -0.0696101 -1.52253e-22) -(9.48306 -0.073283 -3.58012e-23) -(9.46186 -0.0770761 6.82898e-23) -(9.44089 -0.0809927 2.87266e-22) -(9.42018 -0.0850364 2.77982e-22) -(9.39974 -0.0892108 5.41558e-22) -(9.37961 -0.0935194 7.44832e-22) -(9.35978 -0.0979661 4.7341e-22) -(9.34029 -0.102555 3.22823e-22) -(9.32113 -0.10729 1.55755e-23) -(9.30232 -0.112176 -1.05165e-22) -(9.28384 -0.117219 -2.04133e-23) -(9.26571 -0.122423 -1.10792e-22) -(9.24792 -0.127792 -2.42499e-22) -(9.23047 -0.133332 -4.6413e-23) -(9.21334 -0.139048 -1.83793e-22) -(9.19653 -0.144944 2.3416e-22) -(9.18003 -0.151025 4.54324e-24) -(9.16382 -0.157294 8.07746e-24) -(9.14788 -0.163757 1.09418e-22) -(9.13221 -0.170415 -1.00912e-22) -(9.11678 -0.17727 -2.92771e-22) -(9.10158 -0.184325 -1.33029e-22) -(9.08658 -0.191579 1.43149e-23) -(9.07175 -0.19903 2.11891e-22) -(9.05709 -0.206675 -1.36481e-22) -(9.04255 -0.214512 -1.26782e-22) -(9.02812 -0.222532 -2.99982e-22) -(9.01377 -0.230729 -2.23105e-22) -(8.99948 -0.239094 -2.0344e-22) -(8.98522 -0.247617 -1.71992e-22) -(8.97096 -0.256284 -1.16721e-22) -(8.95667 -0.265084 -1.04565e-22) -(8.94234 -0.274002 -1.28023e-22) -(8.92794 -0.283023 -2.33963e-22) -(8.91344 -0.292132 -3.90325e-22) -(8.89883 -0.301311 -1.07545e-22) -(8.88407 -0.310544 -5.54618e-23) -(8.86915 -0.319814 -8.52089e-23) -(8.85405 -0.329103 -1.63941e-22) -(8.83874 -0.338393 -3.04682e-23) -(8.8232 -0.347665 -1.56184e-22) -(8.80743 -0.356902 -3.61484e-22) -(8.79139 -0.366085 -1.36298e-22) -(8.77507 -0.375196 -2.46299e-22) -(8.75846 -0.384216 -6.52575e-23) -(8.74154 -0.393128 -6.79593e-23) -(8.72429 -0.401913 5.23571e-23) -(8.70671 -0.410553 3.70261e-22) -(8.68878 -0.41903 3.4981e-22) -(8.67049 -0.427329 -1.17545e-22) -(8.65183 -0.43543 -2.67299e-22) -(8.63279 -0.443319 -1.80075e-22) -(8.61336 -0.45098 2.01478e-23) -(8.59354 -0.458395 1.31489e-22) -(8.57333 -0.465552 2.53462e-22) -(8.55271 -0.472435 2.47514e-22) -(8.53169 -0.479031 2.08052e-22) -(8.51027 -0.485327 1.81033e-22) -(8.48844 -0.49131 2.24941e-22) -(8.4662 -0.49697 3.42083e-24) -(8.44356 -0.502296 8.60614e-23) -(8.42053 -0.507279 2.439e-22) -(8.3971 -0.511909 2.12469e-22) -(8.37328 -0.516179 2.11607e-22) -(8.34908 -0.520082 2.77873e-22) -(8.32451 -0.523613 4.10586e-23) -(8.29958 -0.526768 -3.58408e-23) -(8.27429 -0.529542 3.5142e-22) -(8.24866 -0.531933 8.08082e-23) -(8.22269 -0.533941 -6.57198e-24) -(8.19641 -0.535566 1.12164e-22) -(8.16983 -0.536808 1.50505e-22) -(8.14296 -0.53767 9.38386e-23) -(8.11582 -0.538156 -5.12124e-23) -(8.08843 -0.538272 1.13817e-22) -(8.0608 -0.538023 2.03445e-22) -(8.03294 -0.537418 3.47287e-22) -(8.00489 -0.536465 1.38682e-22) -(7.97666 -0.535175 3.33184e-22) -(7.94828 -0.53356 2.27932e-22) -(7.91975 -0.531632 -1.24673e-22) -(7.89111 -0.529407 1.80305e-22) -(7.86237 -0.526899 3.47669e-22) -(7.83356 -0.524128 2.13347e-22) -(7.80471 -0.52111 1.50031e-22) -(7.77583 -0.517866 4.73735e-22) -(7.74695 -0.514418 -1.85042e-22) -(7.7181 -0.510788 -4.57543e-22) -(7.6893 -0.507002 1.08527e-22) -(7.66058 -0.503084 7.33887e-23) -(7.63196 -0.499064 6.39271e-22) -(7.60348 -0.494969 2.40971e-22) -(7.57515 -0.490831 -2.03042e-22) -(7.54702 -0.486682 3.42108e-22) -(7.5191 -0.482558 2.04169e-22) -(7.49143 -0.478496 -1.06962e-22) -(7.46404 -0.474534 -8.76612e-23) -(7.43697 -0.470714 -4.26408e-22) -(7.41024 -0.46708 -1.08747e-21) -(7.3839 -0.463681 2.35898e-22) -(7.35799 -0.460565 2.42235e-22) -(7.33255 -0.457786 4.89575e-22) -(7.30762 -0.455403 3.79753e-22) -(7.28326 -0.453475 4.77065e-22) -(7.25953 -0.452068 1.54055e-22) -(7.23649 -0.451251 -1.47972e-22) -(7.21421 -0.451096 -2.08019e-22) -(7.19278 -0.451681 -2.30218e-22) -(7.17231 -0.453085 2.15099e-22) -(7.1529 -0.455388 3.55933e-22) -(7.1347 -0.458669 3.12545e-22) -(7.11787 -0.463003 -6.65674e-22) -(7.1026 -0.468454 -1.18892e-22) -(7.08908 -0.475069 -4.16346e-22) -(7.07757 -0.482865 -4.09609e-22) -(7.06826 -0.491819 1.35517e-22) -(7.06155 -0.501847 3.96109e-22) -(7.05672 -0.512723 8.29352e-22) -(7.05832 -0.524066 1.01085e-22) -(10.0999 0.0353335 -7.59572e-23) -(10.1008 0.0330969 -1.62058e-22) -(10.1014 0.0309609 -9.3643e-23) -(10.1018 0.0288518 -3.51943e-23) -(10.1021 0.0267736 -2.71985e-23) -(10.1022 0.0247668 2.92578e-23) -(10.1021 0.0228396 8.84652e-23) -(10.1019 0.0209822 2.63098e-26) -(10.1017 0.0191897 -9.1682e-24) -(10.1013 0.0174636 -2.08753e-23) -(10.1009 0.0158079 -8.4133e-23) -(10.1004 0.0142276 -8.90435e-23) -(10.0999 0.0127271 1.85854e-22) -(10.0994 0.0113081 3.09866e-22) -(10.0989 0.00996978 2.23129e-22) -(10.0983 0.00871065 2.31747e-22) -(10.0978 0.00752867 3.52761e-22) -(10.0972 0.00642056 2.411e-22) -(10.0966 0.00538161 2.32588e-22) -(10.0961 0.00440598 3.79388e-23) -(10.0955 0.00348705 -2.69079e-23) -(10.0948 0.00261771 -1.85887e-22) -(10.0942 0.00179067 -5.65953e-23) -(10.0935 0.000998701 -9.03528e-23) -(10.0927 0.000234843 -7.48067e-23) -(10.092 -0.000507399 1.13164e-22) -(10.0911 -0.00123395 -3.75641e-23) -(10.0902 -0.00195012 9.4165e-23) -(10.0892 -0.00266078 4.08379e-23) -(10.0881 -0.0033707 4.44274e-23) -(10.0869 -0.00408468 4.42815e-23) -(10.0856 -0.00480716 4.00637e-23) -(10.0841 -0.00554211 2.00544e-24) -(10.0825 -0.00629322 -7.08834e-23) -(10.0808 -0.00706419 -8.69455e-24) -(10.0789 -0.00785883 -1.83025e-23) -(10.0767 -0.0086812 -2.91013e-23) -(10.0744 -0.00953567 1.95597e-23) -(10.0718 -0.010427 1.2625e-22) -(10.069 -0.0113602 8.64818e-23) -(10.066 -0.0123408 1.36428e-22) -(10.0626 -0.0133748 2.09145e-22) -(10.059 -0.0144683 -1.4492e-22) -(10.055 -0.0156279 -4.6249e-23) -(10.0506 -0.0168601 -8.82834e-23) -(10.0459 -0.0181717 1.14272e-22) -(10.0408 -0.0195696 2.15653e-22) -(10.0354 -0.0210604 -3.11506e-24) -(10.0294 -0.0226512 3.36489e-22) -(10.0231 -0.0243488 5.96575e-22) -(10.0163 -0.0261602 4.48162e-22) -(10.009 -0.0280915 5.63778e-22) -(10.0012 -0.0301488 4.91438e-22) -(9.99294 -0.0323377 6.61542e-22) -(9.98417 -0.0346634 7.13598e-22) -(9.97491 -0.0371305 5.67799e-22) -(9.96513 -0.0397434 5.01844e-22) -(9.95486 -0.0425059 4.03745e-22) -(9.94409 -0.0454216 1.76949e-22) -(9.93283 -0.0484935 2.51797e-22) -(9.9211 -0.0517244 4.31623e-22) -(9.90891 -0.055117 4.93281e-22) -(9.89628 -0.058674 4.07535e-22) -(9.88323 -0.0623977 5.60857e-22) -(9.86978 -0.0662905 5.50055e-22) -(9.85596 -0.0703543 2.05644e-22) -(9.8418 -0.0745908 6.98081e-23) -(9.82732 -0.0790015 7.90199e-23) -(9.81256 -0.0835882 -5.92125e-23) -(9.79754 -0.0883525 1.32627e-22) -(9.78229 -0.0932964 -1.61025e-22) -(9.76684 -0.0984218 -3.33473e-22) -(9.75122 -0.103731 -4.25034e-22) -(9.73545 -0.109225 -3.41424e-22) -(9.71956 -0.114906 -4.62519e-22) -(9.70357 -0.120776 -5.20452e-22) -(9.6875 -0.126837 -5.25418e-22) -(9.67136 -0.13309 -3.34587e-22) -(9.65517 -0.139536 -1.81704e-22) -(9.63893 -0.146178 -4.32433e-22) -(9.62267 -0.153014 -4.38106e-22) -(9.60638 -0.160045 -4.01493e-23) -(9.59006 -0.16727 2.20282e-22) -(9.57372 -0.174688 2.6947e-23) -(9.55735 -0.182294 -1.26588e-22) -(9.54094 -0.190085 -8.39123e-23) -(9.52449 -0.198055 -1.98284e-22) -(9.50799 -0.206197 -4.85875e-22) -(9.49142 -0.214504 -2.87495e-22) -(9.47478 -0.222965 -2.38452e-22) -(9.45804 -0.231569 -1.96003e-22) -(9.4412 -0.240306 -5.79696e-23) -(9.42424 -0.249161 9.92503e-23) -(9.40714 -0.258122 -2.98855e-22) -(9.38989 -0.267172 8.78769e-23) -(9.37248 -0.276297 5.47461e-22) -(9.35487 -0.28548 2.09861e-22) -(9.33707 -0.294705 1.60979e-22) -(9.31905 -0.303956 1.16719e-22) -(9.30081 -0.313215 6.58121e-23) -(9.28231 -0.322464 6.12526e-23) -(9.26355 -0.331686 1.63036e-22) -(9.24452 -0.340863 2.77613e-22) -(9.2252 -0.349978 2.4787e-22) -(9.20557 -0.359012 2.84135e-22) -(9.18563 -0.367948 -4.31908e-22) -(9.16536 -0.376769 -1.32148e-22) -(9.14476 -0.385456 -1.15218e-22) -(9.1238 -0.393993 -1.5436e-22) -(9.10249 -0.402362 -1.91851e-22) -(9.08081 -0.410548 -1.36354e-23) -(9.05876 -0.418534 -1.15467e-22) -(9.03632 -0.426304 -1.89114e-22) -(9.01351 -0.433843 4.53713e-23) -(8.9903 -0.441135 1.02832e-22) -(8.9667 -0.448168 7.7342e-23) -(8.9427 -0.454926 5.7813e-23) -(8.91831 -0.461398 2.90616e-22) -(8.89353 -0.467571 2.00874e-22) -(8.86835 -0.473433 6.61684e-23) -(8.84278 -0.478974 2.6574e-22) -(8.81682 -0.484183 3.12262e-22) -(8.79048 -0.489053 2.98432e-22) -(8.76377 -0.493574 2.48233e-22) -(8.73669 -0.497739 2.36778e-22) -(8.70925 -0.501543 1.75294e-22) -(8.68145 -0.50498 1.57567e-22) -(8.65332 -0.508047 1.26785e-22) -(8.62486 -0.510739 1.69268e-22) -(8.59609 -0.513056 1.81622e-22) -(8.56701 -0.514997 -1.13876e-22) -(8.53765 -0.516562 8.20894e-23) -(8.50801 -0.517752 2.94952e-22) -(8.47812 -0.518571 2.29818e-22) -(8.44799 -0.519023 1.38611e-22) -(8.41764 -0.519113 -2.07145e-23) -(8.38708 -0.518848 -5.76475e-23) -(8.35634 -0.518236 -1.40383e-23) -(8.32543 -0.517286 5.24816e-22) -(8.29438 -0.516009 4.66432e-22) -(8.2632 -0.514417 5.18902e-22) -(8.23191 -0.512522 4.60022e-22) -(8.20055 -0.51034 -1.02709e-22) -(8.16912 -0.507887 4.83097e-22) -(8.13765 -0.505179 5.31388e-22) -(8.10616 -0.502237 9.82212e-23) -(8.07468 -0.499079 1.80269e-22) -(8.04322 -0.495729 8.82771e-22) -(8.01182 -0.492207 3.53524e-22) -(7.98048 -0.48854 -3.11092e-22) -(7.94925 -0.484754 -4.03865e-23) -(7.91814 -0.480876 -1.12153e-22) -(7.88718 -0.476935 1.31656e-22) -(7.85639 -0.472963 2.55527e-22) -(7.8258 -0.468993 -3.56731e-22) -(7.79544 -0.46506 7.98284e-24) -(7.76532 -0.461202 3.3791e-22) -(7.73549 -0.457458 1.28448e-21) -(7.70597 -0.45387 6.41763e-22) -(7.67679 -0.450483 -1.49137e-22) -(7.64799 -0.447346 -1.45044e-22) -(7.6196 -0.444509 -1.98115e-22) -(7.59166 -0.442029 -4.30051e-22) -(7.56421 -0.439964 -8.68901e-23) -(7.5373 -0.438377 -3.11688e-22) -(7.51098 -0.437337 -3.46721e-22) -(7.48532 -0.436916 -5.53015e-22) -(7.46037 -0.437192 -2.32504e-22) -(7.43623 -0.438247 -3.35766e-22) -(7.41299 -0.440167 -3.88166e-22) -(7.39077 -0.443041 4.5358e-22) -(7.36969 -0.446957 5.65877e-23) -(7.34992 -0.452001 5.92188e-22) -(7.33165 -0.458249 9.17564e-22) -(7.31508 -0.465756 1.28056e-23) -(7.30048 -0.474546 2.26677e-22) -(7.28806 -0.484596 -8.00451e-22) -(7.27823 -0.495793 3.02728e-22) -(7.27028 -0.50795 9.92608e-22) -(7.26905 -0.520281 2.22477e-21) -(10.1084 0.0339635 4.89637e-23) -(10.1099 0.0319588 2.43113e-22) -(10.1111 0.0299604 9.64753e-23) -(10.1121 0.0279644 1.23451e-22) -(10.113 0.0259811 7.11391e-24) -(10.1138 0.0240375 -6.63885e-23) -(10.1144 0.0221534 -3.44311e-23) -(10.1149 0.0203387 1.18415e-22) -(10.1153 0.0186003 2.2501e-23) -(10.1157 0.0169446 1.05666e-23) -(10.1159 0.0153752 6.09399e-23) -(10.1161 0.0138935 1.15706e-22) -(10.1163 0.012498 -2.17543e-23) -(10.1164 0.0111849 -1.26821e-22) -(10.1165 0.00994858 -1.03744e-22) -(10.1166 0.00878305 -1.19013e-22) -(10.1167 0.0076827 -2.02385e-22) -(10.1168 0.00664218 -3.49371e-23) -(10.1168 0.00565641 -8.40191e-23) -(10.1169 0.00472057 -1.83481e-22) -(10.117 0.0038301 -4.40435e-23) -(10.1171 0.00298073 1.53096e-22) -(10.1172 0.00216834 4.08973e-24) -(10.1173 0.00138899 -2.01718e-23) -(10.1174 0.000638805 -9.8908e-23) -(10.1176 -8.60418e-05 -8.53309e-23) -(10.1177 -0.000789363 8.14445e-23) -(10.1178 -0.00147502 2.57563e-23) -(10.118 -0.002147 3.11371e-23) -(10.1181 -0.00280961 8.46703e-23) -(10.1183 -0.00346746 1.53824e-22) -(10.1184 -0.00412525 8.31559e-23) -(10.1185 -0.00478765 1.10223e-22) -(10.1186 -0.00545928 2.27434e-22) -(10.1187 -0.00614475 2.02079e-22) -(10.1188 -0.00684875 -1.28338e-22) -(10.1188 -0.00757597 -1.29277e-22) -(10.1188 -0.00833115 1.00412e-22) -(10.1188 -0.00911906 2.51004e-22) -(10.1187 -0.00994448 1.32005e-22) -(10.1185 -0.0108122 4.37099e-23) -(10.1183 -0.0117271 -2.46513e-23) -(10.118 -0.0126939 2.27612e-22) -(10.1176 -0.0137174 2.01985e-22) -(10.1171 -0.0148025 3.53749e-22) -(10.1166 -0.015954 2.40234e-22) -(10.1159 -0.0171766 1.16594e-22) -(10.1151 -0.0184753 -6.35363e-23) -(10.1141 -0.0198552 -1.68232e-23) -(10.1131 -0.0213214 -1.44453e-22) -(10.1118 -0.0228794 -2.62346e-23) -(10.1104 -0.0245346 6.94575e-23) -(10.1089 -0.0262924 2.81727e-22) -(10.1071 -0.0281584 3.20534e-22) -(10.1051 -0.0301379 1.96423e-22) -(10.1029 -0.0322368 2.07049e-22) -(10.1005 -0.0344605 3.54758e-22) -(10.0978 -0.0368147 3.62694e-22) -(10.0948 -0.0393049 1.91291e-22) -(10.0916 -0.0419368 4.8507e-23) -(10.088 -0.0447158 -2.08734e-22) -(10.0842 -0.0476476 -2.93827e-22) -(10.08 -0.0507376 -2.91873e-22) -(10.0755 -0.0539914 -5.91043e-22) -(10.0707 -0.0574141 -4.69344e-22) -(10.0655 -0.0610108 -1.23053e-22) -(10.0599 -0.064786 -1.30618e-22) -(10.054 -0.0687441 -9.51287e-23) -(10.0476 -0.0728893 -7.76912e-23) -(10.0409 -0.0772256 3.53548e-23) -(10.0338 -0.0817567 2.85273e-22) -(10.0262 -0.0864862 -7.65203e-23) -(10.0183 -0.0914172 1.52752e-23) -(10.0099 -0.0965525 3.82071e-22) -(10.0011 -0.101895 5.92936e-22) -(9.99195 -0.107446 6.69904e-22) -(9.98234 -0.113207 -8.92042e-24) -(9.97233 -0.119181 -7.06678e-23) -(9.9619 -0.125368 -3.85634e-22) -(9.95106 -0.131767 -2.32177e-22) -(9.93982 -0.138379 -1.29824e-22) -(9.92817 -0.145202 9.48028e-23) -(9.91612 -0.152234 -2.61346e-22) -(9.90368 -0.159471 1.00171e-22) -(9.89083 -0.16691 -7.11108e-23) -(9.8776 -0.174543 -1.04858e-22) -(9.86397 -0.182366 -4.44293e-23) -(9.84994 -0.190368 1.96862e-22) -(9.83553 -0.198541 3.62181e-23) -(9.82073 -0.206875 1.81506e-23) -(9.80553 -0.215357 -3.14261e-24) -(9.78995 -0.223974 -6.74052e-23) -(9.77397 -0.232712 -1.90765e-22) -(9.75761 -0.241557 2.2032e-22) -(9.74085 -0.250493 2.76714e-23) -(9.72369 -0.259504 -9.19455e-23) -(9.70614 -0.268573 2.5844e-22) -(9.68818 -0.277684 1.08637e-22) -(9.66983 -0.286819 8.22819e-23) -(9.65107 -0.295961 5.4551e-23) -(9.6319 -0.305091 9.11841e-23) -(9.61232 -0.314192 2.42241e-22) -(9.59233 -0.323246 -1.10778e-23) -(9.57192 -0.332236 -2.98214e-22) -(9.55109 -0.341142 -2.28881e-22) -(9.52983 -0.349949 -8.39967e-24) -(9.50815 -0.358638 -2.60707e-22) -(9.48603 -0.367193 -1.78522e-22) -(9.46349 -0.375595 -2.62974e-22) -(9.44051 -0.383829 -5.61632e-24) -(9.41709 -0.391879 2.38745e-22) -(9.39324 -0.399728 3.8153e-22) -(9.36896 -0.407361 4.06532e-22) -(9.34423 -0.414764 3.11336e-22) -(9.31908 -0.421921 2.86953e-22) -(9.29349 -0.42882 3.27918e-22) -(9.26747 -0.435447 2.82389e-22) -(9.24103 -0.44179 -7.78387e-23) -(9.21416 -0.447837 -5.18078e-23) -(9.18689 -0.453576 3.17226e-22) -(9.1592 -0.458998 1.56823e-22) -(9.13111 -0.464094 -2.31656e-22) -(9.10264 -0.468855 1.40929e-23) -(9.07378 -0.473273 -1.20364e-22) -(9.04455 -0.477342 -5.90987e-23) -(9.01496 -0.481055 2.56963e-22) -(8.98502 -0.484409 1.42052e-22) -(8.95475 -0.487399 1.34317e-22) -(8.92416 -0.490024 9.93856e-23) -(8.89327 -0.492281 1.62012e-22) -(8.86208 -0.49417 4.60463e-22) -(8.83063 -0.495692 2.46578e-22) -(8.79891 -0.496848 7.32636e-23) -(8.76696 -0.497643 1.08501e-22) -(8.73479 -0.498079 9.75083e-23) -(8.70242 -0.498164 4.31179e-22) -(8.66986 -0.497903 4.93448e-24) -(8.63714 -0.497305 -2.36404e-22) -(8.60428 -0.496379 -3.60145e-22) -(8.57129 -0.495136 -3.36484e-22) -(8.5382 -0.493588 -1.83552e-22) -(8.50503 -0.491748 1.67193e-22) -(8.4718 -0.489631 9.09475e-24) -(8.43852 -0.487253 -3.03539e-22) -(8.40523 -0.484631 -4.77048e-22) -(8.37193 -0.481784 -1.3539e-22) -(8.33866 -0.478733 -4.47083e-22) -(8.30542 -0.475498 2.26976e-22) -(8.27226 -0.472103 1.00905e-23) -(8.23917 -0.468573 5.44387e-23) -(8.20619 -0.464934 3.75716e-22) -(8.17334 -0.461213 5.35814e-22) -(8.14064 -0.457441 9.8199e-22) -(8.10811 -0.453648 4.37729e-22) -(8.07577 -0.449868 1.44653e-22) -(8.04364 -0.446136 9.55384e-23) -(8.01176 -0.442491 1.08836e-22) -(7.98013 -0.438971 -3.79643e-22) -(7.9488 -0.43562 6.0809e-22) -(7.91778 -0.432484 -1.19602e-22) -(7.8871 -0.429611 -2.26241e-22) -(7.85679 -0.427054 -5.72706e-22) -(7.82689 -0.42487 -8.96279e-22) -(7.79744 -0.42312 -1.52382e-21) -(7.76846 -0.421869 -1.7648e-21) -(7.74002 -0.421188 -8.21292e-22) -(7.71216 -0.421154 -1.16763e-21) -(7.68495 -0.421848 1.45445e-22) -(7.65846 -0.42336 -4.41385e-22) -(7.63278 -0.425781 1.04857e-22) -(7.60802 -0.42921 -1.4763e-21) -(7.58432 -0.433745 -3.70499e-22) -(7.56181 -0.439484 -1.95877e-21) -(7.54071 -0.446515 -2.77399e-21) -(7.52122 -0.454905 -1.71062e-21) -(7.50361 -0.464688 -1.11802e-21) -(7.48812 -0.475843 -8.332e-22) -(7.47518 -0.488233 -5.2079e-22) -(7.46419 -0.501697 -1.70404e-21) -(7.45993 -0.515058 -8.50809e-23) -(10.109 0.0324047 3.99289e-23) -(10.1108 0.0305963 -1.39842e-22) -(10.1123 0.0287731 -1.75402e-22) -(10.1137 0.0269491 -2.70629e-22) -(10.1149 0.0251379 -9.98074e-23) -(10.116 0.0233568 -5.94339e-23) -(10.117 0.0216201 1.19613e-22) -(10.1179 0.0199361 -8.99629e-25) -(10.1186 0.0183102 -1.69206e-23) -(10.1193 0.0167463 -1.01655e-22) -(10.12 0.0152477 -1.44421e-22) -(10.1205 0.0138162 1.07144e-23) -(10.1211 0.0124523 9.43708e-23) -(10.1216 0.0111553 1.35495e-22) -(10.122 0.0099233 1.85239e-23) -(10.1225 0.00875384 1.61162e-22) -(10.1229 0.00764419 2.44477e-22) -(10.1233 0.00659139 -6.83594e-23) -(10.1237 0.00559218 -6.25454e-23) -(10.1241 0.00464302 1.70055e-22) -(10.1246 0.00374015 4.27057e-23) -(10.125 0.00287966 -1.18958e-22) -(10.1254 0.00205751 -6.86049e-24) -(10.1259 0.00126959 -1.20891e-22) -(10.1264 0.000511744 -2.54626e-22) -(10.1268 -0.000220155 7.21482e-23) -(10.1273 -0.000930214 2.35672e-22) -(10.1278 -0.00162251 4.24994e-23) -(10.1284 -0.00230111 3.74934e-23) -(10.1289 -0.00297017 2.26918e-23) -(10.1295 -0.0036339 1.00321e-23) -(10.1301 -0.00429652 7.20405e-24) -(10.1307 -0.00496214 -1.23693e-22) -(10.1313 -0.00563481 -3.59474e-22) -(10.1319 -0.00631854 -2.69618e-23) -(10.1325 -0.00701736 5.80723e-22) -(10.1331 -0.00773533 4.69951e-22) -(10.1337 -0.00847661 2.74765e-22) -(10.1344 -0.00924542 -7.58927e-23) -(10.135 -0.0100461 6.30197e-23) -(10.1356 -0.0108831 7.47355e-23) -(10.1362 -0.0117609 6.25206e-23) -(10.1368 -0.0126842 8.16683e-23) -(10.1373 -0.0136577 9.79033e-23) -(10.1379 -0.0146863 2.19994e-22) -(10.1384 -0.0157749 1.7306e-22) -(10.1388 -0.0169285 -2.675e-22) -(10.1393 -0.018152 1.01397e-22) -(10.1397 -0.0194508 2.13926e-22) -(10.14 -0.0208301 4.11259e-23) -(10.1403 -0.0222952 1.13818e-23) -(10.1405 -0.0238516 -1.0783e-22) -(10.1406 -0.0255045 -4.38e-22) -(10.1406 -0.0272592 -6.80507e-22) -(10.1406 -0.029121 -5.61998e-22) -(10.1404 -0.0310951 -5.35108e-22) -(10.1402 -0.0331865 -8.66918e-22) -(10.1398 -0.0354004 -7.55929e-22) -(10.1393 -0.0377416 -6.53239e-22) -(10.1386 -0.0402151 -7.07811e-22) -(10.1378 -0.0428257 -4.41462e-22) -(10.1369 -0.0455784 -1.91949e-22) -(10.1357 -0.0484779 -6.30815e-23) -(10.1344 -0.0515291 2.82544e-22) -(10.1329 -0.0547366 1.857e-22) -(10.1311 -0.0581052 4.75907e-22) -(10.1292 -0.061639 1.93727e-22) -(10.127 -0.0653425 1.10749e-22) -(10.1245 -0.0692199 4.36076e-23) -(10.1218 -0.0732754 -6.58884e-23) -(10.1189 -0.0775131 -2.83462e-22) -(10.1156 -0.0819369 -3.67926e-22) -(10.112 -0.0865507 -4.21766e-22) -(10.1081 -0.0913581 -5.33671e-22) -(10.1039 -0.0963623 -8.97855e-22) -(10.0994 -0.101566 -1.17559e-21) -(10.0945 -0.106973 -6.11196e-22) -(10.0892 -0.112585 -3.30274e-22) -(10.0835 -0.118403 1.78023e-22) -(10.0775 -0.12443 3.24658e-22) -(10.071 -0.130665 1.02371e-23) -(10.0641 -0.137108 -3.435e-22) -(10.0568 -0.143757 -3.99483e-22) -(10.049 -0.150611 -9.0434e-22) -(10.0407 -0.157665 -4.92204e-22) -(10.032 -0.164915 -3.80543e-22) -(10.0228 -0.172355 -3.10102e-22) -(10.013 -0.179977 -2.62424e-22) -(10.0028 -0.187772 -1.41409e-22) -(9.99202 -0.195731 1.19572e-22) -(9.98072 -0.203842 -1.09017e-24) -(9.96887 -0.212092 2.76857e-22) -(9.95647 -0.220469 3.69862e-22) -(9.94352 -0.228957 3.8949e-22) -(9.93 -0.237542 1.43238e-22) -(9.91591 -0.246208 -2.11221e-23) -(9.90125 -0.254939 -2.9379e-22) -(9.88602 -0.263717 -1.45065e-22) -(9.87021 -0.272525 -8.71528e-23) -(9.85382 -0.281346 -1.20338e-22) -(9.83685 -0.290162 -4.06154e-22) -(9.81931 -0.298956 -5.27779e-22) -(9.80118 -0.307708 -3.80233e-22) -(9.78248 -0.316402 -4.57497e-23) -(9.7632 -0.325019 -1.92521e-22) -(9.74335 -0.333542 2.84161e-22) -(9.72293 -0.341954 2.92236e-22) -(9.70195 -0.350237 1.97294e-22) -(9.6804 -0.358374 4.06978e-22) -(9.65829 -0.366349 3.17307e-22) -(9.63563 -0.374145 -2.15344e-22) -(9.61242 -0.381747 4.83211e-22) -(9.58868 -0.38914 7.71105e-22) -(9.5644 -0.396308 7.03317e-22) -(9.5396 -0.403239 3.01205e-22) -(9.51428 -0.409917 8.10569e-23) -(9.48845 -0.416331 2.62097e-22) -(9.46213 -0.422468 2.7336e-22) -(9.43532 -0.428317 3.09547e-22) -(9.40804 -0.433866 7.50593e-23) -(9.3803 -0.439106 1.13645e-22) -(9.35211 -0.444029 3.36742e-22) -(9.32348 -0.448625 -1.58337e-24) -(9.29443 -0.452887 1.15942e-22) -(9.26497 -0.45681 4.24505e-22) -(9.23513 -0.460387 2.21059e-22) -(9.20491 -0.463614 2.01284e-22) -(9.17434 -0.466487 1.69524e-22) -(9.14343 -0.469005 -1.12231e-22) -(9.1122 -0.471165 -2.45876e-23) -(9.08066 -0.472968 2.01261e-22) -(9.04885 -0.474415 2.0527e-22) -(9.01678 -0.475507 1.83934e-22) -(8.98446 -0.476248 1.29486e-22) -(8.95192 -0.476642 -3.10014e-23) -(8.91918 -0.476695 1.42207e-22) -(8.88626 -0.476413 5.40779e-22) -(8.85318 -0.475805 4.52626e-23) -(8.81996 -0.474879 -2.03522e-22) -(8.78663 -0.473648 -1.37939e-22) -(8.7532 -0.472122 -2.12511e-22) -(8.71969 -0.470314 1.05108e-22) -(8.68612 -0.46824 1.73849e-22) -(8.65252 -0.465915 -2.00989e-22) -(8.6189 -0.463356 1.16579e-22) -(8.58529 -0.460582 5.94314e-22) -(8.5517 -0.457614 4.60426e-22) -(8.51815 -0.454471 8.66525e-23) -(8.48466 -0.451179 5.00918e-22) -(8.45126 -0.447761 1.92115e-22) -(8.41794 -0.444243 -8.88995e-23) -(8.38475 -0.440653 -4.19957e-22) -(8.35168 -0.43702 -3.22317e-22) -(8.31877 -0.433377 3.80057e-22) -(8.28602 -0.429756 4.58067e-22) -(8.25345 -0.426194 1.802e-22) -(8.22109 -0.422727 1.70997e-22) -(8.18895 -0.419397 -1.31075e-21) -(8.15705 -0.416247 -1.79264e-21) -(8.12541 -0.413324 -1.05856e-21) -(8.09405 -0.410676 -5.34457e-22) -(8.06299 -0.408359 -2.51065e-22) -(8.03226 -0.406429 -4.24789e-22) -(8.00189 -0.404951 -4.52226e-22) -(7.9719 -0.403991 1.54714e-21) -(7.94234 -0.403624 7.81324e-22) -(7.91325 -0.40393 2.66376e-21) -(7.88469 -0.404997 -8.73963e-22) -(7.85671 -0.406918 1.12489e-21) -(7.8294 -0.409795 7.49156e-22) -(7.80285 -0.413735 2.37724e-21) -(7.77719 -0.418849 1.65584e-21) -(7.75257 -0.425248 1.03466e-21) -(7.72917 -0.433036 -7.17177e-22) -(7.70722 -0.442298 -3.04647e-22) -(7.68699 -0.453078 -1.04166e-21) -(7.66876 -0.465368 -4.91952e-22) -(7.65298 -0.479014 -1.1809e-21) -(7.63924 -0.493856 -7.32062e-22) -(7.63201 -0.508459 -1.5546e-21) -(10.1073 0.0306904 2.03083e-23) -(10.1092 0.0290305 1.56234e-23) -(10.1109 0.0273455 1.75987e-22) -(10.1124 0.02565 1.5991e-22) -(10.1138 0.0239588 -3.46366e-23) -(10.1152 0.0222868 5.42321e-23) -(10.1164 0.0206469 -9.39958e-23) -(10.1175 0.0190484 -5.73149e-23) -(10.1185 0.0174981 -9.69941e-23) -(10.1194 0.0160011 2.49087e-23) -(10.1203 0.0145615 4.7537e-23) -(10.1211 0.0131817 7.16074e-23) -(10.1219 0.011863 -4.71183e-24) -(10.1226 0.010605 -5.21483e-23) -(10.1233 0.00940649 2.39217e-23) -(10.124 0.00826545 -8.5032e-23) -(10.1246 0.00717937 -1.34177e-22) -(10.1253 0.00614545 -3.51012e-23) -(10.1259 0.00516065 -3.80476e-23) -(10.1265 0.00422169 -3.04753e-23) -(10.1272 0.00332518 -4.50499e-23) -(10.1278 0.00246763 -4.54657e-23) -(10.1285 0.00164548 1.06235e-22) -(10.1291 0.000855119 3.3287e-22) -(10.1298 9.29382e-05 9.0739e-23) -(10.1305 -0.00064469 -2.08898e-22) -(10.1312 -0.0013614 2.87448e-24) -(10.1319 -0.00206083 2.62942e-23) -(10.1327 -0.00274669 2.01813e-23) -(10.1334 -0.00342276 -1.0071e-22) -(10.1342 -0.00409288 -1.94296e-22) -(10.135 -0.00476098 -6.87333e-25) -(10.1358 -0.00543096 1.47001e-23) -(10.1366 -0.00610672 7.55317e-24) -(10.1375 -0.00679218 5.59326e-24) -(10.1383 -0.00749129 5.18237e-23) -(10.1392 -0.00820806 -4.88472e-23) -(10.1401 -0.00894656 -1.8295e-22) -(10.141 -0.00971093 -1.23406e-22) -(10.1419 -0.0105054 -9.11604e-23) -(10.1428 -0.0113343 1.93548e-22) -(10.1437 -0.0122019 5.43087e-23) -(10.1446 -0.0131128 7.33094e-23) -(10.1455 -0.0140713 7.17454e-23) -(10.1464 -0.0150822 7.22683e-23) -(10.1473 -0.01615 1.71662e-22) -(10.1482 -0.0172794 3.41508e-22) -(10.149 -0.0184751 8.00971e-23) -(10.1499 -0.019742 -3.4873e-22) -(10.1507 -0.0210849 -8.76919e-23) -(10.1515 -0.0225089 -9.74552e-23) -(10.1522 -0.0240189 -1.22139e-22) -(10.153 -0.0256199 -2.80987e-23) -(10.1536 -0.0273169 -7.99826e-24) -(10.1542 -0.0291148 -3.15212e-22) -(10.1547 -0.0310186 -1.09096e-22) -(10.1552 -0.0330332 -1.89579e-22) -(10.1556 -0.0351634 -7.40501e-22) -(10.1559 -0.037414 -5.96436e-22) -(10.1561 -0.03979 -1.35134e-22) -(10.1562 -0.0422959 -2.21189e-22) -(10.1562 -0.0449367 -5.82567e-23) -(10.1561 -0.047717 2.68497e-22) -(10.1558 -0.0506415 1.44573e-22) -(10.1554 -0.053715 -5.47052e-23) -(10.1549 -0.0569417 -1.61462e-22) -(10.1542 -0.0603261 -2.39729e-22) -(10.1533 -0.0638725 -2.64907e-22) -(10.1522 -0.0675849 -2.71726e-22) -(10.1509 -0.0714673 -2.48911e-22) -(10.1494 -0.0755237 -4.97433e-23) -(10.1477 -0.0797579 4.05723e-22) -(10.1458 -0.0841734 4.41138e-22) -(10.1436 -0.0887735 1.55559e-22) -(10.1411 -0.0935613 1.70777e-22) -(10.1384 -0.0985397 5.46465e-22) -(10.1353 -0.103711 7.70524e-22) -(10.132 -0.109077 2.70801e-22) -(10.1283 -0.11464 6.36225e-23) -(10.1243 -0.1204 -2.53437e-22) -(10.1199 -0.126358 -1.02507e-22) -(10.1151 -0.132514 -1.30579e-22) -(10.11 -0.138865 9.37538e-23) -(10.1044 -0.14541 5.58503e-22) -(10.0984 -0.152144 1.62121e-22) -(10.0919 -0.159065 1.11487e-22) -(10.085 -0.166165 -5.64443e-23) -(10.0776 -0.173438 -3.52164e-22) -(10.0697 -0.180876 -2.99654e-22) -(10.0613 -0.188469 -6.24795e-22) -(10.0524 -0.196207 -7.82195e-22) -(10.0429 -0.204079 -8.74044e-22) -(10.0329 -0.212071 -9.19888e-22) -(10.0222 -0.220171 -8.53079e-22) -(10.011 -0.228364 -4.55987e-22) -(9.99926 -0.236635 -1.08247e-22) -(9.98686 -0.244969 -2.28268e-22) -(9.97386 -0.253349 -1.18015e-22) -(9.96024 -0.26176 1.77629e-22) -(9.946 -0.270185 3.02331e-22) -(9.93113 -0.278606 1.42174e-22) -(9.91563 -0.287007 -1.54527e-22) -(9.8995 -0.29537 6.45061e-22) -(9.88274 -0.303679 3.40679e-22) -(9.86534 -0.311915 5.18113e-22) -(9.84731 -0.320062 3.32305e-22) -(9.82865 -0.328103 -1.31316e-22) -(9.80937 -0.336021 -6.66268e-23) -(9.78946 -0.343799 -4.52349e-22) -(9.76894 -0.351422 -4.12005e-23) -(9.74781 -0.358874 6.91008e-22) -(9.72607 -0.366139 1.26112e-22) -(9.70374 -0.373203 -4.84839e-23) -(9.68083 -0.380051 -6.62179e-23) -(9.65733 -0.386669 6.32204e-22) -(9.63328 -0.393045 5.65124e-22) -(9.60866 -0.399165 -8.5218e-23) -(9.58351 -0.405018 1.30885e-22) -(9.55784 -0.410593 3.00584e-22) -(9.53164 -0.415879 3.91944e-22) -(9.50496 -0.420866 3.72325e-23) -(9.47779 -0.425546 1.34515e-22) -(9.45015 -0.429911 5.26292e-22) -(9.42207 -0.433954 4.37867e-22) -(9.39356 -0.437667 1.41209e-22) -(9.36464 -0.441047 -1.07877e-23) -(9.33533 -0.444089 1.93123e-22) -(9.30565 -0.446789 2.10549e-22) -(9.27561 -0.449146 3.29609e-22) -(9.24525 -0.451157 1.70977e-22) -(9.21458 -0.452824 3.8137e-23) -(9.18362 -0.454146 7.00457e-23) -(9.1524 -0.455126 1.89526e-22) -(9.12094 -0.455767 6.83468e-23) -(9.08925 -0.456073 7.13142e-23) -(9.05737 -0.45605 -2.1752e-22) -(9.02531 -0.455705 -2.77784e-22) -(8.9931 -0.455045 3.39786e-22) -(8.96075 -0.454079 4.29736e-22) -(8.9283 -0.452818 2.27018e-22) -(8.89575 -0.451274 2.048e-22) -(8.86314 -0.44946 -1.15063e-22) -(8.83048 -0.447389 -2.86779e-22) -(8.79779 -0.445078 -8.00108e-23) -(8.7651 -0.442543 -8.07544e-22) -(8.73241 -0.439802 -4.43698e-22) -(8.69975 -0.436876 -6.76516e-23) -(8.66714 -0.433786 -3.53632e-22) -(8.63459 -0.430553 -4.40761e-22) -(8.60211 -0.427203 -6.92458e-23) -(8.56973 -0.423761 6.76975e-22) -(8.53745 -0.420256 6.19682e-22) -(8.50529 -0.416715 3.17677e-22) -(8.47326 -0.413171 1.9535e-22) -(8.44138 -0.409657 3.12688e-22) -(8.40965 -0.406209 -4.19873e-22) -(8.37808 -0.402864 -1.37855e-21) -(8.34669 -0.399664 -1.83694e-22) -(8.31549 -0.396651 -4.35054e-23) -(8.28449 -0.393874 -8.66264e-22) -(8.25369 -0.391383 -1.62886e-21) -(8.22312 -0.389232 -2.23366e-21) -(8.19278 -0.387481 -7.6153e-22) -(8.1627 -0.386194 -2.21107e-22) -(8.13289 -0.385442 -9.24701e-22) -(8.10337 -0.385303 -2.94973e-22) -(8.07418 -0.385859 -1.23946e-21) -(8.04536 -0.387205 -8.4878e-22) -(8.01695 -0.38944 -4.86909e-22) -(7.98901 -0.392675 5.08584e-24) -(7.96164 -0.397027 -8.92009e-22) -(7.93493 -0.402622 -6.57206e-22) -(7.90903 -0.409587 6.32916e-22) -(7.8841 -0.418046 1.57769e-21) -(7.86039 -0.428107 1.88262e-21) -(7.83817 -0.439837 2.28415e-21) -(7.81776 -0.453244 1.252e-21) -(7.79963 -0.468183 1.6652e-21) -(7.78365 -0.484483 1.01301e-21) -(7.77364 -0.500646 7.89695e-22) -(10.1037 0.0285602 2.53406e-24) -(10.1057 0.0270483 1.26132e-23) -(10.1075 0.0255074 -3.5786e-23) -(10.1092 0.0239505 3.99858e-23) -(10.1107 0.0223915 2.0765e-22) -(10.1122 0.0208436 1.67047e-22) -(10.1136 0.0193178 1.81242e-22) -(10.1149 0.0178231 1.45855e-22) -(10.1161 0.016366 1.84371e-22) -(10.1172 0.0149518 1.77021e-22) -(10.1183 0.0135847 3.90035e-22) -(10.1193 0.0122672 3.72578e-22) -(10.1202 0.0110011 1.40198e-22) -(10.1212 0.00978671 8.29763e-23) -(10.122 0.00862376 -1.05925e-22) -(10.1229 0.00751113 -3.46767e-22) -(10.1238 0.0064472 -2.37874e-22) -(10.1246 0.00542999 -2.88291e-23) -(10.1254 0.00445719 -2.78095e-23) -(10.1262 0.00352623 -1.69361e-22) -(10.127 0.00263432 -2.60195e-22) -(10.1278 0.0017785 -6.80936e-23) -(10.1287 0.000955653 -1.83427e-22) -(10.1295 0.000162596 -2.26103e-22) -(10.1303 -0.000603956 1.10179e-22) -(10.1312 -0.00134734 5.54634e-23) -(10.132 -0.00207095 -9.42133e-23) -(10.1329 -0.00277821 1.98505e-22) -(10.1338 -0.00347262 4.02807e-23) -(10.1347 -0.00415774 1.79187e-22) -(10.1356 -0.00483717 2.82079e-22) -(10.1365 -0.00551458 1.1882e-22) -(10.1375 -0.00619365 2.41315e-22) -(10.1384 -0.00687807 3.26393e-22) -(10.1394 -0.00757154 1.02965e-23) -(10.1404 -0.00827783 -1.24401e-22) -(10.1414 -0.00900071 -8.13241e-23) -(10.1424 -0.00974405 -1.69202e-22) -(10.1435 -0.0105118 1.96796e-22) -(10.1445 -0.0113079 2.59893e-22) -(10.1456 -0.0121365 -1.46748e-22) -(10.1466 -0.0130017 1.10393e-22) -(10.1477 -0.0139077 2.13601e-22) -(10.1488 -0.0148589 3.6957e-23) -(10.1499 -0.0158596 -9.7368e-23) -(10.1509 -0.0169142 -1.96261e-22) -(10.152 -0.0180273 -9.45763e-23) -(10.153 -0.0192033 -1.86014e-22) -(10.1541 -0.020447 -1.61412e-22) -(10.1551 -0.021763 -2.44046e-22) -(10.1561 -0.0231561 -2.32666e-22) -(10.1571 -0.0246311 -3.78659e-22) -(10.158 -0.0261926 1.29236e-22) -(10.1589 -0.0278456 3.11278e-22) -(10.1598 -0.0295948 -7.54923e-23) -(10.1606 -0.0314448 5.01485e-23) -(10.1613 -0.0334003 2.33898e-22) -(10.162 -0.0354661 5.91114e-22) -(10.1626 -0.0376468 6.66439e-22) -(10.1631 -0.0399468 5.52805e-22) -(10.1636 -0.0423708 2.49672e-23) -(10.1639 -0.0449233 -4.76077e-22) -(10.1642 -0.0476087 -6.93921e-22) -(10.1643 -0.0504315 -7.00084e-22) -(10.1644 -0.053396 -7.82778e-22) -(10.1642 -0.0565064 -1.37896e-21) -(10.164 -0.0597668 -1.06179e-21) -(10.1636 -0.0631812 -6.73378e-22) -(10.163 -0.0667535 -5.33492e-22) -(10.1623 -0.0704876 -2.95891e-22) -(10.1613 -0.074387 1.33152e-22) -(10.1602 -0.0784552 1.76319e-22) -(10.1588 -0.0826957 -3.43466e-23) -(10.1573 -0.0871115 -3.41169e-23) -(10.1554 -0.0917054 -1.68765e-22) -(10.1534 -0.09648 -5.9425e-22) -(10.151 -0.101438 -7.51306e-22) -(10.1484 -0.10658 -2.85854e-22) -(10.1455 -0.111908 -2.49279e-22) -(10.1422 -0.117424 -2.38274e-22) -(10.1387 -0.123126 -2.10844e-22) -(10.1347 -0.129014 -1.92184e-22) -(10.1304 -0.135088 -1.74945e-22) -(10.1257 -0.141344 -1.29583e-22) -(10.1206 -0.147779 -2.47847e-24) -(10.1151 -0.15439 2.0622e-22) -(10.1092 -0.161169 1.31278e-23) -(10.1028 -0.168112 -9.67603e-24) -(10.0959 -0.17521 -3.72285e-23) -(10.0885 -0.182453 -8.39894e-23) -(10.0806 -0.189834 -1.21963e-22) -(10.0721 -0.19734 -1.31685e-22) -(10.0632 -0.204959 -6.44379e-24) -(10.0536 -0.21268 -1.64684e-22) -(10.0436 -0.220488 -1.0318e-22) -(10.0329 -0.22837 3.6147e-23) -(10.0216 -0.236311 -1.31342e-22) -(10.0097 -0.244296 -2.38459e-22) -(9.99725 -0.252309 -4.67234e-22) -(9.98415 -0.260334 -3.83053e-22) -(9.97042 -0.268356 5.33296e-23) -(9.95606 -0.276357 2.57518e-22) -(9.94107 -0.284322 -2.14311e-22) -(9.92544 -0.292234 1.41386e-22) -(9.90918 -0.300077 -2.59503e-23) -(9.89227 -0.307833 -1.61653e-22) -(9.87473 -0.315488 3.79768e-22) -(9.85655 -0.323025 1.55026e-22) -(9.83775 -0.330428 3.25891e-22) -(9.81831 -0.337682 4.87578e-22) -(9.79825 -0.344772 -7.6086e-23) -(9.77758 -0.351682 -8.40092e-22) -(9.7563 -0.358399 -5.77908e-22) -(9.73443 -0.36491 -5.73055e-23) -(9.71196 -0.371199 -5.0679e-22) -(9.68892 -0.377256 -1.5727e-22) -(9.66532 -0.383068 6.50216e-23) -(9.64116 -0.388623 -7.68273e-23) -(9.61646 -0.39391 1.51012e-22) -(9.59125 -0.398921 2.21004e-23) -(9.56553 -0.403645 4.67236e-22) -(9.53932 -0.408073 1.52271e-22) -(9.51264 -0.412199 7.33166e-23) -(9.4855 -0.416015 6.25932e-23) -(9.45794 -0.419516 -1.71592e-22) -(9.42996 -0.422696 1.85496e-22) -(9.40159 -0.425551 1.79859e-22) -(9.37284 -0.428079 1.71423e-22) -(9.34375 -0.430276 2.84259e-22) -(9.31433 -0.432142 7.66827e-23) -(9.28461 -0.433676 1.14693e-22) -(9.25461 -0.43488 1.88191e-22) -(9.22435 -0.435756 -9.29701e-23) -(9.19385 -0.436305 8.62283e-23) -(9.16314 -0.436534 2.11254e-22) -(9.13225 -0.436446 1.41297e-22) -(9.10119 -0.436049 2.15052e-22) -(9.06999 -0.43535 -6.77215e-23) -(9.03867 -0.434358 -2.82437e-22) -(9.00726 -0.433082 -2.8312e-22) -(8.97577 -0.431535 -2.65177e-22) -(8.94423 -0.429728 9.41709e-23) -(8.91267 -0.427676 -3.45357e-22) -(8.88109 -0.425393 -5.19327e-22) -(8.84951 -0.422895 3.61958e-23) -(8.81797 -0.420202 -1.00444e-22) -(8.78647 -0.417331 -4.05487e-22) -(8.75503 -0.414303 7.47564e-23) -(8.72366 -0.411141 1.78093e-23) -(8.69239 -0.407868 1.18085e-22) -(8.66121 -0.404509 -1.003e-21) -(8.63015 -0.401091 -4.05178e-22) -(8.59922 -0.397643 -2.4023e-22) -(8.56841 -0.394197 -2.50301e-22) -(8.53775 -0.390784 -5.43621e-22) -(8.50723 -0.38744 2.79364e-22) -(8.47686 -0.384203 1.45733e-21) -(8.44665 -0.381114 5.49379e-22) -(8.4166 -0.378216 -6.6338e-22) -(8.3867 -0.375556 6.9324e-22) -(8.35697 -0.373186 6.56925e-22) -(8.3274 -0.371161 1.89987e-21) -(8.298 -0.36954 -4.76003e-22) -(8.26877 -0.368391 -5.57667e-22) -(8.23971 -0.367785 8.30244e-22) -(8.21084 -0.367802 9.7675e-22) -(8.18217 -0.368531 -8.19322e-22) -(8.1537 -0.370069 9.08921e-22) -(8.12549 -0.372522 -1.88966e-22) -(8.09757 -0.37601 -9.07601e-23) -(8.06999 -0.380663 2.79889e-22) -(8.04285 -0.386619 2.28759e-22) -(8.01627 -0.394025 -8.8015e-22) -(7.99041 -0.403029 -2.2532e-22) -(7.96549 -0.413766 -1.50877e-21) -(7.9418 -0.426335 -1.10233e-21) -(7.91969 -0.440772 -2.84009e-22) -(7.89968 -0.456963 -9.93542e-22) -(7.88194 -0.474745 -3.54512e-22) -(7.86938 -0.492674 1.04903e-22) -(10.0988 0.0259815 -8.55035e-24) -(10.1009 0.0246139 1.5505e-22) -(10.1027 0.0232161 2.3716e-22) -(10.1044 0.0217989 1.92758e-22) -(10.1061 0.020374 2.63483e-22) -(10.1077 0.0189526 -8.90196e-23) -(10.1092 0.0175444 -1.73044e-22) -(10.1106 0.0161574 2.17769e-23) -(10.112 0.0147982 4.22989e-23) -(10.1132 0.0134722 6.1178e-23) -(10.1145 0.0121835 8.21232e-23) -(10.1156 0.0109352 9.46989e-23) -(10.1167 0.0097295 7.29202e-23) -(10.1178 0.00856738 -6.59723e-23) -(10.1189 0.00744915 1.72685e-24) -(10.1199 0.00637442 3.96422e-22) -(10.1209 0.00534223 2.97258e-22) -(10.1219 0.00435119 1.20055e-22) -(10.1229 0.00339954 1.18464e-22) -(10.1238 0.00248523 1.07231e-22) -(10.1248 0.00160594 9.2839e-23) -(10.1257 0.00075918 8.57178e-23) -(10.1267 -5.77269e-05 6.85967e-23) -(10.1276 -0.000847572 4.83816e-23) -(10.1286 -0.00161325 4.8349e-23) -(10.1296 -0.00235776 -7.14989e-23) -(10.1305 -0.00308414 -1.64692e-22) -(10.1315 -0.00379553 1.88279e-23) -(10.1325 -0.00449513 3.35275e-23) -(10.1335 -0.00518619 1.67776e-22) -(10.1346 -0.00587207 2.79417e-22) -(10.1356 -0.00655614 1.25475e-22) -(10.1367 -0.00724184 1.11298e-22) -(10.1377 -0.00793264 1.00492e-22) -(10.1388 -0.00863206 7.24529e-23) -(10.1399 -0.00934365 5.19924e-23) -(10.141 -0.010071 2.48141e-22) -(10.1421 -0.0108179 3.73033e-22) -(10.1432 -0.0115879 -1.57758e-22) -(10.1444 -0.012385 -3.61747e-22) -(10.1455 -0.0132129 -1.17084e-22) -(10.1467 -0.0140757 -1.27436e-22) -(10.1478 -0.0149774 -1.38083e-22) -(10.149 -0.0159221 -1.59493e-22) -(10.1501 -0.0169138 -1.62251e-22) -(10.1513 -0.0179569 5.18952e-23) -(10.1524 -0.0190555 3.40186e-22) -(10.1535 -0.0202141 2.49009e-22) -(10.1547 -0.0214369 2.72727e-22) -(10.1558 -0.0227285 3.75228e-22) -(10.1569 -0.0240933 7.59697e-22) -(10.1579 -0.0255358 7.95565e-22) -(10.1589 -0.0270605 1.99828e-22) -(10.1599 -0.028672 3.13946e-22) -(10.1609 -0.0303747 4.34547e-22) -(10.1618 -0.0321731 9.18937e-23) -(10.1627 -0.0340717 -3.48795e-24) -(10.1634 -0.036075 -4.78324e-23) -(10.1642 -0.0381872 -2.37964e-22) -(10.1648 -0.0404128 -4.4414e-22) -(10.1654 -0.0427561 -5.55846e-23) -(10.1659 -0.0452214 -5.77757e-23) -(10.1663 -0.047813 -5.48698e-22) -(10.1666 -0.050535 -3.51032e-22) -(10.1667 -0.0533916 -2.11021e-22) -(10.1668 -0.0563867 -5.06423e-23) -(10.1667 -0.0595242 -1.00142e-22) -(10.1664 -0.0628081 2.24017e-22) -(10.166 -0.0662418 1.53128e-22) -(10.1655 -0.0698291 -2.55117e-22) -(10.1647 -0.0735733 -6.56178e-22) -(10.1638 -0.0774778 -7.91526e-22) -(10.1627 -0.0815455 -5.64296e-22) -(10.1613 -0.0857793 -5.02357e-23) -(10.1598 -0.0901818 9.2788e-23) -(10.1579 -0.0947553 6.31614e-22) -(10.1559 -0.0995018 3.58399e-22) -(10.1535 -0.104423 -3.27075e-23) -(10.1509 -0.109519 -2.80786e-22) -(10.1479 -0.114792 -1.18258e-22) -(10.1446 -0.120241 -1.17681e-22) -(10.141 -0.125865 -1.24136e-22) -(10.1371 -0.131663 -2.67105e-22) -(10.1327 -0.137632 -4.75996e-22) -(10.128 -0.143769 -3.791e-22) -(10.1228 -0.15007 -4.91208e-22) -(10.1173 -0.15653 -1.17901e-22) -(10.1112 -0.163142 1.65e-22) -(10.1048 -0.1699 -2.31589e-23) -(10.0978 -0.176794 -1.30096e-23) -(10.0903 -0.183816 1.45906e-22) -(10.0824 -0.190955 -6.84478e-22) -(10.0739 -0.1982 -5.80222e-22) -(10.0648 -0.20554 3.19757e-22) -(10.0552 -0.212961 -3.93991e-22) -(10.045 -0.220451 -9.55108e-22) -(10.0343 -0.227996 -1.7836e-22) -(10.0229 -0.235582 -8.83325e-23) -(10.011 -0.243193 1.103e-22) -(9.99845 -0.250815 3.69327e-22) -(9.98529 -0.258433 1.09193e-22) -(9.9715 -0.266031 3.73613e-22) -(9.95709 -0.273594 7.66647e-22) -(9.94205 -0.281106 6.64838e-22) -(9.92637 -0.288551 7.88503e-23) -(9.91007 -0.295914 -2.93621e-22) -(9.89313 -0.303179 -5.91598e-24) -(9.87557 -0.310332 3.70472e-22) -(9.85737 -0.317357 6.46471e-22) -(9.83856 -0.324239 -2.54391e-22) -(9.81912 -0.330965 1.50001e-22) -(9.79907 -0.337519 8.44145e-22) -(9.77842 -0.343889 2.35296e-22) -(9.75717 -0.350061 -1.6503e-22) -(9.73533 -0.356023 1.81845e-22) -(9.71292 -0.361763 1.17269e-22) -(9.68995 -0.367268 -3.35255e-23) -(9.66642 -0.372529 3.18206e-22) -(9.64236 -0.377534 1.22809e-22) -(9.61778 -0.382275 -4.23949e-23) -(9.5927 -0.386742 -6.18534e-23) -(9.56713 -0.390927 1.58229e-22) -(9.54108 -0.394823 -4.1284e-23) -(9.51459 -0.398424 1.25699e-22) -(9.48767 -0.401723 1.67656e-22) -(9.46033 -0.404717 -1.50853e-23) -(9.43261 -0.4074 1.50084e-22) -(9.40452 -0.40977 9.29112e-23) -(9.37608 -0.411826 -7.86242e-23) -(9.34732 -0.413565 1.12236e-23) -(9.31826 -0.414987 1.34003e-23) -(9.28893 -0.416094 7.90793e-23) -(9.25934 -0.416887 2.10672e-22) -(9.22953 -0.41737 8.11759e-23) -(9.19951 -0.417546 1.61471e-24) -(9.16931 -0.41742 -4.58767e-23) -(9.13895 -0.416998 1.67486e-22) -(9.10847 -0.416288 2.40104e-23) -(9.07787 -0.415298 -5.6013e-22) -(9.04719 -0.414038 -5.66967e-22) -(9.01645 -0.412519 -5.17208e-22) -(8.98567 -0.410751 -5.24981e-23) -(8.95487 -0.40875 7.23894e-22) -(8.92407 -0.406528 5.95114e-22) -(8.89329 -0.404102 7.76976e-22) -(8.86255 -0.401488 -6.09412e-22) -(8.83187 -0.398705 -4.63003e-22) -(8.80126 -0.395774 -1.41239e-21) -(8.77074 -0.392714 -1.26992e-21) -(8.74032 -0.389549 -4.13872e-22) -(8.71002 -0.386303 -2.74316e-22) -(8.67984 -0.383002 -1.65553e-21) -(8.6498 -0.379675 -1.27021e-21) -(8.61989 -0.376351 -5.0179e-22) -(8.59013 -0.373063 -8.45488e-22) -(8.56052 -0.369844 -4.8804e-22) -(8.53107 -0.366732 -2.08398e-22) -(8.50176 -0.363767 8.61089e-22) -(8.4726 -0.360992 2.09789e-21) -(8.44359 -0.358453 1.9302e-21) -(8.41472 -0.356201 1.58468e-21) -(8.38598 -0.354293 1.04308e-21) -(8.35737 -0.352788 2.07981e-21) -(8.32888 -0.351752 2.14361e-21) -(8.3005 -0.351261 5.8603e-22) -(8.27223 -0.351395 3.52104e-22) -(8.24407 -0.352246 3.28172e-22) -(8.21601 -0.353914 1.59125e-21) -(8.18807 -0.356514 1.57919e-21) -(8.16026 -0.360172 1.15588e-21) -(8.13264 -0.365029 1.91255e-21) -(8.10525 -0.37124 -5.90987e-23) -(8.07821 -0.378973 1.00375e-21) -(8.05164 -0.3884 9.24418e-22) -(8.02577 -0.399692 -9.89379e-22) -(8.00089 -0.412987 -1.13528e-21) -(7.97738 -0.428368 1.27733e-22) -(7.95577 -0.445764 1.49749e-21) -(7.93655 -0.465052 1.36927e-21) -(7.92159 -0.484919 2.13049e-21) -(10.0929 0.0229426 -2.13898e-22) -(10.095 0.0217152 -1.78865e-22) -(10.0969 0.0204584 -2.39292e-22) -(10.0987 0.019181 -1.8702e-22) -(10.1004 0.0178921 -1.14395e-22) -(10.1021 0.0166009 1.18967e-22) -(10.1037 0.0153156 -5.95618e-23) -(10.1052 0.0140433 -5.16042e-23) -(10.1067 0.01279 8.76977e-23) -(10.108 0.0115606 1.5684e-22) -(10.1094 0.0103594 -1.90555e-23) -(10.1107 0.00918951 -3.27723e-23) -(10.1119 0.00805324 -3.34038e-23) -(10.1131 0.00695211 7.97093e-23) -(10.1143 0.00588697 1.58728e-22) -(10.1155 0.00485799 1.48772e-22) -(10.1166 0.00386484 2.3821e-22) -(10.1177 0.00290676 1.97814e-22) -(10.1188 0.00198257 2.79679e-22) -(10.1199 0.0010908 2.60639e-22) -(10.121 0.000229682 3.3711e-22) -(10.122 -0.000602767 1.67615e-22) -(10.1231 -0.00140874 1.46507e-22) -(10.1242 -0.00219058 1.27577e-22) -(10.1253 -0.00295078 1.20729e-22) -(10.1263 -0.00369197 2.19187e-22) -(10.1274 -0.00441685 2.56131e-22) -(10.1285 -0.00512824 6.9391e-23) -(10.1296 -0.00582904 2.78529e-23) -(10.1307 -0.00652224 -9.64042e-23) -(10.1318 -0.0072109 -6.40194e-23) -(10.1329 -0.00789814 1.36507e-22) -(10.134 -0.00858715 -1.29721e-22) -(10.1352 -0.00928117 -2.30319e-22) -(10.1363 -0.00998349 -1.07357e-22) -(10.1375 -0.0106974 -1.32551e-22) -(10.1387 -0.0114264 -3.2845e-22) -(10.1398 -0.012174 -4.55007e-22) -(10.141 -0.0129435 -9.12365e-23) -(10.1422 -0.0137387 -1.1683e-22) -(10.1434 -0.0145632 -3.41034e-22) -(10.1446 -0.0154207 -4.17383e-22) -(10.1458 -0.016315 -5.96447e-22) -(10.147 -0.01725 -5.04682e-22) -(10.1482 -0.0182296 -4.6433e-22) -(10.1494 -0.0192578 -2.25644e-22) -(10.1506 -0.0203385 -6.44909e-22) -(10.1517 -0.021476 -4.12557e-22) -(10.1529 -0.0226743 -5.93669e-22) -(10.154 -0.0239376 -9.30471e-22) -(10.1552 -0.0252701 -9.90735e-22) -(10.1562 -0.0266761 -8.632e-22) -(10.1573 -0.0281599 -7.61062e-22) -(10.1583 -0.0297256 -8.58087e-22) -(10.1593 -0.0313776 -5.56844e-22) -(10.1602 -0.0331202 -7.00394e-22) -(10.1611 -0.0349574 -9.99218e-22) -(10.1619 -0.0368935 -9.01332e-22) -(10.1627 -0.0389327 -6.31408e-22) -(10.1634 -0.0410791 -5.84406e-22) -(10.164 -0.0433367 -4.9838e-22) -(10.1645 -0.0457098 -2.5238e-22) -(10.1649 -0.0482021 -4.18084e-23) -(10.1652 -0.0508177 -2.45178e-22) -(10.1654 -0.0535604 -3.74338e-22) -(10.1655 -0.056434 -1.99563e-22) -(10.1654 -0.0594422 2.54952e-22) -(10.1652 -0.0625885 -6.31086e-22) -(10.1649 -0.0658763 -6.35191e-22) -(10.1644 -0.069309 -3.69161e-23) -(10.1637 -0.0728897 -3.67884e-22) -(10.1628 -0.0766215 -3.87891e-22) -(10.1617 -0.0805071 3.68603e-23) -(10.1605 -0.0845491 -1.32647e-22) -(10.159 -0.0887499 -2.50268e-22) -(10.1572 -0.0931115 -3.62629e-22) -(10.1552 -0.0976355 -1.03286e-22) -(10.1529 -0.102323 6.73324e-23) -(10.1504 -0.107176 1.39606e-22) -(10.1475 -0.112193 -2.08281e-22) -(10.1443 -0.117376 -4.46346e-23) -(10.1408 -0.122722 -5.5442e-23) -(10.137 -0.128231 -6.31793e-23) -(10.1328 -0.133899 -8.31809e-23) -(10.1282 -0.139725 2.24735e-23) -(10.1232 -0.145703 1.44411e-22) -(10.1178 -0.151829 -2.27693e-23) -(10.1119 -0.158097 2.56265e-22) -(10.1056 -0.164499 9.38266e-22) -(10.0988 -0.17103 1.05013e-21) -(10.0915 -0.177678 7.55693e-22) -(10.0838 -0.184436 1.22061e-21) -(10.0755 -0.191293 8.26809e-22) -(10.0667 -0.198238 8.15717e-23) -(10.0573 -0.205259 7.23861e-22) -(10.0474 -0.212343 1.39519e-21) -(10.0369 -0.219479 9.31704e-22) -(10.0259 -0.226651 4.56974e-22) -(10.0142 -0.233848 -6.12779e-23) -(10.002 -0.241054 -6.05776e-22) -(9.9891 -0.248256 2.01027e-22) -(9.97563 -0.255438 2.5507e-22) -(9.96155 -0.262587 -4.98216e-22) -(9.94685 -0.269687 -4.48479e-22) -(9.93153 -0.276724 7.68564e-24) -(9.91558 -0.283684 1.84259e-23) -(9.89901 -0.29055 -4.59338e-22) -(9.88181 -0.29731 -3.14783e-22) -(9.864 -0.303949 -1.99854e-22) -(9.84557 -0.310453 4.36637e-22) -(9.82652 -0.316808 1.71315e-22) -(9.80687 -0.323002 -2.85181e-22) -(9.78662 -0.32902 5.58765e-23) -(9.76578 -0.334852 4.04044e-22) -(9.74435 -0.340484 -6.11482e-24) -(9.72236 -0.345905 -7.93235e-23) -(9.6998 -0.351105 1.59233e-22) -(9.6767 -0.356073 1.66641e-22) -(9.65306 -0.360799 2.64705e-22) -(9.62891 -0.365274 4.38277e-22) -(9.60425 -0.36949 2.26791e-22) -(9.57911 -0.373438 4.436e-23) -(9.5535 -0.377113 7.60375e-23) -(9.52743 -0.380508 2.14839e-22) -(9.50094 -0.383617 5.50646e-22) -(9.47404 -0.386436 4.13778e-22) -(9.44675 -0.388961 -1.0488e-23) -(9.4191 -0.39119 -1.5795e-22) -(9.3911 -0.393119 -1.15395e-22) -(9.36277 -0.394749 5.79944e-23) -(9.33415 -0.396079 1.15842e-22) -(9.30525 -0.397109 -1.39698e-22) -(9.2761 -0.397842 6.98718e-23) -(9.24672 -0.398281 -1.50857e-22) -(9.21714 -0.398428 -4.25676e-22) -(9.18738 -0.398289 -3.81917e-22) -(9.15746 -0.39787 -5.74472e-22) -(9.12741 -0.397177 -2.71699e-22) -(9.09725 -0.396219 5.50314e-22) -(9.06701 -0.395004 8.19336e-22) -(9.0367 -0.393544 9.54157e-22) -(9.00636 -0.391848 4.86902e-22) -(8.97599 -0.389929 -5.68842e-23) -(8.94563 -0.387802 -6.33189e-22) -(8.91529 -0.385481 -6.11674e-22) -(8.88499 -0.382983 4.22155e-22) -(8.85475 -0.380324 3.19264e-22) -(8.82458 -0.377524 1.44349e-21) -(8.79451 -0.374603 1.15595e-21) -(8.76453 -0.371582 9.50052e-22) -(8.73467 -0.368486 1.98588e-21) -(8.70493 -0.365339 2.53025e-21) -(8.67532 -0.362168 2.0429e-21) -(8.64586 -0.359002 9.458e-22) -(8.61653 -0.355872 2.16481e-21) -(8.58735 -0.352811 1.73253e-21) -(8.55831 -0.349855 1.00788e-21) -(8.52942 -0.347043 4.88293e-22) -(8.50066 -0.344418 1.29798e-21) -(8.47203 -0.342024 1.08611e-21) -(8.44352 -0.339912 1.00754e-21) -(8.41512 -0.338137 -1.01004e-22) -(8.38682 -0.336759 9.63888e-22) -(8.3586 -0.335844 1.87669e-21) -(8.33044 -0.335467 1.30335e-21) -(8.30233 -0.33571 2.86179e-22) -(8.27426 -0.336666 1.53717e-21) -(8.24621 -0.33844 2.33607e-22) -(8.21817 -0.341151 1.35801e-21) -(8.19016 -0.344932 1.41507e-21) -(8.16218 -0.349935 -1.57977e-21) -(8.13428 -0.356331 -3.47372e-22) -(8.10653 -0.364309 -1.92651e-22) -(8.07906 -0.374071 -2.37734e-22) -(8.05207 -0.385826 -8.70853e-23) -(8.02584 -0.399763 2.5305e-23) -(8.00079 -0.416021 -1.68496e-21) -(7.97748 -0.434596 -7.45512e-22) -(7.95665 -0.455418 1.6105e-21) -(7.93915 -0.477307 -9.00905e-22) -(10.0867 0.0194256 3.90178e-22) -(10.0887 0.0183331 8.28991e-23) -(10.0906 0.0172132 1.69212e-22) -(10.0924 0.0160727 4.53779e-23) -(10.0942 0.0149184 -4.41416e-22) -(10.0959 0.0137575 -3.1232e-22) -(10.0976 0.0125968 -7.72237e-23) -(10.0991 0.0114422 -2.97104e-22) -(10.1007 0.010299 -2.71244e-22) -(10.1022 0.00917179 -3.30539e-22) -(10.1036 0.00806433 -2.94073e-22) -(10.105 0.00697981 -3.58613e-22) -(10.1063 0.00592067 -3.26798e-22) -(10.1076 0.00488871 -4.82212e-22) -(10.1089 0.00388512 -3.88972e-22) -(10.1102 0.00291055 -3.41381e-22) -(10.1114 0.00196517 -3.88539e-22) -(10.1126 0.0010487 -3.28057e-22) -(10.1138 0.000160512 -2.37285e-22) -(10.115 -0.000700378 1.2084e-22) -(10.1162 -0.00153523 1.00504e-22) -(10.1174 -0.00234556 -1.78885e-23) -(10.1185 -0.00313309 -2.10159e-23) -(10.1197 -0.00389974 -2.80681e-23) -(10.1208 -0.00464761 -3.73338e-23) -(10.122 -0.0053789 -6.28992e-23) -(10.1232 -0.00609597 -2.86417e-22) -(10.1243 -0.00680131 -4.59902e-22) -(10.1255 -0.00749746 -3.08415e-22) -(10.1267 -0.00818712 -2.88513e-22) -(10.1279 -0.00887302 -1.91774e-22) -(10.129 -0.00955801 -3.73958e-22) -(10.1302 -0.010245 -2.41334e-22) -(10.1314 -0.010937 -2.39208e-22) -(10.1326 -0.0116369 -3.2362e-22) -(10.1338 -0.012348 -3.6917e-22) -(10.1351 -0.0130734 -4.81155e-23) -(10.1363 -0.0138163 9.33548e-23) -(10.1375 -0.01458 -1.39151e-22) -(10.1387 -0.0153679 -5.29013e-23) -(10.1399 -0.0161834 1.19793e-23) -(10.1412 -0.01703 -2.58402e-23) -(10.1424 -0.0179113 3.72253e-23) -(10.1436 -0.0188309 7.84218e-23) -(10.1448 -0.0197924 7.96254e-24) -(10.146 -0.0207996 -6.09635e-22) -(10.1472 -0.0218562 -7.891e-22) -(10.1484 -0.0229662 -8.78082e-22) -(10.1496 -0.0241333 -6.02673e-22) -(10.1507 -0.0253615 -1.91684e-22) -(10.1518 -0.0266547 -4.07203e-22) -(10.1529 -0.028017 -5.59057e-22) -(10.1539 -0.0294522 -5.32257e-22) -(10.155 -0.0309644 -1.56136e-22) -(10.1559 -0.0325576 -4.89666e-22) -(10.1569 -0.0342357 -4.53036e-22) -(10.1577 -0.0360027 8.43027e-23) -(10.1585 -0.0378626 -1.16615e-22) -(10.1593 -0.0398192 -4.7073e-22) -(10.1599 -0.0418764 -2.52797e-22) -(10.1605 -0.044038 -2.39032e-22) -(10.161 -0.0463079 -1.99484e-22) -(10.1614 -0.0486898 -1.35479e-22) -(10.1617 -0.0511874 -7.8939e-23) -(10.1619 -0.0538043 -3.96871e-23) -(10.1619 -0.0565439 -1.79686e-23) -(10.1618 -0.0594098 3.50502e-23) -(10.1616 -0.0624051 1.52799e-22) -(10.1613 -0.0655332 2.06078e-23) -(10.1607 -0.0687971 -3.43137e-22) -(10.16 -0.0721997 3.50103e-22) -(10.1591 -0.0757437 4.69675e-22) -(10.158 -0.0794317 2.92058e-22) -(10.1567 -0.083266 -1.06557e-22) -(10.1552 -0.0872487 5.43162e-23) -(10.1534 -0.0913816 4.82636e-23) -(10.1514 -0.0956662 5.95692e-23) -(10.1492 -0.100104 9.60634e-23) -(10.1466 -0.104694 3.86881e-22) -(10.1438 -0.109439 5.67737e-22) -(10.1406 -0.114336 -1.051e-22) -(10.1371 -0.119386 -1.34588e-22) -(10.1333 -0.124586 3.70825e-23) -(10.1291 -0.129935 4.50332e-23) -(10.1245 -0.135429 -1.78192e-22) -(10.1196 -0.141065 -4.79974e-22) -(10.1142 -0.146838 -1.41469e-22) -(10.1084 -0.152741 -3.28794e-22) -(10.1022 -0.15877 -7.98993e-22) -(10.0955 -0.164917 -6.96245e-22) -(10.0883 -0.171173 -1.60471e-23) -(10.0806 -0.17753 4.54175e-22) -(10.0725 -0.183979 1.9749e-22) -(10.0638 -0.190509 -7.30249e-23) -(10.0545 -0.19711 -5.59917e-22) -(10.0448 -0.203769 -6.64095e-22) -(10.0344 -0.210476 -5.57993e-22) -(10.0235 -0.217218 -1.62759e-22) -(10.0121 -0.223981 3.31418e-22) -(10 -0.230753 8.08868e-22) -(9.98736 -0.237521 2.62078e-24) -(9.9741 -0.244271 -2.67394e-22) -(9.96024 -0.250989 -8.87962e-23) -(9.94578 -0.257662 -3.03438e-22) -(9.9307 -0.264276 -6.29515e-22) -(9.915 -0.270816 -2.6666e-22) -(9.89869 -0.277271 2.49554e-22) -(9.88176 -0.283625 1.52514e-23) -(9.86422 -0.289866 1.49841e-23) -(9.84608 -0.29598 -1.03551e-22) -(9.82732 -0.301955 -3.27393e-23) -(9.80797 -0.307779 7.40455e-22) -(9.78802 -0.313438 5.91579e-22) -(9.76748 -0.318922 -3.53453e-23) -(9.74637 -0.324219 3.44445e-22) -(9.72469 -0.329318 5.79487e-22) -(9.70245 -0.334208 4.24349e-22) -(9.67967 -0.338881 -3.45821e-23) -(9.65636 -0.343327 -4.748e-22) -(9.63253 -0.347538 -5.1858e-22) -(9.6082 -0.351504 -1.10758e-22) -(9.58339 -0.35522 2.32472e-22) -(9.5581 -0.358678 3.55402e-22) -(9.53237 -0.361873 -2.92047e-23) -(9.50621 -0.364799 -2.09057e-22) -(9.47963 -0.367452 -1.16539e-22) -(9.45267 -0.369829 -1.17699e-22) -(9.42533 -0.371927 4.39504e-23) -(9.39765 -0.373743 1.62823e-23) -(9.36964 -0.375277 -1.64955e-24) -(9.34133 -0.376529 -1.43702e-22) -(9.31274 -0.377499 -5.73897e-23) -(9.28389 -0.378189 8.13732e-23) -(9.2548 -0.378601 4.34373e-23) -(9.22551 -0.37874 -4.13127e-23) -(9.19603 -0.378608 -3.39008e-22) -(9.16639 -0.378213 -3.45454e-22) -(9.13661 -0.37756 -5.70491e-24) -(9.10672 -0.376656 3.2955e-22) -(9.07673 -0.375511 8.40724e-22) -(9.04667 -0.374133 8.33403e-22) -(9.01657 -0.372534 3.07865e-22) -(8.98643 -0.370725 3.71334e-22) -(8.95629 -0.36872 8.21341e-22) -(8.92616 -0.366531 1.37814e-21) -(8.89606 -0.364175 1.38507e-21) -(8.86601 -0.361668 1.53646e-21) -(8.83602 -0.359028 8.49284e-24) -(8.8061 -0.356274 -6.2463e-23) -(8.77628 -0.353427 -4.36276e-22) -(8.74656 -0.350509 -1.36108e-21) -(8.71694 -0.347544 -5.49616e-22) -(8.68745 -0.344558 7.61649e-22) -(8.65807 -0.341578 1.11445e-22) -(8.62882 -0.338634 -1.13715e-21) -(8.5997 -0.335757 -1.11702e-21) -(8.5707 -0.332984 -9.25296e-22) -(8.54182 -0.330351 -4.4132e-22) -(8.51305 -0.327899 -1.2756e-21) -(8.48439 -0.325672 -1.42587e-21) -(8.45581 -0.323719 -7.31004e-22) -(8.42731 -0.322095 1.71519e-21) -(8.39886 -0.320857 6.52113e-22) -(8.37045 -0.320073 -1.88236e-21) -(8.34205 -0.319816 -1.46522e-21) -(8.31364 -0.320169 -2.39725e-21) -(8.28518 -0.321226 -6.86163e-22) -(8.25667 -0.323093 1.14692e-21) -(8.22807 -0.325895 -2.94275e-22) -(8.19938 -0.32977 -8.241e-22) -(8.17058 -0.33488 4.4133e-22) -(8.14171 -0.341412 -1.22266e-21) -(8.11281 -0.349575 -1.20873e-21) -(8.08399 -0.359605 -1.08141e-21) -(8.05542 -0.371752 6.93087e-22) -(8.02739 -0.386266 4.22871e-22) -(8.00033 -0.403356 -3.17854e-22) -(7.97482 -0.423099 -3.60476e-21) -(7.95185 -0.445491 -6.04952e-21) -(7.93126 -0.469416 -4.58866e-21) -(10.0804 0.0154112 -2.92545e-22) -(10.0824 0.0144484 -1.35106e-22) -(10.0843 0.0134607 -1.6803e-22) -(10.0861 0.0124531 -2.92725e-22) -(10.0879 0.0114307 1.55269e-23) -(10.0896 0.010399 -1.0153e-22) -(10.0913 0.00936336 1.7898e-23) -(10.0929 0.00832855 7.28331e-23) -(10.0945 0.00729901 -4.40272e-23) -(10.096 0.00627866 7.12424e-23) -(10.0976 0.00527093 2.34831e-22) -(10.099 0.00427873 1.73379e-22) -(10.1004 0.00330442 2.5482e-22) -(10.1018 0.00234991 4.54555e-22) -(10.1032 0.00141657 2.41831e-22) -(10.1046 0.000505345 8.00646e-23) -(10.1059 -0.000383242 3.33003e-23) -(10.1072 -0.00124905 -1.55738e-23) -(10.1085 -0.00209231 -1.54336e-22) -(10.1097 -0.00291352 -2.25288e-22) -(10.111 -0.00371351 -2.23162e-23) -(10.1122 -0.00449332 1.98821e-23) -(10.1135 -0.00525425 -2.02466e-22) -(10.1147 -0.00599778 -2.83112e-22) -(10.1159 -0.00672558 -2.70766e-22) -(10.1172 -0.00743947 -3.30147e-22) -(10.1184 -0.00814143 -2.1142e-22) -(10.1196 -0.00883355 -2.15622e-22) -(10.1208 -0.00951806 -2.18308e-22) -(10.1221 -0.0101973 -3.03218e-22) -(10.1233 -0.0108737 -3.56308e-22) -(10.1245 -0.0115497 -2.31306e-22) -(10.1258 -0.0122281 -1.14771e-22) -(10.127 -0.0129114 -1.58918e-23) -(10.1282 -0.0136025 -2.00475e-23) -(10.1295 -0.0143041 3.61559e-23) -(10.1307 -0.0150193 -2.55236e-22) -(10.132 -0.0157508 -4.8796e-22) -(10.1332 -0.0165019 -4.347e-22) -(10.1345 -0.0172756 -4.62283e-22) -(10.1357 -0.0180751 -3.96421e-22) -(10.1369 -0.0189035 -2.54862e-22) -(10.1382 -0.0197643 -2.09901e-22) -(10.1394 -0.0206607 -1.66746e-22) -(10.1406 -0.0215962 -1.30484e-22) -(10.1418 -0.0225743 -1.13503e-22) -(10.143 -0.0235983 8.66421e-23) -(10.1442 -0.0246719 4.13546e-22) -(10.1453 -0.0257988 3.68208e-22) -(10.1464 -0.0269824 1.88395e-22) -(10.1475 -0.0282266 1.83044e-22) -(10.1486 -0.0295349 2.95295e-22) -(10.1496 -0.0309111 2.50669e-22) -(10.1506 -0.0323588 -9.69503e-23) -(10.1515 -0.0338819 2.24519e-22) -(10.1524 -0.0354839 3.60165e-22) -(10.1532 -0.0371686 4.70878e-23) -(10.154 -0.0389396 5.9888e-23) -(10.1547 -0.0408007 5.26998e-22) -(10.1553 -0.0427552 3.55627e-22) -(10.1558 -0.044807 2.72093e-23) -(10.1563 -0.0469594 2.23782e-22) -(10.1566 -0.049216 3.89762e-22) -(10.1568 -0.0515802 6.94872e-22) -(10.157 -0.0540553 6.73337e-22) -(10.157 -0.0566446 3.50705e-22) -(10.1568 -0.0593512 1.66213e-22) -(10.1566 -0.0621782 3.53945e-22) -(10.1561 -0.0651285 5.05353e-22) -(10.1555 -0.0682049 3.76582e-22) -(10.1548 -0.0714102 -1.09213e-22) -(10.1538 -0.0747467 -2.03015e-23) -(10.1527 -0.0782169 -3.05078e-22) -(10.1513 -0.0818227 5.21805e-23) -(10.1498 -0.0855661 2.18107e-22) -(10.1479 -0.0894485 3.95553e-22) -(10.1459 -0.0934713 2.54226e-22) -(10.1436 -0.0976353 2.47344e-22) -(10.141 -0.101941 1.26766e-22) -(10.1381 -0.106389 1.00964e-22) -(10.1349 -0.110978 3.9408e-22) -(10.1314 -0.115707 2.3265e-22) -(10.1275 -0.120575 2.33027e-22) -(10.1233 -0.125579 3.53445e-22) -(10.1187 -0.130718 6.05383e-22) -(10.1138 -0.135986 4.51281e-22) -(10.1084 -0.141381 1.34445e-22) -(10.1026 -0.146896 4.42925e-22) -(10.0964 -0.152526 3.94096e-22) -(10.0897 -0.158264 -2.74776e-22) -(10.0826 -0.164103 4.09962e-24) -(10.075 -0.170036 4.27169e-23) -(10.0668 -0.176052 6.36121e-23) -(10.0582 -0.182144 2.84382e-22) -(10.0491 -0.188301 5.15912e-22) -(10.0394 -0.194512 1.63188e-22) -(10.0292 -0.200767 9.40241e-23) -(10.0184 -0.207054 7.18542e-23) -(10.0071 -0.213362 5.95945e-23) -(9.99513 -0.219679 -7.7133e-23) -(9.98263 -0.225992 -1.13764e-22) -(9.96954 -0.232289 1.48967e-22) -(9.95585 -0.238556 -3.06902e-22) -(9.94157 -0.244783 3.50682e-22) -(9.92668 -0.250955 9.39443e-22) -(9.91118 -0.25706 6.21453e-22) -(9.89508 -0.263085 3.82323e-22) -(9.87838 -0.269018 3.53876e-22) -(9.86107 -0.274846 3.11875e-22) -(9.84315 -0.280558 2.36022e-22) -(9.82464 -0.28614 1.60601e-22) -(9.80553 -0.291582 1.49767e-22) -(9.78584 -0.296872 1.49695e-22) -(9.76556 -0.302 7.6032e-23) -(9.74471 -0.306953 -9.75856e-23) -(9.7233 -0.311724 -1.74685e-22) -(9.70133 -0.316301 5.97803e-23) -(9.67883 -0.320676 2.55729e-23) -(9.65579 -0.324839 1.19164e-22) -(9.63223 -0.328784 1.21889e-22) -(9.60818 -0.332502 -9.98196e-23) -(9.58364 -0.335986 -2.75705e-22) -(9.55863 -0.33923 -4.68957e-22) -(9.53317 -0.34223 -2.89871e-22) -(9.50727 -0.344979 -2.72144e-22) -(9.48096 -0.347474 -2.78849e-22) -(9.45426 -0.349711 -2.57216e-22) -(9.42718 -0.351687 -2.01894e-22) -(9.39974 -0.353401 -4.25619e-23) -(9.37198 -0.354852 -8.66207e-23) -(9.3439 -0.35604 -1.12957e-22) -(9.31554 -0.356964 -1.66027e-22) -(9.28691 -0.357626 -2.38272e-22) -(9.25803 -0.358029 -2.04136e-22) -(9.22894 -0.358176 -1.41324e-22) -(9.19965 -0.358071 1.3924e-22) -(9.17019 -0.357718 -2.09686e-22) -(9.14057 -0.357124 -2.80977e-22) -(9.11083 -0.356296 -3.30387e-22) -(9.08098 -0.355242 -8.83327e-22) -(9.05105 -0.35397 -8.91345e-22) -(9.02105 -0.35249 -6.84795e-22) -(8.991 -0.350814 -7.478e-22) -(8.96093 -0.348953 -6.18204e-23) -(8.93086 -0.34692 -3.90135e-23) -(8.9008 -0.34473 3.59462e-22) -(8.87076 -0.342399 1.65789e-22) -(8.84077 -0.339943 6.49208e-22) -(8.81083 -0.33738 5.94105e-22) -(8.78096 -0.33473 3.2717e-22) -(8.75117 -0.332014 2.97431e-22) -(8.72146 -0.329254 -6.27818e-22) -(8.69185 -0.326475 -1.82558e-21) -(8.66233 -0.323703 -8.24655e-22) -(8.6329 -0.320967 -1.27964e-21) -(8.60357 -0.318296 -1.38311e-21) -(8.57433 -0.315724 -1.37618e-21) -(8.54518 -0.313288 -2.88322e-22) -(8.5161 -0.311026 -2.87448e-22) -(8.48708 -0.308981 -1.01933e-21) -(8.4581 -0.307201 -2.75624e-21) -(8.42916 -0.305738 -2.17041e-21) -(8.40021 -0.30465 -1.59339e-21) -(8.37123 -0.304001 -6.73754e-23) -(8.3422 -0.303865 -1.30029e-22) -(8.31308 -0.304324 -1.3303e-22) -(8.28384 -0.305472 -2.2477e-22) -(8.25443 -0.307418 -3.34524e-22) -(8.22483 -0.310288 -5.5208e-22) -(8.195 -0.314226 -2.1311e-21) -(8.16491 -0.319403 -1.89259e-21) -(8.13457 -0.326019 -1.36854e-21) -(8.104 -0.334307 -7.92351e-22) -(8.07326 -0.344534 -4.72795e-22) -(8.04252 -0.356999 -5.85659e-23) -(8.01204 -0.372018 -9.61049e-22) -(7.98225 -0.389886 -3.17091e-21) -(7.95375 -0.410777 -2.28757e-21) -(7.92778 -0.434774 -1.57243e-21) -(7.90312 -0.460728 -6.17534e-22) -(10.0744 0.010858 -4.06956e-23) -(10.0764 0.0100191 -2.37055e-22) -(10.0783 0.00915813 -2.3589e-22) -(10.0801 0.00827872 4.21493e-23) -(10.0818 0.00738449 -5.11172e-23) -(10.0836 0.00647951 -5.39335e-23) -(10.0853 0.00556784 -1.48288e-22) -(10.087 0.00465329 -1.97227e-22) -(10.0886 0.00373938 -8.55568e-23) -(10.0902 0.00282935 -9.85338e-23) -(10.0917 0.0019261 -2.98491e-22) -(10.0932 0.00103217 -5.21991e-22) -(10.0947 0.000149746 -5.601e-22) -(10.0962 -0.000719368 -6.39603e-22) -(10.0976 -0.00157374 -4.70646e-22) -(10.0991 -0.00241229 -4.36257e-22) -(10.1004 -0.00323428 -4.77522e-22) -(10.1018 -0.0040393 -4.39666e-22) -(10.1032 -0.00482724 -4.82302e-22) -(10.1045 -0.00559829 -4.72029e-22) -(10.1058 -0.00635286 -6.82372e-22) -(10.1072 -0.00709164 -6.43837e-22) -(10.1085 -0.00781551 -2.23942e-22) -(10.1098 -0.00852558 -5.60068e-23) -(10.111 -0.00922311 -1.25549e-22) -(10.1123 -0.00990955 4.82412e-23) -(10.1136 -0.0105865 1.1425e-22) -(10.1149 -0.0112557 1.76842e-23) -(10.1162 -0.011919 -3.78855e-23) -(10.1174 -0.0125784 2.09043e-22) -(10.1187 -0.0132359 1.77229e-22) -(10.12 -0.0138939 8.08626e-23) -(10.1212 -0.0145545 7.871e-23) -(10.1225 -0.0152201 8.4462e-23) -(10.1238 -0.0158933 8.85995e-23) -(10.125 -0.0165764 9.3954e-23) -(10.1263 -0.0172723 9.80969e-23) -(10.1275 -0.0179834 1.87979e-22) -(10.1288 -0.0187126 4.11148e-22) -(10.13 -0.0194628 4.45842e-22) -(10.1313 -0.0202367 2.55475e-22) -(10.1325 -0.0210374 2.42629e-22) -(10.1337 -0.0218678 2.35564e-22) -(10.1349 -0.0227311 2.96042e-22) -(10.1361 -0.0236302 2.91239e-22) -(10.1373 -0.0245685 3.01767e-22) -(10.1385 -0.0255491 6.71794e-22) -(10.1396 -0.0265752 4.95983e-22) -(10.1407 -0.0276502 1.90363e-22) -(10.1418 -0.0287774 4.7387e-22) -(10.1428 -0.0299602 4.47849e-22) -(10.1439 -0.0312019 8.94452e-25) -(10.1448 -0.032506 2.70545e-23) -(10.1458 -0.0338757 1.7898e-22) -(10.1467 -0.0353147 1.94724e-22) -(10.1475 -0.0368262 2.2609e-22) -(10.1483 -0.0384136 3.74549e-22) -(10.149 -0.0400804 5.13481e-22) -(10.1496 -0.0418298 2.47349e-22) -(10.1501 -0.0436652 3.88733e-22) -(10.1506 -0.04559 9.65868e-22) -(10.151 -0.0476073 7.85661e-22) -(10.1512 -0.0497203 4.64105e-22) -(10.1514 -0.0519322 1.82618e-22) -(10.1515 -0.054246 4.57636e-22) -(10.1514 -0.0566648 9.06069e-22) -(10.1512 -0.0591914 5.85283e-22) -(10.1508 -0.0618287 6.94267e-22) -(10.1503 -0.0645793 9.42299e-22) -(10.1496 -0.0674457 1.01787e-21) -(10.1488 -0.0704305 9.41143e-22) -(10.1478 -0.0735358 8.41096e-22) -(10.1465 -0.0767637 8.99564e-22) -(10.1451 -0.0801161 6.74061e-22) -(10.1435 -0.0835946 3.65057e-22) -(10.1416 -0.0872005 1.46318e-22) -(10.1394 -0.090935 5.50548e-22) -(10.137 -0.0947988 3.77155e-22) -(10.1344 -0.0987923 2.19671e-22) -(10.1314 -0.102915 -5.63506e-23) -(10.1282 -0.107168 8.47801e-23) -(10.1246 -0.111548 4.00988e-22) -(10.1207 -0.116055 2.7313e-22) -(10.1164 -0.120687 1.72262e-22) -(10.1118 -0.125441 1.58713e-22) -(10.1068 -0.130313 5.4661e-22) -(10.1014 -0.1353 5.05915e-22) -(10.0956 -0.140398 5.60266e-24) -(10.0894 -0.1456 -3.18755e-22) -(10.0827 -0.150901 1.96327e-22) -(10.0756 -0.156295 5.86283e-23) -(10.068 -0.161774 2.71759e-23) -(10.0599 -0.16733 2.72156e-23) -(10.0513 -0.172956 3.5367e-23) -(10.0422 -0.178641 6.24827e-23) -(10.0326 -0.184377 5.69024e-23) -(10.0225 -0.190153 4.76667e-23) -(10.0118 -0.19596 2.90805e-23) -(10.0005 -0.201787 -1.50815e-22) -(9.98872 -0.207623 -3.12619e-25) -(9.97634 -0.213456 4.69821e-22) -(9.96338 -0.219275 -4.6616e-23) -(9.94984 -0.22507 3.52814e-22) -(9.9357 -0.230827 -7.82172e-23) -(9.92098 -0.236536 -1.92754e-22) -(9.90566 -0.242184 2.67228e-22) -(9.88974 -0.247761 4.5305e-22) -(9.87322 -0.253254 3.70363e-22) -(9.8561 -0.258652 3.07048e-22) -(9.8384 -0.263944 -1.39313e-22) -(9.82009 -0.269119 -1.43617e-22) -(9.8012 -0.274166 -4.79112e-22) -(9.78173 -0.279074 -3.90749e-22) -(9.76168 -0.283834 -1.63487e-22) -(9.74106 -0.288435 -1.40071e-23) -(9.71988 -0.292869 3.46258e-23) -(9.69814 -0.297125 -1.8989e-22) -(9.67587 -0.301196 -1.92233e-22) -(9.65307 -0.305073 -1.79629e-22) -(9.62975 -0.308749 -1.24436e-23) -(9.60593 -0.312217 1.43673e-22) -(9.58162 -0.315471 -2.17548e-22) -(9.55683 -0.318504 -6.14454e-22) -(9.5316 -0.321311 -4.36817e-22) -(9.50592 -0.323888 -1.18017e-22) -(9.47982 -0.32623 -1.48831e-22) -(9.45333 -0.328335 -1.50657e-22) -(9.42645 -0.3302 -3.92332e-23) -(9.3992 -0.331822 -2.33349e-22) -(9.37162 -0.333201 -3.7269e-22) -(9.34371 -0.334337 -2.22688e-22) -(9.31551 -0.335229 -3.08929e-22) -(9.28702 -0.335879 -8.2579e-22) -(9.25828 -0.336289 -4.05298e-22) -(9.22931 -0.336461 5.85529e-23) -(9.20013 -0.3364 3.13936e-23) -(9.17075 -0.336109 2.4291e-22) -(9.14121 -0.335595 -3.78713e-22) -(9.11152 -0.334863 -2.5622e-22) -(9.0817 -0.33392 -2.58776e-23) -(9.05178 -0.332775 -1.35757e-22) -(9.02177 -0.331436 -2.16727e-22) -(8.9917 -0.329915 3.39703e-23) -(8.96158 -0.328221 -2.47684e-22) -(8.93142 -0.326367 -5.86166e-22) -(8.90126 -0.324367 -1.71986e-21) -(8.87109 -0.322234 -1.7212e-21) -(8.84094 -0.319984 -1.1305e-21) -(8.81082 -0.317635 -8.1207e-22) -(8.78073 -0.315204 -6.26936e-22) -(8.75068 -0.312711 -3.20707e-22) -(8.72069 -0.310177 -9.948e-22) -(8.69076 -0.307626 -9.37488e-22) -(8.66088 -0.305082 -1.89363e-21) -(8.63105 -0.302571 8.82531e-23) -(8.60128 -0.300123 -4.65207e-22) -(8.57156 -0.29777 -5.12298e-22) -(8.54188 -0.295544 -1.12919e-21) -(8.51221 -0.293485 -2.19878e-21) -(8.48256 -0.291633 -1.99131e-22) -(8.45289 -0.290034 2.25335e-21) -(8.42318 -0.288738 8.35763e-22) -(8.3934 -0.287802 2.71418e-22) -(8.36352 -0.287287 3.98318e-22) -(8.33349 -0.287267 -6.62495e-22) -(8.30328 -0.287823 9.65062e-22) -(8.27284 -0.289047 -8.75056e-23) -(8.24211 -0.29105 -1.39153e-21) -(8.21105 -0.293956 -2.38325e-21) -(8.17959 -0.297918 -1.68901e-21) -(8.14769 -0.303111 -1.21624e-21) -(8.11531 -0.309748 3.00779e-22) -(8.08245 -0.318083 1.51907e-21) -(8.04913 -0.328416 1.0172e-21) -(8.01546 -0.341097 4.81199e-22) -(7.98167 -0.356518 1.58378e-21) -(7.94818 -0.375075 4.00454e-21) -(7.91558 -0.397063 2.77457e-21) -(7.88542 -0.422683 2.70274e-21) -(7.85517 -0.450677 4.31717e-21) -(10.0691 0.00571214 1.2947e-22) -(10.0711 0.00499185 3.14441e-22) -(10.0729 0.00425233 2.92673e-22) -(10.0747 0.0034963 2.0662e-22) -(10.0764 0.0027263 3.15733e-22) -(10.0782 0.00194524 3.09495e-22) -(10.0799 0.0011561 1.95897e-22) -(10.0816 0.000361767 1.03651e-22) -(10.0832 -0.000435073 1.21238e-22) -(10.0849 -0.00123188 1.7569e-22) -(10.0865 -0.00202631 1.18507e-22) -(10.088 -0.00281627 3.32052e-22) -(10.0896 -0.00359989 2.9046e-22) -(10.0911 -0.00437557 2.69241e-22) -(10.0926 -0.00514197 3.06792e-22) -(10.0941 -0.00589802 2.06819e-22) -(10.0955 -0.00664292 2.09919e-22) -(10.097 -0.00737612 3.62816e-22) -(10.0984 -0.0080973 4.56069e-22) -(10.0998 -0.00880641 2.81074e-22) -(10.1012 -0.00950359 4.23094e-22) -(10.1025 -0.0101892 5.78121e-22) -(10.1039 -0.0108639 3.60961e-22) -(10.1052 -0.0115283 1.91149e-22) -(10.1066 -0.0121834 1.66654e-22) -(10.1079 -0.0128302 2.75301e-23) -(10.1092 -0.0134701 1.3331e-22) -(10.1106 -0.0141044 3.47083e-22) -(10.1119 -0.0147347 3.06426e-22) -(10.1132 -0.0153624 1.46582e-22) -(10.1145 -0.0159895 1.48052e-22) -(10.1158 -0.0166176 2.08439e-22) -(10.117 -0.0172489 1.37766e-22) -(10.1183 -0.0178853 2.7423e-22) -(10.1196 -0.018529 2.55191e-22) -(10.1209 -0.0191821 2.42675e-22) -(10.1221 -0.0198471 2.4e-22) -(10.1234 -0.0205261 4.24535e-22) -(10.1246 -0.0212217 2.01595e-22) -(10.1259 -0.0219364 2.14644e-22) -(10.1271 -0.0226728 4.1328e-22) -(10.1283 -0.0234334 3.8867e-22) -(10.1295 -0.024221 2.94845e-22) -(10.1307 -0.0250384 2.16588e-22) -(10.1319 -0.0258882 2.18161e-22) -(10.133 -0.0267734 4.02819e-22) -(10.1342 -0.0276969 2.62089e-22) -(10.1353 -0.0286615 1.85881e-22) -(10.1363 -0.0296704 3.71147e-22) -(10.1374 -0.0307264 4.70539e-23) -(10.1384 -0.0318326 2.78282e-22) -(10.1393 -0.0329921 9.24145e-22) -(10.1403 -0.0342079 7.42529e-22) -(10.1411 -0.0354831 2.9422e-22) -(10.1419 -0.0368208 4.02377e-22) -(10.1427 -0.0382242 3.80262e-22) -(10.1434 -0.0396961 3.64137e-22) -(10.144 -0.0412399 3.51562e-22) -(10.1446 -0.0428584 3.23663e-22) -(10.145 -0.0445547 1.83979e-22) -(10.1454 -0.0463318 7.06572e-23) -(10.1457 -0.0481927 3.37535e-22) -(10.1459 -0.0501402 4.64937e-22) -(10.146 -0.0521773 3.07662e-22) -(10.1459 -0.0543066 2.87313e-22) -(10.1458 -0.056531 2.84501e-22) -(10.1455 -0.058853 2.59397e-22) -(10.145 -0.0612752 1.03968e-22) -(10.1444 -0.0638 -2.83645e-22) -(10.1436 -0.0664297 -4.15732e-22) -(10.1427 -0.0691665 -1.21917e-22) -(10.1416 -0.0720124 -8.04237e-23) -(10.1403 -0.0749693 6.77477e-23) -(10.1387 -0.0780388 2.1789e-22) -(10.137 -0.0812224 9.26668e-23) -(10.135 -0.0845212 7.75379e-23) -(10.1328 -0.0879363 7.81308e-23) -(10.1303 -0.0914681 8.30195e-23) -(10.1276 -0.0951171 2.01886e-22) -(10.1245 -0.0988831 4.48881e-22) -(10.1212 -0.102766 5.56191e-22) -(10.1175 -0.106764 5.57728e-22) -(10.1135 -0.110877 4.15297e-22) -(10.1092 -0.115102 3.67945e-22) -(10.1046 -0.119437 1.14e-22) -(10.0995 -0.12388 -1.67451e-22) -(10.0941 -0.128426 -3.49423e-23) -(10.0882 -0.133071 -1.56992e-22) -(10.082 -0.137812 5.4423e-23) -(10.0753 -0.142643 2.78809e-22) -(10.0681 -0.147557 -1.92508e-23) -(10.0605 -0.15255 -4.24973e-22) -(10.0525 -0.157612 3.80631e-23) -(10.0439 -0.162738 -6.60075e-23) -(10.0348 -0.16792 -6.12597e-23) -(10.0253 -0.173148 -6.19865e-23) -(10.0152 -0.178415 -6.60876e-23) -(10.0045 -0.18371 -6.21747e-23) -(9.99338 -0.189025 9.47642e-23) -(9.98165 -0.19435 8.60043e-23) -(9.96936 -0.199675 -5.02767e-22) -(9.95651 -0.204989 -3.2922e-22) -(9.94308 -0.210282 -3.70191e-23) -(9.92907 -0.215544 -2.39977e-22) -(9.91447 -0.220764 2.99763e-22) -(9.89929 -0.225931 9.09646e-23) -(9.88352 -0.231036 -2.9858e-22) -(9.86716 -0.236067 -2.70339e-22) -(9.85021 -0.241014 -4.22775e-22) -(9.83267 -0.245868 -2.38333e-22) -(9.81454 -0.250617 -2.3173e-22) -(9.79583 -0.255252 -1.05278e-22) -(9.77653 -0.259763 -2.5031e-23) -(9.75667 -0.264141 -2.48598e-22) -(9.73623 -0.268378 -4.20085e-22) -(9.71524 -0.272463 -6.65609e-22) -(9.6937 -0.27639 -5.58622e-22) -(9.67161 -0.28015 -3.43395e-22) -(9.64899 -0.283735 -3.38695e-22) -(9.62586 -0.287139 -4.9783e-22) -(9.60221 -0.290355 -6.74303e-22) -(9.57808 -0.293377 -4.94163e-22) -(9.55347 -0.2962 -1.79162e-22) -(9.52839 -0.298818 -1.90781e-22) -(9.50287 -0.301227 -4.72805e-22) -(9.47692 -0.303423 -4.13166e-22) -(9.45056 -0.305404 -1.02461e-22) -(9.4238 -0.307165 -1.2439e-22) -(9.39667 -0.308707 -1.46653e-22) -(9.36919 -0.310027 -2.00566e-22) -(9.34137 -0.311124 -4.53351e-22) -(9.31324 -0.311999 -3.13131e-22) -(9.28481 -0.312653 -5.07325e-23) -(9.2561 -0.313087 -2.03312e-22) -(9.22715 -0.313304 -3.02079e-22) -(9.19796 -0.313306 -2.63209e-22) -(9.16856 -0.313097 -2.88751e-22) -(9.13898 -0.312683 1.38642e-22) -(9.10922 -0.312069 -1.38388e-22) -(9.07931 -0.311261 -3.61478e-22) -(9.04926 -0.310266 -2.94669e-22) -(9.01911 -0.309092 -4.69522e-22) -(8.98886 -0.30775 1.6479e-23) -(8.95853 -0.306247 1.68994e-22) -(8.92814 -0.304597 -3.42503e-22) -(8.8977 -0.30281 6.00796e-22) -(8.86723 -0.3009 4.9679e-22) -(8.83674 -0.298881 9.28822e-22) -(8.80623 -0.296768 1.10644e-22) -(8.77572 -0.29458 -3.03076e-22) -(8.74522 -0.292333 -4.79573e-22) -(8.71472 -0.290047 1.87953e-22) -(8.68423 -0.287745 8.44881e-24) -(8.65375 -0.285448 6.82247e-22) -(8.62327 -0.283182 -4.67588e-22) -(8.59279 -0.280974 2.07561e-22) -(8.5623 -0.278853 -3.41381e-23) -(8.53179 -0.276853 5.60508e-22) -(8.50123 -0.275008 1.3924e-21) -(8.4706 -0.273359 4.47239e-23) -(8.43989 -0.271947 -5.38719e-22) -(8.40905 -0.270821 3.0306e-22) -(8.37805 -0.270036 -4.3276e-23) -(8.34685 -0.269652 3.46357e-22) -(8.31539 -0.269739 2.24006e-21) -(8.28362 -0.270376 1.70134e-21) -(8.25148 -0.271655 9.91335e-22) -(8.2189 -0.273683 2.90213e-22) -(8.1858 -0.276588 1.12238e-21) -(8.1521 -0.280521 2.4099e-21) -(8.11772 -0.285665 1.95581e-21) -(8.08258 -0.292242 1.33329e-22) -(8.04662 -0.300524 -1.42319e-21) -(8.00981 -0.310843 -1.09274e-21) -(7.9722 -0.323602 -7.31515e-22) -(7.93394 -0.339271 -2.48831e-22) -(7.89541 -0.358371 -1.13886e-21) -(7.85717 -0.381344 -1.73348e-22) -(7.82108 -0.408565 -2.88869e-21) -(7.78304 -0.438567 -5.23818e-21) -(10.0648 -0.000123253 3.83578e-23) -(10.0667 -0.000731196 -1.69011e-23) -(10.0685 -0.0013552 -9.61077e-23) -(10.0703 -0.00199331 -1.37689e-23) -(10.072 -0.00264379 -1.1592e-23) -(10.0738 -0.00330462 -3.32154e-23) -(10.0755 -0.00397365 3.15426e-23) -(10.0772 -0.00464883 1.48131e-22) -(10.0789 -0.00532814 1.64444e-23) -(10.0805 -0.0060097 -6.5372e-23) -(10.0822 -0.00669171 1.53975e-23) -(10.0838 -0.00737254 3.21083e-23) -(10.0854 -0.00805069 1.15695e-22) -(10.0869 -0.00872486 1.69378e-22) -(10.0885 -0.0093939 1.06712e-22) -(10.09 -0.0100569 1.82937e-22) -(10.0915 -0.010713 2.25071e-22) -(10.093 -0.0113618 7.82029e-23) -(10.0944 -0.0120029 2.38684e-23) -(10.0959 -0.012636 1.77891e-23) -(10.0973 -0.0132611 -1.06056e-22) -(10.0988 -0.0138785 -1.45469e-22) -(10.1002 -0.0144884 -1.14869e-22) -(10.1016 -0.0150914 -2.90133e-23) -(10.103 -0.0156882 4.92655e-23) -(10.1043 -0.0162794 1.04013e-22) -(10.1057 -0.0168661 3.48292e-23) -(10.107 -0.0174494 3.31953e-23) -(10.1084 -0.0180303 -2.85653e-23) -(10.1097 -0.0186103 -8.19025e-23) -(10.111 -0.0191907 -7.04314e-23) -(10.1124 -0.019773 -5.44331e-23) -(10.1137 -0.0203589 5.58854e-24) -(10.115 -0.02095 -1.13477e-22) -(10.1162 -0.0215482 -1.02765e-22) -(10.1175 -0.0221554 -1.4825e-22) -(10.1188 -0.0227734 -1.33134e-22) -(10.12 -0.0234044 -1.67731e-22) -(10.1213 -0.0240503 -3.40371e-23) -(10.1225 -0.0247134 -3.85544e-23) -(10.1237 -0.0253959 -2.05059e-22) -(10.1249 -0.0261002 -1.22032e-22) -(10.1261 -0.0268284 9.1893e-24) -(10.1273 -0.0275831 -4.80683e-23) -(10.1284 -0.0283667 -5.30338e-23) -(10.1295 -0.0291816 -1.6523e-22) -(10.1306 -0.0300305 -2.63697e-22) -(10.1316 -0.0309159 -5.87045e-23) -(10.1326 -0.0318404 8.15075e-23) -(10.1336 -0.0328067 7.52089e-23) -(10.1346 -0.0338175 -1.08666e-22) -(10.1355 -0.0348754 -3.16402e-22) -(10.1363 -0.0359832 -2.27372e-22) -(10.1371 -0.0371437 -2.69699e-23) -(10.1379 -0.0383594 -6.51904e-23) -(10.1385 -0.0396333 1.31384e-24) -(10.1392 -0.040968 1.56805e-23) -(10.1397 -0.0423663 -8.8578e-23) -(10.1402 -0.0438309 3.5114e-23) -(10.1405 -0.0453644 9.52394e-23) -(10.1408 -0.0469696 1.8668e-23) -(10.141 -0.0486491 -9.94984e-23) -(10.1411 -0.0504055 -2.19095e-22) -(10.1411 -0.0522413 -1.07999e-22) -(10.1409 -0.0541591 -2.16347e-22) -(10.1407 -0.0561613 -3.38773e-22) -(10.1403 -0.0582501 -2.23739e-22) -(10.1397 -0.060428 -3.23986e-22) -(10.139 -0.062697 -4.37729e-22) -(10.1381 -0.0650592 -2.134e-22) -(10.1371 -0.0675166 -7.79004e-23) -(10.1358 -0.070071 -1.88893e-22) -(10.1344 -0.0727239 -2.85396e-22) -(10.1328 -0.075477 -3.8429e-22) -(10.1309 -0.0783314 -1.54388e-22) -(10.1288 -0.0812882 -1.13157e-22) -(10.1265 -0.0843483 -3.34481e-22) -(10.1239 -0.0875122 -2.00514e-22) -(10.1211 -0.0907802 -7.93358e-23) -(10.1179 -0.0941522 5.4768e-23) -(10.1145 -0.0976279 -1.29285e-22) -(10.1108 -0.101206 -1.43834e-22) -(10.1067 -0.104887 1.6884e-22) -(10.1023 -0.108667 8.6563e-23) -(10.0975 -0.112545 -6.36194e-23) -(10.0924 -0.116519 4.39547e-23) -(10.0869 -0.120586 -8.96045e-23) -(10.081 -0.124742 2.12626e-22) -(10.0747 -0.128982 1.28267e-22) -(10.068 -0.133304 -1.70733e-22) -(10.0608 -0.137701 -9.42868e-23) -(10.0532 -0.142168 1.41983e-23) -(10.0451 -0.146699 -1.93018e-22) -(10.0365 -0.151289 -8.48123e-23) -(10.0274 -0.155929 -7.78296e-23) -(10.0179 -0.160613 -1.45742e-22) -(10.0078 -0.165333 -2.34578e-22) -(9.9972 -0.170081 -2.08042e-22) -(9.98607 -0.174848 -3.76493e-22) -(9.97439 -0.179627 -4.30586e-22) -(9.96215 -0.184409 -2.58153e-22) -(9.94936 -0.189184 -3.47504e-23) -(9.936 -0.193944 -6.8787e-23) -(9.92207 -0.198678 1.08016e-22) -(9.90756 -0.203379 -5.04104e-22) -(9.89247 -0.208036 -4.85005e-22) -(9.8768 -0.21264 -3.09241e-22) -(9.86054 -0.217182 -3.07863e-22) -(9.8437 -0.221652 -3.16326e-22) -(9.82627 -0.226042 -3.02633e-22) -(9.80825 -0.230341 -2.96635e-22) -(9.78966 -0.234543 -4.38181e-22) -(9.77048 -0.238637 -6.75771e-22) -(9.75073 -0.242615 -5.84737e-22) -(9.73042 -0.246469 -3.85856e-22) -(9.70954 -0.250192 -3.5941e-22) -(9.68811 -0.253775 -3.24888e-22) -(9.66613 -0.257212 -1.71926e-22) -(9.64361 -0.260495 -2.35034e-22) -(9.62058 -0.263618 -5.9036e-22) -(9.59702 -0.266575 -5.92085e-22) -(9.57297 -0.269361 -3.08347e-22) -(9.54843 -0.27197 -9.82546e-23) -(9.52342 -0.274397 -3.36916e-22) -(9.49795 -0.276639 -2.07252e-22) -(9.47204 -0.278691 -8.13877e-23) -(9.4457 -0.280551 -3.50985e-22) -(9.41895 -0.282215 -4.34026e-22) -(9.39181 -0.283682 -3.62087e-22) -(9.3643 -0.284951 -1.41564e-22) -(9.33644 -0.28602 -1.39423e-23) -(9.30823 -0.28689 -3.75687e-23) -(9.27972 -0.28756 -3.53098e-23) -(9.2509 -0.288033 -4.21918e-23) -(9.22181 -0.288309 -5.22726e-23) -(9.19246 -0.288391 -1.50786e-22) -(9.16287 -0.288283 1.01649e-22) -(9.13306 -0.287987 -7.57576e-23) -(9.10305 -0.28751 -4.25764e-23) -(9.07285 -0.286856 5.44694e-23) -(9.04249 -0.286032 1.19882e-22) -(9.01198 -0.285044 1.03808e-22) -(8.98134 -0.283901 -4.74914e-22) -(8.95058 -0.282612 -5.88635e-22) -(8.91972 -0.281185 -2.20609e-22) -(8.88877 -0.279633 -9.94136e-22) -(8.85773 -0.277967 -8.88365e-22) -(8.82663 -0.276199 -1.39139e-21) -(8.79546 -0.274344 -1.01537e-21) -(8.76424 -0.272417 -8.31785e-22) -(8.73296 -0.270435 -2.39464e-22) -(8.70163 -0.268415 -8.38471e-22) -(8.67025 -0.266377 -7.27354e-22) -(8.63881 -0.264342 -1.25144e-21) -(8.60731 -0.262333 -1.05147e-21) -(8.57573 -0.260376 -6.25572e-22) -(8.54406 -0.258497 -1.23713e-21) -(8.51228 -0.256728 -9.75615e-22) -(8.48037 -0.255101 -1.49096e-21) -(8.4483 -0.253653 -9.08223e-22) -(8.41603 -0.252424 -2.49452e-21) -(8.38352 -0.251461 -3.17997e-21) -(8.35073 -0.250814 -2.25828e-21) -(8.31759 -0.250541 -3.58779e-21) -(8.28406 -0.250708 -3.88408e-21) -(8.25005 -0.251391 -2.81005e-21) -(8.21548 -0.25268 -2.05751e-21) -(8.18026 -0.25468 -1.52933e-21) -(8.14428 -0.257513 -9.86175e-22) -(8.10743 -0.261333 9.46276e-22) -(8.06958 -0.266321 -7.65376e-23) -(8.03061 -0.272707 1.60559e-22) -(7.99038 -0.280776 1.46901e-22) -(7.94879 -0.290887 1.59455e-22) -(7.90579 -0.303492 2.01627e-22) -(7.86142 -0.319149 4.14625e-22) -(7.81598 -0.338517 2.31174e-21) -(7.76994 -0.362234 2.11818e-21) -(7.72559 -0.390948 1.91891e-21) -(7.67669 -0.422985 1.77719e-21) -(10.0621 -0.0062448 -2.05964e-23) -(10.064 -0.00675424 -6.28279e-23) -(10.0658 -0.00727638 3.36994e-23) -(10.0675 -0.00780989 -3.8912e-23) -(10.0693 -0.00835359 -1.22466e-23) -(10.071 -0.00890613 1.22763e-22) -(10.0727 -0.00946605 9.1105e-23) -(10.0744 -0.0100319 -4.90078e-24) -(10.0761 -0.0106022 3.96962e-23) -(10.0778 -0.0111756 7.76215e-23) -(10.0794 -0.0117509 1.0034e-22) -(10.0811 -0.0123267 6.41939e-23) -(10.0827 -0.0129019 9.47997e-23) -(10.0843 -0.0134756 7.97289e-23) -(10.0859 -0.0140469 2.17262e-23) -(10.0874 -0.014615 9.44847e-23) -(10.089 -0.0151792 1.17353e-22) -(10.0905 -0.0157391 7.84584e-23) -(10.092 -0.0162944 8.3084e-23) -(10.0935 -0.0168448 1.52651e-22) -(10.095 -0.0173902 1.96007e-22) -(10.0965 -0.0179308 1.16523e-22) -(10.0979 -0.0184667 1.07668e-22) -(10.0993 -0.0189983 9.99943e-23) -(10.1008 -0.019526 9.36897e-23) -(10.1022 -0.0200505 8.35516e-23) -(10.1036 -0.0205724 1.15247e-23) -(10.1049 -0.0210925 -2.97008e-23) -(10.1063 -0.0216117 1.7137e-22) -(10.1077 -0.0221312 2.69297e-22) -(10.109 -0.022652 1.25981e-22) -(10.1103 -0.0231753 1.17241e-22) -(10.1117 -0.0237025 1.12364e-22) -(10.113 -0.0242349 1.12119e-22) -(10.1142 -0.024774 1.81405e-22) -(10.1155 -0.0253214 3.46888e-22) -(10.1168 -0.0258787 3.05538e-22) -(10.118 -0.0264476 3.68994e-23) -(10.1193 -0.0270299 -2.12969e-23) -(10.1205 -0.0276273 3.9308e-23) -(10.1217 -0.0282418 8.51595e-23) -(10.1228 -0.0288753 -9.83046e-23) -(10.124 -0.0295298 -8.74838e-23) -(10.1251 -0.0302073 -1.8305e-23) -(10.1262 -0.03091 -6.04193e-24) -(10.1273 -0.03164 6.03923e-23) -(10.1283 -0.0323995 1.17031e-22) -(10.1293 -0.0331907 5.87082e-23) -(10.1303 -0.0340158 1.15446e-22) -(10.1312 -0.0348771 1.73836e-22) -(10.1321 -0.035777 1.55104e-22) -(10.1329 -0.0367178 1.39488e-22) -(10.1337 -0.0377019 6.61914e-23) -(10.1344 -0.0387315 1.72125e-22) -(10.135 -0.0398092 4.24596e-23) -(10.1356 -0.0409372 -7.28887e-23) -(10.1362 -0.042118 -1.60758e-23) -(10.1366 -0.0433539 9.16523e-23) -(10.137 -0.0446473 -7.8613e-23) -(10.1373 -0.0460007 -2.05323e-22) -(10.1375 -0.0474162 -2.01536e-22) -(10.1375 -0.0488963 -3.19444e-22) -(10.1375 -0.0504431 -2.01928e-22) -(10.1374 -0.052059 -1.98061e-22) -(10.1371 -0.0537462 -2.49426e-22) -(10.1367 -0.0555066 -3.08187e-22) -(10.1362 -0.0573426 -2.38723e-22) -(10.1355 -0.0592559 -1.67005e-22) -(10.1347 -0.0612486 1.41635e-24) -(10.1337 -0.0633224 -2.70065e-23) -(10.1325 -0.0654791 -2.52087e-22) -(10.1312 -0.0677202 -1.41073e-22) -(10.1296 -0.0700473 -1.32995e-22) -(10.1279 -0.0724615 -3.53413e-23) -(10.1259 -0.074964 8.49356e-23) -(10.1237 -0.0775559 -2.49832e-23) -(10.1212 -0.0802377 -3.61797e-23) -(10.1185 -0.0830101 3.71847e-23) -(10.1155 -0.0858733 -5.13352e-23) -(10.1122 -0.0888272 -4.04457e-22) -(10.1087 -0.0918717 -2.18303e-22) -(10.1048 -0.095006 -4.14074e-22) -(10.1006 -0.0982292 -7.26155e-22) -(10.0961 -0.10154 -5.27415e-22) -(10.0912 -0.104937 -2.84626e-22) -(10.086 -0.108418 -3.56601e-22) -(10.0804 -0.11198 -2.50455e-22) -(10.0744 -0.11562 -1.07524e-22) -(10.068 -0.119336 -8.76341e-23) -(10.0612 -0.123123 1.25883e-22) -(10.0539 -0.126977 2.09231e-22) -(10.0462 -0.130894 1.17619e-22) -(10.0381 -0.134868 -3.46048e-23) -(10.0294 -0.138895 1.42797e-22) -(10.0203 -0.142968 1.10641e-22) -(10.0107 -0.147081 3.48139e-22) -(10.0006 -0.151228 4.19827e-22) -(9.98991 -0.155403 2.64898e-22) -(9.97874 -0.159597 2.24332e-22) -(9.96703 -0.163804 5.38913e-23) -(9.95477 -0.168016 1.89061e-22) -(9.94196 -0.172226 -9.40058e-23) -(9.92858 -0.176426 -3.86095e-22) -(9.91464 -0.180607 -2.95065e-22) -(9.90012 -0.184761 -2.26687e-22) -(9.88503 -0.188881 -2.38836e-22) -(9.86936 -0.192959 -2.3977e-22) -(9.8531 -0.196985 -3.03325e-22) -(9.83625 -0.200953 -2.92621e-22) -(9.81882 -0.204853 -1.33634e-22) -(9.80081 -0.208679 -1.46606e-22) -(9.78221 -0.212422 -8.08028e-23) -(9.76303 -0.216074 -3.8204e-23) -(9.74327 -0.219629 5.34141e-23) -(9.72294 -0.223078 -3.98937e-23) -(9.70204 -0.226415 2.58182e-22) -(9.68057 -0.229633 3.18835e-22) -(9.65856 -0.232725 -1.34019e-22) -(9.636 -0.235686 -7.7365e-23) -(9.6129 -0.238509 1.24952e-22) -(9.58928 -0.241188 2.01874e-22) -(9.56514 -0.243719 2.52236e-22) -(9.5405 -0.246097 -2.59066e-23) -(9.51537 -0.248318 1.97689e-22) -(9.48977 -0.250376 7.23723e-23) -(9.4637 -0.25227 -1.91811e-22) -(9.43719 -0.253995 -6.14032e-23) -(9.41024 -0.255549 -1.89742e-22) -(9.38288 -0.25693 -2.55559e-22) -(9.35512 -0.258137 -7.25985e-23) -(9.32698 -0.259168 3.08674e-23) -(9.29848 -0.260023 1.05814e-23) -(9.26962 -0.260701 -2.72323e-24) -(9.24044 -0.261204 -9.8475e-23) -(9.21094 -0.261532 -5.26705e-25) -(9.18115 -0.261688 1.74486e-22) -(9.15108 -0.261673 9.87944e-23) -(9.12075 -0.261491 -1.52972e-22) -(9.09017 -0.261146 -3.43386e-22) -(9.05936 -0.260641 -1.31994e-22) -(9.02834 -0.259983 -1.77213e-22) -(8.99712 -0.259177 2.9761e-22) -(8.96571 -0.25823 2.28182e-22) -(8.93413 -0.25715 4.98747e-23) -(8.90239 -0.255944 5.26082e-27) -(8.87049 -0.254623 -6.31543e-23) -(8.83845 -0.253196 2.70052e-22) -(8.80626 -0.251674 -2.75499e-23) -(8.77394 -0.250071 -1.26583e-22) -(8.74149 -0.248399 -3.2013e-23) -(8.7089 -0.246673 -4.22398e-22) -(8.67618 -0.24491 -3.64915e-23) -(8.64331 -0.243126 -1.4581e-22) -(8.61029 -0.241341 8.99305e-22) -(8.5771 -0.239576 1.33344e-21) -(8.54372 -0.237853 6.61782e-22) -(8.51014 -0.236197 1.48511e-21) -(8.47633 -0.234637 3.05405e-22) -(8.44225 -0.233202 1.48207e-21) -(8.40786 -0.231926 1.36704e-21) -(8.37313 -0.230846 2.18446e-21) -(8.33799 -0.230004 1.95623e-21) -(8.30239 -0.229448 1.51015e-21) -(8.26626 -0.229231 3.40064e-21) -(8.2295 -0.229416 2.8893e-21) -(8.19204 -0.230073 2.32052e-21) -(8.15375 -0.231286 7.58868e-22) -(8.11453 -0.233155 5.32287e-22) -(8.07422 -0.2358 1.81036e-21) -(8.03268 -0.239365 9.84652e-23) -(7.98972 -0.244033 2.63118e-21) -(7.94515 -0.25003 2.46678e-21) -(7.89877 -0.25765 8.90057e-22) -(7.85036 -0.267272 9.20164e-22) -(7.79976 -0.279395 9.09221e-22) -(7.74688 -0.294666 2.33892e-21) -(7.69187 -0.313916 2.0317e-21) -(7.63507 -0.338032 1.62972e-21) -(7.57931 -0.368157 3.10917e-21) -(7.51533 -0.402127 2.33955e-21) -(10.0613 -0.0119789 -1.7174e-23) -(10.0632 -0.0124117 9.41154e-23) -(10.0649 -0.0128542 7.14978e-23) -(10.0667 -0.0133053 1.88809e-23) -(10.0684 -0.0137643 -2.70649e-23) -(10.0702 -0.0142301 -4.63926e-23) -(10.0719 -0.0147017 4.49466e-23) -(10.0736 -0.0151781 1.15224e-22) -(10.0753 -0.015658 1.36064e-22) -(10.077 -0.0161406 1.07482e-22) -(10.0786 -0.0166249 1.32565e-23) -(10.0803 -0.01711 -6.54861e-23) -(10.0819 -0.0175951 -1.32167e-22) -(10.0835 -0.0180794 -1.37075e-22) -(10.0851 -0.0185623 -2.2024e-23) -(10.0867 -0.0190433 -7.50206e-23) -(10.0883 -0.0195218 -1.63392e-22) -(10.0898 -0.0199977 -7.26318e-23) -(10.0914 -0.0204705 -2.79099e-23) -(10.0929 -0.0209402 4.595e-24) -(10.0944 -0.0214068 -3.09642e-23) -(10.0959 -0.0218703 -3.40936e-23) -(10.0974 -0.0223308 -7.4442e-23) -(10.0988 -0.0227888 -1.36108e-22) -(10.1003 -0.0232444 -1.15078e-22) -(10.1017 -0.0236983 -3.28427e-23) -(10.1031 -0.0241509 -3.12007e-24) -(10.1045 -0.0246029 -4.88878e-23) -(10.1059 -0.0250551 -1.20415e-22) -(10.1073 -0.0255082 -1.70402e-22) -(10.1086 -0.0259633 -8.67791e-23) -(10.1099 -0.0264212 -7.41823e-23) -(10.1113 -0.0268832 -3.21858e-23) -(10.1126 -0.0273502 -8.0206e-24) -(10.1139 -0.0278235 -1.22005e-22) -(10.1151 -0.0283044 -2.40541e-22) -(10.1164 -0.0287943 -1.37997e-22) -(10.1176 -0.0292946 7.25654e-23) -(10.1188 -0.0298066 6.23505e-23) -(10.12 -0.030332 1.66774e-24) -(10.1212 -0.0308723 1.41663e-22) -(10.1223 -0.0314292 2.62217e-22) -(10.1234 -0.0320044 1.78501e-22) -(10.1245 -0.0325995 2.35442e-22) -(10.1255 -0.0332163 2.20603e-22) -(10.1266 -0.0338567 2.66944e-22) -(10.1275 -0.0345224 1.69303e-22) -(10.1285 -0.0352155 1.34195e-23) -(10.1294 -0.0359377 -1.89905e-22) -(10.1303 -0.0366911 -1.29991e-22) -(10.1311 -0.0374776 -1.8119e-22) -(10.1318 -0.0382992 -2.36378e-22) -(10.1325 -0.0391579 -3.04062e-23) -(10.1332 -0.0400558 -8.02325e-23) -(10.1337 -0.0409949 -4.71412e-24) -(10.1343 -0.0419772 1.24244e-22) -(10.1347 -0.0430048 1.20273e-22) -(10.135 -0.0440798 5.75245e-23) -(10.1353 -0.0452041 1.10345e-22) -(10.1355 -0.0463799 1.0943e-22) -(10.1356 -0.0476091 -2.43524e-23) -(10.1355 -0.0488937 3.39033e-23) -(10.1354 -0.0502357 3.03669e-23) -(10.1351 -0.0516371 -2.55124e-23) -(10.1348 -0.0530997 -8.64929e-23) -(10.1342 -0.0546254 -1.51484e-23) -(10.1336 -0.0562161 -2.18165e-26) -(10.1328 -0.0578733 6.83199e-23) -(10.1318 -0.0595988 1.477e-22) -(10.1307 -0.0613942 9.18904e-23) -(10.1293 -0.063261 8.16202e-23) -(10.1278 -0.0652005 2.40852e-23) -(10.1261 -0.0672141 -4.90506e-23) -(10.1242 -0.0693028 -9.78863e-23) -(10.1221 -0.0714677 -2.28651e-22) -(10.1197 -0.0737095 -1.57258e-22) -(10.1171 -0.0760291 -2.14851e-22) -(10.1142 -0.0784268 -2.41594e-22) -(10.111 -0.0809029 -2.99875e-22) -(10.1076 -0.0834575 -1.53346e-22) -(10.1039 -0.0860903 -2.452e-22) -(10.0999 -0.0888008 -7.37621e-23) -(10.0955 -0.0915884 -4.03382e-23) -(10.0908 -0.0944518 -2.77054e-22) -(10.0858 -0.0973899 -2.45088e-22) -(10.0804 -0.100401 -3.50029e-22) -(10.0746 -0.103482 -2.97367e-22) -(10.0684 -0.106633 -3.73925e-22) -(10.0619 -0.109848 -1.30877e-22) -(10.0549 -0.113127 -7.25031e-23) -(10.0475 -0.116464 -4.56189e-22) -(10.0396 -0.119857 -5.53566e-22) -(10.0313 -0.123301 -4.04005e-22) -(10.0225 -0.126791 -5.78312e-22) -(10.0132 -0.130323 -6.40567e-22) -(10.0034 -0.133892 -6.85654e-22) -(9.99313 -0.137492 -6.31586e-22) -(9.98233 -0.141118 -4.69278e-22) -(9.97101 -0.144763 -4.91318e-22) -(9.95914 -0.148421 -5.41026e-22) -(9.94673 -0.152086 -3.78546e-22) -(9.93376 -0.155752 -3.27113e-22) -(9.92023 -0.159411 -2.90893e-22) -(9.90613 -0.163058 -2.53116e-22) -(9.89146 -0.166684 -2.11735e-22) -(9.8762 -0.170283 -1.80747e-22) -(9.86036 -0.173848 -1.50348e-22) -(9.84393 -0.177372 -4.81591e-23) -(9.82691 -0.180848 -2.9744e-23) -(9.8093 -0.184268 -2.61063e-22) -(9.79109 -0.187627 -2.95473e-22) -(9.77229 -0.190917 -1.68616e-22) -(9.7529 -0.194131 -5.48998e-23) -(9.73292 -0.197263 -2.31093e-22) -(9.71235 -0.200306 -2.54752e-22) -(9.6912 -0.203255 -3.92446e-22) -(9.66948 -0.206102 -3.90023e-22) -(9.64718 -0.208843 -5.98928e-23) -(9.62432 -0.211472 -6.40802e-23) -(9.60091 -0.213983 5.29172e-23) -(9.57694 -0.216372 3.0333e-23) -(9.55244 -0.218633 -2.3354e-22) -(9.52741 -0.220762 8.12819e-25) -(9.50187 -0.222755 -1.04546e-22) -(9.47582 -0.224609 -8.52904e-23) -(9.44927 -0.22632 4.83891e-23) -(9.42225 -0.227884 4.88453e-23) -(9.39476 -0.2293 1.65899e-22) -(9.36681 -0.230565 3.34075e-22) -(9.33842 -0.231678 1.84821e-22) -(9.30961 -0.232636 -2.25243e-22) -(9.28039 -0.23344 -2.29282e-22) -(9.25077 -0.234089 -7.05088e-23) -(9.22077 -0.234582 1.37921e-22) -(9.1904 -0.234921 -1.0748e-22) -(9.15967 -0.235106 -3.8227e-22) -(9.12861 -0.23514 -2.64726e-22) -(9.09722 -0.235025 1.21795e-22) -(9.06551 -0.234763 3.15551e-23) -(9.0335 -0.234358 -8.88811e-23) -(9.0012 -0.233814 6.23511e-23) -(8.96862 -0.233137 -5.25666e-22) -(8.93576 -0.23233 -4.94719e-23) -(8.90264 -0.231402 -8.94576e-23) -(8.86926 -0.230358 -3.00133e-22) -(8.83563 -0.229206 4.27011e-22) -(8.80174 -0.227956 2.30443e-22) -(8.7676 -0.226616 1.13665e-22) -(8.7332 -0.225198 4.64403e-22) -(8.69854 -0.223713 5.28755e-22) -(8.66361 -0.222174 4.11483e-22) -(8.6284 -0.220594 8.44912e-22) -(8.5929 -0.21899 5.47676e-22) -(8.55708 -0.217377 -2.67798e-22) -(8.52093 -0.215774 -7.19439e-22) -(8.48441 -0.214202 4.09935e-22) -(8.44749 -0.212682 6.09196e-22) -(8.41014 -0.211239 6.89686e-22) -(8.37231 -0.209899 1.30463e-22) -(8.33395 -0.208693 6.93669e-22) -(8.29499 -0.207654 1.26249e-21) -(8.25536 -0.20682 1.67281e-21) -(8.215 -0.206233 2.07652e-21) -(8.1738 -0.205941 4.84875e-22) -(8.13166 -0.206001 2.08974e-22) -(8.08847 -0.206476 -2.75877e-23) -(8.04409 -0.207445 2.00839e-21) -(7.99836 -0.208996 1.8564e-21) -(7.95111 -0.211242 8.62848e-23) -(7.90213 -0.214318 -9.37592e-23) -(7.8512 -0.218395 -1.81322e-21) -(7.79806 -0.223693 -4.74269e-23) -(7.74242 -0.230501 3.12568e-21) -(7.68397 -0.239206 2.40166e-21) -(7.62239 -0.250336 1.74547e-21) -(7.55742 -0.264621 -6.32917e-22) -(7.48904 -0.283079 -5.73375e-22) -(7.4173 -0.306906 -4.81481e-22) -(7.34586 -0.338064 -4.9026e-22) -(7.2612 -0.373737 -2.46121e-22) -(10.0619 -0.0169577 -4.96464e-23) -(10.0638 -0.0173263 -7.31598e-23) -(10.0656 -0.0177031 -9.8017e-23) -(10.0673 -0.018087 -4.74657e-23) -(10.069 -0.0184774 -5.33256e-23) -(10.0708 -0.0188734 -1.07109e-22) -(10.0725 -0.0192739 -1.77839e-22) -(10.0742 -0.0196782 -1.54196e-22) -(10.0759 -0.0200854 -1.5005e-22) -(10.0776 -0.0204946 -2.06716e-22) -(10.0793 -0.0209051 -8.21857e-23) -(10.0809 -0.0213163 7.67657e-23) -(10.0826 -0.0217274 5.64956e-23) -(10.0842 -0.0221381 2.71994e-23) -(10.0858 -0.0225477 -9.82198e-23) -(10.0874 -0.0229559 -6.18563e-23) -(10.089 -0.0233623 8.64938e-23) -(10.0906 -0.0237669 -1.15259e-23) -(10.0921 -0.0241692 -5.25498e-23) -(10.0937 -0.0245694 -4.32305e-23) -(10.0952 -0.0249674 -1.3258e-23) -(10.0967 -0.0253632 -8.33231e-23) -(10.0982 -0.025757 9.73127e-24) -(10.0996 -0.026149 8.20018e-23) -(10.1011 -0.0265397 6.14267e-23) -(10.1025 -0.0269292 -2.90603e-23) -(10.1039 -0.0273182 -6.33291e-23) -(10.1053 -0.0277072 -2.17014e-23) -(10.1067 -0.0280967 -2.41231e-23) -(10.1081 -0.0284875 -2.37969e-23) -(10.1094 -0.0288803 1.82458e-23) -(10.1107 -0.029276 7.84567e-23) -(10.1121 -0.0296753 -1.782e-23) -(10.1133 -0.0300794 -1.306e-22) -(10.1146 -0.0304891 -9.04973e-23) -(10.1159 -0.0309056 -1.26432e-22) -(10.1171 -0.03133 -8.51741e-23) -(10.1183 -0.0317634 -8.28928e-23) -(10.1195 -0.0322071 -1.15709e-22) -(10.1206 -0.0326624 -1.47863e-22) -(10.1217 -0.0331306 -1.73571e-22) -(10.1228 -0.0336131 -2.27271e-22) -(10.1239 -0.0341112 -1.70567e-22) -(10.1249 -0.0346266 -1.60329e-22) -(10.1259 -0.0351605 -1.4914e-22) -(10.1269 -0.0357147 -2.45796e-22) -(10.1278 -0.0362906 -2.13692e-22) -(10.1286 -0.0368898 -1.25929e-22) -(10.1295 -0.0375141 3.2335e-23) -(10.1302 -0.0381649 -1.04461e-22) -(10.131 -0.0388441 1.06383e-22) -(10.1316 -0.0395534 2.66628e-23) -(10.1322 -0.0402943 -1.14974e-22) -(10.1328 -0.0410688 -3.90868e-23) -(10.1333 -0.0418785 -3.77458e-23) -(10.1337 -0.0427251 -9.67766e-23) -(10.134 -0.0436106 -1.6069e-22) -(10.1342 -0.0445365 -7.43791e-23) -(10.1343 -0.0455047 1.22138e-23) -(10.1344 -0.0465169 1.68789e-22) -(10.1343 -0.047575 2.35015e-22) -(10.1342 -0.0486805 2.32567e-22) -(10.1339 -0.0498352 2.18606e-22) -(10.1335 -0.0510408 3.39774e-22) -(10.1329 -0.052299 3.8598e-22) -(10.1323 -0.0536113 4.23611e-22) -(10.1314 -0.0549793 3.88979e-22) -(10.1304 -0.0564046 2.8788e-22) -(10.1293 -0.0578886 2.60962e-22) -(10.128 -0.0594326 2.35378e-22) -(10.1265 -0.061038 2.16684e-22) -(10.1248 -0.0627061 2.5407e-22) -(10.1229 -0.0644378 3.02727e-22) -(10.1207 -0.0662344 2.10576e-22) -(10.1184 -0.0680965 1.26888e-22) -(10.1158 -0.0700251 9.70629e-23) -(10.113 -0.0720207 2.23227e-22) -(10.1099 -0.0740838 2.04531e-22) -(10.1065 -0.0762146 3.18112e-22) -(10.1029 -0.0784132 3.72426e-22) -(10.0989 -0.0806795 3.61568e-22) -(10.0946 -0.0830131 2.85039e-22) -(10.09 -0.0854134 3.81601e-22) -(10.0851 -0.0878797 5.04693e-22) -(10.0798 -0.0904108 4.19208e-22) -(10.0742 -0.0930053 5.74834e-22) -(10.0682 -0.0956615 6.6977e-22) -(10.0617 -0.0983775 5.5663e-22) -(10.0549 -0.101151 3.94796e-22) -(10.0476 -0.103979 2.90177e-22) -(10.04 -0.10686 4.53141e-22) -(10.0318 -0.109789 6.0257e-22) -(10.0232 -0.112764 3.03942e-22) -(10.0142 -0.115781 1.43129e-22) -(10.0046 -0.118835 2.25022e-22) -(9.99454 -0.121922 1.01469e-22) -(9.98397 -0.125038 -3.68205e-23) -(9.97287 -0.128178 7.22663e-23) -(9.96125 -0.131336 1.60028e-22) -(9.94908 -0.134509 2.69372e-22) -(9.93636 -0.137689 1.59032e-22) -(9.92307 -0.140872 2.36537e-22) -(9.90921 -0.144052 3.37013e-22) -(9.89478 -0.147222 3.00046e-22) -(9.87976 -0.150378 3.75179e-22) -(9.86415 -0.153513 2.49429e-22) -(9.84794 -0.156621 2.28806e-22) -(9.83113 -0.159695 2.89864e-22) -(9.81372 -0.162731 3.57117e-22) -(9.79569 -0.165721 2.33821e-22) -(9.77706 -0.16866 2.75549e-22) -(9.75782 -0.171541 3.12788e-22) -(9.73796 -0.174359 3.43534e-22) -(9.7175 -0.177108 5.10037e-22) -(9.69643 -0.179782 3.54333e-22) -(9.67475 -0.182376 2.91242e-22) -(9.65246 -0.184885 2.92443e-22) -(9.62958 -0.187302 5.5099e-23) -(9.6061 -0.189623 8.85877e-23) -(9.58203 -0.191843 1.84538e-22) -(9.55738 -0.193958 -2.22708e-23) -(9.53215 -0.195964 1.06337e-22) -(9.50636 -0.197855 1.00721e-22) -(9.48 -0.199628 1.51044e-22) -(9.45309 -0.20128 2.00127e-22) -(9.42564 -0.202808 1.27028e-22) -(9.39766 -0.204207 5.90422e-23) -(9.36915 -0.205477 6.6442e-23) -(9.34012 -0.206614 2.28883e-23) -(9.3106 -0.207616 1.78309e-23) -(9.28058 -0.208483 2.22019e-22) -(9.25008 -0.209211 1.66043e-22) -(9.2191 -0.209802 3.13243e-23) -(9.18767 -0.210255 -5.90321e-23) -(9.15578 -0.210569 9.09527e-23) -(9.12344 -0.210745 2.58832e-22) -(9.09067 -0.210785 3.93216e-23) -(9.05747 -0.210689 -1.39348e-22) -(9.02385 -0.210459 1.56566e-22) -(8.98981 -0.210099 -7.09839e-24) -(8.95537 -0.209611 -2.56836e-22) -(8.92051 -0.209 3.19783e-22) -(8.88525 -0.208268 5.11481e-23) -(8.84959 -0.207422 2.24398e-22) -(8.81351 -0.206467 2.47252e-22) -(8.77703 -0.20541 1.54189e-22) -(8.74013 -0.204257 -3.99671e-23) -(8.70281 -0.203017 6.98118e-22) -(8.66505 -0.201699 2.76545e-22) -(8.62684 -0.200312 5.37501e-22) -(8.58816 -0.198868 4.91956e-22) -(8.549 -0.197378 3.03623e-22) -(8.50933 -0.195856 5.9333e-22) -(8.46911 -0.194315 1.36336e-21) -(8.42833 -0.192773 1.6386e-21) -(8.38694 -0.191245 7.53339e-22) -(8.3449 -0.189753 4.39683e-22) -(8.30215 -0.188317 9.17545e-22) -(8.25865 -0.186961 7.7779e-22) -(8.21434 -0.18571 5.32044e-22) -(8.16914 -0.184596 -3.4378e-22) -(8.12297 -0.183651 -1.15302e-21) -(8.07576 -0.182912 -1.82243e-21) -(8.02739 -0.182423 -1.66655e-21) -(7.97775 -0.182234 -2.20044e-21) -(7.92673 -0.182401 -1.94524e-21) -(7.87417 -0.182995 -1.73384e-21) -(7.81992 -0.184098 -8.11278e-22) -(7.76378 -0.185808 -7.33202e-23) -(7.70554 -0.188252 -1.23042e-21) -(7.64495 -0.191588 -1.40395e-21) -(7.58173 -0.196023 -1.24096e-21) -(7.51555 -0.20183 -3.80397e-21) -(7.44602 -0.209392 -3.0697e-21) -(7.37275 -0.219245 -2.37658e-21) -(7.2953 -0.23217 -2.00872e-21) -(7.21347 -0.249352 -7.32482e-22) -(7.12693 -0.272294 -8.89471e-22) -(7.04026 -0.304054 -1.90425e-21) -(6.93495 -0.341493 -1.5647e-21) -(10.0636 -0.0214583 7.52127e-24) -(10.0655 -0.0217776 -6.25857e-23) -(10.0672 -0.0221035 -4.93245e-23) -(10.0689 -0.0224347 -2.0471e-23) -(10.0707 -0.0227701 -1.88426e-23) -(10.0724 -0.0231089 -1.02255e-23) -(10.0741 -0.02345 6.61381e-23) -(10.0758 -0.0237928 1.06124e-22) -(10.0775 -0.0241364 1.56299e-23) -(10.0792 -0.0244804 -2.36445e-23) -(10.0809 -0.0248243 -9.3639e-23) -(10.0825 -0.0251676 -9.39476e-23) -(10.0842 -0.02551 -3.4141e-23) -(10.0858 -0.0258512 -1.60557e-23) -(10.0874 -0.026191 8.58252e-23) -(10.089 -0.0265293 1.40738e-22) -(10.0906 -0.026866 -1.22209e-23) -(10.0921 -0.0272009 -4.64194e-23) -(10.0937 -0.027534 -2.14807e-24) -(10.0952 -0.0278655 -5.08307e-23) -(10.0967 -0.0281953 -7.82281e-23) -(10.0982 -0.0285236 -2.29392e-23) -(10.0997 -0.0288506 -1.64108e-23) -(10.1011 -0.0291765 -8.61075e-24) -(10.1026 -0.0295017 -7.57344e-24) -(10.104 -0.0298263 -5.07003e-23) -(10.1054 -0.030151 -8.08324e-23) -(10.1068 -0.030476 -2.77745e-23) -(10.1081 -0.030802 -2.56982e-23) -(10.1094 -0.0311294 -2.95065e-23) -(10.1108 -0.031459 -7.58011e-23) -(10.112 -0.0317914 -1.46965e-22) -(10.1133 -0.0321274 -8.82889e-23) -(10.1145 -0.0324676 -5.07521e-24) -(10.1158 -0.032813 -8.41381e-24) -(10.117 -0.0331645 2.72754e-23) -(10.1181 -0.0335229 -2.12028e-23) -(10.1193 -0.0338892 -5.81177e-23) -(10.1204 -0.0342645 -9.41325e-24) -(10.1214 -0.0346499 1.10976e-22) -(10.1225 -0.0350464 5.62958e-23) -(10.1235 -0.0354551 7.71201e-23) -(10.1245 -0.0358774 -2.16192e-23) -(10.1254 -0.0363143 -1.05905e-22) -(10.1263 -0.0367672 -6.45114e-23) -(10.1271 -0.0372374 1.50707e-23) -(10.1279 -0.0377261 4.56945e-23) -(10.1287 -0.0382347 8.60864e-23) -(10.1294 -0.0387647 7.1395e-23) -(10.13 -0.0393173 1.3664e-22) -(10.1306 -0.0398941 -9.94753e-23) -(10.1312 -0.0404965 2.40446e-23) -(10.1316 -0.0411259 1.37728e-22) -(10.132 -0.0417838 5.65932e-23) -(10.1323 -0.0424717 9.02715e-23) -(10.1325 -0.0431912 1.15726e-22) -(10.1327 -0.0439437 2.70019e-23) -(10.1327 -0.0447307 -1.45687e-23) -(10.1327 -0.0455538 2.18451e-23) -(10.1325 -0.0464145 1.76673e-23) -(10.1323 -0.0473142 -4.85595e-23) -(10.1319 -0.0482545 -1.28057e-22) -(10.1314 -0.0492369 -1.16981e-22) -(10.1308 -0.0502627 -2.47413e-22) -(10.13 -0.0513335 -2.30698e-22) -(10.1291 -0.0524507 -2.56673e-22) -(10.1281 -0.0536155 -3.78564e-22) -(10.1268 -0.0548294 -1.89505e-22) -(10.1254 -0.0560936 -1.52031e-22) -(10.1238 -0.0574093 -1.20381e-22) -(10.1221 -0.0587777 -9.6682e-23) -(10.1201 -0.0601998 -1.28895e-22) -(10.1179 -0.0616767 -1.19784e-22) -(10.1155 -0.0632093 4.85894e-23) -(10.1129 -0.0647983 5.28655e-23) -(10.11 -0.0664445 1.40457e-22) -(10.1068 -0.0681484 7.76699e-23) -(10.1034 -0.0699104 7.29478e-23) -(10.0997 -0.0717309 7.03785e-23) -(10.0958 -0.07361 1.32428e-22) -(10.0915 -0.0755475 2.10838e-22) -(10.0869 -0.0775432 1.40328e-22) -(10.0819 -0.0795968 1.89363e-22) -(10.0766 -0.0817074 2.66541e-22) -(10.071 -0.0838744 2.98867e-22) -(10.065 -0.0860964 4.35535e-22) -(10.0586 -0.0883722 1.9362e-22) -(10.0518 -0.0907002 3.1828e-23) -(10.0445 -0.0930785 9.92147e-23) -(10.0369 -0.0955049 7.01005e-23) -(10.0288 -0.097977 1.74767e-22) -(10.0202 -0.100492 1.77242e-22) -(10.0112 -0.103048 5.45813e-22) -(10.0017 -0.10564 7.2494e-22) -(9.99167 -0.108267 6.23214e-22) -(9.98115 -0.110923 4.93545e-22) -(9.97011 -0.113605 6.33101e-22) -(9.95853 -0.11631 4.29424e-22) -(9.94641 -0.119032 3.29343e-22) -(9.93373 -0.121767 3.65541e-22) -(9.92048 -0.124511 3.41524e-22) -(9.90665 -0.12726 2.8429e-22) -(9.89223 -0.130007 2.22414e-22) -(9.87722 -0.132748 1.89815e-22) -(9.8616 -0.135478 7.90795e-23) -(9.84536 -0.138191 1.83772e-22) -(9.82851 -0.140883 1.85132e-22) -(9.81103 -0.143548 1.09878e-22) -(9.79291 -0.146181 2.21657e-23) -(9.77416 -0.148776 1.97167e-22) -(9.75477 -0.151328 1.48095e-22) -(9.73474 -0.153833 -1.78286e-22) -(9.71406 -0.156284 -1.32355e-22) -(9.69272 -0.158676 -7.92944e-23) -(9.67074 -0.161005 3.60586e-23) -(9.64811 -0.163265 1.14158e-22) -(9.62483 -0.165451 1.85568e-22) -(9.6009 -0.167559 1.59986e-22) -(9.57632 -0.169585 1.39458e-22) -(9.55109 -0.171523 1.51856e-22) -(9.52522 -0.17337 3.39775e-22) -(9.49871 -0.175121 1.58387e-22) -(9.47157 -0.176772 5.634e-23) -(9.44379 -0.17832 6.77841e-23) -(9.41538 -0.179761 5.9046e-23) -(9.38634 -0.181092 1.18878e-22) -(9.35669 -0.182311 1.04427e-22) -(9.32642 -0.183413 9.26172e-23) -(9.29554 -0.184398 -1.46131e-23) -(9.26405 -0.185262 -3.65327e-24) -(9.23196 -0.186004 1.87568e-22) -(9.19927 -0.186622 2.24763e-22) -(9.16598 -0.187115 1.08113e-22) -(9.13211 -0.187482 5.19512e-23) -(9.09765 -0.187724 5.28813e-23) -(9.0626 -0.187839 7.04382e-23) -(9.02696 -0.187828 6.73978e-23) -(8.99074 -0.187691 1.25506e-22) -(8.95393 -0.187431 -1.52781e-22) -(8.91654 -0.187048 -9.97365e-23) -(8.87856 -0.186545 -2.80802e-26) -(8.83998 -0.185925 -2.95374e-22) -(8.8008 -0.185191 -3.36373e-22) -(8.76101 -0.184346 -2.73526e-22) -(8.7206 -0.183396 -1.05602e-22) -(8.67957 -0.182345 -6.21636e-22) -(8.6379 -0.1812 -5.55066e-22) -(8.59557 -0.179967 -9.09947e-22) -(8.55257 -0.178653 -3.2331e-22) -(8.50888 -0.177267 -6.70046e-22) -(8.46448 -0.175819 -5.70678e-22) -(8.41935 -0.174319 -9.15041e-22) -(8.37345 -0.172777 -6.73639e-22) -(8.32676 -0.171208 -1.4813e-21) -(8.27926 -0.169624 -1.78391e-21) -(8.23089 -0.168042 -1.44225e-21) -(8.18163 -0.166479 -1.09592e-21) -(8.13144 -0.164954 -8.53508e-22) -(8.08026 -0.163488 -5.90833e-22) -(8.02804 -0.162104 -1.82583e-21) -(7.97474 -0.16083 -2.14578e-21) -(7.92027 -0.159695 -2.33539e-21) -(7.86458 -0.158734 -1.93341e-21) -(7.80758 -0.157985 -1.63751e-21) -(7.74919 -0.157493 -6.46921e-22) -(7.68928 -0.15731 -7.07266e-22) -(7.62775 -0.157498 -1.80982e-21) -(7.56445 -0.158131 -2.66099e-21) -(7.49922 -0.1593 -3.17705e-21) -(7.43185 -0.161117 -2.52012e-21) -(7.36212 -0.163726 -1.99348e-21) -(7.28973 -0.167315 -1.63599e-21) -(7.21434 -0.172141 -4.37479e-22) -(7.13553 -0.178563 -5.44273e-22) -(7.05281 -0.187108 -6.29804e-22) -(6.96559 -0.198566 -6.28816e-22) -(6.87347 -0.21425 -1.58142e-21) -(6.7755 -0.235907 -2.26629e-21) -(6.67721 -0.267923 -2.6733e-22) -(6.55431 -0.307091 -5.42383e-22) -(10.0659 -0.0252392 3.74273e-23) -(10.0677 -0.0255141 8.06951e-23) -(10.0694 -0.025797 6.17358e-23) -(10.0711 -0.0260851 2.72413e-23) -(10.0728 -0.0263766 2.26182e-23) -(10.0745 -0.0266702 1.54648e-23) -(10.0762 -0.026965 -1.3886e-23) -(10.0779 -0.0272601 -2.837e-23) -(10.0796 -0.0275546 1.54394e-24) -(10.0812 -0.0278483 1.34084e-24) -(10.0829 -0.0281405 -1.5978e-25) -(10.0845 -0.0284312 1.09024e-24) -(10.0861 -0.02872 3.48812e-23) -(10.0877 -0.0290068 1.01868e-22) -(10.0893 -0.0292916 5.03207e-23) -(10.0909 -0.0295742 -6.58347e-23) -(10.0924 -0.0298547 9.58572e-25) -(10.0939 -0.0301331 4.86423e-23) -(10.0954 -0.0304095 2.34506e-23) -(10.0969 -0.0306839 5.52107e-23) -(10.0984 -0.0309565 1.48299e-22) -(10.0998 -0.0312274 1.73568e-22) -(10.1012 -0.0314969 1.08878e-22) -(10.1026 -0.0317653 1.18784e-22) -(10.104 -0.0320327 8.83561e-23) -(10.1053 -0.0322995 1.30362e-22) -(10.1067 -0.0325662 1.57305e-22) -(10.1079 -0.0328331 9.08423e-23) -(10.1092 -0.0331007 3.42696e-23) -(10.1105 -0.0333695 -1.10598e-23) -(10.1117 -0.03364 3.2051e-23) -(10.1129 -0.0339128 1.79548e-23) -(10.114 -0.0341886 -3.73612e-23) -(10.1152 -0.034468 -1.19295e-22) -(10.1163 -0.0347517 -9.66489e-23) -(10.1173 -0.0350405 8.26884e-24) -(10.1184 -0.0353352 4.8288e-23) -(10.1194 -0.0356365 -2.63807e-25) -(10.1203 -0.0359455 4.51986e-24) -(10.1213 -0.0362628 8.59072e-24) -(10.1222 -0.0365896 -3.03893e-23) -(10.123 -0.0369267 -6.28451e-23) -(10.1238 -0.0372752 -1.1228e-23) -(10.1246 -0.0376361 -1.22724e-23) -(10.1253 -0.0380105 -5.09295e-23) -(10.1259 -0.0383994 -8.64822e-23) -(10.1266 -0.038804 -3.41837e-23) -(10.1271 -0.0392254 -6.70782e-23) -(10.1276 -0.0396648 -1.39469e-22) -(10.128 -0.0401234 -1.15522e-22) -(10.1284 -0.0406024 1.54384e-23) -(10.1287 -0.0411031 7.35464e-23) -(10.1289 -0.0416266 -4.07826e-23) -(10.129 -0.0421743 4.7869e-23) -(10.1291 -0.0427474 5.53053e-23) -(10.1291 -0.0433472 -5.42782e-23) -(10.1289 -0.043975 3.0553e-23) -(10.1287 -0.0446321 1.57062e-22) -(10.1284 -0.0453198 -6.18753e-24) -(10.1279 -0.0460394 -9.9469e-23) -(10.1274 -0.0467923 -1.75016e-23) -(10.1267 -0.0475796 -2.0448e-23) -(10.1259 -0.0484027 -1.59888e-23) -(10.1249 -0.0492628 5.23296e-23) -(10.1238 -0.0501613 1.42699e-22) -(10.1225 -0.0510992 1.26583e-22) -(10.1211 -0.0520778 2.2885e-22) -(10.1195 -0.0530983 1.76925e-22) -(10.1177 -0.0541617 1.20354e-22) -(10.1158 -0.0552692 1.04382e-22) -(10.1136 -0.0564217 9.66442e-23) -(10.1112 -0.0576202 1.41775e-22) -(10.1086 -0.0588655 9.11787e-23) -(10.1058 -0.0601586 -1.64152e-22) -(10.1027 -0.0615 -8.06598e-24) -(10.0994 -0.0628905 8.15956e-24) -(10.0958 -0.0643305 1.21893e-23) -(10.0919 -0.0658204 -9.83902e-23) -(10.0878 -0.0673606 -2.67206e-22) -(10.0833 -0.0689511 -1.59626e-22) -(10.0785 -0.0705919 -2.17679e-22) -(10.0734 -0.0722829 -1.26176e-22) -(10.0679 -0.0740237 -2.09632e-22) -(10.0621 -0.0758138 -3.56315e-22) -(10.0559 -0.0776525 -2.90529e-22) -(10.0493 -0.0795389 -3.99074e-22) -(10.0424 -0.0814719 -1.09089e-22) -(10.035 -0.0834501 9.62281e-23) -(10.0271 -0.085472 -1.03493e-23) -(10.0189 -0.0875358 -5.35532e-24) -(10.0101 -0.0896395 4.62546e-23) -(10.0009 -0.0917809 1.22465e-22) -(9.99122 -0.0939575 2.3704e-23) -(9.98102 -0.0961668 -3.34454e-23) -(9.9703 -0.0984057 1.37792e-22) -(9.95904 -0.100671 2.60568e-22) -(9.94724 -0.10296 8.66614e-23) -(9.93488 -0.105269 1.90793e-22) -(9.92194 -0.107594 2.73664e-22) -(9.90842 -0.109931 2.19941e-22) -(9.8943 -0.112277 2.17477e-22) -(9.87956 -0.114627 2.54825e-22) -(9.86421 -0.116977 3.53866e-22) -(9.84822 -0.119323 3.46099e-22) -(9.83159 -0.12166 2.55916e-22) -(9.8143 -0.123984 2.29965e-22) -(9.79634 -0.12629 2.10869e-22) -(9.77772 -0.128573 1.93888e-22) -(9.75841 -0.13083 1.69482e-22) -(9.73841 -0.133054 1.61136e-22) -(9.71771 -0.135241 2.19674e-22) -(9.69631 -0.137388 3.16484e-22) -(9.6742 -0.139488 2.39619e-22) -(9.65137 -0.141537 1.60561e-22) -(9.62781 -0.143531 7.3873e-23) -(9.60353 -0.145466 -7.56939e-23) -(9.57852 -0.147336 -6.84075e-23) -(9.55278 -0.149137 1.19314e-23) -(9.52629 -0.150865 7.32567e-23) -(9.49906 -0.152516 6.19891e-23) -(9.47108 -0.154086 1.75363e-23) -(9.44236 -0.155571 1.71197e-22) -(9.41288 -0.156967 1.20711e-22) -(9.38266 -0.15827 9.18835e-23) -(9.35167 -0.159477 3.82963e-23) -(9.31993 -0.160585 -2.35078e-23) -(9.28743 -0.161591 -8.74222e-24) -(9.25416 -0.162491 8.06761e-24) -(9.22013 -0.163284 9.6095e-23) -(9.18533 -0.163966 8.19703e-23) -(9.14977 -0.164537 -9.0961e-23) -(9.11342 -0.164993 -8.52478e-23) -(9.07631 -0.165333 1.77739e-22) -(9.03841 -0.165557 1.59726e-22) -(8.99973 -0.165663 9.19471e-23) -(8.96025 -0.16565 1.12325e-22) -(8.91999 -0.165519 2.18902e-24) -(8.87893 -0.165269 -1.59128e-23) -(8.83706 -0.164902 1.5858e-23) -(8.79438 -0.164418 -1.36485e-22) -(8.75089 -0.163819 -1.52389e-22) -(8.70657 -0.163107 -1.41877e-22) -(8.66142 -0.162284 -1.63213e-22) -(8.61543 -0.161355 -2.44067e-23) -(8.5686 -0.160323 1.2789e-22) -(8.52092 -0.159191 2.81151e-22) -(8.47238 -0.157967 1.98569e-22) -(8.42296 -0.156656 1.08571e-22) -(8.37268 -0.155264 -1.89567e-22) -(8.32151 -0.153799 -2.00305e-22) -(8.26945 -0.152271 -2.61003e-22) -(8.21649 -0.150689 6.19379e-22) -(8.16263 -0.149064 1.80019e-22) -(8.10785 -0.147407 9.77111e-22) -(8.05214 -0.145732 7.48494e-22) -(7.99551 -0.144055 4.70662e-22) -(7.93792 -0.14239 6.4102e-22) -(7.87938 -0.140757 -5.81536e-24) -(7.81987 -0.139174 -2.30934e-22) -(7.75936 -0.137664 3.86494e-22) -(7.69782 -0.136252 1.69966e-21) -(7.63524 -0.134964 2.83372e-21) -(7.57157 -0.133832 1.22994e-21) -(7.50676 -0.132891 7.25176e-22) -(7.44074 -0.132181 -3.49424e-22) -(7.37344 -0.131747 -1.13864e-21) -(7.30477 -0.131645 -1.79938e-21) -(7.2346 -0.131939 -1.44417e-21) -(7.16277 -0.132709 -2.02354e-22) -(7.0891 -0.134054 8.32869e-22) -(7.01334 -0.136099 5.39634e-22) -(6.9352 -0.139012 3.05159e-22) -(6.8543 -0.143022 5.89138e-23) -(6.77016 -0.148455 -4.74561e-23) -(6.68218 -0.155805 -8.60607e-23) -(6.5896 -0.165837 -1.26277e-22) -(6.49175 -0.179928 8.29755e-22) -(6.38688 -0.19997 1.66729e-21) -(6.28137 -0.231778 1.39e-21) -(6.1442 -0.272375 1.32479e-21) -(10.0681 -0.0288504 -4.70478e-23) -(10.0699 -0.0290902 -8.7502e-24) -(10.0715 -0.0293368 -7.03193e-24) -(10.0732 -0.0295847 -1.08112e-23) -(10.0748 -0.0298313 -4.12128e-23) -(10.0764 -0.0300755 -5.49092e-23) -(10.0781 -0.0303164 -1.86563e-23) -(10.0797 -0.0305539 -1.70854e-23) -(10.0813 -0.0307877 -1.12312e-23) -(10.0829 -0.031018 2.2041e-23) -(10.0844 -0.0312449 4.17605e-23) -(10.086 -0.0314687 9.3334e-24) -(10.0875 -0.0316896 1.06085e-23) -(10.089 -0.031908 1.37138e-23) -(10.0905 -0.032124 1.20623e-23) -(10.092 -0.0323379 -1.44816e-23) -(10.0934 -0.0325498 2.33566e-23) -(10.0949 -0.0327599 9.11784e-23) -(10.0963 -0.0329684 2.24865e-23) -(10.0976 -0.0331754 -9.46592e-24) -(10.099 -0.0333812 -2.8213e-23) -(10.1003 -0.0335859 2.33426e-24) -(10.1015 -0.0337897 -2.42527e-23) -(10.1028 -0.0339928 -4.37681e-23) -(10.104 -0.0341955 -1.47804e-23) -(10.1052 -0.034398 -1.07531e-23) -(10.1064 -0.0346007 -2.11284e-24) -(10.1075 -0.0348039 2.77183e-23) -(10.1086 -0.035008 7.51242e-23) -(10.1096 -0.0352133 4.15482e-23) -(10.1107 -0.0354204 -2.99806e-23) -(10.1117 -0.0356296 -1.35669e-23) -(10.1126 -0.0358415 6.99246e-23) -(10.1135 -0.0360566 1.38738e-22) -(10.1144 -0.0362756 1.22145e-22) -(10.1153 -0.036499 4.18651e-23) -(10.116 -0.0367275 -6.84332e-23) -(10.1168 -0.0369618 4.02057e-23) -(10.1175 -0.0372025 1.14231e-22) -(10.1182 -0.0374505 6.32637e-23) -(10.1188 -0.0377065 1.03127e-22) -(10.1193 -0.0379713 1.3935e-22) -(10.1199 -0.0382457 8.57058e-23) -(10.1203 -0.0385307 1.20347e-22) -(10.1207 -0.0388271 1.5248e-22) -(10.121 -0.0391357 8.74288e-23) -(10.1213 -0.0394577 7.88301e-23) -(10.1215 -0.0397938 1.09865e-22) -(10.1217 -0.0401452 1.39248e-22) -(10.1217 -0.0405128 7.29496e-23) -(10.1217 -0.0408977 5.97481e-23) -(10.1216 -0.0413008 9.03255e-23) -(10.1215 -0.0417233 1.60456e-22) -(10.1212 -0.0421662 1.09303e-22) -(10.1208 -0.0426305 4.37116e-23) -(10.1204 -0.0431175 1.93283e-22) -(10.1198 -0.0436281 1.89039e-22) -(10.1191 -0.0441635 3.99488e-23) -(10.1183 -0.0447248 6.54099e-23) -(10.1174 -0.0453131 4.91283e-23) -(10.1164 -0.0459295 3.79246e-23) -(10.1152 -0.0465751 2.93759e-23) -(10.1139 -0.047251 5.28023e-23) -(10.1124 -0.0479582 9.20298e-23) -(10.1108 -0.0486979 7.87713e-23) -(10.109 -0.0494711 1.13771e-22) -(10.107 -0.0502788 3.01918e-23) -(10.1049 -0.051122 -2.09226e-24) -(10.1025 -0.0520016 7.36197e-23) -(10.1 -0.0529186 5.66612e-23) -(10.0972 -0.0538738 9.78928e-23) -(10.0942 -0.0548681 5.25251e-23) -(10.091 -0.0559022 1.04227e-22) -(10.0875 -0.0569768 2.16027e-22) -(10.0838 -0.0580925 1.72382e-22) -(10.0798 -0.0592499 1.13141e-22) -(10.0755 -0.0604494 1.21603e-22) -(10.0709 -0.0616914 2.04192e-22) -(10.066 -0.0629761 2.62966e-22) -(10.0608 -0.0643036 2.08323e-22) -(10.0552 -0.065674 1.33371e-22) -(10.0493 -0.0670871 9.95388e-23) -(10.043 -0.0685426 1.20427e-22) -(10.0364 -0.0700402 1.85638e-22) -(10.0293 -0.0715792 1.37215e-22) -(10.0219 -0.0731588 2.42857e-22) -(10.014 -0.0747782 1.96365e-22) -(10.0056 -0.0764361 9.80363e-24) -(9.99682 -0.0781314 4.35042e-23) -(9.98755 -0.0798625 -2.25923e-23) -(9.97778 -0.0816276 -1.80418e-22) -(9.9675 -0.0834249 -2.57983e-22) -(9.9567 -0.0852523 -2.74433e-22) -(9.94535 -0.0871075 -1.96204e-22) -(9.93345 -0.0889881 -2.0251e-22) -(9.92096 -0.0908914 -2.12282e-22) -(9.90789 -0.0928146 -3.64602e-23) -(9.89421 -0.0947547 -1.68931e-23) -(9.8799 -0.0967086 9.968e-23) -(9.86495 -0.0986728 6.24069e-23) -(9.84935 -0.100644 6.70463e-23) -(9.83307 -0.102619 6.70898e-23) -(9.81611 -0.104593 3.971e-23) -(9.79845 -0.106563 -6.50585e-23) -(9.78007 -0.108525 -8.3614e-23) -(9.76096 -0.110475 -2.61645e-23) -(9.74111 -0.112408 1.86365e-23) -(9.72049 -0.114322 8.75674e-23) -(9.69911 -0.11621 4.27072e-23) -(9.67694 -0.11807 1.07465e-23) -(9.65398 -0.119897 -4.07331e-23) -(9.63021 -0.121687 -2.00163e-23) -(9.60562 -0.123435 -7.06975e-23) -(9.58019 -0.125138 -2.80692e-23) -(9.55392 -0.12679 4.23134e-24) -(9.5268 -0.128388 4.69633e-23) -(9.49881 -0.129928 -1.57975e-23) -(9.46995 -0.131405 -4.99052e-23) -(9.44021 -0.132815 -6.09872e-23) -(9.40957 -0.134155 -1.333e-22) -(9.37802 -0.135421 -1.36631e-22) -(9.34557 -0.136608 -1.2883e-22) -(9.31219 -0.137714 -7.42358e-23) -(9.27788 -0.138734 -1.36107e-22) -(9.24263 -0.139666 -1.1688e-22) -(9.20644 -0.140505 -3.41328e-23) -(9.16929 -0.14125 1.18918e-23) -(9.13119 -0.141897 -4.84888e-24) -(9.09212 -0.142443 -4.29632e-23) -(9.05207 -0.142887 -6.91476e-23) -(9.01105 -0.143225 2.09888e-23) -(8.96904 -0.143457 2.69159e-23) -(8.92605 -0.14358 -8.50981e-23) -(8.88206 -0.143594 -9.43453e-23) -(8.83709 -0.143497 -6.22961e-23) -(8.79111 -0.143288 -7.08128e-23) -(8.74415 -0.142969 7.63297e-23) -(8.69619 -0.142538 1.46117e-22) -(8.64724 -0.141998 1.51699e-23) -(8.5973 -0.141348 -4.07583e-24) -(8.54638 -0.140591 4.65229e-24) -(8.49448 -0.139729 6.96731e-24) -(8.44162 -0.138765 8.31862e-23) -(8.38781 -0.137702 -2.89887e-22) -(8.33305 -0.136545 -5.21321e-22) -(8.27737 -0.135299 -4.41703e-22) -(8.22077 -0.133969 -3.47495e-22) -(8.16329 -0.132562 -3.07418e-22) -(8.10493 -0.131085 6.24366e-24) -(8.04571 -0.129545 2.56546e-22) -(7.98567 -0.127951 1.86057e-22) -(7.92483 -0.126314 -2.66355e-22) -(7.86319 -0.124644 8.28911e-23) -(7.8008 -0.122953 -2.56957e-22) -(7.73767 -0.121253 -2.21655e-22) -(7.67382 -0.119559 -1.45839e-22) -(7.60927 -0.117884 -4.87179e-22) -(7.54404 -0.116247 -8.76621e-22) -(7.47812 -0.114664 -8.41978e-22) -(7.41153 -0.113155 -3.02029e-22) -(7.34426 -0.111742 -1.0377e-21) -(7.27629 -0.110449 -2.08119e-21) -(7.2076 -0.109302 -3.86242e-22) -(7.13814 -0.108331 -6.66277e-22) -(7.06787 -0.10757 5.49687e-22) -(6.9967 -0.107057 1.50609e-21) -(6.92454 -0.10684 2.22814e-21) -(6.85125 -0.106971 1.73565e-21) -(6.77667 -0.107519 7.63152e-22) -(6.70059 -0.108567 2.15896e-22) -(6.62275 -0.110221 3.75545e-22) -(6.5428 -0.112624 4.74939e-22) -(6.46032 -0.115975 -6.20988e-22) -(6.37476 -0.120561 -1.71124e-22) -(6.28542 -0.126826 1.00622e-22) -(6.19134 -0.135477 2.47863e-22) -(6.0916 -0.147891 -1.17327e-21) -(5.98348 -0.16598 -3.90317e-22) -(5.87419 -0.196909 1.24984e-21) -(5.72455 -0.238336 7.28826e-22) -(10.0694 -0.0313512 3.25952e-23) -(10.071 -0.031572 -1.74458e-23) -(10.0726 -0.0318054 -1.76186e-23) -(10.0741 -0.0320388 -3.84316e-23) -(10.0756 -0.0322677 7.15989e-24) -(10.0771 -0.0324911 6.00748e-23) -(10.0786 -0.0327085 3.20705e-23) -(10.0801 -0.0329193 1.3671e-23) -(10.0815 -0.0331236 1.27718e-23) -(10.083 -0.0333215 1.32426e-23) -(10.0844 -0.0335133 1.36251e-23) -(10.0858 -0.0336995 1.15828e-23) -(10.0871 -0.0338806 8.17118e-24) -(10.0884 -0.0340568 4.12707e-24) -(10.0897 -0.0342288 4.7593e-24) -(10.091 -0.0343967 2.56883e-23) -(10.0922 -0.0345609 -1.48322e-23) -(10.0934 -0.0347219 -9.04608e-23) -(10.0945 -0.0348798 -5.24507e-23) -(10.0956 -0.035035 -7.40207e-23) -(10.0967 -0.0351879 -6.82382e-23) -(10.0977 -0.0353386 -8.58401e-23) -(10.0987 -0.0354875 -5.2551e-23) -(10.0997 -0.0356349 -7.67047e-23) -(10.1006 -0.0357811 -1.16252e-22) -(10.1015 -0.0359266 -7.62986e-23) -(10.1023 -0.0360715 -3.91906e-23) -(10.1031 -0.0362163 -7.91888e-23) -(10.1039 -0.0363614 1.23435e-23) -(10.1046 -0.0365071 9.4082e-23) -(10.1053 -0.0366539 1.09737e-22) -(10.1059 -0.0368023 1.4594e-22) -(10.1064 -0.0369528 1.08935e-22) -(10.1069 -0.0371057 1.02553e-22) -(10.1074 -0.0372617 1.25136e-22) -(10.1078 -0.0374213 1.34601e-22) -(10.1082 -0.0375851 1.89665e-22) -(10.1085 -0.0377536 1.44779e-22) -(10.1087 -0.0379275 8.31024e-23) -(10.1089 -0.0381074 3.97828e-23) -(10.109 -0.038294 1.16175e-23) -(10.1091 -0.038488 -2.30849e-23) -(10.1091 -0.0386901 4.71801e-23) -(10.109 -0.038901 -2.21288e-23) -(10.1089 -0.0391214 -7.35001e-23) -(10.1086 -0.0393522 -2.43844e-23) -(10.1084 -0.0395941 -6.51018e-24) -(10.108 -0.039848 -4.59001e-24) -(10.1075 -0.0401146 -6.14197e-23) -(10.107 -0.0403948 -6.53327e-23) -(10.1064 -0.0406896 -1.54695e-22) -(10.1056 -0.0409996 -2.11498e-22) -(10.1048 -0.0413259 -1.65491e-22) -(10.1039 -0.0416692 -2.06122e-22) -(10.1028 -0.0420306 -1.54897e-22) -(10.1017 -0.0424109 -2.06837e-22) -(10.1004 -0.042811 -2.62114e-22) -(10.099 -0.0432319 -1.03861e-22) -(10.0975 -0.0436744 -9.60346e-23) -(10.0958 -0.0441395 -3.2353e-23) -(10.094 -0.0446282 -7.22651e-23) -(10.092 -0.0451412 -7.91257e-23) -(10.0899 -0.0456796 -1.47581e-22) -(10.0876 -0.0462442 -2.59469e-22) -(10.0851 -0.0468359 -2.01301e-22) -(10.0824 -0.0474556 -2.69764e-22) -(10.0796 -0.0481041 -2.71098e-22) -(10.0765 -0.0487822 -2.70325e-22) -(10.0732 -0.0494908 -3.52909e-22) -(10.0697 -0.0502305 -2.45417e-22) -(10.066 -0.0510021 -2.13474e-22) -(10.062 -0.0518062 -2.13313e-22) -(10.0577 -0.0526436 -2.17693e-22) -(10.0532 -0.0535147 -1.25986e-22) -(10.0484 -0.0544201 -2.04263e-22) -(10.0432 -0.0553601 -1.56924e-22) -(10.0378 -0.0563353 -1.66416e-22) -(10.032 -0.0573457 -2.06501e-22) -(10.0259 -0.0583917 -1.71892e-22) -(10.0195 -0.0594732 -1.85561e-22) -(10.0126 -0.0605904 -1.01987e-22) -(10.0054 -0.0617429 -1.7545e-22) -(9.99773 -0.0629307 -1.28911e-22) -(9.98966 -0.0641532 -1.28302e-22) -(9.98115 -0.06541 -1.67843e-22) -(9.97218 -0.0667004 -1.55059e-22) -(9.96273 -0.0680235 -2.44968e-22) -(9.95278 -0.0693784 -1.70804e-22) -(9.94231 -0.070764 -1.46699e-22) -(9.93131 -0.0721788 -1.29491e-22) -(9.91976 -0.0736214 -1.1909e-22) -(9.90763 -0.0750902 -5.50809e-23) -(9.89491 -0.0765833 1.1225e-22) -(9.88157 -0.0780987 3.36636e-23) -(9.8676 -0.0796343 2.39168e-23) -(9.85298 -0.0811877 1.62111e-23) -(9.83768 -0.0827566 2.21364e-23) -(9.82169 -0.0843381 2.16789e-23) -(9.80498 -0.0859297 2.05272e-23) -(9.78754 -0.0875282 2.17981e-23) -(9.76935 -0.0891306 -5.0896e-24) -(9.75038 -0.0907339 -9.02375e-23) -(9.73062 -0.0923346 -3.71131e-23) -(9.71004 -0.0939294 -1.78501e-24) -(9.68863 -0.0955148 6.25998e-23) -(9.66636 -0.0970871 -6.11857e-23) -(9.64323 -0.0986428 -7.74232e-23) -(9.6192 -0.100178 -2.27194e-22) -(9.59426 -0.101689 -1.33409e-22) -(9.5684 -0.103172 -6.05184e-23) -(9.5416 -0.104623 6.33497e-23) -(9.51383 -0.106039 -9.67455e-23) -(9.48508 -0.107414 -1.29908e-22) -(9.45534 -0.108746 -9.2814e-23) -(9.4246 -0.110031 -5.9068e-23) -(9.39282 -0.111265 2.58223e-23) -(9.36001 -0.112443 6.76509e-23) -(9.32615 -0.113563 7.48838e-23) -(9.29122 -0.11462 3.4828e-23) -(9.25522 -0.115612 5.84425e-23) -(9.21812 -0.116534 8.10074e-23) -(9.17994 -0.117382 -1.14421e-23) -(9.14064 -0.118155 2.54201e-23) -(9.10024 -0.118849 4.7687e-23) -(9.05872 -0.11946 1.97913e-23) -(9.01608 -0.119986 1.16532e-23) -(8.97231 -0.120425 6.55832e-24) -(8.92742 -0.120774 -1.36383e-23) -(8.8814 -0.121031 -1.61269e-23) -(8.83426 -0.121194 -1.75395e-23) -(8.78601 -0.121261 -1.47713e-23) -(8.73664 -0.121233 -9.42541e-24) -(8.68618 -0.121106 -4.86002e-23) -(8.63463 -0.120882 3.61922e-23) -(8.58201 -0.12056 1.16264e-22) -(8.52834 -0.120139 9.2438e-23) -(8.47363 -0.119621 1.24197e-22) -(8.4179 -0.119007 1.4193e-22) -(8.36119 -0.118298 3.80571e-22) -(8.30353 -0.117496 2.54753e-22) -(8.24493 -0.116604 1.78204e-22) -(8.18544 -0.115625 1.09389e-22) -(8.12509 -0.114562 2.60831e-22) -(8.06391 -0.113419 4.73491e-22) -(8.00195 -0.112202 1.10697e-22) -(7.93925 -0.110914 3.85766e-23) -(7.87585 -0.109562 1.81653e-23) -(7.81179 -0.108153 -1.95862e-23) -(7.74711 -0.106693 2.95678e-23) -(7.68187 -0.10519 -6.16343e-22) -(7.6161 -0.103652 -5.09537e-22) -(7.54984 -0.102088 -7.46082e-22) -(7.48313 -0.100507 -5.58785e-22) -(7.41601 -0.0989208 -4.49644e-22) -(7.34852 -0.0973391 -3.58929e-22) -(7.28068 -0.0957742 -2.78992e-22) -(7.21252 -0.0942388 -2.44199e-22) -(7.14405 -0.0927467 -2.36577e-22) -(7.07528 -0.0913126 -6.27296e-22) -(7.00622 -0.0899526 -1.43561e-21) -(6.93686 -0.0886843 -7.21342e-22) -(6.86717 -0.0875273 2.71681e-22) -(6.79713 -0.0865029 6.07205e-22) -(6.72667 -0.0856353 3.88203e-22) -(6.65574 -0.0849519 3.7756e-22) -(6.58423 -0.0844845 5.04747e-22) -(6.51203 -0.0842702 6.81601e-22) -(6.43899 -0.0843537 1.28042e-21) -(6.36492 -0.0847894 8.8464e-22) -(6.28958 -0.0856458 1.38661e-21) -(6.21268 -0.0870115 1.02764e-21) -(6.13385 -0.0890054 7.25613e-22) -(6.05261 -0.0917939 2.11427e-21) -(5.96834 -0.0956205 1.52659e-21) -(5.88027 -0.100872 1.07905e-21) -(5.78722 -0.108172 7.59722e-22) -(5.68811 -0.118829 2.58654e-22) -(5.57909 -0.134658 7.51796e-22) -(5.46823 -0.163854 -1.30127e-21) -(5.30629 -0.205307 -8.29728e-22) -(10.0682 -0.034335 2.35718e-23) -(10.0695 -0.0345211 1.9113e-23) -(10.0708 -0.0347112 8.8266e-24) -(10.072 -0.0348828 5.47974e-23) -(10.0733 -0.0350352 4.41434e-23) -(10.0745 -0.0351729 -5.3756e-24) -(10.0757 -0.0352988 -1.26817e-23) -(10.0768 -0.0354145 3.46437e-23) -(10.078 -0.0355216 1.57677e-23) -(10.0791 -0.0356217 1.283e-23) -(10.0801 -0.0357163 -3.86233e-24) -(10.0811 -0.0358065 -1.86925e-23) -(10.0821 -0.0358932 -4.7805e-23) -(10.083 -0.0359769 -8.45546e-23) -(10.0839 -0.0360582 -3.28116e-23) -(10.0847 -0.0361376 -5.56285e-23) -(10.0855 -0.0362153 -4.91185e-23) -(10.0862 -0.0362915 1.12679e-23) -(10.0869 -0.0363665 9.37263e-24) -(10.0875 -0.0364404 3.62867e-23) -(10.0881 -0.0365134 1.54005e-23) -(10.0886 -0.0365857 2.39048e-23) -(10.089 -0.0366575 9.44331e-24) -(10.0894 -0.036729 5.65266e-23) -(10.0898 -0.0368003 1.03045e-22) -(10.0901 -0.0368716 3.7616e-23) -(10.0903 -0.0369433 5.31247e-23) -(10.0904 -0.0370156 4.47993e-23) -(10.0905 -0.0370888 -6.47578e-23) -(10.0906 -0.0371631 -9.06214e-23) -(10.0905 -0.037239 -7.37995e-23) -(10.0905 -0.0373168 -1.40908e-22) -(10.0903 -0.0373968 -1.01759e-22) -(10.0901 -0.0374794 -6.09173e-23) -(10.0898 -0.0375651 -7.03788e-23) -(10.0894 -0.0376544 -1.11517e-22) -(10.089 -0.0377476 -1.21257e-22) -(10.0884 -0.0378452 -1.08461e-22) -(10.0879 -0.0379478 -7.19939e-23) -(10.0872 -0.0380559 -8.53498e-23) -(10.0864 -0.03817 -1.08811e-22) -(10.0856 -0.0382906 -9.92509e-23) -(10.0847 -0.0384184 -1.18593e-22) -(10.0837 -0.0385538 -6.82915e-23) -(10.0826 -0.0386975 -5.35495e-23) -(10.0814 -0.0388502 -1.23912e-22) -(10.0801 -0.0390124 -1.62335e-22) -(10.0788 -0.0391847 -2.28538e-22) -(10.0773 -0.0393679 -2.34187e-22) -(10.0757 -0.0395625 -1.70229e-22) -(10.074 -0.0397693 -1.36328e-22) -(10.0721 -0.0399889 -9.42178e-23) -(10.0702 -0.0402221 -9.26601e-23) -(10.0681 -0.0404694 -7.9506e-23) -(10.0659 -0.0407316 -1.45742e-22) -(10.0635 -0.0410095 -1.30143e-22) -(10.061 -0.0413036 -7.55431e-23) -(10.0584 -0.0416148 -1.79267e-22) -(10.0556 -0.0419437 -1.69776e-22) -(10.0526 -0.042291 -2.28462e-22) -(10.0494 -0.0426576 -1.93183e-22) -(10.0461 -0.043044 -2.25256e-22) -(10.0425 -0.0434509 -1.9881e-22) -(10.0388 -0.0438791 -1.02266e-22) -(10.0348 -0.0443293 -1.12784e-22) -(10.0306 -0.044802 -5.1452e-23) -(10.0262 -0.045298 2.76057e-24) -(10.0215 -0.0458179 1.39935e-23) -(10.0166 -0.0463622 1.3475e-22) -(10.0114 -0.0469316 2.73479e-23) -(10.006 -0.0475266 -6.39759e-23) -(10.0002 -0.0481477 -2.25425e-23) -(9.99409 -0.0487953 -8.41193e-24) -(9.98768 -0.0494699 -2.06387e-22) -(9.98092 -0.0501719 -2.15066e-22) -(9.97381 -0.0509014 -1.6743e-22) -(9.96633 -0.0516589 -1.48243e-22) -(9.95846 -0.0524443 -1.36315e-22) -(9.95018 -0.0532579 -1.25565e-22) -(9.94148 -0.0540996 -1.38996e-22) -(9.93233 -0.0549694 -1.78511e-22) -(9.92272 -0.055867 -7.21094e-23) -(9.91263 -0.0567921 -8.9019e-23) -(9.90204 -0.0577444 -6.55235e-23) -(9.89092 -0.0587234 5.77784e-24) -(9.87927 -0.0597283 -4.85534e-24) -(9.86705 -0.0607585 4.69329e-23) -(9.85424 -0.061813 9.00736e-24) -(9.84082 -0.0628908 -5.03349e-24) -(9.82678 -0.0639906 1.64781e-25) -(9.81208 -0.0651111 6.81033e-23) -(9.7967 -0.0662508 7.41579e-23) -(9.78063 -0.0674081 -1.16124e-23) -(9.76383 -0.0685812 7.17295e-23) -(9.74628 -0.0697683 1.0956e-22) -(9.72797 -0.0709671 1.37992e-22) -(9.70886 -0.0721757 1.41558e-22) -(9.68893 -0.0733916 5.54087e-23) -(9.66817 -0.0746124 -8.43322e-23) -(9.64653 -0.0758354 1.10695e-23) -(9.62401 -0.0770581 7.40395e-23) -(9.60059 -0.0782776 1.96725e-22) -(9.57622 -0.0794911 1.02729e-22) -(9.55091 -0.0806956 6.68821e-23) -(9.52461 -0.0818881 6.94747e-23) -(9.49732 -0.0830653 1.38697e-22) -(9.46902 -0.0842242 5.05045e-23) -(9.43967 -0.0853616 9.4714e-23) -(9.40927 -0.0864742 6.14629e-23) -(9.3778 -0.0875587 1.01148e-23) -(9.34523 -0.0886118 -1.04888e-22) -(9.31156 -0.0896304 4.61006e-24) -(9.27677 -0.0906111 4.20123e-23) -(9.24085 -0.0915507 -6.33892e-23) -(9.20378 -0.092446 -5.49533e-23) -(9.16556 -0.0932939 -1.05243e-22) -(9.12618 -0.0940913 -6.648e-23) -(9.08562 -0.0948353 -5.08366e-23) -(9.0439 -0.0955229 -4.38713e-23) -(9.00099 -0.0961514 -5.5566e-23) -(8.95691 -0.096718 -6.16464e-23) -(8.91165 -0.0972204 -4.15781e-24) -(8.86521 -0.097656 -2.50777e-23) -(8.81761 -0.0980228 -2.03635e-23) -(8.76886 -0.0983186 -1.70597e-23) -(8.71895 -0.0985416 -1.92919e-23) -(8.66792 -0.0986903 -3.53048e-23) -(8.61576 -0.0987632 -2.2805e-23) -(8.56251 -0.0987592 -2.09037e-23) -(8.50818 -0.0986774 -3.09559e-24) -(8.4528 -0.0985172 5.19679e-24) -(8.39639 -0.0982782 1.7662e-26) -(8.33899 -0.0979604 -2.01473e-23) -(8.28062 -0.097564 4.95161e-23) -(8.22133 -0.0970895 -1.04672e-24) -(8.16115 -0.0965378 -8.67191e-24) -(8.10011 -0.0959103 -7.14699e-23) -(8.03827 -0.0952084 -1.46459e-22) -(7.97566 -0.0944341 -2.17615e-22) -(7.91233 -0.0935896 -1.68006e-22) -(7.84832 -0.0926777 -1.15155e-22) -(7.7837 -0.0917015 -4.81236e-23) -(7.7185 -0.0906642 -2.82578e-22) -(7.65277 -0.0895698 -2.41663e-22) -(7.58657 -0.0884224 -2.43339e-23) -(7.51995 -0.0872268 1.49736e-22) -(7.45296 -0.0859878 1.30474e-22) -(7.38564 -0.0847111 -6.84356e-23) -(7.31805 -0.0834025 -9.07424e-23) -(7.25023 -0.0820682 2.50148e-22) -(7.18223 -0.0807152 -5.13279e-23) -(7.11409 -0.0793507 3.50407e-22) -(7.04584 -0.0779824 2.82961e-22) -(6.97752 -0.0766185 -1.27398e-23) -(6.90916 -0.075268 1.19568e-23) -(6.84078 -0.0739403 3.1175e-23) -(6.7724 -0.0726453 8.18751e-23) -(6.70402 -0.071394 6.04738e-23) -(6.63565 -0.0701982 5.43927e-22) -(6.56728 -0.0690703 9.31052e-22) -(6.49887 -0.0680241 6.24344e-23) -(6.43041 -0.0670751 -5.12993e-22) -(6.36184 -0.06624 -9.63244e-22) -(6.29309 -0.0655377 8.10839e-23) -(6.22408 -0.0649898 2.10744e-22) -(6.15469 -0.0646213 2.46395e-22) -(6.0848 -0.0644616 3.12896e-22) -(6.01423 -0.0645459 -3.93956e-22) -(5.94276 -0.0649174 -3.85624e-22) -(5.87015 -0.0656308 4.42058e-22) -(5.79606 -0.0667572 2.68312e-22) -(5.7201 -0.0683924 2.28744e-22) -(5.64175 -0.0706714 1.22483e-21) -(5.56035 -0.0737938 9.39753e-22) -(5.47503 -0.0780825 6.73829e-22) -(5.38449 -0.0840621 3.8647e-22) -(5.28744 -0.0929092 2.11148e-22) -(5.17895 -0.106251 -8.05318e-22) -(5.06794 -0.132729 -8.7825e-22) -(4.89269 -0.173298 -7.50353e-22) -(10.0611 -0.0345789 5.03175e-24) -(10.0619 -0.0348497 3.8695e-23) -(10.0626 -0.0351259 6.46165e-23) -(10.0633 -0.03536 2.86406e-23) -(10.064 -0.0355571 2.74363e-23) -(10.0646 -0.0357286 2.32019e-23) -(10.0651 -0.0358786 5.01936e-24) -(10.0656 -0.0360086 -1.00208e-23) -(10.066 -0.0361208 5.27207e-24) -(10.0664 -0.0362178 -7.89958e-24) -(10.0667 -0.0363016 5.56155e-24) -(10.0669 -0.0363742 4.94302e-23) -(10.067 -0.0364369 1.35632e-23) -(10.0671 -0.0364911 8.02898e-24) -(10.0671 -0.0365377 5.51849e-24) -(10.067 -0.0365779 2.08328e-24) -(10.0668 -0.0366124 -5.50528e-25) -(10.0666 -0.036642 1.49344e-24) -(10.0663 -0.0366673 1.46931e-23) -(10.0659 -0.0366889 3.01713e-23) -(10.0654 -0.0367075 1.43288e-24) -(10.0649 -0.0367234 -5.15148e-24) -(10.0642 -0.0367371 9.9196e-24) -(10.0635 -0.0367491 -4.13484e-23) -(10.0627 -0.0367599 -3.53285e-23) -(10.0618 -0.0367698 3.67437e-24) -(10.0608 -0.0367793 -4.28757e-23) -(10.0597 -0.0367887 1.33348e-23) -(10.0585 -0.0367983 3.47566e-23) -(10.0573 -0.0368087 6.10329e-23) -(10.0559 -0.03682 6.67658e-23) -(10.0545 -0.0368328 7.59297e-23) -(10.0529 -0.0368475 3.9383e-23) -(10.0513 -0.0368643 2.96909e-23) -(10.0496 -0.0368836 1.97922e-23) -(10.0477 -0.0369059 -4.60395e-25) -(10.0458 -0.0369316 -7.74969e-24) -(10.0437 -0.0369609 3.31025e-23) -(10.0416 -0.0369944 -1.1863e-23) -(10.0393 -0.0370325 -3.70718e-23) -(10.0369 -0.0370755 1.54974e-23) -(10.0344 -0.0371238 -1.07046e-23) -(10.0318 -0.037178 -1.78311e-23) -(10.0291 -0.0372384 -2.21655e-23) -(10.0262 -0.0373054 -2.59726e-23) -(10.0232 -0.0373796 2.06707e-24) -(10.0201 -0.0374614 8.56009e-23) -(10.0168 -0.0375512 8.40108e-23) -(10.0134 -0.0376495 8.24907e-23) -(10.0098 -0.0377568 6.07179e-23) -(10.0061 -0.0378736 8.44752e-23) -(10.0022 -0.0380004 5.21688e-23) -(9.99817 -0.0381376 1.0993e-23) -(9.99394 -0.0382858 -5.06517e-23) -(9.98954 -0.0384454 3.9807e-23) -(9.98495 -0.038617 -3.13527e-23) -(9.98016 -0.038801 1.54018e-23) -(9.97517 -0.038998 -2.78837e-23) -(9.96996 -0.0392085 -7.91606e-23) -(9.96453 -0.0394331 -6.28329e-23) -(9.95887 -0.0396721 -1.72242e-23) -(9.95296 -0.0399261 1.05864e-23) -(9.94681 -0.0401956 2.57484e-23) -(9.94038 -0.0404811 1.35143e-23) -(9.93368 -0.0407831 3.19157e-23) -(9.9267 -0.0411021 -1.94983e-23) -(9.91941 -0.0414385 3.19599e-23) -(9.9118 -0.0417927 -3.82287e-24) -(9.90387 -0.0421651 -7.10108e-23) -(9.8956 -0.0425563 -8.26265e-25) -(9.88697 -0.0429664 -1.68843e-23) -(9.87797 -0.0433959 -1.82665e-23) -(9.86858 -0.0438451 2.10553e-24) -(9.85878 -0.0443142 9.75863e-23) -(9.84856 -0.0448034 1.52363e-22) -(9.83791 -0.0453129 1.56605e-22) -(9.82679 -0.0458429 1.56938e-22) -(9.8152 -0.0463934 1.16312e-22) -(9.80312 -0.0469644 9.01815e-23) -(9.79052 -0.0475558 6.67321e-23) -(9.77738 -0.0481675 4.40156e-23) -(9.76369 -0.0487992 3.05929e-23) -(9.74942 -0.0494507 1.77235e-23) -(9.73456 -0.0501215 7.91985e-24) -(9.71907 -0.0508112 3.38567e-24) -(9.70294 -0.0515192 -1.67836e-23) -(9.68615 -0.0522448 -9.69463e-23) -(9.66867 -0.0529872 -7.52248e-23) -(9.65048 -0.0537455 -7.40299e-23) -(9.63156 -0.0545186 -8.73839e-23) -(9.61188 -0.0553054 -1.89252e-22) -(9.59142 -0.0561047 -3.08995e-22) -(9.57016 -0.0569152 -2.5896e-22) -(9.54807 -0.0577353 -3.14771e-22) -(9.52513 -0.0585635 -3.51693e-22) -(9.50133 -0.0593981 -3.93813e-22) -(9.47663 -0.0602373 -4.70352e-22) -(9.45101 -0.0610794 -3.82258e-22) -(9.42446 -0.0619222 -3.39974e-22) -(9.39695 -0.0627637 -3.19445e-22) -(9.36846 -0.0636019 -3.6845e-22) -(9.33898 -0.0644345 -3.87484e-22) -(9.30849 -0.0652594 -3.90644e-22) -(9.27696 -0.066074 -3.29829e-22) -(9.24438 -0.0668762 -2.76898e-22) -(9.21074 -0.0676635 -1.58138e-22) -(9.17603 -0.0684334 -1.95713e-23) -(9.14022 -0.0691836 6.12526e-23) -(9.10332 -0.0699115 3.67334e-24) -(9.0653 -0.0706149 -5.30546e-23) -(9.02617 -0.0712911 6.49958e-24) -(8.98591 -0.0719379 3.14141e-23) -(8.94453 -0.0725527 2.07057e-23) -(8.90201 -0.0731334 4.77488e-23) -(8.85837 -0.0736775 3.9552e-23) -(8.81359 -0.074183 6.86706e-23) -(8.76769 -0.0746475 -3.49324e-23) -(8.72066 -0.0750692 2.00241e-24) -(8.67253 -0.0754458 -3.13835e-23) -(8.62329 -0.0757757 -1.13747e-23) -(8.57296 -0.076057 -5.16441e-23) -(8.52156 -0.076288 -3.00749e-23) -(8.46909 -0.0764673 -2.73132e-23) -(8.41559 -0.0765934 -3.73454e-23) -(8.36107 -0.076665 -1.85763e-23) -(8.30556 -0.0766812 -5.01659e-23) -(8.24909 -0.076641 -2.62291e-23) -(8.19167 -0.0765435 -6.85453e-24) -(8.13335 -0.0763884 -1.33606e-23) -(8.07416 -0.0761751 -6.33547e-23) -(8.01413 -0.0759036 -9.56542e-23) -(7.95329 -0.075574 -3.74998e-23) -(7.8917 -0.0751864 3.87925e-24) -(7.82939 -0.0747413 -5.73852e-23) -(7.76641 -0.0742394 -5.31182e-23) -(7.7028 -0.0736817 -1.1698e-22) -(7.6386 -0.0730695 -1.11779e-22) -(7.57386 -0.0724042 -9.9274e-23) -(7.50864 -0.0716874 -1.2522e-22) -(7.44299 -0.0709213 -2.46698e-24) -(7.37694 -0.070108 -7.75099e-25) -(7.31056 -0.0692502 -1.14523e-23) -(7.2439 -0.0683506 -4.43557e-23) -(7.17699 -0.0674124 -8.22983e-23) -(7.10991 -0.0664389 1.05806e-22) -(7.04269 -0.0654339 -9.38036e-23) -(6.97538 -0.0644014 -1.23058e-22) -(6.90803 -0.0633456 8.33231e-23) -(6.84069 -0.0622713 4.71048e-23) -(6.77338 -0.0611833 -1.54307e-22) -(6.70616 -0.0600869 1.28856e-22) -(6.63906 -0.0589878 3.87851e-22) -(6.5721 -0.057892 2.86099e-22) -(6.50532 -0.0568056 4.41883e-22) -(6.43873 -0.0557355 4.98392e-22) -(6.37234 -0.054689 3.43148e-22) -(6.30616 -0.0536735 5.36e-22) -(6.2402 -0.0526973 3.70434e-22) -(6.17442 -0.0517693 3.15851e-22) -(6.10883 -0.050899 6.806e-22) -(6.04337 -0.0500967 4.5071e-22) -(5.97801 -0.049374 1.81347e-22) -(5.91268 -0.0487436 -1.45249e-22) -(5.8473 -0.0482198 9.46393e-23) -(5.78177 -0.0478187 3.0379e-22) -(5.71596 -0.0475594 1.41154e-22) -(5.64972 -0.0474642 9.6285e-23) -(5.58288 -0.0475597 -3.68193e-22) -(5.51519 -0.0478792 -1.15871e-21) -(5.44638 -0.0484645 -1.54745e-21) -(5.37611 -0.0493705 -9.45059e-22) -(5.30395 -0.050671 -2.20551e-22) -(5.22937 -0.0524713 -5.94376e-22) -(5.15165 -0.0549278 -3.13405e-22) -(5.06988 -0.0582968 -2.32363e-22) -(4.98261 -0.0629982 -5.15865e-22) -(4.88848 -0.0700171 -2.37847e-22) -(4.7814 -0.0807496 -4.96761e-22) -(4.67133 -0.103444 -5.99351e-22) -(4.48101 -0.142168 -2.63744e-22) -(10.0389 -0.0374544 -5.05519e-25) -(10.0382 -0.0375622 -1.24893e-23) -(10.0376 -0.0376288 -2.64028e-23) -(10.0369 -0.0376027 -9.25749e-24) -(10.0362 -0.0375289 -6.53012e-24) -(10.0354 -0.0374382 7.42984e-24) -(10.0344 -0.0373381 1.89517e-23) -(10.0334 -0.0372305 -6.48244e-24) -(10.0322 -0.0371182 -5.90163e-24) -(10.0309 -0.0370042 -9.91546e-24) -(10.0295 -0.03689 -4.59983e-24) -(10.028 -0.0367766 -2.61841e-23) -(10.0264 -0.0366643 7.55308e-26) -(10.0246 -0.0365535 2.02338e-23) -(10.0227 -0.0364442 7.88614e-24) -(10.0207 -0.0363364 7.29487e-24) -(10.0186 -0.03623 6.1858e-24) -(10.0163 -0.0361252 5.09139e-24) -(10.014 -0.0360217 -5.78132e-24) -(10.0114 -0.0359196 -3.41489e-23) -(10.0088 -0.0358188 -3.96679e-23) -(10.006 -0.0357195 -3.40384e-23) -(10.0031 -0.0356216 -4.0406e-23) -(10.0001 -0.0355253 -1.6531e-23) -(9.99688 -0.0354305 -5.42536e-23) -(9.99357 -0.0353376 -5.79914e-23) -(9.99012 -0.0352465 -5.26441e-23) -(9.98652 -0.0351575 -7.4931e-23) -(9.98279 -0.0350707 -7.65372e-23) -(9.97891 -0.0349862 -5.61709e-23) -(9.9749 -0.0349044 -4.76157e-23) -(9.97073 -0.0348253 -3.88481e-23) -(9.96642 -0.0347492 -3.31387e-23) -(9.96196 -0.0346762 -2.87068e-23) -(9.95734 -0.0346067 -3.23552e-23) -(9.95258 -0.0345407 -4.24188e-23) -(9.94765 -0.0344786 -7.38133e-24) -(9.94257 -0.0344205 -1.10397e-23) -(9.93732 -0.0343666 -1.00074e-23) -(9.93191 -0.0343172 -1.78358e-23) -(9.92633 -0.0342725 -3.63765e-23) -(9.92058 -0.0342327 -2.50785e-23) -(9.91466 -0.034198 -2.26414e-23) -(9.90855 -0.0341687 -4.01626e-23) -(9.90226 -0.034145 -9.23151e-23) -(9.89578 -0.0341271 -2.77105e-23) -(9.8891 -0.0341154 -8.40867e-23) -(9.88223 -0.03411 -8.4658e-23) -(9.87515 -0.0341112 -8.54755e-23) -(9.86786 -0.0341192 -6.43303e-23) -(9.86036 -0.0341344 -5.1318e-23) -(9.85263 -0.0341571 -4.12389e-23) -(9.84467 -0.0341873 -2.83349e-23) -(9.83648 -0.0342256 -1.0664e-23) -(9.82804 -0.0342721 -6.35299e-23) -(9.81935 -0.0343272 -8.41055e-23) -(9.8104 -0.0343911 -1.37382e-22) -(9.80118 -0.0344642 -9.39441e-23) -(9.79168 -0.0345467 -4.08005e-23) -(9.78189 -0.0346391 -7.93376e-23) -(9.77181 -0.0347416 -1.13606e-22) -(9.76142 -0.0348545 -8.79805e-23) -(9.75071 -0.0349781 -7.32211e-23) -(9.73968 -0.0351129 -7.23097e-23) -(9.7283 -0.035259 -1.02294e-22) -(9.71657 -0.0354168 -4.40455e-23) -(9.70448 -0.0355866 -8.84982e-23) -(9.69201 -0.0357687 -1.42174e-23) -(9.67915 -0.0359634 1.07424e-23) -(9.66588 -0.036171 -5.40348e-23) -(9.6522 -0.0363916 -4.51243e-23) -(9.63809 -0.0366256 -4.53414e-23) -(9.62352 -0.0368731 -3.76348e-23) -(9.6085 -0.0371344 1.40189e-23) -(9.59299 -0.0374095 -4.36904e-24) -(9.577 -0.0376987 -6.98783e-23) -(9.56048 -0.038002 -1.50411e-22) -(9.54345 -0.0383194 -1.16078e-22) -(9.52586 -0.0386509 -1.02049e-22) -(9.50771 -0.0389965 -9.21868e-23) -(9.48898 -0.0393562 -8.42088e-23) -(9.46965 -0.0397296 -7.89698e-23) -(9.44971 -0.0401167 -7.41636e-23) -(9.42912 -0.0405171 -6.99228e-23) -(9.40788 -0.0409305 -6.55724e-23) -(9.38597 -0.0413565 -5.42573e-23) -(9.36336 -0.0417947 -1.78061e-23) -(9.34003 -0.0422443 -8.26876e-23) -(9.31598 -0.0427048 -1.16465e-22) -(9.29117 -0.0431754 -1.01787e-22) -(9.26559 -0.0436554 -8.86714e-23) -(9.23922 -0.0441437 1.46949e-24) -(9.21205 -0.0446396 1.95346e-23) -(9.18405 -0.0451418 2.44963e-23) -(9.1552 -0.0456493 -5.25541e-23) -(9.12549 -0.046161 -4.60962e-23) -(9.09491 -0.0466754 5.55572e-23) -(9.06343 -0.0471913 6.68846e-24) -(9.03104 -0.0477073 2.50832e-24) -(8.99772 -0.0482219 -1.51825e-22) -(8.96347 -0.0487336 -1.73162e-22) -(8.92827 -0.0492408 -1.53731e-22) -(8.8921 -0.049742 -7.6711e-23) -(8.85497 -0.0502354 -9.53049e-23) -(8.81685 -0.0507195 -1.08e-22) -(8.77774 -0.0511924 -1.84731e-22) -(8.73763 -0.0516525 -2.28202e-22) -(8.69652 -0.0520981 -2.52274e-22) -(8.65441 -0.0525274 -2.36375e-22) -(8.61129 -0.0529387 -1.9723e-22) -(8.56715 -0.0533302 -1.68042e-22) -(8.52201 -0.0537004 -1.41803e-22) -(8.47587 -0.0540475 -1.19474e-22) -(8.42873 -0.0543698 -9.47629e-23) -(8.38059 -0.0546658 -8.94541e-23) -(8.33147 -0.054934 -1.0671e-22) -(8.28137 -0.0551729 -9.06713e-23) -(8.23031 -0.0553809 -8.75395e-23) -(8.1783 -0.0555567 -1.44502e-23) -(8.12536 -0.0556991 -6.53633e-23) -(8.07151 -0.0558069 -5.75529e-23) -(8.01676 -0.0558788 -8.0825e-23) -(7.96114 -0.0559139 -5.54586e-23) -(7.90468 -0.0559113 -1.86926e-23) -(7.84741 -0.0558702 -3.25447e-23) -(7.78934 -0.0557899 -3.0422e-23) -(7.73051 -0.0556698 -4.09823e-23) -(7.67096 -0.0555094 -3.79242e-23) -(7.61072 -0.0553086 -5.25475e-23) -(7.54983 -0.0550671 -2.75498e-23) -(7.48832 -0.054785 2.28805e-23) -(7.42623 -0.0544625 -4.07801e-23) -(7.36361 -0.0540998 -2.83165e-23) -(7.3005 -0.0536974 -2.53447e-23) -(7.23695 -0.053256 -5.21957e-23) -(7.17299 -0.0527765 3.32936e-23) -(7.10869 -0.05226 2.63997e-23) -(7.04407 -0.0517075 5.2641e-24) -(6.9792 -0.0511205 -7.24953e-23) -(6.91411 -0.0505005 -6.13667e-23) -(6.84887 -0.0498495 -4.48875e-23) -(6.78351 -0.0491694 -3.56058e-23) -(6.71809 -0.0484623 -3.40996e-23) -(6.65265 -0.0477305 -3.27433e-23) -(6.58723 -0.0469768 -1.03373e-22) -(6.52189 -0.0462039 -1.77502e-22) -(6.45667 -0.0454148 -2.30461e-22) -(6.3916 -0.0446126 -1.30477e-22) -(6.32672 -0.0438009 -2.04646e-22) -(6.26207 -0.0429831 9.57432e-23) -(6.19768 -0.0421632 2.44283e-22) -(6.13358 -0.0413453 -4.27011e-23) -(6.06978 -0.0405336 -1.08485e-22) -(6.00631 -0.0397327 2.45018e-23) -(5.94317 -0.0389474 -4.67251e-22) -(5.88037 -0.0381829 3.92966e-23) -(5.81791 -0.0374447 4.45778e-23) -(5.75577 -0.0367384 6.41387e-26) -(5.69393 -0.0360705 1.05455e-23) -(5.63236 -0.0354478 1.06657e-23) -(5.57101 -0.0348774 1.71392e-23) -(5.50983 -0.0343678 5.86136e-24) -(5.44875 -0.0339279 -3.11542e-22) -(5.38766 -0.0335677 -8.59639e-22) -(5.32646 -0.0332989 -8.33284e-22) -(5.26502 -0.0331351 -4.45454e-22) -(5.20317 -0.0330922 -2.48763e-22) -(5.14071 -0.0331894 1.82252e-22) -(5.0774 -0.0334505 -2.13412e-22) -(5.01295 -0.033906 -5.35052e-22) -(4.94701 -0.0345954 -5.59023e-22) -(4.87912 -0.0355728 -9.44745e-22) -(4.80875 -0.0369152 -1.25303e-21) -(4.73514 -0.0387377 -8.35809e-22) -(4.65734 -0.0412302 -9.37578e-22) -(4.57381 -0.0447088 -8.69369e-24) -(4.48312 -0.049919 -9.45641e-23) -(4.37816 -0.0580298 -6.55795e-22) -(4.27018 -0.0758531 -5.29858e-22) -(4.06251 -0.111669 -1.09669e-22) -(9.97272 -0.0315608 -1.72726e-26) -(9.96874 -0.0322162 -6.27349e-25) -(9.96498 -0.0327113 -4.31696e-24) -(9.96109 -0.0329843 -9.89143e-24) -(9.95697 -0.0331429 -1.14831e-23) -(9.95261 -0.0332447 -2.07136e-23) -(9.94807 -0.0333009 -1.24431e-23) -(9.94333 -0.0333164 -1.03853e-23) -(9.9384 -0.0332982 -8.25435e-24) -(9.93328 -0.0332532 -1.35339e-24) -(9.92796 -0.0331862 1.19736e-23) -(9.92245 -0.033101 2.95256e-24) -(9.91675 -0.0330005 -1.05334e-23) -(9.91086 -0.0328872 -9.35973e-24) -(9.90478 -0.0327632 9.60018e-24) -(9.8985 -0.0326303 2.93658e-24) -(9.89203 -0.0324901 -7.17706e-24) -(9.88537 -0.0323438 -6.07127e-25) -(9.87851 -0.0321926 1.29112e-24) -(9.87146 -0.0320375 1.31134e-23) -(9.86421 -0.0318792 5.22567e-23) -(9.85677 -0.0317187 4.44768e-23) -(9.84913 -0.0315566 2.37418e-23) -(9.8413 -0.0313934 3.31236e-23) -(9.83328 -0.0312296 6.14303e-23) -(9.82505 -0.0310658 7.29161e-23) -(9.81663 -0.0309023 5.85221e-23) -(9.80802 -0.0307394 5.09309e-23) -(9.79921 -0.0305776 4.05702e-23) -(9.79021 -0.030417 1.35754e-23) -(9.781 -0.030258 -2.30732e-23) -(9.77161 -0.0301008 -1.07976e-23) -(9.76201 -0.0299456 -8.84112e-24) -(9.75222 -0.0297926 -6.56387e-24) -(9.74223 -0.029642 1.38601e-24) -(9.73204 -0.029494 2.82445e-23) -(9.72165 -0.0293486 2.16619e-23) -(9.71106 -0.0292062 2.11368e-23) -(9.70027 -0.0290668 1.79194e-23) -(9.68928 -0.0289306 1.01986e-23) -(9.67809 -0.0287977 4.00138e-23) -(9.66669 -0.0286683 3.19951e-23) -(9.65508 -0.0285426 3.03179e-23) -(9.64326 -0.0284206 3.34995e-23) -(9.63123 -0.0283026 5.61739e-23) -(9.61899 -0.0281887 4.74753e-23) -(9.60653 -0.0280791 5.00158e-23) -(9.59385 -0.027974 8.82623e-23) -(9.58094 -0.0278736 8.52748e-23) -(9.56781 -0.0277779 6.93249e-23) -(9.55445 -0.0276874 3.59445e-23) -(9.54085 -0.027602 3.91303e-23) -(9.52702 -0.0275221 4.75185e-23) -(9.51293 -0.0274478 1.01544e-22) -(9.4986 -0.0273794 8.62744e-23) -(9.48401 -0.027317 1.094e-22) -(9.46916 -0.027261 1.18036e-22) -(9.45405 -0.0272115 9.51228e-23) -(9.43865 -0.0271688 6.80212e-23) -(9.42298 -0.0271331 1.17472e-22) -(9.40702 -0.0271047 6.63822e-23) -(9.39075 -0.0270838 6.74904e-23) -(9.37419 -0.0270706 8.40985e-23) -(9.35731 -0.0270654 4.33161e-23) -(9.3401 -0.0270684 3.29542e-23) -(9.32257 -0.0270798 -2.76441e-23) -(9.30469 -0.0270999 -2.23626e-23) -(9.28645 -0.0271289 -5.78812e-23) -(9.26785 -0.0271669 -1.04932e-22) -(9.24888 -0.0272143 -8.76687e-23) -(9.22952 -0.0272712 -8.00438e-23) -(9.20976 -0.0273378 -7.737e-23) -(9.18959 -0.0274141 -1.06813e-22) -(9.169 -0.0275004 -1.51968e-22) -(9.14796 -0.0275968 -1.53744e-22) -(9.12648 -0.0277034 -1.27208e-22) -(9.10453 -0.0278202 -6.10508e-23) -(9.0821 -0.0279473 -6.64738e-23) -(9.05918 -0.0280846 -6.69497e-23) -(9.03574 -0.0282323 -9.05709e-23) -(9.01178 -0.0283902 -8.22572e-23) -(8.98729 -0.0285581 -1.018e-22) -(8.96223 -0.028736 -8.7145e-23) -(8.9366 -0.0289237 -7.89227e-23) -(8.91039 -0.029121 -6.72677e-23) -(8.88357 -0.0293275 -4.05878e-23) -(8.85613 -0.029543 -8.88559e-23) -(8.82805 -0.029767 -1.19245e-23) -(8.79931 -0.0299991 2.65262e-23) -(8.76991 -0.0302388 -1.99169e-23) -(8.73982 -0.0304855 -4.23806e-23) -(8.70902 -0.0307387 -3.54478e-23) -(8.67751 -0.0309976 -8.4431e-23) -(8.64527 -0.0312616 -8.42592e-23) -(8.61227 -0.0315298 -2.06762e-23) -(8.57852 -0.0318016 -3.67926e-23) -(8.54398 -0.0320759 -8.16325e-23) -(8.50866 -0.0323519 -6.76311e-23) -(8.47253 -0.0326285 -5.3594e-23) -(8.43559 -0.032905 3.42797e-23) -(8.39783 -0.0331801 4.05299e-23) -(8.35923 -0.0334528 1.29433e-23) -(8.31978 -0.0337221 4.32033e-23) -(8.27949 -0.0339867 5.5028e-23) -(8.23833 -0.0342456 5.74453e-23) -(8.19632 -0.0344977 1.21894e-23) -(8.15343 -0.0347416 -2.38735e-23) -(8.10968 -0.0349764 -5.30174e-23) -(8.06505 -0.0352008 -6.02626e-23) -(8.01956 -0.0354137 -5.05439e-24) -(7.9732 -0.0356139 -3.72897e-23) -(7.92597 -0.0358004 -4.9048e-23) -(7.87789 -0.0359719 -4.41975e-23) -(7.82895 -0.0361275 3.61088e-24) -(7.77917 -0.0362661 -3.00039e-23) -(7.72856 -0.0363867 4.05707e-23) -(7.67714 -0.0364884 6.95649e-24) -(7.62491 -0.0365701 -8.45687e-25) -(7.57189 -0.0366311 -5.00852e-23) -(7.51811 -0.0366706 -3.20049e-23) -(7.46357 -0.0366878 -5.68261e-24) -(7.40832 -0.036682 3.22341e-24) -(7.35236 -0.0366526 -3.24626e-23) -(7.29574 -0.0365991 -5.64699e-23) -(7.23846 -0.036521 -4.59717e-23) -(7.18058 -0.036418 -3.87152e-23) -(7.12211 -0.0362897 -3.18789e-23) -(7.06309 -0.036136 -4.23609e-23) -(7.00356 -0.0359567 -2.04902e-23) -(6.94355 -0.0357519 -2.41528e-23) -(6.88311 -0.0355218 -4.6341e-23) -(6.82227 -0.0352664 -3.17676e-23) -(6.76107 -0.034986 -5.12572e-23) -(6.69956 -0.0346811 -5.66454e-23) -(6.63778 -0.0343522 -5.76379e-23) -(6.57578 -0.034 -4.58181e-23) -(6.5136 -0.0336253 -3.32846e-23) -(6.45128 -0.0332288 -6.65115e-23) -(6.38887 -0.0328117 1.06409e-23) -(6.32641 -0.0323749 6.22842e-24) -(6.26396 -0.0319198 -7.94694e-24) -(6.20155 -0.0314478 -1.51906e-23) -(6.13923 -0.0309603 -1.88374e-23) -(6.07705 -0.0304588 -3.21053e-23) -(6.01503 -0.0299452 -3.9888e-23) -(5.95323 -0.0294214 5.66202e-23) -(5.89167 -0.0288893 1.41053e-22) -(5.8304 -0.028351 7.40763e-23) -(5.76944 -0.0278087 5.07666e-23) -(5.70883 -0.0272648 9.52911e-23) -(5.64858 -0.0267219 -1.97504e-23) -(5.58872 -0.0261826 -2.75979e-23) -(5.52925 -0.0256497 1.53159e-22) -(5.4702 -0.025126 -2.15397e-23) -(5.41156 -0.0246147 3.03884e-22) -(5.35332 -0.0241192 -1.38681e-22) -(5.29548 -0.023643 -4.74998e-22) -(5.23801 -0.0231896 -4.74934e-22) -(5.18089 -0.0227632 -2.57827e-22) -(5.12407 -0.0223682 -6.26e-22) -(5.0675 -0.0220092 -3.75497e-22) -(5.01111 -0.0216914 -2.42241e-22) -(4.95483 -0.0214207 4.39283e-22) -(4.89855 -0.0212036 5.55943e-22) -(4.84215 -0.0210475 1.0966e-22) -(4.7855 -0.0209612 -5.84861e-23) -(4.72841 -0.0209551 -1.01699e-22) -(4.67069 -0.0210415 -2.46894e-22) -(4.61208 -0.0212363 -1.72777e-22) -(4.5523 -0.0215591 -1.9908e-22) -(4.49097 -0.0220361 -2.60304e-22) -(4.42765 -0.0227028 -4.36528e-22) -(4.36177 -0.0236105 -4.23449e-22) -(4.29257 -0.0248357 -5.92099e-22) -(4.21909 -0.026504 2.59674e-22) -(4.13971 -0.0288344 1.47284e-23) -(4.05302 -0.0323018 -1.54591e-22) -(3.95095 -0.0378868 4.38733e-22) -(3.84668 -0.049901 -2.23265e-22) -(3.61906 -0.0813316 -8.4522e-22) -(9.75352 -0.0325296 8.68482e-25) -(9.74193 -0.0322336 4.16723e-24) -(9.73094 -0.0318454 4.66015e-24) -(9.71978 -0.0312874 1.09075e-23) -(9.70826 -0.0306936 1.15953e-23) -(9.69644 -0.0301221 2.40697e-23) -(9.68441 -0.0295749 2.23037e-23) -(9.67217 -0.0290483 3.47416e-23) -(9.65971 -0.0285418 3.40912e-23) -(9.64704 -0.0280553 5.31764e-23) -(9.63416 -0.0275875 4.72355e-23) -(9.62108 -0.0271368 5.6201e-23) -(9.6078 -0.0267016 7.51537e-23) -(9.59433 -0.0262804 7.45595e-23) -(9.58066 -0.0258722 4.48872e-23) -(9.56681 -0.0254759 4.81094e-23) -(9.55277 -0.0250907 5.21229e-23) -(9.53856 -0.0247159 4.71504e-23) -(9.52416 -0.0243511 4.41857e-23) -(9.50959 -0.0239957 4.0174e-23) -(9.49485 -0.0236496 2.90025e-23) -(9.47994 -0.0233124 1.71243e-23) -(9.46487 -0.0229841 2.77873e-23) -(9.44964 -0.0226644 2.60782e-23) -(9.43425 -0.0223535 2.73844e-23) -(9.41871 -0.0220511 3.04944e-23) -(9.40302 -0.0217573 3.87622e-23) -(9.38718 -0.021472 3.71793e-23) -(9.37119 -0.0211953 4.09591e-23) -(9.35507 -0.020927 6.50345e-23) -(9.3388 -0.0206673 7.08482e-23) -(9.32239 -0.020416 6.23718e-23) -(9.30585 -0.020173 5.86977e-23) -(9.28917 -0.0199385 6.17725e-23) -(9.27237 -0.0197121 5.58273e-23) -(9.25543 -0.019494 5.28615e-23) -(9.23836 -0.0192839 4.98095e-23) -(9.22116 -0.0190818 4.70306e-23) -(9.20383 -0.0188875 4.59031e-23) -(9.18637 -0.0187008 5.27961e-23) -(9.16878 -0.0185218 5.76426e-23) -(9.15107 -0.0183501 5.37145e-23) -(9.13322 -0.0181856 5.12168e-23) -(9.11524 -0.0180282 5.036e-23) -(9.09712 -0.0178777 5.87662e-23) -(9.07887 -0.017734 6.45338e-23) -(9.06049 -0.0175968 6.59302e-23) -(9.04196 -0.0174661 4.91008e-23) -(9.02328 -0.0173417 6.85548e-23) -(9.00446 -0.0172234 6.77422e-23) -(8.9855 -0.0171111 8.98674e-23) -(8.96637 -0.0170047 8.08323e-23) -(8.94709 -0.0169041 7.17361e-23) -(8.92764 -0.0168092 3.671e-23) -(8.90803 -0.0167199 4.33052e-23) -(8.88824 -0.016636 4.6147e-23) -(8.86827 -0.0165577 4.93201e-23) -(8.84811 -0.0164847 5.56642e-23) -(8.82776 -0.0164171 8.5807e-23) -(8.80721 -0.0163548 5.04218e-23) -(8.78646 -0.0162978 9.02279e-23) -(8.76549 -0.0162462 7.777e-23) -(8.74429 -0.0161999 4.7365e-23) -(8.72287 -0.016159 1.03439e-22) -(8.7012 -0.0161235 8.95834e-23) -(8.67929 -0.0160935 7.93847e-23) -(8.65711 -0.0160689 6.6112e-23) -(8.63467 -0.0160499 2.03439e-23) -(8.61195 -0.0160365 1.63893e-23) -(8.58894 -0.0160288 9.89377e-24) -(8.56562 -0.0160268 4.52095e-24) -(8.542 -0.0160307 4.0606e-24) -(8.51805 -0.0160404 3.35623e-23) -(8.49376 -0.016056 2.09168e-23) -(8.46912 -0.0160777 4.34545e-23) -(8.44411 -0.0161054 1.01776e-23) -(8.41873 -0.0161391 1.02532e-23) -(8.39296 -0.0161789 2.31575e-23) -(8.36679 -0.0162248 1.88718e-23) -(8.34019 -0.0162768 4.68993e-23) -(8.31317 -0.0163349 3.65663e-23) -(8.28569 -0.016399 6.13276e-23) -(8.25775 -0.016469 4.31058e-23) -(8.22933 -0.0165448 1.8123e-23) -(8.20041 -0.0166264 2.86179e-23) -(8.17099 -0.0167135 2.29726e-24) -(8.14103 -0.016806 -3.38791e-24) -(8.11054 -0.0169037 -5.77294e-24) -(8.07949 -0.0170063 -1.52897e-23) -(8.04787 -0.0171135 2.70056e-23) -(8.01566 -0.0172251 6.85079e-23) -(7.98284 -0.0173407 6.50169e-23) -(7.94941 -0.0174599 2.73187e-23) -(7.91535 -0.0175822 -1.48939e-23) -(7.88064 -0.0177074 -1.26297e-23) -(7.84527 -0.0178349 -3.02062e-23) -(7.80923 -0.0179642 -4.66168e-23) -(7.7725 -0.0180948 -6.36332e-23) -(7.73508 -0.0182261 -1.22838e-22) -(7.69696 -0.0183577 -1.52565e-22) -(7.65811 -0.0184889 -1.1799e-22) -(7.61855 -0.0186191 -1.04817e-22) -(7.57825 -0.0187477 -1.49934e-22) -(7.53722 -0.0188741 -1.98587e-22) -(7.49544 -0.0189976 -1.80742e-22) -(7.45292 -0.0191176 -1.51975e-22) -(7.40965 -0.0192334 -1.5501e-22) -(7.36563 -0.0193444 -1.29879e-22) -(7.32087 -0.01945 -9.29379e-23) -(7.27535 -0.0195495 -9.8146e-23) -(7.2291 -0.0196423 -6.22433e-23) -(7.1821 -0.0197277 -6.05046e-23) -(7.13438 -0.0198052 -5.61195e-23) -(7.08594 -0.0198742 -4.3598e-23) -(7.03679 -0.0199341 -2.76037e-23) -(6.98694 -0.0199844 -5.22469e-23) -(6.93641 -0.0200246 -4.1921e-23) -(6.88521 -0.0200541 -6.11793e-23) -(6.83336 -0.0200725 -4.89805e-23) -(6.78089 -0.0200794 -2.76891e-23) -(6.7278 -0.0200744 -1.02999e-24) -(6.67414 -0.0200571 -1.09603e-23) -(6.61992 -0.0200272 -1.31198e-23) -(6.56516 -0.0199844 -1.89185e-23) -(6.50991 -0.0199286 -3.67419e-23) -(6.45418 -0.0198595 -3.56407e-23) -(6.39802 -0.0197769 -2.74824e-23) -(6.34145 -0.0196809 -2.96967e-23) -(6.28451 -0.0195712 -3.32478e-23) -(6.22724 -0.0194482 -2.3027e-23) -(6.16967 -0.0193117 -3.54276e-23) -(6.11185 -0.0191618 -5.35379e-23) -(6.05381 -0.0189989 -7.8305e-23) -(5.99559 -0.018823 -7.54085e-23) -(5.93724 -0.0186347 -6.90168e-23) -(5.87879 -0.0184342 -6.242e-23) -(5.82029 -0.018222 -5.92502e-23) -(5.76179 -0.0179985 -1.53085e-23) -(5.70331 -0.0177644 -8.36005e-24) -(5.64491 -0.0175203 -6.22108e-24) -(5.58662 -0.0172669 -3.13596e-23) -(5.52849 -0.0170049 -2.49676e-23) -(5.47055 -0.0167351 -1.75817e-23) -(5.41285 -0.0164585 -7.85507e-23) -(5.3554 -0.0161761 3.70433e-23) -(5.29826 -0.0158889 -1.54408e-24) -(5.24145 -0.0155979 5.59817e-23) -(5.185 -0.0153043 1.51626e-25) -(5.12893 -0.0150094 2.2862e-22) -(5.07326 -0.0147145 2.08901e-22) -(5.01802 -0.0144209 1.60337e-22) -(4.9632 -0.01413 3.59776e-23) -(4.90884 -0.0138436 8.74285e-23) -(4.85491 -0.0135631 3.2036e-22) -(4.80142 -0.0132901 2.18121e-22) -(4.74836 -0.0130266 1.44921e-22) -(4.69571 -0.0127746 1.53125e-24) -(4.64344 -0.0125359 7.68207e-23) -(4.59151 -0.0123128 2.67791e-23) -(4.53988 -0.0121078 -2.35508e-22) -(4.48849 -0.0119233 -9.14866e-23) -(4.43727 -0.0117623 -1.17338e-22) -(4.38613 -0.011628 -2.80929e-22) -(4.33497 -0.011524 1.04974e-22) -(4.28367 -0.0114545 5.92963e-23) -(4.23207 -0.0114244 -6.1927e-24) -(4.18001 -0.0114393 -5.10314e-23) -(4.12728 -0.0115063 1.35345e-22) -(4.07363 -0.0116343 5.60193e-23) -(4.01878 -0.0118343 1.32278e-22) -(3.96235 -0.0121211 -3.38139e-23) -(3.9039 -0.0125149 -1.77808e-22) -(3.84287 -0.0130447 -7.06948e-22) -(3.77851 -0.0137545 -6.08834e-22) -(3.70985 -0.014714 -7.46528e-22) -(3.63525 -0.0160571 -4.28321e-22) -(3.55339 -0.0180072 -4.81842e-22) -(3.45539 -0.0213588 -6.76801e-23) -(3.35739 -0.0276551 4.46911e-22) -(3.10767 -0.052546 -6.71231e-23) -(8.80209 -0.0117805 -2.05124e-25) -(8.7737 -0.0124045 -4.63069e-24) -(8.74685 -0.0128522 -4.1756e-24) -(8.72019 -0.0130922 -3.77008e-24) -(8.69342 -0.0132169 -3.36272e-24) -(8.6667 -0.0132741 -2.63343e-24) -(8.64013 -0.0132785 -1.97858e-24) -(8.61372 -0.0132394 -1.00154e-24) -(8.58749 -0.0131656 -4.99794e-25) -(8.56142 -0.0130647 -8.63332e-24) -(8.53552 -0.0129425 -7.12221e-24) -(8.50981 -0.0128037 -1.54666e-23) -(8.48427 -0.0126519 -2.22345e-23) -(8.45891 -0.0124904 -1.85837e-23) -(8.43372 -0.0123219 -6.79224e-24) -(8.40872 -0.0121485 -5.12516e-24) -(8.38389 -0.0119722 6.59364e-24) -(8.35923 -0.0117944 7.37878e-24) -(8.33475 -0.0116166 8.42154e-24) -(8.31043 -0.0114397 8.91471e-24) -(8.28627 -0.0112648 -7.99242e-25) -(8.26226 -0.0110924 5.07679e-25) -(8.23841 -0.0109234 1.17517e-23) -(8.21471 -0.010758 1.17696e-23) -(8.19114 -0.0105966 1.21816e-23) -(8.16771 -0.0104396 1.22911e-23) -(8.14441 -0.0102871 2.46171e-24) -(8.12123 -0.0101392 3.95294e-24) -(8.09816 -0.00999597 4.79055e-24) -(8.07519 -0.00985743 -3.9523e-24) -(8.05233 -0.00972354 -9.62739e-25) -(8.02955 -0.00959423 1.27371e-24) -(8.00686 -0.00946942 2.92092e-24) -(7.98424 -0.00934896 -6.01229e-24) -(7.9617 -0.00923272 -3.36601e-24) -(7.93921 -0.00912056 -1.25724e-24) -(7.91678 -0.00901231 6.64221e-25) -(7.89439 -0.0089078 2.41522e-24) -(7.87204 -0.00880688 4.4429e-24) -(7.84972 -0.00870938 1.72958e-23) -(7.82742 -0.00861514 6.94361e-24) -(7.80514 -0.00852399 9.06022e-24) -(7.78287 -0.0084358 1.06662e-23) -(7.76061 -0.00835041 1.17988e-23) -(7.73833 -0.00826771 1.55811e-24) -(7.71605 -0.00818757 -7.63017e-24) -(7.69375 -0.00810988 -1.5938e-23) -(7.67142 -0.00803455 -1.27031e-23) -(7.64906 -0.00796148 -9.06551e-24) -(7.62667 -0.00789062 -5.26176e-24) -(7.60423 -0.0078219 1.1013e-23) -(7.58175 -0.00775526 1.36797e-23) -(7.5592 -0.00769066 1.61321e-23) -(7.5366 -0.00762808 1.68658e-23) -(7.51393 -0.0075675 1.79005e-23) -(7.49118 -0.0075089 1.90181e-23) -(7.46836 -0.00745231 2.02318e-23) -(7.44545 -0.00739772 2.1695e-23) -(7.42244 -0.00734515 2.45532e-23) -(7.39933 -0.00729461 2.55049e-23) -(7.37612 -0.00724615 2.84208e-23) -(7.35279 -0.0071998 3.05293e-23) -(7.32934 -0.00715561 3.029e-23) -(7.30577 -0.00711363 8.38836e-24) -(7.28205 -0.00707389 1.30722e-23) -(7.25819 -0.00703645 1.63811e-23) -(7.23418 -0.00700135 1.87975e-23) -(7.21001 -0.00696866 1.86033e-23) -(7.18567 -0.00693845 1.82371e-23) -(7.16115 -0.00691076 1.75342e-23) -(7.13644 -0.00688565 1.65722e-23) -(7.11152 -0.00686315 1.56472e-23) -(7.0864 -0.00684331 1.64839e-23) -(7.06106 -0.0068262 1.65168e-23) -(7.03549 -0.00681187 1.85402e-23) -(7.00967 -0.00680032 4.36161e-23) -(6.9836 -0.0067916 3.97617e-23) -(6.95726 -0.00678572 1.23024e-23) -(6.93064 -0.00678272 1.30701e-23) -(6.90372 -0.0067826 1.50258e-23) -(6.8765 -0.00678537 1.61647e-23) -(6.84896 -0.00679101 1.88449e-23) -(6.82109 -0.00679948 2.07316e-23) -(6.79286 -0.00681078 4.51472e-23) -(6.76428 -0.00682487 1.6668e-23) -(6.73531 -0.0068417 -9.48228e-24) -(6.70596 -0.0068612 -8.38042e-24) -(6.6762 -0.00688328 -7.45138e-24) -(6.64602 -0.00690783 1.70766e-23) -(6.61541 -0.00693479 1.64262e-23) -(6.58434 -0.00696403 -5.21484e-24) -(6.55282 -0.00699542 -2.32249e-23) -(6.52082 -0.0070288 5.68034e-24) -(6.48833 -0.00706402 3.46521e-24) -(6.45535 -0.00710093 2.69258e-24) -(6.42184 -0.00713933 2.39548e-23) -(6.38782 -0.00717903 4.09311e-23) -(6.35325 -0.00721982 5.379e-23) -(6.31815 -0.0072615 3.74594e-23) -(6.28248 -0.00730384 2.05963e-23) -(6.24626 -0.00734663 8.30837e-24) -(6.20946 -0.00738961 -1.71922e-24) -(6.17209 -0.00743255 -1.38404e-23) -(6.13414 -0.00747518 9.20504e-24) -(6.09561 -0.00751725 -4.87209e-23) -(6.05649 -0.00755851 -5.52671e-23) -(6.01678 -0.00759869 -2.61834e-23) -(5.97648 -0.00763752 -3.53805e-23) -(5.9356 -0.00767476 -4.40208e-24) -(5.89413 -0.00771015 1.79214e-23) -(5.85209 -0.00774342 -2.34362e-23) -(5.80948 -0.00777431 -2.57915e-23) -(5.7663 -0.00780258 -2.82689e-23) -(5.72257 -0.00782798 -2.82368e-23) -(5.6783 -0.00785031 -1.69312e-24) -(5.63349 -0.00786931 -8.16083e-24) -(5.58818 -0.00788476 -1.17422e-23) -(5.54236 -0.00789646 -1.71566e-23) -(5.49606 -0.00790421 -2.11794e-23) -(5.4493 -0.00790784 -3.82568e-23) -(5.4021 -0.00790717 -4.57251e-23) -(5.35448 -0.00790202 -3.92663e-23) -(5.30647 -0.00789227 -3.39934e-23) -(5.25808 -0.00787779 -2.44849e-23) -(5.20936 -0.00785849 -3.0124e-23) -(5.16032 -0.00783426 -2.77416e-23) -(5.111 -0.00780501 -2.70848e-23) -(5.06142 -0.0077707 -2.6443e-23) -(5.01162 -0.00773131 -1.9925e-23) -(4.96163 -0.00768684 -2.75915e-23) -(4.91148 -0.00763729 -2.82997e-23) -(4.86121 -0.00758269 -3.08517e-23) -(4.81086 -0.00752306 -3.66795e-23) -(4.76045 -0.0074585 -4.11655e-23) -(4.71002 -0.00738915 -4.38521e-23) -(4.65962 -0.00731514 -4.50015e-23) -(4.60926 -0.00723661 -4.53985e-23) -(4.559 -0.00715374 -3.85842e-23) -(4.50886 -0.00706673 -3.1784e-23) -(4.45888 -0.00697581 -2.64297e-23) -(4.40909 -0.00688128 1.8745e-23) -(4.35952 -0.0067834 1.07396e-23) -(4.31021 -0.00668247 4.2675e-24) -(4.26118 -0.00657885 1.0026e-22) -(4.21246 -0.00647294 2.03654e-22) -(4.16407 -0.00636512 2.83104e-22) -(4.11604 -0.00625581 2.24617e-22) -(4.06839 -0.00614546 3.12212e-22) -(4.02113 -0.00603459 2.79522e-22) -(3.97427 -0.00592373 2.49688e-22) -(3.92783 -0.00581338 2.16415e-22) -(3.88181 -0.00570414 3.42782e-22) -(3.8362 -0.00559667 2.68311e-22) -(3.79101 -0.00549159 2.63445e-22) -(3.74623 -0.00538952 4.40633e-22) -(3.70183 -0.00529129 3.46173e-22) -(3.6578 -0.00519774 2.43194e-22) -(3.6141 -0.00510953 4.17701e-22) -(3.57069 -0.00502766 2.95805e-22) -(3.52753 -0.00495319 3.93107e-22) -(3.48456 -0.00488706 -1.26416e-23) -(3.4417 -0.00483052 -3.97326e-23) -(3.39888 -0.00478492 -9.93377e-23) -(3.356 -0.00475171 -3.2446e-22) -(3.31295 -0.0047327 -1.97973e-22) -(3.26959 -0.00472983 -1.30513e-22) -(3.22576 -0.00474558 -9.80791e-23) -(3.18128 -0.00478282 3.02807e-22) -(3.13593 -0.00484531 2.0807e-22) -(3.08944 -0.00493768 -1.80592e-22) -(3.0415 -0.00506611 -1.22626e-22) -(2.99169 -0.00523914 -1.29393e-22) -(2.93953 -0.00546884 -2.96455e-22) -(2.88434 -0.00577412 -3.68509e-22) -(2.82526 -0.00618181 -4.55566e-22) -(2.7608 -0.00676029 -4.03561e-22) -(2.68994 -0.00753639 5.70568e-23) -(2.60385 -0.00917045 1.01424e-23) -(2.52189 -0.0105292 1.60534e-22) -(2.27004 -0.0268583 6.50074e-23) -(0.853624 0.0359944 -3.57506e-20) -(0.984546 0.0622634 -1.68758e-20) -(1.10232 0.0779066 -9.40768e-21) -(1.21491 0.0913781 5.26102e-20) -(1.3304 0.104383 1.06411e-19) -(1.45048 0.117329 6.75797e-20) -(1.5758 0.130542 5.04625e-20) -(1.70703 0.144245 1.39647e-20) -(1.84472 0.158566 8.18365e-21) -(1.98928 0.173582 1.06477e-19) -(2.14104 0.189351 1.15725e-19) -(2.30031 0.205919 7.10619e-20) -(2.46738 0.22332 -2.29463e-20) -(2.64251 0.241591 -1.63306e-20) -(2.82608 0.260744 -9.3138e-20) -(3.01821 0.280851 -1.75456e-20) -(3.21983 0.301841 -2.46939e-20) -(3.43013 0.323996 -2.49127e-20) -(3.65285 0.346797 1.6653e-20) -(3.88145 0.371591 -2.16175e-20) -(4.13481 0.395588 4.22894e-20) -(4.37331 0.425171 1.23017e-20) -(4.70043 0.446851 -1.93654e-22) -(4.8831 0.484953 -3.45712e-20) -(5.5649 0.512258 1.35593e-20) -(1.10089 0.0254605 8.62873e-21) -(1.21498 0.0486311 -2.71403e-21) -(1.32523 0.0636007 -4.73795e-21) -(1.43779 0.0775755 -2.17832e-20) -(1.55527 0.0911663 3.51237e-20) -(1.67829 0.104734 3.37524e-20) -(1.80725 0.118633 3.64847e-20) -(1.94266 0.133099 -2.2597e-20) -(2.08498 0.148269 1.87675e-21) -(2.23457 0.164234 7.53592e-21) -(2.39181 0.181062 3.10767e-20) -(2.55699 0.198808 2.41404e-20) -(2.73046 0.21751 5.13196e-20) -(2.9125 0.237214 -8.70291e-21) -(3.10352 0.257924 -2.59376e-20) -(3.3037 0.279733 -8.11959e-20) -(3.51394 0.302511 -3.56353e-20) -(3.73361 0.326665 -2.66921e-20) -(3.96618 0.351347 -5.03459e-20) -(4.20582 0.378634 -7.17083e-20) -(4.46983 0.403944 -6.19637e-20) -(4.72225 0.4375 -2.69073e-20) -(5.05728 0.456708 -1.66559e-20) -(5.26525 0.502288 -1.17547e-21) -(5.9023 0.507849 -6.4361e-21) -(1.2591 0.00126026 8.15519e-22) -(1.36455 0.0215531 -3.91603e-21) -(1.4696 0.0358869 -4.15637e-21) -(1.58024 0.0496639 -1.06347e-20) -(1.69659 0.0631247 -8.71032e-21) -(1.81894 0.0766194 2.0522e-20) -(1.94755 0.0904721 3.48038e-20) -(2.0828 0.104918 2.06565e-20) -(2.22508 0.120102 1.21891e-20) -(2.37476 0.136127 1.45144e-20) -(2.53215 0.153072 1.49606e-20) -(2.6976 0.170998 5.73621e-21) -(2.87143 0.18995 2.23506e-20) -(3.05395 0.209976 2.71777e-20) -(3.24557 0.231076 -1.1275e-20) -(3.44651 0.253349 -1.71933e-20) -(3.65765 0.276634 -1.21761e-20) -(3.87846 0.301386 -2.34258e-20) -(4.11226 0.326594 -4.32837e-20) -(4.3536 0.354662 -2.14989e-20) -(4.61896 0.380111 -2.09772e-20) -(4.87431 0.41498 -1.96074e-20) -(5.20877 0.432002 -1.49261e-20) -(5.4256 0.480091 -1.32368e-20) -(6.03046 0.468649 7.75767e-21) -(1.3951 -0.0269902 -2.93287e-21) -(1.49602 -0.00961701 -6.07582e-21) -(1.59756 0.00399649 -2.87952e-21) -(1.70612 0.0173851 -8.55744e-21) -(1.82075 0.0305686 -5.42353e-21) -(1.94165 0.0438821 -3.25879e-21) -(2.06898 0.0576056 1.34363e-20) -(2.20307 0.0719586 1.32563e-20) -(2.34423 0.0870886 1.34762e-20) -(2.49282 0.103107 1.8731e-20) -(2.64914 0.120097 4.88637e-21) -(2.81354 0.138129 1.29034e-20) -(2.98634 0.157248 1.4808e-20) -(3.16786 0.177504 9.75669e-21) -(3.35851 0.198897 1.96557e-20) -(3.55854 0.221518 1.91734e-20) -(3.76882 0.245201 1.33013e-21) -(3.98886 0.270384 2.90573e-21) -(4.22195 0.296038 -1.5533e-20) -(4.46282 0.324551 -5.51741e-21) -(4.72746 0.350337 -1.96627e-20) -(4.98311 0.385447 -1.66608e-20) -(5.3153 0.402045 -1.24475e-20) -(5.53638 0.448837 -1.37598e-20) -(6.11573 0.43069 -7.15503e-21) -(1.52594 -0.0561123 5.92157e-21) -(1.62413 -0.041133 4.0862e-21) -(1.72302 -0.0283832 5.58141e-23) -(1.82953 -0.0155906 2.13508e-21) -(1.94222 -0.00283335 -3.23262e-21) -(2.06131 0.0101807 -8.64809e-22) -(2.18692 0.0236795 2.5484e-20) -(2.31933 0.0378593 1.0035e-20) -(2.45884 0.0528638 1.50897e-20) -(2.60576 0.0688065 5.9782e-21) -(2.76041 0.0857764 -6.63772e-21) -(2.92311 0.103845 3.42241e-21) -(3.09421 0.123062 6.54594e-21) -(3.274 0.143476 2.73186e-20) -(3.46293 0.165086 2.11265e-20) -(3.66124 0.187972 1.69342e-20) -(3.86983 0.211973 5.76465e-21) -(4.08822 0.237485 3.00318e-22) -(4.31966 0.263525 -3.07897e-21) -(4.55905 0.292308 6.67974e-21) -(4.82202 0.318508 -7.36523e-21) -(5.07671 0.353367 -1.21636e-20) -(5.40583 0.370386 -1.27233e-20) -(5.62878 0.414399 -5.9002e-21) -(6.18662 0.394581 -2.60101e-21) -(1.65781 -0.0851256 4.72811e-21) -(1.754 -0.072035 5.9586e-22) -(1.85069 -0.0601812 7.10345e-22) -(1.95514 -0.0480762 1.14538e-21) -(2.06575 -0.0358236 4.76366e-21) -(2.18279 -0.0231853 2.77031e-21) -(2.30638 -0.00997837 7.68763e-21) -(2.43677 0.00397007 1.6512e-20) -(2.57424 0.0187965 2.9255e-21) -(2.71909 0.0346139 6.76834e-21) -(2.87164 0.0515134 -3.85044e-21) -(3.0322 0.0695686 3.92243e-22) -(3.20111 0.088831 3.86312e-21) -(3.37869 0.109348 9.64965e-21) -(3.56539 0.131117 1.66207e-20) -(3.76144 0.154208 1.47518e-20) -(3.96776 0.178465 6.6859e-21) -(4.18391 0.204233 -2.78794e-21) -(4.4131 0.230603 7.83824e-21) -(4.65035 0.25955 6.33243e-21) -(4.911 0.286175 -1.45906e-20) -(5.16392 0.320553 -1.15423e-20) -(5.48947 0.338376 -9.86225e-21) -(5.71272 0.379158 -7.96677e-21) -(6.25174 0.360413 -2.56608e-21) -(1.7936 -0.113867 4.55419e-21) -(1.88807 -0.102283 5.43529e-21) -(1.98271 -0.0912798 2.2268e-21) -(2.08508 -0.0798758 1.14267e-21) -(2.19347 -0.0681595 4.03842e-21) -(2.30827 -0.055942 3.42275e-21) -(2.42958 -0.0430732 -2.11327e-21) -(2.55766 -0.0294002 -4.34987e-21) -(2.69278 -0.0147939 -8.70125e-23) -(2.83523 0.00085702 1.01913e-20) -(2.98532 0.0176447 -5.77695e-21) -(3.14337 0.0356441 9.79326e-21) -(3.30971 0.0549076 3.82852e-21) -(3.48468 0.07548 -5.61135e-22) -(3.66872 0.0973604 -4.53331e-21) -(3.86209 0.120602 9.70776e-21) -(4.0657 0.145061 5.96119e-21) -(4.27914 0.171024 -7.04266e-21) -(4.5056 0.19767 1.81451e-20) -(4.74019 0.226706 2.75925e-21) -(4.99803 0.253733 -3.6472e-21) -(5.24857 0.287512 -6.62394e-21) -(5.57011 0.30631 -8.93446e-21) -(5.79255 0.343833 -1.73641e-21) -(6.31471 0.327718 -5.00166e-21) -(1.93485 -0.142253 -1.71173e-21) -(2.02763 -0.131902 5.73406e-22) -(2.12025 -0.121678 1.54842e-21) -(2.22043 -0.110952 1.35506e-21) -(2.32648 -0.0997773 -2.22149e-21) -(2.43885 -0.0880046 1.13153e-21) -(2.55766 -0.0755048 -1.85288e-21) -(2.68317 -0.0621402 5.09953e-21) -(2.81566 -0.0477876 2.64867e-21) -(2.9554 -0.0323372 3.27497e-21) -(3.10273 -0.0156962 5.61446e-22) -(3.25794 0.00221107 6.58162e-23) -(3.42139 0.0214377 7.86237e-21) -(3.59339 0.0420255 -1.56064e-21) -(3.77441 0.0639734 -1.84922e-21) -(3.96471 0.0873201 -4.64171e-21) -(4.16522 0.111934 1.25958e-22) -(4.37555 0.13804 3.89769e-21) -(4.59886 0.164913 7.34047e-21) -(4.83036 0.193978 5.17436e-21) -(5.08496 0.221373 -2.72096e-21) -(5.3326 0.25449 -4.87167e-21) -(5.64978 0.274348 -8.67513e-21) -(5.87053 0.308731 4.89857e-22) -(6.37734 0.29625 -1.79541e-21) -(2.08246 -0.170193 -3.81418e-23) -(2.17342 -0.160876 -1.02311e-21) -(2.26394 -0.15136 1.39703e-21) -(2.36181 -0.141277 2.18157e-22) -(2.46537 -0.130636 5.65082e-21) -(2.57513 -0.119319 -3.41557e-21) -(2.69122 -0.10721 -2.57581e-21) -(2.81393 -0.0941791 2.43869e-21) -(2.94352 -0.080108 2.44362e-21) -(3.0803 -0.0648875 -2.06721e-21) -(3.22457 -0.0484241 4.50863e-21) -(3.37664 -0.0306414 -5.76529e-21) -(3.53687 -0.0114861 2.48865e-21) -(3.70559 0.00908051 2.67435e-21) -(3.88326 0.0310568 -8.32391e-22) -(4.07016 0.0544672 -2.32352e-21) -(4.26721 0.079191 1.00453e-21) -(4.47405 0.105395 1.72135e-21) -(4.69385 0.132446 -3.13848e-22) -(4.92187 0.16149 -4.7887e-21) -(5.17283 0.189217 2.52035e-21) -(5.41714 0.221635 -1.58992e-21) -(5.72962 0.242599 -5.5741e-21) -(5.94801 0.274014 -4.30215e-21) -(6.44064 0.265834 -1.60926e-21) -(2.23693 -0.197602 -3.29968e-22) -(2.3259 -0.189172 3.77149e-21) -(2.41418 -0.1803 2.33215e-21) -(2.50957 -0.170822 5.76021e-21) -(2.61048 -0.160703 6.72476e-21) -(2.71743 -0.149846 1.52941e-21) -(2.8306 -0.138141 -1.4114e-21) -(2.95027 -0.125465 1.91156e-21) -(3.07674 -0.111699 2.66342e-21) -(3.21028 -0.0967343 -5.98963e-21) -(3.35123 -0.0804762 -2.46723e-21) -(3.49989 -0.0628478 2.71993e-21) -(3.65661 -0.0437956 3.08738e-21) -(3.82174 -0.0232841 4.91302e-21) -(3.99574 -0.00131594 6.716e-21) -(4.17891 0.0221192 6.61784e-22) -(4.37218 0.0469114 -2.27713e-22) -(4.57521 0.0731683 9.07835e-21) -(4.79114 0.100354 3.37577e-21) -(5.01533 0.129332 1.15306e-21) -(5.2623 0.157352 -4.63473e-21) -(5.50288 0.189051 -3.34784e-21) -(5.81032 0.211141 -3.43007e-21) -(6.02581 0.239777 -5.82491e-21) -(6.50519 0.23634 -3.10464e-21) -(2.39855 -0.224406 8.64472e-23) -(2.48528 -0.216752 2.27577e-21) -(2.57116 -0.208471 2.12734e-21) -(2.66389 -0.199564 5.51558e-21) -(2.76195 -0.189952 1.85445e-21) -(2.8659 -0.179557 2.49433e-21) -(2.97594 -0.168267 -1.12238e-21) -(3.09237 -0.155962 1.84539e-21) -(3.21546 -0.142522 1.83187e-21) -(3.34554 -0.127836 -3.4588e-21) -(3.4829 -0.111809 4.68452e-21) -(3.62788 -0.0943622 3.52243e-21) -(3.78083 -0.0754426 1.87441e-21) -(3.94209 -0.0550183 8.23426e-21) -(4.11213 -0.0330928 5.0344e-21) -(4.29127 -0.00966992 6.57543e-21) -(4.48045 0.0151508 2.2008e-21) -(4.67934 0.0414199 5.82548e-21) -(4.89109 0.0686959 5.30075e-21) -(5.11111 0.0975676 -6.87192e-21) -(5.35374 0.125841 3.69889e-22) -(5.59025 0.156811 -5.01672e-22) -(5.89235 0.180028 -3.36051e-21) -(6.10448 0.206076 -4.86764e-21) -(6.57135 0.20766 -2.58362e-21) -(2.56746 -0.250534 3.15539e-21) -(2.6517 -0.243574 2.95982e-21) -(2.73496 -0.235844 2.76188e-21) -(2.82482 -0.22748 1.28089e-22) -(2.91985 -0.218365 2.09025e-21) -(3.0206 -0.208432 -1.35922e-21) -(3.12731 -0.197566 2.94408e-21) -(3.24026 -0.185646 -1.21242e-21) -(3.35977 -0.17255 -5.4818e-22) -(3.48613 -0.158165 2.41618e-21) -(3.61968 -0.142392 4.47209e-21) -(3.76072 -0.125152 2.69248e-21) -(3.90963 -0.106394 1.72877e-21) -(4.06675 -0.0860866 5.13592e-21) -(4.23257 -0.0642366 4.64907e-21) -(4.40739 -0.0408614 -4.55948e-22) -(4.59218 -0.0160504 6.00068e-22) -(4.78664 0.0101913 4.06089e-21) -(4.9939 0.0375151 4.86074e-21) -(5.20944 0.0662428 -2.49567e-21) -(5.44741 0.0947298 -6.31794e-21) -(5.67954 0.124967 -2.27203e-21) -(5.97599 0.149301 -3.14279e-21) -(6.1844 0.172941 -2.57641e-21) -(6.63935 0.179702 -2.60257e-21) -(2.7437 -0.275925 2.99943e-21) -(2.82516 -0.269597 2.71538e-21) -(2.90559 -0.262388 2.18574e-21) -(2.99236 -0.254548 2.11687e-21) -(3.08414 -0.245922 -2.46509e-21) -(3.18149 -0.236452 -3.95102e-22) -(3.28465 -0.226019 2.15044e-21) -(3.39393 -0.214499 -4.05396e-22) -(3.50963 -0.201765 5.14904e-22) -(3.63206 -0.1877 -9.32392e-22) -(3.76155 -0.172203 3.01825e-21) -(3.89843 -0.155196 1.57933e-21) -(4.04305 -0.136624 1.17565e-21) -(4.19577 -0.116463 3.48346e-21) -(4.35709 -0.0947204 2.8452e-21) -(4.52734 -0.0714267 -3.11954e-22) -(4.70747 -0.0466625 6.68515e-22) -(4.89722 -0.0204862 3.02487e-21) -(5.09968 0.00684395 3.55422e-21) -(5.31047 0.0353923 1.66075e-21) -(5.54347 0.0640514 -3.82702e-21) -(5.77091 0.0935569 -3.23971e-21) -(6.06144 0.118987 1.08069e-21) -(6.26582 0.140386 -3.09261e-22) -(6.70932 0.152392 -1.07671e-21) -(2.92723 -0.300517 7.89436e-22) -(3.00562 -0.294777 1.57693e-21) -(3.08299 -0.288072 1.50614e-21) -(3.16643 -0.280741 2.32772e-21) -(3.25475 -0.272604 -1.62293e-21) -(3.34849 -0.263603 3.14929e-21) -(3.44789 -0.253614 -2.72518e-21) -(3.55328 -0.242507 2.55832e-21) -(3.66496 -0.230152 1.93159e-21) -(3.78324 -0.216427 1.2101e-21) -(3.90846 -0.201228 -5.91034e-22) -(4.04093 -0.184476 -7.61166e-22) -(4.18103 -0.166116 4.51852e-22) -(4.32912 -0.146129 2.4688e-21) -(4.4857 -0.124524 -4.40515e-22) -(4.6511 -0.101345 3.8264e-21) -(4.82631 -0.0766632 2.34416e-21) -(5.01109 -0.0505889 2.45171e-21) -(5.20849 -0.0232932 2.47756e-21) -(5.41425 0.0050422 3.48196e-21) -(5.642 0.0338324 2.23133e-22) -(5.86449 0.0626086 -8.46761e-22) -(6.14882 0.0891073 7.62766e-22) -(6.3489 0.108412 -3.28187e-22) -(6.78135 0.125662 -6.34464e-22) -(3.11794 -0.324251 -6.84962e-22) -(3.19297 -0.319068 5.12322e-22) -(3.26703 -0.312858 1.58395e-21) -(3.34691 -0.306033 -9.22522e-22) -(3.43155 -0.29839 1.1103e-21) -(3.52146 -0.289868 6.21489e-21) -(3.61689 -0.280336 2.78329e-21) -(3.71818 -0.269659 3.58389e-21) -(3.82563 -0.257701 3.092e-21) -(3.93956 -0.244335 -1.34903e-21) -(4.06028 -0.229454 -4.32627e-21) -(4.18814 -0.212979 -2.64867e-21) -(4.32349 -0.194856 -3.29579e-23) -(4.46671 -0.17507 2.10806e-21) -(4.61831 -0.153632 -2.99173e-22) -(4.77865 -0.130599 -2.84717e-21) -(4.94869 -0.106035 5.19833e-22) -(5.12824 -0.0800985 1.92703e-21) -(5.32033 -0.0528771 2.30482e-21) -(5.5208 -0.024787 2.78523e-21) -(5.74302 0.00409314 -9.01516e-22) -(5.96032 0.0321424 -2.59715e-22) -(6.23821 0.0596779 1.10151e-21) -(6.43376 0.0770136 1.50073e-21) -(6.85548 0.0994584 -6.8448e-22) -(3.3157 -0.347066 1.83443e-21) -(3.38706 -0.342422 -1.74803e-21) -(3.45757 -0.33671 3.29614e-22) -(3.53365 -0.330395 -2.31954e-22) -(3.61438 -0.323256 1.07025e-21) -(3.70023 -0.315228 -8.41208e-22) -(3.79149 -0.30617 3.73041e-21) -(3.88847 -0.295942 7.72469e-22) -(3.99149 -0.284399 1.86543e-21) -(4.10085 -0.271413 -1.65164e-21) -(4.21688 -0.256872 -5.13274e-22) -(4.33991 -0.240696 1.63671e-21) -(4.4703 -0.222834 1.0338e-21) -(4.60844 -0.203275 5.24491e-22) -(4.75484 -0.182032 2.20034e-21) -(4.90988 -0.159176 4.37521e-21) -(5.07452 -0.134764 2.61278e-21) -(5.24861 -0.109001 3.13111e-21) -(5.43514 -0.0818924 -1.29527e-21) -(5.63009 -0.0540797 -1.95177e-23) -(5.84653 -0.0251493 2.20506e-21) -(6.0584 0.00217224 -7.18883e-22) -(6.32962 0.0307148 5.15779e-22) -(6.52044 0.0461717 1.33284e-21) -(6.93173 0.073745 2.53164e-22) -(3.52031 -0.368903 9.02217e-22) -(3.58771 -0.364789 1.66538e-21) -(3.65442 -0.359585 -6.6596e-22) -(3.72644 -0.353792 -3.36957e-22) -(3.80302 -0.347178 -1.93612e-21) -(3.88461 -0.339663 -1.37309e-21) -(3.97148 -0.331101 1.28851e-21) -(4.06396 -0.321342 1.18945e-21) -(4.16234 -0.310237 1.14868e-21) -(4.26694 -0.29765 1.83815e-21) -(4.37807 -0.28347 5.0309e-22) -(4.49607 -0.267615 7.22997e-22) -(4.6213 -0.250038 8.5334e-22) -(4.75416 -0.230731 -2.46225e-22) -(4.89514 -0.209711 2.43349e-21) -(5.04466 -0.187063 3.51876e-21) -(5.20369 -0.162836 2.57476e-21) -(5.3721 -0.137279 1.54056e-21) -(5.55285 -0.110322 3.11053e-21) -(5.74206 -0.0828178 6.14413e-22) -(5.95248 -0.0538756 3.69099e-21) -(6.15873 -0.0272847 1.2079e-21) -(6.42306 0.00223698 1.21807e-21) -(6.60896 0.0158765 1.30076e-21) -(7.0101 0.0484965 6.37066e-22) -(3.73155 -0.389702 -1.18251e-21) -(3.79468 -0.38612 -4.88803e-22) -(3.85733 -0.381446 -2.44252e-22) -(3.92505 -0.3762 -2.97357e-23) -(3.99726 -0.370136 -1.93564e-21) -(4.07436 -0.363163 -1.34562e-21) -(4.15664 -0.355125 4.5804e-22) -(4.24441 -0.345862 1.81397e-21) -(4.33796 -0.335218 -4.01437e-22) -(4.43761 -0.323055 -2.18829e-22) -(4.54365 -0.309259 2.25946e-22) -(4.65643 -0.29375 2.81023e-22) -(4.77631 -0.276482 7.81485e-22) -(4.90368 -0.257453 -4.05063e-22) -(5.03906 -0.236686 1.15018e-21) -(5.18286 -0.214275 -4.56034e-23) -(5.33606 -0.190266 1.53558e-21) -(5.4986 -0.164948 1.29044e-21) -(5.67335 -0.13818 1.09175e-21) -(5.85662 -0.111008 3.76179e-21) -(6.0608 -0.0821001 3.7321e-21) -(6.26124 -0.0562159 1.19925e-21) -(6.51849 -0.0257936 1.5701e-21) -(6.69928 -0.0138075 1.28704e-21) -(7.0906 0.0235706 6.63822e-22) -(3.94992 -0.409461 -9.84976e-22) -(4.00878 -0.406452 -6.87221e-22) -(4.06743 -0.402383 -7.34335e-23) -(4.13093 -0.397758 -3.80299e-22) -(4.19887 -0.392329 -1.05924e-21) -(4.2716 -0.385984 1.84786e-21) -(4.34942 -0.378559 1.05731e-21) -(4.43263 -0.369884 2.07687e-21) -(4.52153 -0.359798 6.47286e-23) -(4.61639 -0.348159 -7.8257e-22) -(4.71753 -0.334852 9.67017e-23) -(4.82527 -0.3198 5.03649e-23) -(4.93998 -0.302961 9.15548e-22) -(5.06206 -0.28434 -5.87892e-22) -(5.19202 -0.263965 -6.444e-24) -(5.3303 -0.241943 -1.56122e-22) -(5.47787 -0.218322 1.76392e-21) -(5.63471 -0.19342 9.93556e-22) -(5.80365 -0.167051 1.65871e-21) -(5.98116 -0.140404 1.23076e-21) -(6.17926 -0.111819 2.03726e-21) -(6.37407 -0.0867706 2.0401e-21) -(6.62438 -0.0559507 -2.66978e-23) -(6.80027 -0.0453318 1.21147e-21) -(7.1821 -0.00429456 4.32952e-22) -(4.17505 -0.428085 1.3679e-21) -(4.22971 -0.425699 1.23307e-24) -(4.28446 -0.422315 2.49592e-22) -(4.3439 -0.418391 -6.22463e-22) -(4.40771 -0.413684 5.44585e-22) -(4.47625 -0.408059 1.37916e-22) -(4.54981 -0.401339 2.24967e-22) -(4.62867 -0.393347 2.74389e-22) -(4.71311 -0.383916 -1.69135e-21) -(4.8034 -0.372901 2.12361e-22) -(4.89986 -0.360189 3.18399e-22) -(5.00278 -0.345706 1.6814e-21) -(5.11254 -0.329415 8.51409e-22) -(5.22953 -0.31133 1.25848e-21) -(5.35429 -0.291489 2.2845e-21) -(5.48724 -0.270009 3.28023e-21) -(5.62935 -0.246944 3.50015e-21) -(5.78067 -0.222638 7.63797e-22) -(5.94393 -0.196882 1.32379e-21) -(6.11582 -0.170951 1.33377e-21) -(6.30794 -0.14299 1.2549e-21) -(6.49726 -0.118877 1.58423e-21) -(6.7406 -0.0882325 6.33132e-22) -(6.91182 -0.0785202 1.45036e-21) -(7.28398 -0.0352866 9.45245e-22) -(4.40571 -0.445427 -5.89367e-22) -(4.4559 -0.443694 6.5837e-22) -(4.50655 -0.44104 -5.99376e-22) -(4.5617 -0.437863 -1.15378e-22) -(4.62121 -0.433919 1.51958e-21) -(4.68538 -0.429053 -1.06784e-21) -(4.7545 -0.423073 -5.21309e-22) -(4.82885 -0.415795 -1.4641e-21) -(4.90868 -0.407044 -1.64834e-22) -(4.99427 -0.396675 -1.96161e-21) -(5.08589 -0.384577 -5.7351e-22) -(5.18385 -0.370679 1.09549e-21) -(5.28852 -0.354955 4.49872e-22) -(5.40029 -0.337424 1.69135e-21) -(5.51968 -0.318135 1.47709e-21) -(5.64716 -0.297217 2.12929e-21) -(5.78368 -0.274734 3.04943e-21) -(5.92932 -0.251046 3.45231e-21) -(6.08676 -0.225933 1.33025e-22) -(6.25288 -0.200734 3.94237e-22) -(6.43885 -0.173436 6.96846e-22) -(6.62254 -0.15023 1.24385e-21) -(6.85876 -0.119838 7.90733e-22) -(7.0253 -0.110898 5.80343e-22) -(7.38775 -0.0657376 1.16737e-21) -(4.64141 -0.461418 -1.47119e-21) -(4.68687 -0.460375 -5.78256e-22) -(4.7332 -0.458508 -3.33383e-22) -(4.78388 -0.45613 -2.6385e-22) -(4.8389 -0.453001 2.42808e-23) -(4.89853 -0.44894 3.58014e-22) -(4.96306 -0.443742 -2.91712e-22) -(5.03275 -0.437211 -8.91299e-22) -(5.10783 -0.42917 6.39504e-22) -(5.18856 -0.419472 1.18081e-21) -(5.27522 -0.408009 -9.0002e-22) -(5.36809 -0.394718 -1.32375e-21) -(5.46753 -0.379579 -2.76092e-22) -(5.57395 -0.362623 1.39732e-22) -(5.68786 -0.343908 1.81197e-21) -(5.80973 -0.323577 2.91592e-21) -(5.94052 -0.301701 1.07829e-22) -(6.08036 -0.27866 2.87326e-21) -(6.23184 -0.25422 3.07008e-21) -(6.39206 -0.229778 6.97945e-22) -(6.57174 -0.203177 1.83925e-21) -(6.74968 -0.180882 1.8162e-21) -(6.97868 -0.150778 8.43903e-22) -(7.14047 -0.142608 7.81955e-22) -(7.49326 -0.095636 9.8029e-22) -(4.88158 -0.47599 -5.91628e-22) -(4.92207 -0.475684 -1.82846e-21) -(4.96386 -0.474669 -9.27763e-22) -(5.00989 -0.473153 -2.43566e-22) -(5.06025 -0.470897 -3.90242e-22) -(5.11519 -0.467694 -6.42954e-23) -(5.17498 -0.463322 -6.64811e-22) -(5.23987 -0.457577 -3.20749e-22) -(5.31007 -0.450278 1.23207e-22) -(5.38582 -0.441278 -1.15392e-24) -(5.46738 -0.430474 -6.87829e-22) -(5.55504 -0.417811 -5.96081e-22) -(5.64914 -0.403279 5.49973e-23) -(5.75008 -0.386919 3.21137e-22) -(5.85839 -0.368802 -3.24635e-22) -(5.97454 -0.349082 4.25663e-22) -(6.09949 -0.32784 2.67757e-22) -(6.23341 -0.305472 2.15504e-21) -(6.37882 -0.281738 1.33409e-21) -(6.53303 -0.258078 2.22607e-21) -(6.7063 -0.232212 1.96495e-21) -(6.8784 -0.210831 1.61899e-21) -(7.1001 -0.181068 1.36318e-21) -(7.25711 -0.173651 4.95124e-22) -(7.6003 -0.125042 4.14509e-22) -(5.12552 -0.489075 -4.92726e-22) -(5.16084 -0.489564 -2.99034e-22) -(5.19789 -0.489475 -7.68997e-22) -(5.23911 -0.488893 -7.89489e-22) -(5.28466 -0.487576 5.79229e-22) -(5.33476 -0.485287 6.93976e-23) -(5.38969 -0.481792 5.2196e-22) -(5.44964 -0.476875 -4.59933e-22) -(5.51484 -0.470352 -6.61647e-22) -(5.5855 -0.46208 5.68717e-23) -(5.66186 -0.451962 5.15867e-22) -(5.74419 -0.43995 2.32082e-22) -(5.83285 -0.426047 -8.51497e-23) -(5.92821 -0.410306 1.21791e-21) -(6.03081 -0.39281 1.53556e-21) -(6.14115 -0.373726 1.31137e-21) -(6.26015 -0.353147 5.21386e-22) -(6.38807 -0.33148 1.68803e-21) -(6.52731 -0.308484 1.84333e-21) -(6.67541 -0.285631 1.91509e-21) -(6.84219 -0.26054 1.51888e-21) -(7.00837 -0.240074 1.34858e-21) -(7.2227 -0.210722 1.13266e-21) -(7.3749 -0.204023 7.30932e-22) -(7.70861 -0.154008 4.85358e-22) -(5.37243 -0.500606 1.15266e-22) -(5.40237 -0.501961 -2.13841e-22) -(5.43452 -0.502883 -3.23478e-22) -(5.47079 -0.503316 -5.32195e-22) -(5.51139 -0.503008 6.64416e-23) -(5.55655 -0.501698 5.50643e-22) -(5.60649 -0.499133 1.02861e-22) -(5.66142 -0.495089 -4.10862e-22) -(5.72152 -0.48938 1.91652e-22) -(5.78698 -0.481866 9.93698e-22) -(5.85804 -0.47246 5.29251e-22) -(5.93496 -0.461125 4.67516e-22) -(6.01808 -0.447874 2.4817e-22) -(6.10778 -0.432776 5.06194e-22) -(6.2046 -0.415926 1.62381e-21) -(6.30903 -0.397505 8.43873e-22) -(6.42202 -0.377616 7.0404e-22) -(6.54385 -0.35668 1.77413e-22) -(6.67685 -0.334456 1.59603e-21) -(6.81878 -0.312434 1.46206e-21) -(6.979 -0.28816 1.84343e-21) -(7.13919 -0.268609 1.45136e-21) -(7.34612 -0.239751 1.21975e-21) -(7.4935 -0.233726 4.73126e-22) -(7.81785 -0.182575 1.65211e-22) -(5.62131 -0.510519 -3.76492e-23) -(5.64572 -0.512827 1.98026e-22) -(5.67283 -0.514856 -2.79964e-22) -(5.70404 -0.516393 -3.62919e-22) -(5.73961 -0.517172 -4.85286e-22) -(5.77973 -0.516907 -2.17065e-22) -(5.82461 -0.515328 1.71272e-22) -(5.87442 -0.512204 -7.418e-23) -(5.92934 -0.507347 4.20637e-23) -(5.98954 -0.500626 2.31079e-22) -(6.05523 -0.491961 8.41162e-22) -(6.12666 -0.481328 3.47921e-22) -(6.20417 -0.468756 2.63964e-22) -(6.28815 -0.454325 4.02069e-22) -(6.37912 -0.438148 9.39141e-22) -(6.4776 -0.420416 8.60372e-22) -(6.58452 -0.401248 8.77326e-22) -(6.7002 -0.38107 9.46837e-24) -(6.82692 -0.359652 6.70274e-22) -(6.96262 -0.338487 9.82375e-22) -(7.11623 -0.315076 1.1492e-21) -(7.27041 -0.296442 1.04657e-21) -(7.46994 -0.268169 9.02669e-22) -(7.61249 -0.262768 4.71534e-22) -(7.9276 -0.210782 1.07705e-22) -(5.87097 -0.518752 -1.20499e-22) -(5.88976 -0.522118 -1.49653e-22) -(5.91171 -0.525358 -2.22347e-22) -(5.93781 -0.528096 -2.22803e-22) -(5.96828 -0.530044 -5.19397e-22) -(6.00331 -0.530893 -4.32746e-22) -(6.04308 -0.530358 -5.3318e-23) -(6.08775 -0.5282 -4.18728e-23) -(6.13744 -0.524236 -3.20504e-23) -(6.19232 -0.51834 2.53954e-22) -(6.2526 -0.510444 5.08971e-22) -(6.3185 -0.500541 8.24884e-22) -(6.39037 -0.488672 5.23352e-22) -(6.46859 -0.474935 3.30975e-22) -(6.55367 -0.459456 6.07459e-22) -(6.64617 -0.442441 7.56535e-22) -(6.74698 -0.424023 8.16307e-22) -(6.8565 -0.404635 2.52296e-22) -(6.97691 -0.384057 2.5741e-22) -(7.10637 -0.363778 8.83966e-22) -(7.25336 -0.341272 7.55729e-22) -(7.4015 -0.32357 6.27825e-22) -(7.59365 -0.295958 5.63494e-22) -(7.73141 -0.291187 2.79957e-22) -(8.03741 -0.238604 -4.01577e-23) -(6.11803 -0.525207 -1.10027e-22) -(6.1311 -0.529748 -4.34485e-22) -(6.14778 -0.534294 -3.13596e-22) -(6.16867 -0.538317 -2.27713e-22) -(6.19395 -0.541499 -3.20928e-22) -(6.2238 -0.54351 -3.04638e-22) -(6.25837 -0.544054 -4.31136e-22) -(6.29777 -0.542886 -1.46674e-22) -(6.34213 -0.539828 -4.41055e-25) -(6.39159 -0.534764 -8.19557e-24) -(6.44634 -0.527639 3.01383e-22) -(6.5066 -0.518462 9.46921e-22) -(6.57271 -0.50729 5.9863e-22) -(6.64505 -0.494238 1.67912e-22) -(6.72415 -0.479448 4.07787e-22) -(6.81056 -0.463136 7.16621e-22) -(6.90517 -0.445449 8.05474e-22) -(7.00842 -0.426829 2.44872e-22) -(7.12242 -0.407061 -3.0961e-23) -(7.24555 -0.387636 6.5194e-22) -(7.38585 -0.365982 3.07961e-22) -(7.52788 -0.349192 1.97542e-22) -(7.71263 -0.322121 2.30954e-22) -(7.84553 -0.318143 3.09096e-23) -(8.1425 -0.26471 -2.17227e-22) -(6.36061 -0.529938 -8.66386e-23) -(6.36797 -0.535778 -7.01209e-22) -(6.37931 -0.541725 -8.39134e-22) -(6.39497 -0.547115 -3.58627e-22) -(6.41503 -0.551591 -2.50642e-22) -(6.43965 -0.554811 -1.61709e-22) -(6.46896 -0.556465 -7.80458e-22) -(6.50305 -0.556308 -1.49951e-22) -(6.54202 -0.554167 1.14177e-22) -(6.586 -0.549938 5.10165e-23) -(6.63515 -0.543585 -2.47659e-22) -(6.68971 -0.535129 2.53455e-22) -(6.75 -0.524648 9.33624e-22) -(6.81641 -0.512271 1.04418e-22) -(6.88946 -0.498156 3.08892e-22) -(6.96973 -0.482532 7.97498e-22) -(7.05811 -0.465559 7.12656e-22) -(7.15507 -0.447683 5.06199e-22) -(7.26265 -0.428695 -2.86699e-22) -(7.37942 -0.410092 3.31005e-22) -(7.51303 -0.389239 3.82524e-22) -(7.64896 -0.373338 -3.78722e-23) -(7.82637 -0.346701 -7.09228e-23) -(7.95437 -0.343655 -3.17971e-22) -(8.24268 -0.289158 -3.75652e-22) -(6.59883 -0.533015 -3.25743e-22) -(6.60068 -0.540302 -2.04202e-22) -(6.60684 -0.547758 -4.07231e-22) -(6.61742 -0.554615 4.34008e-23) -(6.63241 -0.560469 -1.09883e-22) -(6.65195 -0.564964 -2.18969e-22) -(6.67614 -0.567782 -2.30313e-22) -(6.70505 -0.56868 -3.42319e-22) -(6.73875 -0.567494 -1.44566e-22) -(6.77735 -0.564134 5.30752e-22) -(6.82101 -0.558582 3.70284e-22) -(6.86997 -0.550877 -2.23621e-22) -(6.92454 -0.541116 2.91547e-22) -(6.98512 -0.529445 7.53489e-22) -(7.05224 -0.516036 6.34305e-22) -(7.12647 -0.501132 9.08931e-22) -(7.20871 -0.484906 4.55327e-22) -(7.29949 -0.467808 1.02821e-21) -(7.40074 -0.449638 -7.49022e-23) -(7.51127 -0.431888 -1.20691e-21) -(7.6383 -0.411882 2.94861e-22) -(7.76822 -0.396892 -7.07212e-23) -(7.93843 -0.370774 -7.33196e-22) -(8.06164 -0.368673 -8.07483e-22) -(8.34158 -0.313394 -4.65617e-22) -(6.83015 -0.534462 6.56088e-22) -(6.82684 -0.543357 5.30742e-22) -(6.82807 -0.552431 1.31542e-22) -(6.83384 -0.56085 -3.45306e-22) -(6.84403 -0.568159 -5.00717e-22) -(6.85874 -0.573991 -7.10273e-22) -(6.87805 -0.578023 7.4001e-22) -(6.90199 -0.580015 8.10638e-22) -(6.93063 -0.579816 7.58983e-22) -(6.96405 -0.577355 -1.16061e-21) -(7.00242 -0.572631 -7.91395e-22) -(7.04595 -0.565705 1.91967e-21) -(7.09498 -0.556691 8.15978e-22) -(7.1499 -0.545753 1.40191e-21) -(7.21125 -0.533081 1.54617e-21) -(7.27962 -0.518929 -8.23799e-22) -(7.3559 -0.503482 -3.38322e-22) -(7.44065 -0.487194 1.37279e-22) -(7.53575 -0.469878 5.12195e-22) -(7.64019 -0.45301 -1.97882e-22) -(7.76079 -0.4339 -1.5878e-21) -(7.88487 -0.419831 -2.02393e-22) -(8.04803 -0.39434 -9.83875e-23) -(8.1666 -0.393143 -1.39099e-21) -(8.43849 -0.337452 -1.56595e-21) -(7.05135 -0.53434 2.81849e-22) -(7.04341 -0.545009 -8.02766e-22) -(7.04014 -0.555803 -6.44966e-22) -(7.04152 -0.565872 1.76059e-22) -(7.04732 -0.574706 -5.95371e-22) -(7.05759 -0.581927 -1.62985e-22) -(7.07238 -0.587214 -1.86169e-21) -(7.0917 -0.590334 3.72926e-22) -(7.1156 -0.591151 6.59499e-22) -(7.14415 -0.589613 1.70859e-22) -(7.17751 -0.585741 5.36935e-22) -(7.21591 -0.579618 4.45567e-22) -(7.25967 -0.571377 -6.71449e-23) -(7.3092 -0.561201 8.35009e-22) -(7.36504 -0.549294 9.06045e-22) -(7.4278 -0.535922 1.35992e-21) -(7.49836 -0.521287 9.23082e-22) -(7.57733 -0.505841 -1.48859e-21) -(7.66652 -0.489413 -1.19202e-21) -(7.7651 -0.473455 -5.2784e-22) -(7.8795 -0.45529 -1.79634e-21) -(7.99795 -0.442153 -5.58894e-22) -(8.15429 -0.417395 -5.31096e-22) -(8.2684 -0.417068 -1.72063e-21) -(8.5326 -0.361328 -1.65031e-21) -(7.25838 -0.532759 5.92349e-22) -(7.24654 -0.545361 4.49817e-23) -(7.23943 -0.557969 6.15647e-22) -(7.23704 -0.569762 -1.37702e-21) -(7.23905 -0.580179 -2.43648e-21) -(7.24544 -0.588831 6.08413e-23) -(7.25625 -0.595403 -1.66827e-21) -(7.27147 -0.599672 -2.17823e-21) -(7.29111 -0.601523 -9.19165e-22) -(7.31525 -0.600926 2.49843e-21) -(7.34403 -0.597925 1.66988e-21) -(7.37771 -0.592625 2.15833e-21) -(7.41659 -0.58518 2.91321e-21) -(7.46112 -0.57579 1.76537e-21) -(7.51183 -0.564675 9.93673e-22) -(7.56935 -0.552114 6.17496e-22) -(7.63454 -0.53832 -3.82173e-22) -(7.70807 -0.523745 2.17528e-21) -(7.79167 -0.50824 -7.2034e-22) -(7.8847 -0.49322 -1.48166e-21) -(7.9932 -0.476046 -3.83872e-22) -(8.10633 -0.463856 5.06769e-22) -(8.25613 -0.439935 -1.49175e-21) -(8.36605 -0.440453 -1.51419e-21) -(8.62292 -0.385022 -1.17625e-21) -(7.44612 -0.52982 1.33177e-21) -(7.4314 -0.54453 8.57733e-22) -(7.42139 -0.559056 1.94384e-21) -(7.41615 -0.572639 -1.41422e-21) -(7.41522 -0.584685 -3.1734e-21) -(7.41855 -0.594798 -4.18939e-21) -(7.42614 -0.602672 -4.6854e-22) -(7.43796 -0.608103 1.78599e-21) -(7.45402 -0.610997 1.94427e-21) -(7.47438 -0.611351 -1.70703e-21) -(7.49921 -0.609233 9.15154e-22) -(7.52874 -0.604772 6.88189e-22) -(7.56332 -0.598142 1.33249e-21) -(7.60337 -0.589559 1.10218e-21) -(7.64947 -0.579261 5.97388e-22) -(7.70224 -0.567536 -9.40681e-23) -(7.76255 -0.554612 -1.12304e-21) -(7.8311 -0.540938 5.71471e-22) -(7.90955 -0.526388 1.13804e-21) -(7.99746 -0.512332 1.20307e-22) -(8.10047 -0.496198 -4.44544e-21) -(8.20864 -0.484963 -9.71365e-22) -(8.35227 -0.462 -2.00011e-21) -(8.45835 -0.463307 -1.36439e-22) -(8.70829 -0.408601 1.02382e-22) -(7.61646 -0.52557 -1.54126e-21) -(7.60025 -0.54263 4.47387e-22) -(7.58851 -0.55924 -8.0171e-22) -(7.58141 -0.574733 -1.02961e-21) -(7.57846 -0.588508 1.65494e-21) -(7.57957 -0.60016 8.25471e-22) -(7.5847 -0.609396 8.40994e-22) -(7.59382 -0.616034 1.08461e-22) -(7.60693 -0.62001 1.43051e-21) -(7.62409 -0.621349 1.79814e-21) -(7.64549 -0.620147 3.61758e-21) -(7.67136 -0.616555 3.86317e-21) -(7.70207 -0.61077 1.49237e-21) -(7.73806 -0.603024 2.97569e-22) -(7.7799 -0.59357 -1.35183e-22) -(7.82824 -0.582706 -1.2345e-21) -(7.88394 -0.570673 -1.33078e-21) -(7.94773 -0.557912 -3.44627e-21) -(8.02123 -0.544331 -2.74748e-21) -(8.10416 -0.531228 -6.81066e-22) -(8.20176 -0.51615 -4.82866e-21) -(8.30506 -0.505799 -5.60782e-21) -(8.44254 -0.483883 -1.28687e-21) -(8.5448 -0.485765 3.64313e-22) -(8.78779 -0.43218 1.34438e-22) -(7.75767 -0.520264 -1.98191e-21) -(7.74173 -0.539886 -1.61524e-21) -(7.73005 -0.558717 -1.88342e-21) -(7.7228 -0.576202 8.0937e-22) -(7.71943 -0.591774 1.89088e-21) -(7.71981 -0.605016 2.06541e-21) -(7.72388 -0.615649 2.59337e-21) -(7.73159 -0.62352 -1.00318e-21) -(7.74294 -0.628598 -1.83383e-21) -(7.75801 -0.630942 -7.11492e-21) -(7.77698 -0.630674 -4.14405e-21) -(7.80013 -0.627972 -6.23364e-21) -(7.82783 -0.623053 -2.86454e-21) -(7.86054 -0.616167 -1.71346e-21) -(7.89885 -0.607579 -1.20978e-21) -(7.94342 -0.597595 -3.33088e-21) -(7.99512 -0.586469 -4.1638e-21) -(8.05472 -0.574631 2.92189e-21) -(8.12375 -0.562027 -3.17256e-21) -(8.20215 -0.549863 -2.14214e-21) -(8.29477 -0.535855 -2.36254e-21) -(8.39354 -0.526318 -2.84515e-21) -(8.52526 -0.505539 2.28053e-21) -(8.62389 -0.507774 1.98379e-21) -(8.86066 -0.455714 8.25325e-23) -(7.85422 -0.514769 3.48035e-21) -(7.84024 -0.536946 5.13248e-22) -(7.83048 -0.557978 -1.99832e-21) -(7.82493 -0.577383 -2.83007e-21) -(7.82302 -0.59466 2.94095e-21) -(7.82453 -0.609399 3.50055e-21) -(7.82938 -0.621337 4.24818e-21) -(7.83748 -0.630357 -6.11938e-22) -(7.84881 -0.636467 5.75191e-22) -(7.86348 -0.639759 1.22928e-21) -(7.88166 -0.640385 -4.525e-21) -(7.90367 -0.638547 -4.96847e-21) -(7.92987 -0.634479 -9.94448e-22) -(7.96078 -0.628447 -2.23142e-21) -(7.99697 -0.620729 -1.53548e-21) -(8.03913 -0.611635 -6.96784e-21) -(8.08813 -0.601432 -3.96923e-21) -(8.14477 -0.590537 -8.10504e-21) -(8.21054 -0.578934 -3.51701e-22) -(8.28552 -0.567735 -7.0097e-22) -(8.37425 -0.554843 -5.14327e-22) -(8.46949 -0.546137 2.4236e-21) -(8.59646 -0.526628 -7.02277e-22) -(8.69227 -0.529161 4.86265e-22) -(8.92413 -0.47915 -3.7759e-22) -(7.90764 -0.509395 1.66618e-21) -(7.89638 -0.534105 3.97931e-21) -(7.88956 -0.557333 5.30207e-21) -(7.88686 -0.578591 8.96496e-21) -(7.88765 -0.597469 8.45808e-21) -(7.89164 -0.613588 4.4559e-21) -(7.89867 -0.626711 4.79785e-21) -(7.9086 -0.636766 9.32823e-21) -(7.92139 -0.643804 7.17148e-21) -(7.93713 -0.647956 7.2567e-21) -(7.95603 -0.649404 1.83236e-21) -(7.97837 -0.648373 -1.16443e-21) -(8.00457 -0.645116 -6.94881e-21) -(8.03512 -0.63991 -6.21727e-21) -(8.07064 -0.633042 -3.83323e-21) -(8.11181 -0.624828 3.14265e-21) -(8.15949 -0.615545 -2.30048e-22) -(8.21452 -0.605596 -3.98911e-21) -(8.27833 -0.595004 -2.40382e-21) -(8.35117 -0.584784 -1.74238e-21) -(8.43724 -0.573036 3.34e-21) -(8.53011 -0.565178 1.10184e-21) -(8.65355 -0.547047 -1.28688e-21) -(8.74751 -0.549839 -2.00794e-21) -(8.97592 -0.502329 2.61609e-22) -(7.92597 -0.504146 -1.12631e-21) -(7.91727 -0.531438 -6.86974e-22) -(7.91348 -0.556897 1.76535e-23) -(7.91382 -0.579964 -1.15264e-21) -(7.91759 -0.600352 -6.57281e-21) -(7.92445 -0.617738 -5.12913e-21) -(7.93415 -0.631919 -1.42825e-20) -(7.94651 -0.642878 -1.91409e-20) -(7.96145 -0.650725 -1.72589e-20) -(7.97905 -0.65563 -1.0105e-20) -(7.9995 -0.657809 -5.88165e-21) -(8.02311 -0.657508 -4.90058e-21) -(8.05029 -0.654998 -5.9267e-21) -(8.08154 -0.650568 -7.1209e-21) -(8.11747 -0.644513 -1.47992e-22) -(8.15878 -0.637151 -1.93436e-21) -(8.20632 -0.628768 -3.45457e-21) -(8.26095 -0.619754 -4.8367e-21) -(8.32403 -0.610168 -2.33522e-21) -(8.39594 -0.60093 -2.35795e-21) -(8.48061 -0.590348 9.04813e-21) -(8.57235 -0.583351 6.67981e-21) -(8.69355 -0.566709 -1.65999e-21) -(8.7868 -0.569704 -1.88772e-21) -(9.01343 -0.525169 -6.95425e-22) -(7.91814 -0.498794 -3.63707e-21) -(7.91146 -0.528831 -2.79387e-21) -(7.91035 -0.556587 -3.39381e-21) -(7.9134 -0.581438 1.38588e-21) -(7.9198 -0.60326 -2.4582e-21) -(7.92922 -0.621807 -1.0021e-20) -(7.94133 -0.636923 -4.17969e-21) -(7.95591 -0.648661 1.49847e-21) -(7.97284 -0.657194 -2.47142e-21) -(7.99221 -0.662741 -4.92107e-21) -(8.01423 -0.66555 -3.15048e-21) -(8.03921 -0.665893 -6.04053e-21) -(8.06756 -0.664057 -7.31126e-21) -(8.0998 -0.66034 -7.16743e-21) -(8.13655 -0.655047 -1.49419e-20) -(8.17852 -0.648496 -1.19688e-20) -(8.22654 -0.640982 -8.7574e-21) -(8.28149 -0.632879 -7.66391e-21) -(8.34469 -0.624286 4.76891e-22) -(8.41665 -0.616029 1.04051e-21) -(8.50099 -0.606629 1.72621e-21) -(8.59274 -0.6005 2.70543e-21) -(8.71305 -0.585479 4.92826e-21) -(8.80678 -0.588584 1.17375e-21) -(9.03349 -0.547563 -6.45791e-22) -(7.88938 -0.49304 -5.28246e-22) -(7.88424 -0.526083 2.79119e-23) -(7.88548 -0.55621 -5.63787e-21) -(7.89084 -0.58281 -1.7681e-20) -(7.89938 -0.605982 -2.14546e-20) -(7.91078 -0.625575 -4.05316e-21) -(7.92471 -0.641493 -4.5689e-21) -(7.94086 -0.653876 2.59197e-21) -(7.95912 -0.66297 -4.41287e-21) -(7.97961 -0.669043 -5.22928e-21) -(8.00255 -0.672378 -2.06837e-20) -(8.02828 -0.673273 -1.62596e-20) -(8.05724 -0.672031 -1.15788e-20) -(8.08999 -0.668961 -9.77921e-21) -(8.12717 -0.664373 -7.79609e-21) -(8.16952 -0.658589 -1.27772e-20) -(8.2179 -0.651909 -8.4148e-21) -(8.27324 -0.644698 -6.50427e-21) -(8.33683 -0.637086 -6.49165e-21) -(8.4093 -0.629812 8.20284e-22) -(8.49406 -0.621623 9.97946e-21) -(8.58677 -0.616377 5.21095e-21) -(8.70745 -0.603147 -2.74481e-21) -(8.80296 -0.606222 -1.7933e-21) -(9.03186 -0.569354 -1.97431e-21) -(7.84019 -0.486521 3.21661e-21) -(7.83636 -0.522899 2.40026e-21) -(7.83982 -0.555427 9.00711e-21) -(7.84718 -0.583708 5.53747e-21) -(7.8574 -0.608127 3.11257e-21) -(7.87023 -0.628624 -5.19248e-21) -(7.88527 -0.645185 -1.07554e-20) -(7.9022 -0.658055 -8.24123e-21) -(7.92091 -0.667561 9.02918e-22) -(7.94155 -0.674023 -1.08512e-20) -(7.96437 -0.677761 5.08859e-21) -(7.98977 -0.679099 -6.3152e-21) -(8.01824 -0.678358 -2.77699e-21) -(8.05039 -0.675857 -7.46585e-21) -(8.08693 -0.671914 1.27251e-22) -(8.12867 -0.666854 1.3749e-20) -(8.17657 -0.660984 3.89315e-21) -(8.23162 -0.654658 -3.9999e-21) -(8.29519 -0.648043 1.25621e-20) -(8.36807 -0.641789 1.8267e-20) -(8.45355 -0.634878 -3.87611e-21) -(8.54788 -0.630572 -5.67307e-21) -(8.67014 -0.619374 2.43051e-23) -(8.76883 -0.622264 -9.81739e-22) -(9.00232 -0.590273 -3.48519e-21) -(7.76563 -0.478698 -5.1736e-21) -(7.76339 -0.518871 2.39611e-21) -(7.76932 -0.553755 1.72858e-21) -(7.77864 -0.583563 2.13426e-21) -(7.79022 -0.609064 9.90645e-21) -(7.80397 -0.63027 3.80974e-22) -(7.81947 -0.647265 7.3375e-21) -(7.83633 -0.66042 -1.75879e-21) -(7.85451 -0.670149 -1.4922e-21) -(7.8742 -0.676827 1.42506e-20) -(7.89571 -0.680814 1.51651e-20) -(7.9195 -0.682462 2.38192e-20) -(7.94615 -0.682108 1.65047e-20) -(7.97635 -0.680086 3.45686e-20) -(8.01091 -0.676723 3.34463e-20) -(8.05076 -0.672349 2.50365e-20) -(8.09699 -0.667279 2.75601e-20) -(8.15073 -0.661864 2.35636e-20) -(8.21349 -0.656301 9.15062e-21) -(8.2863 -0.65116 -1.39057e-20) -(8.3724 -0.645661 -1.64359e-20) -(8.4687 -0.642439 -1.28553e-20) -(8.59351 -0.633598 -1.39557e-20) -(8.69677 -0.636219 -7.78737e-21) -(8.93719 -0.609836 -1.26601e-21) -(7.65686 -0.468626 -6.40528e-21) -(7.65586 -0.513186 -2.12937e-20) -(7.66492 -0.550451 -1.69036e-20) -(7.67623 -0.581545 4.72149e-21) -(7.68887 -0.607838 -1.24292e-21) -(7.70302 -0.629447 7.454e-21) -(7.71826 -0.646589 7.5211e-21) -(7.7342 -0.659775 5.76681e-21) -(7.75089 -0.669504 3.68996e-21) -(7.7686 -0.676208 1.70158e-20) -(7.78777 -0.680288 2.65484e-20) -(7.80893 -0.682125 9.08159e-21) -(7.83279 -0.682077 8.94111e-21) -(7.86015 -0.680488 8.68945e-21) -(7.89196 -0.677697 -3.5817e-21) -(7.9293 -0.674039 1.02998e-20) -(7.97339 -0.669839 1.13819e-20) -(8.02554 -0.665439 -4.20269e-21) -(8.08738 -0.661065 -3.22737e-20) -(8.16017 -0.657207 -3.27543e-20) -(8.24718 -0.653319 -3.04093e-20) -(8.34587 -0.651388 -1.74304e-20) -(8.47402 -0.645277 -1.56811e-21) -(8.5828 -0.647567 -3.50075e-23) -(8.83169 -0.627413 8.81801e-22) -(7.49102 -0.454479 8.52684e-21) -(7.49172 -0.503913 2.06667e-20) -(7.50306 -0.54354 2.35871e-20) -(7.51638 -0.575855 1.11925e-20) -(7.5298 -0.602642 1.63059e-20) -(7.54397 -0.62428 6.57656e-21) -(7.55845 -0.641241 5.14707e-21) -(7.57293 -0.654197 2.4021e-21) -(7.58756 -0.663724 1.05395e-21) -(7.60279 -0.670312 -1.02994e-20) -(7.61918 -0.674408 -1.89083e-20) -(7.63744 -0.676422 2.03185e-21) -(7.6584 -0.676732 5.67957e-21) -(7.68305 -0.675697 -1.64926e-20) -(7.71247 -0.673662 -1.16174e-20) -(7.74789 -0.670967 -1.39149e-20) -(7.79064 -0.667935 -7.31171e-21) -(7.84217 -0.664898 1.11955e-20) -(7.90419 -0.662101 1.89224e-20) -(7.97808 -0.659944 2.1989e-20) -(8.06709 -0.658136 2.29595e-20) -(8.16913 -0.657898 1.21139e-20) -(8.30149 -0.655353 7.47288e-21) -(8.41643 -0.657003 7.98947e-21) -(8.67452 -0.644949 5.05601e-21) -(7.23341 -0.434005 -8.32972e-21) -(7.23848 -0.48827 -2.32903e-20) -(7.254 -0.529816 -2.79305e-20) -(7.26871 -0.563183 -1.56114e-20) -(7.28342 -0.590293 -6.87893e-21) -(7.29797 -0.611604 2.24774e-23) -(7.31208 -0.628087 -4.08176e-21) -(7.3256 -0.640631 -1.94626e-20) -(7.33895 -0.649881 -1.38486e-20) -(7.35278 -0.656379 4.2955e-21) -(7.36786 -0.660617 2.523e-21) -(7.38507 -0.663027 1.63318e-20) -(7.40542 -0.663998 1.133e-20) -(7.43 -0.663889 1.51528e-20) -(7.46001 -0.663039 5.30126e-21) -(7.49672 -0.661774 1.88041e-20) -(7.54152 -0.660401 7.99853e-21) -(7.59584 -0.659225 -7.51891e-21) -(7.66138 -0.658495 1.08256e-21) -(7.73952 -0.658515 6.15728e-21) -(7.83339 -0.659242 9.63198e-21) -(7.94106 -0.661112 9.05032e-21) -(8.07968 -0.662665 9.11074e-21) -(8.20163 -0.663729 -4.77048e-21) -(8.46924 -0.660474 1.97054e-22) -(6.90525 -0.410015 -4.95732e-22) -(6.9182 -0.468207 8.27536e-21) -(6.94092 -0.510734 -4.36562e-21) -(6.95939 -0.544713 -2.2565e-20) -(6.97649 -0.57197 -4.68426e-20) -(6.99392 -0.592933 -3.69319e-20) -(7.01033 -0.608974 -4.44594e-20) -(7.02588 -0.62126 -2.24519e-21) -(7.04126 -0.630491 1.15797e-20) -(7.05731 -0.637235 7.96543e-22) -(7.07492 -0.641995 9.16941e-21) -(7.0951 -0.645203 2.54191e-22) -(7.11891 -0.647232 -3.78527e-21) -(7.14748 -0.648423 -1.68663e-20) -(7.18201 -0.649092 -1.2409e-20) -(7.22376 -0.649536 -2.78974e-20) -(7.27405 -0.650039 -2.0251e-20) -(7.33429 -0.650875 2.5971e-20) -(7.40607 -0.652289 1.26481e-20) -(7.49072 -0.654509 5.14556e-21) -(7.59133 -0.657673 6.18664e-21) -(7.70587 -0.661661 5.22986e-21) -(7.85179 -0.666764 1.51615e-21) -(7.98066 -0.667965 2.16467e-20) -(8.25844 -0.671316 1.27811e-20) -(6.52557 -0.384497 2.2061e-20) -(6.55094 -0.445804 6.02413e-21) -(6.58448 -0.488653 1.49594e-20) -(6.61033 -0.522893 2.03401e-20) -(6.6329 -0.550142 1.35045e-20) -(6.65548 -0.570925 -1.02076e-20) -(6.67742 -0.586821 1.63434e-20) -(6.69837 -0.599133 -1.69653e-20) -(6.71924 -0.608654 -2.12475e-20) -(6.74097 -0.615963 -4.24427e-20) -(6.76453 -0.621551 -3.98134e-20) -(6.79093 -0.625824 -4.3755e-20) -(6.82124 -0.629133 -3.00174e-20) -(6.85657 -0.631787 -1.54115e-20) -(6.89806 -0.634075 -1.71224e-20) -(6.94691 -0.636268 4.05956e-22) -(7.00439 -0.638624 -1.47152e-20) -(7.07183 -0.641392 -1.40121e-20) -(7.15078 -0.644811 -1.1298e-20) -(7.24251 -0.649062 -9.5997e-21) -(7.35008 -0.654407 4.86401e-21) -(7.47131 -0.660367 4.40692e-22) -(7.62426 -0.668405 -3.37417e-22) -(7.75903 -0.670343 -3.60909e-21) -(8.04704 -0.67847 2.28222e-21) -(6.11868 -0.359903 -7.88929e-21) -(6.16068 -0.423636 -6.78041e-22) -(6.20814 -0.466308 5.37937e-21) -(6.2442 -0.500495 9.81218e-21) -(6.27589 -0.527493 3.13343e-20) -(6.30605 -0.54812 4.25745e-20) -(6.33556 -0.564112 5.3397e-20) -(6.3644 -0.576683 5.17803e-20) -(6.39314 -0.586674 3.15595e-20) -(6.42276 -0.594698 2.74474e-20) -(6.45424 -0.601219 6.6898e-21) -(6.48856 -0.606614 -1.80191e-20) -(6.52676 -0.611199 -1.52773e-20) -(6.56988 -0.615259 -4.04237e-20) -(6.61902 -0.619054 -2.33567e-20) -(6.67533 -0.622832 -3.70654e-20) -(6.74004 -0.626835 -4.03262e-20) -(6.81441 -0.63129 -4.73199e-20) -(6.9 -0.636436 -2.83379e-20) -(6.998 -0.642422 -1.75808e-20) -(7.11154 -0.649594 -2.48136e-20) -(7.23822 -0.657268 -1.26194e-20) -(7.39692 -0.667634 -7.91282e-21) -(7.5358 -0.670661 6.02664e-21) -(7.83336 -0.682182 3.33428e-21) -(5.70325 -0.337734 -2.29839e-21) -(5.76526 -0.403314 2.35738e-20) -(5.82877 -0.44539 1.73269e-20) -(5.87696 -0.479231 1.82179e-20) -(5.91993 -0.505744 2.52627e-21) -(5.96052 -0.526153 1.35277e-20) -(5.99892 -0.542289 1.61871e-20) -(6.03689 -0.555234 1.38316e-20) -(6.07464 -0.565732 2.89281e-20) -(6.11302 -0.574448 4.08681e-21) -(6.15297 -0.581828 -8.4082e-22) -(6.19546 -0.588216 2.02704e-20) -(6.24146 -0.593901 1.75439e-21) -(6.29198 -0.599144 1.9251e-21) -(6.3481 -0.604187 -7.64252e-22) -(6.41094 -0.609261 -5.36832e-21) -(6.4817 -0.614593 1.30821e-20) -(6.56167 -0.620401 -1.15918e-20) -(6.65236 -0.626919 -1.66127e-20) -(6.75497 -0.634283 -1.43876e-20) -(6.8727 -0.642888 -1.40552e-20) -(7.00289 -0.651955 -9.12225e-21) -(7.16538 -0.664073 -6.19996e-21) -(7.30593 -0.668343 -7.34842e-21) -(7.61199 -0.682309 -2.13858e-21) -(5.28937 -0.318521 -1.76336e-21) -(5.37436 -0.385491 -1.14497e-20) -(5.45548 -0.426636 7.31785e-21) -(5.51717 -0.459816 2.58384e-20) -(5.57274 -0.485684 4.38617e-20) -(5.62505 -0.505761 1.58813e-20) -(5.67405 -0.521944 -1.17697e-20) -(5.72109 -0.535158 -2.33348e-20) -(5.76795 -0.546086 -2.4878e-20) -(5.81479 -0.555321 7.38915e-21) -(5.86258 -0.563337 -9.32781e-21) -(5.91227 -0.570454 -3.28017e-20) -(5.96483 -0.576943 -1.49811e-20) -(6.0213 -0.583047 4.09172e-20) -(6.08274 -0.588994 1.67706e-20) -(6.15028 -0.595006 2.11657e-20) -(6.22516 -0.6013 7.18816e-21) -(6.30866 -0.608086 -8.52097e-21) -(6.40232 -0.615594 -1.07169e-20) -(6.50731 -0.623953 -9.03805e-21) -(6.62693 -0.633582 -3.32871e-21) -(6.7582 -0.643685 -9.46383e-22) -(6.92207 -0.657015 -1.76181e-21) -(7.06159 -0.66253 -2.19446e-20) -(7.37459 -0.67834 -3.36001e-21) -(4.8801 -0.302142 -4.62875e-21) -(4.99122 -0.370201 -7.04532e-21) -(5.09146 -0.41014 -1.74157e-20) -(5.1677 -0.442314 -3.80483e-20) -(5.23663 -0.467361 1.23426e-20) -(5.30099 -0.486958 5.6109e-20) -(5.36065 -0.50294 1.90846e-21) -(5.41689 -0.51619 3.70982e-21) -(5.47156 -0.527273 4.25306e-22) -(5.52537 -0.536727 -1.14051e-20) -(5.57925 -0.545047 1.80768e-20) -(5.63419 -0.552542 6.98152e-21) -(5.6912 -0.559467 -3.18286e-21) -(5.75136 -0.566055 4.23806e-20) -(5.81576 -0.572525 6.59235e-21) -(5.88559 -0.579089 -3.48147e-20) -(5.96211 -0.585958 -1.56621e-20) -(6.04662 -0.593334 -2.11171e-20) -(6.14069 -0.60144 -7.06308e-21) -(6.24545 -0.6104 -2.28598e-21) -(6.36427 -0.620634 1.24811e-20) -(6.4938 -0.631388 9.51128e-21) -(6.65621 -0.645416 -9.28498e-22) -(6.79137 -0.65204 -1.11779e-20) -(7.10966 -0.669373 -1.27561e-20) -(4.47313 -0.288179 -1.57863e-20) -(4.61424 -0.357166 -7.57712e-21) -(4.73537 -0.395571 -6.41787e-21) -(4.82692 -0.426291 -2.99048e-20) -(4.90912 -0.450232 -3.35712e-20) -(4.98477 -0.469054 -2.65914e-20) -(5.05377 -0.48447 1.81556e-20) -(5.1176 -0.49734 3.57792e-20) -(5.17799 -0.508161 1.9943e-20) -(5.23636 -0.517446 2.67389e-20) -(5.29372 -0.525673 1.69751e-20) -(5.35116 -0.533143 3.28989e-20) -(5.40981 -0.540103 6.19792e-22) -(5.47081 -0.546776 -1.40867e-20) -(5.53533 -0.553374 -4.42841e-20) -(5.60461 -0.560099 -4.11771e-20) -(5.67992 -0.567153 -2.17875e-20) -(5.76259 -0.574727 3.6606e-20) -(5.85418 -0.583032 1.09332e-20) -(5.95574 -0.59219 8.5021e-21) -(6.07074 -0.602602 4.08261e-20) -(6.19531 -0.613589 1.856e-20) -(6.35306 -0.627806 -7.6878e-21) -(6.4798 -0.635274 -9.69418e-21) -(6.80163 -0.654038 3.45176e-21) -(4.06106 -0.276055 1.74004e-20) -(4.23726 -0.345921 5.88518e-21) -(4.38108 -0.382231 5.30739e-21) -(4.48772 -0.410766 5.46825e-20) -(4.58168 -0.433063 1.59461e-20) -(4.66625 -0.450596 -6.22345e-21) -(4.74172 -0.464914 4.95967e-21) -(4.80996 -0.476863 4.19578e-21) -(4.8729 -0.486918 2.17306e-20) -(4.93235 -0.495563 3.2497e-22) -(4.98971 -0.503251 4.92297e-21) -(5.04624 -0.510268 1.15287e-20) -(5.10317 -0.516848 -2.79128e-20) -(5.16173 -0.523203 -9.07386e-20) -(5.22315 -0.529533 -1.94737e-20) -(5.28869 -0.536029 -4.33836e-20) -(5.35966 -0.542878 -8.52541e-21) -(5.43734 -0.550256 -1.99576e-20) -(5.52326 -0.558359 6.22396e-21) -(5.61838 -0.5673 2.13561e-20) -(5.7262 -0.577452 -1.80911e-20) -(5.84221 -0.588224 6.8756e-21) -(5.99174 -0.602119 3.7628e-20) -(6.10531 -0.610045 4.1582e-20) -(6.42874 -0.63039 1.20622e-21) -(3.6286 -0.263732 7.22712e-21) -(3.84616 -0.334487 5.32085e-21) -(4.01329 -0.367921 2.21227e-20) -(4.13243 -0.393177 -2.72922e-20) -(4.23413 -0.412979 2.08072e-20) -(4.32304 -0.428502 -9.402e-21) -(4.40017 -0.441064 3.68651e-21) -(4.46805 -0.451476 -3.10774e-20) -(4.52891 -0.4602 -4.97653e-20) -(4.58515 -0.467712 3.1244e-20) -(4.63839 -0.474401 -2.40591e-21) -(4.69007 -0.48053 -8.5829e-21) -(4.74152 -0.486314 4.05908e-20) -(4.79403 -0.491949 3.33003e-20) -(4.84888 -0.497617 7.54805e-20) -(4.9073 -0.50349 4.96632e-20) -(4.97057 -0.509737 3.65544e-20) -(5.03991 -0.516513 3.40016e-21) -(5.11677 -0.523991 2.24249e-20) -(5.20192 -0.532275 4.50093e-20) -(5.29894 -0.541696 1.7892e-20) -(5.40246 -0.551757 1.54986e-20) -(5.53988 -0.564781 2.75446e-20) -(5.63487 -0.572657 4.58422e-20) -(5.95727 -0.59493 7.71386e-21) -(3.13828 -0.242979 3.33418e-21) -(3.40211 -0.315211 4.43095e-21) -(3.58847 -0.346143 -9.98235e-20) -(3.71266 -0.367158 -4.80924e-20) -(3.81423 -0.383399 -5.47894e-20) -(3.90004 -0.396051 -5.22011e-20) -(3.97197 -0.406145 -1.13785e-19) -(4.03325 -0.414389 1.93034e-21) -(4.08646 -0.421228 -4.28446e-20) -(4.13452 -0.42713 -5.60505e-20) -(4.17912 -0.432385 -5.10234e-20) -(4.2218 -0.437216 -3.92238e-20) -(4.26392 -0.44181 -4.74967e-21) -(4.30676 -0.446336 1.02992e-20) -(4.35154 -0.450951 7.30839e-20) -(4.39943 -0.4558 1.40892e-19) -(4.4516 -0.461027 8.20448e-20) -(4.50914 -0.466762 4.90978e-21) -(4.57337 -0.473149 5.72509e-20) -(4.64481 -0.480272 9.13018e-20) -(4.72707 -0.488432 4.22139e-20) -(4.81386 -0.497168 2.45081e-20) -(4.93462 -0.508748 2.5241e-20) -(5.00575 -0.51561 -9.53359e-22) -(5.32153 -0.540178 -9.21869e-21) -(2.3356 -0.178242 1.47537e-21) -(2.64109 -0.245875 2.52428e-21) -(2.82499 -0.275758 8.13867e-20) -(2.92994 -0.293032 2.467e-20) -(3.01007 -0.305201 -2.19544e-19) -(3.0744 -0.314202 -1.33167e-19) -(3.12515 -0.321021 -2.07779e-19) -(3.16585 -0.326318 -1.96281e-19) -(3.19997 -0.330587 -1.1332e-19) -(3.22942 -0.334133 -2.46682e-19) -(3.2557 -0.337169 -1.36961e-19) -(3.28017 -0.339873 -7.91451e-20) -(3.30401 -0.342395 -3.74766e-20) -(3.32828 -0.344867 -1.20536e-20) -(3.35398 -0.347409 1.57967e-19) -(3.38203 -0.350131 1.27193e-19) -(3.41333 -0.353137 8.74731e-20) -(3.44866 -0.356521 1.40261e-19) -(3.48905 -0.360384 -1.50812e-20) -(3.53467 -0.364789 3.79645e-20) -(3.58878 -0.369942 3.34173e-20) -(3.64469 -0.375561 2.31221e-20) -(3.73103 -0.383193 1.99748e-20) -(3.76413 -0.387859 5.63678e-21) -(4.04216 -0.408617 -4.48223e-20) +(9.85698 -0.886449 0) +(9.66665 -0.740747 0) +(9.45574 -0.429483 0) +(9.22457 -0.222216 0) +(9.00656 -0.106462 0) +(8.81447 -0.0458767 0) +(8.64764 -0.0151809 0) +(8.50548 0.000439179 0) +(8.38389 0.00837067 0) +(8.28119 0.0122615 0) +(8.1929 0.0139566 0) +(8.11682 0.0149822 0) +(8.05028 0.0153167 0) +(7.99145 0.0155406 0) +(7.9388 0.0153661 0) +(7.89276 0.0160313 0) +(7.84038 0.0191813 0) +(7.83143 0.00952496 0) +(10.0545 0.227568 0) +(10.1211 0.32691 0) +(10.1196 0.261569 0) +(10.0856 0.186536 0) +(10.0435 0.134661 0) +(9.99677 0.101105 0) +(9.94407 0.0792701 0) +(9.88537 0.0645475 0) +(9.82404 0.0542354 0) +(9.76158 0.0466397 0) +(9.70016 0.0408644 0) +(9.64044 0.0362906 0) +(9.58322 0.0326149 0) +(9.529 0.0296994 0) +(9.47726 0.027167 0) +(9.42997 0.0258002 0) +(9.38248 0.0223178 0) +(9.3472 0.0311402 0) +(10.0035 0.057918 0) +(10.0303 0.0560056 0) +(10.0561 0.033776 0) +(10.0704 0.0328896 0) +(10.077 0.0406357 0) +(10.0779 0.0465286 0) +(10.0726 0.0493384 0) +(10.0615 0.0502773 0) +(10.0463 0.0501667 0) +(10.0279 0.0494426 0) +(10.0074 0.0483838 0) +(9.98532 0.0472003 0) +(9.96228 0.0459814 0) +(9.93877 0.0448619 0) +(9.915 0.0437036 0) +(9.89178 0.0431583 0) +(9.86878 0.0420584 0) +(9.84705 0.0432854 0) +(9.99779 0.011053 0) +(10.011 0.0266061 0) +(10.035 0.0371458 0) +(10.0525 0.0480772 0) +(10.0644 0.0554393 0) +(10.0735 0.0581663 0) +(10.0796 0.0583292 0) +(10.0825 0.0575791 0) +(10.0829 0.0565197 0) +(10.0814 0.0553105 0) +(10.0784 0.0540196 0) +(10.0741 0.0527652 0) +(10.0688 0.0515349 0) +(10.0628 0.0504284 0) +(10.0561 0.0493247 0) +(10.0493 0.0486163 0) +(10.0425 0.0476586 0) +(10.0355 0.0473808 0) +(9.99935 0.00719717 0) +(10.009 0.0316514 0) +(10.0275 0.0439156 0) +(10.0418 0.0499117 0) +(10.0528 0.053595 0) +(10.0629 0.055213 0) +(10.0717 0.0554846 0) +(10.0785 0.055185 0) +(10.0836 0.054629 0) +(10.0875 0.0539087 0) +(10.0903 0.0530774 0) +(10.0923 0.0522284 0) +(10.0935 0.0513717 0) +(10.0942 0.0505759 0) +(10.0945 0.0497828 0) +(10.0945 0.0491791 0) +(10.0945 0.0484487 0) +(10.0944 0.0478439 0) +(10.0003 0.00917698 0) +(10.0083 0.0311654 0) +(10.0227 0.0409347 0) +(10.035 0.0453784 0) +(10.0451 0.0490165 0) +(10.0548 0.0513435 0) +(10.0638 0.0523145 0) +(10.0715 0.0525355 0) +(10.078 0.052386 0) +(10.0836 0.0520029 0) +(10.0885 0.0514607 0) +(10.0927 0.0508449 0) +(10.0964 0.0501866 0) +(10.0997 0.049533 0) +(10.1026 0.0488619 0) +(10.1054 0.0482477 0) +(10.1081 0.0475373 0) +(10.1107 0.0467221 0) +(10.0005 0.0089429 0) +(10.0071 0.0270792 0) +(10.0191 0.0364014 0) +(10.0302 0.0413722 0) +(10.0396 0.0453874 0) +(10.0487 0.0480428 0) +(10.0573 0.0492996 0) +(10.065 0.0497541 0) +(10.0718 0.0498082 0) +(10.078 0.0496066 0) +(10.0835 0.0492259 0) +(10.0886 0.0487407 0) +(10.0933 0.0481907 0) +(10.0976 0.0476084 0) +(10.1017 0.0469865 0) +(10.1056 0.0463452 0) +(10.1093 0.0455992 0) +(10.1131 0.0446758 0) +(10.0004 0.00791355 0) +(10.006 0.0233712 0) +(10.0161 0.0327209 0) +(10.0263 0.038079 0) +(10.0352 0.0420642 0) +(10.0436 0.0447354 0) +(10.0518 0.0461317 0) +(10.0593 0.0467471 0) +(10.0661 0.0469463 0) +(10.0723 0.0468729 0) +(10.0781 0.0466043 0) +(10.0834 0.0462079 0) +(10.0885 0.0457264 0) +(10.0932 0.045184 0) +(10.0977 0.0445796 0) +(10.1021 0.0439092 0) +(10.1064 0.0431186 0) +(10.1105 0.0421398 0) +(10.0004 0.00695733 0) +(10.0051 0.0204172 0) +(10.0137 0.0294365 0) +(10.0229 0.0348349 0) +(10.0312 0.0386745 0) +(10.0392 0.0413224 0) +(10.0469 0.0428373 0) +(10.0541 0.0435901 0) +(10.0607 0.0439034 0) +(10.0669 0.0439265 0) +(10.0727 0.0437387 0) +(10.0781 0.0434036 0) +(10.0833 0.0429638 0) +(10.0882 0.0424404 0) +(10.0929 0.0418345 0) +(10.0974 0.0411351 0) +(10.1018 0.0403047 0) +(10.1061 0.0392984 0) +(10.0004 0.00612592 0) +(10.0043 0.01785 0) +(10.0116 0.026256 0) +(10.0199 0.0315513 0) +(10.0277 0.0352633 0) +(10.0352 0.0378738 0) +(10.0425 0.0394664 0) +(10.0494 0.04032 0) +(10.0558 0.0407179 0) +(10.0618 0.040812 0) +(10.0675 0.0406828 0) +(10.0729 0.0403906 0) +(10.0781 0.0399761 0) +(10.083 0.0394601 0) +(10.0877 0.0388454 0) +(10.0923 0.0381224 0) +(10.0966 0.0372648 0) +(10.1009 0.0362516 0) +(10.0003 0.0053654 0) +(10.0037 0.0155387 0) +(10.0099 0.0232152 0) +(10.0173 0.0283118 0) +(10.0245 0.0318803 0) +(10.0315 0.0344127 0) +(10.0384 0.0360287 0) +(10.045 0.0369445 0) +(10.0513 0.0374012 0) +(10.0571 0.037546 0) +(10.0627 0.0374594 0) +(10.068 0.0371973 0) +(10.0731 0.0367993 0) +(10.0779 0.0362862 0) +(10.0826 0.0356637 0) +(10.0871 0.034926 0) +(10.0914 0.0340568 0) +(10.0956 0.0330533 0) +(10.0003 0.00469967 0) +(10.0032 0.013596 0) +(10.0086 0.0205663 0) +(10.0152 0.0253967 0) +(10.0219 0.0287981 0) +(10.0286 0.0312237 0) +(10.0351 0.0328193 0) +(10.0414 0.0337602 0) +(10.0474 0.0342492 0) +(10.0531 0.0344242 0) +(10.0586 0.0343638 0) +(10.0638 0.034121 0) +(10.0688 0.0337334 0) +(10.0735 0.0332227 0) +(10.0781 0.0325969 0) +(10.0825 0.0318554 0) +(10.0867 0.0309888 0) +(10.0907 0.030008 0) +(10.0003 0.00408432 0) +(10.0028 0.011825 0) +(10.0075 0.0180646 0) +(10.0134 0.0225525 0) +(10.0197 0.0257525 0) +(10.0259 0.0280459 0) +(10.0321 0.0295887 0) +(10.0381 0.0305277 0) +(10.0439 0.031031 0) +(10.0495 0.0312231 0) +(10.0548 0.0311795 0) +(10.0598 0.0309505 0) +(10.0647 0.0305717 0) +(10.0694 0.0300654 0) +(10.0738 0.0294422 0) +(10.0781 0.0287059 0) +(10.0822 0.027853 0) +(10.0861 0.0269045 0) +(10.0002 0.0034487 0) +(10.0024 0.00998437 0) +(10.0064 0.0153813 0) +(10.0117 0.0194018 0) +(10.0174 0.0223168 0) +(10.0232 0.0244184 0) +(10.029 0.0258577 0) +(10.0348 0.0267575 0) +(10.0403 0.0272506 0) +(10.0457 0.0274438 0) +(10.0508 0.027407 0) +(10.0557 0.0271866 0) +(10.0604 0.0268161 0) +(10.065 0.0263176 0) +(10.0693 0.0257044 0) +(10.0734 0.0249843 0) +(10.0774 0.0241591 0) +(10.0811 0.0232566 0) +(10.0002 0.00278876 0) +(10.002 0.00807269 0) +(10.0055 0.0125267 0) +(10.0101 0.0159501 0) +(10.0153 0.0184782 0) +(10.0206 0.0203128 0) +(10.0261 0.021585 0) +(10.0314 0.0223944 0) +(10.0367 0.0228412 0) +(10.0418 0.0230116 0) +(10.0468 0.0229659 0) +(10.0515 0.0227462 0) +(10.0561 0.0223823 0) +(10.0604 0.0218959 0) +(10.0646 0.0213018 0) +(10.0686 0.0206111 0) +(10.0724 0.0198293 0) +(10.076 0.0189877 0) +(10.0002 0.00210388 0) +(10.0017 0.00609225 0) +(10.0047 0.00950967 0) +(10.0088 0.0122027 0) +(10.0134 0.014225 0) +(10.0183 0.0157004 0) +(10.0233 0.0167271 0) +(10.0283 0.0173806 0) +(10.0333 0.0177323 0) +(10.0382 0.0178458 0) +(10.0429 0.0177692 0) +(10.0475 0.0175375 0) +(10.0518 0.0171762 0) +(10.056 0.0167052 0) +(10.06 0.0161392 0) +(10.0639 0.0154908 0) +(10.0675 0.0147673 0) +(10.071 0.0140005 0) +(10.0002 0.0013912 0) +(10.0015 0.00402927 0) +(10.0041 0.00631446 0) +(10.0076 0.0081431 0) +(10.0118 0.00952954 0) +(10.0163 0.0105379 0) +(10.0209 0.0112285 0) +(10.0256 0.0116501 0) +(10.0303 0.0118477 0) +(10.0349 0.011862 0) +(10.0394 0.0117264 0) +(10.0438 0.011466 0) +(10.048 0.0111007 0) +(10.052 0.0106461 0) +(10.0558 0.0101151 0) +(10.0595 0.00951932 0) +(10.063 0.00886608 0) +(10.0663 0.00818442 0) +(10.0001 0.000634433 0) +(10.0013 0.00183232 0) +(10.0036 0.00286937 0) +(10.0068 0.00369202 0) +(10.0107 0.00430194 0) +(10.0148 0.00472149 0) +(10.0192 0.00497345 0) +(10.0236 0.0050777 0) +(10.0281 0.00505372 0) +(10.0325 0.00491988 0) +(10.0368 0.004692 0) +(10.0409 0.00438301 0) +(10.0449 0.00400389 0) +(10.0488 0.0035642 0) +(10.0525 0.00307256 0) +(10.056 0.00253733 0) +(10.0593 0.00196384 0) +(10.0625 0.00137632 0) +(10.0001 -0.000209419 0) +(10.0012 -0.000620278 0) +(10.0034 -0.000998304 0) +(10.0065 -0.0013423 0) +(10.0102 -0.00165027 0) +(10.0143 -0.00193621 0) +(10.0185 -0.00221791 0) +(10.0228 -0.00250741 0) +(10.0271 -0.00281181 0) +(10.0313 -0.00313654 0) +(10.0355 -0.00348555 0) +(10.0395 -0.00386095 0) +(10.0434 -0.00426291 0) +(10.0471 -0.00469048 0) +(10.0507 -0.00514161 0) +(10.054 -0.00561328 0) +(10.0573 -0.00610386 0) +(10.0603 -0.00659608 0) +(10.0001 -0.00101636 0) +(10.0013 -0.00297257 0) +(10.0037 -0.00471469 0) +(10.007 -0.00617043 0) +(10.0108 -0.00733521 0) +(10.015 -0.00826872 0) +(10.0193 -0.00903234 0) +(10.0237 -0.00966781 0) +(10.028 -0.0102093 0) +(10.0323 -0.010688 0) +(10.0364 -0.0111285 0) +(10.0404 -0.0115471 0) +(10.0442 -0.0119546 0) +(10.0479 -0.0123581 0) +(10.0514 -0.0127624 0) +(10.0547 -0.0131693 0) +(10.0579 -0.013581 0) +(10.0609 -0.0139864 0) +(10.0002 -0.00171217 0) +(10.0015 -0.00502682 0) +(10.0041 -0.0079623 0) +(10.0078 -0.0103243 0) +(10.012 -0.0121326 0) +(10.0164 -0.0135371 0) +(10.021 -0.0146438 0) +(10.0255 -0.0155097 0) +(10.03 -0.0161912 0) +(10.0343 -0.0167468 0) +(10.0385 -0.0172206 0) +(10.0425 -0.0176409 0) +(10.0464 -0.0180269 0) +(10.0501 -0.0183917 0) +(10.0535 -0.0187448 0) +(10.0569 -0.0190911 0) +(10.06 -0.0194349 0) +(10.063 -0.0197689 0) +(10.0002 -0.00237299 0) +(10.0016 -0.00705697 0) +(10.0047 -0.0112078 0) +(10.009 -0.0143866 0) +(10.0137 -0.0166922 0) +(10.0185 -0.0184351 0) +(10.0233 -0.019775 0) +(10.0281 -0.0207826 0) +(10.0328 -0.0215392 0) +(10.0373 -0.0221257 0) +(10.0416 -0.0225984 0) +(10.0456 -0.0229938 0) +(10.0495 -0.0233379 0) +(10.0532 -0.0236504 0) +(10.0567 -0.0239438 0) +(10.06 -0.024226 0) +(10.0631 -0.0245022 0) +(10.0661 -0.0247679 0) +(10.0002 -0.00299155 0) +(10.0018 -0.00911314 0) +(10.0054 -0.0144758 0) +(10.0105 -0.018373 0) +(10.0159 -0.021125 0) +(10.0211 -0.023155 0) +(10.0263 -0.0246182 0) +(10.0314 -0.0256394 0) +(10.0362 -0.0263729 0) +(10.0409 -0.0269284 0) +(10.0452 -0.0273622 0) +(10.0494 -0.0277097 0) +(10.0533 -0.0280002 0) +(10.057 -0.0282558 0) +(10.0605 -0.0284908 0) +(10.0638 -0.0287132 0) +(10.067 -0.0289287 0) +(10.0699 -0.0291344 0) +(10.0001 -0.00353681 0) +(10.0018 -0.0115647 0) +(10.0062 -0.0179074 0) +(10.0123 -0.022012 0) +(10.0183 -0.0250858 0) +(10.024 -0.0275018 0) +(10.0296 -0.0291463 0) +(10.035 -0.0301624 0) +(10.0401 -0.0308204 0) +(10.0448 -0.031285 0) +(10.0493 -0.0316237 0) +(10.0535 -0.0318769 0) +(10.0575 -0.0320784 0) +(10.0613 -0.032252 0) +(10.0648 -0.0324111 0) +(10.0681 -0.0325629 0) +(10.0712 -0.032711 0) +(10.0741 -0.0328516 0) +(9.99991 -0.00338475 0) +(10.0016 -0.0149793 0) +(10.0073 -0.0227423 0) +(10.0142 -0.0262597 0) +(10.0206 -0.0288522 0) +(10.0268 -0.0312229 0) +(10.0331 -0.0329493 0) +(10.039 -0.0340422 0) +(10.0444 -0.0347464 0) +(10.0494 -0.0352141 0) +(10.054 -0.0355157 0) +(10.0583 -0.0357052 0) +(10.0622 -0.0358286 0) +(10.0659 -0.035917 0) +(10.0693 -0.0359882 0) +(10.0725 -0.0360521 0) +(10.0754 -0.0361135 0) +(10.0781 -0.0361706 0) +(9.9986 -0.000401129 0) +(9.99908 -0.0157651 0) +(10.0075 -0.0274421 0) +(10.0166 -0.0325075 0) +(10.0237 -0.034888 0) +(10.0306 -0.0362479 0) +(10.0376 -0.0370036 0) +(10.0441 -0.037474 0) +(10.0498 -0.037826 0) +(10.0549 -0.0380763 0) +(10.0595 -0.0382238 0) +(10.0635 -0.0382937 0) +(10.0671 -0.038316 0) +(10.0702 -0.038312 0) +(10.073 -0.0382969 0) +(10.0754 -0.0382788 0) +(10.0775 -0.0382615 0) +(10.0794 -0.038243 0) +(9.99488 0.0013334 0) +(9.99287 -0.00809893 0) +(10.006 -0.0203605 0) +(10.0202 -0.0322884 0) +(10.0306 -0.0404932 0) +(10.0392 -0.0441674 0) +(10.0467 -0.0450824 0) +(10.0529 -0.0449404 0) +(10.0577 -0.0444759 0) +(10.0616 -0.0438824 0) +(10.0645 -0.0432396 0) +(10.0667 -0.0426042 0) +(10.0681 -0.0420107 0) +(10.069 -0.0414673 0) +(10.0693 -0.0409836 0) +(10.0691 -0.0405559 0) +(10.0687 -0.0401816 0) +(10.0679 -0.0398346 0) +(9.99473 -0.0305628 0) +(9.99925 -0.0228763 0) +(10.0147 -0.00264181 0) +(10.0304 -0.00191791 0) +(10.0434 -0.0116693 0) +(10.0533 -0.0209348 0) +(10.0594 -0.0272936 0) +(10.0618 -0.0315231 0) +(10.0615 -0.0342995 0) +(10.059 -0.0359972 0) +(10.055 -0.0369301 0) +(10.0497 -0.0373646 0) +(10.0434 -0.0374907 0) +(10.0363 -0.0374285 0) +(10.0288 -0.0372684 0) +(10.0208 -0.0370653 0) +(10.0127 -0.0368843 0) +(10.0045 -0.0366937 0) +(10.0273 -0.182759 0) +(10.0763 -0.288316 0) +(10.0871 -0.247759 0) +(10.0777 -0.186524 0) +(10.0663 -0.140303 0) +(10.0537 -0.108229 0) +(10.0365 -0.0858906 0) +(10.0145 -0.0704315 0) +(9.98933 -0.0596635 0) +(9.96228 -0.0518902 0) +(9.9343 -0.0460685 0) +(9.90597 -0.0415713 0) +(9.87778 -0.0380155 0) +(9.85006 -0.0351405 0) +(9.82306 -0.0327739 0) +(9.79688 -0.0308527 0) +(9.77177 -0.0293354 0) +(9.74776 -0.028515 0) +(9.93574 0.689319 0) +(9.8686 0.609604 0) +(9.76452 0.380621 0) +(9.62662 0.217439 0) +(9.48586 0.119264 0) +(9.35716 0.0631824 0) +(9.24262 0.0315704 0) +(9.14105 0.0136102 0) +(9.05135 0.0032568 0) +(8.97236 -0.00280468 0) +(8.90244 -0.00636032 0) +(8.84024 -0.00847973 0) +(8.78453 -0.00973055 0) +(8.7344 -0.0104766 0) +(8.68896 -0.0109796 0) +(8.64761 -0.0112486 0) +(8.6094 -0.011455 0) +(8.57405 -0.0121149 0) +(0.00454948 -0.0106147 -8.3217e-19) +(0.0162534 -0.0173085 7.38596e-19) +(0.0265321 -0.0152188 0) +(0.0332957 -0.00931399 0) +(0.0355595 -0.00236489 0) +(0.0330362 0.00397794 -3.91197e-19) +(0.0268019 0.00889195 0) +(0.0177031 0.0122812 0) +(0.00646509 0.0144402 0) +(-0.00640408 0.0157603 0) +(-0.0205503 0.0166177 2.39563e-19) +(-0.0357608 0.0172752 0) +(-0.0519354 0.017885 0) +(-0.0690188 0.0185018 0) +(-0.0869746 0.0191457 0) +(-0.10578 0.0198081 1.28454e-19) +(-0.125414 0.0204846 0) +(-0.145844 0.021159 0) +(-0.167042 0.0218244 0) +(-0.18896 0.0224641 0) +(-0.211571 0.0230691 0) +(-0.234796 0.023632 0) +(-0.258594 0.0241486 0) +(-0.282862 0.0246434 7.42373e-20) +(-0.307536 0.0251563 -7.09636e-20) +(-0.332523 0.0258029 6.81241e-20) +(-0.357806 0.0267663 6.57083e-20) +(-0.383363 0.0283633 0) +(-0.409187 0.0310474 0) +(-0.435374 0.0357944 -6.09192e-20) +(-0.462225 0.0430115 -6.0487e-20) +(-0.490208 0.0530703 0) +(-0.519479 0.0669205 0) +(-0.552345 0.0448664 -8.24314e-20) +(-0.586907 0.00851425 0) +(-0.615962 0.0115467 0) +(-0.651272 0.0162801 8.08042e-20) +(-0.6898 0.0225489 0) +(-0.73061 0.0287284 7.3817e-20) +(-0.773465 0.0322014 1.40901e-19) +(-0.817041 0.0387118 0) +(-0.858605 0.0397341 0) +(-0.899633 0.0269328 0) +(-0.937699 0.0256554 0) +(-0.97488 0.0340075 0) +(-1.01578 0.0347933 1.14818e-19) +(-1.05637 0.0348761 1.11554e-19) +(-1.09706 0.0347499 1.08448e-19) +(-1.1378 0.0345991 0) +(-1.17855 0.0343757 -1.0275e-19) +(-1.21926 0.0341074 0) +(-1.25988 0.0337982 9.77065e-20) +(-1.30037 0.0334655 9.54023e-20) +(-1.34071 0.0331141 0) +(-1.38088 0.0327509 0) +(-1.42085 0.0323772 0) +(-1.46062 0.0319952 8.7382e-20) +(-1.50016 0.0316045 0) +(-1.53946 0.031205 0) +(-1.57851 0.0307954 0) +(-1.61728 0.030375 0) +(-1.65575 0.0299422 0) +(-1.69389 0.029496 0) +(-1.7317 0.0290346 0) +(-1.76912 0.0285572 0) +(-1.80615 0.0280622 -7.41372e-20) +(-1.84275 0.027549 0) +(-1.87888 0.0270164 0) +(-1.91451 0.0264639 7.06673e-20) +(-1.94961 0.0258907 6.95821e-20) +(-1.98414 0.0252964 0) +(-2.01807 0.0246806 -6.75011e-20) +(-2.05135 0.0240432 6.65e-20) +(-2.08395 0.023384 0) +(-2.11582 0.0227031 -6.45638e-20) +(-2.14694 0.0220006 0) +(-2.17724 0.0212771 0) +(-2.20671 0.0205328 6.17907e-20) +(-2.23529 0.0197682 0) +(-2.26294 0.0189836 -6.00048e-20) +(-2.28962 0.0181798 0) +(-2.3153 0.0173571 5.82513e-20) +(-2.33993 0.0165161 5.73821e-20) +(-2.36347 0.0156569 5.65156e-20) +(-2.38589 0.01478 1.113e-19) +(-2.40714 0.0138851 -1.09569e-19) +(-2.42718 0.012972 0) +(-2.44597 0.0120389 0) +(-2.46348 0.0110838 0) +(-2.47965 0.0101022 -1.02572e-19) +(-2.49446 0.00908817 -1.00791e-19) +(-2.50784 0.00803446 9.89934e-20) +(-2.51975 0.00693202 0) +(-2.53011 0.00577061 -9.53389e-20) +(-2.53886 0.00454453 -9.34793e-20) +(-2.54591 0.00326795 -9.15982e-20) +(-2.5512 0.00199413 0) +(-2.55459 0.000815436 0) +(-2.556 -0.00018996 0) +(-2.55599 -0.00108108 -8.3728e-20) +(-2.55445 -0.0019472 0) +(-2.55144 -0.00280074 0) +(-2.54695 -0.00364909 7.73136e-20) +(-2.54097 -0.00449297 0) +(-2.53349 -0.00533209 0) +(-2.5245 -0.00616614 7.04045e-20) +(-2.51401 -0.00699397 0) +(-2.50199 -0.00781552 0) +(-2.48846 -0.00862957 -6.29342e-20) +(-2.4734 -0.00943623 -6.03075e-20) +(-2.45682 -0.0102342 0) +(-2.43873 -0.0110236 5.48338e-20) +(-2.41911 -0.0118032 0) +(-2.39799 -0.0125732 -4.90475e-20) +(-2.37536 -0.0133321 0) +(-2.35123 -0.0140805 -4.29254e-20) +(-2.32562 -0.0148167 -3.97304e-20) +(-2.29854 -0.0155412 0) +(-2.27 -0.0162528 0) +(-2.24001 -0.0169521 0) +(-2.2086 -0.0176383 0) +(-2.17578 -0.0183116 0) +(-2.14158 -0.0189701 0) +(-2.10602 -0.0196142 0) +(-2.06911 -0.0202422 -1.04766e-20) +(-2.03088 -0.0208556 6.29322e-21) +(-1.99137 -0.0214535 0) +(-1.95058 -0.0220383 0) +(-1.90857 -0.022607 0) +(-1.86535 -0.0231605 0) +(-1.82095 -0.0236978 -3.35162e-20) +(-1.77541 -0.0242192 0) +(-1.72877 -0.0247239 5.42157e-20) +(-1.68106 -0.025216 -6.51147e-20) +(-1.63232 -0.0256912 0) +(-1.58259 -0.0261506 0) +(-1.53191 -0.0265943 0) +(-1.48031 -0.0270226 1.12857e-19) +(-1.42785 -0.0274357 1.25953e-19) +(-1.37456 -0.0278346 0) +(-1.32049 -0.0282197 1.53736e-19) +(-1.26569 -0.0285916 1.6849e-19) +(-1.2102 -0.028951 -1.83871e-19) +(-1.15407 -0.029298 0) +(-1.09733 -0.0296335 0) +(-1.04003 -0.0299577 -2.34214e-19) +(-0.982216 -0.0302715 0) +(-0.92393 -0.0305753 0) +(-0.865215 -0.0308703 0) +(-0.806112 -0.0311569 0) +(-0.746664 -0.0314364 3.35564e-19) +(-0.68691 -0.0317092 3.59115e-19) +(-0.626891 -0.031977 0) +(-0.566645 -0.0322402 4.10284e-19) +(-0.506211 -0.0325004 0) +(-0.445624 -0.0327581 0) +(-0.38492 -0.0330144 4.99232e-19) +(-0.324135 -0.0332689 0) +(-0.263304 -0.0335246 5.6869e-19) +(-0.202462 -0.0337886 0) +(-0.141642 -0.0340764 0) +(-0.0808847 -0.0343605 6.93057e-19) +(-0.0202481 -0.0344547 0) +(0.0402079 -0.033954 7.40359e-19) +(0.100541 -0.0330258 0) +(0.160696 -0.0320944 0) +(0.220629 -0.0312171 0) +(0.280336 -0.0303896 -6.71445e-19) +(0.339822 -0.0296041 0) +(0.399086 -0.0288514 6.44108e-19) +(0.45811 -0.0281211 0) +(0.516858 -0.0273998 0) +(0.575259 -0.0266677 0) +(0.633171 -0.0258929 0) +(0.690391 -0.0250165 0) +(0.746293 -0.0239266 0) +(0.800569 -0.0223487 0) +(0.848324 -0.0196348 -1.13637e-18) +(0.895389 -0.0142082 0) +(0.888644 0.00306523 0) +(0.00474202 -0.0327295 1.94239e-18) +(0.0109294 -0.0336134 -1.11406e-18) +(0.0112056 -0.0213253 0) +(0.00857365 -0.0079532 3.50239e-19) +(0.00349174 0.00476302 0) +(-0.0037117 0.0159569 1.37224e-19) +(-0.0130356 0.0251726 -2.51501e-19) +(-0.0243895 0.0323865 -2.32641e-19) +(-0.0376473 0.0378812 0) +(-0.0526089 0.0420722 -1.99511e-19) +(-0.0690451 0.0453779 -9.24037e-20) +(-0.0867775 0.0481259 0) +(-0.105676 0.0505384 0) +(-0.125648 0.0527395 0) +(-0.146627 0.0547974 0) +(-0.168572 0.0567376 -6.52202e-20) +(-0.191458 0.0585755 0) +(-0.215265 0.0603101 1.16355e-19) +(-0.239984 0.0619435 0) +(-0.265608 0.0634688 0) +(-0.292146 0.0648845 -1.00975e-19) +(-0.319605 0.0661858 0) +(-0.34802 0.0673667 9.35362e-20) +(-0.377428 0.0684321 -4.54112e-20) +(-0.407913 0.0693803 4.41804e-20) +(-0.439579 0.0702333 -4.32116e-20) +(-0.472577 0.0709987 -4.25362e-20) +(-0.507071 0.0717109 0) +(-0.54327 0.0723753 0) +(-0.581325 0.0730337 4.27609e-20) +(-0.621209 0.0737398 -4.31346e-20) +(-0.662355 0.0747247 0) +(-0.703047 0.0765847 0) +(-0.746578 0.0792443 4.9477e-20) +(-0.790224 0.0824531 0) +(-0.833984 0.086397 0) +(-0.875267 0.0891905 -4.32444e-20) +(-0.914832 0.0909932 0) +(-0.953446 0.0919222 3.95295e-20) +(-0.991566 0.0918424 -7.478e-20) +(-1.02886 0.0912257 0) +(-1.06683 0.0906666 0) +(-1.10642 0.0900626 -1.3352e-19) +(-1.14682 0.0897574 -1.30019e-19) +(-1.18679 0.0897275 -1.26742e-19) +(-1.22517 0.0894099 6.18002e-20) +(-1.263 0.0888338 -6.07063e-20) +(-1.30038 0.0880816 -1.78065e-19) +(-1.33736 0.0872058 1.16224e-19) +(-1.37398 0.0862435 5.71167e-20) +(-1.41027 0.0852189 0) +(-1.44624 0.0841497 -5.50065e-20) +(-1.48192 0.0830496 5.3741e-20) +(-1.51729 0.0819265 0) +(-1.55236 0.0807856 0) +(-1.58712 0.0796284 0) +(-1.62156 0.0784556 -5.04884e-20) +(-1.65567 0.0772656 0) +(-1.68944 0.076057 9.75608e-20) +(-1.72285 0.0748268 0) +(-1.75587 0.0735728 9.46367e-20) +(-1.7885 0.0722921 0) +(-1.82071 0.0709821 -9.18921e-20) +(-1.85248 0.0696401 0) +(-1.88378 0.0682639 8.92985e-20) +(-1.9146 0.0668513 -4.38988e-20) +(-1.94489 0.0654008 0) +(-1.97464 0.0639106 -8.56372e-20) +(-2.00382 0.0623799 -4.23521e-20) +(-2.03239 0.0608076 -4.17743e-20) +(-2.06033 0.0591935 0) +(-2.0876 0.057537 -4.04252e-20) +(-2.11417 0.0558383 -4.009e-20) +(-2.14002 0.0540976 0) +(-2.16511 0.0523155 3.89972e-20) +(-2.18941 0.0504926 -7.67239e-20) +(-2.21288 0.0486304 0) +(-2.23549 0.0467297 -3.7383e-20) +(-2.25722 0.0447922 0) +(-2.27802 0.042819 1.08782e-19) +(-2.29787 0.040812 0) +(-2.31674 0.0387726 -1.05579e-19) +(-2.33458 0.0367027 -3.46981e-20) +(-2.35138 0.0346036 3.40387e-20) +(-2.3671 0.0324772 6.70031e-20) +(-2.38172 0.0303249 -6.59198e-20) +(-2.39519 0.0281485 0) +(-2.4075 0.0259489 0) +(-2.41862 0.0237269 0) +(-2.42851 0.021482 1.84597e-19) +(-2.43716 0.0192129 6.0391e-20) +(-2.44456 0.0169186 -5.92008e-20) +(-2.45068 0.0145983 0) +(-2.45553 0.0122486 -5.6772e-20) +(-2.45912 0.00986273 5.55195e-20) +(-2.46149 0.00743857 5.4255e-20) +(-2.46269 0.00500052 0) +(-2.46283 0.00262112 0) +(-2.46203 0.000388677 0) +(-2.45985 -0.00172671 4.89156e-20) +(-2.45628 -0.00379961 0) +(-2.45127 -0.00584289 -9.23655e-20) +(-2.4448 -0.00786483 -1.34113e-19) +(-2.43687 -0.00986606 8.65503e-20) +(-2.42747 -0.0118453 0) +(-2.41658 -0.013801 4.04149e-20) +(-2.40419 -0.0157306 0) +(-2.39031 -0.0176328 7.42696e-20) +(-2.37493 -0.0195053 -3.57245e-20) +(-2.35804 -0.0213468 -3.41032e-20) +(-2.33966 -0.0231552 0) +(-2.31978 -0.0249295 -9.13714e-20) +(-2.29839 -0.0266673 5.76233e-20) +(-2.27552 -0.028368 2.67944e-20) +(-2.25116 -0.0300292 0) +(-2.22533 -0.0316503 2.31672e-20) +(-2.19803 -0.0332291 6.45255e-20) +(-2.16928 -0.0347645 0) +(-2.13908 -0.0362549 3.56428e-20) +(-2.10746 -0.0377003 3.1761e-20) +(-2.07443 -0.0390997 2.78163e-20) +(-2.04001 -0.0404526 0) +(-2.00423 -0.0417563 0) +(-1.96709 -0.0430099 0) +(-1.92863 -0.0442105 -6.09903e-21) +(-1.88886 -0.0453592 -3.16054e-21) +(-1.84782 -0.0464547 0) +(-1.80554 -0.0474991 1.57935e-21) +(-1.76203 -0.0484911 6.03428e-21) +(-1.71733 -0.0494329 0) +(-1.67148 -0.0503234 1.60562e-20) +(-1.62449 -0.0511596 3.95668e-20) +(-1.57642 -0.051935 -2.54538e-20) +(-1.52729 -0.0526571 -2.82989e-20) +(-1.47715 -0.053329 0) +(-1.42602 -0.0539485 0) +(-1.37396 -0.0545117 0) +(-1.32099 -0.0550215 -5.00579e-20) +(-1.26717 -0.0554781 5.30649e-20) +(-1.21253 -0.0558831 1.18559e-19) +(-1.15713 -0.0562373 -6.55845e-20) +(-1.10099 -0.0565422 6.87053e-20) +(-1.04418 -0.0567991 7.62531e-20) +(-0.986735 -0.057009 0) +(-0.928692 -0.0571731 0) +(-0.870098 -0.0572925 -9.04703e-20) +(-0.810996 -0.0573687 0) +(-0.75143 -0.0574032 0) +(-0.691443 -0.0573977 2.17272e-19) +(-0.631077 -0.057354 0) +(-0.570373 -0.0572741 1.19149e-19) +(-0.509372 -0.05716 -1.27427e-19) +(-0.448115 -0.0570136 0) +(-0.386641 -0.0568374 1.37143e-19) +(-0.324986 -0.0566326 0) +(-0.263188 -0.0564018 0) +(-0.201283 -0.0561463 -1.58096e-19) +(-0.139305 -0.0558667 3.26463e-19) +(-0.0772874 -0.0555633 -1.70806e-19) +(-0.0152628 -0.0552372 0) +(0.0467504 -0.0548862 0) +(0.108731 -0.0545077 1.79487e-19) +(0.17067 -0.0540587 0) +(0.232501 -0.0534104 1.83106e-19) +(0.294134 -0.0525912 0) +(0.355569 -0.0517463 0) +(0.416832 -0.0509208 0) +(0.477917 -0.05012 1.92276e-19) +(0.53882 -0.0493383 0) +(0.599528 -0.0485658 -1.95233e-19) +(0.660021 -0.0477882 0) +(0.720255 -0.0469846 0) +(0.780158 -0.0461202 3.96236e-19) +(0.839594 -0.0451365 -3.98496e-19) +(0.898351 -0.0439196 0) +(0.955918 -0.0422576 0) +(1.01188 -0.0396151 0) +(1.06331 -0.0350045 1.22743e-18) +(1.11331 -0.0250519 0) +(1.14002 -0.00102919 -8.52569e-19) +(0.000355258 -0.0415877 -8.01855e-22) +(-0.00161685 -0.0290636 1.08395e-18) +(-0.0076326 -0.0103718 0) +(-0.015581 0.00691766 -4.43484e-19) +(-0.0250362 0.0225299 0) +(-0.0356893 0.0363885 0) +(-0.0475243 0.0483982 5.28156e-23) +(-0.0606322 0.0585448 1.37467e-19) +(-0.0750937 0.0669703 1.29389e-19) +(-0.0909326 0.0739446 1.22403e-19) +(-0.108113 0.0797909 0) +(-0.126565 0.0848113 0) +(-0.14621 0.0892536 -1.04476e-19) +(-0.166975 0.0932939 -1.98811e-19) +(-0.188805 0.0970516 1.89516e-19) +(-0.211657 0.100598 0) +(-0.235508 0.10398 1.73315e-19) +(-0.260343 0.107222 -8.32394e-20) +(-0.28616 0.110345 0) +(-0.312959 0.113362 1.54168e-19) +(-0.340754 0.116288 7.45933e-20) +(-0.36956 0.119142 -1.4422e-19) +(-0.399404 0.121946 -7.0152e-20) +(-0.430313 0.124733 0) +(-0.462326 0.127543 1.32991e-19) +(-0.495476 0.130427 1.30273e-19) +(-0.529785 0.133437 0) +(-0.565221 0.136623 1.2659e-19) +(-0.601667 0.140009 0) +(-0.638889 0.1436 1.25219e-19) +(-0.676492 0.147296 6.27447e-20) +(-0.714004 0.150834 0) +(-0.751113 0.153665 0) +(-0.788441 0.154607 0) +(-0.826113 0.154432 0) +(-0.863642 0.155133 0) +(-0.900275 0.15596 0) +(-0.935935 0.156415 1.0652e-19) +(-0.970724 0.156134 -1.54092e-19) +(-1.00488 0.155015 0) +(-1.03855 0.153327 0) +(-1.07207 0.150892 0) +(-1.10597 0.147772 -4.24595e-23) +(-1.14026 0.145275 8.89299e-20) +(-1.17428 0.143427 1.73955e-19) +(-1.20766 0.141561 -1.70317e-19) +(-1.24067 0.139704 -8.33891e-20) +(-1.27341 0.137859 8.18743e-20) +(-1.3059 0.136016 -1.29391e-22) +(-1.33816 0.134165 7.87259e-20) +(-1.3702 0.132302 0) +(-1.40203 0.130426 7.59606e-20) +(-1.43366 0.128537 -1.5037e-22) +(-1.46508 0.126635 0) +(-1.49629 0.124719 0) +(-1.52729 0.122786 -7.10579e-20) +(-1.55805 0.120832 0) +(-1.58857 0.118854 0) +(-1.61883 0.116847 6.76536e-20) +(-1.64882 0.114807 1.33592e-19) +(-1.67851 0.112729 -6.59658e-20) +(-1.70788 0.11061 0) +(-1.73692 0.108445 6.40658e-20) +(-1.76561 0.106231 0) +(-1.7939 0.103963 6.19493e-20) +(-1.82179 0.10164 6.13744e-20) +(-1.84924 0.0992597 -1.2073e-19) +(-1.87622 0.0968191 -5.9376e-20) +(-1.90271 0.0943174 0) +(-1.92868 0.0917536 1.15738e-19) +(-1.9541 0.0891272 0) +(-1.97893 0.0864381 1.68907e-19) +(-2.00314 0.0836866 1.10931e-19) +(-2.02671 0.0808734 1.09358e-19) +(-2.04959 0.0779997 -1.07793e-19) +(-2.07177 0.0750667 1.59467e-19) +(-2.0932 0.0720763 0) +(-2.11385 0.0690305 0) +(-2.13369 0.0659317 -1.01587e-19) +(-2.15268 0.062782 -1.50146e-19) +(-2.1708 0.0595842 0) +(-2.18802 0.056341 4.85397e-20) +(-2.20429 0.0530553 0) +(-2.21959 0.0497297 -1.40731e-19) +(-2.2339 0.0463675 -1.17586e-22) +(-2.24717 0.0429715 1.03798e-22) +(-2.25938 0.0395448 8.89692e-20) +(-2.27051 0.0360904 0) +(-2.28053 0.0326113 -8.56847e-20) +(-2.28941 0.0291103 -4.56349e-23) +(-2.29714 0.0255904 0) +(-2.3037 0.0220564 0) +(-2.30908 0.0185154 0) +(-2.31328 0.0149772 7.71053e-20) +(-2.31628 0.0114552 0) +(-2.3181 0.00796856 0) +(-2.31873 0.00454005 0) +(-2.31814 0.00117922 0) +(-2.31627 -0.00214422 0) +(-2.31305 -0.00545162 6.5904e-20) +(-2.30847 -0.00873362 0) +(-2.3025 -0.0119866 6.17616e-20) +(-2.29511 -0.0152085 5.97057e-20) +(-2.28631 -0.0183963 -5.76209e-20) +(-2.27608 -0.0215468 0) +(-2.2644 -0.0246562 -5.33634e-20) +(-2.25127 -0.0277213 0) +(-2.23669 -0.0307387 -4.89875e-20) +(-2.22066 -0.0337056 4.67549e-20) +(-2.20316 -0.0366189 1.34046e-19) +(-2.18421 -0.039476 0) +(-2.1638 -0.0422741 1.20271e-19) +(-2.14193 -0.0450108 3.81942e-20) +(-2.11862 -0.0476833 0) +(-2.09386 -0.0502895 6.62077e-20) +(-2.06766 -0.0528269 6.1364e-20) +(-2.04004 -0.0552932 -8.42998e-20) +(-2.011 -0.0576859 0) +(-1.98056 -0.0600033 -2.28226e-20) +(-1.94873 -0.0622441 -2.02758e-20) +(-1.91553 -0.0644073 -5.40185e-20) +(-1.88098 -0.0664909 0) +(-1.8451 -0.0684922 0) +(-1.8079 -0.0704086 0) +(-1.76941 -0.0722378 -8.18052e-21) +(-1.72965 -0.0739789 0) +(-1.68864 -0.0756316 0) +(-1.64642 -0.0771968 -9.82133e-22) +(-1.60301 -0.0786748 -3.73914e-21) +(-1.55844 -0.0800666 0) +(-1.51274 -0.0813711 0) +(-1.46595 -0.0825847 -2.42476e-20) +(-1.41809 -0.0837027 0) +(-1.3692 -0.0847297 3.56042e-20) +(-1.31932 -0.0856692 4.00928e-20) +(-1.26848 -0.0865195 0) +(-1.21673 -0.0872778 0) +(-1.16409 -0.0879455 -5.73786e-20) +(-1.11063 -0.0885241 -1.29766e-21) +(-1.05636 -0.0890154 -1.3114e-21) +(-1.00135 -0.0894211 0) +(-0.945633 -0.0897432 -1.62841e-19) +(-0.88925 -0.0899834 0) +(-0.832246 -0.0901436 0) +(-0.774662 -0.0902255 0) +(-0.716542 -0.090231 1.0576e-19) +(-0.657928 -0.0901624 0) +(-0.598862 -0.0900222 -2.32522e-19) +(-0.539388 -0.0898127 -1.23603e-19) +(-0.479546 -0.0895371 0) +(-0.419378 -0.0891978 -1.35511e-19) +(-0.358924 -0.0887983 0) +(-0.298223 -0.0883411 0) +(-0.237313 -0.0878299 -4.57225e-19) +(-0.176232 -0.0872671 3.15734e-19) +(-0.115016 -0.0866552 0) +(-0.053698 -0.0859971 3.39392e-19) +(0.00769027 -0.0852975 -1.76204e-19) +(0.0691187 -0.0845584 0) +(0.130553 -0.0837803 0) +(0.191962 -0.0829596 0) +(0.253319 -0.0820993 -5.65849e-19) +(0.314614 -0.0811984 0) +(0.375836 -0.0802592 -1.95487e-19) +(0.436949 -0.0792865 0) +(0.49794 -0.0782972 0) +(0.5588 -0.0773142 0) +(0.619511 -0.0763415 0) +(0.680061 -0.0753735 0) +(0.740431 -0.0743986 0) +(0.800598 -0.0733978 -4.26912e-19) +(0.860518 -0.0723408 0) +(0.92012 -0.0711764 -2.1914e-19) +(0.979278 -0.0698167 6.61804e-19) +(1.0378 -0.0680996 0) +(1.09527 -0.0657211 0) +(1.15138 -0.0620323 -4.53493e-19) +(1.2042 -0.0557839 -4.60377e-19) +(1.25673 -0.0439642 4.6579e-19) +(1.29669 -0.01906 4.79938e-19) +(-0.00460969 -0.0339957 -2.98678e-18) +(-0.012332 -0.0123308 -1.30481e-18) +(-0.0222831 0.00974419 -4.72983e-19) +(-0.0338128 0.0291398 -1.68597e-19) +(-0.046344 0.046496 0) +(-0.0595458 0.0620562 2.44084e-19) +(-0.0734584 0.0758828 -1.1157e-19) +(-0.0882148 0.0880139 0) +(-0.103937 0.0985532 -9.84672e-20) +(-0.12071 0.107683 0) +(-0.138579 0.115639 1.78486e-19) +(-0.157547 0.122664 0) +(-0.177595 0.128983 8.16944e-20) +(-0.198689 0.134773 1.56665e-19) +(-0.220795 0.140171 -1.50452e-19) +(-0.243883 0.145271 0) +(-0.267932 0.15014 -1.39437e-19) +(-0.292921 0.154821 0) +(-0.31884 0.159347 0) +(-0.345675 0.16374 -1.25954e-19) +(-0.373415 0.168019 0) +(-0.402043 0.172202 1.69874e-22) +(-0.431538 0.176306 0) +(-0.461862 0.18035 0) +(-0.492967 0.184347 -2.19751e-22) +(-0.524774 0.188306 -1.06759e-19) +(-0.557179 0.192217 -1.04128e-19) +(-0.590031 0.196049 -1.02149e-19) +(-0.62313 0.199724 0) +(-0.656244 0.203119 -1.96496e-19) +(-0.689139 0.206042 0) +(-0.721659 0.208245 -9.48455e-20) +(-0.753801 0.209455 0) +(-0.785771 0.209506 0) +(-0.817719 0.208766 8.84882e-20) +(-0.849541 0.207926 0) +(-0.881002 0.207021 -8.35483e-20) +(-0.912008 0.205922 -2.1463e-23) +(-0.94259 0.204493 1.58293e-19) +(-0.97285 0.202681 -1.54234e-19) +(-1.00287 0.200529 0) +(-1.03273 0.197994 0) +(-1.06261 0.195139 -7.17127e-20) +(-1.09252 0.192354 0) +(-1.1223 0.189746 -6.86728e-20) +(-1.15188 0.187174 6.72761e-20) +(-1.18132 0.18463 6.59574e-20) +(-1.21064 0.182116 0) +(-1.23983 0.179626 -6.35168e-20) +(-1.2689 0.177153 -6.23794e-20) +(-1.29784 0.174687 1.22479e-19) +(-1.32666 0.172221 -6.02435e-20) +(-1.35535 0.169749 -5.92373e-20) +(-1.38391 0.167263 0) +(-1.41232 0.16476 0) +(-1.44057 0.162231 5.64286e-20) +(-1.46865 0.159672 0) +(-1.49655 0.157076 0) +(-1.52425 0.154436 -1.07763e-19) +(-1.55173 0.151747 -1.06161e-19) +(-1.57896 0.149003 0) +(-1.60594 0.146197 0) +(-1.63263 0.143325 0) +(-1.65901 0.140382 0) +(-1.68506 0.137365 -9.8715e-20) +(-1.71075 0.134269 9.71879e-20) +(-1.73605 0.131091 9.59443e-20) +(-1.76093 0.12783 1.89062e-19) +(-1.78537 0.124484 0) +(-1.80934 0.121051 -1.15935e-22) +(-1.8328 0.117531 0) +(-1.85572 0.113925 -8.93573e-20) +(-1.87807 0.110232 -1.01978e-22) +(-1.89983 0.106453 -8.68117e-20) +(-1.92095 0.102591 8.55499e-20) +(-1.9414 0.0986472 -8.53392e-23) +(-1.96116 0.0946239 0) +(-1.98019 0.0905239 8.17132e-20) +(-1.99845 0.0863505 8.05329e-20) +(-2.01592 0.082107 1.58496e-19) +(-2.03256 0.0777972 0) +(-2.04834 0.0734249 -7.67093e-20) +(-2.06323 0.0689942 0) +(-2.0772 0.0645096 1.4838e-19) +(-2.09021 0.0599755 -7.29175e-20) +(-2.10225 0.0553966 7.1619e-20) +(-2.11328 0.0507779 -7.03086e-20) +(-2.12327 0.0461244 -1.37973e-19) +(-2.1322 0.0414414 6.76483e-20) +(-2.14005 0.0367344 -6.62962e-20) +(-2.1468 0.0320093 0) +(-2.15242 0.0272734 1.27159e-19) +(-2.15691 0.0225355 0) +(-2.16024 0.0178057 1.21553e-19) +(-2.16241 0.0130962 -1.18698e-19) +(-2.16338 0.00842112 -1.15805e-19) +(-2.16314 0.00379382 1.128e-19) +(-2.16165 -0.000784443 1.09731e-19) +(-2.15887 -0.00533011 0) +(-2.15478 -0.00985367 5.18485e-20) +(-2.14936 -0.0143497 0) +(-2.14259 -0.0188118 0) +(-2.13446 -0.0232342 9.38208e-20) +(-2.12495 -0.0276112 0) +(-2.11406 -0.0319377 0) +(-2.10178 -0.0362083 8.37907e-20) +(-2.0881 -0.0404184 0) +(-2.07301 -0.044563 0) +(-2.05651 -0.0486384 0) +(-2.0386 -0.0526401 -1.39294e-19) +(-2.01928 -0.0565646 0) +(-1.99855 -0.0604076 -1.24832e-19) +(-1.97641 -0.064166 -5.85184e-20) +(-1.95286 -0.067836 -5.52623e-20) +(-1.92792 -0.0714147 4.80899e-22) +(-1.90159 -0.0748983 -4.72475e-20) +(-1.87388 -0.078284 8.73518e-20) +(-1.8448 -0.0815684 4.00861e-20) +(-1.81436 -0.0847493 0) +(-1.78257 -0.0878246 3.22949e-20) +(-1.74946 -0.0907926 5.61299e-20) +(-1.71503 -0.09365 0) +(-1.67932 -0.0963941 0) +(-1.64233 -0.0990207 0) +(-1.60408 -0.101528 -6.30642e-22) +(-1.56461 -0.103913 0) +(-1.52392 -0.106177 0) +(-1.48206 -0.108319 0) +(-1.43905 -0.11034 0) +(-1.39492 -0.112241 1.65779e-20) +(-1.34969 -0.114021 0) +(-1.3034 -0.115676 -3.32932e-20) +(-1.25607 -0.117201 0) +(-1.20775 -0.1186 -5.01143e-20) +(-1.15846 -0.119876 -3.0015e-20) +(-1.10825 -0.121027 6.70057e-20) +(-1.05715 -0.122052 -7.54711e-20) +(-1.0052 -0.122951 -4.12107e-20) +(-0.952441 -0.123727 4.54434e-20) +(-0.898912 -0.124381 -5.12261e-20) +(-0.844657 -0.124916 0) +(-0.789717 -0.125334 -5.81407e-20) +(-0.734134 -0.125638 0) +(-0.677949 -0.12583 0) +(-0.621204 -0.125913 0) +(-0.563941 -0.125889 -1.51613e-19) +(-0.506201 -0.125761 0) +(-0.448026 -0.125533 1.6093e-21) +(-0.389457 -0.125209 0) +(-0.330535 -0.124791 0) +(-0.2713 -0.124284 -1.93292e-19) +(-0.21179 -0.123693 0) +(-0.152045 -0.12302 0) +(-0.0921013 -0.122271 2.19482e-19) +(-0.0319951 -0.121451 -1.61577e-21) +(0.0282407 -0.120563 0) +(0.0885716 -0.119612 -2.40143e-19) +(0.148963 -0.118604 -2.44072e-19) +(0.209384 -0.117541 0) +(0.269808 -0.116427 0) +(0.330204 -0.115268 2.5961e-19) +(0.390549 -0.114067 1.48969e-21) +(0.450829 -0.112829 0) +(0.511043 -0.111558 2.73883e-19) +(0.571183 -0.110254 0) +(0.631238 -0.108929 0) +(0.691188 -0.107603 0) +(0.751014 -0.106281 -2.91628e-19) +(0.810695 -0.104959 0) +(0.870215 -0.103621 0) +(0.929547 -0.102245 3.04769e-19) +(0.988649 -0.10079 0) +(1.04746 -0.0991886 0) +(1.10586 -0.0973252 -6.2935e-19) +(1.1637 -0.0949965 0) +(1.22065 -0.091835 0) +(1.27655 -0.0871298 3.25208e-19) +(1.33012 -0.0796032 6.55378e-19) +(1.38451 -0.0666703 -3.33817e-19) +(1.43095 -0.0427956 0) +(-0.00833447 -0.0146137 1.91074e-18) +(-0.0196979 0.0138276 7.32025e-19) +(-0.032389 0.0374443 3.9199e-19) +(-0.0466251 0.0575913 2.80535e-19) +(-0.061547 0.0756344 0) +(-0.0767672 0.0920081 -4.05204e-19) +(-0.0923626 0.106854 5.39735e-23) +(-0.108484 0.120232 0) +(-0.125264 0.132217 0) +(-0.142804 0.142928 0) +(-0.161178 0.152527 -1.49142e-19) +(-0.180429 0.161196 0) +(-0.200569 0.169114 0) +(-0.221594 0.176435 0) +(-0.243487 0.183288 0) +(-0.266225 0.189769 0) +(-0.289785 0.195949 1.19132e-19) +(-0.314137 0.201874 1.15294e-19) +(-0.339252 0.207577 0) +(-0.365096 0.213075 0) +(-0.391627 0.218378 -1.05185e-19) +(-0.418793 0.223487 2.04456e-19) +(-0.446532 0.228396 0) +(-0.474763 0.233094 9.66313e-20) +(-0.503392 0.237558 -9.41006e-20) +(-0.532304 0.241756 0) +(-0.561373 0.245641 2.67468e-19) +(-0.590458 0.249153 -1.73716e-19) +(-0.619418 0.252209 1.69373e-19) +(-0.648129 0.254711 8.25797e-20) +(-0.676504 0.256542 0) +(-0.704529 0.257594 2.36257e-19) +(-0.732264 0.257798 0) +(-0.759823 0.257188 0) +(-0.787297 0.255959 -7.32278e-20) +(-0.814685 0.254385 1.43053e-19) +(-0.84192 0.252582 2.09481e-19) +(-0.868957 0.25056 -2.04631e-19) +(-0.895801 0.248304 -6.66661e-20) +(-0.922492 0.245815 1.30333e-19) +(-0.949075 0.243117 0) +(-0.975606 0.240225 0) +(-1.00215 0.237192 -6.45717e-24) +(-1.02871 0.234134 0) +(-1.05525 0.231107 -1.16959e-19) +(-1.08174 0.228097 -1.14656e-19) +(-1.10817 0.225104 -1.12464e-19) +(-1.13456 0.222131 0) +(-1.1609 0.219177 1.08382e-19) +(-1.18717 0.216236 0) +(-1.21339 0.2133 -2.09297e-19) +(-1.23954 0.210361 0) +(-1.2656 0.207411 1.01205e-19) +(-1.29158 0.204441 0) +(-1.31746 0.201443 -9.80061e-20) +(-1.34322 0.198408 0) +(-1.36886 0.195327 0) +(-1.39435 0.192193 0) +(-1.41967 0.188997 0) +(-1.44482 0.185732 0) +(-1.46976 0.182392 0) +(-1.49447 0.178969 0) +(-1.51893 0.175457 -8.69951e-20) +(-1.54312 0.17185 0) +(-1.56701 0.168145 0) +(-1.59057 0.164337 -8.34191e-20) +(-1.61378 0.160422 0) +(-1.63661 0.156398 -8.11123e-20) +(-1.65903 0.152264 -7.99531e-20) +(-1.681 0.148018 -7.88681e-20) +(-1.7025 0.14366 0) +(-1.7235 0.139189 0) +(-1.74397 0.134607 -7.55868e-20) +(-1.76387 0.129916 1.48983e-19) +(-1.78317 0.125117 0) +(-1.80184 0.120213 -2.17077e-19) +(-1.81985 0.115207 0) +(-1.83717 0.110103 -7.02308e-20) +(-1.85375 0.104904 0) +(-1.86959 0.0996165 -6.80917e-20) +(-1.88463 0.0942438 -1.34051e-19) +(-1.89885 0.0887915 6.59377e-20) +(-1.91222 0.083265 0) +(-1.92471 0.0776701 -6.37587e-20) +(-1.93629 0.0720128 1.25365e-19) +(-1.94693 0.0662995 0) +(-1.9566 0.0605367 0) +(-1.96529 0.0547314 1.1858e-19) +(-1.97296 0.0488908 0) +(-1.97958 0.0430224 -1.14066e-19) +(-1.98515 0.0371342 0) +(-1.98963 0.031235 -1.09248e-19) +(-1.99301 0.0253345 0) +(-1.99526 0.019443 -2.08942e-19) +(-1.99637 0.013571 1.01934e-19) +(-1.9963 0.00772876 1.98978e-19) +(-1.99504 0.00192397 -9.67796e-20) +(-1.99256 -0.0038429 -9.41121e-20) +(-1.98882 -0.00957844 0) +(-1.98381 -0.0152853 1.94516e-22) +(-1.97751 -0.0209581 0) +(-1.96992 -0.0265893 8.33373e-20) +(-1.96102 -0.0321716 -8.02926e-20) +(-1.95079 -0.0376977 0) +(-1.93924 -0.0431605 0) +(-1.92634 -0.0485535 -7.16023e-20) +(-1.9121 -0.0538704 6.89034e-20) +(-1.8965 -0.0591055 0) +(-1.87955 -0.0642532 0) +(-1.86124 -0.0693083 5.95536e-20) +(-1.84158 -0.0742658 0) +(-1.82055 -0.0791208 5.33389e-20) +(-1.79817 -0.0838689 0) +(-1.77445 -0.0885056 4.70042e-20) +(-1.74938 -0.0930266 -4.3794e-20) +(-1.72297 -0.0974278 8.18108e-20) +(-1.69523 -0.101705 -3.72927e-20) +(-1.66617 -0.105855 -3.40037e-20) +(-1.63581 -0.109874 0) +(-1.60415 -0.11376 -2.7355e-20) +(-1.57121 -0.11751 -2.39978e-20) +(-1.53702 -0.12112 0) +(-1.50157 -0.124586 0) +(-1.46491 -0.127904 -2.84474e-20) +(-1.42703 -0.131072 1.03789e-20) +(-1.38797 -0.134086 -1.47239e-20) +(-1.34775 -0.136945 0) +(-1.30639 -0.139649 0) +(-1.26392 -0.142201 0) +(-1.22038 -0.144599 -2.69477e-20) +(-1.17578 -0.146843 0) +(-1.13016 -0.14893 2.7921e-20) +(-1.08355 -0.150856 0) +(-1.03597 -0.15262 4.19477e-20) +(-0.987469 -0.154228 0) +(-0.938076 -0.155676 -5.59786e-20) +(-0.887828 -0.156965 6.29885e-20) +(-0.836763 -0.158094 6.99905e-20) +(-0.78492 -0.159067 -7.69814e-20) +(-0.732339 -0.159885 0) +(-0.679059 -0.160552 0) +(-0.625122 -0.161071 1.00815e-21) +(-0.570567 -0.161444 0) +(-0.515436 -0.161674 0) +(-0.459767 -0.161765 0) +(-0.403602 -0.16172 1.2534e-19) +(-0.34698 -0.161543 0) +(-0.289943 -0.161239 1.38884e-19) +(-0.232529 -0.160812 0) +(-0.174779 -0.160266 1.51241e-19) +(-0.116731 -0.159607 1.58888e-19) +(-0.0584221 -0.15884 -1.64441e-19) +(0.000110076 -0.15797 0) +(0.0588303 -0.157004 1.7604e-19) +(0.117702 -0.155948 -1.82043e-19) +(0.176691 -0.154806 0) +(0.235765 -0.153586 -1.90646e-19) +(0.294892 -0.15229 3.91456e-19) +(0.354044 -0.150925 0) +(0.413195 -0.149497 4.08094e-19) +(0.47232 -0.148015 -2.09181e-19) +(0.531398 -0.146483 2.1325e-19) +(0.590415 -0.14491 0) +(0.649369 -0.143297 -2.21079e-19) +(0.708259 -0.141646 0) +(0.767077 -0.139971 0) +(0.825808 -0.138288 0) +(0.884432 -0.136603 2.35613e-19) +(0.942932 -0.134913 0) +(1.00129 -0.133201 0) +(1.05948 -0.131439 0) +(1.11747 -0.129578 0) +(1.17519 -0.127537 0) +(1.23257 -0.125181 2.53943e-19) +(1.28947 -0.122276 0) +(1.34567 -0.118424 5.17031e-19) +(1.40115 -0.112912 0) +(1.45502 -0.104552 -5.2966e-19) +(1.51061 -0.0912818 -5.35114e-19) +(1.56022 -0.0690774 0) +(-0.01076 0.0125278 0) +(-0.0243749 0.0463664 -6.27102e-19) +(-0.0389484 0.0705111 0) +(-0.0551113 0.0906109 0) +(-0.0717602 0.10865 0) +(-0.0884472 0.125206 4.64081e-23) +(-0.105255 0.140467 2.99324e-23) +(-0.122334 0.154501 -1.50515e-19) +(-0.139812 0.167357 0) +(-0.15779 0.179107 0) +(-0.176351 0.189856 0) +(-0.195547 0.199727 0) +(-0.21541 0.20885 0) +(-0.235946 0.217346 -2.33183e-19) +(-0.257148 0.22532 0) +(-0.278995 0.232853 2.18028e-19) +(-0.301459 0.240006 -1.05574e-19) +(-0.324503 0.246817 -1.02341e-19) +(-0.348085 0.253309 0) +(-0.372154 0.259488 0) +(-0.396652 0.26535 9.36516e-20) +(-0.421512 0.27088 -9.10231e-20) +(-0.446658 0.276056 0) +(-0.472005 0.280845 -8.60601e-20) +(-0.497464 0.285212 1.67449e-19) +(-0.52294 0.289115 0) +(-0.548338 0.292507 -1.5838e-19) +(-0.573575 0.295341 1.54089e-19) +(-0.598577 0.297568 -1.49961e-19) +(-0.623301 0.299143 0) +(-0.647731 0.300026 0) +(-0.671897 0.300198 -1.387e-19) +(-0.695859 0.299674 0) +(-0.719692 0.29852 0) +(-0.743457 0.296856 1.29263e-19) +(-0.767175 0.29482 -2.52464e-19) +(-0.790837 0.292507 -1.23378e-19) +(-0.814433 0.289964 2.41465e-19) +(-0.837969 0.287214 -1.18151e-19) +(-0.861461 0.284276 0) +(-0.884934 0.281178 0) +(-0.908421 0.277948 0) +(-0.931951 0.274628 1.08538e-19) +(-0.955533 0.271276 0) +(-0.97915 0.267927 1.04275e-19) +(-1.00278 0.264589 1.02287e-19) +(-1.02643 0.261262 1.00392e-19) +(-1.05007 0.257948 9.86548e-20) +(-1.0737 0.254642 -9.68576e-20) +(-1.09733 0.251339 0) +(-1.12093 0.248033 9.36161e-20) +(-1.14449 0.244713 0) +(-1.16802 0.241371 3.98529e-23) +(-1.19148 0.237996 0) +(-1.21488 0.234578 1.75686e-19) +(-1.23819 0.231108 0) +(-1.2614 0.227575 -8.52363e-20) +(-1.28448 0.22397 0) +(-1.30743 0.220284 0) +(-1.33023 0.216507 -1.63167e-19) +(-1.35284 0.212632 0) +(-1.37525 0.208652 0) +(-1.39743 0.204558 7.81851e-20) +(-1.41936 0.200346 0) +(-1.44102 0.19601 0) +(-1.46237 0.191546 -1.50063e-19) +(-1.48339 0.186949 0) +(-1.50406 0.182218 1.46013e-19) +(-1.52433 0.17735 7.19934e-20) +(-1.54419 0.172344 0) +(-1.5636 0.167201 -1.40131e-19) +(-1.58253 0.16192 0) +(-1.60095 0.156503 1.36299e-19) +(-1.61884 0.150951 -2.68741e-19) +(-1.63615 0.145269 0) +(-1.65286 0.139458 1.30554e-19) +(-1.66894 0.133523 0) +(-1.68436 0.127469 0) +(-1.69908 0.1213 1.24959e-19) +(-1.71307 0.115022 0) +(-1.72631 0.108642 1.2107e-19) +(-1.73877 0.102164 -1.19242e-19) +(-1.75041 0.0955971 0) +(-1.7612 0.0889474 0) +(-1.77113 0.0822224 -1.133e-19) +(-1.78015 0.07543 1.11425e-19) +(-1.78826 0.0685783 1.09423e-19) +(-1.79541 0.0616758 1.07398e-19) +(-1.80158 0.0547312 0) +(-1.80676 0.0477535 1.03143e-19) +(-1.81091 0.0407521 1.01171e-19) +(-1.81402 0.0337366 0) +(-1.81607 0.0267174 0) +(-1.81703 0.0197046 9.45405e-20) +(-1.81688 0.0127079 0) +(-1.8156 0.00573632 -9.00009e-20) +(-1.81315 -0.001204 0) +(-1.80953 -0.00811037 8.53677e-20) +(-1.8047 -0.014983 0) +(-1.79866 -0.0218199 1.8168e-22) +(-1.79139 -0.0286146 0) +(-1.78287 -0.0353591 -7.52386e-20) +(-1.77311 -0.0420447 0) +(-1.76208 -0.048663 0) +(-1.74978 -0.0552055 0) +(-1.73619 -0.0616647 0) +(-1.72132 -0.0680329 -6.21206e-20) +(-1.70517 -0.0743033 0) +(-1.68771 -0.080469 0) +(-1.66896 -0.0865239 -1.08269e-19) +(-1.64892 -0.0924616 0) +(-1.62758 -0.0982767 0) +(-1.60495 -0.103963 0) +(-1.58102 -0.109516 -8.56412e-20) +(-1.55582 -0.11493 0) +(-1.52934 -0.120201 -7.35077e-20) +(-1.50159 -0.125323 0) +(-1.47258 -0.130292 6.22544e-20) +(-1.44233 -0.135104 -5.63051e-20) +(-1.41084 -0.139757 0) +(-1.37813 -0.144246 4.42998e-20) +(-1.34422 -0.148567 0) +(-1.30912 -0.152715 0) +(-1.27285 -0.156685 5.15223e-20) +(-1.23543 -0.160475 -1.99322e-20) +(-1.19687 -0.164081 1.31633e-20) +(-1.15721 -0.1675 0) +(-1.11646 -0.170733 0) +(-1.07466 -0.173781 0) +(-1.03182 -0.176644 2.25752e-20) +(-0.987987 -0.179323 0) +(-0.943175 -0.181814 -2.33784e-20) +(-0.897413 -0.184111 0) +(-0.850735 -0.186215 0) +(-0.803173 -0.188129 0) +(-0.754762 -0.189851 0) +(-0.705537 -0.19138 -5.43594e-20) +(-0.655533 -0.192718 0) +(-0.604789 -0.193868 6.66638e-20) +(-0.553342 -0.194832 -7.27852e-20) +(-0.50123 -0.195614 -7.88822e-20) +(-0.448493 -0.196216 8.56675e-20) +(-0.395169 -0.196643 0) +(-0.341296 -0.196897 0) +(-0.286914 -0.196984 0) +(-0.232061 -0.196906 0) +(-0.176775 -0.19667 0) +(-0.121096 -0.19628 0) +(-0.0650615 -0.195741 0) +(-0.00870912 -0.19506 -1.32772e-19) +(0.0479245 -0.194243 0) +(0.104802 -0.193296 1.42569e-19) +(0.161888 -0.192225 0) +(0.219146 -0.191039 -4.53529e-19) +(0.276544 -0.189743 0) +(0.334048 -0.188344 3.19142e-19) +(0.391627 -0.186848 1.64399e-19) +(0.449253 -0.185264 -1.68421e-19) +(0.5069 -0.183597 0) +(0.564543 -0.181857 -3.52246e-19) +(0.622161 -0.180052 0) +(0.679737 -0.178193 -3.65469e-19) +(0.737258 -0.176289 0) +(0.794718 -0.174346 0) +(0.852116 -0.172364 0) +(0.909449 -0.170357 0) +(0.966707 -0.168336 0) +(1.02388 -0.166309 4.0441e-19) +(1.08094 -0.164271 4.10205e-19) +(1.13788 -0.162205 0) +(1.19468 -0.160079 0) +(1.25132 -0.157838 0) +(1.30773 -0.155391 0) +(1.36387 -0.152587 -4.36049e-19) +(1.41964 -0.149181 0) +(1.47489 -0.144767 -8.91406e-19) +(1.52972 -0.138672 4.49606e-19) +(1.58352 -0.129845 4.54117e-19) +(1.63968 -0.116711 4.60963e-19) +(1.69067 -0.0962729 4.64089e-19) +(-0.0119796 0.0444996 0) +(-0.0269891 0.0829497 5.56938e-19) +(-0.0428023 0.107109 0) +(-0.0601781 0.126711 4.41311e-19) +(-0.0779003 0.144301 3.61989e-19) +(-0.0954824 0.160583 -1.58836e-19) +(-0.112995 0.175789 -1.44882e-19) +(-0.130571 0.189991 -1.35218e-19) +(-0.148323 0.20322 -2.55939e-19) +(-0.166344 0.215512 0) +(-0.184709 0.226925 0) +(-0.203473 0.237532 2.25903e-19) +(-0.222669 0.247417 0) +(-0.24231 0.256663 4.21618e-19) +(-0.26239 0.265346 0) +(-0.282891 0.273524 -1.97677e-19) +(-0.303783 0.28124 0) +(-0.325028 0.288521 0) +(-0.346578 0.295376 1.8068e-19) +(-0.368382 0.301803 0) +(-0.390381 0.307788 1.70615e-19) +(-0.412513 0.313309 0) +(-0.434713 0.318336 0) +(-0.456914 0.32284 0) +(-0.479052 0.326786 1.54873e-22) +(-0.501069 0.330144 0) +(-0.522914 0.332883 0) +(-0.544548 0.334983 0) +(-0.565948 0.336427 0) +(-0.587111 0.337212 0) +(-0.608052 0.337345 0) +(-0.628809 0.336848 -1.26843e-19) +(-0.64943 0.335766 0) +(-0.669968 0.334166 1.2085e-19) +(-0.690467 0.332131 2.18405e-22) +(-0.71095 0.329751 1.15249e-19) +(-0.731431 0.327096 0) +(-0.751915 0.32422 -1.10381e-19) +(-0.77241 0.321157 1.08087e-19) +(-0.792931 0.317937 0) +(-0.813491 0.314586 0) +(-0.834108 0.311134 0) +(-0.854796 0.307611 0) +(-0.875557 0.304052 0) +(-0.896385 0.300479 0) +(-0.917267 0.296905 -9.4231e-20) +(-0.93819 0.293332 9.25467e-20) +(-0.959146 0.289759 -9.08432e-20) +(-0.980125 0.286182 1.7877e-19) +(-1.00112 0.282595 0) +(-1.02211 0.27899 -1.72945e-19) +(-1.04309 0.275357 1.70198e-19) +(-1.06405 0.271687 8.38464e-20) +(-1.08497 0.267968 0) +(-1.10583 0.264189 -8.11987e-20) +(-1.12663 0.26034 0) +(-1.14734 0.256408 7.88505e-20) +(-1.16795 0.252383 0) +(-1.18843 0.248256 0) +(-1.20877 0.244016 1.5115e-19) +(-1.22894 0.239654 0) +(-1.24892 0.235163 -1.47162e-19) +(-1.26869 0.230534 0) +(-1.28822 0.225761 0) +(-1.30749 0.220839 0) +(-1.32647 0.215762 2.78842e-19) +(-1.34513 0.210527 1.37636e-19) +(-1.36344 0.205132 -1.35714e-19) +(-1.38139 0.199574 -1.34034e-19) +(-1.39893 0.193853 0) +(-1.41604 0.187969 1.30395e-19) +(-1.43269 0.181922 0) +(-1.44885 0.175715 -1.2692e-19) +(-1.46449 0.16935 -1.1988e-22) +(-1.47959 0.162831 0) +(-1.4941 0.156161 0) +(-1.50801 0.149345 -1.2016e-19) +(-1.52128 0.14239 0) +(-1.53389 0.1353 -1.1658e-19) +(-1.5458 0.128083 0) +(-1.55698 0.120746 1.13228e-19) +(-1.56742 0.113296 1.11333e-19) +(-1.57707 0.105742 0) +(-1.58592 0.098091 0) +(-1.59393 0.0903528 0) +(-1.60109 0.0825362 -1.04123e-19) +(-1.60736 0.0746508 -1.0227e-19) +(-1.61272 0.0667063 -1.00393e-19) +(-1.61716 0.0587127 0) +(-1.62063 0.0506803 0) +(-1.62313 0.0426193 -9.46096e-20) +(-1.62464 0.0345403 -9.27801e-20) +(-1.62512 0.026454 0) +(-1.62457 0.0183708 0) +(-1.62295 0.0103008 0) +(-1.62025 0.00225246 1.68904e-19) +(-1.61644 -0.00576703 0) +(-1.61151 -0.0137526 -7.97941e-20) +(-1.60544 -0.0217005 0) +(-1.59821 -0.0296054 7.55258e-20) +(-1.58982 -0.0374597 0) +(-1.58025 -0.0452546 -1.4128e-19) +(-1.5695 -0.0529805 -1.3648e-19) +(-1.55754 -0.0606277 1.31623e-19) +(-1.54439 -0.0681872 0) +(-1.53002 -0.0756498 0) +(-1.51443 -0.0830071 -1.16724e-19) +(-1.49763 -0.0902511 0) +(-1.4796 -0.0973739 -1.06525e-19) +(-1.46034 -0.104368 -3.81962e-22) +(-1.43986 -0.111227 9.61244e-20) +(-1.41816 -0.117943 0) +(-1.39524 -0.124511 0) +(-1.37109 -0.130923 7.97718e-20) +(-1.34574 -0.137175 0) +(-1.31918 -0.14326 0) +(-1.29142 -0.149173 6.3847e-20) +(-1.26247 -0.154909 -5.79094e-20) +(-1.23235 -0.160464 1.0514e-19) +(-1.20106 -0.165834 0) +(-1.16862 -0.171013 -4.11615e-20) +(-1.13504 -0.175998 0) +(-1.10033 -0.180781 0) +(-1.06452 -0.18536 -4.88262e-20) +(-1.02762 -0.189729 1.84895e-20) +(-0.989657 -0.193885 0) +(-0.950644 -0.197826 0) +(-0.910606 -0.201549 0) +(-0.86957 -0.205056 0) +(-0.827563 -0.208348 -1.0146e-20) +(-0.784608 -0.211427 1.53921e-20) +(-0.740733 -0.214288 2.16155e-20) +(-0.695962 -0.216926 0) +(-0.650327 -0.21934 0) +(-0.603857 -0.221532 0) +(-0.556586 -0.2235 4.39418e-20) +(-0.508548 -0.225245 9.97356e-20) +(-0.459777 -0.226768 0) +(-0.410308 -0.228073 -1.83161e-19) +(-0.360178 -0.229162 6.70031e-20) +(-0.309422 -0.230039 7.25732e-20) +(-0.258078 -0.230707 0) +(-0.206182 -0.23117 -1.66155e-19) +(-0.15377 -0.231434 0) +(-0.100881 -0.231501 0) +(-0.0475493 -0.231378 0) +(0.00618677 -0.23107 0) +(0.0602913 -0.230584 -2.18524e-19) +(0.114727 -0.229925 0) +(0.169459 -0.229101 0) +(0.22445 -0.228119 0) +(0.279666 -0.226985 0) +(0.335073 -0.225708 0) +(0.390637 -0.224295 1.04909e-21) +(0.446327 -0.222755 2.78197e-19) +(0.502113 -0.221096 -2.86933e-19) +(0.557966 -0.219325 2.93399e-19) +(0.613859 -0.217453 0) +(0.669769 -0.215487 -3.07781e-19) +(0.725674 -0.213439 0) +(0.781555 -0.211318 3.21349e-19) +(0.837398 -0.209139 3.28804e-19) +(0.893191 -0.206912 0) +(0.948926 -0.204646 0) +(1.0046 -0.202345 3.4615e-19) +(1.06022 -0.200018 3.51894e-19) +(1.11578 -0.197676 3.57452e-19) +(1.17126 -0.195324 -9.08731e-22) +(1.22665 -0.192957 -3.68893e-19) +(1.28196 -0.190559 0) +(1.33715 -0.188092 0) +(1.39221 -0.185499 0) +(1.44711 -0.182681 3.86747e-19) +(1.5018 -0.179482 3.91825e-19) +(1.55624 -0.17565 0) +(1.61034 -0.170793 7.98714e-19) +(1.6643 -0.164298 -9.14676e-22) +(1.71767 -0.155263 -9.92051e-22) +(1.77388 -0.142508 -4.10911e-19) +(1.82514 -0.123754 -8.28897e-19) +(-0.0124402 0.079163 2.6834e-18) +(-0.0281277 0.121706 0) +(-0.0445773 0.145641 0) +(-0.062525 0.164502 -8.14892e-19) +(-0.0807185 0.181353 -3.33892e-19) +(-0.0986502 0.197031 -3.34589e-23) +(-0.116368 0.211812 2.66479e-19) +(-0.13398 0.225778 -6.08595e-23) +(-0.151579 0.23895 2.35031e-19) +(-0.16924 0.251339 0) +(-0.187028 0.262963 0) +(-0.204992 0.273856 -2.07731e-19) +(-0.223164 0.284062 0) +(-0.241555 0.293629 -1.94289e-19) +(-0.260164 0.302601 0) +(-0.278974 0.311015 0) +(-0.297961 0.318896 0) +(-0.317089 0.326257 0) +(-0.336319 0.3331 -1.67239e-19) +(-0.355606 0.339416 0) +(-0.374904 0.34519 -1.58072e-19) +(-0.394168 0.350399 0) +(-0.413352 0.355019 0) +(-0.432416 0.359029 -1.45728e-19) +(-0.451324 0.362407 -1.41645e-19) +(-0.470049 0.365139 -1.38093e-19) +(-0.488572 0.367214 -1.34468e-19) +(-0.506888 0.368636 0) +(-0.524999 0.369411 -1.27611e-19) +(-0.542922 0.369561 -1.24387e-19) +(-0.560684 0.369115 -1.21303e-19) +(-0.57832 0.368114 1.18075e-19) +(-0.59587 0.36661 0) +(-0.613374 0.364663 -1.12647e-19) +(-0.630864 0.362341 2.20887e-22) +(-0.648364 0.359708 1.07945e-19) +(-0.665891 0.356822 1.0564e-19) +(-0.683458 0.353729 0) +(-0.701074 0.350466 -1.01328e-19) +(-0.718752 0.347065 0) +(-0.736501 0.343552 0) +(-0.754331 0.339952 1.90977e-19) +(-0.772248 0.336289 1.87384e-19) +(-0.790251 0.332585 0) +(-0.808334 0.328857 0) +(-0.826487 0.325113 2.66053e-19) +(-0.844698 0.321355 -2.6147e-19) +(-0.862957 0.317583 0) +(-0.881251 0.313791 1.96712e-22) +(-0.899569 0.309975 0) +(-0.917898 0.306123 1.63142e-19) +(-0.936226 0.302228 -1.60643e-19) +(-0.954537 0.298277 -1.58234e-19) +(-0.972817 0.294258 0) +(-0.99105 0.290161 0) +(-1.00922 0.285972 0) +(-1.02731 0.281681 1.49534e-19) +(-1.04529 0.277274 0) +(-1.06316 0.272742 -1.45487e-19) +(-1.08088 0.268074 0) +(-1.09844 0.26326 0) +(-1.11581 0.258292 1.39645e-19) +(-1.13297 0.253162 0) +(-1.1499 0.247862 0) +(-1.16656 0.242387 0) +(-1.18294 0.236732 -2.65365e-19) +(-1.19901 0.230894 -1.30918e-19) +(-1.21475 0.22487 0) +(-1.23011 0.218659 -1.55953e-22) +(-1.24509 0.212259 0) +(-1.25964 0.205671 -1.24512e-19) +(-1.27375 0.198898 1.22903e-19) +(-1.28738 0.191941 -1.21302e-19) +(-1.30051 0.184804 1.19545e-19) +(-1.3131 0.17749 0) +(-1.32514 0.170006 -1.16511e-19) +(-1.3366 0.162356 -1.61036e-22) +(-1.34744 0.154546 0) +(-1.35764 0.146585 0) +(-1.36717 0.13848 -1.1006e-19) +(-1.37601 0.130239 -1.08259e-19) +(-1.38413 0.12187 -1.06767e-19) +(-1.39151 0.113383 -1.05096e-19) +(-1.39813 0.104787 1.03407e-19) +(-1.40394 0.0960935 0) +(-1.40895 0.0873113 0) +(-1.41311 0.0784517 0) +(-1.41641 0.0695254 0) +(-1.41883 0.0605437 1.8925e-19) +(-1.42035 0.0515177 0) +(-1.42094 0.0424587 0) +(-1.42058 0.0333779 2.66964e-19) +(-1.41926 0.0242867 0) +(-1.41696 0.015196 -1.70337e-19) +(-1.41366 0.00611632 0) +(-1.40933 -0.00294311 -1.61727e-19) +(-1.40396 -0.0119738 0) +(-1.39754 -0.0209685 -1.53407e-19) +(-1.39004 -0.0299206 0) +(-1.38147 -0.0388224 -1.44247e-19) +(-1.3718 -0.0476653 0) +(-1.36102 -0.0564391 1.3518e-19) +(-1.34914 -0.0651338 2.6144e-19) +(-1.33613 -0.0737387 -1.25897e-19) +(-1.322 -0.0822438 0) +(-1.30674 -0.0906391 1.16713e-19) +(-1.29034 -0.0989154 1.11579e-19) +(-1.2728 -0.107063 0) +(-1.25411 -0.115074 1.01784e-19) +(-1.23428 -0.12294 9.68148e-20) +(-1.21331 -0.130652 -9.18006e-20) +(-1.19119 -0.138204 8.7058e-20) +(-1.16794 -0.145587 -8.19602e-20) +(-1.14355 -0.152795 -7.68229e-20) +(-1.11802 -0.159822 0) +(-1.09137 -0.166659 0) +(-1.0636 -0.173303 3.25282e-22) +(-1.03473 -0.179748 0) +(-1.00475 -0.185988 -5.02903e-20) +(-0.973687 -0.192019 -4.5294e-20) +(-0.941549 -0.197834 0) +(-0.908348 -0.203429 0) +(-0.8741 -0.208798 -2.91843e-20) +(-0.838819 -0.213935 2.34347e-20) +(-0.802522 -0.218836 0) +(-0.765228 -0.223496 0) +(-0.726958 -0.227912 0) +(-0.687732 -0.232082 -2.07017e-21) +(-0.647576 -0.236008 3.36618e-21) +(-0.606512 -0.23969 0) +(-0.564565 -0.243131 -1.45981e-20) +(-0.521761 -0.246326 0) +(-0.478122 -0.249269 0) +(-0.433678 -0.251961 0) +(-0.388456 -0.2544 0) +(-0.342488 -0.256585 -4.15804e-20) +(-0.295806 -0.258518 -4.69211e-20) +(-0.248442 -0.260201 -1.03682e-19) +(-0.20043 -0.261636 1.15048e-19) +(-0.151802 -0.262828 1.24758e-19) +(-0.102594 -0.263779 1.35198e-19) +(-0.0528387 -0.264494 0) +(-0.00257181 -0.264978 3.12158e-19) +(0.0481729 -0.265234 0) +(0.0993605 -0.265269 0) +(0.150956 -0.265088 0) +(0.202925 -0.264698 0) +(0.255232 -0.264106 2.01771e-19) +(0.307843 -0.263318 0) +(0.360725 -0.262343 0) +(0.413843 -0.261189 -2.25764e-19) +(0.467165 -0.259863 0) +(0.520661 -0.258375 0) +(0.574297 -0.256734 8.02129e-22) +(0.628047 -0.25495 -5.13183e-19) +(0.681881 -0.253031 -2.63324e-19) +(0.735773 -0.250988 -2.71052e-19) +(0.7897 -0.248831 2.77018e-19) +(0.843641 -0.246571 5.67933e-19) +(0.897575 -0.244221 -2.89953e-19) +(0.951489 -0.241793 -7.58182e-22) +(1.00537 -0.239301 0) +(1.0592 -0.236761 0) +(1.11298 -0.234181 0) +(1.16671 -0.23157 -3.19755e-19) +(1.22039 -0.228934 -3.25025e-19) +(1.27402 -0.226284 -3.30117e-19) +(1.32759 -0.223622 -7.02617e-22) +(1.3811 -0.220945 0) +(1.43455 -0.218234 0) +(1.48792 -0.215451 0) +(1.5412 -0.212535 0) +(1.59438 -0.209384 -3.56832e-19) +(1.64743 -0.205839 0) +(1.70035 -0.201656 0) +(1.75311 -0.196462 -3.67806e-19) +(1.80597 -0.189714 -3.71214e-19) +(1.85855 -0.180652 -3.74489e-19) +(1.91432 -0.168396 3.78235e-19) +(1.96512 -0.151195 3.80228e-19) +(-0.0123688 0.114768 -2.41852e-18) +(-0.028163 0.161144 -9.41795e-19) +(-0.0447268 0.184765 0) +(-0.0626981 0.202758 3.83022e-19) +(-0.0808383 0.218685 0) +(-0.098632 0.233519 -9.40741e-23) +(-0.116102 0.247586 2.49549e-19) +(-0.133329 0.260985 2.32299e-19) +(-0.150381 0.273734 0) +(-0.167316 0.285827 2.09724e-19) +(-0.184186 0.297257 0) +(-0.20103 0.308027 0) +(-0.217876 0.318149 0) +(-0.234736 0.327641 1.8198e-19) +(-0.251613 0.33652 0) +(-0.268496 0.344804 0) +(-0.285367 0.352503 -1.66435e-19) +(-0.302202 0.359618 0) +(-0.318972 0.366149 0) +(-0.335648 0.372085 1.52991e-19) +(-0.352201 0.377414 0) +(-0.368604 0.38212 1.44896e-19) +(-0.384833 0.386188 0) +(-0.400871 0.389608 2.74578e-19) +(-0.416705 0.392372 -1.33834e-19) +(-0.432333 0.39448 -2.26482e-22) +(-0.447757 0.39594 -2.40062e-22) +(-0.462988 0.396767 1.23896e-19) +(-0.478044 0.396984 1.20564e-19) +(-0.49295 0.396626 2.3549e-19) +(-0.507737 0.395731 -2.64699e-22) +(-0.522436 0.394345 0) +(-0.537083 0.39252 0) +(-0.551707 0.390311 2.14645e-19) +(-0.566336 0.387773 -1.0477e-19) +(-0.580991 0.384958 -1.02558e-19) +(-0.59569 0.381914 -1.00445e-19) +(-0.610444 0.378681 0) +(-0.625265 0.375293 2.89724e-19) +(-0.640161 0.371779 -1.89495e-19) +(-0.655139 0.368162 -1.8591e-19) +(-0.670205 0.364465 -1.82266e-19) +(-0.68536 0.360707 -1.78974e-19) +(-0.700602 0.356902 0) +(-0.715924 0.35306 1.72965e-19) +(-0.731318 0.349188 -3.39878e-19) +(-0.746771 0.345287 1.67027e-19) +(-0.762271 0.341354 1.64538e-19) +(-0.777806 0.337385 -3.23691e-19) +(-0.793363 0.333373 0) +(-0.808928 0.329309 0) +(-0.824487 0.325181 0) +(-0.840024 0.320979 0) +(-0.855524 0.316689 1.50381e-19) +(-0.870969 0.312299 0) +(-0.886343 0.307797 0) +(-0.901627 0.30317 -1.4415e-19) +(-0.916801 0.298405 0) +(-0.931846 0.293492 2.81017e-19) +(-0.94674 0.288418 0) +(-0.961462 0.283175 -1.37054e-19) +(-0.97599 0.277753 0) +(-0.9903 0.272143 0) +(-1.00437 0.26634 0) +(-1.01817 0.260337 0) +(-1.03169 0.25413 1.28624e-19) +(-1.04489 0.247715 0) +(-1.05775 0.24109 1.25683e-19) +(-1.07025 0.234254 -1.84028e-22) +(-1.08235 0.227206 0) +(-1.09404 0.219949 1.20916e-19) +(-1.10529 0.212484 -1.19405e-19) +(-1.11608 0.204814 1.17896e-19) +(-1.12637 0.196944 0) +(-1.13615 0.188878 0) +(-1.14539 0.180622 2.26912e-19) +(-1.15407 0.172184 1.11845e-19) +(-1.16215 0.163569 0) +(-1.16962 0.154788 0) +(-1.17645 0.145847 3.22012e-19) +(-1.18263 0.136756 0) +(-1.18812 0.127526 3.12535e-19) +(-1.19291 0.118166 1.02457e-19) +(-1.19697 0.108688 -1.0083e-19) +(-1.20028 0.0991013 -1.98698e-19) +(-1.20283 0.0894186 0) +(-1.20459 0.0796513 0) +(-1.20554 0.0698113 0) +(-1.20566 0.0599106 3.1821e-22) +(-1.20493 0.0499614 1.81421e-19) +(-1.20335 0.0399757 0) +(-1.20088 0.0299656 3.04691e-22) +(-1.19751 0.0199429 0) +(-1.19322 0.00991949 1.66226e-19) +(-1.188 -9.37613e-05 1.62457e-19) +(-1.18184 -0.0100864 -1.58304e-19) +(-1.17471 -0.0200488 0) +(-1.1666 -0.0299717 1.49561e-19) +(-1.1575 -0.0398464 0) +(-1.1474 -0.0496636 -1.41161e-19) +(-1.13629 -0.0594132 0) +(-1.12416 -0.0690845 -1.3227e-19) +(-1.11101 -0.0786663 -1.27484e-19) +(-1.09683 -0.0881476 1.23171e-19) +(-1.08161 -0.0975174 0) +(-1.06534 -0.106765 -2.27486e-19) +(-1.04803 -0.11588 0) +(-1.02967 -0.124853 0) +(-1.01026 -0.133674 0) +(-0.98979 -0.142334 0) +(-0.968272 -0.150824 0) +(-0.945703 -0.159135 -8.46182e-20) +(-0.922085 -0.16726 7.96406e-20) +(-0.897421 -0.175192 7.46268e-20) +(-0.871717 -0.182921 0) +(-0.844978 -0.190443 0) +(-0.817211 -0.197749 2.46853e-22) +(-0.788425 -0.204835 0) +(-0.758629 -0.211696 -4.9346e-20) +(-0.727833 -0.218324 8.80819e-20) +(-0.696049 -0.224713 0) +(-0.663289 -0.230859 -6.7504e-20) +(-0.629564 -0.236754 8.53125e-20) +(-0.59489 -0.242393 0) +(-0.559282 -0.247772 3.60689e-20) +(-0.522758 -0.252884 0) +(-0.485335 -0.257726 0) +(-0.447034 -0.262295 2.00137e-21) +(-0.407878 -0.266593 -3.25309e-21) +(-0.367887 -0.270621 1.64514e-20) +(-0.327085 -0.274381 2.69207e-20) +(-0.285495 -0.277868 0) +(-0.24314 -0.281079 0) +(-0.200044 -0.284011 0) +(-0.156235 -0.286662 0) +(-0.111742 -0.289032 0) +(-0.066594 -0.291122 0) +(-0.0208213 -0.292936 1.99001e-19) +(0.0255456 -0.294476 0) +(0.0724757 -0.295745 -6.11578e-22) +(0.119937 -0.296749 -1.28488e-19) +(0.167898 -0.29749 1.37043e-19) +(0.216326 -0.297974 -1.46668e-19) +(0.265189 -0.298207 0) +(0.314455 -0.298193 0) +(0.364092 -0.29794 0) +(0.414066 -0.297456 0) +(0.464347 -0.296746 1.88507e-19) +(0.514902 -0.295821 0) +(0.5657 -0.294687 2.04264e-19) +(0.616711 -0.293355 4.24379e-19) +(0.667903 -0.291833 -2.19307e-19) +(0.71925 -0.290132 0) +(0.770721 -0.288261 2.34257e-19) +(0.822292 -0.286233 2.41148e-19) +(0.873937 -0.284056 2.47858e-19) +(0.925632 -0.281745 2.53772e-19) +(0.977356 -0.279309 -2.60737e-19) +(1.02909 -0.276762 -2.66906e-19) +(1.08082 -0.274117 2.72894e-19) +(1.13253 -0.27139 -5.5681e-19) +(1.18421 -0.268596 0) +(1.23586 -0.265752 0) +(1.28746 -0.262869 -2.94481e-19) +(1.33901 -0.259958 2.9959e-19) +(1.39053 -0.257025 0) +(1.44201 -0.254081 6.18576e-19) +(1.49345 -0.251128 -3.1443e-19) +(1.54486 -0.24816 0) +(1.59623 -0.245158 0) +(1.64757 -0.242086 0) +(1.69888 -0.238878 6.60915e-19) +(1.75014 -0.235434 6.68311e-19) +(1.80136 -0.231597 0) +(1.85257 -0.227132 0) +(1.90377 -0.221698 0) +(1.95528 -0.214817 6.94393e-19) +(2.00677 -0.205857 6.99981e-19) +(2.06168 -0.194159 -7.06233e-19) +(2.11146 -0.178368 0) +(-0.0119035 0.149982 0) +(-0.0273538 0.200073 8.88816e-19) +(-0.0436039 0.223379 0) +(-0.0611461 0.240449 3.65544e-19) +(-0.0787953 0.255335 0) +(-0.0960416 0.269152 2.60918e-19) +(-0.112879 0.28228 -2.36884e-19) +(-0.12936 0.294842 2.20445e-19) +(-0.145531 0.306862 0) +(-0.16143 0.318326 -1.98494e-19) +(-0.177096 0.329213 0) +(-0.19256 0.339504 0) +(-0.207847 0.349186 0) +(-0.222969 0.358255 -1.7237e-19) +(-0.237933 0.36671 1.67435e-19) +(-0.252736 0.374555 0) +(-0.267372 0.381787 3.16142e-19) +(-0.281829 0.388406 -1.53858e-19) +(-0.296093 0.394405 0) +(-0.310151 0.399778 -1.45639e-19) +(-0.323989 0.404515 0) +(-0.337598 0.408609 -1.38157e-19) +(-0.350973 0.412055 -1.34794e-19) +(-0.364115 0.414853 -2.62553e-19) +(-0.377028 0.417005 2.55936e-19) +(-0.389724 0.418523 1.24668e-19) +(-0.40222 0.419424 3.65192e-19) +(-0.414536 0.419734 -1.18617e-19) +(-0.426699 0.419484 2.31997e-19) +(-0.438737 0.418711 -3.39575e-19) +(-0.450679 0.417459 1.10424e-19) +(-0.462557 0.415773 0) +(-0.4744 0.413701 2.11524e-19) +(-0.486233 0.411291 -2.06551e-19) +(-0.498079 0.408591 -2.02599e-19) +(-0.509957 0.405644 0) +(-0.521882 0.40249 0) +(-0.533866 0.399164 1.90658e-19) +(-0.545916 0.395695 -1.86759e-19) +(-0.558041 0.392109 3.66837e-19) +(-0.570243 0.388425 3.60176e-19) +(-0.582524 0.384663 0) +(-0.594884 0.380834 0) +(-0.607318 0.37695 0) +(-0.619819 0.373017 2.06266e-22) +(-0.632377 0.369038 -2.06555e-22) +(-0.64498 0.365013 -1.6283e-19) +(-0.657617 0.360939 -1.60122e-19) +(-0.670273 0.356811 3.15651e-19) +(-0.682935 0.35262 0) +(-0.695588 0.348357 0) +(-0.708216 0.344011 0) +(-0.720803 0.339569 1.49195e-19) +(-0.733333 0.335019 2.05482e-22) +(-0.745788 0.330348 0) +(-0.75815 0.325541 0) +(-0.770402 0.320588 0) +(-0.782523 0.315474 0) +(-0.794494 0.310188 2.01693e-22) +(-0.806294 0.304719 0) +(-0.817902 0.299056 2.69404e-19) +(-0.829298 0.293191 0) +(-0.840458 0.287115 0) +(-0.851361 0.280822 0) +(-0.861984 0.274306 0) +(-0.872305 0.267563 0) +(-0.882302 0.260591 -1.25587e-19) +(-0.891951 0.253386 -2.48038e-19) +(-0.90123 0.24595 1.22461e-19) +(-0.910118 0.238282 0) +(-0.91859 0.230384 2.39522e-19) +(-0.926626 0.22226 -2.36632e-19) +(-0.934203 0.213913 0) +(-0.9413 0.205349 2.3084e-19) +(-0.947896 0.196572 -2.27929e-19) +(-0.953969 0.187591 -3.37315e-19) +(-0.959499 0.178412 0) +(-0.964465 0.169045 0) +(-0.968848 0.159497 0) +(-0.972627 0.149779 -2.12682e-19) +(-0.975784 0.1399 -2.09962e-19) +(-0.9783 0.129873 -4.1335e-19) +(-0.980155 0.119707 0) +(-0.981333 0.109414 2.00481e-19) +(-0.981816 0.0990076 -3.22136e-22) +(-0.981586 0.0884986 1.93918e-19) +(-0.980627 0.0779 1.90556e-19) +(-0.978922 0.0672245 0) +(-0.976454 0.0564851 -3.67026e-19) +(-0.973209 0.0456945 -3.59957e-19) +(-0.969172 0.0348655 0) +(-0.964328 0.0240109 -1.72588e-19) +(-0.958662 0.0131431 0) +(-0.95216 0.0022746 0) +(-0.944808 -0.00858309 -1.60849e-19) +(-0.936592 -0.0194184 -2.43417e-22) +(-0.9275 -0.0302205 1.52755e-19) +(-0.91752 -0.0409787 0) +(-0.906644 -0.0516826 0) +(-0.894861 -0.0623218 2.79469e-19) +(-0.882165 -0.0728849 0) +(-0.868549 -0.0833605 -2.08264e-22) +(-0.854005 -0.0937367 0) +(-0.838529 -0.104002 -1.21711e-19) +(-0.822115 -0.114145 0) +(-0.80476 -0.124154 1.12459e-19) +(-0.786459 -0.134017 0) +(-0.767211 -0.143726 0) +(-0.747014 -0.153268 9.84253e-20) +(-0.725867 -0.162635 0) +(-0.70377 -0.171816 0) +(-0.680725 -0.180804 0) +(-0.656733 -0.189588 -7.89038e-20) +(-0.631799 -0.19816 -7.39376e-20) +(-0.605925 -0.206514 0) +(-0.579117 -0.21464 -1.27836e-19) +(-0.551381 -0.222533 -5.8697e-20) +(-0.522726 -0.230187 1.07597e-19) +(-0.49316 -0.237594 4.85335e-20) +(-0.462692 -0.244748 4.37727e-20) +(-0.431331 -0.251643 -7.69485e-20) +(-0.399088 -0.258272 -3.54474e-22) +(-0.365976 -0.264629 -5.60256e-20) +(-0.332005 -0.270708 -4.60779e-20) +(-0.297192 -0.276503 -7.11618e-20) +(-0.261551 -0.282009 2.54481e-20) +(-0.225097 -0.28722 0) +(-0.187852 -0.292135 4.83264e-21) +(-0.149832 -0.296754 -5.45408e-21) +(-0.111058 -0.301078 -1.61144e-20) +(-0.0715532 -0.305108 -4.02176e-22) +(-0.0313375 -0.308843 0) +(0.00956858 -0.312278 0) +(0.051142 -0.31541 0) +(0.0933586 -0.318234 0) +(0.136192 -0.320753 0) +(0.179614 -0.322967 0) +(0.223599 -0.32488 -1.89243e-19) +(0.268117 -0.326495 0) +(0.313142 -0.327816 -2.25773e-19) +(0.358643 -0.328846 0) +(0.404593 -0.32959 -2.6109e-19) +(0.45096 -0.330054 0) +(0.497717 -0.330243 1.47337e-19) +(0.544833 -0.330163 0) +(0.592278 -0.329823 -1.63711e-19) +(0.640024 -0.32923 0) +(0.688042 -0.328392 -3.59322e-19) +(0.736302 -0.327319 0) +(0.784776 -0.326019 -1.94939e-19) +(0.833437 -0.324503 -4.90601e-22) +(0.882257 -0.322781 4.18085e-19) +(0.931212 -0.320865 0) +(0.980275 -0.318765 0) +(1.02942 -0.316493 0) +(1.07864 -0.314063 0) +(1.12789 -0.311487 -2.42136e-19) +(1.17717 -0.308778 0) +(1.22646 -0.305951 0) +(1.27575 -0.303022 0) +(1.32502 -0.300006 7.9493e-19) +(1.37426 -0.296921 5.40357e-19) +(1.42348 -0.293785 0) +(1.47267 -0.290612 2.80843e-19) +(1.52182 -0.287413 -2.85684e-19) +(1.57095 -0.284199 -5.79811e-19) +(1.62006 -0.280978 -5.89719e-19) +(1.66916 -0.277752 -5.97501e-19) +(1.71825 -0.274515 -6.05833e-19) +(1.76734 -0.271249 6.13821e-19) +(1.81644 -0.267915 0) +(1.86556 -0.264451 -8.6383e-22) +(1.91471 -0.260756 -1.27223e-18) +(1.9639 -0.256681 0) +(2.01319 -0.252003 0) +(2.06263 -0.246413 0) +(2.11255 -0.239498 -1.03048e-21) +(2.16265 -0.230734 -1.14924e-21) +(2.21633 -0.219619 6.71475e-19) +(2.26469 -0.205109 0) +(-0.0111554 0.183802 2.0671e-18) +(-0.0259136 0.237567 -8.50842e-19) +(-0.041508 0.260604 0) +(-0.0582665 0.27674 -3.52766e-19) +(-0.0750787 0.290517 0) +(-0.0914495 0.303195 -2.51374e-19) +(-0.107344 0.31521 0) +(-0.122789 0.326718 -2.11403e-19) +(-0.137808 0.337755 0) +(-0.152425 0.34831 1.90301e-19) +(-0.166664 0.358353 0) +(-0.180551 0.367857 0) +(-0.194106 0.376798 0) +(-0.207346 0.385159 -1.65432e-19) +(-0.220285 0.392926 -1.60556e-19) +(-0.232927 0.40009 0) +(-0.245275 0.406644 -1.51927e-19) +(-0.257329 0.412581 1.47906e-19) +(-0.269088 0.417894 0) +(-0.280554 0.422577 0) +(-0.29173 0.426629 0) +(-0.302622 0.430048 0) +(-0.313239 0.432837 1.29961e-19) +(-0.323595 0.435004 1.2675e-19) +(-0.333708 0.43656 -1.23654e-19) +(-0.343598 0.437524 0) +(-0.35329 0.437918 -2.3561e-19) +(-0.362812 0.437773 2.30487e-19) +(-0.37219 0.437123 -4.50013e-19) +(-0.381456 0.436005 2.19741e-19) +(-0.390636 0.43446 0) +(-0.399759 0.432532 0) +(-0.408851 0.430263 -2.05808e-19) +(-0.417933 0.427695 0) +(-0.427026 0.424869 1.97527e-19) +(-0.436144 0.421822 -1.93973e-19) +(-0.4453 0.418587 0) +(-0.454503 0.415193 -3.73159e-19) +(-0.46376 0.411664 0) +(-0.473074 0.408023 -1.79837e-19) +(-0.482447 0.404284 -1.76738e-19) +(-0.491877 0.400463 1.73978e-19) +(-0.501362 0.396569 0) +(-0.510894 0.392609 0) +(-0.520465 0.388587 -1.65541e-19) +(-0.530064 0.384503 -2.003e-22) +(-0.539679 0.380355 1.60579e-19) +(-0.549297 0.376139 -1.58453e-19) +(-0.558904 0.371848 2.02948e-22) +(-0.568485 0.367475 0) +(-0.578023 0.363009 0) +(-0.587502 0.358439 -1.50025e-19) +(-0.596906 0.353751 -1.479e-19) +(-0.606216 0.348933 -1.46045e-19) +(-0.615417 0.343972 -1.44455e-19) +(-0.62449 0.338855 0) +(-0.633417 0.333568 0) +(-0.642178 0.328099 0) +(-0.650756 0.322435 -1.37562e-19) +(-0.65913 0.316566 0) +(-0.667281 0.310482 2.04929e-22) +(-0.675189 0.304173 -1.33153e-19) +(-0.682834 0.297632 1.31669e-19) +(-0.690197 0.290854 0) +(-0.697256 0.283832 -2.57526e-19) +(-0.703994 0.276563 2.54666e-19) +(-0.71039 0.269046 3.77542e-19) +(-0.716426 0.261279 3.73312e-19) +(-0.722082 0.253263 0) +(-0.72734 0.244999 0) +(-0.732183 0.23649 -2.40195e-19) +(-0.736591 0.22774 2.37385e-19) +(-0.740548 0.218753 0) +(-0.744036 0.209536 -2.31727e-19) +(-0.74704 0.200096 2.2887e-19) +(-0.749542 0.190439 2.25987e-19) +(-0.751528 0.180575 0) +(-0.75298 0.170512 0) +(-0.753885 0.160261 2.17481e-19) +(-0.754226 0.149833 0) +(-0.753991 0.139237 2.11061e-19) +(-0.753163 0.128486 2.07948e-19) +(-0.75173 0.117592 2.05083e-19) +(-0.749678 0.106566 -2.01572e-19) +(-0.746994 0.0954229 1.98303e-19) +(-0.743663 0.0841743 -1.94977e-19) +(-0.739675 0.0728338 -3.83444e-19) +(-0.735015 0.0614146 0) +(-0.729671 0.0499303 1.8464e-19) +(-0.723631 0.0383942 1.81069e-19) +(-0.716883 0.0268197 0) +(-0.709417 0.0152199 0) +(-0.70122 0.00360799 0) +(-0.69228 -0.00800357 -1.65976e-19) +(-0.682587 -0.0196022 0) +(-0.67213 -0.0311754 1.57432e-19) +(-0.660899 -0.0427115 -1.53178e-19) +(-0.648885 -0.0541987 0) +(-0.63608 -0.0656255 0) +(-0.622476 -0.0769802 -1.40106e-19) +(-0.608069 -0.0882507 0) +(-0.59285 -0.099425 2.62414e-19) +(-0.576816 -0.110491 0) +(-0.559962 -0.121436 0) +(-0.542283 -0.132248 0) +(-0.523775 -0.142915 1.12753e-19) +(-0.504437 -0.153427 0) +(-0.484265 -0.16377 0) +(-0.463258 -0.173936 -2.9514e-19) +(-0.441415 -0.183912 0) +(-0.418737 -0.193689 0) +(-0.395224 -0.203258 0) +(-0.370878 -0.212609 2.3628e-19) +(-0.345701 -0.221732 7.37147e-20) +(-0.319697 -0.230621 0) +(-0.29287 -0.239266 1.27354e-19) +(-0.265226 -0.247661 1.17442e-19) +(-0.236772 -0.255799 -2.1441e-19) +(-0.207514 -0.263673 9.71295e-20) +(-0.17746 -0.271275 -8.67329e-20) +(-0.146619 -0.278599 -2.01069e-22) +(-0.115 -0.285638 6.62691e-20) +(-0.0826131 -0.292386 0) +(-0.0494689 -0.298835 4.57604e-20) +(-0.0155801 -0.304981 3.54993e-20) +(0.0190401 -0.310816 -2.52024e-20) +(0.0543772 -0.316336 0) +(0.0904151 -0.321537 2.38082e-22) +(0.127138 -0.326421 1.04323e-20) +(0.164527 -0.330987 0) +(0.20256 -0.335237 -2.52069e-20) +(0.241222 -0.33917 0) +(0.280493 -0.342782 0) +(0.320352 -0.346069 0) +(0.360778 -0.349025 0) +(0.401746 -0.351653 0) +(0.443234 -0.353954 0) +(0.485216 -0.355932 9.10517e-20) +(0.527668 -0.35759 0) +(0.570564 -0.358932 1.08666e-19) +(0.613879 -0.359961 -1.16923e-19) +(0.657585 -0.360682 1.25696e-19) +(0.701658 -0.361102 0) +(0.74607 -0.361227 -1.42116e-19) +(0.790795 -0.361063 0) +(0.835808 -0.360619 3.61991e-22) +(0.88108 -0.359904 0) +(0.926588 -0.358926 3.71584e-22) +(0.972305 -0.357695 0) +(1.01821 -0.356222 0) +(1.06427 -0.354517 -1.94534e-19) +(1.11047 -0.352592 -2.01361e-19) +(1.15678 -0.350458 0) +(1.20318 -0.348129 4.2825e-19) +(1.24966 -0.345618 0) +(1.29619 -0.342938 0) +(1.34276 -0.340103 0) +(1.38934 -0.337129 0) +(1.43594 -0.334031 4.88124e-19) +(1.48254 -0.330827 0) +(1.52913 -0.327534 -5.10482e-19) +(1.5757 -0.324171 -7.56062e-22) +(1.62226 -0.320758 -5.29969e-19) +(1.66879 -0.31731 0) +(1.71531 -0.31384 0) +(1.76183 -0.310362 5.58553e-19) +(1.80834 -0.306882 5.66446e-19) +(1.85487 -0.303405 5.75443e-19) +(1.90143 -0.299924 7.05164e-22) +(1.94803 -0.29642 -5.90992e-19) +(1.99469 -0.292858 0) +(2.04142 -0.289175 -6.05182e-19) +(2.08825 -0.285274 1.22281e-18) +(2.13521 -0.281013 0) +(2.18239 -0.276187 0) +(2.22984 -0.270518 6.28513e-19) +(2.27794 -0.263651 -1.26803e-18) +(2.32636 -0.255152 -9.82356e-22) +(2.37848 -0.244629 0) +(2.42511 -0.23129 0) +(-0.010219 0.215493 -1.94876e-18) +(-0.0240332 0.272934 8.22299e-19) +(-0.0387171 0.295775 -4.75361e-19) +(-0.0544321 0.310998 0) +(-0.070152 0.32363 0) +(-0.0854012 0.335079 -2.27183e-22) +(-0.100118 0.345844 0) +(-0.114307 0.356117 0) +(-0.127972 0.365957 0) +(-0.141122 0.375367 1.77169e-22) +(-0.153774 0.384324 0) +(-0.165949 0.3928 0) +(-0.177664 0.400763 0) +(-0.188935 0.408188 1.60127e-19) +(-0.19978 0.415052 3.11512e-19) +(-0.210212 0.42134 0) +(-0.220245 0.427041 0) +(-0.229891 0.432147 0) +(-0.239165 0.436654 2.80088e-19) +(-0.24808 0.440559 2.73099e-19) +(-0.256652 0.443865 -2.66383e-19) +(-0.2649 0.446574 -2.59919e-19) +(-0.272843 0.448695 0) +(-0.280505 0.450239 0) +(-0.287911 0.451222 0) +(-0.295087 0.451667 0) +(-0.302062 0.451598 0) +(-0.308865 0.451044 3.19961e-22) +(-0.315525 0.450041 2.20672e-19) +(-0.32207 0.448622 0) +(-0.328527 0.446825 0) +(-0.334921 0.444689 0) +(-0.341274 0.44225 0) +(-0.347604 0.439546 0) +(-0.353927 0.43661 0) +(-0.360256 0.433473 1.91668e-19) +(-0.366599 0.430163 0) +(-0.372963 0.426702 1.84934e-19) +(-0.379351 0.423112 0) +(-0.385764 0.419409 0) +(-0.392201 0.415606 0) +(-0.398657 0.411714 -1.73124e-19) +(-0.405128 0.40774 0) +(-0.411603 0.403688 0) +(-0.418074 0.399557 0) +(-0.424528 0.395346 -1.86562e-22) +(-0.430951 0.391052 0) +(-0.43733 0.38667 3.17554e-19) +(-0.443648 0.382192 -1.56613e-19) +(-0.449889 0.377611 0) +(-0.456036 0.372914 0) +(-0.462073 0.368091 1.50869e-19) +(-0.467981 0.36313 -1.49284e-19) +(-0.473743 0.358017 0) +(-0.479344 0.352741 1.45692e-19) +(-0.484765 0.347287 1.44264e-19) +(-0.48999 0.341643 0) +(-0.495001 0.335796 0) +(-0.499781 0.329734 0) +(-0.504311 0.323448 0) +(-0.508576 0.316927 -1.36491e-19) +(-0.512558 0.310163 1.35055e-19) +(-0.51624 0.30315 -1.33638e-19) +(-0.519606 0.295881 2.64851e-19) +(-0.52264 0.288354 5.23748e-19) +(-0.525326 0.280566 -2.58916e-19) +(-0.527651 0.272514 -2.56156e-19) +(-0.5296 0.264201 -2.53399e-19) +(-0.531159 0.255626 0) +(-0.532315 0.246792 0) +(-0.533055 0.237704 0) +(-0.533367 0.228365 0) +(-0.53324 0.218782 2.39795e-19) +(-0.532663 0.208962 0) +(-0.531624 0.198911 0) +(-0.530113 0.188639 0) +(-0.52812 0.178155 -2.28161e-19) +(-0.525636 0.167468 0) +(-0.522651 0.156589 2.6577e-22) +(-0.519155 0.14553 0) +(-0.515139 0.134302 -2.15853e-19) +(-0.510595 0.122916 0) +(-0.505513 0.111386 -2.09167e-19) +(-0.499885 0.0997249 0) +(-0.493702 0.087945 0) +(-0.486955 0.07606 0) +(-0.479637 0.0640836 1.95574e-19) +(-0.471738 0.0520294 0) +(-0.463249 0.0399112 0) +(-0.454161 0.0277426 1.84853e-19) +(-0.444468 0.0155374 1.81088e-19) +(-0.434159 0.00330875 1.77163e-19) +(-0.423228 -0.00893009 0) +(-0.411663 -0.021166 -1.0128e-22) +(-0.399457 -0.0333859 0) +(-0.386602 -0.0455766 -1.60127e-19) +(-0.373091 -0.0577257 0) +(-0.358916 -0.0698208 0) +(-0.344071 -0.0818495 1.46787e-19) +(-0.32855 -0.0937992 0) +(-0.312347 -0.105657 0) +(-0.295458 -0.117411 -1.32975e-19) +(-0.277878 -0.129048 -1.28335e-19) +(-0.259603 -0.140556 0) +(-0.240628 -0.151922 0) +(-0.220952 -0.163134 -1.14018e-19) +(-0.200571 -0.17418 2.18393e-19) +(-0.179482 -0.185048 0) +(-0.157684 -0.195727 1.98776e-19) +(-0.135176 -0.206206 0) +(-0.111957 -0.216474 0) +(-0.0880274 -0.22652 1.68944e-19) +(-0.0633882 -0.236336 -1.58862e-19) +(-0.0380406 -0.245912 -1.48771e-19) +(-0.0119873 -0.255239 0) +(0.014768 -0.264309 0) +(0.0422209 -0.273114 -1.17642e-19) +(0.0703661 -0.281647 1.0712e-19) +(0.0991984 -0.2899 -9.66353e-20) +(0.128712 -0.297865 8.62302e-20) +(0.158899 -0.305537 7.57984e-20) +(0.189754 -0.312906 6.55065e-20) +(0.221266 -0.319967 5.52314e-20) +(0.253428 -0.326713 0) +(0.286229 -0.333137 -3.48831e-20) +(0.319658 -0.339233 -2.48211e-20) +(0.353703 -0.344996 0) +(0.388351 -0.350422 -4.85227e-21) +(0.423588 -0.35551 -1.05528e-22) +(0.459395 -0.36026 1.45516e-20) +(0.495757 -0.364673 0) +(0.532658 -0.368751 0) +(0.570082 -0.372491 0) +(0.60801 -0.375884 0) +(0.646423 -0.378927 0) +(0.685301 -0.381621 0) +(0.724624 -0.38397 -7.93294e-20) +(0.76437 -0.385976 0) +(0.804517 -0.387643 -9.67058e-20) +(0.845043 -0.388974 0) +(0.885926 -0.389973 1.13751e-19) +(0.927143 -0.390646 0) +(0.968671 -0.390998 0) +(1.01049 -0.391037 -1.37661e-19) +(1.05257 -0.39077 0) +(1.09489 -0.390206 3.06241e-19) +(1.13743 -0.389355 0) +(1.18017 -0.388225 1.67964e-19) +(1.22309 -0.386828 0) +(1.26616 -0.385174 0) +(1.30936 -0.383275 0) +(1.35267 -0.381144 0) +(1.39608 -0.378793 0) +(1.43957 -0.376236 -8.32233e-19) +(1.48312 -0.373488 4.28074e-19) +(1.52671 -0.370563 4.40009e-19) +(1.57033 -0.367478 0) +(1.61398 -0.364247 -4.62892e-19) +(1.65763 -0.36089 -4.74457e-19) +(1.70129 -0.357423 0) +(1.74495 -0.353867 0) +(1.7886 -0.350242 -6.08031e-22) +(1.83225 -0.346567 5.14929e-19) +(1.8759 -0.342861 0) +(1.91955 -0.33914 5.32586e-19) +(1.96322 -0.335417 0) +(2.00692 -0.331701 -5.50106e-19) +(2.05066 -0.327997 0) +(2.09447 -0.324298 1.13087e-18) +(2.13836 -0.320588 0) +(2.18236 -0.316832 5.7943e-19) +(2.22649 -0.312968 0) +(2.2708 -0.308907 -5.92907e-19) +(2.31534 -0.304514 0) +(2.36019 -0.299603 0) +(2.40544 -0.293925 -6.09539e-19) +(2.45148 -0.287176 6.14321e-19) +(2.49796 -0.278997 -8.43739e-22) +(2.54823 -0.269067 -6.22043e-19) +(2.59286 -0.25681 0) +(-0.00918556 0.244573 0) +(-0.0218925 0.305708 0) +(-0.035501 0.328437 4.67005e-19) +(-0.0500066 0.342778 0) +(-0.0644689 0.354243 0) +(-0.0784336 0.364387 2.39642e-19) +(-0.0918162 0.373786 0) +(-0.104603 0.38268 2.00742e-19) +(-0.116782 0.391157 0) +(-0.128349 0.399239 1.80231e-19) +(-0.13931 0.406912 0) +(-0.149676 0.41415 0) +(-0.159466 0.420926 0) +(-0.168702 0.427213 0) +(-0.177405 0.432991 -3.0393e-19) +(-0.185601 0.438245 2.96128e-19) +(-0.193313 0.442961 0) +(-0.200565 0.447132 0) +(-0.207382 0.450755 -2.74183e-19) +(-0.213789 0.453827 -2.67617e-19) +(-0.219811 0.456351 -2.53031e-22) +(-0.225475 0.458333 2.5527e-19) +(-0.23081 0.459783 0) +(-0.235844 0.460714 0) +(-0.240605 0.461143 0) +(-0.245125 0.461092 0) +(-0.249432 0.460585 0) +(-0.253555 0.45965 -4.47418e-19) +(-0.257522 0.458317 0) +(-0.261359 0.456617 0) +(-0.265089 0.454584 0) +(-0.268735 0.452249 0) +(-0.272313 0.449645 2.02907e-19) +(-0.275839 0.4468 1.99258e-19) +(-0.279325 0.443745 0) +(-0.282778 0.440503 0) +(-0.286205 0.437097 1.89247e-19) +(-0.289608 0.433547 0) +(-0.292988 0.429868 0) +(-0.296342 0.426073 -1.80479e-19) +(-0.299666 0.422174 0) +(-0.302953 0.418175 0) +(-0.306194 0.414079 0) +(-0.309379 0.409887 0) +(-0.312494 0.4056 0) +(-0.315526 0.401214 -1.64086e-22) +(-0.318459 0.396725 -1.63888e-19) +(-0.321277 0.392127 -1.61745e-19) +(-0.323964 0.387411 0) +(-0.326501 0.382568 -1.58196e-19) +(-0.328872 0.377588 0) +(-0.331058 0.37246 0) +(-0.333044 0.367174 1.52927e-19) +(-0.334813 0.361717 -3.03005e-19) +(-0.336351 0.356077 0) +(-0.337642 0.350242 -1.48258e-19) +(-0.338672 0.344199 0) +(-0.339424 0.337937 0) +(-0.339886 0.331444 0) +(-0.340043 0.32471 0) +(-0.339881 0.317727 0) +(-0.339389 0.310489 0) +(-0.338555 0.302989 2.76903e-19) +(-0.337367 0.295224 -2.73832e-19) +(-0.335817 0.287191 -2.71081e-19) +(-0.333894 0.278888 -2.68621e-19) +(-0.331591 0.270316 2.6585e-19) +(-0.3289 0.261475 0) +(-0.325814 0.252369 0) +(-0.322327 0.243 0) +(-0.318434 0.233375 0) +(-0.314129 0.223497 -2.51681e-19) +(-0.309409 0.213374 -2.48532e-19) +(-0.304269 0.203013 2.45788e-19) +(-0.298705 0.192423 -2.42779e-19) +(-0.292714 0.181612 0) +(-0.286292 0.170591 4.73065e-19) +(-0.279437 0.159369 0) +(-0.272145 0.147957 -2.30106e-19) +(-0.264413 0.136368 -2.26987e-19) +(-0.256238 0.124612 4.47205e-19) +(-0.247617 0.112702 0) +(-0.238546 0.100651 0) +(-0.22902 0.0884709 2.13326e-19) +(-0.219038 0.0761759 -2.09754e-19) +(-0.208594 0.063779 2.06117e-19) +(-0.197684 0.0512939 -2.02414e-19) +(-0.186303 0.0387342 0) +(-0.174446 0.0261137 0) +(-0.162107 0.0134461 1.02323e-23) +(-0.149283 0.000744789 -1.86819e-19) +(-0.135967 -0.0119772 -1.03328e-23) +(-0.122152 -0.0247067 0) +(-0.107832 -0.0374299 2.89546e-23) +(-0.0930005 -0.0501334 1.69104e-19) +(-0.0776522 -0.062804 4.53467e-23) +(-0.061781 -0.0754286 0) +(-0.0453814 -0.0879944 0) +(-0.0284478 -0.100489 -1.50626e-19) +(-0.0109751 -0.112898 0) +(0.00704154 -0.12521 0) +(0.0256066 -0.137411 -2.71478e-19) +(0.0447244 -0.149489 -1.3049e-19) +(0.0643989 -0.16143 0) +(0.084634 -0.173223 0) +(0.105433 -0.184854 0) +(0.1268 -0.196311 -2.19747e-19) +(0.148737 -0.207583 0) +(0.171246 -0.218656 0) +(0.19433 -0.22952 0) +(0.217989 -0.240164 0) +(0.242226 -0.250577 -3.34775e-19) +(0.26704 -0.260749 1.56851e-19) +(0.29243 -0.270671 1.75204e-22) +(0.318396 -0.280332 -1.36011e-19) +(0.344936 -0.289725 0) +(0.372046 -0.298842 1.1527e-19) +(0.399723 -0.307674 0) +(0.427963 -0.316213 -9.46695e-20) +(0.456763 -0.324452 -8.45666e-20) +(0.486118 -0.332382 0) +(0.516021 -0.339997 -6.42333e-20) +(0.546467 -0.34729 -1.08207e-19) +(0.577447 -0.354254 0) +(0.608956 -0.360881 3.4199e-20) +(0.640984 -0.367165 4.85997e-20) +(0.673521 -0.373102 0) +(0.70656 -0.378684 0) +(0.740085 -0.383912 -9.53865e-21) +(0.774081 -0.388784 1.57379e-23) +(0.808537 -0.393303 0) +(0.843441 -0.397471 0) +(0.878774 -0.401284 0) +(0.914526 -0.404733 -5.12013e-20) +(0.950677 -0.407815 0) +(0.987213 -0.410533 0) +(1.02412 -0.412889 1.554e-19) +(1.06137 -0.414885 8.62261e-20) +(1.09895 -0.416526 9.47617e-20) +(1.13684 -0.417813 0) +(1.17503 -0.418753 0) +(1.21349 -0.41935 -1.19123e-19) +(1.25221 -0.41961 0) +(1.29116 -0.419542 -1.3455e-19) +(1.33032 -0.419153 0) +(1.36969 -0.418453 -1.49873e-19) +(1.40923 -0.417451 0) +(1.44893 -0.416158 -3.28114e-19) +(1.48877 -0.414586 -3.42007e-19) +(1.52873 -0.412745 3.55581e-19) +(1.5688 -0.410648 0) +(1.60897 -0.408309 0) +(1.6492 -0.405742 0) +(1.6895 -0.402961 4.07142e-19) +(1.72985 -0.399981 -4.77398e-22) +(1.77024 -0.396819 -4.30763e-19) +(1.81066 -0.393492 0) +(1.8511 -0.390016 4.53081e-19) +(1.89155 -0.386412 0) +(1.93201 -0.382697 0) +(1.97249 -0.378894 0) +(2.01297 -0.375023 -4.93796e-19) +(2.05347 -0.371106 0) +(2.09399 -0.367163 -5.1171e-19) +(2.13453 -0.363211 -5.20891e-19) +(2.17512 -0.359267 0) +(2.21577 -0.35534 5.36856e-19) +(2.2565 -0.351435 -5.44584e-19) +(2.29733 -0.347549 -4.53912e-22) +(2.3383 -0.343666 -5.59048e-19) +(2.37943 -0.339751 -4.53617e-22) +(2.42076 -0.335749 0) +(2.46234 -0.331575 5.78187e-19) +(2.50424 -0.327104 0) +(2.54656 -0.322167 0) +(2.5894 -0.316545 0) +(2.63314 -0.309975 -5.98371e-19) +(2.67744 -0.30216 -7.24327e-22) +(2.72558 -0.292824 1.2131e-18) +(2.768 -0.281579 0) +(-0.00812944 0.270761 -1.79522e-18) +(-0.019674 0.335639 -7.91219e-19) +(-0.0321427 0.358343 0) +(-0.0453733 0.371833 0) +(-0.0585075 0.382109 0) +(-0.0711147 0.390891 0) +(-0.0830905 0.398834 0) +(-0.0943966 0.406224 -1.97903e-19) +(-0.105005 0.413181 0) +(-0.114901 0.419753 3.55992e-22) +(-0.124086 0.425948 -3.39845e-19) +(-0.132574 0.431759 0) +(-0.140384 0.437169 0) +(-0.147544 0.442159 0) +(-0.154085 0.446711 0) +(-0.160038 0.45081 -5.82919e-19) +(-0.165437 0.454443 0) +(-0.170317 0.457601 0) +(-0.174709 0.460279 0) +(-0.178648 0.462475 0) +(-0.182165 0.464191 5.17758e-19) +(-0.185294 0.465432 0) +(-0.188065 0.466206 0) +(-0.19051 0.466526 0) +(-0.192661 0.466407 2.37857e-19) +(-0.194546 0.465867 0) +(-0.196194 0.464927 0) +(-0.197631 0.463611 2.24098e-19) +(-0.198881 0.461946 0) +(-0.199967 0.459957 2.16198e-19) +(-0.200908 0.457672 0) +(-0.201721 0.455117 0) +(-0.20242 0.452319 -2.05217e-19) +(-0.203016 0.449302 -4.0404e-19) +(-0.203515 0.446089 0) +(-0.203924 0.4427 0) +(-0.204242 0.439153 -1.92905e-19) +(-0.20447 0.435462 0) +(-0.204604 0.431637 1.87588e-19) +(-0.204637 0.427687 1.84895e-19) +(-0.204561 0.42362 -1.82595e-19) +(-0.204367 0.41944 0) +(-0.20404 0.415148 0) +(-0.203566 0.410742 0) +(-0.202929 0.40622 0) +(-0.202114 0.401578 1.71918e-19) +(-0.201104 0.396811 1.70077e-19) +(-0.199881 0.391911 0) +(-0.198429 0.386872 0) +(-0.196731 0.381685 1.64955e-19) +(-0.194769 0.37634 0) +(-0.192529 0.370828 0) +(-0.189997 0.365141 0) +(-0.187159 0.359268 3.17616e-19) +(-0.184005 0.353199 0) +(-0.180522 0.346921 0) +(-0.176699 0.340423 3.09251e-19) +(-0.172527 0.333695 0) +(-0.167997 0.326726 3.03643e-19) +(-0.1631 0.319509 0) +(-0.15783 0.312036 0) +(-0.152181 0.304303 0) +(-0.146151 0.296305 -2.92286e-19) +(-0.139735 0.288041 -2.8964e-19) +(-0.132932 0.279508 2.86793e-19) +(-0.125743 0.270707 -1.41349e-22) +(-0.118166 0.26164 -2.80887e-19) +(-0.110204 0.252308 0) +(-0.101859 0.242716 0) +(-0.0931326 0.232867 0) +(-0.084029 0.222767 0) +(-0.0745516 0.212422 2.65844e-19) +(-0.0647042 0.20184 2.6274e-19) +(-0.054491 0.191028 -2.59497e-19) +(-0.0439161 0.179994 2.56243e-19) +(-0.0329837 0.168749 2.52933e-19) +(-0.0216976 0.157301 -2.49565e-19) +(-0.0100617 0.145661 0) +(0.00192066 0.133839 0) +(0.0142463 0.121847 5.68367e-23) +(0.0269125 0.109697 -7.03247e-23) +(0.0399172 0.0973992 2.30122e-19) +(0.053259 0.0849673 -2.25901e-19) +(0.0669366 0.0724135 -1.08459e-22) +(0.0809497 0.0597507 2.17439e-19) +(0.0952982 0.0469919 -4.26049e-19) +(0.109983 0.0341502 2.08694e-19) +(0.125005 0.0212389 0) +(0.140367 0.00827139 1.99599e-19) +(0.156072 -0.00473946 -1.95054e-19) +(0.172122 -0.017781 0) +(0.188523 -0.0308402 -1.85211e-19) +(0.205276 -0.0439036 0) +(0.222389 -0.0569576 -1.74817e-19) +(0.239864 -0.0699888 1.69777e-19) +(0.257707 -0.0829838 1.65138e-19) +(0.275923 -0.0959296 -3.19714e-19) +(0.294517 -0.108813 0) +(0.313493 -0.121621 0) +(0.332857 -0.134341 2.89085e-19) +(0.352614 -0.146959 0) +(0.372769 -0.159462 2.68974e-19) +(0.393325 -0.171837 2.5866e-19) +(0.414288 -0.184071 0) +(0.435662 -0.196151 2.37527e-19) +(0.457452 -0.208066 0) +(0.479661 -0.219801 0) +(0.502294 -0.231345 -2.06417e-19) +(0.525354 -0.242685 0) +(0.548844 -0.25381 0) +(0.572767 -0.264708 0) +(0.597125 -0.275369 4.07952e-22) +(0.621921 -0.285781 -1.54999e-19) +(0.647155 -0.295935 1.44669e-19) +(0.672828 -0.305821 1.34362e-19) +(0.69894 -0.315431 0) +(0.725489 -0.324755 -2.2733e-19) +(0.752474 -0.333785 1.03296e-19) +(0.779895 -0.342512 9.34721e-20) +(0.807748 -0.350929 -8.30466e-20) +(0.836031 -0.359027 0) +(0.86474 -0.366799 6.30098e-20) +(0.893873 -0.374238 5.33472e-20) +(0.923422 -0.381337 4.3224e-20) +(0.953384 -0.388088 0) +(0.983753 -0.394486 -2.39443e-20) +(1.01452 -0.400522 0) +(1.04569 -0.406193 0) +(1.07723 -0.411493 9.60172e-21) +(1.10915 -0.416424 -1.40857e-20) +(1.14142 -0.420989 0) +(1.17405 -0.425191 0) +(1.20702 -0.429022 0) +(1.24031 -0.432476 5.04969e-20) +(1.27392 -0.43555 0) +(1.30783 -0.438247 0) +(1.34203 -0.440568 -7.65817e-20) +(1.3765 -0.442516 -8.50236e-20) +(1.41123 -0.444094 -1.86651e-19) +(1.44621 -0.445306 2.0297e-19) +(1.48141 -0.446156 -2.19013e-19) +(1.51683 -0.44665 1.17439e-19) +(1.55244 -0.446795 0) +(1.58824 -0.446599 2.65582e-19) +(1.6242 -0.44607 0) +(1.66031 -0.445217 0) +(1.69657 -0.444053 0) +(1.73294 -0.442587 3.2336e-19) +(1.76942 -0.440831 6.73782e-19) +(1.80599 -0.438799 -3.50378e-19) +(1.84265 -0.436502 -3.63102e-19) +(1.87938 -0.433956 3.758e-19) +(1.91617 -0.431174 3.88178e-19) +(1.953 -0.428173 -4.00237e-19) +(1.98988 -0.424969 -3.59629e-22) +(2.02679 -0.421579 0) +(2.06373 -0.41802 0) +(2.10069 -0.414313 4.45259e-19) +(2.13767 -0.410476 0) +(2.17468 -0.406531 -4.65837e-19) +(2.21171 -0.402499 0) +(2.24877 -0.398403 0) +(2.28586 -0.394265 4.94275e-19) +(2.323 -0.390107 1.00658e-18) +(2.36019 -0.38595 0) +(2.39746 -0.38181 0) +(2.43482 -0.377699 -1.05564e-18) +(2.47231 -0.373625 5.35521e-19) +(2.50994 -0.369584 -5.42715e-19) +(2.54776 -0.365562 5.49579e-19) +(2.58581 -0.361529 -5.56108e-19) +(2.62412 -0.357432 -5.61932e-19) +(2.66277 -0.353193 -1.13589e-18) +(2.70182 -0.348698 0) +(2.74139 -0.343795 0) +(2.7816 -0.338289 0) +(2.82283 -0.331954 5.87576e-19) +(2.86471 -0.324544 -5.91144e-19) +(2.91047 -0.315805 -5.94938e-19) +(2.95049 -0.305521 0) +(-0.00716443 0.294178 1.74092e-18) +(-0.0176395 0.362772 7.82677e-19) +(-0.0290161 0.385507 0) +(-0.0410175 0.398161 0) +(-0.0528564 0.407214 0) +(-0.0641088 0.414548 0) +(-0.0746486 0.420904 0) +(-0.0844245 0.426627 0) +(-0.0934022 0.431888 0) +(-0.101566 0.436772 -3.51155e-19) +(-0.108919 0.44132 3.36656e-19) +(-0.115478 0.445542 0) +(-0.12127 0.449438 0) +(-0.12633 0.452999 -3.05768e-19) +(-0.130696 0.45621 0) +(-0.134409 0.459058 5.80695e-19) +(-0.137508 0.46153 -2.83692e-19) +(-0.140036 0.463613 0) +(-0.14203 0.465299 0) +(-0.143529 0.466584 0) +(-0.144567 0.467465 -2.60381e-19) +(-0.145179 0.467943 -2.55452e-19) +(-0.145397 0.468024 0) +(-0.145251 0.467715 0) +(-0.144772 0.467027 -2.41532e-19) +(-0.143984 0.465975 2.37483e-19) +(-0.142914 0.464576 0) +(-0.141583 0.46285 0) +(-0.140012 0.460815 -2.26101e-19) +(-0.138217 0.458493 -2.22531e-19) +(-0.136214 0.455908 0) +(-0.134013 0.453077 0) +(-0.131623 0.450022 0) +(-0.129049 0.44676 2.09941e-19) +(-0.126295 0.443311 0) +(-0.123359 0.439688 0) +(-0.120237 0.435905 -2.01964e-19) +(-0.116922 0.431972 -1.99536e-19) +(-0.113404 0.427896 -1.97159e-19) +(-0.109673 0.423683 0) +(-0.105714 0.419335 1.92922e-19) +(-0.101512 0.414856 0) +(-0.097051 0.410245 0) +(-0.0923142 0.405499 0) +(-0.0872847 0.400615 -3.71426e-19) +(-0.0819461 0.39559 0) +(-0.0762825 0.390419 -3.64969e-19) +(-0.0702787 0.385097 0) +(-0.0639203 0.379616 0) +(-0.0571941 0.37397 -3.55864e-19) +(-0.0500877 0.368151 0) +(-0.0425907 0.362154 -3.50048e-19) +(-0.0346952 0.355971 3.47199e-19) +(-0.026394 0.349596 0) +(-0.0176813 0.343018 3.4156e-19) +(-0.00855218 0.336226 3.38741e-19) +(0.000996867 0.329212 -3.35625e-19) +(0.0109677 0.321965 0) +(0.0213601 0.314479 -6.56729e-19) +(0.0321722 0.306747 0) +(0.0434002 0.298766 0) +(0.0550386 0.290532 3.16993e-19) +(0.0670803 0.282043 0) +(0.0795169 0.273298 9.63365e-23) +(0.0923388 0.264297 -3.05449e-19) +(0.105535 0.255043 1.29443e-22) +(0.119095 0.245536 0) +(0.133006 0.235781 0) +(0.147255 0.225781 0) +(0.161831 0.215542 0) +(0.176719 0.205068 2.81115e-19) +(0.191907 0.194367 0) +(0.207382 0.183444 -2.7302e-19) +(0.223132 0.172308 0) +(0.239144 0.160967 0) +(0.255408 0.14943 -2.60324e-19) +(0.271912 0.137704 -2.55737e-19) +(0.288646 0.125801 0) +(0.305602 0.11373 0) +(0.322769 0.1015 2.42949e-19) +(0.340142 0.0891239 -4.76712e-19) +(0.357714 0.076611 -3.4653e-22) +(0.375478 0.0639732 2.29577e-19) +(0.393431 0.0512224 -2.25053e-19) +(0.411569 0.0383705 2.20124e-19) +(0.429889 0.0254298 2.15906e-19) +(0.44839 0.0124127 2.10895e-19) +(0.46707 -0.00066867 0) +(0.48593 -0.0138025 -6.04172e-19) +(0.504973 -0.0269768 -3.92339e-19) +(0.524201 -0.0401792 0) +(0.543615 -0.0533968 0) +(0.563219 -0.0666164 0) +(0.583017 -0.079825 7.03387e-19) +(0.603014 -0.0930093 -3.41792e-19) +(0.623213 -0.106156 3.30644e-19) +(0.643621 -0.119253 3.21115e-19) +(0.664242 -0.132286 0) +(0.685082 -0.145242 0) +(0.706146 -0.158109 -2.89971e-19) +(0.727441 -0.170873 0) +(0.748973 -0.18352 0) +(0.770746 -0.196038 -2.57927e-19) +(0.792766 -0.208414 0) +(0.81504 -0.220635 -2.37826e-19) +(0.837574 -0.232688 -2.26632e-19) +(0.860372 -0.24456 0) +(0.883441 -0.256238 2.06496e-19) +(0.906785 -0.26771 0) +(0.930409 -0.278965 0) +(0.954318 -0.289989 0) +(0.978517 -0.300772 3.29022e-19) +(1.00301 -0.311303 1.5383e-19) +(1.0278 -0.321573 0) +(1.05288 -0.33157 0) +(1.07827 -0.341285 0) +(1.10396 -0.35071 5.65915e-22) +(1.12995 -0.359834 -2.05679e-19) +(1.15625 -0.368649 9.2441e-20) +(1.18285 -0.377146 8.28714e-20) +(1.20975 -0.385318 7.23523e-20) +(1.23696 -0.393157 -1.25256e-19) +(1.26447 -0.400655 -5.25104e-20) +(1.29227 -0.407806 -4.31081e-20) +(1.32037 -0.414602 0) +(1.34877 -0.421035 0) +(1.37746 -0.427099 0) +(1.40643 -0.432786 0) +(1.43567 -0.438092 -1.00329e-20) +(1.46519 -0.443019 -1.44605e-20) +(1.49497 -0.44757 -2.36528e-20) +(1.525 -0.451747 0) +(1.55528 -0.455543 0) +(1.5858 -0.458951 0) +(1.61655 -0.46197 0) +(1.64752 -0.4646 0) +(1.67869 -0.466846 0) +(1.71006 -0.468708 0) +(1.74163 -0.470189 1.85816e-19) +(1.77336 -0.471293 -2.02037e-19) +(1.80527 -0.472026 2.17979e-19) +(1.83733 -0.472391 0) +(1.86953 -0.472398 0) +(1.90186 -0.472053 0) +(1.93431 -0.471367 2.78795e-19) +(1.96687 -0.470349 0) +(1.99952 -0.46901 0) +(2.03226 -0.467362 0) +(2.06508 -0.465418 -3.34787e-19) +(2.09797 -0.463191 0) +(2.13091 -0.460693 7.2153e-19) +(2.16391 -0.457942 -3.73415e-19) +(2.19695 -0.45495 -3.85645e-19) +(2.23003 -0.451736 3.9755e-19) +(2.26315 -0.448317 -2.56936e-22) +(2.2963 -0.44471 0) +(2.32948 -0.440935 0) +(2.36269 -0.437011 -8.83537e-19) +(2.39593 -0.43296 0) +(2.42921 -0.428803 9.23965e-19) +(2.46253 -0.424564 4.71452e-19) +(2.4959 -0.420265 0) +(2.52933 -0.41593 -4.89991e-19) +(2.56283 -0.411585 -4.98619e-19) +(2.59642 -0.407249 0) +(2.63013 -0.402943 0) +(2.66397 -0.39868 1.04477e-18) +(2.69797 -0.394468 -5.29558e-19) +(2.73218 -0.390308 -5.36538e-19) +(2.76663 -0.386187 0) +(2.80137 -0.382077 0) +(2.83645 -0.377931 5.55712e-19) +(2.87195 -0.373677 5.61309e-19) +(2.90794 -0.369212 -5.66216e-19) +(2.94456 -0.3644 0) +(2.98192 -0.359069 0) +(3.02041 -0.353023 0) +(3.05965 -0.346056 0) +(3.10279 -0.337921 0) +(3.14023 -0.328567 0) +(-0.00643763 0.315806 0) +(-0.0160527 0.388144 -1.49707e-18) +(-0.0264944 0.410913 0) +(-0.0373994 0.422642 0) +(-0.0480146 0.430305 -5.21807e-19) +(-0.0579262 0.435975 4.51508e-19) +(-0.0670004 0.440502 0) +(-0.0751825 0.44431 3.75156e-19) +(-0.0824424 0.44763 0) +(-0.0887729 0.450593 0) +(-0.0941873 0.453274 0) +(-0.0987135 0.45571 0) +(-0.102389 0.457915 0) +(-0.105257 0.45989 2.935e-19) +(-0.107364 0.461625 0) +(-0.108757 0.463104 -2.80212e-19) +(-0.109481 0.464311 -1.16956e-22) +(-0.109582 0.465229 0) +(-0.109098 0.465844 -2.64467e-19) +(-0.108069 0.466144 0) +(-0.106528 0.466122 -2.55643e-19) +(-0.104508 0.465772 2.51565e-19) +(-0.102037 0.465094 0) +(-0.0991417 0.46409 0) +(-0.0958448 0.462767 0) +(-0.0921674 0.461131 -2.37368e-19) +(-0.0881289 0.459192 2.34204e-19) +(-0.0837458 0.456966 0) +(-0.0790315 0.454465 2.283e-19) +(-0.0739953 0.451705 0) +(-0.0686427 0.4487 0) +(-0.0629759 0.445469 2.20613e-19) +(-0.0569944 0.442025 0) +(-0.0506951 0.438382 0) +(-0.0440731 0.43455 0) +(-0.037119 0.430538 -2.12244e-19) +(-0.0298209 0.426351 2.10509e-19) +(-0.0221631 0.421999 2.08876e-19) +(-0.0141292 0.417487 0) +(-0.00570309 0.412821 0) +(0.00313113 0.408003 0) +(0.0123891 0.40303 0) +(0.0220861 0.397902 -4.00412e-19) +(0.0322375 0.392619 -3.96493e-19) +(0.0428569 0.387179 7.8539e-19) +(0.053956 0.381582 0) +(0.0655441 0.375825 3.85049e-19) +(0.0776288 0.369906 0) +(0.0902156 0.363819 0) +(0.103308 0.35756 3.73262e-19) +(0.116909 0.351126 0) +(0.131015 0.344513 3.65267e-19) +(0.145625 0.337717 -7.22186e-19) +(0.160736 0.330734 0) +(0.176342 0.323555 -7.05962e-19) +(0.192436 0.316172 -3.49052e-19) +(0.209009 0.308578 0) +(0.226049 0.300767 0) +(0.243539 0.292735 3.36428e-19) +(0.261463 0.284479 0) +(0.279802 0.275996 0) +(0.298536 0.267286 -3.23408e-19) +(0.317641 0.258347 3.18478e-19) +(0.337097 0.249181 3.1456e-19) +(0.356879 0.239789 3.09541e-19) +(0.376963 0.230172 6.10654e-19) +(0.397327 0.220333 3.00525e-19) +(0.417946 0.210275 0) +(0.438797 0.200001 0) +(0.459858 0.189517 0) +(0.481106 0.178827 -2.82978e-19) +(0.502519 0.167935 2.77773e-19) +(0.524078 0.156848 0) +(0.545763 0.145573 0) +(0.567556 0.134115 0) +(0.58944 0.122481 0) +(0.6114 0.110681 6.88968e-22) +(0.63342 0.0987207 0) +(0.655488 0.0866094 0) +(0.677592 0.0743554 0) +(0.699722 0.0619676 4.73454e-19) +(0.721871 0.0494555 -7.0962e-22) +(0.74403 0.0368288 0) +(0.766193 0.024098 -4.44812e-19) +(0.788357 0.0112738 -2.18436e-19) +(0.810519 -0.00163299 0) +(0.832675 -0.0146119 -6.24905e-19) +(0.854827 -0.027652 0) +(0.876977 -0.0407427 3.97311e-19) +(0.899123 -0.0538724 3.87073e-19) +(0.921269 -0.0670291 -3.75446e-19) +(0.943417 -0.0802007 0) +(0.96557 -0.093375 0) +(0.987735 -0.106539 -3.46139e-19) +(1.00992 -0.119681 0) +(1.03212 -0.132788 -3.25661e-19) +(1.05435 -0.145846 0) +(1.07662 -0.158843 -3.03872e-19) +(1.09892 -0.171767 2.93636e-19) +(1.12128 -0.184603 0) +(1.1437 -0.197339 0) +(1.16618 -0.20996 2.6291e-19) +(1.18873 -0.222455 1.19455e-21) +(1.21137 -0.234811 0) +(1.23409 -0.247014 2.32171e-19) +(1.25691 -0.259051 2.23053e-19) +(1.27983 -0.270909 -2.11692e-19) +(1.30287 -0.282575 0) +(1.32602 -0.294036 1.91245e-19) +(1.3493 -0.305281 0) +(1.37271 -0.316297 1.70849e-19) +(1.39627 -0.327072 -1.61645e-19) +(1.41996 -0.337594 -1.51469e-19) +(1.44381 -0.347855 0) +(1.46782 -0.357843 0) +(1.49198 -0.367547 0) +(1.51631 -0.376959 1.11061e-19) +(1.54081 -0.386068 2.01314e-19) +(1.56548 -0.394865 -1.81418e-19) +(1.59033 -0.40334 0) +(1.61535 -0.411488 -7.1315e-20) +(1.64054 -0.419297 1.22359e-19) +(1.66592 -0.426764 6.36833e-22) +(1.69148 -0.433878 -4.14971e-20) +(1.71722 -0.440631 3.1926e-20) +(1.74314 -0.447018 -2.24302e-20) +(1.76923 -0.453029 0) +(1.7955 -0.458656 0) +(1.82195 -0.463897 5.09955e-21) +(1.84856 -0.468751 1.42749e-20) +(1.87535 -0.473223 2.33528e-20) +(1.90229 -0.477312 0) +(1.92939 -0.481012 0) +(1.95664 -0.484318 0) +(1.98403 -0.487228 0) +(2.01156 -0.489743 0) +(2.03922 -0.491866 0) +(2.06701 -0.493598 1.67997e-19) +(2.09492 -0.494942 -1.84244e-19) +(2.12294 -0.495902 -2.0023e-19) +(2.15107 -0.496482 2.15948e-19) +(2.1793 -0.496688 0) +(2.20761 -0.496528 0) +(2.23601 -0.496009 0) +(2.26448 -0.495143 -2.75891e-19) +(2.29302 -0.493939 -2.90276e-19) +(2.32162 -0.49241 0) +(2.35028 -0.490567 3.17925e-19) +(2.37899 -0.488423 0) +(2.40774 -0.485992 0) +(2.43654 -0.483289 -7.14245e-19) +(2.46537 -0.480328 0) +(2.49424 -0.477127 0) +(2.52315 -0.473701 -3.93404e-19) +(2.55208 -0.470071 -8.09916e-19) +(2.58106 -0.466254 0) +(2.61007 -0.462271 0) +(2.63912 -0.458142 1.97437e-22) +(2.66823 -0.453889 -4.4756e-19) +(2.69739 -0.449536 -2.09016e-22) +(2.72661 -0.445105 -2.11636e-22) +(2.75592 -0.440622 -4.76188e-19) +(2.78531 -0.436112 -4.85081e-19) +(2.81482 -0.4316 4.93646e-19) +(2.84445 -0.42711 0) +(2.87424 -0.422662 0) +(2.90421 -0.418274 -5.17576e-19) +(2.9344 -0.413955 5.24826e-19) +(2.96486 -0.409707 1.06329e-18) +(2.99561 -0.405521 -5.38135e-19) +(3.02673 -0.401372 0) +(3.05827 -0.397218 0) +(3.09031 -0.392994 -1.11157e-18) +(3.12294 -0.388608 1.68298e-18) +(3.15631 -0.383938 -1.13126e-18) +(3.19053 -0.378833 -1.13977e-18) +(3.22598 -0.37312 0) +(3.26227 -0.366628 1.15351e-18) +(3.30249 -0.359104 0) +(3.33711 -0.350659 0) +(-0.00604183 0.335406 0) +(-0.0153368 0.411211 3.15503e-18) +(-0.0253133 0.433786 9.45249e-19) +(-0.0354786 0.44434 0) +(-0.0451128 0.450344 1.12155e-18) +(-0.0538303 0.454077 6.21526e-22) +(-0.0615117 0.456517 -4.37961e-19) +(-0.0681205 0.458176 4.02299e-22) +(-0.0736493 0.459353 3.81065e-19) +(-0.0781155 0.460227 0) +(-0.0815553 0.460906 0) +(-0.0840156 0.461448 -3.383e-19) +(-0.0855486 0.461879 0) +(-0.0862074 0.4622 -3.21584e-19) +(-0.0860446 0.462403 0) +(-0.0851105 0.462467 0) +(-0.0834508 0.462368 6.0796e-19) +(-0.0811069 0.46208 0) +(-0.0781142 0.461577 2.94819e-19) +(-0.0745044 0.46084 0) +(-0.0703049 0.459852 2.87015e-19) +(-0.0655403 0.4586 0) +(-0.0602303 0.457075 0) +(-0.0543897 0.455271 0) +(-0.0480287 0.45319 0) +(-0.041155 0.450835 0) +(-0.0337749 0.448215 -5.39648e-19) +(-0.025893 0.445335 0) +(-0.0175105 0.4422 0) +(-0.00862289 0.438816 2.63875e-19) +(0.000778748 0.43519 0) +(0.0107074 0.431332 -5.19345e-19) +(0.0211769 0.427257 0) +(0.0322006 0.422977 0) +(0.0437912 0.418499 0) +(0.0559642 0.413826 -2.50213e-19) +(0.0687368 0.408961 0) +(0.0821276 0.403909 0) +(0.0961519 0.398674 -4.87579e-19) +(0.110823 0.393266 0) +(0.12615 0.38769 0) +(0.142139 0.381947 4.73436e-19) +(0.158796 0.376039 6.84807e-22) +(0.176122 0.369967 7.13151e-22) +(0.194116 0.363735 -4.58762e-19) +(0.212774 0.357348 -4.52596e-19) +(0.232085 0.350808 0) +(0.252039 0.344115 0) +(0.272621 0.337268 0) +(0.293813 0.33027 0) +(0.315597 0.323118 0) +(0.337951 0.315809 0) +(0.360861 0.308342 8.24377e-19) +(0.384304 0.300713 4.05698e-19) +(0.408256 0.292918 8.00222e-19) +(0.432691 0.284952 0) +(0.457579 0.276813 0) +(0.482886 0.268498 0) +(0.508577 0.260005 0) +(0.534618 0.251333 3.68856e-19) +(0.560971 0.24248 0) +(0.587601 0.233446 3.56553e-19) +(0.61447 0.224231 -3.51537e-19) +(0.641544 0.214834 0) +(0.668787 0.205255 -1.11407e-21) +(0.696166 0.195496 -6.65794e-19) +(0.723648 0.185557 -6.53913e-19) +(0.751201 0.175439 0) +(0.778796 0.165144 -3.14661e-19) +(0.806404 0.154675 0) +(0.833999 0.144033 0) +(0.861555 0.133222 -2.98577e-19) +(0.88905 0.122245 2.91808e-19) +(0.916461 0.111106 0) +(0.943771 0.0998091 0) +(0.97096 0.0883589 0) +(0.998013 0.0767608 1.11152e-21) +(1.02492 0.0650207 0) +(1.05165 0.0531444 0) +(1.07822 0.0411381 2.53496e-19) +(1.1046 0.0290086 -2.49237e-19) +(1.1308 0.0167633 -7.29581e-19) +(1.1568 0.00441011 0) +(1.1826 -0.00804241 9.30859e-19) +(1.20819 -0.0205854 -4.53407e-19) +(1.23359 -0.0332097 0) +(1.25878 -0.0459061 4.33139e-19) +(1.28378 -0.0586654 0) +(1.30857 -0.0714775 0) +(1.33317 -0.0843315 0) +(1.35759 -0.0972162 1.9327e-21) +(1.38181 -0.110121 0) +(1.40586 -0.123033 0) +(1.42974 -0.135943 3.53603e-19) +(1.45346 -0.148836 0) +(1.47701 -0.161702 0) +(1.50043 -0.174526 0) +(1.5237 -0.187297 3.11928e-19) +(1.54685 -0.200001 -6.00559e-19) +(1.56988 -0.212626 2.88692e-19) +(1.5928 -0.225158 2.7797e-19) +(1.61562 -0.237583 -2.68853e-19) +(1.63835 -0.249889 2.58145e-19) +(1.66101 -0.262063 0) +(1.6836 -0.274093 -1.47201e-21) +(1.70613 -0.285963 -2.24737e-19) +(1.72861 -0.29766 2.15569e-19) +(1.75105 -0.309171 -2.03633e-19) +(1.77347 -0.320483 -1.94451e-19) +(1.79586 -0.331584 -1.82654e-19) +(1.81825 -0.342463 -1.24825e-21) +(1.84064 -0.353104 0) +(1.86303 -0.363498 0) +(1.88544 -0.373635 -1.41139e-19) +(1.90787 -0.383502 0) +(1.93033 -0.393087 1.20647e-19) +(1.95283 -0.402383 -1.10477e-19) +(1.97537 -0.411377 -1.01347e-19) +(1.99796 -0.420059 9.44018e-22) +(2.0206 -0.428422 0) +(2.0433 -0.436457 0) +(2.06606 -0.444156 -6.13712e-20) +(2.08889 -0.451509 7.92953e-22) +(2.11179 -0.458511 4.18135e-20) +(2.13477 -0.465151 -3.21541e-20) +(2.15781 -0.471422 2.25802e-20) +(2.18093 -0.477314 0) +(2.20413 -0.482821 0) +(2.2274 -0.487938 0) +(2.25075 -0.492666 0) +(2.27418 -0.497008 0) +(2.29767 -0.500962 0) +(2.32124 -0.504522 0) +(2.34488 -0.507685 0) +(2.36858 -0.51045 0) +(2.39235 -0.512817 0) +(2.41618 -0.514787 -1.52492e-19) +(2.44007 -0.516363 -1.68347e-19) +(2.46402 -0.517547 3.69659e-19) +(2.48802 -0.518342 4.01509e-19) +(2.51207 -0.518753 -2.16196e-19) +(2.53617 -0.518786 -2.31953e-19) +(2.56031 -0.518448 0) +(2.58448 -0.517749 0) +(2.6087 -0.516699 0) +(2.63295 -0.515309 5.80594e-19) +(2.65723 -0.513591 0) +(2.68153 -0.511557 -3.17682e-19) +(2.70587 -0.509221 0) +(2.73024 -0.506597 0) +(2.75463 -0.5037 3.5655e-19) +(2.77905 -0.500546 3.68861e-19) +(2.8035 -0.497153 0) +(2.82799 -0.493537 7.85057e-19) +(2.85251 -0.489719 8.07762e-19) +(2.87708 -0.485717 0) +(2.90169 -0.481552 0) +(2.92637 -0.477247 4.36076e-19) +(2.95111 -0.472824 4.46152e-19) +(2.97594 -0.468307 -4.55906e-19) +(3.00086 -0.46372 -1.32998e-22) +(3.02589 -0.459089 1.34744e-22) +(3.05105 -0.454441 1.3477e-22) +(3.07636 -0.449803 -1.33262e-22) +(3.10184 -0.4452 0) +(3.12752 -0.440654 0) +(3.15344 -0.436185 0) +(3.17964 -0.431806 0) +(3.20616 -0.427519 -5.29126e-19) +(3.23305 -0.423319 5.35634e-19) +(3.26038 -0.419185 0) +(3.28821 -0.41508 0) +(3.31663 -0.410947 1.10619e-18) +(3.34575 -0.406702 -1.11636e-18) +(3.3757 -0.402239 3.6341e-22) +(3.40661 -0.397423 1.13418e-18) +(3.43886 -0.392103 0) +(3.47205 -0.386134 -1.14789e-18) +(3.50918 -0.379248 -1.15343e-18) +(3.5409 -0.371724 0) +(-0.00622081 0.353072 0) +(-0.0159739 0.431542 -1.64003e-18) +(-0.0260868 0.453508 -9.94249e-19) +(-0.0359852 0.46254 0) +(-0.0449689 0.46658 -1.19507e-18) +(-0.0527024 0.468132 -1.03948e-18) +(-0.0591201 0.468312 -4.84073e-22) +(-0.0642382 0.467722 -4.36239e-19) +(-0.0680982 0.466717 -8.25076e-19) +(-0.0707602 0.465517 3.95062e-19) +(-0.0722944 0.464249 3.8165e-19) +(-0.0727718 0.462978 -9.44261e-23) +(-0.0722585 0.461724 0) +(-0.0708129 0.460484 3.55809e-19) +(-0.0684874 0.459239 -3.50154e-19) +(-0.0653284 0.457956 -3.45414e-19) +(-0.0613741 0.456598 -3.41497e-19) +(-0.0566524 0.455125 0) +(-0.0511809 0.4535 0) +(-0.0449721 0.451696 0) +(-0.0380362 0.449693 0) +(-0.030381 0.447468 0) +(-0.022006 0.445 0) +(-0.012902 0.442273 0) +(-0.00305356 0.439279 0) +(0.00755678 0.436018 -3.24171e-19) +(0.018945 0.432499 3.22613e-19) +(0.0311249 0.428728 0) +(0.0441116 0.4247 -3.18643e-19) +(0.0579271 0.420412 -3.17296e-19) +(0.0725984 0.415865 0) +(0.0881534 0.411066 6.26503e-19) +(0.104615 0.406031 0) +(0.121996 0.400775 0) +(0.140306 0.395305 0) +(0.159553 0.389622 6.07907e-19) +(0.179745 0.38373 0) +(0.200886 0.377638 0) +(0.222971 0.371357 5.8879e-19) +(0.245991 0.364907 -5.80085e-19) +(0.269928 0.358299 0) +(0.294755 0.35154 -5.65567e-19) +(0.320444 0.344636 1.11265e-18) +(0.346964 0.337593 5.4828e-19) +(0.374281 0.330422 -5.37696e-19) +(0.402355 0.323136 1.58253e-21) +(0.43114 0.315745 -5.19076e-19) +(0.460592 0.308255 5.09619e-19) +(0.490665 0.300664 -5.00135e-19) +(0.521316 0.292966 0) +(0.552507 0.285156 0) +(0.584201 0.277239 0) +(0.616361 0.269218 -4.64703e-19) +(0.648938 0.261088 -1.68875e-21) +(0.681887 0.252849 -4.46639e-19) +(0.715158 0.244499 0) +(0.748702 0.236037 0) +(0.78247 0.227462 -4.18551e-19) +(0.816412 0.21877 -4.10004e-19) +(0.850482 0.209959 -1.71259e-21) +(0.884634 0.201026 0) +(0.918825 0.191968 -7.72167e-19) +(0.953012 0.182781 -3.77276e-19) +(0.987158 0.173464 0) +(1.02122 0.164012 -3.63509e-19) +(1.05518 0.154423 7.10328e-19) +(1.08898 0.144696 3.48636e-19) +(1.12261 0.134827 3.39767e-19) +(1.15603 0.124817 3.34326e-19) +(1.18923 0.114663 0) +(1.22217 0.104366 -3.18935e-19) +(1.25483 0.0939247 0) +(1.28721 0.0833396 -3.07218e-19) +(1.31927 0.0726118 0) +(1.351 0.0617429 2.92785e-19) +(1.38239 0.050735 2.86493e-19) +(1.41343 0.0395912 1.49591e-21) +(1.44412 0.0283151 0) +(1.47443 0.0169102 2.68106e-19) +(1.50437 0.00538034 -2.63558e-19) +(1.53392 -0.00626967 0) +(1.5631 -0.0180347 2.79677e-21) +(1.59189 -0.0299082 -4.88199e-19) +(1.6203 -0.0418831 -4.78789e-19) +(1.64833 -0.0539515 4.66425e-19) +(1.67598 -0.0661061 0) +(1.70325 -0.078339 4.39505e-19) +(1.73015 -0.0906417 0) +(1.75669 -0.103005 0) +(1.78286 -0.115419 4.03948e-19) +(1.80869 -0.127874 3.94678e-19) +(1.83418 -0.140357 0) +(1.85933 -0.15286 -3.69201e-19) +(1.88415 -0.165369 -7.17794e-19) +(1.90867 -0.177874 0) +(1.93288 -0.190363 0) +(1.95679 -0.202822 0) +(1.98043 -0.215238 3.1268e-19) +(2.0038 -0.2276 3.03571e-19) +(2.02691 -0.239893 -5.82914e-19) +(2.04977 -0.252104 -5.6081e-19) +(2.0724 -0.26422 -2.68462e-19) +(2.0948 -0.276227 -2.57527e-19) +(2.117 -0.288114 2.46638e-19) +(2.139 -0.299868 -2.37532e-19) +(2.16081 -0.311473 2.26688e-19) +(2.18245 -0.322914 0) +(2.20392 -0.334179 2.05142e-19) +(2.22525 -0.345255 0) +(2.24644 -0.356131 1.83791e-19) +(2.2675 -0.366791 -1.73192e-19) +(2.28845 -0.377221 0) +(2.30928 -0.387409 0) +(2.33002 -0.397348 1.41718e-19) +(2.35067 -0.407024 0) +(2.37123 -0.416423 -2.40826e-19) +(2.39173 -0.425537 1.1809e-21) +(2.41215 -0.434354 0) +(2.43252 -0.442865 9.04738e-20) +(2.45284 -0.451062 0) +(2.47312 -0.45893 0) +(2.49336 -0.466466 -5.96191e-20) +(2.51356 -0.473661 5.07734e-20) +(2.53374 -0.480504 4.01773e-20) +(2.55389 -0.486988 -6.11728e-20) +(2.57403 -0.493104 -4.21746e-20) +(2.59415 -0.498842 0) +(2.61425 -0.504197 0) +(2.63435 -0.509161 0) +(2.65445 -0.513737 -3.18425e-20) +(2.67453 -0.517925 0) +(2.69462 -0.521724 0) +(2.7147 -0.525127 0) +(2.73477 -0.528134 0) +(2.75484 -0.530743 0) +(2.77491 -0.532953 0) +(2.79498 -0.534766 3.04643e-19) +(2.81504 -0.536184 0) +(2.83511 -0.537208 -3.69351e-19) +(2.85518 -0.537842 -2.00161e-19) +(2.87525 -0.538091 0) +(2.89532 -0.53796 2.30937e-19) +(2.91539 -0.537457 2.46316e-19) +(2.93546 -0.536593 0) +(2.95553 -0.535376 2.75256e-19) +(2.9756 -0.53382 -2.89005e-19) +(2.99568 -0.531936 0) +(3.01576 -0.529736 0) +(3.03585 -0.527236 0) +(3.05595 -0.524449 0) +(3.07606 -0.521391 3.5486e-19) +(3.0962 -0.518078 -7.34051e-19) +(3.11636 -0.514529 0) +(3.13656 -0.510762 -3.90508e-19) +(3.15679 -0.506795 -4.01797e-19) +(3.17708 -0.502651 0) +(3.19743 -0.49835 0) +(3.21785 -0.493915 0) +(3.23836 -0.489369 0) +(3.25898 -0.484737 4.53485e-19) +(3.27972 -0.480045 -9.25861e-19) +(3.30059 -0.475319 4.72067e-19) +(3.32163 -0.470586 9.61634e-19) +(3.34286 -0.465876 -4.89326e-19) +(3.3643 -0.461215 -4.97414e-19) +(3.38599 -0.456629 0) +(3.40797 -0.452139 0) +(3.43028 -0.447759 0) +(3.45298 -0.443496 0) +(3.47611 -0.439347 0) +(3.49975 -0.435296 0) +(3.52398 -0.431311 0) +(3.54888 -0.42734 0) +(3.57457 -0.423314 0) +(3.6012 -0.419134 2.2447e-18) +(3.62889 -0.414685 0) +(3.65802 -0.409829 0) +(3.68819 -0.40445 -1.1448e-18) +(3.72229 -0.398248 1.15185e-18) +(3.75127 -0.391689 0) +(-0.00713254 0.370767 0) +(-0.018307 0.450914 -1.69399e-18) +(-0.0292137 0.471539 0) +(-0.0392643 0.478425 0) +(-0.0478047 0.480004 6.36314e-19) +(-0.0546172 0.479017 5.57856e-19) +(-0.0597578 0.476711 1.01698e-18) +(-0.063342 0.473758 4.75507e-19) +(-0.0654899 0.470552 4.52358e-19) +(-0.0663202 0.467324 -4.36281e-19) +(-0.0659438 0.464196 -8.49748e-19) +(-0.0644535 0.461213 4.1671e-19) +(-0.0619164 0.458372 0) +(-0.0583773 0.455648 0) +(-0.0538702 0.453007 8.08967e-19) +(-0.0484232 0.450406 4.03204e-19) +(-0.0420514 0.447787 0) +(-0.0347478 0.445086 0) +(-0.0264863 0.442254 0) +(-0.0172362 0.439258 0) +(-0.00697224 0.436075 0) +(0.00433239 0.432677 0) +(0.0167173 0.429028 0) +(0.0302355 0.425096 0) +(0.0449506 0.420868 4.10545e-19) +(0.0609211 0.416344 4.11227e-19) +(0.0781905 0.411539 -4.09951e-19) +(0.0967843 0.406458 0) +(0.116728 0.40109 4.08242e-19) +(0.138053 0.395418 0) +(0.160788 0.389447 -4.02167e-19) +(0.184954 0.383187 -3.99535e-19) +(0.21055 0.376673 0) +(0.237556 0.369941 -3.8914e-19) +(0.265937 0.363006 0) +(0.295647 0.355873 0) +(0.326638 0.348555 0) +(0.358849 0.341073 0) +(0.392214 0.333449 0) +(0.426658 0.325714 6.992e-19) +(0.462105 0.317894 -6.81136e-19) +(0.498461 0.310009 0) +(0.535637 0.302073 -6.5187e-19) +(0.573547 0.294097 0) +(0.612106 0.286095 1.23838e-18) +(0.651236 0.278073 6.05048e-19) +(0.69087 0.270028 5.89975e-19) +(0.730937 0.261948 -1.14813e-18) +(0.771378 0.253835 5.61099e-19) +(0.812141 0.245695 0) +(0.853171 0.237532 0) +(0.894413 0.229337 5.18627e-19) +(0.935799 0.221105 0) +(0.977271 0.212839 -9.89658e-19) +(1.01877 0.204537 -4.81656e-19) +(1.06025 0.196196 0) +(1.10165 0.187811 0) +(1.14292 0.179378 8.97906e-19) +(1.18403 0.170888 4.39476e-19) +(1.22492 0.162335 -4.2916e-19) +(1.26557 0.153711 0) +(1.30593 0.145008 4.09446e-19) +(1.34597 0.13622 4.00024e-19) +(1.38567 0.12734 0) +(1.425 0.11836 0) +(1.46392 0.109275 -3.73339e-19) +(1.50243 0.100077 3.62833e-19) +(1.54049 0.0907635 -3.56735e-19) +(1.5781 0.0813283 0) +(1.61524 0.0717676 0) +(1.65188 0.0620781 1.97971e-21) +(1.68803 0.0522569 0) +(1.72367 0.0423018 -3.16691e-19) +(1.75879 0.0322114 3.09579e-19) +(1.79338 0.0219852 -3.04467e-19) +(1.82744 0.0116233 -1.83493e-21) +(1.86097 0.00112702 5.79843e-19) +(1.89396 -0.00950189 0) +(1.92641 -0.020262 -2.7746e-19) +(1.95832 -0.031151 0) +(1.98969 -0.0421653 0) +(2.02053 -0.0533005 5.14848e-19) +(2.05083 -0.0645519 5.01492e-19) +(2.08061 -0.0759132 0) +(2.10986 -0.0873779 4.72198e-19) +(2.1386 -0.0989393 -4.59423e-19) +(2.16683 -0.11059 -4.49807e-19) +(2.19456 -0.122322 0) +(2.2218 -0.134127 0) +(2.24855 -0.145996 -8.22266e-19) +(2.27484 -0.157919 0) +(2.30066 -0.169885 0) +(2.32604 -0.181883 3.76304e-19) +(2.35097 -0.193902 3.64416e-19) +(2.37548 -0.20593 0) +(2.39957 -0.217955 3.38427e-19) +(2.42326 -0.229965 3.26848e-19) +(2.44656 -0.241947 -6.33049e-19) +(2.46949 -0.253889 0) +(2.49205 -0.265777 2.94794e-19) +(2.51426 -0.277598 2.83442e-19) +(2.53614 -0.289337 2.13143e-21) +(2.5577 -0.300979 2.07449e-21) +(2.57895 -0.312514 -2.49772e-19) +(2.5999 -0.323928 0) +(2.62056 -0.335204 0) +(2.64096 -0.346329 0) +(2.66109 -0.357288 2.03934e-19) +(2.68097 -0.368067 1.93127e-19) +(2.70063 -0.378658 0) +(2.72005 -0.389045 -1.71694e-19) +(2.73927 -0.39921 1.61075e-19) +(2.75828 -0.409142 0) +(2.77711 -0.418834 0) +(2.79575 -0.428272 0) +(2.81421 -0.437438 1.20642e-19) +(2.83252 -0.446329 1.10318e-19) +(2.85067 -0.454928 0) +(2.86867 -0.463226 0) +(2.88655 -0.471215 7.8651e-20) +(2.90429 -0.478884 0) +(2.9219 -0.486224 5.99023e-20) +(2.9394 -0.493226 0) +(2.95679 -0.499881 -4.03423e-20) +(2.97407 -0.506179 6.14058e-20) +(2.99126 -0.512114 4.23234e-20) +(3.00835 -0.517674 0) +(3.02535 -0.522853 3.18917e-21) +(3.04228 -0.527645 0) +(3.05913 -0.532049 -1.42054e-21) +(3.0759 -0.536067 0) +(3.0926 -0.539696 0) +(3.10922 -0.542933 -8.64046e-20) +(3.12579 -0.545774 1.03614e-19) +(3.14228 -0.548219 -1.20578e-19) +(3.15872 -0.550268 0) +(3.1751 -0.551921 -3.06629e-19) +(3.19143 -0.55318 0) +(3.20771 -0.554046 1.85153e-19) +(3.22395 -0.554524 2.01561e-19) +(3.24014 -0.554616 -2.16958e-19) +(3.25629 -0.55433 -2.32075e-19) +(3.2724 -0.553674 -2.46409e-19) +(3.28847 -0.552657 0) +(3.30452 -0.551289 -2.75309e-19) +(3.32054 -0.549584 -2.8966e-19) +(3.33654 -0.547554 -3.03319e-19) +(3.35252 -0.545211 0) +(3.36849 -0.54257 0) +(3.38446 -0.539646 0) +(3.40044 -0.536455 -3.54806e-19) +(3.41642 -0.533013 3.66988e-19) +(3.43243 -0.52934 3.78953e-19) +(3.44847 -0.525454 3.90497e-19) +(3.46456 -0.521375 -4.01739e-19) +(3.48071 -0.517125 0) +(3.49692 -0.512725 0) +(3.51323 -0.5082 0) +(3.52964 -0.503573 0) +(3.54617 -0.49887 -4.53417e-19) +(3.56285 -0.494116 2.25408e-23) +(3.57971 -0.48934 -4.7194e-19) +(3.59675 -0.48457 -4.80777e-19) +(3.61402 -0.479836 0) +(3.63155 -0.475168 1.65528e-23) +(3.64936 -0.470593 -5.05356e-19) +(3.66752 -0.466134 5.12943e-19) +(3.68605 -0.461809 5.20223e-19) +(3.70503 -0.457627 0) +(3.72452 -0.453588 0) +(3.74458 -0.449681 0) +(3.7653 -0.445879 0) +(3.78678 -0.442139 -1.10363e-18) +(3.80914 -0.438399 0) +(3.83253 -0.434574 -1.12391e-18) +(3.85709 -0.430562 0) +(3.88317 -0.426238 0) +(3.91041 -0.42151 1.14727e-18) +(3.94155 -0.416041 0) +(3.96796 -0.410485 0) +(-0.00900627 0.390294 0) +(-0.022832 0.470795 1.72657e-18) +(-0.0351881 0.488878 0) +(-0.0456251 0.492644 0) +(-0.0536686 0.491061 -6.81873e-19) +(-0.0593725 0.487107 0) +(-0.0630323 0.482102 -5.58731e-19) +(-0.0649109 0.476724 -5.29928e-19) +(-0.0652131 0.471351 -5.12118e-19) +(-0.0641064 0.466183 0) +(-0.0617271 0.461307 4.95905e-19) +(-0.058169 0.456716 4.9415e-19) +(-0.0534641 0.452351 0) +(-0.0475966 0.448155 -4.98812e-19) +(-0.0405409 0.44409 -5.04512e-19) +(-0.0322804 0.440105 0) +(-0.022776 0.436108 0) +(-0.0119331 0.431995 0) +(0.000382381 0.427698 0) +(0.014303 0.423187 0) +(0.0299287 0.418452 0) +(0.0473383 0.413449 0) +(0.0666283 0.408099 5.58236e-19) +(0.0879247 0.402343 0) +(0.111348 0.396161 -1.11945e-18) +(0.136988 0.389579 0) +(0.164879 0.382647 5.53224e-19) +(0.195005 0.375404 -5.45037e-19) +(0.22733 0.367842 5.36415e-19) +(0.261799 0.359958 -5.26143e-19) +(0.298334 0.351782 5.16108e-19) +(0.336829 0.343356 0) +(0.377146 0.334747 0) +(0.419135 0.326027 4.76155e-19) +(0.462648 0.317225 4.60141e-19) +(0.507488 0.308375 4.45673e-19) +(0.553477 0.299513 0) +(0.600439 0.290667 0) +(0.648206 0.281861 0) +(0.696626 0.273136 -3.90373e-19) +(0.745572 0.264498 7.5855e-19) +(0.794924 0.255932 -7.30661e-19) +(0.844577 0.247443 0) +(0.894428 0.23902 0) +(0.944392 0.230664 -3.18488e-21) +(0.994402 0.222398 0) +(1.0444 0.214226 0) +(1.09432 0.206132 1.21608e-18) +(1.14412 0.198097 5.8915e-19) +(1.19372 0.190102 5.72527e-19) +(1.24307 0.182145 0) +(1.29212 0.174226 -5.44275e-19) +(1.3408 0.166344 0) +(1.3891 0.158493 5.15566e-19) +(1.43695 0.150662 5.02086e-19) +(1.48434 0.142842 0) +(1.53123 0.135024 0) +(1.5776 0.127197 -4.64767e-19) +(1.62343 0.119347 0) +(1.66869 0.111464 0) +(1.71337 0.103535 0) +(1.75745 0.0955492 0) +(1.80091 0.0874973 -4.08735e-19) +(1.84376 0.0793682 3.99135e-19) +(1.88597 0.0711521 -3.89837e-19) +(1.92754 0.0628397 0) +(1.96846 0.054423 -2.36389e-21) +(2.00872 0.0458948 0) +(2.04833 0.0372483 -3.55278e-19) +(2.08727 0.0284777 3.47206e-19) +(2.12555 0.0195779 3.41551e-19) +(2.16316 0.0105444 0) +(2.20011 0.00137383 3.26253e-19) +(2.23639 -0.00793658 -3.18842e-19) +(2.272 -0.0173889 0) +(2.30696 -0.0269842 -2.05006e-21) +(2.34125 -0.0367218 -2.01488e-21) +(2.37488 -0.0466008 0) +(2.40787 -0.0566208 0) +(2.4402 -0.0667805 -2.73511e-19) +(2.4719 -0.0770767 0) +(2.50296 -0.0875058 2.5958e-19) +(2.5334 -0.0980636 0) +(2.56321 -0.108745 0) +(2.59242 -0.119544 -4.82313e-19) +(2.62103 -0.130453 3.39869e-21) +(2.64905 -0.141467 -4.52798e-19) +(2.67649 -0.152576 0) +(2.70335 -0.163773 0) +(2.72966 -0.175049 4.17904e-19) +(2.75543 -0.186393 0) +(2.78065 -0.197797 0) +(2.80536 -0.209248 0) +(2.82955 -0.220738 0) +(2.85326 -0.232253 0) +(2.87647 -0.24378 -6.86282e-19) +(2.89922 -0.255306 -3.32607e-19) +(2.92151 -0.266819 3.20793e-19) +(2.94335 -0.278306 0) +(2.96476 -0.289752 -2.94934e-19) +(2.98575 -0.301144 -2.83411e-19) +(3.00633 -0.312468 5.46253e-19) +(3.02652 -0.32371 2.62849e-19) +(3.04634 -0.334858 0) +(3.06578 -0.345898 -2.38015e-19) +(3.08486 -0.356813 0) +(3.1036 -0.367589 0) +(3.12201 -0.378212 -2.06671e-19) +(3.1401 -0.388666 -1.95647e-19) +(3.15789 -0.398942 0) +(3.17537 -0.409025 3.45835e-19) +(3.19257 -0.418896 -1.63004e-19) +(3.2095 -0.428544 0) +(3.22616 -0.437961 1.40004e-19) +(3.24257 -0.447131 0) +(3.25874 -0.456038 0) +(3.27467 -0.464676 0) +(3.29039 -0.473032 0) +(3.30588 -0.481094 -8.82229e-20) +(3.32117 -0.488853 -1.27234e-21) +(3.33626 -0.496298 -6.81069e-20) +(3.35116 -0.503419 0) +(3.36588 -0.510208 0) +(3.38042 -0.516653 -3.86318e-20) +(3.39479 -0.522749 0) +(3.40899 -0.528485 -1.94762e-20) +(3.42304 -0.533852 0) +(3.43694 -0.538841 -3.21279e-21) +(3.4507 -0.543447 0) +(3.46431 -0.547668 -1.54718e-21) +(3.47779 -0.551505 0) +(3.49115 -0.554956 0) +(3.50437 -0.558017 8.6962e-20) +(3.51747 -0.560687 1.19723e-21) +(3.53045 -0.562965 1.21315e-19) +(3.54333 -0.56485 0) +(3.5561 -0.566343 3.10253e-19) +(3.56877 -0.567445 0) +(3.58136 -0.568157 -1.87742e-19) +(3.59385 -0.568483 -2.02657e-19) +(3.60627 -0.568427 2.18114e-19) +(3.6186 -0.567994 -6.2388e-22) +(3.63087 -0.567194 0) +(3.64307 -0.566036 0) +(3.65521 -0.564533 2.77523e-19) +(3.66731 -0.562695 2.91075e-19) +(3.67936 -0.560536 3.04779e-19) +(3.69137 -0.558068 3.18491e-19) +(3.70336 -0.555308 0) +(3.71534 -0.552269 -3.44313e-19) +(3.72731 -0.548968 -3.56775e-19) +(3.73929 -0.545423 3.68936e-19) +(3.75128 -0.541653 -3.80666e-19) +(3.76331 -0.537676 -3.92252e-19) +(3.77539 -0.533515 4.03534e-19) +(3.78753 -0.529191 0) +(3.79975 -0.524726 0) +(3.81208 -0.520144 0) +(3.82452 -0.515472 4.45666e-19) +(3.83712 -0.510735 -4.55431e-19) +(3.84988 -0.505959 4.64879e-19) +(3.86283 -0.501172 4.74046e-19) +(3.87601 -0.496406 0) +(3.88945 -0.491691 0) +(3.90318 -0.48706 4.99725e-19) +(3.91724 -0.482541 -3.53123e-23) +(3.93169 -0.47816 -1.03069e-18) +(3.94657 -0.473938 -5.22666e-19) +(3.96195 -0.469888 0) +(3.97789 -0.466013 0) +(3.99447 -0.462306 5.42913e-19) +(4.01179 -0.458746 0) +(4.02995 -0.455298 1.10926e-18) +(4.04907 -0.451908 5.60054e-19) +(4.06932 -0.448503 0) +(4.09083 -0.444992 -1.13892e-18) +(4.11394 -0.441262 0) +(4.13833 -0.437244 1.15355e-18) +(4.16656 -0.432556 1.16007e-18) +(4.19058 -0.428039 1.1584e-18) +(-0.0122282 0.413672 0) +(-0.0303268 0.492405 0) +(-0.0445798 0.505974 1.12558e-18) +(-0.0552169 0.50521 0) +(-0.0623224 0.499659 7.43895e-19) +(-0.0664871 0.492395 -6.78933e-19) +(-0.0683327 0.484616 0) +(-0.0682535 0.476862 0) +(-0.0664854 0.469415 9.34643e-23) +(-0.0631811 0.462407 0) +(-0.0584512 0.455874 0) +(-0.0523388 0.449726 -6.50684e-19) +(-0.0447472 0.443803 0) +(-0.0354661 0.438015 6.92556e-19) +(-0.0242846 0.432343 7.16475e-19) +(-0.011055 0.426736 -7.42941e-19) +(0.00441092 0.421003 0) +(0.0224187 0.414906 0) +(0.0433424 0.408308 -7.92079e-19) +(0.0675129 0.40119 0) +(0.0951377 0.393609 0) +(0.126321 0.385554 0) +(0.161146 0.376927 -1.87136e-21) +(0.19964 0.367707 0) +(0.241739 0.357964 1.4768e-18) +(0.287253 0.347817 0) +(0.335906 0.337421 0) +(0.387394 0.326882 6.60157e-19) +(0.441392 0.316238 -6.31593e-19) +(0.497467 0.305568 6.03296e-19) +(0.555226 0.294955 0) +(0.6143 0.284444 0) +(0.674324 0.274099 0) +(0.73506 0.264003 0) +(0.796259 0.254158 -4.80576e-19) +(0.857702 0.244507 -4.60149e-19) +(0.919209 0.235068 0) +(0.980627 0.225853 -4.21472e-19) +(1.04182 0.216841 0) +(1.10268 0.208033 3.92111e-19) +(1.16314 0.199471 -3.76341e-19) +(1.22313 0.19115 7.30447e-19) +(1.28261 0.183037 0) +(1.34151 0.175111 3.3987e-19) +(1.3998 0.167345 -9.90825e-19) +(1.45745 0.159713 0) +(1.51441 0.152205 -6.18835e-19) +(1.57065 0.144813 -3.26947e-21) +(1.62613 0.137526 -3.21693e-21) +(1.68083 0.130333 -1.13773e-18) +(1.73473 0.123225 0) +(1.78781 0.116189 5.37053e-19) +(1.84007 0.109216 0) +(1.8915 0.10229 0) +(1.9421 0.0953988 4.96709e-19) +(1.99187 0.0885278 0) +(2.0408 0.0816632 0) +(2.08891 0.074792 0) +(2.13619 0.0678994 4.50313e-19) +(2.18264 0.0609705 0) +(2.22828 0.0539925 -4.29619e-19) +(2.2731 0.0469534 0) +(2.31712 0.0398417 4.12886e-19) +(2.36033 0.0326456 -4.0363e-19) +(2.40275 0.0253544 2.53091e-21) +(2.44437 0.017958 0) +(2.48521 0.0104478 -3.77396e-19) +(2.52528 0.00281568 0) +(2.56457 -0.0049455 3.61003e-19) +(2.6031 -0.0128423 -3.53085e-19) +(2.64086 -0.0208803 -3.42974e-19) +(2.67788 -0.0290643 0) +(2.71415 -0.0373976 0) +(2.74969 -0.045883 -3.19943e-19) +(2.78449 -0.0545231 0) +(2.81857 -0.063319 -3.0716e-19) +(2.85193 -0.0722711 -2.9971e-19) +(2.88459 -0.081379 2.90296e-19) +(2.91654 -0.0906428 0) +(2.94781 -0.100061 2.78038e-19) +(2.9784 -0.109631 0) +(3.00831 -0.119347 -5.26225e-19) +(3.03757 -0.129207 0) +(3.06617 -0.139204 0) +(3.09412 -0.149335 -2.41943e-19) +(3.12145 -0.159592 7.09673e-19) +(3.14815 -0.16997 4.61203e-19) +(3.17425 -0.180459 2.22374e-19) +(3.19975 -0.191053 0) +(3.22467 -0.201744 0) +(3.24901 -0.212517 -4.0669e-19) +(3.27278 -0.223363 0) +(3.29601 -0.234272 0) +(3.3187 -0.245231 -3.6956e-19) +(3.34085 -0.256229 -3.5736e-19) +(3.36249 -0.267254 2.91351e-21) +(3.38362 -0.278293 0) +(3.40426 -0.289334 0) +(3.42441 -0.300362 3.09384e-19) +(3.44409 -0.311365 3.00227e-19) +(3.46331 -0.322327 2.57077e-21) +(3.48208 -0.333234 -2.50346e-21) +(3.50042 -0.344071 0) +(3.51833 -0.354825 0) +(3.53582 -0.365483 2.30025e-21) +(3.55292 -0.376028 0) +(3.56962 -0.386445 2.17116e-19) +(3.58595 -0.39672 0) +(3.60192 -0.406837 -1.94794e-19) +(3.61753 -0.416786 0) +(3.63279 -0.426555 -1.90702e-21) +(3.64772 -0.436121 -1.61891e-19) +(3.66232 -0.445474 -1.51079e-19) +(3.67662 -0.454603 -1.4207e-19) +(3.69061 -0.463496 0) +(3.7043 -0.472133 0) +(3.71771 -0.480508 1.08678e-19) +(3.73084 -0.488609 0) +(3.7437 -0.496422 8.94212e-20) +(3.7563 -0.503937 -1.35897e-21) +(3.76865 -0.511145 6.90023e-20) +(3.78075 -0.518034 0) +(3.79261 -0.524598 0) +(3.80424 -0.530826 3.91147e-20) +(3.81565 -0.536709 -2.82784e-20) +(3.82684 -0.542238 1.97121e-20) +(3.83782 -0.547404 -9.19985e-21) +(3.84861 -0.552196 0) +(3.8592 -0.556609 0) +(3.86959 -0.560641 5.41091e-20) +(3.87981 -0.564293 2.76099e-20) +(3.88985 -0.567564 0) +(3.89972 -0.57045 0) +(3.90942 -0.572948 -1.06606e-19) +(3.91896 -0.575059 0) +(3.92835 -0.576781 0) +(3.9376 -0.578116 1.03172e-21) +(3.94671 -0.579063 0) +(3.95569 -0.579626 1.8969e-19) +(3.96455 -0.579805 -2.06312e-19) +(3.97329 -0.579607 0) +(3.98193 -0.579036 2.36283e-19) +(3.99047 -0.578102 0) +(3.99892 -0.576815 2.66463e-19) +(4.00728 -0.575187 -2.8028e-19) +(4.01558 -0.57323 0) +(4.02381 -0.570958 0) +(4.032 -0.568383 3.45273e-22) +(4.04014 -0.56552 0) +(4.04826 -0.562385 6.95526e-19) +(4.05637 -0.558996 7.20615e-19) +(4.06448 -0.55537 -3.72454e-19) +(4.0726 -0.551525 0) +(4.08076 -0.547484 -3.96199e-19) +(4.08897 -0.543266 0) +(4.09725 -0.538894 0) +(4.10561 -0.534392 0) +(4.11409 -0.529784 0) +(4.12271 -0.525097 -4.49793e-19) +(4.13149 -0.520358 -5.37067e-23) +(4.14046 -0.515592 -4.69228e-19) +(4.14965 -0.51083 0) +(4.1591 -0.506103 0) +(4.16882 -0.501445 0) +(4.17888 -0.496889 -5.04388e-19) +(4.18931 -0.492466 5.1235e-19) +(4.20016 -0.488206 1.04024e-18) +(4.21149 -0.484131 0) +(4.22337 -0.480258 -5.34726e-19) +(4.23588 -0.476596 -5.41544e-19) +(4.24909 -0.473139 1.41022e-22) +(4.2631 -0.469874 -5.54198e-19) +(4.27802 -0.466773 5.6e-19) +(4.294 -0.463791 -5.65269e-19) +(4.31118 -0.460865 0) +(4.32972 -0.457917 1.72466e-18) +(4.34994 -0.454839 5.79031e-19) +(4.37157 -0.451585 -1.16471e-18) +(4.39693 -0.44773 -1.75711e-18) +(4.41874 -0.444283 -1.16988e-18) +(-0.0176401 0.443022 0) +(-0.0420964 0.51631 0) +(-0.0579991 0.522373 -5.9142e-19) +(-0.0680321 0.515493 0) +(-0.0734177 0.505419 0) +(-0.075481 0.4948 1.24089e-18) +(-0.0751029 0.484329 0) +(-0.072648 0.47428 0) +(-0.0682082 0.464864 8.65813e-19) +(-0.0617257 0.456152 0) +(-0.0530756 0.448148 0) +(-0.042021 0.44056 0) +(-0.0279841 0.432832 0) +(-0.0101369 0.424639 0) +(0.012314 0.415932 -1.1538e-18) +(0.0399225 0.406701 1.16108e-18) +(0.0732972 0.39664 1.1494e-18) +(0.11296 0.385472 0) +(0.15922 0.373246 2.18507e-21) +(0.211896 0.360245 0) +(0.270471 0.346818 0) +(0.334309 0.333121 0) +(0.402647 0.319195 -8.63783e-19) +(0.474467 0.305251 8.04432e-19) +(0.548868 0.291485 -1.50641e-18) +(0.624998 0.278018 0) +(0.702192 0.26499 0) +(0.780006 0.252513 0) +(0.85797 0.240532 0) +(0.935693 0.228965 0) +(1.0129 0.217858 0) +(1.08934 0.207192 0) +(1.16488 0.19696 0) +(1.23941 0.187179 -4.53422e-19) +(1.31279 0.177871 0) +(1.385 0.169012 0) +(1.45601 0.160545 0) +(1.52578 0.15243 3.88735e-19) +(1.59431 0.144632 0) +(1.6616 0.137098 -3.60628e-19) +(1.72765 0.12979 1.83018e-21) +(1.79245 0.122705 3.37995e-19) +(1.85599 0.115829 0) +(1.91828 0.109142 -1.70548e-21) +(1.97933 0.102624 1.67183e-21) +(2.03913 0.096259 0) +(2.09771 0.0900291 5.88481e-19) +(2.15509 0.0839168 -5.73187e-19) +(2.21128 0.0779049 -8.36455e-19) +(2.26631 0.071977 5.44859e-19) +(2.3202 0.0661179 0) +(2.37297 0.0603138 -5.19111e-19) +(2.42464 0.0545505 -2.52084e-19) +(2.47523 0.0488132 0) +(2.52477 0.0430873 -2.81614e-21) +(2.57329 0.0373584 0) +(2.6208 0.031612 4.60694e-19) +(2.66733 0.0258358 0) +(2.71291 0.020015 -4.43849e-19) +(2.75754 0.0141354 0) +(2.80125 0.00818463 4.25457e-19) +(2.84406 0.00215111 0) +(2.88599 -0.00397621 0) +(2.92705 -0.0102083 0) +(2.96726 -0.0165553 7.80619e-19) +(3.00663 -0.0230268 0) +(3.04519 -0.0296309 0) +(3.08293 -0.0363751 0) +(3.11988 -0.0432662 0) +(3.15604 -0.0503102 3.49775e-19) +(3.19143 -0.0575122 3.44593e-19) +(3.22606 -0.0648765 0) +(3.25995 -0.0724063 0) +(3.29309 -0.0801042 3.22009e-19) +(3.3255 -0.0879724 0) +(3.3572 -0.0960119 3.05312e-19) +(3.38818 -0.104223 0) +(3.41847 -0.112605 -5.84494e-19) +(3.44807 -0.121159 0) +(3.477 -0.129883 -2.77371e-19) +(3.50526 -0.138773 0) +(3.53286 -0.147826 2.65797e-19) +(3.55981 -0.157039 2.57127e-19) +(3.58614 -0.166407 0) +(3.61183 -0.175921 2.45809e-19) +(3.63692 -0.185576 -2.39251e-19) +(3.66139 -0.195365 0) +(3.68527 -0.205278 -1.7901e-21) +(3.70856 -0.215307 -2.18094e-19) +(3.73128 -0.225445 -2.1174e-19) +(3.75343 -0.235682 2.08812e-19) +(3.77502 -0.246006 0) +(3.79606 -0.256405 -1.92921e-19) +(3.81655 -0.266868 3.7663e-19) +(3.83652 -0.277383 3.64245e-19) +(3.85596 -0.287936 3.51933e-19) +(3.87488 -0.298515 1.68361e-19) +(3.8933 -0.309107 0) +(3.91123 -0.319698 -3.15434e-19) +(3.92868 -0.330274 0) +(3.94565 -0.340822 2.91461e-19) +(3.96217 -0.351326 -2.62524e-21) +(3.97823 -0.361773 2.65214e-19) +(3.99385 -0.372148 0) +(4.00903 -0.382438 2.44372e-19) +(4.0238 -0.392624 0) +(4.03816 -0.402692 -2.21276e-19) +(4.05211 -0.412629 0) +(4.06567 -0.422417 2.14273e-21) +(4.07885 -0.432045 0) +(4.09165 -0.441499 -2.00714e-21) +(4.10408 -0.450761 1.94108e-21) +(4.11616 -0.459819 1.53854e-19) +(4.12788 -0.468662 0) +(4.13927 -0.477275 1.30304e-19) +(4.15032 -0.485643 0) +(4.16105 -0.493754 -1.10603e-19) +(4.17147 -0.501599 0) +(4.18159 -0.509162 8.80426e-20) +(4.1914 -0.516435 -1.56862e-19) +(4.20092 -0.523407 6.74895e-20) +(4.21016 -0.530066 0) +(4.21911 -0.536404 -4.73418e-20) +(4.2278 -0.542412 0) +(4.23622 -0.548081 5.6366e-20) +(4.24439 -0.553402 0) +(4.25232 -0.558364 9.3514e-21) +(4.26 -0.562956 0) +(4.26743 -0.567173 0) +(4.27465 -0.571016 -1.88884e-20) +(4.28164 -0.574484 -2.80549e-20) +(4.28842 -0.577574 0) +(4.29499 -0.580283 4.67311e-20) +(4.30136 -0.582612 0) +(4.30753 -0.584558 0) +(4.31352 -0.58612 0) +(4.31933 -0.5873 -1.60747e-19) +(4.32497 -0.588098 0) +(4.33045 -0.588515 0) +(4.33578 -0.588556 2.09478e-19) +(4.34097 -0.588222 1.12974e-19) +(4.34602 -0.587522 0) +(4.35095 -0.586463 0) +(4.35577 -0.585057 -2.70474e-19) +(4.36048 -0.583316 0) +(4.36511 -0.581253 0) +(4.36965 -0.57888 -3.13515e-19) +(4.37414 -0.576212 -3.26697e-19) +(4.37857 -0.573263 0) +(4.38297 -0.57005 -3.52985e-19) +(4.38735 -0.56659 -3.6567e-19) +(4.39173 -0.562901 3.78263e-19) +(4.39611 -0.559003 0) +(4.40054 -0.554917 4.01891e-19) +(4.40501 -0.550664 0) +(4.40957 -0.546269 0) +(4.41422 -0.541753 0) +(4.41899 -0.537144 0) +(4.42391 -0.532469 0) +(4.42901 -0.527756 4.66121e-19) +(4.43432 -0.523029 -7.5672e-23) +(4.43987 -0.518321 0) +(4.44569 -0.513664 0) +(4.45183 -0.509095 0) +(4.45833 -0.504648 5.11308e-19) +(4.46523 -0.500357 0) +(4.47259 -0.496254 1.28797e-22) +(4.48048 -0.492365 0) +(4.48897 -0.488712 5.41965e-19) +(4.49813 -0.485304 5.48856e-19) +(4.50806 -0.482143 -1.11105e-18) +(4.51885 -0.479221 -2.16518e-22) +(4.53063 -0.476518 -5.67526e-19) +(4.54354 -0.473998 0) +(4.55773 -0.471606 5.78319e-19) +(4.57337 -0.469276 2.1219e-22) +(4.59077 -0.466906 -5.86854e-19) +(4.60971 -0.46447 0) +(4.63227 -0.461498 5.9366e-19) +(4.65202 -0.459151 0) +(-0.0261305 0.482606 0) +(-0.059985 0.543329 0) +(-0.0758909 0.537042 -6.6658e-19) +(-0.0842389 0.522278 -5.9114e-19) +(-0.0870649 0.507453 0) +(-0.0864181 0.494112 -1.18048e-18) +(-0.0829135 0.482043 0) +(-0.0761087 0.470788 0) +(-0.0653587 0.459893 -7.13222e-19) +(-0.0495269 0.44868 0) +(-0.0269675 0.436826 0) +(0.00448457 0.423678 0) +(0.0472392 0.408326 0) +(0.102491 0.391072 0) +(0.169938 0.372769 0) +(0.248032 0.353974 0) +(0.335631 0.334574 -1.79102e-18) +(0.430063 0.314962 0) +(0.529118 0.295578 4.92297e-19) +(0.630712 0.276805 -8.90361e-19) +(0.73348 0.259011 -8.15568e-19) +(0.836444 0.242354 0) +(0.938655 0.226619 0) +(1.0394 0.211718 -6.47207e-19) +(1.13826 0.197726 1.20627e-18) +(1.23496 0.18461 5.65196e-19) +(1.32938 0.172381 0) +(1.42145 0.161013 0) +(1.51106 0.150486 4.81925e-19) +(1.59828 0.140745 0) +(1.68316 0.131665 0) +(1.76574 0.12316 -4.22978e-19) +(1.84613 0.115147 0) +(1.92435 0.107556 3.94153e-19) +(2.00049 0.100348 0) +(2.0746 0.0934911 3.65977e-19) +(2.14669 0.0869578 0) +(2.21686 0.0807187 0) +(2.28513 0.0747372 3.33839e-19) +(2.35156 0.0689857 3.26277e-19) +(2.41621 0.0634407 3.17507e-19) +(2.47916 0.0580841 -3.09263e-19) +(2.54047 0.0528954 0) +(2.60019 0.0478527 -2.94162e-19) +(2.65839 0.0429344 5.72885e-19) +(2.7151 0.0381207 0) +(2.77039 0.0333938 0) +(2.82428 0.0287371 0) +(2.87685 0.0241351 2.62645e-19) +(2.92811 0.0195731 0) +(2.97813 0.0150369 0) +(3.02694 0.0105132 0) +(3.07459 0.00598904 1.34649e-21) +(3.1211 0.00145112 -2.35909e-19) +(3.16652 -0.00311383 -4.65346e-19) +(3.21089 -0.0077189 0) +(3.25423 -0.0123773 -2.25229e-19) +(3.29658 -0.0170993 -2.185e-19) +(3.33797 -0.021899 0) +(3.37843 -0.0267887 -2.10272e-19) +(3.41799 -0.0317778 0) +(3.45667 -0.036877 2.02396e-19) +(3.49449 -0.0420954 0) +(3.53147 -0.0474432 0) +(3.56764 -0.0529287 -3.84646e-19) +(3.60301 -0.0585601 -3.74927e-19) +(3.63759 -0.0643446 3.67537e-19) +(3.67141 -0.0702889 0) +(3.70448 -0.0763993 0) +(3.73681 -0.082681 -3.48206e-19) +(3.76842 -0.0891383 0) +(3.79932 -0.0957749 0) +(3.82952 -0.102594 -3.25066e-19) +(3.85903 -0.109598 3.18227e-19) +(3.88788 -0.116789 -3.11442e-19) +(3.91606 -0.124168 -3.06828e-19) +(3.9436 -0.131735 0) +(3.97049 -0.139487 2.93436e-19) +(3.99676 -0.147423 -2.84741e-19) +(4.0224 -0.155542 5.58351e-19) +(4.04743 -0.163839 0) +(4.07186 -0.172313 0) +(4.09569 -0.180957 -2.60559e-19) +(4.11894 -0.189767 0) +(4.14161 -0.198738 2.45695e-19) +(4.1637 -0.207862 0) +(4.18524 -0.217132 2.32884e-19) +(4.20622 -0.226538 -2.28329e-19) +(4.22664 -0.236072 2.21954e-19) +(4.24652 -0.245726 2.15605e-19) +(4.26586 -0.255487 1.72255e-21) +(4.28467 -0.265345 0) +(4.30295 -0.275288 1.96707e-19) +(4.32072 -0.285305 0) +(4.33799 -0.295382 0) +(4.35475 -0.305507 -1.76481e-19) +(4.37101 -0.315669 -1.52771e-21) +(4.38679 -0.325853 1.64246e-19) +(4.40208 -0.336046 0) +(4.41691 -0.346234 0) +(4.43127 -0.356401 1.46116e-19) +(4.44518 -0.366533 -4.23114e-19) +(4.45863 -0.376616 -1.36826e-19) +(4.47163 -0.386636 0) +(4.48421 -0.39658 0) +(4.49636 -0.406432 0) +(4.50809 -0.416174 0) +(4.51941 -0.425792 1.04949e-19) +(4.53034 -0.435269 2.00649e-19) +(4.54086 -0.444594 1.87031e-19) +(4.551 -0.453755 -1.77806e-19) +(4.56076 -0.462732 1.66512e-19) +(4.57015 -0.471508 1.53357e-19) +(4.57916 -0.480077 0) +(4.58782 -0.488423 -2.64492e-19) +(4.59613 -0.496529 -1.20466e-19) +(4.60409 -0.504386 1.09685e-19) +(4.61171 -0.511981 0) +(4.619 -0.519301 -8.9958e-20) +(4.62597 -0.526336 1.48535e-21) +(4.63262 -0.533075 -6.89513e-20) +(4.63897 -0.539507 0) +(4.645 -0.545624 9.54242e-20) +(4.65074 -0.551416 0) +(4.65618 -0.556875 -2.82073e-20) +(4.66134 -0.561991 1.71758e-20) +(4.66622 -0.566751 0) +(4.67082 -0.571145 0) +(4.67515 -0.57517 0) +(4.67922 -0.578827 2.10724e-20) +(4.68304 -0.582114 3.03264e-20) +(4.68661 -0.585028 0) +(4.68995 -0.587567 7.47271e-22) +(4.69305 -0.58973 5.73238e-20) +(4.69592 -0.591514 6.60635e-20) +(4.69859 -0.592921 0) +(4.70104 -0.59395 0) +(4.7033 -0.594603 9.14848e-20) +(4.70537 -0.594881 0) +(4.70726 -0.594788 -1.07751e-19) +(4.70899 -0.594326 -1.15266e-19) +(4.71056 -0.593503 0) +(4.71199 -0.592329 0) +(4.71329 -0.590813 0) +(4.71447 -0.58897 1.45881e-19) +(4.71555 -0.586811 1.53058e-19) +(4.71653 -0.584351 3.19732e-19) +(4.71744 -0.581602 0) +(4.71829 -0.578581 0) +(4.7191 -0.575303 -1.80243e-19) +(4.71988 -0.571787 0) +(4.72065 -0.568052 -3.85607e-19) +(4.72144 -0.564117 1.99022e-19) +(4.72226 -0.560005 0) +(4.72314 -0.555737 0) +(4.7241 -0.551337 0) +(4.72516 -0.546829 0) +(4.72635 -0.54224 4.54538e-19) +(4.72771 -0.5376 -4.64926e-19) +(4.72925 -0.532935 4.7501e-19) +(4.73102 -0.528273 4.84697e-19) +(4.73305 -0.523644 -4.94265e-19) +(4.73538 -0.519085 0) +(4.73804 -0.514632 -5.12303e-19) +(4.74109 -0.510324 0) +(4.74458 -0.506195 5.29121e-19) +(4.74856 -0.502282 -5.36905e-19) +(4.75311 -0.498614 0) +(4.75829 -0.495216 -5.5204e-19) +(4.7642 -0.492102 0) +(4.77094 -0.489279 5.65475e-19) +(4.77859 -0.486743 5.7179e-19) +(4.78731 -0.484484 0) +(4.79721 -0.482475 5.83616e-19) +(4.80849 -0.480669 3.19018e-22) +(4.8213 -0.479009 -1.18653e-18) +(4.83594 -0.477399 0) +(4.85225 -0.475832 6.01086e-19) +(4.87206 -0.473799 0) +(4.8899 -0.472578 6.04178e-19) +(-0.0441352 0.534686 0) +(-0.0874744 0.565558 9.9569e-19) +(-0.101471 0.546696 0) +(-0.106646 0.528659 8.5841e-19) +(-0.104912 0.512946 0) +(-0.0985854 0.497677 9.57161e-19) +(-0.0825961 0.480173 -1.01565e-18) +(-0.0476695 0.45838 -1.07234e-18) +(0.0113605 0.43406 1.07447e-18) +(0.0947245 0.407604 0) +(0.199371 0.379979 0) +(0.322353 0.351321 -7.56415e-19) +(0.457794 0.321892 0) +(0.599459 0.293064 0) +(0.743522 0.2659 -5.06785e-19) +(0.887352 0.24111 0) +(1.02874 0.2185 4.09664e-19) +(1.16602 0.197516 -3.69798e-19) +(1.29831 0.178248 3.41741e-19) +(1.42533 0.160755 6.33398e-19) +(1.54707 0.145095 2.9779e-19) +(1.66364 0.131102 0) +(1.77511 0.118621 0) +(1.88182 0.10749 0) +(1.98416 0.0974709 -7.11494e-19) +(2.08243 0.0883398 -4.54437e-19) +(2.17687 0.0799354 0) +(2.2677 0.0721651 0) +(2.35514 0.064968 -6.03711e-19) +(2.43934 0.0582937 0) +(2.52046 0.0520819 0) +(2.59864 0.0462723 3.64882e-19) +(2.674 0.0408227 0) +(2.74667 0.0357026 0) +(2.81682 0.0308856 0) +(2.88459 0.0263183 -3.25978e-19) +(2.95013 0.0219778 0) +(3.01355 0.0178469 0) +(3.07497 0.0138772 -3.03032e-19) +(3.13447 0.010045 2.94635e-19) +(3.19215 0.00633033 0) +(3.24808 0.00271787 0) +(3.30235 -0.000806596 0) +(3.35504 -0.00425746 -2.70984e-19) +(3.40622 -0.00765104 -5.32921e-19) +(3.45595 -0.0110034 -2.60701e-19) +(3.5043 -0.0143292 0) +(3.55133 -0.0176419 2.51088e-19) +(3.59709 -0.0209539 -2.46547e-19) +(3.64162 -0.0242773 0) +(3.68499 -0.0276235 0) +(3.72723 -0.031004 -2.33804e-19) +(3.76839 -0.0344295 2.31044e-19) +(3.80852 -0.0379113 4.53048e-19) +(3.84764 -0.0414605 -2.22117e-19) +(3.88581 -0.0450882 0) +(3.92306 -0.0488054 -2.15962e-19) +(3.95941 -0.0526214 2.12394e-19) +(3.9949 -0.0565461 2.07645e-19) +(4.02957 -0.0605903 2.05259e-19) +(4.06343 -0.0647627 0) +(4.09651 -0.0690718 -1.98331e-19) +(4.12884 -0.0735249 -1.93816e-19) +(4.16043 -0.0781303 0) +(4.19131 -0.0828958 -1.87161e-19) +(4.22148 -0.087828 5.5384e-19) +(4.25098 -0.0929324 -5.44069e-19) +(4.27981 -0.0982147 0) +(4.30799 -0.10368 0) +(4.33553 -0.109332 0) +(4.36245 -0.115174 0) +(4.38874 -0.121211 0) +(4.41443 -0.127445 4.86594e-19) +(4.43953 -0.133877 -3.18779e-19) +(4.46405 -0.140509 3.12474e-19) +(4.48799 -0.14734 1.5206e-19) +(4.51136 -0.154372 0) +(4.53418 -0.161601 0) +(4.55645 -0.169026 4.29884e-19) +(4.57818 -0.176645 -2.80954e-19) +(4.59938 -0.184453 -2.72687e-19) +(4.62005 -0.192447 0) +(4.6402 -0.200623 2.60121e-19) +(4.65982 -0.208974 0) +(4.67893 -0.217494 -4.96987e-19) +(4.69753 -0.226174 -2.41271e-19) +(4.71562 -0.235007 -4.71821e-19) +(4.73322 -0.243983 0) +(4.75031 -0.253094 0) +(4.76692 -0.262331 0) +(4.78304 -0.271683 1.7299e-21) +(4.79867 -0.281138 0) +(4.81381 -0.290686 1.97457e-19) +(4.82848 -0.300315 1.91236e-19) +(4.84267 -0.310013 0) +(4.8564 -0.319767 1.80422e-19) +(4.86967 -0.329564 -1.74218e-19) +(4.88248 -0.339391 -1.51793e-21) +(4.89484 -0.349235 0) +(4.90676 -0.35908 -1.54278e-19) +(4.91823 -0.368912 -1.49613e-19) +(4.92927 -0.378717 1.43523e-19) +(4.93988 -0.38848 -1.3487e-21) +(4.95007 -0.398185 0) +(4.95983 -0.407821 -1.24152e-19) +(4.96918 -0.41737 0) +(4.97811 -0.426815 -1.12315e-19) +(4.98665 -0.436143 -2.1407e-19) +(4.99479 -0.445337 0) +(5.00253 -0.454384 -9.70312e-20) +(5.00989 -0.46327 0) +(5.01687 -0.471978 0) +(5.02347 -0.480493 -7.96758e-20) +(5.0297 -0.488805 7.20436e-20) +(5.03557 -0.4969 1.34775e-19) +(5.04107 -0.504761 1.23622e-19) +(5.04621 -0.512377 -1.12562e-19) +(5.051 -0.519736 0) +(5.05544 -0.526827 0) +(5.05954 -0.533636 7.99656e-20) +(5.06331 -0.540154 0) +(5.06674 -0.54637 0) +(5.06984 -0.552274 -4.82978e-20) +(5.07262 -0.557858 0) +(5.07509 -0.563114 0) +(5.07725 -0.568029 -1.76245e-20) +(5.0791 -0.572591 0) +(5.08064 -0.576792 0) +(5.08189 -0.580631 0) +(5.08286 -0.584107 -2.16204e-20) +(5.08355 -0.587218 -3.11137e-20) +(5.08397 -0.589961 0) +(5.08413 -0.592334 -1.0018e-19) +(5.08403 -0.594334 -1.18324e-19) +(5.08368 -0.595962 -6.77652e-20) +(5.08308 -0.597218 0) +(5.08226 -0.598101 0) +(5.08122 -0.598615 -1.88184e-19) +(5.07997 -0.59876 0) +(5.07853 -0.598539 1.10494e-19) +(5.0769 -0.597957 -1.19022e-19) +(5.07509 -0.597019 0) +(5.07313 -0.595737 0) +(5.07102 -0.59412 1.42348e-19) +(5.06878 -0.592184 -1.49541e-19) +(5.06642 -0.589941 -1.56885e-19) +(5.06396 -0.587403 1.64289e-19) +(5.06142 -0.584585 0) +(5.05881 -0.581503 0) +(5.05615 -0.578174 3.6951e-19) +(5.05346 -0.574616 -1.91361e-19) +(5.05076 -0.570849 1.97737e-19) +(5.04808 -0.566893 -2.0386e-19) +(5.04543 -0.56277 2.10019e-19) +(5.04284 -0.558503 2.15925e-19) +(5.04033 -0.554115 0) +(5.03794 -0.549632 0) +(5.03568 -0.545082 -4.65321e-19) +(5.03359 -0.540495 7.13898e-19) +(5.0317 -0.5359 -4.86161e-19) +(5.03005 -0.531322 0) +(5.02868 -0.526794 7.58669e-19) +(5.02762 -0.522355 2.57589e-19) +(5.02692 -0.518045 5.24067e-19) +(5.02663 -0.5139 0) +(5.02681 -0.509961 -8.11781e-19) +(5.02751 -0.506266 0) +(5.02881 -0.502849 0) +(5.03078 -0.499738 5.64352e-19) +(5.03353 -0.496953 0) +(5.03715 -0.494504 0) +(5.04175 -0.492395 0) +(5.04747 -0.490623 -5.91049e-19) +(5.05445 -0.489169 -5.96299e-19) +(5.06287 -0.487996 -6.01503e-19) +(5.07291 -0.487056 6.06226e-19) +(5.08485 -0.486257 0) +(5.0986 -0.485608 -6.13996e-19) +(5.11569 -0.484568 0) +(5.13175 -0.4845 -1.23491e-18) +(-0.0514908 0.614915 0) +(-0.143906 0.612848 -1.15031e-18) +(-0.164397 0.571138 -5.71874e-19) +(-0.13928 0.529244 -6.02242e-19) +(-0.0618436 0.488127 -6.42544e-19) +(0.0602398 0.447034 6.07778e-19) +(0.231804 0.401593 1.00092e-18) +(0.428858 0.354857 1.23234e-18) +(0.641684 0.310548 0) +(0.859005 0.268922 0) +(1.07345 0.231399 -2.47978e-19) +(1.27994 0.19813 2.21328e-19) +(1.47525 0.1678 0) +(1.65708 0.140979 1.75336e-19) +(1.82627 0.118212 3.25394e-19) +(1.98358 0.0989014 0) +(2.12941 0.0826671 0) +(2.2652 0.0691551 2.66341e-19) +(2.3921 0.0577463 0) +(2.5112 0.0478374 0) +(2.6233 0.0390866 2.29591e-19) +(2.7291 0.0313015 0) +(2.82924 0.0242659 0) +(2.92419 0.0179258 2.02474e-19) +(3.01435 0.0121985 1.39277e-21) +(3.10002 0.00695444 0) +(3.18152 0.00216208 0) +(3.25915 -0.00220873 0) +(3.33325 -0.00620256 1.74356e-19) +(3.40409 -0.00986448 0) +(3.47194 -0.0132429 0) +(3.53701 -0.0163836 0) +(3.59947 -0.0193237 0) +(3.65949 -0.0220956 0) +(3.71723 -0.024721 0) +(3.77282 -0.0272258 -1.46942e-19) +(3.82643 -0.0296355 0) +(3.87816 -0.0319619 0) +(3.92815 -0.0342235 0) +(3.97648 -0.0364366 -2.7366e-19) +(4.02325 -0.0386146 0) +(4.06854 -0.0407694 0) +(4.11242 -0.0429115 0) +(4.15496 -0.04505 3.82451e-19) +(4.19624 -0.0471959 2.51283e-19) +(4.23631 -0.0493596 1.24273e-19) +(4.27523 -0.0515514 0) +(4.31305 -0.0537811 -2.39513e-19) +(4.34983 -0.0560585 2.35808e-19) +(4.38561 -0.058393 1.15508e-19) +(4.42043 -0.0607939 0) +(4.45434 -0.0632699 3.37314e-19) +(4.48738 -0.0658299 0) +(4.51959 -0.0684827 -2.18613e-19) +(4.55099 -0.0712376 3.22518e-19) +(4.58163 -0.0741036 0) +(4.61152 -0.0770894 0) +(4.64072 -0.0802026 0) +(4.66922 -0.0834508 -1.06992e-21) +(4.69707 -0.0868429 0) +(4.72428 -0.0903862 0) +(4.75088 -0.0940869 0) +(4.77687 -0.0979511 1.04237e-21) +(4.80227 -0.101985 0) +(4.82711 -0.106195 1.85166e-19) +(4.85139 -0.110586 -1.82255e-19) +(4.87512 -0.115165 1.02349e-21) +(4.89832 -0.119936 0) +(4.921 -0.124904 0) +(4.94318 -0.13007 0) +(4.96484 -0.13544 0) +(4.98602 -0.141014 0) +(5.00671 -0.146796 -1.61891e-19) +(5.02693 -0.152786 0) +(5.04667 -0.158987 -1.55026e-19) +(5.06594 -0.165395 -3.05134e-19) +(5.08474 -0.172011 1.4911e-19) +(5.10308 -0.178832 1.46131e-19) +(5.12097 -0.185856 -1.44109e-19) +(5.1384 -0.193082 -1.40135e-19) +(5.1554 -0.200504 1.3903e-19) +(5.17195 -0.208119 0) +(5.18806 -0.21592 -3.95013e-19) +(5.20374 -0.223902 0) +(5.21898 -0.232057 2.51699e-19) +(5.23378 -0.24038 3.67382e-19) +(5.24816 -0.24886 2.39347e-19) +(5.2621 -0.257489 0) +(5.2756 -0.266256 0) +(5.28868 -0.275154 0) +(5.30133 -0.284172 3.20843e-19) +(5.31355 -0.293299 -1.03268e-19) +(5.32534 -0.302522 -2.01994e-19) +(5.3367 -0.311831 -9.86985e-20) +(5.34764 -0.321213 0) +(5.35816 -0.330655 -9.08482e-20) +(5.36826 -0.340146 0) +(5.37795 -0.349672 -1.70832e-19) +(5.38722 -0.359218 0) +(5.39608 -0.368771 7.99442e-20) +(5.40454 -0.378314 0) +(5.41259 -0.387834 7.23387e-20) +(5.42024 -0.397316 -2.09216e-19) +(5.4275 -0.406746 1.32479e-19) +(5.43436 -0.416111 1.27713e-19) +(5.44082 -0.425393 0) +(5.44689 -0.434576 1.15598e-19) +(5.45257 -0.443646 1.19563e-21) +(5.45787 -0.452586 -1.02441e-19) +(5.46278 -0.461383 -9.76547e-20) +(5.4673 -0.470024 0) +(5.47145 -0.478492 8.48126e-20) +(5.47522 -0.486771 -8.00344e-20) +(5.47862 -0.494848 -7.42408e-20) +(5.48165 -0.50271 0) +(5.48431 -0.510343 0) +(5.4866 -0.517735 -5.62402e-20) +(5.48854 -0.524874 -5.06615e-20) +(5.49011 -0.531747 0) +(5.49133 -0.538343 -3.96512e-20) +(5.49221 -0.544652 3.42224e-20) +(5.49273 -0.550661 2.88471e-20) +(5.49291 -0.556363 0) +(5.49275 -0.561749 0) +(5.49227 -0.566807 0) +(5.49144 -0.571528 0) +(5.49028 -0.575899 0) +(5.48881 -0.579916 -2.22302e-21) +(5.48703 -0.583576 -7.19075e-21) +(5.48494 -0.586879 0) +(5.48256 -0.589819 0) +(5.47989 -0.592397 0) +(5.47693 -0.594608 2.56326e-20) +(5.47369 -0.596453 6.13688e-20) +(5.47018 -0.59793 0) +(5.46641 -0.59904 0) +(5.4624 -0.599784 -4.45455e-20) +(5.45814 -0.600164 9.72727e-20) +(5.45366 -0.600182 0) +(5.44897 -0.599841 0) +(5.44408 -0.599144 1.22677e-19) +(5.439 -0.598099 0) +(5.43374 -0.596717 0) +(5.42833 -0.595009 -2.20179e-19) +(5.42278 -0.592989 7.73188e-20) +(5.4171 -0.59067 0) +(5.41131 -0.588065 -8.45183e-20) +(5.40544 -0.585188 -8.83145e-20) +(5.39949 -0.582056 0) +(5.39349 -0.578688 -1.90344e-19) +(5.38746 -0.5751 1.97048e-19) +(5.38141 -0.571314 -4.0728e-19) +(5.37538 -0.567349 -2.10053e-19) +(5.36939 -0.56323 -2.16175e-19) +(5.36346 -0.558977 6.78405e-23) +(5.35762 -0.554617 0) +(5.35189 -0.550173 0) +(5.3463 -0.545677 0) +(5.34089 -0.54116 -2.44799e-19) +(5.3357 -0.536651 0) +(5.33075 -0.532174 0) +(5.32608 -0.527765 -2.60028e-19) +(5.32175 -0.523467 -5.29622e-19) +(5.3178 -0.519319 0) +(5.31428 -0.515359 2.73883e-19) +(5.31124 -0.511632 -9.73427e-23) +(5.30875 -0.50818 0) +(5.3069 -0.505041 2.86247e-19) +(5.30576 -0.502246 -2.90047e-19) +(5.30543 -0.499821 0) +(5.30601 -0.497779 0) +(5.30763 -0.496132 0) +(5.31042 -0.494885 6.06556e-19) +(5.31453 -0.494029 0) +(5.32016 -0.493534 0) +(5.32749 -0.49336 0) +(5.33678 -0.49342 0) +(5.34803 -0.493734 0) +(5.36243 -0.493747 0) +(5.37684 -0.494854 9.50754e-19) +(-0.224657 0.754484 0) +(-0.186872 0.551235 3.24237e-19) +(0.150873 0.445471 3.16852e-19) +(0.497702 0.386686 7.00677e-19) +(0.863994 0.322694 3.60265e-19) +(1.22162 0.25982 -2.90153e-19) +(1.56796 0.201057 1.18103e-19) +(1.87851 0.148658 -1.0522e-19) +(2.15654 0.105345 9.01422e-20) +(2.40223 0.0705916 0) +(2.61901 0.0436333 1.51553e-19) +(2.80988 0.0236217 1.40698e-19) +(2.97881 0.00878689 0) +(3.12978 -0.00238883 -1.49306e-21) +(3.2659 -0.0108852 1.17583e-19) +(3.38953 -0.0178295 0) +(3.50287 -0.0236657 0) +(3.60737 -0.0286542 0) +(3.70415 -0.0330411 0) +(3.79402 -0.0369585 -9.73715e-20) +(3.87774 -0.0404274 -9.4462e-20) +(3.95599 -0.0434601 0) +(4.02944 -0.0461381 0) +(4.09865 -0.0485234 -8.83878e-20) +(4.16399 -0.0506438 8.61793e-20) +(4.22582 -0.0525439 0) +(4.28444 -0.0542559 0) +(4.34011 -0.0558097 0) +(4.3931 -0.0572326 0) +(4.44363 -0.0585438 0) +(4.49192 -0.0597624 0) +(4.53816 -0.0609073 0) +(4.58253 -0.0619953 0) +(4.62515 -0.0630428 0) +(4.66615 -0.0640634 0) +(4.70565 -0.0650734 2.05565e-19) +(4.74373 -0.0660853 0) +(4.78051 -0.0671061 0) +(4.81605 -0.0681439 -6.50923e-20) +(4.85044 -0.069206 0) +(4.88374 -0.070296 0) +(4.91602 -0.0714205 0) +(4.94731 -0.0725854 0) +(4.97768 -0.0737961 -6.11225e-20) +(5.00717 -0.0750633 -5.96798e-20) +(5.03583 -0.0763934 1.18319e-19) +(5.0637 -0.077793 0) +(5.09082 -0.0792696 0) +(5.11723 -0.0808302 0) +(5.14296 -0.0824821 -1.1215e-19) +(5.16806 -0.0842322 0) +(5.19254 -0.0860876 -1.09243e-19) +(5.21643 -0.0880551 0) +(5.23977 -0.0901417 -5.29532e-20) +(5.26258 -0.0923549 -1.0504e-19) +(5.28487 -0.0947022 0) +(5.30667 -0.0971903 1.01811e-19) +(5.32801 -0.0998253 0) +(5.34888 -0.102613 -1.99262e-19) +(5.36931 -0.10556 9.78081e-20) +(5.38931 -0.108672 0) +(5.4089 -0.111955 0) +(5.42807 -0.115414 1.88675e-19) +(5.44684 -0.119055 0) +(5.46521 -0.122883 -9.1219e-20) +(5.4832 -0.126902 -8.99e-20) +(5.5008 -0.131118 2.66694e-19) +(5.51803 -0.135535 8.72499e-20) +(5.53489 -0.140156 0) +(5.55139 -0.144984 8.45761e-20) +(5.56754 -0.150022 0) +(5.58333 -0.155271 0) +(5.59878 -0.160734 8.05035e-20) +(5.61387 -0.166412 -7.91263e-20) +(5.62863 -0.172303 1.56424e-19) +(5.64303 -0.178407 1.53623e-19) +(5.6571 -0.184723 -2.25732e-19) +(5.67081 -0.191248 -1.47958e-19) +(5.68419 -0.197981 0) +(5.69721 -0.204919 1.42199e-19) +(5.70989 -0.212058 7.01053e-20) +(5.72222 -0.219391 -6.77124e-20) +(5.73421 -0.226914 6.71512e-20) +(5.74585 -0.234619 0) +(5.75713 -0.2425 0) +(5.76806 -0.250549 -1.86126e-19) +(5.77863 -0.258757 0) +(5.78883 -0.267116 0) +(5.79868 -0.275616 0) +(5.80816 -0.284248 -5.56366e-20) +(5.81728 -0.293 -1.09038e-19) +(5.82603 -0.301863 1.05932e-19) +(5.83442 -0.310825 -5.09944e-20) +(5.84244 -0.319875 -1.49134e-19) +(5.85009 -0.329001 0) +(5.85737 -0.338191 9.34336e-20) +(5.86428 -0.347431 0) +(5.87081 -0.356708 0) +(5.87698 -0.366008 0) +(5.88277 -0.375317 8.08872e-20) +(5.88819 -0.38462 3.85176e-20) +(5.89324 -0.393902 -7.46257e-20) +(5.89792 -0.403149 7.15029e-20) +(5.90222 -0.412346 -1.36775e-19) +(5.90615 -0.421478 0) +(5.90971 -0.430529 6.15445e-20) +(5.91289 -0.439483 0) +(5.9157 -0.448326 1.12048e-19) +(5.91813 -0.457041 1.58306e-19) +(5.92019 -0.465616 0) +(5.92187 -0.474037 0) +(5.92318 -0.482286 -4.44171e-20) +(5.92412 -0.490349 -4.03704e-20) +(5.92468 -0.498213 0) +(5.92488 -0.505863 0) +(5.9247 -0.513287 -3.15662e-20) +(5.92416 -0.52047 5.82464e-20) +(5.92324 -0.527404 7.82821e-20) +(5.92197 -0.534075 0) +(5.92033 -0.540471 4.10801e-20) +(5.91833 -0.546582 -3.54591e-20) +(5.91597 -0.552397 -2.98922e-20) +(5.91326 -0.557907 1.18434e-20) +(5.9102 -0.563102 0) +(5.90678 -0.567973 0) +(5.90301 -0.572508 0) +(5.8989 -0.576697 0) +(5.89447 -0.580538 3.72301e-21) +(5.8897 -0.584028 7.45381e-21) +(5.88462 -0.587164 0) +(5.87922 -0.589941 -8.9984e-21) +(5.87352 -0.59236 0) +(5.86751 -0.594416 4.12593e-20) +(5.86121 -0.596111 0) +(5.85462 -0.597443 -1.86276e-20) +(5.84776 -0.598413 0) +(5.84063 -0.599023 4.61712e-20) +(5.83325 -0.599275 2.5476e-20) +(5.82563 -0.599173 0) +(5.81778 -0.598718 0) +(5.80972 -0.597915 0) +(5.80146 -0.59677 -3.40816e-20) +(5.79302 -0.595295 0) +(5.78441 -0.593504 3.79988e-20) +(5.77566 -0.591409 -1.20209e-19) +(5.76678 -0.589023 4.20402e-20) +(5.75778 -0.58636 -8.77545e-20) +(5.74869 -0.583435 9.14565e-20) +(5.73952 -0.580263 -9.51468e-20) +(5.7303 -0.576865 0) +(5.72104 -0.573259 0) +(5.71178 -0.569465 2.10821e-19) +(5.70253 -0.565504 2.17371e-19) +(5.69332 -0.561399 1.11908e-19) +(5.68417 -0.557173 -2.2996e-19) +(5.67512 -0.552851 0) +(5.66618 -0.548461 0) +(5.65739 -0.544031 0) +(5.64879 -0.539597 0) +(5.6404 -0.535187 -1.29264e-19) +(5.63227 -0.530826 0) +(5.62443 -0.526552 0) +(5.61694 -0.522411 4.10391e-19) +(5.60984 -0.518442 0) +(5.60319 -0.514687 -2.82799e-19) +(5.59704 -0.511191 2.8716e-19) +(5.59147 -0.508004 0) +(5.58655 -0.505165 -2.9538e-19) +(5.58238 -0.502712 2.99238e-19) +(5.57905 -0.500674 1.51565e-19) +(5.57668 -0.499069 1.53335e-19) +(5.57539 -0.497915 0) +(5.57531 -0.497228 -1.56584e-19) +(5.57663 -0.497008 0) +(5.57952 -0.497231 -1.59398e-19) +(5.58418 -0.497867 0) +(5.59086 -0.498832 0) +(5.59966 -0.500155 0) +(5.61141 -0.501281 -1.63385e-19) +(5.62427 -0.503578 -3.26684e-19) +(1.0898 0.411293 0) +(1.79873 0.248288 -1.49831e-19) +(2.43301 0.108516 1.14037e-19) +(2.96733 0.0240988 -9.40249e-20) +(3.39042 -0.0278407 0) +(3.72246 -0.0603802 0) +(3.98241 -0.0793125 -6.72405e-20) +(4.18757 -0.0891228 -6.31501e-20) +(4.3527 -0.0911916 -5.98467e-20) +(4.48704 -0.0908211 0) +(4.59919 -0.0893798 0) +(4.69553 -0.0878544 0) +(4.77969 -0.0867971 0) +(4.85492 -0.0863243 -9.93266e-20) +(4.92253 -0.0861647 -9.66174e-20) +(4.98385 -0.0861521 0) +(5.03998 -0.086186 0) +(5.09177 -0.0862071 0) +(5.13987 -0.0862528 0) +(5.18472 -0.0863225 8.58102e-20) +(5.22667 -0.0863743 8.40462e-20) +(5.266 -0.0863971 0) +(5.30298 -0.0864135 0) +(5.33787 -0.0864197 -7.93093e-20) +(5.37088 -0.0864 7.78904e-20) +(5.40222 -0.0863627 0) +(5.43207 -0.0863194 0) +(5.46057 -0.0862802 0) +(5.48785 -0.0862549 0) +(5.51402 -0.086249 0) +(5.53918 -0.0862675 0) +(5.56343 -0.0863149 0) +(5.58684 -0.0863947 0) +(5.60947 -0.0865109 0) +(5.6314 -0.0866673 0) +(5.65266 -0.0868711 -6.5787e-20) +(5.6733 -0.0871272 0) +(5.69335 -0.0874417 0) +(5.71284 -0.0878186 6.32358e-20) +(5.73182 -0.0882579 0) +(5.7503 -0.0887581 0) +(5.76832 -0.089324 0) +(5.78589 -0.0899611 0) +(5.80305 -0.0906731 -5.94363e-20) +(5.8198 -0.0914669 5.87301e-20) +(5.83618 -0.0923478 0) +(5.85222 -0.0933221 0) +(5.86792 -0.094396 0) +(5.88331 -0.0955748 0) +(5.89841 -0.0968643 0) +(5.91323 -0.0982701 0) +(5.92779 -0.0997975 0) +(5.9421 -0.101452 0) +(5.95617 -0.10324 5.28809e-20) +(5.97001 -0.105167 0) +(5.98363 -0.10724 0) +(5.99703 -0.109464 -1.02096e-19) +(6.01023 -0.111844 0) +(6.02322 -0.114383 0) +(6.036 -0.117088 -9.84715e-20) +(6.04858 -0.119965 0) +(6.06096 -0.123018 0) +(6.07315 -0.126251 0) +(6.08513 -0.129671 0) +(6.09691 -0.133281 9.24232e-20) +(6.1085 -0.137088 9.12005e-20) +(6.1199 -0.141094 -8.99704e-20) +(6.1311 -0.145306 -8.87317e-20) +(6.1421 -0.149725 0) +(6.1529 -0.154355 -8.62237e-20) +(6.16351 -0.159197 0) +(6.17392 -0.164253 0) +(6.18413 -0.169524 -8.23696e-20) +(6.19413 -0.175011 8.1057e-20) +(6.20392 -0.180711 0) +(6.2135 -0.186624 0) +(6.22286 -0.192749 7.70276e-20) +(6.23201 -0.199083 0) +(6.24092 -0.205626 0) +(6.2496 -0.212373 0) +(6.25804 -0.21932 7.14341e-20) +(6.26623 -0.226462 6.99959e-20) +(6.27416 -0.233792 6.85424e-20) +(6.28184 -0.241303 0) +(6.28924 -0.248989 0) +(6.29637 -0.256841 6.40947e-20) +(6.30322 -0.264852 0) +(6.30978 -0.273012 0) +(6.31604 -0.281313 0) +(6.32201 -0.289745 5.79839e-20) +(6.32767 -0.298298 0) +(6.33303 -0.306962 0) +(6.33807 -0.315726 5.3291e-20) +(6.34281 -0.324576 5.17102e-20) +(6.34723 -0.333503 0) +(6.35132 -0.342492 0) +(6.3551 -0.351532 0) +(6.35854 -0.360609 0) +(6.36165 -0.36971 0) +(6.36443 -0.378819 0) +(6.36687 -0.387922 -4.0503e-20) +(6.36896 -0.397006 0) +(6.37071 -0.406054 0) +(6.37211 -0.415051 0) +(6.37316 -0.423984 0) +(6.37386 -0.432837 -6.49197e-20) +(6.37419 -0.441592 0) +(6.37417 -0.450237 0) +(6.37379 -0.458755 -5.53387e-20) +(6.37304 -0.467132 0) +(6.37192 -0.475355 0) +(6.37043 -0.483408 -4.58626e-20) +(6.36858 -0.491276 4.27337e-20) +(6.36635 -0.498945 0) +(6.36375 -0.506401 0) +(6.36078 -0.513632 3.34553e-20) +(6.35744 -0.520624 0) +(6.35373 -0.527368 -2.73711e-20) +(6.34965 -0.53385 0) +(6.34519 -0.540059 0) +(6.34037 -0.545985 0) +(6.33518 -0.551616 0) +(6.32963 -0.556942 -1.25811e-20) +(6.3237 -0.561957 0) +(6.31741 -0.566648 0) +(6.31076 -0.571006 0) +(6.30377 -0.575025 0) +(6.29643 -0.578699 -1.50906e-21) +(6.28875 -0.582025 0) +(6.28074 -0.585 0) +(6.2724 -0.587622 9.57752e-21) +(6.26373 -0.589887 0) +(6.25475 -0.591796 -1.47817e-20) +(6.24547 -0.593346 0) +(6.23588 -0.594539 1.98403e-20) +(6.22601 -0.595375 0) +(6.21585 -0.595857 0) +(6.20544 -0.595988 -2.71461e-20) +(6.19477 -0.59577 0) +(6.18386 -0.595208 0) +(6.17273 -0.594306 0) +(6.1614 -0.593069 3.63315e-20) +(6.14988 -0.59151 0) +(6.13819 -0.589643 4.06672e-20) +(6.12635 -0.587481 4.27689e-20) +(6.11437 -0.585038 -4.48263e-20) +(6.10228 -0.582326 0) +(6.09009 -0.579359 0) +(6.07782 -0.576157 1.0146e-19) +(6.0655 -0.572739 0) +(6.05315 -0.569124 0) +(6.04079 -0.565333 0) +(6.02845 -0.561386 0) +(6.01615 -0.557306 -1.19325e-19) +(6.00392 -0.553117 0) +(5.99178 -0.548845 0) +(5.97976 -0.544517 0) +(5.96789 -0.540164 0) +(5.95621 -0.535824 0) +(5.94476 -0.531526 1.37789e-19) +(5.93356 -0.527292 0) +(5.92266 -0.523166 0) +(5.91212 -0.519196 -1.45806e-19) +(5.90198 -0.515422 0) +(5.89231 -0.511886 0) +(5.88315 -0.508639 0) +(5.87459 -0.505735 0) +(5.86671 -0.503218 0) +(5.8596 -0.501127 0) +(5.85337 -0.4995 -1.61399e-19) +(5.84812 -0.498358 -1.63264e-19) +(5.84398 -0.497725 0) +(5.84111 -0.49763 1.66681e-19) +(5.83968 -0.49808 0) +(5.83988 -0.49906 1.69634e-19) +(5.84192 -0.500546 0) +(5.84604 -0.502461 0) +(5.85242 -0.504836 0) +(5.86156 -0.50714 1.73808e-19) +(5.87293 -0.510633 0) +(7.69849 -0.0827691 1.01279e-19) +(7.56873 -0.112381 0) +(7.43317 -0.123582 9.65528e-20) +(7.29617 -0.127001 9.66721e-20) +(7.16113 -0.125904 -9.62049e-20) +(7.04173 -0.122642 0) +(6.94072 -0.118331 -9.46694e-20) +(6.86217 -0.114455 -9.39309e-20) +(6.80041 -0.111692 9.28625e-20) +(6.75297 -0.11003 9.17975e-20) +(6.71653 -0.108455 0) +(6.6885 -0.106944 8.93345e-20) +(6.6668 -0.105548 0) +(6.64997 -0.104264 0) +(6.63656 -0.1031 0) +(6.62587 -0.102043 -8.4168e-20) +(6.61711 -0.101074 8.28982e-20) +(6.61008 -0.100155 0) +(6.60435 -0.0993192 0) +(6.59968 -0.0985751 0) +(6.59598 -0.0978977 0) +(6.59308 -0.0972707 0) +(6.59087 -0.0967032 0) +(6.58927 -0.0961999 0) +(6.58825 -0.0957518 0) +(6.58776 -0.0953536 0) +(6.58778 -0.0950017 -7.16417e-20) +(6.58826 -0.0946927 7.06736e-20) +(6.58916 -0.0944263 0) +(6.59044 -0.0942023 0) +(6.59206 -0.0940221 -6.79132e-20) +(6.59399 -0.0938871 0) +(6.5962 -0.0937992 0) +(6.59867 -0.0937598 0) +(6.60138 -0.0937712 -6.45424e-20) +(6.60431 -0.0938365 0) +(6.60744 -0.0939571 0) +(6.61074 -0.0941443 0) +(6.6142 -0.0943954 1.22972e-19) +(6.61779 -0.0947141 0) +(6.62151 -0.0950982 0) +(6.62534 -0.0955514 0) +(6.6293 -0.0960847 0) +(6.63337 -0.0967004 0) +(6.63756 -0.0974074 1.14787e-19) +(6.64187 -0.0982078 1.13511e-19) +(6.64629 -0.0991074 0) +(6.65082 -0.100112 0) +(6.65545 -0.101225 0) +(6.66019 -0.102454 0) +(6.66502 -0.103802 0) +(6.66995 -0.105274 0) +(6.67497 -0.106876 0) +(6.68006 -0.108611 0) +(6.68523 -0.110488 0) +(6.69048 -0.112511 0) +(6.69578 -0.114684 0) +(6.70113 -0.117012 9.92363e-20) +(6.70653 -0.119496 0) +(6.71196 -0.122144 -9.69447e-20) +(6.71742 -0.124964 0) +(6.7229 -0.127957 0) +(6.72839 -0.13113 0) +(6.7339 -0.134488 0) +(6.7394 -0.138036 -9.11924e-20) +(6.74491 -0.141779 0) +(6.75042 -0.145722 0) +(6.75591 -0.149866 0) +(6.76138 -0.154217 0) +(6.76683 -0.158776 0) +(6.77224 -0.163545 0) +(6.7776 -0.168525 0) +(6.78291 -0.173717 0) +(6.78816 -0.17912 -8.03273e-20) +(6.79333 -0.184734 -7.90528e-20) +(6.79842 -0.190558 0) +(6.80341 -0.19659 0) +(6.80829 -0.202828 7.51305e-20) +(6.81306 -0.209269 0) +(6.81771 -0.215909 0) +(6.82221 -0.222744 0) +(6.82656 -0.229769 0) +(6.83074 -0.236977 0) +(6.83475 -0.244362 -1.33658e-19) +(6.83857 -0.251917 -1.30775e-19) +(6.84219 -0.259634 -1.27862e-19) +(6.84559 -0.267506 0) +(6.84878 -0.275523 0) +(6.85174 -0.283678 0) +(6.85447 -0.291961 -1.15923e-19) +(6.85695 -0.300363 0) +(6.85918 -0.308874 1.09799e-19) +(6.86116 -0.317481 0) +(6.86287 -0.326175 0) +(6.86432 -0.334941 -1.00452e-19) +(6.86548 -0.343768 0) +(6.86637 -0.352643 0) +(6.86696 -0.361553 0) +(6.86725 -0.370483 0) +(6.86724 -0.37942 0) +(6.86692 -0.38835 0) +(6.86627 -0.397257 0) +(6.86531 -0.406127 -7.49148e-20) +(6.86401 -0.414945 0) +(6.86237 -0.423696 0) +(6.86039 -0.432364 0) +(6.85807 -0.440935 -6.20293e-20) +(6.85539 -0.449393 0) +(6.85235 -0.457723 5.56078e-20) +(6.84895 -0.465912 0) +(6.84519 -0.473944 0) +(6.84105 -0.481806 0) +(6.83654 -0.489483 4.28753e-20) +(6.83166 -0.496959 -3.97246e-20) +(6.8264 -0.504224 0) +(6.82076 -0.511263 0) +(6.81474 -0.518063 0) +(6.80834 -0.524615 0) +(6.80155 -0.530906 0) +(6.79439 -0.536924 0) +(6.78683 -0.542658 0) +(6.7789 -0.548099 0) +(6.77058 -0.553239 0) +(6.76187 -0.558065 0) +(6.7528 -0.56257 -1.27807e-20) +(6.74335 -0.566747 7.02553e-21) +(6.73354 -0.570587 0) +(6.72336 -0.574086 0) +(6.71283 -0.577241 0) +(6.70195 -0.580049 1.53703e-20) +(6.69072 -0.582506 0) +(6.67915 -0.584611 0) +(6.66725 -0.586363 3.14532e-20) +(6.65502 -0.587762 3.66692e-20) +(6.64249 -0.588808 0) +(6.62964 -0.589502 0) +(6.61651 -0.589849 0) +(6.60309 -0.589852 -5.6774e-20) +(6.58941 -0.589515 6.16042e-20) +(6.57548 -0.588842 0) +(6.56132 -0.587836 -7.1016e-20) +(6.54695 -0.586504 0) +(6.53238 -0.58486 0) +(6.51763 -0.582917 0) +(6.50273 -0.58069 -8.87722e-20) +(6.48769 -0.57819 0) +(6.47253 -0.575431 0) +(6.45727 -0.572427 0) +(6.44193 -0.569199 0) +(6.42653 -0.565767 0) +(6.41111 -0.562151 0) +(6.39567 -0.558371 0) +(6.38026 -0.554447 0) +(6.36488 -0.550402 0) +(6.34958 -0.546261 -1.26703e-19) +(6.33436 -0.54205 0) +(6.31926 -0.537798 -1.33168e-19) +(6.30432 -0.533539 1.36262e-19) +(6.28956 -0.529308 0) +(6.27502 -0.525137 1.42168e-19) +(6.26074 -0.52105 0) +(6.24676 -0.517093 1.47695e-19) +(6.23314 -0.513323 0) +(6.21994 -0.509774 -1.52866e-19) +(6.20721 -0.50649 0) +(6.19501 -0.503529 0) +(6.18342 -0.500951 -1.59932e-19) +(6.17252 -0.498803 -1.62104e-19) +(6.16241 -0.497127 0) +(6.1532 -0.495973 -3.32333e-19) +(6.145 -0.49536 0) +(6.13794 -0.495324 3.3966e-19) +(6.13218 -0.495907 0) +(6.12791 -0.497127 0) +(6.12531 -0.498973 0) +(6.12463 -0.501432 0) +(6.12607 -0.504437 0) +(6.12992 -0.508012 0) +(6.13631 -0.511682 0) +(6.14621 -0.516493 -3.57342e-19) +(9.31137 0.0186444 7.46924e-20) +(9.27051 0.0236539 1.50248e-19) +(9.22146 0.0287058 -7.46269e-20) +(9.16291 0.0253707 -7.58053e-20) +(9.09283 0.0173112 2.28905e-19) +(9.01446 0.00772548 0) +(8.93078 -0.00252648 -7.59777e-20) +(8.84431 -0.0131867 2.29295e-19) +(8.75624 -0.0232494 -7.66216e-20) +(8.66928 -0.0322151 7.53463e-20) +(8.58472 -0.039964 0) +(8.50356 -0.0466441 -7.56698e-20) +(8.42669 -0.0524394 0) +(8.35436 -0.0574958 1.48456e-19) +(8.28668 -0.0618144 0) +(8.22369 -0.0654858 7.36253e-20) +(8.16533 -0.0685874 -7.30334e-20) +(8.11131 -0.0711865 0) +(8.0614 -0.0734609 0) +(8.01527 -0.0753853 1.41342e-19) +(7.9726 -0.0769916 0) +(7.9331 -0.0783674 0) +(7.89654 -0.0795317 0) +(7.86263 -0.0804962 -1.36105e-19) +(7.83111 -0.0813016 0) +(7.80174 -0.0819856 0) +(7.77435 -0.0825787 6.6418e-20) +(7.74875 -0.0831041 6.50883e-20) +(7.72482 -0.0835813 0) +(7.7024 -0.0840266 0) +(7.68141 -0.0844541 6.37912e-20) +(7.66173 -0.0848756 0) +(7.64329 -0.0853015 -1.24469e-19) +(7.62598 -0.08574 0) +(7.60977 -0.0861976 6.12856e-20) +(7.59455 -0.0866807 -1.20834e-19) +(7.58029 -0.0871861 -2.39313e-19) +(7.5669 -0.0877207 0) +(7.55432 -0.0882954 -1.17865e-19) +(7.54248 -0.0889252 2.32523e-19) +(7.53141 -0.0896147 0) +(7.52104 -0.090369 0) +(7.51136 -0.0911914 0) +(7.50233 -0.0920849 0) +(7.49392 -0.093056 -1.11377e-19) +(7.4861 -0.0941099 -3.30111e-19) +(7.47885 -0.0952518 -2.1772e-19) +(7.47213 -0.0964869 0) +(7.46592 -0.0978204 0) +(7.4602 -0.0992576 0) +(7.45494 -0.100804 0) +(7.45011 -0.102464 0) +(7.4457 -0.104244 0) +(7.44169 -0.106148 0) +(7.43805 -0.108183 0) +(7.43477 -0.110354 0) +(7.43181 -0.112666 0) +(7.42916 -0.115122 -9.83268e-20) +(7.4268 -0.117724 0) +(7.42472 -0.120485 -9.54434e-20) +(7.4229 -0.12341 0) +(7.42133 -0.126503 0) +(7.42001 -0.12977 0) +(7.41891 -0.133217 0) +(7.41804 -0.136848 9.12997e-20) +(7.41737 -0.140668 0) +(7.41689 -0.144681 1.77508e-19) +(7.41658 -0.148889 0) +(7.41644 -0.153295 1.73234e-19) +(7.41645 -0.157903 0) +(7.41658 -0.162712 0) +(7.41683 -0.167725 0) +(7.41717 -0.172941 0) +(7.41759 -0.178361 2.43474e-19) +(7.41808 -0.183983 2.3994e-19) +(7.41861 -0.189807 0) +(7.41918 -0.195831 1.54798e-19) +(7.41975 -0.202052 -7.66542e-20) +(7.42032 -0.208469 0) +(7.42087 -0.215076 0) +(7.42138 -0.221868 -2.89255e-19) +(7.42183 -0.228841 2.83961e-19) +(7.42221 -0.235989 0) +(7.42249 -0.243306 1.37559e-19) +(7.42266 -0.250785 1.34787e-19) +(7.42271 -0.25842 1.31974e-19) +(7.42263 -0.266202 0) +(7.4224 -0.274124 0) +(7.42202 -0.282178 0) +(7.42146 -0.290355 3.59039e-19) +(7.42072 -0.298646 0) +(7.4198 -0.30704 -3.40937e-19) +(7.41867 -0.315528 0) +(7.41733 -0.324095 -2.14331e-19) +(7.41576 -0.332731 3.1306e-19) +(7.41396 -0.341423 0) +(7.41191 -0.350159 0) +(7.4096 -0.358923 0) +(7.40703 -0.367704 0) +(7.40417 -0.376487 0) +(7.40102 -0.385257 0) +(7.39758 -0.394001 0) +(7.39382 -0.402703 -7.73883e-20) +(7.38974 -0.411349 0) +(7.38534 -0.419925 0) +(7.38059 -0.428415 -1.36579e-19) +(7.37551 -0.436803 6.57264e-20) +(7.37007 -0.445076 0) +(7.36427 -0.453219 -5.90356e-20) +(7.3581 -0.461217 0) +(7.35157 -0.469057 1.03332e-19) +(7.34465 -0.476724 9.66965e-20) +(7.33736 -0.484205 4.43979e-20) +(7.32968 -0.491483 1.25827e-19) +(7.32162 -0.498549 -7.6888e-20) +(7.31316 -0.505388 -7.03302e-20) +(7.3043 -0.511986 6.37986e-20) +(7.29505 -0.518336 0) +(7.2854 -0.524424 -5.08337e-20) +(7.27534 -0.53024 -4.44072e-20) +(7.26489 -0.535773 3.80238e-20) +(7.25403 -0.541013 0) +(7.24278 -0.545951 0) +(7.23113 -0.550578 0) +(7.21908 -0.554888 1.37229e-20) +(7.20665 -0.558871 -7.54707e-21) +(7.19384 -0.562521 1.50398e-21) +(7.18064 -0.565833 0) +(7.16707 -0.568805 0) +(7.15313 -0.571432 -5.0732e-20) +(7.13883 -0.573714 4.58222e-20) +(7.12417 -0.575647 -5.73089e-20) +(7.10916 -0.577231 -3.38793e-20) +(7.09382 -0.578467 4.03285e-20) +(7.07814 -0.579356 0) +(7.06215 -0.5799 1.0175e-19) +(7.04585 -0.580103 -1.12466e-19) +(7.02926 -0.57997 -6.1787e-20) +(7.01239 -0.579506 6.69489e-20) +(6.99527 -0.578717 0) +(6.97791 -0.577605 -7.70144e-20) +(6.96034 -0.576177 1.63488e-19) +(6.94256 -0.574447 0) +(6.92461 -0.572429 0) +(6.9065 -0.570137 -9.60217e-20) +(6.88825 -0.567583 0) +(6.86988 -0.564778 -2.09777e-19) +(6.8514 -0.561742 2.1844e-19) +(6.83285 -0.558493 0) +(6.81424 -0.555055 0) +(6.79561 -0.551447 0) +(6.77697 -0.547687 0) +(6.75836 -0.543795 0) +(6.73978 -0.539796 -2.66136e-19) +(6.72127 -0.535713 1.36701e-19) +(6.70284 -0.531574 0) +(6.68454 -0.527412 1.43633e-19) +(6.66638 -0.523258 -1.46947e-19) +(6.64841 -0.519152 0) +(6.63065 -0.515129 -1.53268e-19) +(6.61315 -0.511209 0) +(6.59596 -0.507447 1.59169e-19) +(6.57914 -0.503905 -3.23964e-19) +(6.56274 -0.500612 1.64672e-19) +(6.54682 -0.497614 3.34636e-19) +(6.53143 -0.494979 3.39666e-19) +(6.51668 -0.492771 1.72151e-19) +(6.50262 -0.49104 -1.74683e-19) +(6.48936 -0.48983 3.53547e-19) +(6.47701 -0.489207 -3.66675e-22) +(6.46567 -0.48919 0) +(6.45549 -0.489827 -3.6506e-19) +(6.44664 -0.491179 0) +(6.43932 -0.49327 0) +(6.43371 -0.496097 -7.50554e-19) +(6.43007 -0.499661 7.55787e-19) +(6.42859 -0.503904 0) +(6.4297 -0.508841 7.64151e-19) +(6.43309 -0.514071 0) +(6.44135 -0.520343 -3.8532e-19) +(9.83342 0.0404452 -1.30837e-19) +(9.82294 0.0401864 9.80808e-23) +(9.81108 0.0383782 0) +(9.79833 0.0333573 0) +(9.78347 0.0276839 -1.333e-19) +(9.76606 0.0229549 0) +(9.7462 0.0189882 2.67426e-19) +(9.72378 0.01528 -2.68005e-19) +(9.6984 0.0117735 0) +(9.66985 0.00830668 -1.34239e-19) +(9.63818 0.00485272 0) +(9.60353 0.00137159 0) +(9.56621 -0.00218615 0) +(9.52642 -0.00581441 -1.32955e-19) +(9.48448 -0.00946209 -2.64349e-19) +(9.44064 -0.013097 0) +(9.39538 -0.0167011 0) +(9.34892 -0.0202329 0) +(9.3017 -0.0236682 0) +(9.2541 -0.0269897 -3.87419e-19) +(9.20642 -0.030176 0) +(9.15895 -0.033213 0) +(9.11199 -0.0361104 0) +(9.06579 -0.0388946 3.78281e-19) +(9.02054 -0.0415582 0) +(8.9764 -0.0440941 2.48623e-19) +(8.93349 -0.0465029 -2.46944e-19) +(8.8919 -0.0487878 -3.68307e-19) +(8.85169 -0.0509558 0) +(8.81289 -0.0530141 0) +(8.77552 -0.0549724 0) +(8.73956 -0.056839 0) +(8.705 -0.0586248 3.55336e-19) +(8.67181 -0.0603382 0) +(8.63997 -0.0619898 0) +(8.60942 -0.0635898 -1.15254e-19) +(8.58014 -0.0651514 2.30503e-19) +(8.5521 -0.0666932 0) +(8.52529 -0.0682109 0) +(8.49964 -0.0697015 -4.49953e-19) +(8.4751 -0.0711743 2.22866e-19) +(8.45163 -0.0726598 -2.21177e-19) +(8.42918 -0.0741696 0) +(8.4077 -0.0757123 0) +(8.38717 -0.077299 0) +(8.36753 -0.0789379 2.15277e-19) +(8.34876 -0.0806364 2.13594e-19) +(8.33083 -0.0824021 0) +(8.3137 -0.0842419 0) +(8.29735 -0.0861628 0) +(8.28174 -0.0881716 0) +(8.26685 -0.0902744 0) +(8.25265 -0.0924778 0) +(8.23912 -0.0947849 0) +(8.22622 -0.0972002 -1.99199e-19) +(8.21391 -0.0997296 0) +(8.20218 -0.102381 0) +(8.19099 -0.105164 0) +(8.18035 -0.108086 -3.8465e-19) +(8.17023 -0.111154 1.91453e-19) +(8.16061 -0.114377 0) +(8.15149 -0.117758 0) +(8.14283 -0.121302 0) +(8.13463 -0.125013 -3.66819e-19) +(8.12685 -0.128895 3.63116e-19) +(8.11948 -0.132952 0) +(8.11249 -0.137189 -1.78707e-19) +(8.10586 -0.141607 0) +(8.09957 -0.14621 -1.7481e-19) +(8.09359 -0.151 0) +(8.0879 -0.155978 0) +(8.08248 -0.161146 0) +(8.0773 -0.166504 3.31169e-19) +(8.07235 -0.172052 -4.91244e-19) +(8.0676 -0.17779 -4.84614e-19) +(8.06303 -0.183716 3.17891e-19) +(8.05861 -0.189829 1.55625e-19) +(8.05433 -0.196126 0) +(8.05016 -0.202605 0) +(8.04607 -0.209261 0) +(8.04204 -0.21609 5.89916e-19) +(8.03805 -0.223087 -2.07238e-21) +(8.03409 -0.230247 -2.8368e-19) +(8.03012 -0.237565 0) +(8.02614 -0.245037 -2.73059e-19) +(8.02213 -0.252654 0) +(8.01807 -0.260411 0) +(8.01395 -0.268299 0) +(8.00976 -0.276312 2.50698e-19) +(8.00547 -0.284439 -2.04007e-21) +(8.00107 -0.292673 0) +(7.99654 -0.301002 2.34992e-19) +(7.99188 -0.309416 0) +(7.98705 -0.317901 2.22727e-19) +(7.98205 -0.326447 -1.96236e-21) +(7.97685 -0.335041 -2.08207e-19) +(7.97145 -0.34367 0) +(7.96582 -0.352321 0) +(7.95994 -0.360981 0) +(7.95382 -0.369636 0) +(7.94742 -0.378271 0) +(7.94074 -0.386874 3.38124e-19) +(7.93376 -0.395429 -1.60617e-19) +(7.92648 -0.403922 -3.11232e-19) +(7.91888 -0.412339 0) +(7.91094 -0.420665 4.27727e-19) +(7.90267 -0.428886 0) +(7.89404 -0.436986 0) +(7.88505 -0.444953 0) +(7.8757 -0.452771 0) +(7.86596 -0.460428 -3.2456e-19) +(7.85585 -0.467909 9.94444e-20) +(7.84535 -0.475201 9.26042e-20) +(7.83445 -0.482289 -8.83466e-20) +(7.82316 -0.489162 8.14301e-20) +(7.81146 -0.495807 7.45312e-20) +(7.79936 -0.502209 6.53523e-20) +(7.78684 -0.508364 0) +(7.77392 -0.514257 -5.18563e-20) +(7.76057 -0.519875 4.71645e-20) +(7.74682 -0.525211 -4.04042e-20) +(7.73266 -0.530255 0) +(7.71808 -0.535 0) +(7.7031 -0.539436 3.91178e-20) +(7.68772 -0.543556 2.60506e-20) +(7.67194 -0.547352 0) +(7.65576 -0.550818 -1.60184e-21) +(7.63919 -0.553951 0) +(7.62223 -0.556746 2.50815e-20) +(7.60489 -0.559202 3.64471e-20) +(7.58719 -0.561315 -4.88536e-20) +(7.56911 -0.563084 6.11123e-20) +(7.55068 -0.56451 0) +(7.53191 -0.565594 -8.51639e-20) +(7.51281 -0.566338 0) +(7.49338 -0.566743 -1.08564e-19) +(7.47365 -0.566816 1.20008e-19) +(7.45363 -0.566561 -4.9247e-22) +(7.43334 -0.565983 4.26747e-22) +(7.4128 -0.565094 -1.53633e-19) +(7.39202 -0.563892 1.63975e-19) +(7.37103 -0.562386 2.50099e-22) +(7.34985 -0.560589 0) +(7.3285 -0.558514 0) +(7.30701 -0.556176 -1.14448e-22) +(7.28538 -0.553586 0) +(7.26364 -0.550757 2.2373e-19) +(7.24181 -0.547707 2.32936e-19) +(7.21991 -0.544459 0) +(7.19797 -0.541037 5.01181e-19) +(7.17602 -0.537457 0) +(7.15407 -0.533737 5.34717e-19) +(7.13214 -0.529897 0) +(7.11026 -0.525961 2.83324e-19) +(7.08845 -0.521956 0) +(7.06672 -0.517906 0) +(7.04513 -0.51385 0) +(7.02368 -0.509819 6.24627e-19) +(7.00242 -0.505854 0) +(6.98137 -0.501996 0) +(6.9606 -0.498266 6.63772e-19) +(6.94016 -0.494722 3.37917e-19) +(6.9201 -0.491429 1.0315e-18) +(6.90045 -0.488413 0) +(6.88132 -0.485725 3.55052e-19) +(6.86272 -0.483439 -3.60069e-19) +(6.84477 -0.481622 0) +(6.82751 -0.480329 1.10978e-18) +(6.81104 -0.479601 -3.74254e-19) +(6.79547 -0.479528 -3.79385e-19) +(6.7809 -0.480128 0) +(6.76752 -0.481466 0) +(6.75547 -0.483616 0) +(6.74497 -0.48661 0) +(6.7362 -0.490458 7.92104e-19) +(6.72945 -0.49517 -7.97184e-19) +(6.72489 -0.500704 0) +(6.72308 -0.507057 -8.05223e-19) +(6.72332 -0.513918 0) +(6.7297 -0.521677 -2.57466e-21) +(10.032 0.0461186 2.28507e-19) +(10.0298 0.0442944 -1.14378e-19) +(10.0272 0.0424815 0) +(10.0249 0.0401037 0) +(10.0221 0.0373313 -2.31412e-19) +(10.0184 0.0345515 2.32372e-19) +(10.0139 0.0317409 -3.50058e-19) +(10.0089 0.0287642 3.51186e-19) +(10.0031 0.025697 -2.34567e-19) +(9.99671 0.0226687 -2.35117e-19) +(9.98958 0.0198238 0) +(9.98174 0.0172083 0) +(9.97319 0.0147971 0) +(9.96382 0.0125615 -2.36162e-19) +(9.95355 0.0104859 2.36512e-19) +(9.9423 0.00854419 2.36036e-19) +(9.93001 0.00670676 0) +(9.91663 0.00495669 0) +(9.9021 0.00324439 -2.35113e-19) +(9.88637 0.00153922 2.34844e-19) +(9.86939 -0.000171983 0) +(9.85116 -0.00190708 0) +(9.83165 -0.00367962 0) +(9.81087 -0.00548832 -2.32248e-19) +(9.78885 -0.0073307 0) +(9.76565 -0.00920534 -2.30652e-19) +(9.74134 -0.0111142 2.29799e-19) +(9.716 -0.0130559 2.2892e-19) +(9.68971 -0.015031 0) +(9.66259 -0.017036 0) +(9.63474 -0.0190711 0) +(9.60628 -0.0211318 0) +(9.57733 -0.0232197 -2.24126e-19) +(9.54802 -0.0253294 0) +(9.51845 -0.027465 0) +(9.48876 -0.029623 2.21015e-19) +(9.45903 -0.0317932 -2.19462e-19) +(9.42941 -0.0339816 2.18324e-19) +(9.39998 -0.0361978 0) +(9.37087 -0.038456 -2.1543e-19) +(9.34213 -0.0407507 -2.15329e-19) +(9.31385 -0.0430767 2.14139e-19) +(9.28607 -0.0454322 0) +(9.25884 -0.0478174 4.22197e-19) +(9.2322 -0.0502363 0) +(9.20618 -0.0526927 -4.17171e-19) +(9.1808 -0.0551911 0) +(9.15608 -0.0577364 0) +(9.13202 -0.0603334 4.09415e-19) +(9.10863 -0.0629884 0) +(9.08593 -0.065706 0) +(9.06389 -0.0684939 -4.01376e-19) +(9.04252 -0.071355 -3.98627e-19) +(9.02182 -0.0742978 -3.95843e-19) +(9.00179 -0.077338 5.90343e-19) +(8.98243 -0.0804715 0) +(8.96374 -0.0837062 -3.87357e-19) +(8.94571 -0.087043 3.84473e-19) +(8.92833 -0.0904816 3.83194e-19) +(8.91156 -0.0940488 0) +(8.8954 -0.0977454 -3.75479e-19) +(8.87981 -0.101573 0) +(8.86478 -0.105545 -3.69203e-19) +(8.85028 -0.109667 3.67777e-19) +(8.8363 -0.113944 -3.64504e-19) +(8.82282 -0.118378 0) +(8.80981 -0.122973 0) +(8.79725 -0.127733 0) +(8.78513 -0.13266 0) +(8.77342 -0.137757 0) +(8.7621 -0.143025 0) +(8.75114 -0.148466 0) +(8.74053 -0.154081 -2.02203e-21) +(8.73025 -0.159869 2.04159e-21) +(8.72026 -0.16583 3.27432e-19) +(8.71054 -0.171962 -3.2322e-19) +(8.70108 -0.178263 -3.18907e-19) +(8.69184 -0.18473 3.12389e-19) +(8.68279 -0.19136 0) +(8.67392 -0.198152 0) +(8.6652 -0.205102 -3.00648e-19) +(8.65662 -0.212208 -2.95825e-19) +(8.64814 -0.219464 2.90895e-19) +(8.63977 -0.226866 5.67435e-19) +(8.63146 -0.23441 2.80709e-19) +(8.62322 -0.242089 0) +(8.61502 -0.249897 0) +(8.60683 -0.257826 0) +(8.59864 -0.265866 -2.59001e-19) +(8.59043 -0.274009 -2.53295e-19) +(8.58216 -0.282244 4.90741e-19) +(8.57383 -0.290563 4.78928e-19) +(8.56539 -0.298953 0) +(8.55684 -0.307403 -4.54707e-19) +(8.54815 -0.3159 2.19109e-19) +(8.53929 -0.324435 -2.12841e-19) +(8.53026 -0.332994 0) +(8.52102 -0.341565 0) +(8.51157 -0.350134 0) +(8.50188 -0.358689 0) +(8.49193 -0.367217 0) +(8.48172 -0.375702 -3.54579e-19) +(8.47122 -0.384133 3.4088e-19) +(8.46042 -0.392494 3.55608e-21) +(8.4493 -0.400772 0) +(8.43786 -0.408953 -3.39659e-21) +(8.42608 -0.417022 -2.81696e-19) +(8.41395 -0.424966 0) +(8.40146 -0.432771 0) +(8.3886 -0.440423 2.39215e-19) +(8.37536 -0.447909 2.27903e-19) +(8.36173 -0.455217 -2.13511e-19) +(8.3477 -0.462331 -1.99098e-19) +(8.33328 -0.469239 0) +(8.31844 -0.475932 0) +(8.3032 -0.482394 0) +(8.28755 -0.488612 -1.41374e-19) +(8.27147 -0.49458 0) +(8.25498 -0.500285 1.12636e-19) +(8.23806 -0.505717 0) +(8.22073 -0.510869 0) +(8.20298 -0.515731 0) +(8.18482 -0.520294 0) +(8.16624 -0.524551 -4.17603e-20) +(8.14726 -0.528493 -2.7824e-20) +(8.12787 -0.532115 -1.25493e-20) +(8.10808 -0.53541 0) +(8.0879 -0.538376 2.91919e-20) +(8.06733 -0.541008 -2.68342e-20) +(8.04638 -0.543305 8.24881e-20) +(8.02505 -0.545265 -1.08723e-19) +(8.00337 -0.546887 0) +(7.98134 -0.548172 0) +(7.95897 -0.549123 1.85611e-19) +(7.93628 -0.549741 0) +(7.91329 -0.550029 2.35236e-19) +(7.89001 -0.549993 -2.5952e-19) +(7.86645 -0.549638 1.41319e-19) +(7.84264 -0.54897 -4.60151e-19) +(7.81858 -0.548003 -1.65344e-19) +(7.79431 -0.546737 3.52921e-19) +(7.76984 -0.545178 1.87765e-19) +(7.74521 -0.54334 0) +(7.72043 -0.541233 4.18501e-19) +(7.69552 -0.538875 -2.19732e-19) +(7.67049 -0.536275 -4.59912e-19) +(7.64537 -0.533447 -4.79908e-19) +(7.62018 -0.530412 -4.99621e-19) +(7.59494 -0.527194 0) +(7.56969 -0.523813 -5.37293e-19) +(7.54443 -0.520285 0) +(7.51918 -0.516625 -5.72973e-19) +(7.49396 -0.512857 0) +(7.46879 -0.509004 0) +(7.4437 -0.505097 -6.22362e-19) +(7.41871 -0.501158 0) +(7.39387 -0.497226 0) +(7.36916 -0.493341 -3.98997e-22) +(7.34466 -0.489545 0) +(7.32041 -0.485884 0) +(7.29648 -0.48237 -7.09767e-19) +(7.27291 -0.479063 -1.70734e-22) +(7.24974 -0.476038 -7.34674e-19) +(7.22694 -0.473327 0) +(7.20473 -0.470973 1.38055e-22) +(7.183 -0.469053 0) +(7.16194 -0.467635 7.79523e-19) +(7.1415 -0.466791 -7.89165e-19) +(7.12187 -0.466555 0) +(7.1031 -0.467037 1.61572e-18) +(7.08529 -0.468267 0) +(7.06868 -0.470324 8.25063e-19) +(7.05336 -0.473291 0) +(7.0396 -0.477215 0) +(7.02757 -0.482116 1.69112e-18) +(7.0176 -0.488013 0) +(7.00984 -0.494888 1.71111e-18) +(7.00496 -0.502704 -1.71829e-18) +(7.00192 -0.511272 -1.72336e-18) +(7.00615 -0.520544 2.58921e-18) +(10.0952 0.0469226 -3.96646e-19) +(10.0962 0.0454496 0) +(10.097 0.0438745 1.9838e-19) +(10.0978 0.0418569 0) +(10.0982 0.0391822 7.00327e-22) +(10.098 0.0361843 -7.67321e-22) +(10.0973 0.0331603 2.02289e-19) +(10.0963 0.0301936 -2.02812e-19) +(10.095 0.0273428 4.05831e-19) +(10.0934 0.0246835 4.06714e-19) +(10.0916 0.0222667 2.03442e-19) +(10.0896 0.0200848 0) +(10.0874 0.0180995 0) +(10.0851 0.0162774 4.52551e-22) +(10.0827 0.0146025 -2.0497e-19) +(10.0801 0.0130629 -2.05675e-19) +(10.0773 0.0116447 0) +(10.0744 0.0103369 0) +(10.0713 0.00911742 2.06426e-19) +(10.0679 0.00797384 0) +(10.0643 0.0069039 -2.06556e-19) +(10.0604 0.00590142 0) +(10.0563 0.0049549 0) +(10.0518 0.00404911 0) +(10.0469 0.003169 0) +(10.0416 0.00230144 -4.13893e-19) +(10.0359 0.00143349 0) +(10.0297 0.000553954 0) +(10.023 -0.000348838 0) +(10.0157 -0.00128468 -4.13176e-19) +(10.0079 -0.00226449 0) +(9.99956 -0.00329666 0) +(9.99056 -0.00439094 4.1187e-19) +(9.98094 -0.00555411 -4.11305e-19) +(9.97066 -0.00679448 0) +(9.95974 -0.00811899 0) +(9.94814 -0.00953543 2.04753e-19) +(9.93587 -0.0110535 -2.04345e-19) +(9.92292 -0.0126785 4.07371e-19) +(9.9093 -0.0144054 4.06829e-19) +(9.89503 -0.0162277 0) +(9.88015 -0.0181473 0) +(9.86469 -0.0201665 0) +(9.84869 -0.0222871 -4.02358e-19) +(9.83219 -0.0245113 -4.0039e-19) +(9.81525 -0.0268406 3.99763e-19) +(9.79792 -0.0292763 3.97569e-19) +(9.78024 -0.0318195 -3.96066e-19) +(9.76227 -0.034472 -3.95406e-19) +(9.74406 -0.0372344 0) +(9.72568 -0.0401094 0) +(9.70716 -0.0430969 7.79886e-19) +(9.68857 -0.0462014 3.88696e-19) +(9.66995 -0.0494232 3.86857e-19) +(9.65136 -0.0527578 -7.68635e-19) +(9.63284 -0.0562143 0) +(9.61444 -0.0597985 3.80807e-19) +(9.59621 -0.063516 -1.39339e-21) +(9.57816 -0.0673727 0) +(9.56034 -0.0713668 0) +(9.54277 -0.0754974 3.71577e-19) +(9.52547 -0.0797657 3.67509e-19) +(9.50845 -0.0841739 3.66534e-19) +(9.49172 -0.0887241 0) +(9.47529 -0.093419 0) +(9.45916 -0.0982617 3.56613e-19) +(9.44334 -0.103255 3.53678e-19) +(9.42782 -0.1084 0) +(9.4126 -0.113701 -3.47535e-19) +(9.39768 -0.119157 0) +(9.38305 -0.124772 0) +(9.3687 -0.130544 0) +(9.35463 -0.136475 -3.36074e-19) +(9.34082 -0.142565 3.32472e-19) +(9.32726 -0.148812 6.53395e-19) +(9.31393 -0.155214 0) +(9.30083 -0.161774 0) +(9.28795 -0.168489 -9.46551e-19) +(9.27528 -0.175354 0) +(9.2628 -0.182364 0) +(9.2505 -0.189515 0) +(9.23836 -0.196804 0) +(9.22636 -0.204227 0) +(9.21448 -0.21178 -5.80327e-19) +(9.2027 -0.219457 0) +(9.19099 -0.227249 0) +(9.17933 -0.235153 0) +(9.16768 -0.243161 0) +(9.15603 -0.251265 0) +(9.14435 -0.259457 -5.13229e-19) +(9.13262 -0.267728 -5.0629e-19) +(9.12081 -0.276068 -4.94705e-19) +(9.10889 -0.284465 -4.78555e-19) +(9.09686 -0.292908 4.7083e-19) +(9.08469 -0.301386 -9.12845e-19) +(9.07235 -0.309889 4.2091e-21) +(9.05983 -0.318404 0) +(9.04711 -0.32692 0) +(9.03418 -0.335423 0) +(9.021 -0.343901 0) +(9.00758 -0.352341 -3.76543e-19) +(8.99388 -0.36073 0) +(8.97989 -0.369055 0) +(8.9656 -0.377302 3.38946e-19) +(8.95099 -0.385457 0) +(8.93605 -0.393508 -6.17522e-19) +(8.92077 -0.401441 3.4319e-21) +(8.90513 -0.409242 0) +(8.88913 -0.416899 0) +(8.87274 -0.424397 -3.14509e-21) +(8.85597 -0.431725 -2.34407e-19) +(8.83881 -0.43887 -2.19639e-19) +(8.82124 -0.44582 2.04814e-19) +(8.80326 -0.45256 0) +(8.78487 -0.459082 -3.50058e-19) +(8.76607 -0.465369 3.20199e-19) +(8.74684 -0.471414 0) +(8.72719 -0.477211 0) +(8.70713 -0.482743 0) +(8.68664 -0.488003 0) +(8.66573 -0.492983 -1.70996e-19) +(8.6444 -0.497674 0) +(8.62266 -0.502069 0) +(8.60051 -0.50616 0) +(8.57795 -0.50994 0) +(8.55499 -0.513401 1.34067e-20) +(8.53163 -0.516542 0) +(8.50789 -0.519357 -3.12219e-20) +(8.48376 -0.521845 0) +(8.45927 -0.524003 -1.78666e-19) +(8.43442 -0.525832 2.34769e-19) +(8.40923 -0.527332 0) +(8.38372 -0.528503 0) +(8.3579 -0.529347 -1.99107e-19) +(8.33179 -0.529868 -2.27111e-19) +(8.3054 -0.530067 -2.5254e-19) +(8.27874 -0.529951 5.58205e-19) +(8.25184 -0.529526 0) +(8.22472 -0.5288 6.60291e-19) +(8.19739 -0.527787 3.5491e-19) +(8.16988 -0.526482 -3.79498e-19) +(8.14219 -0.524892 -8.0724e-19) +(8.11435 -0.523036 0) +(8.08637 -0.520923 -4.50225e-19) +(8.05828 -0.518575 4.72771e-19) +(8.03011 -0.515999 4.94826e-19) +(8.00187 -0.513205 5.16336e-19) +(7.9736 -0.510216 0) +(7.94531 -0.50705 0) +(7.91701 -0.503727 0) +(7.8887 -0.500266 -5.9644e-19) +(7.8604 -0.496683 6.15229e-19) +(7.83214 -0.493003 -6.33467e-19) +(7.80395 -0.489254 6.51189e-19) +(7.77586 -0.485466 5.62665e-22) +(7.74788 -0.481662 0) +(7.7201 -0.477898 0) +(7.6925 -0.474198 -7.17756e-19) +(7.66518 -0.470591 -7.32584e-19) +(7.63812 -0.467143 1.49518e-18) +(7.61139 -0.463855 0) +(7.58502 -0.460807 7.75121e-19) +(7.55905 -0.458088 1.57679e-18) +(7.53353 -0.455686 0) +(7.50848 -0.453677 -8.13184e-19) +(7.48395 -0.452118 1.65079e-18) +(7.46001 -0.451083 -8.3562e-19) +(7.43662 -0.450679 1.6947e-18) +(7.41398 -0.450934 0) +(7.39218 -0.451982 -8.65934e-19) +(7.37131 -0.453834 -1.75307e-18) +(7.35156 -0.456602 -8.83084e-19) +(7.33299 -0.460404 1.7863e-18) +(7.31603 -0.465275 -1.79972e-18) +(7.30073 -0.471248 -1.80769e-18) +(7.28752 -0.478354 0) +(7.2765 -0.486609 -1.82636e-18) +(7.26845 -0.495937 1.83256e-18) +(7.26211 -0.506279 1.8374e-18) +(7.26384 -0.517082 7.55696e-21) +(10.1132 0.0457808 1.73107e-19) +(10.1153 0.0445039 1.71638e-19) +(10.1174 0.0429107 -3.4538e-19) +(10.1192 0.0409644 0) +(10.1209 0.0386168 1.74595e-19) +(10.1221 0.0360674 -6.00117e-22) +(10.1229 0.0335106 0) +(10.1234 0.0309956 0) +(10.1237 0.0285332 -3.52521e-19) +(10.1237 0.0261609 -1.76832e-19) +(10.1235 0.0239197 -1.77071e-19) +(10.1231 0.0218282 -1.76827e-19) +(10.1226 0.0198853 0) +(10.122 0.0180857 3.54965e-19) +(10.1214 0.0164268 -1.77156e-19) +(10.1208 0.0149047 -3.55486e-19) +(10.1201 0.0135106 3.55955e-19) +(10.1194 0.0122338 0) +(10.1187 0.0110601 0) +(10.118 0.00997668 -3.57438e-19) +(10.1173 0.00897465 1.79189e-19) +(10.1166 0.00804413 0) +(10.1159 0.00717226 0) +(10.1151 0.00634643 0) +(10.1143 0.00555629 -3.60096e-19) +(10.1135 0.00479416 3.6095e-19) +(10.1126 0.00405236 3.61193e-19) +(10.1116 0.0033234 0) +(10.1106 0.00259947 0) +(10.1095 0.00187373 3.63043e-19) +(10.1083 0.00113871 0) +(10.107 0.000387968 0) +(10.1056 -0.000385865 -3.64503e-19) +(10.104 -0.00118909 3.64957e-19) +(10.1023 -0.00202916 0) +(10.1004 -0.00291294 0) +(10.0983 -0.00384477 0) +(10.096 -0.00483142 3.66145e-19) +(10.0935 -0.00588098 -3.48155e-22) +(10.0908 -0.00700135 -3.66646e-19) +(10.0878 -0.00819931 0) +(10.0845 -0.00948304 0) +(10.081 -0.0108597 0) +(10.0771 -0.0123354 -3.67015e-19) +(10.073 -0.0139162 3.67459e-19) +(10.0685 -0.0156077 0) +(10.0636 -0.0174157 -7.33838e-19) +(10.0585 -0.0193456 3.66976e-19) +(10.0529 -0.0214027 0) +(10.047 -0.0235922 -3.65591e-19) +(10.0407 -0.0259187 0) +(10.0341 -0.028387 -3.65286e-19) +(10.0271 -0.0310014 0) +(10.0197 -0.033767 0) +(10.012 -0.0366914 3.63139e-19) +(10.0039 -0.0397792 0) +(9.99538 -0.0430326 3.60165e-19) +(9.98653 -0.0464512 -3.60099e-19) +(9.97733 -0.0500321 0) +(9.96781 -0.0537797 -7.12674e-19) +(9.95797 -0.057697 7.09725e-19) +(9.94785 -0.0617838 3.51957e-19) +(9.93745 -0.0660422 0) +(9.9268 -0.0704736 0) +(9.91592 -0.0750793 0) +(9.90484 -0.07986 -3.4747e-19) +(9.89356 -0.0848161 -3.45407e-19) +(9.88211 -0.0899475 0) +(9.87051 -0.0952538 3.40932e-19) +(9.85876 -0.100734 0) +(9.8469 -0.106388 0) +(9.83492 -0.112214 0) +(9.82285 -0.118209 0) +(9.81068 -0.124372 6.51277e-19) +(9.79844 -0.1307 -6.48993e-19) +(9.78613 -0.137191 0) +(9.77375 -0.143838 6.3182e-19) +(9.76131 -0.150638 6.28894e-19) +(9.74881 -0.15759 0) +(9.73626 -0.164691 0) +(9.72366 -0.171936 0) +(9.711 -0.179319 0) +(9.69828 -0.186834 0) +(9.68549 -0.194474 0) +(9.67263 -0.202231 0) +(9.65969 -0.210099 0) +(9.64664 -0.218071 0) +(9.63349 -0.226132 0) +(9.62021 -0.234275 0) +(9.60679 -0.242495 5.21443e-19) +(9.59321 -0.250779 0) +(9.57947 -0.259116 -4.95129e-19) +(9.56553 -0.267501 4.88265e-19) +(9.55139 -0.275921 0) +(9.53705 -0.284365 9.25203e-19) +(9.52247 -0.292822 4.52657e-19) +(9.50765 -0.301281 -4.36e-19) +(9.49257 -0.30973 -4.23427e-19) +(9.47721 -0.318157 -4.10618e-19) +(9.46157 -0.326549 0) +(9.44562 -0.334895 7.7269e-19) +(9.42936 -0.34318 0) +(9.41277 -0.351393 0) +(9.39583 -0.359521 0) +(9.37854 -0.36755 0) +(9.36089 -0.375467 -3.11393e-19) +(9.34286 -0.38326 3.04195e-19) +(9.32444 -0.390916 0) +(9.30563 -0.398422 0) +(9.28642 -0.405766 -2.59841e-19) +(9.2668 -0.412936 2.44795e-19) +(9.24676 -0.419918 -2.23545e-19) +(9.2263 -0.426702 -2.14377e-19) +(9.20541 -0.433275 -3.92408e-19) +(9.1841 -0.439628 3.67212e-19) +(9.16236 -0.445747 -3.36249e-19) +(9.14018 -0.451623 0) +(9.11758 -0.457248 0) +(9.09455 -0.462613 0) +(9.07109 -0.467707 0) +(9.04721 -0.472523 4.04416e-21) +(9.02291 -0.477053 -1.45475e-19) +(8.9982 -0.481289 0) +(8.97308 -0.485224 8.37851e-20) +(8.94756 -0.488851 0) +(8.92166 -0.492166 -2.25069e-20) +(8.89536 -0.495167 -7.91952e-21) +(8.86871 -0.497853 3.81756e-20) +(8.84169 -0.500217 0) +(8.81434 -0.50226 9.60638e-20) +(8.78667 -0.50398 -1.25877e-19) +(8.75869 -0.505378 0) +(8.73042 -0.506455 1.86106e-19) +(8.70187 -0.507214 0) +(8.67306 -0.507658 2.42268e-19) +(8.644 -0.507788 0) +(8.61471 -0.507613 -5.97666e-19) +(8.58522 -0.507139 0) +(8.55553 -0.506374 -3.53164e-19) +(8.52567 -0.505327 3.80145e-19) +(8.49567 -0.503998 0) +(8.46551 -0.502399 4.08553e-24) +(8.43522 -0.500542 0) +(8.40482 -0.498441 4.81793e-19) +(8.37433 -0.496114 0) +(8.34377 -0.493573 -5.29504e-19) +(8.31319 -0.490819 -5.524e-19) +(8.28258 -0.487872 0) +(8.25193 -0.484751 0) +(8.22126 -0.481485 0) +(8.19059 -0.478098 6.39284e-19) +(8.15993 -0.474606 -6.59581e-19) +(8.12935 -0.471034 2.03643e-18) +(8.09886 -0.467408 6.97028e-19) +(8.06849 -0.463761 2.14951e-18) +(8.03828 -0.460121 0) +(8.00828 -0.456528 -1.50336e-18) +(7.97852 -0.453021 1.53797e-18) +(7.94909 -0.449638 -7.84638e-19) +(7.91992 -0.446441 -3.20696e-18) +(7.8911 -0.443426 1.63322e-18) +(7.86261 -0.440663 -1.66283e-18) +(7.83449 -0.438218 -1.69056e-18) +(7.80686 -0.436118 0) +(7.77955 -0.434444 0) +(7.75278 -0.433246 -1.76865e-18) +(7.72656 -0.432619 -1.79212e-18) +(7.70094 -0.432623 1.4658e-21) +(7.67592 -0.433314 0) +(7.65156 -0.434879 0) +(7.62813 -0.437327 1.88097e-18) +(7.60566 -0.440804 -1.9024e-18) +(7.58436 -0.445387 -1.91809e-18) +(7.56445 -0.451139 -5.40779e-21) +(7.54607 -0.458179 0) +(7.52972 -0.46651 0) +(7.51554 -0.476175 0) +(7.50431 -0.487049 0) +(7.49481 -0.499216 0) +(7.49365 -0.511599 -1.9786e-18) +(10.1162 0.0436631 0) +(10.1188 0.0424717 -1.52276e-19) +(10.1213 0.0409682 1.53051e-19) +(10.1236 0.0392031 0) +(10.1257 0.0371815 0) +(10.1276 0.0349807 -1.55001e-19) +(10.1291 0.032707 -3.09942e-19) +(10.1303 0.0304197 0) +(10.1313 0.0281526 4.67513e-19) +(10.1321 0.0259472 -3.11883e-19) +(10.1327 0.0238437 -3.12321e-19) +(10.1331 0.021866 -1.55924e-19) +(10.1334 0.02002 0) +(10.1336 0.0183033 1.56276e-19) +(10.1338 0.016712 3.14185e-19) +(10.1339 0.0152416 6.07666e-22) +(10.134 0.0138848 -6.28539e-19) +(10.1341 0.0126327 0) +(10.1342 0.0114755 3.14468e-19) +(10.1343 0.010403 3.1515e-19) +(10.1344 0.00940688 0) +(10.1346 0.00847936 0) +(10.1348 0.00761158 0) +(10.135 0.00679422 0) +(10.1352 0.00601882 3.16548e-19) +(10.1354 0.00527755 0) +(10.1357 0.00456264 -3.17277e-19) +(10.136 0.00386616 3.1743e-19) +(10.1363 0.00318049 3.17856e-19) +(10.1367 0.00249813 0) +(10.137 0.00181185 3.18761e-19) +(10.1374 0.00111463 0) +(10.1377 0.000399524 0) +(10.1381 -0.000340071 3.2023e-19) +(10.1385 -0.00111084 3.20741e-19) +(10.1388 -0.00191894 0) +(10.1391 -0.00276962 0) +(10.1394 -0.00366959 -3.22595e-19) +(10.1397 -0.004626 -3.23143e-19) +(10.1399 -0.00564529 3.2369e-19) +(10.14 -0.00673224 3.23874e-19) +(10.1401 -0.00789153 0) +(10.1402 -0.00912821 0) +(10.1401 -0.0104471 4.49593e-22) +(10.14 -0.0118535 0) +(10.1398 -0.0133525 0) +(10.1394 -0.0149495 5.49691e-22) +(10.139 -0.0166497 0) +(10.1384 -0.0184585 0) +(10.1377 -0.020381 3.28162e-19) +(10.1369 -0.0224225 0) +(10.1359 -0.0245883 0) +(10.1347 -0.0268839 -6.55965e-19) +(10.1334 -0.0293148 -6.56042e-19) +(10.1319 -0.0318849 6.55983e-19) +(10.1302 -0.0345986 0) +(10.1283 -0.0374604 -3.28671e-19) +(10.1261 -0.0404751 -6.54891e-19) +(10.1238 -0.0436485 0) +(10.1212 -0.0469879 6.55508e-19) +(10.1184 -0.0504981 -6.54528e-19) +(10.1153 -0.0541812 -6.53348e-19) +(10.1119 -0.0580403 0) +(10.1083 -0.0620778 0) +(10.1043 -0.0662961 0) +(10.1002 -0.0706969 -6.4366e-19) +(10.0957 -0.0752813 -6.41262e-19) +(10.0909 -0.0800504 0) +(10.0858 -0.0850045 0) +(10.0804 -0.0901436 0) +(10.0747 -0.0954671 6.2913e-19) +(10.0687 -0.100974 -6.25424e-19) +(10.0624 -0.106663 0) +(10.0558 -0.112531 -6.2077e-19) +(10.0488 -0.118576 6.1259e-19) +(10.0415 -0.124794 0) +(10.0339 -0.131185 -1.20895e-18) +(10.026 -0.137744 5.97044e-19) +(10.0177 -0.144467 0) +(10.0091 -0.151349 0) +(10.0002 -0.158382 0) +(9.99089 -0.16556 0) +(9.98126 -0.172875 0) +(9.97128 -0.180321 0) +(9.96095 -0.187888 5.49272e-19) +(9.95027 -0.195568 5.4112e-19) +(9.93925 -0.203351 0) +(9.92787 -0.211229 5.23866e-19) +(9.91614 -0.219193 5.1475e-19) +(9.90406 -0.227234 -5.0534e-19) +(9.89162 -0.23534 0) +(9.87881 -0.243506 9.75635e-19) +(9.86565 -0.251717 -4.75293e-19) +(9.85211 -0.259959 0) +(9.83819 -0.268227 -4.58043e-19) +(9.82388 -0.276508 0) +(9.80917 -0.284788 -4.26559e-19) +(9.79407 -0.293056 4.23343e-19) +(9.77856 -0.301299 4.112e-19) +(9.76264 -0.309504 7.89204e-19) +(9.74629 -0.31766 -3.86091e-19) +(9.72952 -0.325753 7.38165e-19) +(9.71231 -0.333771 -7.11893e-19) +(9.69466 -0.3417 -6.85142e-19) +(9.67657 -0.349529 0) +(9.65803 -0.357245 6.37789e-19) +(9.63903 -0.364834 0) +(9.61958 -0.372284 0) +(9.59966 -0.379583 0) +(9.57928 -0.38672 0) +(9.55843 -0.393681 0) +(9.53712 -0.400456 6.35807e-21) +(9.51534 -0.407032 4.26154e-19) +(9.49309 -0.413398 4.01694e-19) +(9.47038 -0.419544 0) +(9.4472 -0.42546 0) +(9.42357 -0.431134 0) +(9.39948 -0.436563 0) +(9.37495 -0.441734 2.40774e-19) +(9.34996 -0.44664 0) +(9.32455 -0.45127 1.82195e-19) +(9.2987 -0.455619 1.50432e-19) +(9.27244 -0.459678 0) +(9.24577 -0.463444 -3.60037e-21) +(9.21871 -0.466908 0) +(9.19126 -0.470069 2.33844e-20) +(9.16345 -0.47292 8.23725e-21) +(9.13526 -0.475464 -3.97537e-20) +(9.10674 -0.477697 0) +(9.07789 -0.47962 0) +(9.04872 -0.48123 0) +(9.01926 -0.482528 0) +(8.98953 -0.483515 -3.91019e-19) +(8.95953 -0.484194 2.26396e-19) +(8.92929 -0.484568 0) +(8.89882 -0.484638 0) +(8.86815 -0.484415 3.13967e-19) +(8.83729 -0.483901 -3.43627e-19) +(8.80626 -0.483108 0) +(8.77508 -0.482043 -3.99697e-19) +(8.74376 -0.480706 8.55367e-19) +(8.71233 -0.479103 -4.54902e-19) +(8.6808 -0.477249 0) +(8.64918 -0.475161 -5.07621e-19) +(8.61749 -0.472862 1.06605e-18) +(8.58576 -0.470346 1.67453e-18) +(8.55397 -0.467632 -5.81851e-19) +(8.52215 -0.464747 0) +(8.49034 -0.461703 0) +(8.45855 -0.458524 1.30437e-18) +(8.42682 -0.455225 -1.34952e-18) +(8.39516 -0.451829 -1.39363e-18) +(8.3636 -0.44837 -1.43797e-18) +(8.33216 -0.444875 -1.51861e-21) +(8.30088 -0.441376 -1.52041e-18) +(8.26979 -0.437897 0) +(8.23889 -0.434492 1.59799e-18) +(8.20823 -0.431173 -1.63571e-18) +(8.17779 -0.428001 1.67018e-18) +(8.14764 -0.425012 1.70553e-18) +(8.11774 -0.422214 -1.73737e-18) +(8.08815 -0.419706 0) +(8.05888 -0.417535 0) +(8.02998 -0.415728 0) +(8.00144 -0.414354 0) +(7.97334 -0.413451 1.88376e-18) +(7.94567 -0.413151 1.90664e-18) +(7.91862 -0.413548 1.88746e-21) +(7.89221 -0.414716 0) +(7.86645 -0.416766 0) +(7.84143 -0.419715 0) +(7.81724 -0.423733 2.02846e-18) +(7.79403 -0.428973 -2.05697e-18) +(7.77185 -0.435601 4.1429e-18) +(7.75118 -0.443609 0) +(7.73216 -0.453076 0) +(7.71523 -0.464119 -2.11581e-18) +(7.70106 -0.47656 2.12387e-18) +(7.68873 -0.490598 0) +(7.68452 -0.504635 0) +(10.1139 0.0410812 0) +(10.1166 0.039945 0) +(10.1192 0.0385552 2.7618e-19) +(10.1217 0.0369533 2.77269e-19) +(10.124 0.0351582 0) +(10.1261 0.0332113 0) +(10.128 0.0311814 2.80844e-19) +(10.1296 0.0291256 -2.8066e-19) +(10.131 0.0270814 -2.82099e-19) +(10.1322 0.0250809 5.643e-19) +(10.1332 0.0231532 2.82937e-19) +(10.1341 0.0213181 2.83231e-19) +(10.1349 0.019584 0) +(10.1356 0.0179531 -6.53195e-22) +(10.1363 0.0164252 2.83207e-19) +(10.1368 0.0149989 5.61991e-22) +(10.1374 0.0136704 5.67595e-19) +(10.1379 0.0124342 0) +(10.1384 0.0112834 -2.8426e-19) +(10.139 0.0102106 0) +(10.1395 0.00920879 -2.84094e-19) +(10.1401 0.00827105 0) +(10.1406 0.00738972 2.84394e-19) +(10.1412 0.00655672 0) +(10.1419 0.00576419 -2.84734e-19) +(10.1425 0.00500473 0) +(10.1432 0.00427116 -2.8513e-19) +(10.144 0.00355647 -2.85586e-19) +(10.1448 0.00285364 -2.85811e-19) +(10.1456 0.00215603 -2.8583e-19) +(10.1464 0.0014569 -2.23939e-22) +(10.1473 0.000750042 0) +(10.1482 2.90201e-05 2.86675e-19) +(10.1491 -0.000712221 -2.87218e-19) +(10.15 -0.00147979 -2.3884e-22) +(10.151 -0.00227956 0) +(10.152 -0.00311709 0) +(10.1529 -0.00399828 0) +(10.1539 -0.00492929 2.88719e-19) +(10.155 -0.00591587 0) +(10.156 -0.00696305 -2.89798e-19) +(10.1569 -0.00807593 -2.89846e-19) +(10.1579 -0.00925978 5.80446e-19) +(10.1589 -0.01052 2.90997e-19) +(10.1598 -0.0118619 0) +(10.1607 -0.0132909 0) +(10.1616 -0.014812 2.92158e-19) +(10.1625 -0.0164306 5.84002e-19) +(10.1632 -0.0181517 5.84632e-19) +(10.164 -0.0199803 0) +(10.1646 -0.0219217 0) +(10.1652 -0.0239806 0) +(10.1657 -0.0261621 5.88056e-19) +(10.1662 -0.0284709 5.88473e-19) +(10.1665 -0.0309114 -5.8881e-19) +(10.1667 -0.0334884 0) +(10.1668 -0.0362064 0) +(10.1668 -0.0390701 5.89301e-19) +(10.1666 -0.042084 5.87317e-19) +(10.1663 -0.0452526 0) +(10.1659 -0.0485796 0) +(10.1653 -0.052068 0) +(10.1644 -0.0557206 0) +(10.1635 -0.0595403 0) +(10.1623 -0.0635297 0) +(10.1609 -0.0676908 5.84877e-19) +(10.1592 -0.0720254 5.8356e-19) +(10.1574 -0.0765347 0) +(10.1553 -0.0812198 0) +(10.1529 -0.086081 0) +(10.1502 -0.0911185 -5.76154e-19) +(10.1473 -0.0963316 5.73716e-19) +(10.1441 -0.101719 0) +(10.1406 -0.10728 0) +(10.1368 -0.113012 -5.6484e-19) +(10.1326 -0.118913 5.57775e-19) +(10.1281 -0.124979 5.57531e-19) +(10.1232 -0.131207 -5.53444e-19) +(10.118 -0.137592 5.45246e-19) +(10.1124 -0.14413 0) +(10.1065 -0.150816 -5.35362e-19) +(10.1001 -0.157644 0) +(10.0934 -0.164608 -5.24185e-19) +(10.0862 -0.171703 -5.18103e-19) +(10.0786 -0.17892 -1.02752e-18) +(10.0706 -0.186252 -1.01406e-18) +(10.0621 -0.193691 -4.97862e-19) +(10.0532 -0.201229 -4.94687e-19) +(10.0438 -0.208856 -4.86958e-19) +(10.034 -0.216561 1.42817e-18) +(10.0237 -0.224336 0) +(10.0129 -0.23217 -4.61811e-19) +(10.0016 -0.24005 4.52742e-19) +(9.98989 -0.247967 -8.78087e-19) +(9.97764 -0.255909 8.58611e-19) +(9.9649 -0.263864 0) +(9.95166 -0.271821 8.2629e-19) +(9.93791 -0.279766 0) +(9.92364 -0.287689 0) +(9.90886 -0.295576 -1.51233e-18) +(9.89356 -0.303415 0) +(9.87773 -0.311193 -8.04647e-21) +(9.86139 -0.318899 1.36994e-18) +(9.84451 -0.326519 6.64031e-19) +(9.8271 -0.33404 0) +(9.80917 -0.34145 0) +(9.79071 -0.348738 5.78835e-19) +(9.77172 -0.355889 -5.52082e-19) +(9.7522 -0.362893 0) +(9.73215 -0.369738 0) +(9.71159 -0.376412 -4.69231e-19) +(9.6905 -0.382903 4.47309e-19) +(9.6689 -0.389201 -6.28532e-21) +(9.64679 -0.395293 0) +(9.62417 -0.401172 -3.53497e-19) +(9.60106 -0.406826 0) +(9.57746 -0.412246 -2.93839e-19) +(9.55338 -0.417425 0) +(9.52883 -0.422353 -5.00264e-21) +(9.50382 -0.427023 0) +(9.47836 -0.431426 0) +(9.45246 -0.435555 0) +(9.42614 -0.439403 0) +(9.39942 -0.442966 -3.86783e-21) +(9.37229 -0.446238 4.79511e-20) +(9.34478 -0.449215 0) +(9.31691 -0.451896 0) +(9.2887 -0.454283 0) +(9.26014 -0.456365 0) +(9.23126 -0.458148 0) +(9.20209 -0.459629 0) +(9.17262 -0.460808 0) +(9.14288 -0.461688 1.98053e-19) +(9.1129 -0.462271 2.32145e-19) +(9.08269 -0.462559 0) +(9.05226 -0.462557 0) +(9.02166 -0.462271 6.41234e-19) +(8.99088 -0.461708 1.04951e-18) +(8.95996 -0.460874 -7.58929e-19) +(8.9289 -0.459777 0) +(8.89772 -0.458417 -8.73079e-19) +(8.86644 -0.4568 9.29779e-19) +(8.83508 -0.454944 0) +(8.80366 -0.452865 0) +(8.77219 -0.450579 -2.18888e-18) +(8.7407 -0.448091 -1.14748e-18) +(8.70917 -0.445419 1.19915e-18) +(8.67765 -0.442577 1.24947e-18) +(8.64617 -0.439584 0) +(8.61476 -0.436465 -1.34978e-18) +(8.58345 -0.433243 1.39868e-18) +(8.55225 -0.429941 2.89206e-18) +(8.52117 -0.426585 1.49217e-18) +(8.49023 -0.423197 -1.53911e-18) +(8.45943 -0.419818 0) +(8.42881 -0.416469 0) +(8.39834 -0.413202 0) +(8.3681 -0.410035 0) +(8.33797 -0.407026 0) +(8.30809 -0.404199 0) +(8.27837 -0.401595 1.82128e-18) +(8.24887 -0.399277 -1.85646e-18) +(8.21961 -0.3973 0) +(8.1906 -0.395701 0) +(8.1619 -0.394547 -1.95386e-18) +(8.13353 -0.393925 -1.98293e-18) +(8.10546 -0.393956 0) +(8.07785 -0.394672 -2.03905e-18) +(8.05069 -0.396173 2.06655e-18) +(8.02418 -0.398613 0) +(7.99828 -0.402029 0) +(7.97307 -0.406598 -2.14191e-18) +(7.94878 -0.412484 4.33488e-18) +(7.92539 -0.419788 -4.38561e-18) +(7.90333 -0.428613 0) +(7.88266 -0.439122 2.23598e-18) +(7.86384 -0.451422 4.49081e-18) +(7.84754 -0.465316 -2.2528e-18) +(7.83301 -0.481135 4.53853e-18) +(7.82575 -0.496979 0) +(10.1095 0.038224 -2.57322e-19) +(10.1122 0.0371335 2.53455e-19) +(10.1148 0.0358449 -2.54972e-19) +(10.1173 0.0343841 -2.55949e-19) +(10.1196 0.0327727 0) +(10.1218 0.0310406 0) +(10.1239 0.0292317 2.57627e-19) +(10.1257 0.0273889 2.59012e-19) +(10.1273 0.0255443 -2.58774e-19) +(10.1288 0.0237245 -2.59986e-19) +(10.1302 0.0219532 0) +(10.1314 0.0202485 0) +(10.1325 0.0186214 0) +(10.1335 0.0170775 -2.61119e-19) +(10.1344 0.0156191 -2.61291e-19) +(10.1353 0.0142466 5.22332e-19) +(10.1361 0.0129578 -4.98358e-22) +(10.137 0.0117494 0) +(10.1378 0.0106162 0) +(10.1386 0.00955259 0) +(10.1394 0.00855273 2.61933e-19) +(10.1402 0.00761063 0) +(10.141 0.00671978 -3.21551e-22) +(10.1419 0.00587349 0) +(10.1427 0.0050648 2.83386e-22) +(10.1436 0.00428731 2.6215e-19) +(10.1446 0.00353443 2.55576e-22) +(10.1455 0.0027999 2.62426e-19) +(10.1465 0.00207728 0) +(10.1476 0.00136032 2.32397e-22) +(10.1486 0.000642892 -2.63131e-19) +(10.1497 -8.106e-05 0) +(10.1508 -0.000817423 -2.63497e-19) +(10.152 -0.0015721 0) +(10.1532 -0.00235079 -2.4086e-22) +(10.1544 -0.00315921 0) +(10.1556 -0.00400284 0) +(10.1568 -0.00488726 0) +(10.1581 -0.00581819 -2.64845e-19) +(10.1594 -0.006801 0) +(10.1606 -0.00784088 -5.3006e-19) +(10.1619 -0.00894275 2.65609e-19) +(10.1632 -0.0101118 -5.31735e-19) +(10.1645 -0.0113529 0) +(10.1658 -0.0126712 0) +(10.1671 -0.0140716 0) +(10.1683 -0.015559 0) +(10.1695 -0.0171384 -9.89116e-22) +(10.1707 -0.0188146 -1.04997e-21) +(10.1719 -0.0205924 -5.33908e-19) +(10.173 -0.0224767 0) +(10.174 -0.0244723 0) +(10.175 -0.0265837 0) +(10.176 -0.0288157 0) +(10.1769 -0.0311727 -5.34914e-19) +(10.1776 -0.0336592 0) +(10.1783 -0.0362793 0) +(10.1789 -0.0390375 0) +(10.1794 -0.0419377 -5.36314e-19) +(10.1798 -0.0449841 0) +(10.1801 -0.0481807 0) +(10.1802 -0.0515306 0) +(10.1801 -0.0550369 0) +(10.1799 -0.0587024 0) +(10.1796 -0.0625293 0) +(10.179 -0.0665198 0) +(10.1783 -0.0706755 5.28633e-19) +(10.1773 -0.0749976 0) +(10.1761 -0.079487 0) +(10.1747 -0.0841442 0) +(10.1731 -0.0889692 0) +(10.1711 -0.0939614 0) +(10.169 -0.0991199 -5.17549e-19) +(10.1665 -0.104443 0) +(10.1637 -0.10993 0) +(10.1606 -0.115576 -3.27192e-21) +(10.1572 -0.121381 0) +(10.1535 -0.127339 0) +(10.1494 -0.133448 -3.49501e-21) +(10.145 -0.139702 4.94548e-19) +(10.1401 -0.146097 4.93831e-19) +(10.1349 -0.152628 0) +(10.1293 -0.159288 4.8441e-19) +(10.1233 -0.166071 4.79253e-19) +(10.1168 -0.172971 4.73797e-19) +(10.11 -0.17998 4.68034e-19) +(10.1026 -0.187089 4.61958e-19) +(10.0949 -0.194292 -9.03236e-19) +(10.0866 -0.201578 0) +(10.0779 -0.208939 -1.75935e-18) +(10.0686 -0.216367 0) +(10.0589 -0.22385 -8.45629e-19) +(10.0487 -0.231378 0) +(10.038 -0.238939 1.63411e-18) +(10.0267 -0.246524 -8.03813e-19) +(10.0149 -0.254121 0) +(10.0026 -0.261719 -7.59426e-19) +(9.98975 -0.269306 0) +(9.97635 -0.276871 0) +(9.9624 -0.284401 7.08137e-19) +(9.9479 -0.291884 0) +(9.93285 -0.299308 -6.65621e-19) +(9.91724 -0.306662 -1.27944e-18) +(9.90107 -0.313931 0) +(9.88435 -0.321106 0) +(9.86707 -0.328173 5.66607e-19) +(9.84923 -0.33512 -1.09197e-18) +(9.83083 -0.341936 1.04254e-18) +(9.81189 -0.34861 4.92697e-19) +(9.79239 -0.355128 4.67125e-19) +(9.77235 -0.361482 4.4755e-19) +(9.75177 -0.367659 0) +(9.73066 -0.373649 -3.93931e-19) +(9.70902 -0.37944 0) +(9.68686 -0.385025 3.38779e-19) +(9.6642 -0.390392 0) +(9.64103 -0.395535 5.59238e-19) +(9.61738 -0.400442 2.48476e-19) +(9.59325 -0.40511 -2.24619e-19) +(9.56866 -0.409526 -1.90709e-19) +(9.54361 -0.413687 0) +(9.51813 -0.417582 0) +(9.49222 -0.421209 -1.02464e-19) +(9.46591 -0.424558 -7.65922e-20) +(9.4392 -0.42763 -4.65087e-20) +(9.41213 -0.430418 -1.28853e-20) +(9.38469 -0.432923 0) +(9.35691 -0.435137 9.45535e-20) +(9.32881 -0.437062 0) +(9.30041 -0.438696 0) +(9.27173 -0.440038 0) +(9.24278 -0.441091 -3.35735e-19) +(9.21358 -0.441855 0) +(9.18415 -0.442334 -4.5215e-19) +(9.15452 -0.442531 0) +(9.12471 -0.442449 0) +(9.09473 -0.442094 2.61213e-21) +(9.06461 -0.441473 -6.91037e-19) +(9.03437 -0.44059 1.5019e-18) +(9.00401 -0.439453 -8.10092e-19) +(8.97357 -0.438062 0) +(8.94306 -0.43643 0) +(8.9125 -0.434569 0) +(8.88192 -0.432491 1.03735e-18) +(8.85132 -0.430212 2.18499e-18) +(8.82072 -0.427739 1.14708e-18) +(8.79014 -0.42509 0) +(8.75961 -0.422287 -2.84495e-22) +(8.72915 -0.419352 0) +(8.69878 -0.416309 0) +(8.66851 -0.413172 1.40934e-18) +(8.63836 -0.409957 -1.46069e-18) +(8.60834 -0.406692 -1.5104e-18) +(8.57847 -0.403402 0) +(8.54874 -0.400128 0) +(8.51917 -0.396892 0) +(8.48975 -0.393736 0) +(8.4605 -0.390683 -1.74217e-18) +(8.4314 -0.387783 -1.78543e-18) +(8.40249 -0.385073 1.82839e-18) +(8.37373 -0.382585 -1.86996e-18) +(8.34516 -0.380391 3.82037e-18) +(8.31676 -0.378543 0) +(8.28855 -0.377094 0) +(8.26053 -0.376109 -1.16976e-21) +(8.23273 -0.375664 0) +(8.20517 -0.37588 -2.09342e-18) +(8.17788 -0.37684 -2.12728e-18) +(8.15083 -0.378641 -2.15404e-18) +(8.12411 -0.381394 0) +(8.09782 -0.385175 0) +(8.07202 -0.390184 2.23472e-18) +(8.04699 -0.396549 -2.2636e-18) +(8.0228 -0.404448 -2.30911e-18) +(7.99963 -0.414037 0) +(7.97777 -0.425459 -2.33714e-18) +(7.95757 -0.438885 -2.35619e-18) +(7.93969 -0.454154 0) +(7.92372 -0.471692 3.09064e-20) +(7.91366 -0.489463 0) +(10.1043 0.0351852 2.4108e-19) +(10.1069 0.0341411 -2.3718e-19) +(10.1094 0.0329425 -2.37517e-19) +(10.1119 0.0316068 2.38298e-19) +(10.1142 0.0301519 0) +(10.1165 0.0286001 0) +(10.1185 0.0269804 -2.4103e-19) +(10.1205 0.0253235 0) +(10.1223 0.0236559 2.42097e-19) +(10.1239 0.0220003 0) +(10.1254 0.0203765 0) +(10.1268 0.0188003 2.42581e-19) +(10.1281 0.0172828 0) +(10.1293 0.0158305 0) +(10.1305 0.0144473 2.43384e-19) +(10.1316 0.0131346 -2.44106e-19) +(10.1326 0.0118921 -2.4426e-19) +(10.1337 0.0107178 0) +(10.1347 0.00960843 0) +(10.1357 0.00855991 0) +(10.1367 0.0075677 -2.44381e-19) +(10.1377 0.00662679 0) +(10.1387 0.00573197 -3.23876e-22) +(10.1397 0.00487721 0) +(10.1408 0.00405696 2.45178e-19) +(10.1418 0.00326506 -2.45291e-19) +(10.1429 0.00249594 2.6299e-22) +(10.144 0.00174356 -2.53564e-22) +(10.1452 0.00100235 0) +(10.1463 0.000266319 2.45802e-19) +(10.1475 -0.00046999 2.45707e-19) +(10.1487 -0.00121235 0) +(10.15 -0.00196622 4.92034e-19) +(10.1512 -0.00273709 0) +(10.1525 -0.0035304 -2.46594e-19) +(10.1539 -0.00435148 -4.93033e-19) +(10.1552 -0.00520561 0) +(10.1566 -0.00609812 -4.93734e-19) +(10.1579 -0.00703415 0) +(10.1593 -0.008019 0) +(10.1607 -0.00905749 4.95447e-19) +(10.1621 -0.0101546 0) +(10.1635 -0.011315 0) +(10.1649 -0.0125437 -4.95829e-19) +(10.1663 -0.0138453 0) +(10.1677 -0.0152248 4.9645e-19) +(10.1691 -0.0166867 0) +(10.1705 -0.018236 -9.94938e-19) +(10.1718 -0.0198772 -4.98234e-19) +(10.1731 -0.021615 9.95898e-19) +(10.1743 -0.023454 0) +(10.1756 -0.0253987 -4.97683e-19) +(10.1767 -0.0274536 0) +(10.1778 -0.029623 0) +(10.1789 -0.0319113 9.96859e-19) +(10.1798 -0.0343227 0) +(10.1807 -0.0368612 0) +(10.1815 -0.0395309 0) +(10.1822 -0.0423356 0) +(10.1828 -0.0452792 4.96485e-19) +(10.1833 -0.0483652 0) +(10.1836 -0.0515967 0) +(10.1838 -0.0549766 0) +(10.1839 -0.0585072 0) +(10.1837 -0.0621909 0) +(10.1835 -0.0660295 0) +(10.183 -0.0700246 -4.92964e-19) +(10.1823 -0.0741773 0) +(10.1814 -0.0784886 0) +(10.1803 -0.0829588 4.86114e-19) +(10.179 -0.0875878 0) +(10.1774 -0.0923752 0) +(10.1755 -0.0973202 4.82899e-19) +(10.1734 -0.102421 0) +(10.171 -0.107677 -4.7511e-19) +(10.1683 -0.113084 -3.03933e-21) +(10.1653 -0.11864 -9.38607e-19) +(10.1619 -0.124343 0) +(10.1582 -0.130187 -4.65846e-19) +(10.1541 -0.136169 -4.6221e-19) +(10.1497 -0.142284 9.09911e-19) +(10.1449 -0.148528 9.01511e-19) +(10.1397 -0.154893 0) +(10.1341 -0.161375 -8.83142e-19) +(10.1281 -0.167966 0) +(10.1216 -0.17466 0) +(10.1147 -0.181448 8.51553e-19) +(10.1074 -0.188325 1.68713e-18) +(10.0995 -0.19528 0) +(10.0912 -0.202305 8.22305e-19) +(10.0825 -0.209392 0) +(10.0732 -0.21653 7.44195e-21) +(10.0634 -0.22371 0) +(10.0531 -0.23092 -7.65409e-19) +(10.0423 -0.238152 -7.42255e-19) +(10.0309 -0.245393 7.25964e-19) +(10.019 -0.252634 7.38861e-21) +(10.0066 -0.259864 0) +(9.99357 -0.267069 0) +(9.98003 -0.27424 -6.54991e-19) +(9.96594 -0.281365 -6.35817e-19) +(9.95128 -0.288432 0) +(9.93606 -0.29543 1.1986e-18) +(9.92028 -0.302346 0) +(9.90393 -0.309169 0) +(9.88702 -0.315888 -5.38418e-19) +(9.86955 -0.322492 5.1591e-19) +(9.85152 -0.328968 -9.79372e-19) +(9.83293 -0.335307 -4.69402e-19) +(9.81378 -0.341496 -4.4543e-19) +(9.79409 -0.347526 0) +(9.77385 -0.353385 0) +(9.75308 -0.359064 -3.65164e-19) +(9.73178 -0.364553 3.39634e-19) +(9.70995 -0.369842 -3.13721e-19) +(9.68762 -0.374922 0) +(9.66479 -0.379786 -2.65801e-19) +(9.64147 -0.384426 -2.38678e-19) +(9.61767 -0.388833 0) +(9.59341 -0.393 4.40908e-21) +(9.56869 -0.396921 -1.51337e-19) +(9.54354 -0.400589 0) +(9.51798 -0.403998 9.88922e-20) +(9.492 -0.407143 0) +(9.46564 -0.410021 0) +(9.43891 -0.412629 3.09297e-20) +(9.41183 -0.414965 0) +(9.38441 -0.417026 -9.16832e-20) +(9.35667 -0.418809 1.55626e-19) +(9.32864 -0.420314 0) +(9.30033 -0.42154 0) +(9.27177 -0.422489 3.26781e-19) +(9.24297 -0.423162 0) +(9.21397 -0.423562 0) +(9.18477 -0.423693 0) +(9.15539 -0.423558 0) +(9.12587 -0.423162 -1.24371e-18) +(9.09622 -0.422511 -6.81165e-19) +(9.06647 -0.42161 -7.37065e-19) +(9.03662 -0.420465 1.59154e-18) +(9.0067 -0.41908 0) +(8.97674 -0.417463 0) +(8.94675 -0.415626 0) +(8.91676 -0.413584 -1.02288e-18) +(8.88678 -0.411348 -1.07883e-18) +(8.85684 -0.408931 -2.26855e-18) +(8.82695 -0.406348 -1.18919e-18) +(8.79712 -0.403621 -1.24349e-18) +(8.76738 -0.40077 1.29689e-18) +(8.73774 -0.397815 0) +(8.70822 -0.394772 -1.40322e-18) +(8.67882 -0.391662 -1.45465e-18) +(8.64956 -0.388505 -1.50587e-18) +(8.62044 -0.385331 1.55584e-18) +(8.59149 -0.382171 1.60571e-18) +(8.56269 -0.379048 0) +(8.53405 -0.376004 0) +(8.50558 -0.373068 3.86164e-22) +(8.47728 -0.370281 1.79731e-18) +(8.44915 -0.367681 -1.84366e-18) +(8.42118 -0.365307 0) +(8.39338 -0.363223 -1.9335e-18) +(8.36574 -0.361483 0) +(8.33825 -0.360145 0) +(8.31092 -0.359277 2.061e-18) +(8.28374 -0.358961 0) +(8.25671 -0.359304 2.1408e-18) +(8.22984 -0.360397 2.1796e-18) +(8.20313 -0.362345 0) +(8.17658 -0.365281 0) +(8.15025 -0.369315 0) +(8.12423 -0.374641 -4.64967e-18) +(8.09864 -0.381425 -4.71605e-18) +(8.07365 -0.389837 4.76303e-18) +(8.04943 -0.400071 0) +(8.02628 -0.412328 0) +(8.0046 -0.426816 0) +(7.98498 -0.443387 5.00594e-18) +(7.9676 -0.462555 -5.00109e-18) +(7.95474 -0.482337 0) +(10.0988 0.0320124 0) +(10.1013 0.031018 0) +(10.1038 0.0299016 4.97512e-22) +(10.1062 0.0286765 -5.41278e-22) +(10.1085 0.027356 0) +(10.1107 0.0259567 -2.24217e-19) +(10.1128 0.024499 0) +(10.1148 0.023005 0) +(10.1166 0.0214956 0) +(10.1184 0.0199895 0) +(10.12 0.0185025 0) +(10.1215 0.0170484 -4.5461e-19) +(10.123 0.0156371 0) +(10.1243 0.0142759 0) +(10.1256 0.012969 -4.56309e-19) +(10.1269 0.0117192 0) +(10.1281 0.0105272 2.28364e-19) +(10.1293 0.0093922 0) +(10.1304 0.00831239 0) +(10.1316 0.00728496 -2.28948e-19) +(10.1327 0.00630641 2.29488e-19) +(10.1338 0.00537289 0) +(10.135 0.00447972 -3.25192e-22) +(10.1361 0.00362237 0) +(10.1373 0.00279552 2.29772e-19) +(10.1385 0.00199431 0) +(10.1397 0.00121331 2.30358e-19) +(10.1409 0.000447615 -2.30509e-19) +(10.1421 -0.000308333 0) +(10.1434 -0.00105941 0) +(10.1446 -0.00181121 -2.30984e-19) +(10.1459 -0.00256861 0) +(10.1473 -0.00333706 -4.62646e-19) +(10.1486 -0.00412149 -4.62497e-19) +(10.15 -0.00492713 0) +(10.1514 -0.00575887 4.63725e-19) +(10.1528 -0.00662189 0) +(10.1542 -0.00752097 4.64474e-19) +(10.1556 -0.00846123 4.64265e-19) +(10.157 -0.00944742 4.64616e-19) +(10.1585 -0.0104843 0) +(10.1599 -0.0115767 0) +(10.1614 -0.012729 0) +(10.1628 -0.013946 4.66703e-19) +(10.1643 -0.0152321 -4.66244e-19) +(10.1657 -0.0165921 -9.33897e-19) +(10.1671 -0.0180303 0) +(10.1685 -0.0195514 9.43982e-22) +(10.1699 -0.0211597 -4.6722e-19) +(10.1712 -0.0228597 -1.05067e-21) +(10.1725 -0.0246555 0) +(10.1738 -0.0265517 4.68778e-19) +(10.175 -0.0285524 0) +(10.1762 -0.0306618 0) +(10.1772 -0.032884 -4.68942e-19) +(10.1782 -0.0352228 4.6747e-19) +(10.1792 -0.0376821 0) +(10.18 -0.0402658 0) +(10.1808 -0.0429774 0) +(10.1814 -0.0458204 -4.67984e-19) +(10.1819 -0.0487981 0) +(10.1823 -0.0519134 0) +(10.1826 -0.0551689 0) +(10.1827 -0.0585671 0) +(10.1826 -0.0621098 0) +(10.1824 -0.0657991 0) +(10.182 -0.0696363 0) +(10.1814 -0.0736225 -4.59372e-19) +(10.1806 -0.0777583 -4.57953e-19) +(10.1796 -0.0820442 -4.58825e-19) +(10.1784 -0.0864801 0) +(10.1769 -0.0910655 0) +(10.1751 -0.0957995 -9.01466e-19) +(10.1731 -0.100681 0) +(10.1708 -0.105707 4.48886e-19) +(10.1682 -0.110877 -4.4635e-19) +(10.1653 -0.116188 8.87228e-19) +(10.1621 -0.121636 0) +(10.1585 -0.127217 0) +(10.1546 -0.132929 0) +(10.1503 -0.138765 -8.61063e-19) +(10.1457 -0.144722 -1.70038e-18) +(10.1406 -0.150793 0) +(10.1352 -0.156973 6.56531e-21) +(10.1293 -0.163256 -8.20793e-19) +(10.123 -0.169635 0) +(10.1163 -0.176103 -8.07596e-19) +(10.1091 -0.182652 -7.96889e-19) +(10.1015 -0.189274 0) +(10.0934 -0.195961 -7.66967e-19) +(10.0848 -0.202705 7.5461e-19) +(10.0757 -0.209496 7.48643e-19) +(10.0661 -0.216325 0) +(10.056 -0.223181 0) +(10.0454 -0.230056 7.06631e-19) +(10.0342 -0.236938 -6.90617e-21) +(10.0225 -0.243818 6.75809e-19) +(10.0103 -0.250685 0) +(9.99754 -0.257528 6.35947e-19) +(9.98421 -0.264336 6.25359e-19) +(9.97034 -0.271099 6.07428e-19) +(9.9559 -0.277804 5.82355e-19) +(9.94091 -0.284441 -5.69921e-19) +(9.92535 -0.291 -5.43943e-19) +(9.90923 -0.297468 -5.23951e-19) +(9.89255 -0.303836 0) +(9.8753 -0.310091 -4.8244e-19) +(9.8575 -0.316225 4.66914e-19) +(9.83914 -0.322225 0) +(9.82023 -0.328083 0) +(9.80077 -0.333786 0) +(9.78076 -0.339326 0) +(9.76022 -0.344693 3.51738e-19) +(9.73916 -0.349878 -3.27387e-19) +(9.71757 -0.354871 3.02633e-19) +(9.69548 -0.359666 0) +(9.67289 -0.364252 -4.94742e-19) +(9.64981 -0.368624 0) +(9.62625 -0.372774 3.91346e-19) +(9.60223 -0.376694 5.12143e-19) +(9.57776 -0.380379 1.4665e-19) +(9.55286 -0.383822 0) +(9.52755 -0.387018 0) +(9.50182 -0.389963 0) +(9.47572 -0.392654 -6.74964e-20) +(9.44924 -0.395088 -1.79555e-20) +(9.42241 -0.397263 0) +(9.39525 -0.399175 0) +(9.36777 -0.400824 -1.51727e-19) +(9.34 -0.402208 0) +(9.31196 -0.403328 0) +(9.28367 -0.404184 0) +(9.25514 -0.404778 0) +(9.22641 -0.405113 4.41801e-19) +(9.19749 -0.405191 4.9909e-19) +(9.16839 -0.405017 0) +(9.13916 -0.404596 6.11276e-19) +(9.10979 -0.403932 6.68742e-19) +(9.08033 -0.403031 -7.27909e-19) +(9.05077 -0.401898 -7.83318e-19) +(9.02116 -0.400539 0) +(8.9915 -0.398961 0) +(8.96183 -0.397176 0) +(8.93215 -0.395195 0) +(8.9025 -0.393032 0) +(8.87289 -0.390697 -2.29875e-22) +(8.84333 -0.388205 1.17699e-18) +(8.81386 -0.385576 0) +(8.78447 -0.382833 -1.28625e-18) +(8.75518 -0.379993 0) +(8.726 -0.377073 1.39343e-18) +(8.69695 -0.374091 1.44688e-18) +(8.66803 -0.371068 1.49942e-18) +(8.63925 -0.368035 -1.55117e-18) +(8.61062 -0.365013 -3.20484e-18) +(8.58215 -0.362032 0) +(8.55383 -0.359131 0) +(8.52566 -0.356338 2.45848e-22) +(8.49766 -0.35369 -1.80266e-18) +(8.4698 -0.351228 0) +(8.44209 -0.348994 -1.90024e-18) +(8.41452 -0.347043 0) +(8.38709 -0.345431 0) +(8.35977 -0.344217 0) +(8.33256 -0.343471 0) +(8.30545 -0.343276 0) +(8.27843 -0.343732 -4.358e-18) +(8.25147 -0.344936 0) +(8.22458 -0.346999 4.53393e-18) +(8.19776 -0.350054 0) +(8.17102 -0.354246 0) +(8.14442 -0.359768 4.77038e-18) +(8.11801 -0.366826 9.71279e-18) +(8.09191 -0.375612 4.94489e-18) +(8.06634 -0.386356 0) +(8.04156 -0.399317 0) +(8.01797 -0.414767 0) +(7.99607 -0.432595 -1.03994e-17) +(7.97665 -0.453416 0) +(7.96038 -0.475182 -5.3074e-18) +(10.0939 0.0289998 0) +(10.0963 0.0280532 0) +(10.0987 0.0270073 2.4154e-19) +(10.101 0.0258729 -4.874e-22) +(10.1032 0.0246604 0) +(10.1054 0.0233823 2.43211e-19) +(10.1075 0.0220538 0) +(10.1095 0.0206913 0) +(10.1114 0.0193112 2.43884e-19) +(10.1131 0.0179286 0) +(10.1148 0.0165568 2.44481e-19) +(10.1164 0.0152072 5.38629e-22) +(10.118 0.013889 0) +(10.1194 0.0126091 0) +(10.1208 0.0113722 4.90984e-19) +(10.1222 0.0101813 0) +(10.1235 0.00903796 -4.35208e-22) +(10.1248 0.00794229 0) +(10.126 0.0068933 0) +(10.1273 0.00588914 2.46061e-19) +(10.1285 0.00492724 0) +(10.1297 0.00400436 0) +(10.131 0.00311693 2.45492e-19) +(10.1322 0.00226085 0) +(10.1334 0.00143192 -2.46149e-19) +(10.1347 0.000625613 4.91767e-19) +(10.1359 -0.000162546 0) +(10.1372 -0.000937341 4.9185e-19) +(10.1385 -0.00170332 -4.91891e-19) +(10.1398 -0.0024655 0) +(10.1412 -0.00322839 0) +(10.1425 -0.00399717 0) +(10.1439 -0.00477632 0) +(10.1453 -0.00557098 4.92614e-19) +(10.1467 -0.00638556 0) +(10.1481 -0.0072251 0) +(10.1495 -0.00809408 0) +(10.1509 -0.00899734 0) +(10.1524 -0.00993947 -5.79489e-22) +(10.1539 -0.010925 -9.85348e-19) +(10.1553 -0.0119587 0) +(10.1568 -0.0130448 4.92408e-19) +(10.1582 -0.0141879 0) +(10.1597 -0.0153921 0) +(10.1611 -0.0166622 4.93128e-19) +(10.1626 -0.0180022 4.9311e-19) +(10.164 -0.0194167 -4.92209e-19) +(10.1654 -0.0209096 4.93e-19) +(10.1667 -0.0224855 4.929e-19) +(10.1681 -0.0241482 -1.00358e-21) +(10.1694 -0.0259022 0) +(10.1706 -0.0277513 4.91265e-19) +(10.1718 -0.0296996 0) +(10.1729 -0.0317511 0) +(10.174 -0.0339095 -4.90135e-19) +(10.175 -0.0361785 -4.90979e-19) +(10.1759 -0.0385618 4.89073e-19) +(10.1768 -0.0410629 4.88434e-19) +(10.1775 -0.0436852 -4.87716e-19) +(10.1781 -0.0464317 0) +(10.1786 -0.0493057 0) +(10.179 -0.0523097 0) +(10.1792 -0.0554463 0) +(10.1793 -0.0587175 0) +(10.1793 -0.0621254 0) +(10.1791 -0.0656717 -4.79999e-19) +(10.1787 -0.0693576 0) +(10.1781 -0.0731841 1.43237e-18) +(10.1773 -0.0771518 4.77114e-19) +(10.1762 -0.081261 9.45837e-19) +(10.175 -0.0855115 0) +(10.1735 -0.0899028 0) +(10.1718 -0.094434 9.36946e-19) +(10.1698 -0.0991036 0) +(10.1675 -0.10391 0) +(10.1649 -0.108851 0) +(10.162 -0.113924 -9.08542e-19) +(10.1588 -0.119126 0) +(10.1553 -0.124454 0) +(10.1514 -0.129903 0) +(10.1472 -0.135469 -8.78585e-19) +(10.1425 -0.141148 5.93025e-21) +(10.1375 -0.146934 0) +(10.1322 -0.152822 8.5747e-19) +(10.1263 -0.158805 6.1543e-21) +(10.1201 -0.164878 -8.30839e-19) +(10.1135 -0.171033 0) +(10.1064 -0.177263 0) +(10.0988 -0.183561 0) +(10.0908 -0.189918 1.5737e-18) +(10.0823 -0.196328 -7.76962e-19) +(10.0733 -0.20278 7.56926e-19) +(10.0638 -0.209265 0) +(10.0538 -0.215775 -7.28044e-19) +(10.0433 -0.2223 0) +(10.0322 -0.228831 -7.03383e-19) +(10.0207 -0.235357 0) +(10.0086 -0.241868 0) +(9.99594 -0.248355 -6.52643e-19) +(9.98276 -0.254806 -6.28415e-19) +(9.96902 -0.261212 0) +(9.95473 -0.267561 -5.97003e-19) +(9.93988 -0.273844 0) +(9.92448 -0.280049 5.92907e-21) +(9.90852 -0.286167 5.36594e-19) +(9.89199 -0.292188 0) +(9.87492 -0.2981 5.63322e-21) +(9.85728 -0.303894 0) +(9.83909 -0.30956 -4.43601e-19) +(9.82036 -0.315088 0) +(9.80107 -0.320469 0) +(9.78125 -0.325692 -7.46777e-19) +(9.7609 -0.33075 0) +(9.74002 -0.335633 0) +(9.71863 -0.340333 -5.98836e-19) +(9.69673 -0.344842 5.47994e-19) +(9.67433 -0.349153 5.04995e-19) +(9.65145 -0.353259 0) +(9.62809 -0.357153 -7.91485e-21) +(9.60428 -0.360827 -6.83369e-19) +(9.58001 -0.364277 -2.8386e-19) +(9.55532 -0.367496 0) +(9.53021 -0.37048 0) +(9.5047 -0.373226 0) +(9.4788 -0.37573 1.31624e-19) +(9.45253 -0.37799 0) +(9.42591 -0.380003 0) +(9.39896 -0.381767 0) +(9.37169 -0.383282 0) +(9.34413 -0.384545 2.21524e-19) +(9.3163 -0.385557 2.79097e-19) +(9.28821 -0.386319 0) +(9.25989 -0.386833 -3.94632e-19) +(9.23136 -0.387102 -4.4946e-19) +(9.20264 -0.387128 -5.07666e-19) +(9.17375 -0.386914 0) +(9.14471 -0.386467 0) +(9.11554 -0.385789 6.84043e-19) +(9.08626 -0.384887 1.4818e-18) +(9.0569 -0.383766 0) +(9.02746 -0.382433 0) +(8.99799 -0.380894 0) +(8.96849 -0.37916 0) +(8.93898 -0.377242 1.02783e-18) +(8.90949 -0.375152 1.08434e-18) +(8.88003 -0.372901 2.28085e-18) +(8.85062 -0.370505 -1.19644e-18) +(8.82128 -0.36798 1.25199e-18) +(8.79201 -0.365347 0) +(8.76284 -0.362622 -1.36194e-18) +(8.73376 -0.359822 -1.41663e-18) +(8.7048 -0.356966 0) +(8.67595 -0.354074 0) +(8.64722 -0.351172 0) +(8.61863 -0.348287 1.63023e-18) +(8.59017 -0.345446 0) +(8.56184 -0.342679 0) +(8.53363 -0.340022 5.35698e-18) +(8.50555 -0.33751 5.51008e-18) +(8.47758 -0.335181 0) +(8.44972 -0.333077 5.81301e-18) +(8.42196 -0.33125 3.97567e-18) +(8.39427 -0.329753 0) +(8.36665 -0.32865 0) +(8.33906 -0.328007 -4.27104e-18) +(8.3115 -0.327907 0) +(8.28393 -0.32845 -6.2802e-21) +(8.25633 -0.329733 0) +(8.22867 -0.331873 -4.64354e-18) +(8.20093 -0.335011 0) +(8.17312 -0.339302 0) +(8.14525 -0.344955 -4.93061e-18) +(8.11733 -0.352183 -1.00192e-17) +(8.08945 -0.36123 -5.08581e-18) +(8.06179 -0.372373 0) +(8.03456 -0.385911 -5.27474e-18) +(8.00821 -0.402215 -5.34744e-18) +(7.98307 -0.421215 -4.07867e-20) +(7.96055 -0.443735 0) +(7.93963 -0.46733 -4.79753e-20) +(10.0892 0.0259364 0) +(10.0915 0.0250385 2.06156e-19) +(10.0938 0.0240585 0) +(10.096 0.0230062 -2.07889e-19) +(10.0982 0.0218893 0) +(10.1004 0.0207179 0) +(10.1024 0.0195032 0) +(10.1044 0.0182577 0) +(10.1063 0.0169939 -2.10682e-19) +(10.1081 0.0157237 0) +(10.1098 0.0144581 -2.11546e-19) +(10.1114 0.0132067 5.19282e-22) +(10.113 0.0119775 0) +(10.1146 0.0107767 2.12119e-19) +(10.116 0.00960909 -2.12911e-19) +(10.1175 0.00847783 0) +(10.1189 0.00738491 -4.32381e-22) +(10.1202 0.00633099 0) +(10.1216 0.0053159 -4.27093e-19) +(10.1229 0.00433842 0) +(10.1242 0.00339682 0) +(10.1255 0.00248854 0) +(10.1268 0.0016108 -6.50273e-22) +(10.1281 0.000760181 0) +(10.1294 -6.67721e-05 0) +(10.1307 -0.000874024 -4.30771e-19) +(10.132 -0.00166544 0) +(10.1333 -0.00244527 -4.31548e-19) +(10.1347 -0.00321766 4.31937e-19) +(10.136 -0.00398702 0) +(10.1374 -0.00475768 0) +(10.1388 -0.0055341 0) +(10.1402 -0.00632077 0) +(10.1416 -0.00712211 0) +(10.143 -0.00794255 0) +(10.1444 -0.00878656 0) +(10.1459 -0.00965847 0) +(10.1473 -0.0105628 4.34911e-19) +(10.1488 -0.0115037 -4.35886e-19) +(10.1502 -0.0124859 4.36272e-19) +(10.1517 -0.0135133 0) +(10.1531 -0.0145904 -4.37021e-19) +(10.1546 -0.0157213 0) +(10.156 -0.0169102 0) +(10.1575 -0.0181613 0) +(10.1589 -0.0194787 4.37525e-19) +(10.1603 -0.0208664 8.763e-22) +(10.1617 -0.0223285 4.37983e-19) +(10.163 -0.023869 0) +(10.1643 -0.025492 -1.01667e-21) +(10.1656 -0.0272011 0) +(10.1668 -0.0290004 -1.11973e-21) +(10.1679 -0.0308936 0) +(10.169 -0.0328843 4.38495e-19) +(10.1701 -0.0349762 4.39702e-19) +(10.171 -0.0371726 0) +(10.1719 -0.0394771 -4.39484e-19) +(10.1727 -0.0418928 -1.4667e-21) +(10.1734 -0.0444228 4.39003e-19) +(10.174 -0.0470702 0) +(10.1744 -0.0498377 0) +(10.1748 -0.0527277 4.35979e-19) +(10.175 -0.0557425 0) +(10.175 -0.0588844 0) +(10.1749 -0.0621549 -8.67295e-19) +(10.1746 -0.0655557 4.34645e-19) +(10.1742 -0.0690879 -8.63107e-19) +(10.1736 -0.0727523 -8.64891e-19) +(10.1727 -0.0765496 0) +(10.1717 -0.0804797 -8.59455e-19) +(10.1704 -0.0845425 0) +(10.1689 -0.0887374 0) +(10.1671 -0.0930635 0) +(10.165 -0.0975194 8.40044e-19) +(10.1627 -0.102103 0) +(10.1601 -0.106813 8.30623e-19) +(10.1572 -0.111647 8.30718e-19) +(10.154 -0.116601 -8.19756e-19) +(10.1505 -0.121672 -8.13749e-19) +(10.1466 -0.126857 0) +(10.1423 -0.132152 8.06256e-19) +(10.1377 -0.13755 7.99102e-19) +(10.1327 -0.143049 7.85623e-19) +(10.1274 -0.148643 7.77513e-19) +(10.1216 -0.154324 6.02126e-21) +(10.1154 -0.160089 7.66005e-19) +(10.1087 -0.16593 -7.50434e-19) +(10.1017 -0.171839 0) +(10.0942 -0.177811 -7.3e-19) +(10.0862 -0.183838 -7.25274e-19) +(10.0777 -0.189911 0) +(10.0688 -0.196022 -6.25614e-21) +(10.0593 -0.202163 -6.83163e-19) +(10.0494 -0.208325 6.7643e-19) +(10.039 -0.214499 0) +(10.028 -0.220675 6.42648e-19) +(10.0165 -0.226846 -6.28099e-19) +(10.0045 -0.233 6.13027e-19) +(9.992 -0.239129 0) +(9.97892 -0.245222 6.05066e-21) +(9.96529 -0.25127 5.64666e-19) +(9.95112 -0.257262 0) +(9.93639 -0.263189 0) +(9.92111 -0.269041 5.76013e-21) +(9.90528 -0.274808 -4.92933e-19) +(9.88889 -0.28048 0) +(9.87196 -0.286049 9.13541e-19) +(9.85447 -0.291503 0) +(9.83643 -0.296834 4.18435e-19) +(9.81785 -0.302033 0) +(9.79872 -0.30709 0) +(9.77907 -0.311997 1.40344e-18) +(9.75888 -0.316746 0) +(9.73817 -0.321328 -6.06095e-19) +(9.71695 -0.325735 8.89126e-21) +(9.69523 -0.32996 -1.03268e-18) +(9.67301 -0.333996 0) +(9.65031 -0.337836 0) +(9.62714 -0.341475 -3.7297e-19) +(9.60351 -0.344905 7.36558e-21) +(9.57944 -0.348121 5.35114e-19) +(9.55493 -0.351118 0) +(9.53001 -0.353893 0) +(9.50468 -0.356441 -1.07679e-19) +(9.47897 -0.358761 -5.761e-21) +(9.4529 -0.360849 -8.62908e-22) +(9.42646 -0.362703 0) +(9.3997 -0.364322 0) +(9.37262 -0.365704 1.62524e-19) +(9.34524 -0.366848 -4.31194e-19) +(9.31759 -0.367756 -5.42413e-19) +(9.28968 -0.368427 0) +(9.26153 -0.368864 3.81502e-19) +(9.23316 -0.369069 4.40918e-19) +(9.2046 -0.369044 0) +(9.17586 -0.368794 0) +(9.14697 -0.368322 -6.1007e-19) +(9.11794 -0.367634 1.96042e-21) +(9.08879 -0.366735 -7.21476e-19) +(9.05955 -0.365629 0) +(9.03023 -0.364323 0) +(9.00085 -0.362825 -8.92882e-19) +(8.97144 -0.361144 0) +(8.94201 -0.359291 6.78825e-22) +(8.91257 -0.357276 -2.12324e-18) +(8.88316 -0.355112 -2.23557e-18) +(8.85377 -0.352812 -1.9775e-22) +(8.82444 -0.350392 -1.22951e-18) +(8.79516 -0.347869 1.28508e-18) +(8.76594 -0.345261 1.34053e-18) +(8.73681 -0.342583 0) +(8.70775 -0.339855 0) +(8.67879 -0.337095 -1.50501e-18) +(8.64992 -0.334329 0) +(8.62114 -0.331579 0) +(8.59246 -0.328874 0) +(8.56386 -0.326242 0) +(8.53535 -0.323717 -3.54969e-18) +(8.50691 -0.321331 3.84149e-22) +(8.47854 -0.319125 0) +(8.4502 -0.317137 -3.86741e-18) +(8.42189 -0.31542 -3.97257e-18) +(8.39358 -0.314022 4.07962e-18) +(8.36524 -0.31301 0) +(8.33684 -0.312445 4.28575e-18) +(8.30836 -0.312416 0) +(8.27973 -0.313008 8.99321e-18) +(8.25093 -0.314334 0) +(8.22189 -0.316502 0) +(8.19258 -0.319669 0) +(8.16296 -0.323988 0) +(8.13301 -0.329683 -1.70798e-20) +(8.10268 -0.336981 5.10879e-18) +(8.07203 -0.346166 0) +(8.04114 -0.357567 -5.33583e-18) +(8.01015 -0.371528 5.40512e-18) +(7.97955 -0.388547 5.48998e-18) +(7.94935 -0.408561 -4.49556e-20) +(7.92183 -0.43276 5.68375e-18) +(7.8934 -0.457818 -5.37175e-20) +(10.0841 0.0223422 0) +(10.0863 0.021503 -3.89955e-22) +(10.0885 0.020597 1.76894e-19) +(10.0907 0.0196326 0) +(10.0929 0.0186158 0) +(10.0949 0.0175543 0) +(10.097 0.0164561 0) +(10.0989 0.0153305 0) +(10.1008 0.0141866 0) +(10.1026 0.0130337 0) +(10.1044 0.0118804 1.81612e-19) +(10.1061 0.0107343 3.64707e-19) +(10.1077 0.00960215 0) +(10.1093 0.00848953 -1.83511e-19) +(10.1109 0.00740063 0) +(10.1124 0.0063388 0) +(10.1138 0.005306 1.83896e-19) +(10.1153 0.00430362 0) +(10.1167 0.00333173 3.70996e-19) +(10.1181 0.00239011 0) +(10.1194 0.00147735 -3.71711e-19) +(10.1208 0.00059202 0) +(10.1222 -0.000268343 -3.73811e-19) +(10.1235 -0.00110603 3.73851e-19) +(10.1249 -0.00192422 3.74545e-19) +(10.1262 -0.0027258 3.75231e-19) +(10.1276 -0.00351444 0) +(10.129 -0.00429341 3.76585e-19) +(10.1303 -0.00506675 0) +(10.1317 -0.00583792 0) +(10.1331 -0.00661119 3.78584e-19) +(10.1345 -0.0073902 0) +(10.1359 -0.00817934 0) +(10.1374 -0.00898231 0) +(10.1388 -0.00980351 0) +(10.1402 -0.0106467 0) +(10.1417 -0.0115163 0) +(10.1431 -0.0124161 -7.66845e-19) +(10.1446 -0.0133503 0) +(10.146 -0.0143229 0) +(10.1475 -0.015338 0) +(10.1489 -0.0163995 0) +(10.1504 -0.0175113 0) +(10.1518 -0.0186775 -3.86712e-19) +(10.1532 -0.0199019 -3.87259e-19) +(10.1546 -0.0211885 -7.76424e-19) +(10.1559 -0.022541 3.89183e-19) +(10.1573 -0.0239632 -3.89705e-19) +(10.1586 -0.0254589 3.89221e-19) +(10.1598 -0.0270318 -3.90668e-19) +(10.161 -0.0286856 0) +(10.1622 -0.0304239 -3.915e-19) +(10.1633 -0.0322501 0) +(10.1644 -0.0341677 -3.92173e-19) +(10.1653 -0.0361801 0) +(10.1663 -0.0382905 0) +(10.1671 -0.0405019 0) +(10.1678 -0.0428175 -3.92926e-19) +(10.1684 -0.04524 -3.91441e-19) +(10.1689 -0.0477723 3.91352e-19) +(10.1693 -0.0504168 0) +(10.1696 -0.0531758 3.89236e-19) +(10.1698 -0.0560514 0) +(10.1697 -0.0590455 0) +(10.1696 -0.0621598 3.80819e-21) +(10.1692 -0.0653957 0) +(10.1687 -0.0687541 1.5576e-18) +(10.168 -0.072236 0) +(10.1671 -0.0758415 7.73245e-19) +(10.166 -0.0795708 0) +(10.1647 -0.0834236 0) +(10.1631 -0.0873993 0) +(10.1613 -0.091497 0) +(10.1592 -0.0957154 -7.64855e-19) +(10.1568 -0.100053 0) +(10.1542 -0.104507 -7.5769e-19) +(10.1513 -0.109077 7.48357e-19) +(10.148 -0.113758 5.35507e-21) +(10.1444 -0.118548 5.45044e-21) +(10.1405 -0.123443 0) +(10.1363 -0.128439 0) +(10.1316 -0.133532 0) +(10.1266 -0.138718 -5.77699e-21) +(10.1213 -0.14399 -1.42349e-18) +(10.1155 -0.149345 5.90316e-21) +(10.1093 -0.154775 0) +(10.1027 -0.160275 1.37758e-18) +(10.0956 -0.165838 0) +(10.0881 -0.171458 6.74275e-19) +(10.0802 -0.177128 6.58718e-19) +(10.0718 -0.182839 0) +(10.0629 -0.188584 -1.28277e-18) +(10.0535 -0.194356 6.12133e-21) +(10.0436 -0.200146 -6.15987e-19) +(10.0332 -0.205945 0) +(10.0224 -0.211745 -1.18942e-18) +(10.011 -0.217537 5.84807e-19) +(9.99905 -0.223313 -5.71352e-19) +(9.9866 -0.229062 0) +(9.97362 -0.234777 5.42894e-19) +(9.9601 -0.240448 -5.27889e-19) +(9.94604 -0.246064 0) +(9.93143 -0.251618 0) +(9.91628 -0.257099 9.53942e-19) +(9.90058 -0.262499 5.53516e-21) +(9.88433 -0.267809 0) +(9.86754 -0.273019 -4.27089e-19) +(9.8502 -0.278121 0) +(9.83231 -0.283106 7.68707e-19) +(9.81389 -0.287965 0) +(9.79493 -0.292689 0) +(9.77544 -0.297272 -6.589e-19) +(9.75543 -0.301704 0) +(9.7349 -0.305979 5.74275e-19) +(9.71385 -0.310088 5.30646e-19) +(9.69231 -0.314025 8.39991e-21) +(9.67028 -0.317784 0) +(9.64776 -0.321359 0) +(9.62478 -0.324742 3.40398e-19) +(9.60134 -0.327929 3.00305e-19) +(9.57745 -0.330914 -2.51992e-19) +(9.55313 -0.333694 0) +(9.5284 -0.336263 1.47077e-19) +(9.50326 -0.338621 1.03087e-19) +(9.47774 -0.340763 -5.22349e-20) +(9.45184 -0.342687 -3.68821e-21) +(9.42559 -0.344392 0) +(9.399 -0.345875 0) +(9.37209 -0.347136 -1.56398e-19) +(9.34488 -0.348175 4.23533e-19) +(9.31738 -0.34899 2.63393e-19) +(9.28962 -0.349585 0) +(9.26162 -0.349959 0) +(9.23339 -0.350116 -4.26492e-19) +(9.20496 -0.350058 0) +(9.17633 -0.349788 0) +(9.14754 -0.349311 1.18615e-18) +(9.1186 -0.348631 -1.29703e-18) +(9.08953 -0.347752 0) +(9.06035 -0.34668 0) +(9.03108 -0.345422 0) +(9.00173 -0.343985 8.71064e-19) +(8.97232 -0.342376 0) +(8.94288 -0.340607 -1.96738e-18) +(8.91341 -0.338686 2.07955e-18) +(8.88393 -0.336627 1.0957e-18) +(8.85446 -0.334441 2.30401e-18) +(8.825 -0.332143 1.20821e-18) +(8.79557 -0.329749 -1.26416e-18) +(8.76617 -0.327273 1.32023e-18) +(8.73681 -0.324733 0) +(8.7075 -0.322146 0) +(8.67823 -0.319531 1.48823e-18) +(8.649 -0.316911 3.08809e-18) +(8.61982 -0.314306 0) +(8.59068 -0.311747 0) +(8.56156 -0.309256 0) +(8.53245 -0.306869 3.53509e-18) +(8.50335 -0.304613 -3.64631e-18) +(8.47421 -0.302532 3.75919e-18) +(8.44503 -0.300658 0) +(8.41576 -0.299045 0) +(8.38637 -0.297736 -4.09402e-18) +(8.35683 -0.2968 0) +(8.32707 -0.29629 -4.32451e-18) +(8.29704 -0.2963 0) +(8.26667 -0.296903 -9.10369e-18) +(8.2359 -0.298222 -4.67416e-18) +(8.20462 -0.300357 0) +(8.17276 -0.303471 0) +(8.14021 -0.307722 0) +(8.1069 -0.313337 5.13633e-18) +(8.07268 -0.320561 0) +(8.03753 -0.329703 -5.39885e-18) +(8.00139 -0.34115 5.48572e-18) +(7.96426 -0.355287 0) +(7.92664 -0.372767 5.74877e-18) +(7.88795 -0.393518 1.16675e-17) +(7.85186 -0.419271 -5.88176e-18) +(7.8104 -0.445309 5.9667e-18) +(10.0788 0.0181408 0) +(10.081 0.0173703 -1.49227e-19) +(10.0832 0.0165459 -3.83863e-22) +(10.0853 0.0156751 0) +(10.0874 0.0147623 0) +(10.0894 0.0138129 0) +(10.0914 0.0128331 1.52055e-19) +(10.0933 0.0118292 0) +(10.0952 0.0108079 1.53244e-19) +(10.097 0.0097758 0) +(10.0988 0.00873956 -3.09214e-19) +(10.1006 0.00770495 -1.55378e-19) +(10.1022 0.00667745 0) +(10.1039 0.00566147 0) +(10.1055 0.00466093 0) +(10.107 0.00367862 0) +(10.1086 0.00271684 -3.15745e-19) +(10.1101 0.00177682 0) +(10.1116 0.000859417 0) +(10.113 -3.55241e-05 0) +(10.1145 -0.00090834 7.04901e-22) +(10.1159 -0.00176032 0) +(10.1173 -0.00259276 -3.20447e-19) +(10.1187 -0.00340777 -3.21963e-19) +(10.1201 -0.00420737 -6.19018e-22) +(10.1215 -0.00499429 -3.23662e-19) +(10.1229 -0.00577103 -3.23917e-19) +(10.1244 -0.00654085 -6.50118e-19) +(10.1258 -0.00730654 0) +(10.1272 -0.00807173 0) +(10.1286 -0.00883943 -3.27863e-19) +(10.13 -0.00961349 0) +(10.1315 -0.0103971 0) +(10.1329 -0.0111943 0) +(10.1343 -0.0120083 3.30627e-19) +(10.1358 -0.0128432 0) +(10.1372 -0.0137023 0) +(10.1387 -0.0145896 3.33693e-19) +(10.1401 -0.0155087 0) +(10.1415 -0.0164633 -3.34669e-19) +(10.143 -0.0174572 0) +(10.1444 -0.0184939 0) +(10.1458 -0.0195774 0) +(10.1472 -0.0207108 6.76257e-19) +(10.1485 -0.0218983 8.14724e-22) +(10.1499 -0.0231431 6.79223e-19) +(10.1512 -0.024449 0) +(10.1525 -0.0258193 0) +(10.1537 -0.0272577 -3.42177e-19) +(10.1549 -0.0287675 0) +(10.1561 -0.0303522 0) +(10.1572 -0.0320149 -3.4297e-19) +(10.1583 -0.0337592 0) +(10.1592 -0.035588 0) +(10.1602 -0.0375046 0) +(10.161 -0.0395117 0) +(10.1617 -0.0416124 0) +(10.1624 -0.0438094 0) +(10.163 -0.0461053 3.4719e-19) +(10.1634 -0.0485026 -6.93295e-19) +(10.1637 -0.0510036 6.91964e-19) +(10.1639 -0.0536103 -6.95404e-19) +(10.164 -0.0563248 0) +(10.1639 -0.0591486 -6.91776e-19) +(10.1637 -0.0620834 1.38651e-18) +(10.1633 -0.0651303 -6.90839e-19) +(10.1627 -0.0682904 -6.94063e-19) +(10.1619 -0.0715641 0) +(10.1609 -0.0749517 -1.38024e-18) +(10.1597 -0.0784534 0) +(10.1583 -0.0820689 0) +(10.1567 -0.0857976 0) +(10.1548 -0.0896387 6.81139e-19) +(10.1527 -0.0935909 0) +(10.1503 -0.0976528 -6.7617e-19) +(10.1476 -0.101822 0) +(10.1446 -0.106097 -6.75158e-19) +(10.1413 -0.110475 6.71739e-19) +(10.1377 -0.114953 6.67996e-19) +(10.1337 -0.119527 0) +(10.1294 -0.124195 -6.54033e-19) +(10.1248 -0.128951 0) +(10.1198 -0.133791 -6.49542e-19) +(10.1144 -0.138711 1.28234e-18) +(10.1086 -0.143706 6.38073e-19) +(10.1024 -0.148771 0) +(10.0958 -0.153899 -5.81293e-21) +(10.0888 -0.159084 0) +(10.0813 -0.164321 -6.04357e-19) +(10.0734 -0.169603 -6.02201e-19) +(10.065 -0.174922 0) +(10.0562 -0.180271 5.84784e-19) +(10.0468 -0.185644 5.75385e-19) +(10.037 -0.191032 1.12512e-18) +(10.0267 -0.196428 0) +(10.0159 -0.201824 5.88182e-21) +(10.0046 -0.207211 0) +(9.99278 -0.212581 0) +(9.98043 -0.217926 0) +(9.96756 -0.223237 4.90452e-19) +(9.95415 -0.228506 0) +(9.94021 -0.233725 0) +(9.92573 -0.238883 0) +(9.91071 -0.243973 -5.4455e-21) +(9.89515 -0.248987 8.44137e-19) +(9.87904 -0.253916 0) +(9.8624 -0.258751 7.75033e-19) +(9.84521 -0.263485 7.41699e-19) +(9.82749 -0.268108 -7.17321e-19) +(9.80923 -0.272614 0) +(9.79045 -0.276994 0) +(9.77113 -0.281241 0) +(9.75129 -0.285348 -5.60731e-19) +(9.73094 -0.289307 0) +(9.71008 -0.293113 0) +(9.68872 -0.296758 8.15621e-21) +(9.66687 -0.300236 -3.99561e-19) +(9.64454 -0.303542 -3.57134e-19) +(9.62174 -0.306671 -7.30386e-21) +(9.59849 -0.309617 -2.69868e-19) +(9.57479 -0.312374 0) +(9.55065 -0.31494 0) +(9.52609 -0.31731 -6.11409e-21) +(9.50113 -0.319483 0) +(9.47578 -0.321456 0) +(9.45004 -0.323226 4.2953e-21) +(9.42395 -0.324792 0) +(9.39751 -0.326152 0) +(9.37074 -0.327305 1.57842e-19) +(9.34366 -0.328251 -2.04339e-19) +(9.31629 -0.32899 0) +(9.28864 -0.329523 0) +(9.26074 -0.329852 0) +(9.23259 -0.329979 4.15385e-19) +(9.20422 -0.329905 4.68204e-19) +(9.17565 -0.329635 0) +(9.1469 -0.329171 -5.72761e-19) +(9.11797 -0.328518 6.26899e-19) +(9.08889 -0.327681 -6.8308e-19) +(9.05968 -0.326664 7.37603e-19) +(9.03035 -0.325474 0) +(9.00092 -0.324116 8.47457e-19) +(8.9714 -0.3226 0) +(8.94182 -0.320933 9.57552e-19) +(8.91217 -0.319127 -1.01349e-18) +(8.88248 -0.317189 1.0701e-18) +(8.85275 -0.315134 -1.12595e-18) +(8.82299 -0.312973 -1.18249e-18) +(8.79321 -0.310722 0) +(8.76342 -0.308395 -1.29601e-18) +(8.7336 -0.306005 0) +(8.70377 -0.303573 0) +(8.67391 -0.301112 0) +(8.64403 -0.298647 -2.20942e-22) +(8.61411 -0.296195 3.16573e-18) +(8.58413 -0.293785 0) +(8.55408 -0.291435 0) +(8.52393 -0.289184 -3.51696e-18) +(8.49365 -0.28705 0) +(8.4632 -0.285082 -3.75419e-18) +(8.43254 -0.283302 -3.87402e-18) +(8.40163 -0.28177 3.99673e-18) +(8.37038 -0.280518 0) +(8.33876 -0.279618 -4.24299e-18) +(8.30664 -0.279116 4.3612e-18) +(8.27397 -0.279104 4.49492e-18) +(8.24059 -0.27965 -6.92522e-21) +(8.20642 -0.280869 4.74456e-18) +(8.17127 -0.282865 0) +(8.13502 -0.285791 0) +(8.09743 -0.289811 5.14991e-18) +(8.05835 -0.295142 0) +(8.0175 -0.302048 0) +(7.97469 -0.310844 5.54384e-18) +(7.92974 -0.321971 0) +(7.88234 -0.335849 5.84583e-18) +(7.83304 -0.353304 -5.92851e-18) +(7.78044 -0.374281 -6.04566e-18) +(7.73026 -0.401166 -6.19501e-18) +(7.66799 -0.427742 0) +(10.0737 0.0132338 0) +(10.0758 0.0125416 1.24679e-19) +(10.0779 0.0118064 -3.44773e-22) +(10.0799 0.0110346 0) +(10.082 0.0102295 0) +(10.0839 0.00939495 0) +(10.0859 0.00853526 -3.96051e-22) +(10.0878 0.00765482 0) +(10.0897 0.00675823 -1.29455e-19) +(10.0916 0.0058502 0) +(10.0934 0.00493535 4.10379e-22) +(10.0951 0.00401805 0) +(10.0969 0.00310234 0) +(10.0985 0.00219177 -1.31945e-19) +(10.1002 0.00128942 -1.32501e-19) +(10.1018 0.000397771 0) +(10.1034 -0.000481179 1.33594e-19) +(10.105 -0.00134608 0) +(10.1065 -0.002196 0) +(10.108 -0.00303063 0) +(10.1095 -0.00385006 2.72099e-19) +(10.111 -0.00465487 0) +(10.1125 -0.00544598 6.37487e-22) +(10.114 -0.00622473 0) +(10.1154 -0.00699269 -2.76144e-19) +(10.1169 -0.00775181 0) +(10.1183 -0.00850415 2.78147e-19) +(10.1198 -0.00925213 5.74567e-22) +(10.1212 -0.00999822 0) +(10.1227 -0.0107452 -2.80579e-19) +(10.1241 -0.0114957 -2.81579e-19) +(10.1256 -0.012253 0) +(10.127 -0.0130198 0) +(10.1285 -0.0137994 0) +(10.1299 -0.014595 -5.80439e-22) +(10.1313 -0.0154098 0) +(10.1328 -0.0162471 0) +(10.1342 -0.0171102 0) +(10.1356 -0.0180022 2.89479e-19) +(10.137 -0.0189268 2.91108e-19) +(10.1384 -0.0198871 0) +(10.1398 -0.0208864 -2.92362e-19) +(10.1412 -0.0219282 2.93306e-19) +(10.1426 -0.0230157 -2.95008e-19) +(10.1439 -0.0241522 2.95962e-19) +(10.1452 -0.025341 -2.96903e-19) +(10.1465 -0.0265853 0) +(10.1477 -0.0278885 0) +(10.1489 -0.0292536 0) +(10.15 -0.0306838 0) +(10.1511 -0.0321821 0) +(10.1522 -0.0337518 6.0329e-19) +(10.1532 -0.0353956 0) +(10.1541 -0.0371166 3.02572e-19) +(10.1549 -0.0389175 0) +(10.1557 -0.0408011 0) +(10.1563 -0.04277 -3.04506e-19) +(10.1569 -0.0448266 0) +(10.1574 -0.0469734 0) +(10.1578 -0.0492126 3.07535e-19) +(10.158 -0.0515463 -6.15993e-19) +(10.1581 -0.0539763 0) +(10.1581 -0.0565045 -6.14149e-19) +(10.1579 -0.0591324 6.18027e-19) +(10.1576 -0.0618613 -1.2333e-18) +(10.1571 -0.0646923 6.18682e-19) +(10.1565 -0.0676262 6.14979e-19) +(10.1556 -0.0706636 0) +(10.1546 -0.0738048 6.18425e-19) +(10.1533 -0.0770498 0) +(10.1518 -0.0803984 6.1306e-19) +(10.1501 -0.0838502 0) +(10.1482 -0.0874044 -6.15328e-19) +(10.146 -0.0910598 0) +(10.1435 -0.094815 6.12403e-19) +(10.1408 -0.0986683 0) +(10.1377 -0.102618 -6.03582e-19) +(10.1344 -0.106661 -6.01092e-19) +(10.1307 -0.110795 0) +(10.1267 -0.115016 0) +(10.1224 -0.119323 5.19014e-21) +(10.1178 -0.12371 -5.88123e-19) +(10.1127 -0.128174 0) +(10.1073 -0.13271 -1.16474e-18) +(10.1015 -0.137315 5.74926e-19) +(10.0954 -0.141982 5.69808e-19) +(10.0888 -0.146708 -1.13415e-18) +(10.0818 -0.151485 0) +(10.0743 -0.156309 1.10989e-18) +(10.0664 -0.161174 0) +(10.0581 -0.166072 0) +(10.0493 -0.170998 0) +(10.04 -0.175945 0) +(10.0303 -0.180906 -5.20101e-19) +(10.0201 -0.185873 0) +(10.0093 -0.190839 5.01905e-19) +(9.99811 -0.195798 4.8654e-19) +(9.98638 -0.200741 -4.76296e-19) +(9.97413 -0.20566 -4.65577e-19) +(9.96136 -0.210548 -4.59818e-19) +(9.94807 -0.215397 -4.42692e-19) +(9.93425 -0.2202 4.30517e-19) +(9.9199 -0.224947 0) +(9.90502 -0.229632 -4.09871e-19) +(9.8896 -0.234246 -3.9613e-19) +(9.87364 -0.238783 -3.76868e-19) +(9.85715 -0.243233 -1.09648e-18) +(9.84012 -0.247589 -7.03759e-19) +(9.82256 -0.251845 6.62789e-19) +(9.80446 -0.255993 6.30482e-19) +(9.78584 -0.260024 0) +(9.76669 -0.263934 0) +(9.74702 -0.267715 8.54261e-21) +(9.72683 -0.27136 4.91404e-19) +(9.70614 -0.274864 4.54211e-19) +(9.68495 -0.278221 7.78316e-21) +(9.66327 -0.281426 3.84508e-19) +(9.6411 -0.284471 3.44237e-19) +(9.61847 -0.287355 -3.03054e-19) +(9.59537 -0.290069 2.60977e-19) +(9.57182 -0.292611 0) +(9.54783 -0.294977 -1.68079e-19) +(9.52341 -0.297164 -2.53256e-19) +(9.49858 -0.299169 0) +(9.47335 -0.30099 3.24977e-20) +(9.44773 -0.302625 0) +(9.42173 -0.304071 0) +(9.39538 -0.305329 -1.10149e-19) +(9.36869 -0.306396 -1.55018e-19) +(9.34167 -0.307272 2.08917e-19) +(9.31434 -0.307958 2.59343e-19) +(9.28671 -0.308454 0) +(9.25881 -0.308761 0) +(9.23065 -0.308882 -4.11711e-19) +(9.20224 -0.308818 -4.64941e-19) +(9.1736 -0.308571 0) +(9.14475 -0.308146 0) +(9.1157 -0.307546 6.30037e-19) +(9.08647 -0.306774 6.83632e-19) +(9.05707 -0.305837 -7.39688e-19) +(9.02752 -0.304739 0) +(8.99782 -0.303486 -8.53338e-19) +(8.96799 -0.302085 0) +(8.93804 -0.300545 0) +(8.90799 -0.298874 -1.0282e-18) +(8.87783 -0.297081 4.52007e-22) +(8.84757 -0.295177 0) +(8.81721 -0.293174 0) +(8.78676 -0.291084 0) +(8.7562 -0.288921 1.32821e-18) +(8.72554 -0.286696 0) +(8.69476 -0.284429 1.4521e-18) +(8.66385 -0.282131 0) +(8.63278 -0.279824 -1.8793e-22) +(8.60153 -0.277524 -3.28424e-18) +(8.57008 -0.275258 0) +(8.53837 -0.273041 3.54442e-18) +(8.50637 -0.270909 0) +(8.47402 -0.26888 3.81101e-18) +(8.44127 -0.266996 0) +(8.40802 -0.265279 4.08284e-18) +(8.3742 -0.263781 2.06067e-21) +(8.3397 -0.262534 0) +(8.30442 -0.2616 4.5096e-18) +(8.26819 -0.261026 0) +(8.2309 -0.260889 5.6115e-21) +(8.19232 -0.26126 4.94755e-18) +(8.1523 -0.262236 0) +(8.11056 -0.263921 0) +(8.06687 -0.26645 -5.42802e-18) +(8.02091 -0.269987 -1.1152e-17) +(7.97238 -0.274733 5.75225e-18) +(7.92091 -0.280959 0) +(7.8661 -0.288972 6.08308e-18) +(7.80769 -0.299264 0) +(7.74509 -0.31228 -6.37324e-18) +(7.67898 -0.32903 -6.56906e-18) +(7.60711 -0.349553 6.71575e-18) +(7.53781 -0.376939 6.76596e-18) +(7.44891 -0.403992 0) +(10.0689 0.00750788 0) +(10.071 0.00690136 -2.07791e-19) +(10.073 0.00626109 -1.04644e-19) +(10.075 0.00559249 0) +(10.077 0.00489788 0) +(10.079 0.00418001 0) +(10.0809 0.00344168 -2.13736e-19) +(10.0828 0.0026859 1.07278e-19) +(10.0847 0.0019156 0) +(10.0865 0.00113406 0) +(10.0884 0.000344256 1.09356e-19) +(10.0901 -0.00045059 -1.09565e-19) +(10.0919 -0.00124781 0) +(10.0936 -0.0020446 1.11037e-19) +(10.0953 -0.00283886 2.22828e-19) +(10.097 -0.0036284 0) +(10.0987 -0.00441182 -1.12676e-19) +(10.1003 -0.00518766 0) +(10.1019 -0.00595528 0) +(10.1035 -0.00671396 0) +(10.105 -0.00746379 0) +(10.1066 -0.00820475 -1.15035e-19) +(10.1081 -0.0089376 4.62873e-19) +(10.1096 -0.00966292 0) +(10.1111 -0.0103821 2.33261e-19) +(10.1126 -0.0110961 0) +(10.1141 -0.0118069 0) +(10.1156 -0.012516 4.73419e-19) +(10.1171 -0.0132255 2.37486e-19) +(10.1186 -0.0139374 2.39089e-19) +(10.1201 -0.0146542 2.40142e-19) +(10.1215 -0.015378 2.40645e-19) +(10.123 -0.0161115 -2.41697e-19) +(10.1244 -0.0168572 0) +(10.1259 -0.017618 -4.88162e-19) +(10.1273 -0.0183964 0) +(10.1287 -0.0191953 0) +(10.1302 -0.0200175 0) +(10.1316 -0.0208659 -2.48599e-19) +(10.133 -0.0217435 -2.49013e-19) +(10.1343 -0.0226531 0) +(10.1357 -0.0235977 2.51761e-19) +(10.137 -0.0245802 -2.52807e-19) +(10.1383 -0.0256037 2.53107e-19) +(10.1396 -0.0266709 0) +(10.1409 -0.0277849 2.55106e-19) +(10.1421 -0.0289484 0) +(10.1433 -0.0301646 0) +(10.1444 -0.0314362 -2.58013e-19) +(10.1455 -0.0327659 0) +(10.1465 -0.0341567 0) +(10.1475 -0.0356112 -1.02905e-21) +(10.1484 -0.0371321 0) +(10.1492 -0.0387221 -2.63607e-19) +(10.15 -0.0403835 0) +(10.1507 -0.0421191 0) +(10.1513 -0.0439309 5.3098e-19) +(10.1518 -0.0458215 0) +(10.1522 -0.0477927 0) +(10.1524 -0.0498468 2.66908e-19) +(10.1526 -0.0519854 0) +(10.1526 -0.0542105 0) +(10.1525 -0.0565236 8.08762e-19) +(10.1523 -0.058926 -2.68983e-19) +(10.1519 -0.0614189 5.42063e-19) +(10.1513 -0.0640033 2.69676e-19) +(10.1506 -0.06668 -5.43398e-19) +(10.1496 -0.0694496 -5.40191e-19) +(10.1485 -0.0723124 0) +(10.1472 -0.0752684 5.40415e-19) +(10.1456 -0.0783176 -3.97199e-21) +(10.1438 -0.0814595 0) +(10.1418 -0.0846934 0) +(10.1396 -0.0880184 0) +(10.137 -0.0914332 0) +(10.1342 -0.0949364 5.36625e-19) +(10.1312 -0.098526 1.07502e-18) +(10.1278 -0.1022 5.3823e-19) +(10.1241 -0.105956 -5.31719e-19) +(10.1201 -0.109791 0) +(10.1157 -0.113703 4.85088e-21) +(10.1111 -0.117688 4.91715e-21) +(10.106 -0.121742 -5.21411e-19) +(10.1006 -0.125862 5.23123e-19) +(10.0948 -0.130044 -5.19532e-19) +(10.0886 -0.134283 -5.15604e-19) +(10.0821 -0.138574 1.01749e-18) +(10.0751 -0.142913 0) +(10.0677 -0.147295 -5.01695e-19) +(10.0598 -0.151713 0) +(10.0515 -0.156163 -4.85279e-19) +(10.0428 -0.160638 0) +(10.0336 -0.165133 0) +(10.0239 -0.169641 4.65531e-19) +(10.0137 -0.174156 0) +(10.0031 -0.178671 0) +(9.99194 -0.18318 -5.21928e-21) +(9.9803 -0.187676 8.71735e-19) +(9.96815 -0.192151 4.29246e-19) +(9.95549 -0.196599 -4.14454e-19) +(9.9423 -0.201012 5.05825e-21) +(9.9286 -0.205385 -3.98768e-19) +(9.91436 -0.209709 -3.82705e-19) +(9.8996 -0.213978 0) +(9.88431 -0.218184 3.59124e-19) +(9.86848 -0.222321 4.72091e-21) +(9.85211 -0.226381 6.71771e-19) +(9.83522 -0.230358 0) +(9.81779 -0.234245 -6.20922e-19) +(9.79982 -0.238035 -5.91652e-19) +(9.78133 -0.241721 0) +(9.76232 -0.245298 0) +(9.74278 -0.248759 4.97703e-19) +(9.72272 -0.252099 -7.83428e-21) +(9.70215 -0.255312 -4.2996e-19) +(9.68108 -0.258393 7.8177e-19) +(9.6595 -0.261336 3.51046e-19) +(9.63744 -0.264138 0) +(9.6149 -0.266792 2.75724e-19) +(9.59189 -0.269295 0) +(9.56842 -0.271642 0) +(9.5445 -0.27383 1.61187e-19) +(9.52014 -0.275857 1.18862e-19) +(9.49534 -0.277719 0) +(9.47013 -0.279415 -3.13491e-20) +(9.44451 -0.280941 -1.85566e-20) +(9.4185 -0.282297 0) +(9.39212 -0.283481 -4.21211e-21) +(9.36537 -0.284492 0) +(9.33827 -0.28533 3.69218e-21) +(9.31083 -0.285994 3.4372e-21) +(9.28307 -0.286486 0) +(9.255 -0.286806 0) +(9.22664 -0.286955 0) +(9.198 -0.286935 0) +(9.16909 -0.286748 0) +(9.13992 -0.286397 0) +(9.11051 -0.285885 -6.25085e-19) +(9.08087 -0.285215 6.83121e-19) +(9.05101 -0.284392 7.40232e-19) +(9.02093 -0.28342 0) +(8.99064 -0.282305 0) +(8.96016 -0.281051 0) +(8.92948 -0.279667 -9.77146e-19) +(8.8986 -0.278159 -5.36673e-22) +(8.86753 -0.276536 3.98807e-22) +(8.83625 -0.274805 0) +(8.80476 -0.27298 1.22814e-18) +(8.77305 -0.271067 0) +(8.7411 -0.26908 -2.71837e-18) +(8.70888 -0.26703 0) +(8.67637 -0.264931 -1.49433e-18) +(8.64353 -0.262796 0) +(8.61032 -0.260641 -4.90076e-18) +(8.57669 -0.258484 0) +(8.54259 -0.256342 0) +(8.50794 -0.254236 -3.69982e-18) +(8.47267 -0.252187 0) +(8.43667 -0.250223 6.97804e-22) +(8.39985 -0.248365 -4.15921e-18) +(8.36209 -0.246648 -4.3139e-18) +(8.32325 -0.245103 2.13605e-21) +(8.28318 -0.24377 4.63712e-18) +(8.2417 -0.242689 0) +(8.19862 -0.241915 4.9721e-18) +(8.15373 -0.241502 -5.14313e-18) +(8.10678 -0.241525 0) +(8.05752 -0.242057 -5.5022e-18) +(8.00565 -0.243211 0) +(7.95085 -0.24509 -1.22938e-20) +(7.89281 -0.247871 6.03395e-18) +(7.83111 -0.251723 -6.22479e-18) +(7.76543 -0.256938 0) +(7.69528 -0.263802 -1.32245e-17) +(7.62046 -0.272862 -6.81593e-18) +(7.54026 -0.284593 -7.00562e-18) +(7.4556 -0.300186 7.14783e-18) +(7.36366 -0.319879 -7.30535e-18) +(7.27524 -0.347437 0) +(7.16129 -0.375552 0) +(10.065 0.000799832 0) +(10.067 0.000286862 8.61798e-20) +(10.069 -0.000251832 0) +(10.071 -0.000811948 0) +(10.0729 -0.00139183 -8.75212e-20) +(10.0749 -0.00198972 8.805e-20) +(10.0768 -0.00260377 1.77441e-19) +(10.0787 -0.00323217 -8.93953e-20) +(10.0806 -0.00387301 -8.96324e-20) +(10.0824 -0.00452434 0) +(10.0843 -0.00518416 0) +(10.0861 -0.00585052 1.82711e-19) +(10.0879 -0.00652154 0) +(10.0896 -0.00719545 -9.2248e-20) +(10.0914 -0.0078707 -2.97381e-22) +(10.0931 -0.00854585 0) +(10.0948 -0.00921975 0) +(10.0965 -0.00989139 0) +(10.0981 -0.0105601 0) +(10.0997 -0.0112254 0) +(10.1014 -0.011887 9.58599e-20) +(10.103 -0.012545 9.66467e-20) +(10.1046 -0.0131996 -1.94311e-19) +(10.1061 -0.0138514 9.73968e-20) +(10.1077 -0.0145009 -1.96345e-19) +(10.1092 -0.0151492 0) +(10.1108 -0.0157972 -9.89321e-20) +(10.1123 -0.0164464 -1.99404e-19) +(10.1138 -0.0170981 -2.00427e-19) +(10.1153 -0.0177539 1.00469e-19) +(10.1168 -0.0184155 0) +(10.1183 -0.0190848 -2.03507e-19) +(10.1198 -0.0197638 2.04538e-19) +(10.1212 -0.0204546 0) +(10.1227 -0.0211592 4.12675e-19) +(10.1241 -0.0218799 2.07096e-19) +(10.1255 -0.0226191 0) +(10.1269 -0.0233791 2.09148e-19) +(10.1283 -0.0241622 2.10172e-19) +(10.1297 -0.0249709 6.04913e-22) +(10.131 -0.0258078 -2.12215e-19) +(10.1324 -0.0266752 0) +(10.1337 -0.0275757 2.14244e-19) +(10.1349 -0.0285119 -4.31197e-19) +(10.1362 -0.0294863 0) +(10.1374 -0.0305014 -4.35245e-19) +(10.1385 -0.0315597 0) +(10.1397 -0.0326637 0) +(10.1407 -0.0338161 2.21021e-19) +(10.1418 -0.0350191 0) +(10.1427 -0.0362753 0) +(10.1436 -0.037587 -2.23947e-19) +(10.1445 -0.0389567 -2.23906e-19) +(10.1452 -0.0403866 2.24794e-19) +(10.1459 -0.0418789 -2.2566e-19) +(10.1465 -0.0434359 0) +(10.147 -0.0450595 -2.28472e-19) +(10.1474 -0.0467519 0) +(10.1477 -0.0485149 2.28867e-19) +(10.1479 -0.0503503 -2.30878e-19) +(10.148 -0.0522598 0) +(10.148 -0.0542449 0) +(10.1478 -0.0563071 -2.32964e-19) +(10.1474 -0.0584475 2.33574e-19) +(10.1469 -0.0606674 0) +(10.1463 -0.0629675 -2.34645e-19) +(10.1454 -0.0653487 0) +(10.1444 -0.0678115 4.70985e-19) +(10.1432 -0.0703563 0) +(10.1418 -0.0729833 -7.06496e-19) +(10.1402 -0.0756923 -4.72552e-19) +(10.1383 -0.078483 0) +(10.1363 -0.081355 0) +(10.1339 -0.0843075 0) +(10.1314 -0.0873395 0) +(10.1285 -0.0904498 -7.05939e-19) +(10.1254 -0.0936368 -4.71299e-19) +(10.1219 -0.0968988 0) +(10.1182 -0.100234 9.34324e-19) +(10.1142 -0.10364 0) +(10.1098 -0.107114 4.66385e-19) +(10.1051 -0.110653 4.64553e-19) +(10.1 -0.114255 4.62459e-19) +(10.0946 -0.117916 0) +(10.0888 -0.121632 -4.52803e-19) +(10.0826 -0.1254 0) +(10.076 -0.129217 -4.51247e-19) +(10.069 -0.133076 0) +(10.0616 -0.136975 0) +(10.0538 -0.140908 0) +(10.0455 -0.144871 4.34984e-19) +(10.0368 -0.148858 -4.25222e-19) +(10.0277 -0.152865 -4.19914e-19) +(10.018 -0.156885 -4.19064e-19) +(10.0079 -0.160914 0) +(9.99731 -0.164945 0) +(9.98622 -0.168972 -3.9965e-19) +(9.97464 -0.172991 -7.79948e-19) +(9.96255 -0.176994 0) +(9.94995 -0.180975 7.48267e-19) +(9.93683 -0.184928 3.67884e-19) +(9.92319 -0.188847 0) +(9.90903 -0.192727 3.49324e-19) +(9.89433 -0.196559 0) +(9.8791 -0.20034 -3.28894e-19) +(9.86334 -0.204061 3.1796e-19) +(9.84704 -0.207718 -6.08792e-19) +(9.8302 -0.211303 0) +(9.81283 -0.214811 0) +(9.79492 -0.218236 -2.65255e-19) +(9.77648 -0.221572 -2.51918e-19) +(9.7575 -0.224812 0) +(9.73799 -0.227954 -2.2371e-19) +(9.71795 -0.230989 -4.24934e-19) +(9.69739 -0.233915 0) +(9.67632 -0.236725 -3.61843e-19) +(9.65474 -0.239416 -1.67661e-19) +(9.63265 -0.241982 0) +(9.61006 -0.24442 -3.85787e-19) +(9.58699 -0.246725 0) +(9.56344 -0.248894 0) +(9.53941 -0.250924 0) +(9.51492 -0.252811 0) +(9.48998 -0.254554 -6.18898e-20) +(9.46459 -0.256148 0) +(9.43876 -0.257593 1.77158e-20) +(9.41252 -0.258887 6.57807e-20) +(9.38586 -0.260027 1.06576e-19) +(9.35879 -0.261014 0) +(9.33134 -0.261846 3.44196e-21) +(9.30351 -0.262523 -2.48027e-19) +(9.2753 -0.263045 0) +(9.24674 -0.263412 0) +(9.21783 -0.263625 4.01867e-19) +(9.18857 -0.263685 0) +(9.15898 -0.263594 0) +(9.12907 -0.263352 0) +(9.09882 -0.262964 6.18443e-19) +(9.06826 -0.26243 -6.73994e-19) +(9.03738 -0.261754 -7.32397e-19) +(9.00618 -0.26094 -7.93034e-19) +(8.97466 -0.25999 0) +(8.94282 -0.258911 0) +(8.91063 -0.257707 9.77978e-19) +(8.87809 -0.256383 1.04242e-18) +(8.84519 -0.254946 -2.21689e-18) +(8.81189 -0.253403 0) +(8.77817 -0.251762 -1.24383e-18) +(8.744 -0.250031 0) +(8.70934 -0.248218 1.38479e-18) +(8.67413 -0.246334 -1.45719e-18) +(8.63832 -0.244387 0) +(8.60185 -0.242391 0) +(8.56464 -0.240354 1.68425e-18) +(8.52661 -0.238295 -1.76252e-18) +(8.48766 -0.236223 0) +(8.44769 -0.234159 0) +(8.40657 -0.232115 0) +(8.36419 -0.230118 -4.18617e-18) +(8.32039 -0.228181 6.54284e-18) +(8.27503 -0.226339 6.80605e-18) +(8.22792 -0.22461 -2.35842e-18) +(8.17892 -0.22304 -4.90098e-18) +(8.12779 -0.221653 0) +(8.07439 -0.22051 -5.27892e-18) +(8.01844 -0.219647 0) +(7.95979 -0.219149 -5.6773e-18) +(7.89812 -0.219068 5.87402e-18) +(7.8333 -0.219529 -6.08475e-18) +(7.76496 -0.220616 6.2845e-18) +(7.69297 -0.222518 0) +(7.61692 -0.225385 0) +(7.53667 -0.229522 0) +(7.45174 -0.235213 7.13369e-18) +(7.36209 -0.243031 7.35012e-18) +(7.26698 -0.253499 7.55844e-18) +(7.16749 -0.267974 0) +(7.06035 -0.286883 -8.00095e-18) +(6.95814 -0.314778 0) +(6.82653 -0.344711 0) +(10.0628 -0.00707018 0) +(10.0648 -0.00748753 0) +(10.0667 -0.00792284 3.56419e-20) +(10.0687 -0.00837297 0) +(10.0706 -0.00883697 1.44622e-19) +(10.0725 -0.00931386 -2.21915e-22) +(10.0744 -0.00980257 -1.46476e-19) +(10.0763 -0.0103021 -7.35872e-20) +(10.0782 -0.0108114 2.33842e-22) +(10.0801 -0.0113295 0) +(10.0819 -0.0118551 0) +(10.0837 -0.0123871 -1.51121e-19) +(10.0855 -0.0129246 0) +(10.0873 -0.0134664 7.66103e-20) +(10.0891 -0.0140115 -1.53908e-19) +(10.0909 -0.0145592 0) +(10.0926 -0.0151088 0) +(10.0943 -0.0156595 0) +(10.096 -0.0162109 0) +(10.0977 -0.0167627 0) +(10.0993 -0.0173147 -1.59479e-19) +(10.101 -0.0178669 -8.00882e-20) +(10.1026 -0.0184194 0) +(10.1042 -0.0189726 -8.125e-20) +(10.1058 -0.0195269 0) +(10.1074 -0.0200828 -8.19558e-20) +(10.109 -0.0206412 8.26504e-20) +(10.1106 -0.0212028 0) +(10.1121 -0.0217688 8.33626e-20) +(10.1136 -0.0223403 -2.27136e-22) +(10.1151 -0.0229185 0) +(10.1166 -0.0235047 0) +(10.1181 -0.0241006 0) +(10.1196 -0.0247075 8.57205e-20) +(10.121 -0.0253272 -1.72867e-19) +(10.1225 -0.0259613 -1.73824e-19) +(10.1239 -0.0266117 0) +(10.1253 -0.0272802 -1.75742e-19) +(10.1266 -0.0279687 -1.76703e-19) +(10.128 -0.0286791 1.77665e-19) +(10.1293 -0.0294135 1.78627e-19) +(10.1306 -0.0301739 0) +(10.1319 -0.0309623 -1.80551e-19) +(10.1331 -0.0317807 1.81511e-19) +(10.1343 -0.0326313 0) +(10.1354 -0.0335162 2.74803e-19) +(10.1365 -0.0344374 9.18429e-20) +(10.1376 -0.0353971 0) +(10.1386 -0.0363974 1.85515e-19) +(10.1396 -0.0374403 0) +(10.1405 -0.0385279 0) +(10.1413 -0.0396622 -1.88189e-19) +(10.142 -0.0408452 3.78978e-19) +(10.1427 -0.0420789 -8.99448e-22) +(10.1433 -0.0433651 1.91681e-19) +(10.1438 -0.0447058 1.91566e-19) +(10.1443 -0.0461027 0) +(10.1446 -0.0475576 0) +(10.1448 -0.0490721 -1.08317e-21) +(10.1449 -0.0506478 1.94628e-19) +(10.1449 -0.0522861 -1.95329e-19) +(10.1447 -0.0539885 0) +(10.1444 -0.055756 0) +(10.144 -0.0575901 0) +(10.1434 -0.0594914 0) +(10.1427 -0.0614611 -1.98325e-19) +(10.1417 -0.0634997 0) +(10.1406 -0.0656079 0) +(10.1393 -0.0677861 1.99614e-19) +(10.1378 -0.0700344 2.01473e-19) +(10.1361 -0.072353 0) +(10.1341 -0.0747417 0) +(10.132 -0.0772001 0) +(10.1295 -0.0797279 0) +(10.1269 -0.0823243 0) +(10.1239 -0.0849882 4.02879e-19) +(10.1207 -0.0877188 0) +(10.1172 -0.0905144 2.00157e-19) +(10.1134 -0.0933738 -4.03386e-19) +(10.1093 -0.0962948 -1.99398e-19) +(10.1048 -0.0992759 0) +(10.1 -0.102314 1.98245e-19) +(10.0949 -0.105408 1.97508e-19) +(10.0894 -0.108555 0) +(10.0835 -0.111751 3.95441e-19) +(10.0773 -0.114993 1.94601e-19) +(10.0707 -0.11828 1.93383e-19) +(10.0636 -0.121606 0) +(10.0562 -0.124968 0) +(10.0483 -0.128363 0) +(10.04 -0.131786 0) +(10.0312 -0.135233 1.89446e-19) +(10.022 -0.1387 3.70473e-19) +(10.0123 -0.142182 0) +(10.0021 -0.145676 0) +(9.99148 -0.149175 0) +(9.98035 -0.152675 0) +(9.96871 -0.156171 3.44421e-19) +(9.95656 -0.159659 0) +(9.9439 -0.163131 -4.15565e-21) +(9.93072 -0.166584 0) +(9.91701 -0.170012 -3.12666e-19) +(9.90277 -0.17341 3.04759e-19) +(9.88799 -0.176773 0) +(9.87267 -0.180095 -2.87655e-19) +(9.85681 -0.183371 0) +(9.8404 -0.186596 3.81179e-21) +(9.82344 -0.189764 2.58632e-19) +(9.80594 -0.192871 0) +(9.78788 -0.195911 2.4053e-19) +(9.76927 -0.198878 3.51437e-21) +(9.75011 -0.201768 0) +(9.7304 -0.204577 4.04732e-19) +(9.71014 -0.207298 -1.87596e-19) +(9.68934 -0.209929 -1.73973e-19) +(9.66799 -0.212464 0) +(9.64611 -0.2149 -2.93225e-19) +(9.62369 -0.217231 0) +(9.60075 -0.219456 2.30987e-19) +(9.57728 -0.221569 0) +(9.5533 -0.223568 0) +(9.5288 -0.225449 6.34019e-20) +(9.50379 -0.227209 4.53467e-20) +(9.47828 -0.228845 3.11203e-20) +(9.45227 -0.230354 7.46319e-21) +(9.42577 -0.231735 0) +(9.39878 -0.232985 -6.19205e-20) +(9.37132 -0.234103 0) +(9.34338 -0.235087 7.56101e-20) +(9.31497 -0.235935 -1.92815e-19) +(9.28609 -0.236648 0) +(9.25675 -0.237223 0) +(9.22695 -0.237661 0) +(9.19668 -0.23796 -3.855e-19) +(9.16595 -0.238122 0) +(9.13475 -0.238146 0) +(9.10307 -0.238032 0) +(9.07091 -0.237782 -6.00119e-19) +(9.03826 -0.237397 -6.58692e-19) +(9.0051 -0.236878 7.17299e-19) +(8.97141 -0.236227 7.76407e-19) +(8.93718 -0.235446 0) +(8.90236 -0.234537 0) +(8.86694 -0.233504 0) +(8.83088 -0.232349 -1.03387e-18) +(8.79412 -0.231076 2.20397e-18) +(8.75664 -0.22969 0) +(8.71836 -0.228193 0) +(8.67923 -0.226594 0) +(8.63918 -0.224895 0) +(8.59814 -0.223106 2.94012e-18) +(8.55601 -0.221229 1.54941e-18) +(8.51272 -0.219277 0) +(8.46816 -0.217255 1.71367e-18) +(8.42225 -0.215177 1.79839e-18) +(8.37485 -0.213052 0) +(8.32589 -0.210897 -1.975e-18) +(8.27521 -0.208723 2.06658e-18) +(8.22274 -0.206555 -2.15978e-18) +(8.16832 -0.204406 -4.51053e-18) +(8.11187 -0.20231 -2.35209e-18) +(8.05324 -0.200285 1.32598e-21) +(7.99235 -0.198378 2.55534e-18) +(7.92905 -0.196613 2.66016e-18) +(7.86328 -0.195054 -2.7664e-18) +(7.79488 -0.193737 0) +(7.7238 -0.192748 5.96644e-18) +(7.64987 -0.192142 0) +(7.57305 -0.192038 9.63735e-18) +(7.49312 -0.192525 0) +(7.41003 -0.193779 0) +(7.3235 -0.195953 0) +(7.23343 -0.199336 3.69953e-18) +(7.1394 -0.204211 0) +(7.04133 -0.211154 0) +(6.93839 -0.220699 0) +(6.83165 -0.234376 0) +(6.7172 -0.25271 8.5868e-18) +(6.6088 -0.281261 -4.42496e-18) +(6.46819 -0.313335 0) +(10.0633 -0.0143701 0) +(10.0653 -0.0147043 0) +(10.0672 -0.0150506 -9.6354e-20) +(10.0691 -0.0154068 -4.84299e-20) +(10.0711 -0.0157726 -9.76153e-20) +(10.073 -0.0161474 -4.91892e-20) +(10.0749 -0.0165307 9.87984e-20) +(10.0768 -0.0169219 9.93903e-20) +(10.0786 -0.0173207 1.49883e-19) +(10.0805 -0.0177264 0) +(10.0823 -0.0181384 -5.04903e-20) +(10.0842 -0.0185562 1.01756e-19) +(10.086 -0.0189792 0) +(10.0878 -0.0194069 0) +(10.0896 -0.0198387 1.55192e-19) +(10.0914 -0.0202742 0) +(10.0931 -0.0207128 0) +(10.0948 -0.0211544 0) +(10.0966 -0.0215986 0) +(10.0983 -0.0220453 0) +(10.1 -0.0224942 1.88136e-22) +(10.1016 -0.0229455 1.07629e-19) +(10.1033 -0.0233991 0) +(10.1049 -0.0238555 0) +(10.1065 -0.0243147 0) +(10.1081 -0.0247774 1.09966e-19) +(10.1097 -0.0252438 -1.10362e-19) +(10.1113 -0.0257148 1.10945e-19) +(10.1128 -0.0261909 -1.11717e-19) +(10.1144 -0.0266731 -1.12301e-19) +(10.1159 -0.0271621 0) +(10.1174 -0.0276592 0) +(10.1189 -0.0281652 0) +(10.1204 -0.0286814 -1.14635e-19) +(10.1218 -0.0292091 0) +(10.1232 -0.0297495 0) +(10.1246 -0.030304 0) +(10.126 -0.0308741 0) +(10.1273 -0.0314612 0) +(10.1287 -0.0320669 0) +(10.1299 -0.0326928 1.18464e-19) +(10.1312 -0.0333404 0) +(10.1324 -0.0340115 1.19595e-19) +(10.1336 -0.0347076 0) +(10.1347 -0.0354305 1.20713e-19) +(10.1358 -0.0361819 -2.42809e-19) +(10.1369 -0.0369636 -1.22101e-19) +(10.1379 -0.0377771 1.22353e-19) +(10.1388 -0.0386244 -1.2351e-19) +(10.1397 -0.0395071 0) +(10.1405 -0.0404268 0) +(10.1413 -0.0413854 1.25142e-19) +(10.142 -0.0423844 -3.75559e-19) +(10.1426 -0.0434255 -1.26186e-19) +(10.1431 -0.0445105 -1.25912e-19) +(10.1435 -0.0456406 -3.79939e-19) +(10.1438 -0.0468177 0) +(10.144 -0.048043 0) +(10.1441 -0.0493181 -2.56261e-19) +(10.1441 -0.0506442 -2.57093e-19) +(10.144 -0.0520228 2.57886e-19) +(10.1437 -0.0534549 0) +(10.1433 -0.0549418 2.58312e-19) +(10.1427 -0.0564842 2.58936e-19) +(10.142 -0.0580833 2.59508e-19) +(10.1411 -0.0597398 5.21183e-19) +(10.14 -0.0614544 0) +(10.1388 -0.0632277 0) +(10.1373 -0.0650601 -1.2369e-21) +(10.1357 -0.0669519 0) +(10.1338 -0.0689032 2.61631e-19) +(10.1317 -0.0709142 0) +(10.1294 -0.0729845 0) +(10.1268 -0.075114 0) +(10.124 -0.0773021 0) +(10.1209 -0.0795482 -2.62675e-19) +(10.1175 -0.0818515 0) +(10.1138 -0.0842111 -2.61863e-19) +(10.1098 -0.0866255 0) +(10.1055 -0.0890939 2.6058e-19) +(10.1009 -0.0916142 0) +(10.0959 -0.0941852 -5.15944e-19) +(10.0906 -0.0968045 -2.57676e-19) +(10.085 -0.0994707 0) +(10.0789 -0.102181 -2.53335e-19) +(10.0725 -0.104933 -2.53452e-19) +(10.0656 -0.107724 -2.51723e-19) +(10.0584 -0.110552 0) +(10.0507 -0.113413 0) +(10.0426 -0.116305 -2.43737e-19) +(10.0341 -0.119224 -2.41278e-19) +(10.0251 -0.122167 2.40385e-19) +(10.0157 -0.125129 0) +(10.0057 -0.128109 0) +(9.99532 -0.131101 0) +(9.98441 -0.134102 0) +(9.97301 -0.137108 0) +(9.96109 -0.140115 0) +(9.94866 -0.143118 2.14091e-19) +(9.93569 -0.146113 -4.22767e-19) +(9.9222 -0.149095 0) +(9.90816 -0.152061 2.03429e-19) +(9.89357 -0.155006 -5.87888e-19) +(9.87842 -0.157924 0) +(9.86272 -0.160813 3.70554e-19) +(9.84645 -0.163667 0) +(9.82961 -0.166482 6.88496e-19) +(9.81219 -0.169254 -3.32598e-19) +(9.7942 -0.171977 3.15733e-19) +(9.77563 -0.174647 0) +(9.75647 -0.17726 5.75723e-19) +(9.73673 -0.179811 0) +(9.7164 -0.182296 -2.57371e-19) +(9.69549 -0.184711 2.69222e-21) +(9.67398 -0.187052 2.22859e-19) +(9.65188 -0.189315 0) +(9.62919 -0.191495 3.68977e-19) +(9.60591 -0.193589 0) +(9.58204 -0.195594 -1.45865e-19) +(9.55758 -0.197506 0) +(9.53253 -0.199322 0) +(9.50688 -0.201038 -8.09038e-20) +(9.48064 -0.202651 -5.78312e-20) +(9.4538 -0.204157 3.40344e-20) +(9.42637 -0.205554 -1.73208e-21) +(9.39833 -0.206839 0) +(9.36969 -0.208009 0) +(9.34043 -0.209063 6.99966e-20) +(9.31056 -0.209998 -9.60676e-20) +(9.28006 -0.210811 0) +(9.24893 -0.211502 1.54638e-19) +(9.21716 -0.212068 0) +(9.18472 -0.212507 0) +(9.1516 -0.212817 0) +(9.11779 -0.212998 0) +(9.08326 -0.213047 3.11517e-19) +(9.04799 -0.212964 0) +(9.01194 -0.212747 3.79964e-19) +(8.97508 -0.212397 4.14246e-19) +(8.93737 -0.211912 -9.02413e-19) +(8.89879 -0.211293 0) +(8.85927 -0.210538 5.26866e-19) +(8.81877 -0.209648 0) +(8.77724 -0.208624 0) +(8.73463 -0.207467 1.29116e-18) +(8.69087 -0.206178 -1.37395e-18) +(8.6459 -0.20476 0) +(8.59965 -0.203215 0) +(8.55207 -0.201548 8.16265e-19) +(8.50309 -0.199763 0) +(8.45263 -0.197866 -2.71879e-18) +(8.40063 -0.195863 -3.81024e-18) +(8.34704 -0.193765 1.99928e-18) +(8.29178 -0.191578 3.39605e-22) +(8.23482 -0.189319 -2.19191e-18) +(8.1761 -0.186998 0) +(8.11559 -0.184636 4.78018e-18) +(8.05324 -0.182245 -2.49113e-18) +(7.98904 -0.179855 -6.59827e-22) +(7.92296 -0.177482 2.69739e-18) +(7.85501 -0.175162 2.80318e-18) +(7.78514 -0.172919 -2.90843e-18) +(7.71339 -0.170797 1.28651e-21) +(7.63972 -0.168827 1.51831e-21) +(7.56416 -0.167068 -1.79129e-21) +(7.48664 -0.165559 0) +(7.40718 -0.164376 0) +(7.32569 -0.163575 0) +(7.24214 -0.16326 -3.67898e-18) +(7.15638 -0.163515 3.79587e-18) +(7.06829 -0.164495 3.91169e-18) +(6.97764 -0.166342 0) +(6.88421 -0.169319 -4.13769e-18) +(6.78759 -0.173693 0) +(6.68749 -0.180025 0) +(6.58297 -0.188835 0) +(6.47492 -0.201809 4.61173e-18) +(6.35863 -0.219469 0) +(6.24909 -0.248648 9.58591e-18) +(6.10383 -0.282479 0) +(10.0654 -0.0200816 0) +(10.0673 -0.0203523 5.44281e-20) +(10.0693 -0.0206318 5.48164e-20) +(10.0712 -0.0209183 5.51428e-20) +(10.0731 -0.0212117 0) +(10.075 -0.0215115 -5.57967e-20) +(10.0769 -0.0218174 0) +(10.0788 -0.0221292 0) +(10.0806 -0.0224466 -5.67791e-20) +(10.0825 -0.0227695 0) +(10.0844 -0.0230974 5.74341e-20) +(10.0862 -0.0234302 0) +(10.088 -0.0237675 0) +(10.0898 -0.0241093 5.83407e-20) +(10.0916 -0.024455 -7.48317e-23) +(10.0934 -0.0248048 5.89925e-20) +(10.0952 -0.0251581 0) +(10.0969 -0.025515 0) +(10.0986 -0.0258753 5.99682e-20) +(10.1003 -0.026239 -6.02929e-20) +(10.102 -0.0266058 1.21387e-19) +(10.1037 -0.0269761 0) +(10.1054 -0.0273497 0) +(10.107 -0.027727 6.15891e-20) +(10.1086 -0.028108 0) +(10.1102 -0.0284932 0) +(10.1118 -0.0288827 1.25273e-19) +(10.1134 -0.0292774 -1.25919e-19) +(10.1149 -0.0296774 0) +(10.1165 -0.0300835 6.35259e-20) +(10.118 -0.0304964 0) +(10.1195 -0.0309169 -1.28338e-19) +(10.1209 -0.0313456 1.28981e-19) +(10.1224 -0.0317837 0) +(10.1238 -0.032232 0) +(10.1252 -0.0326916 0) +(10.1266 -0.0331634 0) +(10.1279 -0.0336487 0) +(10.1292 -0.0341486 0) +(10.1305 -0.0346644 0) +(10.1317 -0.0351972 -1.99858e-22) +(10.1329 -0.0357486 0) +(10.1341 -0.0363196 -1.35527e-19) +(10.1352 -0.0369119 0) +(10.1363 -0.0375266 -2.73319e-19) +(10.1373 -0.0381653 2.74543e-19) +(10.1382 -0.0388293 0) +(10.1391 -0.0395202 -1.38605e-19) +(10.14 -0.0402393 -1.39203e-19) +(10.1408 -0.040988 0) +(10.1415 -0.0417679 0) +(10.1421 -0.0425804 2.94603e-22) +(10.1427 -0.0434268 2.82709e-19) +(10.1432 -0.0443086 -3.1728e-22) +(10.1435 -0.0452271 1.42594e-19) +(10.1438 -0.0461837 1.43116e-19) +(10.144 -0.0471798 -1.4327e-19) +(10.1441 -0.0482165 0) +(10.144 -0.0492952 0) +(10.1438 -0.050417 0) +(10.1435 -0.051583 -1.45063e-19) +(10.1431 -0.0527943 -1.45458e-19) +(10.1425 -0.0540519 -2.92522e-19) +(10.1417 -0.0553566 -2.93235e-19) +(10.1408 -0.0567094 -2.9389e-19) +(10.1397 -0.058111 -4.41249e-19) +(10.1384 -0.059562 0) +(10.137 -0.0610629 0) +(10.1353 -0.0626143 -2.95853e-19) +(10.1334 -0.0642165 0) +(10.1313 -0.0658697 -1.48735e-19) +(10.129 -0.0675739 1.47691e-19) +(10.1264 -0.0693292 1.47695e-19) +(10.1236 -0.0711353 0) +(10.1205 -0.072992 0) +(10.1171 -0.0748989 2.94788e-19) +(10.1134 -0.0768552 0) +(10.1095 -0.0788604 -2.93811e-19) +(10.1052 -0.0809135 0) +(10.1006 -0.0830136 -2.9232e-19) +(10.0956 -0.0851592 0) +(10.0904 -0.0873493 1.35821e-21) +(10.0847 -0.0895822 2.89005e-19) +(10.0787 -0.0918565 -2.87587e-19) +(10.0723 -0.09417 1.40799e-21) +(10.0655 -0.0965213 0) +(10.0583 -0.0989078 -2.82296e-19) +(10.0507 -0.101328 0) +(10.0426 -0.103778 0) +(10.0341 -0.106256 1.46186e-21) +(10.0251 -0.10876 2.74031e-19) +(10.0157 -0.111287 2.69604e-19) +(10.0058 -0.113833 0) +(9.9954 -0.116396 -2.63003e-19) +(9.9845 -0.118972 2.59347e-19) +(9.97308 -0.121558 -2.55443e-19) +(9.96115 -0.124151 0) +(9.94867 -0.126748 -2.46867e-19) +(9.93566 -0.129344 -2.43629e-19) +(9.92209 -0.131937 2.37216e-19) +(9.90796 -0.134521 0) +(9.89325 -0.137093 4.54276e-19) +(9.87796 -0.13965 4.42589e-19) +(9.86208 -0.142188 0) +(9.8456 -0.144703 0) +(9.82851 -0.14719 0) +(9.81081 -0.149646 -5.8505e-19) +(9.79249 -0.152068 0) +(9.77353 -0.15445 -5.39371e-19) +(9.75394 -0.156789 0) +(9.7337 -0.159081 -3.27175e-19) +(9.71281 -0.161321 0) +(9.69126 -0.163506 -1.44369e-19) +(9.66904 -0.165631 4.06693e-19) +(9.64615 -0.167693 0) +(9.62257 -0.169688 1.14572e-19) +(9.59831 -0.171612 -3.13668e-19) +(9.57335 -0.173461 0) +(9.54768 -0.175231 0) +(9.52129 -0.17692 0) +(9.49418 -0.178524 0) +(9.46633 -0.180038 0) +(9.43773 -0.181459 6.25089e-20) +(9.40836 -0.182784 0) +(9.3782 -0.184008 -1.63633e-20) +(9.34725 -0.185129 2.1382e-20) +(9.31548 -0.186142 0) +(9.28287 -0.187046 -8.03761e-20) +(9.24939 -0.187836 0) +(9.21503 -0.18851 0) +(9.17975 -0.189065 -1.77615e-19) +(9.14353 -0.189497 0) +(9.10634 -0.189803 0) +(9.06814 -0.189981 0) +(9.02889 -0.190026 0) +(8.98856 -0.189938 -3.57599e-19) +(8.9471 -0.189713 -3.96999e-19) +(8.90448 -0.189349 6.57179e-22) +(8.86064 -0.188845 -6.0632e-22) +(8.81555 -0.188199 0) +(8.76917 -0.187411 0) +(8.72144 -0.186479 4.66426e-22) +(8.67234 -0.185405 0) +(8.62181 -0.184188 0) +(8.56983 -0.182831 0) +(8.51635 -0.181337 0) +(8.46136 -0.179708 0) +(8.40483 -0.177951 8.79008e-19) +(8.34674 -0.176072 -9.27407e-19) +(8.28709 -0.174076 0) +(8.22588 -0.171975 -1.66206e-22) +(8.16311 -0.169777 3.23249e-18) +(8.0988 -0.167496 -2.25746e-18) +(8.03296 -0.165142 -3.54191e-18) +(7.96563 -0.162735 2.46602e-18) +(7.89684 -0.160287 0) +(7.82664 -0.157823 -2.67867e-18) +(7.75505 -0.155356 0) +(7.68214 -0.152916 2.89488e-18) +(7.60793 -0.150519 0) +(7.53247 -0.148201 -3.11409e-18) +(7.45578 -0.145981 0) +(7.37791 -0.143902 -3.3358e-18) +(7.29885 -0.141986 -3.44733e-18) +(7.2186 -0.140289 1.77922e-18) +(7.13714 -0.138839 0) +(7.05444 -0.137707 0) +(6.97041 -0.13693 3.90038e-18) +(6.88496 -0.136608 0) +(6.79793 -0.136804 2.93455e-21) +(6.70914 -0.137662 -4.24245e-18) +(6.61833 -0.1393 0) +(6.52517 -0.141962 4.47958e-18) +(6.42922 -0.145883 0) +(6.33003 -0.151614 0) +(6.22651 -0.159624 4.82906e-18) +(6.11942 -0.17173 -9.89226e-18) +(6.00307 -0.188379 0) +(5.89377 -0.217743 2.63599e-20) +(5.74405 -0.252622 0) +(10.0685 -0.025015 -3.15014e-20) +(10.0704 -0.0252286 -1.23798e-19) +(10.0724 -0.0254492 0) +(10.0743 -0.0256753 0) +(10.0762 -0.0259064 0) +(10.0781 -0.0261422 0) +(10.08 -0.0263824 -6.36898e-20) +(10.0819 -0.0266269 0) +(10.0837 -0.0268756 0) +(10.0856 -0.0271284 -6.47851e-20) +(10.0874 -0.0273853 0) +(10.0893 -0.0276463 0) +(10.0911 -0.0279115 0) +(10.0929 -0.0281806 -6.63064e-20) +(10.0947 -0.0284538 -1.33287e-19) +(10.0964 -0.0287308 -5.94189e-23) +(10.0982 -0.0290118 6.7346e-20) +(10.0999 -0.0292966 0) +(10.1016 -0.0295852 -6.8139e-20) +(10.1033 -0.0298775 6.85055e-20) +(10.105 -0.0301736 0) +(10.1067 -0.0304733 0) +(10.1083 -0.0307769 0) +(10.1099 -0.0310842 -6.9972e-20) +(10.1115 -0.0313957 0) +(10.1131 -0.0317112 0) +(10.1146 -0.0320314 0) +(10.1162 -0.0323562 -7.13744e-20) +(10.1177 -0.0326863 0) +(10.1192 -0.033022 -1.44282e-19) +(10.1206 -0.0333638 0) +(10.1221 -0.0337122 1.4582e-19) +(10.1235 -0.0340681 -1.46555e-19) +(10.1248 -0.0344319 7.35732e-20) +(10.1262 -0.0348046 0) +(10.1275 -0.0351867 0) +(10.1288 -0.0355794 0) +(10.13 -0.0359832 7.50336e-20) +(10.1312 -0.0363994 7.5397e-20) +(10.1324 -0.0368287 7.57594e-20) +(10.1335 -0.0372724 -1.52412e-19) +(10.1345 -0.0377313 0) +(10.1356 -0.0382067 0) +(10.1365 -0.0386997 0) +(10.1375 -0.0392114 7.77425e-20) +(10.1383 -0.039743 -1.56e-19) +(10.1391 -0.0402957 0) +(10.1399 -0.0408707 0) +(10.1405 -0.0414692 -1.57867e-19) +(10.1411 -0.0420925 0) +(10.1416 -0.0427417 -1.59205e-19) +(10.142 -0.0434181 1.60108e-19) +(10.1424 -0.0441228 -1.6076e-19) +(10.1426 -0.0448572 -1.61399e-19) +(10.1428 -0.0456223 0) +(10.1428 -0.0464195 -1.62345e-19) +(10.1427 -0.0472496 1.63226e-19) +(10.1425 -0.048114 0) +(10.1422 -0.0490136 1.64036e-19) +(10.1417 -0.0499497 0) +(10.1411 -0.0509229 1.65398e-19) +(10.1403 -0.0519344 1.65882e-19) +(10.1394 -0.052985 -1.65974e-19) +(10.1383 -0.0540755 0) +(10.1371 -0.0552067 0) +(10.1356 -0.0563793 1.67523e-19) +(10.134 -0.0575939 1.67436e-19) +(10.1321 -0.0588511 -1.6771e-19) +(10.1301 -0.0601512 0) +(10.1278 -0.0614946 0) +(10.1253 -0.0628816 -1.6873e-19) +(10.1225 -0.0643123 -1.68832e-19) +(10.1195 -0.0657867 -3.37282e-19) +(10.1162 -0.0673049 -1.68383e-19) +(10.1127 -0.0688666 0) +(10.1088 -0.0704714 -3.37357e-19) +(10.1047 -0.0721191 -1.6796e-19) +(10.1002 -0.073809 1.68749e-19) +(10.0954 -0.0755405 1.67337e-19) +(10.0903 -0.0773126 1.68013e-19) +(10.0848 -0.0791247 0) +(10.0789 -0.0809755 4.98587e-19) +(10.0727 -0.0828639 -3.3143e-19) +(10.066 -0.0847885 4.94278e-19) +(10.059 -0.086748 3.2819e-19) +(10.0515 -0.0887407 0) +(10.0437 -0.090765 3.24145e-19) +(10.0353 -0.0928189 0) +(10.0265 -0.0949004 -1.59009e-19) +(10.0173 -0.0970072 1.58821e-19) +(10.0075 -0.0991374 0) +(9.99726 -0.101288 -6.18922e-19) +(9.98649 -0.103458 -3.05285e-19) +(9.97519 -0.105643 3.02682e-19) +(9.96335 -0.107841 -5.95918e-19) +(9.95096 -0.110049 2.94176e-19) +(9.93799 -0.112265 0) +(9.92445 -0.114485 2.84487e-19) +(9.9103 -0.116706 -2.77966e-19) +(9.89555 -0.118925 -2.73544e-19) +(9.88017 -0.121138 0) +(9.86416 -0.123343 -2.61275e-19) +(9.84749 -0.125535 -2.54621e-19) +(9.83016 -0.127712 0) +(9.81214 -0.12987 0) +(9.79344 -0.132005 0) +(9.77402 -0.134113 2.24348e-19) +(9.75389 -0.136192 0) +(9.73301 -0.138237 2.069e-19) +(9.71139 -0.140244 -1.96521e-19) +(9.689 -0.142209 0) +(9.66582 -0.144129 0) +(9.64184 -0.145999 1.6707e-19) +(9.61705 -0.147815 -9.61746e-22) +(9.59141 -0.149574 0) +(9.56493 -0.151271 -1.32646e-19) +(9.53757 -0.152903 1.20269e-19) +(9.50931 -0.154464 0) +(9.48014 -0.155952 9.32937e-20) +(9.45003 -0.157362 0) +(9.41896 -0.158691 6.53284e-20) +(9.3869 -0.159934 -5.06307e-20) +(9.35382 -0.161086 -7.23624e-20) +(9.3197 -0.162144 0) +(9.28451 -0.163103 1.22392e-20) +(9.24822 -0.16396 -3.77532e-20) +(9.21079 -0.164709 0) +(9.17219 -0.165348 0) +(9.13241 -0.165873 0) +(9.09139 -0.16628 0) +(9.04911 -0.166566 0) +(9.00554 -0.166728 -1.23234e-19) +(8.96064 -0.166761 0) +(8.9144 -0.166664 1.63875e-19) +(8.86677 -0.166434 0) +(8.81774 -0.166068 0) +(8.76728 -0.165566 4.56044e-19) +(8.71538 -0.164926 -5.00939e-19) +(8.66202 -0.164149 1.09406e-18) +(8.60719 -0.163235 0) +(8.55089 -0.162185 -6.41392e-19) +(8.49313 -0.161001 4.55837e-22) +(8.43392 -0.159687 0) +(8.37326 -0.158244 7.88578e-19) +(8.3112 -0.15668 0) +(8.24775 -0.154997 8.90435e-19) +(8.18295 -0.153206 0) +(8.11685 -0.15131 -9.94797e-19) +(8.0495 -0.149321 1.04815e-18) +(7.98094 -0.147245 0) +(7.91124 -0.145097 1.15607e-18) +(7.84044 -0.142884 -2.42166e-18) +(7.76862 -0.140622 0) +(7.69583 -0.13832 1.32155e-18) +(7.62214 -0.136 -1.37745e-18) +(7.5476 -0.133667 -1.43362e-18) +(7.47227 -0.131349 0) +(7.3962 -0.129052 -1.54676e-18) +(7.31943 -0.126807 0) +(7.24201 -0.124618 -1.66063e-18) +(7.16395 -0.122526 0) +(7.08528 -0.120533 1.77498e-18) +(7.006 -0.118689 0) +(6.92609 -0.116997 0) +(6.84552 -0.115519 1.94682e-18) +(6.76426 -0.114261 0) +(6.6822 -0.1133 0) +(6.59928 -0.11265 -4.23749e-18) +(6.51531 -0.112414 0) +(6.43015 -0.112627 -2.23286e-18) +(6.34352 -0.113434 0) +(6.25518 -0.114918 0) +(6.16468 -0.117315 -7.22887e-18) +(6.07156 -0.120815 0) +(5.97526 -0.125955 0) +(5.87449 -0.133128 -2.58041e-18) +(5.76995 -0.144242 5.29194e-18) +(5.65487 -0.159608 2.70471e-18) +(5.5469 -0.188669 -8.25143e-18) +(5.39241 -0.223917 0) +(10.0723 -0.0293258 1.95045e-23) +(10.0742 -0.0294916 3.51839e-20) +(10.0762 -0.0296631 0) +(10.0781 -0.0298383 0) +(10.08 -0.0300161 0) +(10.0818 -0.0301958 0) +(10.0837 -0.0303776 7.24111e-20) +(10.0856 -0.0305615 0) +(10.0874 -0.0307476 3.66052e-20) +(10.0893 -0.0309361 7.36762e-20) +(10.0911 -0.0311271 -3.70279e-20) +(10.0929 -0.031321 0) +(10.0947 -0.0315179 0) +(10.0964 -0.031718 0) +(10.0981 -0.0319215 7.58028e-20) +(10.0999 -0.0321285 -1.14322e-19) +(10.1016 -0.0323391 -7.66587e-20) +(10.1032 -0.0325534 0) +(10.1049 -0.0327715 0) +(10.1065 -0.0329933 0) +(10.1081 -0.0332189 -7.8329e-20) +(10.1097 -0.0334484 7.87603e-20) +(10.1112 -0.0336817 0) +(10.1127 -0.0339188 0) +(10.1142 -0.03416 0) +(10.1157 -0.0344053 0) +(10.1171 -0.034655 0) +(10.1185 -0.0349091 8.14179e-20) +(10.1199 -0.035168 0) +(10.1212 -0.035432 8.22927e-20) +(10.1225 -0.0357015 0) +(10.1237 -0.0359769 -8.31122e-20) +(10.125 -0.0362587 8.35505e-20) +(10.1261 -0.0365474 -6.01597e-23) +(10.1273 -0.0368436 0) +(10.1284 -0.0371479 0) +(10.1294 -0.037461 0) +(10.1305 -0.0377835 -1.71555e-19) +(10.1314 -0.0381164 -8.62504e-20) +(10.1323 -0.0384603 -8.66899e-20) +(10.1332 -0.0388161 0) +(10.134 -0.0391847 0) +(10.1347 -0.039567 0) +(10.1354 -0.0399638 0) +(10.136 -0.0403763 8.19408e-23) +(10.1365 -0.0408053 0) +(10.137 -0.0412518 0) +(10.1374 -0.0417168 -9.00616e-20) +(10.1377 -0.0422015 1.81146e-19) +(10.1379 -0.0427067 -9.08916e-20) +(10.138 -0.0432335 1.82801e-19) +(10.138 -0.043783 0) +(10.1379 -0.0443562 0) +(10.1377 -0.0449541 0) +(10.1374 -0.0455777 9.28667e-20) +(10.137 -0.046228 1.86719e-19) +(10.1365 -0.0469061 0) +(10.1358 -0.0476127 0) +(10.1349 -0.0483489 -2.83153e-19) +(10.134 -0.0491156 0) +(10.1328 -0.0499135 0) +(10.1315 -0.0507436 1.90479e-19) +(10.13 -0.0516065 1.91353e-19) +(10.1284 -0.052503 0) +(10.1265 -0.0534338 0) +(10.1244 -0.0543994 -1.92542e-19) +(10.1222 -0.0554005 -1.93303e-19) +(10.1197 -0.0564375 1.93685e-19) +(10.1169 -0.0575107 0) +(10.1139 -0.0586206 0) +(10.1107 -0.0597673 0) +(10.1072 -0.0609511 1.94309e-19) +(10.1034 -0.062172 3.99152e-22) +(10.0993 -0.06343 4.08082e-22) +(10.0949 -0.064725 0) +(10.0902 -0.0660567 0) +(10.0852 -0.0674248 1.94547e-19) +(10.0798 -0.0688289 1.94288e-19) +(10.0741 -0.0702685 -1.93944e-19) +(10.068 -0.0717428 1.9351e-19) +(10.0615 -0.0732512 0) +(10.0545 -0.0747926 -3.8424e-19) +(10.0472 -0.0763662 0) +(10.0394 -0.0779709 -1.90785e-19) +(10.0312 -0.0796054 0) +(10.0225 -0.0812684 -1.88271e-19) +(10.0134 -0.0829585 0) +(10.0037 -0.0846739 0) +(9.99351 -0.0864131 3.69088e-19) +(9.98279 -0.0881742 1.83204e-19) +(9.97152 -0.089955 0) +(9.95968 -0.0917536 3.5917e-19) +(9.94725 -0.0935676 5.32132e-19) +(9.93422 -0.0953948 0) +(9.92056 -0.0972327 3.45983e-19) +(9.90625 -0.0990789 0) +(9.89129 -0.100931 1.67245e-19) +(9.87564 -0.102785 -1.64361e-19) +(9.85929 -0.10464 3.23606e-19) +(9.84221 -0.106492 0) +(9.8244 -0.108338 0) +(9.80582 -0.110174 0) +(9.78645 -0.111998 0) +(9.76628 -0.113806 0) +(9.74527 -0.115594 0) +(9.72341 -0.11736 -1.34213e-19) +(9.70067 -0.1191 0) +(9.67704 -0.12081 0) +(9.65248 -0.122487 -2.38663e-19) +(9.62697 -0.124125 4.56524e-19) +(9.60049 -0.125723 0) +(9.573 -0.127275 -2.04626e-19) +(9.54449 -0.128778 0) +(9.51493 -0.130227 -8.55569e-22) +(9.48428 -0.131617 -1.66102e-19) +(9.45252 -0.132947 -1.52234e-19) +(9.41963 -0.134209 0) +(9.38558 -0.135402 0) +(9.35033 -0.13652 -2.15723e-19) +(9.31387 -0.137561 -9.15018e-20) +(9.27616 -0.138519 -7.57092e-20) +(9.23718 -0.139391 5.86386e-20) +(9.1969 -0.140172 0) +(9.1553 -0.14086 -2.22289e-20) +(9.11235 -0.141449 -6.2707e-22) +(9.06804 -0.141937 1.50311e-20) +(9.02234 -0.14232 0) +(8.97524 -0.142597 0) +(8.92673 -0.142762 0) +(8.8768 -0.142818 0) +(8.82545 -0.142758 -1.19562e-19) +(8.77267 -0.142584 1.41455e-19) +(8.71847 -0.142292 0) +(8.66286 -0.141884 -1.87666e-19) +(8.60585 -0.141355 0) +(8.54746 -0.140711 0) +(8.48771 -0.139948 0) +(8.42665 -0.139072 -2.85993e-19) +(8.36429 -0.138082 -6.22689e-19) +(8.30069 -0.136983 3.37575e-19) +(8.23588 -0.135776 7.27574e-19) +(8.16993 -0.134467 -7.81154e-19) +(8.10287 -0.133059 0) +(8.03477 -0.131558 -8.90399e-19) +(7.96568 -0.129968 0) +(7.89567 -0.128295 -5.01029e-19) +(7.8248 -0.126547 0) +(7.75313 -0.124729 0) +(7.68072 -0.122852 -1.17364e-18) +(7.60764 -0.120919 0) +(7.53395 -0.118946 0) +(7.45971 -0.116932 2.69707e-18) +(7.38497 -0.1149 0) +(7.3098 -0.112847 0) +(7.23424 -0.1108 3.05139e-18) +(7.15834 -0.108752 1.5851e-18) +(7.08214 -0.106741 0) +(7.00567 -0.104751 1.70384e-18) +(6.92895 -0.10283 0) +(6.85201 -0.100957 1.82247e-18) +(6.77484 -0.0991917 0) +(6.69744 -0.0975064 -3.88131e-18) +(6.6198 -0.0959731 -1.99968e-18) +(6.54187 -0.0945624 0) +(6.4636 -0.0933596 0) +(6.38493 -0.0923317 0) +(6.30573 -0.0915831 2.23462e-18) +(6.2259 -0.0910825 0) +(6.14523 -0.0909609 2.35181e-18) +(6.06357 -0.0912042 -2.40971e-18) +(5.98058 -0.0919799 0) +(5.89601 -0.0933168 -2.52831e-18) +(5.80934 -0.0954641 2.58804e-18) +(5.72011 -0.0985432 0) +(5.62762 -0.103084 0) +(5.53042 -0.109379 -2.76953e-18) +(5.4292 -0.119378 0) +(5.31589 -0.133212 -2.89238e-18) +(5.20969 -0.16132 2.94494e-18) +(5.04933 -0.196217 0) +(10.0765 -0.0329817 4.07713e-20) +(10.0783 -0.0330978 4.01071e-20) +(10.0802 -0.0332224 -4.03416e-20) +(10.082 -0.0333514 0) +(10.0839 -0.0334809 0) +(10.0857 -0.0336092 0) +(10.0875 -0.0337365 0) +(10.0893 -0.0338635 0) +(10.091 -0.0339907 -4.18855e-20) +(10.0928 -0.0341187 0) +(10.0944 -0.0342481 1.72776e-23) +(10.0961 -0.0343794 0) +(10.0978 -0.0345132 0) +(10.0994 -0.0346497 0) +(10.1009 -0.0347891 0) +(10.1025 -0.0349316 1.97298e-23) +(10.104 -0.0350774 0) +(10.1054 -0.0352264 4.42199e-20) +(10.1069 -0.0353786 0) +(10.1083 -0.0355342 0) +(10.1096 -0.0356931 9.00774e-20) +(10.1109 -0.0358554 -9.06123e-20) +(10.1122 -0.036021 -4.55515e-20) +(10.1134 -0.0361899 0) +(10.1146 -0.0363623 4.60891e-20) +(10.1158 -0.0365383 4.6359e-20) +(10.1169 -0.0367178 -4.66295e-20) +(10.1179 -0.0369013 4.69007e-20) +(10.119 -0.0370887 0) +(10.1199 -0.0372804 -4.7445e-20) +(10.1208 -0.0374767 0) +(10.1217 -0.0376779 4.80439e-20) +(10.1225 -0.0378844 -9.6584e-20) +(10.1233 -0.0380967 -9.71335e-20) +(10.124 -0.0383151 0) +(10.1246 -0.0385402 0) +(10.1252 -0.0387725 0) +(10.1257 -0.0390127 5.90655e-23) +(10.1262 -0.0392614 0) +(10.1266 -0.0395191 -1.00375e-19) +(10.1269 -0.0397867 0) +(10.1271 -0.0400648 1.01469e-19) +(10.1273 -0.0403541 -1.02014e-19) +(10.1273 -0.0406555 0) +(10.1273 -0.0409697 1.03168e-19) +(10.1272 -0.0412975 0) +(10.1271 -0.0416398 0) +(10.1268 -0.0419973 1.04775e-19) +(10.1264 -0.042371 0) +(10.1259 -0.0427617 1.05824e-19) +(10.1253 -0.0431702 0) +(10.1245 -0.0435974 1.06759e-19) +(10.1237 -0.0440442 0) +(10.1227 -0.0445113 0) +(10.1215 -0.0449998 -9.84838e-23) +(10.1203 -0.0455103 0) +(10.1188 -0.0460437 0) +(10.1172 -0.0466007 0) +(10.1155 -0.0471822 1.10136e-19) +(10.1135 -0.0477889 0) +(10.1114 -0.0484215 0) +(10.1091 -0.0490806 -2.22679e-19) +(10.1065 -0.0497668 -1.11576e-19) +(10.1038 -0.0504808 0) +(10.1008 -0.0512231 0) +(10.0976 -0.0519942 2.25327e-19) +(10.0941 -0.0527945 0) +(10.0904 -0.0536246 -1.13031e-19) +(10.0864 -0.0544845 0) +(10.0821 -0.0553747 0) +(10.0775 -0.0562953 0) +(10.0725 -0.0572464 -1.13997e-19) +(10.0673 -0.0582281 2.27821e-19) +(10.0617 -0.0592403 3.41671e-19) +(10.0557 -0.0602828 0) +(10.0494 -0.0613555 0) +(10.0427 -0.0624581 0) +(10.0355 -0.0635902 1.13463e-19) +(10.028 -0.0647511 0) +(10.02 -0.0659404 -2.26011e-19) +(10.0115 -0.0671572 0) +(10.0025 -0.0684007 4.49674e-19) +(9.99305 -0.0696701 0) +(9.98307 -0.0709643 0) +(9.97255 -0.0722822 -2.21638e-19) +(9.96146 -0.0736225 2.20776e-19) +(9.94979 -0.0749839 -2.1894e-19) +(9.93752 -0.0763649 0) +(9.92461 -0.0777639 -2.16054e-19) +(9.91106 -0.0791793 0) +(9.89684 -0.080609 0) +(9.88191 -0.082051 0) +(9.86627 -0.0835031 -2.07418e-19) +(9.84988 -0.0849633 0) +(9.83272 -0.086429 0) +(9.81477 -0.0878982 0) +(9.79599 -0.0893681 -1.95756e-19) +(9.77637 -0.0908366 4.41145e-22) +(9.75588 -0.0923005 0) +(9.73448 -0.0937566 0) +(9.71216 -0.0952024 0) +(9.68889 -0.0966349 -1.75912e-19) +(9.66463 -0.098051 1.71332e-19) +(9.63937 -0.0994475 0) +(9.61307 -0.100821 0) +(9.5857 -0.102169 3.12616e-19) +(9.55725 -0.103487 0) +(9.52768 -0.104772 0) +(9.49698 -0.106022 4.16374e-19) +(9.4651 -0.107231 -2.65047e-19) +(9.43204 -0.108397 -1.25443e-19) +(9.39775 -0.109519 3.56249e-19) +(9.36224 -0.110589 0) +(9.32546 -0.111607 -2.08209e-19) +(9.2874 -0.112565 1.92571e-19) +(9.24804 -0.113465 1.76352e-19) +(9.20738 -0.114298 0) +(9.16538 -0.115068 0) +(9.12205 -0.115765 6.24253e-20) +(9.07737 -0.116392 1.58124e-19) +(9.03133 -0.116941 0) +(8.98394 -0.117415 -3.30824e-20) +(8.93518 -0.117804 2.2941e-20) +(8.88507 -0.118115 2.55603e-20) +(8.83361 -0.118337 -4.09623e-21) +(8.78081 -0.118476 0) +(8.72668 -0.118523 0) +(8.67125 -0.118485 0) +(8.61452 -0.118352 0) +(8.55653 -0.118135 0) +(8.49731 -0.117821 1.36397e-19) +(8.43688 -0.117424 0) +(8.37529 -0.116929 0) +(8.31258 -0.116351 0) +(8.24878 -0.115677 0) +(8.18395 -0.11492 2.67839e-19) +(8.11812 -0.114073 0) +(8.05136 -0.113146 3.2331e-19) +(7.9837 -0.112134 0) +(7.91522 -0.111047 -3.80563e-19) +(7.84595 -0.10988 -4.0978e-19) +(7.77596 -0.108645 0) +(7.70531 -0.107337 0) +(7.63404 -0.105966 0) +(7.56223 -0.104533 0) +(7.48992 -0.103043 -8.29707e-23) +(7.41717 -0.101503 0) +(7.34404 -0.0999146 0) +(7.27059 -0.0982913 6.52679e-19) +(7.19686 -0.0966275 0) +(7.12291 -0.0949456 0) +(7.04878 -0.093235 -1.49332e-18) +(6.97453 -0.0915258 0) +(6.90019 -0.0898005 -8.09243e-19) +(6.82581 -0.0880991 -1.68175e-18) +(6.7514 -0.0863935 0) +(6.677 -0.0847392 0) +(6.60261 -0.0830954 0) +(6.52825 -0.0815327 0) +(6.45392 -0.0799979 0) +(6.3796 -0.0785795 0) +(6.30527 -0.0772104 2.11684e-18) +(6.2309 -0.0760005 2.17831e-18) +(6.15644 -0.0748701 0) +(6.08182 -0.0739477 0) +(6.00695 -0.0731412 -1.18023e-18) +(5.93168 -0.0726028 -2.42143e-18) +(5.8559 -0.072238 0) +(5.77938 -0.0722265 -5.16701e-23) +(5.70195 -0.0724842 -2.60291e-18) +(5.62323 -0.0732236 0) +(5.54297 -0.0743956 2.72542e-18) +(5.46058 -0.0762821 0) +(5.37557 -0.0789204 0) +(5.28718 -0.082842 0) +(5.19374 -0.0882228 0) +(5.09611 -0.0969854 0) +(4.9845 -0.109095 0) +(4.88036 -0.135586 0) +(4.7127 -0.169406 0) +(10.0802 -0.0362247 -2.35143e-20) +(10.0819 -0.0362792 -2.31876e-20) +(10.0836 -0.0363429 4.671e-20) +(10.0852 -0.0364082 0) +(10.0868 -0.036469 0) +(10.0883 -0.0365244 0) +(10.0898 -0.0365755 -2.39955e-20) +(10.0913 -0.0366228 -4.8319e-20) +(10.0927 -0.0366667 0) +(10.0941 -0.0367081 4.89779e-20) +(10.0954 -0.0367485 1.3317e-23) +(10.0967 -0.0367894 0) +(10.0979 -0.0368318 0) +(10.0991 -0.0368768 0) +(10.1002 -0.0369249 5.06391e-20) +(10.1012 -0.0369767 5.09875e-20) +(10.1022 -0.0370326 0) +(10.1032 -0.0370926 -5.16597e-20) +(10.1041 -0.037157 -5.19824e-20) +(10.1049 -0.0372258 -5.23204e-20) +(10.1057 -0.037299 5.26591e-20) +(10.1064 -0.0373764 -5.29987e-20) +(10.107 -0.0374581 1.57171e-23) +(10.1076 -0.0375441 5.36802e-20) +(10.1081 -0.0376342 -5.40384e-20) +(10.1086 -0.0377285 -1.656e-23) +(10.1089 -0.0378269 5.47249e-20) +(10.1093 -0.0379297 -5.50691e-20) +(10.1095 -0.0380367 5.53965e-20) +(10.1097 -0.0381483 1.77817e-23) +(10.1098 -0.0382644 -5.60868e-20) +(10.1098 -0.0383855 5.64509e-20) +(10.1097 -0.0385116 0) +(10.1096 -0.0386431 0) +(10.1094 -0.0387803 5.74698e-20) +(10.1091 -0.0389236 0) +(10.1087 -0.0390733 0) +(10.1082 -0.03923 1.17052e-19) +(10.1076 -0.039394 -5.88484e-20) +(10.1069 -0.0395658 1.18428e-19) +(10.1061 -0.039746 0) +(10.1052 -0.039935 -1.19794e-19) +(10.1042 -0.0401333 6.0261e-20) +(10.1031 -0.0403416 0) +(10.1019 -0.0405605 0) +(10.1005 -0.0407905 0) +(10.099 -0.0410322 0) +(10.0974 -0.0412863 6.18635e-20) +(10.0956 -0.0415534 -6.2184e-20) +(10.0937 -0.0418341 0) +(10.0917 -0.0421291 -6.28115e-20) +(10.0894 -0.0424391 -1.26306e-19) +(10.087 -0.0427645 -1.26836e-19) +(10.0844 -0.0431062 0) +(10.0816 -0.0434647 -2.56074e-19) +(10.0787 -0.0438406 1.28557e-19) +(10.0755 -0.0442346 1.29099e-19) +(10.0721 -0.0446472 0) +(10.0685 -0.045079 1.3013e-19) +(10.0646 -0.0455305 0) +(10.0605 -0.0460022 0) +(10.0562 -0.0464946 0) +(10.0515 -0.0470082 1.32033e-19) +(10.0466 -0.0475434 0) +(10.0414 -0.0481005 0) +(10.0359 -0.0486798 0) +(10.03 -0.0492818 1.3329e-19) +(10.0238 -0.0499066 1.33669e-19) +(10.0173 -0.0505544 0) +(10.0104 -0.0512252 -1.33949e-19) +(10.003 -0.0519193 0) +(9.99532 -0.0526366 -1.34317e-19) +(9.98718 -0.053377 -1.3423e-19) +(9.97859 -0.0541403 -2.686e-19) +(9.96954 -0.0549263 0) +(9.96002 -0.0557348 -1.34069e-19) +(9.94999 -0.0565655 0) +(9.93944 -0.0574178 -1.33834e-19) +(9.92835 -0.0582911 -1.33392e-19) +(9.9167 -0.0591848 2.66398e-19) +(9.90446 -0.0600982 -1.32617e-19) +(9.89161 -0.0610305 -2.64577e-19) +(9.87814 -0.0619807 0) +(9.86401 -0.0629479 0) +(9.8492 -0.063931 2.60705e-19) +(9.8337 -0.0649288 0) +(9.81747 -0.0659401 1.28822e-19) +(9.80049 -0.0669634 -1.27476e-19) +(9.78273 -0.0679974 0) +(9.76418 -0.069041 0) +(9.7448 -0.0700915 1.23927e-19) +(9.72457 -0.0711477 0) +(9.70347 -0.0722072 0) +(9.68147 -0.0732687 1.19442e-19) +(9.65854 -0.0743297 0) +(9.63467 -0.0753888 0) +(9.60982 -0.076443 -1.13934e-19) +(9.58397 -0.0774916 4.47797e-19) +(9.55711 -0.0785307 0) +(9.5292 -0.0795582 2.1464e-19) +(9.50022 -0.0805724 0) +(9.47016 -0.0815708 2.04876e-19) +(9.43899 -0.0825509 -3.62525e-22) +(9.40669 -0.0835101 1.93281e-19) +(9.37325 -0.084446 1.8724e-19) +(9.33865 -0.0853562 -3.49974e-22) +(9.30286 -0.0862383 0) +(9.26589 -0.0870898 0) +(9.22772 -0.0879084 -3.32802e-22) +(9.18833 -0.088691 0) +(9.14772 -0.0894364 2.89844e-19) +(9.10589 -0.0901451 -1.36921e-19) +(9.06282 -0.0908078 1.28144e-19) +(9.01852 -0.0914285 -1.19361e-19) +(8.97298 -0.0919984 0) +(8.9262 -0.0925229 0) +(8.8782 -0.092992 -9.11085e-20) +(8.82898 -0.0934124 0) +(8.77855 -0.0937732 1.41602e-19) +(8.72691 -0.0940834 -6.02196e-20) +(8.67409 -0.0943289 4.89876e-20) +(8.62011 -0.0945215 2.0623e-22) +(8.56497 -0.0946464 -1.92458e-22) +(8.5087 -0.0947158 -1.41108e-20) +(8.45133 -0.0947155 1.8765e-21) +(8.39288 -0.0946576 0) +(8.33338 -0.0945278 0) +(8.27286 -0.0943397 -3.66049e-20) +(8.21135 -0.0940786 0) +(8.1489 -0.0937599 -6.36783e-20) +(8.08553 -0.0933678 7.76183e-20) +(8.02128 -0.0929185 0) +(7.95621 -0.0923955 0) +(7.89034 -0.0918154 1.20962e-19) +(7.82373 -0.0911622 0) +(7.75642 -0.0904534 -1.51e-19) +(7.68847 -0.0896756 0) +(7.6199 -0.0888443 -1.81928e-19) +(7.55078 -0.0879478 1.97666e-19) +(7.48115 -0.0870003 0) +(7.41106 -0.0859931 4.59414e-19) +(7.34056 -0.0849372 0) +(7.2697 -0.0838282 0) +(7.19853 -0.0826754 -5.57367e-19) +(7.1271 -0.0814787 0) +(7.05547 -0.080242 -6.24043e-19) +(6.98368 -0.0789733 6.5729e-19) +(6.91178 -0.0776692 0) +(6.83982 -0.0763464 -7.2481e-19) +(6.76784 -0.0749919 7.58209e-19) +(6.69588 -0.0736348 -7.91987e-19) +(6.62397 -0.0722539 0) +(6.55217 -0.0708903 0) +(6.48049 -0.0695084 8.93456e-19) +(6.40897 -0.0681642 0) +(6.33762 -0.0668061 0) +(6.26644 -0.0655087 0) +(6.19545 -0.064205 0) +(6.12464 -0.0629908 0) +(6.054 -0.0617796 0) +(5.9835 -0.0606904 0) +(5.91312 -0.0596178 0) +(5.84281 -0.058705 0) +(5.77249 -0.057827 0) +(5.70207 -0.0571507 -1.25552e-18) +(5.63147 -0.0565372 1.28785e-18) +(5.56054 -0.0561778 -1.31979e-18) +(5.48914 -0.0559226 -1.35182e-18) +(5.41703 -0.055993 -2.76874e-18) +(5.34402 -0.0562437 2.83335e-18) +(5.26974 -0.0569238 0) +(5.19387 -0.0579201 0) +(5.11585 -0.0595354 0) +(5.03508 -0.0617271 0) +(4.95084 -0.0650154 0) +(4.86118 -0.0694716 0) +(4.76721 -0.0769033 0) +(4.65723 -0.0871703 0) +(4.55554 -0.111331 0) +(4.37912 -0.14337 0) +(10.0808 -0.0382194 2.77453e-20) +(10.0818 -0.0382267 4.82167e-24) +(10.0828 -0.0382531 0) +(10.0837 -0.0382691 0) +(10.0845 -0.0382637 2.80774e-20) +(10.0852 -0.0382453 0) +(10.0859 -0.0382229 3.82575e-24) +(10.0865 -0.0381995 5.74156e-20) +(10.0871 -0.038175 0) +(10.0875 -0.0381501 -5.82548e-20) +(10.0878 -0.0381259 2.93429e-20) +(10.0881 -0.038103 -2.95419e-20) +(10.0883 -0.038082 2.97519e-20) +(10.0883 -0.0380631 0) +(10.0883 -0.0380465 -6.03592e-20) +(10.0882 -0.0380326 0) +(10.088 -0.0380216 -3.05936e-20) +(10.0877 -0.0380136 0) +(10.0873 -0.0380085 6.2048e-20) +(10.0869 -0.0380066 6.24707e-20) +(10.0863 -0.0380078 -6.28935e-20) +(10.0856 -0.0380121 6.33164e-20) +(10.0848 -0.0380194 6.37392e-20) +(10.0839 -0.0380298 -6.4162e-20) +(10.0829 -0.0380432 0) +(10.0818 -0.0380595 -3.25139e-20) +(10.0806 -0.0380788 0) +(10.0792 -0.0381011 0) +(10.0778 -0.0381264 -3.31464e-20) +(10.0762 -0.0381548 2.22927e-23) +(10.0745 -0.0381864 6.71098e-20) +(10.0727 -0.0382212 0) +(10.0708 -0.0382596 0) +(10.0687 -0.0383014 0) +(10.0665 -0.0383472 -2.38559e-23) +(10.0641 -0.0383971 6.91598e-20) +(10.0616 -0.0384515 0) +(10.059 -0.0385105 -6.99752e-20) +(10.0562 -0.0385746 7.04043e-20) +(10.0532 -0.0386441 0) +(10.0501 -0.0387193 0) +(10.0468 -0.0388007 0) +(10.0433 -0.0388886 2.72393e-23) +(10.0397 -0.0389834 0) +(10.0359 -0.0390857 0) +(10.0319 -0.0391958 0) +(10.0276 -0.0393141 0) +(10.0232 -0.0394413 -7.38733e-20) +(10.0186 -0.0395776 7.42332e-20) +(10.0137 -0.0397237 0) +(10.0086 -0.0398799 3.27707e-23) +(10.0033 -0.0400467 0) +(9.9977 -0.0402246 1.51201e-19) +(9.99186 -0.0404141 0) +(9.98575 -0.0406156 1.52465e-19) +(9.97935 -0.0408295 -1.53067e-19) +(9.97266 -0.0410563 -1.53647e-19) +(9.96568 -0.0412964 0) +(9.95837 -0.0415501 -1.54734e-19) +(9.95074 -0.0418179 0) +(9.94277 -0.0421 0) +(9.93444 -0.0423969 0) +(9.92575 -0.0427087 0) +(9.91668 -0.0430358 0) +(9.90721 -0.0433784 0) +(9.89734 -0.0437367 0) +(9.88703 -0.0441108 -7.89801e-20) +(9.87629 -0.044501 -7.89889e-20) +(9.86508 -0.0449073 -7.9075e-20) +(9.85341 -0.0453298 2.37519e-19) +(9.84124 -0.0457684 -7.9174e-20) +(9.82856 -0.0462232 0) +(9.81536 -0.0466939 1.58448e-19) +(9.80161 -0.0471806 1.58356e-19) +(9.7873 -0.0476827 0) +(9.77241 -0.0482003 1.57983e-19) +(9.75692 -0.0487331 0) +(9.74081 -0.0492806 0) +(9.72406 -0.0498423 1.56908e-19) +(9.70666 -0.0504178 -1.5627e-19) +(9.68857 -0.0510066 1.30216e-22) +(9.66979 -0.0516078 0) +(9.6503 -0.052221 0) +(9.63007 -0.0528452 -1.53384e-19) +(9.60908 -0.0534799 0) +(9.58732 -0.054124 -1.51387e-19) +(9.56476 -0.0547766 3.00613e-19) +(9.5414 -0.0554368 1.49121e-19) +(9.5172 -0.0561033 -1.47619e-19) +(9.49215 -0.0567767 0) +(9.46623 -0.0574531 -1.44691e-19) +(9.43943 -0.0581332 1.42839e-19) +(9.41172 -0.0588135 0) +(9.38309 -0.0594955 -1.39181e-19) +(9.35353 -0.0601748 0) +(9.32302 -0.0608533 1.34724e-19) +(9.29154 -0.061526 1.36657e-22) +(9.25909 -0.0621955 -3.89842e-19) +(9.22564 -0.0628565 0) +(9.19119 -0.0635081 -1.24682e-19) +(9.15572 -0.06415 0) +(9.11923 -0.0647803 0) +(9.08171 -0.0653972 -3.45631e-19) +(9.04314 -0.0659989 -2.2368e-19) +(9.00352 -0.0665837 -2.16533e-19) +(8.96286 -0.06715 -1.04649e-19) +(8.92113 -0.0676963 0) +(8.87835 -0.0682205 0) +(8.8345 -0.0687215 -1.84642e-19) +(8.7896 -0.0691968 0) +(8.74364 -0.0696443 -8.34335e-20) +(8.69662 -0.0700725 0) +(8.64855 -0.070461 -1.47307e-19) +(8.59944 -0.0708269 2.05566e-19) +(8.54929 -0.0711488 6.31943e-20) +(8.49811 -0.0714471 0) +(8.44592 -0.0716965 1.04403e-19) +(8.39273 -0.0719208 4.63338e-20) +(8.33855 -0.0720924 -8.08633e-20) +(8.28341 -0.07224 0) +(8.22732 -0.072329 -1.11807e-19) +(8.17031 -0.0723933 8.58903e-20) +(8.11239 -0.0723971 -2.97006e-20) +(8.05358 -0.0723734 1.60771e-20) +(7.99392 -0.0722877 -4.21993e-21) +(7.93343 -0.0721726 0) +(7.87214 -0.0719935 -2.67189e-20) +(7.81008 -0.0717847 4.15655e-20) +(7.74727 -0.0715102 0) +(7.68376 -0.0712075 7.21853e-20) +(7.61958 -0.0708382 -8.79131e-20) +(7.55477 -0.0704413 1.03879e-19) +(7.48936 -0.0699776 0) +(7.42341 -0.0694871 -5.7695e-23) +(7.35694 -0.0689311 0) +(7.28999 -0.0683474 -1.7034e-19) +(7.22262 -0.0677022 0) +(7.15486 -0.0670285 2.04861e-19) +(7.08675 -0.0662974 -4.44689e-19) +(7.01833 -0.0655385 0) +(6.94966 -0.0647295 0) +(6.88077 -0.0638939 0) +(6.81174 -0.0630163 -2.9393e-19) +(6.74258 -0.0621114 6.2461e-19) +(6.67336 -0.0611739 0) +(6.60411 -0.06021 0) +(6.53489 -0.0592252 -7.34898e-19) +(6.46573 -0.0582113 0) +(6.39665 -0.0571919 0) +(6.32772 -0.0561437 -4.2313e-19) +(6.25895 -0.055108 8.82895e-19) +(6.19039 -0.0540412 4.59673e-19) +(6.12205 -0.0530057 -4.78185e-19) +(6.05393 -0.0519398 4.9657e-19) +(5.98608 -0.0509277 0) +(5.9185 -0.0498838 5.33271e-19) +(5.8512 -0.0489201 0) +(5.78418 -0.0479197 0) +(5.71743 -0.0470282 0) +(5.65093 -0.0461005 -6.05704e-19) +(5.58464 -0.0453132 0) +(5.51854 -0.044493 -6.4138e-19) +(5.45254 -0.0438512 0) +(5.38659 -0.043184 0) +(5.32057 -0.0427313 1.38955e-18) +(5.2544 -0.0422665 0) +(5.18791 -0.0420639 2.91957e-18) +(5.12096 -0.041877 2.98998e-18) +(5.0533 -0.0420105 0) +(4.9847 -0.0422185 0) +(4.91483 -0.0428272 0) +(4.84329 -0.0436185 0) +(4.7696 -0.0449564 0) +(4.69299 -0.0466891 0) +(4.61291 -0.0493493 0) +(4.52697 -0.0528932 1.7981e-18) +(4.43674 -0.0589236 -1.84296e-18) +(4.32847 -0.0673129 1.8892e-18) +(4.22953 -0.0884458 0) +(4.04253 -0.118037 0) +(10.067 -0.0395184 -1.67529e-20) +(10.0661 -0.0393441 3.33054e-20) +(10.0651 -0.0392394 1.67726e-20) +(10.064 -0.0391292 0) +(10.0628 -0.0389785 -1.7032e-20) +(10.0614 -0.0387947 0) +(10.0599 -0.0385911 3.45671e-20) +(10.0583 -0.0383761 1.74114e-20) +(10.0565 -0.0381554 0) +(10.0546 -0.0379348 0) +(10.0525 -0.0377187 3.55715e-20) +(10.0503 -0.0375097 3.58209e-20) +(10.0479 -0.0373091 -7.21455e-20) +(10.0454 -0.0371175 0) +(10.0427 -0.0369349 3.65708e-20) +(10.0399 -0.0367613 0) +(10.0368 -0.0365962 -5.57363e-24) +(10.0336 -0.0364393 0) +(10.0303 -0.0362899 0) +(10.0267 -0.0361478 3.77938e-20) +(10.023 -0.0360124 0) +(10.0191 -0.0358834 3.8277e-20) +(10.015 -0.0357604 -3.85172e-20) +(10.0108 -0.0356431 0) +(10.0063 -0.0355313 3.89947e-20) +(10.0017 -0.0354247 2.5794e-24) +(9.99684 -0.0353232 -3.94678e-20) +(9.99182 -0.0352266 3.97026e-20) +(9.98659 -0.0351348 -3.99346e-20) +(9.98117 -0.0350477 1.20503e-19) +(9.97555 -0.0349652 0) +(9.96972 -0.0348872 0) +(9.96368 -0.0348137 -4.08563e-20) +(9.95743 -0.0347446 0) +(9.95097 -0.0346801 -8.26159e-20) +(9.94429 -0.03462 -8.30621e-20) +(9.93739 -0.0345646 0) +(9.93026 -0.0345137 8.39429e-20) +(9.9229 -0.0344675 0) +(9.91531 -0.0344259 0) +(9.90748 -0.0343892 0) +(9.89941 -0.0343575 0) +(9.89109 -0.0343308 8.60664e-20) +(9.88251 -0.0343093 0) +(9.87368 -0.0342932 0) +(9.86458 -0.0342827 4.36316e-20) +(9.85521 -0.034278 0) +(9.84557 -0.0342793 0) +(9.83564 -0.0342869 4.42035e-20) +(9.82542 -0.034301 0) +(9.81491 -0.0343218 8.91449e-20) +(9.80409 -0.0343498 0) +(9.79296 -0.0343851 -4.49064e-20) +(9.78152 -0.034428 0) +(9.76974 -0.0344789 0) +(9.75763 -0.0345381 -9.07561e-20) +(9.74518 -0.0346058 0) +(9.73238 -0.0346824 0) +(9.71922 -0.0347682 0) +(9.70569 -0.0348634 9.18258e-20) +(9.69177 -0.0349684 0) +(9.67747 -0.0350835 0) +(9.66277 -0.0352089 0) +(9.64765 -0.0353449 0) +(9.63212 -0.0354917 0) +(9.61616 -0.0356495 0) +(9.59975 -0.0358186 -9.30354e-20) +(9.58288 -0.0359992 9.31143e-20) +(9.56556 -0.0361913 9.31667e-20) +(9.54775 -0.0363952 -9.31911e-20) +(9.52945 -0.0366109 1.86339e-19) +(9.51065 -0.0368385 0) +(9.49133 -0.037078 9.30462e-20) +(9.47148 -0.0373294 9.29424e-20) +(9.4511 -0.0375924 0) +(9.43015 -0.0378671 0) +(9.40864 -0.0381535 0) +(9.38655 -0.0384515 -9.21494e-20) +(9.36386 -0.0387606 0) +(9.34056 -0.0390805 9.15786e-20) +(9.31663 -0.0394111 1.82294e-19) +(9.29207 -0.0397518 0) +(9.26685 -0.0401024 0) +(9.24097 -0.0404622 1.79333e-19) +(9.21441 -0.0408309 8.90259e-20) +(9.18716 -0.0412078 1.76818e-19) +(9.1592 -0.0415923 -2.63038e-19) +(9.13051 -0.0419835 0) +(9.10109 -0.0423814 1.72152e-19) +(9.07093 -0.0427857 -8.51306e-20) +(9.04 -0.0431942 0) +(9.00829 -0.0436065 -8.31989e-20) +(8.9758 -0.0440211 0) +(8.94252 -0.0444381 8.08241e-20) +(8.90842 -0.0448555 0) +(8.8735 -0.0452735 -1.56538e-19) +(8.83774 -0.0456896 1.53711e-19) +(8.80115 -0.046105 1.50723e-19) +(8.7637 -0.0465157 0) +(8.7254 -0.0469211 -2.88439e-19) +(8.68622 -0.0473212 0) +(8.64617 -0.0477148 0) +(8.60524 -0.0481003 1.33266e-19) +(8.56343 -0.0484763 0) +(8.52072 -0.0488416 0) +(8.47712 -0.0491949 -2.41278e-19) +(8.43262 -0.0495349 0) +(8.38722 -0.0498599 1.11292e-19) +(8.34093 -0.0501695 -1.06349e-19) +(8.29375 -0.0504605 0) +(8.24567 -0.0507344 -1.9182e-19) +(8.1967 -0.0509955 -9.03697e-20) +(8.14684 -0.051229 8.4661e-20) +(8.09611 -0.0514468 -7.87793e-20) +(8.04452 -0.0516336 -7.26774e-20) +(7.99207 -0.0518059 6.63603e-20) +(7.93879 -0.0519449 5.9877e-20) +(7.88468 -0.0520673 -5.32026e-20) +(7.82977 -0.0521522 0) +(7.77407 -0.0522223 0) +(7.7176 -0.052248 3.20079e-20) +(7.66038 -0.0522587 -2.45658e-20) +(7.60242 -0.0522245 0) +(7.54374 -0.0521721 0) +(7.48438 -0.0520753 3.60728e-21) +(7.42435 -0.0519584 0) +(7.36368 -0.0517951 3.05424e-20) +(7.3024 -0.0516118 0) +(7.24054 -0.0513805 0) +(7.17813 -0.0511317 -4.11383e-20) +(7.11521 -0.0508336 0) +(7.05181 -0.0505195 -1.77648e-19) +(6.98797 -0.0501542 0) +(6.92372 -0.0497705 -1.55668e-19) +(6.85909 -0.0493385 0) +(6.79412 -0.0488901 0) +(6.72885 -0.0483956 0) +(6.66333 -0.0478836 1.16386e-19) +(6.59758 -0.0473299 1.26517e-19) +(6.53166 -0.0467597 -1.36316e-19) +(6.46562 -0.0461534 0) +(6.39949 -0.045531 1.56574e-19) +(6.33333 -0.0448811 3.33878e-19) +(6.26718 -0.0442165 0) +(6.20109 -0.0435292 0) +(6.13508 -0.0428255 0) +(6.06921 -0.0421094 0) +(6.00351 -0.0413724 -4.37378e-19) +(5.93801 -0.0406332 0) +(5.87275 -0.0398718 -4.79461e-19) +(5.80774 -0.0391256 5.00141e-19) +(5.74303 -0.0383571 -5.21292e-19) +(5.6786 -0.0376159 5.42219e-19) +(5.6145 -0.0368463 -5.63003e-19) +(5.55071 -0.0361244 0) +(5.48726 -0.0353718 -6.0452e-19) +(5.42414 -0.0346899 0) +(5.36135 -0.0339719 0) +(5.29887 -0.0333472 0) +(5.23668 -0.0326831 2.93433e-22) +(5.17474 -0.0321394 0) +(5.11301 -0.0315553 7.27405e-19) +(5.05139 -0.0311199 0) +(4.98985 -0.0306474 0) +(4.92826 -0.0303551 0) +(4.86652 -0.0300336 0) +(4.80446 -0.0299283 -2.48674e-18) +(4.74192 -0.0298102 -2.54792e-18) +(4.67865 -0.0299523 0) +(4.6144 -0.030125 -8.90785e-19) +(4.54884 -0.0306166 0) +(4.48155 -0.0312209 0) +(4.41204 -0.0322499 0) +(4.3395 -0.0335526 9.79472e-19) +(4.26342 -0.0355641 0) +(4.18114 -0.0382357 -2.05851e-18) +(4.09466 -0.0428067 2.11349e-18) +(3.98811 -0.049343 -2.17026e-18) +(3.89254 -0.0666593 0) +(3.6922 -0.0930079 1.17556e-18) +(9.99744 -0.0364091 4.08987e-20) +(9.9915 -0.0362169 0) +(9.98551 -0.0360613 -4.10569e-20) +(9.97953 -0.0359082 2.06668e-20) +(9.97342 -0.0357607 -2.08109e-20) +(9.96708 -0.0356225 0) +(9.96049 -0.0354823 0) +(9.95365 -0.0353281 -2.12244e-20) +(9.94654 -0.0351563 0) +(9.93915 -0.0349685 0) +(9.93149 -0.0347672 0) +(9.92355 -0.0345545 0) +(9.91533 -0.0343325 2.19055e-20) +(9.90683 -0.0341036 0) +(9.89807 -0.0338699 -2.21703e-20) +(9.88904 -0.033633 0) +(9.87974 -0.0333943 4.48425e-20) +(9.87019 -0.033155 0) +(9.86038 -0.0329158 -2.26692e-20) +(9.85032 -0.0326774 -4.56217e-20) +(9.84002 -0.0324402 0) +(9.82947 -0.0322044 -4.6137e-20) +(9.81869 -0.0319703 4.63934e-20) +(9.80767 -0.031738 0) +(9.79643 -0.0315074 -2.34647e-20) +(9.78496 -0.0312786 -2.35915e-20) +(9.77327 -0.0310516 4.74098e-20) +(9.76136 -0.0308263 -4.76615e-20) +(9.74923 -0.0306029 2.39434e-20) +(9.73689 -0.0303814 -4.81615e-20) +(9.72433 -0.0301618 0) +(9.71157 -0.0299442 0) +(9.6986 -0.0297286 4.89021e-20) +(9.68542 -0.0295152 -2.45614e-20) +(9.67203 -0.0293044 0) +(9.65844 -0.0290962 0) +(9.64464 -0.0288909 0) +(9.63064 -0.0286887 0) +(9.61643 -0.02849 0) +(9.60201 -0.028295 -2.52764e-20) +(9.58739 -0.028104 0) +(9.57257 -0.0279173 0) +(9.55753 -0.0277353 0) +(9.54228 -0.0275583 0) +(9.52682 -0.0273866 0) +(9.51115 -0.0272207 -5.19107e-20) +(9.49526 -0.0270608 0) +(9.47915 -0.0269073 0) +(9.46282 -0.0267604 -1.05049e-19) +(9.44626 -0.0266207 0) +(9.42947 -0.0264883 0) +(9.41245 -0.0263637 0) +(9.39519 -0.0262471 5.32928e-20) +(9.37769 -0.0261388 0) +(9.35994 -0.0260391 0) +(9.34194 -0.0259483 1.07598e-19) +(9.32368 -0.0258667 -5.39415e-20) +(9.30516 -0.0257945 0) +(9.28637 -0.0257318 0) +(9.26729 -0.025679 -1.63082e-19) +(9.24794 -0.0256362 0) +(9.22829 -0.0256036 0) +(9.20834 -0.0255814 0) +(9.18808 -0.0255697 -5.47601e-20) +(9.1675 -0.0255686 5.48319e-20) +(9.1466 -0.0255781 0) +(9.12535 -0.0255984 0) +(9.10377 -0.0256296 0) +(9.08182 -0.0256716 0) +(9.05951 -0.0257245 0) +(9.03682 -0.0257883 -1.0993e-19) +(9.01374 -0.0258629 0) +(8.99025 -0.0259483 -1.64596e-19) +(8.96635 -0.0260441 -1.64362e-19) +(8.94203 -0.0261504 -5.4682e-20) +(8.91726 -0.026267 0) +(8.89205 -0.0263938 0) +(8.86636 -0.0265305 5.42644e-20) +(8.8402 -0.0266768 0) +(8.81354 -0.0268325 5.38489e-20) +(8.78638 -0.0269973 0) +(8.7587 -0.0271707 -5.33074e-20) +(8.73048 -0.0273524 5.3001e-20) +(8.70171 -0.027542 0) +(8.67238 -0.027739 -5.23091e-20) +(8.64247 -0.027943 0) +(8.61197 -0.0281535 5.14692e-20) +(8.58086 -0.0283695 0) +(8.54914 -0.0285921 -1.00951e-19) +(8.51678 -0.0288188 9.98704e-20) +(8.48377 -0.0290506 0) +(8.45011 -0.0292847 -1.94891e-19) +(8.41577 -0.0295227 -9.61101e-20) +(8.38075 -0.0297615 -9.47022e-20) +(8.34503 -0.0300032 9.31939e-20) +(8.3086 -0.030244 0) +(8.27145 -0.0304865 -8.99245e-20) +(8.23357 -0.0307268 0) +(8.19496 -0.0309659 8.62861e-20) +(8.15559 -0.0312023 1.68647e-19) +(8.11547 -0.0314354 0) +(8.07459 -0.0316648 0) +(8.03293 -0.0318894 7.78435e-20) +(7.99051 -0.0321083 0) +(7.9473 -0.0323206 7.30123e-20) +(7.90331 -0.0325254 7.04159e-20) +(7.85853 -0.0327215 0) +(7.81297 -0.0329075 -6.49396e-20) +(7.76662 -0.0330822 1.24115e-19) +(7.71948 -0.0332452 0) +(7.67156 -0.0334015 1.11862e-19) +(7.62285 -0.0335445 1.05397e-19) +(7.57338 -0.033681 -1.48112e-19) +(7.52315 -0.0338 4.59384e-20) +(7.47218 -0.0339098 0) +(7.42048 -0.0339982 -7.73484e-20) +(7.36805 -0.0340748 -1.04713e-19) +(7.31491 -0.0341319 0) +(7.26108 -0.0341765 0) +(7.20656 -0.0342005 0) +(7.15137 -0.0342094 5.60228e-20) +(7.09554 -0.0341946 -2.86549e-20) +(7.03907 -0.0341619 0) +(6.982 -0.0341056 0) +(6.92434 -0.0340339 -1.42518e-21) +(6.86613 -0.0339375 0) +(6.80738 -0.0338241 0) +(6.74812 -0.0336853 -1.37496e-20) +(6.68839 -0.0335274 -1.87795e-20) +(6.62822 -0.0333464 2.40516e-20) +(6.56764 -0.0331454 0) +(6.50668 -0.0329223 1.03428e-19) +(6.44539 -0.0326804 0) +(6.38379 -0.0324149 0) +(6.32191 -0.0321261 0) +(6.25979 -0.0318168 0) +(6.19748 -0.0314861 0) +(6.135 -0.0311354 -1.81385e-22) +(6.07241 -0.0307654 2.94841e-19) +(6.00974 -0.03038 1.59247e-19) +(5.94703 -0.0299782 0) +(5.88433 -0.0295649 -1.83026e-19) +(5.82166 -0.0291373 0) +(5.75908 -0.0287001 0) +(5.69663 -0.0282503 0) +(5.63434 -0.0277919 0) +(5.57224 -0.0273228 0) +(5.51038 -0.0268453 5.12608e-19) +(5.4488 -0.0263612 0) +(5.3875 -0.0258714 0) +(5.32651 -0.025381 -5.87214e-19) +(5.26586 -0.0248879 0) +(5.20557 -0.0243982 -3.18366e-19) +(5.14564 -0.023909 -3.30829e-19) +(5.08609 -0.0234319 3.43343e-19) +(5.0269 -0.0229584 0) +(4.96807 -0.0225088 3.68322e-19) +(4.9096 -0.0220651 3.80761e-19) +(4.85146 -0.0216536 0) +(4.79362 -0.0212487 8.11803e-19) +(4.73604 -0.0208886 0) +(4.67867 -0.0205383 0) +(4.62142 -0.0202481 -4.4323e-19) +(4.56422 -0.0199758 0) +(4.50696 -0.0197803 4.6841e-19) +(4.44952 -0.0196098 0) +(4.39174 -0.0195372 9.88203e-19) +(4.33345 -0.0195023 5.07163e-19) +(4.2744 -0.0195939 0) +(4.21434 -0.0197521 5.33668e-19) +(4.15293 -0.0200785 0) +(4.08974 -0.0205241 0) +(4.02429 -0.0212139 -5.75612e-19) +(3.95574 -0.0221305 -1.18176e-18) +(3.8836 -0.0234863 6.0671e-19) +(3.80499 -0.0253564 -6.23486e-19) +(3.72239 -0.0284499 1.28405e-18) +(3.61768 -0.0332247 0) +(3.52695 -0.0459728 1.36935e-18) +(3.30774 -0.0675226 -2.91725e-18) +(9.73052 -0.0282935 -2.51521e-20) +(9.71692 -0.0282612 0) +(9.70313 -0.027936 2.52577e-20) +(9.68894 -0.0272915 -2.54058e-20) +(9.6742 -0.0264937 0) +(9.65892 -0.025661 0) +(9.64316 -0.0248342 0) +(9.62696 -0.0240253 1.30254e-20) +(9.61037 -0.0232433 0) +(9.59342 -0.0224951 1.31759e-20) +(9.57617 -0.0217833 1.32512e-20) +(9.55864 -0.0211081 0) +(9.54088 -0.0204684 2.67608e-20) +(9.52291 -0.0198633 -1.34774e-20) +(9.50477 -0.0192917 -4.06173e-20) +(9.48648 -0.0187525 0) +(9.46806 -0.0182445 1.37044e-20) +(9.44952 -0.0177668 0) +(9.43089 -0.0173183 2.76732e-20) +(9.41218 -0.0168979 -1.39321e-20) +(9.39339 -0.0165048 1.4008e-20) +(9.37453 -0.016138 0) +(9.35562 -0.0157964 0) +(9.33666 -0.0154791 0) +(9.31764 -0.015185 -2.85872e-20) +(9.29858 -0.0149132 -4.31259e-20) +(9.27948 -0.0146625 -1.44624e-20) +(9.26034 -0.014432 0) +(9.24115 -0.0142206 -1.45798e-20) +(9.22193 -0.0140273 0) +(9.20267 -0.013851 0) +(9.18336 -0.0136907 -1.48365e-20) +(9.16402 -0.0135453 0) +(9.14463 -0.013414 2.99381e-20) +(9.1252 -0.0132957 0) +(9.10572 -0.0131896 -1.51299e-20) +(9.0862 -0.0130946 -1.52021e-20) +(9.06663 -0.0130102 1.52737e-20) +(9.047 -0.0129353 -1.53448e-20) +(9.02733 -0.0128694 3.08039e-20) +(9.00759 -0.0128115 0) +(8.9878 -0.0127613 0) +(8.96794 -0.0127178 1.56219e-20) +(8.94801 -0.0126808 0) +(8.92802 -0.0126497 1.57553e-20) +(8.90795 -0.0126239 -1.58205e-20) +(8.8878 -0.0126032 0) +(8.86757 -0.0125871 0) +(8.84725 -0.0125754 6.39913e-20) +(8.82683 -0.0125678 0) +(8.80632 -0.0125641 3.2255e-20) +(8.7857 -0.0125641 3.23687e-20) +(8.76497 -0.0125677 0) +(8.74413 -0.0125747 0) +(8.72316 -0.0125851 3.26879e-20) +(8.70205 -0.0125988 0) +(8.68081 -0.0126159 6.57204e-20) +(8.65942 -0.0126364 0) +(8.63788 -0.0126602 -3.30511e-20) +(8.61617 -0.0126873 6.62203e-20) +(8.59429 -0.012718 0) +(8.57222 -0.0127523 0) +(8.54996 -0.0127901 0) +(8.5275 -0.0128317 6.67141e-20) +(8.50482 -0.012877 -6.68015e-20) +(8.48192 -0.0129262 0) +(8.45878 -0.0129794 0) +(8.4354 -0.0130366 0) +(8.41175 -0.0130979 3.35072e-20) +(8.38783 -0.0131634 3.35058e-20) +(8.36363 -0.0132332 0) +(8.33912 -0.0133074 0) +(8.31431 -0.0133858 3.34024e-20) +(8.28917 -0.0134687 6.6745e-20) +(8.26369 -0.0135562 6.66259e-20) +(8.23785 -0.013648 0) +(8.21165 -0.0137441 0) +(8.18506 -0.0138445 6.61027e-20) +(8.15808 -0.0139493 0) +(8.13069 -0.0140584 6.56036e-20) +(8.10286 -0.0141716 0) +(8.0746 -0.0142889 9.74754e-20) +(8.04588 -0.0144101 -6.46031e-20) +(8.01668 -0.014535 -3.21163e-20) +(7.987 -0.0146635 -6.37527e-20) +(7.95681 -0.0147954 0) +(7.92611 -0.0149303 6.27429e-20) +(7.89487 -0.0150686 0) +(7.86309 -0.0152098 1.23125e-19) +(7.83074 -0.0153526 0) +(7.79782 -0.0154986 0) +(7.76432 -0.0156457 1.18896e-19) +(7.73021 -0.0157954 1.17292e-19) +(7.69548 -0.0159451 0) +(7.66014 -0.0160971 -1.13777e-19) +(7.62415 -0.0162483 0) +(7.58751 -0.0164014 1.09834e-19) +(7.55021 -0.0165515 0) +(7.51225 -0.0167022 -1.05443e-19) +(7.47361 -0.0168527 5.15812e-20) +(7.43428 -0.0170014 0) +(7.39426 -0.0171481 0) +(7.35354 -0.0172925 -1.42909e-19) +(7.31212 -0.0174342 0) +(7.26999 -0.0175726 -4.46497e-20) +(7.22714 -0.0177067 8.6279e-20) +(7.18359 -0.0178367 4.15657e-20) +(7.13932 -0.0179596 -7.96495e-20) +(7.09434 -0.0180762 3.81198e-20) +(7.04863 -0.0181857 0) +(7.00223 -0.0182904 0) +(6.95512 -0.0183863 0) +(6.90733 -0.0184861 9.11072e-20) +(6.85885 -0.0185774 -5.64953e-20) +(6.80972 -0.0186749 2.61327e-20) +(6.75991 -0.0187557 0) +(6.70944 -0.0188345 6.46229e-20) +(6.65831 -0.0188894 0) +(6.60655 -0.0189442 0) +(6.55416 -0.0189687 0) +(6.50115 -0.0190143 -2.31245e-20) +(6.44761 -0.0190232 0) +(6.39345 -0.0190356 0) +(6.33881 -0.019025 0) +(6.2836 -0.019001 0) +(6.22794 -0.0189657 2.40257e-21) +(6.17179 -0.0189204 0) +(6.11522 -0.0188648 1.7118e-20) +(6.05825 -0.0188063 2.34077e-20) +(6.0009 -0.0187222 4.46871e-20) +(5.94322 -0.0186366 0) +(5.88523 -0.0185252 -4.30717e-20) +(5.82698 -0.0184128 0) +(5.7685 -0.018275 0) +(5.70984 -0.0181348 3.18526e-20) +(5.65101 -0.0179715 3.54332e-20) +(5.59208 -0.0178048 -3.90674e-20) +(5.53306 -0.017618 -1.71309e-19) +(5.474 -0.017428 -1.86273e-19) +(5.41493 -0.0172223 0) +(5.3559 -0.0170136 0) +(5.29694 -0.0167933 -1.16036e-19) +(5.23808 -0.0165693 -1.23904e-19) +(5.17935 -0.0163393 0) +(5.12079 -0.0161031 0) +(5.06243 -0.0158633 0) +(5.0043 -0.0156139 0) +(4.94643 -0.0153652 -1.64468e-19) +(4.88885 -0.0151024 -1.72807e-19) +(4.83159 -0.014845 0) +(4.77466 -0.0145733 -1.89661e-19) +(4.71808 -0.0143165 0) +(4.66187 -0.0140415 4.13774e-19) +(4.60604 -0.0137886 4.30988e-19) +(4.55059 -0.0135144 -6.7243e-19) +(4.49552 -0.0132714 -2.32758e-19) +(4.44082 -0.0130082 -4.8338e-19) +(4.38648 -0.0127863 -5.00981e-19) +(4.33247 -0.0125429 0) +(4.27876 -0.0123485 -2.68191e-19) +(4.22529 -0.01213 -2.77238e-19) +(4.17203 -0.0119685 0) +(4.11887 -0.0117851 5.91203e-19) +(4.06575 -0.0116725 -3.04681e-19) +(4.01253 -0.011542 -9.4253e-19) +(3.95913 -0.0114918 0) +(3.90535 -0.0114299 0) +(3.85105 -0.0114603 6.86198e-19) +(3.79596 -0.0114929 0) +(3.73985 -0.0116359 3.63531e-19) +(3.68236 -0.0118075 0) +(3.6231 -0.0121181 0) +(3.56156 -0.012508 7.92875e-19) +(3.49691 -0.0130998 4.08221e-19) +(3.42869 -0.0138935 -1.26333e-18) +(3.35382 -0.0150832 8.69298e-19) +(3.27531 -0.0169207 -1.34939e-18) +(3.17265 -0.0201194 4.65601e-19) +(3.08862 -0.0285489 -1.94151e-18) +(2.84163 -0.0423998 2.61238e-18) +(8.54295 -0.0130577 0) +(8.51609 -0.0138902 0) +(8.48955 -0.0143822 0) +(8.46357 -0.0144847 0) +(8.4381 -0.01434 0) +(8.41322 -0.014072 0) +(8.38901 -0.0137459 0) +(8.36549 -0.0133978 -1.84709e-20) +(8.3426 -0.0130519 0) +(8.32032 -0.0127247 -1.8698e-20) +(8.29858 -0.0124253 -1.8809e-20) +(8.27736 -0.0121574 0) +(8.2566 -0.0119218 0) +(8.23627 -0.0117171 1.91341e-20) +(8.21631 -0.0115407 1.92402e-20) +(8.1967 -0.0113896 0) +(8.17739 -0.0112601 -1.945e-20) +(8.15836 -0.0111485 0) +(8.13957 -0.0110513 0) +(8.12099 -0.0109652 1.97596e-20) +(8.1026 -0.010887 -1.98618e-20) +(8.08438 -0.0108141 0) +(8.06631 -0.0107442 0) +(8.04836 -0.0106751 0) +(8.03051 -0.0106051 0) +(8.01276 -0.0105331 2.0367e-20) +(7.99509 -0.0104578 2.04672e-20) +(7.97749 -0.0103785 0) +(7.95993 -0.0102947 -2.0667e-20) +(7.94242 -0.0102061 0) +(7.92494 -0.0101126 0) +(7.90747 -0.0100141 2.09651e-20) +(7.89003 -0.00991101 0) +(7.87258 -0.00980353 0) +(7.85513 -0.00969207 0) +(7.83767 -0.00957706 2.13595e-20) +(7.82019 -0.00945902 2.14573e-20) +(7.80269 -0.00933854 -2.15548e-20) +(7.78515 -0.00921618 2.16519e-20) +(7.76758 -0.00909255 0) +(7.74996 -0.0089682 0) +(7.7323 -0.00884375 0) +(7.71457 -0.00871973 -2.20349e-20) +(7.69679 -0.00859668 0) +(7.67894 -0.0084751 -2.22223e-20) +(7.66101 -0.00835551 2.23146e-20) +(7.64301 -0.00823831 0) +(7.62492 -0.00812391 0) +(7.60673 -0.00801269 0) +(7.58845 -0.00790502 0) +(7.57007 -0.00780119 -4.55159e-20) +(7.55157 -0.00770141 -4.56841e-20) +(7.53296 -0.00760591 0) +(7.51423 -0.00751489 0) +(7.49536 -0.00742853 -4.61645e-20) +(7.47635 -0.00734696 0) +(7.4572 -0.00727025 0) +(7.43789 -0.00719848 0) +(7.41842 -0.00713167 4.6734e-20) +(7.39878 -0.00706987 0) +(7.37897 -0.00701315 0) +(7.35896 -0.0069614 0) +(7.33876 -0.00691456 0) +(7.31835 -0.00687263 0) +(7.29772 -0.00683556 0) +(7.27686 -0.0068032 0) +(7.25577 -0.00677547 0) +(7.23443 -0.00675224 0) +(7.21284 -0.00673342 -4.76058e-20) +(7.19097 -0.00671884 -4.7633e-20) +(7.16882 -0.00670841 0) +(7.14637 -0.00670197 0) +(7.12363 -0.00669925 4.76293e-20) +(7.10056 -0.00670028 0) +(7.07716 -0.00670507 0) +(7.05342 -0.00671322 0) +(7.02933 -0.00672443 0) +(7.00486 -0.00673865 0) +(6.98002 -0.00675571 0) +(6.95478 -0.00677548 0) +(6.92913 -0.00679774 0) +(6.90306 -0.00682238 -4.66474e-20) +(6.87656 -0.00684914 0) +(6.84961 -0.00687784 4.61829e-20) +(6.8222 -0.00690824 0) +(6.79432 -0.00694011 0) +(6.76595 -0.00697328 0) +(6.73708 -0.00700804 0) +(6.7077 -0.00704371 0) +(6.6778 -0.00707931 0) +(6.64736 -0.00711629 0) +(6.61638 -0.0071531 0) +(6.58484 -0.00719083 0) +(6.55273 -0.00722772 0) +(6.52004 -0.00726549 0) +(6.48676 -0.00730193 0) +(6.45289 -0.0073391 0) +(6.41841 -0.00737316 0) +(6.38332 -0.00740721 0) +(6.34761 -0.00744078 -7.57104e-20) +(6.31127 -0.00747306 0) +(6.2743 -0.00750368 0) +(6.23669 -0.00753265 7.03093e-20) +(6.19844 -0.00755984 0) +(6.15955 -0.00758481 -6.62299e-20) +(6.12001 -0.00760775 0) +(6.07982 -0.00762699 -6.17475e-20) +(6.039 -0.00764311 0) +(5.99753 -0.00765581 -5.68456e-20) +(5.95548 -0.00766939 0) +(5.91275 -0.00768257 0) +(5.86945 -0.00768974 0) +(5.82547 -0.00770111 -4.5717e-20) +(5.78087 -0.00769745 0) +(5.73561 -0.00769001 -3.94672e-20) +(5.68972 -0.0076752 0) +(5.64322 -0.00766756 -3.27433e-20) +(5.59615 -0.00765266 0) +(5.54846 -0.0076397 0) +(5.50025 -0.00766064 0) +(5.45151 -0.00758737 0) +(5.40219 -0.00755338 0) +(5.35246 -0.00753523 0) +(5.30216 -0.00748403 0) +(5.25148 -0.00749196 0) +(5.20033 -0.00742833 -3.6928e-21) +(5.1488 -0.00741098 0) +(5.09687 -0.0073398 0) +(5.04459 -0.00728702 0) +(4.99199 -0.00722184 -2.32582e-20) +(4.93908 -0.00716488 0) +(4.88594 -0.00709529 0) +(4.83255 -0.00703088 0) +(4.77898 -0.0069529 0) +(4.72525 -0.00688059 -5.06914e-20) +(4.67142 -0.0067967 -5.65739e-20) +(4.61751 -0.00671641 6.2584e-20) +(4.56357 -0.00662706 0) +(4.50963 -0.00654056 0) +(4.45573 -0.00644755 0) +(4.40189 -0.00635594 0) +(4.34814 -0.00626042 1.89087e-19) +(4.29452 -0.00616437 2.02615e-19) +(4.24102 -0.00606737 0) +(4.18769 -0.00596808 0) +(4.13454 -0.0058707 0) +(4.0816 -0.00576841 0) +(4.02888 -0.00567153 2.7381e-19) +(3.97643 -0.00556596 2.88749e-19) +(3.92426 -0.00547267 0) +(3.87242 -0.00536678 3.19268e-19) +(3.82087 -0.00527863 0) +(3.76968 -0.00517278 0) +(3.71879 -0.00509028 0) +(3.66827 -0.00498632 3.82894e-19) +(3.61806 -0.0049123 3.99303e-19) +(3.56822 -0.00481419 0) +(3.51862 -0.00475344 0) +(3.46931 -0.00466277 0) +(3.42018 -0.00461571 4.67307e-19) +(3.37127 -0.00453554 4.84972e-19) +(3.32246 -0.00450722 0) +(3.27375 -0.0044429 0) +(3.22498 -0.00443752 5.39487e-19) +(3.17612 -0.00439519 5.58412e-19) +(3.12696 -0.00441911 0) +(3.07744 -0.00440775 0) +(3.0273 -0.00446985 0) +(2.97643 -0.00450312 0) +(2.92446 -0.00461482 6.59949e-19) +(2.87119 -0.00471295 0) +(2.81611 -0.00489787 0) +(2.75883 -0.00509703 0) +(2.69847 -0.00541225 -7.56293e-19) +(2.63459 -0.0057944 7.84358e-19) +(2.56393 -0.00642094 0) +(2.48984 -0.00721276 -8.48604e-19) +(2.38896 -0.00908263 -8.86342e-19) +(2.30816 -0.0122289 0) +(2.01172 -0.0187926 -1.01704e-18) +(0.94105 0.0375542 7.20243e-17) +(1.07357 0.0661188 -6.71546e-17) +(1.20184 0.0840328 0) +(1.31631 0.0978929 0) +(1.43161 0.111377 1.14802e-16) +(1.55169 0.124698 -1.08953e-16) +(1.67619 0.137993 -1.03922e-16) +(1.8057 0.151625 -9.8564e-17) +(1.94106 0.165786 0) +(2.08274 0.180554 -8.90385e-17) +(2.2311 0.195999 8.40567e-17) +(2.38643 0.212177 1.58743e-16) +(2.54908 0.229127 0) +(2.71922 0.246884 1.40108e-16) +(2.89725 0.265457 0) +(3.08308 0.284932 0) +(3.27791 0.305197 0) +(3.48017 0.326592 3.72438e-19) +(3.69501 0.348447 0) +(3.91257 0.372361 0) +(4.15862 0.395095 0) +(4.37821 0.423547 -1.1359e-16) +(4.70564 0.443964 8.99941e-17) +(4.84941 0.482732 1.03112e-16) +(5.4883 0.496031 4.12118e-17) +(1.20379 0.0317628 0) +(1.31913 0.0561375 1.7504e-19) +(1.435 0.0719318 -2.45996e-17) +(1.54796 0.0862292 -4.7723e-17) +(1.6656 0.100773 4.62791e-17) +(1.78894 0.114928 2.81473e-19) +(1.91754 0.129018 -4.32971e-17) +(2.05195 0.143541 2.65941e-19) +(2.19281 0.158672 0) +(2.34058 0.174495 0) +(2.49562 0.191105 -3.72885e-17) +(2.65831 0.208573 -7.12349e-17) +(2.82903 0.226948 0) +(3.00805 0.246277 -1.27972e-16) +(3.19587 0.266572 6.00558e-17) +(3.39257 0.287959 -5.61905e-17) +(3.59943 0.310251 0) +(3.81515 0.333972 9.60937e-17) +(4.04481 0.35806 0) +(4.27943 0.385022 -3.83808e-17) +(4.54343 0.409501 3.33365e-17) +(4.78618 0.443192 5.44146e-17) +(5.13241 0.460985 -4.43546e-17) +(5.31212 0.513084 -8.87287e-19) +(5.97017 0.498964 -2.06257e-17) +(1.36633 0.00827773 0) +(1.47326 0.0300547 2.90072e-17) +(1.58199 0.0451165 1.41031e-17) +(1.69267 0.0592791 2.74251e-17) +(1.8094 0.0737395 -2.66576e-17) +(1.93212 0.0878676 1.82261e-19) +(2.06054 0.102002 2.5061e-17) +(2.19511 0.116581 1.73686e-19) +(2.33633 0.131772 0) +(2.48462 0.147681 -2.23571e-17) +(2.64034 0.164417 0) +(2.80386 0.182058 0) +(2.97559 0.200657 0) +(3.15582 0.22027 3.73757e-17) +(3.34508 0.240908 -3.52446e-17) +(3.54353 0.262703 3.3005e-17) +(3.75242 0.285432 0) +(3.97065 0.309692 -2.74789e-19) +(4.20307 0.334194 0) +(4.44146 0.361922 4.48752e-17) +(4.70867 0.386296 -1.96205e-17) +(4.95808 0.421509 -5.33519e-19) +(5.30498 0.436449 0) +(5.50127 0.492339 -1.43314e-17) +(6.13721 0.458821 0) +(1.50359 -0.0206255 0) +(1.60605 -0.0016064 -6.21054e-20) +(1.71037 0.0129197 0) +(1.81885 0.0268998 9.75777e-18) +(1.93395 0.0411179 0) +(2.05518 0.0551275 1.84831e-17) +(2.18241 0.0692242 0) +(2.316 0.0837741 3.44915e-17) +(2.45636 0.0989459 0) +(2.60383 0.114861 1.60451e-17) +(2.75879 0.131637 0) +(2.92159 0.149355 0) +(3.09266 0.168075 0) +(3.27229 0.187856 2.62835e-17) +(3.46102 0.208708 0) +(3.65906 0.230753 0) +(3.86763 0.253767 0) +(4.08577 0.278325 -1.81902e-19) +(4.31812 0.303119 0) +(4.55702 0.33112 -1.57258e-17) +(4.82412 0.35561 0) +(5.07571 0.390877 -2.19764e-17) +(5.42002 0.40506 0) +(5.62538 0.459448 0) +(6.23767 0.417779 0) +(1.63424 -0.0505833 0) +(1.73392 -0.0338344 -8.40835e-18) +(1.83521 -0.0199562 0) +(1.94165 -0.00640547 -3.80504e-20) +(2.05485 0.00738907 0) +(2.17426 0.0211412 0) +(2.29986 0.0350817 1.43053e-17) +(2.43194 0.0495082 -2.76934e-17) +(2.57084 0.0645837 0) +(2.71688 0.0804352 -1.27725e-17) +(2.87041 0.0971814 1.22274e-17) +(3.0318 0.114908 -1.16623e-17) +(3.20144 0.133678 0) +(3.37967 0.15355 -1.37001e-19) +(3.56703 0.174532 0) +(3.76373 0.196736 1.83118e-17) +(3.97099 0.219945 0) +(4.18794 0.244678 -1.5552e-17) +(4.4191 0.269693 0) +(4.65715 0.297737 0) +(4.92292 0.322441 -1.04961e-17) +(5.17476 0.357114 0) +(5.51559 0.371543 0) +(5.72624 0.422241 0) +(6.31694 0.378428 0) +(1.76501 -0.0803318 0) +(1.86264 -0.0653494 0) +(1.96153 -0.0521693 0) +(2.06601 -0.0391765 -1.35788e-17) +(2.1772 -0.0258942 -6.56598e-18) +(2.2946 -0.0125005 1.2712e-17) +(2.41829 0.00118754 -1.23407e-17) +(2.54851 0.0154106 2.37516e-17) +(2.68557 0.0303211 0) +(2.82977 0.0460454 1.09888e-17) +(2.98145 0.0627006 -1.0509e-17) +(3.14096 0.0803738 5.28242e-20) +(3.30872 0.0991298 0) +(3.48504 0.119028 -9.01175e-18) +(3.67048 0.140072 0) +(3.86528 0.162361 -1.56325e-17) +(4.07063 0.185689 0) +(4.28574 0.210503 0) +(4.51502 0.235667 -1.16832e-17) +(4.75144 0.26362 0) +(5.01518 0.288529 1.76397e-17) +(5.26614 0.32232 6.93134e-18) +(5.60308 0.337382 0) +(5.81667 0.383671 -5.43907e-18) +(6.38794 0.340893 5.22406e-18) +(1.89908 -0.109691 0) +(1.99493 -0.0961227 0) +(2.09169 -0.0836311 0) +(2.19419 -0.0712227 6.09349e-18) +(2.30328 -0.0584796 5.90353e-18) +(2.41853 -0.0454959 -5.73356e-18) +(2.54008 -0.0321218 0) +(2.66818 -0.0181578 -4.26463e-20) +(2.80309 -0.00346342 0) +(2.94513 0.0120849 0) +(3.09462 0.0286018 0) +(3.25192 0.0461743 8.90895e-18) +(3.41741 0.0648677 0) +(3.59144 0.0847386 -7.95204e-18) +(3.77455 0.105792 0) +(3.96701 0.128106 0) +(4.17 0.151493 0) +(4.38279 0.176322 0) +(4.60969 0.201576 2.06284e-17) +(4.84392 0.229353 0) +(5.10512 0.254439 -7.74417e-18) +(5.3544 0.28721 -6.10223e-18) +(5.68715 0.303058 4.85686e-18) +(5.90204 0.344828 4.75825e-18) +(6.45572 0.304892 -4.58264e-18) +(2.03817 -0.138586 6.14823e-18) +(2.13228 -0.126188 0) +(2.22699 -0.114357 5.76069e-18) +(2.32743 -0.102527 -5.58899e-18) +(2.43433 -0.0903242 0) +(2.54728 -0.0777774 -5.25243e-18) +(2.66649 -0.0647582 -1.01062e-17) +(2.79222 -0.0510949 -9.76707e-18) +(2.92474 -0.0366559 0) +(3.06434 -0.0213212 -8.95211e-18) +(3.21134 -0.00497991 8.54332e-18) +(3.36609 0.0124545 0) +(3.529 0.0310469 0) +(3.70039 0.0508504 0) +(3.88083 0.071868 0) +(4.07059 0.0941603 0) +(4.27084 0.117556 0) +(4.48091 0.142347 0) +(4.70503 0.167637 -9.37668e-18) +(4.93661 0.195177 0) +(5.19483 0.220404 0) +(5.44184 0.252089 -5.40595e-18) +(5.77011 0.268784 -4.40049e-18) +(5.98503 0.306153 0) +(6.52263 0.270194 -4.12263e-18) +(2.18325 -0.166921 -5.76931e-18) +(2.27554 -0.155521 -5.55853e-18) +(2.36816 -0.144321 -5.416e-18) +(2.46645 -0.133056 5.25662e-18) +(2.57103 -0.121383 5.07734e-18) +(2.68152 -0.109286 0) +(2.79821 -0.0966502 9.50268e-18) +(2.92137 -0.08332 9.11944e-18) +(3.05124 -0.0691696 8.75445e-18) +(3.18814 -0.0540824 8.40716e-18) +(3.33238 -0.0379506 -8.01894e-18) +(3.48432 -0.0206888 0) +(3.64434 -0.00223306 0) +(3.81279 0.0174657 -6.74249e-18) +(3.99023 0.038409 -6.2952e-18) +(4.17695 0.060639 5.82956e-18) +(4.37413 0.0839999 0) +(4.58112 0.108707 9.6723e-18) +(4.80208 0.133986 0) +(5.03061 0.16124 0) +(5.28547 0.186568 -6.37767e-18) +(5.52972 0.217136 5.01775e-18) +(5.85323 0.234692 0) +(6.06718 0.267863 0) +(6.58991 0.236629 1.90924e-18) +(2.33491 -0.194612 -5.46295e-18) +(2.42522 -0.184085 5.29285e-18) +(2.51567 -0.173492 0) +(2.61164 -0.162773 0) +(2.71376 -0.151618 -9.67087e-18) +(2.82164 -0.139978 0) +(2.93563 -0.127745 4.50445e-18) +(3.056 -0.114773 -4.35908e-18) +(3.18301 -0.100939 -8.34341e-18) +(3.31697 -0.0861288 7.95736e-18) +(3.4582 -0.070237 0) +(3.60704 -0.0531794 7.19863e-18) +(3.7639 -0.0348935 0) +(3.92913 -0.0153342 6.41098e-18) +(4.10328 0.00549751 2.4966e-20) +(4.28666 0.0276265 -2.48325e-20) +(4.48043 0.0509103 0) +(4.684 0.0754928 -4.87132e-20) +(4.90146 0.100715 -8.11748e-18) +(5.12659 0.127644 0) +(5.37774 0.15303 6.02284e-18) +(5.61879 0.182471 4.63764e-18) +(5.93726 0.20088 0) +(6.14945 0.230088 0) +(6.65827 0.204064 1.78919e-18) +(2.49349 -0.221589 5.25123e-18) +(2.58163 -0.211843 0) +(2.66975 -0.201835 -4.93306e-18) +(2.76323 -0.19165 0) +(2.86272 -0.181003 4.65343e-18) +(2.96784 -0.169824 0) +(3.07894 -0.158008 -4.34105e-18) +(3.19632 -0.145415 -1.06789e-20) +(3.32026 -0.131921 7.9936e-18) +(3.45105 -0.117414 -7.66531e-18) +(3.58902 -0.10179 0) +(3.73453 -0.0849654 -2.20892e-20) +(3.88797 -0.06688 0) +(4.0497 -0.0474928 0) +(4.22028 -0.0268074 5.72636e-18) +(4.40001 -0.00481599 -5.29381e-18) +(4.59008 0.0183512 0) +(4.78992 0.042769 -8.74728e-18) +(5.00357 0.0678902 7.77983e-18) +(5.22495 0.0944591 6.68369e-18) +(5.47204 0.119863 0) +(5.70952 0.148177 -4.43155e-18) +(6.02267 0.16742 0) +(6.23244 0.192906 0) +(6.72812 0.17239 0) +(2.65915 -0.247791 0) +(2.74491 -0.238757 4.90835e-18) +(2.83052 -0.229321 4.78882e-18) +(2.92133 -0.21966 0) +(3.01801 -0.209518 0) +(3.12018 -0.198803 0) +(3.22821 -0.187416 0) +(3.34242 -0.175218 -9.44652e-21) +(3.46307 -0.162086 -7.7688e-18) +(3.59047 -0.147905 0) +(3.72497 -0.132574 0) +(3.8669 -0.11601 -1.98285e-20) +(4.01667 -0.0981542 0) +(4.17464 -0.0789697 0) +(4.34138 -0.0584633 0) +(4.5172 -0.0366441 0) +(4.70328 -0.0136312 0) +(4.89909 0.0105846 0) +(5.10862 0.0355632 7.4505e-18) +(5.32593 0.061739 -6.46344e-18) +(5.56865 0.0871186 0) +(5.80218 0.114313 0) +(6.10975 0.134363 0) +(6.31655 0.156365 0) +(6.79969 0.141518 0) +(2.83196 -0.273163 0) +(2.9151 -0.264791 -8.13668e-21) +(2.99802 -0.255919 -4.66288e-18) +(3.08595 -0.24678 -4.53391e-18) +(3.17963 -0.237141 0) +(3.27867 -0.226897 4.25138e-18) +(3.38344 -0.215952 0) +(3.49427 -0.204165 -3.95399e-18) +(3.61143 -0.191413 0) +(3.73525 -0.177581 0) +(3.86604 -0.162567 0) +(4.00417 -0.146289 -1.8064e-20) +(4.15004 -0.128689 0) +(4.304 -0.109736 0) +(4.46664 -0.0894393 0) +(4.63829 -0.0678252 0) +(4.82011 -0.0450024 -4.52878e-18) +(5.01161 -0.0210239 4.07834e-18) +(5.21673 0.0037717 -7.26893e-18) +(5.42966 0.0295248 0) +(5.6677 0.0548377 5.27581e-18) +(5.89696 0.0809259 4.05964e-18) +(6.19868 0.10175 0) +(6.40204 0.120493 1.39859e-18) +(6.87313 0.111374 0) +(3.01189 -0.297651 0) +(3.09216 -0.289906 -4.70155e-18) +(3.17218 -0.281598 4.58334e-18) +(3.25703 -0.272984 8.91037e-18) +(3.3475 -0.263854 0) +(3.44322 -0.254091 -8.36041e-18) +(3.54455 -0.2436 0) +(3.65181 -0.232241 0) +(3.76529 -0.219887 0) +(3.88531 -0.206424 0) +(4.01219 -0.191749 0) +(4.1463 -0.17578 -6.42781e-18) +(4.28803 -0.158462 0) +(4.43776 -0.139768 5.66463e-18) +(4.59607 -0.119712 0) +(4.76328 -0.0983337 -4.86085e-18) +(4.94058 -0.0757354 4.45308e-18) +(5.12751 -0.0520279 -7.99985e-18) +(5.32794 -0.0274541 0) +(5.53621 -0.00215172 0) +(5.76928 0.0230536 -5.17447e-18) +(5.99395 0.0480508 -2.82951e-20) +(6.28956 0.0696125 0) +(6.48911 0.0853072 -1.83729e-20) +(6.94849 0.0818968 1.53413e-18) +(3.19887 -0.3212 0) +(3.276 -0.314061 2.31444e-18) +(3.3529 -0.306326 0) +(3.43445 -0.298245 -4.39968e-18) +(3.52152 -0.289636 0) +(3.61372 -0.280369 6.63872e-21) +(3.71141 -0.270347 3.97998e-18) +(3.81491 -0.259432 -3.82929e-18) +(3.92451 -0.247496 0) +(4.04054 -0.234422 -3.50958e-18) +(4.16331 -0.220107 0) +(4.29319 -0.204471 0) +(4.43057 -0.187459 0) +(4.57584 -0.169049 -5.6061e-18) +(4.72958 -0.14926 0) +(4.89213 -0.128148 4.80853e-18) +(5.06466 -0.105807 0) +(5.24675 -0.0824035 7.87578e-18) +(5.44223 -0.0580886 -3.47881e-18) +(5.64559 -0.0332628 2.98917e-18) +(5.87341 -0.00820469 2.52413e-18) +(6.0932 0.0157171 -2.55811e-20) +(6.38245 0.0379751 0) +(6.57785 0.0508156 -1.32874e-18) +(7.02581 0.053034 -3.00938e-18) +(3.39273 -0.343753 0) +(3.46646 -0.337214 -2.29547e-18) +(3.54003 -0.330068 2.2369e-18) +(3.61807 -0.322537 0) +(3.70152 -0.314465 4.22717e-18) +(3.79 -0.305711 8.18924e-18) +(3.88385 -0.296177 -6.18017e-21) +(3.9834 -0.285725 3.80675e-18) +(4.08894 -0.274226 0) +(4.20078 -0.261561 3.49017e-18) +(4.31924 -0.247629 0) +(4.44469 -0.232347 0) +(4.57753 -0.215665 0) +(4.71813 -0.197566 0) +(4.86708 -0.178072 0) +(5.02473 -0.157255 0) +(5.19227 -0.135203 0) +(5.36929 -0.112134 -1.47545e-20) +(5.55957 -0.088114 3.45474e-18) +(5.75775 -0.0637895 -2.96699e-18) +(5.98005 -0.0389173 -4.99434e-18) +(6.19472 -0.0160554 -3.83618e-18) +(6.47737 0.00685594 -3.03542e-18) +(6.66834 0.0170204 0) +(7.10506 0.024741 1.48369e-18) +(3.5933 -0.365249 0) +(3.66335 -0.359318 0) +(3.73336 -0.352789 -2.22908e-18) +(3.80768 -0.345831 2.16886e-18) +(3.88731 -0.338318 -4.21602e-18) +(3.97187 -0.330101 -4.08236e-18) +(4.06169 -0.321077 -3.94169e-18) +(4.15711 -0.311112 3.78814e-18) +(4.2584 -0.300072 0) +(4.36586 -0.287837 3.47239e-18) +(4.47983 -0.274309 0) +(4.60066 -0.259403 0) +(4.72874 -0.243074 0) +(4.86447 -0.225308 0) +(5.00841 -0.206135 0) +(5.16096 -0.185641 4.72787e-18) +(5.32328 -0.163909 0) +(5.495 -0.141205 -1.40767e-20) +(5.67985 -0.117514 3.41843e-18) +(5.87262 -0.0937144 0) +(6.08917 -0.0690664 2.48204e-18) +(6.29846 -0.0472476 0) +(6.57428 -0.0237286 3.02059e-18) +(6.76057 -0.0160773 0) +(7.18619 -0.00301779 0) +(3.80037 -0.385644 2.34802e-18) +(3.86647 -0.380338 0) +(3.93271 -0.374458 0) +(4.00309 -0.368099 -2.17076e-18) +(4.07868 -0.361174 2.10579e-18) +(4.15912 -0.353522 -2.03927e-18) +(4.24472 -0.345036 -1.96912e-18) +(4.3358 -0.33558 -3.79613e-18) +(4.43264 -0.325022 3.6362e-18) +(4.53554 -0.31324 -3.48104e-18) +(4.64483 -0.300137 0) +(4.76084 -0.285629 3.13227e-18) +(4.88398 -0.269674 0) +(5.01463 -0.252266 0) +(5.15339 -0.23344 0) +(5.30063 -0.213295 -4.74024e-18) +(5.45752 -0.191911 0) +(5.62374 -0.169602 -7.73948e-18) +(5.80295 -0.146274 -3.42464e-18) +(5.99009 -0.123022 -2.92367e-18) +(6.20064 -0.0986354 -2.45957e-18) +(6.40434 -0.077844 0) +(6.67311 -0.053766 0) +(6.85452 -0.0484793 0) +(7.26914 -0.0302734 7.16956e-19) +(4.01369 -0.404891 -2.35561e-18) +(4.07553 -0.400229 0) +(4.13776 -0.395037 0) +(4.20398 -0.38931 0) +(4.27532 -0.383005 -2.11577e-18) +(4.35143 -0.37595 2.13281e-21) +(4.4326 -0.368031 1.97972e-18) +(4.51916 -0.359114 0) +(4.61137 -0.349063 -3.65777e-18) +(4.70952 -0.337758 0) +(4.81394 -0.325102 -3.32187e-18) +(4.92497 -0.311015 -6.34018e-21) +(5.04299 -0.295457 0) +(5.1684 -0.278432 0) +(5.30178 -0.259977 0) +(5.44353 -0.24021 0) +(5.5948 -0.219204 0) +(5.75533 -0.197318 1.94983e-18) +(5.92869 -0.174386 0) +(6.11001 -0.151703 2.93935e-18) +(6.31435 -0.127614 1.15316e-20) +(6.51226 -0.107835 0) +(6.77378 -0.0832482 0) +(6.95014 -0.0801905 0) +(7.3538 -0.0570533 -7.18246e-19) +(4.23283 -0.422934 0) +(4.29014 -0.418943 0) +(4.34812 -0.414482 -2.24867e-18) +(4.40998 -0.409429 0) +(4.47686 -0.403781 0) +(4.54844 -0.397362 2.06537e-18) +(4.625 -0.390046 0) +(4.70686 -0.381698 0) +(4.79427 -0.372185 0) +(4.88752 -0.361384 0) +(4.98691 -0.349201 5.80025e-21) +(5.09278 -0.335558 -6.35094e-18) +(5.20552 -0.320423 0) +(5.32551 -0.303802 0) +(5.45334 -0.285744 0) +(5.58943 -0.26638 2.38955e-18) +(5.73491 -0.245782 -2.17433e-18) +(5.88958 -0.224345 1.95591e-18) +(6.0569 -0.201841 0) +(6.23221 -0.179749 0) +(6.43016 -0.155992 4.95112e-18) +(6.6221 -0.137212 1.88461e-18) +(6.87618 -0.112169 0) +(7.04734 -0.111216 0) +(7.44007 -0.08338 7.04845e-19) +(4.45741 -0.439725 0) +(4.50991 -0.436436 1.16364e-18) +(4.56344 -0.432755 2.27439e-18) +(4.62074 -0.428425 2.21695e-18) +(4.68297 -0.42348 0) +(4.74984 -0.41774 -2.08771e-18) +(4.82161 -0.411066 0) +(4.8986 -0.403325 1.94221e-18) +(4.98104 -0.39438 0) +(5.06922 -0.384111 0) +(5.16342 -0.372427 5.09072e-18) +(5.26397 -0.359252 3.21649e-18) +(5.37127 -0.344562 0) +(5.48568 -0.32837 0) +(5.60781 -0.310735 0) +(5.73807 -0.291799 -2.42285e-18) +(5.8776 -0.271636 2.20428e-18) +(6.02623 -0.250678 1.96983e-18) +(6.18736 -0.228633 0) +(6.3565 -0.207151 0) +(6.54787 -0.183763 -2.50038e-18) +(6.7337 -0.165968 -1.90676e-18) +(6.98016 -0.140523 0) +(7.14601 -0.141562 -6.4224e-19) +(7.52781 -0.109273 -1.02274e-20) +(4.68702 -0.455212 0) +(4.73446 -0.452667 -2.59768e-23) +(4.78331 -0.449822 0) +(4.83588 -0.446272 -2.25155e-18) +(4.89326 -0.442077 0) +(4.95524 -0.437062 2.12158e-18) +(5.02204 -0.431074 0) +(5.09399 -0.423977 -1.8815e-21) +(5.1713 -0.415635 0) +(5.25424 -0.405929 0) +(5.3431 -0.394771 -1.72455e-18) +(5.43819 -0.38209 0) +(5.53989 -0.367869 0) +(5.64858 -0.352131 0) +(5.76485 -0.334943 -1.33342e-18) +(5.88915 -0.316464 2.4525e-18) +(6.02258 -0.296765 0) +(6.16503 -0.276312 -6.04264e-21) +(6.31981 -0.254756 1.75947e-18) +(6.48264 -0.233906 0) +(6.66728 -0.21092 1.2593e-18) +(6.84686 -0.1941 0) +(7.08556 -0.168309 0) +(7.246 -0.171235 6.51133e-19) +(7.61688 -0.13475 -7.09807e-19) +(4.92114 -0.469345 0) +(4.96329 -0.467592 -2.40696e-18) +(5.00725 -0.465643 0) +(5.05489 -0.462933 0) +(5.10725 -0.459544 0) +(5.16416 -0.455304 0) +(5.22584 -0.450048 1.04448e-18) +(5.29259 -0.443638 -2.01343e-18) +(5.36462 -0.435936 0) +(5.44218 -0.426826 0) +(5.52555 -0.416223 0) +(5.61503 -0.404063 1.66246e-18) +(5.711 -0.390337 0) +(5.81383 -0.375079 1.4641e-18) +(5.92412 -0.358366 1.36185e-18) +(6.04231 -0.34037 -2.50459e-18) +(6.16953 -0.321163 0) +(6.30568 -0.301243 -2.03921e-18) +(6.45398 -0.280208 -1.79548e-18) +(6.61037 -0.260008 0) +(6.78814 -0.237461 -2.56254e-18) +(6.96137 -0.221604 -9.75444e-19) +(7.19218 -0.195525 0) +(7.34715 -0.200242 0) +(7.70709 -0.159826 0) +(5.15914 -0.482072 -6.31392e-19) +(5.19579 -0.481167 1.23128e-18) +(5.23466 -0.48018 0) +(5.27722 -0.478378 0) +(5.32439 -0.475852 0) +(5.37608 -0.472443 -1.10654e-18) +(5.43248 -0.467971 -1.06979e-18) +(5.49388 -0.462292 1.02975e-18) +(5.56049 -0.455271 0) +(5.63254 -0.446792 0) +(5.71029 -0.436775 -8.98525e-19) +(5.79404 -0.425164 -1.70412e-18) +(5.88415 -0.41196 0) +(5.98101 -0.397209 -1.5009e-18) +(6.0852 -0.380998 -1.38973e-18) +(6.19719 -0.363514 -1.27728e-18) +(6.31807 -0.344828 0) +(6.44782 -0.325468 1.03864e-18) +(6.58954 -0.304984 0) +(6.7394 -0.285456 0) +(6.91019 -0.263382 1.30822e-18) +(7.07698 -0.248481 9.97389e-19) +(7.29979 -0.222171 0) +(7.44923 -0.228592 -3.41118e-19) +(7.79825 -0.184511 3.48571e-19) +(5.40029 -0.493345 6.48487e-19) +(5.43126 -0.493355 0) +(5.46486 -0.493395 6.18861e-19) +(5.50219 -0.492576 0) +(5.54404 -0.490977 0) +(5.59036 -0.488457 1.13769e-18) +(5.64136 -0.484821 5.49609e-19) +(5.69729 -0.479923 -1.05913e-18) +(5.75836 -0.473625 0) +(5.82478 -0.465814 0) +(5.8968 -0.456416 9.2453e-19) +(5.97471 -0.445384 0) +(6.05886 -0.43273 0) +(6.14964 -0.418515 -7.69218e-19) +(6.24763 -0.402836 7.16535e-19) +(6.35333 -0.385893 1.31411e-18) +(6.46779 -0.367759 0) +(6.59106 -0.348988 -1.06803e-18) +(6.72612 -0.329085 9.36286e-19) +(6.86937 -0.310249 0) +(7.03309 -0.288682 -6.66538e-19) +(7.19338 -0.274735 0) +(7.40812 -0.248243 0) +(7.55202 -0.256307 3.49438e-19) +(7.89011 -0.208801 -5.31042e-19) +(5.64368 -0.503122 0) +(5.66884 -0.504119 3.26949e-19) +(5.69701 -0.505259 -6.3871e-19) +(5.72901 -0.5055 0) +(5.76542 -0.504897 0) +(5.80626 -0.503326 0) +(5.85175 -0.500586 -5.67585e-19) +(5.90212 -0.496519 0) +(5.95755 -0.490989 -5.24191e-19) +(6.01825 -0.483883 0) +(6.08445 -0.475137 0) +(6.15643 -0.464716 4.50919e-19) +(6.23453 -0.452645 0) +(6.31917 -0.438996 1.19135e-18) +(6.4109 -0.42388 7.37039e-19) +(6.51024 -0.407508 -3.37763e-19) +(6.61823 -0.389957 0) +(6.73496 -0.371803 0) +(6.8633 -0.352511 -9.66016e-19) +(6.99989 -0.33439 0) +(7.15649 -0.31336 3.44681e-19) +(7.31025 -0.30037 0) +(7.51685 -0.273739 0) +(7.65521 -0.283405 0) +(7.9824 -0.232694 1.79125e-19) +(5.88824 -0.511385 0) +(5.9075 -0.513445 -3.48677e-19) +(5.93014 -0.515758 0) +(5.95671 -0.517143 0) +(5.98761 -0.517605 0) +(6.02291 -0.517046 0) +(6.06281 -0.51526 0) +(6.10755 -0.512077 0) +(6.15728 -0.507358 5.61746e-19) +(6.2122 -0.500996 0) +(6.27252 -0.492937 0) +(6.33851 -0.483159 -4.84061e-19) +(6.41053 -0.471701 0) +(6.48896 -0.458651 -4.26166e-19) +(6.5744 -0.44413 0) +(6.66735 -0.428362 3.63152e-19) +(6.76885 -0.411425 0) +(6.87901 -0.393915 0) +(7.00061 -0.375267 0) +(7.13052 -0.357873 0) +(7.27997 -0.337433 3.67903e-19) +(7.42721 -0.325362 0) +(7.62564 -0.298723 0) +(7.7585 -0.309786 0) +(8.07483 -0.256347 0) +(6.15697 -0.51876 0) +(6.16976 -0.522091 3.59197e-19) +(6.18623 -0.525769 0) +(6.20681 -0.528506 0) +(6.23163 -0.530221 0) +(6.26079 -0.530846 0) +(6.29454 -0.530174 0) +(6.33307 -0.528022 6.15794e-19) +(6.37653 -0.524245 0) +(6.42507 -0.518744 5.68623e-19) +(6.4789 -0.511479 -5.42781e-19) +(6.53829 -0.502444 0) +(6.6036 -0.491697 0) +(6.67522 -0.479341 -4.56256e-19) +(6.75375 -0.465511 0) +(6.83969 -0.450438 7.81409e-19) +(6.93405 -0.434214 0) +(7.03702 -0.417435 6.37223e-19) +(7.15121 -0.399546 5.60682e-19) +(7.2738 -0.382936 0) +(7.41539 -0.363266 0) +(7.55548 -0.352027 3.06439e-19) +(7.74495 -0.325813 0) +(7.87182 -0.337649 0) +(8.17628 -0.282567 1.9476e-19) +(6.44713 -0.524476 0) +(6.45298 -0.529373 3.88506e-19) +(6.46275 -0.53464 0) +(6.47687 -0.53897 0) +(6.49512 -0.542168 0) +(6.51768 -0.544187 0) +(6.54479 -0.544823 1.37854e-18) +(6.57663 -0.543872 6.6656e-19) +(6.6133 -0.541188 0) +(6.65494 -0.536684 6.15562e-19) +(6.70176 -0.53034 5.88868e-19) +(6.75401 -0.522169 0) +(6.81207 -0.512254 0) +(6.87634 -0.500709 1.48616e-18) +(6.94742 -0.487687 0) +(7.0258 -0.473422 -8.50276e-19) +(7.11247 -0.458027 -1.54355e-18) +(7.20767 -0.442078 6.89958e-19) +(7.31389 -0.42508 -6.1033e-19) +(7.42855 -0.409315 -1.04131e-18) +(7.56167 -0.390634 0) +(7.69403 -0.3801 -3.33382e-19) +(7.87388 -0.354865 0) +(7.99422 -0.366648 0) +(8.28602 -0.311398 -2.11195e-19) +(6.73051 -0.527894 0) +(6.72975 -0.534556 -8.20572e-19) +(6.73305 -0.541512 1.61745e-18) +(6.74092 -0.547541 0) +(6.75287 -0.552339 -1.54657e-18) +(6.76908 -0.555852 1.50542e-18) +(6.7898 -0.55788 1.09164e-21) +(6.81517 -0.5582 -1.41126e-18) +(6.84525 -0.556667 0) +(6.88019 -0.553212 -1.3047e-18) +(6.92019 -0.547841 0) +(6.96551 -0.540588 0) +(7.01653 -0.531559 0) +(7.07365 -0.520878 -3.14301e-18) +(7.13747 -0.508712 0) +(7.20849 -0.495302 0) +(7.28766 -0.48078 1.63376e-18) +(7.37527 -0.465702 -1.46379e-18) +(7.47367 -0.449638 0) +(7.58057 -0.434748 1.10025e-18) +(7.7054 -0.417109 -1.82226e-18) +(7.83015 -0.407269 0) +(8.00058 -0.383142 0) +(8.11446 -0.394689 0) +(8.39392 -0.339833 0) +(7.00214 -0.52906 -1.78667e-18) +(6.99538 -0.537688 1.75949e-18) +(6.99273 -0.546438 -1.72411e-18) +(6.99484 -0.554267 0) +(7.00098 -0.56078 1.64864e-18) +(7.01131 -0.565884 -1.60458e-18) +(7.0261 -0.569375 -1.55652e-18) +(7.04542 -0.571023 0) +(7.06932 -0.570692 0) +(7.09794 -0.56834 2.78022e-18) +(7.1315 -0.563996 2.65386e-18) +(7.17027 -0.557714 -2.52047e-18) +(7.21463 -0.549623 0) +(7.26496 -0.539856 2.23395e-18) +(7.32187 -0.528593 0) +(7.38584 -0.516082 -3.81372e-18) +(7.45782 -0.502474 0) +(7.53811 -0.488306 3.10254e-18) +(7.62898 -0.47321 0) +(7.72836 -0.459234 0) +(7.84518 -0.442672 1.93534e-18) +(7.96251 -0.433553 0) +(8.12381 -0.410578 0) +(8.23137 -0.421876 0) +(8.49886 -0.367713 0) +(7.25546 -0.528104 1.91715e-18) +(7.24372 -0.538893 -3.78382e-18) +(7.23604 -0.549527 0) +(7.2332 -0.559249 -3.64379e-18) +(7.23437 -0.567589 0) +(7.23964 -0.574367 3.45454e-18) +(7.24922 -0.579369 0) +(7.26319 -0.582388 -3.23384e-18) +(7.28157 -0.583307 0) +(7.30454 -0.582108 -2.98546e-18) +(7.33232 -0.578842 -5.69959e-18) +(7.36517 -0.57358 2.70803e-18) +(7.40348 -0.566471 0) +(7.44756 -0.55766 0) +(7.49808 -0.547342 0) +(7.55545 -0.535765 4.09407e-18) +(7.62068 -0.523107 0) +(7.69408 -0.509885 -6.6463e-18) +(7.77784 -0.495793 0) +(7.87008 -0.482762 0) +(7.97927 -0.467311 0) +(8.08949 -0.458927 0) +(8.24199 -0.437161 0) +(8.34345 -0.448161 1.17214e-18) +(8.59948 -0.39506 -8.72898e-19) +(7.48182 -0.525268 0) +(7.4667 -0.538394 2.0437e-18) +(7.45546 -0.551018 0) +(7.44905 -0.562683 3.93105e-18) +(7.44651 -0.572896 -3.84592e-18) +(7.44783 -0.581399 8.68903e-21) +(7.45332 -0.587973 3.61694e-18) +(7.46309 -0.592399 3.48967e-18) +(7.47705 -0.594598 0) +(7.49543 -0.594592 -3.22652e-18) +(7.51843 -0.592443 3.0811e-18) +(7.54631 -0.588238 -5.84777e-18) +(7.57943 -0.582136 0) +(7.61806 -0.574294 0) +(7.66285 -0.564939 0) +(7.71435 -0.554337 -4.41114e-18) +(7.77346 -0.542658 0) +(7.84059 -0.530414 3.58553e-18) +(7.91777 -0.517355 0) +(8.00344 -0.505305 0) +(8.10552 -0.491004 0) +(8.20902 -0.483355 0) +(8.35321 -0.462882 0) +(8.44888 -0.473498 -1.25554e-18) +(8.6941 -0.421877 9.30964e-19) +(7.67069 -0.520962 0) +(7.65432 -0.536567 0) +(7.64165 -0.551258 0) +(7.6336 -0.564877 4.27782e-18) +(7.62923 -0.576991 -1.38785e-20) +(7.62839 -0.587242 1.08554e-20) +(7.6315 -0.595381 -7.83911e-18) +(7.63865 -0.601236 3.78871e-18) +(7.64982 -0.604747 7.30288e-18) +(7.6651 -0.605942 3.50211e-18) +(7.6847 -0.60491 0) +(7.70886 -0.601759 1.27049e-17) +(7.7379 -0.596673 0) +(7.77228 -0.589835 0) +(7.81243 -0.581451 0) +(7.85903 -0.571822 4.80241e-18) +(7.9129 -0.561137 0) +(7.97453 -0.54989 0) +(8.04586 -0.537888 0) +(8.12568 -0.526841 -5.80638e-18) +(8.22119 -0.513695 0) +(8.31852 -0.506781 0) +(8.45506 -0.487703 0) +(8.54539 -0.497835 1.37978e-18) +(8.78067 -0.448139 9.39477e-19) +(7.81165 -0.515899 0) +(7.7965 -0.534035 0) +(7.78495 -0.550836 0) +(7.77766 -0.56635 -9.22928e-18) +(7.77375 -0.580283 4.4955e-18) +(7.7731 -0.59224 -4.37464e-18) +(7.77603 -0.60192 -4.26167e-18) +(7.78255 -0.609153 -4.10061e-18) +(7.79278 -0.613927 -7.90958e-18) +(7.80672 -0.616295 0) +(7.82457 -0.616357 0) +(7.8466 -0.614243 -6.90305e-18) +(7.8731 -0.610141 0) +(7.90464 -0.60428 6.11126e-18) +(7.94159 -0.596879 5.6771e-18) +(7.98459 -0.588226 0) +(8.03442 -0.578534 0) +(8.09168 -0.568289 8.475e-18) +(8.15821 -0.557351 0) +(8.23303 -0.547307 9.29638e-21) +(8.32277 -0.535326 0) +(8.41471 -0.529137 -4.00987e-18) +(8.54448 -0.51156 0) +(8.63004 -0.521087 -1.49871e-18) +(8.85664 -0.473801 -1.01588e-18) +(7.90055 -0.510792 0) +(7.88847 -0.531423 -5.16363e-18) +(7.88009 -0.550327 0) +(7.87556 -0.56764 4.95036e-18) +(7.8741 -0.583286 0) +(7.87566 -0.596841 0) +(7.88043 -0.607934 9.15686e-18) +(7.88836 -0.616432 0) +(7.89944 -0.622367 0) +(7.91379 -0.625806 8.22486e-18) +(7.93164 -0.626875 0) +(7.95325 -0.62573 -7.48994e-18) +(7.97891 -0.622584 0) +(8.00914 -0.617661 -7.41782e-21) +(8.04437 -0.611193 -6.1997e-18) +(8.08526 -0.603485 0) +(8.13251 -0.594759 0) +(8.18681 -0.58551 -9.30099e-18) +(8.24981 -0.57563 0) +(8.32076 -0.566563 6.95125e-18) +(8.40597 -0.555775 5.70171e-18) +(8.49356 -0.550313 4.40584e-18) +(8.61771 -0.534358 0) +(8.69931 -0.543146 0) +(8.91896 -0.498811 -2.09644e-18) +(7.94275 -0.50602 0) +(7.93419 -0.529169 -4.04711e-20) +(7.92976 -0.550172 0) +(7.92887 -0.569171 0) +(7.9308 -0.586374 0) +(7.9356 -0.60137 1.01827e-17) +(7.94339 -0.613702 -9.89966e-18) +(7.95397 -0.623278 9.59236e-18) +(7.96723 -0.630206 0) +(7.98331 -0.634584 6.34245e-21) +(8.00245 -0.636542 0) +(8.02493 -0.636261 8.16288e-18) +(8.05103 -0.633972 0) +(8.08125 -0.629909 -7.29556e-18) +(8.11605 -0.62431 0) +(8.15608 -0.617487 0) +(8.20204 -0.60968 0) +(8.25465 -0.601375 -1.02784e-17) +(8.31542 -0.592514 9.00571e-18) +(8.38378 -0.584406 -7.71325e-18) +(8.46576 -0.574829 -1.26797e-17) +(8.55024 -0.570076 -9.81825e-18) +(8.67023 -0.555912 0) +(8.74887 -0.563799 0) +(8.9639 -0.523086 4.58626e-18) +(7.94849 -0.501378 -5.93847e-18) +(7.94268 -0.527182 1.17043e-17) +(7.94178 -0.550311 0) +(7.9442 -0.570927 0) +(7.94927 -0.589582 0) +(7.9572 -0.605889 4.41177e-20) +(7.96802 -0.619298 2.12735e-17) +(7.98138 -0.629776 -1.03308e-17) +(7.99707 -0.637525 0) +(8.01524 -0.642679 -9.68355e-18) +(8.03609 -0.64538 0) +(8.0599 -0.64583 0) +(8.08697 -0.644277 0) +(8.11777 -0.640967 0) +(8.15276 -0.636146 0) +(8.19265 -0.630127 0) +(8.23807 -0.623166 1.27768e-17) +(8.28984 -0.61574 1.15446e-17) +(8.34931 -0.607843 -1.01423e-17) +(8.41619 -0.600653 6.06287e-21) +(8.49614 -0.592294 7.17001e-18) +(8.5788 -0.588214 1.11385e-17) +(8.69626 -0.576046 -8.07624e-18) +(8.77318 -0.582806 0) +(8.98662 -0.546555 -2.55531e-18) +(7.92638 -0.496361 1.24639e-17) +(7.92212 -0.525015 -1.8575e-17) +(7.9237 -0.550265 1.22635e-17) +(7.92828 -0.572439 0) +(7.93528 -0.592471 -1.18812e-17) +(7.94518 -0.609955 5.07543e-20) +(7.95791 -0.624266 3.78494e-20) +(7.97295 -0.635464 0) +(7.99004 -0.643853 0) +(8.00934 -0.649603 0) +(8.03103 -0.652872 0) +(8.05539 -0.653895 -1.94464e-17) +(8.08269 -0.652932 0) +(8.11349 -0.650247 0) +(8.14818 -0.646092 1.6629e-17) +(8.18762 -0.640792 0) +(8.23236 -0.634607 -1.42788e-17) +(8.28343 -0.628016 0) +(8.34204 -0.621059 0) +(8.40823 -0.614786 9.90542e-18) +(8.48735 -0.607708 -1.63334e-17) +(8.56967 -0.604298 -1.27827e-17) +(8.68672 -0.59446 9.26724e-18) +(8.76371 -0.599825 0) +(8.97987 -0.56914 0) +(7.8771 -0.490136 -6.56198e-18) +(7.87342 -0.521864 1.30275e-17) +(7.87657 -0.549159 -1.28819e-17) +(7.8821 -0.572797 0) +(7.88956 -0.594112 1.25309e-17) +(7.89987 -0.612604 -1.2316e-17) +(7.91284 -0.627599 4.27014e-20) +(7.92774 -0.639304 -1.18341e-17) +(7.94427 -0.648123 0) +(7.9627 -0.654255 2.24278e-17) +(7.98317 -0.657883 -2.17072e-17) +(8.00604 -0.659285 4.19194e-17) +(8.03155 -0.658733 0) +(8.06041 -0.656521 0) +(8.09305 -0.652905 -1.22124e-20) +(8.13048 -0.648244 0) +(8.17338 -0.642791 0) +(8.22294 -0.63705 1.43312e-17) +(8.28054 -0.631094 0) +(8.34637 -0.625843 0) +(8.42586 -0.620245 3.6747e-17) +(8.50951 -0.617619 -6.87787e-21) +(8.62893 -0.610631 0) +(8.70855 -0.614389 -5.70896e-18) +(8.93327 -0.59063 0) +(7.78898 -0.481357 0) +(7.78539 -0.516317 0) +(7.78971 -0.545503 1.37211e-17) +(7.79531 -0.570482 0) +(7.80204 -0.592958 -1.33021e-17) +(7.8114 -0.612221 1.30553e-17) +(7.82299 -0.627616 4.6476e-20) +(7.83587 -0.63957 1.24476e-17) +(7.84981 -0.64857 2.43227e-17) +(7.86516 -0.65484 -2.36355e-17) +(7.88218 -0.658605 2.28955e-17) +(7.90126 -0.660199 -4.4276e-17) +(7.92285 -0.659912 0) +(7.94771 -0.658078 2.03026e-17) +(7.97661 -0.654963 -1.91988e-17) +(8.01055 -0.650966 0) +(8.05071 -0.646341 0) +(8.09817 -0.641606 -1.52874e-17) +(8.15495 -0.636876 2.72117e-17) +(8.2209 -0.632903 0) +(8.3022 -0.629133 -1.98959e-17) +(8.38883 -0.627552 1.57896e-17) +(8.51348 -0.624043 1.15937e-17) +(8.59828 -0.626184 1.26917e-17) +(8.83732 -0.610687 3.57879e-18) +(7.63941 -0.468063 0) +(7.63627 -0.506422 1.45788e-17) +(7.64214 -0.537293 -1.42524e-17) +(7.64758 -0.563451 0) +(7.6531 -0.58689 -8.39903e-20) +(7.66087 -0.606582 -1.35138e-17) +(7.67031 -0.622042 -1.32045e-17) +(7.68027 -0.633985 -2.58483e-17) +(7.69076 -0.642955 -5.02181e-17) +(7.70227 -0.649196 0) +(7.71528 -0.653007 0) +(7.73026 -0.654775 2.27239e-17) +(7.74799 -0.654817 0) +(7.76928 -0.6535 -3.40597e-21) +(7.79527 -0.651105 1.96052e-17) +(7.82694 -0.648055 -1.84007e-17) +(7.86591 -0.644599 0) +(7.91304 -0.641247 -3.11312e-17) +(7.97085 -0.638141 -2.78185e-17) +(8.03876 -0.635845 0) +(8.12369 -0.634326 2.04626e-17) +(8.21489 -0.63414 0) +(8.34645 -0.634608 -1.20869e-17) +(8.43736 -0.635409 -6.67163e-18) +(8.6929 -0.628943 -6.76286e-21) +(7.41208 -0.448921 0) +(7.41063 -0.490695 -1.58735e-17) +(7.41937 -0.523037 0) +(7.4256 -0.550264 0) +(7.43094 -0.574489 -8.35791e-20) +(7.43836 -0.59433 0) +(7.447 -0.609677 -2.87744e-17) +(7.45558 -0.621564 2.78529e-17) +(7.46445 -0.630543 2.69709e-17) +(7.47433 -0.636881 0) +(7.48588 -0.64096 -2.5098e-17) +(7.49972 -0.643207 2.40694e-17) +(7.51683 -0.643944 0) +(7.53812 -0.643568 4.40395e-22) +(7.56489 -0.642333 -2.04702e-17) +(7.59814 -0.640698 1.91157e-17) +(7.63962 -0.638841 0) +(7.69004 -0.637285 3.2096e-17) +(7.75202 -0.636141 -2.86265e-17) +(7.82478 -0.635852 0) +(7.91555 -0.636777 9.06061e-21) +(8.01295 -0.638238 0) +(8.15218 -0.642621 0) +(8.2496 -0.642721 6.8758e-18) +(8.52008 -0.644475 -1.19896e-17) +(7.11848 -0.425305 0) +(7.12194 -0.470411 0) +(7.13647 -0.504071 0) +(7.14607 -0.532383 0) +(7.15406 -0.557333 -7.92659e-20) +(7.16416 -0.577232 0) +(7.17509 -0.592544 3.06368e-17) +(7.18561 -0.604566 -2.96381e-17) +(7.19642 -0.613801 0) +(7.20842 -0.620546 2.73943e-17) +(7.22236 -0.625249 2.61841e-17) +(7.23903 -0.628352 -2.49791e-17) +(7.25945 -0.630157 0) +(7.28463 -0.631083 -4.47277e-17) +(7.31587 -0.63133 2.0941e-17) +(7.35422 -0.631391 3.89262e-17) +(7.40124 -0.631345 0) +(7.4578 -0.631751 0) +(7.52623 -0.632637 5.77233e-17) +(7.60584 -0.634413 -2.50787e-17) +(7.70364 -0.637663 -4.22628e-17) +(7.80801 -0.640888 0) +(7.95521 -0.6486 -1.25607e-17) +(8.05907 -0.648909 -6.89732e-18) +(8.34258 -0.656967 8.09363e-18) +(6.78157 -0.399801 1.89667e-17) +(6.79357 -0.448223 -1.86376e-17) +(6.81705 -0.483026 0) +(6.83283 -0.512436 1.77846e-17) +(6.84635 -0.538026 3.47047e-17) +(6.86208 -0.557944 0) +(6.87819 -0.573347 -3.22635e-17) +(6.89364 -0.585687 3.09012e-17) +(6.90942 -0.595377 0) +(6.92657 -0.602759 -2.82918e-17) +(6.94588 -0.608326 0) +(6.96827 -0.612521 -2.55984e-17) +(6.99479 -0.615586 0) +(7.02642 -0.617967 2.27038e-17) +(7.0644 -0.619796 -6.35624e-17) +(7.10972 -0.621613 -7.84936e-17) +(7.16392 -0.623375 0) +(7.22783 -0.625718 3.25371e-17) +(7.30379 -0.628545 -2.88973e-17) +(7.3909 -0.63229 2.50499e-17) +(7.49614 -0.637623 -2.5595e-20) +(7.60745 -0.642572 1.67543e-17) +(7.76252 -0.652999 2.51332e-17) +(7.87196 -0.654256 -1.38154e-17) +(8.16729 -0.666795 0) +(6.4246 -0.374806 2.20005e-19) +(6.44815 -0.426504 1.95949e-17) +(6.48285 -0.462128 1.9079e-17) +(6.50662 -0.492527 8.01336e-20) +(6.52771 -0.518576 -1.80296e-17) +(6.551 -0.53844 0) +(6.57418 -0.554006 3.3421e-17) +(6.59648 -0.566742 0) +(6.61915 -0.57698 0) +(6.64332 -0.58511 0) +(6.66982 -0.591636 2.74982e-17) +(6.69954 -0.596986 2.59982e-17) +(6.73362 -0.601359 0) +(6.77293 -0.605212 4.58763e-17) +(6.8187 -0.608582 4.26783e-17) +(6.87177 -0.612062 3.94218e-17) +(6.93369 -0.615497 0) +(7.00509 -0.619617 -3.25774e-17) +(7.08852 -0.624176 0) +(7.18278 -0.629695 0) +(7.29515 -0.636805 -3.13873e-20) +(7.41278 -0.64338 3.23656e-20) +(7.57499 -0.655942 -1.26284e-17) +(7.68888 -0.658592 -3.79502e-20) +(7.99463 -0.674215 8.44292e-18) +(6.0635 -0.351761 -2.12723e-17) +(6.10072 -0.40663 -2.07743e-17) +(6.14791 -0.442665 -1.98462e-17) +(6.18067 -0.473825 -1.92517e-17) +(6.21049 -0.500072 0) +(6.24245 -0.519804 0) +(6.27378 -0.535548 0) +(6.30401 -0.548691 0) +(6.3347 -0.559513 0) +(6.36695 -0.568419 -2.95426e-17) +(6.4016 -0.575911 -2.79086e-17) +(6.4394 -0.582385 2.63468e-17) +(6.48151 -0.587982 0) +(6.5288 -0.593191 -9.2548e-17) +(6.58243 -0.597948 0) +(6.64317 -0.602917 0) +(6.71247 -0.60781 0) +(6.79089 -0.613478 0) +(6.88094 -0.61951 0) +(6.98143 -0.626554 0) +(7.09984 -0.635127 -3.60949e-20) +(7.22272 -0.64316 -1.69494e-17) +(7.39089 -0.657322 0) +(7.5078 -0.6616 1.41138e-17) +(7.82231 -0.679263 9.1187e-20) +(5.70678 -0.331285 0) +(5.75917 -0.389065 2.166e-17) +(5.81972 -0.425137 0) +(5.86201 -0.456767 0) +(5.90115 -0.482954 0) +(5.94243 -0.502516 -3.68354e-17) +(5.9826 -0.518455 0) +(6.02145 -0.531975 3.35181e-17) +(6.06075 -0.543356 0) +(6.10151 -0.553006 -2.58878e-20) +(6.14452 -0.561381 0) +(6.19051 -0.568856 1.87018e-20) +(6.24048 -0.57552 0) +(6.29531 -0.581899 9.37214e-17) +(6.35609 -0.587819 0) +(6.42366 -0.594036 0) +(6.49933 -0.60012 0) +(6.58369 -0.607065 -3.32894e-17) +(6.67915 -0.614277 2.9701e-17) +(6.78458 -0.622583 0) +(6.90756 -0.632299 2.18577e-17) +(7.03427 -0.641591 -1.74164e-17) +(7.20692 -0.656872 0) +(7.32515 -0.662843 0) +(7.6464 -0.681785 9.37512e-20) +(5.35809 -0.313412 0) +(5.42721 -0.373784 0) +(5.50166 -0.409623 0) +(5.55371 -0.441416 0) +(5.60263 -0.467343 0) +(5.65368 -0.486725 -5.64164e-20) +(5.70312 -0.502847 0) +(5.75095 -0.516694 3.8107e-20) +(5.79894 -0.528564 3.24992e-17) +(5.84806 -0.538838 3.06923e-17) +(5.89902 -0.547937 -2.89735e-17) +(5.95258 -0.556217 1.98867e-20) +(6.0096 -0.563722 0) +(6.07099 -0.571021 -9.57578e-17) +(6.13775 -0.577841 0) +(6.2108 -0.58503 0) +(6.2914 -0.592021 0) +(6.38024 -0.599954 -3.78043e-20) +(6.47955 -0.608056 -3.0605e-17) +(6.58836 -0.617348 -2.67067e-17) +(6.71426 -0.627893 -2.27265e-17) +(6.84303 -0.638214 1.811e-17) +(7.01838 -0.654186 2.78123e-17) +(7.13614 -0.661774 1.53643e-17) +(7.46163 -0.681451 -9.58456e-18) +(5.01764 -0.297929 -2.55601e-17) +(5.10531 -0.360608 2.39864e-17) +(5.1942 -0.396022 0) +(5.25634 -0.427616 4.31416e-17) +(5.31562 -0.453149 -4.11547e-17) +(5.37674 -0.472378 3.90133e-17) +(5.43554 -0.488628 0) +(5.4922 -0.502673 -7.04467e-17) +(5.54848 -0.514882 -3.34212e-17) +(5.60525 -0.525583 0) +(5.6632 -0.535183 2.98657e-17) +(5.72312 -0.544015 -2.81458e-17) +(5.78585 -0.552094 0) +(5.85231 -0.560032 9.92317e-17) +(5.92349 -0.567465 4.6325e-17) +(6.00035 -0.575336 0) +(6.08414 -0.582944 3.95074e-17) +(6.17569 -0.591578 -4.17961e-20) +(6.27708 -0.600273 3.21768e-17) +(6.3874 -0.610269 5.62686e-17) +(6.51443 -0.621341 -4.63943e-20) +(6.64317 -0.632428 0) +(6.81923 -0.648712 -2.95353e-17) +(6.93456 -0.657714 -1.63259e-17) +(7.26119 -0.677721 -1.0452e-17) +(4.68335 -0.28444 2.7112e-17) +(4.79167 -0.349186 -2.53403e-17) +(4.8959 -0.384061 0) +(4.9689 -0.41512 -4.51762e-17) +(5.03896 -0.440173 8.60804e-17) +(5.11025 -0.459209 4.08038e-17) +(5.17811 -0.47544 0) +(5.2429 -0.48947 7.35204e-17) +(5.30642 -0.501792 0) +(5.36954 -0.512654 0) +(5.43295 -0.522478 0) +(5.49754 -0.531574 2.96092e-17) +(5.56421 -0.539936 0) +(5.63388 -0.548213 4.28676e-20) +(5.70756 -0.555964 4.17391e-20) +(5.78627 -0.564218 0) +(5.87127 -0.572152 -4.20823e-17) +(5.96347 -0.581193 3.83432e-17) +(6.06497 -0.590193 -3.44635e-17) +(6.17464 -0.600598 -3.02703e-17) +(6.30077 -0.611889 2.58584e-17) +(6.42715 -0.623451 4.17747e-17) +(6.60174 -0.639699 0) +(6.71241 -0.649793 0) +(7.0362 -0.669799 -9.93248e-20) +(4.3518 -0.272445 0) +(4.48315 -0.339115 0) +(4.6041 -0.373388 0) +(4.68895 -0.403596 -4.82428e-17) +(4.76997 -0.428015 -4.57876e-17) +(4.85097 -0.446696 -4.33637e-17) +(4.9269 -0.462629 0) +(4.99838 -0.476356 -7.83745e-17) +(5.06738 -0.488479 0) +(5.13492 -0.499195 3.54876e-17) +(5.20175 -0.508927 0) +(5.2689 -0.517977 -6.37824e-17) +(5.33733 -0.526316 0) +(5.40796 -0.534617 -5.68354e-17) +(5.48192 -0.54239 -5.33522e-17) +(5.56022 -0.550715 0) +(5.64421 -0.558692 0) +(5.73473 -0.567822 0) +(5.83411 -0.576845 3.79189e-17) +(5.94069 -0.587328 0) +(6.06364 -0.59855 0) +(6.18499 -0.61022 -4.60853e-17) +(6.35559 -0.626131 0) +(6.45898 -0.63685 1.98264e-17) +(6.77519 -0.656565 2.54032e-17) +(4.01754 -0.261503 0) +(4.17502 -0.329944 -3.00423e-17) +(4.3147 -0.363576 5.54761e-17) +(4.41207 -0.392469 5.26686e-17) +(4.50347 -0.415952 0) +(4.59273 -0.433931 0) +(4.67474 -0.449183 -4.52592e-17) +(4.7506 -0.462211 4.30905e-17) +(4.82258 -0.473786 0) +(4.89203 -0.484002 -7.85054e-17) +(4.95972 -0.493307 0) +(5.02683 -0.501972 3.55011e-17) +(5.0944 -0.509969 0) +(5.16343 -0.517972 0) +(5.2351 -0.525454 5.99415e-17) +(5.31043 -0.533536 5.60197e-17) +(5.39088 -0.541246 0) +(5.47711 -0.550153 0) +(5.57177 -0.558877 -8.56126e-17) +(5.67256 -0.569112 -3.77782e-17) +(5.78963 -0.579918 -6.46586e-17) +(5.90303 -0.591341 0) +(6.06654 -0.606564 0) +(6.1596 -0.61736 1.15037e-19) +(6.46302 -0.636509 -1.42912e-17) +(3.67118 -0.251021 0) +(3.8593 -0.321387 6.84882e-17) +(4.02028 -0.353968 -6.30586e-17) +(4.12976 -0.380779 0) +(4.22931 -0.40266 -5.73033e-17) +(4.32397 -0.41943 0) +(4.40886 -0.433469 5.19416e-17) +(4.4859 -0.445383 0) +(4.5576 -0.455977 0) +(4.62575 -0.46532 4.54344e-17) +(4.69117 -0.473835 4.33814e-17) +(4.75513 -0.48175 -8.26591e-17) +(4.81877 -0.489081 0) +(4.88322 -0.496415 0) +(4.94966 -0.503324 -1.39961e-16) +(5.01913 -0.510781 -6.54199e-17) +(5.09314 -0.517963 6.06466e-17) +(5.17217 -0.526231 0) +(5.2591 -0.534402 4.99487e-17) +(5.35111 -0.543942 4.39993e-17) +(5.45897 -0.554053 7.5199e-17) +(5.56135 -0.564738 0) +(5.71408 -0.578954 0) +(5.79338 -0.589172 -5.19122e-17) +(6.07836 -0.607571 0) +(3.29545 -0.238925 0) +(3.52146 -0.311945 -4.17004e-17) +(3.70521 -0.342798 7.71339e-17) +(3.82365 -0.366247 0) +(3.92657 -0.385442 7.02825e-17) +(4.02191 -0.400359 6.70118e-17) +(4.10515 -0.412567 0) +(4.17895 -0.422903 -6.13762e-17) +(4.24627 -0.432034 0) +(4.30912 -0.440108 0) +(4.36845 -0.447422 3.74009e-20) +(4.42561 -0.454186 1.02268e-16) +(4.48177 -0.460509 0) +(4.53821 -0.466761 0) +(4.59607 -0.472806 8.63924e-17) +(4.65641 -0.479196 0) +(4.72068 -0.48559 -7.45552e-17) +(4.78925 -0.492728 0) +(4.86502 -0.500094 0) +(4.94488 -0.508394 0) +(5.03977 -0.517541 0) +(5.12767 -0.526883 7.35259e-17) +(5.26538 -0.539762 0) +(5.32716 -0.548624 3.12126e-17) +(5.58758 -0.56616 0) +(2.85114 -0.215212 0) +(3.12469 -0.292202 -5.96133e-17) +(3.3272 -0.322617 -1.10453e-16) +(3.44538 -0.341847 0) +(3.54345 -0.357177 0) +(3.63238 -0.369495 -1.93319e-16) +(3.70767 -0.379364 9.25958e-17) +(3.77236 -0.387684 -6.4634e-20) +(3.8302 -0.394921 0) +(3.88298 -0.401316 0) +(3.93167 -0.406996 4.86122e-20) +(3.97778 -0.41221 -1.47505e-16) +(4.02243 -0.417116 0) +(4.067 -0.421887 0) +(4.11254 -0.426657 0) +(4.16007 -0.431561 -1.157e-16) +(4.21095 -0.436731 0) +(4.26539 -0.44227 -9.72945e-17) +(4.32614 -0.44836 0) +(4.38998 -0.454881 0) +(4.46758 -0.462554 -1.29606e-16) +(4.53696 -0.469902 1.86375e-19) +(4.65453 -0.480967 0) +(4.69457 -0.487488 0) +(4.92292 -0.503625 -2.74958e-17) +(2.12042 -0.156146 0) +(2.45851 -0.22947 1.14585e-16) +(2.65329 -0.259672 0) +(2.74082 -0.274394 0) +(2.81291 -0.285031 -1.94258e-16) +(2.87773 -0.293539 1.85362e-16) +(2.92885 -0.300122 6.29489e-20) +(2.97001 -0.305395 1.69968e-16) +(3.00407 -0.309673 0) +(3.03274 -0.313113 1.55448e-16) +(3.05751 -0.315997 -1.48258e-16) +(3.08016 -0.318457 2.82212e-16) +(3.10123 -0.320721 0) +(3.1223 -0.322816 0) +(3.14365 -0.324968 0) +(3.16654 -0.327119 2.20325e-16) +(3.19153 -0.329539 0) +(3.21898 -0.332095 -7.16528e-20) +(3.25087 -0.335137 0) +(3.28427 -0.338331 0) +(3.32855 -0.34244 2.43837e-16) +(3.36331 -0.346132 1.53924e-19) +(3.44158 -0.352696 0) +(3.43994 -0.355123 -8.21166e-17) +(3.61063 -0.366828 5.11281e-17) ) ; @@ -12254,26 +12255,23 @@ boundaryField type fixedValue; value uniform (10 0 0); } - outlet { type zeroGradient; } - upperWall { type noSlip; } - lowerWall { type noSlip; } - frontAndBack { type empty; } } + // ************************************************************************* // diff --git a/tutorials/basic/scalarTransportFoam/pitzDaily/constant/transportProperties b/tutorials/basic/scalarTransportFoam/pitzDaily/constant/transportProperties index c955b2bc16272c47dff51c25ea5783941358ad40..57f8e9c27791d80c87c3a5517fb2643cd78785b1 100644 --- a/tutorials/basic/scalarTransportFoam/pitzDaily/constant/transportProperties +++ b/tutorials/basic/scalarTransportFoam/pitzDaily/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -DT DT [0 2 -1 0 0 0 0] 0.01; +DT 0.01; // ************************************************************************* // diff --git a/tutorials/basic/scalarTransportFoam/pitzDaily/system/blockMeshDict b/tutorials/basic/scalarTransportFoam/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/basic/scalarTransportFoam/pitzDaily/system/blockMeshDict +++ b/tutorials/basic/scalarTransportFoam/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/dynamicMeshDict b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/dynamicMeshDict index caa7f881240d723ad31a320d93f35c0302002290..529ad4c9aafd0513356fba16283e039b332ac9b6 100644 --- a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/dynamicMeshDict +++ b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/dynamicMeshDict @@ -16,43 +16,38 @@ FoamFile dynamicFvMesh dynamicRefineFvMesh; +// Refine every refineInterval timesteps +refineInterval 1; -dynamicRefineFvMeshCoeffs -{ - - // Refine every refineInterval timesteps - refineInterval 1; +// Maximum refinement level (starts from 0) +maxRefinement 2; - // Maximum refinement level (starts from 0) - maxRefinement 2; +// Maximum cell limit (approximate) +maxCells 10000; - // Maximum cell limit (approximate) - maxCells 10000; +// volScalarField to base refinement on +field normalisedGradP; - // volScalarField to base refinement on - field normalisedGradP; +nBufferLayers 1; - nBufferLayers 1; +dumpLevel true; - dumpLevel true; +lowerRefineLevel 0.5; +upperRefineLevel 1.5; - lowerRefineLevel 0.5; - upperRefineLevel 1.5; +unrefineLevel 0.5; - unrefineLevel 0.5; +nBufferLayers 1; +// Newly introduced patch points optionally get projected onto a surface +//projectSurfaces ("fixedWalls4.stl"); +//projectPatches (fixedWalls); +// Maximum project distance +//projectDistance 1; - nBufferLayers 1; - // Newly introduced patch points optionally get projected onto a surface - //projectSurfaces ("fixedWalls4.stl"); - //projectPatches (fixedWalls); - // Maximum project distance - //projectDistance 1; - - // Fluxes to adapt. For newly created faces or split faces the flux - // gets estimated from an interpolated volVectorField ('velocity') - // First is name of the flux to adapt, second is velocity that will - // be interpolated and inner-producted with the face area vector. - correctFluxes ((phi rhoU) (phi_0 none)); -} +// Fluxes to adapt. For newly created faces or split faces the flux +// gets estimated from an interpolated volVectorField ('velocity') +// First is name of the flux to adapt, second is velocity that will +// be interpolated and inner-producted with the face area vector. +correctFluxes ((phi rhoU) (phi_0 none)); // ************************************************************************* // diff --git a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/thermophysicalProperties b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/thermophysicalProperties index 62960b1284117b1a81ab580845230cd5ee0cdfd4..9797be0ae577a981dd71f8e159779dcae4793580 100644 --- a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/thermophysicalProperties +++ b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/constant/thermophysicalProperties @@ -32,7 +32,6 @@ fuel { specie { - nMoles 1; molWeight 44.0962; } thermodynamics @@ -55,7 +54,6 @@ oxidant { specie { - nMoles 1; molWeight 28.8504; } thermodynamics @@ -77,7 +75,6 @@ burntProducts { specie { - nMoles 1; molWeight 28.3233; } thermodynamics diff --git a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution index a0e75dab131796fdaa9ba30a40794f18369241a5..4935d97bf9fedb3cdbf770652cbcc21574c1f8dd 100644 --- a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution +++ b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution @@ -34,7 +34,7 @@ solvers minIter 1; } - pcorr + "pcorr.*" { $p; tolerance 1e-02; diff --git a/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution b/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution index 61f0eaa59c5de478d9330dfd9f7a77cbd5636643..c84f5e1dc02d7d50347acc9aa023c379c4d0ddf8 100644 --- a/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution +++ b/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution @@ -34,7 +34,7 @@ solvers minIter 1; } - pcorr + "pcorr.*" { $p; tolerance 1e-2; diff --git a/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties b/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties index 3db8650df0331142647a32844401a7209c496fdf..b96268564db6cb3d84b080949025c5390e668c34 100644 --- a/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties +++ b/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties @@ -19,32 +19,43 @@ thermoType { type heheuPsiThermo; mixture homogeneousMixture; - transport sutherland; + transport const; thermo janaf; equationOfState perfectGas; specie specie; energy absoluteEnthalpy; } -stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675; +stoichiometricAirFuelMassRatio + stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675; reactants { specie { - nMoles 24.8095; molWeight 29.4649; } thermodynamics { Tlow 200; - Thigh 5000; + Thigh 6000; Tcommon 1000; - highCpCoeffs ( 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 ); - lowCpCoeffs ( 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 ); + highCpCoeffs + ( + 3.24515 0.00202212 -6.98806e-07 1.11477e-10 + -6.60444e-15 -1601.58 4.60831 + ); + lowCpCoeffs + ( + 3.60909 -0.000628822 4.45105e-06 -3.81328e-09 + 1.0553e-12 -1587.86 3.21309 + ); } transport { + mu 1e-5; + Pr 1; + As 1.67212e-06; Ts 170.672; } @@ -54,19 +65,29 @@ products { specie { - nMoles 1; molWeight 28.3233; } thermodynamics { Tlow 200; - Thigh 5000; + Thigh 6000; Tcommon 1000; - highCpCoeffs ( 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 ); - lowCpCoeffs ( 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 ); + highCpCoeffs + ( + 3.10561 0.00179748 -5.94701e-07 9.05612e-11 + -5.08447e-15 -11003.6 5.12109 + ); + lowCpCoeffs + ( + 3.498 0.000638554 -1.83885e-07 1.20991e-09 + -7.68702e-13 -11080.6 3.1819 + ); } transport { + mu 1e-5; + Pr 1; + As 1.67212e-06; Ts 170.672; } diff --git a/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties.hydrogen b/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties.hydrogen index 1879aefa534ba4ec88fff87b199d2ebc1958777a..b3ec86481327e3b3a43447a2d3dab1355c286dd7 100644 --- a/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties.hydrogen +++ b/tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous/constant/thermophysicalProperties.hydrogen @@ -32,7 +32,6 @@ reactants { specie { - nMoles 24.8095; molWeight 16.0243; } thermodynamics @@ -54,7 +53,6 @@ products { specie { - nMoles 1; molWeight 17.9973; } thermodynamics diff --git a/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties b/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties index 34c0618dd67cd7dffe19a5a1ac6aa0064b6067a8..2077c45e904819d48dae9c403e011edbb6ca74c2 100644 --- a/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties +++ b/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties @@ -33,7 +33,6 @@ fuel { specie { - nMoles 1; molWeight 114.23; } thermodynamics @@ -55,7 +54,6 @@ oxidant { specie { - nMoles 1; molWeight 28.8504; } thermodynamics @@ -77,7 +75,6 @@ burntProducts { specie { - nMoles 1; molWeight 28.6068; } thermodynamics diff --git a/tutorials/combustion/engineFoam/kivaTest/constant/turbulenceProperties b/tutorials/combustion/engineFoam/kivaTest/constant/turbulenceProperties index 8fe9b5ed38d3ed562c1cdf8fcc71b0a6ce10c8bc..4a352b58ab708e08882f020d5553c6e71193e2bb 100644 --- a/tutorials/combustion/engineFoam/kivaTest/constant/turbulenceProperties +++ b/tutorials/combustion/engineFoam/kivaTest/constant/turbulenceProperties @@ -24,6 +24,11 @@ RAS turbulence on; printCoeffs on; + + kEpsilonCoeffs + { + C3 -0.33; + } } diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/0/U b/tutorials/combustion/fireFoam/LES/compartmentFire/0/U index dd333f04d7ab987e93daf955923e6ba437d1f373..a7ce2c8afb3c26c84d1ef32d424898c03b609562 100644 --- a/tutorials/combustion/fireFoam/LES/compartmentFire/0/U +++ b/tutorials/combustion/fireFoam/LES/compartmentFire/0/U @@ -27,7 +27,7 @@ boundaryField massFlowRate tableFile; massFlowRateCoeffs { - fileName "$FOAM_CASE/constant/massLossRate"; + file "$FOAM_CASE/constant/massLossRate"; } value uniform (0 0 0); } diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/0/panelRegion/T b/tutorials/combustion/fireFoam/LES/compartmentFire/0/panelRegion/T index 989dfa04d46a608e52e6576e0cc77b3a64af5b7b..8c508d723893c3be092e84476f73be34043518cf 100644 --- a/tutorials/combustion/fireFoam/LES/compartmentFire/0/panelRegion/T +++ b/tutorials/combustion/fireFoam/LES/compartmentFire/0/panelRegion/T @@ -25,6 +25,7 @@ boundaryField wallPanel_top { type externalWallHeatFluxTemperature; + mode coefficient; Ta uniform 294.75; h uniform 10; kappaMethod solidThermo; diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/validation/createGraphs b/tutorials/combustion/fireFoam/LES/compartmentFire/validation/createGraphs index 3f025efa1b3e3b80fa56b4744977c6d8f71b8606..cbae27d84035877236709a4089d544150d05745c 100755 --- a/tutorials/combustion/fireFoam/LES/compartmentFire/validation/createGraphs +++ b/tutorials/combustion/fireFoam/LES/compartmentFire/validation/createGraphs @@ -62,6 +62,8 @@ fi SETSDIRT="../postProcessing/thermoCouple" +[ -d $SETSDIRT ] || echo "No probe data available to create graphs" && exit 1 + arr=(`ls $SETSDIRT`) OFDATAROOTT="$SETSDIRT/${arr[0]}" diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/T b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/T index 2c5a6390c324f4c60cfab96c74713b828e8ae639..2bd2a14104de106767968eb6591cd9d0c5a00d1a 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/T +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/T @@ -53,8 +53,8 @@ boundaryField filmRegion filmRegion; Tnbr T; kappaMethod fluidThermo; - QrNbr none; - Qr Qr; + qrNbr none; + qr qr; filmDeltaDry 0.0; filmDeltaWet 2e-4; value $internalField; diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/T b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/T index 3806323a7c80a6995b8fd57254588ec93defd2a2..2bf4280bd5e8ec6ff27b19c28e21a257b65c746a 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/T +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/T @@ -38,8 +38,8 @@ boundaryField filmRegion filmRegion; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; filmDeltaDry 0.0; filmDeltaWet 2e-4; value uniform 298; diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/Qr b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/qr similarity index 94% rename from tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/Qr rename to tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/qr index 0d04b38505e6b133bdbd8765d8b4dab839a64036..59a940d229b21190c695358802675f09abc276fb 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/Qr +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/0/pyrolysisRegion/qr @@ -11,7 +11,7 @@ FoamFile format ascii; class volScalarField; location "0"; - object Qr; + object qr; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -38,7 +38,7 @@ boundaryField sampleMode nearestPatchFace; samplePatch region0_to_pyrolysisRegion_coupledWall; offset (0 0 0); - field Qr; // this is the name of Qr field in region0 + field qr; // this is the name of qr field in region0 setAverage no; average 0; value uniform 0; diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermo.solid b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermo.solid index 3aa3b2a569a907180becd86b7a7ef0f1e75c610d..9054151e165376d27fcca1fc580ba943ac6c9b84 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermo.solid +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermo.solid @@ -19,7 +19,6 @@ wood { specie { - nMoles 1; molWeight 100; } transport @@ -41,7 +40,6 @@ char { specie { - nMoles 1; molWeight 50; } transport diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermophysicalProperties b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermophysicalProperties index 13b3f9a3303e63b6fc301ea51c1008f95deec498..52449f12eaa948950cf323b949e91376c1562c3e 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermophysicalProperties +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisRegion/thermophysicalProperties @@ -46,7 +46,6 @@ gas { specie { - nMoles 1; molWeight 18.0153; } thermodynamics diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisZones b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisZones index 11f9c8cee2bc4a11e469d3f8bdd62b1854943fe2..7de75799a36aea272abed45a22091c8d66ef7f52 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisZones +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/pyrolysisZones @@ -28,9 +28,9 @@ pyrolysis filmCoupled true; gasHSource true; - QrHSource false; + qrHSource false; - radFluxName Qr; + radFluxName qr; moveMesh false; // true; minimumDelta 1e-6; diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermo.compressibleGas b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermo.compressibleGas index aa3a928a278d22fbd309ce909249f077f3b31857..2b10b7e64f05d7374a0c56a457e746c9fe9a2f66 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermo.compressibleGas +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -85,7 +82,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics @@ -107,7 +103,6 @@ C3H8 { specie { - nMoles 1; molWeight 44.0962; } thermodynamics diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermophysicalProperties b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermophysicalProperties index 5a70f24ac8d9d316e92445181d49374f33ab0047..0d67f9a8e280172cd8ebf5352deacd6e30b29085 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermophysicalProperties +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/constant/thermophysicalProperties @@ -36,13 +36,10 @@ foamChemistryFile "$FOAM_CASE/constant/reactions"; foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGas"; - liquids { H2O - { - defaultCoeffs yes; - } + {} } solids diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/T b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/T index f9402ae285476d5d220ae796d6f4f10086c6d7de..df1799176b27c03bb93cae2bb9822d8c4b067f37 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/T +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/T @@ -51,8 +51,8 @@ boundaryField type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod fluidThermo; - QrNbr none; - Qr Qr; + qrNbr none; + qr qr; value $internalField; } } diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/T b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/T index 7233ef9dae239e54cb41e14dbb92759ca9e8fa8e..69344397141af641084abb84cadb60e2b7abb566 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/T +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/T @@ -42,8 +42,8 @@ boundaryField type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 298.15; } diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/Qr b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/qr similarity index 96% rename from tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/Qr rename to tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/qr index 2e3aa0b7c00721249c67b3eaa3e52631bbb3c251..b5e488b56c097cca8565f5359839b74855ddbc9a 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/Qr +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/0/panelRegion/qr @@ -11,7 +11,7 @@ FoamFile format ascii; class volScalarField; location "0"; - object Qr; + object qr; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -43,7 +43,7 @@ boundaryField sampleMode nearestPatchFace; samplePatch region0_to_panelRegion_fLeft_zone; offset (0 0 0); - field Qr; + field qr; setAverage no; average 0; value uniform 0; @@ -56,7 +56,7 @@ boundaryField sampleMode nearestPatchFace; samplePatch region0_to_panelRegion_fRight_zone; offset (0 0 0); - field Qr; + field qr; setAverage no; average 0; value uniform 0; diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermo.solid b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermo.solid index 3aa3b2a569a907180becd86b7a7ef0f1e75c610d..9054151e165376d27fcca1fc580ba943ac6c9b84 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermo.solid +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermo.solid @@ -19,7 +19,6 @@ wood { specie { - nMoles 1; molWeight 100; } transport @@ -41,7 +40,6 @@ char { specie { - nMoles 1; molWeight 50; } transport diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties index d5c9a3191bfd99eebf9320a0779e7c4a03f8e97c..efdd83e143bd755ca6d18d9cb91c7aa38c888589 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties @@ -46,7 +46,6 @@ gas { specie { - nMoles 1; molWeight 18.0153; } thermodynamics diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/pyrolysisZones b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/pyrolysisZones index 5de2a6e8162ff56635bb3abcd4df7a2ef110d209..a41c56bd5f3ff37ce572a2a0d1126b7f38da87ae 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/pyrolysisZones +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/pyrolysisZones @@ -26,7 +26,7 @@ pyrolysis reactingOneDimCoeffs { gasHSource false; //Energy source term due to pyrolysis gas - QrHSource false; //Energy source term due in depht radiation + qrHSource false; //Energy source term due in depht radiation minimumDelta 1e-12; reactionDeltaMin 1e-12; diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/thermo.compressibleGas b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/thermo.compressibleGas index 4dcf3a8bc89679a045d2cebae064aad624d2bcda..175f12cfa55ddbe08b4411399278fa08fb978007 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/thermo.compressibleGas +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ C3H8 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/pyrolysisZones b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/pyrolysisZones index 641f34fa0fd6543f9e450c7260b127e43eb191dd..0f2c78bd7efe55fe266ad3cfb9b884a549e22e7f 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/pyrolysisZones +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/pyrolysisZones @@ -25,7 +25,7 @@ pyrolysis reactingOneDimCoeffs { - radFluxName Qr; + radFluxName qr; minimumDelta 1e-8; diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/thermo.compressibleGas b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/thermo.compressibleGas index 8f17c48e6340d0d93cabf7c8d2b9a683f3f0f41b..b6b4d20b1b025cd8bae92c7af257c5044ec98610 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/thermo.compressibleGas +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/chemistryProperties b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/chemistryProperties index 79f59e89cbb7fc1e90af8c0359bdcd76508e6eb7..d7830cd44e123fe5f2b57bd0d3dc8af76503ebd4 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/chemistryProperties +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/chemistryProperties @@ -23,8 +23,6 @@ chemistryType chemistry off; -turbulentReaction off; - initialChemicalTimeStep 1e-07; diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/pyrolysisZones b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/pyrolysisZones index 641f34fa0fd6543f9e450c7260b127e43eb191dd..0f2c78bd7efe55fe266ad3cfb9b884a549e22e7f 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/pyrolysisZones +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/pyrolysisZones @@ -25,7 +25,7 @@ pyrolysis reactingOneDimCoeffs { - radFluxName Qr; + radFluxName qr; minimumDelta 1e-8; diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/thermo.compressibleGas b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/thermo.compressibleGas index 1a2b84a8368da3609475e2fa9a6e41b5754e1278..5740879bad285f3c95d0ac456f812d1b79f4aa4d 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/thermo.compressibleGas +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/CH4 b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/CH4 new file mode 100644 index 0000000000000000000000000000000000000000..656665c4be2f8abf61260d2a28c1e0aa438221c4 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/CH4 @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CH4; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0.245642; + } + inletair + { + type fixedValue; + value uniform 0; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/G b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/G new file mode 100644 index 0000000000000000000000000000000000000000..ffa38934bcae6c895a365b0e8b448b9a2a783336 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/G @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------* \ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object G; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 0 -3 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + ".*" + { + type MarshakRadiation; + T T; + emissivityMode lookup; + emissivity uniform 1.0; + value uniform 0; + } + + front + { + type wedge; + } + back + { + type wedge; + } +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2 b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2 new file mode 100644 index 0000000000000000000000000000000000000000..3dccc1e4b60e5d01085a37f4eae3acf3fe1cd784 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2 @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0.046496; + } + inletair + { + type fixedValue; + value uniform 0; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2O b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2O new file mode 100644 index 0000000000000000000000000000000000000000..e56f20fb80da263f1878804bb7e43096c1e940bf --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/H2O @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.005008; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0; + } + inletair + { + type fixedValue; + value uniform 0.005008; + } + outlet + { + type inletOutlet; + inletValue uniform 0.005008; + value uniform 0.005008; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/N2 b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/N2 new file mode 100644 index 0000000000000000000000000000000000000000..d029c250490ad5e45987337429f803bb4109c049 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/N2 @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.763149; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0.707861; + } + inletair + { + type fixedValue; + value uniform 0.763149; + } + outlet + { + type inletOutlet; + inletValue uniform 0.763149; + value uniform 0.763149; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/O2 b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/O2 new file mode 100644 index 0000000000000000000000000000000000000000..fb2f7f355e4e4c083f72a6cac6e62f6a6942029a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/O2 @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.231843; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0; + } + inletair + { + type fixedValue; + value uniform 0.231843; + } + outlet + { + type inletOutlet; + inletValue uniform 0.231843; + value uniform 0.231843; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/T.orig b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/T.orig new file mode 100644 index 0000000000000000000000000000000000000000..f3cce854953c81b8f0f6018196ea47241582f475 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/T.orig @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 292; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 292; + } + inletair + { + type fixedValue; + value uniform 292; + } + outlet + { + type inletOutlet; + inletValue uniform 292; + value uniform 292; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/U b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/U new file mode 100644 index 0000000000000000000000000000000000000000..0b16d54effaeadd0b657fbf06970ab4c2fdf7a6f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/U @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0.3); + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform (0 0 42.2); + } + inletair + { + type fixedValue; + value uniform (0 0 0.3); + } + outlet + { + type pressureInletOutletVelocity; + value uniform (0 0 0.3); + } + axis + { + type empty; + } + leftside + { + type fixedValue; + value uniform (0 0 0.3); + } + burnerwall + { + type fixedValue; + value uniform (0 0 0); + } + burnertip + { + type fixedValue; + value uniform (0 0 0); + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/Ydefault b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/Ydefault new file mode 100644 index 0000000000000000000000000000000000000000..35b53b5d94786e2ec92deff6d16387fecbd9792b --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/Ydefault @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletfuel + { + type fixedValue; + value uniform 0; + } + inletair + { + type fixedValue; + value uniform 0; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/alphat b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/alphat new file mode 100644 index 0000000000000000000000000000000000000000..2cf1c6fc759b981c182b18ae0df28c022d179cc2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/alphat @@ -0,0 +1,72 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletfuel + { + type calculated; + value uniform 0; + } + inletair + { + type calculated; + value uniform 0; + } + outlet + { + type calculated; + value uniform 0; + } + axis + { + type empty; + } + leftside + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + burnerwall + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + burnertip + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/epsilon b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..17e7f4630bfd87c9a70e81f5688e7645f1703d0b --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/epsilon @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 200; + +boundaryField +{ + inletfuel + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + phi phi; + k k; + value uniform 200; + } + inletair + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + phi phi; + k k; + value uniform 200; + } + outlet + { + type inletOutlet; + inletValue uniform 200; + value uniform 200; + } + axis + { + type empty; + } + leftside + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 200; + } + burnerwall + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 200; + } + burnertip + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 200; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/k b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/k new file mode 100644 index 0000000000000000000000000000000000000000..8c065269a691767b7b86bb050d85f8dfe023a490 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/k @@ -0,0 +1,72 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inletfuel + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.08; + value uniform 1; + } + inletair + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.02; + value uniform 1; + } + outlet + { + type inletOutlet; + inletValue uniform 1; + value uniform 1; + } + axis + { + type empty; + } + leftside + { + type kqRWallFunction; + value uniform 1; + } + burnerwall + { + type kqRWallFunction; + value uniform 1; + } + burnertip + { + type kqRWallFunction; + value uniform 1; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/nut b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/nut new file mode 100644 index 0000000000000000000000000000000000000000..1cd5c32cdf2d45c018f875e76c4291939ba8bbbf --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/nut @@ -0,0 +1,78 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object mut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletfuel + { + type calculated; + value uniform 0; + } + inletair + { + type calculated; + value uniform 0; + } + outlet + { + type calculated; + value uniform 0; + } + axis + { + type empty; + } + leftside + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + burnerwall + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + burnertip + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/p b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/p new file mode 100644 index 0000000000000000000000000000000000000000..22a110564e8695d51844794147342f192959947a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/0/p @@ -0,0 +1,64 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 101325; + +boundaryField +{ + inletfuel + { + type zeroGradient; + } + inletair + { + type zeroGradient; + } + outlet + { + type totalPressure; + p0 $internalField; + } + axis + { + type empty; + } + leftside + { + type zeroGradient; + } + burnerwall + { + type zeroGradient; + } + burnertip + { + type zeroGradient; + } + front + { + type wedge; + } + back + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allclean b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..79defe511db3961aef05948e2cf327f0554141a2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +rm -f 0/T + +#------------------------------------------------------------------------------ diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allrun b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..40a38f4eca58a6fc70171b1a5423243ddb598b1a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/Allrun @@ -0,0 +1,23 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +# Set application name +application=`getApplication` + +rm -f 0/T +cp 0/T.orig 0/T + +runApplication chemkinToFoam \ + chemkin/grimech30.dat chemkin/thermo30.dat chemkin/transportProperties \ + constant/reactionsGRI constant/thermo.compressibleGasGRI + +runApplication blockMesh +runApplication setFields +runApplication decomposePar -force +runParallel $application +runApplication reconstructPar + +#------------------------------------------------------------------------------ diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/grimech30.dat b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/grimech30.dat new file mode 100644 index 0000000000000000000000000000000000000000..021f9958791a01de33f5a6770a3a01dff3b8fc36 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/grimech30.dat @@ -0,0 +1,328 @@ +! GRI-Mech Version 3.0 7/30/99 CHEMKIN-II format +! See README30 file at anonymous FTP site unix.sri.com, directory gri; +! WorldWideWeb home page http://www.me.berkeley.edu/gri_mech/ or +! through http://www.gri.org , under 'Basic Research', +! for additional information, contacts, and disclaimer +ELEMENTS +O H C N AR +END +SPECIES +H2 H O O2 OH H2O HO2 H2O2 +C CH CH2 CH2(S) CH3 CH4 CO CO2 +HCO CH2O CH2OH CH3O CH3OH C2H C2H2 C2H3 +C2H4 C2H5 C2H6 HCCO CH2CO HCCOH N2 AR +C3H7 C3H8 CH2CHO CH3CHO +END +!THERMO +! Insert GRI-Mech thermodynamics here or use in default file +!END +REACTIONS +2O+M<=>O2+M 1.200E+17 -1.000 .00 +H2/ 2.40/ H2O/15.40/ CH4/ 2.00/ CO/ 1.75/ CO2/ 3.60/ C2H6/ 3.00/ AR/ .83/ +O+H+M<=>OH+M 5.000E+17 -1.000 .00 +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+H2<=>H+OH 3.870E+04 2.700 6260.00 +O+HO2<=>OH+O2 2.000E+13 .000 .00 +O+H2O2<=>OH+HO2 9.630E+06 2.000 4000.00 +O+CH<=>H+CO 5.700E+13 .000 .00 +O+CH2<=>H+HCO 8.000E+13 .000 .00 +O+CH2(S)<=>H2+CO 1.500E+13 .000 .00 +O+CH2(S)<=>H+HCO 1.500E+13 .000 .00 +O+CH3<=>H+CH2O 5.060E+13 .000 .00 +O+CH4<=>OH+CH3 1.020E+09 1.500 8600.00 +O+CO(+M)<=>CO2(+M) 1.800E+10 .000 2385.00 + LOW/ 6.020E+14 .000 3000.00/ +H2/2.00/ O2/6.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/3.50/ C2H6/3.00/ AR/ .50/ +O+HCO<=>OH+CO 3.000E+13 .000 .00 +O+HCO<=>H+CO2 3.000E+13 .000 .00 +O+CH2O<=>OH+HCO 3.900E+13 .000 3540.00 +O+CH2OH<=>OH+CH2O 1.000E+13 .000 .00 +O+CH3O<=>OH+CH2O 1.000E+13 .000 .00 +O+CH3OH<=>OH+CH2OH 3.880E+05 2.500 3100.00 +O+CH3OH<=>OH+CH3O 1.300E+05 2.500 5000.00 +O+C2H<=>CH+CO 5.000E+13 .000 .00 +O+C2H2<=>H+HCCO 1.350E+07 2.000 1900.00 +O+C2H2<=>OH+C2H 4.600E+19 -1.410 28950.00 +O+C2H2<=>CO+CH2 6.940E+06 2.000 1900.00 +O+C2H3<=>H+CH2CO 3.000E+13 .000 .00 +O+C2H4<=>CH3+HCO 1.250E+07 1.830 220.00 +O+C2H5<=>CH3+CH2O 2.240E+13 .000 .00 +O+C2H6<=>OH+C2H5 8.980E+07 1.920 5690.00 +O+HCCO<=>H+2CO 1.000E+14 .000 .00 +O+CH2CO<=>OH+HCCO 1.000E+13 .000 8000.00 +O+CH2CO<=>CH2+CO2 1.750E+12 .000 1350.00 +O2+CO<=>O+CO2 2.500E+12 .000 47800.00 +O2+CH2O<=>HO2+HCO 1.000E+14 .000 40000.00 +H+O2+M<=>HO2+M 2.800E+18 -.860 .00 +O2/ .00/ H2O/ .00/ CO/ .75/ CO2/1.50/ C2H6/1.50/ N2/ .00/ AR/ .00/ +H+2O2<=>HO2+O2 2.080E+19 -1.240 .00 +H+O2+H2O<=>HO2+H2O 11.26E+18 -.760 .00 +H+O2+N2<=>HO2+N2 2.600E+19 -1.240 .00 +H+O2+AR<=>HO2+AR 7.000E+17 -.800 .00 +H+O2<=>O+OH 2.650E+16 -.6707 17041.00 +2H+M<=>H2+M 1.000E+18 -1.000 .00 +H2/ .00/ H2O/ .00/ CH4/2.00/ CO2/ .00/ C2H6/3.00/ AR/ .63/ +2H+H2<=>2H2 9.000E+16 -.600 .00 +2H+H2O<=>H2+H2O 6.000E+19 -1.250 .00 +2H+CO2<=>H2+CO2 5.500E+20 -2.000 .00 +H+OH+M<=>H2O+M 2.200E+22 -2.000 .00 +H2/ .73/ H2O/3.65/ CH4/2.00/ C2H6/3.00/ AR/ .38/ +H+HO2<=>O+H2O 3.970E+12 .000 671.00 +H+HO2<=>O2+H2 4.480E+13 .000 1068.00 +H+HO2<=>2OH 0.840E+14 .000 635.00 +H+H2O2<=>HO2+H2 1.210E+07 2.000 5200.00 +H+H2O2<=>OH+H2O 1.000E+13 .000 3600.00 +H+CH<=>C+H2 1.650E+14 .000 .00 +H+CH2(+M)<=>CH3(+M) 6.000E+14 .000 .00 + LOW / 1.040E+26 -2.760 1600.00/ + TROE/ .5620 91.00 5836.00 8552.00/ +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+CH2(S)<=>CH+H2 3.000E+13 .000 .00 +H+CH3(+M)<=>CH4(+M) 13.90E+15 -.534 536.00 + LOW / 2.620E+33 -4.760 2440.00/ + TROE/ .7830 74.00 2941.00 6964.00 / +H2/2.00/ H2O/6.00/ CH4/3.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+CH4<=>CH3+H2 6.600E+08 1.620 10840.00 +H+HCO(+M)<=>CH2O(+M) 1.090E+12 .480 -260.00 + LOW / 2.470E+24 -2.570 425.00/ + TROE/ .7824 271.00 2755.00 6570.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+HCO<=>H2+CO 7.340E+13 .000 .00 +H+CH2O(+M)<=>CH2OH(+M) 5.400E+11 .454 3600.00 + LOW / 1.270E+32 -4.820 6530.00/ + TROE/ .7187 103.00 1291.00 4160.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2O(+M)<=>CH3O(+M) 5.400E+11 .454 2600.00 + LOW / 2.200E+30 -4.800 5560.00/ + TROE/ .7580 94.00 1555.00 4200.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2O<=>HCO+H2 5.740E+07 1.900 2742.00 +H+CH2OH(+M)<=>CH3OH(+M) 1.055E+12 .500 86.00 + LOW / 4.360E+31 -4.650 5080.00/ + TROE/ .600 100.00 90000.0 10000.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2OH<=>H2+CH2O 2.000E+13 .000 .00 +H+CH2OH<=>OH+CH3 1.650E+11 .650 -284.00 +H+CH2OH<=>CH2(S)+H2O 3.280E+13 -.090 610.00 +H+CH3O(+M)<=>CH3OH(+M) 2.430E+12 .515 50.00 + LOW / 4.660E+41 -7.440 14080.0/ + TROE/ .700 100.00 90000.0 10000.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH3O<=>H+CH2OH 4.150E+07 1.630 1924.00 +H+CH3O<=>H2+CH2O 2.000E+13 .000 .00 +H+CH3O<=>OH+CH3 1.500E+12 .500 -110.00 +H+CH3O<=>CH2(S)+H2O 2.620E+14 -.230 1070.00 +H+CH3OH<=>CH2OH+H2 1.700E+07 2.100 4870.00 +H+CH3OH<=>CH3O+H2 4.200E+06 2.100 4870.00 +H+C2H(+M)<=>C2H2(+M) 1.000E+17 -1.000 .00 + LOW / 3.750E+33 -4.800 1900.00/ + TROE/ .6464 132.00 1315.00 5566.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H2(+M)<=>C2H3(+M) 5.600E+12 .000 2400.00 + LOW / 3.800E+40 -7.270 7220.00/ + TROE/ .7507 98.50 1302.00 4167.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H3(+M)<=>C2H4(+M) 6.080E+12 .270 280.00 + LOW / 1.400E+30 -3.860 3320.00/ + TROE/ .7820 207.50 2663.00 6095.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H3<=>H2+C2H2 3.000E+13 .000 .00 +H+C2H4(+M)<=>C2H5(+M) 0.540E+12 .454 1820.00 + LOW / 0.600E+42 -7.620 6970.00/ + TROE/ .9753 210.00 984.00 4374.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H4<=>C2H3+H2 1.325E+06 2.530 12240.00 +H+C2H5(+M)<=>C2H6(+M) 5.210E+17 -.990 1580.00 + LOW / 1.990E+41 -7.080 6685.00/ + TROE/ .8422 125.00 2219.00 6882.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H5<=>H2+C2H4 2.000E+12 .000 .00 +H+C2H6<=>C2H5+H2 1.150E+08 1.900 7530.00 +H+HCCO<=>CH2(S)+CO 1.000E+14 .000 .00 +H+CH2CO<=>HCCO+H2 5.000E+13 .000 8000.00 +H+CH2CO<=>CH3+CO 1.130E+13 .000 3428.00 +H+HCCOH<=>H+CH2CO 1.000E+13 .000 .00 +H2+CO(+M)<=>CH2O(+M) 4.300E+07 1.500 79600.00 + LOW / 5.070E+27 -3.420 84350.00/ + TROE/ .9320 197.00 1540.00 10300.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +OH+H2<=>H+H2O 2.160E+08 1.510 3430.00 +2OH(+M)<=>H2O2(+M) 7.400E+13 -.370 .00 + LOW / 2.300E+18 -.900 -1700.00/ + TROE/ .7346 94.00 1756.00 5182.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +2OH<=>O+H2O 3.570E+04 2.400 -2110.00 +OH+HO2<=>O2+H2O 1.450E+13 .000 -500.00 + DUPLICATE +OH+H2O2<=>HO2+H2O 2.000E+12 .000 427.00 + DUPLICATE +OH+H2O2<=>HO2+H2O 1.700E+18 .000 29410.00 + DUPLICATE +OH+C<=>H+CO 5.000E+13 .000 .00 +OH+CH<=>H+HCO 3.000E+13 .000 .00 +OH+CH2<=>H+CH2O 2.000E+13 .000 .00 +OH+CH2<=>CH+H2O 1.130E+07 2.000 3000.00 +OH+CH2(S)<=>H+CH2O 3.000E+13 .000 .00 +OH+CH3(+M)<=>CH3OH(+M) 2.790E+18 -1.430 1330.00 + LOW / 4.000E+36 -5.920 3140.00/ + TROE/ .4120 195.0 5900.00 6394.00/ +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +OH+CH3<=>CH2+H2O 5.600E+07 1.600 5420.00 +OH+CH3<=>CH2(S)+H2O 6.440E+17 -1.340 1417.00 +OH+CH4<=>CH3+H2O 1.000E+08 1.600 3120.00 +OH+CO<=>H+CO2 4.760E+07 1.228 70.00 +OH+HCO<=>H2O+CO 5.000E+13 .000 .00 +OH+CH2O<=>HCO+H2O 3.430E+09 1.180 -447.00 +OH+CH2OH<=>H2O+CH2O 5.000E+12 .000 .00 +OH+CH3O<=>H2O+CH2O 5.000E+12 .000 .00 +OH+CH3OH<=>CH2OH+H2O 1.440E+06 2.000 -840.00 +OH+CH3OH<=>CH3O+H2O 6.300E+06 2.000 1500.00 +OH+C2H<=>H+HCCO 2.000E+13 .000 .00 +OH+C2H2<=>H+CH2CO 2.180E-04 4.500 -1000.00 +OH+C2H2<=>H+HCCOH 5.040E+05 2.300 13500.00 +OH+C2H2<=>C2H+H2O 3.370E+07 2.000 14000.00 +OH+C2H2<=>CH3+CO 4.830E-04 4.000 -2000.00 +OH+C2H3<=>H2O+C2H2 5.000E+12 .000 .00 +OH+C2H4<=>C2H3+H2O 3.600E+06 2.000 2500.00 +OH+C2H6<=>C2H5+H2O 3.540E+06 2.120 870.00 +OH+CH2CO<=>HCCO+H2O 7.500E+12 .000 2000.00 +2HO2<=>O2+H2O2 1.300E+11 .000 -1630.00 + DUPLICATE +2HO2<=>O2+H2O2 4.200E+14 .000 12000.00 + DUPLICATE +HO2+CH2<=>OH+CH2O 2.000E+13 .000 .00 +HO2+CH3<=>O2+CH4 1.000E+12 .000 .00 +HO2+CH3<=>OH+CH3O 3.780E+13 .000 .00 +HO2+CO<=>OH+CO2 1.500E+14 .000 23600.00 +HO2+CH2O<=>HCO+H2O2 5.600E+06 2.000 12000.00 +C+O2<=>O+CO 5.800E+13 .000 576.00 +C+CH2<=>H+C2H 5.000E+13 .000 .00 +C+CH3<=>H+C2H2 5.000E+13 .000 .00 +CH+O2<=>O+HCO 6.710E+13 .000 .00 +CH+H2<=>H+CH2 1.080E+14 .000 3110.00 +CH+H2O<=>H+CH2O 5.710E+12 .000 -755.00 +CH+CH2<=>H+C2H2 4.000E+13 .000 .00 +CH+CH3<=>H+C2H3 3.000E+13 .000 .00 +CH+CH4<=>H+C2H4 6.000E+13 .000 .00 +CH+CO(+M)<=>HCCO(+M) 5.000E+13 .000 .00 + LOW / 2.690E+28 -3.740 1936.00/ + TROE/ .5757 237.00 1652.00 5069.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH+CO2<=>HCO+CO 1.900E+14 .000 15792.00 +CH+CH2O<=>H+CH2CO 9.460E+13 .000 -515.00 +CH+HCCO<=>CO+C2H2 5.000E+13 .000 .00 +CH2+O2=>OH+H+CO 5.000E+12 .000 1500.00 +CH2+H2<=>H+CH3 5.000E+05 2.000 7230.00 +2CH2<=>H2+C2H2 1.600E+15 .000 11944.00 +CH2+CH3<=>H+C2H4 4.000E+13 .000 .00 +CH2+CH4<=>2CH3 2.460E+06 2.000 8270.00 +CH2+CO(+M)<=>CH2CO(+M) 8.100E+11 .500 4510.00 + LOW / 2.690E+33 -5.110 7095.00/ + TROE/ .5907 275.00 1226.00 5185.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH2+HCCO<=>C2H3+CO 3.000E+13 .000 .00 +CH2(S)+N2<=>CH2+N2 1.500E+13 .000 600.00 +CH2(S)+AR<=>CH2+AR 9.000E+12 .000 600.00 +CH2(S)+O2<=>H+OH+CO 2.800E+13 .000 .00 +CH2(S)+O2<=>CO+H2O 1.200E+13 .000 .00 +CH2(S)+H2<=>CH3+H 7.000E+13 .000 .00 +CH2(S)+H2O(+M)<=>CH3OH(+M) 4.820E+17 -1.160 1145.00 + LOW / 1.880E+38 -6.360 5040.00/ + TROE/ .6027 208.00 3922.00 10180.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +CH2(S)+H2O<=>CH2+H2O 3.000E+13 .000 .00 +CH2(S)+CH3<=>H+C2H4 1.200E+13 .000 -570.00 +CH2(S)+CH4<=>2CH3 1.600E+13 .000 -570.00 +CH2(S)+CO<=>CH2+CO 9.000E+12 .000 .00 +CH2(S)+CO2<=>CH2+CO2 7.000E+12 .000 .00 +CH2(S)+CO2<=>CO+CH2O 1.400E+13 .000 .00 +CH2(S)+C2H6<=>CH3+C2H5 4.000E+13 .000 -550.00 +CH3+O2<=>O+CH3O 3.560E+13 .000 30480.00 +CH3+O2<=>OH+CH2O 2.310E+12 .000 20315.00 +CH3+H2O2<=>HO2+CH4 2.450E+04 2.470 5180.00 +2CH3(+M)<=>C2H6(+M) 6.770E+16 -1.180 654.00 + LOW / 3.400E+41 -7.030 2762.00/ + TROE/ .6190 73.20 1180.00 9999.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +2CH3<=>H+C2H5 6.840E+12 .100 10600.00 +CH3+HCO<=>CH4+CO 2.648E+13 .000 .00 +CH3+CH2O<=>HCO+CH4 3.320E+03 2.810 5860.00 +CH3+CH3OH<=>CH2OH+CH4 3.000E+07 1.500 9940.00 +CH3+CH3OH<=>CH3O+CH4 1.000E+07 1.500 9940.00 +CH3+C2H4<=>C2H3+CH4 2.270E+05 2.000 9200.00 +CH3+C2H6<=>C2H5+CH4 6.140E+06 1.740 10450.00 +HCO+H2O<=>H+CO+H2O 1.500E+18 -1.000 17000.00 +HCO+M<=>H+CO+M 1.870E+17 -1.000 17000.00 +H2/2.00/ H2O/ .00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +HCO+O2<=>HO2+CO 13.45E+12 .000 400.00 +CH2OH+O2<=>HO2+CH2O 1.800E+13 .000 900.00 +CH3O+O2<=>HO2+CH2O 4.280E-13 7.600 -3530.00 +C2H+O2<=>HCO+CO 1.000E+13 .000 -755.00 +C2H+H2<=>H+C2H2 5.680E+10 0.900 1993.00 +C2H3+O2<=>HCO+CH2O 4.580E+16 -1.390 1015.00 +C2H4(+M)<=>H2+C2H2(+M) 8.000E+12 .440 86770.00 + LOW / 1.580E+51 -9.300 97800.00/ + TROE/ .7345 180.00 1035.00 5417.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +C2H5+O2<=>HO2+C2H4 8.400E+11 .000 3875.00 +HCCO+O2<=>OH+2CO 3.200E+12 .000 854.00 +2HCCO<=>2CO+C2H2 1.000E+13 .000 .00 +O+CH3=>H+H2+CO 3.370E+13 .000 .00 +O+C2H4<=>H+CH2CHO 6.700E+06 1.830 220.00 +O+C2H5<=>H+CH3CHO 1.096E+14 .000 .00 +OH+HO2<=>O2+H2O 0.500E+16 .000 17330.00 + DUPLICATE +OH+CH3=>H2+CH2O 8.000E+09 .500 -1755.00 +CH+H2(+M)<=>CH3(+M) 1.970E+12 .430 -370.00 + LOW/ 4.820E+25 -2.80 590.0 / + TROE/ .578 122.0 2535.0 9365.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH2+O2=>2H+CO2 5.800E+12 .000 1500.00 +CH2+O2<=>O+CH2O 2.400E+12 .000 1500.00 +CH2+CH2=>2H+C2H2 2.000E+14 .000 10989.00 +CH2(S)+H2O=>H2+CH2O 6.820E+10 .250 -935.00 +C2H3+O2<=>O+CH2CHO 3.030E+11 .290 11.00 +C2H3+O2<=>HO2+C2H2 1.337E+06 1.610 -384.00 +O+CH3CHO<=>OH+CH2CHO 2.920E+12 .000 1808.00 +O+CH3CHO=>OH+CH3+CO 2.920E+12 .000 1808.00 +O2+CH3CHO=>HO2+CH3+CO 3.010E+13 .000 39150.00 +H+CH3CHO<=>CH2CHO+H2 2.050E+09 1.160 2405.00 +H+CH3CHO=>CH3+H2+CO 2.050E+09 1.160 2405.00 +OH+CH3CHO=>CH3+H2O+CO 2.343E+10 0.730 -1113.00 +HO2+CH3CHO=>CH3+H2O2+CO 3.010E+12 .000 11923.00 +CH3+CH3CHO=>CH3+CH4+CO 2.720E+06 1.770 5920.00 +H+CH2CO(+M)<=>CH2CHO(+M) 4.865E+11 0.422 -1755.00 + LOW/ 1.012E+42 -7.63 3854.0/ + TROE/ 0.465 201.0 1773.0 5333.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+CH2CHO=>H+CH2+CO2 1.500E+14 .000 .00 +O2+CH2CHO=>OH+CO+CH2O 1.810E+10 .000 .00 +O2+CH2CHO=>OH+2HCO 2.350E+10 .000 .00 +H+CH2CHO<=>CH3+HCO 2.200E+13 .000 .00 +H+CH2CHO<=>CH2CO+H2 1.100E+13 .000 .00 +OH+CH2CHO<=>H2O+CH2CO 1.200E+13 .000 .00 +OH+CH2CHO<=>HCO+CH2OH 3.010E+13 .000 .00 +CH3+C2H5(+M)<=>C3H8(+M) .9430E+13 .000 .00 + LOW/ 2.710E+74 -16.82 13065.0 / + TROE/ .1527 291.0 2742.0 7748.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+C3H8<=>OH+C3H7 1.930E+05 2.680 3716.00 +H+C3H8<=>C3H7+H2 1.320E+06 2.540 6756.00 +OH+C3H8<=>C3H7+H2O 3.160E+07 1.800 934.00 +C3H7+H2O2<=>HO2+C3H8 3.780E+02 2.720 1500.00 +CH3+C3H8<=>C3H7+CH4 0.903E+00 3.650 7154.00 +CH3+C2H4(+M)<=>C3H7(+M) 2.550E+06 1.600 5700.00 + LOW/ 3.00E+63 -14.6 18170./ + TROE/ .1894 277.0 8748.0 7891.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+C3H7<=>C2H5+CH2O 9.640E+13 .000 .00 +H+C3H7(+M)<=>C3H8(+M) 3.613E+13 .000 .00 + LOW/ 4.420E+61 -13.545 11357.0/ + TROE/ .315 369.0 3285.0 6667.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C3H7<=>CH3+C2H5 4.060E+06 2.190 890.00 +OH+C3H7<=>C2H5+CH2OH 2.410E+13 .000 .00 +HO2+C3H7<=>O2+C3H8 2.550E+10 0.255 -943.00 +HO2+C3H7=>OH+C2H5+CH2O 2.410E+13 .000 .00 +CH3+C3H7<=>2C2H5 1.927E+13 -0.320 .00 +END diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/thermo30.dat b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/thermo30.dat new file mode 100644 index 0000000000000000000000000000000000000000..89e7122c35f3dc32984fc9c4809b0fdaa8d2e9b2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/thermo30.dat @@ -0,0 +1,218 @@ +THERMO ALL + 250.000 1000.000 5000.000 +! GRI-Mech Version 3.0 Thermodynamics released 7/30/99 +! NASA Polynomial format for CHEMKIN-II +! see README file for disclaimer +O L 1/90O 1 G 200.000 3500.000 1000.000 1 + 2.56942078E+00-8.59741137E-05 4.19484589E-08-1.00177799E-11 1.22833691E-15 2 + 2.92175791E+04 4.78433864E+00 3.16826710E+00-3.27931884E-03 6.64306396E-06 3 +-6.12806624E-09 2.11265971E-12 2.91222592E+04 2.05193346E+00 4 +O2 TPIS89O 2 G 200.000 3500.000 1000.000 1 + 3.28253784E+00 1.48308754E-03-7.57966669E-07 2.09470555E-10-2.16717794E-14 2 +-1.08845772E+03 5.45323129E+00 3.78245636E+00-2.99673416E-03 9.84730201E-06 3 +-9.68129509E-09 3.24372837E-12-1.06394356E+03 3.65767573E+00 4 +H L 7/88H 1 G 200.000 3500.000 1000.000 1 + 2.50000001E+00-2.30842973E-11 1.61561948E-14-4.73515235E-18 4.98197357E-22 2 + 2.54736599E+04-4.46682914E-01 2.50000000E+00 7.05332819E-13-1.99591964E-15 3 + 2.30081632E-18-9.27732332E-22 2.54736599E+04-4.46682853E-01 4 +H2 TPIS78H 2 G 200.000 3500.000 1000.000 1 + 3.33727920E+00-4.94024731E-05 4.99456778E-07-1.79566394E-10 2.00255376E-14 2 +-9.50158922E+02-3.20502331E+00 2.34433112E+00 7.98052075E-03-1.94781510E-05 3 + 2.01572094E-08-7.37611761E-12-9.17935173E+02 6.83010238E-01 4 +OH RUS 78O 1H 1 G 200.000 3500.000 1000.000 1 + 3.09288767E+00 5.48429716E-04 1.26505228E-07-8.79461556E-11 1.17412376E-14 2 + 3.85865700E+03 4.47669610E+00 3.99201543E+00-2.40131752E-03 4.61793841E-06 3 +-3.88113333E-09 1.36411470E-12 3.61508056E+03-1.03925458E-01 4 +H2O L 8/89H 2O 1 G 200.000 3500.000 1000.000 1 + 3.03399249E+00 2.17691804E-03-1.64072518E-07-9.70419870E-11 1.68200992E-14 2 +-3.00042971E+04 4.96677010E+00 4.19864056E+00-2.03643410E-03 6.52040211E-06 3 +-5.48797062E-09 1.77197817E-12-3.02937267E+04-8.49032208E-01 4 +HO2 L 5/89H 1O 2 G 200.000 3500.000 1000.000 1 + 4.01721090E+00 2.23982013E-03-6.33658150E-07 1.14246370E-10-1.07908535E-14 2 + 1.11856713E+02 3.78510215E+00 4.30179801E+00-4.74912051E-03 2.11582891E-05 3 +-2.42763894E-08 9.29225124E-12 2.94808040E+02 3.71666245E+00 4 +H2O2 L 7/88H 2O 2 G 200.000 3500.000 1000.000 1 + 4.16500285E+00 4.90831694E-03-1.90139225E-06 3.71185986E-10-2.87908305E-14 2 +-1.78617877E+04 2.91615662E+00 4.27611269E+00-5.42822417E-04 1.67335701E-05 3 +-2.15770813E-08 8.62454363E-12-1.77025821E+04 3.43505074E+00 4 +C L11/88C 1 G 200.000 3500.000 1000.000 1 + 2.49266888E+00 4.79889284E-05-7.24335020E-08 3.74291029E-11-4.87277893E-15 2 + 8.54512953E+04 4.80150373E+00 2.55423955E+00-3.21537724E-04 7.33792245E-07 3 +-7.32234889E-10 2.66521446E-13 8.54438832E+04 4.53130848E+00 4 +CH TPIS79C 1H 1 G 200.000 3500.000 1000.000 1 + 2.87846473E+00 9.70913681E-04 1.44445655E-07-1.30687849E-10 1.76079383E-14 2 + 7.10124364E+04 5.48497999E+00 3.48981665E+00 3.23835541E-04-1.68899065E-06 3 + 3.16217327E-09-1.40609067E-12 7.07972934E+04 2.08401108E+00 4 +CH2 L S/93C 1H 2 G 200.000 3500.000 1000.000 1 + 2.87410113E+00 3.65639292E-03-1.40894597E-06 2.60179549E-10-1.87727567E-14 2 + 4.62636040E+04 6.17119324E+00 3.76267867E+00 9.68872143E-04 2.79489841E-06 3 +-3.85091153E-09 1.68741719E-12 4.60040401E+04 1.56253185E+00 4 +CH2(S) L S/93C 1H 2 G 200.000 3500.000 1000.000 1 + 2.29203842E+00 4.65588637E-03-2.01191947E-06 4.17906000E-10-3.39716365E-14 2 + 5.09259997E+04 8.62650169E+00 4.19860411E+00-2.36661419E-03 8.23296220E-06 3 +-6.68815981E-09 1.94314737E-12 5.04968163E+04-7.69118967E-01 4 +CH3 L11/89C 1H 3 G 200.000 3500.000 1000.000 1 + 2.28571772E+00 7.23990037E-03-2.98714348E-06 5.95684644E-10-4.67154394E-14 2 + 1.67755843E+04 8.48007179E+00 3.67359040E+00 2.01095175E-03 5.73021856E-06 3 +-6.87117425E-09 2.54385734E-12 1.64449988E+04 1.60456433E+00 4 +CH4 L 8/88C 1H 4 G 200.000 3500.000 1000.000 1 + 7.48514950E-02 1.33909467E-02-5.73285809E-06 1.22292535E-09-1.01815230E-13 2 +-9.46834459E+03 1.84373180E+01 5.14987613E+00-1.36709788E-02 4.91800599E-05 3 +-4.84743026E-08 1.66693956E-11-1.02466476E+04-4.64130376E+00 4 +CO TPIS79C 1O 1 G 200.000 3500.000 1000.000 1 + 2.71518561E+00 2.06252743E-03-9.98825771E-07 2.30053008E-10-2.03647716E-14 2 +-1.41518724E+04 7.81868772E+00 3.57953347E+00-6.10353680E-04 1.01681433E-06 3 + 9.07005884E-10-9.04424499E-13-1.43440860E+04 3.50840928E+00 4 +CO2 L 7/88C 1O 2 G 200.000 3500.000 1000.000 1 + 3.85746029E+00 4.41437026E-03-2.21481404E-06 5.23490188E-10-4.72084164E-14 2 +-4.87591660E+04 2.27163806E+00 2.35677352E+00 8.98459677E-03-7.12356269E-06 3 + 2.45919022E-09-1.43699548E-13-4.83719697E+04 9.90105222E+00 4 +HCO L12/89H 1C 1O 1 G 200.000 3500.000 1000.000 1 + 2.77217438E+00 4.95695526E-03-2.48445613E-06 5.89161778E-10-5.33508711E-14 2 + 4.01191815E+03 9.79834492E+00 4.22118584E+00-3.24392532E-03 1.37799446E-05 3 +-1.33144093E-08 4.33768865E-12 3.83956496E+03 3.39437243E+00 4 +CH2O L 8/88H 2C 1O 1 G 200.000 3500.000 1000.000 1 + 1.76069008E+00 9.20000082E-03-4.42258813E-06 1.00641212E-09-8.83855640E-14 2 +-1.39958323E+04 1.36563230E+01 4.79372315E+00-9.90833369E-03 3.73220008E-05 3 +-3.79285261E-08 1.31772652E-11-1.43089567E+04 6.02812900E-01 4 +CH2OH GUNL93C 1H 3O 1 G 200.000 3500.000 1000.000 1 + 3.69266569E+00 8.64576797E-03-3.75101120E-06 7.87234636E-10-6.48554201E-14 2 +-3.24250627E+03 5.81043215E+00 3.86388918E+00 5.59672304E-03 5.93271791E-06 3 +-1.04532012E-08 4.36967278E-12-3.19391367E+03 5.47302243E+00 4 +CH3O 121686C 1H 3O 1 G 250.00 3000.00 1000.000 1 + 0.03770799E+02 0.07871497E-01-0.02656384E-04 0.03944431E-08-0.02112616E-12 2 + 0.12783252E+03 0.02929575E+02 0.02106204E+02 0.07216595E-01 0.05338472E-04 3 +-0.07377636E-07 0.02075610E-10 0.09786011E+04 0.13152177E+02 4 +CH3OH L 8/88C 1H 4O 1 G 200.000 3500.000 1000.000 1 + 1.78970791E+00 1.40938292E-02-6.36500835E-06 1.38171085E-09-1.17060220E-13 2 +-2.53748747E+04 1.45023623E+01 5.71539582E+00-1.52309129E-02 6.52441155E-05 3 +-7.10806889E-08 2.61352698E-11-2.56427656E+04-1.50409823E+00 4 +C2H L 1/91C 2H 1 G 200.000 3500.000 1000.000 1 + 3.16780652E+00 4.75221902E-03-1.83787077E-06 3.04190252E-10-1.77232770E-14 2 + 6.71210650E+04 6.63589475E+00 2.88965733E+00 1.34099611E-02-2.84769501E-05 3 + 2.94791045E-08-1.09331511E-11 6.68393932E+04 6.22296438E+00 4 +C2H2 L 1/91C 2H 2 G 200.000 3500.000 1000.000 1 + 4.14756964E+00 5.96166664E-03-2.37294852E-06 4.67412171E-10-3.61235213E-14 2 + 2.59359992E+04-1.23028121E+00 8.08681094E-01 2.33615629E-02-3.55171815E-05 3 + 2.80152437E-08-8.50072974E-12 2.64289807E+04 1.39397051E+01 4 +C2H3 L 2/92C 2H 3 G 200.000 3500.000 1000.000 1 + 3.01672400E+00 1.03302292E-02-4.68082349E-06 1.01763288E-09-8.62607041E-14 2 + 3.46128739E+04 7.78732378E+00 3.21246645E+00 1.51479162E-03 2.59209412E-05 3 +-3.57657847E-08 1.47150873E-11 3.48598468E+04 8.51054025E+00 4 +C2H4 L 1/91C 2H 4 G 200.000 3500.000 1000.000 1 + 2.03611116E+00 1.46454151E-02-6.71077915E-06 1.47222923E-09-1.25706061E-13 2 + 4.93988614E+03 1.03053693E+01 3.95920148E+00-7.57052247E-03 5.70990292E-05 3 +-6.91588753E-08 2.69884373E-11 5.08977593E+03 4.09733096E+00 4 +C2H5 L12/92C 2H 5 G 200.000 3500.000 1000.000 1 + 1.95465642E+00 1.73972722E-02-7.98206668E-06 1.75217689E-09-1.49641576E-13 2 + 1.28575200E+04 1.34624343E+01 4.30646568E+00-4.18658892E-03 4.97142807E-05 3 +-5.99126606E-08 2.30509004E-11 1.28416265E+04 4.70720924E+00 4 +C2H6 L 8/88C 2H 6 G 200.000 3500.000 1000.000 1 + 1.07188150E+00 2.16852677E-02-1.00256067E-05 2.21412001E-09-1.90002890E-13 2 +-1.14263932E+04 1.51156107E+01 4.29142492E+00-5.50154270E-03 5.99438288E-05 3 +-7.08466285E-08 2.68685771E-11-1.15222055E+04 2.66682316E+00 4 +CH2CO L 5/90C 2H 2O 1 G 200.000 3500.000 1000.000 1 + 4.51129732E+00 9.00359745E-03-4.16939635E-06 9.23345882E-10-7.94838201E-14 2 +-7.55105311E+03 6.32247205E-01 2.13583630E+00 1.81188721E-02-1.73947474E-05 3 + 9.34397568E-09-2.01457615E-12-7.04291804E+03 1.22156480E+01 4 +HCCO SRIC91H 1C 2O 1 G 250.00 4000.00 1000.000 1 + 0.56282058E+01 0.40853401E-02-0.15934547E-05 0.28626052E-09-0.19407832E-13 2 + 0.19327215E+05-0.39302595E+01 0.22517214E+01 0.17655021E-01-0.23729101E-04 3 + 0.17275759E-07-0.50664811E-11 0.20059449E+05 0.12490417E+02 4 +HCCOH SRI91C 2O 1H 2 G 250.000 5000.000 1000.000 1 + 0.59238291E+01 0.67923600E-02-0.25658564E-05 0.44987841E-09-0.29940101E-13 2 + 0.72646260E+04-0.76017742E+01 0.12423733E+01 0.31072201E-01-0.50866864E-04 3 + 0.43137131E-07-0.14014594E-10 0.80316143E+04 0.13874319E+02 4 +H2CN 41687H 2C 1N 1 G 250.00 4000.000 1000.000 1 + 0.52097030E+01 0.29692911E-02-0.28555891E-06-0.16355500E-09 0.30432589E-13 2 + 0.27677109E+05-0.44444780E+01 0.28516610E+01 0.56952331E-02 0.10711400E-05 3 +-0.16226120E-08-0.23511081E-12 0.28637820E+05 0.89927511E+01 4 +HCN GRI/98H 1C 1N 1 G 200.000 6000.000 1000.000 1 + 0.38022392E+01 0.31464228E-02-0.10632185E-05 0.16619757E-09-0.97997570E-14 2 + 0.14407292E+05 0.15754601E+01 0.22589886E+01 0.10051170E-01-0.13351763E-04 3 + 0.10092349E-07-0.30089028E-11 0.14712633E+05 0.89164419E+01 4 +HNO And93 H 1N 1O 1 G 200.000 6000.000 1000.000 1 + 0.29792509E+01 0.34944059E-02-0.78549778E-06 0.57479594E-10-0.19335916E-15 2 + 0.11750582E+05 0.86063728E+01 0.45334916E+01-0.56696171E-02 0.18473207E-04 3 +-0.17137094E-07 0.55454573E-11 0.11548297E+05 0.17498417E+01 4 +N L 6/88N 1 G 200.000 6000.000 1000.000 1 + 0.24159429E+01 0.17489065E-03-0.11902369E-06 0.30226245E-10-0.20360982E-14 2 + 0.56133773E+05 0.46496096E+01 0.25000000E+01 0.00000000E+00 0.00000000E+00 3 + 0.00000000E+00 0.00000000E+00 0.56104637E+05 0.41939087E+01 4 +NNH T07/93N 2H 1 G 200.000 6000.000 1000.000 1 + 0.37667544E+01 0.28915082E-02-0.10416620E-05 0.16842594E-09-0.10091896E-13 2 + 0.28650697E+05 0.44705067E+01 0.43446927E+01-0.48497072E-02 0.20059459E-04 3 +-0.21726464E-07 0.79469539E-11 0.28791973E+05 0.29779410E+01 4 +N2O L 7/88N 2O 1 G 200.000 6000.000 1000.000 1 + 0.48230729E+01 0.26270251E-02-0.95850874E-06 0.16000712E-09-0.97752303E-14 2 + 0.80734048E+04-0.22017207E+01 0.22571502E+01 0.11304728E-01-0.13671319E-04 3 + 0.96819806E-08-0.29307182E-11 0.87417744E+04 0.10757992E+02 4 +NH And94 N 1H 1 G 200.000 6000.000 1000.000 1 + 0.27836928E+01 0.13298430E-02-0.42478047E-06 0.78348501E-10-0.55044470E-14 2 + 0.42120848E+05 0.57407799E+01 0.34929085E+01 0.31179198E-03-0.14890484E-05 3 + 0.24816442E-08-0.10356967E-11 0.41880629E+05 0.18483278E+01 4 +NH2 And89 N 1H 2 G 200.000 6000.000 1000.000 1 + 0.28347421E+01 0.32073082E-02-0.93390804E-06 0.13702953E-09-0.79206144E-14 2 + 0.22171957E+05 0.65204163E+01 0.42040029E+01-0.21061385E-02 0.71068348E-05 3 +-0.56115197E-08 0.16440717E-11 0.21885910E+05-0.14184248E+00 4 +NH3 J 6/77N 1H 3 G 200.000 6000.000 1000.000 1 + 0.26344521E+01 0.56662560E-02-0.17278676E-05 0.23867161E-09-0.12578786E-13 2 +-0.65446958E+04 0.65662928E+01 0.42860274E+01-0.46605230E-02 0.21718513E-04 3 +-0.22808887E-07 0.82638046E-11-0.67417285E+04-0.62537277E+00 4 +NO RUS 78N 1O 1 G 200.000 6000.000 1000.000 1 + 0.32606056E+01 0.11911043E-02-0.42917048E-06 0.69457669E-10-0.40336099E-14 2 + 0.99209746E+04 0.63693027E+01 0.42184763E+01-0.46389760E-02 0.11041022E-04 3 +-0.93361354E-08 0.28035770E-11 0.98446230E+04 0.22808464E+01 4 +NO2 L 7/88N 1O 2 G 200.000 6000.000 1000.000 1 + 0.48847542E+01 0.21723956E-02-0.82806906E-06 0.15747510E-09-0.10510895E-13 2 + 0.23164983E+04-0.11741695E+00 0.39440312E+01-0.15854290E-02 0.16657812E-04 3 +-0.20475426E-07 0.78350564E-11 0.28966179E+04 0.63119917E+01 4 +HCNO BDEA94H 1N 1C 1O 1G 250.000 5000.000 1382.000 1 + 6.59860456E+00 3.02778626E-03-1.07704346E-06 1.71666528E-10-1.01439391E-14 2 + 1.79661339E+04-1.03306599E+01 2.64727989E+00 1.27505342E-02-1.04794236E-05 3 + 4.41432836E-09-7.57521466E-13 1.92990252E+04 1.07332972E+01 4 +HOCN BDEA94H 1N 1C 1O 1G 250.000 5000.000 1368.000 1 + 5.89784885E+00 3.16789393E-03-1.11801064E-06 1.77243144E-10-1.04339177E-14 2 +-3.70653331E+03-6.18167825E+00 3.78604952E+00 6.88667922E-03-3.21487864E-06 3 + 5.17195767E-10 1.19360788E-14-2.82698400E+03 5.63292162E+00 4 +HNCO BDEA94H 1N 1C 1O 1G 250.000 5000.000 1478.000 1 + 6.22395134E+00 3.17864004E-03-1.09378755E-06 1.70735163E-10-9.95021955E-15 2 +-1.66599344E+04-8.38224741E+00 3.63096317E+00 7.30282357E-03-2.28050003E-06 3 +-6.61271298E-10 3.62235752E-13-1.55873636E+04 6.19457727E+00 4 +NCO EA 93 N 1C 1O 1 G 200.000 6000.000 1000.000 1 + 0.51521845E+01 0.23051761E-02-0.88033153E-06 0.14789098E-09-0.90977996E-14 2 + 0.14004123E+05-0.25442660E+01 0.28269308E+01 0.88051688E-02-0.83866134E-05 3 + 0.48016964E-08-0.13313595E-11 0.14682477E+05 0.95504646E+01 4 +CN HBH92 C 1N 1 G 200.000 6000.000 1000.000 1 + 0.37459805E+01 0.43450775E-04 0.29705984E-06-0.68651806E-10 0.44134173E-14 2 + 0.51536188E+05 0.27867601E+01 0.36129351E+01-0.95551327E-03 0.21442977E-05 3 +-0.31516323E-09-0.46430356E-12 0.51708340E+05 0.39804995E+01 4 +HCNN SRI/94C 1N 2H 1 G 250.000 5000.000 1000.000 1 + 0.58946362E+01 0.39895959E-02-0.15982380E-05 0.29249395E-09-0.20094686E-13 2 + 0.53452941E+05-0.51030502E+01 0.25243194E+01 0.15960619E-01-0.18816354E-04 3 + 0.12125540E-07-0.32357378E-11 0.54261984E+05 0.11675870E+02 4 +N2 121286N 2 G 250.000 5000.000 1000.000 1 + 0.02926640E+02 0.14879768E-02-0.05684760E-05 0.10097038E-09-0.06753351E-13 2 +-0.09227977E+04 0.05980528E+02 0.03298677E+02 0.14082404E-02-0.03963222E-04 3 + 0.05641515E-07-0.02444854E-10-0.10208999E+04 0.03950372E+02 4 +AR 120186AR 1 G 250.000 5000.000 1000.000 1 + 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 2 +-0.07453750E+04 0.04366000E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00 3 + 0.00000000E+00 0.00000000E+00-0.07453750E+04 0.04366000E+02 4 +C3H8 L 4/85C 3H 8 G 250.000 5000.000 1000.000 1 + 0.75341368E+01 0.18872239E-01-0.62718491E-05 0.91475649E-09-0.47838069E-13 2 +-0.16467516E+05-0.17892349E+02 0.93355381E+00 0.26424579E-01 0.61059727E-05 3 +-0.21977499E-07 0.95149253E-11-0.13958520E+05 0.19201691E+02 4 +C3H7 L 9/84C 3H 7 G 250.000 5000.000 1000.000 1 + 0.77026987E+01 0.16044203E-01-0.52833220E-05 0.76298590E-09-0.39392284E-13 2 + 0.82984336E+04-0.15480180E+02 0.10515518E+01 0.25991980E-01 0.23800540E-05 3 +-0.19609569E-07 0.93732470E-11 0.10631863E+05 0.21122559E+02 4 +CH3CHO L 8/88C 2H 4O 1 G 200.000 6000.000 1000.000 1 + 0.54041108E+01 0.11723059E-01-0.42263137E-05 0.68372451E-09-0.40984863E-13 2 +-0.22593122E+05-0.34807917E+01 0.47294595E+01-0.31932858E-02 0.47534921E-04 3 +-0.57458611E-07 0.21931112E-10-0.21572878E+05 0.41030159E+01 4 +CH2CHO SAND86O 1H 3C 2 G 250.000 5000.000 1000.000 1 + 0.05975670E+02 0.08130591E-01-0.02743624E-04 0.04070304E-08-0.02176017E-12 2 + 0.04903218E+04-0.05045251E+02 0.03409062E+02 0.10738574E-01 0.01891492E-04 3 +-0.07158583E-07 0.02867385E-10 0.15214766E+04 0.09558290E+02 4 +END diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/transportProperties b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..e229436fc045f5816179c0546701e8d04c87e423 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/chemkin/transportProperties @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "chemkin"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +".*" +{ + transport + { + As 1.512e-06; + Ts 120.; + } +} + +"H2" +{ + transport + { + As 6.362e-07; + Ts 72.; + } +} + +"CO2" +{ + transport + { + As 1.572e-06; + Ts 240.; + } +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties new file mode 100644 index 0000000000000000000000000000000000000000..ebd66c068f9ce9274a458934b225aeef2a9278b8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties @@ -0,0 +1,146 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver ode; + chemistryThermo psi; + TDAC on; +} + +importantSpecies +{ + CH4; + H2O; + O2; + CO2; +} + +chemistry on; + +initialChemicalTimeStep 1e-07; + +odeCoeffs +{ + solver Rosenbrock34; // Rosenbrock34, seulex or rodas23 + absTol 1e-12; + relTol 1e-7; +} + +reduction +{ + // Activate reduction + active on; + + // Switch logging of the reduction statistics and performance + log on; + + // Tolerance depends on the reduction method, see details for each method + tolerance 1e-4; + + // Available methods: DRG, DAC, DRGEP, PFA, EFA + method DAC; + + // Search initiating set (SIS) of species, needed for most methods + initialSet + { + CO; + CH4; + HO2; + } + + // For DAC, option to automatically change the SIS switch from HO2 to H2O + // and CO to CO2, + disable fuel + automaticSIS off; + + // When automaticSIS, the method needs to know the fuel + fuelSpecies + { + CH4 1; + } +} + +tabulation +{ + // Activate tabulation + active on; + + // Switch logging of the tabulation statistics and performance + log on; + + printProportion off; + + printNumRetrieve off; + + // Tolerance used for retrieve and grow + tolerance 1e-4; + + // ISAT is the only method currently available + method ISAT; + + // Scale factors used in the definition of the ellipsoid of accuracy + scaleFactor + { + otherSpecies 1; + Temperature 1000; + Pressure 1e15; + deltaT 0.5; + } + + // Maximum number of leafs stored in the binary tree + maxNLeafs 2000; + + // Maximum life time of the leafs (in time steps) used in unsteady + // simulations to force renewal of the stored chemPoints and keep the tree + // small + chPMaxLifeTime 100; + + // Maximum number of growth allowed on a chemPoint to avoid distorted + // chemPoints + maxGrowth 10; + + // Number of time steps between analysis of the tree to remove old + // chemPoints or try to balance it + checkEntireTreeInterval 5; + + // Parameters used to decide whether to balance or not if the tree's depth + // is larger than maxDepthFactor*log2(nLeafs) then balance the tree + maxDepthFactor 2; + + // Try to balance the tree only if the size of the tree is greater + minBalanceThreshold 30; + + + // Activate the use of a MRU (most recently used) list + MRURetrieve false; + + // Maximum size of the MRU list + maxMRUSize 0; + + // Allow to grow points + growPoints true; + + // When mechanism reduction is used, new dimensions might be added + // maxNumNewDim set the maximum number of new dimensions added during a + // growth + maxNumNewDim 10; + + variableTimeStep true; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties.test b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties.test new file mode 100644 index 0000000000000000000000000000000000000000..7a006f6122184d3a980dd2cfc0e4a690398588fa --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/chemistryProperties.test @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver ode; + chemistryThermo psi; + TDAC on; +} + +chemistry on; + +importantSpecies +{ + CH4; + H2O; + O2; + CO2; +} + +initialChemicalTimeStep 1e-07; + +odeCoeffs +{ + solver Rosenbrock34; // Rosenbrock34, seulex or rodas23 + absTol 1e-12; + relTol 1e-7; +} + +reduction +{ + // Activate reduction + active on; + + // Switch logging of the reduction statistics and performance + log on; + + // Tolerance depends on the reduction method, see details for each method + tolerance 1e-4; + + // Available methods: DRG, DAC, DRGEP, PFA, EFA + method DAC; + + // Search initiating set (SIS) of species, needed for most methods + initialSet + { + CO; + CH4; + HO2; + } + + // For DAC, option to automatically change the SIS switch from HO2 to H2O + // and CO to CO2, + disable fuel + automaticSIS off; + + // When automaticSIS, the method needs to know the fuel + fuelSpecies + { + CH4 1; + } +} + +tabulation +{ + // Activate tabulation + active on; + + // Switch logging of the tabulation statistics and performance + log on; + + printProportion off; + + printNumRetrieve off; + + // Tolerance used for retrieve and grow + tolerance 0.003; + + // ISAT is the only method currently available + method ISAT; + + // Scale factors used in the definition of the ellipsoid of accuracy + scaleFactor + { + otherSpecies 1; + Temperature 10000; + Pressure 1e15; + deltaT 1; + } + + // Maximum number of leafs stored in the binary tree + maxNLeafs 5000; + + // Maximum life time of the leafs (in time steps) used in unsteady + // simulations to force renewal of the stored chemPoints and keep the tree + // small + chPMaxLifeTime 1000; + + // Maximum number of growth allowed on a chemPoint to avoid distorted + // chemPoints + maxGrowth 100; + + // Number of time steps between analysis of the tree to remove old + // chemPoints or try to balance it + checkEntireTreeInterval 500; + + // Parameters used to decide whether to balance or not if the tree's depth + // is larger than maxDepthFactor*log2(nLeafs) then balance the tree + maxDepthFactor 2; + + // Try to balance the tree only if the size of the tree is greater + minBalanceThreshold 30; + + // Activate the use of a MRU (most recently used) list + MRURetrieve false; + + // Maximum size of the MRU list + maxMRUSize 0; + + // Allow to grow points + growPoints true; + + // When mechanism reduction is used, new dimensions might be added + // maxNumNewDim set the maximum number of new dimensions added during a + // growth + maxNumNewDim 10; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/combustionProperties b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/combustionProperties new file mode 100644 index 0000000000000000000000000000000000000000..22c8982b77952f078d6c39ca64d9fdc9e7deae45 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/combustionProperties @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel EDC<psiChemistryCombustion>; + +active true; + +EDCCoeffs +{ + version v2005; +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/g b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..3402aabaa7f614b7039ecb3613626a64a502a0ea --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/g @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 0 -9.81); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/reactionsGRI b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/reactionsGRI new file mode 100644 index 0000000000000000000000000000000000000000..8bd6be3583c23680c5301ff540290551ee0b7d8e --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/reactionsGRI @@ -0,0 +1,3610 @@ +elements +5 +( +O +H +C +N +Ar +) +; + +species +36 +( +H2 +H +O +O2 +OH +H2O +HO2 +H2O2 +C +CH +CH2 +CH2(S) +CH3 +CH4 +CO +CO2 +HCO +CH2O +CH2OH +CH3O +CH3OH +C2H +C2H2 +C2H3 +C2H4 +C2H5 +C2H6 +HCCO +CH2CO +HCCOH +N2 +AR +C3H7 +C3H8 +CH2CHO +CH3CHO +) +; + +reactions +{ + un-named-reaction-0 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2O = O2"; + A 1.2e+11; + beta -1; + Ta 0; + coeffs +36 +( +(H2 2.4) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 15.4) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.75) +(CO2 3.6) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.83) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-1 + { + type reversiblethirdBodyArrheniusReaction; + reaction "O + H = OH"; + A 5e+11; + beta -1; + Ta 0; + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-2 + { + type reversibleArrheniusReaction; + reaction "O + H2 = H + OH"; + A 38.7; + beta 2.7; + Ta 3149.977155; + } + un-named-reaction-3 + { + type reversibleArrheniusReaction; + reaction "O + HO2 = OH + O2"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-4 + { + type reversibleArrheniusReaction; + reaction "O + H2O2 = OH + HO2"; + A 9630; + beta 2; + Ta 2012.764955; + } + un-named-reaction-5 + { + type reversibleArrheniusReaction; + reaction "O + CH = H + CO"; + A 5.7e+10; + beta 0; + Ta 0; + } + un-named-reaction-6 + { + type reversibleArrheniusReaction; + reaction "O + CH2 = H + HCO"; + A 8e+10; + beta 0; + Ta 0; + } + un-named-reaction-7 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H2 + CO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-8 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H + HCO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-9 + { + type reversibleArrheniusReaction; + reaction "O + CH3 = H + CH2O"; + A 5.06e+10; + beta 0; + Ta 0; + } + un-named-reaction-10 + { + type reversibleArrheniusReaction; + reaction "O + CH4 = OH + CH3"; + A 1020000; + beta 1.5; + Ta 4327.444654; + } + un-named-reaction-11 + { + type reversibleArrheniusLindemannFallOffReaction; + reaction "O + CO = CO2"; + k0 + { + A 602000000; + beta 0; + Ta 1509.573717; + } + kInf + { + A 18000000; + beta 0; + Ta 1200.111105; + } + F + { + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 6) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 3.5) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.5) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-12 + { + type reversibleArrheniusReaction; + reaction "O + HCO = OH + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-13 + { + type reversibleArrheniusReaction; + reaction "O + HCO = H + CO2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-14 + { + type reversibleArrheniusReaction; + reaction "O + CH2O = OH + HCO"; + A 3.9e+10; + beta 0; + Ta 1781.296985; + } + un-named-reaction-15 + { + type reversibleArrheniusReaction; + reaction "O + CH2OH = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-16 + { + type reversibleArrheniusReaction; + reaction "O + CH3O = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-17 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH2OH"; + A 388; + beta 2.5; + Ta 1559.89284; + } + un-named-reaction-18 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH3O"; + A 130; + beta 2.5; + Ta 2515.956194; + } + un-named-reaction-19 + { + type reversibleArrheniusReaction; + reaction "O + C2H = CH + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-20 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = H + HCCO"; + A 13500; + beta 2; + Ta 956.0633538; + } + un-named-reaction-21 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = OH + C2H"; + A 4.6e+16; + beta -1.41; + Ta 14567.38636; + } + un-named-reaction-22 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = CO + CH2"; + A 6940; + beta 2; + Ta 956.0633538; + } + un-named-reaction-23 + { + type reversibleArrheniusReaction; + reaction "O + C2H3 = H + CH2CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-24 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = CH3 + HCO"; + A 12500; + beta 1.83; + Ta 110.7020725; + } + un-named-reaction-25 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = CH3 + CH2O"; + A 2.24e+10; + beta 0; + Ta 0; + } + un-named-reaction-26 + { + type reversibleArrheniusReaction; + reaction "O + C2H6 = OH + C2H5"; + A 89800; + beta 1.92; + Ta 2863.158149; + } + un-named-reaction-27 + { + type reversibleArrheniusReaction; + reaction "O + HCCO = H + 2CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-28 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = OH + HCCO"; + A 1e+10; + beta 0; + Ta 4025.529911; + } + un-named-reaction-29 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = CH2 + CO2"; + A 1750000000; + beta 0; + Ta 679.3081724; + } + un-named-reaction-30 + { + type reversibleArrheniusReaction; + reaction "O2 + CO = O + CO2"; + A 2500000000; + beta 0; + Ta 24052.54122; + } + un-named-reaction-31 + { + type reversibleArrheniusReaction; + reaction "O2 + CH2O = HO2 + HCO"; + A 1e+11; + beta 0; + Ta 20127.64955; + } + un-named-reaction-32 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + O2 = HO2"; + A 2.8e+12; + beta -0.86; + Ta 0; + coeffs +36 +( +(H2 1) +(H 1) +(O 1) +(O2 0) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 1) +(CO 0.75) +(CO2 1.5) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 1.5) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 0) +(AR 0) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-33 + { + type reversibleArrheniusReaction; + reaction "H + 2O2 = HO2 + O2"; + A 2.08e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-34 + { + type reversibleArrheniusReaction; + reaction "H + O2 + H2O = HO2 + H2O"; + A 1.126e+13; + beta -0.76; + Ta 0; + } + un-named-reaction-35 + { + type reversibleArrheniusReaction; + reaction "H + O2 + N2 = HO2 + N2"; + A 2.6e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-36 + { + type reversibleArrheniusReaction; + reaction "H + O2 + AR = HO2 + AR"; + A 7e+11; + beta -0.8; + Ta 0; + } + un-named-reaction-37 + { + type reversibleArrheniusReaction; + reaction "H + O2 = O + OH"; + A 2.65e+13; + beta -0.6707; + Ta 8574.881901; + } + un-named-reaction-38 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2H = H2"; + A 1e+12; + beta -1; + Ta 0; + coeffs +36 +( +(H2 0) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1) +(CO2 0) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.63) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-39 + { + type reversibleArrheniusReaction; + reaction "2H + H2 = 2H2"; + A 9e+10; + beta -0.6; + Ta 0; + } + un-named-reaction-40 + { + type reversibleArrheniusReaction; + reaction "2H + H2O = H2 + H2O"; + A 6e+13; + beta -1.25; + Ta 0; + } + un-named-reaction-41 + { + type reversibleArrheniusReaction; + reaction "2H + CO2 = H2 + CO2"; + A 5.5e+14; + beta -2; + Ta 0; + } + un-named-reaction-42 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + OH = H2O"; + A 2.2e+16; + beta -2; + Ta 0; + coeffs +36 +( +(H2 0.73) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 3.65) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1) +(CO2 1) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.38) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-43 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O + H2O"; + A 3970000000; + beta 0; + Ta 337.6413213; + } + un-named-reaction-44 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O2 + H2"; + A 4.48e+10; + beta 0; + Ta 537.4082431; + } + un-named-reaction-45 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = 2OH"; + A 8.4e+10; + beta 0; + Ta 319.5264367; + } + un-named-reaction-46 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = HO2 + H2"; + A 12100; + beta 2; + Ta 2616.594442; + } + un-named-reaction-47 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = OH + H2O"; + A 1e+10; + beta 0; + Ta 1811.48846; + } + un-named-reaction-48 + { + type reversibleArrheniusReaction; + reaction "H + CH = C + H2"; + A 1.65e+11; + beta 0; + Ta 0; + } + un-named-reaction-49 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2 = CH3"; + k0 + { + A 1.04e+20; + beta -2.76; + Ta 805.1059821; + } + kInf + { + A 6e+11; + beta 0; + Ta 0; + } + F + { + alpha 0.562; + Tsss 91; + Ts 5836; + Tss 8552; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-50 + { + type reversibleArrheniusReaction; + reaction "H + CH2(S) = CH + H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-51 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3 = CH4"; + k0 + { + A 2.62e+27; + beta -4.76; + Ta 1227.786623; + } + kInf + { + A 1.39e+13; + beta -0.534; + Ta 269.710504; + } + F + { + alpha 0.783; + Tsss 74; + Ts 2941; + Tss 6964; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 3) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-52 + { + type reversibleArrheniusReaction; + reaction "H + CH4 = CH3 + H2"; + A 660000; + beta 1.62; + Ta 5454.593029; + } + un-named-reaction-53 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + HCO = CH2O"; + k0 + { + A 2.47e+18; + beta -2.57; + Ta 213.8562765; + } + kInf + { + A 1090000000; + beta 0.48; + Ta -130.8297221; + } + F + { + alpha 0.7824; + Tsss 271; + Ts 2755; + Tss 6570; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-54 + { + type reversibleArrheniusReaction; + reaction "H + HCO = H2 + CO"; + A 7.34e+10; + beta 0; + Ta 0; + } + un-named-reaction-55 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH2OH"; + k0 + { + A 1.27e+26; + beta -4.82; + Ta 3285.83879; + } + kInf + { + A 540000000; + beta 0.454; + Ta 1811.48846; + } + F + { + alpha 0.7187; + Tsss 103; + Ts 1291; + Tss 4160; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-56 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH3O"; + k0 + { + A 2.2e+24; + beta -4.8; + Ta 2797.743288; + } + kInf + { + A 540000000; + beta 0.454; + Ta 1308.297221; + } + F + { + alpha 0.758; + Tsss 94; + Ts 1555; + Tss 4200; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-57 + { + type reversibleArrheniusReaction; + reaction "H + CH2O = HCO + H2"; + A 57400; + beta 1.9; + Ta 1379.750377; + } + un-named-reaction-58 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2OH = CH3OH"; + k0 + { + A 4.36e+25; + beta -4.65; + Ta 2556.211493; + } + kInf + { + A 1055000000; + beta 0.5; + Ta 43.27444654; + } + F + { + alpha 0.6; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-59 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-60 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = OH + CH3"; + A 165000000; + beta 0.65; + Ta -142.9063118; + } + un-named-reaction-61 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = CH2(S) + H2O"; + A 3.28e+10; + beta -0.09; + Ta 306.9466557; + } + un-named-reaction-62 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3O = CH3OH"; + k0 + { + A 4.66e+35; + beta -7.44; + Ta 7084.932643; + } + kInf + { + A 2430000000; + beta 0.515; + Ta 25.15956194; + } + F + { + alpha 0.7; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-63 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H + CH2OH"; + A 41500; + beta 1.63; + Ta 968.1399435; + } + un-named-reaction-64 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-65 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = OH + CH3"; + A 1500000000; + beta 0.5; + Ta -55.35103627; + } + un-named-reaction-66 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = CH2(S) + H2O"; + A 2.62e+11; + beta -0.23; + Ta 538.4146256; + } + un-named-reaction-67 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH2OH + H2"; + A 17000; + beta 2.1; + Ta 2450.541333; + } + un-named-reaction-68 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH3O + H2"; + A 4200; + beta 2.1; + Ta 2450.541333; + } + un-named-reaction-69 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H = C2H2"; + k0 + { + A 3.75e+27; + beta -4.8; + Ta 956.0633538; + } + kInf + { + A 1e+14; + beta -1; + Ta 0; + } + F + { + alpha 0.6464; + Tsss 132; + Ts 1315; + Tss 5566; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-70 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H2 = C2H3"; + k0 + { + A 3.8e+34; + beta -7.27; + Ta 3633.040744; + } + kInf + { + A 5600000000; + beta 0; + Ta 1207.658973; + } + F + { + alpha 0.7507; + Tsss 98.5; + Ts 1302; + Tss 4167; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-71 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H3 = C2H4"; + k0 + { + A 1.4e+24; + beta -3.86; + Ta 1670.594913; + } + kInf + { + A 6080000000; + beta 0.27; + Ta 140.8935469; + } + F + { + alpha 0.782; + Tsss 207.5; + Ts 2663; + Tss 6095; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-72 + { + type reversibleArrheniusReaction; + reaction "H + C2H3 = H2 + C2H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-73 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H4 = C2H5"; + k0 + { + A 6e+35; + beta -7.62; + Ta 3507.242935; + } + kInf + { + A 540000000; + beta 0.454; + Ta 915.8080547; + } + F + { + alpha 0.9753; + Tsss 210; + Ts 984; + Tss 4374; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-74 + { + type reversibleArrheniusReaction; + reaction "H + C2H4 = C2H3 + H2"; + A 1325; + beta 2.53; + Ta 6159.060763; + } + un-named-reaction-75 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H5 = C2H6"; + k0 + { + A 1.99e+35; + beta -7.08; + Ta 3363.833432; + } + kInf + { + A 5.21e+14; + beta -0.99; + Ta 795.0421574; + } + F + { + alpha 0.8422; + Tsss 125; + Ts 2219; + Tss 6882; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-76 + { + type reversibleArrheniusReaction; + reaction "H + C2H5 = H2 + C2H4"; + A 2000000000; + beta 0; + Ta 0; + } + un-named-reaction-77 + { + type reversibleArrheniusReaction; + reaction "H + C2H6 = C2H5 + H2"; + A 115000; + beta 1.9; + Ta 3789.030028; + } + un-named-reaction-78 + { + type reversibleArrheniusReaction; + reaction "H + HCCO = CH2(S) + CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-79 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = HCCO + H2"; + A 5e+10; + beta 0; + Ta 4025.529911; + } + un-named-reaction-80 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = CH3 + CO"; + A 1.13e+10; + beta 0; + Ta 1724.939567; + } + un-named-reaction-81 + { + type reversibleArrheniusReaction; + reaction "H + HCCOH = H + CH2CO"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-82 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H2 + CO = CH2O"; + k0 + { + A 5.07e+21; + beta -3.42; + Ta 42444.181; + } + kInf + { + A 43000; + beta 1.5; + Ta 40054.02261; + } + F + { + alpha 0.932; + Tsss 197; + Ts 1540; + Tss 10300; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-83 + { + type reversibleArrheniusReaction; + reaction "OH + H2 = H + H2O"; + A 216000; + beta 1.51; + Ta 1725.945949; + } + un-named-reaction-84 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2OH = H2O2"; + k0 + { + A 2.3e+12; + beta -0.9; + Ta -855.425106; + } + kInf + { + A 7.4e+10; + beta -0.37; + Ta 0; + } + F + { + alpha 0.7346; + Tsss 94; + Ts 1756; + Tss 5182; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-85 + { + type reversibleArrheniusReaction; + reaction "2OH = O + H2O"; + A 35.7; + beta 2.4; + Ta -1061.733514; + } + un-named-reaction-86 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 1.45e+10; + beta 0; + Ta -251.5956194; + } + un-named-reaction-87 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 2000000000; + beta 0; + Ta 214.862659; + } + un-named-reaction-88 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 1.7e+15; + beta 0; + Ta 14798.85433; + } + un-named-reaction-89 + { + type reversibleArrheniusReaction; + reaction "OH + C = H + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-90 + { + type reversibleArrheniusReaction; + reaction "OH + CH = H + HCO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-91 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = H + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-92 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = CH + H2O"; + A 11300; + beta 2; + Ta 1509.573717; + } + un-named-reaction-93 + { + type reversibleArrheniusReaction; + reaction "OH + CH2(S) = H + CH2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-94 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "OH + CH3 = CH3OH"; + k0 + { + A 4e+30; + beta -5.92; + Ta 1580.02049; + } + kInf + { + A 2.79e+15; + beta -1.43; + Ta 669.2443477; + } + F + { + alpha 0.412; + Tsss 195; + Ts 5900; + Tss 6394; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-95 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2 + H2O"; + A 56000; + beta 1.6; + Ta 2727.296514; + } + un-named-reaction-96 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2(S) + H2O"; + A 6.44e+14; + beta -1.34; + Ta 713.0219854; + } + un-named-reaction-97 + { + type reversibleArrheniusReaction; + reaction "OH + CH4 = CH3 + H2O"; + A 100000; + beta 1.6; + Ta 1569.956665; + } + un-named-reaction-98 + { + type reversibleArrheniusReaction; + reaction "OH + CO = H + CO2"; + A 47600; + beta 1.228; + Ta 35.22338672; + } + un-named-reaction-99 + { + type reversibleArrheniusReaction; + reaction "OH + HCO = H2O + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-100 + { + type reversibleArrheniusReaction; + reaction "OH + CH2O = HCO + H2O"; + A 3430000; + beta 1.18; + Ta -224.9264838; + } + un-named-reaction-101 + { + type reversibleArrheniusReaction; + reaction "OH + CH2OH = H2O + CH2O"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-102 + { + type reversibleArrheniusReaction; + reaction "OH + CH3O = H2O + CH2O"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-103 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH2OH + H2O"; + A 1440; + beta 2; + Ta -422.6806406; + } + un-named-reaction-104 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH3O + H2O"; + A 6300; + beta 2; + Ta 754.7868583; + } + un-named-reaction-105 + { + type reversibleArrheniusReaction; + reaction "OH + C2H = H + HCCO"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-106 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + CH2CO"; + A 2.18e-07; + beta 4.5; + Ta -503.1912388; + } + un-named-reaction-107 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + HCCOH"; + A 504; + beta 2.3; + Ta 6793.081724; + } + un-named-reaction-108 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = C2H + H2O"; + A 33700; + beta 2; + Ta 7044.677344; + } + un-named-reaction-109 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = CH3 + CO"; + A 4.83e-07; + beta 4; + Ta -1006.382478; + } + un-named-reaction-110 + { + type reversibleArrheniusReaction; + reaction "OH + C2H3 = H2O + C2H2"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-111 + { + type reversibleArrheniusReaction; + reaction "OH + C2H4 = C2H3 + H2O"; + A 3600; + beta 2; + Ta 1257.978097; + } + un-named-reaction-112 + { + type reversibleArrheniusReaction; + reaction "OH + C2H6 = C2H5 + H2O"; + A 3540; + beta 2.12; + Ta 437.7763778; + } + un-named-reaction-113 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CO = HCCO + H2O"; + A 7500000000; + beta 0; + Ta 1006.382478; + } + un-named-reaction-114 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 130000000; + beta 0; + Ta -820.2017193; + } + un-named-reaction-115 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 4.2e+11; + beta 0; + Ta 6038.294866; + } + un-named-reaction-116 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2 = OH + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-117 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = O2 + CH4"; + A 1000000000; + beta 0; + Ta 0; + } + un-named-reaction-118 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = OH + CH3O"; + A 3.78e+10; + beta 0; + Ta 0; + } + un-named-reaction-119 + { + type reversibleArrheniusReaction; + reaction "HO2 + CO = OH + CO2"; + A 1.5e+11; + beta 0; + Ta 11875.31324; + } + un-named-reaction-120 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2O = HCO + H2O2"; + A 5600; + beta 2; + Ta 6038.294866; + } + un-named-reaction-121 + { + type reversibleArrheniusReaction; + reaction "C + O2 = O + CO"; + A 5.8e+10; + beta 0; + Ta 289.8381536; + } + un-named-reaction-122 + { + type reversibleArrheniusReaction; + reaction "C + CH2 = H + C2H"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-123 + { + type reversibleArrheniusReaction; + reaction "C + CH3 = H + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-124 + { + type reversibleArrheniusReaction; + reaction "CH + O2 = O + HCO"; + A 6.71e+10; + beta 0; + Ta 0; + } + un-named-reaction-125 + { + type reversibleArrheniusReaction; + reaction "CH + H2 = H + CH2"; + A 1.08e+11; + beta 0; + Ta 1564.924753; + } + un-named-reaction-126 + { + type reversibleArrheniusReaction; + reaction "CH + H2O = H + CH2O"; + A 5710000000; + beta 0; + Ta -379.9093853; + } + un-named-reaction-127 + { + type reversibleArrheniusReaction; + reaction "CH + CH2 = H + C2H2"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-128 + { + type reversibleArrheniusReaction; + reaction "CH + CH3 = H + C2H3"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-129 + { + type reversibleArrheniusReaction; + reaction "CH + CH4 = H + C2H4"; + A 6e+10; + beta 0; + Ta 0; + } + un-named-reaction-130 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + CO = HCCO"; + k0 + { + A 2.69e+22; + beta -3.74; + Ta 974.1782384; + } + kInf + { + A 5e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.5757; + Tsss 237; + Ts 1652; + Tss 5069; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-131 + { + type reversibleArrheniusReaction; + reaction "CH + CO2 = HCO + CO"; + A 1.9e+11; + beta 0; + Ta 7946.396044; + } + un-named-reaction-132 + { + type reversibleArrheniusReaction; + reaction "CH + CH2O = H + CH2CO"; + A 9.46e+10; + beta 0; + Ta -259.143488; + } + un-named-reaction-133 + { + type reversibleArrheniusReaction; + reaction "CH + HCCO = CO + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-134 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = OH + H + CO"; + A 5000000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-135 + { + type reversibleArrheniusReaction; + reaction "CH2 + H2 = H + CH3"; + A 500; + beta 2; + Ta 3638.072657; + } + un-named-reaction-136 + { + type reversibleArrheniusReaction; + reaction "2CH2 = H2 + C2H2"; + A 1.6e+12; + beta 0; + Ta 6010.116157; + } + un-named-reaction-137 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH3 = H + C2H4"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-138 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH4 = 2CH3"; + A 2460; + beta 2; + Ta 4161.391545; + } + un-named-reaction-139 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2 + CO = CH2CO"; + k0 + { + A 2.69e+27; + beta -5.11; + Ta 3570.14184; + } + kInf + { + A 810000000; + beta 0.5; + Ta 2269.392487; + } + F + { + alpha 0.5907; + Tsss 275; + Ts 1226; + Tss 5185; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-140 + { + type reversibleArrheniusReaction; + reaction "CH2 + HCCO = C2H3 + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-141 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + N2 = CH2 + N2"; + A 1.5e+10; + beta 0; + Ta 301.9147433; + } + un-named-reaction-142 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + AR = CH2 + AR"; + A 9000000000; + beta 0; + Ta 301.9147433; + } + un-named-reaction-143 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = H + OH + CO"; + A 2.8e+10; + beta 0; + Ta 0; + } + un-named-reaction-144 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = CO + H2O"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-145 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2 = CH3 + H"; + A 7e+10; + beta 0; + Ta 0; + } + un-named-reaction-146 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2(S) + H2O = CH3OH"; + k0 + { + A 1.88e+32; + beta -6.36; + Ta 2536.083844; + } + kInf + { + A 4.82e+14; + beta -1.16; + Ta 576.1539685; + } + F + { + alpha 0.6027; + Tsss 208; + Ts 3922; + Tss 10180; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-147 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2O = CH2 + H2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-148 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH3 = H + C2H4"; + A 1.2e+10; + beta 0; + Ta -286.8190061; + } + un-named-reaction-149 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH4 = 2CH3"; + A 1.6e+10; + beta 0; + Ta -286.8190061; + } + un-named-reaction-150 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO = CH2 + CO"; + A 9000000000; + beta 0; + Ta 0; + } + un-named-reaction-151 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CH2 + CO2"; + A 7000000000; + beta 0; + Ta 0; + } + un-named-reaction-152 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CO + CH2O"; + A 1.4e+10; + beta 0; + Ta 0; + } + un-named-reaction-153 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + C2H6 = CH3 + C2H5"; + A 4e+10; + beta 0; + Ta -276.7551814; + } + un-named-reaction-154 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = O + CH3O"; + A 3.56e+10; + beta 0; + Ta 15337.26896; + } + un-named-reaction-155 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = OH + CH2O"; + A 2310000000; + beta 0; + Ta 10222.33002; + } + un-named-reaction-156 + { + type reversibleArrheniusReaction; + reaction "CH3 + H2O2 = HO2 + CH4"; + A 24.5; + beta 2.47; + Ta 2606.530617; + } + un-named-reaction-157 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2CH3 = C2H6"; + k0 + { + A 3.4e+35; + beta -7.03; + Ta 1389.814202; + } + kInf + { + A 6.77e+13; + beta -1.18; + Ta 329.0870702; + } + F + { + alpha 0.619; + Tsss 73.2; + Ts 1180; + Tss 9999; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-158 + { + type reversibleArrheniusReaction; + reaction "2CH3 = H + C2H5"; + A 6840000000; + beta 0.1; + Ta 5333.827132; + } + un-named-reaction-159 + { + type reversibleArrheniusReaction; + reaction "CH3 + HCO = CH4 + CO"; + A 2.648e+10; + beta 0; + Ta 0; + } + un-named-reaction-160 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH2O = HCO + CH4"; + A 3.32; + beta 2.81; + Ta 2948.70066; + } + un-named-reaction-161 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH2OH + CH4"; + A 30000; + beta 1.5; + Ta 5001.720914; + } + un-named-reaction-162 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH3O + CH4"; + A 10000; + beta 1.5; + Ta 5001.720914; + } + un-named-reaction-163 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H4 = C2H3 + CH4"; + A 227; + beta 2; + Ta 4629.359397; + } + un-named-reaction-164 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H6 = C2H5 + CH4"; + A 6140; + beta 1.74; + Ta 5258.348446; + } + un-named-reaction-165 + { + type reversibleArrheniusReaction; + reaction "HCO + H2O = H + CO + H2O"; + A 1.5e+15; + beta -1; + Ta 8554.25106; + } + un-named-reaction-166 + { + type reversiblethirdBodyArrheniusReaction; + reaction "HCO = H + CO"; + A 1.87e+14; + beta -1; + Ta 8554.25106; + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-167 + { + type reversibleArrheniusReaction; + reaction "HCO + O2 = HO2 + CO"; + A 1.345e+10; + beta 0; + Ta 201.2764955; + } + un-named-reaction-168 + { + type reversibleArrheniusReaction; + reaction "CH2OH + O2 = HO2 + CH2O"; + A 1.8e+10; + beta 0; + Ta 452.872115; + } + un-named-reaction-169 + { + type reversibleArrheniusReaction; + reaction "CH3O + O2 = HO2 + CH2O"; + A 4.28e-16; + beta 7.6; + Ta -1776.265073; + } + un-named-reaction-170 + { + type reversibleArrheniusReaction; + reaction "C2H + O2 = HCO + CO"; + A 1e+10; + beta 0; + Ta -379.9093853; + } + un-named-reaction-171 + { + type reversibleArrheniusReaction; + reaction "C2H + H2 = H + C2H2"; + A 56800000; + beta 0.9; + Ta 1002.860139; + } + un-named-reaction-172 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HCO + CH2O"; + A 4.58e+13; + beta -1.39; + Ta 510.7391074; + } + un-named-reaction-173 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "C2H4 = H2 + C2H2"; + k0 + { + A 1.58e+48; + beta -9.3; + Ta 49212.10316; + } + kInf + { + A 8e+12; + beta 0.44; + Ta 43661.90379; + } + F + { + alpha 0.7345; + Tsss 180; + Ts 1035; + Tss 5417; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-174 + { + type reversibleArrheniusReaction; + reaction "C2H5 + O2 = HO2 + C2H4"; + A 840000000; + beta 0; + Ta 1949.86605; + } + un-named-reaction-175 + { + type reversibleArrheniusReaction; + reaction "HCCO + O2 = OH + 2CO"; + A 3200000000; + beta 0; + Ta 429.725318; + } + un-named-reaction-176 + { + type reversibleArrheniusReaction; + reaction "2HCCO = 2CO + C2H2"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-177 + { + type irreversibleArrheniusReaction; + reaction "O + CH3 = H + H2 + CO"; + A 3.37e+10; + beta 0; + Ta 0; + } + un-named-reaction-178 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = H + CH2CHO"; + A 6700; + beta 1.83; + Ta 110.7020725; + } + un-named-reaction-179 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = H + CH3CHO"; + A 1.096e+11; + beta 0; + Ta 0; + } + un-named-reaction-180 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 5e+12; + beta 0; + Ta 8720.304169; + } + un-named-reaction-181 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3 = H2 + CH2O"; + A 8000000; + beta 0.5; + Ta -883.1006242; + } + un-named-reaction-182 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + H2 = CH3"; + k0 + { + A 4.82e+19; + beta -2.8; + Ta 296.8828309; + } + kInf + { + A 1970000000; + beta 0.43; + Ta -186.1807584; + } + F + { + alpha 0.578; + Tsss 122; + Ts 2535; + Tss 9365; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-183 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = 2H + CO2"; + A 5800000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-184 + { + type reversibleArrheniusReaction; + reaction "CH2 + O2 = O + CH2O"; + A 2400000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-185 + { + type irreversibleArrheniusReaction; + reaction "CH2 + CH2 = 2H + C2H2"; + A 2e+11; + beta 0; + Ta 5529.568524; + } + un-named-reaction-186 + { + type irreversibleArrheniusReaction; + reaction "CH2(S) + H2O = H2 + CH2O"; + A 68200000; + beta 0.25; + Ta -470.4838083; + } + un-named-reaction-187 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = O + CH2CHO"; + A 303000000; + beta 0.29; + Ta 5.535103627; + } + un-named-reaction-188 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HO2 + C2H2"; + A 1337; + beta 1.61; + Ta -193.2254357; + } + un-named-reaction-189 + { + type reversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH2CHO"; + A 2920000000; + beta 0; + Ta 909.7697598; + } + un-named-reaction-190 + { + type irreversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH3 + CO"; + A 2920000000; + beta 0; + Ta 909.7697598; + } + un-named-reaction-191 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH3CHO = HO2 + CH3 + CO"; + A 3.01e+10; + beta 0; + Ta 19699.937; + } + un-named-reaction-192 + { + type reversibleArrheniusReaction; + reaction "H + CH3CHO = CH2CHO + H2"; + A 2050000; + beta 1.16; + Ta 1210.174929; + } + un-named-reaction-193 + { + type irreversibleArrheniusReaction; + reaction "H + CH3CHO = CH3 + H2 + CO"; + A 2050000; + beta 1.16; + Ta 1210.174929; + } + un-named-reaction-194 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3CHO = CH3 + H2O + CO"; + A 23430000; + beta 0.73; + Ta -560.0518488; + } + un-named-reaction-195 + { + type irreversibleArrheniusReaction; + reaction "HO2 + CH3CHO = CH3 + H2O2 + CO"; + A 3010000000; + beta 0; + Ta 5999.549141; + } + un-named-reaction-196 + { + type irreversibleArrheniusReaction; + reaction "CH3 + CH3CHO = CH3 + CH4 + CO"; + A 2720; + beta 1.77; + Ta 2978.892134; + } + un-named-reaction-197 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2CO = CH2CHO"; + k0 + { + A 1.012e+36; + beta -7.63; + Ta 1939.299034; + } + kInf + { + A 486500000; + beta 0.422; + Ta -883.1006242; + } + F + { + alpha 0.465; + Tsss 201; + Ts 1773; + Tss 5333; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-198 + { + type irreversibleArrheniusReaction; + reaction "O + CH2CHO = H + CH2 + CO2"; + A 1.5e+11; + beta 0; + Ta 0; + } + un-named-reaction-199 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + CO + CH2O"; + A 18100000; + beta 0; + Ta 0; + } + un-named-reaction-200 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + 2HCO"; + A 23500000; + beta 0; + Ta 0; + } + un-named-reaction-201 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH3 + HCO"; + A 2.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-202 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH2CO + H2"; + A 1.1e+10; + beta 0; + Ta 0; + } + un-named-reaction-203 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = H2O + CH2CO"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-204 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = HCO + CH2OH"; + A 3.01e+10; + beta 0; + Ta 0; + } + un-named-reaction-205 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H5 = C3H8"; + k0 + { + A 2.71e+68; + beta -16.82; + Ta 6574.193535; + } + kInf + { + A 9430000000; + beta 0; + Ta 0; + } + F + { + alpha 0.1527; + Tsss 291; + Ts 2742; + Tss 7748; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-206 + { + type reversibleArrheniusReaction; + reaction "O + C3H8 = OH + C3H7"; + A 193; + beta 2.68; + Ta 1869.858644; + } + un-named-reaction-207 + { + type reversibleArrheniusReaction; + reaction "H + C3H8 = C3H7 + H2"; + A 1320; + beta 2.54; + Ta 3399.56001; + } + un-named-reaction-208 + { + type reversibleArrheniusReaction; + reaction "OH + C3H8 = C3H7 + H2O"; + A 31600; + beta 1.8; + Ta 469.9806171; + } + un-named-reaction-209 + { + type reversibleArrheniusReaction; + reaction "C3H7 + H2O2 = HO2 + C3H8"; + A 0.378; + beta 2.72; + Ta 754.7868583; + } + un-named-reaction-210 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H8 = C3H7 + CH4"; + A 0.000903; + beta 3.65; + Ta 3599.830123; + } + un-named-reaction-211 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H4 = C3H7"; + k0 + { + A 3e+57; + beta -14.6; + Ta 9142.98481; + } + kInf + { + A 2550; + beta 1.6; + Ta 2868.190061; + } + F + { + alpha 0.1894; + Tsss 277; + Ts 8748; + Tss 7891; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-212 + { + type reversibleArrheniusReaction; + reaction "O + C3H7 = C2H5 + CH2O"; + A 9.64e+10; + beta 0; + Ta 0; + } + un-named-reaction-213 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C3H7 = C3H8"; + k0 + { + A 4.42e+55; + beta -13.545; + Ta 5714.742899; + } + kInf + { + A 3.613e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.315; + Tsss 369; + Ts 3285; + Tss 6667; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-214 + { + type reversibleArrheniusReaction; + reaction "H + C3H7 = CH3 + C2H5"; + A 4060; + beta 2.19; + Ta 447.8402026; + } + un-named-reaction-215 + { + type reversibleArrheniusReaction; + reaction "OH + C3H7 = C2H5 + CH2OH"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-216 + { + type reversibleArrheniusReaction; + reaction "HO2 + C3H7 = O2 + C3H8"; + A 25500000; + beta 0.255; + Ta -474.5093382; + } + un-named-reaction-217 + { + type irreversibleArrheniusReaction; + reaction "HO2 + C3H7 = OH + C2H5 + CH2O"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-218 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H7 = 2C2H5"; + A 1.927e+10; + beta -0.32; + Ta 0; + } +} diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermo.compressibleGasGRI b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermo.compressibleGasGRI new file mode 100644 index 0000000000000000000000000000000000000000..392233e95dad42ef2a635b0471cb71d0baac2149 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermo.compressibleGasGRI @@ -0,0 +1,1390 @@ +OH +{ + specie + { + molWeight 17.00737; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.09288767 0.000548429716 1.26505228e-07 -8.79461556e-11 1.17412376e-14 3858.657 4.4766961 ); + lowCpCoeffs ( 3.99201543 -0.00240131752 4.61793841e-06 -3.88113333e-09 1.3641147e-12 3615.08056 -0.103925458 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + H 1; + } +} + +CN +{ + specie + { + molWeight 26.01785; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.7459805 4.3450775e-05 2.9705984e-07 -6.8651806e-11 4.4134173e-15 51536.188 2.7867601 ); + lowCpCoeffs ( 3.6129351 -0.00095551327 2.1442977e-06 -3.1516323e-10 -4.6430356e-13 51708.34 3.9804995 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + N 1; + } +} + +C2H3 +{ + specie + { + molWeight 27.04621; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.016724 0.0103302292 -4.68082349e-06 1.01763288e-09 -8.62607041e-14 34612.8739 7.78732378 ); + lowCpCoeffs ( 3.21246645 0.00151479162 2.59209412e-05 -3.57657847e-08 1.47150873e-11 34859.8468 8.51054025 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 3; + } +} + +N2 +{ + specie + { + molWeight 28.0134; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.0014879768 -5.68476e-07 1.0097038e-10 -6.753351e-15 -922.7977 5.980528 ); + lowCpCoeffs ( 3.298677 0.0014082404 -3.963222e-06 5.641515e-09 -2.444854e-12 -1020.8999 3.950372 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + } +} + +HOCN +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1368; + highCpCoeffs ( 5.89784885 0.00316789393 -1.11801064e-06 1.77243144e-10 -1.04339177e-14 -3706.53331 -6.18167825 ); + lowCpCoeffs ( 3.78604952 0.00688667922 -3.21487864e-06 5.17195767e-10 1.19360788e-14 -2826.984 5.63292162 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +N +{ + specie + { + molWeight 14.0067; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.4159429 0.00017489065 -1.1902369e-07 3.0226245e-11 -2.0360982e-15 56133.773 4.6496096 ); + lowCpCoeffs ( 2.5 0 0 0 0 56104.637 4.1939087 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + } +} + +C2H +{ + specie + { + molWeight 25.03027; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.16780652 0.00475221902 -1.83787077e-06 3.04190252e-10 -1.7723277e-14 67121.065 6.63589475 ); + lowCpCoeffs ( 2.88965733 0.0134099611 -2.84769501e-05 2.94791045e-08 -1.09331511e-11 66839.3932 6.22296438 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 1; + } +} + +HNO +{ + specie + { + molWeight 31.01407; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.9792509 0.0034944059 -7.8549778e-07 5.7479594e-11 -1.9335916e-16 11750.582 8.6063728 ); + lowCpCoeffs ( 4.5334916 -0.0056696171 1.8473207e-05 -1.7137094e-08 5.5454573e-12 11548.297 1.7498417 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + O 1; + } +} + +CH2CO +{ + specie + { + molWeight 42.03764; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.51129732 0.00900359745 -4.16939635e-06 9.23345882e-10 -7.94838201e-14 -7551.05311 0.632247205 ); + lowCpCoeffs ( 2.1358363 0.0181188721 -1.73947474e-05 9.34397568e-09 -2.01457615e-12 -7042.91804 12.215648 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 2; + O 1; + } +} + +CH3 +{ + specie + { + molWeight 15.03506; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.28571772 0.00723990037 -2.98714348e-06 5.95684644e-10 -4.67154394e-14 16775.5843 8.48007179 ); + lowCpCoeffs ( 3.6735904 0.00201095175 5.73021856e-06 -6.87117425e-09 2.54385734e-12 16444.9988 1.60456433 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + } +} + +C2H5 +{ + specie + { + molWeight 29.06215; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.95465642 0.0173972722 -7.98206668e-06 1.75217689e-09 -1.49641576e-13 12857.52 13.4624343 ); + lowCpCoeffs ( 4.30646568 -0.00418658892 4.97142807e-05 -5.99126606e-08 2.30509004e-11 12841.6265 4.70720924 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 5; + } +} + +C2H4 +{ + specie + { + molWeight 28.05418; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.03611116 0.0146454151 -6.71077915e-06 1.47222923e-09 -1.25706061e-13 4939.88614 10.3053693 ); + lowCpCoeffs ( 3.95920148 -0.00757052247 5.70990292e-05 -6.91588753e-08 2.69884373e-11 5089.77593 4.09733096 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 4; + } +} + +C3H8 +{ + specie + { + molWeight 44.09721; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.5341368 0.018872239 -6.2718491e-06 9.1475649e-10 -4.7838069e-14 -16467.516 -17.892349 ); + lowCpCoeffs ( 0.93355381 0.026424579 6.1059727e-06 -2.1977499e-08 9.5149253e-12 -13958.52 19.201691 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 3; + H 8; + } +} + +HCN +{ + specie + { + molWeight 27.02582; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.8022392 0.0031464228 -1.0632185e-06 1.6619757e-10 -9.799757e-15 14407.292 1.5754601 ); + lowCpCoeffs ( 2.2589886 0.01005117 -1.3351763e-05 1.0092349e-08 -3.0089028e-12 14712.633 8.9164419 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 1; + N 1; + } +} + +C2H6 +{ + specie + { + molWeight 30.07012; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.0718815 0.0216852677 -1.00256067e-05 2.21412001e-09 -1.9000289e-13 -11426.3932 15.1156107 ); + lowCpCoeffs ( 4.29142492 -0.0055015427 5.99438288e-05 -7.08466285e-08 2.68685771e-11 -11522.2055 2.66682316 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 6; + } +} + +NH3 +{ + specie + { + molWeight 17.03061; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.6344521 0.005666256 -1.7278676e-06 2.3867161e-10 -1.2578786e-14 -6544.6958 6.5662928 ); + lowCpCoeffs ( 4.2860274 -0.004660523 2.1718513e-05 -2.2808887e-08 8.2638046e-12 -6741.7285 -0.62537277 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 3; + } +} + +CO2 +{ + specie + { + molWeight 44.00995; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746029 0.00441437026 -2.21481404e-06 5.23490188e-10 -4.72084164e-14 -48759.166 2.27163806 ); + lowCpCoeffs ( 2.35677352 0.00898459677 -7.12356269e-06 2.45919022e-09 -1.43699548e-13 -48371.9697 9.90105222 ); + } + transport + { + As 1.572e-06; + Ts 240; + } + elements + { + C 1; + O 2; + } +} + +C2H2 +{ + specie + { + molWeight 26.03824; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.14756964 0.00596166664 -2.37294852e-06 4.67412171e-10 -3.61235213e-14 25935.9992 -1.23028121 ); + lowCpCoeffs ( 0.808681094 0.0233615629 -3.55171815e-05 2.80152437e-08 -8.50072974e-12 26428.9807 13.9397051 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 2; + } +} + +CH2OH +{ + specie + { + molWeight 31.03446; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.69266569 0.00864576797 -3.7510112e-06 7.87234636e-10 -6.48554201e-14 -3242.50627 5.81043215 ); + lowCpCoeffs ( 3.86388918 0.00559672304 5.93271791e-06 -1.04532012e-08 4.36967278e-12 -3193.91367 5.47302243 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + O 1; + } +} + +H2CN +{ + specie + { + molWeight 28.03379; + } + thermodynamics + { + Tlow 250; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.209703 0.0029692911 -2.8555891e-07 -1.63555e-10 3.0432589e-14 27677.109 -4.444478 ); + lowCpCoeffs ( 2.851661 0.0056952331 1.07114e-06 -1.622612e-09 -2.3511081e-13 28637.82 8.9927511 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + C 1; + N 1; + } +} + +HCCOH +{ + specie + { + molWeight 42.03764; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.9238291 0.00679236 -2.5658564e-06 4.4987841e-10 -2.9940101e-14 7264.626 -7.6017742 ); + lowCpCoeffs ( 1.2423733 0.031072201 -5.0866864e-05 4.3137131e-08 -1.4014594e-11 8031.6143 13.874319 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + O 1; + H 2; + } +} + +H2O2 +{ + specie + { + molWeight 34.01474; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.16500285 0.00490831694 -1.90139225e-06 3.71185986e-10 -2.87908305e-14 -17861.7877 2.91615662 ); + lowCpCoeffs ( 4.27611269 -0.000542822417 1.67335701e-05 -2.15770813e-08 8.62454363e-12 -17702.5821 3.43505074 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + O 2; + } +} + +HCO +{ + specie + { + molWeight 29.01852; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.77217438 0.00495695526 -2.48445613e-06 5.89161778e-10 -5.33508711e-14 4011.91815 9.79834492 ); + lowCpCoeffs ( 4.22118584 -0.00324392532 1.37799446e-05 -1.33144093e-08 4.33768865e-12 3839.56496 3.39437243 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 1; + O 1; + } +} + +NNH +{ + specie + { + molWeight 29.02137; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.7667544 0.0028915082 -1.041662e-06 1.6842594e-10 -1.0091896e-14 28650.697 4.4705067 ); + lowCpCoeffs ( 4.3446927 -0.0048497072 2.0059459e-05 -2.1726464e-08 7.9469539e-12 28791.973 2.977941 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + H 1; + } +} + +N2O +{ + specie + { + molWeight 44.0128; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.8230729 0.0026270251 -9.5850874e-07 1.6000712e-10 -9.7752303e-15 8073.4048 -2.2017207 ); + lowCpCoeffs ( 2.2571502 0.011304728 -1.3671319e-05 9.6819806e-09 -2.9307182e-12 8741.7744 10.757992 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + O 1; + } +} + +CH2(S) +{ + specie + { + molWeight 14.02709; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.29203842 0.00465588637 -2.01191947e-06 4.17906e-10 -3.39716365e-14 50925.9997 8.62650169 ); + lowCpCoeffs ( 4.19860411 -0.00236661419 8.2329622e-06 -6.68815981e-09 1.94314737e-12 50496.8163 -0.769118967 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 2; + } +} + +O2 +{ + specie + { + molWeight 31.9988; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.28253784 0.00148308754 -7.57966669e-07 2.09470555e-10 -2.16717794e-14 -1088.45772 5.45323129 ); + lowCpCoeffs ( 3.78245636 -0.00299673416 9.84730201e-06 -9.68129509e-09 3.24372837e-12 -1063.94356 3.65767573 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 2; + } +} + +CH2CHO +{ + specie + { + molWeight 43.04561; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.97567 0.008130591 -2.743624e-06 4.070304e-10 -2.176017e-14 490.3218 -5.045251 ); + lowCpCoeffs ( 3.409062 0.010738574 1.891492e-06 -7.158583e-09 2.867385e-12 1521.4766 9.55829 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + H 3; + C 2; + } +} + +HNCO +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1478; + highCpCoeffs ( 6.22395134 0.00317864004 -1.09378755e-06 1.70735163e-10 -9.95021955e-15 -16659.9344 -8.38224741 ); + lowCpCoeffs ( 3.63096317 0.00730282357 -2.28050003e-06 -6.61271298e-10 3.62235752e-13 -15587.3636 6.19457727 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +HCCO +{ + specie + { + molWeight 41.02967; + } + thermodynamics + { + Tlow 250; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.6282058 0.0040853401 -1.5934547e-06 2.8626052e-10 -1.9407832e-14 19327.215 -3.9302595 ); + lowCpCoeffs ( 2.2517214 0.017655021 -2.3729101e-05 1.7275759e-08 -5.0664811e-12 20059.449 12.490417 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 2; + O 1; + } +} + +H2 +{ + specie + { + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.3372792 -4.94024731e-05 4.99456778e-07 -1.79566394e-10 2.00255376e-14 -950.158922 -3.20502331 ); + lowCpCoeffs ( 2.34433112 0.00798052075 -1.9478151e-05 2.01572094e-08 -7.37611761e-12 -917.935173 0.683010238 ); + } + transport + { + As 6.362e-07; + Ts 72; + } + elements + { + H 2; + } +} + +NO2 +{ + specie + { + molWeight 46.0055; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.8847542 0.0021723956 -8.2806906e-07 1.574751e-10 -1.0510895e-14 2316.4983 -0.11741695 ); + lowCpCoeffs ( 3.9440312 -0.001585429 1.6657812e-05 -2.0475426e-08 7.8350564e-12 2896.6179 6.3119917 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + O 2; + } +} + +CH4 +{ + specie + { + molWeight 16.04303; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 0.074851495 0.0133909467 -5.73285809e-06 1.22292535e-09 -1.0181523e-13 -9468.34459 18.437318 ); + lowCpCoeffs ( 5.14987613 -0.0136709788 4.91800599e-05 -4.84743026e-08 1.66693956e-11 -10246.6476 -4.64130376 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 4; + } +} + +C +{ + specie + { + molWeight 12.01115; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.49266888 4.79889284e-05 -7.2433502e-08 3.74291029e-11 -4.87277893e-15 85451.2953 4.80150373 ); + lowCpCoeffs ( 2.55423955 -0.000321537724 7.33792245e-07 -7.32234889e-10 2.66521446e-13 85443.8832 4.53130848 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + } +} + +HO2 +{ + specie + { + molWeight 33.00677; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.0172109 0.00223982013 -6.3365815e-07 1.1424637e-10 -1.07908535e-14 111.856713 3.78510215 ); + lowCpCoeffs ( 4.30179801 -0.00474912051 2.11582891e-05 -2.42763894e-08 9.29225124e-12 294.80804 3.71666245 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + O 2; + } +} + +CH3CHO +{ + specie + { + molWeight 44.05358; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.4041108 0.011723059 -4.2263137e-06 6.8372451e-10 -4.0984863e-14 -22593.122 -3.4807917 ); + lowCpCoeffs ( 4.7294595 -0.0031932858 4.7534921e-05 -5.7458611e-08 2.1931112e-11 -21572.878 4.1030159 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 4; + O 1; + } +} + +C3H7 +{ + specie + { + molWeight 43.08924; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.7026987 0.016044203 -5.283322e-06 7.629859e-10 -3.9392284e-14 8298.4336 -15.48018 ); + lowCpCoeffs ( 1.0515518 0.02599198 2.380054e-06 -1.9609569e-08 9.373247e-12 10631.863 21.122559 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 3; + H 7; + } +} + +CH3OH +{ + specie + { + molWeight 32.04243; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.78970791 0.0140938292 -6.36500835e-06 1.38171085e-09 -1.1706022e-13 -25374.8747 14.5023623 ); + lowCpCoeffs ( 5.71539582 -0.0152309129 6.52441155e-05 -7.10806889e-08 2.61352698e-11 -25642.7656 -1.50409823 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 4; + O 1; + } +} + +CH2O +{ + specie + { + molWeight 30.02649; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.76069008 0.00920000082 -4.42258813e-06 1.00641212e-09 -8.8385564e-14 -13995.8323 13.656323 ); + lowCpCoeffs ( 4.79372315 -0.00990833369 3.73220008e-05 -3.79285261e-08 1.31772652e-11 -14308.9567 0.6028129 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + C 1; + O 1; + } +} + +CO +{ + specie + { + molWeight 28.01055; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.71518561 0.00206252743 -9.98825771e-07 2.30053008e-10 -2.03647716e-14 -14151.8724 7.81868772 ); + lowCpCoeffs ( 3.57953347 -0.00061035368 1.01681433e-06 9.07005884e-10 -9.04424499e-13 -14344.086 3.50840928 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + O 1; + } +} + +CH3O +{ + specie + { + molWeight 31.03446; + } + thermodynamics + { + Tlow 250; + Thigh 3000; + Tcommon 1000; + highCpCoeffs ( 3.770799 0.007871497 -2.656384e-06 3.944431e-10 -2.112616e-14 127.83252 2.929575 ); + lowCpCoeffs ( 2.106204 0.007216595 5.338472e-06 -7.377636e-09 2.07561e-12 978.6011 13.152177 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + O 1; + } +} + +O +{ + specie + { + molWeight 15.9994; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.56942078 -8.59741137e-05 4.19484589e-08 -1.00177799e-11 1.22833691e-15 29217.5791 4.78433864 ); + lowCpCoeffs ( 3.1682671 -0.00327931884 6.64306396e-06 -6.12806624e-09 2.11265971e-12 29122.2592 2.05193346 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + } +} + +HCNN +{ + specie + { + molWeight 41.03252; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.8946362 0.0039895959 -1.598238e-06 2.9249395e-10 -2.0094686e-14 53452.941 -5.1030502 ); + lowCpCoeffs ( 2.5243194 0.015960619 -1.8816354e-05 1.212554e-08 -3.2357378e-12 54261.984 11.67587 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + N 2; + H 1; + } +} + +NCO +{ + specie + { + molWeight 42.01725; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.1521845 0.0023051761 -8.8033153e-07 1.4789098e-10 -9.0977996e-15 14004.123 -2.544266 ); + lowCpCoeffs ( 2.8269308 0.0088051688 -8.3866134e-06 4.8016964e-09 -1.3313595e-12 14682.477 9.5504646 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + C 1; + O 1; + } +} + +CH2 +{ + specie + { + molWeight 14.02709; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.87410113 0.00365639292 -1.40894597e-06 2.60179549e-10 -1.87727567e-14 46263.604 6.17119324 ); + lowCpCoeffs ( 3.76267867 0.000968872143 2.79489841e-06 -3.85091153e-09 1.68741719e-12 46004.0401 1.56253185 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 2; + } +} + +HCNO +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1382; + highCpCoeffs ( 6.59860456 0.00302778626 -1.07704346e-06 1.71666528e-10 -1.01439391e-14 17966.1339 -10.3306599 ); + lowCpCoeffs ( 2.64727989 0.0127505342 -1.04794236e-05 4.41432836e-09 -7.57521466e-13 19299.0252 10.7332972 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +NH2 +{ + specie + { + molWeight 16.02264; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.8347421 0.0032073082 -9.3390804e-07 1.3702953e-10 -7.9206144e-15 22171.957 6.5204163 ); + lowCpCoeffs ( 4.2040029 -0.0021061385 7.1068348e-06 -5.6115197e-09 1.6440717e-12 21885.91 -0.14184248 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 2; + } +} + +H2O +{ + specie + { + molWeight 18.01534; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399249 0.00217691804 -1.64072518e-07 -9.7041987e-11 1.68200992e-14 -30004.2971 4.9667701 ); + lowCpCoeffs ( 4.19864056 -0.0020364341 6.52040211e-06 -5.48797062e-09 1.77197817e-12 -30293.7267 -0.849032208 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + O 1; + } +} + +NH +{ + specie + { + molWeight 15.01467; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.7836928 0.001329843 -4.2478047e-07 7.8348501e-11 -5.504447e-15 42120.848 5.7407799 ); + lowCpCoeffs ( 3.4929085 0.00031179198 -1.4890484e-06 2.4816442e-09 -1.0356967e-12 41880.629 1.8483278 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 1; + } +} + +H +{ + specie + { + molWeight 1.00797; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.50000001 -2.30842973e-11 1.61561948e-14 -4.73515235e-18 4.98197357e-22 25473.6599 -0.446682914 ); + lowCpCoeffs ( 2.5 7.05332819e-13 -1.99591964e-15 2.30081632e-18 -9.27732332e-22 25473.6599 -0.446682853 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + } +} + +AR +{ + specie + { + molWeight 39.948; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + lowCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + Ar 1; + } +} + +NO +{ + specie + { + molWeight 30.0061; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.2606056 0.0011911043 -4.2917048e-07 6.9457669e-11 -4.0336099e-15 9920.9746 6.3693027 ); + lowCpCoeffs ( 4.2184763 -0.004638976 1.1041022e-05 -9.3361354e-09 2.803577e-12 9844.623 2.2808464 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + O 1; + } +} + +CH +{ + specie + { + molWeight 13.01912; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.87846473 0.000970913681 1.44445655e-07 -1.30687849e-10 1.76079383e-14 71012.4364 5.48497999 ); + lowCpCoeffs ( 3.48981665 0.000323835541 -1.68899065e-06 3.16217327e-09 -1.40609067e-12 70797.2934 2.08401108 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 1; + } +} diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermophysicalProperties b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..92d89e9c296efafe3cff7b7497e679b70e10b24c --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/thermophysicalProperties @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + + type hePsiThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + energy sensibleEnthalpy; + equationOfState perfectGas; + specie specie; +} + +inertSpecie N2; + +chemistryReader foamChemistryReader; +foamChemistryFile "$FOAM_CASE/constant/reactionsGRI"; +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGasGRI"; + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/turbulenceProperties b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..09fccfaecfb0fe865bf180e38e83fac080a7cb61 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/constant/turbulenceProperties @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + kEpsilonCoeffs + { + Prt 0.85; + } + + turbulence on; + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/blockMeshDict b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..cfb49f89b100573c11f4929f4dd0df2ac0e5858a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/blockMeshDict @@ -0,0 +1,209 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +R1X 3.99619288633; +R2X 4.49571699712; +R3X 179.82867988473; +R4X 189.81916210055; + +R1Y 0.17447754946; +R2Y 0.19628724314; +R3Y 7.85148972576; +R4Y 8.28768359941; + +R1Ym -0.17447754946; +R2Ym -0.19628724314; +R3Ym -7.85148972576; +R4Ym -8.28768359941; + +L 1000; +Lm -20; + +vertices +( + (0 0 0) // 0 + ($R1X $R1Y 0) // 1 + ($R1X $R1Y $L) // 2 + + (0 0 $L) // 3 + ($R1X $R1Ym 0) // 4 + ($R1X $R1Ym $L) // 5 + + (0 0 $Lm) // 6 + ($R1X $R1Y $Lm) // 7 + ($R1X $R1Ym $Lm) // 8 + + ($R2X $R2Y 0) // 9 + ($R2X $R2Ym 0) // 10 + ($R2X $R2Y $L) // 11 + ($R2X $R2Ym $L) // 12 + + ($R3X $R3Y 0) // 13 + ($R3X $R3Ym 0) // 14 + ($R3X $R3Y $L) // 15 + ($R3X $R3Ym $L) // 16 + + ($R2X $R2Y $Lm) // 17 + ($R3X $R3Y $Lm) // 18 + ($R3X $R3Ym $Lm) // 19 + ($R2X $R2Ym $Lm) // 20 + + ($R4X $R4Y 0) // 21 + ($R4X $R4Ym 0) // 22 + ($R4X $R4Y $L) // 23 + ($R4X $R4Ym $L) // 24 +); + +nFuel 4; +nBurner 1; +nCoflow 30; +nExternal 2; +nLength 90; +nLengthReverse 4; + +gradingFuel 1; +gradingCoflow 6; +gradingLength 12.; +gradingLengthInverse 0.5; + +blocks +( + // Fuel + hex (6 8 7 6 0 4 1 0) ($nFuel 1 $nLengthReverse) + simpleGrading ($gradingFuel 1 $gradingLengthInverse ) + + hex (0 4 1 0 3 5 2 3) ($nFuel 1 $nLength) + simpleGrading ($gradingFuel 1 $gradingLength) + + // Wall + hex (4 10 9 1 5 12 11 2) ($nBurner 1 $nLength) + simpleGrading (1 1 $gradingLength) + + // Coflow + hex (20 19 18 17 10 14 13 9) ($nCoflow 1 $nLengthReverse) + simpleGrading ($gradingCoflow 1 $gradingLengthInverse) + hex (10 14 13 9 12 16 15 11) ($nCoflow 1 $nLength) + simpleGrading ($gradingCoflow 1 $gradingLength) + + // External wall + hex (14 22 21 13 16 24 23 15) ($nExternal 1 $nLength) + simpleGrading (1 1 $gradingLength) +); + +boundary +( + inletfuel + { + type patch; + faces + ( + (6 8 7 6) + ); + } + + inletair + { + type patch; + faces + ( + (19 20 17 18) + ); + } + + outlet + { + type patch; + faces + ( + (5 3 3 2) + (12 11 2 5) + (16 15 11 12) + (15 16 24 23) + ); + } + + axis + { + type empty; + faces + ( + (3 0 0 3) + (0 6 6 0) + ); + } + + leftside + { + type wall; + faces + ( + (14 13 21 22) + (19 18 13 14) + (23 24 22 21) + ); + } + + burnerwall + { + type wall; + faces + ( + (8 7 1 4) + (10 9 17 20) + ); + } + + burnertip + { + type wall; + faces + ( + (4 1 9 10) + ); + } + + front + { + type wedge; + faces + ( + (1 0 3 2) + (7 6 0 1) + (9 1 2 11) + (13 9 11 15) + (18 17 9 13) + (15 23 21 13) + ); + } + + back + { + type wedge; + faces + ( + (5 3 0 4) + (4 0 6 8) + (12 5 4 10) + (16 12 10 14) + (19 14 10 20) + (16 14 22 24) + ); + } +); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/controlDict b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..f10cc8d6f23a8018772c116eabeff8b94f2dc869 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/controlDict @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 10000; + +deltaT 1; + +writeControl runTime; + +writeInterval 1000; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 10; + +writeCompression no; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..5126da72cdc2ec14c654aec86ba8bd9b3f5f2b61 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method simple; + +simpleCoeffs +{ + n (1 1 6); + delta 0.001; +} + +hierarchicalCoeffs +{ + n ( 1 1 1 ); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile ""; +} + +distributed no; + +roots ( ); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSchemes b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..2cb5c52feffddf65d995b516d0919bda06a7b6b8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSchemes @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default localEuler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss limitedLinearV 1; + div(phi,Yi) Gauss limitedLinear01 1; + div(phi,h) Gauss limitedLinear 1; + div(phi,K) Gauss limitedLinear 1; + div(phid,p) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,Yi_h) Gauss limitedLinear01 1; + div(phi,k) Gauss limitedLinear 1; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSolution b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..d937a09c657f0e55f9e6a42d09c12b66c400ecbf --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/fvSolution @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "rho.*" + { + solver diagonal; + } + + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.01; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|h|k|epsilon)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(U|h|k|epsilon)Final" + { + $U; + } + + Yi + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-8; + relTol 0.1; + } +} + +PIMPLE +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 2; + nNonOrthogonalCorrectors 0; + + maxDeltaT 1e-4; + maxCo 0.25; + alphaTemp 0.05; + alphaY 0.05; + Yref + { + O2 0.1; + CH4 0.1; + } + rDeltaTSmoothingCoeff 0.05; + rDeltaTDampingCoeff 1; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/setFieldsDict b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..a808fcb280930c652fb86135b7e98fa5b22c1332 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue T 292 +); + +regions +( + boxToCell + { + box (0.002 -0.01 0.005) (0.02 0.01 0.055); + fieldValues + ( + volScalarFieldValue T 2200 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CH4 b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CH4 new file mode 100644 index 0000000000000000000000000000000000000000..26427e0dcfb1cfa2bb2c7e9be4703756c0224643 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CH4 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CH4; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletCH4 + { + type fixedValue; + value uniform 0.1561; + } + + wallOutside + { + type zeroGradient; + } + + wallTube + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + outlet + { + type zeroGradient; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO new file mode 100644 index 0000000000000000000000000000000000000000..f32cb7939dd3d62209799bc5bfe4a8ab33af3e99 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CO; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 4.07e-3; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO2 b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO2 new file mode 100644 index 0000000000000000000000000000000000000000..66ee70e11fe3f74a6576c74fa24e6f894162cb00 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/CO2 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CO2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0.1098; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/G b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/G new file mode 100644 index 0000000000000000000000000000000000000000..7bbfa1dcd0960f6b1e973af42699e90111f913af --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/G @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------* \ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object G; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 0 -3 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + ".*" + { + type MarshakRadiation; + T T; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H new file mode 100644 index 0000000000000000000000000000000000000000..373d75dfbc8abc302ef30288a7b37772d2e39aa4 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 2.48e-5; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2 b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2 new file mode 100644 index 0000000000000000000000000000000000000000..4585af1450eb1aab783820bf5f68ffc506e7bd24 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 1.29e-4; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2O b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2O new file mode 100644 index 0000000000000000000000000000000000000000..a28807dacf9951c53b5b5fd378f337282bd11819 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/H2O @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0.0942; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/N2 b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/N2 new file mode 100644 index 0000000000000000000000000000000000000000..595f14ac02c05dce1b315bd30d8a273b000d6c4f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/N2 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.77; + +boundaryField +{ + inletCH4 + { + type fixedValue; + value uniform 0.6473; + } + + wallOutside + { + type zeroGradient; + } + + wallTube + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0.7342; + } + + inletAir + { + type fixedValue; + value uniform 0.77; + } + + outlet + { + type zeroGradient; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O new file mode 100644 index 0000000000000000000000000000000000000000..3a95508a7c975e1eaa0f83c8606a9f201f0ad14f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 7.47e-4; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O2 b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O2 new file mode 100644 index 0000000000000000000000000000000000000000..3ee0311fbf7dae17d8a25d0e1c0030a483ef271b --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/O2 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.23; + +boundaryField +{ + inletCH4 + { + type fixedValue; + value uniform 0.1966; + } + + wallOutside + { + type zeroGradient; + } + + wallTube + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0.054; + } + + inletAir + { + type fixedValue; + value uniform 0.23; + } + + outlet + { + type zeroGradient; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/OH b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/OH new file mode 100644 index 0000000000000000000000000000000000000000..a0870dc29c481e8865e9654ad925be737a99221a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/OH @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object OH; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0.0028; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/T b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/T new file mode 100644 index 0000000000000000000000000000000000000000..ffdb7c65165736674727a66fac60d05f0e2ccad8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/T @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + inletCH4 + { + type fixedValue; + value uniform 294; + } + + wallOutside + { + type zeroGradient; + } + + wallTube + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 1880; + } + + inletAir + { + type fixedValue; + value uniform 291; + } + + outlet + { + type zeroGradient; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/U b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/U new file mode 100644 index 0000000000000000000000000000000000000000..242c0f22aac0874740f4876dd9c19d792dd0556f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/U @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0.9); + +boundaryField +{ + wallTube + { + type noSlip; + } + + outlet + { + type pressureInletOutletVelocity; + value $internalField; + } + + inletPilot + { + type fixedValue; + value uniform (0 0 11.4); + } + + inletAir + { + type fixedValue; + value uniform (0 0 0.9); + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform (0 0 49.6); + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/Ydefault b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/Ydefault new file mode 100644 index 0000000000000000000000000000000000000000..d479cac82cc22b77b6075f5b85e19ef63c4d4727 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/Ydefault @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type fixedValue; + value uniform 0; + } + + inletAir + { + type fixedValue; + value uniform 0; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type fixedValue; + value uniform 0; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/alphat b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/alphat new file mode 100644 index 0000000000000000000000000000000000000000..7a1fede252164bba531774f35f7c795f46f6f0b6 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/alphat @@ -0,0 +1,74 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type compressible::alphatWallFunction; + Prt 0.85; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + inletPilot + { + type calculated; + value $internalField; + } + + inletAir + { + type calculated; + value $internalField; + } + + wallOutside + { + type compressible::alphatWallFunction; + Prt 0.85; + value $internalField; + } + + inletCH4 + { + type calculated; + value $internalField; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/epsilon b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..284ef09801bc772cb348017fd37167a316c3bb52 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/epsilon @@ -0,0 +1,84 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 30000; + +boundaryField +{ + wallTube + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 30000; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.000735; + phi phi; + k k; + value uniform 1; + } + + inletAir + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.019677; + value uniform 1; + } + + wallOutside + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 30000; + } + + inletCH4 + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.000504; + phi phi; + k k; + value uniform 1; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/k b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/k new file mode 100644 index 0000000000000000000000000000000000000000..4920ea5343022118b712538f2951962a19a1f798 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/k @@ -0,0 +1,74 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 30; + +boundaryField +{ + wallTube + { + type kqRWallFunction; + value uniform 30; + } + + outlet + { + type zeroGradient; + } + + inletPilot + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.0628; + value uniform 1; + } + + inletAir + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.0471; + value uniform 1; + } + + wallOutside + { + type kqRWallFunction; + value uniform 30; + } + + inletCH4 + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.0458; + value uniform 1; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/nut b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/nut new file mode 100644 index 0000000000000000000000000000000000000000..0cffe17c0f6f95f174c792c2388005aee32c1fa1 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/nut @@ -0,0 +1,78 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallTube + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + inletPilot + { + type calculated; + value $internalField; + } + + inletAir + { + type calculated; + value $internalField; + } + + wallOutside + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value $internalField; + } + + inletCH4 + { + type calculated; + value $internalField; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/p b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/p new file mode 100644 index 0000000000000000000000000000000000000000..5a6f87e5f617174482671c2e6df3c55a5c251453 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/0.orig/p @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + wallTube + { + type zeroGradient; + } + + outlet + { + type totalPressure; + p0 $internalField; + } + + inletPilot + { + type zeroGradient; + } + + inletAir + { + type zeroGradient; + } + + wallOutside + { + type zeroGradient; + } + + inletCH4 + { + type zeroGradient; + } + + frontAndBack_pos + { + type wedge; + } + + frontAndBack_neg + { + type wedge; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allclean b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..9f691c93851e250425529116772e1d82b81075f2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +rm -rf 0 + +#------------------------------------------------------------------------------ diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allrun b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..ae405888c0b42ff0b3444c42f758f192c23cb30a --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/Allrun @@ -0,0 +1,36 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +# Set application name +application=`getApplication` + +rm -f 0 +cp -r 0.orig 0 + +runApplication chemkinToFoam \ + chemkin/grimech30.dat chemkin/thermo30.dat chemkin/transportProperties \ + constant/reactionsGRI constant/thermo.compressibleGasGRI + +runApplication blockMesh +runApplication setFields + + +# Run the application without chemistry until 1500 to let the flow field develop +foamDictionary -entry "writeInterval" -set "1500" system/controlDict +foamDictionary -entry "endTime" -set "1500" system/controlDict +foamDictionary -entry "chemistry" -set "off" constant/chemistryProperties + +runApplication $application + + +# Run with chemistry until flame reach its full size +foamDictionary -entry "writeInterval" -set "100" system/controlDict +foamDictionary -entry "endTime" -set "5000" system/controlDict +foamDictionary -entry "chemistry" -set "on" constant/chemistryProperties + +runApplication -o $application + +#------------------------------------------------------------------------------ diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/grimech30.dat b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/grimech30.dat new file mode 100644 index 0000000000000000000000000000000000000000..021f9958791a01de33f5a6770a3a01dff3b8fc36 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/grimech30.dat @@ -0,0 +1,328 @@ +! GRI-Mech Version 3.0 7/30/99 CHEMKIN-II format +! See README30 file at anonymous FTP site unix.sri.com, directory gri; +! WorldWideWeb home page http://www.me.berkeley.edu/gri_mech/ or +! through http://www.gri.org , under 'Basic Research', +! for additional information, contacts, and disclaimer +ELEMENTS +O H C N AR +END +SPECIES +H2 H O O2 OH H2O HO2 H2O2 +C CH CH2 CH2(S) CH3 CH4 CO CO2 +HCO CH2O CH2OH CH3O CH3OH C2H C2H2 C2H3 +C2H4 C2H5 C2H6 HCCO CH2CO HCCOH N2 AR +C3H7 C3H8 CH2CHO CH3CHO +END +!THERMO +! Insert GRI-Mech thermodynamics here or use in default file +!END +REACTIONS +2O+M<=>O2+M 1.200E+17 -1.000 .00 +H2/ 2.40/ H2O/15.40/ CH4/ 2.00/ CO/ 1.75/ CO2/ 3.60/ C2H6/ 3.00/ AR/ .83/ +O+H+M<=>OH+M 5.000E+17 -1.000 .00 +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+H2<=>H+OH 3.870E+04 2.700 6260.00 +O+HO2<=>OH+O2 2.000E+13 .000 .00 +O+H2O2<=>OH+HO2 9.630E+06 2.000 4000.00 +O+CH<=>H+CO 5.700E+13 .000 .00 +O+CH2<=>H+HCO 8.000E+13 .000 .00 +O+CH2(S)<=>H2+CO 1.500E+13 .000 .00 +O+CH2(S)<=>H+HCO 1.500E+13 .000 .00 +O+CH3<=>H+CH2O 5.060E+13 .000 .00 +O+CH4<=>OH+CH3 1.020E+09 1.500 8600.00 +O+CO(+M)<=>CO2(+M) 1.800E+10 .000 2385.00 + LOW/ 6.020E+14 .000 3000.00/ +H2/2.00/ O2/6.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/3.50/ C2H6/3.00/ AR/ .50/ +O+HCO<=>OH+CO 3.000E+13 .000 .00 +O+HCO<=>H+CO2 3.000E+13 .000 .00 +O+CH2O<=>OH+HCO 3.900E+13 .000 3540.00 +O+CH2OH<=>OH+CH2O 1.000E+13 .000 .00 +O+CH3O<=>OH+CH2O 1.000E+13 .000 .00 +O+CH3OH<=>OH+CH2OH 3.880E+05 2.500 3100.00 +O+CH3OH<=>OH+CH3O 1.300E+05 2.500 5000.00 +O+C2H<=>CH+CO 5.000E+13 .000 .00 +O+C2H2<=>H+HCCO 1.350E+07 2.000 1900.00 +O+C2H2<=>OH+C2H 4.600E+19 -1.410 28950.00 +O+C2H2<=>CO+CH2 6.940E+06 2.000 1900.00 +O+C2H3<=>H+CH2CO 3.000E+13 .000 .00 +O+C2H4<=>CH3+HCO 1.250E+07 1.830 220.00 +O+C2H5<=>CH3+CH2O 2.240E+13 .000 .00 +O+C2H6<=>OH+C2H5 8.980E+07 1.920 5690.00 +O+HCCO<=>H+2CO 1.000E+14 .000 .00 +O+CH2CO<=>OH+HCCO 1.000E+13 .000 8000.00 +O+CH2CO<=>CH2+CO2 1.750E+12 .000 1350.00 +O2+CO<=>O+CO2 2.500E+12 .000 47800.00 +O2+CH2O<=>HO2+HCO 1.000E+14 .000 40000.00 +H+O2+M<=>HO2+M 2.800E+18 -.860 .00 +O2/ .00/ H2O/ .00/ CO/ .75/ CO2/1.50/ C2H6/1.50/ N2/ .00/ AR/ .00/ +H+2O2<=>HO2+O2 2.080E+19 -1.240 .00 +H+O2+H2O<=>HO2+H2O 11.26E+18 -.760 .00 +H+O2+N2<=>HO2+N2 2.600E+19 -1.240 .00 +H+O2+AR<=>HO2+AR 7.000E+17 -.800 .00 +H+O2<=>O+OH 2.650E+16 -.6707 17041.00 +2H+M<=>H2+M 1.000E+18 -1.000 .00 +H2/ .00/ H2O/ .00/ CH4/2.00/ CO2/ .00/ C2H6/3.00/ AR/ .63/ +2H+H2<=>2H2 9.000E+16 -.600 .00 +2H+H2O<=>H2+H2O 6.000E+19 -1.250 .00 +2H+CO2<=>H2+CO2 5.500E+20 -2.000 .00 +H+OH+M<=>H2O+M 2.200E+22 -2.000 .00 +H2/ .73/ H2O/3.65/ CH4/2.00/ C2H6/3.00/ AR/ .38/ +H+HO2<=>O+H2O 3.970E+12 .000 671.00 +H+HO2<=>O2+H2 4.480E+13 .000 1068.00 +H+HO2<=>2OH 0.840E+14 .000 635.00 +H+H2O2<=>HO2+H2 1.210E+07 2.000 5200.00 +H+H2O2<=>OH+H2O 1.000E+13 .000 3600.00 +H+CH<=>C+H2 1.650E+14 .000 .00 +H+CH2(+M)<=>CH3(+M) 6.000E+14 .000 .00 + LOW / 1.040E+26 -2.760 1600.00/ + TROE/ .5620 91.00 5836.00 8552.00/ +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+CH2(S)<=>CH+H2 3.000E+13 .000 .00 +H+CH3(+M)<=>CH4(+M) 13.90E+15 -.534 536.00 + LOW / 2.620E+33 -4.760 2440.00/ + TROE/ .7830 74.00 2941.00 6964.00 / +H2/2.00/ H2O/6.00/ CH4/3.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+CH4<=>CH3+H2 6.600E+08 1.620 10840.00 +H+HCO(+M)<=>CH2O(+M) 1.090E+12 .480 -260.00 + LOW / 2.470E+24 -2.570 425.00/ + TROE/ .7824 271.00 2755.00 6570.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+HCO<=>H2+CO 7.340E+13 .000 .00 +H+CH2O(+M)<=>CH2OH(+M) 5.400E+11 .454 3600.00 + LOW / 1.270E+32 -4.820 6530.00/ + TROE/ .7187 103.00 1291.00 4160.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2O(+M)<=>CH3O(+M) 5.400E+11 .454 2600.00 + LOW / 2.200E+30 -4.800 5560.00/ + TROE/ .7580 94.00 1555.00 4200.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2O<=>HCO+H2 5.740E+07 1.900 2742.00 +H+CH2OH(+M)<=>CH3OH(+M) 1.055E+12 .500 86.00 + LOW / 4.360E+31 -4.650 5080.00/ + TROE/ .600 100.00 90000.0 10000.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH2OH<=>H2+CH2O 2.000E+13 .000 .00 +H+CH2OH<=>OH+CH3 1.650E+11 .650 -284.00 +H+CH2OH<=>CH2(S)+H2O 3.280E+13 -.090 610.00 +H+CH3O(+M)<=>CH3OH(+M) 2.430E+12 .515 50.00 + LOW / 4.660E+41 -7.440 14080.0/ + TROE/ .700 100.00 90000.0 10000.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +H+CH3O<=>H+CH2OH 4.150E+07 1.630 1924.00 +H+CH3O<=>H2+CH2O 2.000E+13 .000 .00 +H+CH3O<=>OH+CH3 1.500E+12 .500 -110.00 +H+CH3O<=>CH2(S)+H2O 2.620E+14 -.230 1070.00 +H+CH3OH<=>CH2OH+H2 1.700E+07 2.100 4870.00 +H+CH3OH<=>CH3O+H2 4.200E+06 2.100 4870.00 +H+C2H(+M)<=>C2H2(+M) 1.000E+17 -1.000 .00 + LOW / 3.750E+33 -4.800 1900.00/ + TROE/ .6464 132.00 1315.00 5566.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H2(+M)<=>C2H3(+M) 5.600E+12 .000 2400.00 + LOW / 3.800E+40 -7.270 7220.00/ + TROE/ .7507 98.50 1302.00 4167.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H3(+M)<=>C2H4(+M) 6.080E+12 .270 280.00 + LOW / 1.400E+30 -3.860 3320.00/ + TROE/ .7820 207.50 2663.00 6095.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H3<=>H2+C2H2 3.000E+13 .000 .00 +H+C2H4(+M)<=>C2H5(+M) 0.540E+12 .454 1820.00 + LOW / 0.600E+42 -7.620 6970.00/ + TROE/ .9753 210.00 984.00 4374.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H4<=>C2H3+H2 1.325E+06 2.530 12240.00 +H+C2H5(+M)<=>C2H6(+M) 5.210E+17 -.990 1580.00 + LOW / 1.990E+41 -7.080 6685.00/ + TROE/ .8422 125.00 2219.00 6882.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C2H5<=>H2+C2H4 2.000E+12 .000 .00 +H+C2H6<=>C2H5+H2 1.150E+08 1.900 7530.00 +H+HCCO<=>CH2(S)+CO 1.000E+14 .000 .00 +H+CH2CO<=>HCCO+H2 5.000E+13 .000 8000.00 +H+CH2CO<=>CH3+CO 1.130E+13 .000 3428.00 +H+HCCOH<=>H+CH2CO 1.000E+13 .000 .00 +H2+CO(+M)<=>CH2O(+M) 4.300E+07 1.500 79600.00 + LOW / 5.070E+27 -3.420 84350.00/ + TROE/ .9320 197.00 1540.00 10300.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +OH+H2<=>H+H2O 2.160E+08 1.510 3430.00 +2OH(+M)<=>H2O2(+M) 7.400E+13 -.370 .00 + LOW / 2.300E+18 -.900 -1700.00/ + TROE/ .7346 94.00 1756.00 5182.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +2OH<=>O+H2O 3.570E+04 2.400 -2110.00 +OH+HO2<=>O2+H2O 1.450E+13 .000 -500.00 + DUPLICATE +OH+H2O2<=>HO2+H2O 2.000E+12 .000 427.00 + DUPLICATE +OH+H2O2<=>HO2+H2O 1.700E+18 .000 29410.00 + DUPLICATE +OH+C<=>H+CO 5.000E+13 .000 .00 +OH+CH<=>H+HCO 3.000E+13 .000 .00 +OH+CH2<=>H+CH2O 2.000E+13 .000 .00 +OH+CH2<=>CH+H2O 1.130E+07 2.000 3000.00 +OH+CH2(S)<=>H+CH2O 3.000E+13 .000 .00 +OH+CH3(+M)<=>CH3OH(+M) 2.790E+18 -1.430 1330.00 + LOW / 4.000E+36 -5.920 3140.00/ + TROE/ .4120 195.0 5900.00 6394.00/ +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +OH+CH3<=>CH2+H2O 5.600E+07 1.600 5420.00 +OH+CH3<=>CH2(S)+H2O 6.440E+17 -1.340 1417.00 +OH+CH4<=>CH3+H2O 1.000E+08 1.600 3120.00 +OH+CO<=>H+CO2 4.760E+07 1.228 70.00 +OH+HCO<=>H2O+CO 5.000E+13 .000 .00 +OH+CH2O<=>HCO+H2O 3.430E+09 1.180 -447.00 +OH+CH2OH<=>H2O+CH2O 5.000E+12 .000 .00 +OH+CH3O<=>H2O+CH2O 5.000E+12 .000 .00 +OH+CH3OH<=>CH2OH+H2O 1.440E+06 2.000 -840.00 +OH+CH3OH<=>CH3O+H2O 6.300E+06 2.000 1500.00 +OH+C2H<=>H+HCCO 2.000E+13 .000 .00 +OH+C2H2<=>H+CH2CO 2.180E-04 4.500 -1000.00 +OH+C2H2<=>H+HCCOH 5.040E+05 2.300 13500.00 +OH+C2H2<=>C2H+H2O 3.370E+07 2.000 14000.00 +OH+C2H2<=>CH3+CO 4.830E-04 4.000 -2000.00 +OH+C2H3<=>H2O+C2H2 5.000E+12 .000 .00 +OH+C2H4<=>C2H3+H2O 3.600E+06 2.000 2500.00 +OH+C2H6<=>C2H5+H2O 3.540E+06 2.120 870.00 +OH+CH2CO<=>HCCO+H2O 7.500E+12 .000 2000.00 +2HO2<=>O2+H2O2 1.300E+11 .000 -1630.00 + DUPLICATE +2HO2<=>O2+H2O2 4.200E+14 .000 12000.00 + DUPLICATE +HO2+CH2<=>OH+CH2O 2.000E+13 .000 .00 +HO2+CH3<=>O2+CH4 1.000E+12 .000 .00 +HO2+CH3<=>OH+CH3O 3.780E+13 .000 .00 +HO2+CO<=>OH+CO2 1.500E+14 .000 23600.00 +HO2+CH2O<=>HCO+H2O2 5.600E+06 2.000 12000.00 +C+O2<=>O+CO 5.800E+13 .000 576.00 +C+CH2<=>H+C2H 5.000E+13 .000 .00 +C+CH3<=>H+C2H2 5.000E+13 .000 .00 +CH+O2<=>O+HCO 6.710E+13 .000 .00 +CH+H2<=>H+CH2 1.080E+14 .000 3110.00 +CH+H2O<=>H+CH2O 5.710E+12 .000 -755.00 +CH+CH2<=>H+C2H2 4.000E+13 .000 .00 +CH+CH3<=>H+C2H3 3.000E+13 .000 .00 +CH+CH4<=>H+C2H4 6.000E+13 .000 .00 +CH+CO(+M)<=>HCCO(+M) 5.000E+13 .000 .00 + LOW / 2.690E+28 -3.740 1936.00/ + TROE/ .5757 237.00 1652.00 5069.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH+CO2<=>HCO+CO 1.900E+14 .000 15792.00 +CH+CH2O<=>H+CH2CO 9.460E+13 .000 -515.00 +CH+HCCO<=>CO+C2H2 5.000E+13 .000 .00 +CH2+O2=>OH+H+CO 5.000E+12 .000 1500.00 +CH2+H2<=>H+CH3 5.000E+05 2.000 7230.00 +2CH2<=>H2+C2H2 1.600E+15 .000 11944.00 +CH2+CH3<=>H+C2H4 4.000E+13 .000 .00 +CH2+CH4<=>2CH3 2.460E+06 2.000 8270.00 +CH2+CO(+M)<=>CH2CO(+M) 8.100E+11 .500 4510.00 + LOW / 2.690E+33 -5.110 7095.00/ + TROE/ .5907 275.00 1226.00 5185.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH2+HCCO<=>C2H3+CO 3.000E+13 .000 .00 +CH2(S)+N2<=>CH2+N2 1.500E+13 .000 600.00 +CH2(S)+AR<=>CH2+AR 9.000E+12 .000 600.00 +CH2(S)+O2<=>H+OH+CO 2.800E+13 .000 .00 +CH2(S)+O2<=>CO+H2O 1.200E+13 .000 .00 +CH2(S)+H2<=>CH3+H 7.000E+13 .000 .00 +CH2(S)+H2O(+M)<=>CH3OH(+M) 4.820E+17 -1.160 1145.00 + LOW / 1.880E+38 -6.360 5040.00/ + TROE/ .6027 208.00 3922.00 10180.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +CH2(S)+H2O<=>CH2+H2O 3.000E+13 .000 .00 +CH2(S)+CH3<=>H+C2H4 1.200E+13 .000 -570.00 +CH2(S)+CH4<=>2CH3 1.600E+13 .000 -570.00 +CH2(S)+CO<=>CH2+CO 9.000E+12 .000 .00 +CH2(S)+CO2<=>CH2+CO2 7.000E+12 .000 .00 +CH2(S)+CO2<=>CO+CH2O 1.400E+13 .000 .00 +CH2(S)+C2H6<=>CH3+C2H5 4.000E+13 .000 -550.00 +CH3+O2<=>O+CH3O 3.560E+13 .000 30480.00 +CH3+O2<=>OH+CH2O 2.310E+12 .000 20315.00 +CH3+H2O2<=>HO2+CH4 2.450E+04 2.470 5180.00 +2CH3(+M)<=>C2H6(+M) 6.770E+16 -1.180 654.00 + LOW / 3.400E+41 -7.030 2762.00/ + TROE/ .6190 73.20 1180.00 9999.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +2CH3<=>H+C2H5 6.840E+12 .100 10600.00 +CH3+HCO<=>CH4+CO 2.648E+13 .000 .00 +CH3+CH2O<=>HCO+CH4 3.320E+03 2.810 5860.00 +CH3+CH3OH<=>CH2OH+CH4 3.000E+07 1.500 9940.00 +CH3+CH3OH<=>CH3O+CH4 1.000E+07 1.500 9940.00 +CH3+C2H4<=>C2H3+CH4 2.270E+05 2.000 9200.00 +CH3+C2H6<=>C2H5+CH4 6.140E+06 1.740 10450.00 +HCO+H2O<=>H+CO+H2O 1.500E+18 -1.000 17000.00 +HCO+M<=>H+CO+M 1.870E+17 -1.000 17000.00 +H2/2.00/ H2O/ .00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ +HCO+O2<=>HO2+CO 13.45E+12 .000 400.00 +CH2OH+O2<=>HO2+CH2O 1.800E+13 .000 900.00 +CH3O+O2<=>HO2+CH2O 4.280E-13 7.600 -3530.00 +C2H+O2<=>HCO+CO 1.000E+13 .000 -755.00 +C2H+H2<=>H+C2H2 5.680E+10 0.900 1993.00 +C2H3+O2<=>HCO+CH2O 4.580E+16 -1.390 1015.00 +C2H4(+M)<=>H2+C2H2(+M) 8.000E+12 .440 86770.00 + LOW / 1.580E+51 -9.300 97800.00/ + TROE/ .7345 180.00 1035.00 5417.00 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +C2H5+O2<=>HO2+C2H4 8.400E+11 .000 3875.00 +HCCO+O2<=>OH+2CO 3.200E+12 .000 854.00 +2HCCO<=>2CO+C2H2 1.000E+13 .000 .00 +O+CH3=>H+H2+CO 3.370E+13 .000 .00 +O+C2H4<=>H+CH2CHO 6.700E+06 1.830 220.00 +O+C2H5<=>H+CH3CHO 1.096E+14 .000 .00 +OH+HO2<=>O2+H2O 0.500E+16 .000 17330.00 + DUPLICATE +OH+CH3=>H2+CH2O 8.000E+09 .500 -1755.00 +CH+H2(+M)<=>CH3(+M) 1.970E+12 .430 -370.00 + LOW/ 4.820E+25 -2.80 590.0 / + TROE/ .578 122.0 2535.0 9365.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +CH2+O2=>2H+CO2 5.800E+12 .000 1500.00 +CH2+O2<=>O+CH2O 2.400E+12 .000 1500.00 +CH2+CH2=>2H+C2H2 2.000E+14 .000 10989.00 +CH2(S)+H2O=>H2+CH2O 6.820E+10 .250 -935.00 +C2H3+O2<=>O+CH2CHO 3.030E+11 .290 11.00 +C2H3+O2<=>HO2+C2H2 1.337E+06 1.610 -384.00 +O+CH3CHO<=>OH+CH2CHO 2.920E+12 .000 1808.00 +O+CH3CHO=>OH+CH3+CO 2.920E+12 .000 1808.00 +O2+CH3CHO=>HO2+CH3+CO 3.010E+13 .000 39150.00 +H+CH3CHO<=>CH2CHO+H2 2.050E+09 1.160 2405.00 +H+CH3CHO=>CH3+H2+CO 2.050E+09 1.160 2405.00 +OH+CH3CHO=>CH3+H2O+CO 2.343E+10 0.730 -1113.00 +HO2+CH3CHO=>CH3+H2O2+CO 3.010E+12 .000 11923.00 +CH3+CH3CHO=>CH3+CH4+CO 2.720E+06 1.770 5920.00 +H+CH2CO(+M)<=>CH2CHO(+M) 4.865E+11 0.422 -1755.00 + LOW/ 1.012E+42 -7.63 3854.0/ + TROE/ 0.465 201.0 1773.0 5333.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+CH2CHO=>H+CH2+CO2 1.500E+14 .000 .00 +O2+CH2CHO=>OH+CO+CH2O 1.810E+10 .000 .00 +O2+CH2CHO=>OH+2HCO 2.350E+10 .000 .00 +H+CH2CHO<=>CH3+HCO 2.200E+13 .000 .00 +H+CH2CHO<=>CH2CO+H2 1.100E+13 .000 .00 +OH+CH2CHO<=>H2O+CH2CO 1.200E+13 .000 .00 +OH+CH2CHO<=>HCO+CH2OH 3.010E+13 .000 .00 +CH3+C2H5(+M)<=>C3H8(+M) .9430E+13 .000 .00 + LOW/ 2.710E+74 -16.82 13065.0 / + TROE/ .1527 291.0 2742.0 7748.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+C3H8<=>OH+C3H7 1.930E+05 2.680 3716.00 +H+C3H8<=>C3H7+H2 1.320E+06 2.540 6756.00 +OH+C3H8<=>C3H7+H2O 3.160E+07 1.800 934.00 +C3H7+H2O2<=>HO2+C3H8 3.780E+02 2.720 1500.00 +CH3+C3H8<=>C3H7+CH4 0.903E+00 3.650 7154.00 +CH3+C2H4(+M)<=>C3H7(+M) 2.550E+06 1.600 5700.00 + LOW/ 3.00E+63 -14.6 18170./ + TROE/ .1894 277.0 8748.0 7891.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +O+C3H7<=>C2H5+CH2O 9.640E+13 .000 .00 +H+C3H7(+M)<=>C3H8(+M) 3.613E+13 .000 .00 + LOW/ 4.420E+61 -13.545 11357.0/ + TROE/ .315 369.0 3285.0 6667.0 / +H2/2.00/ H2O/6.00/ CH4/2.00/ CO/1.50/ CO2/2.00/ C2H6/3.00/ AR/ .70/ +H+C3H7<=>CH3+C2H5 4.060E+06 2.190 890.00 +OH+C3H7<=>C2H5+CH2OH 2.410E+13 .000 .00 +HO2+C3H7<=>O2+C3H8 2.550E+10 0.255 -943.00 +HO2+C3H7=>OH+C2H5+CH2O 2.410E+13 .000 .00 +CH3+C3H7<=>2C2H5 1.927E+13 -0.320 .00 +END diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/thermo30.dat b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/thermo30.dat new file mode 100644 index 0000000000000000000000000000000000000000..89e7122c35f3dc32984fc9c4809b0fdaa8d2e9b2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/thermo30.dat @@ -0,0 +1,218 @@ +THERMO ALL + 250.000 1000.000 5000.000 +! GRI-Mech Version 3.0 Thermodynamics released 7/30/99 +! NASA Polynomial format for CHEMKIN-II +! see README file for disclaimer +O L 1/90O 1 G 200.000 3500.000 1000.000 1 + 2.56942078E+00-8.59741137E-05 4.19484589E-08-1.00177799E-11 1.22833691E-15 2 + 2.92175791E+04 4.78433864E+00 3.16826710E+00-3.27931884E-03 6.64306396E-06 3 +-6.12806624E-09 2.11265971E-12 2.91222592E+04 2.05193346E+00 4 +O2 TPIS89O 2 G 200.000 3500.000 1000.000 1 + 3.28253784E+00 1.48308754E-03-7.57966669E-07 2.09470555E-10-2.16717794E-14 2 +-1.08845772E+03 5.45323129E+00 3.78245636E+00-2.99673416E-03 9.84730201E-06 3 +-9.68129509E-09 3.24372837E-12-1.06394356E+03 3.65767573E+00 4 +H L 7/88H 1 G 200.000 3500.000 1000.000 1 + 2.50000001E+00-2.30842973E-11 1.61561948E-14-4.73515235E-18 4.98197357E-22 2 + 2.54736599E+04-4.46682914E-01 2.50000000E+00 7.05332819E-13-1.99591964E-15 3 + 2.30081632E-18-9.27732332E-22 2.54736599E+04-4.46682853E-01 4 +H2 TPIS78H 2 G 200.000 3500.000 1000.000 1 + 3.33727920E+00-4.94024731E-05 4.99456778E-07-1.79566394E-10 2.00255376E-14 2 +-9.50158922E+02-3.20502331E+00 2.34433112E+00 7.98052075E-03-1.94781510E-05 3 + 2.01572094E-08-7.37611761E-12-9.17935173E+02 6.83010238E-01 4 +OH RUS 78O 1H 1 G 200.000 3500.000 1000.000 1 + 3.09288767E+00 5.48429716E-04 1.26505228E-07-8.79461556E-11 1.17412376E-14 2 + 3.85865700E+03 4.47669610E+00 3.99201543E+00-2.40131752E-03 4.61793841E-06 3 +-3.88113333E-09 1.36411470E-12 3.61508056E+03-1.03925458E-01 4 +H2O L 8/89H 2O 1 G 200.000 3500.000 1000.000 1 + 3.03399249E+00 2.17691804E-03-1.64072518E-07-9.70419870E-11 1.68200992E-14 2 +-3.00042971E+04 4.96677010E+00 4.19864056E+00-2.03643410E-03 6.52040211E-06 3 +-5.48797062E-09 1.77197817E-12-3.02937267E+04-8.49032208E-01 4 +HO2 L 5/89H 1O 2 G 200.000 3500.000 1000.000 1 + 4.01721090E+00 2.23982013E-03-6.33658150E-07 1.14246370E-10-1.07908535E-14 2 + 1.11856713E+02 3.78510215E+00 4.30179801E+00-4.74912051E-03 2.11582891E-05 3 +-2.42763894E-08 9.29225124E-12 2.94808040E+02 3.71666245E+00 4 +H2O2 L 7/88H 2O 2 G 200.000 3500.000 1000.000 1 + 4.16500285E+00 4.90831694E-03-1.90139225E-06 3.71185986E-10-2.87908305E-14 2 +-1.78617877E+04 2.91615662E+00 4.27611269E+00-5.42822417E-04 1.67335701E-05 3 +-2.15770813E-08 8.62454363E-12-1.77025821E+04 3.43505074E+00 4 +C L11/88C 1 G 200.000 3500.000 1000.000 1 + 2.49266888E+00 4.79889284E-05-7.24335020E-08 3.74291029E-11-4.87277893E-15 2 + 8.54512953E+04 4.80150373E+00 2.55423955E+00-3.21537724E-04 7.33792245E-07 3 +-7.32234889E-10 2.66521446E-13 8.54438832E+04 4.53130848E+00 4 +CH TPIS79C 1H 1 G 200.000 3500.000 1000.000 1 + 2.87846473E+00 9.70913681E-04 1.44445655E-07-1.30687849E-10 1.76079383E-14 2 + 7.10124364E+04 5.48497999E+00 3.48981665E+00 3.23835541E-04-1.68899065E-06 3 + 3.16217327E-09-1.40609067E-12 7.07972934E+04 2.08401108E+00 4 +CH2 L S/93C 1H 2 G 200.000 3500.000 1000.000 1 + 2.87410113E+00 3.65639292E-03-1.40894597E-06 2.60179549E-10-1.87727567E-14 2 + 4.62636040E+04 6.17119324E+00 3.76267867E+00 9.68872143E-04 2.79489841E-06 3 +-3.85091153E-09 1.68741719E-12 4.60040401E+04 1.56253185E+00 4 +CH2(S) L S/93C 1H 2 G 200.000 3500.000 1000.000 1 + 2.29203842E+00 4.65588637E-03-2.01191947E-06 4.17906000E-10-3.39716365E-14 2 + 5.09259997E+04 8.62650169E+00 4.19860411E+00-2.36661419E-03 8.23296220E-06 3 +-6.68815981E-09 1.94314737E-12 5.04968163E+04-7.69118967E-01 4 +CH3 L11/89C 1H 3 G 200.000 3500.000 1000.000 1 + 2.28571772E+00 7.23990037E-03-2.98714348E-06 5.95684644E-10-4.67154394E-14 2 + 1.67755843E+04 8.48007179E+00 3.67359040E+00 2.01095175E-03 5.73021856E-06 3 +-6.87117425E-09 2.54385734E-12 1.64449988E+04 1.60456433E+00 4 +CH4 L 8/88C 1H 4 G 200.000 3500.000 1000.000 1 + 7.48514950E-02 1.33909467E-02-5.73285809E-06 1.22292535E-09-1.01815230E-13 2 +-9.46834459E+03 1.84373180E+01 5.14987613E+00-1.36709788E-02 4.91800599E-05 3 +-4.84743026E-08 1.66693956E-11-1.02466476E+04-4.64130376E+00 4 +CO TPIS79C 1O 1 G 200.000 3500.000 1000.000 1 + 2.71518561E+00 2.06252743E-03-9.98825771E-07 2.30053008E-10-2.03647716E-14 2 +-1.41518724E+04 7.81868772E+00 3.57953347E+00-6.10353680E-04 1.01681433E-06 3 + 9.07005884E-10-9.04424499E-13-1.43440860E+04 3.50840928E+00 4 +CO2 L 7/88C 1O 2 G 200.000 3500.000 1000.000 1 + 3.85746029E+00 4.41437026E-03-2.21481404E-06 5.23490188E-10-4.72084164E-14 2 +-4.87591660E+04 2.27163806E+00 2.35677352E+00 8.98459677E-03-7.12356269E-06 3 + 2.45919022E-09-1.43699548E-13-4.83719697E+04 9.90105222E+00 4 +HCO L12/89H 1C 1O 1 G 200.000 3500.000 1000.000 1 + 2.77217438E+00 4.95695526E-03-2.48445613E-06 5.89161778E-10-5.33508711E-14 2 + 4.01191815E+03 9.79834492E+00 4.22118584E+00-3.24392532E-03 1.37799446E-05 3 +-1.33144093E-08 4.33768865E-12 3.83956496E+03 3.39437243E+00 4 +CH2O L 8/88H 2C 1O 1 G 200.000 3500.000 1000.000 1 + 1.76069008E+00 9.20000082E-03-4.42258813E-06 1.00641212E-09-8.83855640E-14 2 +-1.39958323E+04 1.36563230E+01 4.79372315E+00-9.90833369E-03 3.73220008E-05 3 +-3.79285261E-08 1.31772652E-11-1.43089567E+04 6.02812900E-01 4 +CH2OH GUNL93C 1H 3O 1 G 200.000 3500.000 1000.000 1 + 3.69266569E+00 8.64576797E-03-3.75101120E-06 7.87234636E-10-6.48554201E-14 2 +-3.24250627E+03 5.81043215E+00 3.86388918E+00 5.59672304E-03 5.93271791E-06 3 +-1.04532012E-08 4.36967278E-12-3.19391367E+03 5.47302243E+00 4 +CH3O 121686C 1H 3O 1 G 250.00 3000.00 1000.000 1 + 0.03770799E+02 0.07871497E-01-0.02656384E-04 0.03944431E-08-0.02112616E-12 2 + 0.12783252E+03 0.02929575E+02 0.02106204E+02 0.07216595E-01 0.05338472E-04 3 +-0.07377636E-07 0.02075610E-10 0.09786011E+04 0.13152177E+02 4 +CH3OH L 8/88C 1H 4O 1 G 200.000 3500.000 1000.000 1 + 1.78970791E+00 1.40938292E-02-6.36500835E-06 1.38171085E-09-1.17060220E-13 2 +-2.53748747E+04 1.45023623E+01 5.71539582E+00-1.52309129E-02 6.52441155E-05 3 +-7.10806889E-08 2.61352698E-11-2.56427656E+04-1.50409823E+00 4 +C2H L 1/91C 2H 1 G 200.000 3500.000 1000.000 1 + 3.16780652E+00 4.75221902E-03-1.83787077E-06 3.04190252E-10-1.77232770E-14 2 + 6.71210650E+04 6.63589475E+00 2.88965733E+00 1.34099611E-02-2.84769501E-05 3 + 2.94791045E-08-1.09331511E-11 6.68393932E+04 6.22296438E+00 4 +C2H2 L 1/91C 2H 2 G 200.000 3500.000 1000.000 1 + 4.14756964E+00 5.96166664E-03-2.37294852E-06 4.67412171E-10-3.61235213E-14 2 + 2.59359992E+04-1.23028121E+00 8.08681094E-01 2.33615629E-02-3.55171815E-05 3 + 2.80152437E-08-8.50072974E-12 2.64289807E+04 1.39397051E+01 4 +C2H3 L 2/92C 2H 3 G 200.000 3500.000 1000.000 1 + 3.01672400E+00 1.03302292E-02-4.68082349E-06 1.01763288E-09-8.62607041E-14 2 + 3.46128739E+04 7.78732378E+00 3.21246645E+00 1.51479162E-03 2.59209412E-05 3 +-3.57657847E-08 1.47150873E-11 3.48598468E+04 8.51054025E+00 4 +C2H4 L 1/91C 2H 4 G 200.000 3500.000 1000.000 1 + 2.03611116E+00 1.46454151E-02-6.71077915E-06 1.47222923E-09-1.25706061E-13 2 + 4.93988614E+03 1.03053693E+01 3.95920148E+00-7.57052247E-03 5.70990292E-05 3 +-6.91588753E-08 2.69884373E-11 5.08977593E+03 4.09733096E+00 4 +C2H5 L12/92C 2H 5 G 200.000 3500.000 1000.000 1 + 1.95465642E+00 1.73972722E-02-7.98206668E-06 1.75217689E-09-1.49641576E-13 2 + 1.28575200E+04 1.34624343E+01 4.30646568E+00-4.18658892E-03 4.97142807E-05 3 +-5.99126606E-08 2.30509004E-11 1.28416265E+04 4.70720924E+00 4 +C2H6 L 8/88C 2H 6 G 200.000 3500.000 1000.000 1 + 1.07188150E+00 2.16852677E-02-1.00256067E-05 2.21412001E-09-1.90002890E-13 2 +-1.14263932E+04 1.51156107E+01 4.29142492E+00-5.50154270E-03 5.99438288E-05 3 +-7.08466285E-08 2.68685771E-11-1.15222055E+04 2.66682316E+00 4 +CH2CO L 5/90C 2H 2O 1 G 200.000 3500.000 1000.000 1 + 4.51129732E+00 9.00359745E-03-4.16939635E-06 9.23345882E-10-7.94838201E-14 2 +-7.55105311E+03 6.32247205E-01 2.13583630E+00 1.81188721E-02-1.73947474E-05 3 + 9.34397568E-09-2.01457615E-12-7.04291804E+03 1.22156480E+01 4 +HCCO SRIC91H 1C 2O 1 G 250.00 4000.00 1000.000 1 + 0.56282058E+01 0.40853401E-02-0.15934547E-05 0.28626052E-09-0.19407832E-13 2 + 0.19327215E+05-0.39302595E+01 0.22517214E+01 0.17655021E-01-0.23729101E-04 3 + 0.17275759E-07-0.50664811E-11 0.20059449E+05 0.12490417E+02 4 +HCCOH SRI91C 2O 1H 2 G 250.000 5000.000 1000.000 1 + 0.59238291E+01 0.67923600E-02-0.25658564E-05 0.44987841E-09-0.29940101E-13 2 + 0.72646260E+04-0.76017742E+01 0.12423733E+01 0.31072201E-01-0.50866864E-04 3 + 0.43137131E-07-0.14014594E-10 0.80316143E+04 0.13874319E+02 4 +H2CN 41687H 2C 1N 1 G 250.00 4000.000 1000.000 1 + 0.52097030E+01 0.29692911E-02-0.28555891E-06-0.16355500E-09 0.30432589E-13 2 + 0.27677109E+05-0.44444780E+01 0.28516610E+01 0.56952331E-02 0.10711400E-05 3 +-0.16226120E-08-0.23511081E-12 0.28637820E+05 0.89927511E+01 4 +HCN GRI/98H 1C 1N 1 G 200.000 6000.000 1000.000 1 + 0.38022392E+01 0.31464228E-02-0.10632185E-05 0.16619757E-09-0.97997570E-14 2 + 0.14407292E+05 0.15754601E+01 0.22589886E+01 0.10051170E-01-0.13351763E-04 3 + 0.10092349E-07-0.30089028E-11 0.14712633E+05 0.89164419E+01 4 +HNO And93 H 1N 1O 1 G 200.000 6000.000 1000.000 1 + 0.29792509E+01 0.34944059E-02-0.78549778E-06 0.57479594E-10-0.19335916E-15 2 + 0.11750582E+05 0.86063728E+01 0.45334916E+01-0.56696171E-02 0.18473207E-04 3 +-0.17137094E-07 0.55454573E-11 0.11548297E+05 0.17498417E+01 4 +N L 6/88N 1 G 200.000 6000.000 1000.000 1 + 0.24159429E+01 0.17489065E-03-0.11902369E-06 0.30226245E-10-0.20360982E-14 2 + 0.56133773E+05 0.46496096E+01 0.25000000E+01 0.00000000E+00 0.00000000E+00 3 + 0.00000000E+00 0.00000000E+00 0.56104637E+05 0.41939087E+01 4 +NNH T07/93N 2H 1 G 200.000 6000.000 1000.000 1 + 0.37667544E+01 0.28915082E-02-0.10416620E-05 0.16842594E-09-0.10091896E-13 2 + 0.28650697E+05 0.44705067E+01 0.43446927E+01-0.48497072E-02 0.20059459E-04 3 +-0.21726464E-07 0.79469539E-11 0.28791973E+05 0.29779410E+01 4 +N2O L 7/88N 2O 1 G 200.000 6000.000 1000.000 1 + 0.48230729E+01 0.26270251E-02-0.95850874E-06 0.16000712E-09-0.97752303E-14 2 + 0.80734048E+04-0.22017207E+01 0.22571502E+01 0.11304728E-01-0.13671319E-04 3 + 0.96819806E-08-0.29307182E-11 0.87417744E+04 0.10757992E+02 4 +NH And94 N 1H 1 G 200.000 6000.000 1000.000 1 + 0.27836928E+01 0.13298430E-02-0.42478047E-06 0.78348501E-10-0.55044470E-14 2 + 0.42120848E+05 0.57407799E+01 0.34929085E+01 0.31179198E-03-0.14890484E-05 3 + 0.24816442E-08-0.10356967E-11 0.41880629E+05 0.18483278E+01 4 +NH2 And89 N 1H 2 G 200.000 6000.000 1000.000 1 + 0.28347421E+01 0.32073082E-02-0.93390804E-06 0.13702953E-09-0.79206144E-14 2 + 0.22171957E+05 0.65204163E+01 0.42040029E+01-0.21061385E-02 0.71068348E-05 3 +-0.56115197E-08 0.16440717E-11 0.21885910E+05-0.14184248E+00 4 +NH3 J 6/77N 1H 3 G 200.000 6000.000 1000.000 1 + 0.26344521E+01 0.56662560E-02-0.17278676E-05 0.23867161E-09-0.12578786E-13 2 +-0.65446958E+04 0.65662928E+01 0.42860274E+01-0.46605230E-02 0.21718513E-04 3 +-0.22808887E-07 0.82638046E-11-0.67417285E+04-0.62537277E+00 4 +NO RUS 78N 1O 1 G 200.000 6000.000 1000.000 1 + 0.32606056E+01 0.11911043E-02-0.42917048E-06 0.69457669E-10-0.40336099E-14 2 + 0.99209746E+04 0.63693027E+01 0.42184763E+01-0.46389760E-02 0.11041022E-04 3 +-0.93361354E-08 0.28035770E-11 0.98446230E+04 0.22808464E+01 4 +NO2 L 7/88N 1O 2 G 200.000 6000.000 1000.000 1 + 0.48847542E+01 0.21723956E-02-0.82806906E-06 0.15747510E-09-0.10510895E-13 2 + 0.23164983E+04-0.11741695E+00 0.39440312E+01-0.15854290E-02 0.16657812E-04 3 +-0.20475426E-07 0.78350564E-11 0.28966179E+04 0.63119917E+01 4 +HCNO BDEA94H 1N 1C 1O 1G 250.000 5000.000 1382.000 1 + 6.59860456E+00 3.02778626E-03-1.07704346E-06 1.71666528E-10-1.01439391E-14 2 + 1.79661339E+04-1.03306599E+01 2.64727989E+00 1.27505342E-02-1.04794236E-05 3 + 4.41432836E-09-7.57521466E-13 1.92990252E+04 1.07332972E+01 4 +HOCN BDEA94H 1N 1C 1O 1G 250.000 5000.000 1368.000 1 + 5.89784885E+00 3.16789393E-03-1.11801064E-06 1.77243144E-10-1.04339177E-14 2 +-3.70653331E+03-6.18167825E+00 3.78604952E+00 6.88667922E-03-3.21487864E-06 3 + 5.17195767E-10 1.19360788E-14-2.82698400E+03 5.63292162E+00 4 +HNCO BDEA94H 1N 1C 1O 1G 250.000 5000.000 1478.000 1 + 6.22395134E+00 3.17864004E-03-1.09378755E-06 1.70735163E-10-9.95021955E-15 2 +-1.66599344E+04-8.38224741E+00 3.63096317E+00 7.30282357E-03-2.28050003E-06 3 +-6.61271298E-10 3.62235752E-13-1.55873636E+04 6.19457727E+00 4 +NCO EA 93 N 1C 1O 1 G 200.000 6000.000 1000.000 1 + 0.51521845E+01 0.23051761E-02-0.88033153E-06 0.14789098E-09-0.90977996E-14 2 + 0.14004123E+05-0.25442660E+01 0.28269308E+01 0.88051688E-02-0.83866134E-05 3 + 0.48016964E-08-0.13313595E-11 0.14682477E+05 0.95504646E+01 4 +CN HBH92 C 1N 1 G 200.000 6000.000 1000.000 1 + 0.37459805E+01 0.43450775E-04 0.29705984E-06-0.68651806E-10 0.44134173E-14 2 + 0.51536188E+05 0.27867601E+01 0.36129351E+01-0.95551327E-03 0.21442977E-05 3 +-0.31516323E-09-0.46430356E-12 0.51708340E+05 0.39804995E+01 4 +HCNN SRI/94C 1N 2H 1 G 250.000 5000.000 1000.000 1 + 0.58946362E+01 0.39895959E-02-0.15982380E-05 0.29249395E-09-0.20094686E-13 2 + 0.53452941E+05-0.51030502E+01 0.25243194E+01 0.15960619E-01-0.18816354E-04 3 + 0.12125540E-07-0.32357378E-11 0.54261984E+05 0.11675870E+02 4 +N2 121286N 2 G 250.000 5000.000 1000.000 1 + 0.02926640E+02 0.14879768E-02-0.05684760E-05 0.10097038E-09-0.06753351E-13 2 +-0.09227977E+04 0.05980528E+02 0.03298677E+02 0.14082404E-02-0.03963222E-04 3 + 0.05641515E-07-0.02444854E-10-0.10208999E+04 0.03950372E+02 4 +AR 120186AR 1 G 250.000 5000.000 1000.000 1 + 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 2 +-0.07453750E+04 0.04366000E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00 3 + 0.00000000E+00 0.00000000E+00-0.07453750E+04 0.04366000E+02 4 +C3H8 L 4/85C 3H 8 G 250.000 5000.000 1000.000 1 + 0.75341368E+01 0.18872239E-01-0.62718491E-05 0.91475649E-09-0.47838069E-13 2 +-0.16467516E+05-0.17892349E+02 0.93355381E+00 0.26424579E-01 0.61059727E-05 3 +-0.21977499E-07 0.95149253E-11-0.13958520E+05 0.19201691E+02 4 +C3H7 L 9/84C 3H 7 G 250.000 5000.000 1000.000 1 + 0.77026987E+01 0.16044203E-01-0.52833220E-05 0.76298590E-09-0.39392284E-13 2 + 0.82984336E+04-0.15480180E+02 0.10515518E+01 0.25991980E-01 0.23800540E-05 3 +-0.19609569E-07 0.93732470E-11 0.10631863E+05 0.21122559E+02 4 +CH3CHO L 8/88C 2H 4O 1 G 200.000 6000.000 1000.000 1 + 0.54041108E+01 0.11723059E-01-0.42263137E-05 0.68372451E-09-0.40984863E-13 2 +-0.22593122E+05-0.34807917E+01 0.47294595E+01-0.31932858E-02 0.47534921E-04 3 +-0.57458611E-07 0.21931112E-10-0.21572878E+05 0.41030159E+01 4 +CH2CHO SAND86O 1H 3C 2 G 250.000 5000.000 1000.000 1 + 0.05975670E+02 0.08130591E-01-0.02743624E-04 0.04070304E-08-0.02176017E-12 2 + 0.04903218E+04-0.05045251E+02 0.03409062E+02 0.10738574E-01 0.01891492E-04 3 +-0.07158583E-07 0.02867385E-10 0.15214766E+04 0.09558290E+02 4 +END diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/transportProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..e229436fc045f5816179c0546701e8d04c87e423 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/chemkin/transportProperties @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "chemkin"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +".*" +{ + transport + { + As 1.512e-06; + Ts 120.; + } +} + +"H2" +{ + transport + { + As 6.362e-07; + Ts 72.; + } +} + +"CO2" +{ + transport + { + As 1.572e-06; + Ts 240.; + } +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/boundaryRadiationProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/boundaryRadiationProperties new file mode 100644 index 0000000000000000000000000000000000000000..e438f1b7cf0c47a8e2486349cda1145d4459b222 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/boundaryRadiationProperties @@ -0,0 +1,26 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object boundaryRadiationProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +".*" +{ + mode lookup; + emissivity 1; + absorptivity 0; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/chemistryProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/chemistryProperties new file mode 100644 index 0000000000000000000000000000000000000000..300acf6da4e7b244ad2969fd4aa3376d9f1db1af --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/chemistryProperties @@ -0,0 +1,90 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties; +} + +chemistryType +{ + chemistrySolver ode; + chemistryThermo psi; + TDAC on; +} + +chemistry on; + +importantSpecies +{ + CO2 ; + H2O ; + CH4 ; + O2 ; +} + +initialChemicalTimeStep 1e-07; + +odeCoeffs +{ + solver seulex; + absTol 1e-12; + relTol 1e-07; +} + +reduction +{ + active on; + log on; + tolerance 0.0001; + method DAC; + initialSet + { + CO ; + CH4 ; + HO2 ; + } + automaticSIS off; + fuelSpecies + { + CH4 1; + } +} + +tabulation +{ + active on; + log on; + printProportion off; + printNumRetrieve off; + tolerance 0.003; + method ISAT; + scaleFactor + { + otherSpecies 1; + Temperature 10000; + Pressure 1e+15; + deltaT 1; + } + maxNLeafs 5000; + chPMaxLifeTime 1000; + maxGrowth 100; + checkEntireTreeInterval 500; + maxDepthFactor 2; + minBalanceThreshold 30; + MRURetrieve false; + maxMRUSize 0; + growPoints true; + maxNumNewDim 10; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/combustionProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/combustionProperties new file mode 100644 index 0000000000000000000000000000000000000000..22c8982b77952f078d6c39ca64d9fdc9e7deae45 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/combustionProperties @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel EDC<psiChemistryCombustion>; + +active true; + +EDCCoeffs +{ + version v2005; +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/fvOptions b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/fvOptions new file mode 100644 index 0000000000000000000000000000000000000000..c5b100c250bf88501e6284a40d42827ec14cb635 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/fvOptions @@ -0,0 +1,24 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object fvOptions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +radiation +{ + type radiation; + libs ("libradiationModels.so"); +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/g b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..3402aabaa7f614b7039ecb3613626a64a502a0ea --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/g @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 0 -9.81); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/radiationProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/radiationProperties new file mode 100644 index 0000000000000000000000000000000000000000..f67fc7180c0fec5c332101b078c7fa9d4384ede6 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/radiationProperties @@ -0,0 +1,184 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object radiationProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +radiation on; + +radiationModel P1; + +P1Coeffs +{ + C C [0 0 0 0 0 0 0] 0; +} + +// Number of flow iterations per radiation iteration +solverFreq 1; + +absorptionEmissionModel greyMeanAbsorptionEmission; + +greyMeanAbsorptionEmissionCoeffs +{ + lookUpTableFileName none; + + EhrrCoeff 0.0; + + CO2 + { + Tcommon 200; //Common Temp + invTemp true; //Is the polynomio using inverse temperature. + Tlow 200; //Low Temp + Thigh 2500; //High Temp + + loTcoeffs //coefss for T < Tcommon + ( + 0 // a0 + + 0 // a1*T + + 0 // a2*T^(+/-)2 + + 0 // a3*T^(+/-)3 + + 0 // a4*T^(+/-)4 + + 0 // a5*T^(+/-)5 + + ); + hiTcoeffs //coefss for T > Tcommon + ( + 18.741 + -121.31e3 + 273.5e6 + -194.05e9 + 56.31e12 + -5.8169e15 + ); + + } + + H2O + { + Tcommon 200; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + -0.23093 + -1.12390e3 + 9.4153e6 + -2.99885e9 + 0.51382e12 + -1.868e10 + ); + } + + CH4 + { + Tcommon 200; + Tlow 200; + Thigh 2500; + invTemp false; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 6.6334 + -0.0035686 + 1.6682e-8 + 2.5611e-10 + -2.6558e-14 + 0 + ); + } + + O2 + { + Tcommon 200; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } + + + N2 + { + Tcommon 200; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } +} + +scatterModel none; + +sootModel none; + +transmissivityModel none; + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/reactionsGRI b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/reactionsGRI new file mode 100644 index 0000000000000000000000000000000000000000..8bd6be3583c23680c5301ff540290551ee0b7d8e --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/reactionsGRI @@ -0,0 +1,3610 @@ +elements +5 +( +O +H +C +N +Ar +) +; + +species +36 +( +H2 +H +O +O2 +OH +H2O +HO2 +H2O2 +C +CH +CH2 +CH2(S) +CH3 +CH4 +CO +CO2 +HCO +CH2O +CH2OH +CH3O +CH3OH +C2H +C2H2 +C2H3 +C2H4 +C2H5 +C2H6 +HCCO +CH2CO +HCCOH +N2 +AR +C3H7 +C3H8 +CH2CHO +CH3CHO +) +; + +reactions +{ + un-named-reaction-0 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2O = O2"; + A 1.2e+11; + beta -1; + Ta 0; + coeffs +36 +( +(H2 2.4) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 15.4) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.75) +(CO2 3.6) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.83) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-1 + { + type reversiblethirdBodyArrheniusReaction; + reaction "O + H = OH"; + A 5e+11; + beta -1; + Ta 0; + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-2 + { + type reversibleArrheniusReaction; + reaction "O + H2 = H + OH"; + A 38.7; + beta 2.7; + Ta 3149.977155; + } + un-named-reaction-3 + { + type reversibleArrheniusReaction; + reaction "O + HO2 = OH + O2"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-4 + { + type reversibleArrheniusReaction; + reaction "O + H2O2 = OH + HO2"; + A 9630; + beta 2; + Ta 2012.764955; + } + un-named-reaction-5 + { + type reversibleArrheniusReaction; + reaction "O + CH = H + CO"; + A 5.7e+10; + beta 0; + Ta 0; + } + un-named-reaction-6 + { + type reversibleArrheniusReaction; + reaction "O + CH2 = H + HCO"; + A 8e+10; + beta 0; + Ta 0; + } + un-named-reaction-7 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H2 + CO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-8 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H + HCO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-9 + { + type reversibleArrheniusReaction; + reaction "O + CH3 = H + CH2O"; + A 5.06e+10; + beta 0; + Ta 0; + } + un-named-reaction-10 + { + type reversibleArrheniusReaction; + reaction "O + CH4 = OH + CH3"; + A 1020000; + beta 1.5; + Ta 4327.444654; + } + un-named-reaction-11 + { + type reversibleArrheniusLindemannFallOffReaction; + reaction "O + CO = CO2"; + k0 + { + A 602000000; + beta 0; + Ta 1509.573717; + } + kInf + { + A 18000000; + beta 0; + Ta 1200.111105; + } + F + { + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 6) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 3.5) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.5) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-12 + { + type reversibleArrheniusReaction; + reaction "O + HCO = OH + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-13 + { + type reversibleArrheniusReaction; + reaction "O + HCO = H + CO2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-14 + { + type reversibleArrheniusReaction; + reaction "O + CH2O = OH + HCO"; + A 3.9e+10; + beta 0; + Ta 1781.296985; + } + un-named-reaction-15 + { + type reversibleArrheniusReaction; + reaction "O + CH2OH = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-16 + { + type reversibleArrheniusReaction; + reaction "O + CH3O = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-17 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH2OH"; + A 388; + beta 2.5; + Ta 1559.89284; + } + un-named-reaction-18 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH3O"; + A 130; + beta 2.5; + Ta 2515.956194; + } + un-named-reaction-19 + { + type reversibleArrheniusReaction; + reaction "O + C2H = CH + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-20 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = H + HCCO"; + A 13500; + beta 2; + Ta 956.0633538; + } + un-named-reaction-21 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = OH + C2H"; + A 4.6e+16; + beta -1.41; + Ta 14567.38636; + } + un-named-reaction-22 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = CO + CH2"; + A 6940; + beta 2; + Ta 956.0633538; + } + un-named-reaction-23 + { + type reversibleArrheniusReaction; + reaction "O + C2H3 = H + CH2CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-24 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = CH3 + HCO"; + A 12500; + beta 1.83; + Ta 110.7020725; + } + un-named-reaction-25 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = CH3 + CH2O"; + A 2.24e+10; + beta 0; + Ta 0; + } + un-named-reaction-26 + { + type reversibleArrheniusReaction; + reaction "O + C2H6 = OH + C2H5"; + A 89800; + beta 1.92; + Ta 2863.158149; + } + un-named-reaction-27 + { + type reversibleArrheniusReaction; + reaction "O + HCCO = H + 2CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-28 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = OH + HCCO"; + A 1e+10; + beta 0; + Ta 4025.529911; + } + un-named-reaction-29 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = CH2 + CO2"; + A 1750000000; + beta 0; + Ta 679.3081724; + } + un-named-reaction-30 + { + type reversibleArrheniusReaction; + reaction "O2 + CO = O + CO2"; + A 2500000000; + beta 0; + Ta 24052.54122; + } + un-named-reaction-31 + { + type reversibleArrheniusReaction; + reaction "O2 + CH2O = HO2 + HCO"; + A 1e+11; + beta 0; + Ta 20127.64955; + } + un-named-reaction-32 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + O2 = HO2"; + A 2.8e+12; + beta -0.86; + Ta 0; + coeffs +36 +( +(H2 1) +(H 1) +(O 1) +(O2 0) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 1) +(CO 0.75) +(CO2 1.5) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 1.5) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 0) +(AR 0) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-33 + { + type reversibleArrheniusReaction; + reaction "H + 2O2 = HO2 + O2"; + A 2.08e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-34 + { + type reversibleArrheniusReaction; + reaction "H + O2 + H2O = HO2 + H2O"; + A 1.126e+13; + beta -0.76; + Ta 0; + } + un-named-reaction-35 + { + type reversibleArrheniusReaction; + reaction "H + O2 + N2 = HO2 + N2"; + A 2.6e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-36 + { + type reversibleArrheniusReaction; + reaction "H + O2 + AR = HO2 + AR"; + A 7e+11; + beta -0.8; + Ta 0; + } + un-named-reaction-37 + { + type reversibleArrheniusReaction; + reaction "H + O2 = O + OH"; + A 2.65e+13; + beta -0.6707; + Ta 8574.881901; + } + un-named-reaction-38 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2H = H2"; + A 1e+12; + beta -1; + Ta 0; + coeffs +36 +( +(H2 0) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1) +(CO2 0) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.63) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-39 + { + type reversibleArrheniusReaction; + reaction "2H + H2 = 2H2"; + A 9e+10; + beta -0.6; + Ta 0; + } + un-named-reaction-40 + { + type reversibleArrheniusReaction; + reaction "2H + H2O = H2 + H2O"; + A 6e+13; + beta -1.25; + Ta 0; + } + un-named-reaction-41 + { + type reversibleArrheniusReaction; + reaction "2H + CO2 = H2 + CO2"; + A 5.5e+14; + beta -2; + Ta 0; + } + un-named-reaction-42 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + OH = H2O"; + A 2.2e+16; + beta -2; + Ta 0; + coeffs +36 +( +(H2 0.73) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 3.65) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1) +(CO2 1) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.38) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-43 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O + H2O"; + A 3970000000; + beta 0; + Ta 337.6413213; + } + un-named-reaction-44 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O2 + H2"; + A 4.48e+10; + beta 0; + Ta 537.4082431; + } + un-named-reaction-45 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = 2OH"; + A 8.4e+10; + beta 0; + Ta 319.5264367; + } + un-named-reaction-46 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = HO2 + H2"; + A 12100; + beta 2; + Ta 2616.594442; + } + un-named-reaction-47 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = OH + H2O"; + A 1e+10; + beta 0; + Ta 1811.48846; + } + un-named-reaction-48 + { + type reversibleArrheniusReaction; + reaction "H + CH = C + H2"; + A 1.65e+11; + beta 0; + Ta 0; + } + un-named-reaction-49 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2 = CH3"; + k0 + { + A 1.04e+20; + beta -2.76; + Ta 805.1059821; + } + kInf + { + A 6e+11; + beta 0; + Ta 0; + } + F + { + alpha 0.562; + Tsss 91; + Ts 5836; + Tss 8552; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-50 + { + type reversibleArrheniusReaction; + reaction "H + CH2(S) = CH + H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-51 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3 = CH4"; + k0 + { + A 2.62e+27; + beta -4.76; + Ta 1227.786623; + } + kInf + { + A 1.39e+13; + beta -0.534; + Ta 269.710504; + } + F + { + alpha 0.783; + Tsss 74; + Ts 2941; + Tss 6964; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 3) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-52 + { + type reversibleArrheniusReaction; + reaction "H + CH4 = CH3 + H2"; + A 660000; + beta 1.62; + Ta 5454.593029; + } + un-named-reaction-53 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + HCO = CH2O"; + k0 + { + A 2.47e+18; + beta -2.57; + Ta 213.8562765; + } + kInf + { + A 1090000000; + beta 0.48; + Ta -130.8297221; + } + F + { + alpha 0.7824; + Tsss 271; + Ts 2755; + Tss 6570; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-54 + { + type reversibleArrheniusReaction; + reaction "H + HCO = H2 + CO"; + A 7.34e+10; + beta 0; + Ta 0; + } + un-named-reaction-55 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH2OH"; + k0 + { + A 1.27e+26; + beta -4.82; + Ta 3285.83879; + } + kInf + { + A 540000000; + beta 0.454; + Ta 1811.48846; + } + F + { + alpha 0.7187; + Tsss 103; + Ts 1291; + Tss 4160; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-56 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH3O"; + k0 + { + A 2.2e+24; + beta -4.8; + Ta 2797.743288; + } + kInf + { + A 540000000; + beta 0.454; + Ta 1308.297221; + } + F + { + alpha 0.758; + Tsss 94; + Ts 1555; + Tss 4200; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-57 + { + type reversibleArrheniusReaction; + reaction "H + CH2O = HCO + H2"; + A 57400; + beta 1.9; + Ta 1379.750377; + } + un-named-reaction-58 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2OH = CH3OH"; + k0 + { + A 4.36e+25; + beta -4.65; + Ta 2556.211493; + } + kInf + { + A 1055000000; + beta 0.5; + Ta 43.27444654; + } + F + { + alpha 0.6; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-59 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-60 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = OH + CH3"; + A 165000000; + beta 0.65; + Ta -142.9063118; + } + un-named-reaction-61 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = CH2(S) + H2O"; + A 3.28e+10; + beta -0.09; + Ta 306.9466557; + } + un-named-reaction-62 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3O = CH3OH"; + k0 + { + A 4.66e+35; + beta -7.44; + Ta 7084.932643; + } + kInf + { + A 2430000000; + beta 0.515; + Ta 25.15956194; + } + F + { + alpha 0.7; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-63 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H + CH2OH"; + A 41500; + beta 1.63; + Ta 968.1399435; + } + un-named-reaction-64 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-65 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = OH + CH3"; + A 1500000000; + beta 0.5; + Ta -55.35103627; + } + un-named-reaction-66 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = CH2(S) + H2O"; + A 2.62e+11; + beta -0.23; + Ta 538.4146256; + } + un-named-reaction-67 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH2OH + H2"; + A 17000; + beta 2.1; + Ta 2450.541333; + } + un-named-reaction-68 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH3O + H2"; + A 4200; + beta 2.1; + Ta 2450.541333; + } + un-named-reaction-69 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H = C2H2"; + k0 + { + A 3.75e+27; + beta -4.8; + Ta 956.0633538; + } + kInf + { + A 1e+14; + beta -1; + Ta 0; + } + F + { + alpha 0.6464; + Tsss 132; + Ts 1315; + Tss 5566; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-70 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H2 = C2H3"; + k0 + { + A 3.8e+34; + beta -7.27; + Ta 3633.040744; + } + kInf + { + A 5600000000; + beta 0; + Ta 1207.658973; + } + F + { + alpha 0.7507; + Tsss 98.5; + Ts 1302; + Tss 4167; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-71 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H3 = C2H4"; + k0 + { + A 1.4e+24; + beta -3.86; + Ta 1670.594913; + } + kInf + { + A 6080000000; + beta 0.27; + Ta 140.8935469; + } + F + { + alpha 0.782; + Tsss 207.5; + Ts 2663; + Tss 6095; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-72 + { + type reversibleArrheniusReaction; + reaction "H + C2H3 = H2 + C2H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-73 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H4 = C2H5"; + k0 + { + A 6e+35; + beta -7.62; + Ta 3507.242935; + } + kInf + { + A 540000000; + beta 0.454; + Ta 915.8080547; + } + F + { + alpha 0.9753; + Tsss 210; + Ts 984; + Tss 4374; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-74 + { + type reversibleArrheniusReaction; + reaction "H + C2H4 = C2H3 + H2"; + A 1325; + beta 2.53; + Ta 6159.060763; + } + un-named-reaction-75 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H5 = C2H6"; + k0 + { + A 1.99e+35; + beta -7.08; + Ta 3363.833432; + } + kInf + { + A 5.21e+14; + beta -0.99; + Ta 795.0421574; + } + F + { + alpha 0.8422; + Tsss 125; + Ts 2219; + Tss 6882; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-76 + { + type reversibleArrheniusReaction; + reaction "H + C2H5 = H2 + C2H4"; + A 2000000000; + beta 0; + Ta 0; + } + un-named-reaction-77 + { + type reversibleArrheniusReaction; + reaction "H + C2H6 = C2H5 + H2"; + A 115000; + beta 1.9; + Ta 3789.030028; + } + un-named-reaction-78 + { + type reversibleArrheniusReaction; + reaction "H + HCCO = CH2(S) + CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-79 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = HCCO + H2"; + A 5e+10; + beta 0; + Ta 4025.529911; + } + un-named-reaction-80 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = CH3 + CO"; + A 1.13e+10; + beta 0; + Ta 1724.939567; + } + un-named-reaction-81 + { + type reversibleArrheniusReaction; + reaction "H + HCCOH = H + CH2CO"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-82 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H2 + CO = CH2O"; + k0 + { + A 5.07e+21; + beta -3.42; + Ta 42444.181; + } + kInf + { + A 43000; + beta 1.5; + Ta 40054.02261; + } + F + { + alpha 0.932; + Tsss 197; + Ts 1540; + Tss 10300; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-83 + { + type reversibleArrheniusReaction; + reaction "OH + H2 = H + H2O"; + A 216000; + beta 1.51; + Ta 1725.945949; + } + un-named-reaction-84 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2OH = H2O2"; + k0 + { + A 2.3e+12; + beta -0.9; + Ta -855.425106; + } + kInf + { + A 7.4e+10; + beta -0.37; + Ta 0; + } + F + { + alpha 0.7346; + Tsss 94; + Ts 1756; + Tss 5182; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-85 + { + type reversibleArrheniusReaction; + reaction "2OH = O + H2O"; + A 35.7; + beta 2.4; + Ta -1061.733514; + } + un-named-reaction-86 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 1.45e+10; + beta 0; + Ta -251.5956194; + } + un-named-reaction-87 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 2000000000; + beta 0; + Ta 214.862659; + } + un-named-reaction-88 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 1.7e+15; + beta 0; + Ta 14798.85433; + } + un-named-reaction-89 + { + type reversibleArrheniusReaction; + reaction "OH + C = H + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-90 + { + type reversibleArrheniusReaction; + reaction "OH + CH = H + HCO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-91 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = H + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-92 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = CH + H2O"; + A 11300; + beta 2; + Ta 1509.573717; + } + un-named-reaction-93 + { + type reversibleArrheniusReaction; + reaction "OH + CH2(S) = H + CH2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-94 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "OH + CH3 = CH3OH"; + k0 + { + A 4e+30; + beta -5.92; + Ta 1580.02049; + } + kInf + { + A 2.79e+15; + beta -1.43; + Ta 669.2443477; + } + F + { + alpha 0.412; + Tsss 195; + Ts 5900; + Tss 6394; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-95 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2 + H2O"; + A 56000; + beta 1.6; + Ta 2727.296514; + } + un-named-reaction-96 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2(S) + H2O"; + A 6.44e+14; + beta -1.34; + Ta 713.0219854; + } + un-named-reaction-97 + { + type reversibleArrheniusReaction; + reaction "OH + CH4 = CH3 + H2O"; + A 100000; + beta 1.6; + Ta 1569.956665; + } + un-named-reaction-98 + { + type reversibleArrheniusReaction; + reaction "OH + CO = H + CO2"; + A 47600; + beta 1.228; + Ta 35.22338672; + } + un-named-reaction-99 + { + type reversibleArrheniusReaction; + reaction "OH + HCO = H2O + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-100 + { + type reversibleArrheniusReaction; + reaction "OH + CH2O = HCO + H2O"; + A 3430000; + beta 1.18; + Ta -224.9264838; + } + un-named-reaction-101 + { + type reversibleArrheniusReaction; + reaction "OH + CH2OH = H2O + CH2O"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-102 + { + type reversibleArrheniusReaction; + reaction "OH + CH3O = H2O + CH2O"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-103 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH2OH + H2O"; + A 1440; + beta 2; + Ta -422.6806406; + } + un-named-reaction-104 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH3O + H2O"; + A 6300; + beta 2; + Ta 754.7868583; + } + un-named-reaction-105 + { + type reversibleArrheniusReaction; + reaction "OH + C2H = H + HCCO"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-106 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + CH2CO"; + A 2.18e-07; + beta 4.5; + Ta -503.1912388; + } + un-named-reaction-107 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + HCCOH"; + A 504; + beta 2.3; + Ta 6793.081724; + } + un-named-reaction-108 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = C2H + H2O"; + A 33700; + beta 2; + Ta 7044.677344; + } + un-named-reaction-109 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = CH3 + CO"; + A 4.83e-07; + beta 4; + Ta -1006.382478; + } + un-named-reaction-110 + { + type reversibleArrheniusReaction; + reaction "OH + C2H3 = H2O + C2H2"; + A 5000000000; + beta 0; + Ta 0; + } + un-named-reaction-111 + { + type reversibleArrheniusReaction; + reaction "OH + C2H4 = C2H3 + H2O"; + A 3600; + beta 2; + Ta 1257.978097; + } + un-named-reaction-112 + { + type reversibleArrheniusReaction; + reaction "OH + C2H6 = C2H5 + H2O"; + A 3540; + beta 2.12; + Ta 437.7763778; + } + un-named-reaction-113 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CO = HCCO + H2O"; + A 7500000000; + beta 0; + Ta 1006.382478; + } + un-named-reaction-114 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 130000000; + beta 0; + Ta -820.2017193; + } + un-named-reaction-115 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 4.2e+11; + beta 0; + Ta 6038.294866; + } + un-named-reaction-116 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2 = OH + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-117 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = O2 + CH4"; + A 1000000000; + beta 0; + Ta 0; + } + un-named-reaction-118 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = OH + CH3O"; + A 3.78e+10; + beta 0; + Ta 0; + } + un-named-reaction-119 + { + type reversibleArrheniusReaction; + reaction "HO2 + CO = OH + CO2"; + A 1.5e+11; + beta 0; + Ta 11875.31324; + } + un-named-reaction-120 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2O = HCO + H2O2"; + A 5600; + beta 2; + Ta 6038.294866; + } + un-named-reaction-121 + { + type reversibleArrheniusReaction; + reaction "C + O2 = O + CO"; + A 5.8e+10; + beta 0; + Ta 289.8381536; + } + un-named-reaction-122 + { + type reversibleArrheniusReaction; + reaction "C + CH2 = H + C2H"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-123 + { + type reversibleArrheniusReaction; + reaction "C + CH3 = H + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-124 + { + type reversibleArrheniusReaction; + reaction "CH + O2 = O + HCO"; + A 6.71e+10; + beta 0; + Ta 0; + } + un-named-reaction-125 + { + type reversibleArrheniusReaction; + reaction "CH + H2 = H + CH2"; + A 1.08e+11; + beta 0; + Ta 1564.924753; + } + un-named-reaction-126 + { + type reversibleArrheniusReaction; + reaction "CH + H2O = H + CH2O"; + A 5710000000; + beta 0; + Ta -379.9093853; + } + un-named-reaction-127 + { + type reversibleArrheniusReaction; + reaction "CH + CH2 = H + C2H2"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-128 + { + type reversibleArrheniusReaction; + reaction "CH + CH3 = H + C2H3"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-129 + { + type reversibleArrheniusReaction; + reaction "CH + CH4 = H + C2H4"; + A 6e+10; + beta 0; + Ta 0; + } + un-named-reaction-130 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + CO = HCCO"; + k0 + { + A 2.69e+22; + beta -3.74; + Ta 974.1782384; + } + kInf + { + A 5e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.5757; + Tsss 237; + Ts 1652; + Tss 5069; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-131 + { + type reversibleArrheniusReaction; + reaction "CH + CO2 = HCO + CO"; + A 1.9e+11; + beta 0; + Ta 7946.396044; + } + un-named-reaction-132 + { + type reversibleArrheniusReaction; + reaction "CH + CH2O = H + CH2CO"; + A 9.46e+10; + beta 0; + Ta -259.143488; + } + un-named-reaction-133 + { + type reversibleArrheniusReaction; + reaction "CH + HCCO = CO + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-134 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = OH + H + CO"; + A 5000000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-135 + { + type reversibleArrheniusReaction; + reaction "CH2 + H2 = H + CH3"; + A 500; + beta 2; + Ta 3638.072657; + } + un-named-reaction-136 + { + type reversibleArrheniusReaction; + reaction "2CH2 = H2 + C2H2"; + A 1.6e+12; + beta 0; + Ta 6010.116157; + } + un-named-reaction-137 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH3 = H + C2H4"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-138 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH4 = 2CH3"; + A 2460; + beta 2; + Ta 4161.391545; + } + un-named-reaction-139 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2 + CO = CH2CO"; + k0 + { + A 2.69e+27; + beta -5.11; + Ta 3570.14184; + } + kInf + { + A 810000000; + beta 0.5; + Ta 2269.392487; + } + F + { + alpha 0.5907; + Tsss 275; + Ts 1226; + Tss 5185; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-140 + { + type reversibleArrheniusReaction; + reaction "CH2 + HCCO = C2H3 + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-141 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + N2 = CH2 + N2"; + A 1.5e+10; + beta 0; + Ta 301.9147433; + } + un-named-reaction-142 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + AR = CH2 + AR"; + A 9000000000; + beta 0; + Ta 301.9147433; + } + un-named-reaction-143 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = H + OH + CO"; + A 2.8e+10; + beta 0; + Ta 0; + } + un-named-reaction-144 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = CO + H2O"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-145 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2 = CH3 + H"; + A 7e+10; + beta 0; + Ta 0; + } + un-named-reaction-146 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2(S) + H2O = CH3OH"; + k0 + { + A 1.88e+32; + beta -6.36; + Ta 2536.083844; + } + kInf + { + A 4.82e+14; + beta -1.16; + Ta 576.1539685; + } + F + { + alpha 0.6027; + Tsss 208; + Ts 3922; + Tss 10180; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-147 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2O = CH2 + H2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-148 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH3 = H + C2H4"; + A 1.2e+10; + beta 0; + Ta -286.8190061; + } + un-named-reaction-149 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH4 = 2CH3"; + A 1.6e+10; + beta 0; + Ta -286.8190061; + } + un-named-reaction-150 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO = CH2 + CO"; + A 9000000000; + beta 0; + Ta 0; + } + un-named-reaction-151 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CH2 + CO2"; + A 7000000000; + beta 0; + Ta 0; + } + un-named-reaction-152 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CO + CH2O"; + A 1.4e+10; + beta 0; + Ta 0; + } + un-named-reaction-153 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + C2H6 = CH3 + C2H5"; + A 4e+10; + beta 0; + Ta -276.7551814; + } + un-named-reaction-154 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = O + CH3O"; + A 3.56e+10; + beta 0; + Ta 15337.26896; + } + un-named-reaction-155 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = OH + CH2O"; + A 2310000000; + beta 0; + Ta 10222.33002; + } + un-named-reaction-156 + { + type reversibleArrheniusReaction; + reaction "CH3 + H2O2 = HO2 + CH4"; + A 24.5; + beta 2.47; + Ta 2606.530617; + } + un-named-reaction-157 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2CH3 = C2H6"; + k0 + { + A 3.4e+35; + beta -7.03; + Ta 1389.814202; + } + kInf + { + A 6.77e+13; + beta -1.18; + Ta 329.0870702; + } + F + { + alpha 0.619; + Tsss 73.2; + Ts 1180; + Tss 9999; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-158 + { + type reversibleArrheniusReaction; + reaction "2CH3 = H + C2H5"; + A 6840000000; + beta 0.1; + Ta 5333.827132; + } + un-named-reaction-159 + { + type reversibleArrheniusReaction; + reaction "CH3 + HCO = CH4 + CO"; + A 2.648e+10; + beta 0; + Ta 0; + } + un-named-reaction-160 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH2O = HCO + CH4"; + A 3.32; + beta 2.81; + Ta 2948.70066; + } + un-named-reaction-161 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH2OH + CH4"; + A 30000; + beta 1.5; + Ta 5001.720914; + } + un-named-reaction-162 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH3O + CH4"; + A 10000; + beta 1.5; + Ta 5001.720914; + } + un-named-reaction-163 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H4 = C2H3 + CH4"; + A 227; + beta 2; + Ta 4629.359397; + } + un-named-reaction-164 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H6 = C2H5 + CH4"; + A 6140; + beta 1.74; + Ta 5258.348446; + } + un-named-reaction-165 + { + type reversibleArrheniusReaction; + reaction "HCO + H2O = H + CO + H2O"; + A 1.5e+15; + beta -1; + Ta 8554.25106; + } + un-named-reaction-166 + { + type reversiblethirdBodyArrheniusReaction; + reaction "HCO = H + CO"; + A 1.87e+14; + beta -1; + Ta 8554.25106; + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-167 + { + type reversibleArrheniusReaction; + reaction "HCO + O2 = HO2 + CO"; + A 1.345e+10; + beta 0; + Ta 201.2764955; + } + un-named-reaction-168 + { + type reversibleArrheniusReaction; + reaction "CH2OH + O2 = HO2 + CH2O"; + A 1.8e+10; + beta 0; + Ta 452.872115; + } + un-named-reaction-169 + { + type reversibleArrheniusReaction; + reaction "CH3O + O2 = HO2 + CH2O"; + A 4.28e-16; + beta 7.6; + Ta -1776.265073; + } + un-named-reaction-170 + { + type reversibleArrheniusReaction; + reaction "C2H + O2 = HCO + CO"; + A 1e+10; + beta 0; + Ta -379.9093853; + } + un-named-reaction-171 + { + type reversibleArrheniusReaction; + reaction "C2H + H2 = H + C2H2"; + A 56800000; + beta 0.9; + Ta 1002.860139; + } + un-named-reaction-172 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HCO + CH2O"; + A 4.58e+13; + beta -1.39; + Ta 510.7391074; + } + un-named-reaction-173 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "C2H4 = H2 + C2H2"; + k0 + { + A 1.58e+48; + beta -9.3; + Ta 49212.10316; + } + kInf + { + A 8e+12; + beta 0.44; + Ta 43661.90379; + } + F + { + alpha 0.7345; + Tsss 180; + Ts 1035; + Tss 5417; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-174 + { + type reversibleArrheniusReaction; + reaction "C2H5 + O2 = HO2 + C2H4"; + A 840000000; + beta 0; + Ta 1949.86605; + } + un-named-reaction-175 + { + type reversibleArrheniusReaction; + reaction "HCCO + O2 = OH + 2CO"; + A 3200000000; + beta 0; + Ta 429.725318; + } + un-named-reaction-176 + { + type reversibleArrheniusReaction; + reaction "2HCCO = 2CO + C2H2"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-177 + { + type irreversibleArrheniusReaction; + reaction "O + CH3 = H + H2 + CO"; + A 3.37e+10; + beta 0; + Ta 0; + } + un-named-reaction-178 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = H + CH2CHO"; + A 6700; + beta 1.83; + Ta 110.7020725; + } + un-named-reaction-179 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = H + CH3CHO"; + A 1.096e+11; + beta 0; + Ta 0; + } + un-named-reaction-180 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 5e+12; + beta 0; + Ta 8720.304169; + } + un-named-reaction-181 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3 = H2 + CH2O"; + A 8000000; + beta 0.5; + Ta -883.1006242; + } + un-named-reaction-182 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + H2 = CH3"; + k0 + { + A 4.82e+19; + beta -2.8; + Ta 296.8828309; + } + kInf + { + A 1970000000; + beta 0.43; + Ta -186.1807584; + } + F + { + alpha 0.578; + Tsss 122; + Ts 2535; + Tss 9365; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-183 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = 2H + CO2"; + A 5800000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-184 + { + type reversibleArrheniusReaction; + reaction "CH2 + O2 = O + CH2O"; + A 2400000000; + beta 0; + Ta 754.7868583; + } + un-named-reaction-185 + { + type irreversibleArrheniusReaction; + reaction "CH2 + CH2 = 2H + C2H2"; + A 2e+11; + beta 0; + Ta 5529.568524; + } + un-named-reaction-186 + { + type irreversibleArrheniusReaction; + reaction "CH2(S) + H2O = H2 + CH2O"; + A 68200000; + beta 0.25; + Ta -470.4838083; + } + un-named-reaction-187 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = O + CH2CHO"; + A 303000000; + beta 0.29; + Ta 5.535103627; + } + un-named-reaction-188 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HO2 + C2H2"; + A 1337; + beta 1.61; + Ta -193.2254357; + } + un-named-reaction-189 + { + type reversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH2CHO"; + A 2920000000; + beta 0; + Ta 909.7697598; + } + un-named-reaction-190 + { + type irreversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH3 + CO"; + A 2920000000; + beta 0; + Ta 909.7697598; + } + un-named-reaction-191 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH3CHO = HO2 + CH3 + CO"; + A 3.01e+10; + beta 0; + Ta 19699.937; + } + un-named-reaction-192 + { + type reversibleArrheniusReaction; + reaction "H + CH3CHO = CH2CHO + H2"; + A 2050000; + beta 1.16; + Ta 1210.174929; + } + un-named-reaction-193 + { + type irreversibleArrheniusReaction; + reaction "H + CH3CHO = CH3 + H2 + CO"; + A 2050000; + beta 1.16; + Ta 1210.174929; + } + un-named-reaction-194 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3CHO = CH3 + H2O + CO"; + A 23430000; + beta 0.73; + Ta -560.0518488; + } + un-named-reaction-195 + { + type irreversibleArrheniusReaction; + reaction "HO2 + CH3CHO = CH3 + H2O2 + CO"; + A 3010000000; + beta 0; + Ta 5999.549141; + } + un-named-reaction-196 + { + type irreversibleArrheniusReaction; + reaction "CH3 + CH3CHO = CH3 + CH4 + CO"; + A 2720; + beta 1.77; + Ta 2978.892134; + } + un-named-reaction-197 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2CO = CH2CHO"; + k0 + { + A 1.012e+36; + beta -7.63; + Ta 1939.299034; + } + kInf + { + A 486500000; + beta 0.422; + Ta -883.1006242; + } + F + { + alpha 0.465; + Tsss 201; + Ts 1773; + Tss 5333; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-198 + { + type irreversibleArrheniusReaction; + reaction "O + CH2CHO = H + CH2 + CO2"; + A 1.5e+11; + beta 0; + Ta 0; + } + un-named-reaction-199 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + CO + CH2O"; + A 18100000; + beta 0; + Ta 0; + } + un-named-reaction-200 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + 2HCO"; + A 23500000; + beta 0; + Ta 0; + } + un-named-reaction-201 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH3 + HCO"; + A 2.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-202 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH2CO + H2"; + A 1.1e+10; + beta 0; + Ta 0; + } + un-named-reaction-203 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = H2O + CH2CO"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-204 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = HCO + CH2OH"; + A 3.01e+10; + beta 0; + Ta 0; + } + un-named-reaction-205 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H5 = C3H8"; + k0 + { + A 2.71e+68; + beta -16.82; + Ta 6574.193535; + } + kInf + { + A 9430000000; + beta 0; + Ta 0; + } + F + { + alpha 0.1527; + Tsss 291; + Ts 2742; + Tss 7748; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-206 + { + type reversibleArrheniusReaction; + reaction "O + C3H8 = OH + C3H7"; + A 193; + beta 2.68; + Ta 1869.858644; + } + un-named-reaction-207 + { + type reversibleArrheniusReaction; + reaction "H + C3H8 = C3H7 + H2"; + A 1320; + beta 2.54; + Ta 3399.56001; + } + un-named-reaction-208 + { + type reversibleArrheniusReaction; + reaction "OH + C3H8 = C3H7 + H2O"; + A 31600; + beta 1.8; + Ta 469.9806171; + } + un-named-reaction-209 + { + type reversibleArrheniusReaction; + reaction "C3H7 + H2O2 = HO2 + C3H8"; + A 0.378; + beta 2.72; + Ta 754.7868583; + } + un-named-reaction-210 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H8 = C3H7 + CH4"; + A 0.000903; + beta 3.65; + Ta 3599.830123; + } + un-named-reaction-211 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H4 = C3H7"; + k0 + { + A 3e+57; + beta -14.6; + Ta 9142.98481; + } + kInf + { + A 2550; + beta 1.6; + Ta 2868.190061; + } + F + { + alpha 0.1894; + Tsss 277; + Ts 8748; + Tss 7891; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-212 + { + type reversibleArrheniusReaction; + reaction "O + C3H7 = C2H5 + CH2O"; + A 9.64e+10; + beta 0; + Ta 0; + } + un-named-reaction-213 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C3H7 = C3H8"; + k0 + { + A 4.42e+55; + beta -13.545; + Ta 5714.742899; + } + kInf + { + A 3.613e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.315; + Tsss 369; + Ts 3285; + Tss 6667; + } + thirdBodyEfficiencies + { + coeffs +36 +( +(H2 2) +(H 1) +(O 1) +(O2 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CH4 2) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2O 1) +(CH2OH 1) +(CH3O 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-214 + { + type reversibleArrheniusReaction; + reaction "H + C3H7 = CH3 + C2H5"; + A 4060; + beta 2.19; + Ta 447.8402026; + } + un-named-reaction-215 + { + type reversibleArrheniusReaction; + reaction "OH + C3H7 = C2H5 + CH2OH"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-216 + { + type reversibleArrheniusReaction; + reaction "HO2 + C3H7 = O2 + C3H8"; + A 25500000; + beta 0.255; + Ta -474.5093382; + } + un-named-reaction-217 + { + type irreversibleArrheniusReaction; + reaction "HO2 + C3H7 = OH + C2H5 + CH2O"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-218 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H7 = 2C2H5"; + A 1.927e+10; + beta -0.32; + Ta 0; + } +} diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermo.compressibleGasGRI b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermo.compressibleGasGRI new file mode 100644 index 0000000000000000000000000000000000000000..392233e95dad42ef2a635b0471cb71d0baac2149 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermo.compressibleGasGRI @@ -0,0 +1,1390 @@ +OH +{ + specie + { + molWeight 17.00737; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.09288767 0.000548429716 1.26505228e-07 -8.79461556e-11 1.17412376e-14 3858.657 4.4766961 ); + lowCpCoeffs ( 3.99201543 -0.00240131752 4.61793841e-06 -3.88113333e-09 1.3641147e-12 3615.08056 -0.103925458 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + H 1; + } +} + +CN +{ + specie + { + molWeight 26.01785; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.7459805 4.3450775e-05 2.9705984e-07 -6.8651806e-11 4.4134173e-15 51536.188 2.7867601 ); + lowCpCoeffs ( 3.6129351 -0.00095551327 2.1442977e-06 -3.1516323e-10 -4.6430356e-13 51708.34 3.9804995 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + N 1; + } +} + +C2H3 +{ + specie + { + molWeight 27.04621; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.016724 0.0103302292 -4.68082349e-06 1.01763288e-09 -8.62607041e-14 34612.8739 7.78732378 ); + lowCpCoeffs ( 3.21246645 0.00151479162 2.59209412e-05 -3.57657847e-08 1.47150873e-11 34859.8468 8.51054025 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 3; + } +} + +N2 +{ + specie + { + molWeight 28.0134; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.0014879768 -5.68476e-07 1.0097038e-10 -6.753351e-15 -922.7977 5.980528 ); + lowCpCoeffs ( 3.298677 0.0014082404 -3.963222e-06 5.641515e-09 -2.444854e-12 -1020.8999 3.950372 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + } +} + +HOCN +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1368; + highCpCoeffs ( 5.89784885 0.00316789393 -1.11801064e-06 1.77243144e-10 -1.04339177e-14 -3706.53331 -6.18167825 ); + lowCpCoeffs ( 3.78604952 0.00688667922 -3.21487864e-06 5.17195767e-10 1.19360788e-14 -2826.984 5.63292162 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +N +{ + specie + { + molWeight 14.0067; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.4159429 0.00017489065 -1.1902369e-07 3.0226245e-11 -2.0360982e-15 56133.773 4.6496096 ); + lowCpCoeffs ( 2.5 0 0 0 0 56104.637 4.1939087 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + } +} + +C2H +{ + specie + { + molWeight 25.03027; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.16780652 0.00475221902 -1.83787077e-06 3.04190252e-10 -1.7723277e-14 67121.065 6.63589475 ); + lowCpCoeffs ( 2.88965733 0.0134099611 -2.84769501e-05 2.94791045e-08 -1.09331511e-11 66839.3932 6.22296438 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 1; + } +} + +HNO +{ + specie + { + molWeight 31.01407; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.9792509 0.0034944059 -7.8549778e-07 5.7479594e-11 -1.9335916e-16 11750.582 8.6063728 ); + lowCpCoeffs ( 4.5334916 -0.0056696171 1.8473207e-05 -1.7137094e-08 5.5454573e-12 11548.297 1.7498417 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + O 1; + } +} + +CH2CO +{ + specie + { + molWeight 42.03764; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.51129732 0.00900359745 -4.16939635e-06 9.23345882e-10 -7.94838201e-14 -7551.05311 0.632247205 ); + lowCpCoeffs ( 2.1358363 0.0181188721 -1.73947474e-05 9.34397568e-09 -2.01457615e-12 -7042.91804 12.215648 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 2; + O 1; + } +} + +CH3 +{ + specie + { + molWeight 15.03506; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.28571772 0.00723990037 -2.98714348e-06 5.95684644e-10 -4.67154394e-14 16775.5843 8.48007179 ); + lowCpCoeffs ( 3.6735904 0.00201095175 5.73021856e-06 -6.87117425e-09 2.54385734e-12 16444.9988 1.60456433 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + } +} + +C2H5 +{ + specie + { + molWeight 29.06215; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.95465642 0.0173972722 -7.98206668e-06 1.75217689e-09 -1.49641576e-13 12857.52 13.4624343 ); + lowCpCoeffs ( 4.30646568 -0.00418658892 4.97142807e-05 -5.99126606e-08 2.30509004e-11 12841.6265 4.70720924 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 5; + } +} + +C2H4 +{ + specie + { + molWeight 28.05418; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.03611116 0.0146454151 -6.71077915e-06 1.47222923e-09 -1.25706061e-13 4939.88614 10.3053693 ); + lowCpCoeffs ( 3.95920148 -0.00757052247 5.70990292e-05 -6.91588753e-08 2.69884373e-11 5089.77593 4.09733096 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 4; + } +} + +C3H8 +{ + specie + { + molWeight 44.09721; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.5341368 0.018872239 -6.2718491e-06 9.1475649e-10 -4.7838069e-14 -16467.516 -17.892349 ); + lowCpCoeffs ( 0.93355381 0.026424579 6.1059727e-06 -2.1977499e-08 9.5149253e-12 -13958.52 19.201691 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 3; + H 8; + } +} + +HCN +{ + specie + { + molWeight 27.02582; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.8022392 0.0031464228 -1.0632185e-06 1.6619757e-10 -9.799757e-15 14407.292 1.5754601 ); + lowCpCoeffs ( 2.2589886 0.01005117 -1.3351763e-05 1.0092349e-08 -3.0089028e-12 14712.633 8.9164419 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 1; + N 1; + } +} + +C2H6 +{ + specie + { + molWeight 30.07012; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.0718815 0.0216852677 -1.00256067e-05 2.21412001e-09 -1.9000289e-13 -11426.3932 15.1156107 ); + lowCpCoeffs ( 4.29142492 -0.0055015427 5.99438288e-05 -7.08466285e-08 2.68685771e-11 -11522.2055 2.66682316 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 6; + } +} + +NH3 +{ + specie + { + molWeight 17.03061; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.6344521 0.005666256 -1.7278676e-06 2.3867161e-10 -1.2578786e-14 -6544.6958 6.5662928 ); + lowCpCoeffs ( 4.2860274 -0.004660523 2.1718513e-05 -2.2808887e-08 8.2638046e-12 -6741.7285 -0.62537277 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 3; + } +} + +CO2 +{ + specie + { + molWeight 44.00995; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746029 0.00441437026 -2.21481404e-06 5.23490188e-10 -4.72084164e-14 -48759.166 2.27163806 ); + lowCpCoeffs ( 2.35677352 0.00898459677 -7.12356269e-06 2.45919022e-09 -1.43699548e-13 -48371.9697 9.90105222 ); + } + transport + { + As 1.572e-06; + Ts 240; + } + elements + { + C 1; + O 2; + } +} + +C2H2 +{ + specie + { + molWeight 26.03824; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.14756964 0.00596166664 -2.37294852e-06 4.67412171e-10 -3.61235213e-14 25935.9992 -1.23028121 ); + lowCpCoeffs ( 0.808681094 0.0233615629 -3.55171815e-05 2.80152437e-08 -8.50072974e-12 26428.9807 13.9397051 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 2; + } +} + +CH2OH +{ + specie + { + molWeight 31.03446; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.69266569 0.00864576797 -3.7510112e-06 7.87234636e-10 -6.48554201e-14 -3242.50627 5.81043215 ); + lowCpCoeffs ( 3.86388918 0.00559672304 5.93271791e-06 -1.04532012e-08 4.36967278e-12 -3193.91367 5.47302243 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + O 1; + } +} + +H2CN +{ + specie + { + molWeight 28.03379; + } + thermodynamics + { + Tlow 250; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.209703 0.0029692911 -2.8555891e-07 -1.63555e-10 3.0432589e-14 27677.109 -4.444478 ); + lowCpCoeffs ( 2.851661 0.0056952331 1.07114e-06 -1.622612e-09 -2.3511081e-13 28637.82 8.9927511 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + C 1; + N 1; + } +} + +HCCOH +{ + specie + { + molWeight 42.03764; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.9238291 0.00679236 -2.5658564e-06 4.4987841e-10 -2.9940101e-14 7264.626 -7.6017742 ); + lowCpCoeffs ( 1.2423733 0.031072201 -5.0866864e-05 4.3137131e-08 -1.4014594e-11 8031.6143 13.874319 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + O 1; + H 2; + } +} + +H2O2 +{ + specie + { + molWeight 34.01474; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.16500285 0.00490831694 -1.90139225e-06 3.71185986e-10 -2.87908305e-14 -17861.7877 2.91615662 ); + lowCpCoeffs ( 4.27611269 -0.000542822417 1.67335701e-05 -2.15770813e-08 8.62454363e-12 -17702.5821 3.43505074 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + O 2; + } +} + +HCO +{ + specie + { + molWeight 29.01852; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.77217438 0.00495695526 -2.48445613e-06 5.89161778e-10 -5.33508711e-14 4011.91815 9.79834492 ); + lowCpCoeffs ( 4.22118584 -0.00324392532 1.37799446e-05 -1.33144093e-08 4.33768865e-12 3839.56496 3.39437243 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 1; + O 1; + } +} + +NNH +{ + specie + { + molWeight 29.02137; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.7667544 0.0028915082 -1.041662e-06 1.6842594e-10 -1.0091896e-14 28650.697 4.4705067 ); + lowCpCoeffs ( 4.3446927 -0.0048497072 2.0059459e-05 -2.1726464e-08 7.9469539e-12 28791.973 2.977941 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + H 1; + } +} + +N2O +{ + specie + { + molWeight 44.0128; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.8230729 0.0026270251 -9.5850874e-07 1.6000712e-10 -9.7752303e-15 8073.4048 -2.2017207 ); + lowCpCoeffs ( 2.2571502 0.011304728 -1.3671319e-05 9.6819806e-09 -2.9307182e-12 8741.7744 10.757992 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + O 1; + } +} + +CH2(S) +{ + specie + { + molWeight 14.02709; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.29203842 0.00465588637 -2.01191947e-06 4.17906e-10 -3.39716365e-14 50925.9997 8.62650169 ); + lowCpCoeffs ( 4.19860411 -0.00236661419 8.2329622e-06 -6.68815981e-09 1.94314737e-12 50496.8163 -0.769118967 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 2; + } +} + +O2 +{ + specie + { + molWeight 31.9988; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.28253784 0.00148308754 -7.57966669e-07 2.09470555e-10 -2.16717794e-14 -1088.45772 5.45323129 ); + lowCpCoeffs ( 3.78245636 -0.00299673416 9.84730201e-06 -9.68129509e-09 3.24372837e-12 -1063.94356 3.65767573 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 2; + } +} + +CH2CHO +{ + specie + { + molWeight 43.04561; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.97567 0.008130591 -2.743624e-06 4.070304e-10 -2.176017e-14 490.3218 -5.045251 ); + lowCpCoeffs ( 3.409062 0.010738574 1.891492e-06 -7.158583e-09 2.867385e-12 1521.4766 9.55829 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + H 3; + C 2; + } +} + +HNCO +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1478; + highCpCoeffs ( 6.22395134 0.00317864004 -1.09378755e-06 1.70735163e-10 -9.95021955e-15 -16659.9344 -8.38224741 ); + lowCpCoeffs ( 3.63096317 0.00730282357 -2.28050003e-06 -6.61271298e-10 3.62235752e-13 -15587.3636 6.19457727 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +HCCO +{ + specie + { + molWeight 41.02967; + } + thermodynamics + { + Tlow 250; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.6282058 0.0040853401 -1.5934547e-06 2.8626052e-10 -1.9407832e-14 19327.215 -3.9302595 ); + lowCpCoeffs ( 2.2517214 0.017655021 -2.3729101e-05 1.7275759e-08 -5.0664811e-12 20059.449 12.490417 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + C 2; + O 1; + } +} + +H2 +{ + specie + { + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.3372792 -4.94024731e-05 4.99456778e-07 -1.79566394e-10 2.00255376e-14 -950.158922 -3.20502331 ); + lowCpCoeffs ( 2.34433112 0.00798052075 -1.9478151e-05 2.01572094e-08 -7.37611761e-12 -917.935173 0.683010238 ); + } + transport + { + As 6.362e-07; + Ts 72; + } + elements + { + H 2; + } +} + +NO2 +{ + specie + { + molWeight 46.0055; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.8847542 0.0021723956 -8.2806906e-07 1.574751e-10 -1.0510895e-14 2316.4983 -0.11741695 ); + lowCpCoeffs ( 3.9440312 -0.001585429 1.6657812e-05 -2.0475426e-08 7.8350564e-12 2896.6179 6.3119917 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + O 2; + } +} + +CH4 +{ + specie + { + molWeight 16.04303; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 0.074851495 0.0133909467 -5.73285809e-06 1.22292535e-09 -1.0181523e-13 -9468.34459 18.437318 ); + lowCpCoeffs ( 5.14987613 -0.0136709788 4.91800599e-05 -4.84743026e-08 1.66693956e-11 -10246.6476 -4.64130376 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 4; + } +} + +C +{ + specie + { + molWeight 12.01115; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.49266888 4.79889284e-05 -7.2433502e-08 3.74291029e-11 -4.87277893e-15 85451.2953 4.80150373 ); + lowCpCoeffs ( 2.55423955 -0.000321537724 7.33792245e-07 -7.32234889e-10 2.66521446e-13 85443.8832 4.53130848 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + } +} + +HO2 +{ + specie + { + molWeight 33.00677; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.0172109 0.00223982013 -6.3365815e-07 1.1424637e-10 -1.07908535e-14 111.856713 3.78510215 ); + lowCpCoeffs ( 4.30179801 -0.00474912051 2.11582891e-05 -2.42763894e-08 9.29225124e-12 294.80804 3.71666245 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + O 2; + } +} + +CH3CHO +{ + specie + { + molWeight 44.05358; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.4041108 0.011723059 -4.2263137e-06 6.8372451e-10 -4.0984863e-14 -22593.122 -3.4807917 ); + lowCpCoeffs ( 4.7294595 -0.0031932858 4.7534921e-05 -5.7458611e-08 2.1931112e-11 -21572.878 4.1030159 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 2; + H 4; + O 1; + } +} + +C3H7 +{ + specie + { + molWeight 43.08924; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.7026987 0.016044203 -5.283322e-06 7.629859e-10 -3.9392284e-14 8298.4336 -15.48018 ); + lowCpCoeffs ( 1.0515518 0.02599198 2.380054e-06 -1.9609569e-08 9.373247e-12 10631.863 21.122559 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 3; + H 7; + } +} + +CH3OH +{ + specie + { + molWeight 32.04243; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.78970791 0.0140938292 -6.36500835e-06 1.38171085e-09 -1.1706022e-13 -25374.8747 14.5023623 ); + lowCpCoeffs ( 5.71539582 -0.0152309129 6.52441155e-05 -7.10806889e-08 2.61352698e-11 -25642.7656 -1.50409823 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 4; + O 1; + } +} + +CH2O +{ + specie + { + molWeight 30.02649; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.76069008 0.00920000082 -4.42258813e-06 1.00641212e-09 -8.8385564e-14 -13995.8323 13.656323 ); + lowCpCoeffs ( 4.79372315 -0.00990833369 3.73220008e-05 -3.79285261e-08 1.31772652e-11 -14308.9567 0.6028129 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + C 1; + O 1; + } +} + +CO +{ + specie + { + molWeight 28.01055; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.71518561 0.00206252743 -9.98825771e-07 2.30053008e-10 -2.03647716e-14 -14151.8724 7.81868772 ); + lowCpCoeffs ( 3.57953347 -0.00061035368 1.01681433e-06 9.07005884e-10 -9.04424499e-13 -14344.086 3.50840928 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + O 1; + } +} + +CH3O +{ + specie + { + molWeight 31.03446; + } + thermodynamics + { + Tlow 250; + Thigh 3000; + Tcommon 1000; + highCpCoeffs ( 3.770799 0.007871497 -2.656384e-06 3.944431e-10 -2.112616e-14 127.83252 2.929575 ); + lowCpCoeffs ( 2.106204 0.007216595 5.338472e-06 -7.377636e-09 2.07561e-12 978.6011 13.152177 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 3; + O 1; + } +} + +O +{ + specie + { + molWeight 15.9994; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.56942078 -8.59741137e-05 4.19484589e-08 -1.00177799e-11 1.22833691e-15 29217.5791 4.78433864 ); + lowCpCoeffs ( 3.1682671 -0.00327931884 6.64306396e-06 -6.12806624e-09 2.11265971e-12 29122.2592 2.05193346 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + O 1; + } +} + +HCNN +{ + specie + { + molWeight 41.03252; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.8946362 0.0039895959 -1.598238e-06 2.9249395e-10 -2.0094686e-14 53452.941 -5.1030502 ); + lowCpCoeffs ( 2.5243194 0.015960619 -1.8816354e-05 1.212554e-08 -3.2357378e-12 54261.984 11.67587 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + N 2; + H 1; + } +} + +NCO +{ + specie + { + molWeight 42.01725; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.1521845 0.0023051761 -8.8033153e-07 1.4789098e-10 -9.0977996e-15 14004.123 -2.544266 ); + lowCpCoeffs ( 2.8269308 0.0088051688 -8.3866134e-06 4.8016964e-09 -1.3313595e-12 14682.477 9.5504646 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + C 1; + O 1; + } +} + +CH2 +{ + specie + { + molWeight 14.02709; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.87410113 0.00365639292 -1.40894597e-06 2.60179549e-10 -1.87727567e-14 46263.604 6.17119324 ); + lowCpCoeffs ( 3.76267867 0.000968872143 2.79489841e-06 -3.85091153e-09 1.68741719e-12 46004.0401 1.56253185 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 2; + } +} + +HCNO +{ + specie + { + molWeight 43.02522; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1382; + highCpCoeffs ( 6.59860456 0.00302778626 -1.07704346e-06 1.71666528e-10 -1.01439391e-14 17966.1339 -10.3306599 ); + lowCpCoeffs ( 2.64727989 0.0127505342 -1.04794236e-05 4.41432836e-09 -7.57521466e-13 19299.0252 10.7332972 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} + +NH2 +{ + specie + { + molWeight 16.02264; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.8347421 0.0032073082 -9.3390804e-07 1.3702953e-10 -7.9206144e-15 22171.957 6.5204163 ); + lowCpCoeffs ( 4.2040029 -0.0021061385 7.1068348e-06 -5.6115197e-09 1.6440717e-12 21885.91 -0.14184248 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 2; + } +} + +H2O +{ + specie + { + molWeight 18.01534; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399249 0.00217691804 -1.64072518e-07 -9.7041987e-11 1.68200992e-14 -30004.2971 4.9667701 ); + lowCpCoeffs ( 4.19864056 -0.0020364341 6.52040211e-06 -5.48797062e-09 1.77197817e-12 -30293.7267 -0.849032208 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + O 1; + } +} + +NH +{ + specie + { + molWeight 15.01467; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.7836928 0.001329843 -4.2478047e-07 7.8348501e-11 -5.504447e-15 42120.848 5.7407799 ); + lowCpCoeffs ( 3.4929085 0.00031179198 -1.4890484e-06 2.4816442e-09 -1.0356967e-12 41880.629 1.8483278 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + H 1; + } +} + +H +{ + specie + { + molWeight 1.00797; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.50000001 -2.30842973e-11 1.61561948e-14 -4.73515235e-18 4.98197357e-22 25473.6599 -0.446682914 ); + lowCpCoeffs ( 2.5 7.05332819e-13 -1.99591964e-15 2.30081632e-18 -9.27732332e-22 25473.6599 -0.446682853 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 1; + } +} + +AR +{ + specie + { + molWeight 39.948; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + lowCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + Ar 1; + } +} + +NO +{ + specie + { + molWeight 30.0061; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.2606056 0.0011911043 -4.2917048e-07 6.9457669e-11 -4.0336099e-15 9920.9746 6.3693027 ); + lowCpCoeffs ( 4.2184763 -0.004638976 1.1041022e-05 -9.3361354e-09 2.803577e-12 9844.623 2.2808464 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 1; + O 1; + } +} + +CH +{ + specie + { + molWeight 13.01912; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.87846473 0.000970913681 1.44445655e-07 -1.30687849e-10 1.76079383e-14 71012.4364 5.48497999 ); + lowCpCoeffs ( 3.48981665 0.000323835541 -1.68899065e-06 3.16217327e-09 -1.40609067e-12 70797.2934 2.08401108 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + C 1; + H 1; + } +} diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermophysicalProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..ef9ddce1dfa7c836a805ef53f31c67242c3f4bac --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/thermophysicalProperties @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type hePsiThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + energy sensibleEnthalpy; + equationOfState perfectGas; + specie specie; +} + +inertSpecie N2; + +chemistryReader foamChemistryReader; +foamChemistryFile "$FOAM_CASE/constant/reactionsGRI"; +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGasGRI"; + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/turbulenceProperties b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..1d750d99dd6489cb57d29363807343f233b1d0cb --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/constant/turbulenceProperties @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/blockMeshDict b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..92054dd89339a1135a77fada1a6362a5ab46506c --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/blockMeshDict @@ -0,0 +1,176 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + (0 0 -100) // 0 + + (3.6 -0.15717942211764708 -100) // 1 + (3.6 0.15717942211764708 -100) // 2 + + (3.85 -0.168094659764705905 -100) // 3 + (3.85 0.168094659764705905 -100) // 4 + + (9.1 -0.39731465035294123 -100) // 5 + (9.1 0.39731465035294123 -100) // 6 + + (0 0 0) // 7 + + (3.6 -0.15717942211764708 0) // 8 + (3.6 0.15717942211764708 0) // 9 + + (3.85 -0.168094659764705905 0) // 10 + (3.85 0.168094659764705905 0) // 11 + + (9.1 -0.39731465035294123 0) // 12 + (9.1 0.39731465035294123 0) // 13 + + + (150 -6.549142588235295 0) // 14 + (150 6.549142588235295 0) // 15 + + (0 0 500) // 16 + + (3.6 -0.15717942211764708 500) // 17 + (3.6 0.15717942211764708 500) // 18 + + (3.85 -0.168094659764705905 500) // 19 + (3.85 0.168094659764705905 500) // 20 + + (9.1 -0.39731465035294123 500) // 21 + (9.1 0.39731465035294123 500) // 22 + + (150 -6.549142588235295 500) // 23 + (150 6.549142588235295 500) // 24 +); + +blocks +( + hex ( 0 1 2 0 7 8 9 7) (5 1 20) simpleGrading (1 1 1) + hex ( 3 5 6 4 10 12 13 11) (5 1 20) simpleGrading (1 1 1) + + hex ( 7 8 9 7 16 17 18 16) (5 1 70) simpleGrading (1 1 2) + hex ( 8 10 11 9 17 19 20 18) (1 1 70) simpleGrading (1 1 2) + hex (10 12 13 11 19 21 22 20) (5 1 70) simpleGrading (1 1 2) + hex (12 14 15 13 21 23 24 22) (60 1 70) simpleGrading (3 1 2) +); + +boundary +( + inletCH4 + { + type patch; + faces + ( + (1 0 0 2) + ); + } + + wallOutside + { + type wall; + faces + ( + (14 15 24 23) + ); + } + + wallTube + { + type wall; + faces + ( + (1 2 9 8) + (10 11 9 8) + (4 3 10 11) + (5 6 13 12) + ); + } + + inletPilot + { + type patch; + faces + ( + (5 3 4 6) + ); + } + + inletAir + { + type patch; + faces + ( + (14 12 13 15) + ); + } + + outlet + { + type patch; + faces + ( + (16 17 18 16) + (17 19 20 18) + (19 21 22 20) + (21 22 24 23) + ); + } + + axis + { + type empty; + faces + ( + (0 7 7 0) + (7 16 16 7) + ); + } + + frontAndBack_pos + { + type wedge; + faces + ( + (2 0 7 9) + (6 4 11 13) + + (9 7 16 18) + (11 9 18 20) + (13 11 20 22) + (15 13 22 24) + ); + } + + frontAndBack_neg + { + type wedge; + faces + ( + (0 1 8 7) + (3 5 12 10) + + (7 8 17 16) + (8 10 19 17) + (10 12 21 19) + (12 14 23 21) + ); + } +); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/controlDict b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..6098ecaa4945e022aa9a1769980d29541438d08d --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/controlDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 7000; + +deltaT 1; + +writeControl runTime; + +writeInterval 100; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 10; + +writeCompression no; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/decomposeParDict b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..5126da72cdc2ec14c654aec86ba8bd9b3f5f2b61 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/decomposeParDict @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method simple; + +simpleCoeffs +{ + n (1 1 6); + delta 0.001; +} + +hierarchicalCoeffs +{ + n ( 1 1 1 ); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile ""; +} + +distributed no; + +roots ( ); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSchemes b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..2cb5c52feffddf65d995b516d0919bda06a7b6b8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSchemes @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default localEuler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss limitedLinearV 1; + div(phi,Yi) Gauss limitedLinear01 1; + div(phi,h) Gauss limitedLinear 1; + div(phi,K) Gauss limitedLinear 1; + div(phid,p) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,Yi_h) Gauss limitedLinear01 1; + div(phi,k) Gauss limitedLinear 1; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSolution b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..3a874039f5e2988998aff95a00b27c9eb7ab4eb2 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/fvSolution @@ -0,0 +1,103 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "rho.*" + { + solver diagonal; + } + + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.01; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|h|k|epsilon)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(U|h|k|epsilon)Final" + { + $U; + } + + Yi + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-8; + relTol 0.1; + } + + G + { + solver PCG; + preconditioner DIC; + tolerance 1e-5; + relTol 0.1; + } + + GFinal + { + $G; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 2; + nNonOrthogonalCorrectors 0; + + maxDeltaT 1e-4; + maxCo 0.25; + alphaTemp 0.05; + alphaY 0.05; + Yref + { + O2 0.1; + CH4 0.1; + } + rDeltaTSmoothingCoeff 0.025; + rDeltaTDampingCoeff 1; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/sampleDict b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/sampleDict new file mode 100644 index 0000000000000000000000000000000000000000..b5fb7d735abe10ecf80d56b2a1d5d4a93b9fbfcd --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/sampleDict @@ -0,0 +1,162 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location system; + object sampleDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Set output format : choice of +// xmgr +// jplot +// gnuplot +// raw +setFormat raw; + +// Surface output format. Choice of +// null : suppress output +// foamFile : separate points, faces and values file +// dx : DX scalar or vector format +// vtk : VTK ascii format +// raw : x y z value format for use with e.g. gnuplot 'splot'. +// +// Note: +// other formats such as obj, stl, etc can also be written (by proxy) +// but without any values! +surfaceFormat vtk; + +// interpolationScheme. choice of +// cell : use cell-centre value only; constant over cells (default) +// cellPoint : use cell-centre and vertex values +// cellPointFace : use cell-centre, vertex and face values. +// 1] vertex values determined from neighbouring cell-centre values +// 2] face values determined using the current face interpolation scheme +// for the field (linear, gamma, etc.) +interpolationScheme cellPoint; + +// Fields to sample. +fields +( + T + CO + CO2 + H2 + H2O + N2 + O2 + OH + CH4 +); + + +// Set sampling definition: choice of +// uniform evenly distributed points on line +// face one point per face intersection +// midPoint one point per cell, inbetween two face intersections +// midPointAndFace combination of face and midPoint +// +// curve specified points, not nessecary on line, uses +// tracking +// cloud specified points, uses findCell +// +// axis: how to write point coordinate. Choice of +// - x/y/z: x/y/z coordinate only +// - xyz: three columns +// (probably does not make sense for anything but raw) +// - distance: distance from start of sampling line (if uses line) or +// distance from first specified sampling point +// +// type specific: +// uniform, face, midPoint, midPointAndFace : start and end coordinate +// uniform: extra number of sampling points +// curve, cloud: list of coordinates +sets +( + Centerline + { + type uniform; + axis distance; + + start (0.00001 0. 0. ); + end (0.00001 0. 0.500); + nPoints 500; + } + + Radial_075 + { + type uniform; + axis distance; + + start (0 0 0.054); + end (0.020 0 0.054); + nPoints 100; + } + Radial_15 + { + type uniform; + axis distance; + + start (0 0 0.108); + end (0.024 0.108); + nPoints 100; + } + Radial_30 + { + type uniform; + axis distance; + + start (0 0 0.216); + end (0.042 0 0.216); + nPoints 100; + } + Radial_45 + { + type uniform; + axis distance; + + start (0 0 0.324); + end (0.056 0 0.324); + nPoints 100; + } + Radial_60 + { + type uniform; + axis distance; + + start (0 0 0.432); + end (0.070 0 0.432); + nPoints 100; + } + Radial_75 + { + type uniform; + axis distance; + + start (0 0 0.54); + end (0.080 0 0.54); + nPoints 100; + } +); + + +// Surface sampling definition: choice of +// plane : values on plane defined by point, normal. +// patch : values on patch. +// +// 1] patches are not triangulated by default +// 2] planes are always triangulated +// 3] iso-surfaces are always triangulated +surfaces (); + +// *********************************************************************** // diff --git a/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/setFieldsDict b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..7c9789f826ef16be14ad147f61aab30110171e2c --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/setFieldsDict @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue T 300 + volScalarFieldValue N2 0.77 + volScalarFieldValue O2 0.23 + volScalarFieldValue CH4 0 +); + +regions +( + boxToCell + { + box (0 -10 -100) (0.0036 10 0); + fieldValues + ( + volScalarFieldValue CH4 0.1561 + volScalarFieldValue O2 0.1966 + volScalarFieldValue N2 0.6473 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D/constant/thermo.compressibleGas index 6033aca9a13a7967cae33c62d1aa44ae18ba54c1..371a3bb6c87f57d6bde8d7e4b6d585c89893168b 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D/constant/thermo.compressibleGas +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/constant/thermo.compressibleGas index 6033aca9a13a7967cae33c62d1aa44ae18ba54c1..371a3bb6c87f57d6bde8d7e4b6d585c89893168b 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/constant/thermo.compressibleGas +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CH4 b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CH4 new file mode 100644 index 0000000000000000000000000000000000000000..ed66886d0858cb3413140d8864ca0772b8ac1057 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CH4 @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CH4; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 1.0; + } + air + { + type fixedValue; + value uniform 0.0; + } + outlet + { + type inletOutlet; + inletValue uniform 0.0; + value uniform 0.0; + + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CO2 b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CO2 new file mode 100644 index 0000000000000000000000000000000000000000..ec3c1a2701df2ca552a7a18d31dd52f3e667dc65 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/CO2 @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CO2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0; + } + air + { + type fixedValue; + value uniform 0; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/H2O b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/H2O new file mode 100644 index 0000000000000000000000000000000000000000..a3f7279667a2c568ac7871043177725d002cdcf8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/H2O @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0; + } + air + { + type fixedValue; + value uniform 0; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/N2 b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/N2 new file mode 100644 index 0000000000000000000000000000000000000000..f8a1a950134a9830ef84527bae615e28bed1379c --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/N2 @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0; + } + air + { + type fixedValue; + value uniform 0.77; + } + outlet + { + type inletOutlet; + inletValue uniform 1; + value uniform 1; + + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/O2 b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/O2 new file mode 100644 index 0000000000000000000000000000000000000000..745e52c4ea052c979d9f31d65dc732463c4c4987 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/O2 @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0.0; + } + air + { + type fixedValue; + value uniform 0.23; + } + outlet + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/T b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/T new file mode 100644 index 0000000000000000000000000000000000000000..bdb6922939fe4c7b401cf1410a5f1774f08daad7 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/T @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 2000; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 293; + } + air + { + type fixedValue; + value uniform 293; + } + outlet + { + type inletOutlet; + inletValue uniform 293; + value uniform 293; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/U b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/U new file mode 100644 index 0000000000000000000000000000000000000000..27abc49822822e7854fb2f5eecbb4f9d62f040ea --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/U @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + fuel + { + type fixedValue; + value uniform (0.1 0 0); + } + air + { + type fixedValue; + value uniform (-0.1 0 0); + } + outlet + { + type pressureInletOutletVelocity; + value $internalField; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/Ydefault b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/Ydefault new file mode 100644 index 0000000000000000000000000000000000000000..0f10bbc69e70be5260710026151ce54cf3fff1fd --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/Ydefault @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0.0; + } + air + { + type fixedValue; + value uniform 0.0; + } + outlet + { + type inletOutlet; + inletValue uniform 0.0; + value uniform 0.0; + + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/alphat b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/alphat new file mode 100644 index 0000000000000000000000000000000000000000..925eb73d09b5a476500fe6d6f287cbca7bc27ed7 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/alphat @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + fuel + { + type fixedValue; + value uniform 0; + } + air + { + type fixedValue; + value uniform 0; + } + outlet + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/p b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/p new file mode 100644 index 0000000000000000000000000000000000000000..82fd55d35b3b63a623d1cf77ba314bc6fbd9a50b --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/0/p @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + fuel + { + type zeroGradient; + } + air + { + type zeroGradient; + } + outlet + { + type totalPressure; + p0 $internalField; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/chemistryProperties b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/chemistryProperties new file mode 100644 index 0000000000000000000000000000000000000000..66ae29cb45d61e4af02c66d5926602e701a81489 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/chemistryProperties @@ -0,0 +1,135 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver ode; + chemistryThermo psi; + TDAC on; +} + +chemistry on; + +initialChemicalTimeStep 1e-7; + +odeCoeffs +{ + solver seulex; + absTol 1e-12; + relTol 1e-1; +} + +reduction +{ + // Activate reduction + active on; + + // Switch logging of the reduction statistics and performance + log on; + + // Tolerance depends on the reduction method, see details for each method + tolerance 1e-4; + + // Available methods: DRG, DAC, DRGEP, PFA, EFA + method DAC; + + // Search initiating set (SIS) of species, needed for most methods + initialSet + { + CO; + CH4; + HO2; + } + + // For DAC, option to automatically change the SIS switch from HO2 to H2O + // and CO to CO2, + disable fuel + automaticSIS off; + + // When automaticSIS, the method needs to know the fuel + fuelSpecies + { + CH4 1; + } +} + +tabulation +{ + // Activate tabulation + active on; + + // Switch logging of the tabulation statistics and performance + log on; + + printProportion off; + + printNumRetrieve off; + + // Tolerance used for retrieve and grow + tolerance 1e-3; + + // ISAT is the only method currently available + method ISAT; + + // Scale factors used in the definition of the ellipsoid of accuracy + scaleFactor + { + otherSpecies 1; + Temperature 25000; + Pressure 1e15; + deltaT 1; + } + + // Maximum number of leafs stored in the binary tree + maxNLeafs 2000; + + // Maximum life time of the leafs (in time steps) used in unsteady + // simulations to force renewal of the stored chemPoints and keep the tree + // small + chPMaxLifeTime 100; + + // Maximum number of growth allowed on a chemPoint to avoid distorted + // chemPoints + maxGrowth 10; + + // Number of time steps between analysis of the tree to remove old + // chemPoints or try to balance it + checkEntireTreeInterval 5; + + // Parameters used to decide whether to balance or not if the tree's depth + // is larger than maxDepthFactor*log2(nLeafs) then balance the tree + maxDepthFactor 2; + + // Try to balance the tree only if the size of the tree is greater + minBalanceThreshold 30; + + // Activate the use of a MRU (most recently used) list + MRURetrieve false; + + // Maximum size of the MRU list + maxMRUSize 0; + + // Allow to grow points + growPoints true; + + // When mechanism reduction is used, new dimensions might be added + // maxNumNewDim set the maximum number of new dimensions added during a + // growth + maxNumNewDim 10; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/combustionProperties b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/combustionProperties new file mode 100644 index 0000000000000000000000000000000000000000..1182a1bf06de390149f032e4b8c60e650eab0de7 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/combustionProperties @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel laminar<psiChemistryCombustion>; + +active true; + +laminarCoeffs +{ +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactions b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactions new file mode 100644 index 0000000000000000000000000000000000000000..418f256c348f94a23564db6b1008f7c378881cef --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactions @@ -0,0 +1,28 @@ +elements +( +O +C +H +N +); + +species +( + O2 + H2O + CH4 + CO2 + N2 +); + +reactions +{ + methaneReaction + { + type irreversibleArrheniusReaction; + reaction "CH4 + 2O2 = CO2 + 2H2O"; + A 5.2e16; + beta 0; + Ta 14906; + } +} diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactionsGRI b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactionsGRI new file mode 100644 index 0000000000000000000000000000000000000000..de8ff0a51795e582d170ad7c7dcfb1b29564742b --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/reactionsGRI @@ -0,0 +1,5590 @@ +elements +5 +( +O +H +C +N +Ar +) +; + +species +53 +( +CH4 +CH2O +CH3O +H +O2 +H2 +O +OH +H2O +HO2 +H2O2 +C +CH +CH2 +CH2(S) +CH3 +CO +CO2 +HCO +CH2OH +CH3OH +C2H +C2H2 +C2H3 +C2H4 +C2H5 +C2H6 +HCCO +CH2CO +HCCOH +N +NH +NH2 +NH3 +NNH +NO +NO2 +N2O +HNO +CN +HCN +H2CN +HCNN +HCNO +HOCN +HNCO +NCO +N2 +AR +C3H7 +C3H8 +CH2CHO +CH3CHO +) +; + +reactions +{ + un-named-reaction-0 + { + type reversibleArrheniusReaction; + reaction "O + H2 = H + OH"; + A 38.7; + beta 2.7; + Ta 3149.98; + } + un-named-reaction-1 + { + type reversibleArrheniusReaction; + reaction "O + HO2 = OH + O2"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-2 + { + type reversibleArrheniusReaction; + reaction "O + H2O2 = OH + HO2"; + A 9630; + beta 2; + Ta 2012.76; + } + un-named-reaction-3 + { + type reversibleArrheniusReaction; + reaction "O + CH = H + CO"; + A 5.7e+10; + beta 0; + Ta 0; + } + un-named-reaction-4 + { + type reversibleArrheniusReaction; + reaction "O + CH2 = H + HCO"; + A 8e+10; + beta 0; + Ta 0; + } + un-named-reaction-5 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H2 + CO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-6 + { + type reversibleArrheniusReaction; + reaction "O + CH2(S) = H + HCO"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-7 + { + type reversibleArrheniusReaction; + reaction "O + CH3 = H + CH2O"; + A 5.06e+10; + beta 0; + Ta 0; + } + un-named-reaction-8 + { + type reversibleArrheniusReaction; + reaction "O + CH4 = OH + CH3"; + A 1.02e+06; + beta 1.5; + Ta 4327.44; + } + un-named-reaction-9 + { + type reversibleArrheniusReaction; + reaction "O + HCO = OH + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-10 + { + type reversibleArrheniusReaction; + reaction "O + HCO = H + CO2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-11 + { + type reversibleArrheniusReaction; + reaction "O + CH2O = OH + HCO"; + A 3.9e+10; + beta 0; + Ta 1781.3; + } + un-named-reaction-12 + { + type reversibleArrheniusReaction; + reaction "O + CH2OH = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-13 + { + type reversibleArrheniusReaction; + reaction "O + CH3O = OH + CH2O"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-14 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH2OH"; + A 388; + beta 2.5; + Ta 1559.89; + } + un-named-reaction-15 + { + type reversibleArrheniusReaction; + reaction "O + CH3OH = OH + CH3O"; + A 130; + beta 2.5; + Ta 2515.96; + } + un-named-reaction-16 + { + type reversibleArrheniusReaction; + reaction "O + C2H = CH + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-17 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = H + HCCO"; + A 13500; + beta 2; + Ta 956.063; + } + un-named-reaction-18 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = OH + C2H"; + A 4.6e+16; + beta -1.41; + Ta 14567.4; + } + un-named-reaction-19 + { + type reversibleArrheniusReaction; + reaction "O + C2H2 = CO + CH2"; + A 6940; + beta 2; + Ta 956.063; + } + un-named-reaction-20 + { + type reversibleArrheniusReaction; + reaction "O + C2H3 = H + CH2CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-21 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = CH3 + HCO"; + A 12500; + beta 1.83; + Ta 110.702; + } + un-named-reaction-22 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = CH3 + CH2O"; + A 2.24e+10; + beta 0; + Ta 0; + } + un-named-reaction-23 + { + type reversibleArrheniusReaction; + reaction "O + C2H6 = OH + C2H5"; + A 89800; + beta 1.92; + Ta 2863.16; + } + un-named-reaction-24 + { + type reversibleArrheniusReaction; + reaction "O + HCCO = H + 2CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-25 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = OH + HCCO"; + A 1e+10; + beta 0; + Ta 4025.53; + } + un-named-reaction-26 + { + type reversibleArrheniusReaction; + reaction "O + CH2CO = CH2 + CO2"; + A 1.75e+09; + beta 0; + Ta 679.308; + } + un-named-reaction-27 + { + type reversibleArrheniusReaction; + reaction "O2 + CO = O + CO2"; + A 2.5e+09; + beta 0; + Ta 24052.5; + } + un-named-reaction-28 + { + type reversibleArrheniusReaction; + reaction "O2 + CH2O = HO2 + HCO"; + A 1e+11; + beta 0; + Ta 20127.6; + } + un-named-reaction-29 + { + type reversibleArrheniusReaction; + reaction "H + 2O2 = HO2 + O2"; + A 2.08e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-30 + { + type reversibleArrheniusReaction; + reaction "H + O2 + H2O = HO2 + H2O"; + A 1.126e+13; + beta -0.76; + Ta 0; + } + un-named-reaction-31 + { + type reversibleArrheniusReaction; + reaction "H + O2 + N2 = HO2 + N2"; + A 2.6e+13; + beta -1.24; + Ta 0; + } + un-named-reaction-32 + { + type reversibleArrheniusReaction; + reaction "H + O2 + AR = HO2 + AR"; + A 7e+11; + beta -0.8; + Ta 0; + } + un-named-reaction-33 + { + type reversibleArrheniusReaction; + reaction "H + O2 = O + OH"; + A 2.65e+13; + beta -0.6707; + Ta 8574.88; + } + un-named-reaction-34 + { + type reversibleArrheniusReaction; + reaction "2H + H2 = 2H2"; + A 9e+10; + beta -0.6; + Ta 0; + } + un-named-reaction-35 + { + type reversibleArrheniusReaction; + reaction "2H + H2O = H2 + H2O"; + A 6e+13; + beta -1.25; + Ta 0; + } + un-named-reaction-36 + { + type reversibleArrheniusReaction; + reaction "2H + CO2 = H2 + CO2"; + A 5.5e+14; + beta -2; + Ta 0; + } + un-named-reaction-37 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O + H2O"; + A 3.97e+09; + beta 0; + Ta 337.641; + } + un-named-reaction-38 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = O2 + H2"; + A 4.48e+10; + beta 0; + Ta 537.408; + } + un-named-reaction-39 + { + type reversibleArrheniusReaction; + reaction "H + HO2 = 2OH"; + A 8.4e+10; + beta 0; + Ta 319.526; + } + un-named-reaction-40 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = HO2 + H2"; + A 12100; + beta 2; + Ta 2616.59; + } + un-named-reaction-41 + { + type reversibleArrheniusReaction; + reaction "H + H2O2 = OH + H2O"; + A 1e+10; + beta 0; + Ta 1811.49; + } + un-named-reaction-42 + { + type reversibleArrheniusReaction; + reaction "H + CH = C + H2"; + A 1.65e+11; + beta 0; + Ta 0; + } + un-named-reaction-43 + { + type reversibleArrheniusReaction; + reaction "H + CH2(S) = CH + H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-44 + { + type reversibleArrheniusReaction; + reaction "H + CH4 = CH3 + H2"; + A 660000; + beta 1.62; + Ta 5454.59; + } + un-named-reaction-45 + { + type reversibleArrheniusReaction; + reaction "H + HCO = H2 + CO"; + A 7.34e+10; + beta 0; + Ta 0; + } + un-named-reaction-46 + { + type reversibleArrheniusReaction; + reaction "H + CH2O = HCO + H2"; + A 57400; + beta 1.9; + Ta 1379.75; + } + un-named-reaction-47 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-48 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = OH + CH3"; + A 1.65e+08; + beta 0.65; + Ta -142.906; + } + un-named-reaction-49 + { + type reversibleArrheniusReaction; + reaction "H + CH2OH = CH2(S) + H2O"; + A 3.28e+10; + beta -0.09; + Ta 306.947; + } + un-named-reaction-50 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H + CH2OH"; + A 41500; + beta 1.63; + Ta 968.14; + } + un-named-reaction-51 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = H2 + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-52 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = OH + CH3"; + A 1.5e+09; + beta 0.5; + Ta -55.351; + } + un-named-reaction-53 + { + type reversibleArrheniusReaction; + reaction "H + CH3O = CH2(S) + H2O"; + A 2.62e+11; + beta -0.23; + Ta 538.415; + } + un-named-reaction-54 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH2OH + H2"; + A 17000; + beta 2.1; + Ta 2450.54; + } + un-named-reaction-55 + { + type reversibleArrheniusReaction; + reaction "H + CH3OH = CH3O + H2"; + A 4200; + beta 2.1; + Ta 2450.54; + } + un-named-reaction-56 + { + type reversibleArrheniusReaction; + reaction "H + C2H3 = H2 + C2H2"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-57 + { + type reversibleArrheniusReaction; + reaction "H + C2H4 = C2H3 + H2"; + A 1325; + beta 2.53; + Ta 6159.06; + } + un-named-reaction-58 + { + type reversibleArrheniusReaction; + reaction "H + C2H5 = H2 + C2H4"; + A 2e+09; + beta 0; + Ta 0; + } + un-named-reaction-59 + { + type reversibleArrheniusReaction; + reaction "H + C2H6 = C2H5 + H2"; + A 115000; + beta 1.9; + Ta 3789.03; + } + un-named-reaction-60 + { + type reversibleArrheniusReaction; + reaction "H + HCCO = CH2(S) + CO"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-61 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = HCCO + H2"; + A 5e+10; + beta 0; + Ta 4025.53; + } + un-named-reaction-62 + { + type reversibleArrheniusReaction; + reaction "H + CH2CO = CH3 + CO"; + A 1.13e+10; + beta 0; + Ta 1724.94; + } + un-named-reaction-63 + { + type reversibleArrheniusReaction; + reaction "H + HCCOH = H + CH2CO"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-64 + { + type reversibleArrheniusReaction; + reaction "OH + H2 = H + H2O"; + A 216000; + beta 1.51; + Ta 1725.95; + } + un-named-reaction-65 + { + type reversibleArrheniusReaction; + reaction "2OH = O + H2O"; + A 35.7; + beta 2.4; + Ta -1061.73; + } + un-named-reaction-66 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 1.45e+10; + beta 0; + Ta -251.596; + } + un-named-reaction-67 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 2e+09; + beta 0; + Ta 214.863; + } + un-named-reaction-68 + { + type reversibleArrheniusReaction; + reaction "OH + H2O2 = HO2 + H2O"; + A 1.7e+15; + beta 0; + Ta 14798.9; + } + un-named-reaction-69 + { + type reversibleArrheniusReaction; + reaction "OH + C = H + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-70 + { + type reversibleArrheniusReaction; + reaction "OH + CH = H + HCO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-71 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = H + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-72 + { + type reversibleArrheniusReaction; + reaction "OH + CH2 = CH + H2O"; + A 11300; + beta 2; + Ta 1509.57; + } + un-named-reaction-73 + { + type reversibleArrheniusReaction; + reaction "OH + CH2(S) = H + CH2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-74 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2 + H2O"; + A 56000; + beta 1.6; + Ta 2727.3; + } + un-named-reaction-75 + { + type reversibleArrheniusReaction; + reaction "OH + CH3 = CH2(S) + H2O"; + A 6.44e+14; + beta -1.34; + Ta 713.022; + } + un-named-reaction-76 + { + type reversibleArrheniusReaction; + reaction "OH + CH4 = CH3 + H2O"; + A 100000; + beta 1.6; + Ta 1569.96; + } + un-named-reaction-77 + { + type reversibleArrheniusReaction; + reaction "OH + CO = H + CO2"; + A 47600; + beta 1.228; + Ta 35.2234; + } + un-named-reaction-78 + { + type reversibleArrheniusReaction; + reaction "OH + HCO = H2O + CO"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-79 + { + type reversibleArrheniusReaction; + reaction "OH + CH2O = HCO + H2O"; + A 3.43e+06; + beta 1.18; + Ta -224.926; + } + un-named-reaction-80 + { + type reversibleArrheniusReaction; + reaction "OH + CH2OH = H2O + CH2O"; + A 5e+09; + beta 0; + Ta 0; + } + un-named-reaction-81 + { + type reversibleArrheniusReaction; + reaction "OH + CH3O = H2O + CH2O"; + A 5e+09; + beta 0; + Ta 0; + } + un-named-reaction-82 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH2OH + H2O"; + A 1440; + beta 2; + Ta -422.681; + } + un-named-reaction-83 + { + type reversibleArrheniusReaction; + reaction "OH + CH3OH = CH3O + H2O"; + A 6300; + beta 2; + Ta 754.787; + } + un-named-reaction-84 + { + type reversibleArrheniusReaction; + reaction "OH + C2H = H + HCCO"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-85 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + CH2CO"; + A 2.18e-07; + beta 4.5; + Ta -503.191; + } + un-named-reaction-86 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = H + HCCOH"; + A 504; + beta 2.3; + Ta 6793.08; + } + un-named-reaction-87 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = C2H + H2O"; + A 33700; + beta 2; + Ta 7044.68; + } + un-named-reaction-88 + { + type reversibleArrheniusReaction; + reaction "OH + C2H2 = CH3 + CO"; + A 4.83e-07; + beta 4; + Ta -1006.38; + } + un-named-reaction-89 + { + type reversibleArrheniusReaction; + reaction "OH + C2H3 = H2O + C2H2"; + A 5e+09; + beta 0; + Ta 0; + } + un-named-reaction-90 + { + type reversibleArrheniusReaction; + reaction "OH + C2H4 = C2H3 + H2O"; + A 3600; + beta 2; + Ta 1257.98; + } + un-named-reaction-91 + { + type reversibleArrheniusReaction; + reaction "OH + C2H6 = C2H5 + H2O"; + A 3540; + beta 2.12; + Ta 437.776; + } + un-named-reaction-92 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CO = HCCO + H2O"; + A 7.5e+09; + beta 0; + Ta 1006.38; + } + un-named-reaction-93 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 1.3e+08; + beta 0; + Ta -820.202; + } + un-named-reaction-94 + { + type reversibleArrheniusReaction; + reaction "2HO2 = O2 + H2O2"; + A 4.2e+11; + beta 0; + Ta 6038.29; + } + un-named-reaction-95 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2 = OH + CH2O"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-96 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = O2 + CH4"; + A 1e+09; + beta 0; + Ta 0; + } + un-named-reaction-97 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH3 = OH + CH3O"; + A 3.78e+10; + beta 0; + Ta 0; + } + un-named-reaction-98 + { + type reversibleArrheniusReaction; + reaction "HO2 + CO = OH + CO2"; + A 1.5e+11; + beta 0; + Ta 11875.3; + } + un-named-reaction-99 + { + type reversibleArrheniusReaction; + reaction "HO2 + CH2O = HCO + H2O2"; + A 5600; + beta 2; + Ta 6038.29; + } + un-named-reaction-100 + { + type reversibleArrheniusReaction; + reaction "C + O2 = O + CO"; + A 5.8e+10; + beta 0; + Ta 289.838; + } + un-named-reaction-101 + { + type reversibleArrheniusReaction; + reaction "C + CH2 = H + C2H"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-102 + { + type reversibleArrheniusReaction; + reaction "C + CH3 = H + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-103 + { + type reversibleArrheniusReaction; + reaction "CH + O2 = O + HCO"; + A 6.71e+10; + beta 0; + Ta 0; + } + un-named-reaction-104 + { + type reversibleArrheniusReaction; + reaction "CH + H2 = H + CH2"; + A 1.08e+11; + beta 0; + Ta 1564.92; + } + un-named-reaction-105 + { + type reversibleArrheniusReaction; + reaction "CH + H2O = H + CH2O"; + A 5.71e+09; + beta 0; + Ta -379.909; + } + un-named-reaction-106 + { + type reversibleArrheniusReaction; + reaction "CH + CH2 = H + C2H2"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-107 + { + type reversibleArrheniusReaction; + reaction "CH + CH3 = H + C2H3"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-108 + { + type reversibleArrheniusReaction; + reaction "CH + CH4 = H + C2H4"; + A 6e+10; + beta 0; + Ta 0; + } + un-named-reaction-109 + { + type reversibleArrheniusReaction; + reaction "CH + CO2 = HCO + CO"; + A 1.9e+11; + beta 0; + Ta 7946.4; + } + un-named-reaction-110 + { + type reversibleArrheniusReaction; + reaction "CH + CH2O = H + CH2CO"; + A 9.46e+10; + beta 0; + Ta -259.143; + } + un-named-reaction-111 + { + type reversibleArrheniusReaction; + reaction "CH + HCCO = CO + C2H2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-112 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = OH + H + CO"; + A 5e+09; + beta 0; + Ta 754.787; + } + un-named-reaction-113 + { + type reversibleArrheniusReaction; + reaction "CH2 + H2 = H + CH3"; + A 500; + beta 2; + Ta 3638.07; + } + un-named-reaction-114 + { + type reversibleArrheniusReaction; + reaction "2CH2 = H2 + C2H2"; + A 1.6e+12; + beta 0; + Ta 6010.12; + } + un-named-reaction-115 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH3 = H + C2H4"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-116 + { + type reversibleArrheniusReaction; + reaction "CH2 + CH4 = 2CH3"; + A 2460; + beta 2; + Ta 4161.39; + } + un-named-reaction-117 + { + type reversibleArrheniusReaction; + reaction "CH2 + HCCO = C2H3 + CO"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-118 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + N2 = CH2 + N2"; + A 1.5e+10; + beta 0; + Ta 301.915; + } + un-named-reaction-119 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + AR = CH2 + AR"; + A 9e+09; + beta 0; + Ta 301.915; + } + un-named-reaction-120 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = H + OH + CO"; + A 2.8e+10; + beta 0; + Ta 0; + } + un-named-reaction-121 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + O2 = CO + H2O"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-122 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2 = CH3 + H"; + A 7e+10; + beta 0; + Ta 0; + } + un-named-reaction-123 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + H2O = CH2 + H2O"; + A 3e+10; + beta 0; + Ta 0; + } + un-named-reaction-124 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH3 = H + C2H4"; + A 1.2e+10; + beta 0; + Ta -286.819; + } + un-named-reaction-125 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CH4 = 2CH3"; + A 1.6e+10; + beta 0; + Ta -286.819; + } + un-named-reaction-126 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO = CH2 + CO"; + A 9e+09; + beta 0; + Ta 0; + } + un-named-reaction-127 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CH2 + CO2"; + A 7e+09; + beta 0; + Ta 0; + } + un-named-reaction-128 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + CO2 = CO + CH2O"; + A 1.4e+10; + beta 0; + Ta 0; + } + un-named-reaction-129 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + C2H6 = CH3 + C2H5"; + A 4e+10; + beta 0; + Ta -276.755; + } + un-named-reaction-130 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = O + CH3O"; + A 3.56e+10; + beta 0; + Ta 15337.3; + } + un-named-reaction-131 + { + type reversibleArrheniusReaction; + reaction "CH3 + O2 = OH + CH2O"; + A 2.31e+09; + beta 0; + Ta 10222.3; + } + un-named-reaction-132 + { + type reversibleArrheniusReaction; + reaction "CH3 + H2O2 = HO2 + CH4"; + A 24.5; + beta 2.47; + Ta 2606.53; + } + un-named-reaction-133 + { + type reversibleArrheniusReaction; + reaction "2CH3 = H + C2H5"; + A 6.84e+09; + beta 0.1; + Ta 5333.83; + } + un-named-reaction-134 + { + type reversibleArrheniusReaction; + reaction "CH3 + HCO = CH4 + CO"; + A 2.648e+10; + beta 0; + Ta 0; + } + un-named-reaction-135 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH2O = HCO + CH4"; + A 3.32; + beta 2.81; + Ta 2948.7; + } + un-named-reaction-136 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH2OH + CH4"; + A 30000; + beta 1.5; + Ta 5001.72; + } + un-named-reaction-137 + { + type reversibleArrheniusReaction; + reaction "CH3 + CH3OH = CH3O + CH4"; + A 10000; + beta 1.5; + Ta 5001.72; + } + un-named-reaction-138 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H4 = C2H3 + CH4"; + A 227; + beta 2; + Ta 4629.36; + } + un-named-reaction-139 + { + type reversibleArrheniusReaction; + reaction "CH3 + C2H6 = C2H5 + CH4"; + A 6140; + beta 1.74; + Ta 5258.35; + } + un-named-reaction-140 + { + type reversibleArrheniusReaction; + reaction "HCO + H2O = H + CO + H2O"; + A 1.5e+15; + beta -1; + Ta 8554.25; + } + un-named-reaction-141 + { + type reversibleArrheniusReaction; + reaction "HCO + O2 = HO2 + CO"; + A 1.345e+10; + beta 0; + Ta 201.276; + } + un-named-reaction-142 + { + type reversibleArrheniusReaction; + reaction "CH2OH + O2 = HO2 + CH2O"; + A 1.8e+10; + beta 0; + Ta 452.872; + } + un-named-reaction-143 + { + type reversibleArrheniusReaction; + reaction "CH3O + O2 = HO2 + CH2O"; + A 4.28e-16; + beta 7.6; + Ta -1776.27; + } + un-named-reaction-144 + { + type reversibleArrheniusReaction; + reaction "C2H + O2 = HCO + CO"; + A 1e+10; + beta 0; + Ta -379.909; + } + un-named-reaction-145 + { + type reversibleArrheniusReaction; + reaction "C2H + H2 = H + C2H2"; + A 5.68e+07; + beta 0.9; + Ta 1002.86; + } + un-named-reaction-146 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HCO + CH2O"; + A 4.58e+13; + beta -1.39; + Ta 510.739; + } + un-named-reaction-147 + { + type reversibleArrheniusReaction; + reaction "C2H5 + O2 = HO2 + C2H4"; + A 8.4e+08; + beta 0; + Ta 1949.87; + } + un-named-reaction-148 + { + type reversibleArrheniusReaction; + reaction "HCCO + O2 = OH + 2CO"; + A 3.2e+09; + beta 0; + Ta 429.725; + } + un-named-reaction-149 + { + type reversibleArrheniusReaction; + reaction "2HCCO = 2CO + C2H2"; + A 1e+10; + beta 0; + Ta 0; + } + un-named-reaction-150 + { + type reversibleArrheniusReaction; + reaction "N + NO = N2 + O"; + A 2.7e+10; + beta 0; + Ta 178.633; + } + un-named-reaction-151 + { + type reversibleArrheniusReaction; + reaction "N + O2 = NO + O"; + A 9e+06; + beta 1; + Ta 3270.74; + } + un-named-reaction-152 + { + type reversibleArrheniusReaction; + reaction "N + OH = NO + H"; + A 3.36e+10; + beta 0; + Ta 193.729; + } + un-named-reaction-153 + { + type reversibleArrheniusReaction; + reaction "N2O + O = N2 + O2"; + A 1.4e+09; + beta 0; + Ta 5439.5; + } + un-named-reaction-154 + { + type reversibleArrheniusReaction; + reaction "N2O + O = 2NO"; + A 2.9e+10; + beta 0; + Ta 11648.9; + } + un-named-reaction-155 + { + type reversibleArrheniusReaction; + reaction "N2O + H = N2 + OH"; + A 3.87e+11; + beta 0; + Ta 9500.25; + } + un-named-reaction-156 + { + type reversibleArrheniusReaction; + reaction "N2O + OH = N2 + HO2"; + A 2e+09; + beta 0; + Ta 10597.2; + } + un-named-reaction-157 + { + type reversibleArrheniusReaction; + reaction "HO2 + NO = NO2 + OH"; + A 2.11e+09; + beta 0; + Ta -241.532; + } + un-named-reaction-158 + { + type reversibleArrheniusReaction; + reaction "NO2 + O = NO + O2"; + A 3.9e+09; + beta 0; + Ta -120.766; + } + un-named-reaction-159 + { + type reversibleArrheniusReaction; + reaction "NO2 + H = NO + OH"; + A 1.32e+11; + beta 0; + Ta 181.149; + } + un-named-reaction-160 + { + type reversibleArrheniusReaction; + reaction "NH + O = NO + H"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-161 + { + type reversibleArrheniusReaction; + reaction "NH + H = N + H2"; + A 3.2e+10; + beta 0; + Ta 166.053; + } + un-named-reaction-162 + { + type reversibleArrheniusReaction; + reaction "NH + OH = HNO + H"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-163 + { + type reversibleArrheniusReaction; + reaction "NH + OH = N + H2O"; + A 2e+06; + beta 1.2; + Ta 0; + } + un-named-reaction-164 + { + type reversibleArrheniusReaction; + reaction "NH + O2 = HNO + O"; + A 461; + beta 2; + Ta 3270.74; + } + un-named-reaction-165 + { + type reversibleArrheniusReaction; + reaction "NH + O2 = NO + OH"; + A 1280; + beta 1.5; + Ta 50.3191; + } + un-named-reaction-166 + { + type reversibleArrheniusReaction; + reaction "NH + N = N2 + H"; + A 1.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-167 + { + type reversibleArrheniusReaction; + reaction "NH + H2O = HNO + H2"; + A 2e+10; + beta 0; + Ta 6969.2; + } + un-named-reaction-168 + { + type reversibleArrheniusReaction; + reaction "NH + NO = N2 + OH"; + A 2.16e+10; + beta -0.23; + Ta 0; + } + un-named-reaction-169 + { + type reversibleArrheniusReaction; + reaction "NH + NO = N2O + H"; + A 3.65e+11; + beta -0.45; + Ta 0; + } + un-named-reaction-170 + { + type reversibleArrheniusReaction; + reaction "NH2 + O = OH + NH"; + A 3e+09; + beta 0; + Ta 0; + } + un-named-reaction-171 + { + type reversibleArrheniusReaction; + reaction "NH2 + O = H + HNO"; + A 3.9e+10; + beta 0; + Ta 0; + } + un-named-reaction-172 + { + type reversibleArrheniusReaction; + reaction "NH2 + H = NH + H2"; + A 4e+10; + beta 0; + Ta 1836.65; + } + un-named-reaction-173 + { + type reversibleArrheniusReaction; + reaction "NH2 + OH = NH + H2O"; + A 90000; + beta 1.5; + Ta -231.468; + } + un-named-reaction-174 + { + type reversibleArrheniusReaction; + reaction "NNH = N2 + H"; + A 3.3e+08; + beta 0; + Ta 0; + } + un-named-reaction-175 + { + type reversibleArrheniusReaction; + reaction "NNH + O2 = HO2 + N2"; + A 5e+09; + beta 0; + Ta 0; + } + un-named-reaction-176 + { + type reversibleArrheniusReaction; + reaction "NNH + O = OH + N2"; + A 2.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-177 + { + type reversibleArrheniusReaction; + reaction "NNH + O = NH + NO"; + A 7e+10; + beta 0; + Ta 0; + } + un-named-reaction-178 + { + type reversibleArrheniusReaction; + reaction "NNH + H = H2 + N2"; + A 5e+10; + beta 0; + Ta 0; + } + un-named-reaction-179 + { + type reversibleArrheniusReaction; + reaction "NNH + OH = H2O + N2"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-180 + { + type reversibleArrheniusReaction; + reaction "NNH + CH3 = CH4 + N2"; + A 2.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-181 + { + type reversibleArrheniusReaction; + reaction "HNO + O = NO + OH"; + A 2.5e+10; + beta 0; + Ta 0; + } + un-named-reaction-182 + { + type reversibleArrheniusReaction; + reaction "HNO + H = H2 + NO"; + A 9e+08; + beta 0.72; + Ta 332.106; + } + un-named-reaction-183 + { + type reversibleArrheniusReaction; + reaction "HNO + OH = NO + H2O"; + A 13000; + beta 1.9; + Ta -478.032; + } + un-named-reaction-184 + { + type reversibleArrheniusReaction; + reaction "HNO + O2 = HO2 + NO"; + A 1e+10; + beta 0; + Ta 6541.49; + } + un-named-reaction-185 + { + type reversibleArrheniusReaction; + reaction "CN + O = CO + N"; + A 7.7e+10; + beta 0; + Ta 0; + } + un-named-reaction-186 + { + type reversibleArrheniusReaction; + reaction "CN + OH = NCO + H"; + A 4e+10; + beta 0; + Ta 0; + } + un-named-reaction-187 + { + type reversibleArrheniusReaction; + reaction "CN + H2O = HCN + OH"; + A 8e+09; + beta 0; + Ta 3753.81; + } + un-named-reaction-188 + { + type reversibleArrheniusReaction; + reaction "CN + O2 = NCO + O"; + A 6.14e+09; + beta 0; + Ta -221.404; + } + un-named-reaction-189 + { + type reversibleArrheniusReaction; + reaction "CN + H2 = HCN + H"; + A 295; + beta 2.45; + Ta 1127.15; + } + un-named-reaction-190 + { + type reversibleArrheniusReaction; + reaction "NCO + O = NO + CO"; + A 2.35e+10; + beta 0; + Ta 0; + } + un-named-reaction-191 + { + type reversibleArrheniusReaction; + reaction "NCO + H = NH + CO"; + A 5.4e+10; + beta 0; + Ta 0; + } + un-named-reaction-192 + { + type reversibleArrheniusReaction; + reaction "NCO + OH = NO + H + CO"; + A 2.5e+09; + beta 0; + Ta 0; + } + un-named-reaction-193 + { + type reversibleArrheniusReaction; + reaction "NCO + N = N2 + CO"; + A 2e+10; + beta 0; + Ta 0; + } + un-named-reaction-194 + { + type reversibleArrheniusReaction; + reaction "NCO + O2 = NO + CO2"; + A 2e+09; + beta 0; + Ta 10063.8; + } + un-named-reaction-195 + { + type reversibleArrheniusReaction; + reaction "NCO + NO = N2O + CO"; + A 1.9e+14; + beta -1.52; + Ta 372.362; + } + un-named-reaction-196 + { + type reversibleArrheniusReaction; + reaction "NCO + NO = N2 + CO2"; + A 3.8e+15; + beta -2; + Ta 402.553; + } + un-named-reaction-197 + { + type reversibleArrheniusReaction; + reaction "HCN + O = NCO + H"; + A 20.3; + beta 2.64; + Ta 2505.89; + } + un-named-reaction-198 + { + type reversibleArrheniusReaction; + reaction "HCN + O = NH + CO"; + A 5.07; + beta 2.64; + Ta 2505.89; + } + un-named-reaction-199 + { + type reversibleArrheniusReaction; + reaction "HCN + O = CN + OH"; + A 3.91e+06; + beta 1.58; + Ta 13384.9; + } + un-named-reaction-200 + { + type reversibleArrheniusReaction; + reaction "HCN + OH = HOCN + H"; + A 1100; + beta 2.03; + Ta 6727.67; + } + un-named-reaction-201 + { + type reversibleArrheniusReaction; + reaction "HCN + OH = HNCO + H"; + A 4.4; + beta 2.26; + Ta 3220.42; + } + un-named-reaction-202 + { + type reversibleArrheniusReaction; + reaction "HCN + OH = NH2 + CO"; + A 0.16; + beta 2.56; + Ta 4528.72; + } + un-named-reaction-203 + { + type reversibleArrheniusReaction; + reaction "H2CN + N = N2 + CH2"; + A 6e+10; + beta 0; + Ta 201.276; + } + un-named-reaction-204 + { + type reversibleArrheniusReaction; + reaction "C + N2 = CN + N"; + A 6.3e+10; + beta 0; + Ta 23156.9; + } + un-named-reaction-205 + { + type reversibleArrheniusReaction; + reaction "CH + N2 = HCN + N"; + A 3.12e+06; + beta 0.88; + Ta 10129.2; + } + un-named-reaction-206 + { + type reversibleArrheniusReaction; + reaction "CH2 + N2 = HCN + NH"; + A 1e+10; + beta 0; + Ta 37236.2; + } + un-named-reaction-207 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + N2 = NH + HCN"; + A 1e+08; + beta 0; + Ta 32707.4; + } + un-named-reaction-208 + { + type reversibleArrheniusReaction; + reaction "C + NO = CN + O"; + A 1.9e+10; + beta 0; + Ta 0; + } + un-named-reaction-209 + { + type reversibleArrheniusReaction; + reaction "C + NO = CO + N"; + A 2.9e+10; + beta 0; + Ta 0; + } + un-named-reaction-210 + { + type reversibleArrheniusReaction; + reaction "CH + NO = HCN + O"; + A 4.1e+10; + beta 0; + Ta 0; + } + un-named-reaction-211 + { + type reversibleArrheniusReaction; + reaction "CH + NO = H + NCO"; + A 1.62e+10; + beta 0; + Ta 0; + } + un-named-reaction-212 + { + type reversibleArrheniusReaction; + reaction "CH + NO = N + HCO"; + A 2.46e+10; + beta 0; + Ta 0; + } + un-named-reaction-213 + { + type reversibleArrheniusReaction; + reaction "CH2 + NO = H + HNCO"; + A 3.1e+14; + beta -1.38; + Ta 639.053; + } + un-named-reaction-214 + { + type reversibleArrheniusReaction; + reaction "CH2 + NO = OH + HCN"; + A 2.9e+11; + beta -0.69; + Ta 382.425; + } + un-named-reaction-215 + { + type reversibleArrheniusReaction; + reaction "CH2 + NO = H + HCNO"; + A 3.8e+10; + beta -0.36; + Ta 291.851; + } + un-named-reaction-216 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + NO = H + HNCO"; + A 3.1e+14; + beta -1.38; + Ta 639.053; + } + un-named-reaction-217 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + NO = OH + HCN"; + A 2.9e+11; + beta -0.69; + Ta 382.425; + } + un-named-reaction-218 + { + type reversibleArrheniusReaction; + reaction "CH2(S) + NO = H + HCNO"; + A 3.8e+10; + beta -0.36; + Ta 291.851; + } + un-named-reaction-219 + { + type reversibleArrheniusReaction; + reaction "CH3 + NO = HCN + H2O"; + A 9.6e+10; + beta 0; + Ta 14491.9; + } + un-named-reaction-220 + { + type reversibleArrheniusReaction; + reaction "CH3 + NO = H2CN + OH"; + A 1e+09; + beta 0; + Ta 10944.4; + } + un-named-reaction-221 + { + type reversibleArrheniusReaction; + reaction "HCNN + O = CO + H + N2"; + A 2.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-222 + { + type reversibleArrheniusReaction; + reaction "HCNN + O = HCN + NO"; + A 2e+09; + beta 0; + Ta 0; + } + un-named-reaction-223 + { + type reversibleArrheniusReaction; + reaction "HCNN + O2 = O + HCO + N2"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-224 + { + type reversibleArrheniusReaction; + reaction "HCNN + OH = H + HCO + N2"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-225 + { + type reversibleArrheniusReaction; + reaction "HCNN + H = CH2 + N2"; + A 1e+11; + beta 0; + Ta 0; + } + un-named-reaction-226 + { + type reversibleArrheniusReaction; + reaction "HNCO + O = NH + CO2"; + A 98000; + beta 1.41; + Ta 4277.13; + } + un-named-reaction-227 + { + type reversibleArrheniusReaction; + reaction "HNCO + O = HNO + CO"; + A 150000; + beta 1.57; + Ta 22140.4; + } + un-named-reaction-228 + { + type reversibleArrheniusReaction; + reaction "HNCO + O = NCO + OH"; + A 2200; + beta 2.11; + Ta 5736.38; + } + un-named-reaction-229 + { + type reversibleArrheniusReaction; + reaction "HNCO + H = NH2 + CO"; + A 22500; + beta 1.7; + Ta 1912.13; + } + un-named-reaction-230 + { + type reversibleArrheniusReaction; + reaction "HNCO + H = H2 + NCO"; + A 105; + beta 2.5; + Ta 6692.44; + } + un-named-reaction-231 + { + type reversibleArrheniusReaction; + reaction "HNCO + OH = NCO + H2O"; + A 33000; + beta 1.5; + Ta 1811.49; + } + un-named-reaction-232 + { + type reversibleArrheniusReaction; + reaction "HNCO + OH = NH2 + CO2"; + A 3300; + beta 1.5; + Ta 1811.49; + } + un-named-reaction-233 + { + type reversibleArrheniusReaction; + reaction "HCNO + H = H + HNCO"; + A 2.1e+12; + beta -0.69; + Ta 1434.1; + } + un-named-reaction-234 + { + type reversibleArrheniusReaction; + reaction "HCNO + H = OH + HCN"; + A 2.7e+08; + beta 0.18; + Ta 1066.77; + } + un-named-reaction-235 + { + type reversibleArrheniusReaction; + reaction "HCNO + H = NH2 + CO"; + A 1.7e+11; + beta -0.75; + Ta 1454.22; + } + un-named-reaction-236 + { + type reversibleArrheniusReaction; + reaction "HOCN + H = H + HNCO"; + A 20000; + beta 2; + Ta 1006.38; + } + un-named-reaction-237 + { + type reversibleArrheniusReaction; + reaction "HCCO + NO = HCNO + CO"; + A 9e+09; + beta 0; + Ta 0; + } + un-named-reaction-238 + { + type reversibleArrheniusReaction; + reaction "CH3 + N = H2CN + H"; + A 6.1e+11; + beta -0.31; + Ta 145.925; + } + un-named-reaction-239 + { + type reversibleArrheniusReaction; + reaction "CH3 + N = HCN + H2"; + A 3.7e+09; + beta 0.15; + Ta -45.2872; + } + un-named-reaction-240 + { + type reversibleArrheniusReaction; + reaction "NH3 + H = NH2 + H2"; + A 540; + beta 2.4; + Ta 4989.14; + } + un-named-reaction-241 + { + type reversibleArrheniusReaction; + reaction "NH3 + OH = NH2 + H2O"; + A 50000; + beta 1.6; + Ta 480.548; + } + un-named-reaction-242 + { + type reversibleArrheniusReaction; + reaction "NH3 + O = NH2 + OH"; + A 9400; + beta 1.94; + Ta 3250.62; + } + un-named-reaction-243 + { + type reversibleArrheniusReaction; + reaction "NH + CO2 = HNO + CO"; + A 1e+10; + beta 0; + Ta 7220.79; + } + un-named-reaction-244 + { + type reversibleArrheniusReaction; + reaction "CN + NO2 = NCO + NO"; + A 6.16e+12; + beta -0.752; + Ta 173.601; + } + un-named-reaction-245 + { + type reversibleArrheniusReaction; + reaction "NCO + NO2 = N2O + CO2"; + A 3.25e+09; + beta 0; + Ta -354.75; + } + un-named-reaction-246 + { + type reversibleArrheniusReaction; + reaction "N + CO2 = NO + CO"; + A 3e+09; + beta 0; + Ta 5686.06; + } + un-named-reaction-247 + { + type irreversibleArrheniusReaction; + reaction "O + CH3 = H + H2 + CO"; + A 3.37e+10; + beta 0; + Ta 0; + } + un-named-reaction-248 + { + type reversibleArrheniusReaction; + reaction "O + C2H4 = H + CH2CHO"; + A 6700; + beta 1.83; + Ta 110.702; + } + un-named-reaction-249 + { + type reversibleArrheniusReaction; + reaction "O + C2H5 = H + CH3CHO"; + A 1.096e+11; + beta 0; + Ta 0; + } + un-named-reaction-250 + { + type reversibleArrheniusReaction; + reaction "OH + HO2 = O2 + H2O"; + A 5e+12; + beta 0; + Ta 8720.3; + } + un-named-reaction-251 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3 = H2 + CH2O"; + A 8e+06; + beta 0.5; + Ta -883.101; + } + un-named-reaction-252 + { + type irreversibleArrheniusReaction; + reaction "CH2 + O2 = 2H + CO2"; + A 5.8e+09; + beta 0; + Ta 754.787; + } + un-named-reaction-253 + { + type reversibleArrheniusReaction; + reaction "CH2 + O2 = O + CH2O"; + A 2.4e+09; + beta 0; + Ta 754.787; + } + un-named-reaction-254 + { + type irreversibleArrheniusReaction; + reaction "CH2 + CH2 = 2H + C2H2"; + A 2e+11; + beta 0; + Ta 5529.57; + } + un-named-reaction-255 + { + type irreversibleArrheniusReaction; + reaction "CH2(S) + H2O = H2 + CH2O"; + A 6.82e+07; + beta 0.25; + Ta -470.484; + } + un-named-reaction-256 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = O + CH2CHO"; + A 3.03e+08; + beta 0.29; + Ta 5.5351; + } + un-named-reaction-257 + { + type reversibleArrheniusReaction; + reaction "C2H3 + O2 = HO2 + C2H2"; + A 1337; + beta 1.61; + Ta -193.225; + } + un-named-reaction-258 + { + type reversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH2CHO"; + A 2.92e+09; + beta 0; + Ta 909.77; + } + un-named-reaction-259 + { + type irreversibleArrheniusReaction; + reaction "O + CH3CHO = OH + CH3 + CO"; + A 2.92e+09; + beta 0; + Ta 909.77; + } + un-named-reaction-260 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH3CHO = HO2 + CH3 + CO"; + A 3.01e+10; + beta 0; + Ta 19699.9; + } + un-named-reaction-261 + { + type reversibleArrheniusReaction; + reaction "H + CH3CHO = CH2CHO + H2"; + A 2.05e+06; + beta 1.16; + Ta 1210.17; + } + un-named-reaction-262 + { + type irreversibleArrheniusReaction; + reaction "H + CH3CHO = CH3 + H2 + CO"; + A 2.05e+06; + beta 1.16; + Ta 1210.17; + } + un-named-reaction-263 + { + type irreversibleArrheniusReaction; + reaction "OH + CH3CHO = CH3 + H2O + CO"; + A 2.343e+07; + beta 0.73; + Ta -560.052; + } + un-named-reaction-264 + { + type irreversibleArrheniusReaction; + reaction "HO2 + CH3CHO = CH3 + H2O2 + CO"; + A 3.01e+09; + beta 0; + Ta 5999.55; + } + un-named-reaction-265 + { + type irreversibleArrheniusReaction; + reaction "CH3 + CH3CHO = CH3 + CH4 + CO"; + A 2720; + beta 1.77; + Ta 2978.89; + } + un-named-reaction-266 + { + type irreversibleArrheniusReaction; + reaction "O + CH2CHO = H + CH2 + CO2"; + A 1.5e+11; + beta 0; + Ta 0; + } + un-named-reaction-267 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + CO + CH2O"; + A 1.81e+07; + beta 0; + Ta 0; + } + un-named-reaction-268 + { + type irreversibleArrheniusReaction; + reaction "O2 + CH2CHO = OH + 2HCO"; + A 2.35e+07; + beta 0; + Ta 0; + } + un-named-reaction-269 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH3 + HCO"; + A 2.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-270 + { + type reversibleArrheniusReaction; + reaction "H + CH2CHO = CH2CO + H2"; + A 1.1e+10; + beta 0; + Ta 0; + } + un-named-reaction-271 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = H2O + CH2CO"; + A 1.2e+10; + beta 0; + Ta 0; + } + un-named-reaction-272 + { + type reversibleArrheniusReaction; + reaction "OH + CH2CHO = HCO + CH2OH"; + A 3.01e+10; + beta 0; + Ta 0; + } + un-named-reaction-273 + { + type reversibleArrheniusReaction; + reaction "O + C3H8 = OH + C3H7"; + A 193; + beta 2.68; + Ta 1869.86; + } + un-named-reaction-274 + { + type reversibleArrheniusReaction; + reaction "H + C3H8 = C3H7 + H2"; + A 1320; + beta 2.54; + Ta 3399.56; + } + un-named-reaction-275 + { + type reversibleArrheniusReaction; + reaction "OH + C3H8 = C3H7 + H2O"; + A 31600; + beta 1.8; + Ta 469.981; + } + un-named-reaction-276 + { + type reversibleArrheniusReaction; + reaction "C3H7 + H2O2 = HO2 + C3H8"; + A 0.378; + beta 2.72; + Ta 754.787; + } + un-named-reaction-277 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H8 = C3H7 + CH4"; + A 0.000903; + beta 3.65; + Ta 3599.83; + } + un-named-reaction-278 + { + type reversibleArrheniusReaction; + reaction "O + C3H7 = C2H5 + CH2O"; + A 9.64e+10; + beta 0; + Ta 0; + } + un-named-reaction-279 + { + type reversibleArrheniusReaction; + reaction "H + C3H7 = CH3 + C2H5"; + A 4060; + beta 2.19; + Ta 447.84; + } + un-named-reaction-280 + { + type reversibleArrheniusReaction; + reaction "OH + C3H7 = C2H5 + CH2OH"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-281 + { + type reversibleArrheniusReaction; + reaction "HO2 + C3H7 = O2 + C3H8"; + A 2.55e+07; + beta 0.255; + Ta -474.509; + } + un-named-reaction-282 + { + type irreversibleArrheniusReaction; + reaction "HO2 + C3H7 = OH + C2H5 + CH2O"; + A 2.41e+10; + beta 0; + Ta 0; + } + un-named-reaction-283 + { + type reversibleArrheniusReaction; + reaction "CH3 + C3H7 = 2C2H5"; + A 1.927e+10; + beta -0.32; + Ta 0; + } + un-named-reaction-284 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2O = O2"; + A 1.2e+11; + beta -1; + Ta 0; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2.4) +(O 1) +(OH 1) +(H2O 15.4) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.75) +(CO2 3.6) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.83) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-285 + { + type reversiblethirdBodyArrheniusReaction; + reaction "O + H = OH"; + A 5e+11; + beta -1; + Ta 0; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-286 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + O2 = HO2"; + A 2.8e+12; + beta -0.86; + Ta 0; + coeffs +53 +( +(CH4 1) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 0) +(H2 1) +(O 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 0.75) +(CO2 1.5) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 1.5) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 0) +(AR 0) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-287 + { + type reversiblethirdBodyArrheniusReaction; + reaction "2H = H2"; + A 1e+12; + beta -1; + Ta 0; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 0) +(O 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1) +(CO2 0) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.63) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-288 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + OH = H2O"; + A 2.2e+16; + beta -2; + Ta 0; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 0.73) +(O 1) +(OH 1) +(H2O 3.65) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1) +(CO2 1) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.38) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-289 + { + type reversiblethirdBodyArrheniusReaction; + reaction "HCO = H + CO"; + A 1.87e+14; + beta -1; + Ta 8554.25; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 0) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-290 + { + type reversiblethirdBodyArrheniusReaction; + reaction "NO + O = NO2"; + A 1.06e+14; + beta -1.41; + Ta 0; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-291 + { + type reversiblethirdBodyArrheniusReaction; + reaction "NNH = N2 + H"; + A 1.3e+11; + beta -0.11; + Ta 2505.89; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-292 + { + type reversiblethirdBodyArrheniusReaction; + reaction "H + NO = HNO"; + A 4.48e+13; + beta -1.32; + Ta 372.362; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-293 + { + type reversiblethirdBodyArrheniusReaction; + reaction "NCO = N + CO"; + A 3.1e+11; + beta 0; + Ta 27197.5; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-294 + { + type reversiblethirdBodyArrheniusReaction; + reaction "HCN = H + CN"; + A 1.04e+26; + beta -3.3; + Ta 63704; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-295 + { + type reversiblethirdBodyArrheniusReaction; + reaction "HNCO = NH + CO"; + A 1.18e+13; + beta 0; + Ta 42630.4; + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + un-named-reaction-296 + { + type reversibleArrheniusLindemannFallOffReaction; + reaction "O + CO = CO2"; + k0 + { + A 6.02e+08; + beta 0; + Ta 1509.57; + } + kInf + { + A 1.8e+07; + beta 0; + Ta 1200.11; + } + F + { + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 6) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 3.5) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.5) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-297 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2 = CH3"; + k0 + { + A 1.04e+20; + beta -2.76; + Ta 805.106; + } + kInf + { + A 6e+11; + beta 0; + Ta 0; + } + F + { + alpha 0.562; + Tsss 91; + Ts 5836; + Tss 8552; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-298 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3 = CH4"; + k0 + { + A 2.62e+27; + beta -4.76; + Ta 1227.79; + } + kInf + { + A 1.39e+13; + beta -0.534; + Ta 269.711; + } + F + { + alpha 0.783; + Tsss 74; + Ts 2941; + Tss 6964; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 3) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-299 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + HCO = CH2O"; + k0 + { + A 2.47e+18; + beta -2.57; + Ta 213.856; + } + kInf + { + A 1.09e+09; + beta 0.48; + Ta -130.83; + } + F + { + alpha 0.7824; + Tsss 271; + Ts 2755; + Tss 6570; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-300 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH2OH"; + k0 + { + A 1.27e+26; + beta -4.82; + Ta 3285.84; + } + kInf + { + A 5.4e+08; + beta 0.454; + Ta 1811.49; + } + F + { + alpha 0.7187; + Tsss 103; + Ts 1291; + Tss 4160; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-301 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2OH = CH3OH"; + k0 + { + A 4.36e+25; + beta -4.65; + Ta 2556.21; + } + kInf + { + A 1.055e+09; + beta 0.5; + Ta 43.2744; + } + F + { + alpha 0.6; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-302 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH3O = CH3OH"; + k0 + { + A 4.66e+35; + beta -7.44; + Ta 7084.93; + } + kInf + { + A 2.43e+09; + beta 0.515; + Ta 25.1596; + } + F + { + alpha 0.7; + Tsss 100; + Ts 90000; + Tss 10000; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-303 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H = C2H2"; + k0 + { + A 3.75e+27; + beta -4.8; + Ta 956.063; + } + kInf + { + A 1e+14; + beta -1; + Ta 0; + } + F + { + alpha 0.6464; + Tsss 132; + Ts 1315; + Tss 5566; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-304 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H2 = C2H3"; + k0 + { + A 3.8e+34; + beta -7.27; + Ta 3633.04; + } + kInf + { + A 5.6e+09; + beta 0; + Ta 1207.66; + } + F + { + alpha 0.7507; + Tsss 98.5; + Ts 1302; + Tss 4167; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-305 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H3 = C2H4"; + k0 + { + A 1.4e+24; + beta -3.86; + Ta 1670.59; + } + kInf + { + A 6.08e+09; + beta 0.27; + Ta 140.894; + } + F + { + alpha 0.782; + Tsss 207.5; + Ts 2663; + Tss 6095; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-306 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H4 = C2H5"; + k0 + { + A 6e+35; + beta -7.62; + Ta 3507.24; + } + kInf + { + A 5.4e+08; + beta 0.454; + Ta 915.808; + } + F + { + alpha 0.9753; + Tsss 210; + Ts 984; + Tss 4374; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-307 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C2H5 = C2H6"; + k0 + { + A 1.99e+35; + beta -7.08; + Ta 3363.83; + } + kInf + { + A 5.21e+14; + beta -0.99; + Ta 795.042; + } + F + { + alpha 0.8422; + Tsss 125; + Ts 2219; + Tss 6882; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-308 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H2 + CO = CH2O"; + k0 + { + A 5.07e+21; + beta -3.42; + Ta 42444.2; + } + kInf + { + A 43000; + beta 1.5; + Ta 40054; + } + F + { + alpha 0.932; + Tsss 197; + Ts 1540; + Tss 10300; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-309 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2OH = H2O2"; + k0 + { + A 2.3e+12; + beta -0.9; + Ta -855.425; + } + kInf + { + A 7.4e+10; + beta -0.37; + Ta 0; + } + F + { + alpha 0.7346; + Tsss 94; + Ts 1756; + Tss 5182; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-310 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "OH + CH3 = CH3OH"; + k0 + { + A 4e+30; + beta -5.92; + Ta 1580.02; + } + kInf + { + A 2.79e+15; + beta -1.43; + Ta 669.244; + } + F + { + alpha 0.412; + Tsss 195; + Ts 5900; + Tss 6394; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-311 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + CO = HCCO"; + k0 + { + A 2.69e+22; + beta -3.74; + Ta 974.178; + } + kInf + { + A 5e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.5757; + Tsss 237; + Ts 1652; + Tss 5069; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-312 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2 + CO = CH2CO"; + k0 + { + A 2.69e+27; + beta -5.11; + Ta 3570.14; + } + kInf + { + A 8.1e+08; + beta 0.5; + Ta 2269.39; + } + F + { + alpha 0.5907; + Tsss 275; + Ts 1226; + Tss 5185; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-313 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH2(S) + H2O = CH3OH"; + k0 + { + A 1.88e+32; + beta -6.36; + Ta 2536.08; + } + kInf + { + A 4.82e+14; + beta -1.16; + Ta 576.154; + } + F + { + alpha 0.6027; + Tsss 208; + Ts 3922; + Tss 10180; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-314 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "2CH3 = C2H6"; + k0 + { + A 3.4e+35; + beta -7.03; + Ta 1389.81; + } + kInf + { + A 6.77e+13; + beta -1.18; + Ta 329.087; + } + F + { + alpha 0.619; + Tsss 73.2; + Ts 1180; + Tss 9999; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-315 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "C2H4 = H2 + C2H2"; + k0 + { + A 1.58e+48; + beta -9.3; + Ta 49212.1; + } + kInf + { + A 8e+12; + beta 0.44; + Ta 43661.9; + } + F + { + alpha 0.7345; + Tsss 180; + Ts 1035; + Tss 5417; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-316 + { + type reversibleArrheniusLindemannFallOffReaction; + reaction "N2O = N2 + O"; + k0 + { + A 6.37e+11; + beta 0; + Ta 28500.8; + } + kInf + { + A 7.91e+10; + beta 0; + Ta 28188.8; + } + F + { + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.625) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-317 + { + type reversibleArrheniusLindemannFallOffReaction; + reaction "H + HCN = H2CN"; + k0 + { + A 1.4e+20; + beta -3.4; + Ta 956.063; + } + kInf + { + A 3.3e+10; + beta 0; + Ta 0; + } + F + { + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-318 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + N2 = HCNN"; + k0 + { + A 1.3e+19; + beta -3.16; + Ta 372.362; + } + kInf + { + A 3.1e+09; + beta 0.15; + Ta 0; + } + F + { + alpha 0.667; + Tsss 235; + Ts 2117; + Tss 4536; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-319 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH + H2 = CH3"; + k0 + { + A 4.82e+19; + beta -2.8; + Ta 296.883; + } + kInf + { + A 1.97e+09; + beta 0.43; + Ta -186.181; + } + F + { + alpha 0.578; + Tsss 122; + Ts 2535; + Tss 9365; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-320 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2CO = CH2CHO"; + k0 + { + A 1.012e+36; + beta -7.63; + Ta 1939.3; + } + kInf + { + A 4.865e+08; + beta 0.422; + Ta -883.101; + } + F + { + alpha 0.465; + Tsss 201; + Ts 1773; + Tss 5333; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-321 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H5 = C3H8"; + k0 + { + A 2.71e+68; + beta -16.82; + Ta 6574.19; + } + kInf + { + A 9.43e+09; + beta 0; + Ta 0; + } + F + { + alpha 0.1527; + Tsss 291; + Ts 2742; + Tss 7748; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-322 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "CH3 + C2H4 = C3H7"; + k0 + { + A 3e+57; + beta -14.6; + Ta 9142.98; + } + kInf + { + A 2550; + beta 1.6; + Ta 2868.19; + } + F + { + alpha 0.1894; + Tsss 277; + Ts 8748; + Tss 7891; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-323 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + C3H7 = C3H8"; + k0 + { + A 4.42e+55; + beta -13.545; + Ta 5714.74; + } + kInf + { + A 3.613e+10; + beta 0; + Ta 0; + } + F + { + alpha 0.315; + Tsss 369; + Ts 3285; + Tss 6667; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 0.7) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } + un-named-reaction-324 + { + type reversibleArrheniusTroeFallOffReaction; + reaction "H + CH2O = CH3O"; + k0 + { + A 2.2e+24; + beta -4.8; + Ta 2797.74; + } + kInf + { + A 5.4e+08; + beta 0.454; + Ta 1308.3; + } + F + { + alpha 0.758; + Tsss 94; + Ts 1555; + Tss 4200; + } + thirdBodyEfficiencies + { + coeffs +53 +( +(CH4 2) +(CH2O 1) +(CH3O 1) +(H 1) +(O2 1) +(H2 2) +(O 1) +(OH 1) +(H2O 6) +(HO2 1) +(H2O2 1) +(C 1) +(CH 1) +(CH2 1) +(CH2(S) 1) +(CH3 1) +(CO 1.5) +(CO2 2) +(HCO 1) +(CH2OH 1) +(CH3OH 1) +(C2H 1) +(C2H2 1) +(C2H3 1) +(C2H4 1) +(C2H5 1) +(C2H6 3) +(HCCO 1) +(CH2CO 1) +(HCCOH 1) +(N 1) +(NH 1) +(NH2 1) +(NH3 1) +(NNH 1) +(NO 1) +(NO2 1) +(N2O 1) +(HNO 1) +(CN 1) +(HCN 1) +(H2CN 1) +(HCNN 1) +(HCNO 1) +(HOCN 1) +(HNCO 1) +(NCO 1) +(N2 1) +(AR 1) +(C3H7 1) +(C3H8 1) +(CH2CHO 1) +(CH3CHO 1) +) +; + } + } +} diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGas new file mode 100644 index 0000000000000000000000000000000000000000..f64aa415695aa9f93175722cefdf05d6a1a8122b --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGas @@ -0,0 +1,147 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 3.0.x | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermo.compressibleGas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +O2 +{ + specie + { + molWeight 31.9988; + } + elements + { + O 2; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917 ); + lowCpCoeffs ( 3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2O +{ + specie + { + molWeight 18.0153; + } + elements + { + O 1; + H 2; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 ); + lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CH4 +{ + specie + { + molWeight 16.0428; + } + elements + { + C 1; + H 4; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 1.63543 0.0100844 -3.36924e-06 5.34973e-10 -3.15528e-14 -10005.6 9.9937 ); + lowCpCoeffs ( 5.14988 -0.013671 4.91801e-05 -4.84744e-08 1.66694e-11 -10246.6 -4.64132 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CO2 +{ + specie + { + molWeight 44.01; + } + elements + { + C 1; + O 2; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 4.45362 0.00314017 -1.27841e-06 2.394e-10 -1.66903e-14 -48967 -0.955396 ); + lowCpCoeffs ( 2.27572 0.00992207 -1.04091e-05 6.86669e-09 -2.11728e-12 -48373.1 10.1885 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +N2 +{ + specie + { + molWeight 28.0134; + } + elements + { + N 2; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 ); + lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGasGRI b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGasGRI new file mode 100644 index 0000000000000000000000000000000000000000..f709692e99bb94e7319e1409aa4f0b008a59558e --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermo.compressibleGasGRI @@ -0,0 +1,1338 @@ +OH +{ + specie + { + molWeight 17.0074; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.09289 0.00054843 1.26505e-07 -8.79462e-11 1.17412e-14 3858.66 4.4767 ); + lowCpCoeffs ( 3.99202 -0.00240132 4.61794e-06 -3.88113e-09 1.36411e-12 3615.08 -0.103925 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + O 1; + H 1; + } +} +CN +{ + specie + { + molWeight 26.0179; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.74598 4.34508e-05 2.9706e-07 -6.86518e-11 4.41342e-15 51536.2 2.78676 ); + lowCpCoeffs ( 3.61294 -0.000955513 2.1443e-06 -3.15163e-10 -4.64304e-13 51708.3 3.9805 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + N 1; + } +} +C2H3 +{ + specie + { + molWeight 27.0462; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.01672 0.0103302 -4.68082e-06 1.01763e-09 -8.62607e-14 34612.9 7.78732 ); + lowCpCoeffs ( 3.21247 0.00151479 2.59209e-05 -3.57658e-08 1.47151e-11 34859.8 8.51054 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 3; + } +} +N2 +{ + specie + { + molWeight 28.0134; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 ); + lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44485e-12 -1020.9 3.95037 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 2; + } +} +HOCN +{ + specie + { + molWeight 43.0252; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1368; + highCpCoeffs ( 5.89785 0.00316789 -1.11801e-06 1.77243e-10 -1.04339e-14 -3706.53 -6.18168 ); + lowCpCoeffs ( 3.78605 0.00688668 -3.21488e-06 5.17196e-10 1.19361e-14 -2826.98 5.63292 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} +N +{ + specie + { + molWeight 14.0067; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.41594 0.000174891 -1.19024e-07 3.02262e-11 -2.0361e-15 56133.8 4.64961 ); + lowCpCoeffs ( 2.5 0 0 0 0 56104.6 4.19391 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + } +} +C2H +{ + specie + { + molWeight 25.0303; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.16781 0.00475222 -1.83787e-06 3.0419e-10 -1.77233e-14 67121.1 6.63589 ); + lowCpCoeffs ( 2.88966 0.01341 -2.8477e-05 2.94791e-08 -1.09332e-11 66839.4 6.22296 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 1; + } +} +HNO +{ + specie + { + molWeight 31.0141; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.97925 0.00349441 -7.85498e-07 5.74796e-11 -1.93359e-16 11750.6 8.60637 ); + lowCpCoeffs ( 4.53349 -0.00566962 1.84732e-05 -1.71371e-08 5.54546e-12 11548.3 1.74984 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + N 1; + O 1; + } +} +CH2CO +{ + specie + { + molWeight 42.0376; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.5113 0.0090036 -4.1694e-06 9.23346e-10 -7.94838e-14 -7551.05 0.632247 ); + lowCpCoeffs ( 2.13584 0.0181189 -1.73947e-05 9.34398e-09 -2.01458e-12 -7042.92 12.2156 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 2; + O 1; + } +} +CH3 +{ + specie + { + molWeight 15.0351; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.28572 0.0072399 -2.98714e-06 5.95685e-10 -4.67154e-14 16775.6 8.48007 ); + lowCpCoeffs ( 3.67359 0.00201095 5.73022e-06 -6.87117e-09 2.54386e-12 16445 1.60456 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 3; + } +} +C2H5 +{ + specie + { + molWeight 29.0622; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.95466 0.0173973 -7.98207e-06 1.75218e-09 -1.49642e-13 12857.5 13.4624 ); + lowCpCoeffs ( 4.30647 -0.00418659 4.97143e-05 -5.99127e-08 2.30509e-11 12841.6 4.70721 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 5; + } +} +C2H4 +{ + specie + { + molWeight 28.0542; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.03611 0.0146454 -6.71078e-06 1.47223e-09 -1.25706e-13 4939.89 10.3054 ); + lowCpCoeffs ( 3.9592 -0.00757052 5.7099e-05 -6.91589e-08 2.69884e-11 5089.78 4.09733 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 4; + } +} +C3H8 +{ + specie + { + molWeight 44.0972; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 ); + lowCpCoeffs ( 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 3; + H 8; + } +} +HCN +{ + specie + { + molWeight 27.0258; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.80224 0.00314642 -1.06322e-06 1.66198e-10 -9.79976e-15 14407.3 1.57546 ); + lowCpCoeffs ( 2.25899 0.0100512 -1.33518e-05 1.00923e-08 -3.0089e-12 14712.6 8.91644 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + C 1; + N 1; + } +} +C2H6 +{ + specie + { + molWeight 30.0701; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.07188 0.0216853 -1.00256e-05 2.21412e-09 -1.90003e-13 -11426.4 15.1156 ); + lowCpCoeffs ( 4.29142 -0.00550154 5.99438e-05 -7.08466e-08 2.68686e-11 -11522.2 2.66682 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 6; + } +} +NH3 +{ + specie + { + molWeight 17.0306; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.63445 0.00566626 -1.72787e-06 2.38672e-10 -1.25788e-14 -6544.7 6.56629 ); + lowCpCoeffs ( 4.28603 -0.00466052 2.17185e-05 -2.28089e-08 8.2638e-12 -6741.73 -0.625373 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + H 3; + } +} +CO2 +{ + specie + { + molWeight 44.01; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746 0.00441437 -2.21481e-06 5.2349e-10 -4.72084e-14 -48759.2 2.27164 ); + lowCpCoeffs ( 2.35677 0.0089846 -7.12356e-06 2.45919e-09 -1.437e-13 -48372 9.90105 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + O 2; + } +} +C2H2 +{ + specie + { + molWeight 26.0382; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.14757 0.00596167 -2.37295e-06 4.67412e-10 -3.61235e-14 25936 -1.23028 ); + lowCpCoeffs ( 0.808681 0.0233616 -3.55172e-05 2.80152e-08 -8.50073e-12 26429 13.9397 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 2; + } +} +CH2OH +{ + specie + { + molWeight 31.0345; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.69267 0.00864577 -3.75101e-06 7.87235e-10 -6.48554e-14 -3242.51 5.81043 ); + lowCpCoeffs ( 3.86389 0.00559672 5.93272e-06 -1.04532e-08 4.36967e-12 -3193.91 5.47302 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 3; + O 1; + } +} +H2CN +{ + specie + { + molWeight 28.0338; + } + thermodynamics + { + Tlow 200; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.2097 0.00296929 -2.85559e-07 -1.63555e-10 3.04326e-14 27677.1 -4.44448 ); + lowCpCoeffs ( 2.85166 0.00569523 1.07114e-06 -1.62261e-09 -2.35111e-13 28637.8 8.99275 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 2; + C 1; + N 1; + } +} +HCCOH +{ + specie + { + molWeight 42.0376; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.92383 0.00679236 -2.56586e-06 4.49878e-10 -2.99401e-14 7264.63 -7.60177 ); + lowCpCoeffs ( 1.24237 0.0310722 -5.08669e-05 4.31371e-08 -1.40146e-11 8031.61 13.8743 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + O 1; + H 2; + } +} +H2O2 +{ + specie + { + molWeight 34.0147; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.165 0.00490832 -1.90139e-06 3.71186e-10 -2.87908e-14 -17861.8 2.91616 ); + lowCpCoeffs ( 4.27611 -0.000542822 1.67336e-05 -2.15771e-08 8.62454e-12 -17702.6 3.43505 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 2; + O 2; + } +} +HCO +{ + specie + { + molWeight 29.0185; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.77217 0.00495696 -2.48446e-06 5.89162e-10 -5.33509e-14 4011.92 9.79834 ); + lowCpCoeffs ( 4.22119 -0.00324393 1.37799e-05 -1.33144e-08 4.33769e-12 3839.56 3.39437 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + C 1; + O 1; + } +} +NNH +{ + specie + { + molWeight 29.0214; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.76675 0.00289151 -1.04166e-06 1.68426e-10 -1.00919e-14 28650.7 4.47051 ); + lowCpCoeffs ( 4.34469 -0.00484971 2.00595e-05 -2.17265e-08 7.94695e-12 28792 2.97794 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 2; + H 1; + } +} +N2O +{ + specie + { + molWeight 44.0128; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.82307 0.00262703 -9.58509e-07 1.60007e-10 -9.77523e-15 8073.4 -2.20172 ); + lowCpCoeffs ( 2.25715 0.0113047 -1.36713e-05 9.68198e-09 -2.93072e-12 8741.77 10.758 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 2; + O 1; + } +} +CH2(S) +{ + specie + { + molWeight 14.0271; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.29204 0.00465589 -2.01192e-06 4.17906e-10 -3.39716e-14 50926 8.6265 ); + lowCpCoeffs ( 4.1986 -0.00236661 8.23296e-06 -6.68816e-09 1.94315e-12 50496.8 -0.769119 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 2; + } +} +O2 +{ + specie + { + molWeight 31.9988; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.28254 0.00148309 -7.57967e-07 2.09471e-10 -2.16718e-14 -1088.46 5.45323 ); + lowCpCoeffs ( 3.78246 -0.00299673 9.8473e-06 -9.6813e-09 3.24373e-12 -1063.94 3.65768 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + O 2; + } +} +CH2CHO +{ + specie + { + molWeight 43.0456; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.97567 0.00813059 -2.74362e-06 4.0703e-10 -2.17602e-14 490.322 -5.04525 ); + lowCpCoeffs ( 3.40906 0.0107386 1.89149e-06 -7.15858e-09 2.86738e-12 1521.48 9.55829 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + O 1; + H 3; + C 2; + } +} +HNCO +{ + specie + { + molWeight 43.0252; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1478; + highCpCoeffs ( 6.22395 0.00317864 -1.09379e-06 1.70735e-10 -9.95022e-15 -16659.9 -8.38225 ); + lowCpCoeffs ( 3.63096 0.00730282 -2.2805e-06 -6.61271e-10 3.62236e-13 -15587.4 6.19458 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} +HCCO +{ + specie + { + molWeight 41.0297; + } + thermodynamics + { + Tlow 200; + Thigh 4000; + Tcommon 1000; + highCpCoeffs ( 5.62821 0.00408534 -1.59345e-06 2.86261e-10 -1.94078e-14 19327.2 -3.93026 ); + lowCpCoeffs ( 2.25172 0.017655 -2.37291e-05 1.72758e-08 -5.06648e-12 20059.4 12.4904 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + C 2; + O 1; + } +} +H2 +{ + specie + { + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.33728 -4.94025e-05 4.99457e-07 -1.79566e-10 2.00255e-14 -950.159 -3.20502 ); + lowCpCoeffs ( 2.34433 0.00798052 -1.94782e-05 2.01572e-08 -7.37612e-12 -917.935 0.68301 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 2; + } +} +NO2 +{ + specie + { + molWeight 46.0055; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 4.88475 0.0021724 -8.28069e-07 1.57475e-10 -1.05109e-14 2316.5 -0.117417 ); + lowCpCoeffs ( 3.94403 -0.00158543 1.66578e-05 -2.04754e-08 7.83506e-12 2896.62 6.31199 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + O 2; + } +} +CH4 +{ + specie + { + molWeight 16.043; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 0.0748515 0.0133909 -5.73286e-06 1.22293e-09 -1.01815e-13 -9468.34 18.4373 ); + lowCpCoeffs ( 5.14988 -0.013671 4.91801e-05 -4.84743e-08 1.66694e-11 -10246.6 -4.6413 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 4; + } +} +C +{ + specie + { + molWeight 12.0112; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.49267 4.79889e-05 -7.24335e-08 3.74291e-11 -4.87278e-15 85451.3 4.8015 ); + lowCpCoeffs ( 2.55424 -0.000321538 7.33792e-07 -7.32235e-10 2.66521e-13 85443.9 4.53131 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + } +} +HO2 +{ + specie + { + molWeight 33.0068; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 4.01721 0.00223982 -6.33658e-07 1.14246e-10 -1.07909e-14 111.857 3.7851 ); + lowCpCoeffs ( 4.3018 -0.00474912 2.11583e-05 -2.42764e-08 9.29225e-12 294.808 3.71666 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + O 2; + } +} +CH3CHO +{ + specie + { + molWeight 44.0536; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.40411 0.0117231 -4.22631e-06 6.83725e-10 -4.09849e-14 -22593.1 -3.48079 ); + lowCpCoeffs ( 4.72946 -0.00319329 4.75349e-05 -5.74586e-08 2.19311e-11 -21572.9 4.10302 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 2; + H 4; + O 1; + } +} +C3H7 +{ + specie + { + molWeight 43.0892; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 7.7027 0.0160442 -5.28332e-06 7.62986e-10 -3.93923e-14 8298.43 -15.4802 ); + lowCpCoeffs ( 1.05155 0.025992 2.38005e-06 -1.96096e-08 9.37325e-12 10631.9 21.1226 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 3; + H 7; + } +} +CH3OH +{ + specie + { + molWeight 32.0424; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.78971 0.0140938 -6.36501e-06 1.38171e-09 -1.1706e-13 -25374.9 14.5024 ); + lowCpCoeffs ( 5.7154 -0.0152309 6.52441e-05 -7.10807e-08 2.61353e-11 -25642.8 -1.5041 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 4; + O 1; + } +} +CH2O +{ + specie + { + molWeight 30.0265; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 1.76069 0.0092 -4.42259e-06 1.00641e-09 -8.83856e-14 -13995.8 13.6563 ); + lowCpCoeffs ( 4.79372 -0.00990833 3.7322e-05 -3.79285e-08 1.31773e-11 -14309 0.602813 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 2; + C 1; + O 1; + } +} +CO +{ + specie + { + molWeight 28.0106; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.71519 0.00206253 -9.98826e-07 2.30053e-10 -2.03648e-14 -14151.9 7.81869 ); + lowCpCoeffs ( 3.57953 -0.000610354 1.01681e-06 9.07006e-10 -9.04424e-13 -14344.1 3.50841 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + O 1; + } +} +CH3O +{ + specie + { + molWeight 31.0345; + } + thermodynamics + { + Tlow 200; + Thigh 3000; + Tcommon 1000; + highCpCoeffs ( 3.7708 0.0078715 -2.65638e-06 3.94443e-10 -2.11262e-14 127.833 2.92957 ); + lowCpCoeffs ( 2.1062 0.0072166 5.33847e-06 -7.37764e-09 2.07561e-12 978.601 13.1522 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 3; + O 1; + } +} +O +{ + specie + { + molWeight 15.9994; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.56942 -8.59741e-05 4.19485e-08 -1.00178e-11 1.22834e-15 29217.6 4.78434 ); + lowCpCoeffs ( 3.16827 -0.00327932 6.64306e-06 -6.12807e-09 2.11266e-12 29122.3 2.05193 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + O 1; + } +} +HCNN +{ + specie + { + molWeight 41.0325; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 5.89464 0.0039896 -1.59824e-06 2.92494e-10 -2.00947e-14 53452.9 -5.10305 ); + lowCpCoeffs ( 2.52432 0.0159606 -1.88164e-05 1.21255e-08 -3.23574e-12 54262 11.6759 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + N 2; + H 1; + } +} +NCO +{ + specie + { + molWeight 42.0173; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 5.15218 0.00230518 -8.80332e-07 1.47891e-10 -9.0978e-15 14004.1 -2.54427 ); + lowCpCoeffs ( 2.82693 0.00880517 -8.38661e-06 4.8017e-09 -1.33136e-12 14682.5 9.55046 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + C 1; + O 1; + } +} +CH2 +{ + specie + { + molWeight 14.0271; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.8741 0.00365639 -1.40895e-06 2.6018e-10 -1.87728e-14 46263.6 6.17119 ); + lowCpCoeffs ( 3.76268 0.000968872 2.7949e-06 -3.85091e-09 1.68742e-12 46004 1.56253 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 2; + } +} +HCNO +{ + specie + { + molWeight 43.0252; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1382; + highCpCoeffs ( 6.5986 0.00302779 -1.07704e-06 1.71667e-10 -1.01439e-14 17966.1 -10.3307 ); + lowCpCoeffs ( 2.64728 0.0127505 -1.04794e-05 4.41433e-09 -7.57521e-13 19299 10.7333 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + N 1; + C 1; + O 1; + } +} +NH2 +{ + specie + { + molWeight 16.0226; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.83474 0.00320731 -9.33908e-07 1.3703e-10 -7.92061e-15 22172 6.52042 ); + lowCpCoeffs ( 4.204 -0.00210614 7.10683e-06 -5.61152e-09 1.64407e-12 21885.9 -0.141842 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + H 2; + } +} +H2O +{ + specie + { + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 ); + lowCpCoeffs ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 2; + O 1; + } +} +NH +{ + specie + { + molWeight 15.0147; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 2.78369 0.00132984 -4.2478e-07 7.83485e-11 -5.50445e-15 42120.8 5.74078 ); + lowCpCoeffs ( 3.49291 0.000311792 -1.48905e-06 2.48164e-09 -1.0357e-12 41880.6 1.84833 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + H 1; + } +} +H +{ + specie + { + molWeight 1.00797; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.5 -2.30843e-11 1.61562e-14 -4.73515e-18 4.98197e-22 25473.7 -0.446683 ); + lowCpCoeffs ( 2.5 7.05333e-13 -1.99592e-15 2.30082e-18 -9.27732e-22 25473.7 -0.446683 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + H 1; + } +} +AR +{ + specie + { + molWeight 39.948; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + lowCpCoeffs ( 2.5 0 0 0 0 -745.375 4.366 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + Ar 1; + } +} +NO +{ + specie + { + molWeight 30.0061; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 3.26061 0.0011911 -4.2917e-07 6.94577e-11 -4.03361e-15 9920.97 6.3693 ); + lowCpCoeffs ( 4.21848 -0.00463898 1.1041e-05 -9.33614e-09 2.80358e-12 9844.62 2.28085 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + N 1; + O 1; + } +} +CH +{ + specie + { + molWeight 13.0191; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.87846 0.000970914 1.44446e-07 -1.30688e-10 1.76079e-14 71012.4 5.48498 ); + lowCpCoeffs ( 3.48982 0.000323836 -1.68899e-06 3.16217e-09 -1.40609e-12 70797.3 2.08401 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } + elements + { + C 1; + H 1; + } +} diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermophysicalProperties b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..764f5e5626e27d1a6f92eb668d4c536faa9b5c7b --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/thermophysicalProperties @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type hePsiThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + energy sensibleEnthalpy; + equationOfState perfectGas; + specie specie; +} + +inertSpecie N2; + +chemistryReader foamChemistryReader; +foamChemistryFile "$FOAM_CASE/constant/reactionsGRI"; +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGasGRI"; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/turbulenceProperties b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/turbulenceProperties similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/turbulenceProperties rename to tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/constant/turbulenceProperties diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/blockMeshDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..f0f06a591bcdb4a0797ba7a4ed8ab06e189d8154 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/blockMeshDict @@ -0,0 +1,82 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0.0 -0.01 -0.01) + (0.02 -0.01 -0.01) + (0.02 0.01 -0.01) + (0.0 0.01 -0.01) + (0.0 -0.01 0.01) + (0.02 -0.01 0.01) + (0.02 0.01 0.01) + (0.0 0.01 0.01) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (100 40 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + fuel + { + type patch; + faces + ( + (0 4 7 3) + ); + } + air + { + type patch; + faces + ( + (1 2 6 5) + ); + } + outlet + { + type patch; + faces + ( + (0 1 5 4) + (7 6 2 3) + ); + } + frontAndBack + { + type empty; + faces + ( + (4 5 6 7) + (0 3 2 1) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/controlDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..0c956ae21ae4c80d01534dafb79e555a188e6017 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/controlDict @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 1000; + +deltaT 1; + +writeControl runTime; + +writeInterval 20; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..ede2181dfeeee7a102669796ed3d681ebe89b00d --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 4; + +method hierarchical; + +hierarchicalCoeffs +{ + n (2 2 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSchemes b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..4e9e2d243524b461890929442166d0de1445c2fa --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSchemes @@ -0,0 +1,57 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default localEuler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss limitedLinearV 1; + div(phi,Yi_h) Gauss limitedLinear 1; + div(phi,K) Gauss limitedLinear 1; + div(phid,p) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSolution b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..d9761be194759ceb05aa53d128b1233d55cae064 --- /dev/null +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/fvSolution @@ -0,0 +1,83 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "rho.*" + { + solver diagonal; + } + + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.1; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|h|k|epsilon)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(U|h|k|epsilon)Final" + { + $U; + relTol 0.1; + } + + Yi + { + $U; + relTol 0.1; + } +} + +PIMPLE +{ + momentumPredictor no; + nOuterCorrectors 1; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + + maxDeltaT 1e-4; + maxCo 1; + alphaTemp 0.05; + rDeltaTSmoothingCoeff 1; + rDeltaTDampingCoeff 1; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGas index b16eab005140f277d178dffd3a4e8ad7a79c9816..4bbb98aa34305e8df8340d9820a4d8ebe928602e 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGas +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } elements @@ -45,7 +44,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } elements @@ -72,7 +70,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } elements @@ -99,7 +96,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } elements @@ -126,7 +122,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } elements diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGasGRI b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGasGRI index 00d5cd86dcf99cd0531d0b2309454ba74016db38..f709692e99bb94e7319e1409aa4f0b008a59558e 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGasGRI +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGasGRI @@ -2,7 +2,6 @@ OH { specie { - nMoles 1; molWeight 17.0074; } thermodynamics @@ -28,7 +27,6 @@ CN { specie { - nMoles 1; molWeight 26.0179; } thermodynamics @@ -54,7 +52,6 @@ C2H3 { specie { - nMoles 1; molWeight 27.0462; } thermodynamics @@ -80,7 +77,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics @@ -105,7 +101,6 @@ HOCN { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -133,7 +128,6 @@ N { specie { - nMoles 1; molWeight 14.0067; } thermodynamics @@ -158,7 +152,6 @@ C2H { specie { - nMoles 1; molWeight 25.0303; } thermodynamics @@ -184,7 +177,6 @@ HNO { specie { - nMoles 1; molWeight 31.0141; } thermodynamics @@ -211,7 +203,6 @@ CH2CO { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -238,7 +229,6 @@ CH3 { specie { - nMoles 1; molWeight 15.0351; } thermodynamics @@ -264,7 +254,6 @@ C2H5 { specie { - nMoles 1; molWeight 29.0622; } thermodynamics @@ -290,7 +279,6 @@ C2H4 { specie { - nMoles 1; molWeight 28.0542; } thermodynamics @@ -316,7 +304,6 @@ C3H8 { specie { - nMoles 1; molWeight 44.0972; } thermodynamics @@ -342,7 +329,6 @@ HCN { specie { - nMoles 1; molWeight 27.0258; } thermodynamics @@ -369,7 +355,6 @@ C2H6 { specie { - nMoles 1; molWeight 30.0701; } thermodynamics @@ -395,7 +380,6 @@ NH3 { specie { - nMoles 1; molWeight 17.0306; } thermodynamics @@ -421,7 +405,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -447,7 +430,6 @@ C2H2 { specie { - nMoles 1; molWeight 26.0382; } thermodynamics @@ -473,7 +455,6 @@ CH2OH { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -500,7 +481,6 @@ H2CN { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -527,7 +507,6 @@ HCCOH { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -554,7 +533,6 @@ H2O2 { specie { - nMoles 1; molWeight 34.0147; } thermodynamics @@ -580,7 +558,6 @@ HCO { specie { - nMoles 1; molWeight 29.0185; } thermodynamics @@ -607,7 +584,6 @@ NNH { specie { - nMoles 1; molWeight 29.0214; } thermodynamics @@ -633,7 +609,6 @@ N2O { specie { - nMoles 1; molWeight 44.0128; } thermodynamics @@ -659,7 +634,6 @@ CH2(S) { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -685,7 +659,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -710,7 +683,6 @@ CH2CHO { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -737,7 +709,6 @@ HNCO { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -765,7 +736,6 @@ HCCO { specie { - nMoles 1; molWeight 41.0297; } thermodynamics @@ -792,7 +762,6 @@ H2 { specie { - nMoles 1; molWeight 2.01594; } thermodynamics @@ -817,7 +786,6 @@ NO2 { specie { - nMoles 1; molWeight 46.0055; } thermodynamics @@ -843,7 +811,6 @@ CH4 { specie { - nMoles 1; molWeight 16.043; } thermodynamics @@ -869,7 +836,6 @@ C { specie { - nMoles 1; molWeight 12.0112; } thermodynamics @@ -894,7 +860,6 @@ HO2 { specie { - nMoles 1; molWeight 33.0068; } thermodynamics @@ -920,7 +885,6 @@ CH3CHO { specie { - nMoles 1; molWeight 44.0536; } thermodynamics @@ -947,7 +911,6 @@ C3H7 { specie { - nMoles 1; molWeight 43.0892; } thermodynamics @@ -973,7 +936,6 @@ CH3OH { specie { - nMoles 1; molWeight 32.0424; } thermodynamics @@ -1000,7 +962,6 @@ CH2O { specie { - nMoles 1; molWeight 30.0265; } thermodynamics @@ -1027,7 +988,6 @@ CO { specie { - nMoles 1; molWeight 28.0106; } thermodynamics @@ -1053,7 +1013,6 @@ CH3O { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -1080,7 +1039,6 @@ O { specie { - nMoles 1; molWeight 15.9994; } thermodynamics @@ -1105,7 +1063,6 @@ HCNN { specie { - nMoles 1; molWeight 41.0325; } thermodynamics @@ -1132,7 +1089,6 @@ NCO { specie { - nMoles 1; molWeight 42.0173; } thermodynamics @@ -1159,7 +1115,6 @@ CH2 { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -1185,7 +1140,6 @@ HCNO { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -1213,7 +1167,6 @@ NH2 { specie { - nMoles 1; molWeight 16.0226; } thermodynamics @@ -1239,7 +1192,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -1265,7 +1217,6 @@ NH { specie { - nMoles 1; molWeight 15.0147; } thermodynamics @@ -1291,7 +1242,6 @@ H { specie { - nMoles 1; molWeight 1.00797; } thermodynamics @@ -1316,7 +1266,6 @@ AR { specie { - nMoles 1; molWeight 39.948; } thermodynamics @@ -1341,7 +1290,6 @@ NO { specie { - nMoles 1; molWeight 30.0061; } thermodynamics @@ -1367,7 +1315,6 @@ CH { specie { - nMoles 1; molWeight 13.0191; } thermodynamics diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties index e5bc4467d3a425dbec1da615f7376e081d5b7a34..481ce02276234e7a7bebc8bf5e3282d0326e4b0e 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties @@ -90,6 +90,7 @@ tabulation otherSpecies 1; Temperature 2500; Pressure 1e15; + deltaT 1; } // Maximum number of leafs stored in the binary tree diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGas index b16eab005140f277d178dffd3a4e8ad7a79c9816..4bbb98aa34305e8df8340d9820a4d8ebe928602e 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGas +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } elements @@ -45,7 +44,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } elements @@ -72,7 +70,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } elements @@ -99,7 +96,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } elements @@ -126,7 +122,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } elements diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGasGRI b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGasGRI index 00d5cd86dcf99cd0531d0b2309454ba74016db38..f709692e99bb94e7319e1409aa4f0b008a59558e 100644 --- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGasGRI +++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGasGRI @@ -2,7 +2,6 @@ OH { specie { - nMoles 1; molWeight 17.0074; } thermodynamics @@ -28,7 +27,6 @@ CN { specie { - nMoles 1; molWeight 26.0179; } thermodynamics @@ -54,7 +52,6 @@ C2H3 { specie { - nMoles 1; molWeight 27.0462; } thermodynamics @@ -80,7 +77,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics @@ -105,7 +101,6 @@ HOCN { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -133,7 +128,6 @@ N { specie { - nMoles 1; molWeight 14.0067; } thermodynamics @@ -158,7 +152,6 @@ C2H { specie { - nMoles 1; molWeight 25.0303; } thermodynamics @@ -184,7 +177,6 @@ HNO { specie { - nMoles 1; molWeight 31.0141; } thermodynamics @@ -211,7 +203,6 @@ CH2CO { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -238,7 +229,6 @@ CH3 { specie { - nMoles 1; molWeight 15.0351; } thermodynamics @@ -264,7 +254,6 @@ C2H5 { specie { - nMoles 1; molWeight 29.0622; } thermodynamics @@ -290,7 +279,6 @@ C2H4 { specie { - nMoles 1; molWeight 28.0542; } thermodynamics @@ -316,7 +304,6 @@ C3H8 { specie { - nMoles 1; molWeight 44.0972; } thermodynamics @@ -342,7 +329,6 @@ HCN { specie { - nMoles 1; molWeight 27.0258; } thermodynamics @@ -369,7 +355,6 @@ C2H6 { specie { - nMoles 1; molWeight 30.0701; } thermodynamics @@ -395,7 +380,6 @@ NH3 { specie { - nMoles 1; molWeight 17.0306; } thermodynamics @@ -421,7 +405,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -447,7 +430,6 @@ C2H2 { specie { - nMoles 1; molWeight 26.0382; } thermodynamics @@ -473,7 +455,6 @@ CH2OH { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -500,7 +481,6 @@ H2CN { specie { - nMoles 1; molWeight 28.0338; } thermodynamics @@ -527,7 +507,6 @@ HCCOH { specie { - nMoles 1; molWeight 42.0376; } thermodynamics @@ -554,7 +533,6 @@ H2O2 { specie { - nMoles 1; molWeight 34.0147; } thermodynamics @@ -580,7 +558,6 @@ HCO { specie { - nMoles 1; molWeight 29.0185; } thermodynamics @@ -607,7 +584,6 @@ NNH { specie { - nMoles 1; molWeight 29.0214; } thermodynamics @@ -633,7 +609,6 @@ N2O { specie { - nMoles 1; molWeight 44.0128; } thermodynamics @@ -659,7 +634,6 @@ CH2(S) { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -685,7 +659,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -710,7 +683,6 @@ CH2CHO { specie { - nMoles 1; molWeight 43.0456; } thermodynamics @@ -737,7 +709,6 @@ HNCO { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -765,7 +736,6 @@ HCCO { specie { - nMoles 1; molWeight 41.0297; } thermodynamics @@ -792,7 +762,6 @@ H2 { specie { - nMoles 1; molWeight 2.01594; } thermodynamics @@ -817,7 +786,6 @@ NO2 { specie { - nMoles 1; molWeight 46.0055; } thermodynamics @@ -843,7 +811,6 @@ CH4 { specie { - nMoles 1; molWeight 16.043; } thermodynamics @@ -869,7 +836,6 @@ C { specie { - nMoles 1; molWeight 12.0112; } thermodynamics @@ -894,7 +860,6 @@ HO2 { specie { - nMoles 1; molWeight 33.0068; } thermodynamics @@ -920,7 +885,6 @@ CH3CHO { specie { - nMoles 1; molWeight 44.0536; } thermodynamics @@ -947,7 +911,6 @@ C3H7 { specie { - nMoles 1; molWeight 43.0892; } thermodynamics @@ -973,7 +936,6 @@ CH3OH { specie { - nMoles 1; molWeight 32.0424; } thermodynamics @@ -1000,7 +962,6 @@ CH2O { specie { - nMoles 1; molWeight 30.0265; } thermodynamics @@ -1027,7 +988,6 @@ CO { specie { - nMoles 1; molWeight 28.0106; } thermodynamics @@ -1053,7 +1013,6 @@ CH3O { specie { - nMoles 1; molWeight 31.0345; } thermodynamics @@ -1080,7 +1039,6 @@ O { specie { - nMoles 1; molWeight 15.9994; } thermodynamics @@ -1105,7 +1063,6 @@ HCNN { specie { - nMoles 1; molWeight 41.0325; } thermodynamics @@ -1132,7 +1089,6 @@ NCO { specie { - nMoles 1; molWeight 42.0173; } thermodynamics @@ -1159,7 +1115,6 @@ CH2 { specie { - nMoles 1; molWeight 14.0271; } thermodynamics @@ -1185,7 +1140,6 @@ HCNO { specie { - nMoles 1; molWeight 43.0252; } thermodynamics @@ -1213,7 +1167,6 @@ NH2 { specie { - nMoles 1; molWeight 16.0226; } thermodynamics @@ -1239,7 +1192,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -1265,7 +1217,6 @@ NH { specie { - nMoles 1; molWeight 15.0147; } thermodynamics @@ -1291,7 +1242,6 @@ H { specie { - nMoles 1; molWeight 1.00797; } thermodynamics @@ -1316,7 +1266,6 @@ AR { specie { - nMoles 1; molWeight 39.948; } thermodynamics @@ -1341,7 +1290,6 @@ NO { specie { - nMoles 1; molWeight 30.0061; } thermodynamics @@ -1367,7 +1315,6 @@ CH { specie { - nMoles 1; molWeight 13.0191; } thermodynamics diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict b/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict index 9ed4dff45b7f0847052671cd7b8234747495a98b..8b18e755b31bf33423d8d5ec3f4d53b2c6b433bb 100644 --- a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict +++ b/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict @@ -17,15 +17,12 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver velocityComponentLaplacian; +motionSolver velocityComponentLaplacian; -velocityComponentLaplacianCoeffs -{ - component x; - diffusivity directional (1 200 0); -} +component x; +diffusivity directional (1 200 0); // ************************************************************************* // diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties index ae20e0a11d4fd53fde3807622cf3093af3141dff..9df1260f51fec9e2db8eafecea15f09437851c7c 100644 --- a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution b/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution index a46e4ae0934f6e2fbd3128bc6a4a95df3b2c7d32..a4a525c3267b885dbfae83d3be0d2ca63219e678 100644 --- a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution +++ b/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution @@ -31,7 +31,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties index e5e08ce38a43569ae8c5c32a6e53786e6573770c..ae30a357977edd403eb1f62edcf794f85cbf5b6e 100644 --- a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.96; } thermodynamics diff --git a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties index 5a32c867522ce26da60d7f085388bae0404479af..edea3c466524bcd009d150add02345607f6e5dd6 100644 --- a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.01348; } thermodynamics diff --git a/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties index 478f7bd9c944eebed199bd01bc786505e86ce7f9..ba5addc3cfebe6c4fbf4eab663d70885c7ab93eb 100644 --- a/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties @@ -33,7 +33,6 @@ mixture { specie { - nMoles 1; molWeight 11640.3; } thermodynamics diff --git a/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties index 017e67e3ad28df8d8a329b1d9f59c2d6f45cc577..8d13455e6d4175670671944644242ba1eedbd0a5 100644 --- a/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties @@ -31,7 +31,6 @@ mixture // normalised gas specie { - nMoles 1; molWeight 11640.3; } thermodynamics diff --git a/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties index dac267f93bdd3d6a1d94f61cd208d30d57aee780..d4f3aa87d388955d7c4b7604c9ccaa6829885312 100644 --- a/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.96; } thermodynamics diff --git a/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties index 017e67e3ad28df8d8a329b1d9f59c2d6f45cc577..8d13455e6d4175670671944644242ba1eedbd0a5 100644 --- a/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties @@ -31,7 +31,6 @@ mixture // normalised gas specie { - nMoles 1; molWeight 11640.3; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict index c26839558206b95ea65cc690405d84826e1fffb6..7661b02be7eec0983fbd2100aa0dc2273cf00089 100644 --- a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict +++ b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict @@ -19,19 +19,14 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone rotatingZone; +cellZone rotatingZone; - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 0 1); - omega $:meshMotionProperties.omega; - } -} +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 0 1); +omega $:meshMotionProperties.omega; // ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/thermophysicalProperties index bc9014c4fa5ff5bca7b17c51228c2ab220e5213e..547c493c34a751ec9eec4eca6d6b992855e59e48 100644 --- a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/transportProperties b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/transportProperties index cad699f48a4adb51125782007e09992b669bbf81..63a1ac75aa09f4a1962ca6e140eb2d5a097d9ac2 100644 --- a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/transportProperties +++ b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.0e-6; +nu 1.0e-6; // ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/system/fvSolution b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/system/fvSolution index 846b06411fdaf74c9d5976ad6a2cced4c3ea3578..6d380f3e195742164d5e55bb5ceaa6a6587256ae 100644 --- a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/system/fvSolution +++ b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/system/fvSolution @@ -33,7 +33,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { $p; tolerance 1e-2; @@ -63,8 +63,9 @@ PIMPLE nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + + pMaxFactor 1.2; + pMinFactor 0.8; } relaxationFactors diff --git a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/constant/thermophysicalProperties index d3214ca51b6a3495ef379b7032782620f34f4b2f..86bfac81aceb1458d099a7e2e88f9453d598819f 100644 --- a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/blockMeshDict b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/blockMeshDict +++ b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/fvSolution index d570f33abe221d5921b36bb3a13a86026e775cc5..430ed86a81223f4d79b3a3d98cdfa5d9ac9fa967 100644 --- a/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/LES/pitzDaily/system/fvSolution @@ -52,8 +52,9 @@ PIMPLE nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + + pMinFactor 0.5; + pMaxFactor 2.0; } relaxationFactors diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/fvOptions b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/fvOptions index eec3c3062272a4a0f6e850f3bfcf399bfa5a4b61..f2283ee80ef4110ec2d64389178f1eef2f5adbde 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/fvOptions +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -27,21 +26,18 @@ porosity1 type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (7e5 -1000 -1000); - f (0 0 0); + d (7e5 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0.70710678 0.70710678 0); - e3 (0 0 1); - } + type axesRotation; + e1 (0.70710678 0.70710678 0); + e3 (0 0 1); } } } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/thermophysicalProperties index bc9014c4fa5ff5bca7b17c51228c2ab220e5213e..f028046cef1cb62638b4eec5f974b23b0c579a3c 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/constant/thermophysicalProperties @@ -23,14 +23,13 @@ thermoType thermo hConst; equationOfState perfectGas; specie specie; - energy sensibleEnthalpy; + energy sensibleInternalEnergy; } mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSchemes b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSchemes index e26555e7cfeadf9c5655ba41f7877493027831d8..d354736757afe6b3bec3f2febf554eabd1e8d523 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSchemes +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSchemes @@ -30,8 +30,9 @@ divSchemes default none; div(phi,U) Gauss upwind; div(phid,p) Gauss upwind; + div(phiv,p) Gauss linear; div(phi,K) Gauss linear; - div(phi,h) Gauss upwind; + div(phi,e) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div(phi,R) Gauss upwind; diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSolution index 8c179b695139b98d0998087de4e4d7e5443d017e..5dc858a4d40859793b8ee4a2c409e71c0379f93b 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuct/system/fvSolution @@ -28,11 +28,10 @@ solvers pFinal { $p; - tolerance 1e-07; relTol 0; } - "(rho|U|h|k|epsilon|omega)" + "(rho|U|e|k|epsilon|omega)" { solver smoothSolver; smoother symGaussSeidel; @@ -40,10 +39,9 @@ solvers relTol 0.1; } - "(rho|U|h|k|epsilon|omega)Final" + "(rho|U|e|k|epsilon|omega)Final" { $U; - tolerance 1e-06; relTol 0; } } @@ -57,8 +55,8 @@ PIMPLE nNonOrthogonalCorrectors 0; consistent yes; - rhoMin 0.4; - rhoMax 2.0; + pMaxFactor 1.5; + pMinFactor 0.9; residualControl { @@ -76,13 +74,13 @@ relaxationFactors { fields { - "p.*" 0.9; + "p.*" 1; "rho.*" 1; } equations { "U.*" 0.9; - "h.*" 0.7; + "e.*" 0.7; "(k|epsilon|omega).*" 0.8; } } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/fvOptions b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/fvOptions index bbc6b2e107399abde3182414e3e82b82a992f446..2a0594e2942db482ad5ca0a727059a9a1f983f43 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/fvOptions +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -27,21 +26,18 @@ porosity1 type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (5e7 -1000 -1000); - f (0 0 0); + d (5e7 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0.70710678 0.70710678 0); - e2 (0 0 1); - } + type axesRotation; + e1 (0.70710678 0.70710678 0); + e2 (0 0 1); } } } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/thermophysicalProperties index bc9014c4fa5ff5bca7b17c51228c2ab220e5213e..547c493c34a751ec9eec4eca6d6b992855e59e48 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/system/fvSolution index 0f92e35e5354c920f50aa1134be7df8ca97e3e5e..372cdf74e855eda32e89bc9fe3907521f1dadd21 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/RAS/angledDuctLTS/system/fvSolution @@ -56,8 +56,8 @@ PIMPLE nCorrectors 1; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + pMaxFactor 1.5; + pMinFactor 0.9; maxCo 0.2; rDeltaTSmoothingCoeff 0.1; diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/constant/thermophysicalProperties index bd56ea91968c94297bfe4f3005967da9482abeaa..021e67beb45288fcda17d2fd8930be7d9a629ff0 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution index e0ec2e5c06cbbcba1d244cb23359efea02ac409d..8a086b6190c28209ecdef5703c1cc7f137820c4a 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution @@ -59,8 +59,9 @@ PIMPLE nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + + pMax 1.2e5; + pMin 0.8e5; } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/fvOptions b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/fvOptions index 12aff0f45195b3d1c61366031efc3128ca666276..89a3db3ebc0644236a56afd8d9f53cf19d5d1113 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/fvOptions +++ b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -27,21 +26,18 @@ porosity1 type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (1e5 -1000 -1000); - f (0 0 0); + d (1e5 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (1 0 0); - e2 (0 1 0); - } + type axesRotation; + e1 (1 0 0); + e2 (0 1 0); } } } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/thermophysicalProperties index 09fdeb5a77e7d3fa4ab19cf6d92d4bbf32b5f854..fc30f147ecaff5fc7382987f7e821a94a6acc8fc 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/transportProperties b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/transportProperties +++ b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/system/fvSolution index a69d319e9be58c5cd2d95f68a68ffad153bb04d9..bb5c49c6f20e232f989a1fd1ed4877b4af30f75b 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/RAS/mixerVessel2D/system/fvSolution @@ -84,14 +84,13 @@ solvers PIMPLE { - nOuterCorrectors 1; - nCorrectors 2; - nNonOrthogonalCorrectors 0; - momentumPredictor yes; - rhoMin 0.5; - rhoMax 2.0; - pRefCell 0; - pRefValue 1e5; + nOuterCorrectors 1; + nCorrectors 2; + nNonOrthogonalCorrectors 0; + momentumPredictor yes; + + pMax 1.2e5; + pMin 0.8e5; } relaxationFactors diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties index d3214ca51b6a3495ef379b7032782620f34f4b2f..86bfac81aceb1458d099a7e2e88f9453d598819f 100644 --- a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution index d570f33abe221d5921b36bb3a13a86026e775cc5..430ed86a81223f4d79b3a3d98cdfa5d9ac9fa967 100644 --- a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution @@ -52,8 +52,9 @@ PIMPLE nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + + pMinFactor 0.5; + pMaxFactor 2.0; } relaxationFactors diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/fvOptions b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/fvOptions index f50c685976d6b5aef4b414e01560aa3be40898da..379953e2cc8e38caaebeb80f34417c2fd67682f6 100644 --- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/fvOptions +++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/fvOptions @@ -18,16 +18,12 @@ FoamFile source1 { type fixedTemperatureConstraint; - active yes; - fixedTemperatureConstraintCoeffs - { - selectionMode cellZone; - cellZone porosity; + selectionMode cellZone; + cellZone porosity; - mode uniform; - temperature 350; - } + mode uniform; + temperature 350; } diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/porosityProperties b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/porosityProperties index 21081ce23f15afcba5ca245f6eba546a609ecdab..3114574c7f6dcef25da9b720a8712c4fef16f6f9 100644 --- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/porosityProperties +++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/porosityProperties @@ -18,24 +18,21 @@ FoamFile porosity1 { type DarcyForchheimer; - active yes; + cellZone porosity; - DarcyForchheimerCoeffs - { - d (5e7 -1000 -1000); - f (0 0 0); + d (5e7 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0.70710678 0.70710678 0); - e2 (0 0 1); - } + type axesRotation; + e1 (0.70710678 0.70710678 0); + e2 (0 0 1); } } } diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/thermophysicalProperties b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/thermophysicalProperties index 1b98cf2914cc7f3ab965696e46ee2015342ec90d..856451fc9fd882ca2fe6a6b1c9eb9e7808169a80 100644 --- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/common/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/explicit/system/fvSolution b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/explicit/system/fvSolution index 3fb9d80ceb145dd8a5a3f1507dadd5cc7dc53c21..eaa40c10ac71d90bc5029b9da59e59bda931ac0e 100644 --- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/explicit/system/fvSolution +++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/explicit/system/fvSolution @@ -54,8 +54,8 @@ solvers SIMPLE { nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 1.5; + pMinFactor 0.5; + pMaxFactor 1.5; residualControl { diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/implicit/system/fvSolution b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/implicit/system/fvSolution index 5152133048d391d80eb42f9275c3b565231766a2..dc37616c34c84c4bdc7ffd39a62475eb8f8d9818 100644 --- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/implicit/system/fvSolution +++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuct/implicit/system/fvSolution @@ -48,8 +48,8 @@ SIMPLE { nUCorrectors 2; nNonOrthogonalCorrectors 0; - rhoMin 0.5; - rhoMax 2.0; + pMinFactor 0.5; + pMaxFactor 2.0; residualControl { diff --git a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/fvOptions b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/fvOptions index 9c08df7c6e91fb5241ad466b0b1f4ef69e88b291..3f91e87292a6205d22991becbf61672d5193bdc4 100644 --- a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/fvOptions +++ b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -53,32 +52,24 @@ porosity fixedTemperature { type fixedTemperatureConstraint; - active yes; - fixedTemperatureConstraintCoeffs - { - selectionMode cellZone; - cellZone porosity; - mode uniform; - temperature 350; - } + selectionMode cellZone; + cellZone porosity; + mode uniform; + temperature 350; } porosityTurbulence { type scalarFixedValueConstraint; - active yes; - scalarFixedValueConstraintCoeffs + selectionMode cellZone; + cellZone porosity; + fieldValues { - selectionMode cellZone; - cellZone porosity; - fieldValues - { - k 1; - epsilon 150; - } + k 1; + epsilon 150; } } diff --git a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties index 1b98cf2914cc7f3ab965696e46ee2015342ec90d..856451fc9fd882ca2fe6a6b1c9eb9e7808169a80 100644 --- a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution index 254daac696679153f3682e222457e0035ffd0bc1..ac93dfc4464cd5232d224db7e93184c47abb4316 100644 --- a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution +++ b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution @@ -54,8 +54,8 @@ solvers SIMPLE { nNonOrthogonalCorrectors 0; - rhoMin 0.4; - rhoMax 1.5; + pMinFactor 0.4; + pMaxFactor 1.5; residualControl { diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/constant/thermophysicalProperties b/tutorials/compressible/rhoSimpleFoam/squareBend/constant/thermophysicalProperties index 987aee5dc167a3e1dddb13e7f4f2a53310331cc0..7676ff69885b62d40b1af6d151fe77104aed380a 100644 --- a/tutorials/compressible/rhoSimpleFoam/squareBend/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoSimpleFoam/squareBend/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/system/fvSolution b/tutorials/compressible/rhoSimpleFoam/squareBend/system/fvSolution index 6b7468052d42e87b4bbb828be334a61c276a0197..9eeb6022e8f08556226fe6762db2ba6625e72d39 100644 --- a/tutorials/compressible/rhoSimpleFoam/squareBend/system/fvSolution +++ b/tutorials/compressible/rhoSimpleFoam/squareBend/system/fvSolution @@ -39,8 +39,8 @@ solvers SIMPLE { nNonOrthogonalCorrectors 0; - rhoMin 0.1; - rhoMax 1.0; + pMinFactor 0.1; + pMaxFactor 2; transonic yes; consistent yes; @@ -60,7 +60,6 @@ relaxationFactors fields { p 1; - rho 1; } equations { diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/T b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/T new file mode 100644 index 0000000000000000000000000000000000000000..a8beffa394b55e611ed195b3784021ab7dd4b0aa --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/T @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + Default_Boundary_Region + { + type fixedValue; + value uniform 350; + } + + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + inletValue $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/U b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/U new file mode 100644 index 0000000000000000000000000000000000000000..c799a42a7041e8199ce474fb12287914c868a316 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/U @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + Default_Boundary_Region + { + type noSlip; + } + inlet + { + type flowRateInletVelocity; + massFlowRate constant 5; + rhoInlet 1000; // Guess for rho + } + outlet + { + type inletOutlet; + value uniform (0 0 0); + inletValue uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/alphat b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/alphat new file mode 100644 index 0000000000000000000000000000000000000000..ef74c232deda9225537f1af037fd3c9e3655e5c8 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/alphat @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + Default_Boundary_Region + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + inlet + { + type calculated; + value uniform 0; + } + outlet + { + type calculated; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/epsilon b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..5b3d2ed84c070622a10558ef33311973ccc1b836 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/epsilon @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 200; + +boundaryField +{ + Default_Boundary_Region + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 200; + } + inlet + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + value uniform 200; + } + outlet + { + type inletOutlet; + inletValue uniform 200; + value uniform 200; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/k b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/k new file mode 100644 index 0000000000000000000000000000000000000000..8650f473e478d0ae817e0e548a538b3e52323f8c --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/k @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + Default_Boundary_Region + { + type kqRWallFunction; + value uniform 1; + } + inlet + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.05; + value uniform 1; + } + outlet + { + type inletOutlet; + inletValue uniform 1; + value uniform 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/nut b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/nut new file mode 100644 index 0000000000000000000000000000000000000000..10aa185190d7497a034bb3236d8f6d1db61d74ce --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/nut @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + Default_Boundary_Region + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + inlet + { + type calculated; + value uniform 0; + } + outlet + { + type calculated; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/p b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/p new file mode 100644 index 0000000000000000000000000000000000000000..6aa8ef0e423b0f67b7c8de0e6647fb03d30866bd --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/0/p @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + Default_Boundary_Region + { + type zeroGradient; + } + inlet + { + type zeroGradient; + } + outlet + { + type fixedValue; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/thermophysicalProperties b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..7457b64691a4281d3b4375aa2e60ba68e945ac29 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/thermophysicalProperties @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + properties liquid; + energy sensibleInternalEnergy; +} + +mixture +{ + H2O; +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/turbulenceProperties b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..8fe9b5ed38d3ed562c1cdf8fcc71b0a6ce10c8bc --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/constant/turbulenceProperties @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; + + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/blockMeshDict b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..adb98d2811fd4c484c96ea00cb54d256b3826c8f --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/blockMeshDict @@ -0,0 +1,127 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + // front-plane: z = +25mm + // inlet region + ( -50 25 25) // pt 0 + ( 0 25 25) // pt 1 + ( -50 75 25) // pt 2 + ( 0 75 25) // pt 3 + // outlet region + ( -500 -75 25) // pt 4 + ( 0 -75 25) // pt 5 + ( -500 -25 25) // pt 6 + ( 0 -25 25) // pt 7 + // bend mid-points + ( 25 0 25) // pt 8 + ( 75 0 25) // pt 9 + // back-plane: z = -25mm + // inlet region + ( -50 25 -25) // pt 0 + 10 + ( 0 25 -25) // pt 1 + 10 + ( -50 75 -25) // pt 2 + 10 + ( 0 75 -25) // pt 3 + 10 + // outlet region + ( -500 -75 -25) // pt 4 + 10 + ( 0 -75 -25) // pt 5 + 10 + ( -500 -25 -25) // pt 7 + 10 + ( 0 -25 -25) // pt 8 + 10 + // bend mid-points + ( 25 0 -25) // pt 8 + 10 + ( 75 0 -25) // pt 9 + 10 +); + +blocks +( + hex (0 1 11 10 2 3 13 12) inlet ( 20 20 20) simpleGrading (1 1 1) + hex (4 5 15 14 6 7 17 16) outlet (200 20 20) simpleGrading (1 1 1) + + hex (1 8 18 11 3 9 19 13) bend1 ( 30 20 20) simpleGrading (1 1 1) + hex (5 9 19 15 7 8 18 17) bend2 ( 30 20 20) simpleGrading (1 1 1) +); + +edges +( + // block 2 + arc 1 8 ( 17.678 17.678 25) + arc 11 18 ( 17.678 17.678 -25) + arc 3 9 ( 53.033 53.033 25) + arc 13 19 ( 53.033 53.033 -25) + // block 3 + arc 7 8 ( 17.678 -17.678 25) + arc 17 18 ( 17.678 -17.678 -25) + arc 5 9 ( 53.033 -53.033 25) + arc 15 19 ( 53.033 -53.033 -25) +); + +boundary +( + // is there no way of defining all my 'defaultFaces' to be 'wall'? + Default_Boundary_Region + { + type wall; + faces + ( + // block0 + ( 0 1 3 2 ) + ( 11 10 12 13 ) + ( 0 10 11 1 ) + ( 2 3 13 12 ) + // block1 + ( 4 5 7 6 ) + ( 15 14 16 17 ) + ( 4 14 15 5 ) + ( 6 7 17 16 ) + // block2 + ( 1 8 9 3 ) + ( 18 11 13 19 ) + ( 3 9 19 13 ) + ( 1 11 18 8 ) + // block3 + ( 5 9 8 7 ) + ( 19 15 17 18 ) + ( 5 15 19 9 ) + ( 7 8 18 17 ) + ); + } + inlet + { + type patch; + faces + ( + (0 2 12 10) + ); + } + + outlet + { + type patch; + faces + ( + (4 6 16 14) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/controlDict b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..6a458462f032cceb8f45a38c7233ae210fac4264 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/controlDict @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application rhoSimpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 500; + +deltaT 1; + +writeControl timeStep; + +writeInterval 100; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +graphFormat raw; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..0ab23bff191475c4fd7034cb13cd6f7b55ab9698 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 8; + +method hierarchical; + +simpleCoeffs +{ + n (8 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (4 2 1); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile ""; +} + +distributed no; + +roots ( ); + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSchemes b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..111b7b18f791183411f40b88a4721c000e5eb3c3 --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSchemes @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default steadyState; +} + +gradSchemes +{ + default Gauss linear; + + limited cellLimited Gauss linear 1; +} + +divSchemes +{ + default none; + + div(phi,U) bounded Gauss linearUpwind limited; + div(phi,e) bounded Gauss linearUpwind limited; + div(phi,epsilon) bounded Gauss linearUpwind limited; + div(phi,k) bounded Gauss linearUpwind limited; + div(phi,Ekp) bounded Gauss linearUpwind limited; + + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSolution b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..b4708c2a17d4f891cc400719dd76238b6c3295bd --- /dev/null +++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/fvSolution @@ -0,0 +1,71 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + smoother GaussSeidel; + + tolerance 1e-7; + relTol 0.1; + } + + "(U|e|k|epsilon)" + { + solver smoothSolver; + smoother symGaussSeidel; + + tolerance 1e-7; + relTol 0.1; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 0; + pMinFactor 0.1; + pMaxFactor 1.5; + + transonic no; + consistent no; + + residualControl + { + p 1e-4; + U 1e-4; + "(k|omega|epsilon|e|h)" 1e-3; + } +} + +relaxationFactors +{ + fields + { + p 0.3; + } + equations + { + U 0.7; + e 0.7; + k 0.7; + epsilon 0.7; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/sonicDyMFoam/movingCone/constant/dynamicMeshDict b/tutorials/compressible/sonicDyMFoam/movingCone/constant/dynamicMeshDict index 9ed4dff45b7f0847052671cd7b8234747495a98b..8b18e755b31bf33423d8d5ec3f4d53b2c6b433bb 100644 --- a/tutorials/compressible/sonicDyMFoam/movingCone/constant/dynamicMeshDict +++ b/tutorials/compressible/sonicDyMFoam/movingCone/constant/dynamicMeshDict @@ -17,15 +17,12 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver velocityComponentLaplacian; +motionSolver velocityComponentLaplacian; -velocityComponentLaplacianCoeffs -{ - component x; - diffusivity directional (1 200 0); -} +component x; +diffusivity directional (1 200 0); // ************************************************************************* // diff --git a/tutorials/compressible/sonicDyMFoam/movingCone/constant/thermophysicalProperties b/tutorials/compressible/sonicDyMFoam/movingCone/constant/thermophysicalProperties index ae20e0a11d4fd53fde3807622cf3093af3141dff..9df1260f51fec9e2db8eafecea15f09437851c7c 100644 --- a/tutorials/compressible/sonicDyMFoam/movingCone/constant/thermophysicalProperties +++ b/tutorials/compressible/sonicDyMFoam/movingCone/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/sonicDyMFoam/movingCone/system/fvSolution b/tutorials/compressible/sonicDyMFoam/movingCone/system/fvSolution index a46e4ae0934f6e2fbd3128bc6a4a95df3b2c7d32..a4a525c3267b885dbfae83d3be0d2ca63219e678 100644 --- a/tutorials/compressible/sonicDyMFoam/movingCone/system/fvSolution +++ b/tutorials/compressible/sonicDyMFoam/movingCone/system/fvSolution @@ -31,7 +31,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/constant/thermophysicalProperties index 283e50a9a3b49037fcacaa9d49be24103c5d96df..162c0dde79fda84a0a14d829dded45cf1f4379ca 100644 --- a/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/constant/thermophysicalProperties +++ b/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/sonicFoam/RAS/prism/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/RAS/prism/constant/thermophysicalProperties index 283e50a9a3b49037fcacaa9d49be24103c5d96df..162c0dde79fda84a0a14d829dded45cf1f4379ca 100644 --- a/tutorials/compressible/sonicFoam/RAS/prism/constant/thermophysicalProperties +++ b/tutorials/compressible/sonicFoam/RAS/prism/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties index 478f7bd9c944eebed199bd01bc786505e86ce7f9..ba5addc3cfebe6c4fbf4eab663d70885c7ab93eb 100644 --- a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties +++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties @@ -33,7 +33,6 @@ mixture { specie { - nMoles 1; molWeight 11640.3; } thermodynamics diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties index 5018fbfb0cceb6ca83a79560b6f1c9e0638521ac..13aa1377c8e0a1b6bc4996f617110d7142434620 100644 --- a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties +++ b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/thermodynamicProperties b/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/thermodynamicProperties index 51b9c21e971eebc96b10aab90b628fa23b331545..20fad7511dd8ceb87950ac48044a1cf94c4fa48c 100644 --- a/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/thermodynamicProperties +++ b/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/thermodynamicProperties @@ -15,11 +15,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -rho0 rho0 [1 -3 0 0 0 0 0] 1000; +rho0 1000; -p0 p0 [1 -1 -2 0 0 0 0] 100000; +p0 100000; -psi psi [0 -2 2 0 0 0 0] 4.54e-07; +psi 4.54e-07; // ************************************************************************* // diff --git a/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/transportProperties b/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/transportProperties index 691014c1b865979a8ab006bd56810a7606ecb7d0..c77ebea175198784ddee90274eba2443bda72e80 100644 --- a/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/transportProperties +++ b/tutorials/compressible/sonicLiquidFoam/decompressionTank/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mu mu [1 -1 -1 0 0 0 0] 0.001; +mu 0.001; // ************************************************************************* // diff --git a/tutorials/electromagnetics/mhdFoam/hartmann/constant/transportProperties b/tutorials/electromagnetics/mhdFoam/hartmann/constant/transportProperties index 547f4056e5066fe37830b238f926ae72f9cff40c..07afbf7ce3d0647c9b54c0f889d928a8e037ec07 100644 --- a/tutorials/electromagnetics/mhdFoam/hartmann/constant/transportProperties +++ b/tutorials/electromagnetics/mhdFoam/hartmann/constant/transportProperties @@ -15,12 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -rho [1 -3 0 0 0 0 0] 1; +rho 1; -nu [0 2 -1 0 0 0 0] 1; +nu 1; -mu [1 1 -2 0 0 -2 0] 1; +mu 1; -sigma [-1 -3 3 0 0 2 0] 1; +sigma 1; // ************************************************************************* // diff --git a/tutorials/financial/financialFoam/europeanCall/constant/financialProperties b/tutorials/financial/financialFoam/europeanCall/constant/financialProperties index 658fccc56e62815f954757bb7b108604b6d589e7..98f3b4dac2b2900fad587aadd49f9eea71d7a0b3 100644 --- a/tutorials/financial/financialFoam/europeanCall/constant/financialProperties +++ b/tutorials/financial/financialFoam/europeanCall/constant/financialProperties @@ -15,16 +15,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -strike [0 1 0 0 0 0 0] 40; +strike 40; -r [0 0 -1 0 0 0 0] 0.1; +r 0.1; -sigma [0 0 -0.5 0 0 0 0] 0.2; +sigma 0.2; -s [0 0 -1 0 0 0 0] 0; - -xi [0 0 -0.5 0 0 0 0] 0.1; - -eta [0 0 0 0 0 0 0] 0; // ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/T b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/T new file mode 100644 index 0000000000000000000000000000000000000000..e885e3dfe6ba129278f6d7239291badd47bc6987 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/T @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + floor + { + type fixedValue; + value uniform 301; + } + ceiling + { + type fixedValue; + value uniform 300; + } + sideWalls + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/U b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/U new file mode 100644 index 0000000000000000000000000000000000000000..b63f8ae23579e9eda2c7d9f683a7ded67076d158 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/U @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (1e-4 0 0); + +boundaryField +{ + wall + { + type noSlip; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/alphat b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/alphat new file mode 100644 index 0000000000000000000000000000000000000000..f44e48f31e9f0bec21592f0d0ad123121b0e7de6 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/alphat @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type alphatJayatillekeWallFunction; + Prt 0.85; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/epsilon b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..d7df5d55581ceaf26ea99bc631bc5c433c118ebe --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/epsilon @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1e-5; + +boundaryField +{ + wall + { + type epsilonWallFunction; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/k b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/k new file mode 100644 index 0000000000000000000000000000000000000000..4c4b046e8c40790b5c7f224d9ae315abfa50c210 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/k @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1e-5; + +boundaryField +{ + wall + { + type kqRWallFunction; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/nut b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/nut new file mode 100644 index 0000000000000000000000000000000000000000..87448054d795541f18aaf297e7c26fa72c47eee7 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/nut @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type nutkWallFunction; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p new file mode 100644 index 0000000000000000000000000000000000000000..9b252acbb4d8cf2def8a90de4120740fc9bd4ed4 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type calculated; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p_rgh b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..821979ea970500c2130480cde8667984070066d1 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/0/p_rgh @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type fixedFluxPressure; + rho rhok; + value $internalField; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/g b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..4702e33f63dacbb20139c0fd115011be321b4102 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..1a603506fffdedd7934ebdd15f547eb413faa7aa --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/transportProperties @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +// Laminar viscosity +nu 1e-03; + +// Thermal expansion coefficient +beta 1e-03; + +// Reference temperature +TRef 300; + +// Laminar Prandtl number +Pr 1.0; + +// Turbulent Prandtl number +Prt 1.0; + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/turbulenceProperties b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..73d46b77b79983b7d27ecf1dc5180ed745cf5103 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/constant/turbulenceProperties @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +RAS +{ + RASModel kEpsilon; + + turbulence on; + + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/blockMeshDict b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..7c0a440b5188ca09e140b4df6a1eb9f827fd2f6d --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/blockMeshDict @@ -0,0 +1,86 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 -1) + (9 0 -1) + (9 1 -1) + (0 1 -1) + (0 0 1) + (9 0 1) + (9 1 1) + (0 1 1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (90 10 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + floor + { + type wall; + faces + ( + (1 5 4 0) + ); + } + + ceiling + { + type wall; + faces + ( + (3 7 6 2) + ); + } + + sideWalls + { + type wall; + faces + ( + (0 4 7 3) + (2 6 5 1) + ); + } + + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } + +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..2be809aa0130c6c5f576d62b7d2702d43bf23a89 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/controlDict @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application buoyantBoussinesqPimpleFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 1000; + +deltaT 1; + +writeControl runTime; + +writeInterval 50; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +functions +{ + #includeFunc residuals + #includeFunc streamlines +} + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSchemes b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..5fc1ef35bdba0d117681fd0b41a3ffb593f43372 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSchemes @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss linearUpwind grad(U); + div(phi,T) Gauss limitedLinear 1; + + turbulence Gauss limitedLinear 1; + div(phi,k) $turbulence; + div(phi,epsilon) $turbulence; + + div((nuEff*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..beb4b89778f6bd7620ae7d31c65b0e17c47a5ff2 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/fvSolution @@ -0,0 +1,68 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p_rgh + { + solver GAMG; + smoother DIC; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "(U|T|k|epsilon)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-8; + relTol 0.01; + } + + "(U|T|k|epsilon)Final" + { + $T; + relTol 0; + } + +} + +PIMPLE +{ + momentumPredictor no; + nNonOrthogonalCorrectors 0; + nCorrectors 2; + pRefCell 0; + pRefValue 0; +} + +relaxationFactors +{ + equations + { + ".*" 1.0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/residuals b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/residuals new file mode 100644 index 0000000000000000000000000000000000000000..f7dc177e3db235a7f77a9089958c8941b3f57f22 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/residuals @@ -0,0 +1,19 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Web: www.OpenFOAM.com + \\/ M anipulation | +------------------------------------------------------------------------------- +Description + For specified fields, writes out the initial residuals for the first + solution of each time step; for non-scalar fields (e.g. vectors), writes + the largest of the residuals for each component (e.g. x, y, z). + +\*---------------------------------------------------------------------------*/ + +#includeEtc "caseDicts/postProcessing/numerical/residuals.cfg" + +fields (p_rgh); + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/streamlines b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/streamlines new file mode 100644 index 0000000000000000000000000000000000000000..c165f1efc4991b2964b76380fbb3286394082e91 --- /dev/null +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/streamlines @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Web: www.OpenFOAM.com + \\/ M anipulation | +------------------------------------------------------------------------------- +Description + Writes out files of streamlines with interpolated field data in VTK format. + +\*---------------------------------------------------------------------------*/ + +nLines 24; +start (0 0.5 0); +end (9 0.5 0); +fields (U); + +#includeEtc "caseDicts/postProcessing/visualization/streamlines.cfg" + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom/constant/transportProperties index 06ee8fc8f435cec127f0721fb1789ae8528212dd..ae4727d615f5a7986820531b9ac0d49125be6bac 100644 --- a/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom/constant/transportProperties +++ b/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom/constant/transportProperties @@ -18,18 +18,18 @@ FoamFile transportModel Newtonian; // Laminar viscosity -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // Thermal expansion coefficient -beta [0 0 0 -1 0 0 0] 3e-03; +beta 3e-03; // Reference temperature -TRef [0 0 0 1 0 0 0] 300; +TRef 300; // Laminar Prandtl number -Pr [0 0 0 0 0 0 0] 0.7; +Pr 0.7; // Turbulent Prandtl number -Prt [0 0 0 0 0 0 0] 0.85; +Prt 0.85; // ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties index 06ee8fc8f435cec127f0721fb1789ae8528212dd..ae4727d615f5a7986820531b9ac0d49125be6bac 100644 --- a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties +++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties @@ -18,18 +18,18 @@ FoamFile transportModel Newtonian; // Laminar viscosity -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // Thermal expansion coefficient -beta [0 0 0 -1 0 0 0] 3e-03; +beta 3e-03; // Reference temperature -TRef [0 0 0 1 0 0 0] 300; +TRef 300; // Laminar Prandtl number -Pr [0 0 0 0 0 0 0] 0.7; +Pr 0.7; // Turbulent Prandtl number -Prt [0 0 0 0 0 0 0] 0.85; +Prt 0.85; // ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties index 06ee8fc8f435cec127f0721fb1789ae8528212dd..ae4727d615f5a7986820531b9ac0d49125be6bac 100644 --- a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties +++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties @@ -18,18 +18,18 @@ FoamFile transportModel Newtonian; // Laminar viscosity -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // Thermal expansion coefficient -beta [0 0 0 -1 0 0 0] 3e-03; +beta 3e-03; // Reference temperature -TRef [0 0 0 1 0 0 0] 300; +TRef 300; // Laminar Prandtl number -Pr [0 0 0 0 0 0 0] 0.7; +Pr 0.7; // Turbulent Prandtl number -Prt [0 0 0 0 0 0 0] 0.85; +Prt 0.85; // ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/constant/thermophysicalProperties index 976335eaed35884a5b768eafac5aa2d8fae643e0..c106e9417541735fe367a2f2e6d972ea850be435 100644 --- a/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/constant/thermophysicalProperties @@ -32,7 +32,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/buoyantPimpleFoam/thermocoupleTestCase/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantPimpleFoam/thermocoupleTestCase/constant/thermophysicalProperties index b34b46315c73b5486ed2ed492214ef00bd6e79e4..37cbb551c1d23d0c15392233b7279535d7a25ca0 100644 --- a/tutorials/heatTransfer/buoyantPimpleFoam/thermocoupleTestCase/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantPimpleFoam/thermocoupleTestCase/constant/thermophysicalProperties @@ -32,7 +32,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun index 07d3f0e272d84b79f309141e6e8795ba528d2336..33dbc86270280e4c0ef95aaab708395760be5f8e 100755 --- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun +++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun @@ -8,6 +8,6 @@ runApplication blockMesh runApplication $(getApplication) runApplication -s sample postProcess -latestTime -func sample -( cd validation && ./createGraphs ) +runApplication validation/createGraphs #------------------------------------------------------------------------------ diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/constant/thermophysicalProperties index e950cc073b75c1955c7dfe23436aca7663a0ca8d..339bab583ae23f76328bfc3502d184ea25263f21 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.96; } thermodynamics diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs index 6874fa26efa2926d76753d5546171e9d0634c717..693c8dbfdf34aa3bdf7b2cda9544d212f06491e7 100755 --- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs +++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs @@ -31,6 +31,11 @@ # #------------------------------------------------------------------------------ +cd ${0%/*} || exit 1 # Run from this directory + +# Stop on first error +set -e + createEpsT() { index=$1 @@ -78,11 +83,12 @@ createEpsU() EOF } +echo "createGraphs:" # test if gnuplot exists on the system if ! which gnuplot > /dev/null 2>&1 then - echo "gnuplot not found - skipping graph creation" >&2 + echo "FOAM FATAL ERROR: gnuplot not found - skipping graph creation" >&2 exit 1 fi @@ -90,8 +96,8 @@ SETSDIR="../postProcessing/sample" if [ ! -d $SETSDIR ] then - echo "createGraphs: results sets not available in directory $SETSDIR" - exit 0 + echo "FOAM FATAL ERROR: result sets not available in directory $SETSDIR" >&2 + exit 1 fi # paths to data @@ -104,8 +110,7 @@ EXPTDATAROOT=./exptData TSets="1 3 4 5 6 7 9" for i in $TSets do - echo " processing temperature profile at y/yMax of 0.$i" \ - > log.createGraphs 2>&1 + echo " processing temperature profile at y/yMax of 0.$i" OF="$OFDATAROOT/y0.${i}_T.xy" EXPT="$EXPTDATAROOT/mt_z0_${i}0_lo.dat" @@ -118,8 +123,7 @@ done USets="1 3 4 5 6 7 9" for i in $USets do - echo " processing velocity profile at y/yMax of 0.$i" \ - > log.createGraphs 2>&1 + echo " processing velocity profile at y/yMax of 0.$i" OF="$OFDATAROOT/y0.${i}_U.xy" EXPT="$EXPTDATAROOT/mv_z0_${i}0_lo.dat" @@ -127,6 +131,6 @@ do createEpsU $i $OF $EXPT done -echo Done +echo "End" #------------------------------------------------------------------------------ diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/1DBaffle/1DbaffleSolidThermo b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/1DBaffle/1DbaffleSolidThermo index 49c60888e70bb99ef791e002e5d0024053a42ad0..3f26d349ba01bef5dd7e4f9ef7956e9511fc6bba 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/1DBaffle/1DbaffleSolidThermo +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/1DBaffle/1DbaffleSolidThermo @@ -8,7 +8,6 @@ specie { - nMoles 1; molWeight 20; } transport diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/3DBaffle/3DbaffleSolidThermo b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/3DBaffle/3DbaffleSolidThermo index 80002f7c5eff5633c8d11e8cbad1815d4313f125..a6b10f20bfb8284464153129e7ce924c112e3577 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/3DBaffle/3DbaffleSolidThermo +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.orig/include/3DBaffle/3DbaffleSolidThermo @@ -22,7 +22,6 @@ mixture { specie { - nMoles 1; molWeight 20; } transport diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/constant/thermophysicalProperties index e950cc073b75c1955c7dfe23436aca7663a0ca8d..339bab583ae23f76328bfc3502d184ea25263f21 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.96; } thermodynamics diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoom/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoom/constant/thermophysicalProperties index 976335eaed35884a5b768eafac5aa2d8fae643e0..c106e9417541735fe367a2f2e6d972ea850be435 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoom/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoom/constant/thermophysicalProperties @@ -32,7 +32,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties index 976335eaed35884a5b768eafac5aa2d8fae643e0..c106e9417541735fe367a2f2e6d972ea850be435 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties +++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties @@ -32,7 +32,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/0/floor/T b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/0/floor/T index 267473f7901eabb2dbace17c9760348d5e01e180..35ceb480f022b89ccaebd32024835753920bb2c7 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/0/floor/T +++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/0/floor/T @@ -44,13 +44,14 @@ boundaryField minZ { type externalWallHeatFluxTemperature; - value uniform 300; - kappaMethod solidThermo; + mode coefficient; Ta uniform 313; h uniform 1000000; thicknessLayers ( 1 2 ); kappaLayers ( 100 200 ); + kappaMethod solidThermo; kappa none; + value uniform 300; } floor_to_domain3 { diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/changeDictionaryDict index faf294c0843ef6557154e19f9ff98949d21bacd7..6ae161489a78d4bb9c31f0a2871d7720ce3ca02b 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/changeDictionaryDict @@ -66,13 +66,14 @@ dictionaryReplacement minZ { type externalWallHeatFluxTemperature; - kappaMethod solidThermo; + mode coefficient; Ta uniform 313.0; h uniform 10e5; + kappaMethod solidThermo; + kappa none; thicknessLayers (1 2); kappaLayers (100 200); value uniform 300.0; - kappa none; } } } diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomWater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomWater/thermophysicalProperties index 4fde6b6e9e730e187a90480625b475b9240f41fd..c1602d4d09f80a423551df30c6e7d50c8b78bf34 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomWater/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomWater/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties index 75e5acf26f3dde368699f7550bfe0a02e3c7b0a0..7be4f18cd18573b0427cb5ed171c84e5f81667d7 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 50; } diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties index ad71e36604c14e67f77ad8857de722c932221902..3f94dc8ad766c106e2be38f3bc54fb29364abbbc 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/thermophysicalProperties index ad71e36604c14e67f77ad8857de722c932221902..3f94dc8ad766c106e2be38f3bc54fb29364abbbc 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties index bf1bb55a72a9953a618bfe33e45bddb38b92a31d..8a9d190c27c8b33ba51043401107b471f085d186 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 12; } diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/0.orig/windshield/T b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/0.orig/windshield/T index a384823f320069c53d6f6d0d125a40c589dbde65..ae7fc35032f846c3953105a45501713751e04f91 100644 --- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/0.orig/windshield/T +++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/0.orig/windshield/T @@ -39,10 +39,11 @@ boundaryField exterior { type externalWallHeatFluxTemperature; - kappaMethod solidThermo; - kappa none; + mode coefficient; h uniform 10; Ta uniform 260; + kappaMethod solidThermo; + kappa none; value uniform 260; } } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/fvOptions b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/fvOptions index 065a7b8ed962eba3753bd9988f9410ee42273d8a..723f763973c5f6faa94da7997f3c93f1c398333e 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/fvOptions +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/fvOptions @@ -18,24 +18,19 @@ FoamFile airToporous { type constantHeatTransfer; - active yes; - constantHeatTransferCoeffs - { - interpolationMethod cellVolumeWeight; - nbrRegion porous; - master false; + interpolationMethod cellVolumeWeight; + nbrRegion porous; + master false; - nbrModel porousToair; - fields (h); - semiImplicit no; - } + nbrModel porousToair; + fields (h); + semiImplicit no; } porosityBlockage { type interRegionExplicitPorositySource; - active yes; interRegionExplicitPorositySourceCoeffs { @@ -44,21 +39,18 @@ porosityBlockage type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (-1000 -1000 1e4); - f (0 0 0); + d (-1000 -1000 1e4); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0 1 0); - e2 (0 0 1); - } + type axesRotation; + e1 (0 1 0); + e2 (0 0 1); } } } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/thermophysicalProperties index 97296a18867bf1915f14dd4587b8feb271bf277d..5d9384df7ca652d7727e9122915b36ac3b410012 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/air/thermophysicalProperties @@ -32,7 +32,6 @@ mixture specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/fvOptions b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/fvOptions index fffed7d171842ffa4ead7151242c0ff1969d1c8b..03d5c92ab8f7995d9d9a5501ad0dbded42434165 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/fvOptions +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/fvOptions @@ -18,18 +18,14 @@ FoamFile porousToair { type constantHeatTransfer; - active yes; - constantHeatTransferCoeffs - { - interpolationMethod cellVolumeWeight; - nbrRegion air; - master true; + interpolationMethod cellVolumeWeight; + nbrRegion air; + master true; - nbrModel airToporous; - fields (h); - semiImplicit no; - } + nbrModel airToporous; + fields (h); + semiImplicit no; } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/thermophysicalProperties index 6639881d5bcfa8ec536c8418c3715ffb32788b8f..c78dddb4974c4c86f72fd14f5373fd95ea00f7b0 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/constant/porous/thermophysicalProperties @@ -32,7 +32,6 @@ mixture specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/Qr b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/qr similarity index 98% rename from tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/Qr rename to tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/qr index 6e7a1a927749412123e41f6981d9d554c13ff9a8..f81345ed5a96bfa8da5892f1189eb911f1eb000f 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/Qr +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/0/qr @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object Qr; + object qr; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre index e7adbdd5bc053b05555b54631a9ab384f0c43ee2..091548c051a2c0002bf7c19c08a3f1e889d97079 100755 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre @@ -11,7 +11,7 @@ runApplication splitMeshRegions -cellZones -overwrite # remove fluid fields from solid regions (important for post-processing) for i in heater leftSolid rightSolid do - rm -f 0*/$i/{rho,nut,alphat,epsilon,k,U,p_rgh,Qr,G,IDefault} + rm -f 0*/$i/{rho,nut,alphat,epsilon,k,U,p_rgh,qr,G,IDefault} done for i in bottomAir topAir heater leftSolid rightSolid diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/bottomAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/bottomAir/thermophysicalProperties index a43f53866d1be5ab4767c4642aac85c643e5fff3..f7c02cbc15483c4f32135e3a7ef20fc4ce20cfdc 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/bottomAir/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/bottomAir/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties index 184764163b3c7072182df045c70eff2745429dc7..4b69d5f39b90f2f9d077e99b3c30d464364732f7 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties @@ -29,7 +29,6 @@ mixture { specie { - nMoles 1; molWeight 12; } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict index fbe09f939ffb44db7b104279d7767061edb731ff..84cf93835ceb0dfb5c14b60950431c46ed9686c9 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict @@ -60,8 +60,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod fluidThermo; - QrNbr none; - Qr Qr; + qrNbr none; + qr qr; value uniform 300; } } @@ -119,7 +119,7 @@ p } } -Qr +qr { internalField uniform 0; boundaryField @@ -128,7 +128,7 @@ Qr { type greyDiffusiveRadiationViewFactor; emissivityMode lookup; - Qro uniform 0; + qro uniform 0; emissivity uniform 1.0; value uniform 0; } @@ -137,7 +137,7 @@ Qr { type greyDiffusiveRadiationViewFactor; emissivityMode solidRadiation; - Qro uniform 0; + qro uniform 0; value uniform 0; } } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/fvSolution index 6f933f79c37432ece2183f283a2eb93c93566a02..8cc4a0bb1a990792450cdcef66be309332f383f0 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/fvSolution +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/fvSolution @@ -74,7 +74,7 @@ relaxationFactors "(k|epsilon|omega)" 0.7; G 0.7; "ILambda.*" 0.7; - Qr 0.7; + qr 0.7; } } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/changeDictionaryDict index c1f253f483f99ae9b013cdf24b8b91370dc11a67..a39d1e0f0cf9dd57f9a8ab25037afa9fbae3f50d 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/changeDictionaryDict @@ -47,8 +47,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } @@ -57,8 +57,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/changeDictionaryDict index 9c39cde8f17b93d3abc175446639e4d5c302b66b..3cff8cb0ddf8740f38206caa80f89b2605b57c2d 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/changeDictionaryDict @@ -43,8 +43,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } @@ -53,8 +53,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/changeDictionaryDict index a5fd92d6cf84036f12d1f30f6019333fde1377fc..8c8a8210a48eb12abcb9f082d9d6db43c21d21eb 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/changeDictionaryDict @@ -43,8 +43,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } @@ -53,8 +53,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod solidThermo; - QrNbr Qr; - Qr none; + qrNbr qr; + qr none; value uniform 300; } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict index 4c1eeba58e98455d0ce842df3f1436f4f75188e5..754fde737f494ebde1f22391e174554445a2a07c 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict @@ -73,8 +73,8 @@ T type compressible::turbulentTemperatureRadCoupledMixed; Tnbr T; kappaMethod fluidThermo; - QrNbr none; - Qr Qr; + qrNbr none; + qr qr; value uniform 300; } } @@ -168,7 +168,7 @@ p } } -Qr +qr { internalField uniform 0; boundaryField @@ -177,7 +177,7 @@ Qr { type greyDiffusiveRadiationViewFactor; emissivityMode lookup; - Qro uniform 0; + qro uniform 0; emissivity uniform 1.0; value uniform 0; } @@ -186,7 +186,7 @@ Qr { type greyDiffusiveRadiationViewFactor; emissivityMode solidRadiation; - Qro uniform 0; + qro uniform 0; value uniform 0; } } diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/fvSolution index 6f933f79c37432ece2183f283a2eb93c93566a02..8cc4a0bb1a990792450cdcef66be309332f383f0 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/fvSolution +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/fvSolution @@ -74,7 +74,7 @@ relaxationFactors "(k|epsilon|omega)" 0.7; G 0.7; "ILambda.*" 0.7; - Qr 0.7; + qr 0.7; } } diff --git a/tutorials/incompressible/SRFPimpleFoam/rotor2D/constant/transportProperties b/tutorials/incompressible/SRFPimpleFoam/rotor2D/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/SRFPimpleFoam/rotor2D/constant/transportProperties +++ b/tutorials/incompressible/SRFPimpleFoam/rotor2D/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/SRFSimpleFoam/mixer/constant/transportProperties b/tutorials/incompressible/SRFSimpleFoam/mixer/constant/transportProperties index 8035aa8570921c744aa1e293452e262a4c0bd322..9be02f5f222a685800ea68e9e2d25bbb915fabce 100644 --- a/tutorials/incompressible/SRFSimpleFoam/mixer/constant/transportProperties +++ b/tutorials/incompressible/SRFSimpleFoam/mixer/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/constant/transportProperties b/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/constant/transportProperties index 7d7b76833ac0c52aa976376fe5f9877063806017..6024356104848f4a4fedc60b7c14392fac4b0064 100644 --- a/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/constant/transportProperties +++ b/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/constant/transportProperties @@ -17,9 +17,9 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-5; +nu 1e-5; -lambda lambda [0 -2 1 0 0 0 0] 1e5; -alphaMax alphaMax [0 0 -1 0 0 0 0] 200.0; +lambda 1e5; +alphaMax 200.0; // ************************************************************************* // diff --git a/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/system/blockMeshDict b/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/system/blockMeshDict +++ b/tutorials/incompressible/adjointShapeOptimizationFoam/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/incompressible/boundaryFoam/boundaryLaunderSharma/constant/transportProperties b/tutorials/incompressible/boundaryFoam/boundaryLaunderSharma/constant/transportProperties index 8ed7850396ef6dae2aec3fd8c43c3afa2a5fa501..a8ce5169360d1a44f888a5902e407df7f67a3a1d 100644 --- a/tutorials/incompressible/boundaryFoam/boundaryLaunderSharma/constant/transportProperties +++ b/tutorials/incompressible/boundaryFoam/boundaryLaunderSharma/constant/transportProperties @@ -15,11 +15,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Ubar [0 1 -1 0 0 0 0] (10 0 0); +Ubar (10 0 0); transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/boundaryFoam/boundaryWallFunctions/constant/transportProperties b/tutorials/incompressible/boundaryFoam/boundaryWallFunctions/constant/transportProperties index d93ea31ee606d7dd208cdbd3f21c09b376b27f35..21e095137e729d8c6c94fe08a55a0b0af482846b 100644 --- a/tutorials/incompressible/boundaryFoam/boundaryWallFunctions/constant/transportProperties +++ b/tutorials/incompressible/boundaryFoam/boundaryWallFunctions/constant/transportProperties @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Ubar [0 1 -1 0 0 0 0] (10 0 0); +Ubar (10 0 0); transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties b/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties index 13576c4d2e45ac0181f334f1c335d156768d8d71..c1751a85983537631755378a6280b36f7f62d3e1 100644 --- a/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties +++ b/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Ubar [0 1 -1 0 0 0 0] (10 0 0); +Ubar (10 0 0); transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-8; +nu 1e-8; // ************************************************************************* // diff --git a/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties.template b/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties.template index 0a21c024a5a3481ead6df8491ff515d54fe4051e..ed0b8a6359f9ce17f816730c1bbbcc7e459113b3 100644 --- a/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties.template +++ b/tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile/constant/transportProperties.template @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Ubar [0 1 -1 0 0 0 0] (10 0 0); +Ubar (10 0 0); transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-XXX; +nu 1e-XXX; // ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/cavity/cavity/constant/transportProperties b/tutorials/incompressible/icoFoam/cavity/cavity/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/incompressible/icoFoam/cavity/cavity/constant/transportProperties +++ b/tutorials/incompressible/icoFoam/cavity/cavity/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/cavity/cavityClipped/constant/transportProperties b/tutorials/incompressible/icoFoam/cavity/cavityClipped/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/incompressible/icoFoam/cavity/cavityClipped/constant/transportProperties +++ b/tutorials/incompressible/icoFoam/cavity/cavityClipped/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/cavity/cavityGrade/constant/transportProperties b/tutorials/incompressible/icoFoam/cavity/cavityGrade/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/incompressible/icoFoam/cavity/cavityGrade/constant/transportProperties +++ b/tutorials/incompressible/icoFoam/cavity/cavityGrade/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/cavityMappingTest/constant/transportProperties b/tutorials/incompressible/icoFoam/cavityMappingTest/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/incompressible/icoFoam/cavityMappingTest/constant/transportProperties +++ b/tutorials/incompressible/icoFoam/cavityMappingTest/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/elbow/constant/transportProperties b/tutorials/incompressible/icoFoam/elbow/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/incompressible/icoFoam/elbow/constant/transportProperties +++ b/tutorials/incompressible/icoFoam/elbow/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/incompressible/nonNewtonianIcoFoam/offsetCylinder/constant/transportProperties b/tutorials/incompressible/nonNewtonianIcoFoam/offsetCylinder/constant/transportProperties index 9f16c8dc4accd5a2da5ebd76dbc11ced27ee8148..2f1f19585e88674717976dca85dd394e32182fb0 100644 --- a/tutorials/incompressible/nonNewtonianIcoFoam/offsetCylinder/constant/transportProperties +++ b/tutorials/incompressible/nonNewtonianIcoFoam/offsetCylinder/constant/transportProperties @@ -19,18 +19,18 @@ transportModel CrossPowerLaw; CrossPowerLawCoeffs { - nu0 [0 2 -1 0 0 0 0] 0.01; - nuInf [0 2 -1 0 0 0 0] 10; - m [0 0 1 0 0 0 0] 0.4; - n [0 0 0 0 0 0 0] 3; + nu0 0.01; + nuInf 10; + m 0.4; + n 3; } BirdCarreauCoeffs { - nu0 [0 2 -1 0 0 0 0] 1e-06; - nuInf [0 2 -1 0 0 0 0] 1e-06; - k [0 0 1 0 0 0 0] 0; - n [0 0 0 0 0 0 0] 1; + nu0 1e-06; + nuInf 1e-06; + k 0; + n 1; } // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict index 79938b32435f04b0c0962c715b83332391b2709f..ccefe5ed6c21cf28f98ede4a6559b3f560f8ec50 100644 --- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict @@ -17,19 +17,14 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone rotor; +cellZone rotor; - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 0 1); - omega 6.2832; // rad/s - } -} +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 0 1); +omega 6.2832; // rad/s // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/transportProperties index b59cf4a2d1e867bcc36fcdcc3a457b85f0ac23e4..d0a2296caaf547a69adc4f470784449632ccf7ac 100644 --- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/transportProperties @@ -17,7 +17,7 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/fvSolution index 38721752947582ac4f3414c2d59866c65d9ee333..dd8d0a482b8f64692bcbb5df1a03fec96e4b207c 100644 --- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/fvSolution @@ -17,7 +17,7 @@ FoamFile solvers { - pcorr + "pcorr.*" { solver GAMG; smoother GaussSeidel; diff --git a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict index 9ed4dff45b7f0847052671cd7b8234747495a98b..8b18e755b31bf33423d8d5ec3f4d53b2c6b433bb 100644 --- a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict @@ -17,15 +17,12 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver velocityComponentLaplacian; +motionSolver velocityComponentLaplacian; -velocityComponentLaplacianCoeffs -{ - component x; - diffusivity directional (1 200 0); -} +component x; +diffusivity directional (1 200 0); // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution index 9a85bd45201994d6b64cab855fc6d5777c49b2d2..da828d6884cf60d53d478f76c9a4daa7fbbdd0b2 100644 --- a/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution @@ -33,7 +33,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { $p tolerance 0.02; diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict index 6043ee040c1701986ff21e1e04e3f0bf8512f96b..9f0da282d4471881e8df0cfae590fa4d36cdb843 100644 --- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict @@ -17,22 +17,16 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone inletChannel; +cellZone inletChannel; - solidBodyMotionFunction oscillatingLinearMotion; +solidBodyMotionFunction oscillatingLinearMotion; - oscillatingLinearMotionCoeffs - { - amplitude (0 0.5 0); - omega 3.14; // rad/s (.5 rps) - } -} +amplitude (0 0.5 0); +omega 3.14; // rad/s (.5 rps) // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/transportProperties index c1509dad6a8aa47bcd058eee2e3f588d216ce3d5..51788a66f340ab286ff7e354e94e659156a36b0f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-6; +nu 1e-6; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/fvSolution index 0e5ae1c08377eb87791dbcfa3ee2d0d2cca9c302..85d92331c6d31c6d310a4ccedb67a2cd54f2184f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/fvSolution @@ -16,7 +16,7 @@ FoamFile solvers { - pcorr + "pcorr.*" { solver GAMG; tolerance 1e-2; diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletPeriodicAMI2D/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletPeriodicAMI2D/constant/transportProperties index 103466de0a61fb255e6f43562ce90ebf66ff6332..51788a66f340ab286ff7e354e94e659156a36b0f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletPeriodicAMI2D/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletPeriodicAMI2D/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu nu [ 0 2 -1 0 0 0 0 ] 1e-6; +nu 1e-6; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict index a863182374461cb41c6aeaa33c38fc7b646f052a..61738fa80a077d5f47b616c4d1d96c7d37a2d9d7 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict @@ -17,22 +17,16 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone innerCylinderSmall; +cellZone innerCylinderSmall; - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 1 0); - omega 158; // rad/s - } -} +solidBodyMotionFunction rotatingMotion; +origin (0 0 0); +axis (0 1 0); +omega 158; // rad/s // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/transportProperties index c1509dad6a8aa47bcd058eee2e3f588d216ce3d5..51788a66f340ab286ff7e354e94e659156a36b0f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-6; +nu 1e-6; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution index 7614778c0255c92ca807cf14e7f6e041e0c1a763..3344a2a5db9c62fbe23be3de26ddb208dea72599 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution @@ -16,7 +16,7 @@ FoamFile solvers { - pcorr + "pcorr.*" { solver GAMG; tolerance 1e-2; diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict index 22e16d7767ddaf703b5f17f1828e5f21ed826817..c7c6f2354e2203d56a4909eb4fdded33d9c058a9 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict @@ -18,72 +18,69 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libsixDoFRigidBodyMotion.so"); -solver sixDoFRigidBodyMotion; +motionSolver sixDoFRigidBodyMotion; -sixDoFRigidBodyMotionCoeffs -{ - patches (wing); - innerDistance 0.3; - outerDistance 1; +patches (wing); +innerDistance 0.3; +outerDistance 1; - mass 22.9; - centreOfMass (0.4974612746 -0.01671895744 0.125); - momentOfInertia (1.958864357 3.920839234 2.057121362); - orientation - ( - 0.9953705935 0.09611129781 0 - -0.09611129781 0.9953705935 0 - 0 0 1 - ); - angularMomentum (0 0 -2); - g (0 -9.81 0); - rho rhoInf; - rhoInf 1; - report on; +mass 22.9; +centreOfMass (0.4974612746 -0.01671895744 0.125); +momentOfInertia (1.958864357 3.920839234 2.057121362); +orientation +( + 0.9953705935 0.09611129781 0 + -0.09611129781 0.9953705935 0 + 0 0 1 +); +angularMomentum (0 0 -2); +g (0 -9.81 0); +rho rhoInf; +rhoInf 1; +report on; - solver +solver +{ + type symplectic; +} + +constraints +{ + yLine { - type symplectic; + sixDoFRigidBodyMotionConstraint line; + centreOfRotation (0.25 0.007 0.125); + direction (0 1 0); } - constraints + zAxis { - yLine - { - sixDoFRigidBodyMotionConstraint line; - centreOfRotation (0.25 0.007 0.125); - direction (0 1 0); - } - - zAxis - { - sixDoFRigidBodyMotionConstraint axis; - axis (0 0 1); - } + sixDoFRigidBodyMotionConstraint axis; + axis (0 0 1); } +} - restraints +restraints +{ + verticalSpring { - verticalSpring - { - sixDoFRigidBodyMotionRestraint linearSpring; + sixDoFRigidBodyMotionRestraint linearSpring; - anchor (0.25 0.007 0.125); - refAttachmentPt (0.25 0.007 0.125); - stiffness 4000; - damping 2; - restLength 0; - } + anchor (0.25 0.007 0.125); + refAttachmentPt (0.25 0.007 0.125); + stiffness 4000; + damping 2; + restLength 0; + } - axialSpring - { - sixDoFRigidBodyMotionRestraint linearAxialAngularSpring; + axialSpring + { + sixDoFRigidBodyMotionRestraint linearAxialAngularSpring; - axis (0 0 1); - stiffness 700; - damping 0.5; - referenceOrientation $orientation; - } + axis (0 0 1); + stiffness 700; + damping 0.5; + referenceOrientation $orientation; } } diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties index 0af56810b21906f459e00aefb612a5be480a2ce6..e75104f3e642b47ff09f471da45feb091a33afdd 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -transportModel Newtonian; +transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution index 8acf247fbca5da8c9a413c041c61a5963051d7f0..741845642be95091a106a74a3ecace33d3f5d2c5 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution @@ -16,7 +16,7 @@ FoamFile solvers { - pcorr + "pcorr.*" { solver GAMG; tolerance 0.02; @@ -26,7 +26,7 @@ solvers p { - $pcorr + $pcorr; tolerance 1e-7; relTol 0.01; } diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties index 0af56810b21906f459e00aefb612a5be480a2ce6..e75104f3e642b47ff09f471da45feb091a33afdd 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -transportModel Newtonian; +transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395/constant/fvOptions b/tutorials/incompressible/pimpleFoam/LES/channel395/constant/fvOptions index b9ca4e59cc1bb8411ac1d58d16f6b92b94ad2eb5..d9146368ed7e8f3d7382c4d8259c5c5ad4376d70 100644 --- a/tutorials/incompressible/pimpleFoam/LES/channel395/constant/fvOptions +++ b/tutorials/incompressible/pimpleFoam/LES/channel395/constant/fvOptions @@ -18,15 +18,11 @@ FoamFile momentumSource { type meanVelocityForce; - active yes; - meanVelocityForceCoeffs - { - selectionMode all; + selectionMode all; - fields (U); - Ubar (0.1335 0 0); - } + fields (U); + Ubar (0.1335 0 0); } diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395/constant/transportProperties b/tutorials/incompressible/pimpleFoam/LES/channel395/constant/transportProperties index 31d29f828fa01c8d49e31f4df62264c1e6d6da2b..2791e92ca0c3682e05231c57f1f7838bb4953e24 100644 --- a/tutorials/incompressible/pimpleFoam/LES/channel395/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/LES/channel395/constant/transportProperties @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Ubar [0 1 -1 0 0 0 0] (0.1335 0 0); +Ubar (0.1335 0 0); transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 2e-05; +nu 2e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties index ca586f463802f73dbd94f8b268c2420e636583ca..945334543b89a3fc6a913543822d8e43eda43a68 100644 --- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties @@ -24,7 +24,7 @@ transportModel Newtonian; // U_bulk = 17.55 -> u_tau = 1 // -> nu = 1*1/395 = 2.532e-3 -nu nu [ 0 2 -1 0 0 0 0 ] 2.532e-3; +nu 2.532e-3; diff --git a/tutorials/incompressible/pimpleFoam/RAS/TJunction/constant/transportProperties b/tutorials/incompressible/pimpleFoam/RAS/TJunction/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/TJunction/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/RAS/TJunction/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/constant/transportProperties b/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/constant/transportProperties b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/constant/transportProperties index 0305c5d8c4582ca455aaa11cf6e9d788e765fbe4..6ad11f4860ef0321c292a3d35fe2222395406cc5 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.86e-05; +nu 1.86e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/constant/transportProperties b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/blockMeshDict b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/blockMeshDict +++ b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/controlDict b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/controlDict index f192cc20f99bf44af6a82cb0a12632f79ee1e891..84d9ae95e231c070fc92904b7a90b320f50b51bf 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/controlDict +++ b/tutorials/incompressible/pimpleFoam/RAS/pitzDaily/system/controlDict @@ -23,13 +23,13 @@ startTime 0; stopAt endTime; -endTime 1; +endTime 0.3; deltaT 0.0001; writeControl adjustableRunTime; -writeInterval 0.001; +writeInterval 0.01; purgeWrite 0; diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarContraction/constant/transportProperties b/tutorials/incompressible/pimpleFoam/laminar/planarContraction/constant/transportProperties index 4356510fb1fb44d476497156b799443952fc9bea..d9a839772a9a4c1b686cd17a7007033f96a3e13c 100644 --- a/tutorials/incompressible/pimpleFoam/laminar/planarContraction/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/laminar/planarContraction/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-5; +nu 1e-5; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/fvOptions b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/fvOptions index e5a1c67b4f75cde27209c66c0211dd981ea9ded8..5a4dffe630945cf2533d77d48c697728d378415a 100644 --- a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/fvOptions +++ b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/fvOptions @@ -18,19 +18,15 @@ FoamFile momentumSource { type vectorSemiImplicitSource; - active yes; - vectorSemiImplicitSourceCoeffs - { - timeStart 0.0; - duration 1000; - selectionMode all; + timeStart 0.0; + duration 1000; + selectionMode all; - volumeMode specific; - injectionRateSuSp - { - U ((5 0 0) 0); - } + volumeMode specific; + injectionRateSuSp + { + U ((5 0 0) 0); } } diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/transportProperties b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/transportProperties index bc64c5286692e467a2bedfb0a78d8468adbfa8b7..dec198193398c93f22b2987b719f0513e994fcaf 100644 --- a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/transportProperties +++ b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 0.1; // kinematic -> 0.002 dynamic +nu 0.1; // kinematic -> 0.002 dynamic // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/createFields.H b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/createFields.H index 4ae80853b46fbadfaca181a249b95df7eaf55509..67d00031344b23ff4b419bda8b39e3617e8ae58c 100644 --- a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/createFields.H +++ b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/createFields.H @@ -50,13 +50,7 @@ IOdictionary fvOptions ) ); const dictionary& gradPDict = - fvOptions.subDict("momentumSource").subDict - ( - "vectorSemiImplicitSourceCoeffs" - ).subDict - ( - "injectionRateSuSp" - ); + fvOptions.subDict("momentumSource").subDict("injectionRateSuSp"); const scalar K = Tuple2<vector, scalar>(gradPDict.lookup("U")).first().x(); diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/constant/transportProperties b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/controlDict b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/controlDict index 3cc5de831dd3605bd0b4cd765a8bb01fa37dad98..bfbcc3d750b4fd244d5fd360f14fbea46e5a6c8b 100644 --- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/controlDict +++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/controlDict @@ -59,8 +59,7 @@ functions lifeTime 10000; nSubCycle 5; cloud particleTracks; - seedSampleSet uniform; - uniformCoeffs + seedSampleSet { type uniform; axis x; diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/streamLines b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/streamLines index 47fc1a305d50de34219267894b565b0fba1a532a..6181cd12572481b34e293824afaca0eb62950bf3 100644 --- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/streamLines +++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/streamLines @@ -35,9 +35,7 @@ streamLines cloud particleTracks; // Seeding method. - seedSampleSet uniform; //cloud; //triSurfaceMeshPointSet; - - uniformCoeffs + seedSampleSet { type uniform; axis x; //distance; diff --git a/tutorials/incompressible/pisoFoam/LES/pitzDaily/constant/transportProperties b/tutorials/incompressible/pisoFoam/LES/pitzDaily/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pisoFoam/LES/pitzDaily/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/LES/pitzDaily/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/LES/pitzDaily/system/blockMeshDict b/tutorials/incompressible/pisoFoam/LES/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/incompressible/pisoFoam/LES/pitzDaily/system/blockMeshDict +++ b/tutorials/incompressible/pisoFoam/LES/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/constant/transportProperties b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/blockMeshDict b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/blockMeshDict index 41d60b5dcf404f56cf7e46ea746b52f8b39d201f..5b5a606d92c3d21e11b600aa870220eab9319e6d 100644 --- a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/blockMeshDict +++ b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/blockMeshDict @@ -18,71 +18,71 @@ convertToMeters 0.001; vertices ( - (-70.0 0 -0.5) - (-70.0 3 -0.5) - (-70.0 12.7 -0.5) - (-70.0 25.4 -0.5) + (-70 0 -0.5) + (-70 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) - (-70.0 0 0.5) - (-70.0 3 0.5) - (-70.0 12.7 0.5) - (-70.0 25.4 0.5) + + (-70 0 0.5) + (-70 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); -blocks +negY ( - hex (0 6 7 1 22 28 29 23) (70 7 1) simpleGrading (1 1.8 1) - hex (1 7 8 2 23 29 30 24) (70 10 1) simpleGrading (1 4 1) - hex (2 8 9 3 24 30 31 25) (70 13 1) simpleGrading (1 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + (2 4 1) + (1 3 0.3) ); -edges +posY ( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + +blocks +( + hex (0 3 4 1 11 14 15 12) + (70 30 1) + simpleGrading (1 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); boundary @@ -97,9 +97,7 @@ boundary faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -107,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -119,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -129,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -141,32 +135,16 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/constant/transportProperties b/tutorials/incompressible/pisoFoam/RAS/cavity/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pisoFoam/RAS/cavity/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/RAS/cavity/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/RAS/cavityCoupledU/constant/transportProperties b/tutorials/incompressible/pisoFoam/RAS/cavityCoupledU/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/pisoFoam/RAS/cavityCoupledU/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/RAS/cavityCoupledU/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/fvOptions b/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/fvOptions index e6ced18415c2ff60b1b60f916c12875ba086effa..72f4b02506d5e32bf140feb6deae7e70bc39d912 100644 --- a/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/fvOptions +++ b/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -32,21 +31,18 @@ porosity1 // D 500; // Slight waviness in the far wake D 1000; // Fully shedding behavior - DarcyForchheimerCoeffs - { - d ($D $D $D); - f (0 0 0); + d ($D $D $D); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (1 0 0); - e2 (0 1 0); - } + type axesRotation; + e1 (1 0 0); + e2 (0 1 0); } } } diff --git a/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/transportProperties b/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/transportProperties index 4220fccc4eb23af7721539290ae1fc484d1d3e59..b97ce3adab406d213e4cf1046ba141b6a31fe1b7 100644 --- a/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/transportProperties +++ b/tutorials/incompressible/pisoFoam/laminar/porousBlockage/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 5e-3; // Re_blockage = 200 +nu 5e-3; // Re_blockage = 200 // ************************************************************************* // diff --git a/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/porosityProperties b/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/porosityProperties index 5214f6cfde5f6d84748bb4460dbbafe483dd9f42..ba40405816fd4ca6db0a4c0d8a11f6dbd0863d03 100644 --- a/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/porosityProperties +++ b/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/porosityProperties @@ -18,24 +18,21 @@ FoamFile porosity1 { type DarcyForchheimer; - active yes; + cellZone porosity; - DarcyForchheimerCoeffs - { - d (5e7 -1000 -1000); - f (0 0 0); + d (5e7 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0.70710678 0.70710678 0); - e2 (0 0 1); - } + type axesRotation; + e1 (0.70710678 0.70710678 0); + e2 (0 0 1); } } } diff --git a/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/transportProperties b/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/transportProperties +++ b/tutorials/incompressible/porousSimpleFoam/angledDuct/common/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/porosityProperties b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/porosityProperties index f8e19ace3409b38289e9356c7cf45335f3cf199f..33fa636b5811ad733e616ae0b0228091e9c135a8 100644 --- a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/porosityProperties +++ b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/porosityProperties @@ -18,24 +18,21 @@ FoamFile porosity1 { type DarcyForchheimer; - active yes; + cellZone porosity; - DarcyForchheimerCoeffs - { - d (5e7 -1000 -1000); - f (0 0 0); + d (5e7 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (1 0 0); //(0.70710678 0.70710678 0); - e2 (0 0 1); - } + type axesRotation; + e1 (1 0 0); //(0.70710678 0.70710678 0); + e2 (0 0 1); } } } diff --git a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/transportProperties b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/transportProperties +++ b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/airFoil2D/constant/transportProperties b/tutorials/incompressible/simpleFoam/airFoil2D/constant/transportProperties index 5681fcad5b1c07d6c0a2547a342999783373f0c1..a92f59e5e7146f366e72102d056082a48c665b1d 100644 --- a/tutorials/incompressible/simpleFoam/airFoil2D/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/airFoil2D/constant/transportProperties @@ -17,8 +17,8 @@ FoamFile transportModel Newtonian; -rho [1 -3 0 0 0 0 0] 1; +rho 1; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/mixerVessel2D/constant/transportProperties b/tutorials/incompressible/simpleFoam/mixerVessel2D/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/simpleFoam/mixerVessel2D/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/mixerVessel2D/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties b/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..778c5383eef65cdc5c47e951c5a255181b09b317 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu .5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/streamLines b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines index 1e671e71b89ca2004af58765e532a4f1c04bfa1a..5b6b8218d630dd23cdb381bebf844f4469d9102d 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/streamLines +++ b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines @@ -42,9 +42,7 @@ streamLines cloud particleTracks; // Seeding method. - seedSampleSet uniform; //cloud; //triSurfaceMeshPointSet; - - uniformCoeffs + seedSampleSet { type uniform; axis x; //distance; diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines b/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines index 9e6bfda88cc2304c2447afefa0d45f7761495a76..633abddbb36f86e1e3083f842426b25a0e7bc90f 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines +++ b/tutorials/incompressible/simpleFoam/motorBike/system/wallBoundedStreamLines @@ -68,29 +68,31 @@ wallBoundedStreamLines cloud wallBoundedParticleTracks; // Seeding method. - seedSampleSet patchSeed; //cloud; //triSurfaceMeshPointSet; - - uniformCoeffs - { - type uniform; - axis x; //distance; - - start (0.0035 0.0999 0.0001); - end (0.0035 0.0999 0.0099); - nPoints 20; - } - cloudCoeffs - { - type cloud; - axis x; //distance; - points ((0.351516548679288 -0.0116085375585099 1.24)); - } - patchSeedCoeffs + seedSampleSet { type patchSeed; - patches (motorBikeGroup); - axis x; //distance; - maxPoints 20000; + + uniformCoeffs + { + axis x; //distance; + + start (0.0035 0.0999 0.0001); + end (0.0035 0.0999 0.0099); + nPoints 20; + } + + cloudCoeffs + { + axis x; //distance; + points ((0.351516548679288 -0.0116085375585099 1.24)); + } + + patchSeedCoeffs + { + patches (motorBikeGroup); + axis x; //distance; + maxPoints 20000; + } } } diff --git a/tutorials/incompressible/simpleFoam/pipeCyclic/constant/transportProperties b/tutorials/incompressible/simpleFoam/pipeCyclic/constant/transportProperties index 08a6a40e882b8f762e0f3dc7ee93eec2431fc8ff..d57a3d1feae5c37fae410155fbc04c2179a50822 100644 --- a/tutorials/incompressible/simpleFoam/pipeCyclic/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/pipeCyclic/constant/transportProperties @@ -17,7 +17,7 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-06; +nu 1e-06; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDaily/constant/transportProperties b/tutorials/incompressible/simpleFoam/pitzDaily/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/simpleFoam/pitzDaily/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/pitzDaily/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDaily/system/blockMeshDict b/tutorials/incompressible/simpleFoam/pitzDaily/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/incompressible/simpleFoam/pitzDaily/system/blockMeshDict +++ b/tutorials/incompressible/simpleFoam/pitzDaily/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/constant/transportProperties b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/constant/transportProperties index 10b33d899a8cb1895f8f78bf69c8b673af4b9f36..4a7e6c4690d6038cfd1ce8f913859e6d4c0edcf0 100644 --- a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/blockMeshDict b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/blockMeshDict index 66c7a2d6bcac8061cc37b63976999b47a861a375..d56a5091ae9d7007bfc68a10d69b1274096ade93 100644 --- a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/blockMeshDict +++ b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/blockMeshDict @@ -19,66 +19,71 @@ convertToMeters 0.001; vertices ( (-20.6 0 -0.5) - (-20.6 3 -0.5) - (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) - (0 -5 -0.5) (0 0 -0.5) - (0 3 -0.5) - (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) - (206 -8.5 -0.5) (206 0 -0.5) - (206 6.5 -0.5) - (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) - (290 -6.3 -0.5) (290 0 -0.5) - (290 4.5 -0.5) - (290 11 -0.5) (290 16.6 -0.5) + (-20.6 0 0.5) - (-20.6 3 0.5) - (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) - (0 -5 0.5) (0 0 0.5) - (0 3 0.5) - (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) - (206 -8.5 0.5) (206 0 0.5) - (206 6.5 0.5) - (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) - (290 -6.3 0.5) (290 0 0.5) - (290 4.5 0.5) - (290 11 0.5) (290 16.6 0.5) ); +negY +( + (2 4 1) + (1 3 0.3) +); + +posY +( + (1 4 2) + (2 3 4) + (2 4 0.25) +); + +posYR +( + (2 1 1) + (1 1 0.25) +); + + blocks ( - hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) - hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) - hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) - hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) - hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) - hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) - hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) - hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) - hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) - hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) - hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) - hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) - hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) + hex (0 3 4 1 11 14 15 12) + (18 30 1) + simpleGrading (0.5 $posY 1) + + hex (2 5 6 3 13 16 17 14) + (180 27 1) + edgeGrading (4 4 4 4 $negY 1 1 $negY 1 1 1 1) + + hex (3 6 7 4 14 17 18 15) + (180 30 1) + edgeGrading (4 4 4 4 $posY $posYR $posYR $posY 1 1 1 1) + + hex (5 8 9 6 16 19 20 17) + (25 27 1) + simpleGrading (2.5 1 1) + + hex (6 9 10 7 17 20 21 18) + (25 30 1) + simpleGrading (2.5 $posYR 1) ); edges @@ -92,9 +97,7 @@ boundary type patch; faces ( - (0 22 23 1) - (1 23 24 2) - (2 24 25 3) + (0 1 12 11) ); } outlet @@ -102,11 +105,8 @@ boundary type patch; faces ( - (16 17 39 38) - (17 18 40 39) - (18 19 41 40) - (19 20 42 41) - (20 21 43 42) + (8 9 20 19) + (9 10 21 20) ); } upperWall @@ -114,9 +114,9 @@ boundary type wall; faces ( - (3 25 31 9) - (9 31 37 15) - (15 37 43 21) + (1 4 15 12) + (4 7 18 15) + (7 10 21 18) ); } lowerWall @@ -124,11 +124,10 @@ boundary type wall; faces ( - (0 6 28 22) - (6 5 27 28) - (5 4 26 27) - (4 10 32 26) - (10 16 38 32) + (0 3 14 11) + (3 2 13 14) + (2 5 16 13) + (5 8 19 16) ); } frontAndBack @@ -136,38 +135,18 @@ boundary type empty; faces ( - (22 28 29 23) - (23 29 30 24) - (24 30 31 25) - (26 32 33 27) - (27 33 34 28) - (28 34 35 29) - (29 35 36 30) - (30 36 37 31) - (32 38 39 33) - (33 39 40 34) - (34 40 41 35) - (35 41 42 36) - (36 42 43 37) - (0 1 7 6) - (1 2 8 7) - (2 3 9 8) - (4 5 11 10) - (5 6 12 11) - (6 7 13 12) - (7 8 14 13) - (8 9 15 14) - (10 11 17 16) - (11 12 18 17) - (12 13 19 18) - (13 14 20 19) - (14 15 21 20) + (0 3 4 1) + (2 5 6 3) + (3 6 7 4) + (5 8 9 6) + (6 9 10 7) + (11 14 15 12) + (13 16 17 14) + (14 17 18 15) + (16 19 20 17) + (17 20 21 18) ); } ); -mergePatchPairs -( -); - // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/controlDict b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/controlDict index 498774b1087f2ccdb1f37a8357de7a5d16a41234..95361b65c29125ad6ed3539353bb1ba6727ce9ab 100644 --- a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/controlDict +++ b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/controlDict @@ -76,13 +76,11 @@ functions cloud particleTracks; // Seeding method. - seedSampleSet uniform; //cloud; //triSurfaceMeshPointSet; - - uniformCoeffs + seedSampleSet { type uniform; - axis x; //distance; + axis x; //distance; start (-0.0205 0.001 0.00001); end (-0.0205 0.0251 0.00001); nPoints 10; diff --git a/tutorials/incompressible/simpleFoam/rotorDisk/constant/transportProperties b/tutorials/incompressible/simpleFoam/rotorDisk/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/simpleFoam/rotorDisk/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/rotorDisk/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/rotorDisk/system/fvOptions b/tutorials/incompressible/simpleFoam/rotorDisk/system/fvOptions index b7d3a44c04347cec1a8cd5369f740d6d52451b5b..dc4b6d17448593444cf3eaa781acd262212174ce 100644 --- a/tutorials/incompressible/simpleFoam/rotorDisk/system/fvOptions +++ b/tutorials/incompressible/simpleFoam/rotorDisk/system/fvOptions @@ -17,89 +17,85 @@ FoamFile disk { type rotorDisk; - active on; - rotorDiskCoeffs - { - selectionMode cellZone; - cellZone rotatingZone; + selectionMode cellZone; + cellZone rotatingZone; - fields (U); // Names of fields on which to apply source - nBlades 3; // Number of blades - tipEffect 0.96; // Normalised radius above which lift = 0 + fields (U); // Names of fields on which to apply source + nBlades 3; // Number of blades + tipEffect 0.96; // Normalised radius above which lift = 0 - inletFlowType local; // Inlet flow type specification - inletVelocity (0 1 0); + inletFlowType local; // Inlet flow type specification + inletVelocity (0 1 0); - geometryMode specified; + geometryMode specified; - origin (0 0 0); - axis (0 1 0); + origin (0 0 0); + axis (0 1 0); - refDirection (0 0 1); // Reference direction - // - used as reference for psi angle - rpm 1000; - //pointAbove (0 0 0.25); + refDirection (0 0 1); // Reference direction + // - used as reference for psi angle + rpm 1000; + //pointAbove (0 0 0.25); - trimModel fixedTrim; // fixed || targetForce + trimModel fixedTrim; // fixed || targetForce - rhoRef 1000; - rhoInf 1; + rhoRef 1000; + rhoInf 1; - fixedTrimCoeffs - { - theta0 0; - theta1c 0; - theta1s 0; - } + fixedTrimCoeffs + { + theta0 0; + theta1c 0; + theta1s 0; + } - flapCoeffs - { - beta0 0; // Coning angle [deg] - beta1c 0; // Lateral flapping coeff (cos coeff) - beta2s 0; // Longitudinal flapping coeff (sin coeff) - } + flapCoeffs + { + beta0 0; // Coning angle [deg] + beta1c 0; // Lateral flapping coeff (cos coeff) + beta2s 0; // Longitudinal flapping coeff (sin coeff) + } + + blade + { + data + ( + (profile1 (0.1 -6 0.02)) + (profile1 (0.25 -6 0.02)) + ); + } - blade + profiles + { + profile1 { + type lookup; data ( - (profile1 (0.1 -6 0.02)) - (profile1 (0.25 -6 0.02)) + (-90 0.21 1.45) + (-18 0.21 1.45) + (-16 0.165 1.3) + (-14 0.125 1.1) + (-12 0.092 0.95) + (-10 0.07 0.8) + (-8 0.05 0.64) + (-6 0.04 0.5) + (-4 0.028 0.32) + (-2 0.022 0.18) + (0 0.02 0) + (2 0.022 0.18) + (4 0.028 0.32) + (6 0.04 0.5) + (8 0.05 0.64) + (10 0.07 0.8) + (12 0.092 0.95) + (14 0.125 1.1) + (16 0.165 1.3) + (18 0.21 1.45) + (90 0.21 1.45) ); } - - profiles - { - profile1 - { - type lookup; - data - ( - (-90 0.21 1.45) - (-18 0.21 1.45) - (-16 0.165 1.3) - (-14 0.125 1.1) - (-12 0.092 0.95) - (-10 0.07 0.8) - (-8 0.05 0.64) - (-6 0.04 0.5) - (-4 0.028 0.32) - (-2 0.022 0.18) - (0 0.02 0) - (2 0.022 0.18) - (4 0.028 0.32) - (6 0.04 0.5) - (8 0.05 0.64) - (10 0.07 0.8) - (12 0.092 0.95) - (14 0.125 1.1) - (16 0.165 1.3) - (18 0.21 1.45) - (90 0.21 1.45) - ); - } - } } } diff --git a/tutorials/incompressible/simpleFoam/simpleCar/constant/transportProperties b/tutorials/incompressible/simpleFoam/simpleCar/constant/transportProperties index 6e3c2131baff33ba44c9e762c4624fda6832fbc5..d0a2296caaf547a69adc4f470784449632ccf7ac 100644 --- a/tutorials/incompressible/simpleFoam/simpleCar/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/simpleCar/constant/transportProperties @@ -17,23 +17,7 @@ FoamFile transportModel Newtonian; -nu nu [ 0 2 -1 0 0 0 0 ] 1e-05; - -CrossPowerLawCoeffs -{ - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - m m [ 0 0 1 0 0 0 0 ] 1; - n n [ 0 0 0 0 0 0 0 ] 1; -} - -BirdCarreauCoeffs -{ - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - k k [ 0 0 1 0 0 0 0 ] 0; - n n [ 0 0 0 0 0 0 0 ] 1; -} +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/turbineSiting/constant/fvOptions b/tutorials/incompressible/simpleFoam/turbineSiting/constant/fvOptions index 7cb3a532a6d027c2905c261ab46d48a3a974ee90..29c42236e373b370e4a386728c69c2dbfa1939d2 100644 --- a/tutorials/incompressible/simpleFoam/turbineSiting/constant/fvOptions +++ b/tutorials/incompressible/simpleFoam/turbineSiting/constant/fvOptions @@ -18,39 +18,31 @@ FoamFile disk1 { type actuationDiskSource; - active on; - - actuationDiskSourceCoeffs - { - fields (U); - - selectionMode cellSet; - cellSet actuationDisk1; - diskDir (1 0 0); // Orientation of the disk - Cp 0.386; - Ct 0.58; - diskArea 40; - upstreamPoint (581849 4785810 1065); - } + + fields (U); + + selectionMode cellSet; + cellSet actuationDisk1; + diskDir (1 0 0); // Orientation of the disk + Cp 0.386; + Ct 0.58; + diskArea 40; + upstreamPoint (581849 4785810 1065); } disk2 { type actuationDiskSource; - active on; - - actuationDiskSourceCoeffs - { - fields (U); - - selectionMode cellSet; - cellSet actuationDisk2; - diskDir (1 0 0); // Orientation of the disk - Cp 0.53; - Ct 0.58; - diskArea 40; - upstreamPoint (581753 4785663 1070); - } + + fields (U); + + selectionMode cellSet; + cellSet actuationDisk2; + diskDir (1 0 0); // Orientation of the disk + Cp 0.53; + Ct 0.58; + diskArea 40; + upstreamPoint (581753 4785663 1070); } diff --git a/tutorials/incompressible/simpleFoam/turbineSiting/constant/transportProperties b/tutorials/incompressible/simpleFoam/turbineSiting/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/simpleFoam/turbineSiting/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/turbineSiting/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/windAroundBuildings/constant/transportProperties b/tutorials/incompressible/simpleFoam/windAroundBuildings/constant/transportProperties index 93a8cb630c0aa15a609264655f584322b9682e05..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/incompressible/simpleFoam/windAroundBuildings/constant/transportProperties +++ b/tutorials/incompressible/simpleFoam/windAroundBuildings/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/windAroundBuildings/system/snappyHexMeshDict b/tutorials/incompressible/simpleFoam/windAroundBuildings/system/snappyHexMeshDict index b7f229b12e8505b79f07d4bb4ad10ea610fc383a..3b8a2b121aaeece29e19e7630ff4e5d6249406ae 100644 --- a/tutorials/incompressible/simpleFoam/windAroundBuildings/system/snappyHexMeshDict +++ b/tutorials/incompressible/simpleFoam/windAroundBuildings/system/snappyHexMeshDict @@ -87,14 +87,14 @@ addLayersControls } meshQualityControls -{ -} +{} writeFlags ( - scalarLevels - layerSets - layerFields + noRefinement + // scalarLevels + // layerSets + // layerFields ); mergeTolerance 1e-6; diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/combustionProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/combustionProperties index 871ddbc73720a9ac09025025ed58cd7c015e56e1..8f3dedcb77f6142aa1da8b24bf1cdaa31df7c236 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/combustionProperties +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/combustionProperties @@ -19,11 +19,9 @@ combustionModel PaSR<psiChemistryCombustion>; active true; - PaSRCoeffs { Cmix 1.0; - turbulentReaction on; } diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.dat b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.dat index 80a8ac13b0e04bdafaf65710f4c482b0e37d86f2..a7cef04180beadf2112679ce5c096ce9f574dec1 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.dat +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.dat @@ -19,7 +19,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -41,7 +40,6 @@ CH4 { specie { - nMoles 1; molWeight 16.043; } thermodynamics @@ -63,7 +61,6 @@ H2 { specie { - nMoles 1; molWeight 2.01594; } thermodynamics @@ -85,7 +82,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -107,7 +103,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -129,7 +124,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/fvOptions b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/fvOptions index 05c9f48b1f749f78297ccf447887a3d1b5483a99..08a3d0f7a81b426273daa0513fc3e39080cee403 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/fvOptions +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/fvOptions @@ -18,18 +18,14 @@ FoamFile source1 { type fixedTemperatureConstraint; - active yes; - fixedTemperatureConstraintCoeffs - { - timeStart 0.1; - duration 0.4; - selectionMode cellSet; - cellSet ignitionCells; + timeStart 0.1; + duration 0.4; + selectionMode cellSet; + cellSet ignitionCells; - mode uniform; - temperature 2000; - } + mode uniform; + temperature 2000; } diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties index 96ec575902cc84ceca189f7856ec24a22b708b6b..22fca744320f65acea12c377e68d75d9623e5075 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties @@ -36,31 +36,21 @@ inertSpecie N2; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids { C { - defaultCoeffs no; - // if defaultCoeffs no properties should be : - CCoeffs - { - rho 2010; - Cp 710; - K 0.04; - Hf 0; - emissivity 1.0; - } - } - ash - { - defaultCoeffs yes; + rho 2010; + Cp 710; + kappa 0.04; + Hf 0; + emissivity 1.0; } + + ash; } diff --git a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/constant/transportProperties b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/constant/transportProperties index 375de077121c0bacfbd96836b969c71662a2e2cf..43a2628f960136926fd573a5132bd4df745681d7 100644 --- a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/constant/transportProperties +++ b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/constant/transportProperties @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -rhoInf [1 -3 0 0 0 0 0] 1.2; +rhoInf 1.2; transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/constant/transportProperties b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/constant/transportProperties index 375de077121c0bacfbd96836b969c71662a2e2cf..43a2628f960136926fd573a5132bd4df745681d7 100644 --- a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/constant/transportProperties +++ b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/constant/transportProperties @@ -15,10 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -rhoInf [1 -3 0 0 0 0 0] 1.2; +rhoInf 1.2; transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-05; +nu 1e-05; // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties index af8a9b0924fceb16ff164445da7ac19c72216d85..ba10c40e158e405a21f5f1736ce770b6e5b42acd 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties @@ -22,7 +22,6 @@ active false; PaSRCoeffs { Cmix 1.0; - turbulentReaction on; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat index 36fc43e385d75437b6bee7ab24806f71bd523666..55f362b0dd25734fb9378fa942074c38cd267b54 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/thermophysicalProperties index 71ab74971e37e26c8a0a264156edb6effd7b3488..35a78300b4cbeef158894a0328d730222c53af69 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/thermophysicalProperties @@ -36,16 +36,11 @@ inertSpecie N2; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/combustionProperties index f010dcd04c748e93a16a3d60421ede3d1631998d..2dafc678c24781673141ce1f3ade762f9dfd66ef 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<psiChemistryCombustion>; +combustionModel laminar<psiChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/foam.dat b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/foam.dat index 36fc43e385d75437b6bee7ab24806f71bd523666..55f362b0dd25734fb9378fa942074c38cd267b54 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/foam.dat +++ b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/foam.dat @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/surfaceFilmProperties b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/surfaceFilmProperties index 7cf97c650497e854bb2d99cc3a2b63d64e1b012e..9d5815e497b37f16e18b0d240e21bfd449f20e9d 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/surfaceFilmProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/surfaceFilmProperties @@ -21,7 +21,6 @@ region wallFilmRegion; active true; - thermoSingleLayerCoeffs { filmThermoModel liquid; @@ -48,13 +47,13 @@ thermoSingleLayerCoeffs upperSurfaceModels { -/* + /* heatTransferModel constant; constantCoeffs { c0 1e-8; } -*/ + */ heatTransferModel mappedConvectiveHeatTransfer; } @@ -70,13 +69,14 @@ thermoSingleLayerCoeffs forces ( thermocapillary - contactAngle + distributionContactAngle ); - contactAngleCoeffs + distributionContactAngleCoeffs { Ccf 0.085; - contactAngleDistribution + + distribution { type normal; normalDistribution @@ -88,8 +88,7 @@ thermoSingleLayerCoeffs } } - zeroForcePatches - (); + zeroForcePatches (); } injectionModels diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/thermophysicalProperties index 71ab74971e37e26c8a0a264156edb6effd7b3488..35a78300b4cbeef158894a0328d730222c53af69 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/constant/thermophysicalProperties @@ -36,16 +36,11 @@ inertSpecie N2; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/patchifyObstacles b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/patchifyObstacles index be3c7aded10f3d84c81c4ce03fc796375f9b1033..9ddf2043d425178bcaed56283ea5135224103305 100755 --- a/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/patchifyObstacles +++ b/tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/patchifyObstacles @@ -6,8 +6,12 @@ # \\ / A nd | Web: www.OpenFOAM.com # # \\/ M anipulation | # #-----------------------------------------------------------------------------# + cd ${0%/*} || exit 1 # Run from this directory +# Stop on first error +set -e + x0=0.4 y0=0.1 z0=0.1 @@ -157,4 +161,6 @@ echo "faceZoneSet floorFaces new setsToFaceZone FloorFaces floorCells" >> $tmpSe setSet -batch $tmpSetSet > log.setSet.patchifyObstacles 2>&1 +echo "End" + # ************************************************************************* diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/combustionProperties index f010dcd04c748e93a16a3d60421ede3d1631998d..2dafc678c24781673141ce1f3ade762f9dfd66ef 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<psiChemistryCombustion>; +combustionModel laminar<psiChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/foam.dat b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/foam.dat index 36fc43e385d75437b6bee7ab24806f71bd523666..55f362b0dd25734fb9378fa942074c38cd267b54 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/foam.dat +++ b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/foam.dat @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/surfaceFilmProperties b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/surfaceFilmProperties index f51e31b47edfc84b722dc51a0792f4461a143a49..29444899e096aff14d37379edab53b3eab05096a 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/surfaceFilmProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/surfaceFilmProperties @@ -42,14 +42,15 @@ kinematicSingleLayerCoeffs forces ( - contactAngle thermocapillary + distributionContactAngle ); - contactAngleCoeffs + distributionContactAngleCoeffs { Ccf 1; - contactAngleDistribution + + distribution { type normal; normalDistribution @@ -61,6 +62,9 @@ kinematicSingleLayerCoeffs } } - zeroForcePatches (); + zeroForcePatches (); } } + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/thermophysicalProperties index 71ab74971e37e26c8a0a264156edb6effd7b3488..35a78300b4cbeef158894a0328d730222c53af69 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/rivuletPanel/constant/thermophysicalProperties @@ -36,16 +36,11 @@ inertSpecie N2; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/combustionProperties index f010dcd04c748e93a16a3d60421ede3d1631998d..2dafc678c24781673141ce1f3ade762f9dfd66ef 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<psiChemistryCombustion>; +combustionModel laminar<psiChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/foam.dat b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/foam.dat index 36fc43e385d75437b6bee7ab24806f71bd523666..55f362b0dd25734fb9378fa942074c38cd267b54 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/foam.dat +++ b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/foam.dat @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/thermophysicalProperties index 71ab74971e37e26c8a0a264156edb6effd7b3488..35a78300b4cbeef158894a0328d730222c53af69 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/thermophysicalProperties @@ -36,16 +36,11 @@ inertSpecie N2; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/counterFlowFlame2DLTS/constant/thermo.compressibleGas b/tutorials/lagrangian/reactingParcelFoam/counterFlowFlame2DLTS/constant/thermo.compressibleGas index 6033aca9a13a7967cae33c62d1aa44ae18ba54c1..371a3bb6c87f57d6bde8d7e4b6d585c89893168b 100644 --- a/tutorials/lagrangian/reactingParcelFoam/counterFlowFlame2DLTS/constant/thermo.compressibleGas +++ b/tutorials/lagrangian/reactingParcelFoam/counterFlowFlame2DLTS/constant/thermo.compressibleGas @@ -19,7 +19,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } thermodynamics @@ -41,7 +40,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -63,7 +61,6 @@ CH4 { specie { - nMoles 1; molWeight 16.0428; } thermodynamics @@ -85,7 +82,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -107,7 +103,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } thermodynamics diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFoam/filter/constant/combustionProperties index 93afc3cd0a299bba6392cebcd07600c6ad5a0f7f..3d8f12afb4012c6280e4676f756cffa80a3a67de 100644 --- a/tutorials/lagrangian/reactingParcelFoam/filter/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFoam/filter/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel laminar<rhoChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/constant/fvOptions b/tutorials/lagrangian/reactingParcelFoam/filter/constant/fvOptions index e2a06f9a8c4b7202bf63ceb495075eb495ca5f8d..34f24a7ea92698b9b468a1168423744617e3b931 100644 --- a/tutorials/lagrangian/reactingParcelFoam/filter/constant/fvOptions +++ b/tutorials/lagrangian/reactingParcelFoam/filter/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile filter1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -27,21 +26,18 @@ filter1 type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (500000 -1000 -1000); - f (0 0 0); + d (500000 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (1 0 0); - e2 (0 1 0); - } + type axesRotation; + e1 (1 0 0); + e2 (0 1 0); } } } @@ -51,24 +47,20 @@ filter1 massSource1 { type scalarSemiImplicitSource; - active yes; - scalarSemiImplicitSourceCoeffs + timeStart 0.2; + duration 2.0; + selectionMode points; + points + ( + (2.75 0.5 0) + ); + + volumeMode absolute; + injectionRateSuSp { - timeStart 0.2; - duration 2.0; - selectionMode points; - points - ( - (2.75 0.5 0) - ); - - volumeMode absolute; - injectionRateSuSp - { - rho (1e-4 0); // kg/s - H2O (1e-4 0); // kg/s - } + rho (1e-4 0); // kg/s + H2O (1e-4 0); // kg/s } } @@ -76,23 +68,19 @@ massSource1 momentumSource1 { type vectorSemiImplicitSource; - active yes; - vectorSemiImplicitSourceCoeffs + timeStart 0.2; + duration 2.0; + selectionMode points; + points + ( + (2.75 0.5 0) + ); + + volumeMode absolute; + injectionRateSuSp { - timeStart 0.2; - duration 2.0; - selectionMode points; - points - ( - (2.75 0.5 0) - ); - - volumeMode absolute; - injectionRateSuSp - { - U ((0 0.005 0) 0); - } + U ((0 0.005 0) 0); } } @@ -100,23 +88,19 @@ momentumSource1 energySource1 { type scalarSemiImplicitSource; - active yes; - scalarSemiImplicitSourceCoeffs + timeStart 0.2; + duration 2.0; + selectionMode points; + points + ( + (2.75 0.5 0) + ); + + volumeMode absolute; + injectionRateSuSp { - timeStart 0.2; - duration 2.0; - selectionMode points; - points - ( - (2.75 0.5 0) - ); - - volumeMode absolute; - injectionRateSuSp - { - h (10 0); - } + h (10 0); } } diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermo.incompressiblePoly b/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermo.incompressiblePoly index eeb144f66d7fb7288953bd290bb76a114f49e21e..05043fa1356b30cff916c1514059307ea64893c8 100644 --- a/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermo.incompressiblePoly +++ b/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermo.incompressiblePoly @@ -19,7 +19,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } equationOfState @@ -43,7 +42,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } equationOfState @@ -67,7 +65,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -91,7 +88,6 @@ air { specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermophysicalProperties index 15863209043de0f02aa9d88a5a1b6f95ad72fe5d..56d265f7aa579aaeb4d30fb42c20006db527f342 100644 --- a/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFoam/filter/constant/thermophysicalProperties @@ -36,16 +36,11 @@ foamChemistryThermoFile "$FOAM_CASE/constant/thermo.incompressiblePoly"; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} inertSpecie N2; diff --git a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/combustionProperties index 93afc3cd0a299bba6392cebcd07600c6ad5a0f7f..3d8f12afb4012c6280e4676f756cffa80a3a67de 100644 --- a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel laminar<rhoChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermo.incompressiblePoly b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermo.incompressiblePoly index eeb144f66d7fb7288953bd290bb76a114f49e21e..05043fa1356b30cff916c1514059307ea64893c8 100644 --- a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermo.incompressiblePoly +++ b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermo.incompressiblePoly @@ -19,7 +19,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } equationOfState @@ -43,7 +42,6 @@ O2 { specie { - nMoles 1; molWeight 31.9988; } equationOfState @@ -67,7 +65,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -91,7 +88,6 @@ air { specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermophysicalProperties index 535bb5261448df83fcedb19ee3e112deb9071284..35221a4868b2f62fc6db401361485740b5f1ea5c 100644 --- a/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFoam/parcelInBox/constant/thermophysicalProperties @@ -38,16 +38,11 @@ inertSpecie air; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/combustionProperties index 93afc3cd0a299bba6392cebcd07600c6ad5a0f7f..3d8f12afb4012c6280e4676f756cffa80a3a67de 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel laminar<rhoChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 1.0; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly index 4e09970b42625379f2fa5a6380e82ef10e5c0621..20829cc28cb1061aa9adc03be98dc23b4c460266 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly @@ -19,7 +19,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } equationOfState @@ -43,7 +42,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -67,7 +65,6 @@ air { specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermophysicalProperties index 7b28f9d005d603bd19a43eb9352a44416c577479..35221a4868b2f62fc6db401361485740b5f1ea5c 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannel/constant/thermophysicalProperties @@ -38,16 +38,11 @@ inertSpecie air; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/combustionProperties b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/combustionProperties index 9c709f859e0449f8e8ccc3d3a822fe8697fcaa48..3d8f12afb4012c6280e4676f756cffa80a3a67de 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/combustionProperties +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/combustionProperties @@ -15,15 +15,12 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel laminar<rhoChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 0.1; - turbulentReaction off; -} +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermo.incompressiblePoly b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermo.incompressiblePoly index 4e09970b42625379f2fa5a6380e82ef10e5c0621..20829cc28cb1061aa9adc03be98dc23b4c460266 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermo.incompressiblePoly +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermo.incompressiblePoly @@ -19,7 +19,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } equationOfState @@ -43,7 +42,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -67,7 +65,6 @@ air { specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermophysicalProperties index 35a207cc976a772d6ea214336047d562e649402b..55d27c3aae172c0e449f442f6b0c17ffb23cd052 100644 --- a/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFoam/verticalChannelLTS/constant/thermophysicalProperties @@ -36,18 +36,14 @@ inertSpecie air; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // de-activate the pressure-work term when running local time-stepping dpdt no; + // ************************************************************************* // diff --git a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/combustionProperties b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/combustionProperties index 9c709f859e0449f8e8ccc3d3a822fe8697fcaa48..4a4ed37da2bc710d5ec3b041b2f850ac2b6c2fda 100644 --- a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/combustionProperties +++ b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/combustionProperties @@ -15,15 +15,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel laminar<rhoChemistryCombustion>; active false; -PaSRCoeffs -{ - Cmix 0.1; - turbulentReaction off; -} - +laminarCoeffs +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly index 4e09970b42625379f2fa5a6380e82ef10e5c0621..20829cc28cb1061aa9adc03be98dc23b4c460266 100644 --- a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly +++ b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermo.incompressiblePoly @@ -19,7 +19,6 @@ N2 { specie { - nMoles 1; molWeight 28.0134; } equationOfState @@ -43,7 +42,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -67,7 +65,6 @@ air { specie { - nMoles 1; molWeight 28.85; } equationOfState diff --git a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermophysicalProperties b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermophysicalProperties index ce5e0deec57eebab0be68463e38da1a2996e6b24..b24a54ff0d00113c158c6c961b99d9b0dfb601c2 100644 --- a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermophysicalProperties +++ b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/constant/thermophysicalProperties @@ -36,16 +36,11 @@ inertSpecie air; liquids { - H2O - { - defaultCoeffs yes; - } + H2O; } solids -{ - // none -} +{} // ************************************************************************* // diff --git a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/system/fvSchemes b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/system/fvSchemes index a403767e079aee5501b804e2a05bc636aa7bb345..fff8e521a552e24db9468c40f4ea824959017df4 100644 --- a/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/system/fvSchemes +++ b/tutorials/lagrangian/simpleReactingParcelFoam/verticalChannel/system/fvSchemes @@ -29,7 +29,7 @@ divSchemes { default none; div(phi,U) bounded Gauss upwind; - div(phid,p) bounded Gauss upwind; + div(phid,p) Gauss upwind; div(phi,K) bounded Gauss linear; div(phi,h) bounded Gauss upwind; div(phi,k) bounded Gauss upwind; diff --git a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/combustionProperties b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/combustionProperties index 73419eee3bf54ae39d188623e89ba49a7e59f68a..37cd7d1e631195b976d9ef884eac86f12299a7f2 100644 --- a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/combustionProperties +++ b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/combustionProperties @@ -22,7 +22,6 @@ active yes; PaSRCoeffs { Cmix 1.0; - turbulentReaction yes; } diff --git a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/thermophysicalProperties b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/thermophysicalProperties index b733f8f33ec2bc0b108a464baf6af49db11d9e79..ab96654d5a6316759ace9ba6536886183e834d8c 100644 --- a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/thermophysicalProperties +++ b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/thermophysicalProperties @@ -36,15 +36,11 @@ inertSpecie N2; liquids { - C7H16 - { - defaultCoeffs yes; - } + C7H16; } solids -{ - // none -} +{} + // ************************************************************************* // diff --git a/tutorials/mesh/blockMesh/pipe/constant/triSurface/curve.obj b/tutorials/mesh/blockMesh/pipe/constant/geometry/curve.obj similarity index 100% rename from tutorials/mesh/blockMesh/pipe/constant/triSurface/curve.obj rename to tutorials/mesh/blockMesh/pipe/constant/geometry/curve.obj diff --git a/tutorials/mesh/blockMesh/pipe/constant/triSurface/curve2.vtk b/tutorials/mesh/blockMesh/pipe/constant/geometry/curve2.vtk similarity index 100% rename from tutorials/mesh/blockMesh/pipe/constant/triSurface/curve2.vtk rename to tutorials/mesh/blockMesh/pipe/constant/geometry/curve2.vtk diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict index 24b3e86887d072ce7329a5ac60a9a6d7fd4ccec6..3d7a2e163171c832eab9bf285c9a3aa222aacf33 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict @@ -17,22 +17,17 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ( "libfvMotionSolvers.so" ); +motionSolverLibs ("libfvMotionSolvers.so"); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone rotating; - - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 0 1); - omega -5; // 5 rad/s - } -} +cellZone rotating; + +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 0 1); +omega -5; // 5 rad/s // ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/transportProperties b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/transportProperties index a5618d0accb909776790fce04265d61200bd3067..a6cfde93e6deef93406ff791e2544710c1eb14fb 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/transportProperties +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/transportProperties @@ -20,17 +20,17 @@ phases (phase1 phase2); phase1 { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 300; + nu 1e-06; + rho 300; } phase2 { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-6; - rho [1 -3 0 0 0 0 0] 1027; + nu 1e-6; + rho 1027; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/mesh/foamyQuadMesh/OpenCFD/constant/thermophysicalProperties b/tutorials/mesh/foamyQuadMesh/OpenCFD/constant/thermophysicalProperties index 5b47d164b4a76f1b0a4468916a3339010ed2a54d..14809d9e1cba7af07d79407ed907592ef5a8c7b8 100644 --- a/tutorials/mesh/foamyQuadMesh/OpenCFD/constant/thermophysicalProperties +++ b/tutorials/mesh/foamyQuadMesh/OpenCFD/constant/thermophysicalProperties @@ -24,7 +24,6 @@ mixture { specie { - nMoles 1; molWeight 11640.3; } thermodynamics diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict index 7c6377e30f438d1dfd3dc77a24855aa4562918c0..51f000b74d3c76f548d96e6e8aa6653ac69f3777 100644 --- a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict +++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict @@ -20,16 +20,13 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libfvMotionSolvers.so"); -solver displacementSBRStress; //displacementLaplacian; -//solver velocityComponentLaplacian z; +motionSolver displacementSBRStress; //displacementLaplacian; +//motionSolver velocityComponentLaplacian z; -displacementSBRStressCoeffs -{ - // diffusivity uniform; - // diffusivity directional (1 200 0); - // diffusivity motionDirectional (1 1000 0); - // diffusivity file motionDiffusivity; - diffusivity quadratic inverseDistance 1(minZ); -} +// 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/SnakeRiverCanyon/constant/transportProperties b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties index 2509c1167036ff6be8aae5ab268ac01b2f71f90a..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties +++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu [0 2 -1 0 0 0 0] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/constant/transportProperties b/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/constant/transportProperties index c1509dad6a8aa47bcd058eee2e3f588d216ce3d5..51788a66f340ab286ff7e354e94e659156a36b0f 100644 --- a/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/constant/transportProperties +++ b/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-6; +nu 1e-6; // ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/constant/transportProperties b/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/constant/transportProperties index c1509dad6a8aa47bcd058eee2e3f588d216ce3d5..51788a66f340ab286ff7e354e94e659156a36b0f 100644 --- a/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/constant/transportProperties +++ b/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/constant/transportProperties @@ -17,6 +17,6 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-6; +nu 1e-6; // ************************************************************************* // diff --git a/tutorials/mesh/parallel/cavity/constant/transportProperties b/tutorials/mesh/parallel/cavity/constant/transportProperties index de00c3587cd9e0a677d63a6a6db42f7a47fa59a9..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/mesh/parallel/cavity/constant/transportProperties +++ b/tutorials/mesh/parallel/cavity/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu nu [ 0 2 -1 0 0 0 0 ] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/constant/transportProperties b/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/constant/transportProperties index 5eabec50ac90dbea1cf88d4143b6e31bb5dcdb55..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/constant/transportProperties +++ b/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/constant/transportProperties b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/constant/transportProperties index f2fa0fcec9c28301b67813cd8bdb874b904b6e3d..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/constant/transportProperties +++ b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/constant/transportProperties @@ -20,48 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu nu [ 0 2 -1 0 0 0 0 ] 1e-06; - rho rho [ 1 -3 0 0 0 0 0 ] 1000; - CrossPowerLawCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - m m [ 0 0 1 0 0 0 0 ] 1; - n n [ 0 0 0 0 0 0 0 ] 0; - } - - BirdCarreauCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - k k [ 0 0 1 0 0 0 0 ] 99.6; - n n [ 0 0 0 0 0 0 0 ] 0.1003; - } + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu nu [ 0 2 -1 0 0 0 0 ] 1.48e-05; - rho rho [ 1 -3 0 0 0 0 0 ] 1; - CrossPowerLawCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - m m [ 0 0 1 0 0 0 0 ] 1; - n n [ 0 0 0 0 0 0 0 ] 0; - } - - BirdCarreauCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - k k [ 0 0 1 0 0 0 0 ] 99.6; - n n [ 0 0 0 0 0 0 0 ] 0.1003; - } + nu 1.48e-05; + rho 1; } -sigma sigma [ 1 0 -2 0 0 0 0 ] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution index a0d2307156076962856cb48ac4d591c6cd942273..965308f8aa792b64afcccd68fdc88cda952c9774 100644 --- a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution +++ b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution @@ -33,7 +33,7 @@ solvers maxIter 100; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/thermodynamicProperties b/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/thermodynamicProperties index f9fd0e69e31500720e195398aebe5e429416ba29..69ac20d98f3c6312cb1e91006f8f3fd59d4fac5b 100644 --- a/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/thermodynamicProperties +++ b/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/thermodynamicProperties @@ -17,15 +17,15 @@ FoamFile barotropicCompressibilityModel linear; -psiv [0 -2 2 0 0] 2.5e-06; +psiv 2.5e-06; -rholSat [1 -3 0 0 0] 830; +rholSat 830; -psil [0 -2 2 0 0] 5e-07; +psil 5e-07; -pSat [1 -1 -2 0 0] 4500; +pSat 4500; -rhoMin [1 -3 0 0 0] 0.001; +rhoMin 0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/transportProperties b/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/transportProperties index 9f210560aefadbfb9307a9bca65dcb64a2d69cfd..f4f52757ec8cf168b10ee8c1ed7aa347554ff74a 100644 --- a/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/transportProperties +++ b/tutorials/multiphase/cavitatingFoam/LES/throttle/constant/transportProperties @@ -15,24 +15,20 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mul [1 -1 -1 0 0] 0.0065; - -muv [1 -1 -1 0 0] 5.953e-06; - phases (vapour water); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 7.831e-06; - rho [1 -3 0 0 0 0 0] 830; + nu 7.831e-06; + rho 830; } vapour { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 4.252e-05; - rho [1 -3 0 0 0 0 0] 0.14; + nu 4.252e-05; + rho 0.14; } diff --git a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/thermodynamicProperties b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/thermodynamicProperties index f9fd0e69e31500720e195398aebe5e429416ba29..69ac20d98f3c6312cb1e91006f8f3fd59d4fac5b 100644 --- a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/thermodynamicProperties +++ b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/thermodynamicProperties @@ -17,15 +17,15 @@ FoamFile barotropicCompressibilityModel linear; -psiv [0 -2 2 0 0] 2.5e-06; +psiv 2.5e-06; -rholSat [1 -3 0 0 0] 830; +rholSat 830; -psil [0 -2 2 0 0] 5e-07; +psil 5e-07; -pSat [1 -1 -2 0 0] 4500; +pSat 4500; -rhoMin [1 -3 0 0 0] 0.001; +rhoMin 0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/transportProperties b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/transportProperties index a5a6e8a3891f29e95fd6a7e0b11ab6c34eef3dec..bd7dc9a4974e46df8f3f8d4d4b427aeb0e75db23 100644 --- a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/transportProperties +++ b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/constant/transportProperties @@ -15,24 +15,20 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mul [1 -1 -1 0 0] 0.0065; - -muv [1 -1 -1 0 0] 5.953e-06; - phases (vapour water); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 7.831e-06; - rho [1 -3 0 0 0 0 0] 830; + nu 7.831e-06; + rho 830; } vapour { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 4.252e-05; - rho [1 -3 0 0 0 0 0] 0.14; + nu 4.252e-05; + rho 0.14; } // ************************************************************************* // diff --git a/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/thermodynamicProperties b/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/thermodynamicProperties index 3728ab3344a5fbbb71bb91ed1b1e009d2b22574e..ae87991f9354999c460dde0c37299a6ba3e423af 100644 --- a/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/thermodynamicProperties +++ b/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/thermodynamicProperties @@ -17,14 +17,14 @@ FoamFile barotropicCompressibilityModel linear; -psiv [0 -2 2 0 0] 2.5e-06; +psiv 2.5e-06; -rholSat [1 -3 0 0 0] 830; +rholSat 830; -psil [0 -2 2 0 0] 5e-07; +psil 5e-07; -pSat [1 -1 -2 0 0] 4500; +pSat 4500; -rhoMin [1 -3 0 0 0] 0.001; +rhoMin 0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/transportProperties b/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/transportProperties index a5a6e8a3891f29e95fd6a7e0b11ab6c34eef3dec..bd7dc9a4974e46df8f3f8d4d4b427aeb0e75db23 100644 --- a/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/transportProperties +++ b/tutorials/multiphase/cavitatingFoam/RAS/throttle/constant/transportProperties @@ -15,24 +15,20 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mul [1 -1 -1 0 0] 0.0065; - -muv [1 -1 -1 0 0] 5.953e-06; - phases (vapour water); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 7.831e-06; - rho [1 -3 0 0 0 0 0] 830; + nu 7.831e-06; + rho 830; } vapour { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 4.252e-05; - rho [1 -3 0 0 0 0 0] 0.14; + nu 4.252e-05; + rho 0.14; } // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict index e483843b00fe8f80c39c1484b3eb475400b93f5d..7ed41250a1d374499258969f21759aac572c8f39 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict @@ -17,26 +17,21 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction SDA; - SDACoeffs - { - CofG (0 0 0); - lamda 50; - rollAmax 0.22654; - rollAmin 0.10472; - heaveA 3.79; - swayA 2.34; - Q 2; - Tp 13.93; - Tpn 11.93; - dTi 0.059; - dTp -0.001; - } -} +solidBodyMotionFunction SDA; + +CofG (0 0 0); +lamda 50; +rollAmax 0.22654; +rollAmin 0.10472; +heaveA 3.79; +swayA 2.34; +Q 2; +Tp 13.93; +Tpn 11.93; +dTi 0.059; +dTp -0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties index cdb2e649aeaa83616376640dda0f893a477e7bdf..03faeaefff6d1ac044b2d2e26e601b52744cb247 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties @@ -17,8 +17,8 @@ FoamFile phases (water air); -pMin [1 -1 -2 0 0 0 0] 1000; +pMin 1000; -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.air index 1506aef73d78dd3813e150c299fafba099e6e07b..e04e1c5006bd6523b717921306036efdf30e1856 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.water b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.water index 8a5962bc47d22fb8a22f216b68dc7af52491023e..4cd61e3ca2b0909190dfa4ff3d5120c6b94da949 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18.0; } equationOfState diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/transportProperties b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/transportProperties index 77e658d5c3609621f9aff003ab360e06d6f9628b..c1813344c16a54b38d59cf8806fe9cfa89246ea1 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/transportProperties +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/fvSolution b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/fvSolution index 3721a30f6e547e3efd2749899a8b86d2c664b6e7..3595a8a5fe8dabf5bb8838b0183e3a32d3c69b0d 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/fvSolution +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/fvSolution @@ -29,7 +29,7 @@ solvers solver diagonal; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/constant/transportProperties b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/constant/transportProperties index c0d0baa30dd86546d5f16d86019f105405ce78a9..c69a57d6de3361c3623ae9ad3d260cd93532a046 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/constant/transportProperties +++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/constant/transportProperties @@ -19,15 +19,15 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties index 80c786227f38b74c1918e9e154dd38c89553a89f..321f631dad99d22c8239e58575b74e81e58aa2f2 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties @@ -17,8 +17,12 @@ FoamFile phases (water air); -pMin [1 -1 -2 0 0 0 0] 10000; +pMin 10000; -sigma [1 0 -2 0 0 0 0] 0.07; +sigma +{ + type liquidProperties; + phase water; +} // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.air index 1506aef73d78dd3813e150c299fafba099e6e07b..e04e1c5006bd6523b717921306036efdf30e1856 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.water b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.water index 8a5962bc47d22fb8a22f216b68dc7af52491023e..d3184880dedd1482ccbdc9ef1bc56756f1462fe6 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/constant/thermophysicalProperties.water @@ -15,6 +15,21 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +thermoType +{ + type heRhoThermo; + mixture pureMixture; + properties liquid; + energy sensibleInternalEnergy; +} + +mixture +{ + H2O; +} + + +/* thermoType { type heRhoThermo; @@ -30,7 +45,6 @@ mixture { specie { - nMoles 1; molWeight 18.0; } equationOfState @@ -49,6 +63,7 @@ mixture Pr 2.289; } } +*/ // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/controlDict b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/controlDict index 2c474f3c7530853181876fdb2095dfd3a1201d75..9d351db441b400153e8439e2de6cb2ff78fd0347 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/controlDict +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/controlDict @@ -29,15 +29,15 @@ deltaT 0.0001; writeControl adjustableRunTime; -writeInterval 0.005; +writeInterval 0.01; purgeWrite 0; -writeFormat ascii; +writeFormat binary; writePrecision 8; -writeCompression compressed; +writeCompression off; timeFormat general; @@ -47,10 +47,9 @@ runTimeModifiable yes; adjustTimeStep yes; -maxCo 0.25; - +maxCo 0.5; +maxAlphaCo 0.5; maxDeltaT 1; -maxAlphaCo 1; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSolution b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSolution index a2aee08f7e9214bd0b969c5b6d4ec72daf569cb6..62bb33547632d7f654e6f639adc41da62b68e2b6 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSolution +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSolution @@ -17,11 +17,19 @@ FoamFile solvers { - alpha.water + "alpha.water.*" { nAlphaCorr 1; - nAlphaSubCycles 1; + nAlphaSubCycles 2; cAlpha 1; + + MULESCorr no; + nLimiterIter 5; + + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; } ".*(rho|rhoFinal)" @@ -29,7 +37,7 @@ solvers solver diagonal; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties index 80c786227f38b74c1918e9e154dd38c89553a89f..bd87a624395fe73f0cebf479e844c54916ea1008 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties @@ -17,8 +17,8 @@ FoamFile phases (water air); -pMin [1 -1 -2 0 0 0 0] 10000; +pMin 10000; -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.air index 1506aef73d78dd3813e150c299fafba099e6e07b..e04e1c5006bd6523b717921306036efdf30e1856 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.water b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.water index 8a5962bc47d22fb8a22f216b68dc7af52491023e..4cd61e3ca2b0909190dfa4ff3d5120c6b94da949 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18.0; } equationOfState diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/controlDict b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/controlDict index f0e4f0c4ad571877d825e0dde7f47e4176db82d6..efb6cc2d09dfd39d8309c752b96f03f6a0b8f369 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/controlDict +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/controlDict @@ -29,7 +29,7 @@ deltaT 0.0001; writeControl adjustableRunTime; -writeInterval 0.005; +writeInterval 0.01; purgeWrite 0; @@ -47,10 +47,9 @@ runTimeModifiable yes; adjustTimeStep yes; -maxCo 0.25; - +maxCo 0.5; +maxAlphaCo 0.5; maxDeltaT 1; -maxAlphaCo 1; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSolution b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSolution index f0b12cb277f39e13aba68a0e79298c8840e4bc5e..c6f4e2709786c313347533bbcdadd64112f1c900 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSolution +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSolution @@ -17,14 +17,22 @@ FoamFile solvers { - alpha.water + "alpha.water.*" { nAlphaCorr 1; - nAlphaSubCycles 1; + nAlphaSubCycles 2; cAlpha 1; + + MULESCorr no; + nLimiterIter 5; + + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties index 035dcc1331d454e4183adad6242b482c5d8b1616..3f44723fb6b7c7fef02c92299673e6d0409ead88 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties @@ -17,16 +17,16 @@ FoamFile phases (water oil mercury air); -pMin [1 -1 -2 0 0 0 0] 10000; +pMin 10000; sigmas ( - (air water) 0.07 - (air oil) 0.07 - (air mercury) 0.07 - (water oil) 0.07 + (air water) 0.07 + (air oil) 0.07 + (air mercury) 0.07 + (water oil) 0.07 (water mercury) 0.07 - (oil mercury) 0.07 + (oil mercury) 0.07 ); diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.mercury b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.mercury index 2269a0599b7625b985ecf23c31fca6ce415a89a0..f8880612a2b9832f809bc4f94ff55b1dfbfd31ba 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.mercury +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.mercury @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 200.59; } equationOfState diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.oil b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.oil index fdc37fe92f94ae91f81ec7ef27d3760e8cfb450e..d2a03a9f574692624ba438759606e0a7b1da7233 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.oil +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.oil @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100.21; } equationOfState diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.water b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.water index 3dd4526754f72dc3241f663c755e1031b80369ac..7bb52f1797563e22b52fd1c5b395df09724e39fd 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18.0; } equationOfState diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSolution b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSolution index 2174f00f8a0410f7768dd9d25f93ca4d4cca9eda..0f364111c9b45840b85b90cabb12617df917aa2a 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSolution +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSolution @@ -20,10 +20,10 @@ solvers "alpha.*" { nAlphaSubCycles 4; - cAlpha 2; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties index a6ad8621d44942c5b4d8ccf024c8edca6435c745..8d6c9b86b3db3e22f2dbb0f13d052c8cd6c2beff 100644 --- a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties +++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties @@ -14,37 +14,37 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -phases (liquid vapour);// FC-72 +phases (liquid vapour); // FC-72 -sigma sigma [1 0 -2 0 0 0 0] 0.0; +sigma 0; liquid { transportModel Newtonian; - nu nu [0 2 -1 0 0 0 0] 2.64e-7; - rho rho [1 -3 0 0 0 0 0] 1583.4; + nu 2.64e-7; + rho 1583.4; - Cp Cp [0 2 -2 -1 0 0 0] 1.1072e3; - Cv cv [0 2 -2 -1 0 0 0] 1.1072e3; //assume Cp for liquid - kappa kappa [1 1 -3 -1 0 0 0] 0.057; - hf hf [0 2 -2 0 0 0 0] 0; + Cp 1.1072e3; + Cv 1.1072e3; // assume Cp for liquid + kappa 0.057; + hf 0; } vapour { transportModel Newtonian; - nu nu [0 2 -1 0 0 0 0] 5e-7; - rho rho [1 -3 0 0 0 0 0] 14.9; + nu 5e-7; + rho 14.9; - Cp Cp [0 2 -2 -1 0 0 0] 895.2; //FC72 vapour - Cv Cv [0 2 -2 -1 0 0 0] 870.4; // Cv = Cp - R/w - kappa kappa [1 1 -3 -1 0 0 0] 0.01; //FC72 vapour - hf hf [0 2 -2 0 0 0 0] 93.0e3; + Cp 895.2; // FC72 vapour + Cv 870.4; // Cv = Cp - R/w + kappa 0.01; // FC72 vapour + hf 93.0e3; } -Prt 0.7; +Prt 0.7; // ************************************************************************* // diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution index 8a34cb8f480f2cf64f2630a6f52c3855bc98af55..6af6e27afd91cfced2700d7b83fed37bc50ced2e 100644 --- a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution +++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution @@ -90,7 +90,7 @@ solvers maxIter 300; }; - pcorr + "pcorr.*" { $p_rgh; relTol 0; diff --git a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict index ac54d58a0cd71b1ff9f82f872c8666150c0816d6..703d6047806fc498b71879d157a293af2244730b 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict @@ -14,70 +14,67 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh dynamicMotionSolverFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("librigidBodyMeshMotion.so"); -solver rigidBodyMotion; +motionSolver rigidBodyMotion; -rigidBodyMotionCoeffs -{ - report on; +report on; - solver - { - type Newmark; - } +solver +{ + type Newmark; +} - accelerationRelaxation 0.4; +accelerationRelaxation 0.4; - bodies +bodies +{ + hull { - hull - { - type rigidBody; - parent root; + type rigidBody; + parent root; - centreOfMass (0 0 0); - mass 412.73; - inertia (40 0 0 921 0 921); - transform (1 0 0 0 1 0 0 0 1) (2.929541 0 0.2); + centreOfMass (0 0 0); + mass 412.73; + inertia (40 0 0 921 0 921); + transform (1 0 0 0 1 0 0 0 1) (2.929541 0 0.2); - joint - { - type composite; - joints - ( - { - type Pz; - } - { - type Ry; - } - ); - } - - patches (hull); - innerDistance 0.3; - outerDistance 1; + joint + { + type composite; + joints + ( + { + type Pz; + } + { + type Ry; + } + ); } + + patches (hull); + innerDistance 0.3; + outerDistance 1; } +} - restraints +restraints +{ + translationDamper { - translationDamper - { - type linearDamper; - body hull; - coeff 8596; - } + type linearDamper; + body hull; + coeff 8596; + } - rotationDamper - { - type sphericalAngularDamper; - body hull; - coeff 11586; - } + rotationDamper + { + type sphericalAngularDamper; + body hull; + coeff 11586; } } diff --git a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict.sixDoF b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict.sixDoF index 68269e610f7c17cd42ca7ac0bb518aec196b8040..67d99f915fec9a8a0b26d363a17c403bf017a1ce 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict.sixDoF +++ b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/dynamicMeshDict.sixDoF @@ -14,59 +14,56 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh dynamicMotionSolverFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libsixDoFRigidBodyMotion.so"); -solver sixDoFRigidBodyMotion; +motionSolver sixDoFRigidBodyMotion; -sixDoFRigidBodyMotionCoeffs -{ - patches (hull); - innerDistance 0.3; - outerDistance 1; +patches (hull); +innerDistance 0.3; +outerDistance 1; - centreOfMass (2.929541 0 0.2); - mass 412.73; - momentOfInertia (40 921 921); - rhoInf 1; - report on; +centreOfMass (2.929541 0 0.2); +mass 412.73; +momentOfInertia (40 921 921); +rhoInf 1; +report on; - value uniform (0 0 0); +value uniform (0 0 0); - accelerationRelaxation 0.4; +accelerationRelaxation 0.4; - solver +solver +{ + type Newmark; +} + +constraints +{ + zAxis { - type Newmark; + sixDoFRigidBodyMotionConstraint line; + direction (0 0 1); } - - constraints + yPlane { - zAxis - { - sixDoFRigidBodyMotionConstraint line; - direction (0 0 1); - } - yPlane - { - sixDoFRigidBodyMotionConstraint axis; - axis (0 1 0); - } + sixDoFRigidBodyMotionConstraint axis; + axis (0 1 0); } +} - restraints +restraints +{ + translationDamper + { + sixDoFRigidBodyMotionRestraint linearDamper; + coeff 8596; + } + rotationDamper { - translationDamper - { - sixDoFRigidBodyMotionRestraint linearDamper; - coeff 8596; - } - rotationDamper - { - sixDoFRigidBodyMotionRestraint sphericalAngularDamper; - coeff 11586; - } + sixDoFRigidBodyMotionRestraint sphericalAngularDamper; + coeff 11586; } } diff --git a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/transportProperties b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/transportProperties index bb0c2a7ee6d0a06780ef9c8432435c493c4e17d5..92310d408aa0fefea31942949e2810aed9f9b6ed 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.09e-06; - rho [1 -3 0 0 0 0 0] 998.8; + nu 1.09e-06; + rho 998.8; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/fvSolution b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/fvSolution index 1f2387de374b6ccdfcec58d37e3bbb8a0b9394ea..2a9d615e1d5a51dc44ae3c27be4b881bf5e791b7 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/fvSolution @@ -41,7 +41,7 @@ solvers smoother DIC; - tolerance 0.1; + tolerance 1e-3; relTol 0; }; diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/dynamicMeshDict deleted file mode 100644 index 4ae5f256aae1242b36de019aab18529d75635176..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/dynamicMeshDict +++ /dev/null @@ -1,61 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: plus | -| \\ / A nd | Web: www.OpenFOAM.com | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "constant"; - object dynamicMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dynamicFvMesh dynamicRefineFvMesh; - -dynamicRefineFvMeshCoeffs -{ - // How often to refine - refineInterval 1; - - // Field to be refinement on - field alpha.water; - - // Refine field inbetween lower..upper - lowerRefineLevel 0.001; - upperRefineLevel 0.999; - - // If value < unrefineLevel unrefine - unrefineLevel 10; - - // Have slower than 2:1 refinement - nBufferLayers 1; - - // Refine cells only up to maxRefinement levels - maxRefinement 2; - - // Stop refinement if maxCells reached - maxCells 200000; - - // Flux field and corresponding velocity field. Fluxes on changed - // faces get recalculated by interpolating the velocity. Use 'none' - // on surfaceScalarFields that do not need to be reinterpolated. - correctFluxes - ( - (phi none) - (nHatf none) - (rhoPhi none) - (alphaPhi none) - (ghf none) - ); - - // Write the refinement level as a volScalarField - dumpLevel true; -} - - -// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict index 5d63bea8cae02183f09cac6c1c1c539ad3803b2c..f911fb0ad632ab041aed7b0e8d9e3cc5cb503892 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict @@ -18,7 +18,7 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("librigidBodyMeshMotion.so"); -solver rigidBodyMotion; +motionSolver rigidBodyMotion; rigidBodyMotionCoeffs { diff --git a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict.sixDoF b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict.sixDoF index 04cfe106bfcd5489148952df7423df082d2c3853..75aa1fe9fee4e85d73aa4fbcc45e51daaaf1e7ce 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict.sixDoF +++ b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/dynamicMeshDict.sixDoF @@ -18,7 +18,7 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libsixDoFRigidBodyMotion.so"); -solver sixDoFRigidBodyMotion; +motionSolver sixDoFRigidBodyMotion; sixDoFRigidBodyMotionCoeffs { diff --git a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/transportProperties b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/transportProperties index 77e658d5c3609621f9aff003ab360e06d6f9628b..c1813344c16a54b38d59cf8806fe9cfa89246ea1 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict index 24b3e86887d072ce7329a5ac60a9a6d7fd4ccec6..47e242ff41a4d08ef8a26a3413dccfc2d2ec2e37 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict @@ -19,20 +19,15 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone rotating; - - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 0 1); - omega -5; // 5 rad/s - } -} +cellZone rotating; + +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 0 1); +omega -5; // 5 rad/s // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/transportProperties b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/transportProperties index f99891b00715b19489f9176c491ea358275b23a3..ff41100ff16cc16dc2c5e8a2b416db354fa6bf40 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 300; + nu 1e-06; + rho 300; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-6; - rho [1 -3 0 0 0 0 0] 1027; + nu 1e-6; + rho 1027; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/motorBike/constant/transportProperties b/tutorials/multiphase/interDyMFoam/RAS/motorBike/constant/transportProperties index f2fa0fcec9c28301b67813cd8bdb874b904b6e3d..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/motorBike/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/RAS/motorBike/constant/transportProperties @@ -20,48 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu nu [ 0 2 -1 0 0 0 0 ] 1e-06; - rho rho [ 1 -3 0 0 0 0 0 ] 1000; - CrossPowerLawCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - m m [ 0 0 1 0 0 0 0 ] 1; - n n [ 0 0 0 0 0 0 0 ] 0; - } - - BirdCarreauCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - k k [ 0 0 1 0 0 0 0 ] 99.6; - n n [ 0 0 0 0 0 0 0 ] 0.1003; - } + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu nu [ 0 2 -1 0 0 0 0 ] 1.48e-05; - rho rho [ 1 -3 0 0 0 0 0 ] 1; - CrossPowerLawCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - m m [ 0 0 1 0 0 0 0 ] 1; - n n [ 0 0 0 0 0 0 0 ] 0; - } - - BirdCarreauCoeffs - { - nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515; - nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; - k k [ 0 0 1 0 0 0 0 ] 99.6; - n n [ 0 0 0 0 0 0 0 ] 0.1003; - } + nu 1.48e-05; + rho 1; } -sigma sigma [ 1 0 -2 0 0 0 0 ] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/U b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/U similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/U rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/U diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/alpha.water b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/alpha.water similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/alpha.water rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/alpha.water diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/alpha.water.orig b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/alpha.water.orig similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/alpha.water.orig rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/alpha.water.orig diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/k b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/k similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/k rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/k diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/nut b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/nut similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/nut rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/nut diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/omega b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/omega similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/omega rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/omega diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/p_rgh b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/p_rgh similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/0.orig/p_rgh rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/0.orig/p_rgh diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/Allclean b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/Allclean similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/Allclean rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/Allclean diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/Allrun b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/Allrun similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/Allrun rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/Allrun diff --git a/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..58b40f465f7233ae717131551cc038c968cbce1c --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/dynamicMeshDict @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object dynamicMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dynamicFvMesh dynamicRefineFvMesh; + +// How often to refine +refineInterval 1; + +// Field to be refinement on +field alpha.water; + +// Refine field inbetween lower..upper +lowerRefineLevel 0.001; +upperRefineLevel 0.999; + +// If value < unrefineLevel unrefine +unrefineLevel 10; + +// Have slower than 2:1 refinement +nBufferLayers 1; + +// Refine cells only up to maxRefinement levels +maxRefinement 2; + +// Stop refinement if maxCells reached +maxCells 200000; + +// Flux field and corresponding velocity field. Fluxes on changed +// faces get recalculated by interpolating the velocity. Use 'none' +// on surfaceScalarFields that do not need to be reinterpolated. +correctFluxes +( + (phi none) + (nHatf none) + (rhoPhi none) + (alphaPhi none) + (ghf none) +); + +// Write the refinement level as a volScalarField +dumpLevel true; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/g b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/g similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/g rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/g diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/transportProperties similarity index 82% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/transportProperties rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/turbulenceProperties similarity index 92% rename from tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/dynamicMeshDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/turbulenceProperties index 0d234e3050053c7590aa9b6089f7c448c2932b97..5eec04267266e7fd15e7701a875d683d5e658cd9 100644 --- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/constant/turbulenceProperties @@ -11,11 +11,11 @@ FoamFile format ascii; class dictionary; location "constant"; - object dynamicMeshDict; + object turbulenceProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh staticFvMesh; +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/createObstacle.setSet b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/createObstacle.setSet similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/createObstacle.setSet rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/createObstacle.setSet diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/blockMeshDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/blockMeshDict similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/blockMeshDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/blockMeshDict diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/controlDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/controlDict similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/controlDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/controlDict diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/decomposeParDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/fvSchemes b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/fvSchemes similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/fvSchemes rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/fvSchemes diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/fvSolution similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/fvSolution rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/fvSolution diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/setFieldsDict similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/setFieldsDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/setFieldsDict diff --git a/tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/topoSetDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/topoSetDict similarity index 100% rename from tutorials/multiphase/interDyMFoam/RAS/damBreakWithObstacle/system/topoSetDict rename to tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/topoSetDict diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/U b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/U new file mode 100644 index 0000000000000000000000000000000000000000..4387ac0d184018e30ebc69e4b57d7ac9370f46df --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/U @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + wall + { + type movingWallVelocity; + value uniform (0 0 0); + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/alpha.water.orig b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/alpha.water.orig new file mode 100644 index 0000000000000000000000000000000000000000..e40a889cb42efca6b9ba69ba9cd905987824f91b --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/alpha.water.orig @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/p_rgh b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c499b0b2c2411fc1d6079daf5cdc8ec8ccc37b89 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/0/p_rgh @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type fixedFluxPressure; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allclean b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..dc74ee4df5c566f4315aaf259253ed0bf0fb8e56 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allclean @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +foamCleanTutorials cases +rm -rf 0/alpha.water 0/alpha.water.gz probes wallPressure pRefProbe + +#------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allrun b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..44bb710e5102169ea0c3c77357e23b49bd5dbfa8 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/Allrun @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication snappyHexMesh -overwrite +cp 0/alpha.water.orig 0/alpha.water +runApplication setFields +runApplication `getApplication` + +#------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..5b78f66488f2838b82882324b9dfb4ab07c4bb94 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/dynamicMeshDict @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object dynamicMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dynamicFvMesh dynamicMotionSolverFvMesh; + +motionSolver solidBody; + +solidBodyMotionFunction multiMotion; + +oscillation +{ + solidBodyMotionFunction oscillatingLinearMotion; + oscillatingLinearMotionCoeffs + { + amplitude (0.1 0 0); + omega 18.8945578; + } +} + +rotation +{ + solidBodyMotionFunction rotatingMotion; + rotatingMotionCoeffs + { + origin (0 0.02 0); + axis (0 0 1); + omega 18.8945578; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/g b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..c387916ece4d7396f88bfa39c6ebcf30614cfb3c --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 0 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..bbaba73c11c2e585e35eb27afef559fe03eb0d1b --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/transportProperties @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (water air); + +water +{ + transportModel Newtonian; + nu 1e-06; + rho 998.2; +} + +air +{ + transportModel Newtonian; + nu 1.48e-05; + rho 1; +} + +sigma 0.07; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/triSurface/sloshingCylinder.obj b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/triSurface/sloshingCylinder.obj new file mode 100644 index 0000000000000000000000000000000000000000..dfd72e6f23c367ff133667b791150a38d4a437ca --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/triSurface/sloshingCylinder.obj @@ -0,0 +1,48510 @@ +# Wavefront OBJ file written 2017-03-10T19:07:52 +o sloshingCylinderOpen + +# points : 16416 +# faces : 32080 +# zones : 1 +# 0 zone0 (nFaces: 32080) + +# <points count="16416"> +v 0.0565685 0.0565685 0.07 +v 0.0565685 0.0565685 -0.07 +v -0.0565685 0.0565685 0.07 +v -0.0565685 0.0565685 -0.07 +v -0.0565685 -0.0565685 0.07 +v -0.0565685 -0.0565685 -0.07 +v 0.0565685 -0.0565685 0.07 +v 0.0565685 -0.0565685 -0.07 +v -0.0560671 -0.0570655 -0.07 +v -0.0560671 0.0570655 -0.07 +v 0.0560671 -0.0570655 -0.07 +v 0.0560671 0.0570655 -0.07 +v 0.0560671 -0.0570655 0.07 +v 0.0560671 0.0570655 0.07 +v -0.0560671 -0.0570655 0.07 +v -0.0560671 0.0570655 0.07 +v -0.016817 -0.0782124 -0.07 +v -0.016817 0.0782124 -0.07 +v 0.016817 -0.0782124 -0.07 +v 0.016817 0.0782124 -0.07 +v 0.016817 -0.0782124 0.07 +v 0.016817 0.0782124 0.07 +v -0.016817 -0.0782124 0.07 +v -0.016817 0.0782124 0.07 +v 0.0675462 0.0428661 0.07 +v 0.0675462 0.0428661 -0.07 +v 0.0428661 0.0675462 0.07 +v 0.0428661 0.0675462 -0.07 +v -0.0428661 0.0675462 0.07 +v -0.0428661 0.0675462 -0.07 +v -0.0675462 0.0428661 0.07 +v -0.0675462 0.0428661 -0.07 +v -0.0675462 -0.0428661 0.07 +v -0.0675462 -0.0428661 -0.07 +v -0.0428661 -0.0675462 0.07 +v -0.0428661 -0.0675462 -0.07 +v 0.0428661 -0.0675462 0.07 +v 0.0428661 -0.0675462 -0.07 +v 0.0675462 -0.0428661 0.07 +v 0.0675462 -0.0428661 -0.07 +v -0.0617848 -0.0508196 -0.07 +v -0.0617848 0.0508196 -0.07 +v 0.0617848 -0.0508196 -0.07 +v 0.0617848 0.0508196 -0.07 +v 0.0617848 -0.0508196 0.07 +v 0.0617848 0.0508196 0.07 +v -0.0617848 -0.0508196 0.07 +v -0.0617848 0.0508196 0.07 +v -0.0799875 -0.00141188 -0.07 +v -0.0799875 0.00141188 -0.07 +v 0.0799875 -0.00141188 -0.07 +v 0.0799875 0.00141188 -0.07 +v 0.0799875 -0.00141188 0.07 +v 0.0799875 0.00141188 0.07 +v -0.0799875 -0.00141188 0.07 +v -0.0799875 0.00141188 0.07 +v -0.0710872 -0.0366961 -0.07 +v -0.0710872 0.0366961 -0.07 +v 0.0710872 -0.0366961 -0.07 +v 0.0710872 0.0366961 -0.07 +v 0.0710872 -0.0366961 0.07 +v 0.0710872 0.0366961 0.07 +v -0.0710872 -0.0366961 0.07 +v -0.0710872 0.0366961 0.07 +v 0.00502324 0.0798421 0.07 +v 0.00502324 0.0798421 -0.07 +v -0.00502324 0.0798421 0.07 +v -0.00502324 0.0798421 -0.07 +v -0.00502324 -0.0798421 0.07 +v -0.00502324 -0.0798421 -0.07 +v 0.00502324 -0.0798421 0.07 +v 0.00502324 -0.0798421 -0.07 +v 0.0798421 0.00502324 0.07 +v 0.0798421 0.00502324 -0.07 +v -0.0798421 0.00502324 0.07 +v -0.0798421 0.00502324 -0.07 +v -0.0798421 -0.00502324 0.07 +v -0.0798421 -0.00502324 -0.07 +v 0.0798421 -0.00502324 0.07 +v 0.0798421 -0.00502324 -0.07 +v 0.0712805 0.0363192 0.07 +v 0.0712805 0.0363192 -0.07 +v 0.0363192 0.0712805 0.07 +v 0.0363192 0.0712805 -0.07 +v -0.0363192 0.0712805 0.07 +v -0.0363192 0.0712805 -0.07 +v -0.0712805 0.0363192 0.07 +v -0.0712805 0.0363192 -0.07 +v -0.0712805 -0.0363192 0.07 +v -0.0712805 -0.0363192 -0.07 +v -0.0363192 -0.0712805 0.07 +v -0.0363192 -0.0712805 -0.07 +v 0.0363192 -0.0712805 0.07 +v 0.0363192 -0.0712805 -0.07 +v 0.0712805 -0.0363192 0.07 +v 0.0712805 -0.0363192 -0.07 +v -0.0772128 -0.0209327 -0.07 +v -0.0772128 0.0209327 -0.07 +v 0.0772128 -0.0209327 -0.07 +v 0.0772128 0.0209327 -0.07 +v 0.0772128 -0.0209327 0.07 +v 0.0772128 0.0209327 0.07 +v -0.0772128 -0.0209327 0.07 +v -0.0772128 0.0209327 0.07 +v -0.0793902 -0.00985854 -0.07 +v -0.0793902 0.00985854 -0.07 +v 0.0793902 -0.00985854 -0.07 +v 0.0793902 0.00985854 -0.07 +v 0.0793902 -0.00985854 0.07 +v 0.0793902 0.00985854 0.07 +v -0.0793902 -0.00985854 0.07 +v -0.0793902 0.00985854 0.07 +v -0.0276562 -0.0750675 -0.07 +v -0.0276562 0.0750675 -0.07 +v 0.0276562 -0.0750675 -0.07 +v 0.0276562 0.0750675 -0.07 +v 0.0276562 -0.0750675 0.07 +v 0.0276562 0.0750675 0.07 +v -0.0276562 -0.0750675 0.07 +v -0.0276562 0.0750675 0.07 +v 0.0780733 0.0174515 0.07 +v 0.0780733 0.0174515 -0.07 +v -0.0780733 0.0174515 0.07 +v -0.0780733 0.0174515 -0.07 +v -0.0780733 -0.0174515 0.07 +v -0.0780733 -0.0174515 -0.07 +v 0.0780733 -0.0174515 0.07 +v 0.0780733 -0.0174515 -0.07 +v 0.0174515 0.0780733 0.07 +v 0.0174515 0.0780733 -0.07 +v -0.0174515 0.0780733 0.07 +v -0.0174515 0.0780733 -0.07 +v -0.0174515 -0.0780733 0.07 +v -0.0174515 -0.0780733 -0.07 +v 0.0174515 -0.0780733 0.07 +v 0.0174515 -0.0780733 -0.07 +v -0.0140463 -0.0787572 -0.07 +v -0.0140463 0.0787572 -0.07 +v 0.0140463 -0.0787572 -0.07 +v 0.0140463 0.0787572 -0.07 +v 0.0140463 -0.0787572 0.07 +v 0.0140463 0.0787572 0.07 +v -0.0140463 -0.0787572 0.07 +v -0.0140463 0.0787572 0.07 +v -0.0635398 -0.0486075 -0.07 +v -0.0635398 0.0486075 -0.07 +v 0.0635398 -0.0486075 -0.07 +v 0.0635398 0.0486075 -0.07 +v 0.0635398 -0.0486075 0.07 +v 0.0635398 0.0486075 0.07 +v -0.0635398 -0.0486075 0.07 +v -0.0635398 0.0486075 0.07 +v -0.0580461 -0.0550513 -0.07 +v -0.0580461 0.0550513 -0.07 +v 0.0580461 -0.0550513 -0.07 +v 0.0580461 0.0550513 -0.07 +v 0.0580461 -0.0550513 0.07 +v 0.0580461 0.0550513 0.07 +v -0.0580461 -0.0550513 0.07 +v -0.0580461 0.0550513 0.07 +v -0.0519021 -0.0608783 -0.07 +v -0.0519021 0.0608783 -0.07 +v 0.0519021 -0.0608783 -0.07 +v 0.0519021 0.0608783 -0.07 +v 0.0519021 -0.0608783 0.07 +v 0.0519021 0.0608783 0.07 +v -0.0519021 -0.0608783 0.07 +v -0.0519021 0.0608783 0.07 +v -0.0195668 -0.0775702 -0.07 +v -0.0195668 0.0775702 -0.07 +v 0.0195668 -0.0775702 -0.07 +v 0.0195668 0.0775702 -0.07 +v 0.0195668 -0.0775702 0.07 +v 0.0195668 0.0775702 0.07 +v -0.0195668 -0.0775702 0.07 +v -0.0195668 0.0775702 0.07 +v 0.0701045 0.0385403 0.07 +v 0.0701045 0.0385403 -0.07 +v -0.0701045 0.0385403 0.07 +v -0.0701045 0.0385403 -0.07 +v -0.0701045 -0.0385403 0.07 +v -0.0701045 -0.0385403 -0.07 +v 0.0701045 -0.0385403 0.07 +v 0.0701045 -0.0385403 -0.07 +v 0.0385403 0.0701045 0.07 +v 0.0385403 0.0701045 -0.07 +v -0.0385403 0.0701045 0.07 +v -0.0385403 0.0701045 -0.07 +v -0.0385403 -0.0701045 0.07 +v -0.0385403 -0.0701045 -0.07 +v 0.0385403 -0.0701045 0.07 +v 0.0385403 -0.0701045 -0.07 +v 0.0799605 0.00251286 0.07 +v 0.0799605 0.00251286 -0.07 +v 0.00251286 0.0799605 0.07 +v 0.00251286 0.0799605 -0.07 +v -0.00251286 0.0799605 0.07 +v -0.00251286 0.0799605 -0.07 +v -0.0799605 0.00251286 0.07 +v -0.0799605 0.00251286 -0.07 +v -0.0799605 -0.00251286 0.07 +v -0.0799605 -0.00251286 -0.07 +v -0.00251286 -0.0799605 0.07 +v -0.00251286 -0.0799605 -0.07 +v 0.00251286 -0.0799605 0.07 +v 0.00251286 -0.0799605 -0.07 +v 0.0799605 -0.00251286 0.07 +v 0.0799605 -0.00251286 -0.07 +v 0.0600089 0.0529049 0.07 +v 0.0600089 0.0529049 -0.07 +v 0.0529049 0.0600089 0.07 +v 0.0529049 0.0600089 -0.07 +v -0.0529049 0.0600089 0.07 +v -0.0529049 0.0600089 -0.07 +v -0.0600089 0.0529049 0.07 +v -0.0600089 0.0529049 -0.07 +v -0.0600089 -0.0529049 0.07 +v -0.0600089 -0.0529049 -0.07 +v -0.0529049 -0.0600089 0.07 +v -0.0529049 -0.0600089 -0.07 +v 0.0529049 -0.0600089 0.07 +v 0.0529049 -0.0600089 -0.07 +v 0.0600089 -0.0529049 0.07 +v 0.0600089 -0.0529049 -0.07 +v -0.00564312 -0.0798007 -0.07 +v -0.00564312 0.0798007 -0.07 +v 0.00564312 -0.0798007 -0.07 +v 0.00564312 0.0798007 -0.07 +v 0.00564312 -0.0798007 0.07 +v 0.00564312 0.0798007 0.07 +v -0.00564312 -0.0798007 0.07 +v -0.00564312 0.0798007 0.07 +v 0.0661664 0.0449667 0.07 +v 0.0661664 0.0449667 -0.07 +v 0.0449667 0.0661664 0.07 +v 0.0449667 0.0661664 -0.07 +v -0.0449667 0.0661664 0.07 +v -0.0449667 0.0661664 -0.07 +v -0.0661664 0.0449667 0.07 +v -0.0661664 0.0449667 -0.07 +v -0.0661664 -0.0449667 0.07 +v -0.0661664 -0.0449667 -0.07 +v -0.0449667 -0.0661664 0.07 +v -0.0449667 -0.0661664 -0.07 +v 0.0449667 -0.0661664 0.07 +v 0.0449667 -0.0661664 -0.07 +v 0.0661664 -0.0449667 0.07 +v 0.0661664 -0.0449667 -0.07 +v -0.037945 -0.0704285 -0.07 +v -0.037945 0.0704285 -0.07 +v 0.037945 -0.0704285 -0.07 +v 0.037945 0.0704285 -0.07 +v 0.037945 -0.0704285 0.07 +v 0.037945 0.0704285 0.07 +v -0.037945 -0.0704285 0.07 +v -0.037945 0.0704285 0.07 +v -0.0745677 -0.0289768 -0.07 +v -0.0745677 0.0289768 -0.07 +v 0.0745677 -0.0289768 -0.07 +v 0.0745677 0.0289768 -0.07 +v 0.0745677 -0.0289768 0.07 +v 0.0745677 0.0289768 0.07 +v -0.0745677 -0.0289768 0.07 +v -0.0745677 0.0289768 0.07 +v -0.0755439 -0.0263271 -0.07 +v -0.0755439 0.0263271 -0.07 +v 0.0755439 -0.0263271 -0.07 +v 0.0755439 0.0263271 -0.07 +v 0.0755439 -0.0263271 0.07 +v 0.0755439 0.0263271 0.07 +v -0.0755439 -0.0263271 0.07 +v -0.0755439 0.0263271 0.07 +v -0.0404069 -0.0690455 -0.07 +v -0.0404069 0.0690455 -0.07 +v 0.0404069 -0.0690455 -0.07 +v 0.0404069 0.0690455 -0.07 +v 0.0404069 -0.0690455 0.07 +v 0.0404069 0.0690455 0.07 +v -0.0404069 -0.0690455 0.07 +v -0.0404069 0.0690455 0.07 +v -0.0302883 -0.0740447 -0.07 +v -0.0302883 0.0740447 -0.07 +v 0.0302883 -0.0740447 -0.07 +v 0.0302883 0.0740447 -0.07 +v 0.0302883 -0.0740447 0.07 +v 0.0302883 0.0740447 0.07 +v -0.0302883 -0.0740447 0.07 +v -0.0302883 0.0740447 0.07 +v -0.0428184 -0.0675765 -0.07 +v -0.0428184 0.0675765 -0.07 +v 0.0428184 -0.0675765 -0.07 +v 0.0428184 0.0675765 -0.07 +v 0.0428184 -0.0675765 0.07 +v 0.0428184 0.0675765 0.07 +v -0.0428184 -0.0675765 0.07 +v -0.0428184 0.0675765 0.07 +v 0.0247214 0.0760845 0.07 +v 0.0247214 0.0760845 -0.07 +v -0.0247214 0.0760845 0.07 +v -0.0247214 0.0760845 -0.07 +v -0.0247214 -0.0760845 0.07 +v -0.0247214 -0.0760845 -0.07 +v 0.0247214 -0.0760845 0.07 +v 0.0247214 -0.0760845 -0.07 +v 0.0760845 0.0247214 0.07 +v 0.0760845 0.0247214 -0.07 +v -0.0760845 0.0247214 0.07 +v -0.0760845 0.0247214 -0.07 +v -0.0760845 -0.0247214 0.07 +v -0.0760845 -0.0247214 -0.07 +v 0.0760845 -0.0247214 0.07 +v 0.0760845 -0.0247214 -0.07 +v -0.0683216 -0.0416192 -0.07 +v -0.0683216 0.0416192 -0.07 +v 0.0683216 -0.0416192 -0.07 +v 0.0683216 0.0416192 -0.07 +v 0.0683216 -0.0416192 0.07 +v 0.0683216 0.0416192 0.07 +v -0.0683216 -0.0416192 0.07 +v -0.0683216 0.0416192 0.07 +v 0.0743821 0.02945 0.07 +v 0.0743821 0.02945 -0.07 +v 0.02945 0.0743821 0.07 +v 0.02945 0.0743821 -0.07 +v -0.02945 0.0743821 0.07 +v -0.02945 0.0743821 -0.07 +v -0.0743821 0.02945 0.07 +v -0.0743821 0.02945 -0.07 +v -0.0743821 -0.02945 0.07 +v -0.0743821 -0.02945 -0.07 +v -0.02945 -0.0743821 0.07 +v -0.02945 -0.0743821 -0.07 +v 0.02945 -0.0743821 0.07 +v 0.02945 -0.0743821 -0.07 +v 0.0743821 -0.02945 0.07 +v 0.0743821 -0.02945 -0.07 +v -0.072338 -0.0341645 -0.07 +v -0.072338 0.0341645 -0.07 +v 0.072338 -0.0341645 -0.07 +v 0.072338 0.0341645 -0.07 +v 0.072338 -0.0341645 0.07 +v 0.072338 0.0341645 0.07 +v -0.072338 -0.0341645 0.07 +v -0.072338 0.0341645 0.07 +v -0.0497213 -0.0626721 -0.07 +v -0.0497213 0.0626721 -0.07 +v 0.0497213 -0.0626721 -0.07 +v 0.0497213 0.0626721 -0.07 +v 0.0497213 -0.0626721 0.07 +v 0.0497213 0.0626721 0.07 +v -0.0497213 -0.0626721 0.07 +v -0.0497213 0.0626721 0.07 +v -0.0796887 -0.0070506 -0.07 +v -0.0796887 0.0070506 -0.07 +v 0.0796887 -0.0070506 -0.07 +v 0.0796887 0.0070506 -0.07 +v 0.0796887 -0.0070506 0.07 +v 0.0796887 0.0070506 0.07 +v -0.0796887 -0.0070506 0.07 +v -0.0796887 0.0070506 0.07 +v -0.0328825 -0.0729297 -0.07 +v -0.0328825 0.0729297 -0.07 +v 0.0328825 -0.0729297 -0.07 +v 0.0328825 0.0729297 -0.07 +v 0.0328825 -0.0729297 0.07 +v 0.0328825 0.0729297 0.07 +v -0.0328825 -0.0729297 0.07 +v -0.0328825 0.0729297 0.07 +v -1.46958e-17 -0.08 -0.07 +v -1.2865e-17 0.08 -0.07 +v -1.46958e-17 -0.08 0.07 +v -1.2865e-17 0.08 0.07 +v 0.08 1.55431e-17 0.07 +v 0.08 -1.55431e-17 -0.07 +v -0.08 -1.01869e-17 0.07 +v -0.08 -4.12731e-17 -0.07 +v -0.0599528 -0.0529685 -0.07 +v -0.0599528 0.0529685 -0.07 +v 0.0599528 -0.0529685 -0.07 +v 0.0599528 0.0529685 -0.07 +v 0.0599528 -0.0529685 0.07 +v 0.0599528 0.0529685 0.07 +v -0.0599528 -0.0529685 0.07 +v -0.0599528 0.0529685 0.07 +v -0.0652157 -0.0463348 -0.07 +v -0.0652157 0.0463348 -0.07 +v 0.0652157 -0.0463348 -0.07 +v 0.0652157 0.0463348 -0.07 +v 0.0652157 -0.0463348 0.07 +v 0.0652157 0.0463348 0.07 +v -0.0652157 -0.0463348 0.07 +v -0.0652157 0.0463348 0.07 +v 0.0768235 0.0223193 0.07 +v 0.0768235 0.0223193 -0.07 +v 0.0223193 0.0768235 0.07 +v 0.0223193 0.0768235 -0.07 +v -0.0223193 0.0768235 0.07 +v -0.0223193 0.0768235 -0.07 +v -0.0768235 0.0223193 0.07 +v -0.0768235 0.0223193 -0.07 +v -0.0768235 -0.0223193 0.07 +v -0.0768235 -0.0223193 -0.07 +v -0.0223193 -0.0768235 0.07 +v -0.0223193 -0.0768235 -0.07 +v 0.0223193 -0.0768235 0.07 +v 0.0223193 -0.0768235 -0.07 +v 0.0768235 -0.0223193 0.07 +v 0.0768235 -0.0223193 -0.07 +v -0.0451766 -0.0660233 -0.07 +v -0.0451766 0.0660233 -0.07 +v 0.0451766 -0.0660233 -0.07 +v 0.0451766 0.0660233 -0.07 +v 0.0451766 -0.0660233 0.07 +v 0.0451766 0.0660233 0.07 +v -0.0451766 -0.0660233 0.07 +v -0.0451766 0.0660233 0.07 +v 0.0340623 0.0723862 0.07 +v 0.0340623 0.0723862 -0.07 +v -0.0340623 0.0723862 0.07 +v -0.0340623 0.0723862 -0.07 +v -0.0340623 -0.0723862 0.07 +v -0.0340623 -0.0723862 -0.07 +v 0.0340623 -0.0723862 0.07 +v 0.0340623 -0.0723862 -0.07 +v 0.0723862 0.0340623 0.07 +v 0.0723862 0.0340623 -0.07 +v -0.0723862 0.0340623 0.07 +v -0.0723862 0.0340623 -0.07 +v -0.0723862 -0.0340623 0.07 +v -0.0723862 -0.0340623 -0.07 +v 0.0723862 -0.0340623 0.07 +v 0.0723862 -0.0340623 -0.07 +v -0.0798879 -0.00423388 -0.07 +v -0.0798879 0.00423388 -0.07 +v 0.0798879 -0.00423388 -0.07 +v 0.0798879 0.00423388 -0.07 +v 0.0798879 -0.00423388 0.07 +v 0.0798879 0.00423388 0.07 +v -0.0798879 -0.00423388 0.07 +v -0.0798879 0.00423388 0.07 +v 0.0734204 0.0317718 0.07 +v 0.0734204 0.0317718 -0.07 +v 0.0317718 0.0734204 0.07 +v 0.0317718 0.0734204 -0.07 +v -0.0317718 0.0734204 0.07 +v -0.0317718 0.0734204 -0.07 +v -0.0734204 0.0317718 0.07 +v -0.0734204 0.0317718 -0.07 +v -0.0734204 -0.0317718 0.07 +v -0.0734204 -0.0317718 -0.07 +v -0.0317718 -0.0734204 0.07 +v -0.0317718 -0.0734204 -0.07 +v 0.0317718 -0.0734204 0.07 +v 0.0317718 -0.0734204 -0.07 +v 0.0734204 -0.0317718 0.07 +v 0.0734204 -0.0317718 -0.07 +v -0.0779035 -0.0181947 -0.07 +v -0.0779035 0.0181947 -0.07 +v 0.0779035 -0.0181947 -0.07 +v 0.0779035 0.0181947 -0.07 +v 0.0779035 -0.0181947 0.07 +v 0.0779035 0.0181947 0.07 +v -0.0779035 -0.0181947 0.07 +v -0.0779035 0.0181947 0.07 +v -0.0112581 -0.0792039 -0.07 +v -0.0112581 0.0792039 -0.07 +v 0.0112581 -0.0792039 -0.07 +v 0.0112581 0.0792039 -0.07 +v 0.0112581 -0.0792039 0.07 +v 0.0112581 0.0792039 0.07 +v -0.0112581 -0.0792039 0.07 +v -0.0112581 0.0792039 0.07 +v 0.0149905 0.078583 0.07 +v 0.0149905 0.078583 -0.07 +v -0.0149905 0.078583 0.07 +v -0.0149905 0.078583 -0.07 +v -0.0149905 -0.078583 0.07 +v -0.0149905 -0.078583 -0.07 +v 0.0149905 -0.078583 0.07 +v 0.0149905 -0.078583 -0.07 +v 0.078583 0.0149905 0.07 +v 0.078583 0.0149905 -0.07 +v -0.078583 0.0149905 0.07 +v -0.078583 0.0149905 -0.07 +v -0.078583 -0.0149905 0.07 +v -0.078583 -0.0149905 -0.07 +v 0.078583 -0.0149905 0.07 +v 0.078583 -0.0149905 -0.07 +v 0.0616411 0.0509939 0.07 +v 0.0616411 0.0509939 -0.07 +v 0.0509939 0.0616411 0.07 +v 0.0509939 0.0616411 -0.07 +v -0.0509939 0.0616411 0.07 +v -0.0509939 0.0616411 -0.07 +v -0.0616411 0.0509939 0.07 +v -0.0616411 0.0509939 -0.07 +v -0.0616411 -0.0509939 0.07 +v -0.0616411 -0.0509939 -0.07 +v -0.0509939 -0.0616411 0.07 +v -0.0509939 -0.0616411 -0.07 +v 0.0509939 -0.0616411 0.07 +v 0.0509939 -0.0616411 -0.07 +v 0.0616411 -0.0509939 0.07 +v 0.0616411 -0.0509939 -0.07 +v 0.0647214 0.0470228 0.07 +v 0.0647214 0.0470228 -0.07 +v 0.0470228 0.0647214 0.07 +v 0.0470228 0.0647214 -0.07 +v -0.0470228 0.0647214 0.07 +v -0.0470228 0.0647214 -0.07 +v -0.0647214 0.0470228 0.07 +v -0.0647214 0.0470228 -0.07 +v -0.0647214 -0.0470228 0.07 +v -0.0647214 -0.0470228 -0.07 +v -0.0470228 -0.0647214 0.07 +v -0.0470228 -0.0647214 -0.07 +v 0.0470228 -0.0647214 0.07 +v 0.0470228 -0.0647214 -0.07 +v 0.0647214 -0.0470228 0.07 +v 0.0647214 -0.0470228 -0.07 +v 0.0632124 0.0490326 0.07 +v 0.0632124 0.0490326 -0.07 +v 0.0490326 0.0632124 0.07 +v 0.0490326 0.0632124 -0.07 +v -0.0490326 0.0632124 0.07 +v -0.0490326 0.0632124 -0.07 +v -0.0632124 0.0490326 0.07 +v -0.0632124 0.0490326 -0.07 +v -0.0632124 -0.0490326 0.07 +v -0.0632124 -0.0490326 -0.07 +v -0.0490326 -0.0632124 0.07 +v -0.0490326 -0.0632124 -0.07 +v 0.0490326 -0.0632124 0.07 +v 0.0490326 -0.0632124 -0.07 +v 0.0632124 -0.0490326 0.07 +v 0.0632124 -0.0490326 -0.07 +v -0.0668103 -0.0440044 -0.07 +v -0.0668103 0.0440044 -0.07 +v 0.0668103 -0.0440044 -0.07 +v 0.0668103 0.0440044 -0.07 +v 0.0668103 -0.0440044 0.07 +v 0.0668103 0.0440044 0.07 +v -0.0668103 -0.0440044 0.07 +v -0.0668103 0.0440044 0.07 +v -0.0540183 -0.0590087 -0.07 +v -0.0540183 0.0590087 -0.07 +v 0.0540183 -0.0590087 -0.07 +v 0.0540183 0.0590087 -0.07 +v 0.0540183 -0.0590087 0.07 +v 0.0540183 0.0590087 0.07 +v -0.0540183 -0.0590087 0.07 +v -0.0540183 0.0590087 0.07 +v -0.0249898 -0.0759968 -0.07 +v -0.0249898 0.0759968 -0.07 +v 0.0249898 -0.0759968 -0.07 +v 0.0249898 0.0759968 -0.07 +v 0.0249898 -0.0759968 0.07 +v 0.0249898 0.0759968 0.07 +v -0.0249898 -0.0759968 0.07 +v -0.0249898 0.0759968 0.07 +v 0.027099 0.0752705 0.07 +v 0.027099 0.0752705 -0.07 +v -0.027099 0.0752705 0.07 +v -0.027099 0.0752705 -0.07 +v -0.027099 -0.0752705 0.07 +v -0.027099 -0.0752705 -0.07 +v 0.027099 -0.0752705 0.07 +v 0.027099 -0.0752705 -0.07 +v 0.0752705 0.027099 0.07 +v 0.0752705 0.027099 -0.07 +v -0.0752705 0.027099 0.07 +v -0.0752705 0.027099 -0.07 +v -0.0752705 -0.027099 0.07 +v -0.0752705 -0.027099 -0.07 +v 0.0752705 -0.027099 0.07 +v 0.0752705 -0.027099 -0.07 +v 0.0688594 0.0407233 0.07 +v 0.0688594 0.0407233 -0.07 +v 0.0407233 0.0688594 0.07 +v 0.0407233 0.0688594 -0.07 +v -0.0407233 0.0688594 0.07 +v -0.0407233 0.0688594 -0.07 +v -0.0688594 0.0407233 0.07 +v -0.0688594 0.0407233 -0.07 +v -0.0688594 -0.0407233 0.07 +v -0.0688594 -0.0407233 -0.07 +v -0.0407233 -0.0688594 0.07 +v -0.0407233 -0.0688594 -0.07 +v 0.0407233 -0.0688594 0.07 +v 0.0407233 -0.0688594 -0.07 +v 0.0688594 -0.0407233 0.07 +v 0.0688594 -0.0407233 -0.07 +v 0.0583175 0.0547638 0.07 +v 0.0583175 0.0547638 -0.07 +v -0.0583175 0.0547638 0.07 +v -0.0583175 0.0547638 -0.07 +v -0.0583175 -0.0547638 0.07 +v -0.0583175 -0.0547638 -0.07 +v 0.0583175 -0.0547638 0.07 +v 0.0583175 -0.0547638 -0.07 +v 0.0547638 0.0583175 0.07 +v 0.0547638 0.0583175 -0.07 +v -0.0547638 0.0583175 0.07 +v -0.0547638 0.0583175 -0.07 +v -0.0547638 -0.0583175 0.07 +v -0.0547638 -0.0583175 -0.07 +v 0.0547638 -0.0583175 0.07 +v 0.0547638 -0.0583175 -0.07 +v 0.0793692 0.0100267 0.07 +v 0.0793692 0.0100267 -0.07 +v 0.0100267 0.0793692 0.07 +v 0.0100267 0.0793692 -0.07 +v -0.0100267 0.0793692 0.07 +v -0.0100267 0.0793692 -0.07 +v -0.0793692 0.0100267 0.07 +v -0.0793692 0.0100267 -0.07 +v -0.0793692 -0.0100267 0.07 +v -0.0793692 -0.0100267 -0.07 +v -0.0100267 -0.0793692 0.07 +v -0.0100267 -0.0793692 -0.07 +v 0.0100267 -0.0793692 0.07 +v 0.0100267 -0.0793692 -0.07 +v 0.0793692 -0.0100267 0.07 +v 0.0793692 -0.0100267 -0.07 +v -0.076426 -0.0236447 -0.07 +v -0.076426 0.0236447 -0.07 +v 0.076426 -0.0236447 -0.07 +v 0.076426 0.0236447 -0.07 +v 0.076426 -0.0236447 0.07 +v 0.076426 0.0236447 0.07 +v -0.076426 -0.0236447 0.07 +v -0.076426 0.0236447 0.07 +v -0.00282332 -0.0799502 -0.07 +v -0.00282332 0.0799502 -0.07 +v 0.00282332 -0.0799502 -0.07 +v 0.00282332 0.0799502 -0.07 +v 0.00282332 -0.0799502 0.07 +v 0.00282332 0.0799502 0.07 +v -0.00282332 -0.0799502 0.07 +v -0.00282332 0.0799502 0.07 +v -0.0734987 -0.0315903 -0.07 +v -0.0734987 0.0315903 -0.07 +v 0.0734987 -0.0315903 -0.07 +v 0.0734987 0.0315903 -0.07 +v 0.0734987 -0.0315903 0.07 +v 0.0734987 0.0315903 0.07 +v -0.0734987 -0.0315903 0.07 +v -0.0734987 0.0315903 0.07 +v -0.0784971 -0.0154341 -0.07 +v -0.0784971 0.0154341 -0.07 +v 0.0784971 -0.0154341 -0.07 +v 0.0784971 0.0154341 -0.07 +v 0.0784971 -0.0154341 0.07 +v 0.0784971 0.0154341 0.07 +v -0.0784971 -0.0154341 0.07 +v -0.0784971 0.0154341 0.07 +v -0.0222922 -0.0768314 -0.07 +v -0.0222922 0.0768314 -0.07 +v 0.0222922 -0.0768314 -0.07 +v 0.0222922 0.0768314 -0.07 +v 0.0222922 -0.0768314 0.07 +v 0.0222922 0.0768314 0.07 +v -0.0222922 -0.0768314 0.07 +v -0.0222922 0.0768314 0.07 +v -0.0474786 -0.0643878 -0.07 +v -0.0474786 0.0643878 -0.07 +v 0.0474786 -0.0643878 -0.07 +v 0.0474786 0.0643878 -0.07 +v 0.0474786 -0.0643878 0.07 +v 0.0474786 0.0643878 0.07 +v -0.0474786 -0.0643878 0.07 +v -0.0474786 0.0643878 0.07 +v 0.0790151 0.0125148 0.07 +v 0.0790151 0.0125148 -0.07 +v 0.0125148 0.0790151 0.07 +v 0.0125148 0.0790151 -0.07 +v -0.0125148 0.0790151 0.07 +v -0.0125148 0.0790151 -0.07 +v -0.0790151 0.0125148 0.07 +v -0.0790151 0.0125148 -0.07 +v -0.0790151 -0.0125148 0.07 +v -0.0790151 -0.0125148 -0.07 +v -0.0125148 -0.0790151 0.07 +v -0.0125148 -0.0790151 -0.07 +v 0.0125148 -0.0790151 0.07 +v 0.0125148 -0.0790151 -0.07 +v 0.0790151 -0.0125148 0.07 +v 0.0790151 -0.0125148 -0.07 +v -0.0354359 -0.0717238 -0.07 +v -0.0354359 0.0717238 -0.07 +v 0.0354359 -0.0717238 -0.07 +v 0.0354359 0.0717238 -0.07 +v 0.0354359 -0.0717238 0.07 +v 0.0354359 0.0717238 0.07 +v -0.0354359 -0.0717238 0.07 +v -0.0354359 0.0717238 0.07 +v -0.0697479 -0.0391821 -0.07 +v -0.0697479 0.0391821 -0.07 +v 0.0697479 -0.0391821 -0.07 +v 0.0697479 0.0391821 -0.07 +v 0.0697479 -0.0391821 0.07 +v 0.0697479 0.0391821 0.07 +v -0.0697479 -0.0391821 0.07 +v -0.0697479 0.0391821 0.07 +v -0.00845589 -0.0795519 -0.07 +v -0.00845589 0.0795519 -0.07 +v 0.00845589 -0.0795519 -0.07 +v 0.00845589 0.0795519 -0.07 +v 0.00845589 -0.0795519 0.07 +v 0.00845589 0.0795519 0.07 +v -0.00845589 -0.0795519 0.07 +v -0.00845589 0.0795519 0.07 +v 0.079645 0.00752867 0.07 +v 0.079645 0.00752867 -0.07 +v 0.00752867 0.079645 0.07 +v 0.00752867 0.079645 -0.07 +v -0.00752867 0.079645 0.07 +v -0.00752867 0.079645 -0.07 +v -0.079645 0.00752867 0.07 +v -0.079645 0.00752867 -0.07 +v -0.079645 -0.00752867 0.07 +v -0.079645 -0.00752867 -0.07 +v -0.00752867 -0.079645 0.07 +v -0.00752867 -0.079645 -0.07 +v 0.00752867 -0.079645 0.07 +v 0.00752867 -0.079645 -0.07 +v 0.079645 -0.00752867 0.07 +v 0.079645 -0.00752867 -0.07 +v -0.0789929 -0.0126542 -0.07 +v -0.0789929 0.0126542 -0.07 +v 0.0789929 -0.0126542 -0.07 +v 0.0789929 0.0126542 -0.07 +v 0.0789929 -0.0126542 0.07 +v 0.0789929 0.0126542 0.07 +v -0.0789929 -0.0126542 0.07 +v -0.0789929 0.0126542 0.07 +v 0.0774867 0.0198952 0.07 +v 0.0774867 0.0198952 -0.07 +v -0.0774867 0.0198952 0.07 +v -0.0774867 0.0198952 -0.07 +v -0.0774867 -0.0198952 0.07 +v -0.0774867 -0.0198952 -0.07 +v 0.0774867 -0.0198952 0.07 +v 0.0774867 -0.0198952 -0.07 +v 0.0198952 0.0774867 0.07 +v 0.0198952 0.0774867 -0.07 +v -0.0198952 0.0774867 0.07 +v -0.0198952 0.0774867 -0.07 +v -0.0198952 -0.0774867 0.07 +v -0.0198952 -0.0774867 -0.07 +v 0.0198952 -0.0774867 0.07 +v 0.0198952 -0.0774867 -0.07 +v -0.0028216 -0.0799502 -0.0700985 +v -0.0028216 0.0799502 -0.0700985 +v 0.0028216 -0.0799502 -0.0700985 +v 0.0028216 0.0799502 -0.0700985 +v 0.0028216 -0.0799502 0.0700985 +v 0.0028216 0.0799502 0.0700985 +v -0.0028216 -0.0799502 0.0700985 +v -0.0028216 0.0799502 0.0700985 +v -0.00563968 -0.0798007 -0.0701969 +v -0.00563968 0.0798007 -0.0701969 +v 0.00563968 -0.0798007 -0.0701969 +v 0.00563968 0.0798007 -0.0701969 +v 0.00563968 -0.0798007 0.0701969 +v 0.00563968 0.0798007 0.0701969 +v -0.00563968 -0.0798007 0.0701969 +v -0.00563968 0.0798007 0.0701969 +v -0.00281644 -0.0799502 -0.0701969 +v -0.00281644 0.0799502 -0.0701969 +v 0.00281644 -0.0799502 -0.0701969 +v 0.00281644 0.0799502 -0.0701969 +v 0.00281644 -0.0799502 0.0701969 +v 0.00281644 0.0799502 0.0701969 +v -0.00281644 -0.0799502 0.0701969 +v -0.00281644 0.0799502 0.0701969 +v -0.00280785 -0.0799502 -0.0702951 +v -0.00280785 0.0799502 -0.0702951 +v 0.00280785 -0.0799502 -0.0702951 +v 0.00280785 0.0799502 -0.0702951 +v 0.00280785 -0.0799502 0.0702951 +v 0.00280785 0.0799502 0.0702951 +v -0.00280785 -0.0799502 0.0702951 +v -0.00280785 0.0799502 0.0702951 +v -0.00845073 -0.0795519 -0.0702951 +v -0.00845073 0.0795519 -0.0702951 +v 0.00845073 -0.0795519 -0.0702951 +v 0.00845073 0.0795519 -0.0702951 +v 0.00845073 -0.0795519 0.0702951 +v 0.00845073 0.0795519 0.0702951 +v -0.00845073 -0.0795519 0.0702951 +v -0.00845073 0.0795519 0.0702951 +v -0.0112513 -0.0792039 -0.0703929 +v -0.0112513 0.0792039 -0.0703929 +v 0.0112513 -0.0792039 -0.0703929 +v 0.0112513 0.0792039 -0.0703929 +v 0.0112513 -0.0792039 0.0703929 +v 0.0112513 0.0792039 0.0703929 +v -0.0112513 -0.0792039 0.0703929 +v -0.0112513 0.0792039 0.0703929 +v -0.00279584 -0.0799502 -0.0703929 +v -0.00279584 0.0799502 -0.0703929 +v 0.00279584 -0.0799502 -0.0703929 +v 0.00279584 0.0799502 -0.0703929 +v 0.00279584 -0.0799502 0.0703929 +v 0.00279584 0.0799502 0.0703929 +v -0.00279584 -0.0799502 0.0703929 +v -0.00279584 0.0799502 0.0703929 +v -0.00562937 -0.0798007 -0.0703936 +v -0.00562937 0.0798007 -0.0703936 +v 0.00562937 -0.0798007 -0.0703936 +v 0.00562937 0.0798007 -0.0703936 +v 0.00562937 -0.0798007 0.0703936 +v 0.00562937 0.0798007 0.0703936 +v -0.00562937 -0.0798007 0.0703936 +v -0.00562937 0.0798007 0.0703936 +v -0.0140378 -0.0787572 -0.0704902 +v -0.0140378 0.0787572 -0.0704902 +v 0.0140378 -0.0787572 -0.0704902 +v 0.0140378 0.0787572 -0.0704902 +v 0.0140378 -0.0787572 0.0704902 +v 0.0140378 0.0787572 0.0704902 +v -0.0140378 -0.0787572 0.0704902 +v -0.0140378 0.0787572 0.0704902 +v -0.00278042 -0.0799502 -0.0704903 +v -0.00278042 0.0799502 -0.0704903 +v 0.00278042 -0.0799502 -0.0704903 +v 0.00278042 0.0799502 -0.0704903 +v 0.00278042 -0.0799502 0.0704903 +v 0.00278042 0.0799502 0.0704903 +v -0.00278042 -0.0799502 0.0704903 +v -0.00278042 0.0799502 0.0704903 +v -0.0168068 -0.0782124 -0.0705869 +v -0.0168068 0.0782124 -0.0705869 +v 0.0168068 -0.0782124 -0.0705869 +v 0.0168068 0.0782124 -0.0705869 +v 0.0168068 -0.0782124 0.0705869 +v 0.0168068 0.0782124 0.0705869 +v -0.0168068 -0.0782124 0.0705869 +v -0.0168068 0.0782124 0.0705869 +v -0.00276162 -0.0799502 -0.070587 +v -0.00276162 0.0799502 -0.070587 +v 0.00276162 -0.0799502 -0.070587 +v 0.00276162 0.0799502 -0.070587 +v 0.00276162 -0.0799502 0.070587 +v 0.00276162 0.0799502 0.070587 +v -0.00276162 -0.0799502 0.070587 +v -0.00276162 0.0799502 0.070587 +v -0.0056122 -0.0798007 -0.0705899 +v -0.0056122 0.0798007 -0.0705899 +v 0.0056122 -0.0798007 -0.0705899 +v 0.0056122 0.0798007 -0.0705899 +v 0.0056122 -0.0798007 0.0705899 +v 0.0056122 0.0798007 0.0705899 +v -0.0056122 -0.0798007 0.0705899 +v -0.0056122 0.0798007 0.0705899 +v -0.00843529 -0.0795519 -0.0705899 +v -0.00843529 0.0795519 -0.0705899 +v 0.00843529 -0.0795519 -0.0705899 +v 0.00843529 0.0795519 -0.0705899 +v 0.00843529 -0.0795519 0.0705899 +v 0.00843529 0.0795519 0.0705899 +v -0.00843529 -0.0795519 0.0705899 +v -0.00843529 0.0795519 0.0705899 +v -0.0195549 -0.0775702 -0.0706829 +v -0.0195549 0.0775702 -0.0706829 +v 0.0195549 -0.0775702 -0.0706829 +v 0.0195549 0.0775702 -0.0706829 +v 0.0195549 -0.0775702 0.0706829 +v 0.0195549 0.0775702 0.0706829 +v -0.0195549 -0.0775702 0.0706829 +v -0.0195549 0.0775702 0.0706829 +v -0.00273945 -0.0799502 -0.070683 +v -0.00273945 0.0799502 -0.070683 +v 0.00273945 -0.0799502 -0.070683 +v 0.00273945 0.0799502 -0.070683 +v 0.00273945 -0.0799502 0.070683 +v 0.00273945 0.0799502 0.070683 +v -0.00273945 -0.0799502 0.070683 +v -0.00273945 0.0799502 0.070683 +v -0.0222786 -0.0768314 -0.070778 +v -0.0222786 0.0768314 -0.070778 +v 0.0222786 -0.0768314 -0.070778 +v 0.0222786 0.0768314 -0.070778 +v 0.0222786 -0.0768314 0.070778 +v 0.0222786 0.0768314 0.070778 +v -0.0222786 -0.0768314 0.070778 +v -0.0222786 0.0768314 0.070778 +v -0.00271395 -0.0799502 -0.0707782 +v -0.00271395 0.0799502 -0.0707782 +v 0.00271395 -0.0799502 -0.0707782 +v 0.00271395 0.0799502 -0.0707782 +v 0.00271395 -0.0799502 0.0707782 +v 0.00271395 0.0799502 0.0707782 +v -0.00271395 -0.0799502 0.0707782 +v -0.00271395 0.0799502 0.0707782 +v -0.0112307 -0.0792039 -0.0707853 +v -0.0112307 0.0792039 -0.0707853 +v 0.0112307 -0.0792039 -0.0707853 +v 0.0112307 0.0792039 -0.0707853 +v 0.0112307 -0.0792039 0.0707853 +v 0.0112307 0.0792039 0.0707853 +v -0.0112307 -0.0792039 0.0707853 +v -0.0112307 0.0792039 0.0707853 +v -0.0055882 -0.0798007 -0.0707854 +v -0.0055882 0.0798007 -0.0707854 +v 0.0055882 -0.0798007 -0.0707854 +v 0.0055882 0.0798007 -0.0707854 +v 0.0055882 -0.0798007 0.0707854 +v 0.0055882 0.0798007 0.0707854 +v -0.0055882 -0.0798007 0.0707854 +v -0.0055882 0.0798007 0.0707854 +v -0.0249746 -0.0759968 -0.0708721 +v -0.0249746 0.0759968 -0.0708721 +v 0.0249746 -0.0759968 -0.0708721 +v 0.0249746 0.0759968 -0.0708721 +v 0.0249746 -0.0759968 0.0708721 +v 0.0249746 0.0759968 0.0708721 +v -0.0249746 -0.0759968 0.0708721 +v -0.0249746 0.0759968 0.0708721 +v -0.00268513 -0.0799502 -0.0708725 +v -0.00268513 0.0799502 -0.0708725 +v 0.00268513 -0.0799502 -0.0708725 +v 0.00268513 0.0799502 -0.0708725 +v 0.00268513 -0.0799502 0.0708725 +v 0.00268513 0.0799502 0.0708725 +v -0.00268513 -0.0799502 0.0708725 +v -0.00268513 0.0799502 0.0708725 +v -0.00840956 -0.0795519 -0.0708839 +v -0.00840956 0.0795519 -0.0708839 +v 0.00840956 -0.0795519 -0.0708839 +v 0.00840956 0.0795519 -0.0708839 +v 0.00840956 -0.0795519 0.0708839 +v 0.00840956 0.0795519 0.0708839 +v -0.00840956 -0.0795519 0.0708839 +v -0.00840956 0.0795519 0.0708839 +v -0.0276394 -0.0750675 -0.0709652 +v -0.0276394 0.0750675 -0.0709652 +v 0.0276394 -0.0750675 -0.0709652 +v 0.0276394 0.0750675 -0.0709652 +v 0.0276394 -0.0750675 0.0709652 +v 0.0276394 0.0750675 0.0709652 +v -0.0276394 -0.0750675 0.0709652 +v -0.0276394 0.0750675 0.0709652 +v -0.00265305 -0.0799502 -0.0709656 +v -0.00265305 0.0799502 -0.0709656 +v 0.00265305 -0.0799502 -0.0709656 +v 0.00265305 0.0799502 -0.0709656 +v 0.00265305 -0.0799502 0.0709656 +v 0.00265305 0.0799502 0.0709656 +v -0.00265305 -0.0799502 0.0709656 +v -0.00265305 0.0799502 0.0709656 +v -0.0140121 -0.0787572 -0.0709798 +v -0.0140121 0.0787572 -0.0709798 +v 0.0140121 -0.0787572 -0.0709798 +v 0.0140121 0.0787572 -0.0709798 +v 0.0140121 -0.0787572 0.0709798 +v 0.0140121 0.0787572 0.0709798 +v -0.0140121 -0.0787572 0.0709798 +v -0.0140121 0.0787572 0.0709798 +v -0.00555739 -0.0798007 -0.0709799 +v -0.00555739 0.0798007 -0.0709799 +v 0.00555739 -0.0798007 -0.0709799 +v 0.00555739 0.0798007 -0.0709799 +v 0.00555739 -0.0798007 0.0709799 +v 0.00555739 0.0798007 0.0709799 +v -0.00555739 -0.0798007 0.0709799 +v -0.00555739 0.0798007 0.0709799 +v -0.0302698 -0.0740447 -0.071057 +v -0.0302698 0.0740447 -0.071057 +v 0.0302698 -0.0740447 -0.071057 +v 0.0302698 0.0740447 -0.071057 +v 0.0302698 -0.0740447 0.071057 +v 0.0302698 0.0740447 0.071057 +v -0.0302698 -0.0740447 0.071057 +v -0.0302698 0.0740447 0.071057 +v -0.00261773 -0.0799502 -0.0710576 +v -0.00261773 0.0799502 -0.0710576 +v 0.00261773 -0.0799502 -0.0710576 +v 0.00261773 0.0799502 -0.0710576 +v 0.00261773 -0.0799502 0.0710576 +v 0.00261773 0.0799502 0.0710576 +v -0.00261773 -0.0799502 0.0710576 +v -0.00261773 0.0799502 0.0710576 +v -0.0328625 -0.0729297 -0.0711476 +v -0.0328625 0.0729297 -0.0711476 +v 0.0328625 -0.0729297 -0.0711476 +v 0.0328625 0.0729297 -0.0711476 +v 0.0328625 -0.0729297 0.0711476 +v 0.0328625 0.0729297 0.0711476 +v -0.0328625 -0.0729297 0.0711476 +v -0.0328625 0.0729297 0.0711476 +v -0.00257923 -0.0799502 -0.0711483 +v -0.00257923 0.0799502 -0.0711483 +v 0.00257923 -0.0799502 -0.0711483 +v 0.00257923 0.0799502 -0.0711483 +v 0.00257923 -0.0799502 0.0711483 +v 0.00257923 0.0799502 0.0711483 +v -0.00257923 -0.0799502 0.0711483 +v -0.00257923 0.0799502 0.0711483 +v -0.0167761 -0.0782124 -0.0711731 +v -0.0167761 0.0782124 -0.0711731 +v 0.0167761 -0.0782124 -0.0711731 +v 0.0167761 0.0782124 -0.0711731 +v 0.0167761 -0.0782124 0.0711731 +v 0.0167761 0.0782124 0.0711731 +v -0.0167761 -0.0782124 0.0711731 +v -0.0167761 0.0782124 0.0711731 +v -0.0055198 -0.0798007 -0.0711733 +v -0.0055198 0.0798007 -0.0711733 +v 0.0055198 -0.0798007 -0.0711733 +v 0.0055198 0.0798007 -0.0711733 +v 0.0055198 -0.0798007 0.0711733 +v 0.0055198 0.0798007 0.0711733 +v -0.0055198 -0.0798007 0.0711733 +v -0.0055198 0.0798007 0.0711733 +v -0.0111964 -0.0792039 -0.0711768 +v -0.0111964 0.0792039 -0.0711768 +v 0.0111964 -0.0792039 -0.0711768 +v 0.0111964 0.0792039 -0.0711768 +v 0.0111964 -0.0792039 0.0711768 +v 0.0111964 0.0792039 0.0711768 +v -0.0111964 -0.0792039 0.0711768 +v -0.0111964 0.0792039 0.0711768 +v -0.00837359 -0.0795519 -0.0711768 +v -0.00837359 0.0795519 -0.0711768 +v 0.00837359 -0.0795519 -0.0711768 +v 0.00837359 0.0795519 -0.0711768 +v 0.00837359 -0.0795519 0.0711768 +v 0.00837359 0.0795519 0.0711768 +v -0.00837359 -0.0795519 0.0711768 +v -0.00837359 0.0795519 0.0711768 +v -0.0354143 -0.0717238 -0.0712367 +v -0.0354143 0.0717238 -0.0712367 +v 0.0354143 -0.0717238 -0.0712367 +v 0.0354143 0.0717238 -0.0712367 +v 0.0354143 -0.0717238 0.0712367 +v 0.0354143 0.0717238 0.0712367 +v -0.0354143 -0.0717238 0.0712367 +v -0.0354143 0.0717238 0.0712367 +v -0.00253758 -0.0799502 -0.0712377 +v -0.00253758 0.0799502 -0.0712377 +v 0.00253758 -0.0799502 -0.0712377 +v 0.00253758 0.0799502 -0.0712377 +v 0.00253758 -0.0799502 0.0712377 +v 0.00253758 0.0799502 0.0712377 +v -0.00253758 -0.0799502 0.0712377 +v -0.00253758 0.0799502 0.0712377 +v -0.0379219 -0.0704285 -0.0713243 +v -0.0379219 0.0704285 -0.0713243 +v 0.0379219 -0.0704285 -0.0713243 +v 0.0379219 0.0704285 -0.0713243 +v 0.0379219 -0.0704285 0.0713243 +v 0.0379219 0.0704285 0.0713243 +v -0.0379219 -0.0704285 0.0713243 +v -0.0379219 0.0704285 0.0713243 +v -0.00249284 -0.0799502 -0.0713255 +v -0.00249284 0.0799502 -0.0713255 +v 0.00249284 -0.0799502 -0.0713255 +v 0.00249284 0.0799502 -0.0713255 +v 0.00249284 -0.0799502 0.0713255 +v 0.00249284 0.0799502 0.0713255 +v -0.00249284 -0.0799502 0.0713255 +v -0.00249284 0.0799502 0.0713255 +v -0.0195191 -0.0775702 -0.0713649 +v -0.0195191 0.0775702 -0.0713649 +v 0.0195191 -0.0775702 -0.0713649 +v 0.0195191 0.0775702 -0.0713649 +v 0.0195191 -0.0775702 0.0713649 +v 0.0195191 0.0775702 0.0713649 +v -0.0195191 -0.0775702 0.0713649 +v -0.0195191 0.0775702 0.0713649 +v -0.00547549 -0.0798007 -0.0713652 +v -0.00547549 0.0798007 -0.0713652 +v 0.00547549 -0.0798007 -0.0713652 +v 0.00547549 0.0798007 -0.0713652 +v 0.00547549 -0.0798007 0.0713652 +v 0.00547549 0.0798007 0.0713652 +v -0.00547549 -0.0798007 0.0713652 +v -0.00547549 0.0798007 0.0713652 +v -0.0403823 -0.0690455 -0.0714102 +v -0.0403823 0.0690455 -0.0714102 +v 0.0403823 -0.0690455 -0.0714102 +v 0.0403823 0.0690455 -0.0714102 +v 0.0403823 -0.0690455 0.0714102 +v 0.0403823 0.0690455 0.0714102 +v -0.0403823 -0.0690455 0.0714102 +v -0.0403823 0.0690455 0.0714102 +v -0.00244506 -0.0799502 -0.0714117 +v -0.00244506 0.0799502 -0.0714117 +v 0.00244506 -0.0799502 -0.0714117 +v 0.00244506 0.0799502 -0.0714117 +v 0.00244506 -0.0799502 0.0714117 +v 0.00244506 0.0799502 0.0714117 +v -0.00244506 -0.0799502 0.0714117 +v -0.00244506 0.0799502 0.0714117 +v -0.0139694 -0.0787572 -0.0714682 +v -0.0139694 0.0787572 -0.0714682 +v 0.0139694 -0.0787572 -0.0714682 +v 0.0139694 0.0787572 -0.0714682 +v 0.0139694 -0.0787572 0.0714682 +v 0.0139694 0.0787572 0.0714682 +v -0.0139694 -0.0787572 0.0714682 +v -0.0139694 0.0787572 0.0714682 +v -0.00832742 -0.0795519 -0.0714683 +v -0.00832742 0.0795519 -0.0714683 +v 0.00832742 -0.0795519 -0.0714683 +v 0.00832742 0.0795519 -0.0714683 +v 0.00832742 -0.0795519 0.0714683 +v 0.00832742 0.0795519 0.0714683 +v -0.00832742 -0.0795519 0.0714683 +v -0.00832742 0.0795519 0.0714683 +v -0.0427924 -0.0675765 -0.0714943 +v -0.0427924 0.0675765 -0.0714943 +v 0.0427924 -0.0675765 -0.0714943 +v 0.0427924 0.0675765 -0.0714943 +v 0.0427924 -0.0675765 0.0714943 +v 0.0427924 0.0675765 0.0714943 +v -0.0427924 -0.0675765 0.0714943 +v -0.0427924 0.0675765 0.0714943 +v -0.00239431 -0.0799502 -0.0714961 +v -0.00239431 0.0799502 -0.0714961 +v 0.00239431 -0.0799502 -0.0714961 +v 0.00239431 0.0799502 -0.0714961 +v 0.00239431 -0.0799502 0.0714961 +v 0.00239431 0.0799502 0.0714961 +v -0.00239431 -0.0799502 0.0714961 +v -0.00239431 0.0799502 0.0714961 +v -0.0222379 -0.0768314 -0.071555 +v -0.0222379 0.0768314 -0.071555 +v 0.0222379 -0.0768314 -0.071555 +v 0.0222379 0.0768314 -0.071555 +v 0.0222379 -0.0768314 0.071555 +v 0.0222379 0.0768314 0.071555 +v -0.0222379 -0.0768314 0.071555 +v -0.0222379 0.0768314 0.071555 +v -0.00542451 -0.0798007 -0.0715555 +v -0.00542451 0.0798007 -0.0715555 +v 0.00542451 -0.0798007 -0.0715555 +v 0.00542451 0.0798007 -0.0715555 +v 0.00542451 -0.0798007 0.0715555 +v 0.00542451 0.0798007 0.0715555 +v -0.00542451 -0.0798007 0.0715555 +v -0.00542451 0.0798007 0.0715555 +v -0.0111486 -0.0792039 -0.0715668 +v -0.0111486 0.0792039 -0.0715668 +v 0.0111486 -0.0792039 -0.0715668 +v 0.0111486 0.0792039 -0.0715668 +v 0.0111486 -0.0792039 0.0715668 +v 0.0111486 0.0792039 0.0715668 +v -0.0111486 -0.0792039 0.0715668 +v -0.0111486 0.0792039 0.0715668 +v -0.0451491 -0.0660233 -0.0715766 +v -0.0451491 0.0660233 -0.0715766 +v 0.0451491 -0.0660233 -0.0715766 +v 0.0451491 0.0660233 -0.0715766 +v 0.0451491 -0.0660233 0.0715766 +v 0.0451491 0.0660233 0.0715766 +v -0.0451491 -0.0660233 0.0715766 +v -0.0451491 0.0660233 0.0715766 +v -0.00234064 -0.0799502 -0.0715788 +v -0.00234064 0.0799502 -0.0715788 +v 0.00234064 -0.0799502 -0.0715788 +v 0.00234064 0.0799502 -0.0715788 +v 0.00234064 -0.0799502 0.0715788 +v 0.00234064 0.0799502 0.0715788 +v -0.00234064 -0.0799502 0.0715788 +v -0.00234064 0.0799502 0.0715788 +v -0.0474496 -0.0643878 -0.071657 +v -0.0474496 0.0643878 -0.071657 +v 0.0474496 -0.0643878 -0.071657 +v 0.0474496 0.0643878 -0.071657 +v 0.0474496 -0.0643878 0.071657 +v 0.0474496 0.0643878 0.071657 +v -0.0474496 -0.0643878 0.071657 +v -0.0474496 0.0643878 0.071657 +v -0.00228411 -0.0799502 -0.0716595 +v -0.00228411 0.0799502 -0.0716595 +v 0.00228411 -0.0799502 -0.0716595 +v 0.00228411 0.0799502 -0.0716595 +v 0.00228411 -0.0799502 0.0716595 +v 0.00228411 0.0799502 0.0716595 +v -0.00228411 -0.0799502 0.0716595 +v -0.00228411 0.0799502 0.0716595 +v -0.049691 -0.0626721 -0.0717352 +v -0.049691 0.0626721 -0.0717352 +v 0.049691 -0.0626721 -0.0717352 +v 0.049691 0.0626721 -0.0717352 +v 0.049691 -0.0626721 0.0717352 +v 0.049691 0.0626721 0.0717352 +v -0.049691 -0.0626721 0.0717352 +v -0.049691 0.0626721 0.0717352 +v -0.0022248 -0.0799502 -0.0717382 +v -0.0022248 0.0799502 -0.0717382 +v 0.0022248 -0.0799502 -0.0717382 +v 0.0022248 0.0799502 -0.0717382 +v 0.0022248 -0.0799502 0.0717382 +v 0.0022248 0.0799502 0.0717382 +v -0.0022248 -0.0799502 0.0717382 +v -0.0022248 0.0799502 0.0717382 +v -0.0249289 -0.0759968 -0.0717432 +v -0.0249289 0.0759968 -0.0717432 +v 0.0249289 -0.0759968 -0.0717432 +v 0.0249289 0.0759968 -0.0717432 +v 0.0249289 -0.0759968 0.0717432 +v 0.0249289 0.0759968 0.0717432 +v -0.0249289 -0.0759968 0.0717432 +v -0.0249289 0.0759968 0.0717432 +v -0.00536692 -0.0798007 -0.0717438 +v -0.00536692 0.0798007 -0.0717438 +v 0.00536692 -0.0798007 -0.0717438 +v 0.00536692 0.0798007 -0.0717438 +v 0.00536692 -0.0798007 0.0717438 +v 0.00536692 0.0798007 0.0717438 +v -0.00536692 -0.0798007 0.0717438 +v -0.00536692 0.0798007 0.0717438 +v -0.0167249 -0.0782124 -0.0717579 +v -0.0167249 0.0782124 -0.0717579 +v 0.0167249 -0.0782124 -0.0717579 +v 0.0167249 0.0782124 -0.0717579 +v 0.0167249 -0.0782124 0.0717579 +v 0.0167249 0.0782124 0.0717579 +v -0.0167249 -0.0782124 0.0717579 +v -0.0167249 0.0782124 0.0717579 +v -0.0082711 -0.0795519 -0.0717581 +v -0.0082711 0.0795519 -0.0717581 +v 0.0082711 -0.0795519 -0.0717581 +v 0.0082711 0.0795519 -0.0717581 +v 0.0082711 -0.0795519 0.0717581 +v 0.0082711 0.0795519 0.0717581 +v -0.0082711 -0.0795519 0.0717581 +v -0.0082711 0.0795519 0.0717581 +v -0.0518705 -0.0608783 -0.0718114 +v -0.0518705 0.0608783 -0.0718114 +v 0.0518705 -0.0608783 -0.0718114 +v 0.0518705 0.0608783 -0.0718114 +v 0.0518705 -0.0608783 0.0718114 +v 0.0518705 0.0608783 0.0718114 +v -0.0518705 -0.0608783 0.0718114 +v -0.0518705 0.0608783 0.0718114 +v -0.00216279 -0.0799502 -0.0718148 +v -0.00216279 0.0799502 -0.0718148 +v 0.00216279 -0.0799502 -0.0718148 +v 0.00216279 0.0799502 -0.0718148 +v 0.00216279 -0.0799502 0.0718148 +v 0.00216279 0.0799502 0.0718148 +v -0.00216279 -0.0799502 0.0718148 +v -0.00216279 0.0799502 0.0718148 +v -0.0539854 -0.0590087 -0.0718852 +v -0.0539854 0.0590087 -0.0718852 +v 0.0539854 -0.0590087 -0.0718852 +v 0.0539854 0.0590087 -0.0718852 +v 0.0539854 -0.0590087 0.0718852 +v 0.0539854 0.0590087 0.0718852 +v -0.0539854 -0.0590087 0.0718852 +v -0.0539854 0.0590087 0.0718852 +v -0.00209813 -0.0799502 -0.0718892 +v -0.00209813 0.0799502 -0.0718892 +v 0.00209813 -0.0799502 -0.0718892 +v 0.00209813 0.0799502 -0.0718892 +v 0.00209813 -0.0799502 0.0718892 +v 0.00209813 0.0799502 0.0718892 +v -0.00209813 -0.0799502 0.0718892 +v -0.00209813 0.0799502 0.0718892 +v -0.0275889 -0.0750675 -0.0719292 +v -0.0275889 0.0750675 -0.0719292 +v 0.0275889 -0.0750675 -0.0719292 +v 0.0275889 0.0750675 -0.0719292 +v 0.0275889 -0.0750675 0.0719292 +v 0.0275889 0.0750675 0.0719292 +v -0.0275889 -0.0750675 0.0719292 +v -0.0275889 0.0750675 0.0719292 +v -0.0053028 -0.0798007 -0.0719301 +v -0.0053028 0.0798007 -0.0719301 +v 0.0053028 -0.0798007 -0.0719301 +v 0.0053028 0.0798007 -0.0719301 +v 0.0053028 -0.0798007 0.0719301 +v 0.0053028 0.0798007 0.0719301 +v -0.0053028 -0.0798007 0.0719301 +v -0.0053028 0.0798007 0.0719301 +v -0.0139096 -0.0787572 -0.0719549 +v -0.0139096 0.0787572 -0.0719549 +v 0.0139096 -0.0787572 -0.0719549 +v 0.0139096 0.0787572 -0.0719549 +v 0.0139096 -0.0787572 0.0719549 +v 0.0139096 0.0787572 0.0719549 +v -0.0139096 -0.0787572 0.0719549 +v -0.0139096 0.0787572 0.0719549 +v -0.0110871 -0.0792039 -0.071955 +v -0.0110871 0.0792039 -0.071955 +v 0.0110871 -0.0792039 -0.071955 +v 0.0110871 0.0792039 -0.071955 +v 0.0110871 -0.0792039 0.071955 +v 0.0110871 0.0792039 0.071955 +v -0.0110871 -0.0792039 0.071955 +v -0.0110871 0.0792039 0.071955 +v -0.056033 -0.0570655 -0.0719567 +v -0.056033 0.0570655 -0.0719567 +v 0.056033 -0.0570655 -0.0719567 +v 0.056033 0.0570655 -0.0719567 +v 0.056033 -0.0570655 0.0719567 +v 0.056033 0.0570655 0.0719567 +v -0.056033 -0.0570655 0.0719567 +v -0.056033 0.0570655 0.0719567 +v -0.00203092 -0.0799502 -0.0719612 +v -0.00203092 0.0799502 -0.0719612 +v 0.00203092 -0.0799502 -0.0719612 +v 0.00203092 0.0799502 -0.0719612 +v 0.00203092 -0.0799502 0.0719612 +v 0.00203092 0.0799502 0.0719612 +v -0.00203092 -0.0799502 0.0719612 +v -0.00203092 0.0799502 0.0719612 +v -0.0580108 -0.0550513 -0.0720258 +v -0.0580108 0.0550513 -0.0720258 +v 0.0580108 -0.0550513 -0.0720258 +v 0.0580108 0.0550513 -0.0720258 +v 0.0580108 -0.0550513 0.0720258 +v 0.0580108 0.0550513 0.0720258 +v -0.0580108 -0.0550513 0.0720258 +v -0.0580108 0.0550513 0.0720258 +v -0.00196124 -0.0799502 -0.0720309 +v -0.00196124 0.0799502 -0.0720309 +v 0.00196124 -0.0799502 -0.0720309 +v 0.00196124 0.0799502 -0.0720309 +v 0.00196124 -0.0799502 0.0720309 +v 0.00196124 0.0799502 0.0720309 +v -0.00196124 -0.0799502 0.0720309 +v -0.00196124 0.0799502 0.0720309 +v -0.0194596 -0.0775702 -0.0720453 +v -0.0194596 0.0775702 -0.0720453 +v 0.0194596 -0.0775702 -0.0720453 +v 0.0194596 0.0775702 -0.0720453 +v 0.0194596 -0.0775702 0.0720453 +v 0.0194596 0.0775702 0.0720453 +v -0.0194596 -0.0775702 0.0720453 +v -0.0194596 0.0775702 0.0720453 +v -0.00820471 -0.0795519 -0.0720457 +v -0.00820471 0.0795519 -0.0720457 +v 0.00820471 -0.0795519 -0.0720457 +v 0.00820471 0.0795519 -0.0720457 +v 0.00820471 -0.0795519 0.0720457 +v 0.00820471 0.0795519 0.0720457 +v -0.00820471 -0.0795519 0.0720457 +v -0.00820471 0.0795519 0.0720457 +v -0.0599163 -0.0529685 -0.0720923 +v -0.0599163 0.0529685 -0.0720923 +v 0.0599163 -0.0529685 -0.0720923 +v 0.0599163 0.0529685 -0.0720923 +v 0.0599163 -0.0529685 0.0720923 +v 0.0599163 0.0529685 0.0720923 +v -0.0599163 -0.0529685 0.0720923 +v -0.0599163 0.0529685 0.0720923 +v -0.00188917 -0.0799502 -0.0720981 +v -0.00188917 0.0799502 -0.0720981 +v 0.00188917 -0.0799502 -0.0720981 +v 0.00188917 0.0799502 -0.0720981 +v 0.00188917 -0.0799502 0.0720981 +v 0.00188917 0.0799502 0.0720981 +v -0.00188917 -0.0799502 0.0720981 +v -0.00188917 0.0799502 0.0720981 +v -0.0302145 -0.0740447 -0.0721128 +v -0.0302145 0.0740447 -0.0721128 +v 0.0302145 -0.0740447 -0.0721128 +v 0.0302145 0.0740447 -0.0721128 +v 0.0302145 -0.0740447 0.0721128 +v 0.0302145 0.0740447 0.0721128 +v -0.0302145 -0.0740447 0.0721128 +v -0.0302145 0.0740447 0.0721128 +v -0.00523221 -0.0798007 -0.0721139 +v -0.00523221 0.0798007 -0.0721139 +v 0.00523221 -0.0798007 -0.0721139 +v 0.00523221 0.0798007 -0.0721139 +v 0.00523221 -0.0798007 0.0721139 +v 0.00523221 0.0798007 0.0721139 +v -0.00523221 -0.0798007 0.0721139 +v -0.00523221 0.0798007 0.0721139 +v -0.0617472 -0.0508196 -0.0721563 +v -0.0617472 0.0508196 -0.0721563 +v 0.0617472 -0.0508196 -0.0721563 +v 0.0617472 0.0508196 -0.0721563 +v 0.0617472 -0.0508196 0.0721563 +v 0.0617472 0.0508196 0.0721563 +v -0.0617472 -0.0508196 0.0721563 +v -0.0617472 0.0508196 0.0721563 +v -0.00181479 -0.0799502 -0.0721628 +v -0.00181479 0.0799502 -0.0721628 +v 0.00181479 -0.0799502 -0.0721628 +v 0.00181479 0.0799502 -0.0721628 +v 0.00181479 -0.0799502 0.0721628 +v 0.00181479 0.0799502 0.0721628 +v -0.00181479 -0.0799502 0.0721628 +v -0.00181479 0.0799502 0.0721628 +v -0.0635011 -0.0486075 -0.0722175 +v -0.0635011 0.0486075 -0.0722175 +v 0.0635011 -0.0486075 -0.0722175 +v 0.0635011 0.0486075 -0.0722175 +v 0.0635011 -0.0486075 0.0722175 +v 0.0635011 0.0486075 0.0722175 +v -0.0635011 -0.0486075 0.0722175 +v -0.0635011 0.0486075 0.0722175 +v -0.00173821 -0.0799502 -0.0722248 +v -0.00173821 0.0799502 -0.0722248 +v 0.00173821 -0.0799502 -0.0722248 +v 0.00173821 0.0799502 -0.0722248 +v 0.00173821 -0.0799502 0.0722248 +v 0.00173821 0.0799502 0.0722248 +v -0.00173821 -0.0799502 0.0722248 +v -0.00173821 0.0799502 0.0722248 +v -0.065176 -0.0463348 -0.072276 +v -0.065176 0.0463348 -0.072276 +v 0.065176 -0.0463348 -0.072276 +v 0.065176 0.0463348 -0.072276 +v 0.065176 -0.0463348 0.072276 +v 0.065176 0.0463348 0.072276 +v -0.065176 -0.0463348 0.072276 +v -0.065176 0.0463348 0.072276 +v -0.0016595 -0.0799502 -0.0722841 +v -0.0016595 0.0799502 -0.0722841 +v 0.0016595 -0.0799502 -0.0722841 +v 0.0016595 0.0799502 -0.0722841 +v 0.0016595 -0.0799502 0.0722841 +v 0.0016595 0.0799502 0.0722841 +v -0.0016595 -0.0799502 0.0722841 +v -0.0016595 0.0799502 0.0722841 +v -0.0328024 -0.0729297 -0.0722938 +v -0.0328024 0.0729297 -0.0722938 +v 0.0328024 -0.0729297 -0.0722938 +v 0.0328024 0.0729297 -0.0722938 +v 0.0328024 -0.0729297 0.0722938 +v 0.0328024 0.0729297 0.0722938 +v -0.0328024 -0.0729297 0.0722938 +v -0.0328024 0.0729297 0.0722938 +v -0.00515524 -0.0798007 -0.0722953 +v -0.00515524 0.0798007 -0.0722953 +v 0.00515524 -0.0798007 -0.0722953 +v 0.00515524 0.0798007 -0.0722953 +v 0.00515524 -0.0798007 0.0722953 +v 0.00515524 0.0798007 0.0722953 +v -0.00515524 -0.0798007 0.0722953 +v -0.00515524 0.0798007 0.0722953 +v -0.0221701 -0.0768314 -0.0723302 +v -0.0221701 0.0768314 -0.0723302 +v 0.0221701 -0.0768314 -0.0723302 +v 0.0221701 0.0768314 -0.0723302 +v 0.0221701 -0.0768314 0.0723302 +v 0.0221701 0.0768314 0.0723302 +v -0.0221701 -0.0768314 0.0723302 +v -0.0221701 0.0768314 0.0723302 +v -0.00812832 -0.0795519 -0.0723308 +v -0.00812832 0.0795519 -0.0723308 +v 0.00812832 -0.0795519 -0.0723308 +v 0.00812832 0.0795519 -0.0723308 +v 0.00812832 -0.0795519 0.0723308 +v 0.00812832 0.0795519 0.0723308 +v -0.00812832 -0.0795519 0.0723308 +v -0.00812832 0.0795519 0.0723308 +v -0.0667696 -0.0440044 -0.0723316 +v -0.0667696 0.0440044 -0.0723316 +v 0.0667696 -0.0440044 -0.0723316 +v 0.0667696 0.0440044 -0.0723316 +v 0.0667696 -0.0440044 0.0723316 +v 0.0667696 0.0440044 0.0723316 +v -0.0667696 -0.0440044 0.0723316 +v -0.0667696 0.0440044 0.0723316 +v -0.0166534 -0.0782124 -0.0723405 +v -0.0166534 0.0782124 -0.0723405 +v 0.0166534 -0.0782124 -0.0723405 +v 0.0166534 0.0782124 -0.0723405 +v 0.0166534 -0.0782124 0.0723405 +v 0.0166534 0.0782124 0.0723405 +v -0.0166534 -0.0782124 0.0723405 +v -0.0166534 0.0782124 0.0723405 +v -0.00157878 -0.0799502 -0.0723406 +v -0.00157878 0.0799502 -0.0723406 +v 0.00157878 -0.0799502 -0.0723406 +v 0.00157878 0.0799502 -0.0723406 +v 0.00157878 -0.0799502 0.0723406 +v 0.00157878 0.0799502 0.0723406 +v -0.00157878 -0.0799502 0.0723406 +v -0.00157878 0.0799502 0.0723406 +v -0.0110121 -0.0792039 -0.0723407 +v -0.0110121 0.0792039 -0.0723407 +v 0.0110121 -0.0792039 -0.0723407 +v 0.0110121 0.0792039 -0.0723407 +v 0.0110121 -0.0792039 0.0723407 +v 0.0110121 0.0792039 0.0723407 +v -0.0110121 -0.0792039 0.0723407 +v -0.0110121 0.0792039 0.0723407 +v -0.06828 -0.0416192 -0.0723844 +v -0.06828 0.0416192 -0.0723844 +v 0.06828 -0.0416192 -0.0723844 +v 0.06828 0.0416192 -0.0723844 +v 0.06828 -0.0416192 0.0723844 +v 0.06828 0.0416192 0.0723844 +v -0.06828 -0.0416192 0.0723844 +v -0.06828 0.0416192 0.0723844 +v -0.00149613 -0.0799502 -0.0723943 +v -0.00149613 0.0799502 -0.0723943 +v 0.00149613 -0.0799502 -0.0723943 +v 0.00149613 0.0799502 -0.0723943 +v 0.00149613 -0.0799502 0.0723943 +v 0.00149613 0.0799502 0.0723943 +v -0.00149613 -0.0799502 0.0723943 +v -0.00149613 0.0799502 0.0723943 +v -0.0697054 -0.0391821 -0.0724342 +v -0.0697054 0.0391821 -0.0724342 +v 0.0697054 -0.0391821 -0.0724342 +v 0.0697054 0.0391821 -0.0724342 +v 0.0697054 -0.0391821 0.0724342 +v 0.0697054 0.0391821 0.0724342 +v -0.0697054 -0.0391821 0.0724342 +v -0.0697054 0.0391821 0.0724342 +v -0.0138329 -0.0787572 -0.0724391 +v -0.0138329 0.0787572 -0.0724391 +v 0.0138329 -0.0787572 -0.0724391 +v 0.0138329 0.0787572 -0.0724391 +v 0.0138329 -0.0787572 0.0724391 +v 0.0138329 0.0787572 0.0724391 +v -0.0138329 -0.0787572 0.0724391 +v -0.0138329 0.0787572 0.0724391 +v -0.00141166 -0.0799502 -0.0724451 +v -0.00141166 0.0799502 -0.0724451 +v 0.00141166 -0.0799502 -0.0724451 +v 0.00141166 0.0799502 -0.0724451 +v 0.00141166 -0.0799502 0.0724451 +v 0.00141166 0.0799502 0.0724451 +v -0.00141166 -0.0799502 0.0724451 +v -0.00141166 0.0799502 0.0724451 +v -0.0353495 -0.0717238 -0.0724719 +v -0.0353495 0.0717238 -0.0724719 +v 0.0353495 -0.0717238 -0.0724719 +v 0.0353495 0.0717238 -0.0724719 +v 0.0353495 -0.0717238 0.0724719 +v 0.0353495 0.0717238 0.0724719 +v -0.0353495 -0.0717238 0.0724719 +v -0.0353495 0.0717238 0.0724719 +v -0.005072 -0.0798007 -0.0724738 +v -0.005072 0.0798007 -0.0724738 +v 0.005072 -0.0798007 -0.0724738 +v 0.005072 0.0798007 -0.0724738 +v 0.005072 -0.0798007 0.0724738 +v 0.005072 0.0798007 0.0724738 +v -0.005072 -0.0798007 0.0724738 +v -0.005072 0.0798007 0.0724738 +v -0.0710439 -0.0366961 -0.0724809 +v -0.0710439 0.0366961 -0.0724809 +v 0.0710439 -0.0366961 -0.0724809 +v 0.0710439 0.0366961 -0.0724809 +v 0.0710439 -0.0366961 0.0724809 +v 0.0710439 0.0366961 0.0724809 +v -0.0710439 -0.0366961 0.0724809 +v -0.0710439 0.0366961 0.0724809 +v -0.00132547 -0.0799502 -0.0724928 +v -0.00132547 0.0799502 -0.0724928 +v 0.00132547 -0.0799502 -0.0724928 +v 0.00132547 0.0799502 -0.0724928 +v 0.00132547 -0.0799502 0.0724928 +v 0.00132547 0.0799502 0.0724928 +v -0.00132547 -0.0799502 0.0724928 +v -0.00132547 0.0799502 0.0724928 +v -0.0722939 -0.0341645 -0.0725246 +v -0.0722939 0.0341645 -0.0725246 +v 0.0722939 -0.0341645 -0.0725246 +v 0.0722939 0.0341645 -0.0725246 +v 0.0722939 -0.0341645 0.0725246 +v 0.0722939 0.0341645 0.0725246 +v -0.0722939 -0.0341645 0.0725246 +v -0.0722939 0.0341645 0.0725246 +v -0.00123766 -0.0799502 -0.0725376 +v -0.00123766 0.0799502 -0.0725376 +v 0.00123766 -0.0799502 -0.0725376 +v 0.00123766 0.0799502 -0.0725376 +v 0.00123766 -0.0799502 0.0725376 +v 0.00123766 0.0799502 0.0725376 +v -0.00123766 -0.0799502 0.0725376 +v -0.00123766 0.0799502 0.0725376 +v -0.0734539 -0.0315903 -0.0725651 +v -0.0734539 0.0315903 -0.0725651 +v 0.0734539 -0.0315903 -0.0725651 +v 0.0734539 0.0315903 -0.0725651 +v 0.0734539 -0.0315903 0.0725651 +v 0.0734539 0.0315903 0.0725651 +v -0.0734539 -0.0315903 0.0725651 +v -0.0734539 0.0315903 0.0725651 +v -0.00114835 -0.0799502 -0.0725792 +v -0.00114835 0.0799502 -0.0725792 +v 0.00114835 -0.0799502 -0.0725792 +v 0.00114835 0.0799502 -0.0725792 +v 0.00114835 -0.0799502 0.0725792 +v 0.00114835 0.0799502 0.0725792 +v -0.00114835 -0.0799502 0.0725792 +v -0.00114835 0.0799502 0.0725792 +v -0.0745223 -0.0289768 -0.0726024 +v -0.0745223 0.0289768 -0.0726024 +v 0.0745223 -0.0289768 -0.0726024 +v 0.0745223 0.0289768 -0.0726024 +v 0.0745223 -0.0289768 0.0726024 +v 0.0745223 0.0289768 0.0726024 +v -0.0745223 -0.0289768 0.0726024 +v -0.0745223 0.0289768 0.0726024 +v -0.0248529 -0.0759968 -0.0726121 +v -0.0248529 0.0759968 -0.0726121 +v 0.0248529 -0.0759968 -0.0726121 +v 0.0248529 0.0759968 -0.0726121 +v 0.0248529 -0.0759968 0.0726121 +v 0.0248529 0.0759968 0.0726121 +v -0.0248529 -0.0759968 0.0726121 +v -0.0248529 0.0759968 0.0726121 +v -0.00804203 -0.0795519 -0.072613 +v -0.00804203 0.0795519 -0.072613 +v 0.00804203 -0.0795519 -0.072613 +v 0.00804203 0.0795519 -0.072613 +v 0.00804203 -0.0795519 0.072613 +v 0.00804203 0.0795519 0.072613 +v -0.00804203 -0.0795519 0.072613 +v -0.00804203 0.0795519 0.072613 +v -0.00105763 -0.0799502 -0.0726177 +v -0.00105763 0.0799502 -0.0726177 +v 0.00105763 -0.0799502 -0.0726177 +v 0.00105763 0.0799502 -0.0726177 +v 0.00105763 -0.0799502 0.0726177 +v 0.00105763 0.0799502 0.0726177 +v -0.00105763 -0.0799502 0.0726177 +v -0.00105763 0.0799502 0.0726177 +v -0.0754979 -0.0263271 -0.0726364 +v -0.0754979 0.0263271 -0.0726364 +v 0.0754979 -0.0263271 -0.0726364 +v 0.0754979 0.0263271 -0.0726364 +v 0.0754979 -0.0263271 0.0726364 +v 0.0754979 0.0263271 0.0726364 +v -0.0754979 -0.0263271 0.0726364 +v -0.0754979 0.0263271 0.0726364 +v -0.0378526 -0.0704285 -0.0726469 +v -0.0378526 0.0704285 -0.0726469 +v 0.0378526 -0.0704285 -0.0726469 +v 0.0378526 0.0704285 -0.0726469 +v 0.0378526 -0.0704285 0.0726469 +v 0.0378526 0.0704285 0.0726469 +v -0.0378526 -0.0704285 0.0726469 +v -0.0378526 0.0704285 0.0726469 +v -0.00498258 -0.0798007 -0.0726493 +v -0.00498258 0.0798007 -0.0726493 +v 0.00498258 -0.0798007 -0.0726493 +v 0.00498258 0.0798007 -0.0726493 +v 0.00498258 -0.0798007 0.0726493 +v 0.00498258 0.0798007 0.0726493 +v -0.00498258 -0.0798007 0.0726493 +v -0.00498258 0.0798007 0.0726493 +v -0.000965631 -0.0799502 -0.072653 +v -0.000965631 0.0799502 -0.072653 +v 0.000965631 -0.0799502 -0.072653 +v 0.000965631 0.0799502 -0.072653 +v 0.000965631 -0.0799502 0.072653 +v 0.000965631 0.0799502 0.072653 +v -0.000965631 -0.0799502 0.072653 +v -0.000965631 0.0799502 0.072653 +v -0.0763794 -0.0236447 -0.0726672 +v -0.0763794 0.0236447 -0.0726672 +v 0.0763794 -0.0236447 -0.0726672 +v 0.0763794 0.0236447 -0.0726672 +v 0.0763794 -0.0236447 0.0726672 +v 0.0763794 0.0236447 0.0726672 +v -0.0763794 -0.0236447 0.0726672 +v -0.0763794 0.0236447 0.0726672 +v -0.000872453 -0.0799502 -0.0726851 +v -0.000872453 0.0799502 -0.0726851 +v 0.000872453 -0.0799502 -0.0726851 +v 0.000872453 0.0799502 -0.0726851 +v 0.000872453 -0.0799502 0.0726851 +v 0.000872453 0.0799502 0.0726851 +v -0.000872453 -0.0799502 0.0726851 +v -0.000872453 0.0799502 0.0726851 +v -0.0771658 -0.0209327 -0.0726947 +v -0.0771658 0.0209327 -0.0726947 +v 0.0771658 -0.0209327 -0.0726947 +v 0.0771658 0.0209327 -0.0726947 +v 0.0771658 -0.0209327 0.0726947 +v 0.0771658 0.0209327 0.0726947 +v -0.0771658 -0.0209327 0.0726947 +v -0.0771658 0.0209327 0.0726947 +v -0.000778212 -0.0799502 -0.0727139 +v -0.000778212 0.0799502 -0.0727139 +v 0.000778212 -0.0799502 -0.0727139 +v 0.000778212 0.0799502 -0.0727139 +v 0.000778212 -0.0799502 0.0727139 +v 0.000778212 0.0799502 0.0727139 +v -0.000778212 -0.0799502 0.0727139 +v -0.000778212 0.0799502 0.0727139 +v -0.077856 -0.0181947 -0.0727188 +v -0.077856 0.0181947 -0.0727188 +v 0.077856 -0.0181947 -0.0727188 +v 0.077856 0.0181947 -0.0727188 +v 0.077856 -0.0181947 0.0727188 +v 0.077856 0.0181947 0.0727188 +v -0.077856 -0.0181947 0.0727188 +v -0.077856 0.0181947 0.0727188 +v -0.0193764 -0.0775702 -0.0727232 +v -0.0193764 0.0775702 -0.0727232 +v 0.0193764 -0.0775702 -0.0727232 +v 0.0193764 0.0775702 -0.0727232 +v 0.0193764 -0.0775702 0.0727232 +v 0.0193764 0.0775702 0.0727232 +v -0.0193764 -0.0775702 0.0727232 +v -0.0193764 0.0775702 0.0727232 +v -0.0109237 -0.0792039 -0.0727236 +v -0.0109237 0.0792039 -0.0727236 +v 0.0109237 -0.0792039 -0.0727236 +v 0.0109237 0.0792039 -0.0727236 +v 0.0109237 -0.0792039 0.0727236 +v 0.0109237 0.0792039 0.0727236 +v -0.0109237 -0.0792039 0.0727236 +v -0.0109237 0.0792039 0.0727236 +v -0.0784492 -0.0154341 -0.0727395 +v -0.0784492 0.0154341 -0.0727395 +v 0.0784492 -0.0154341 -0.0727395 +v 0.0784492 0.0154341 -0.0727395 +v 0.0784492 -0.0154341 0.0727395 +v 0.0784492 0.0154341 0.0727395 +v -0.0784492 -0.0154341 0.0727395 +v -0.0784492 0.0154341 0.0727395 +v -0.000683022 -0.0799502 -0.0727395 +v -0.000683022 0.0799502 -0.0727395 +v 0.000683022 -0.0799502 -0.0727395 +v 0.000683022 0.0799502 -0.0727395 +v 0.000683022 -0.0799502 0.0727395 +v 0.000683022 0.0799502 0.0727395 +v -0.000683022 -0.0799502 0.0727395 +v -0.000683022 0.0799502 0.0727395 +v -0.0789447 -0.0126542 -0.0727568 +v -0.0789447 0.0126542 -0.0727568 +v 0.0789447 -0.0126542 -0.0727568 +v 0.0789447 0.0126542 -0.0727568 +v 0.0789447 -0.0126542 0.0727568 +v 0.0789447 0.0126542 0.0727568 +v -0.0789447 -0.0126542 0.0727568 +v -0.0789447 0.0126542 0.0727568 +v -0.000587001 -0.0799502 -0.0727616 +v -0.000587001 0.0799502 -0.0727616 +v 0.000587001 -0.0799502 -0.0727616 +v 0.000587001 0.0799502 -0.0727616 +v 0.000587001 -0.0799502 0.0727616 +v 0.000587001 0.0799502 0.0727616 +v -0.000587001 -0.0799502 0.0727616 +v -0.000587001 0.0799502 0.0727616 +v -0.0793419 -0.00985854 -0.0727707 +v -0.0793419 0.00985854 -0.0727707 +v 0.0793419 -0.00985854 -0.0727707 +v 0.0793419 0.00985854 -0.0727707 +v 0.0793419 -0.00985854 0.0727707 +v 0.0793419 0.00985854 0.0727707 +v -0.0793419 -0.00985854 0.0727707 +v -0.0793419 0.00985854 0.0727707 +v -0.000490264 -0.0799502 -0.0727804 +v -0.000490264 0.0799502 -0.0727804 +v 0.000490264 -0.0799502 -0.0727804 +v 0.000490264 0.0799502 -0.0727804 +v 0.000490264 -0.0799502 0.0727804 +v 0.000490264 0.0799502 0.0727804 +v -0.000490264 -0.0799502 0.0727804 +v -0.000490264 0.0799502 0.0727804 +v -0.0796402 -0.0070506 -0.0727811 +v -0.0796402 0.0070506 -0.0727811 +v 0.0796402 -0.0070506 -0.0727811 +v 0.0796402 0.0070506 -0.0727811 +v 0.0796402 -0.0070506 0.0727811 +v 0.0796402 0.0070506 0.0727811 +v -0.0796402 -0.0070506 0.0727811 +v -0.0796402 0.0070506 0.0727811 +v -0.0798392 -0.00423388 -0.072788 +v -0.0798392 0.00423388 -0.072788 +v 0.0798392 -0.00423388 -0.072788 +v 0.0798392 0.00423388 -0.072788 +v 0.0798392 -0.00423388 0.072788 +v 0.0798392 0.00423388 0.072788 +v -0.0798392 -0.00423388 0.072788 +v -0.0798392 0.00423388 0.072788 +v -0.0799388 -0.00141188 -0.0727915 +v -0.0799388 0.00141188 -0.0727915 +v 0.0799388 -0.00141188 -0.0727915 +v 0.0799388 0.00141188 -0.0727915 +v 0.0799388 -0.00141188 0.0727915 +v 0.0799388 0.00141188 0.0727915 +v -0.0799388 -0.00141188 0.0727915 +v -0.0799388 0.00141188 0.0727915 +v -0.00039293 -0.0799502 -0.0727958 +v -0.00039293 0.0799502 -0.0727958 +v 0.00039293 -0.0799502 -0.0727958 +v 0.00039293 0.0799502 -0.0727958 +v 0.00039293 -0.0799502 0.0727958 +v 0.00039293 0.0799502 0.0727958 +v -0.00039293 -0.0799502 0.0727958 +v -0.00039293 0.0799502 0.0727958 +v -0.000295117 -0.0799502 -0.0728078 +v -0.000295117 0.0799502 -0.0728078 +v 0.000295117 -0.0799502 -0.0728078 +v 0.000295117 0.0799502 -0.0728078 +v 0.000295117 -0.0799502 0.0728078 +v 0.000295117 0.0799502 0.0728078 +v -0.000295117 -0.0799502 0.0728078 +v -0.000295117 0.0799502 0.0728078 +v -0.000196945 -0.0799502 -0.0728164 +v -0.000196945 0.0799502 -0.0728164 +v 0.000196945 -0.0799502 -0.0728164 +v 0.000196945 0.0799502 -0.0728164 +v 0.000196945 -0.0799502 0.0728164 +v 0.000196945 0.0799502 0.0728164 +v -0.000196945 -0.0799502 0.0728164 +v -0.000196945 0.0799502 0.0728164 +v -0.0403085 -0.0690455 -0.0728186 +v -0.0403085 0.0690455 -0.0728186 +v 0.0403085 -0.0690455 -0.0728186 +v 0.0403085 0.0690455 -0.0728186 +v 0.0403085 -0.0690455 0.0728186 +v 0.0403085 0.0690455 0.0728186 +v -0.0403085 -0.0690455 0.0728186 +v -0.0403085 0.0690455 0.0728186 +v -0.00488708 -0.0798007 -0.0728216 +v -0.00488708 0.0798007 -0.0728216 +v 0.00488708 -0.0798007 -0.0728216 +v 0.00488708 0.0798007 -0.0728216 +v 0.00488708 -0.0798007 0.0728216 +v 0.00488708 0.0798007 0.0728216 +v -0.00488708 -0.0798007 0.0728216 +v -0.00488708 0.0798007 0.0728216 +v -9.85323e-05 -0.0799502 -0.0728216 +v -9.85323e-05 0.0799502 -0.0728216 +v 9.85323e-05 -0.0799502 -0.0728216 +v 9.85323e-05 0.0799502 -0.0728216 +v 9.85323e-05 -0.0799502 0.0728216 +v 9.85323e-05 0.0799502 0.0728216 +v -9.85323e-05 -0.0799502 0.0728216 +v -9.85323e-05 0.0799502 0.0728216 +v -5.18635e-19 -0.0799502 -0.0728233 +v -5.18635e-19 0.0799502 -0.0728233 +v 1.72878e-19 -0.0799502 0.0728233 +v 1.72878e-19 0.0799502 0.0728233 +v -0.0275047 -0.0750675 -0.0728909 +v -0.0275047 0.0750675 -0.0728909 +v 0.0275047 -0.0750675 -0.0728909 +v 0.0275047 0.0750675 -0.0728909 +v 0.0275047 -0.0750675 0.0728909 +v 0.0275047 0.0750675 0.0728909 +v -0.0275047 -0.0750675 0.0728909 +v -0.0275047 0.0750675 0.0728909 +v -0.00794593 -0.0795519 -0.0728921 +v -0.00794593 0.0795519 -0.0728921 +v 0.00794593 -0.0795519 -0.0728921 +v 0.00794593 0.0795519 -0.0728921 +v 0.00794593 -0.0795519 0.0728921 +v 0.00794593 0.0795519 0.0728921 +v -0.00794593 -0.0795519 0.0728921 +v -0.00794593 0.0795519 0.0728921 +v -0.0165615 -0.0782124 -0.0729202 +v -0.0165615 0.0782124 -0.0729202 +v 0.0165615 -0.0782124 -0.0729202 +v 0.0165615 0.0782124 -0.0729202 +v 0.0165615 -0.0782124 0.0729202 +v 0.0165615 0.0782124 0.0729202 +v -0.0165615 -0.0782124 0.0729202 +v -0.0165615 0.0782124 0.0729202 +v -0.0137394 -0.0787572 -0.0729204 +v -0.0137394 0.0787572 -0.0729204 +v 0.0137394 -0.0787572 -0.0729204 +v 0.0137394 0.0787572 -0.0729204 +v 0.0137394 -0.0787572 0.0729204 +v 0.0137394 0.0787572 0.0729204 +v -0.0137394 -0.0787572 0.0729204 +v -0.0137394 0.0787572 0.0729204 +v -0.0427141 -0.0675765 -0.0729869 +v -0.0427141 0.0675765 -0.0729869 +v 0.0427141 -0.0675765 -0.0729869 +v 0.0427141 0.0675765 -0.0729869 +v 0.0427141 -0.0675765 0.0729869 +v 0.0427141 0.0675765 0.0729869 +v -0.0427141 -0.0675765 0.0729869 +v -0.0427141 0.0675765 0.0729869 +v -0.00478563 -0.0798007 -0.0729904 +v -0.00478563 0.0798007 -0.0729904 +v 0.00478563 -0.0798007 -0.0729904 +v 0.00478563 0.0798007 -0.0729904 +v 0.00478563 -0.0798007 0.0729904 +v 0.00478563 0.0798007 0.0729904 +v -0.00478563 -0.0798007 0.0729904 +v -0.00478563 0.0798007 0.0729904 +v -0.0220752 -0.0768314 -0.0731025 +v -0.0220752 0.0768314 -0.0731025 +v 0.0220752 -0.0768314 -0.0731025 +v 0.0220752 0.0768314 -0.0731025 +v 0.0220752 -0.0768314 0.0731025 +v 0.0220752 0.0768314 0.0731025 +v -0.0220752 -0.0768314 0.0731025 +v -0.0220752 0.0768314 0.0731025 +v -0.010822 -0.0792039 -0.0731032 +v -0.010822 0.0792039 -0.0731032 +v 0.010822 -0.0792039 -0.0731032 +v 0.010822 0.0792039 -0.0731032 +v 0.010822 -0.0792039 0.0731032 +v 0.010822 0.0792039 0.0731032 +v -0.010822 -0.0792039 0.0731032 +v -0.010822 0.0792039 0.0731032 +v -0.0450666 -0.0660233 -0.0731514 +v -0.0450666 0.0660233 -0.0731514 +v 0.0450666 -0.0660233 -0.0731514 +v 0.0450666 0.0660233 -0.0731514 +v 0.0450666 -0.0660233 0.0731514 +v 0.0450666 0.0660233 0.0731514 +v -0.0450666 -0.0660233 0.0731514 +v -0.0450666 0.0660233 0.0731514 +v -0.00467836 -0.0798007 -0.0731556 +v -0.00467836 0.0798007 -0.0731556 +v 0.00467836 -0.0798007 -0.0731556 +v 0.00467836 0.0798007 -0.0731556 +v 0.00467836 -0.0798007 0.0731556 +v 0.00467836 0.0798007 0.0731556 +v -0.00467836 -0.0798007 0.0731556 +v -0.00467836 0.0798007 0.0731556 +v -0.0301223 -0.0740447 -0.073166 +v -0.0301223 0.0740447 -0.073166 +v 0.0301223 -0.0740447 -0.073166 +v 0.0301223 0.0740447 -0.073166 +v 0.0301223 -0.0740447 0.073166 +v 0.0301223 0.0740447 0.073166 +v -0.0301223 -0.0740447 0.073166 +v -0.0301223 0.0740447 0.073166 +v -0.00784016 -0.0795519 -0.0731676 +v -0.00784016 0.0795519 -0.0731676 +v 0.00784016 -0.0795519 -0.0731676 +v 0.00784016 0.0795519 -0.0731676 +v 0.00784016 -0.0795519 0.0731676 +v 0.00784016 0.0795519 0.0731676 +v -0.00784016 -0.0795519 0.0731676 +v -0.00784016 0.0795519 0.0731676 +v -0.0473629 -0.0643878 -0.0733119 +v -0.0473629 0.0643878 -0.0733119 +v 0.0473629 -0.0643878 -0.0733119 +v 0.0473629 0.0643878 -0.0733119 +v 0.0473629 -0.0643878 0.0733119 +v 0.0473629 0.0643878 0.0733119 +v -0.0473629 -0.0643878 0.0733119 +v -0.0473629 0.0643878 0.0733119 +v -0.00456538 -0.0798007 -0.0733169 +v -0.00456538 0.0798007 -0.0733169 +v 0.00456538 -0.0798007 -0.0733169 +v 0.00456538 0.0798007 -0.0733169 +v 0.00456538 -0.0798007 0.0733169 +v 0.00456538 0.0798007 0.0733169 +v -0.00456538 -0.0798007 0.0733169 +v -0.00456538 0.0798007 0.0733169 +v -0.0192695 -0.0775702 -0.0733977 +v -0.0192695 0.0775702 -0.0733977 +v 0.0192695 -0.0775702 -0.0733977 +v 0.0192695 0.0775702 -0.0733977 +v 0.0192695 -0.0775702 0.0733977 +v 0.0192695 0.0775702 0.0733977 +v -0.0192695 -0.0775702 0.0733977 +v -0.0192695 0.0775702 0.0733977 +v -0.0136291 -0.0787572 -0.0733981 +v -0.0136291 0.0787572 -0.0733981 +v 0.0136291 -0.0787572 -0.0733981 +v 0.0136291 0.0787572 -0.0733981 +v 0.0136291 -0.0787572 0.0733981 +v 0.0136291 0.0787572 0.0733981 +v -0.0136291 -0.0787572 0.0733981 +v -0.0136291 0.0787572 0.0733981 +v -0.0327024 -0.0729297 -0.0734372 +v -0.0327024 0.0729297 -0.0734372 +v 0.0327024 -0.0729297 -0.0734372 +v 0.0327024 0.0729297 -0.0734372 +v 0.0327024 -0.0729297 0.0734372 +v 0.0327024 0.0729297 0.0734372 +v -0.0327024 -0.0729297 0.0734372 +v -0.0327024 0.0729297 0.0734372 +v -0.00772484 -0.0795519 -0.0734393 +v -0.00772484 0.0795519 -0.0734393 +v 0.00772484 -0.0795519 -0.0734393 +v 0.00772484 0.0795519 -0.0734393 +v 0.00772484 -0.0795519 0.0734393 +v 0.00772484 0.0795519 0.0734393 +v -0.00772484 -0.0795519 0.0734393 +v -0.00772484 0.0795519 0.0734393 +v -0.0496002 -0.0626721 -0.0734684 +v -0.0496002 0.0626721 -0.0734684 +v 0.0496002 -0.0626721 -0.0734684 +v 0.0496002 0.0626721 -0.0734684 +v 0.0496002 -0.0626721 0.0734684 +v 0.0496002 0.0626721 0.0734684 +v -0.0496002 -0.0626721 0.0734684 +v -0.0496002 0.0626721 0.0734684 +v -0.00444684 -0.0798007 -0.0734743 +v -0.00444684 0.0798007 -0.0734743 +v 0.00444684 -0.0798007 -0.0734743 +v 0.00444684 0.0798007 -0.0734743 +v 0.00444684 -0.0798007 0.0734743 +v 0.00444684 0.0798007 0.0734743 +v -0.00444684 -0.0798007 0.0734743 +v -0.00444684 0.0798007 0.0734743 +v -0.0247466 -0.0759968 -0.0734779 +v -0.0247466 0.0759968 -0.0734779 +v 0.0247466 -0.0759968 -0.0734779 +v 0.0247466 0.0759968 -0.0734779 +v 0.0247466 -0.0759968 0.0734779 +v 0.0247466 0.0759968 0.0734779 +v -0.0247466 -0.0759968 0.0734779 +v -0.0247466 0.0759968 0.0734779 +v -0.0107071 -0.0792039 -0.073479 +v -0.0107071 0.0792039 -0.073479 +v 0.0107071 -0.0792039 -0.073479 +v 0.0107071 0.0792039 -0.073479 +v 0.0107071 -0.0792039 0.073479 +v 0.0107071 0.0792039 0.073479 +v -0.0107071 -0.0792039 0.073479 +v -0.0107071 0.0792039 0.073479 +v -0.0164495 -0.0782124 -0.0734965 +v -0.0164495 0.0782124 -0.0734965 +v 0.0164495 -0.0782124 -0.0734965 +v 0.0164495 0.0782124 -0.0734965 +v 0.0164495 -0.0782124 0.0734965 +v 0.0164495 0.0782124 0.0734965 +v -0.0164495 -0.0782124 0.0734965 +v -0.0164495 0.0782124 0.0734965 +v -0.0517757 -0.0608783 -0.0736205 +v -0.0517757 0.0608783 -0.0736205 +v 0.0517757 -0.0608783 -0.0736205 +v 0.0517757 0.0608783 -0.0736205 +v 0.0517757 -0.0608783 0.0736205 +v 0.0517757 0.0608783 0.0736205 +v -0.0517757 -0.0608783 0.0736205 +v -0.0517757 0.0608783 0.0736205 +v -0.00432288 -0.0798007 -0.0736273 +v -0.00432288 0.0798007 -0.0736273 +v 0.00432288 -0.0798007 -0.0736273 +v 0.00432288 0.0798007 -0.0736273 +v 0.00432288 -0.0798007 0.0736273 +v 0.00432288 0.0798007 0.0736273 +v -0.00432288 -0.0798007 0.0736273 +v -0.00432288 0.0798007 0.0736273 +v -0.0352417 -0.0717238 -0.0737041 +v -0.0352417 0.0717238 -0.0737041 +v 0.0352417 -0.0717238 -0.0737041 +v 0.0352417 0.0717238 -0.0737041 +v 0.0352417 -0.0717238 0.0737041 +v 0.0352417 0.0717238 0.0737041 +v -0.0352417 -0.0717238 0.0737041 +v -0.0352417 0.0717238 0.0737041 +v -0.0076001 -0.0795519 -0.0737068 +v -0.0076001 0.0795519 -0.0737068 +v 0.0076001 -0.0795519 -0.0737068 +v 0.0076001 0.0795519 -0.0737068 +v 0.0076001 -0.0795519 0.0737068 +v 0.0076001 0.0795519 0.0737068 +v -0.0076001 -0.0795519 0.0737068 +v -0.0076001 0.0795519 0.0737068 +v -0.0538867 -0.0590087 -0.0737681 +v -0.0538867 0.0590087 -0.0737681 +v 0.0538867 -0.0590087 -0.0737681 +v 0.0538867 0.0590087 -0.0737681 +v 0.0538867 -0.0590087 0.0737681 +v 0.0538867 0.0590087 0.0737681 +v -0.0538867 -0.0590087 0.0737681 +v -0.0538867 0.0590087 0.0737681 +v -0.00419365 -0.0798007 -0.073776 +v -0.00419365 0.0798007 -0.073776 +v 0.00419365 -0.0798007 -0.073776 +v 0.00419365 0.0798007 -0.073776 +v 0.00419365 -0.0798007 0.073776 +v 0.00419365 0.0798007 0.073776 +v -0.00419365 -0.0798007 0.073776 +v -0.00419365 0.0798007 0.073776 +v -0.0273871 -0.0750675 -0.073849 +v -0.0273871 0.0750675 -0.073849 +v 0.0273871 -0.0750675 -0.073849 +v 0.0273871 0.0750675 -0.073849 +v 0.0273871 -0.0750675 0.073849 +v 0.0273871 0.0750675 0.073849 +v -0.0273871 -0.0750675 0.073849 +v -0.0273871 0.0750675 0.073849 +v -0.0105792 -0.0792039 -0.0738505 +v -0.0105792 0.0792039 -0.0738505 +v 0.0105792 -0.0792039 -0.0738505 +v 0.0105792 0.0792039 -0.0738505 +v 0.0105792 -0.0792039 0.0738505 +v 0.0105792 0.0792039 0.0738505 +v -0.0105792 -0.0792039 0.0738505 +v -0.0105792 0.0792039 0.0738505 +v -0.0219535 -0.0768314 -0.073871 +v -0.0219535 0.0768314 -0.073871 +v 0.0219535 -0.0768314 -0.073871 +v 0.0219535 0.0768314 -0.073871 +v 0.0219535 -0.0768314 0.073871 +v 0.0219535 0.0768314 0.073871 +v -0.0219535 -0.0768314 0.073871 +v -0.0219535 0.0768314 0.073871 +v -0.0135022 -0.0787572 -0.0738717 +v -0.0135022 0.0787572 -0.0738717 +v 0.0135022 -0.0787572 -0.0738717 +v 0.0135022 0.0787572 -0.0738717 +v 0.0135022 -0.0787572 0.0738717 +v 0.0135022 0.0787572 0.0738717 +v -0.0135022 -0.0787572 0.0738717 +v -0.0135022 0.0787572 0.0738717 +v -0.0559306 -0.0570655 -0.073911 +v -0.0559306 0.0570655 -0.073911 +v 0.0559306 -0.0570655 -0.073911 +v 0.0559306 0.0570655 -0.073911 +v 0.0559306 -0.0570655 0.073911 +v 0.0559306 0.0570655 0.073911 +v -0.0559306 -0.0570655 0.073911 +v -0.0559306 0.0570655 0.073911 +v -0.00405932 -0.0798007 -0.07392 +v -0.00405932 0.0798007 -0.07392 +v 0.00405932 -0.0798007 -0.07392 +v 0.00405932 0.0798007 -0.07392 +v 0.00405932 -0.0798007 0.07392 +v 0.00405932 0.0798007 0.07392 +v -0.00405932 -0.0798007 0.07392 +v -0.00405932 0.0798007 0.07392 +v -0.0377371 -0.0704285 -0.0739663 +v -0.0377371 0.0704285 -0.0739663 +v 0.0377371 -0.0704285 -0.0739663 +v 0.0377371 0.0704285 -0.0739663 +v 0.0377371 -0.0704285 0.0739663 +v 0.0377371 0.0704285 0.0739663 +v -0.0377371 -0.0704285 0.0739663 +v -0.0377371 0.0704285 0.0739663 +v -0.0074661 -0.0795519 -0.0739698 +v -0.0074661 0.0795519 -0.0739698 +v 0.0074661 -0.0795519 -0.0739698 +v 0.0074661 0.0795519 -0.0739698 +v 0.0074661 -0.0795519 0.0739698 +v 0.0074661 0.0795519 0.0739698 +v -0.0074661 -0.0795519 0.0739698 +v -0.0074661 0.0795519 0.0739698 +v -0.0579048 -0.0550513 -0.0740491 +v -0.0579048 0.0550513 -0.0740491 +v 0.0579048 -0.0550513 -0.0740491 +v 0.0579048 0.0550513 -0.0740491 +v 0.0579048 -0.0550513 0.0740491 +v 0.0579048 0.0550513 0.0740491 +v -0.0579048 -0.0550513 0.0740491 +v -0.0579048 0.0550513 0.0740491 +v -0.00392004 -0.0798007 -0.0740593 +v -0.00392004 0.0798007 -0.0740593 +v 0.00392004 -0.0798007 -0.0740593 +v 0.00392004 0.0798007 -0.0740593 +v 0.00392004 -0.0798007 0.0740593 +v 0.00392004 0.0798007 0.0740593 +v -0.00392004 -0.0798007 0.0740593 +v -0.00392004 0.0798007 0.0740593 +v -0.0191392 -0.0775702 -0.0740682 +v -0.0191392 0.0775702 -0.0740682 +v 0.0191392 -0.0775702 -0.0740682 +v 0.0191392 0.0775702 -0.0740682 +v 0.0191392 -0.0775702 0.0740682 +v 0.0191392 0.0775702 0.0740682 +v -0.0191392 -0.0775702 0.0740682 +v -0.0191392 0.0775702 0.0740682 +v -0.0163175 -0.0782124 -0.0740684 +v -0.0163175 0.0782124 -0.0740684 +v 0.0163175 -0.0782124 -0.0740684 +v 0.0163175 0.0782124 -0.0740684 +v 0.0163175 -0.0782124 0.0740684 +v 0.0163175 0.0782124 0.0740684 +v -0.0163175 -0.0782124 0.0740684 +v -0.0163175 0.0782124 0.0740684 +v -0.0598068 -0.0529685 -0.0741821 +v -0.0598068 0.0529685 -0.0741821 +v 0.0598068 -0.0529685 -0.0741821 +v 0.0598068 0.0529685 -0.0741821 +v 0.0598068 -0.0529685 0.0741821 +v 0.0598068 0.0529685 0.0741821 +v -0.0598068 -0.0529685 0.0741821 +v -0.0598068 0.0529685 0.0741821 +v -0.00377598 -0.0798007 -0.0741937 +v -0.00377598 0.0798007 -0.0741937 +v 0.00377598 -0.0798007 -0.0741937 +v 0.00377598 0.0798007 -0.0741937 +v 0.00377598 -0.0798007 0.0741937 +v 0.00377598 0.0798007 0.0741937 +v -0.00377598 -0.0798007 0.0741937 +v -0.00377598 0.0798007 0.0741937 +v -0.0299935 -0.0740447 -0.0742153 +v -0.0299935 0.0740447 -0.0742153 +v 0.0299935 -0.0740447 -0.0742153 +v 0.0299935 0.0740447 -0.0742153 +v 0.0299935 -0.0740447 0.0742153 +v 0.0299935 0.0740447 0.0742153 +v -0.0299935 -0.0740447 0.0742153 +v -0.0299935 0.0740447 0.0742153 +v -0.0104383 -0.0792039 -0.0742174 +v -0.0104383 0.0792039 -0.0742174 +v 0.0104383 -0.0792039 -0.0742174 +v 0.0104383 0.0792039 -0.0742174 +v 0.0104383 -0.0792039 0.0742174 +v 0.0104383 0.0792039 0.0742174 +v -0.0104383 -0.0792039 0.0742174 +v -0.0104383 0.0792039 0.0742174 +v -0.0401855 -0.0690455 -0.0742237 +v -0.0401855 0.0690455 -0.0742237 +v 0.0401855 -0.0690455 -0.0742237 +v 0.0401855 0.0690455 -0.0742237 +v 0.0401855 -0.0690455 0.0742237 +v 0.0401855 0.0690455 0.0742237 +v -0.0401855 -0.0690455 0.0742237 +v -0.0401855 0.0690455 0.0742237 +v -0.00732301 -0.0795519 -0.0742279 +v -0.00732301 0.0795519 -0.0742279 +v 0.00732301 -0.0795519 -0.0742279 +v 0.00732301 0.0795519 -0.0742279 +v 0.00732301 -0.0795519 0.0742279 +v 0.00732301 0.0795519 0.0742279 +v -0.00732301 -0.0795519 0.0742279 +v -0.00732301 0.0795519 0.0742279 +v -0.0616343 -0.0508196 -0.0743099 +v -0.0616343 0.0508196 -0.0743099 +v 0.0616343 -0.0508196 -0.0743099 +v 0.0616343 0.0508196 -0.0743099 +v 0.0616343 -0.0508196 0.0743099 +v 0.0616343 0.0508196 0.0743099 +v -0.0616343 -0.0508196 0.0743099 +v -0.0616343 0.0508196 0.0743099 +v -0.00362733 -0.0798007 -0.0743229 +v -0.00362733 0.0798007 -0.0743229 +v 0.00362733 -0.0798007 -0.0743229 +v 0.00362733 0.0798007 -0.0743229 +v 0.00362733 -0.0798007 0.0743229 +v 0.00362733 0.0798007 0.0743229 +v -0.00362733 -0.0798007 0.0743229 +v -0.00362733 0.0798007 0.0743229 +v -0.0246101 -0.0759968 -0.0743394 +v -0.0246101 0.0759968 -0.0743394 +v 0.0246101 -0.0759968 -0.0743394 +v 0.0246101 0.0759968 -0.0743394 +v 0.0246101 -0.0759968 0.0743394 +v 0.0246101 0.0759968 0.0743394 +v -0.0246101 -0.0759968 0.0743394 +v -0.0246101 0.0759968 0.0743394 +v -0.0133589 -0.0787572 -0.0743406 +v -0.0133589 0.0787572 -0.0743406 +v 0.0133589 -0.0787572 -0.0743406 +v 0.0133589 0.0787572 -0.0743406 +v 0.0133589 -0.0787572 0.0743406 +v 0.0133589 0.0787572 0.0743406 +v -0.0133589 -0.0787572 0.0743406 +v -0.0133589 0.0787572 0.0743406 +v -0.063385 -0.0486075 -0.0744323 +v -0.063385 0.0486075 -0.0744323 +v 0.063385 -0.0486075 -0.0744323 +v 0.063385 0.0486075 -0.0744323 +v 0.063385 -0.0486075 0.0744323 +v 0.063385 0.0486075 0.0744323 +v -0.063385 -0.0486075 0.0744323 +v -0.063385 0.0486075 0.0744323 +v -0.00347425 -0.0798007 -0.0744468 +v -0.00347425 0.0798007 -0.0744468 +v 0.00347425 -0.0798007 -0.0744468 +v 0.00347425 0.0798007 -0.0744468 +v 0.00347425 -0.0798007 0.0744468 +v 0.00347425 0.0798007 0.0744468 +v -0.00347425 -0.0798007 0.0744468 +v -0.00347425 0.0798007 0.0744468 +v -0.0425839 -0.0675765 -0.0744757 +v -0.0425839 0.0675765 -0.0744757 +v 0.0425839 -0.0675765 -0.0744757 +v 0.0425839 0.0675765 -0.0744757 +v 0.0425839 -0.0675765 0.0744757 +v 0.0425839 0.0675765 0.0744757 +v -0.0425839 -0.0675765 0.0744757 +v -0.0425839 0.0675765 0.0744757 +v -0.007171 -0.0795519 -0.0744809 +v -0.007171 0.0795519 -0.0744809 +v 0.007171 -0.0795519 -0.0744809 +v 0.007171 0.0795519 -0.0744809 +v 0.007171 -0.0795519 0.0744809 +v 0.007171 0.0795519 0.0744809 +v -0.007171 -0.0795519 0.0744809 +v -0.007171 0.0795519 0.0744809 +v -0.0650568 -0.0463348 -0.0745492 +v -0.0650568 0.0463348 -0.0745492 +v 0.0650568 -0.0463348 -0.0745492 +v 0.0650568 0.0463348 -0.0745492 +v 0.0650568 -0.0463348 0.0745492 +v 0.0650568 0.0463348 0.0745492 +v -0.0650568 -0.0463348 0.0745492 +v -0.0650568 0.0463348 0.0745492 +v -0.00331694 -0.0798007 -0.0745654 +v -0.00331694 0.0798007 -0.0745654 +v 0.00331694 -0.0798007 -0.0745654 +v 0.00331694 0.0798007 -0.0745654 +v 0.00331694 -0.0798007 0.0745654 +v 0.00331694 0.0798007 0.0745654 +v -0.00331694 -0.0798007 0.0745654 +v -0.00331694 0.0798007 0.0745654 +v -0.0325625 -0.0729297 -0.0745764 +v -0.0325625 0.0729297 -0.0745764 +v 0.0325625 -0.0729297 -0.0745764 +v 0.0325625 0.0729297 -0.0745764 +v 0.0325625 -0.0729297 0.0745764 +v 0.0325625 0.0729297 0.0745764 +v -0.0325625 -0.0729297 0.0745764 +v -0.0325625 0.0729297 0.0745764 +v -0.0102848 -0.0792039 -0.0745791 +v -0.0102848 0.0792039 -0.0745791 +v 0.0102848 -0.0792039 -0.0745791 +v 0.0102848 0.0792039 -0.0745791 +v 0.0102848 -0.0792039 0.0745791 +v 0.0102848 0.0792039 0.0745791 +v -0.0102848 -0.0792039 0.0745791 +v -0.0102848 0.0792039 0.0745791 +v -0.021805 -0.0768314 -0.0746348 +v -0.021805 0.0768314 -0.0746348 +v 0.021805 -0.0768314 -0.0746348 +v 0.021805 0.0768314 -0.0746348 +v 0.021805 -0.0768314 0.0746348 +v 0.021805 0.0768314 0.0746348 +v -0.021805 -0.0768314 0.0746348 +v -0.021805 0.0768314 0.0746348 +v -0.0161656 -0.0782124 -0.0746354 +v -0.0161656 0.0782124 -0.0746354 +v 0.0161656 -0.0782124 -0.0746354 +v 0.0161656 0.0782124 -0.0746354 +v 0.0161656 -0.0782124 0.0746354 +v 0.0161656 0.0782124 0.0746354 +v -0.0161656 -0.0782124 0.0746354 +v -0.0161656 0.0782124 0.0746354 +v -0.0666475 -0.0440044 -0.0746605 +v -0.0666475 0.0440044 -0.0746605 +v 0.0666475 -0.0440044 -0.0746605 +v 0.0666475 0.0440044 -0.0746605 +v 0.0666475 -0.0440044 0.0746605 +v 0.0666475 0.0440044 0.0746605 +v -0.0666475 -0.0440044 0.0746605 +v -0.0666475 0.0440044 0.0746605 +v -0.00315559 -0.0798007 -0.0746784 +v -0.00315559 0.0798007 -0.0746784 +v 0.00315559 -0.0798007 -0.0746784 +v 0.00315559 0.0798007 -0.0746784 +v 0.00315559 -0.0798007 0.0746784 +v 0.00315559 0.0798007 0.0746784 +v -0.00315559 -0.0798007 0.0746784 +v -0.00315559 0.0798007 0.0746784 +v -0.0449292 -0.0660233 -0.0747222 +v -0.0449292 0.0660233 -0.0747222 +v 0.0449292 -0.0660233 -0.0747222 +v 0.0449292 0.0660233 -0.0747222 +v 0.0449292 -0.0660233 0.0747222 +v 0.0449292 0.0660233 0.0747222 +v -0.0449292 -0.0660233 0.0747222 +v -0.0449292 0.0660233 0.0747222 +v -0.00701025 -0.0795519 -0.0747285 +v -0.00701025 0.0795519 -0.0747285 +v 0.00701025 -0.0795519 -0.0747285 +v 0.00701025 0.0795519 -0.0747285 +v 0.00701025 -0.0795519 0.0747285 +v 0.00701025 0.0795519 0.0747285 +v -0.00701025 -0.0795519 0.0747285 +v -0.00701025 0.0795519 0.0747285 +v -0.0189856 -0.0775702 -0.0747336 +v -0.0189856 0.0775702 -0.0747336 +v 0.0189856 -0.0775702 -0.0747336 +v 0.0189856 0.0775702 -0.0747336 +v 0.0189856 -0.0775702 0.0747336 +v 0.0189856 0.0775702 0.0747336 +v -0.0189856 -0.0775702 0.0747336 +v -0.0189856 0.0775702 0.0747336 +v -0.0681552 -0.0416192 -0.0747659 +v -0.0681552 0.0416192 -0.0747659 +v 0.0681552 -0.0416192 -0.0747659 +v 0.0681552 0.0416192 -0.0747659 +v 0.0681552 -0.0416192 0.0747659 +v 0.0681552 0.0416192 0.0747659 +v -0.0681552 -0.0416192 0.0747659 +v -0.0681552 0.0416192 0.0747659 +v -0.0029904 -0.0798007 -0.0747856 +v -0.0029904 0.0798007 -0.0747856 +v 0.0029904 -0.0798007 -0.0747856 +v 0.0029904 0.0798007 -0.0747856 +v 0.0029904 -0.0798007 0.0747856 +v 0.0029904 0.0798007 0.0747856 +v -0.0029904 -0.0798007 0.0747856 +v -0.0029904 0.0798007 0.0747856 +v -0.0272361 -0.0750675 -0.0748025 +v -0.0272361 0.0750675 -0.0748025 +v 0.0272361 -0.0750675 -0.0748025 +v 0.0272361 0.0750675 -0.0748025 +v 0.0272361 -0.0750675 0.0748025 +v 0.0272361 0.0750675 0.0748025 +v -0.0272361 -0.0750675 0.0748025 +v -0.0272361 0.0750675 0.0748025 +v -0.0131992 -0.0787572 -0.0748041 +v -0.0131992 0.0787572 -0.0748041 +v 0.0131992 -0.0787572 -0.0748041 +v 0.0131992 0.0787572 -0.0748041 +v 0.0131992 -0.0787572 0.0748041 +v 0.0131992 0.0787572 0.0748041 +v -0.0131992 -0.0787572 0.0748041 +v -0.0131992 0.0787572 0.0748041 +v -0.069578 -0.0391821 -0.0748654 +v -0.069578 0.0391821 -0.0748654 +v 0.069578 -0.0391821 -0.0748654 +v 0.069578 0.0391821 -0.0748654 +v 0.069578 -0.0391821 0.0748654 +v 0.069578 0.0391821 0.0748654 +v -0.069578 -0.0391821 0.0748654 +v -0.069578 0.0391821 0.0748654 +v -0.00282156 -0.0798007 -0.0748871 +v -0.00282156 0.0798007 -0.0748871 +v 0.00282156 -0.0798007 -0.0748871 +v 0.00282156 0.0798007 -0.0748871 +v 0.00282156 -0.0798007 0.0748871 +v 0.00282156 0.0798007 0.0748871 +v -0.00282156 -0.0798007 0.0748871 +v -0.00282156 0.0798007 0.0748871 +v -0.035091 -0.0717238 -0.0749317 +v -0.035091 0.0717238 -0.0749317 +v 0.035091 -0.0717238 -0.0749317 +v 0.035091 0.0717238 -0.0749317 +v 0.035091 -0.0717238 0.0749317 +v 0.035091 0.0717238 0.0749317 +v -0.035091 -0.0717238 0.0749317 +v -0.035091 0.0717238 0.0749317 +v -0.0101187 -0.0792039 -0.0749352 +v -0.0101187 0.0792039 -0.0749352 +v 0.0101187 -0.0792039 -0.0749352 +v 0.0101187 0.0792039 -0.0749352 +v 0.0101187 -0.0792039 0.0749352 +v 0.0101187 0.0792039 0.0749352 +v -0.0101187 -0.0792039 0.0749352 +v -0.0101187 0.0792039 0.0749352 +v -0.0709141 -0.0366961 -0.0749588 +v -0.0709141 0.0366961 -0.0749588 +v 0.0709141 -0.0366961 -0.0749588 +v 0.0709141 0.0366961 -0.0749588 +v 0.0709141 -0.0366961 0.0749588 +v 0.0709141 0.0366961 0.0749588 +v -0.0709141 -0.0366961 0.0749588 +v -0.0709141 0.0366961 0.0749588 +v -0.0472185 -0.0643878 -0.0749629 +v -0.0472185 0.0643878 -0.0749629 +v 0.0472185 -0.0643878 -0.0749629 +v 0.0472185 0.0643878 -0.0749629 +v 0.0472185 -0.0643878 0.0749629 +v 0.0472185 0.0643878 0.0749629 +v -0.0472185 -0.0643878 0.0749629 +v -0.0472185 0.0643878 0.0749629 +v -0.00684096 -0.0795519 -0.0749702 +v -0.00684096 0.0795519 -0.0749702 +v 0.00684096 -0.0795519 -0.0749702 +v 0.00684096 0.0795519 -0.0749702 +v 0.00684096 -0.0795519 0.0749702 +v 0.00684096 0.0795519 0.0749702 +v -0.00684096 -0.0795519 0.0749702 +v -0.00684096 0.0795519 0.0749702 +v -0.00264928 -0.0798007 -0.0749826 +v -0.00264928 0.0798007 -0.0749826 +v 0.00264928 -0.0798007 -0.0749826 +v 0.00264928 0.0798007 -0.0749826 +v 0.00264928 -0.0798007 0.0749826 +v 0.00264928 0.0798007 0.0749826 +v -0.00264928 -0.0798007 0.0749826 +v -0.00264928 0.0798007 0.0749826 +v -0.0721618 -0.0341645 -0.075046 +v -0.0721618 0.0341645 -0.075046 +v 0.0721618 -0.0341645 -0.075046 +v 0.0721618 0.0341645 -0.075046 +v 0.0721618 -0.0341645 0.075046 +v 0.0721618 0.0341645 0.075046 +v -0.0721618 -0.0341645 0.075046 +v -0.0721618 0.0341645 0.075046 +v -0.00247378 -0.0798007 -0.075072 +v -0.00247378 0.0798007 -0.075072 +v 0.00247378 -0.0798007 -0.075072 +v 0.00247378 0.0798007 -0.075072 +v 0.00247378 -0.0798007 0.075072 +v 0.00247378 0.0798007 0.075072 +v -0.00247378 -0.0798007 0.075072 +v -0.00247378 0.0798007 0.075072 +v -0.0733196 -0.0315903 -0.075127 +v -0.0733196 0.0315903 -0.075127 +v 0.0733196 -0.0315903 -0.075127 +v 0.0733196 0.0315903 -0.075127 +v 0.0733196 -0.0315903 0.075127 +v 0.0733196 0.0315903 0.075127 +v -0.0733196 -0.0315903 0.075127 +v -0.0733196 0.0315903 0.075127 +v -0.00229526 -0.0798007 -0.0751552 +v -0.00229526 0.0798007 -0.0751552 +v 0.00229526 -0.0798007 -0.0751552 +v 0.00229526 0.0798007 -0.0751552 +v 0.00229526 -0.0798007 0.0751552 +v 0.00229526 0.0798007 0.0751552 +v -0.00229526 -0.0798007 0.0751552 +v -0.00229526 0.0798007 0.0751552 +v -0.0244437 -0.0759968 -0.0751957 +v -0.0244437 0.0759968 -0.0751957 +v 0.0244437 -0.0759968 -0.0751957 +v 0.0244437 0.0759968 -0.0751957 +v 0.0244437 -0.0759968 0.0751957 +v 0.0244437 0.0759968 0.0751957 +v -0.0244437 -0.0759968 0.0751957 +v -0.0244437 0.0759968 0.0751957 +v -0.015994 -0.0782124 -0.0751968 +v -0.015994 0.0782124 -0.0751968 +v 0.015994 -0.0782124 -0.0751968 +v 0.015994 0.0782124 -0.0751968 +v 0.015994 -0.0782124 0.0751968 +v 0.015994 0.0782124 0.0751968 +v -0.015994 -0.0782124 0.0751968 +v -0.015994 0.0782124 0.0751968 +v -0.0494489 -0.0626721 -0.0751973 +v -0.0494489 0.0626721 -0.0751973 +v 0.0494489 -0.0626721 -0.0751973 +v 0.0494489 0.0626721 -0.0751973 +v 0.0494489 -0.0626721 0.0751973 +v 0.0494489 0.0626721 0.0751973 +v -0.0494489 -0.0626721 0.0751973 +v -0.0494489 0.0626721 0.0751973 +v -0.0743861 -0.0289768 -0.0752016 +v -0.0743861 0.0289768 -0.0752016 +v 0.0743861 -0.0289768 -0.0752016 +v 0.0743861 0.0289768 -0.0752016 +v 0.0743861 -0.0289768 0.0752016 +v 0.0743861 0.0289768 0.0752016 +v -0.0743861 -0.0289768 0.0752016 +v -0.0743861 0.0289768 0.0752016 +v -0.00666333 -0.0795519 -0.075206 +v -0.00666333 0.0795519 -0.075206 +v 0.00666333 -0.0795519 -0.075206 +v 0.00666333 0.0795519 -0.075206 +v 0.00666333 -0.0795519 0.075206 +v 0.00666333 0.0795519 0.075206 +v -0.00666333 -0.0795519 0.075206 +v -0.00666333 0.0795519 0.075206 +v -0.00211395 -0.0798007 -0.0752322 +v -0.00211395 0.0798007 -0.0752322 +v 0.00211395 -0.0798007 -0.0752322 +v 0.00211395 0.0798007 -0.0752322 +v 0.00211395 -0.0798007 0.0752322 +v 0.00211395 0.0798007 0.0752322 +v -0.00211395 -0.0798007 0.0752322 +v -0.00211395 0.0798007 0.0752322 +v -0.0298281 -0.0740447 -0.0752595 +v -0.0298281 0.0740447 -0.0752595 +v 0.0298281 -0.0740447 -0.0752595 +v 0.0298281 0.0740447 -0.0752595 +v 0.0298281 -0.0740447 0.0752595 +v 0.0298281 0.0740447 0.0752595 +v -0.0298281 -0.0740447 0.0752595 +v -0.0298281 0.0740447 0.0752595 +v -0.0130235 -0.0787572 -0.0752618 +v -0.0130235 0.0787572 -0.0752618 +v 0.0130235 -0.0787572 -0.0752618 +v 0.0130235 0.0787572 -0.0752618 +v 0.0130235 -0.0787572 0.0752618 +v 0.0130235 0.0787572 0.0752618 +v -0.0130235 -0.0787572 0.0752618 +v -0.0130235 0.0787572 0.0752618 +v -0.0753599 -0.0263271 -0.0752697 +v -0.0753599 0.0263271 -0.0752697 +v 0.0753599 -0.0263271 -0.0752697 +v 0.0753599 0.0263271 -0.0752697 +v 0.0753599 -0.0263271 0.0752697 +v 0.0753599 0.0263271 0.0752697 +v -0.0753599 -0.0263271 0.0752697 +v -0.0753599 0.0263271 0.0752697 +v -0.0375757 -0.0704285 -0.0752809 +v -0.0375757 0.0704285 -0.0752809 +v 0.0375757 -0.0704285 -0.0752809 +v 0.0375757 0.0704285 -0.0752809 +v 0.0375757 -0.0704285 0.0752809 +v 0.0375757 0.0704285 0.0752809 +v -0.0375757 -0.0704285 0.0752809 +v -0.0375757 0.0704285 0.0752809 +v -0.00994033 -0.0792039 -0.0752854 +v -0.00994033 0.0792039 -0.0752854 +v 0.00994033 -0.0792039 -0.0752854 +v 0.00994033 0.0792039 -0.0752854 +v 0.00994033 -0.0792039 0.0752854 +v 0.00994033 0.0792039 0.0752854 +v -0.00994033 -0.0792039 0.0752854 +v -0.00994033 0.0792039 0.0752854 +v -0.00193006 -0.0798007 -0.0753028 +v -0.00193006 0.0798007 -0.0753028 +v 0.00193006 -0.0798007 -0.0753028 +v 0.00193006 0.0798007 -0.0753028 +v 0.00193006 -0.0798007 0.0753028 +v 0.00193006 0.0798007 0.0753028 +v -0.00193006 -0.0798007 0.0753028 +v -0.00193006 0.0798007 0.0753028 +v -0.0762398 -0.0236447 -0.0753312 +v -0.0762398 0.0236447 -0.0753312 +v 0.0762398 -0.0236447 -0.0753312 +v 0.0762398 0.0236447 -0.0753312 +v 0.0762398 -0.0236447 0.0753312 +v 0.0762398 0.0236447 0.0753312 +v -0.0762398 -0.0236447 0.0753312 +v -0.0762398 0.0236447 0.0753312 +v -0.00174382 -0.0798007 -0.0753669 +v -0.00174382 0.0798007 -0.0753669 +v 0.00174382 -0.0798007 -0.0753669 +v 0.00174382 0.0798007 -0.0753669 +v 0.00174382 -0.0798007 0.0753669 +v 0.00174382 0.0798007 0.0753669 +v -0.00174382 -0.0798007 0.0753669 +v -0.00174382 0.0798007 0.0753669 +v -0.0770247 -0.0209327 -0.0753861 +v -0.0770247 0.0209327 -0.0753861 +v 0.0770247 -0.0209327 -0.0753861 +v 0.0770247 0.0209327 -0.0753861 +v 0.0770247 -0.0209327 0.0753861 +v 0.0770247 0.0209327 0.0753861 +v -0.0770247 -0.0209327 0.0753861 +v -0.0770247 0.0209327 0.0753861 +v -0.02163 -0.0768314 -0.075393 +v -0.02163 0.0768314 -0.075393 +v 0.02163 -0.0768314 -0.075393 +v 0.02163 0.0768314 -0.075393 +v 0.02163 -0.0768314 0.075393 +v 0.02163 0.0768314 0.075393 +v -0.02163 -0.0768314 0.075393 +v -0.02163 0.0768314 0.075393 +v -0.0188088 -0.0775702 -0.0753933 +v -0.0188088 0.0775702 -0.0753933 +v 0.0188088 -0.0775702 -0.0753933 +v 0.0188088 0.0775702 -0.0753933 +v 0.0188088 -0.0775702 0.0753933 +v 0.0188088 0.0775702 0.0753933 +v -0.0188088 -0.0775702 0.0753933 +v -0.0188088 0.0775702 0.0753933 +v -0.00155545 -0.0798007 -0.0754245 +v -0.00155545 0.0798007 -0.0754245 +v 0.00155545 -0.0798007 -0.0754245 +v 0.00155545 0.0798007 -0.0754245 +v 0.00155545 -0.0798007 0.0754245 +v 0.00155545 0.0798007 0.0754245 +v -0.00155545 -0.0798007 0.0754245 +v -0.00155545 0.0798007 0.0754245 +v -0.0516178 -0.0608783 -0.0754253 +v -0.0516178 0.0608783 -0.0754253 +v 0.0516178 -0.0608783 -0.0754253 +v 0.0516178 0.0608783 -0.0754253 +v 0.0516178 -0.0608783 0.0754253 +v 0.0516178 0.0608783 0.0754253 +v -0.0516178 -0.0608783 0.0754253 +v -0.0516178 0.0608783 0.0754253 +v -0.0777137 -0.0181947 -0.0754343 +v -0.0777137 0.0181947 -0.0754343 +v 0.0777137 -0.0181947 -0.0754343 +v 0.0777137 0.0181947 -0.0754343 +v 0.0777137 -0.0181947 0.0754343 +v 0.0777137 0.0181947 0.0754343 +v -0.0777137 -0.0181947 0.0754343 +v -0.0777137 0.0181947 0.0754343 +v -0.00647758 -0.0795519 -0.0754353 +v -0.00647758 0.0795519 -0.0754353 +v 0.00647758 -0.0795519 -0.0754353 +v 0.00647758 0.0795519 -0.0754353 +v 0.00647758 -0.0795519 0.0754353 +v 0.00647758 0.0795519 0.0754353 +v -0.00647758 -0.0795519 0.0754353 +v -0.00647758 0.0795519 0.0754353 +v -0.00136519 -0.0798007 -0.0754755 +v -0.00136519 0.0798007 -0.0754755 +v 0.00136519 -0.0798007 -0.0754755 +v 0.00136519 0.0798007 -0.0754755 +v 0.00136519 -0.0798007 0.0754755 +v 0.00136519 0.0798007 0.0754755 +v -0.00136519 -0.0798007 0.0754755 +v -0.00136519 0.0798007 0.0754755 +v -0.0783058 -0.0154341 -0.0754757 +v -0.0783058 0.0154341 -0.0754757 +v 0.0783058 -0.0154341 -0.0754757 +v 0.0783058 0.0154341 -0.0754757 +v 0.0783058 -0.0154341 0.0754757 +v 0.0783058 0.0154341 0.0754757 +v -0.0783058 -0.0154341 0.0754757 +v -0.0783058 0.0154341 0.0754757 +v -0.0788004 -0.0126542 -0.0755103 +v -0.0788004 0.0126542 -0.0755103 +v 0.0788004 -0.0126542 -0.0755103 +v 0.0788004 0.0126542 -0.0755103 +v 0.0788004 -0.0126542 0.0755103 +v 0.0788004 0.0126542 0.0755103 +v -0.0788004 -0.0126542 0.0755103 +v -0.0788004 0.0126542 0.0755103 +v -0.00117327 -0.0798007 -0.0755198 +v -0.00117327 0.0798007 -0.0755198 +v 0.00117327 -0.0798007 -0.0755198 +v 0.00117327 0.0798007 -0.0755198 +v 0.00117327 -0.0798007 0.0755198 +v 0.00117327 0.0798007 0.0755198 +v -0.00117327 -0.0798007 0.0755198 +v -0.00117327 0.0798007 0.0755198 +v -0.0791968 -0.00985854 -0.075538 +v -0.0791968 0.00985854 -0.075538 +v 0.0791968 -0.00985854 -0.075538 +v 0.0791968 0.00985854 -0.075538 +v 0.0791968 -0.00985854 0.075538 +v 0.0791968 0.00985854 0.075538 +v -0.0791968 -0.00985854 0.075538 +v -0.0791968 0.00985854 0.075538 +v -0.000979917 -0.0798007 -0.0755574 +v -0.000979917 0.0798007 -0.0755574 +v 0.000979917 -0.0798007 -0.0755574 +v 0.000979917 0.0798007 -0.0755574 +v 0.000979917 -0.0798007 0.0755574 +v 0.000979917 0.0798007 0.0755574 +v -0.000979917 -0.0798007 0.0755574 +v -0.000979917 0.0798007 0.0755574 +v -0.0794946 -0.0070506 -0.0755588 +v -0.0794946 0.0070506 -0.0755588 +v 0.0794946 -0.0070506 -0.0755588 +v 0.0794946 0.0070506 -0.0755588 +v 0.0794946 -0.0070506 0.0755588 +v 0.0794946 0.0070506 0.0755588 +v -0.0794946 -0.0070506 0.0755588 +v -0.0794946 0.0070506 0.0755588 +v -0.0796933 -0.00423388 -0.0755727 +v -0.0796933 0.00423388 -0.0755727 +v 0.0796933 -0.00423388 -0.0755727 +v 0.0796933 0.00423388 -0.0755727 +v 0.0796933 -0.00423388 0.0755727 +v 0.0796933 0.00423388 0.0755727 +v -0.0796933 -0.00423388 0.0755727 +v -0.0796933 0.00423388 0.0755727 +v -0.0797927 -0.00141188 -0.0755797 +v -0.0797927 0.00141188 -0.0755797 +v 0.0797927 -0.00141188 -0.0755797 +v 0.0797927 0.00141188 -0.0755797 +v 0.0797927 -0.00141188 0.0755797 +v 0.0797927 0.00141188 0.0755797 +v -0.0797927 -0.00141188 0.0755797 +v -0.0797927 0.00141188 0.0755797 +v -0.00078537 -0.0798007 -0.0755882 +v -0.00078537 0.0798007 -0.0755882 +v 0.00078537 -0.0798007 -0.0755882 +v 0.00078537 0.0798007 -0.0755882 +v 0.00078537 -0.0798007 0.0755882 +v 0.00078537 0.0798007 0.0755882 +v -0.00078537 -0.0798007 0.0755882 +v -0.00078537 0.0798007 0.0755882 +v -0.000589866 -0.0798007 -0.0756122 +v -0.000589866 0.0798007 -0.0756122 +v 0.000589866 -0.0798007 -0.0756122 +v 0.000589866 0.0798007 -0.0756122 +v 0.000589866 -0.0798007 0.0756122 +v 0.000589866 0.0798007 0.0756122 +v -0.000589866 -0.0798007 0.0756122 +v -0.000589866 0.0798007 0.0756122 +v -0.0400137 -0.0690455 -0.0756236 +v -0.0400137 0.0690455 -0.0756236 +v 0.0400137 -0.0690455 -0.0756236 +v 0.0400137 0.0690455 -0.0756236 +v 0.0400137 -0.0690455 0.0756236 +v 0.0400137 0.0690455 0.0756236 +v -0.0400137 -0.0690455 0.0756236 +v -0.0400137 0.0690455 0.0756236 +v -0.00974982 -0.0792039 -0.0756291 +v -0.00974982 0.0792039 -0.0756291 +v 0.00974982 -0.0792039 -0.0756291 +v 0.00974982 0.0792039 -0.0756291 +v 0.00974982 -0.0792039 0.0756291 +v 0.00974982 0.0792039 0.0756291 +v -0.00974982 -0.0792039 0.0756291 +v -0.00974982 0.0792039 0.0756291 +v -0.000393644 -0.0798007 -0.0756294 +v -0.000393644 0.0798007 -0.0756294 +v 0.000393644 -0.0798007 -0.0756294 +v 0.000393644 0.0798007 -0.0756294 +v 0.000393644 -0.0798007 0.0756294 +v 0.000393644 0.0798007 0.0756294 +v -0.000393644 -0.0798007 0.0756294 +v -0.000393644 0.0798007 0.0756294 +v -0.000196942 -0.0798007 -0.0756397 +v -0.000196942 0.0798007 -0.0756397 +v 0.000196942 -0.0798007 -0.0756397 +v 0.000196942 0.0798007 -0.0756397 +v 0.000196942 -0.0798007 0.0756397 +v 0.000196942 0.0798007 0.0756397 +v -0.000196942 -0.0798007 0.0756397 +v -0.000196942 0.0798007 0.0756397 +v -1.03662e-18 -0.0798007 -0.0756431 +v -1.03662e-18 0.0798007 -0.0756431 +v 3.45541e-19 -0.0798007 0.0756431 +v 3.45541e-19 0.0798007 0.0756431 +v -0.0537224 -0.0590087 -0.0756465 +v -0.0537224 0.0590087 -0.0756465 +v 0.0537224 -0.0590087 -0.0756465 +v 0.0537224 0.0590087 -0.0756465 +v 0.0537224 -0.0590087 0.0756465 +v 0.0537224 0.0590087 0.0756465 +v -0.0537224 -0.0590087 0.0756465 +v -0.0537224 0.0590087 0.0756465 +v -0.00628395 -0.0795519 -0.0756581 +v -0.00628395 0.0795519 -0.0756581 +v 0.00628395 -0.0795519 -0.0756581 +v 0.00628395 0.0795519 -0.0756581 +v 0.00628395 -0.0795519 0.0756581 +v 0.00628395 0.0795519 0.0756581 +v -0.00628395 -0.0795519 0.0756581 +v -0.00628395 0.0795519 0.0756581 +v -0.032383 -0.0729297 -0.07571 +v -0.032383 0.0729297 -0.07571 +v 0.032383 -0.0729297 -0.07571 +v 0.032383 0.0729297 -0.07571 +v 0.032383 -0.0729297 0.07571 +v 0.032383 0.0729297 0.07571 +v -0.032383 -0.0729297 0.07571 +v -0.032383 0.0729297 0.07571 +v -0.012832 -0.0787572 -0.0757132 +v -0.012832 0.0787572 -0.0757132 +v 0.012832 -0.0787572 -0.0757132 +v 0.012832 0.0787572 -0.0757132 +v 0.012832 -0.0787572 0.0757132 +v 0.012832 0.0787572 0.0757132 +v -0.012832 -0.0787572 0.0757132 +v -0.012832 0.0787572 0.0757132 +v -0.0270519 -0.0750675 -0.0757501 +v -0.0270519 0.0750675 -0.0757501 +v 0.0270519 -0.0750675 -0.0757501 +v 0.0270519 0.0750675 -0.0757501 +v 0.0270519 -0.0750675 0.0757501 +v 0.0270519 0.0750675 0.0757501 +v -0.0270519 -0.0750675 0.0757501 +v -0.0270519 0.0750675 0.0757501 +v -0.0158028 -0.0782124 -0.0757518 +v -0.0158028 0.0782124 -0.0757518 +v 0.0158028 -0.0782124 -0.0757518 +v 0.0158028 0.0782124 -0.0757518 +v 0.0158028 -0.0782124 0.0757518 +v 0.0158028 0.0782124 0.0757518 +v -0.0158028 -0.0782124 0.0757518 +v -0.0158028 0.0782124 0.0757518 +v -0.05576 -0.0570655 -0.0758606 +v -0.05576 0.0570655 -0.0758606 +v 0.05576 -0.0570655 -0.0758606 +v 0.05576 0.0570655 -0.0758606 +v 0.05576 -0.0570655 0.0758606 +v 0.05576 0.0570655 0.0758606 +v -0.05576 -0.0570655 0.0758606 +v -0.05576 0.0570655 0.0758606 +v -0.00608265 -0.0795519 -0.0758739 +v -0.00608265 0.0795519 -0.0758739 +v 0.00608265 -0.0795519 -0.0758739 +v 0.00608265 0.0795519 -0.0758739 +v 0.00608265 -0.0795519 0.0758739 +v 0.00608265 0.0795519 0.0758739 +v -0.00608265 -0.0795519 0.0758739 +v -0.00608265 0.0795519 0.0758739 +v -0.0424017 -0.0675765 -0.0759592 +v -0.0424017 0.0675765 -0.0759592 +v 0.0424017 -0.0675765 -0.0759592 +v 0.0424017 0.0675765 -0.0759592 +v 0.0424017 -0.0675765 0.0759592 +v 0.0424017 0.0675765 0.0759592 +v -0.0424017 -0.0675765 0.0759592 +v -0.0424017 0.0675765 0.0759592 +v -0.00954743 -0.0792039 -0.0759659 +v -0.00954743 0.0792039 -0.0759659 +v 0.00954743 -0.0792039 -0.0759659 +v 0.00954743 0.0792039 -0.0759659 +v 0.00954743 -0.0792039 0.0759659 +v 0.00954743 0.0792039 0.0759659 +v -0.00954743 -0.0792039 0.0759659 +v -0.00954743 0.0792039 0.0759659 +v -0.0242475 -0.0759968 -0.0760456 +v -0.0242475 0.0759968 -0.0760456 +v 0.0242475 -0.0759968 -0.0760456 +v 0.0242475 0.0759968 -0.0760456 +v 0.0242475 -0.0759968 0.0760456 +v 0.0242475 0.0759968 0.0760456 +v -0.0242475 -0.0759968 0.0760456 +v -0.0242475 0.0759968 0.0760456 +v -0.0186091 -0.0775702 -0.0760465 +v -0.0186091 0.0775702 -0.0760465 +v 0.0186091 -0.0775702 -0.0760465 +v 0.0186091 0.0775702 -0.0760465 +v 0.0186091 -0.0775702 0.0760465 +v 0.0186091 0.0775702 0.0760465 +v -0.0186091 -0.0775702 0.0760465 +v -0.0186091 0.0775702 0.0760465 +v -0.0577282 -0.0550513 -0.0760675 +v -0.0577282 0.0550513 -0.0760675 +v 0.0577282 -0.0550513 -0.0760675 +v 0.0577282 0.0550513 -0.0760675 +v 0.0577282 -0.0550513 0.0760675 +v 0.0577282 0.0550513 0.0760675 +v -0.0577282 -0.0550513 0.0760675 +v -0.0577282 0.0550513 0.0760675 +v -0.00587395 -0.0795519 -0.0760827 +v -0.00587395 0.0795519 -0.0760827 +v 0.00587395 -0.0795519 -0.0760827 +v 0.00587395 0.0795519 -0.0760827 +v 0.00587395 -0.0795519 0.0760827 +v 0.00587395 0.0795519 0.0760827 +v -0.00587395 -0.0795519 0.0760827 +v -0.00587395 0.0795519 0.0760827 +v -0.0214286 -0.0768314 -0.0761446 +v -0.0214286 0.0768314 -0.0761446 +v 0.0214286 -0.0768314 -0.0761446 +v 0.0214286 0.0768314 -0.0761446 +v 0.0214286 -0.0768314 0.0761446 +v 0.0214286 0.0768314 0.0761446 +v -0.0214286 -0.0768314 0.0761446 +v -0.0214286 0.0768314 0.0761446 +v -0.0348975 -0.0717238 -0.0761534 +v -0.0348975 0.0717238 -0.0761534 +v 0.0348975 -0.0717238 -0.0761534 +v 0.0348975 0.0717238 -0.0761534 +v 0.0348975 -0.0717238 0.0761534 +v 0.0348975 0.0717238 0.0761534 +v -0.0348975 -0.0717238 0.0761534 +v -0.0348975 0.0717238 0.0761534 +v -0.0126248 -0.0787572 -0.0761575 +v -0.0126248 0.0787572 -0.0761575 +v 0.0126248 -0.0787572 -0.0761575 +v 0.0126248 0.0787572 -0.0761575 +v 0.0126248 -0.0787572 0.0761575 +v 0.0126248 0.0787572 0.0761575 +v -0.0126248 -0.0787572 0.0761575 +v -0.0126248 0.0787572 0.0761575 +v -0.0596244 -0.0529685 -0.0762668 +v -0.0596244 0.0529685 -0.0762668 +v 0.0596244 -0.0529685 -0.0762668 +v 0.0596244 0.0529685 -0.0762668 +v 0.0596244 -0.0529685 0.0762668 +v 0.0596244 0.0529685 0.0762668 +v -0.0596244 -0.0529685 0.0762668 +v -0.0596244 0.0529685 0.0762668 +v -0.00565809 -0.0795519 -0.0762839 +v -0.00565809 0.0795519 -0.0762839 +v 0.00565809 -0.0795519 -0.0762839 +v 0.00565809 0.0795519 -0.0762839 +v 0.00565809 -0.0795519 0.0762839 +v 0.00565809 0.0795519 0.0762839 +v -0.00565809 -0.0795519 0.0762839 +v -0.00565809 0.0795519 0.0762839 +v -0.044737 -0.0660233 -0.0762874 +v -0.044737 0.0660233 -0.0762874 +v 0.044737 -0.0660233 -0.0762874 +v 0.044737 0.0660233 -0.0762874 +v 0.044737 -0.0660233 0.0762874 +v 0.044737 0.0660233 0.0762874 +v -0.044737 -0.0660233 0.0762874 +v -0.044737 0.0660233 0.0762874 +v -0.0093334 -0.0792039 -0.0762955 +v -0.0093334 0.0792039 -0.0762955 +v 0.0093334 -0.0792039 -0.0762955 +v 0.0093334 0.0792039 -0.0762955 +v 0.0093334 -0.0792039 0.0762955 +v 0.0093334 0.0792039 0.0762955 +v -0.0093334 -0.0792039 0.0762955 +v -0.0093334 0.0792039 0.0762955 +v -0.0296264 -0.0740447 -0.0762973 +v -0.0296264 0.0740447 -0.0762973 +v 0.0296264 -0.0740447 -0.0762973 +v 0.0296264 0.0740447 -0.0762973 +v 0.0296264 -0.0740447 0.0762973 +v 0.0296264 0.0740447 0.0762973 +v -0.0296264 -0.0740447 0.0762973 +v -0.0296264 0.0740447 0.0762973 +v -0.0155925 -0.0782124 -0.0762998 +v -0.0155925 0.0782124 -0.0762998 +v 0.0155925 -0.0782124 -0.0762998 +v 0.0155925 0.0782124 -0.0762998 +v 0.0155925 -0.0782124 0.0762998 +v 0.0155925 0.0782124 0.0762998 +v -0.0155925 -0.0782124 0.0762998 +v -0.0155925 0.0782124 0.0762998 +v -0.0614464 -0.0508196 -0.0764583 +v -0.0614464 0.0508196 -0.0764583 +v 0.0614464 -0.0508196 -0.0764583 +v 0.0614464 0.0508196 -0.0764583 +v 0.0614464 -0.0508196 0.0764583 +v 0.0614464 0.0508196 0.0764583 +v -0.0614464 -0.0508196 0.0764583 +v -0.0614464 0.0508196 0.0764583 +v -0.00543534 -0.0795519 -0.0764776 +v -0.00543534 0.0795519 -0.0764776 +v 0.00543534 -0.0795519 -0.0764776 +v 0.00543534 0.0795519 -0.0764776 +v 0.00543534 -0.0795519 0.0764776 +v 0.00543534 0.0795519 0.0764776 +v -0.00543534 -0.0795519 0.0764776 +v -0.00543534 0.0795519 0.0764776 +v -0.0373685 -0.0704285 -0.0765891 +v -0.0373685 0.0704285 -0.0765891 +v 0.0373685 -0.0704285 -0.0765891 +v 0.0373685 0.0704285 -0.0765891 +v 0.0373685 -0.0704285 0.0765891 +v 0.0373685 0.0704285 0.0765891 +v -0.0373685 -0.0704285 0.0765891 +v -0.0373685 0.0704285 0.0765891 +v -0.0124022 -0.0787572 -0.0765944 +v -0.0124022 0.0787572 -0.0765944 +v 0.0124022 -0.0787572 -0.0765944 +v 0.0124022 0.0787572 -0.0765944 +v 0.0124022 -0.0787572 0.0765944 +v 0.0124022 0.0787572 0.0765944 +v -0.0124022 -0.0787572 0.0765944 +v -0.0124022 0.0787572 0.0765944 +v -0.0470165 -0.0643878 -0.0766077 +v -0.0470165 0.0643878 -0.0766077 +v 0.0470165 -0.0643878 -0.0766077 +v 0.0470165 0.0643878 -0.0766077 +v 0.0470165 -0.0643878 0.0766077 +v 0.0470165 0.0643878 0.0766077 +v -0.0470165 -0.0643878 0.0766077 +v -0.0470165 0.0643878 0.0766077 +v -0.00910801 -0.0792039 -0.0766174 +v -0.00910801 0.0792039 -0.0766174 +v 0.00910801 -0.0792039 -0.0766174 +v 0.00910801 0.0792039 -0.0766174 +v 0.00910801 -0.0792039 0.0766174 +v 0.00910801 0.0792039 0.0766174 +v -0.00910801 -0.0792039 0.0766174 +v -0.00910801 0.0792039 0.0766174 +v -0.0631917 -0.0486075 -0.0766417 +v -0.0631917 0.0486075 -0.0766417 +v 0.0631917 -0.0486075 -0.0766417 +v 0.0631917 0.0486075 -0.0766417 +v 0.0631917 -0.0486075 0.0766417 +v 0.0631917 0.0486075 0.0766417 +v -0.0631917 -0.0486075 0.0766417 +v -0.0631917 0.0486075 0.0766417 +v -0.00520596 -0.0795519 -0.0766633 +v -0.00520596 0.0795519 -0.0766633 +v 0.00520596 -0.0795519 -0.0766633 +v 0.00520596 0.0795519 -0.0766633 +v 0.00520596 -0.0795519 0.0766633 +v 0.00520596 0.0795519 0.0766633 +v -0.00520596 -0.0795519 0.0766633 +v -0.00520596 0.0795519 0.0766633 +v -0.0268347 -0.0750675 -0.0766907 +v -0.0268347 0.0750675 -0.0766907 +v 0.0268347 -0.0750675 -0.0766907 +v 0.0268347 0.0750675 -0.0766907 +v 0.0268347 -0.0750675 0.0766907 +v 0.0268347 0.0750675 0.0766907 +v -0.0268347 -0.0750675 0.0766907 +v -0.0268347 0.0750675 0.0766907 +v -0.0183868 -0.0775702 -0.0766922 +v -0.0183868 0.0775702 -0.0766922 +v 0.0183868 -0.0775702 -0.0766922 +v 0.0183868 0.0775702 -0.0766922 +v 0.0183868 -0.0775702 0.0766922 +v 0.0183868 0.0775702 0.0766922 +v -0.0183868 -0.0775702 0.0766922 +v -0.0183868 0.0775702 0.0766922 +v -0.0648584 -0.0463348 -0.0768169 +v -0.0648584 0.0463348 -0.0768169 +v 0.0648584 -0.0463348 -0.0768169 +v 0.0648584 0.0463348 -0.0768169 +v 0.0648584 -0.0463348 0.0768169 +v 0.0648584 0.0463348 0.0768169 +v -0.0648584 -0.0463348 0.0768169 +v -0.0648584 0.0463348 0.0768169 +v -0.032164 -0.0729297 -0.0768367 +v -0.032164 0.0729297 -0.0768367 +v 0.032164 -0.0729297 -0.0768367 +v 0.032164 0.0729297 -0.0768367 +v 0.032164 -0.0729297 0.0768367 +v 0.032164 0.0729297 0.0768367 +v -0.032164 -0.0729297 0.0768367 +v -0.032164 0.0729297 0.0768367 +v -0.0153631 -0.0782124 -0.0768401 +v -0.0153631 0.0782124 -0.0768401 +v 0.0153631 -0.0782124 -0.0768401 +v 0.0153631 0.0782124 -0.0768401 +v 0.0153631 -0.0782124 0.0768401 +v 0.0153631 0.0782124 0.0768401 +v -0.0153631 -0.0782124 0.0768401 +v -0.0153631 0.0782124 0.0768401 +v -0.00497025 -0.0795519 -0.076841 +v -0.00497025 0.0795519 -0.076841 +v 0.00497025 -0.0795519 -0.076841 +v 0.00497025 0.0795519 -0.076841 +v 0.00497025 -0.0795519 0.076841 +v 0.00497025 0.0795519 0.076841 +v -0.00497025 -0.0795519 0.076841 +v -0.00497025 0.0795519 0.076841 +v -0.0240217 -0.0759968 -0.0768881 +v -0.0240217 0.0759968 -0.0768881 +v 0.0240217 -0.0759968 -0.0768881 +v 0.0240217 0.0759968 -0.0768881 +v 0.0240217 -0.0759968 0.0768881 +v 0.0240217 0.0759968 0.0768881 +v -0.0240217 -0.0759968 0.0768881 +v -0.0240217 0.0759968 0.0768881 +v -0.0212011 -0.0768314 -0.0768887 +v -0.0212011 0.0768314 -0.0768887 +v 0.0212011 -0.0768314 -0.0768887 +v 0.0212011 0.0768314 -0.0768887 +v 0.0212011 -0.0768314 0.0768887 +v 0.0212011 0.0768314 0.0768887 +v -0.0212011 -0.0768314 0.0768887 +v -0.0212011 0.0768314 0.0768887 +v -0.0492374 -0.0626721 -0.0769199 +v -0.0492374 0.0626721 -0.0769199 +v 0.0492374 -0.0626721 -0.0769199 +v 0.0492374 0.0626721 -0.0769199 +v 0.0492374 -0.0626721 0.0769199 +v 0.0492374 0.0626721 0.0769199 +v -0.0492374 -0.0626721 0.0769199 +v -0.0492374 0.0626721 0.0769199 +v -0.00887152 -0.0792039 -0.0769312 +v -0.00887152 0.0792039 -0.0769312 +v 0.00887152 -0.0792039 -0.0769312 +v 0.00887152 0.0792039 -0.0769312 +v 0.00887152 -0.0792039 0.0769312 +v 0.00887152 0.0792039 0.0769312 +v -0.00887152 -0.0792039 0.0769312 +v -0.00887152 0.0792039 0.0769312 +v -0.0664443 -0.0440044 -0.0769836 +v -0.0664443 0.0440044 -0.0769836 +v 0.0664443 -0.0440044 -0.0769836 +v 0.0664443 0.0440044 -0.0769836 +v 0.0664443 -0.0440044 0.0769836 +v 0.0664443 0.0440044 0.0769836 +v -0.0664443 -0.0440044 0.0769836 +v -0.0664443 0.0440044 0.0769836 +v -0.00472847 -0.0795519 -0.0770102 +v -0.00472847 0.0795519 -0.0770102 +v 0.00472847 -0.0795519 -0.0770102 +v 0.00472847 0.0795519 -0.0770102 +v 0.00472847 -0.0795519 0.0770102 +v 0.00472847 0.0795519 0.0770102 +v -0.00472847 -0.0795519 0.0770102 +v -0.00472847 0.0795519 0.0770102 +v -0.039793 -0.0690455 -0.0770166 +v -0.039793 0.0690455 -0.0770166 +v 0.039793 -0.0690455 -0.0770166 +v 0.039793 0.0690455 -0.0770166 +v 0.039793 -0.0690455 0.0770166 +v 0.039793 0.0690455 0.0770166 +v -0.039793 -0.0690455 0.0770166 +v -0.039793 0.0690455 0.0770166 +v -0.0121645 -0.0787572 -0.0770232 +v -0.0121645 0.0787572 -0.0770232 +v 0.0121645 -0.0787572 -0.0770232 +v 0.0121645 0.0787572 -0.0770232 +v 0.0121645 -0.0787572 0.0770232 +v 0.0121645 0.0787572 0.0770232 +v -0.0121645 -0.0787572 0.0770232 +v -0.0121645 0.0787572 0.0770232 +v -0.0679474 -0.0416192 -0.0771416 +v -0.0679474 0.0416192 -0.0771416 +v 0.0679474 -0.0416192 -0.0771416 +v 0.0679474 0.0416192 -0.0771416 +v 0.0679474 -0.0416192 0.0771416 +v 0.0679474 0.0416192 0.0771416 +v -0.0679474 -0.0416192 0.0771416 +v -0.0679474 0.0416192 0.0771416 +v -0.00448094 -0.0795519 -0.077171 +v -0.00448094 0.0795519 -0.077171 +v 0.00448094 -0.0795519 -0.077171 +v 0.00448094 0.0795519 -0.077171 +v 0.00448094 -0.0795519 0.077171 +v 0.00448094 0.0795519 0.077171 +v -0.00448094 -0.0795519 0.077171 +v -0.00448094 0.0795519 0.077171 +v -0.051397 -0.0608783 -0.0772234 +v -0.051397 0.0608783 -0.0772234 +v 0.051397 -0.0608783 -0.0772234 +v 0.051397 0.0608783 -0.0772234 +v 0.051397 -0.0608783 0.0772234 +v 0.051397 0.0608783 0.0772234 +v -0.051397 -0.0608783 0.0772234 +v -0.051397 0.0608783 0.0772234 +v -0.00862422 -0.0792039 -0.0772366 +v -0.00862422 0.0792039 -0.0772366 +v 0.00862422 -0.0792039 -0.0772366 +v 0.00862422 0.0792039 -0.0772366 +v 0.00862422 -0.0792039 0.0772366 +v 0.00862422 0.0792039 0.0772366 +v -0.00862422 -0.0792039 0.0772366 +v -0.00862422 0.0792039 0.0772366 +v -0.0693658 -0.0391821 -0.0772906 +v -0.0693658 0.0391821 -0.0772906 +v 0.0693658 -0.0391821 -0.0772906 +v 0.0693658 0.0391821 -0.0772906 +v 0.0693658 -0.0391821 0.0772906 +v 0.0693658 0.0391821 0.0772906 +v -0.0693658 -0.0391821 0.0772906 +v -0.0693658 0.0391821 0.0772906 +v -0.00422794 -0.0795519 -0.077323 +v -0.00422794 0.0795519 -0.077323 +v 0.00422794 -0.0795519 -0.077323 +v 0.00422794 0.0795519 -0.077323 +v 0.00422794 -0.0795519 0.077323 +v 0.00422794 0.0795519 0.077323 +v -0.00422794 -0.0795519 0.077323 +v -0.00422794 0.0795519 0.077323 +v -0.0293886 -0.0740447 -0.0773274 +v -0.0293886 0.0740447 -0.0773274 +v 0.0293886 -0.0740447 -0.0773274 +v 0.0293886 0.0740447 -0.0773274 +v 0.0293886 -0.0740447 0.0773274 +v 0.0293886 0.0740447 0.0773274 +v -0.0293886 -0.0740447 0.0773274 +v -0.0293886 0.0740447 0.0773274 +v -0.018142 -0.0775702 -0.0773299 +v -0.018142 0.0775702 -0.0773299 +v 0.018142 -0.0775702 -0.0773299 +v 0.018142 0.0775702 -0.0773299 +v 0.018142 -0.0775702 0.0773299 +v 0.018142 0.0775702 0.0773299 +v -0.018142 -0.0775702 0.0773299 +v -0.018142 0.0775702 0.0773299 +v -0.0346615 -0.0717238 -0.0773675 +v -0.0346615 0.0717238 -0.0773675 +v 0.0346615 -0.0717238 -0.0773675 +v 0.0346615 0.0717238 -0.0773675 +v 0.0346615 -0.0717238 0.0773675 +v 0.0346615 0.0717238 0.0773675 +v -0.0346615 -0.0717238 0.0773675 +v -0.0346615 0.0717238 0.0773675 +v -0.0151151 -0.0782124 -0.0773721 +v -0.0151151 0.0782124 -0.0773721 +v 0.0151151 -0.0782124 -0.0773721 +v 0.0151151 0.0782124 -0.0773721 +v 0.0151151 -0.0782124 0.0773721 +v 0.0151151 0.0782124 0.0773721 +v -0.0151151 -0.0782124 0.0773721 +v -0.0151151 0.0782124 0.0773721 +v -0.0706978 -0.0366961 -0.0774306 +v -0.0706978 0.0366961 -0.0774306 +v 0.0706978 -0.0366961 -0.0774306 +v 0.0706978 0.0366961 -0.0774306 +v 0.0706978 -0.0366961 0.0774306 +v 0.0706978 0.0366961 0.0774306 +v -0.0706978 -0.0366961 0.0774306 +v -0.0706978 0.0366961 0.0774306 +v -0.0421679 -0.0675765 -0.0774353 +v -0.0421679 0.0675765 -0.0774353 +v 0.0421679 -0.0675765 -0.0774353 +v 0.0421679 0.0675765 -0.0774353 +v 0.0421679 -0.0675765 0.0774353 +v 0.0421679 0.0675765 0.0774353 +v -0.0421679 -0.0675765 0.0774353 +v -0.0421679 0.0675765 0.0774353 +v -0.011912 -0.0787572 -0.0774434 +v -0.011912 0.0787572 -0.0774434 +v 0.011912 -0.0787572 -0.0774434 +v 0.011912 0.0787572 -0.0774434 +v 0.011912 -0.0787572 0.0774434 +v 0.011912 0.0787572 0.0774434 +v -0.011912 -0.0787572 0.0774434 +v -0.011912 0.0787572 0.0774434 +v -0.0039698 -0.0795519 -0.0774661 +v -0.0039698 0.0795519 -0.0774661 +v 0.0039698 -0.0795519 -0.0774661 +v 0.0039698 0.0795519 -0.0774661 +v 0.0039698 -0.0795519 0.0774661 +v 0.0039698 0.0795519 0.0774661 +v -0.0039698 -0.0795519 0.0774661 +v -0.0039698 0.0795519 0.0774661 +v -0.0534926 -0.0590087 -0.0775179 +v -0.0534926 0.0590087 -0.0775179 +v 0.0534926 -0.0590087 -0.0775179 +v 0.0534926 0.0590087 -0.0775179 +v 0.0534926 -0.0590087 0.0775179 +v 0.0534926 0.0590087 0.0775179 +v -0.0534926 -0.0590087 0.0775179 +v -0.0534926 0.0590087 0.0775179 +v -0.00836641 -0.0792039 -0.0775332 +v -0.00836641 0.0792039 -0.0775332 +v 0.00836641 -0.0792039 -0.0775332 +v 0.00836641 0.0792039 -0.0775332 +v 0.00836641 -0.0792039 0.0775332 +v 0.00836641 0.0792039 0.0775332 +v -0.00836641 -0.0792039 0.0775332 +v -0.00836641 0.0792039 0.0775332 +v -0.0719417 -0.0341645 -0.0775614 +v -0.0719417 0.0341645 -0.0775614 +v 0.0719417 -0.0341645 -0.0775614 +v 0.0719417 0.0341645 -0.0775614 +v 0.0719417 -0.0341645 0.0775614 +v 0.0719417 0.0341645 0.0775614 +v -0.0719417 -0.0341645 0.0775614 +v -0.0719417 0.0341645 0.0775614 +v -0.00370682 -0.0795519 -0.0776001 +v -0.00370682 0.0795519 -0.0776001 +v 0.00370682 -0.0795519 -0.0776001 +v 0.00370682 0.0795519 -0.0776001 +v 0.00370682 -0.0795519 0.0776001 +v 0.00370682 0.0795519 0.0776001 +v -0.00370682 -0.0795519 0.0776001 +v -0.00370682 0.0795519 0.0776001 +v -0.0265849 -0.0750675 -0.0776231 +v -0.0265849 0.0750675 -0.0776231 +v 0.0265849 -0.0750675 -0.0776231 +v 0.0265849 0.0750675 -0.0776231 +v 0.0265849 -0.0750675 0.0776231 +v 0.0265849 0.0750675 0.0776231 +v -0.0265849 -0.0750675 0.0776231 +v -0.0265849 0.0750675 0.0776231 +v -0.0209478 -0.0768314 -0.0776244 +v -0.0209478 0.0768314 -0.0776244 +v 0.0209478 -0.0768314 -0.0776244 +v 0.0209478 0.0768314 -0.0776244 +v 0.0209478 -0.0768314 0.0776244 +v 0.0209478 0.0768314 0.0776244 +v -0.0209478 -0.0768314 0.0776244 +v -0.0209478 0.0768314 0.0776244 +v -0.073096 -0.0315903 -0.0776827 +v -0.073096 0.0315903 -0.0776827 +v 0.073096 -0.0315903 -0.0776827 +v 0.073096 0.0315903 -0.0776827 +v 0.073096 -0.0315903 0.0776827 +v 0.073096 0.0315903 0.0776827 +v -0.073096 -0.0315903 0.0776827 +v -0.073096 0.0315903 0.0776827 +v -0.0237667 -0.0759968 -0.0777223 +v -0.0237667 0.0759968 -0.0777223 +v 0.0237667 -0.0759968 -0.0777223 +v 0.0237667 0.0759968 -0.0777223 +v 0.0237667 -0.0759968 0.0777223 +v 0.0237667 0.0759968 0.0777223 +v -0.0237667 -0.0759968 0.0777223 +v -0.0237667 0.0759968 0.0777223 +v -0.00343932 -0.0795519 -0.0777248 +v -0.00343932 0.0795519 -0.0777248 +v 0.00343932 -0.0795519 -0.0777248 +v 0.00343932 0.0795519 -0.0777248 +v 0.00343932 -0.0795519 0.0777248 +v 0.00343932 0.0795519 0.0777248 +v -0.00343932 -0.0795519 0.0777248 +v -0.00343932 0.0795519 0.0777248 +v -0.0741592 -0.0289768 -0.0777944 +v -0.0741592 0.0289768 -0.0777944 +v 0.0741592 -0.0289768 -0.0777944 +v 0.0741592 0.0289768 -0.0777944 +v 0.0741592 -0.0289768 0.0777944 +v 0.0741592 0.0289768 0.0777944 +v -0.0741592 -0.0289768 0.0777944 +v -0.0741592 0.0289768 0.0777944 +v -0.0555215 -0.0570655 -0.077803 +v -0.0555215 0.0570655 -0.077803 +v 0.0555215 -0.0570655 -0.077803 +v 0.0555215 0.0570655 -0.077803 +v 0.0555215 -0.0570655 0.077803 +v 0.0555215 0.0570655 0.077803 +v -0.0555215 -0.0570655 0.077803 +v -0.0555215 0.0570655 0.077803 +v -0.00809841 -0.0792039 -0.0778205 +v -0.00809841 0.0792039 -0.0778205 +v 0.00809841 -0.0792039 -0.0778205 +v 0.00809841 0.0792039 -0.0778205 +v 0.00809841 -0.0792039 0.0778205 +v 0.00809841 0.0792039 0.0778205 +v -0.00809841 -0.0792039 0.0778205 +v -0.00809841 0.0792039 0.0778205 +v -0.00316763 -0.0795519 -0.0778402 +v -0.00316763 0.0795519 -0.0778402 +v 0.00316763 -0.0795519 -0.0778402 +v 0.00316763 0.0795519 -0.0778402 +v 0.00316763 -0.0795519 0.0778402 +v 0.00316763 0.0795519 0.0778402 +v -0.00316763 -0.0795519 0.0778402 +v -0.00316763 0.0795519 0.0778402 +v -0.0444903 -0.0660233 -0.0778448 +v -0.0444903 0.0660233 -0.0778448 +v 0.0444903 -0.0660233 -0.0778448 +v 0.0444903 0.0660233 -0.0778448 +v 0.0444903 -0.0660233 0.0778448 +v 0.0444903 0.0660233 0.0778448 +v -0.0444903 -0.0660233 0.0778448 +v -0.0444903 0.0660233 0.0778448 +v -0.0116449 -0.0787572 -0.0778546 +v -0.0116449 0.0787572 -0.0778546 +v 0.0116449 -0.0787572 -0.0778546 +v 0.0116449 0.0787572 -0.0778546 +v 0.0116449 -0.0787572 0.0778546 +v 0.0116449 0.0787572 0.0778546 +v -0.0116449 -0.0787572 0.0778546 +v -0.0116449 0.0787572 0.0778546 +v -0.0371158 -0.0704285 -0.0778892 +v -0.0371158 0.0704285 -0.0778892 +v 0.0371158 -0.0704285 -0.0778892 +v 0.0371158 0.0704285 -0.0778892 +v 0.0371158 -0.0704285 0.0778892 +v 0.0371158 0.0704285 0.0778892 +v -0.0371158 -0.0704285 0.0778892 +v -0.0371158 0.0704285 0.0778892 +v -0.0148486 -0.0782124 -0.0778951 +v -0.0148486 0.0782124 -0.0778951 +v 0.0148486 -0.0782124 -0.0778951 +v 0.0148486 0.0782124 -0.0778951 +v 0.0148486 -0.0782124 0.0778951 +v 0.0148486 0.0782124 0.0778951 +v -0.0148486 -0.0782124 0.0778951 +v -0.0148486 0.0782124 0.0778951 +v -0.0751301 -0.0263271 -0.0778965 +v -0.0751301 0.0263271 -0.0778965 +v 0.0751301 -0.0263271 -0.0778965 +v 0.0751301 0.0263271 -0.0778965 +v 0.0751301 -0.0263271 0.0778965 +v 0.0751301 0.0263271 0.0778965 +v -0.0751301 -0.0263271 0.0778965 +v -0.0751301 0.0263271 0.0778965 +v -0.00289208 -0.0795519 -0.0779459 +v -0.00289208 0.0795519 -0.0779459 +v 0.00289208 -0.0795519 -0.0779459 +v 0.00289208 0.0795519 -0.0779459 +v 0.00289208 -0.0795519 0.0779459 +v 0.00289208 0.0795519 0.0779459 +v -0.00289208 -0.0795519 0.0779459 +v -0.00289208 0.0795519 0.0779459 +v -0.0319058 -0.0729297 -0.077955 +v -0.0319058 0.0729297 -0.077955 +v 0.0319058 -0.0729297 -0.077955 +v 0.0319058 0.0729297 -0.077955 +v 0.0319058 -0.0729297 0.077955 +v 0.0319058 0.0729297 0.077955 +v -0.0319058 -0.0729297 0.077955 +v -0.0319058 0.0729297 0.077955 +v -0.0178752 -0.0775702 -0.0779585 +v -0.0178752 0.0775702 -0.0779585 +v 0.0178752 -0.0775702 -0.0779585 +v 0.0178752 0.0775702 -0.0779585 +v 0.0178752 -0.0775702 0.0779585 +v 0.0178752 0.0775702 0.0779585 +v -0.0178752 -0.0775702 0.0779585 +v -0.0178752 0.0775702 0.0779585 +v -0.0760073 -0.0236447 -0.0779887 +v -0.0760073 0.0236447 -0.0779887 +v 0.0760073 -0.0236447 -0.0779887 +v 0.0760073 0.0236447 -0.0779887 +v 0.0760073 -0.0236447 0.0779887 +v 0.0760073 0.0236447 0.0779887 +v -0.0760073 -0.0236447 0.0779887 +v -0.0760073 0.0236447 0.0779887 +v -0.00261301 -0.0795519 -0.078042 +v -0.00261301 0.0795519 -0.078042 +v 0.00261301 -0.0795519 -0.078042 +v 0.00261301 0.0795519 -0.078042 +v 0.00261301 -0.0795519 0.078042 +v 0.00261301 0.0795519 0.078042 +v -0.00261301 -0.0795519 0.078042 +v -0.00261301 0.0795519 0.078042 +v -0.0767898 -0.0209327 -0.0780709 +v -0.0767898 0.0209327 -0.0780709 +v 0.0767898 -0.0209327 -0.0780709 +v 0.0767898 0.0209327 -0.0780709 +v 0.0767898 -0.0209327 0.0780709 +v 0.0767898 0.0209327 0.0780709 +v -0.0767898 -0.0209327 0.0780709 +v -0.0767898 0.0209327 0.0780709 +v -0.0574812 -0.0550513 -0.0780785 +v -0.0574812 0.0550513 -0.0780785 +v 0.0574812 -0.0550513 -0.0780785 +v 0.0574812 0.0550513 -0.0780785 +v 0.0574812 -0.0550513 0.0780785 +v 0.0574812 0.0550513 0.0780785 +v -0.0574812 -0.0550513 0.0780785 +v -0.0574812 0.0550513 0.0780785 +v -0.00782055 -0.0792039 -0.0780984 +v -0.00782055 0.0792039 -0.0780984 +v 0.00782055 -0.0792039 -0.0780984 +v 0.00782055 0.0792039 -0.0780984 +v 0.00782055 -0.0792039 0.0780984 +v 0.00782055 0.0792039 0.0780984 +v -0.00782055 -0.0792039 0.0780984 +v -0.00782055 0.0792039 0.0780984 +v -0.00233076 -0.0795519 -0.0781283 +v -0.00233076 0.0795519 -0.0781283 +v 0.00233076 -0.0795519 -0.0781283 +v 0.00233076 0.0795519 -0.0781283 +v 0.00233076 -0.0795519 0.0781283 +v 0.00233076 0.0795519 0.0781283 +v -0.00233076 -0.0795519 0.0781283 +v -0.00233076 0.0795519 0.0781283 +v -0.0774767 -0.0181947 -0.0781431 +v -0.0774767 0.0181947 -0.0781431 +v 0.0774767 -0.0181947 -0.0781431 +v 0.0774767 0.0181947 -0.0781431 +v 0.0774767 -0.0181947 0.0781431 +v 0.0774767 0.0181947 0.0781431 +v -0.0774767 -0.0181947 0.0781431 +v -0.0774767 0.0181947 0.0781431 +v -0.00204566 -0.0795519 -0.0782047 +v -0.00204566 0.0795519 -0.0782047 +v 0.00204566 -0.0795519 -0.0782047 +v 0.00204566 0.0795519 -0.0782047 +v 0.00204566 -0.0795519 0.0782047 +v 0.00204566 0.0795519 0.0782047 +v -0.00204566 -0.0795519 0.0782047 +v -0.00204566 0.0795519 0.0782047 +v -0.078067 -0.0154341 -0.0782052 +v -0.078067 0.0154341 -0.0782052 +v 0.078067 -0.0154341 -0.0782052 +v 0.078067 0.0154341 -0.0782052 +v 0.078067 -0.0154341 0.0782052 +v 0.078067 0.0154341 0.0782052 +v -0.078067 -0.0154341 0.0782052 +v -0.078067 0.0154341 0.0782052 +v -0.0467573 -0.0643878 -0.0782446 +v -0.0467573 0.0643878 -0.0782446 +v 0.0467573 -0.0643878 -0.0782446 +v 0.0467573 0.0643878 -0.0782446 +v 0.0467573 -0.0643878 0.0782446 +v 0.0467573 0.0643878 0.0782446 +v -0.0467573 -0.0643878 0.0782446 +v -0.0467573 0.0643878 0.0782446 +v -0.0113637 -0.0787572 -0.0782562 +v -0.0113637 0.0787572 -0.0782562 +v 0.0113637 -0.0787572 -0.0782562 +v 0.0113637 0.0787572 -0.0782562 +v 0.0113637 -0.0787572 0.0782562 +v 0.0113637 0.0787572 0.0782562 +v -0.0113637 -0.0787572 0.0782562 +v -0.0113637 0.0787572 0.0782562 +v -0.0785601 -0.0126542 -0.078257 +v -0.0785601 0.0126542 -0.078257 +v 0.0785601 -0.0126542 -0.078257 +v 0.0785601 0.0126542 -0.078257 +v 0.0785601 -0.0126542 0.078257 +v 0.0785601 0.0126542 0.078257 +v -0.0785601 -0.0126542 0.078257 +v -0.0785601 0.0126542 0.078257 +v -0.00175808 -0.0795519 -0.0782711 +v -0.00175808 0.0795519 -0.0782711 +v 0.00175808 -0.0795519 -0.0782711 +v 0.00175808 0.0795519 -0.0782711 +v 0.00175808 -0.0795519 0.0782711 +v 0.00175808 0.0795519 0.0782711 +v -0.00175808 -0.0795519 0.0782711 +v -0.00175808 0.0795519 0.0782711 +v -0.0789553 -0.00985854 -0.0782985 +v -0.0789553 0.00985854 -0.0782985 +v 0.0789553 -0.00985854 -0.0782985 +v 0.0789553 0.00985854 -0.0782985 +v 0.0789553 -0.00985854 0.0782985 +v 0.0789553 0.00985854 0.0782985 +v -0.0789553 -0.00985854 0.0782985 +v -0.0789553 0.00985854 0.0782985 +v -0.00146835 -0.0795519 -0.0783274 +v -0.00146835 0.0795519 -0.0783274 +v 0.00146835 -0.0795519 -0.0783274 +v 0.00146835 0.0795519 -0.0783274 +v 0.00146835 -0.0795519 0.0783274 +v 0.00146835 0.0795519 0.0783274 +v -0.00146835 -0.0795519 0.0783274 +v -0.00146835 0.0795519 0.0783274 +v -0.0792522 -0.0070506 -0.0783297 +v -0.0792522 0.0070506 -0.0783297 +v 0.0792522 -0.0070506 -0.0783297 +v 0.0792522 0.0070506 -0.0783297 +v 0.0792522 -0.0070506 0.0783297 +v 0.0792522 0.0070506 0.0783297 +v -0.0792522 -0.0070506 0.0783297 +v -0.0792522 0.0070506 0.0783297 +v -0.0593694 -0.0529685 -0.0783438 +v -0.0593694 0.0529685 -0.0783438 +v 0.0593694 -0.0529685 -0.0783438 +v 0.0593694 0.0529685 -0.0783438 +v 0.0593694 -0.0529685 0.0783438 +v 0.0593694 0.0529685 0.0783438 +v -0.0593694 -0.0529685 0.0783438 +v -0.0593694 0.0529685 0.0783438 +v -0.0291149 -0.0740447 -0.0783486 +v -0.0291149 0.0740447 -0.0783486 +v 0.0291149 -0.0740447 -0.0783486 +v 0.0291149 0.0740447 -0.0783486 +v 0.0291149 -0.0740447 0.0783486 +v 0.0291149 0.0740447 0.0783486 +v -0.0291149 -0.0740447 0.0783486 +v -0.0291149 0.0740447 0.0783486 +v -0.0794502 -0.00423388 -0.0783506 +v -0.0794502 0.00423388 -0.0783506 +v 0.0794502 -0.00423388 -0.0783506 +v 0.0794502 0.00423388 -0.0783506 +v 0.0794502 -0.00423388 0.0783506 +v 0.0794502 0.00423388 0.0783506 +v -0.0794502 -0.00423388 0.0783506 +v -0.0794502 0.00423388 0.0783506 +v -0.0206689 -0.0768314 -0.0783508 +v -0.0206689 0.0768314 -0.0783508 +v 0.0206689 -0.0768314 -0.0783508 +v 0.0206689 0.0768314 -0.0783508 +v 0.0206689 -0.0768314 0.0783508 +v 0.0206689 0.0768314 0.0783508 +v -0.0206689 -0.0768314 0.0783508 +v -0.0206689 0.0768314 0.0783508 +v -0.0795494 -0.00141188 -0.078361 +v -0.0795494 0.00141188 -0.078361 +v 0.0795494 -0.00141188 -0.078361 +v 0.0795494 0.00141188 -0.078361 +v 0.0795494 -0.00141188 0.078361 +v 0.0795494 0.00141188 0.078361 +v -0.0795494 -0.00141188 0.078361 +v -0.0795494 0.00141188 0.078361 +v -0.00753315 -0.0792039 -0.0783664 +v -0.00753315 0.0792039 -0.0783664 +v 0.00753315 -0.0792039 -0.0783664 +v 0.00753315 0.0792039 -0.0783664 +v 0.00753315 -0.0792039 0.0783664 +v 0.00753315 0.0792039 0.0783664 +v -0.00753315 -0.0792039 0.0783664 +v -0.00753315 0.0792039 0.0783664 +v -0.00117683 -0.0795519 -0.0783736 +v -0.00117683 0.0795519 -0.0783736 +v 0.00117683 -0.0795519 -0.0783736 +v 0.00117683 0.0795519 -0.0783736 +v 0.00117683 -0.0795519 0.0783736 +v 0.00117683 0.0795519 0.0783736 +v -0.00117683 -0.0795519 0.0783736 +v -0.00117683 0.0795519 0.0783736 +v -0.0395239 -0.0690455 -0.0784011 +v -0.0395239 0.0690455 -0.0784011 +v 0.0395239 -0.0690455 -0.0784011 +v 0.0395239 0.0690455 -0.0784011 +v 0.0395239 -0.0690455 0.0784011 +v 0.0395239 0.0690455 0.0784011 +v -0.0395239 -0.0690455 0.0784011 +v -0.0395239 0.0690455 0.0784011 +v -0.014564 -0.0782124 -0.0784085 +v -0.014564 0.0782124 -0.0784085 +v 0.014564 -0.0782124 -0.0784085 +v 0.014564 0.0782124 -0.0784085 +v 0.014564 -0.0782124 0.0784085 +v 0.014564 0.0782124 0.0784085 +v -0.014564 -0.0782124 0.0784085 +v -0.014564 0.0782124 0.0784085 +v -0.000883881 -0.0795519 -0.0784096 +v -0.000883881 0.0795519 -0.0784096 +v 0.000883881 -0.0795519 -0.0784096 +v 0.000883881 0.0795519 -0.0784096 +v 0.000883881 -0.0795519 0.0784096 +v 0.000883881 0.0795519 0.0784096 +v -0.000883881 -0.0795519 0.0784096 +v -0.000883881 0.0795519 0.0784096 +v -0.000589853 -0.0795519 -0.0784353 +v -0.000589853 0.0795519 -0.0784353 +v 0.000589853 -0.0795519 -0.0784353 +v 0.000589853 0.0795519 -0.0784353 +v 0.000589853 -0.0795519 0.0784353 +v 0.000589853 0.0795519 0.0784353 +v -0.000589853 -0.0795519 0.0784353 +v -0.000589853 0.0795519 0.0784353 +v -0.000295106 -0.0795519 -0.0784507 +v -0.000295106 0.0795519 -0.0784507 +v 0.000295106 -0.0795519 -0.0784507 +v 0.000295106 0.0795519 -0.0784507 +v 0.000295106 -0.0795519 0.0784507 +v 0.000295106 0.0795519 0.0784507 +v -0.000295106 -0.0795519 0.0784507 +v -0.000295106 0.0795519 0.0784507 +v -1.55332e-18 -0.0795519 -0.0784559 +v -1.55332e-18 0.0795519 -0.0784559 +v 5.17774e-19 -0.0795519 0.0784559 +v 5.17774e-19 0.0795519 0.0784559 +v -0.0263027 -0.0750675 -0.0785462 +v -0.0263027 0.0750675 -0.0785462 +v 0.0263027 -0.0750675 -0.0785462 +v 0.0263027 0.0750675 -0.0785462 +v 0.0263027 -0.0750675 0.0785462 +v 0.0263027 0.0750675 0.0785462 +v -0.0263027 -0.0750675 0.0785462 +v -0.0263027 0.0750675 0.0785462 +v -0.0234827 -0.0759968 -0.078547 +v -0.0234827 0.0759968 -0.078547 +v 0.0234827 -0.0759968 -0.078547 +v 0.0234827 0.0759968 -0.078547 +v 0.0234827 -0.0759968 0.078547 +v 0.0234827 0.0759968 0.078547 +v -0.0234827 -0.0759968 0.078547 +v -0.0234827 0.0759968 0.078547 +v -0.0343833 -0.0717238 -0.0785727 +v -0.0343833 0.0717238 -0.0785727 +v 0.0343833 -0.0717238 -0.0785727 +v 0.0343833 0.0717238 -0.0785727 +v 0.0343833 -0.0717238 0.0785727 +v 0.0343833 0.0717238 0.0785727 +v -0.0343833 -0.0717238 0.0785727 +v -0.0343833 0.0717238 0.0785727 +v -0.0175865 -0.0775702 -0.0785775 +v -0.0175865 0.0775702 -0.0785775 +v 0.0175865 -0.0775702 -0.0785775 +v 0.0175865 0.0775702 -0.0785775 +v 0.0175865 -0.0775702 0.0785775 +v 0.0175865 0.0775702 0.0785775 +v -0.0175865 -0.0775702 0.0785775 +v -0.0175865 0.0775702 0.0785775 +v -0.0611835 -0.0508196 -0.0785988 +v -0.0611835 0.0508196 -0.0785988 +v 0.0611835 -0.0508196 -0.0785988 +v 0.0611835 0.0508196 -0.0785988 +v 0.0611835 -0.0508196 0.0785988 +v 0.0611835 0.0508196 0.0785988 +v -0.0611835 -0.0508196 0.0785988 +v -0.0611835 0.0508196 0.0785988 +v -0.00723658 -0.0792039 -0.0786242 +v -0.00723658 0.0792039 -0.0786242 +v 0.00723658 -0.0792039 -0.0786242 +v 0.00723658 0.0792039 -0.0786242 +v 0.00723658 -0.0792039 0.0786242 +v 0.00723658 0.0792039 0.0786242 +v -0.00723658 -0.0792039 0.0786242 +v -0.00723658 0.0792039 0.0786242 +v -0.0489659 -0.0626721 -0.078634 +v -0.0489659 0.0626721 -0.078634 +v 0.0489659 -0.0626721 -0.078634 +v 0.0489659 0.0626721 -0.078634 +v 0.0489659 -0.0626721 0.078634 +v 0.0489659 0.0626721 0.078634 +v -0.0489659 -0.0626721 0.078634 +v -0.0489659 0.0626721 0.078634 +v -0.0110687 -0.0787572 -0.0786478 +v -0.0110687 0.0787572 -0.0786478 +v 0.0110687 -0.0787572 -0.0786478 +v 0.0110687 0.0787572 -0.0786478 +v 0.0110687 -0.0787572 0.0786478 +v 0.0110687 0.0787572 0.0786478 +v -0.0110687 -0.0787572 0.0786478 +v -0.0110687 0.0787572 0.0786478 +v -0.0629215 -0.0486075 -0.078843 +v -0.0629215 0.0486075 -0.078843 +v 0.0629215 -0.0486075 -0.078843 +v 0.0629215 0.0486075 -0.078843 +v 0.0629215 -0.0486075 0.078843 +v 0.0629215 0.0486075 0.078843 +v -0.0629215 -0.0486075 0.078843 +v -0.0629215 0.0486075 0.078843 +v -0.00693119 -0.0792039 -0.0788715 +v -0.00693119 0.0792039 -0.0788715 +v 0.00693119 -0.0792039 -0.0788715 +v 0.00693119 0.0792039 -0.0788715 +v 0.00693119 -0.0792039 0.0788715 +v 0.00693119 0.0792039 0.0788715 +v -0.00693119 -0.0792039 0.0788715 +v -0.00693119 0.0792039 0.0788715 +v -0.0418828 -0.0675765 -0.0789025 +v -0.0418828 0.0675765 -0.0789025 +v 0.0418828 -0.0675765 -0.0789025 +v 0.0418828 0.0675765 -0.0789025 +v 0.0418828 -0.0675765 0.0789025 +v 0.0418828 0.0675765 0.0789025 +v -0.0418828 -0.0675765 0.0789025 +v -0.0418828 0.0675765 0.0789025 +v -0.0142617 -0.0782124 -0.0789117 +v -0.0142617 0.0782124 -0.0789117 +v 0.0142617 -0.0782124 -0.0789117 +v 0.0142617 0.0782124 -0.0789117 +v 0.0142617 -0.0782124 0.0789117 +v 0.0142617 0.0782124 0.0789117 +v -0.0142617 -0.0782124 0.0789117 +v -0.0142617 0.0782124 0.0789117 +v -0.0511136 -0.0608783 -0.0790127 +v -0.0511136 0.0608783 -0.0790127 +v 0.0511136 -0.0608783 -0.0790127 +v 0.0511136 0.0608783 -0.0790127 +v 0.0511136 -0.0608783 0.0790127 +v 0.0511136 0.0608783 0.0790127 +v -0.0511136 -0.0608783 0.0790127 +v -0.0511136 0.0608783 0.0790127 +v -0.0107601 -0.0787572 -0.0790288 +v -0.0107601 0.0787572 -0.0790288 +v 0.0107601 -0.0787572 -0.0790288 +v 0.0107601 0.0787572 -0.0790288 +v 0.0107601 -0.0787572 0.0790288 +v 0.0107601 0.0787572 0.0790288 +v -0.0107601 -0.0787572 0.0790288 +v -0.0107601 0.0787572 0.0790288 +v -0.0316087 -0.0729297 -0.0790637 +v -0.0316087 0.0729297 -0.0790637 +v 0.0316087 -0.0729297 -0.0790637 +v 0.0316087 0.0729297 -0.0790637 +v 0.0316087 -0.0729297 0.0790637 +v 0.0316087 0.0729297 0.0790637 +v -0.0316087 -0.0729297 0.0790637 +v -0.0316087 0.0729297 0.0790637 +v -0.0203649 -0.0768314 -0.079067 +v -0.0203649 0.0768314 -0.079067 +v 0.0203649 -0.0768314 -0.079067 +v 0.0203649 0.0768314 -0.079067 +v 0.0203649 -0.0768314 0.079067 +v 0.0203649 0.0768314 0.079067 +v -0.0203649 -0.0768314 0.079067 +v -0.0203649 0.0768314 0.079067 +v -0.064581 -0.0463348 -0.0790763 +v -0.064581 0.0463348 -0.0790763 +v 0.064581 -0.0463348 -0.0790763 +v 0.064581 0.0463348 -0.0790763 +v 0.064581 -0.0463348 0.0790763 +v 0.064581 0.0463348 0.0790763 +v -0.064581 -0.0463348 0.0790763 +v -0.064581 0.0463348 0.0790763 +v -0.00661736 -0.0792039 -0.079108 +v -0.00661736 0.0792039 -0.079108 +v 0.00661736 -0.0792039 -0.079108 +v 0.00661736 0.0792039 -0.079108 +v 0.00661736 -0.0792039 0.079108 +v 0.00661736 0.0792039 0.079108 +v -0.00661736 -0.0792039 0.079108 +v -0.00661736 0.0792039 0.079108 +v -0.0368179 -0.0704285 -0.0791797 +v -0.0368179 0.0704285 -0.0791797 +v 0.0368179 -0.0704285 -0.0791797 +v 0.0368179 0.0704285 -0.0791797 +v 0.0368179 -0.0704285 0.0791797 +v 0.0368179 0.0704285 0.0791797 +v -0.0368179 -0.0704285 0.0791797 +v -0.0368179 0.0704285 0.0791797 +v -0.0172765 -0.0775702 -0.0791861 +v -0.0172765 0.0775702 -0.0791861 +v 0.0172765 -0.0775702 -0.0791861 +v 0.0172765 0.0775702 -0.0791861 +v 0.0172765 -0.0775702 0.0791861 +v 0.0172765 0.0775702 0.0791861 +v -0.0172765 -0.0775702 0.0791861 +v -0.0172765 0.0775702 0.0791861 +v -0.0661601 -0.0440044 -0.0792982 +v -0.0661601 0.0440044 -0.0792982 +v 0.0661601 -0.0440044 -0.0792982 +v 0.0661601 0.0440044 -0.0792982 +v 0.0661601 -0.0440044 0.0792982 +v 0.0661601 0.0440044 0.0792982 +v -0.0661601 -0.0440044 0.0792982 +v -0.0661601 0.0440044 0.0792982 +v -0.00629546 -0.0792039 -0.0793334 +v -0.00629546 0.0792039 -0.0793334 +v 0.00629546 -0.0792039 -0.0793334 +v 0.00629546 0.0792039 -0.0793334 +v 0.00629546 -0.0792039 0.0793334 +v 0.00629546 0.0792039 0.0793334 +v -0.00629546 -0.0792039 0.0793334 +v -0.00629546 0.0792039 0.0793334 +v -0.0288058 -0.0740447 -0.0793596 +v -0.0288058 0.0740447 -0.0793596 +v 0.0288058 -0.0740447 -0.0793596 +v 0.0288058 0.0740447 -0.0793596 +v 0.0288058 -0.0740447 0.0793596 +v 0.0288058 0.0740447 0.0793596 +v -0.0288058 -0.0740447 0.0793596 +v -0.0288058 0.0740447 0.0793596 +v -0.0231701 -0.0759968 -0.0793613 +v -0.0231701 0.0759968 -0.0793613 +v 0.0231701 -0.0759968 -0.0793613 +v 0.0231701 0.0759968 -0.0793613 +v 0.0231701 -0.0759968 0.0793613 +v 0.0231701 0.0759968 0.0793613 +v -0.0231701 -0.0759968 0.0793613 +v -0.0231701 0.0759968 0.0793613 +v -0.0531976 -0.0590087 -0.0793802 +v -0.0531976 0.0590087 -0.0793802 +v 0.0531976 -0.0590087 -0.0793802 +v 0.0531976 0.0590087 -0.0793802 +v 0.0531976 -0.0590087 0.0793802 +v 0.0531976 0.0590087 0.0793802 +v -0.0531976 -0.0590087 0.0793802 +v -0.0531976 0.0590087 0.0793802 +v -0.0441894 -0.0660233 -0.0793928 +v -0.0441894 0.0660233 -0.0793928 +v 0.0441894 -0.0660233 -0.0793928 +v 0.0441894 0.0660233 -0.0793928 +v 0.0441894 -0.0660233 0.0793928 +v 0.0441894 0.0660233 0.0793928 +v -0.0441894 -0.0660233 0.0793928 +v -0.0441894 0.0660233 0.0793928 +v -0.0104385 -0.0787572 -0.0793988 +v -0.0104385 0.0787572 -0.0793988 +v 0.0104385 -0.0787572 -0.0793988 +v 0.0104385 0.0787572 -0.0793988 +v 0.0104385 -0.0787572 0.0793988 +v 0.0104385 0.0787572 0.0793988 +v -0.0104385 -0.0787572 0.0793988 +v -0.0104385 0.0787572 0.0793988 +v -0.013942 -0.0782124 -0.079404 +v -0.013942 0.0782124 -0.079404 +v 0.013942 -0.0782124 -0.079404 +v 0.013942 0.0782124 -0.079404 +v 0.013942 -0.0782124 0.079404 +v 0.013942 0.0782124 0.079404 +v -0.013942 -0.0782124 0.079404 +v -0.013942 0.0782124 0.079404 +v -0.0259884 -0.0750675 -0.079459 +v -0.0259884 0.0750675 -0.079459 +v 0.0259884 -0.0750675 -0.079459 +v 0.0259884 0.0750675 -0.079459 +v 0.0259884 -0.0750675 0.079459 +v 0.0259884 0.0750675 0.079459 +v -0.0259884 -0.0750675 0.079459 +v -0.0259884 0.0750675 0.079459 +v -0.0676567 -0.0416192 -0.0795085 +v -0.0676567 0.0416192 -0.0795085 +v 0.0676567 -0.0416192 -0.0795085 +v 0.0676567 0.0416192 -0.0795085 +v 0.0676567 -0.0416192 0.0795085 +v 0.0676567 0.0416192 0.0795085 +v -0.0676567 -0.0416192 0.0795085 +v -0.0676567 0.0416192 0.0795085 +v -0.00596589 -0.0792039 -0.0795474 +v -0.00596589 0.0792039 -0.0795474 +v 0.00596589 -0.0792039 -0.0795474 +v 0.00596589 0.0792039 -0.0795474 +v 0.00596589 -0.0792039 0.0795474 +v 0.00596589 0.0792039 0.0795474 +v -0.00596589 -0.0792039 0.0795474 +v -0.00596589 0.0792039 0.0795474 +v -0.0690691 -0.0391821 -0.079707 +v -0.0690691 0.0391821 -0.079707 +v 0.0690691 -0.0391821 -0.079707 +v 0.0690691 0.0391821 -0.079707 +v 0.0690691 -0.0391821 0.079707 +v 0.0690691 0.0391821 0.079707 +v -0.0690691 -0.0391821 0.079707 +v -0.0690691 0.0391821 0.079707 +v -0.0552154 -0.0570655 -0.079736 +v -0.0552154 0.0570655 -0.079736 +v 0.0552154 -0.0570655 -0.079736 +v 0.0552154 0.0570655 -0.079736 +v 0.0552154 -0.0570655 0.079736 +v 0.0552154 0.0570655 0.079736 +v -0.0552154 -0.0570655 0.079736 +v -0.0552154 0.0570655 0.079736 +v -0.00562906 -0.0792039 -0.0797498 +v -0.00562906 0.0792039 -0.0797498 +v 0.00562906 -0.0792039 -0.0797498 +v 0.00562906 0.0792039 -0.0797498 +v 0.00562906 -0.0792039 0.0797498 +v 0.00562906 0.0792039 0.0797498 +v -0.00562906 -0.0792039 0.0797498 +v -0.00562906 0.0792039 0.0797498 +v -0.0101041 -0.0787572 -0.0797574 +v -0.0101041 0.0787572 -0.0797574 +v 0.0101041 -0.0787572 -0.0797574 +v 0.0101041 0.0787572 -0.0797574 +v 0.0101041 -0.0787572 0.0797574 +v 0.0101041 0.0787572 0.0797574 +v -0.0101041 -0.0787572 0.0797574 +v -0.0101041 0.0787572 0.0797574 +v -0.0340631 -0.0717238 -0.0797674 +v -0.0340631 0.0717238 -0.0797674 +v 0.0340631 -0.0717238 -0.0797674 +v 0.0340631 0.0717238 -0.0797674 +v 0.0340631 -0.0717238 0.0797674 +v 0.0340631 0.0717238 0.0797674 +v -0.0340631 -0.0717238 0.0797674 +v -0.0340631 0.0717238 0.0797674 +v -0.0200361 -0.0768314 -0.0797722 +v -0.0200361 0.0768314 -0.0797722 +v 0.0200361 -0.0768314 -0.0797722 +v 0.0200361 0.0768314 -0.0797722 +v 0.0200361 -0.0768314 0.0797722 +v 0.0200361 0.0768314 0.0797722 +v -0.0200361 -0.0768314 0.0797722 +v -0.0200361 0.0768314 0.0797722 +v -0.0392066 -0.0690455 -0.0797753 +v -0.0392066 0.0690455 -0.0797753 +v 0.0392066 -0.0690455 -0.0797753 +v 0.0392066 0.0690455 -0.0797753 +v 0.0392066 -0.0690455 0.0797753 +v 0.0392066 0.0690455 0.0797753 +v -0.0392066 -0.0690455 0.0797753 +v -0.0392066 0.0690455 0.0797753 +v -0.0169453 -0.0775702 -0.0797834 +v -0.0169453 0.0775702 -0.0797834 +v 0.0169453 -0.0775702 -0.0797834 +v 0.0169453 0.0775702 -0.0797834 +v 0.0169453 -0.0775702 0.0797834 +v 0.0169453 0.0775702 0.0797834 +v -0.0169453 -0.0775702 0.0797834 +v -0.0169453 0.0775702 0.0797834 +v -0.046441 -0.0643878 -0.0798713 +v -0.046441 0.0643878 -0.0798713 +v 0.046441 -0.0643878 -0.0798713 +v 0.046441 0.0643878 -0.0798713 +v 0.046441 -0.0643878 0.0798713 +v 0.046441 0.0643878 0.0798713 +v -0.046441 -0.0643878 0.0798713 +v -0.046441 0.0643878 0.0798713 +v -0.0136053 -0.0782124 -0.0798848 +v -0.0136053 0.0782124 -0.0798848 +v 0.0136053 -0.0782124 -0.0798848 +v 0.0136053 0.0782124 -0.0798848 +v 0.0136053 -0.0782124 0.0798848 +v 0.0136053 0.0782124 0.0798848 +v -0.0136053 -0.0782124 0.0798848 +v -0.0136053 0.0782124 0.0798848 +v -0.0703954 -0.0366961 -0.0798934 +v -0.0703954 0.0366961 -0.0798934 +v 0.0703954 -0.0366961 -0.0798934 +v 0.0703954 0.0366961 -0.0798934 +v 0.0703954 -0.0366961 0.0798934 +v 0.0703954 0.0366961 0.0798934 +v -0.0703954 -0.0366961 0.0798934 +v -0.0703954 0.0366961 0.0798934 +v -0.00528537 -0.0792039 -0.0799403 +v -0.00528537 0.0792039 -0.0799403 +v 0.00528537 -0.0792039 -0.0799403 +v 0.00528537 0.0792039 -0.0799403 +v 0.00528537 -0.0792039 0.0799403 +v 0.00528537 0.0792039 0.0799403 +v -0.00528537 -0.0792039 0.0799403 +v -0.00528537 0.0792039 0.0799403 +v -0.071634 -0.0341645 -0.0800675 +v -0.071634 0.0341645 -0.0800675 +v 0.071634 -0.0341645 -0.0800675 +v 0.071634 0.0341645 -0.0800675 +v 0.071634 -0.0341645 0.0800675 +v 0.071634 0.0341645 0.0800675 +v -0.071634 -0.0341645 0.0800675 +v -0.071634 0.0341645 0.0800675 +v -0.0571643 -0.0550513 -0.0800796 +v -0.0571643 0.0550513 -0.0800796 +v 0.0571643 -0.0550513 -0.0800796 +v 0.0571643 0.0550513 -0.0800796 +v 0.0571643 -0.0550513 0.0800796 +v 0.0571643 0.0550513 0.0800796 +v -0.0571643 -0.0550513 0.0800796 +v -0.0571643 0.0550513 0.0800796 +v -0.0097574 -0.0787572 -0.0801041 +v -0.0097574 0.0787572 -0.0801041 +v 0.0097574 -0.0787572 -0.0801041 +v 0.0097574 0.0787572 -0.0801041 +v 0.0097574 -0.0787572 0.0801041 +v 0.0097574 0.0787572 0.0801041 +v -0.0097574 -0.0787572 0.0801041 +v -0.0097574 0.0787572 0.0801041 +v -0.00493523 -0.0792039 -0.0801187 +v -0.00493523 0.0792039 -0.0801187 +v 0.00493523 -0.0792039 -0.0801187 +v 0.00493523 0.0792039 -0.0801187 +v 0.00493523 -0.0792039 0.0801187 +v 0.00493523 0.0792039 0.0801187 +v -0.00493523 -0.0792039 0.0801187 +v -0.00493523 0.0792039 0.0801187 +v -0.0312732 -0.0729297 -0.0801613 +v -0.0312732 0.0729297 -0.0801613 +v 0.0312732 -0.0729297 -0.0801613 +v 0.0312732 0.0729297 -0.0801613 +v 0.0312732 -0.0729297 0.0801613 +v 0.0312732 0.0729297 0.0801613 +v -0.0312732 -0.0729297 0.0801613 +v -0.0312732 0.0729297 0.0801613 +v -0.0228293 -0.0759968 -0.0801643 +v -0.0228293 0.0759968 -0.0801643 +v 0.0228293 -0.0759968 -0.0801643 +v 0.0228293 0.0759968 -0.0801643 +v 0.0228293 -0.0759968 0.0801643 +v 0.0228293 0.0759968 0.0801643 +v -0.0228293 -0.0759968 0.0801643 +v -0.0228293 0.0759968 0.0801643 +v -0.0727834 -0.0315903 -0.080229 +v -0.0727834 0.0315903 -0.080229 +v 0.0727834 -0.0315903 -0.080229 +v 0.0727834 0.0315903 -0.080229 +v 0.0727834 -0.0315903 0.080229 +v 0.0727834 0.0315903 0.080229 +v -0.0727834 -0.0315903 0.080229 +v -0.0727834 0.0315903 0.080229 +v -0.00457909 -0.0792039 -0.0802848 +v -0.00457909 0.0792039 -0.0802848 +v 0.00457909 -0.0792039 -0.0802848 +v 0.00457909 0.0792039 -0.0802848 +v 0.00457909 -0.0792039 0.0802848 +v 0.00457909 0.0792039 0.0802848 +v -0.00457909 -0.0792039 0.0802848 +v -0.00457909 0.0792039 0.0802848 +v -0.0486348 -0.0626721 -0.0803376 +v -0.0486348 0.0626721 -0.0803376 +v 0.0486348 -0.0626721 -0.0803376 +v 0.0486348 0.0626721 -0.0803376 +v 0.0486348 -0.0626721 0.0803376 +v 0.0486348 0.0626721 0.0803376 +v -0.0486348 -0.0626721 0.0803376 +v -0.0486348 0.0626721 0.0803376 +v -0.013252 -0.0782124 -0.0803536 +v -0.013252 0.0782124 -0.0803536 +v 0.013252 -0.0782124 -0.0803536 +v 0.013252 0.0782124 -0.0803536 +v 0.013252 -0.0782124 0.0803536 +v 0.013252 0.0782124 0.0803536 +v -0.013252 -0.0782124 0.0803536 +v -0.013252 0.0782124 0.0803536 +v -0.0415466 -0.0675765 -0.0803587 +v -0.0415466 0.0675765 -0.0803587 +v 0.0415466 -0.0675765 -0.0803587 +v 0.0415466 0.0675765 -0.0803587 +v 0.0415466 -0.0675765 0.0803587 +v 0.0415466 0.0675765 0.0803587 +v -0.0415466 -0.0675765 0.0803587 +v -0.0415466 0.0675765 0.0803587 +v -0.0284617 -0.0740447 -0.0803592 +v -0.0284617 0.0740447 -0.0803592 +v 0.0284617 -0.0740447 -0.0803592 +v 0.0284617 0.0740447 -0.0803592 +v 0.0284617 -0.0740447 0.0803592 +v 0.0284617 0.0740447 0.0803592 +v -0.0284617 -0.0740447 0.0803592 +v -0.0284617 0.0740447 0.0803592 +v -0.0256424 -0.0750675 -0.0803602 +v -0.0256424 0.0750675 -0.0803602 +v 0.0256424 -0.0750675 -0.0803602 +v 0.0256424 0.0750675 -0.0803602 +v 0.0256424 -0.0750675 0.0803602 +v 0.0256424 0.0750675 0.0803602 +v -0.0256424 -0.0750675 0.0803602 +v -0.0256424 0.0750675 0.0803602 +v -0.0165936 -0.0775702 -0.0803688 +v -0.0165936 0.0775702 -0.0803688 +v 0.0165936 -0.0775702 -0.0803688 +v 0.0165936 0.0775702 -0.0803688 +v 0.0165936 -0.0775702 0.0803688 +v 0.0165936 0.0775702 0.0803688 +v -0.0165936 -0.0775702 0.0803688 +v -0.0165936 0.0775702 0.0803688 +v -0.073842 -0.0289768 -0.0803778 +v -0.073842 0.0289768 -0.0803778 +v 0.073842 -0.0289768 -0.0803778 +v 0.073842 0.0289768 -0.0803778 +v 0.073842 -0.0289768 0.0803778 +v 0.073842 0.0289768 0.0803778 +v -0.073842 -0.0289768 0.0803778 +v -0.073842 0.0289768 0.0803778 +v -0.059042 -0.0529685 -0.0804107 +v -0.059042 0.0529685 -0.0804107 +v 0.059042 -0.0529685 -0.0804107 +v 0.059042 0.0529685 -0.0804107 +v 0.059042 -0.0529685 0.0804107 +v 0.059042 0.0529685 0.0804107 +v -0.059042 -0.0529685 0.0804107 +v -0.059042 0.0529685 0.0804107 +v -0.00421737 -0.0792039 -0.0804383 +v -0.00421737 0.0792039 -0.0804383 +v 0.00421737 -0.0792039 -0.0804383 +v 0.00421737 0.0792039 -0.0804383 +v 0.00421737 -0.0792039 0.0804383 +v 0.00421737 0.0792039 0.0804383 +v -0.00421737 -0.0792039 0.0804383 +v -0.00421737 0.0792039 0.0804383 +v -0.00939883 -0.0787572 -0.0804385 +v -0.00939883 0.0787572 -0.0804385 +v 0.00939883 -0.0787572 -0.0804385 +v 0.00939883 0.0787572 -0.0804385 +v 0.00939883 -0.0787572 0.0804385 +v 0.00939883 0.0787572 0.0804385 +v -0.00939883 -0.0787572 0.0804385 +v -0.00939883 0.0787572 0.0804385 +v -0.0364751 -0.0704285 -0.0804591 +v -0.0364751 0.0704285 -0.0804591 +v 0.0364751 -0.0704285 -0.0804591 +v 0.0364751 0.0704285 -0.0804591 +v 0.0364751 -0.0704285 0.0804591 +v 0.0364751 0.0704285 0.0804591 +v -0.0364751 -0.0704285 0.0804591 +v -0.0364751 0.0704285 0.0804591 +v -0.0196828 -0.0768314 -0.0804655 +v -0.0196828 0.0768314 -0.0804655 +v 0.0196828 -0.0768314 -0.0804655 +v 0.0196828 0.0768314 -0.0804655 +v 0.0196828 -0.0768314 0.0804655 +v 0.0196828 0.0768314 0.0804655 +v -0.0196828 -0.0768314 0.0804655 +v -0.0196828 0.0768314 0.0804655 +v -0.0748087 -0.0263271 -0.0805137 +v -0.0748087 0.0263271 -0.0805137 +v 0.0748087 -0.0263271 -0.0805137 +v 0.0748087 0.0263271 -0.0805137 +v 0.0748087 -0.0263271 0.0805137 +v 0.0748087 0.0263271 0.0805137 +v -0.0748087 -0.0263271 0.0805137 +v -0.0748087 0.0263271 0.0805137 +v -0.0038505 -0.0792039 -0.0805792 +v -0.0038505 0.0792039 -0.0805792 +v 0.0038505 -0.0792039 -0.0805792 +v 0.0038505 0.0792039 -0.0805792 +v 0.0038505 -0.0792039 0.0805792 +v 0.0038505 0.0792039 0.0805792 +v -0.0038505 -0.0792039 0.0805792 +v -0.0038505 0.0792039 0.0805792 +v -0.0756822 -0.0236447 -0.0806364 +v -0.0756822 0.0236447 -0.0806364 +v 0.0756822 -0.0236447 -0.0806364 +v 0.0756822 0.0236447 -0.0806364 +v 0.0756822 -0.0236447 0.0806364 +v 0.0756822 0.0236447 0.0806364 +v -0.0756822 -0.0236447 0.0806364 +v -0.0756822 0.0236447 0.0806364 +v -0.00347895 -0.0792039 -0.0807071 +v -0.00347895 0.0792039 -0.0807071 +v 0.00347895 -0.0792039 -0.0807071 +v 0.00347895 0.0792039 -0.0807071 +v 0.00347895 -0.0792039 0.0807071 +v 0.00347895 0.0792039 0.0807071 +v -0.00347895 -0.0792039 0.0807071 +v -0.00347895 0.0792039 0.0807071 +v -0.0608462 -0.0508196 -0.0807288 +v -0.0608462 0.0508196 -0.0807288 +v 0.0608462 -0.0508196 -0.0807288 +v 0.0608462 0.0508196 -0.0807288 +v 0.0608462 -0.0508196 0.0807288 +v 0.0608462 0.0508196 0.0807288 +v -0.0608462 -0.0508196 0.0807288 +v -0.0608462 0.0508196 0.0807288 +v -0.0764614 -0.0209327 -0.080746 +v -0.0764614 0.0209327 -0.080746 +v 0.0764614 -0.0209327 -0.080746 +v 0.0764614 0.0209327 -0.080746 +v 0.0764614 -0.0209327 0.080746 +v 0.0764614 0.0209327 0.080746 +v -0.0764614 -0.0209327 0.080746 +v -0.0764614 0.0209327 0.080746 +v -0.00902881 -0.0787572 -0.0807601 +v -0.00902881 0.0787572 -0.0807601 +v 0.00902881 -0.0787572 -0.0807601 +v 0.00902881 0.0787572 -0.0807601 +v 0.00902881 -0.0787572 0.0807601 +v 0.00902881 0.0787572 0.0807601 +v -0.00902881 -0.0787572 0.0807601 +v -0.00902881 0.0787572 0.0807601 +v -0.050768 -0.0608783 -0.0807911 +v -0.050768 0.0608783 -0.0807911 +v 0.050768 -0.0608783 -0.0807911 +v 0.050768 0.0608783 -0.0807911 +v 0.050768 -0.0608783 0.0807911 +v 0.050768 0.0608783 0.0807911 +v -0.050768 -0.0608783 0.0807911 +v -0.050768 0.0608783 0.0807911 +v -0.0128826 -0.0782124 -0.0808098 +v -0.0128826 0.0782124 -0.0808098 +v 0.0128826 -0.0782124 -0.0808098 +v 0.0128826 0.0782124 -0.0808098 +v 0.0128826 -0.0782124 0.0808098 +v 0.0128826 0.0782124 0.0808098 +v -0.0128826 -0.0782124 0.0808098 +v -0.0128826 0.0782124 0.0808098 +v -0.00310316 -0.0792039 -0.080822 +v -0.00310316 0.0792039 -0.080822 +v 0.00310316 -0.0792039 -0.080822 +v 0.00310316 0.0792039 -0.080822 +v 0.00310316 -0.0792039 0.080822 +v 0.00310316 0.0792039 0.080822 +v -0.00310316 -0.0792039 0.080822 +v -0.00310316 0.0792039 0.080822 +v -0.0771453 -0.0181947 -0.0808421 +v -0.0771453 0.0181947 -0.0808421 +v 0.0771453 -0.0181947 -0.0808421 +v 0.0771453 0.0181947 -0.0808421 +v 0.0771453 -0.0181947 0.0808421 +v 0.0771453 0.0181947 0.0808421 +v -0.0771453 -0.0181947 0.0808421 +v -0.0771453 0.0181947 0.0808421 +v -0.00272359 -0.0792039 -0.0809237 +v -0.00272359 0.0792039 -0.0809237 +v 0.00272359 -0.0792039 -0.0809237 +v 0.00272359 0.0792039 -0.0809237 +v 0.00272359 -0.0792039 0.0809237 +v 0.00272359 0.0792039 0.0809237 +v -0.00272359 -0.0792039 0.0809237 +v -0.00272359 0.0792039 0.0809237 +v -0.0777331 -0.0154341 -0.0809247 +v -0.0777331 0.0154341 -0.0809247 +v 0.0777331 -0.0154341 -0.0809247 +v 0.0777331 0.0154341 -0.0809247 +v 0.0777331 -0.0154341 0.0809247 +v 0.0777331 0.0154341 0.0809247 +v -0.0777331 -0.0154341 0.0809247 +v -0.0777331 0.0154341 0.0809247 +v -0.0438347 -0.0660233 -0.0809292 +v -0.0438347 0.0660233 -0.0809292 +v 0.0438347 -0.0660233 -0.0809292 +v 0.0438347 0.0660233 -0.0809292 +v 0.0438347 -0.0660233 0.0809292 +v 0.0438347 0.0660233 0.0809292 +v -0.0438347 -0.0660233 0.0809292 +v -0.0438347 0.0660233 0.0809292 +v -0.0162216 -0.0775702 -0.0809416 +v -0.0162216 0.0775702 -0.0809416 +v 0.0162216 -0.0775702 -0.0809416 +v 0.0162216 0.0775702 -0.0809416 +v 0.0162216 -0.0775702 0.0809416 +v 0.0162216 0.0775702 0.0809416 +v -0.0162216 -0.0775702 0.0809416 +v -0.0162216 0.0775702 0.0809416 +v -0.0337015 -0.0717238 -0.0809503 +v -0.0337015 0.0717238 -0.0809503 +v 0.0337015 -0.0717238 -0.0809503 +v 0.0337015 0.0717238 -0.0809503 +v 0.0337015 -0.0717238 0.0809503 +v 0.0337015 0.0717238 0.0809503 +v -0.0337015 -0.0717238 0.0809503 +v -0.0337015 0.0717238 0.0809503 +v -0.0224607 -0.0759968 -0.0809548 +v -0.0224607 0.0759968 -0.0809548 +v 0.0224607 -0.0759968 -0.0809548 +v 0.0224607 0.0759968 -0.0809548 +v 0.0224607 -0.0759968 0.0809548 +v 0.0224607 0.0759968 0.0809548 +v -0.0224607 -0.0759968 0.0809548 +v -0.0224607 0.0759968 0.0809548 +v -0.0782241 -0.0126542 -0.0809937 +v -0.0782241 0.0126542 -0.0809937 +v 0.0782241 -0.0126542 -0.0809937 +v 0.0782241 0.0126542 -0.0809937 +v 0.0782241 -0.0126542 0.0809937 +v 0.0782241 0.0126542 0.0809937 +v -0.0782241 -0.0126542 0.0809937 +v -0.0782241 0.0126542 0.0809937 +v -0.00234069 -0.0792039 -0.0810121 +v -0.00234069 0.0792039 -0.0810121 +v 0.00234069 -0.0792039 -0.0810121 +v 0.00234069 0.0792039 -0.0810121 +v 0.00234069 -0.0792039 0.0810121 +v 0.00234069 0.0792039 0.0810121 +v -0.00234069 -0.0792039 0.0810121 +v -0.00234069 0.0792039 0.0810121 +v -0.0625745 -0.0486075 -0.0810336 +v -0.0625745 0.0486075 -0.0810336 +v 0.0625745 -0.0486075 -0.0810336 +v 0.0625745 0.0486075 -0.0810336 +v 0.0625745 -0.0486075 0.0810336 +v 0.0625745 0.0486075 0.0810336 +v -0.0625745 -0.0486075 0.0810336 +v -0.0625745 0.0486075 0.0810336 +v -0.0786176 -0.00985854 -0.081049 +v -0.0786176 0.00985854 -0.081049 +v 0.0786176 -0.00985854 -0.081049 +v 0.0786176 0.00985854 -0.081049 +v 0.0786176 -0.00985854 0.081049 +v 0.0786176 0.00985854 0.081049 +v -0.0786176 -0.00985854 0.081049 +v -0.0786176 0.00985854 0.081049 +v -0.00864778 -0.0787572 -0.0810687 +v -0.00864778 0.0787572 -0.0810687 +v 0.00864778 -0.0787572 -0.0810687 +v 0.00864778 0.0787572 -0.0810687 +v 0.00864778 -0.0787572 0.0810687 +v 0.00864778 0.0787572 0.0810687 +v -0.00864778 -0.0787572 0.0810687 +v -0.00864778 0.0787572 0.0810687 +v -0.00195495 -0.0792039 -0.0810871 +v -0.00195495 0.0792039 -0.0810871 +v 0.00195495 -0.0792039 -0.0810871 +v 0.00195495 0.0792039 -0.0810871 +v 0.00195495 -0.0792039 0.0810871 +v 0.00195495 0.0792039 0.0810871 +v -0.00195495 -0.0792039 0.0810871 +v -0.00195495 0.0792039 0.0810871 +v -0.0789132 -0.0070506 -0.0810905 +v -0.0789132 0.0070506 -0.0810905 +v 0.0789132 -0.0070506 -0.0810905 +v 0.0789132 0.0070506 -0.0810905 +v 0.0789132 -0.0070506 0.0810905 +v 0.0789132 0.0070506 0.0810905 +v -0.0789132 -0.0070506 0.0810905 +v -0.0789132 0.0070506 0.0810905 +v -0.0791104 -0.00423388 -0.0811182 +v -0.0791104 0.00423388 -0.0811182 +v 0.0791104 -0.00423388 -0.0811182 +v 0.0791104 0.00423388 -0.0811182 +v 0.0791104 -0.00423388 0.0811182 +v 0.0791104 0.00423388 0.0811182 +v -0.0791104 -0.00423388 0.0811182 +v -0.0791104 0.00423388 0.0811182 +v -0.0792091 -0.00141188 -0.0811321 +v -0.0792091 0.00141188 -0.0811321 +v 0.0792091 -0.00141188 -0.0811321 +v 0.0792091 0.00141188 -0.0811321 +v 0.0792091 -0.00141188 0.0811321 +v 0.0792091 0.00141188 0.0811321 +v -0.0792091 -0.00141188 0.0811321 +v -0.0792091 0.00141188 0.0811321 +v -0.0388416 -0.0690455 -0.0811376 +v -0.0388416 0.0690455 -0.0811376 +v 0.0388416 -0.0690455 -0.0811376 +v 0.0388416 0.0690455 -0.0811376 +v 0.0388416 -0.0690455 0.0811376 +v 0.0388416 0.0690455 0.0811376 +v -0.0388416 -0.0690455 0.0811376 +v -0.0388416 0.0690455 0.0811376 +v -0.0193056 -0.0768314 -0.0811461 +v -0.0193056 0.0768314 -0.0811461 +v 0.0193056 -0.0768314 -0.0811461 +v 0.0193056 0.0768314 -0.0811461 +v 0.0193056 -0.0768314 0.0811461 +v 0.0193056 0.0768314 0.0811461 +v -0.0193056 -0.0768314 0.0811461 +v -0.0193056 0.0768314 0.0811461 +v -0.00156683 -0.0792039 -0.0811486 +v -0.00156683 0.0792039 -0.0811486 +v 0.00156683 -0.0792039 -0.0811486 +v 0.00156683 0.0792039 -0.0811486 +v 0.00156683 -0.0792039 0.0811486 +v 0.00156683 0.0792039 0.0811486 +v -0.00156683 -0.0792039 0.0811486 +v -0.00156683 0.0792039 0.0811486 +v -0.00117679 -0.0792039 -0.0811964 +v -0.00117679 0.0792039 -0.0811964 +v 0.00117679 -0.0792039 -0.0811964 +v 0.00117679 0.0792039 -0.0811964 +v 0.00117679 -0.0792039 0.0811964 +v 0.00117679 0.0792039 0.0811964 +v -0.00117679 -0.0792039 0.0811964 +v -0.00117679 0.0792039 0.0811964 +v -0.000785327 -0.0792039 -0.0812307 +v -0.000785327 0.0792039 -0.0812307 +v 0.000785327 -0.0792039 -0.0812307 +v 0.000785327 0.0792039 -0.0812307 +v 0.000785327 -0.0792039 0.0812307 +v 0.000785327 0.0792039 0.0812307 +v -0.000785327 -0.0792039 0.0812307 +v -0.000785327 0.0792039 0.0812307 +v -0.0528379 -0.0590087 -0.081231 +v -0.0528379 0.0590087 -0.081231 +v 0.0528379 -0.0590087 -0.081231 +v 0.0528379 0.0590087 -0.081231 +v 0.0528379 -0.0590087 0.081231 +v 0.0528379 0.0590087 0.081231 +v -0.0528379 -0.0590087 0.081231 +v -0.0528379 0.0590087 0.081231 +v -0.0308995 -0.0729297 -0.0812465 +v -0.0308995 0.0729297 -0.0812465 +v 0.0308995 -0.0729297 -0.0812465 +v 0.0308995 0.0729297 -0.0812465 +v 0.0308995 -0.0729297 0.0812465 +v 0.0308995 0.0729297 0.0812465 +v -0.0308995 -0.0729297 0.0812465 +v -0.0308995 0.0729297 0.0812465 +v -0.0252652 -0.0750675 -0.0812488 +v -0.0252652 0.0750675 -0.0812488 +v 0.0252652 -0.0750675 -0.0812488 +v 0.0252652 0.0750675 -0.0812488 +v 0.0252652 -0.0750675 0.0812488 +v 0.0252652 0.0750675 0.0812488 +v -0.0252652 -0.0750675 0.0812488 +v -0.0252652 0.0750675 0.0812488 +v -0.000392903 -0.0792039 -0.0812513 +v -0.000392903 0.0792039 -0.0812513 +v 0.000392903 -0.0792039 -0.0812513 +v 0.000392903 0.0792039 -0.0812513 +v 0.000392903 -0.0792039 0.0812513 +v 0.000392903 0.0792039 0.0812513 +v -0.000392903 -0.0792039 0.0812513 +v -0.000392903 0.0792039 0.0812513 +v -0.0124975 -0.0782124 -0.0812528 +v -0.0124975 0.0782124 -0.0812528 +v 0.0124975 -0.0782124 -0.0812528 +v 0.0124975 0.0782124 -0.0812528 +v 0.0124975 -0.0782124 0.0812528 +v 0.0124975 0.0782124 0.0812528 +v -0.0124975 -0.0782124 0.0812528 +v -0.0124975 0.0782124 0.0812528 +v -2.06808e-18 -0.0792039 -0.0812581 +v -2.06808e-18 0.0792039 -0.0812581 +v 6.89361e-19 -0.0792039 0.0812581 +v 6.89361e-19 0.0792039 0.0812581 +v -0.0642249 -0.0463348 -0.0813246 +v -0.0642249 0.0463348 -0.0813246 +v 0.0642249 -0.0463348 -0.0813246 +v 0.0642249 0.0463348 -0.0813246 +v 0.0642249 -0.0463348 0.0813246 +v 0.0642249 0.0463348 0.0813246 +v -0.0642249 -0.0463348 0.0813246 +v -0.0642249 0.0463348 0.0813246 +v -0.0280828 -0.0740447 -0.0813462 +v -0.0280828 0.0740447 -0.0813462 +v 0.0280828 -0.0740447 -0.0813462 +v 0.0280828 0.0740447 -0.0813462 +v 0.0280828 -0.0740447 0.0813462 +v 0.0280828 0.0740447 0.0813462 +v -0.0280828 -0.0740447 0.0813462 +v -0.0280828 0.0740447 0.0813462 +v -0.00825622 -0.0787572 -0.0813637 +v -0.00825622 0.0787572 -0.0813637 +v 0.00825622 -0.0787572 -0.0813637 +v 0.00825622 0.0787572 -0.0813637 +v 0.00825622 -0.0787572 0.0813637 +v 0.00825622 0.0787572 0.0813637 +v -0.00825622 -0.0787572 0.0813637 +v -0.00825622 0.0787572 0.0813637 +v -0.0460682 -0.0643878 -0.0814861 +v -0.0460682 0.0643878 -0.0814861 +v 0.0460682 -0.0643878 -0.0814861 +v 0.0460682 0.0643878 -0.0814861 +v 0.0460682 -0.0643878 0.0814861 +v 0.0460682 0.0643878 0.0814861 +v -0.0460682 -0.0643878 0.0814861 +v -0.0460682 0.0643878 0.0814861 +v -0.0158299 -0.0775702 -0.0815011 +v -0.0158299 0.0775702 -0.0815011 +v 0.0158299 -0.0775702 -0.0815011 +v 0.0158299 0.0775702 -0.0815011 +v 0.0158299 -0.0775702 0.0815011 +v 0.0158299 0.0775702 0.0815011 +v -0.0158299 -0.0775702 0.0815011 +v -0.0158299 0.0775702 0.0815011 +v -0.0657953 -0.0440044 -0.0816015 +v -0.0657953 0.0440044 -0.0816015 +v 0.0657953 -0.0440044 -0.0816015 +v 0.0657953 0.0440044 -0.0816015 +v 0.0657953 -0.0440044 0.0816015 +v 0.0657953 0.0440044 0.0816015 +v -0.0657953 -0.0440044 0.0816015 +v -0.0657953 0.0440044 0.0816015 +v -0.00785461 -0.0787572 -0.0816449 +v -0.00785461 0.0787572 -0.0816449 +v 0.00785461 -0.0787572 -0.0816449 +v 0.00785461 0.0787572 -0.0816449 +v 0.00785461 -0.0787572 0.0816449 +v 0.00785461 0.0787572 0.0816449 +v -0.00785461 -0.0787572 0.0816449 +v -0.00785461 0.0787572 0.0816449 +v -0.0548419 -0.0570655 -0.081657 +v -0.0548419 0.0570655 -0.081657 +v 0.0548419 -0.0570655 -0.081657 +v 0.0548419 0.0570655 -0.081657 +v 0.0548419 -0.0570655 0.081657 +v 0.0548419 0.0570655 0.081657 +v -0.0548419 -0.0570655 0.081657 +v -0.0548419 0.0570655 0.081657 +v -0.0120972 -0.0782124 -0.0816821 +v -0.0120972 0.0782124 -0.0816821 +v 0.0120972 -0.0782124 -0.0816821 +v 0.0120972 0.0782124 -0.0816821 +v 0.0120972 -0.0782124 0.0816821 +v 0.0120972 0.0782124 0.0816821 +v -0.0120972 -0.0782124 0.0816821 +v -0.0120972 0.0782124 0.0816821 +v -0.0360879 -0.0704285 -0.0817257 +v -0.0360879 0.0704285 -0.0817257 +v 0.0360879 -0.0704285 -0.0817257 +v 0.0360879 0.0704285 -0.0817257 +v 0.0360879 -0.0704285 0.0817257 +v 0.0360879 0.0704285 0.0817257 +v -0.0360879 -0.0704285 0.0817257 +v -0.0360879 0.0704285 0.0817257 +v -0.0220647 -0.0759968 -0.081732 +v -0.0220647 0.0759968 -0.081732 +v 0.0220647 -0.0759968 -0.081732 +v 0.0220647 0.0759968 -0.081732 +v 0.0220647 -0.0759968 0.081732 +v 0.0220647 0.0759968 0.081732 +v -0.0220647 -0.0759968 0.081732 +v -0.0220647 0.0759968 0.081732 +v -0.0411597 -0.0675765 -0.0818024 +v -0.0411597 0.0675765 -0.0818024 +v 0.0411597 -0.0675765 -0.0818024 +v 0.0411597 0.0675765 -0.0818024 +v 0.0411597 -0.0675765 0.0818024 +v 0.0411597 0.0675765 0.0818024 +v -0.0411597 -0.0675765 0.0818024 +v -0.0411597 0.0675765 0.0818024 +v -0.0189048 -0.0768314 -0.0818131 +v -0.0189048 0.0768314 -0.0818131 +v 0.0189048 -0.0768314 -0.0818131 +v 0.0189048 0.0768314 -0.0818131 +v 0.0189048 -0.0768314 0.0818131 +v 0.0189048 0.0768314 0.0818131 +v -0.0189048 -0.0768314 0.0818131 +v -0.0189048 0.0768314 0.0818131 +v -0.0672837 -0.0416192 -0.0818639 +v -0.0672837 0.0416192 -0.0818639 +v 0.0672837 -0.0416192 -0.0818639 +v 0.0672837 0.0416192 -0.0818639 +v 0.0672837 -0.0416192 0.0818639 +v 0.0672837 0.0416192 0.0818639 +v -0.0672837 -0.0416192 0.0818639 +v -0.0672837 0.0416192 0.0818639 +v -0.00744342 -0.0787572 -0.081912 +v -0.00744342 0.0787572 -0.081912 +v 0.00744342 -0.0787572 -0.081912 +v 0.00744342 0.0787572 -0.081912 +v 0.00744342 -0.0787572 0.081912 +v 0.00744342 0.0787572 0.081912 +v -0.00744342 -0.0787572 0.081912 +v -0.00744342 0.0787572 0.081912 +v -0.0482444 -0.0626721 -0.0820287 +v -0.0482444 0.0626721 -0.0820287 +v 0.0482444 -0.0626721 -0.0820287 +v 0.0482444 0.0626721 -0.0820287 +v 0.0482444 -0.0626721 0.0820287 +v 0.0482444 0.0626721 0.0820287 +v -0.0482444 -0.0626721 0.0820287 +v -0.0482444 0.0626721 0.0820287 +v -0.0154188 -0.0775702 -0.0820465 +v -0.0154188 0.0775702 -0.0820465 +v 0.0154188 -0.0775702 -0.0820465 +v 0.0154188 0.0775702 -0.0820465 +v 0.0154188 -0.0775702 0.0820465 +v 0.0154188 0.0775702 0.0820465 +v -0.0154188 -0.0775702 0.0820465 +v -0.0154188 0.0775702 0.0820465 +v -0.0567777 -0.0550513 -0.0820685 +v -0.0567777 0.0550513 -0.0820685 +v 0.0567777 -0.0550513 -0.0820685 +v 0.0567777 0.0550513 -0.0820685 +v 0.0567777 -0.0550513 0.0820685 +v 0.0567777 0.0550513 0.0820685 +v -0.0567777 -0.0550513 0.0820685 +v -0.0567777 0.0550513 0.0820685 +v -0.0116821 -0.0782124 -0.0820972 +v -0.0116821 0.0782124 -0.0820972 +v 0.0116821 -0.0782124 -0.0820972 +v 0.0116821 0.0782124 -0.0820972 +v 0.0116821 -0.0782124 0.0820972 +v 0.0116821 0.0782124 0.0820972 +v -0.0116821 -0.0782124 0.0820972 +v -0.0116821 0.0782124 0.0820972 +v -0.0686883 -0.0391821 -0.0821116 +v -0.0686883 0.0391821 -0.0821116 +v 0.0686883 -0.0391821 -0.0821116 +v 0.0686883 0.0391821 -0.0821116 +v 0.0686883 -0.0391821 0.0821116 +v 0.0686883 0.0391821 0.0821116 +v -0.0686883 -0.0391821 0.0821116 +v -0.0686883 0.0391821 0.0821116 +v -0.0332988 -0.0717238 -0.0821198 +v -0.0332988 0.0717238 -0.0821198 +v 0.0332988 -0.0717238 -0.0821198 +v 0.0332988 0.0717238 -0.0821198 +v 0.0332988 -0.0717238 0.0821198 +v 0.0332988 0.0717238 0.0821198 +v -0.0332988 -0.0717238 0.0821198 +v -0.0332988 0.0717238 0.0821198 +v -0.0248573 -0.0750675 -0.0821237 +v -0.0248573 0.0750675 -0.0821237 +v 0.0248573 -0.0750675 -0.0821237 +v 0.0248573 0.0750675 -0.0821237 +v 0.0248573 -0.0750675 0.0821237 +v 0.0248573 0.0750675 0.0821237 +v -0.0248573 -0.0750675 0.0821237 +v -0.0248573 0.0750675 0.0821237 +v -0.00702316 -0.0787572 -0.0821645 +v -0.00702316 0.0787572 -0.0821645 +v 0.00702316 -0.0787572 -0.0821645 +v 0.00702316 0.0787572 -0.0821645 +v 0.00702316 -0.0787572 0.0821645 +v 0.00702316 0.0787572 0.0821645 +v -0.00702316 -0.0787572 0.0821645 +v -0.00702316 0.0787572 0.0821645 +v -0.0304882 -0.0729297 -0.082318 +v -0.0304882 0.0729297 -0.082318 +v 0.0304882 -0.0729297 -0.082318 +v 0.0304882 0.0729297 -0.082318 +v 0.0304882 -0.0729297 0.082318 +v 0.0304882 0.0729297 0.082318 +v -0.0304882 -0.0729297 0.082318 +v -0.0304882 0.0729297 0.082318 +v -0.0276697 -0.0740447 -0.0823193 +v -0.0276697 0.0740447 -0.0823193 +v 0.0276697 -0.0740447 -0.0823193 +v 0.0276697 0.0740447 -0.0823193 +v 0.0276697 -0.0740447 0.0823193 +v 0.0276697 0.0740447 0.0823193 +v -0.0276697 -0.0740447 0.0823193 +v -0.0276697 0.0740447 0.0823193 +v -0.0700072 -0.0366961 -0.0823442 +v -0.0700072 0.0366961 -0.0823442 +v 0.0700072 -0.0366961 -0.0823442 +v 0.0700072 0.0366961 -0.0823442 +v 0.0700072 -0.0366961 0.0823442 +v 0.0700072 0.0366961 0.0823442 +v -0.0700072 -0.0366961 0.0823442 +v -0.0700072 0.0366961 0.0823442 +v -0.00659435 -0.0787572 -0.0824022 +v -0.00659435 0.0787572 -0.0824022 +v 0.00659435 -0.0787572 -0.0824022 +v 0.00659435 0.0787572 -0.0824022 +v 0.00659435 -0.0787572 0.0824022 +v 0.00659435 0.0787572 0.0824022 +v -0.00659435 -0.0787572 0.0824022 +v -0.00659435 0.0787572 0.0824022 +v -0.0434266 -0.0660233 -0.0824524 +v -0.0434266 0.0660233 -0.0824524 +v 0.0434266 -0.0660233 -0.0824524 +v 0.0434266 0.0660233 -0.0824524 +v 0.0434266 -0.0660233 0.0824524 +v 0.0434266 0.0660233 0.0824524 +v -0.0434266 -0.0660233 0.0824524 +v -0.0434266 0.0660233 0.0824524 +v -0.0586427 -0.0529685 -0.0824649 +v -0.0586427 0.0529685 -0.0824649 +v 0.0586427 -0.0529685 -0.0824649 +v 0.0586427 0.0529685 -0.0824649 +v 0.0586427 -0.0529685 0.0824649 +v 0.0586427 0.0529685 0.0824649 +v -0.0586427 -0.0529685 0.0824649 +v -0.0586427 0.0529685 0.0824649 +v -0.018481 -0.0768314 -0.0824656 +v -0.018481 0.0768314 -0.0824656 +v 0.018481 -0.0768314 -0.0824656 +v 0.018481 0.0768314 -0.0824656 +v 0.018481 -0.0768314 0.0824656 +v 0.018481 0.0768314 0.0824656 +v -0.018481 -0.0768314 0.0824656 +v -0.018481 0.0768314 0.0824656 +v -0.0384292 -0.0690455 -0.0824864 +v -0.0384292 0.0690455 -0.0824864 +v 0.0384292 -0.0690455 -0.0824864 +v 0.0384292 0.0690455 -0.0824864 +v 0.0384292 -0.0690455 0.0824864 +v 0.0384292 0.0690455 0.0824864 +v -0.0384292 -0.0690455 0.0824864 +v -0.0384292 0.0690455 0.0824864 +v -0.0216418 -0.0759968 -0.0824949 +v -0.0216418 0.0759968 -0.0824949 +v 0.0216418 -0.0759968 -0.0824949 +v 0.0216418 0.0759968 -0.0824949 +v 0.0216418 -0.0759968 0.0824949 +v 0.0216418 0.0759968 0.0824949 +v -0.0216418 -0.0759968 0.0824949 +v -0.0216418 0.0759968 0.0824949 +v -0.0112528 -0.0782124 -0.0824975 +v -0.0112528 0.0782124 -0.0824975 +v 0.0112528 -0.0782124 -0.0824975 +v 0.0112528 0.0782124 -0.0824975 +v 0.0112528 -0.0782124 0.0824975 +v 0.0112528 0.0782124 0.0824975 +v -0.0112528 -0.0782124 0.0824975 +v -0.0112528 0.0782124 0.0824975 +v -0.0503604 -0.0608783 -0.0825563 +v -0.0503604 0.0608783 -0.0825563 +v 0.0503604 -0.0608783 -0.0825563 +v 0.0503604 0.0608783 -0.0825563 +v 0.0503604 -0.0608783 0.0825563 +v 0.0503604 0.0608783 0.0825563 +v -0.0503604 -0.0608783 0.0825563 +v -0.0503604 0.0608783 0.0825563 +v -0.071239 -0.0341645 -0.0825614 +v -0.071239 0.0341645 -0.0825614 +v 0.071239 -0.0341645 -0.0825614 +v 0.071239 0.0341645 -0.0825614 +v 0.071239 -0.0341645 0.0825614 +v 0.071239 0.0341645 0.0825614 +v -0.071239 -0.0341645 0.0825614 +v -0.071239 0.0341645 0.0825614 +v -0.014989 -0.0775702 -0.0825773 +v -0.014989 0.0775702 -0.0825773 +v 0.014989 -0.0775702 -0.0825773 +v 0.014989 0.0775702 -0.0825773 +v 0.014989 -0.0775702 0.0825773 +v 0.014989 0.0775702 0.0825773 +v -0.014989 -0.0775702 0.0825773 +v -0.014989 0.0775702 0.0825773 +v -0.0061575 -0.0787572 -0.0826248 +v -0.0061575 0.0787572 -0.0826248 +v 0.0061575 -0.0787572 -0.0826248 +v 0.0061575 0.0787572 -0.0826248 +v 0.0061575 -0.0787572 0.0826248 +v 0.0061575 0.0787572 0.0826248 +v -0.0061575 -0.0787572 0.0826248 +v -0.0061575 0.0787572 0.0826248 +v -0.072382 -0.0315903 -0.0827629 +v -0.072382 0.0315903 -0.0827629 +v 0.072382 -0.0315903 -0.0827629 +v 0.072382 0.0315903 -0.0827629 +v 0.072382 -0.0315903 0.0827629 +v 0.072382 0.0315903 0.0827629 +v -0.072382 -0.0315903 0.0827629 +v -0.072382 0.0315903 0.0827629 +v -0.00571316 -0.0787572 -0.082832 +v -0.00571316 0.0787572 -0.082832 +v 0.00571316 -0.0787572 -0.082832 +v 0.00571316 0.0787572 -0.082832 +v 0.00571316 -0.0787572 0.082832 +v 0.00571316 0.0787572 0.082832 +v -0.00571316 -0.0787572 0.082832 +v -0.00571316 0.0787572 0.082832 +v -0.0604347 -0.0508196 -0.0828458 +v -0.0604347 0.0508196 -0.0828458 +v 0.0604347 -0.0508196 -0.0828458 +v 0.0604347 0.0508196 -0.0828458 +v 0.0604347 -0.0508196 0.0828458 +v 0.0604347 0.0508196 0.0828458 +v -0.0604347 -0.0508196 0.0828458 +v -0.0604347 0.0508196 0.0828458 +v -0.0108098 -0.0782124 -0.0828826 +v -0.0108098 0.0782124 -0.0828826 +v 0.0108098 -0.0782124 -0.0828826 +v 0.0108098 0.0782124 -0.0828826 +v 0.0108098 -0.0782124 0.0828826 +v 0.0108098 0.0782124 0.0828826 +v -0.0108098 -0.0782124 0.0828826 +v -0.0108098 0.0782124 0.0828826 +v -0.0734349 -0.0289768 -0.0829486 +v -0.0734349 0.0289768 -0.0829486 +v 0.0734349 -0.0289768 -0.0829486 +v 0.0734349 0.0289768 -0.0829486 +v 0.0734349 -0.0289768 0.0829486 +v 0.0734349 0.0289768 0.0829486 +v -0.0734349 -0.0289768 0.0829486 +v -0.0734349 0.0289768 0.0829486 +v -0.0356566 -0.0704285 -0.082978 +v -0.0356566 0.0704285 -0.082978 +v 0.0356566 -0.0704285 -0.082978 +v 0.0356566 0.0704285 -0.082978 +v 0.0356566 -0.0704285 0.082978 +v 0.0356566 0.0704285 0.082978 +v -0.0356566 -0.0704285 0.082978 +v -0.0356566 0.0704285 0.082978 +v -0.024419 -0.0750675 -0.0829838 +v -0.024419 0.0750675 -0.0829838 +v 0.024419 -0.0750675 -0.0829838 +v 0.024419 0.0750675 -0.0829838 +v 0.024419 -0.0750675 0.0829838 +v 0.024419 0.0750675 0.0829838 +v -0.024419 -0.0750675 0.0829838 +v -0.024419 0.0750675 0.0829838 +v -0.00526185 -0.0787572 -0.0830235 +v -0.00526185 0.0787572 -0.0830235 +v 0.00526185 -0.0787572 -0.0830235 +v 0.00526185 0.0787572 -0.0830235 +v 0.00526185 -0.0787572 0.0830235 +v 0.00526185 0.0787572 0.0830235 +v -0.00526185 -0.0787572 0.0830235 +v -0.00526185 0.0787572 0.0830235 +v -0.0524137 -0.0590087 -0.0830682 +v -0.0524137 0.0590087 -0.0830682 +v 0.0524137 -0.0590087 -0.0830682 +v 0.0524137 0.0590087 -0.0830682 +v 0.0524137 -0.0590087 0.0830682 +v 0.0524137 0.0590087 0.0830682 +v -0.0524137 -0.0590087 0.0830682 +v -0.0524137 0.0590087 0.0830682 +v -0.0456393 -0.0643878 -0.0830869 +v -0.0456393 0.0643878 -0.0830869 +v 0.0456393 -0.0643878 -0.0830869 +v 0.0456393 0.0643878 -0.0830869 +v 0.0456393 -0.0643878 0.0830869 +v 0.0456393 0.0643878 0.0830869 +v -0.0456393 -0.0643878 0.0830869 +v -0.0456393 0.0643878 0.0830869 +v -0.014541 -0.0775702 -0.0830927 +v -0.014541 0.0775702 -0.0830927 +v 0.014541 -0.0775702 -0.0830927 +v 0.014541 0.0775702 -0.0830927 +v 0.014541 -0.0775702 0.0830927 +v 0.014541 0.0775702 0.0830927 +v -0.014541 -0.0775702 0.0830927 +v -0.014541 0.0775702 0.0830927 +v -0.0180347 -0.0768314 -0.083103 +v -0.0180347 0.0768314 -0.083103 +v 0.0180347 -0.0768314 -0.083103 +v 0.0180347 0.0768314 -0.083103 +v 0.0180347 -0.0768314 0.083103 +v 0.0180347 0.0768314 0.083103 +v -0.0180347 -0.0768314 0.083103 +v -0.0180347 0.0768314 0.083103 +v -0.0743962 -0.0263271 -0.0831181 +v -0.0743962 0.0263271 -0.0831181 +v 0.0743962 -0.0263271 -0.0831181 +v 0.0743962 0.0263271 -0.0831181 +v 0.0743962 -0.0263271 0.0831181 +v 0.0743962 0.0263271 0.0831181 +v -0.0743962 -0.0263271 0.0831181 +v -0.0743962 0.0263271 0.0831181 +v -0.00480413 -0.0787572 -0.0831992 +v -0.00480413 0.0787572 -0.0831992 +v 0.00480413 -0.0787572 -0.0831992 +v 0.00480413 0.0787572 -0.0831992 +v 0.00480413 -0.0787572 0.0831992 +v 0.00480413 0.0787572 0.0831992 +v -0.00480413 -0.0787572 0.0831992 +v -0.00480413 0.0787572 0.0831992 +v -0.0621513 -0.0486075 -0.0832107 +v -0.0621513 0.0486075 -0.0832107 +v 0.0621513 -0.0486075 -0.0832107 +v 0.0621513 0.0486075 -0.0832107 +v 0.0621513 -0.0486075 0.0832107 +v 0.0621513 0.0486075 0.0832107 +v -0.0621513 -0.0486075 0.0832107 +v -0.0621513 0.0486075 0.0832107 +v -0.0407228 -0.0675765 -0.0832316 +v -0.0407228 0.0675765 -0.0832316 +v 0.0407228 -0.0675765 -0.0832316 +v 0.0407228 0.0675765 -0.0832316 +v 0.0407228 -0.0675765 0.0832316 +v 0.0407228 0.0675765 0.0832316 +v -0.0407228 -0.0675765 0.0832316 +v -0.0407228 0.0675765 0.0832316 +v -0.0211925 -0.0759968 -0.0832426 +v -0.0211925 0.0759968 -0.0832426 +v 0.0211925 -0.0759968 -0.0832426 +v 0.0211925 0.0759968 -0.0832426 +v 0.0211925 -0.0759968 0.0832426 +v 0.0211925 0.0759968 0.0832426 +v -0.0211925 -0.0759968 0.0832426 +v -0.0211925 0.0759968 0.0832426 +v -0.0103536 -0.0782124 -0.083252 +v -0.0103536 0.0782124 -0.083252 +v 0.0103536 -0.0782124 -0.083252 +v 0.0103536 0.0782124 -0.083252 +v 0.0103536 -0.0782124 0.083252 +v 0.0103536 0.0782124 0.083252 +v -0.0103536 -0.0782124 0.083252 +v -0.0103536 0.0782124 0.083252 +v -0.0752649 -0.0236447 -0.0832712 +v -0.0752649 0.0236447 -0.0832712 +v 0.0752649 -0.0236447 -0.0832712 +v 0.0752649 0.0236447 -0.0832712 +v 0.0752649 -0.0236447 0.0832712 +v 0.0752649 0.0236447 0.0832712 +v -0.0752649 -0.0236447 0.0832712 +v -0.0752649 0.0236447 0.0832712 +v -0.0328555 -0.0717238 -0.0832745 +v -0.0328555 0.0717238 -0.0832745 +v 0.0328555 -0.0717238 -0.0832745 +v 0.0328555 0.0717238 -0.0832745 +v 0.0328555 -0.0717238 0.0832745 +v 0.0328555 0.0717238 0.0832745 +v -0.0328555 -0.0717238 0.0832745 +v -0.0328555 0.0717238 0.0832745 +v -0.0272229 -0.0740447 -0.0832775 +v -0.0272229 0.0740447 -0.0832775 +v 0.0272229 -0.0740447 -0.0832775 +v 0.0272229 0.0740447 -0.0832775 +v 0.0272229 -0.0740447 0.0832775 +v 0.0272229 0.0740447 0.0832775 +v -0.0272229 -0.0740447 0.0832775 +v -0.0272229 0.0740447 0.0832775 +v -0.00434055 -0.0787572 -0.0833589 +v -0.00434055 0.0787572 -0.0833589 +v 0.00434055 -0.0787572 -0.0833589 +v 0.00434055 0.0787572 -0.0833589 +v 0.00434055 -0.0787572 0.0833589 +v 0.00434055 0.0787572 0.0833589 +v -0.00434055 -0.0787572 0.0833589 +v -0.00434055 0.0787572 0.0833589 +v -0.0300397 -0.0729297 -0.0833745 +v -0.0300397 0.0729297 -0.0833745 +v 0.0300397 -0.0729297 -0.0833745 +v 0.0300397 0.0729297 -0.0833745 +v 0.0300397 -0.0729297 0.0833745 +v 0.0300397 0.0729297 0.0833745 +v -0.0300397 -0.0729297 0.0833745 +v -0.0300397 0.0729297 0.0833745 +v -0.0760398 -0.0209327 -0.0834079 +v -0.0760398 0.0209327 -0.0834079 +v 0.0760398 -0.0209327 -0.0834079 +v 0.0760398 0.0209327 -0.0834079 +v 0.0760398 -0.0209327 0.0834079 +v 0.0760398 0.0209327 0.0834079 +v -0.0760398 -0.0209327 0.0834079 +v -0.0760398 0.0209327 0.0834079 +v -0.00387169 -0.0787572 -0.0835022 +v -0.00387169 0.0787572 -0.0835022 +v 0.00387169 -0.0787572 -0.0835022 +v 0.00387169 0.0787572 -0.0835022 +v 0.00387169 -0.0787572 0.0835022 +v 0.00387169 0.0787572 0.0835022 +v -0.00387169 -0.0787572 0.0835022 +v -0.00387169 0.0787572 0.0835022 +v -0.0767199 -0.0181947 -0.0835278 +v -0.0767199 0.0181947 -0.0835278 +v 0.0767199 -0.0181947 -0.0835278 +v 0.0767199 0.0181947 -0.0835278 +v 0.0767199 -0.0181947 0.0835278 +v 0.0767199 0.0181947 0.0835278 +v -0.0767199 -0.0181947 0.0835278 +v -0.0767199 0.0181947 0.0835278 +v -0.0637906 -0.0463348 -0.0835591 +v -0.0637906 0.0463348 -0.0835591 +v 0.0637906 -0.0463348 -0.0835591 +v 0.0637906 0.0463348 -0.0835591 +v 0.0637906 -0.0463348 0.0835591 +v 0.0637906 0.0463348 0.0835591 +v -0.0637906 -0.0463348 0.0835591 +v -0.0637906 0.0463348 0.0835591 +v -0.0544017 -0.0570655 -0.0835639 +v -0.0544017 0.0570655 -0.0835639 +v 0.0544017 -0.0570655 -0.0835639 +v 0.0544017 0.0570655 -0.0835639 +v 0.0544017 -0.0570655 0.0835639 +v 0.0544017 0.0570655 0.0835639 +v -0.0544017 -0.0570655 0.0835639 +v -0.0544017 0.0570655 0.0835639 +v -0.0140752 -0.0775702 -0.0835922 +v -0.0140752 0.0775702 -0.0835922 +v 0.0140752 -0.0775702 -0.0835922 +v 0.0140752 0.0775702 -0.0835922 +v 0.0140752 -0.0775702 0.0835922 +v 0.0140752 0.0775702 0.0835922 +v -0.0140752 -0.0775702 0.0835922 +v -0.0140752 0.0775702 0.0835922 +v -0.00988481 -0.0782124 -0.0836053 +v -0.00988481 0.0782124 -0.0836053 +v 0.00988481 -0.0782124 -0.0836053 +v 0.00988481 0.0782124 -0.0836053 +v 0.00988481 -0.0782124 0.0836053 +v 0.00988481 0.0782124 0.0836053 +v -0.00988481 -0.0782124 0.0836053 +v -0.00988481 0.0782124 0.0836053 +v -0.00339811 -0.0787572 -0.0836291 +v -0.00339811 0.0787572 -0.0836291 +v 0.00339811 -0.0787572 -0.0836291 +v 0.00339811 0.0787572 -0.0836291 +v 0.00339811 -0.0787572 0.0836291 +v 0.00339811 0.0787572 0.0836291 +v -0.00339811 -0.0787572 0.0836291 +v -0.00339811 0.0787572 0.0836291 +v -0.0773045 -0.0154341 -0.0836309 +v -0.0773045 0.0154341 -0.0836309 +v 0.0773045 -0.0154341 -0.0836309 +v 0.0773045 0.0154341 -0.0836309 +v 0.0773045 -0.0154341 0.0836309 +v 0.0773045 0.0154341 0.0836309 +v -0.0773045 -0.0154341 0.0836309 +v -0.0773045 0.0154341 0.0836309 +v -0.0477952 -0.0626721 -0.0837051 +v -0.0477952 0.0626721 -0.0837051 +v 0.0477952 -0.0626721 -0.0837051 +v 0.0477952 0.0626721 -0.0837051 +v 0.0477952 -0.0626721 0.0837051 +v 0.0477952 0.0626721 0.0837051 +v -0.0477952 -0.0626721 0.0837051 +v -0.0477952 0.0626721 0.0837051 +v -0.0777928 -0.0126542 -0.083717 +v -0.0777928 0.0126542 -0.083717 +v 0.0777928 -0.0126542 -0.083717 +v 0.0777928 0.0126542 -0.083717 +v 0.0777928 -0.0126542 0.083717 +v 0.0777928 0.0126542 0.083717 +v -0.0777928 -0.0126542 0.083717 +v -0.0777928 0.0126542 0.083717 +v -0.0175665 -0.0768314 -0.0837244 +v -0.0175665 0.0768314 -0.0837244 +v 0.0175665 -0.0768314 -0.0837244 +v 0.0175665 0.0768314 -0.0837244 +v 0.0175665 -0.0768314 0.0837244 +v 0.0175665 0.0768314 0.0837244 +v -0.0175665 -0.0768314 0.0837244 +v -0.0175665 0.0768314 0.0837244 +v -0.0029204 -0.0787572 -0.0837394 +v -0.0029204 0.0787572 -0.0837394 +v 0.0029204 -0.0787572 -0.0837394 +v 0.0029204 0.0787572 -0.0837394 +v 0.0029204 -0.0787572 0.0837394 +v 0.0029204 0.0787572 0.0837394 +v -0.0029204 -0.0787572 0.0837394 +v -0.0029204 0.0787572 0.0837394 +v -0.0781841 -0.00985854 -0.083786 +v -0.0781841 0.00985854 -0.083786 +v 0.0781841 -0.00985854 -0.083786 +v 0.0781841 0.00985854 -0.083786 +v 0.0781841 -0.00985854 0.083786 +v 0.0781841 0.00985854 0.083786 +v -0.0781841 -0.00985854 0.083786 +v -0.0781841 0.00985854 0.083786 +v -0.0379701 -0.0690455 -0.08382 +v -0.0379701 0.0690455 -0.08382 +v 0.0379701 -0.0690455 -0.08382 +v 0.0379701 0.0690455 -0.08382 +v 0.0379701 -0.0690455 0.08382 +v 0.0379701 0.0690455 0.08382 +v -0.0379701 -0.0690455 0.08382 +v -0.0379701 0.0690455 0.08382 +v -0.023951 -0.0750675 -0.0838281 +v -0.023951 0.0750675 -0.0838281 +v 0.023951 -0.0750675 -0.0838281 +v 0.023951 0.0750675 -0.0838281 +v 0.023951 -0.0750675 0.0838281 +v 0.023951 0.0750675 0.0838281 +v -0.023951 -0.0750675 0.0838281 +v -0.023951 0.0750675 0.0838281 +v -0.00243912 -0.0787572 -0.0838329 +v -0.00243912 0.0787572 -0.0838329 +v 0.00243912 -0.0787572 -0.0838329 +v 0.00243912 0.0787572 -0.0838329 +v 0.00243912 -0.0787572 0.0838329 +v 0.00243912 0.0787572 0.0838329 +v -0.00243912 -0.0787572 0.0838329 +v -0.00243912 0.0787572 0.0838329 +v -0.0784781 -0.0070506 -0.0838378 +v -0.0784781 0.0070506 -0.0838378 +v 0.0784781 -0.0070506 -0.0838378 +v 0.0784781 0.0070506 -0.0838378 +v 0.0784781 -0.0070506 0.0838378 +v 0.0784781 0.0070506 0.0838378 +v -0.0784781 -0.0070506 0.0838378 +v -0.0784781 0.0070506 0.0838378 +v -0.0786742 -0.00423388 -0.0838724 +v -0.0786742 0.00423388 -0.0838724 +v 0.0786742 -0.00423388 -0.0838724 +v 0.0786742 0.00423388 -0.0838724 +v 0.0786742 -0.00423388 0.0838724 +v 0.0786742 0.00423388 0.0838724 +v -0.0786742 -0.00423388 0.0838724 +v -0.0786742 0.00423388 0.0838724 +v -0.0787724 -0.00141188 -0.0838897 +v -0.0787724 0.00141188 -0.0838897 +v 0.0787724 -0.00141188 -0.0838897 +v 0.0787724 0.00141188 -0.0838897 +v 0.0787724 -0.00141188 0.0838897 +v 0.0787724 0.00141188 0.0838897 +v -0.0787724 -0.00141188 0.0838897 +v -0.0787724 0.00141188 0.0838897 +v -0.0653503 -0.0440044 -0.0838906 +v -0.0653503 0.0440044 -0.0838906 +v 0.0653503 -0.0440044 -0.0838906 +v 0.0653503 0.0440044 -0.0838906 +v 0.0653503 -0.0440044 0.0838906 +v 0.0653503 0.0440044 0.0838906 +v -0.0653503 -0.0440044 0.0838906 +v -0.0653503 0.0440044 0.0838906 +v -0.00195487 -0.0787572 -0.0839096 +v -0.00195487 0.0787572 -0.0839096 +v 0.00195487 -0.0787572 -0.0839096 +v 0.00195487 0.0787572 -0.0839096 +v 0.00195487 -0.0787572 0.0839096 +v 0.00195487 0.0787572 0.0839096 +v -0.00195487 -0.0787572 0.0839096 +v -0.00195487 0.0787572 0.0839096 +v -0.00940397 -0.0782124 -0.083942 +v -0.00940397 0.0782124 -0.083942 +v 0.00940397 -0.0782124 -0.083942 +v 0.00940397 0.0782124 -0.083942 +v 0.00940397 -0.0782124 0.083942 +v 0.00940397 0.0782124 0.083942 +v -0.00940397 -0.0782124 0.083942 +v -0.00940397 0.0782124 0.083942 +v -0.0429655 -0.0660233 -0.0839604 +v -0.0429655 0.0660233 -0.0839604 +v 0.0429655 -0.0660233 -0.0839604 +v 0.0429655 0.0660233 -0.0839604 +v 0.0429655 -0.0660233 0.0839604 +v 0.0429655 0.0660233 0.0839604 +v -0.0429655 -0.0660233 0.0839604 +v -0.0429655 0.0660233 0.0839604 +v -0.00146824 -0.0787572 -0.0839694 +v -0.00146824 0.0787572 -0.0839694 +v 0.00146824 -0.0787572 -0.0839694 +v 0.00146824 0.0787572 -0.0839694 +v 0.00146824 -0.0787572 0.0839694 +v 0.00146824 0.0787572 0.0839694 +v -0.00146824 -0.0787572 0.0839694 +v -0.00146824 0.0787572 0.0839694 +v -0.0207175 -0.0759968 -0.0839741 +v -0.0207175 0.0759968 -0.0839741 +v 0.0207175 -0.0759968 -0.0839741 +v 0.0207175 0.0759968 -0.0839741 +v 0.0207175 -0.0759968 0.0839741 +v 0.0207175 0.0759968 0.0839741 +v -0.0207175 -0.0759968 0.0839741 +v -0.0207175 0.0759968 0.0839741 +v -0.000979822 -0.0787572 -0.0840121 +v -0.000979822 0.0787572 -0.0840121 +v 0.000979822 -0.0787572 -0.0840121 +v 0.000979822 0.0787572 -0.0840121 +v 0.000979822 -0.0787572 0.0840121 +v 0.000979822 0.0787572 0.0840121 +v -0.000979822 -0.0787572 0.0840121 +v -0.000979822 0.0787572 0.0840121 +v -0.00049021 -0.0787572 -0.0840378 +v -0.00049021 0.0787572 -0.0840378 +v 0.00049021 -0.0787572 -0.0840378 +v 0.00049021 0.0787572 -0.0840378 +v 0.00049021 -0.0787572 0.0840378 +v 0.00049021 0.0787572 0.0840378 +v -0.00049021 -0.0787572 0.0840378 +v -0.00049021 0.0787572 0.0840378 +v -0.0563219 -0.0550513 -0.0840426 +v -0.0563219 0.0550513 -0.0840426 +v 0.0563219 -0.0550513 -0.0840426 +v 0.0563219 0.0550513 -0.0840426 +v 0.0563219 -0.0550513 0.0840426 +v 0.0563219 0.0550513 0.0840426 +v -0.0563219 -0.0550513 0.0840426 +v -0.0563219 0.0550513 0.0840426 +v -2.58027e-18 -0.0787572 -0.0840463 +v -2.58027e-18 0.0787572 -0.0840463 +v 8.60089e-19 -0.0787572 0.0840463 +v 8.60089e-19 0.0787572 0.0840463 +v -0.0135922 -0.0775702 -0.0840752 +v -0.0135922 0.0775702 -0.0840752 +v 0.0135922 -0.0775702 -0.0840752 +v 0.0135922 0.0775702 -0.0840752 +v 0.0135922 -0.0775702 0.0840752 +v 0.0135922 0.0775702 0.0840752 +v -0.0135922 -0.0775702 0.0840752 +v -0.0135922 0.0775702 0.0840752 +v -0.0668286 -0.0416192 -0.0842049 +v -0.0668286 0.0416192 -0.0842049 +v 0.0668286 -0.0416192 -0.0842049 +v 0.0668286 0.0416192 -0.0842049 +v 0.0668286 -0.0416192 0.0842049 +v 0.0668286 0.0416192 0.0842049 +v -0.0668286 -0.0416192 0.0842049 +v -0.0668286 0.0416192 0.0842049 +v -0.035182 -0.0704285 -0.0842144 +v -0.035182 0.0704285 -0.0842144 +v 0.035182 -0.0704285 -0.0842144 +v 0.035182 0.0704285 -0.0842144 +v 0.035182 -0.0704285 0.0842144 +v 0.035182 0.0704285 0.0842144 +v -0.035182 -0.0704285 0.0842144 +v -0.035182 0.0704285 0.0842144 +v -0.0267429 -0.0740447 -0.0842195 +v -0.0267429 0.0740447 -0.0842195 +v 0.0267429 -0.0740447 -0.0842195 +v 0.0267429 0.0740447 -0.0842195 +v 0.0267429 -0.0740447 0.0842195 +v 0.0267429 0.0740447 0.0842195 +v -0.0267429 -0.0740447 0.0842195 +v -0.0267429 0.0740447 0.0842195 +v -0.00891167 -0.0782124 -0.0842617 +v -0.00891167 0.0782124 -0.0842617 +v 0.00891167 -0.0782124 -0.0842617 +v 0.00891167 0.0782124 -0.0842617 +v 0.00891167 -0.0782124 0.0842617 +v 0.00891167 0.0782124 0.0842617 +v -0.00891167 -0.0782124 0.0842617 +v -0.00891167 0.0782124 0.0842617 +v -0.0498915 -0.0608783 -0.0843062 +v -0.0498915 0.0608783 -0.0843062 +v 0.0498915 -0.0608783 -0.0843062 +v 0.0498915 0.0608783 -0.0843062 +v 0.0498915 -0.0608783 0.0843062 +v 0.0498915 0.0608783 0.0843062 +v -0.0498915 -0.0608783 0.0843062 +v -0.0498915 0.0608783 0.0843062 +v -0.0170768 -0.0768314 -0.0843291 +v -0.0170768 0.0768314 -0.0843291 +v 0.0170768 -0.0768314 -0.0843291 +v 0.0170768 0.0768314 -0.0843291 +v 0.0170768 -0.0768314 0.0843291 +v 0.0170768 0.0768314 0.0843291 +v -0.0170768 -0.0768314 0.0843291 +v -0.0170768 0.0768314 0.0843291 +v -0.0323723 -0.0717238 -0.0844131 +v -0.0323723 0.0717238 -0.0844131 +v 0.0323723 -0.0717238 -0.0844131 +v 0.0323723 0.0717238 -0.0844131 +v 0.0323723 -0.0717238 0.0844131 +v 0.0323723 0.0717238 0.0844131 +v -0.0323723 -0.0717238 0.0844131 +v -0.0323723 0.0717238 0.0844131 +v -0.0295546 -0.0729297 -0.0844148 +v -0.0295546 0.0729297 -0.0844148 +v 0.0295546 -0.0729297 -0.0844148 +v 0.0295546 0.0729297 -0.0844148 +v 0.0295546 -0.0729297 0.0844148 +v 0.0295546 0.0729297 0.0844148 +v -0.0295546 -0.0729297 0.0844148 +v -0.0295546 0.0729297 0.0844148 +v -0.0682237 -0.0391821 -0.0845014 +v -0.0682237 0.0391821 -0.0845014 +v 0.0682237 -0.0391821 -0.0845014 +v 0.0682237 0.0391821 -0.0845014 +v 0.0682237 -0.0391821 0.0845014 +v 0.0682237 0.0391821 0.0845014 +v -0.0682237 -0.0391821 0.0845014 +v -0.0682237 0.0391821 0.0845014 +v -0.058172 -0.0529685 -0.0845039 +v -0.058172 0.0529685 -0.0845039 +v 0.058172 -0.0529685 -0.0845039 +v 0.058172 0.0529685 -0.0845039 +v 0.058172 -0.0529685 0.0845039 +v 0.058172 0.0529685 0.0845039 +v -0.058172 -0.0529685 0.0845039 +v -0.058172 0.0529685 0.0845039 +v -0.0130927 -0.0775702 -0.084541 +v -0.0130927 0.0775702 -0.084541 +v 0.0130927 -0.0775702 -0.084541 +v 0.0130927 0.0775702 -0.084541 +v 0.0130927 -0.0775702 0.084541 +v 0.0130927 0.0775702 0.084541 +v -0.0130927 -0.0775702 0.084541 +v -0.0130927 0.0775702 0.084541 +v -0.00840852 -0.0782124 -0.084564 +v -0.00840852 0.0782124 -0.084564 +v 0.00840852 -0.0782124 -0.084564 +v 0.00840852 0.0782124 -0.084564 +v 0.00840852 -0.0782124 0.084564 +v 0.00840852 0.0782124 0.084564 +v -0.00840852 -0.0782124 0.084564 +v -0.00840852 0.0782124 0.084564 +v -0.0402362 -0.0675765 -0.0846448 +v -0.0402362 0.0675765 -0.0846448 +v 0.0402362 -0.0675765 -0.0846448 +v 0.0402362 0.0675765 -0.0846448 +v 0.0402362 -0.0675765 0.0846448 +v 0.0402362 0.0675765 0.0846448 +v -0.0402362 -0.0675765 0.0846448 +v -0.0402362 0.0675765 0.0846448 +v -0.0234538 -0.0750675 -0.0846556 +v -0.0234538 0.0750675 -0.0846556 +v 0.0234538 -0.0750675 -0.0846556 +v 0.0234538 0.0750675 -0.0846556 +v 0.0234538 -0.0750675 0.0846556 +v 0.0234538 0.0750675 0.0846556 +v -0.0234538 -0.0750675 0.0846556 +v -0.0234538 0.0750675 0.0846556 +v -0.0451548 -0.0643878 -0.0846717 +v -0.0451548 0.0643878 -0.0846717 +v 0.0451548 -0.0643878 -0.0846717 +v 0.0451548 0.0643878 -0.0846717 +v 0.0451548 -0.0643878 0.0846717 +v 0.0451548 0.0643878 0.0846717 +v -0.0451548 -0.0643878 0.0846717 +v -0.0451548 0.0643878 0.0846717 +v -0.0202172 -0.0759968 -0.0846886 +v -0.0202172 0.0759968 -0.0846886 +v 0.0202172 -0.0759968 -0.0846886 +v 0.0202172 0.0759968 -0.0846886 +v 0.0202172 -0.0759968 0.0846886 +v 0.0202172 0.0759968 0.0846886 +v -0.0202172 -0.0759968 0.0846886 +v -0.0202172 0.0759968 0.0846886 +v -0.0695338 -0.0366961 -0.0847799 +v -0.0695338 0.0366961 -0.0847799 +v 0.0695338 -0.0366961 -0.0847799 +v 0.0695338 0.0366961 -0.0847799 +v 0.0695338 -0.0366961 0.0847799 +v 0.0695338 0.0366961 0.0847799 +v -0.0695338 -0.0366961 0.0847799 +v -0.0695338 0.0366961 0.0847799 +v -0.00789512 -0.0782124 -0.0848486 +v -0.00789512 0.0782124 -0.0848486 +v 0.00789512 -0.0782124 -0.0848486 +v 0.00789512 0.0782124 -0.0848486 +v 0.00789512 -0.0782124 0.0848486 +v 0.00789512 0.0782124 0.0848486 +v -0.00789512 -0.0782124 0.0848486 +v -0.00789512 0.0782124 0.0848486 +v -0.0519257 -0.0590087 -0.0848895 +v -0.0519257 0.0590087 -0.0848895 +v 0.0519257 -0.0590087 -0.0848895 +v 0.0519257 0.0590087 -0.0848895 +v 0.0519257 -0.0590087 0.0848895 +v 0.0519257 0.0590087 0.0848895 +v -0.0519257 -0.0590087 0.0848895 +v -0.0519257 0.0590087 0.0848895 +v -0.0165663 -0.0768314 -0.0849164 +v -0.0165663 0.0768314 -0.0849164 +v 0.0165663 -0.0768314 -0.0849164 +v 0.0165663 0.0768314 -0.0849164 +v 0.0165663 -0.0768314 0.0849164 +v 0.0165663 0.0768314 0.0849164 +v -0.0165663 -0.0768314 0.0849164 +v -0.0165663 0.0768314 0.0849164 +v -0.0599495 -0.0508196 -0.0849471 +v -0.0599495 0.0508196 -0.0849471 +v 0.0599495 -0.0508196 -0.0849471 +v 0.0599495 0.0508196 -0.0849471 +v 0.0599495 -0.0508196 0.0849471 +v 0.0599495 0.0508196 0.0849471 +v -0.0599495 -0.0508196 0.0849471 +v -0.0599495 0.0508196 0.0849471 +v -0.0125773 -0.0775702 -0.084989 +v -0.0125773 0.0775702 -0.084989 +v 0.0125773 -0.0775702 -0.084989 +v 0.0125773 0.0775702 -0.084989 +v 0.0125773 -0.0775702 0.084989 +v 0.0125773 0.0775702 0.084989 +v -0.0125773 -0.0775702 0.084989 +v -0.0125773 0.0775702 0.084989 +v -0.0707572 -0.0341645 -0.0850399 +v -0.0707572 0.0341645 -0.0850399 +v 0.0707572 -0.0341645 -0.0850399 +v 0.0707572 0.0341645 -0.0850399 +v 0.0707572 -0.0341645 0.0850399 +v 0.0707572 0.0341645 0.0850399 +v -0.0707572 -0.0341645 0.0850399 +v -0.0707572 0.0341645 0.0850399 +v -0.0073721 -0.0782124 -0.0851151 +v -0.0073721 0.0782124 -0.0851151 +v 0.0073721 -0.0782124 -0.0851151 +v 0.0073721 0.0782124 -0.0851151 +v 0.0073721 -0.0782124 0.0851151 +v 0.0073721 0.0782124 0.0851151 +v -0.0073721 -0.0782124 0.0851151 +v -0.0073721 0.0782124 0.0851151 +v -0.0374646 -0.0690455 -0.0851367 +v -0.0374646 0.0690455 -0.0851367 +v 0.0374646 -0.0690455 -0.0851367 +v 0.0374646 0.0690455 -0.0851367 +v 0.0374646 -0.0690455 0.0851367 +v 0.0374646 0.0690455 0.0851367 +v -0.0374646 -0.0690455 0.0851367 +v -0.0374646 0.0690455 0.0851367 +v -0.0262304 -0.0740447 -0.0851441 +v -0.0262304 0.0740447 -0.0851441 +v 0.0262304 -0.0740447 -0.0851441 +v 0.0262304 0.0740447 -0.0851441 +v 0.0262304 -0.0740447 0.0851441 +v 0.0262304 0.0740447 0.0851441 +v -0.0262304 -0.0740447 0.0851441 +v -0.0262304 0.0740447 0.0851441 +v -0.0718925 -0.0315903 -0.0852812 +v -0.0718925 0.0315903 -0.0852812 +v 0.0718925 -0.0315903 -0.0852812 +v 0.0718925 0.0315903 -0.0852812 +v 0.0718925 -0.0315903 0.0852812 +v 0.0718925 0.0315903 0.0852812 +v -0.0718925 -0.0315903 0.0852812 +v -0.0718925 0.0315903 0.0852812 +v -0.0068401 -0.0782124 -0.0853631 +v -0.0068401 0.0782124 -0.0853631 +v 0.0068401 -0.0782124 -0.0853631 +v 0.0068401 0.0782124 -0.0853631 +v 0.0068401 -0.0782124 0.0853631 +v 0.0068401 0.0782124 0.0853631 +v -0.0068401 -0.0782124 0.0853631 +v -0.0068401 0.0782124 0.0853631 +v -0.0472878 -0.0626721 -0.0853647 +v -0.0472878 0.0626721 -0.0853647 +v 0.0472878 -0.0626721 -0.0853647 +v 0.0472878 0.0626721 -0.0853647 +v 0.0472878 -0.0626721 0.0853647 +v 0.0472878 0.0626721 0.0853647 +v -0.0472878 -0.0626721 0.0853647 +v -0.0472878 0.0626721 0.0853647 +v -0.0616524 -0.0486075 -0.0853717 +v -0.0616524 0.0486075 -0.0853717 +v 0.0616524 -0.0486075 -0.0853717 +v 0.0616524 0.0486075 -0.0853717 +v 0.0616524 -0.0486075 0.0853717 +v 0.0616524 0.0486075 0.0853717 +v -0.0616524 -0.0486075 0.0853717 +v -0.0616524 0.0486075 0.0853717 +v -0.0196922 -0.0759968 -0.0853852 +v -0.0196922 0.0759968 -0.0853852 +v 0.0196922 -0.0759968 -0.0853852 +v 0.0196922 0.0759968 -0.0853852 +v 0.0196922 -0.0759968 0.0853852 +v 0.0196922 0.0759968 0.0853852 +v -0.0196922 -0.0759968 0.0853852 +v -0.0196922 0.0759968 0.0853852 +v -0.0120465 -0.0775702 -0.0854188 +v -0.0120465 0.0775702 -0.0854188 +v 0.0120465 -0.0775702 -0.0854188 +v 0.0120465 0.0775702 -0.0854188 +v 0.0120465 -0.0775702 0.0854188 +v 0.0120465 0.0775702 0.0854188 +v -0.0120465 -0.0775702 0.0854188 +v -0.0120465 0.0775702 0.0854188 +v -0.0346645 -0.0704285 -0.0854336 +v -0.0346645 0.0704285 -0.0854336 +v 0.0346645 -0.0704285 -0.0854336 +v 0.0346645 0.0704285 -0.0854336 +v 0.0346645 -0.0704285 0.0854336 +v 0.0346645 0.0704285 0.0854336 +v -0.0346645 -0.0704285 0.0854336 +v -0.0346645 0.0704285 0.0854336 +v -0.0290336 -0.0729297 -0.0854374 +v -0.0290336 0.0729297 -0.0854374 +v 0.0290336 -0.0729297 -0.0854374 +v 0.0290336 0.0729297 -0.0854374 +v 0.0290336 -0.0729297 0.0854374 +v 0.0290336 0.0729297 0.0854374 +v -0.0290336 -0.0729297 0.0854374 +v -0.0290336 0.0729297 0.0854374 +v -0.0424522 -0.0660233 -0.0854513 +v -0.0424522 0.0660233 -0.0854513 +v 0.0424522 -0.0660233 -0.0854513 +v 0.0424522 0.0660233 -0.0854513 +v 0.0424522 -0.0660233 0.0854513 +v 0.0424522 0.0660233 0.0854513 +v -0.0424522 -0.0660233 0.0854513 +v -0.0424522 0.0660233 0.0854513 +v -0.0538952 -0.0570655 -0.0854542 +v -0.0538952 0.0570655 -0.0854542 +v 0.0538952 -0.0570655 -0.0854542 +v 0.0538952 0.0570655 -0.0854542 +v 0.0538952 -0.0570655 0.0854542 +v 0.0538952 0.0570655 0.0854542 +v -0.0538952 -0.0570655 0.0854542 +v -0.0538952 0.0570655 0.0854542 +v -0.0229281 -0.0750675 -0.0854652 +v -0.0229281 0.0750675 -0.0854652 +v 0.0229281 -0.0750675 -0.0854652 +v 0.0229281 0.0750675 -0.0854652 +v 0.0229281 -0.0750675 0.0854652 +v 0.0229281 0.0750675 0.0854652 +v -0.0229281 -0.0750675 0.0854652 +v -0.0229281 0.0750675 0.0854652 +v -0.0160356 -0.0768314 -0.0854854 +v -0.0160356 0.0768314 -0.0854854 +v 0.0160356 -0.0768314 -0.0854854 +v 0.0160356 0.0768314 -0.0854854 +v 0.0160356 -0.0768314 0.0854854 +v 0.0160356 0.0768314 0.0854854 +v -0.0160356 -0.0768314 0.0854854 +v -0.0160356 0.0768314 0.0854854 +v -0.0729382 -0.0289768 -0.0855035 +v -0.0729382 0.0289768 -0.0855035 +v 0.0729382 -0.0289768 -0.0855035 +v 0.0729382 0.0289768 -0.0855035 +v 0.0729382 -0.0289768 0.0855035 +v 0.0729382 0.0289768 0.0855035 +v -0.0729382 -0.0289768 0.0855035 +v -0.0729382 0.0289768 0.0855035 +v -0.0318495 -0.0717238 -0.0855341 +v -0.0318495 0.0717238 -0.0855341 +v 0.0318495 -0.0717238 -0.0855341 +v 0.0318495 0.0717238 -0.0855341 +v 0.0318495 -0.0717238 0.0855341 +v 0.0318495 0.0717238 0.0855341 +v -0.0318495 -0.0717238 0.0855341 +v -0.0318495 0.0717238 0.0855341 +v -0.00629977 -0.0782124 -0.0855925 +v -0.00629977 0.0782124 -0.0855925 +v 0.00629977 -0.0782124 -0.0855925 +v 0.00629977 0.0782124 -0.0855925 +v 0.00629977 -0.0782124 0.0855925 +v 0.00629977 0.0782124 0.0855925 +v -0.00629977 -0.0782124 0.0855925 +v -0.00629977 0.0782124 0.0855925 +v -0.0738931 -0.0263271 -0.0857065 +v -0.0738931 0.0263271 -0.0857065 +v 0.0738931 -0.0263271 -0.0857065 +v 0.0738931 0.0263271 -0.0857065 +v 0.0738931 -0.0263271 0.0857065 +v 0.0738931 0.0263271 0.0857065 +v -0.0738931 -0.0263271 0.0857065 +v -0.0738931 0.0263271 0.0857065 +v -0.0632785 -0.0463348 -0.0857771 +v -0.0632785 0.0463348 -0.0857771 +v 0.0632785 -0.0463348 -0.0857771 +v 0.0632785 0.0463348 -0.0857771 +v 0.0632785 -0.0463348 0.0857771 +v 0.0632785 0.0463348 0.0857771 +v -0.0632785 -0.0463348 0.0857771 +v -0.0632785 0.0463348 0.0857771 +v -0.00575176 -0.0782124 -0.0858028 +v -0.00575176 0.0782124 -0.0858028 +v 0.00575176 -0.0782124 -0.0858028 +v 0.00575176 0.0782124 -0.0858028 +v 0.00575176 -0.0782124 0.0858028 +v 0.00575176 0.0782124 0.0858028 +v -0.00575176 -0.0782124 0.0858028 +v -0.00575176 0.0782124 0.0858028 +v -0.0115011 -0.0775702 -0.0858299 +v -0.0115011 0.0775702 -0.0858299 +v 0.0115011 -0.0775702 -0.0858299 +v 0.0115011 0.0775702 -0.0858299 +v 0.0115011 -0.0775702 0.0858299 +v 0.0115011 0.0775702 0.0858299 +v -0.0115011 -0.0775702 0.0858299 +v -0.0115011 0.0775702 0.0858299 +v -0.0747559 -0.0236447 -0.0858899 +v -0.0747559 0.0236447 -0.0858899 +v 0.0747559 -0.0236447 -0.0858899 +v 0.0747559 0.0236447 -0.0858899 +v 0.0747559 -0.0236447 0.0858899 +v 0.0747559 0.0236447 0.0858899 +v -0.0747559 -0.0236447 0.0858899 +v -0.0747559 0.0236447 0.0858899 +v -0.00519675 -0.0782124 -0.085994 +v -0.00519675 0.0782124 -0.085994 +v 0.00519675 -0.0782124 -0.085994 +v 0.00519675 0.0782124 -0.085994 +v 0.00519675 -0.0782124 0.085994 +v 0.00519675 0.0782124 0.085994 +v -0.00519675 -0.0782124 0.085994 +v -0.00519675 0.0782124 0.085994 +v -0.0557975 -0.0550513 -0.0859997 +v -0.0557975 0.0550513 -0.0859997 +v 0.0557975 -0.0550513 -0.0859997 +v 0.0557975 0.0550513 -0.0859997 +v 0.0557975 -0.0550513 0.0859997 +v 0.0557975 0.0550513 0.0859997 +v -0.0557975 -0.0550513 0.0859997 +v -0.0557975 0.0550513 0.0859997 +v -0.0154854 -0.0768314 -0.0860356 +v -0.0154854 0.0768314 -0.0860356 +v 0.0154854 -0.0768314 -0.0860356 +v 0.0154854 0.0768314 -0.0860356 +v 0.0154854 -0.0768314 0.0860356 +v 0.0154854 0.0768314 0.0860356 +v -0.0154854 -0.0768314 0.0860356 +v -0.0154854 0.0768314 0.0860356 +v -0.0493619 -0.0608783 -0.0860386 +v -0.0493619 0.0608783 -0.0860386 +v 0.0493619 -0.0608783 -0.0860386 +v 0.0493619 0.0608783 -0.0860386 +v 0.0493619 -0.0608783 0.0860386 +v 0.0493619 0.0608783 0.0860386 +v -0.0493619 -0.0608783 0.0860386 +v -0.0493619 0.0608783 0.0860386 +v -0.0397006 -0.0675765 -0.0860401 +v -0.0397006 0.0675765 -0.0860401 +v 0.0397006 -0.0675765 -0.0860401 +v 0.0397006 0.0675765 -0.0860401 +v 0.0397006 -0.0675765 0.0860401 +v 0.0397006 0.0675765 0.0860401 +v -0.0397006 -0.0675765 0.0860401 +v -0.0397006 0.0675765 0.0860401 +v -0.0256859 -0.0740447 -0.0860503 +v -0.0256859 0.0740447 -0.0860503 +v 0.0256859 -0.0740447 -0.0860503 +v 0.0256859 0.0740447 -0.0860503 +v 0.0256859 -0.0740447 0.0860503 +v 0.0256859 0.0740447 0.0860503 +v -0.0256859 -0.0740447 0.0860503 +v -0.0256859 0.0740447 0.0860503 +v -0.0755255 -0.0209327 -0.0860534 +v -0.0755255 0.0209327 -0.0860534 +v 0.0755255 -0.0209327 -0.0860534 +v 0.0755255 0.0209327 -0.0860534 +v 0.0755255 -0.0209327 0.0860534 +v 0.0755255 0.0209327 0.0860534 +v -0.0755255 -0.0209327 0.0860534 +v -0.0755255 0.0209327 0.0860534 +v -0.0191433 -0.0759968 -0.0860631 +v -0.0191433 0.0759968 -0.0860631 +v 0.0191433 -0.0759968 -0.0860631 +v 0.0191433 0.0759968 -0.0860631 +v 0.0191433 -0.0759968 0.0860631 +v 0.0191433 0.0759968 0.0860631 +v -0.0191433 -0.0759968 0.0860631 +v -0.0191433 0.0759968 0.0860631 +v -0.0648257 -0.0440044 -0.0861629 +v -0.0648257 0.0440044 -0.0861629 +v 0.0648257 -0.0440044 -0.0861629 +v 0.0648257 0.0440044 -0.0861629 +v 0.0648257 -0.0440044 0.0861629 +v 0.0648257 0.0440044 0.0861629 +v -0.0648257 -0.0440044 0.0861629 +v -0.0648257 0.0440044 0.0861629 +v -0.0046354 -0.0782124 -0.0861656 +v -0.0046354 0.0782124 -0.0861656 +v 0.0046354 -0.0782124 -0.0861656 +v 0.0046354 0.0782124 -0.0861656 +v 0.0046354 -0.0782124 0.0861656 +v 0.0046354 0.0782124 0.0861656 +v -0.0046354 -0.0782124 0.0861656 +v -0.0046354 0.0782124 0.0861656 +v -0.0762011 -0.0181947 -0.086197 +v -0.0762011 0.0181947 -0.086197 +v 0.0762011 -0.0181947 -0.086197 +v 0.0762011 0.0181947 -0.086197 +v 0.0762011 -0.0181947 0.086197 +v 0.0762011 0.0181947 0.086197 +v -0.0762011 -0.0181947 0.086197 +v -0.0762011 0.0181947 0.086197 +v -0.0109416 -0.0775702 -0.0862216 +v -0.0109416 0.0775702 -0.0862216 +v 0.0109416 -0.0775702 -0.0862216 +v 0.0109416 0.0775702 -0.0862216 +v 0.0109416 -0.0775702 0.0862216 +v 0.0109416 0.0775702 0.0862216 +v -0.0109416 -0.0775702 0.0862216 +v -0.0109416 0.0775702 0.0862216 +v -0.0446153 -0.0643878 -0.0862386 +v -0.0446153 0.0643878 -0.0862386 +v 0.0446153 -0.0643878 -0.0862386 +v 0.0446153 0.0643878 -0.0862386 +v 0.0446153 -0.0643878 0.0862386 +v 0.0446153 0.0643878 0.0862386 +v -0.0446153 -0.0643878 0.0862386 +v -0.0446153 0.0643878 0.0862386 +v -0.0223744 -0.0750675 -0.0862559 +v -0.0223744 0.0750675 -0.0862559 +v 0.0223744 -0.0750675 -0.0862559 +v 0.0223744 0.0750675 -0.0862559 +v 0.0223744 -0.0750675 0.0862559 +v 0.0223744 0.0750675 0.0862559 +v -0.0223744 -0.0750675 0.0862559 +v -0.0223744 0.0750675 0.0862559 +v -0.00406841 -0.0782124 -0.0863175 +v -0.00406841 0.0782124 -0.0863175 +v 0.00406841 -0.0782124 -0.0863175 +v 0.00406841 0.0782124 -0.0863175 +v 0.00406841 -0.0782124 0.0863175 +v 0.00406841 0.0782124 0.0863175 +v -0.00406841 -0.0782124 0.0863175 +v -0.00406841 0.0782124 0.0863175 +v -0.0767817 -0.0154341 -0.0863205 +v -0.0767817 0.0154341 -0.0863205 +v 0.0767817 -0.0154341 -0.0863205 +v 0.0767817 0.0154341 -0.0863205 +v 0.0767817 -0.0154341 0.0863205 +v 0.0767817 0.0154341 0.0863205 +v -0.0767817 -0.0154341 0.0863205 +v -0.0767817 0.0154341 0.0863205 +v -0.0772667 -0.0126542 -0.0864235 +v -0.0772667 0.0126542 -0.0864235 +v 0.0772667 -0.0126542 -0.0864235 +v 0.0772667 0.0126542 -0.0864235 +v 0.0772667 -0.0126542 0.0864235 +v 0.0772667 0.0126542 0.0864235 +v -0.0772667 -0.0126542 0.0864235 +v -0.0772667 0.0126542 0.0864235 +v -0.0369135 -0.0690455 -0.086435 +v -0.0369135 0.0690455 -0.086435 +v 0.0369135 -0.0690455 -0.086435 +v 0.0369135 0.0690455 -0.086435 +v 0.0369135 -0.0690455 0.086435 +v 0.0369135 0.0690455 0.086435 +v -0.0369135 -0.0690455 0.086435 +v -0.0369135 0.0690455 0.086435 +v -0.0284771 -0.0729297 -0.0864413 +v -0.0284771 0.0729297 -0.0864413 +v 0.0284771 -0.0729297 -0.0864413 +v 0.0284771 0.0729297 -0.0864413 +v 0.0284771 -0.0729297 0.0864413 +v 0.0284771 0.0729297 0.0864413 +v -0.0284771 -0.0729297 0.0864413 +v -0.0284771 0.0729297 0.0864413 +v -0.00349646 -0.0782124 -0.0864495 +v -0.00349646 0.0782124 -0.0864495 +v 0.00349646 -0.0782124 -0.0864495 +v 0.00349646 0.0782124 -0.0864495 +v 0.00349646 -0.0782124 0.0864495 +v 0.00349646 0.0782124 0.0864495 +v -0.00349646 -0.0782124 0.0864495 +v -0.00349646 0.0782124 0.0864495 +v -0.0776554 -0.00985854 -0.0865062 +v -0.0776554 0.00985854 -0.0865062 +v 0.0776554 -0.00985854 -0.0865062 +v 0.0776554 0.00985854 -0.0865062 +v 0.0776554 -0.00985854 0.0865062 +v 0.0776554 0.00985854 0.0865062 +v -0.0776554 -0.00985854 0.0865062 +v -0.0776554 0.00985854 0.0865062 +v -0.0576304 -0.0529685 -0.0865252 +v -0.0576304 0.0529685 -0.0865252 +v 0.0576304 -0.0529685 -0.0865252 +v 0.0576304 0.0529685 -0.0865252 +v 0.0576304 -0.0529685 0.0865252 +v 0.0576304 0.0529685 0.0865252 +v -0.0576304 -0.0529685 0.0865252 +v -0.0576304 0.0529685 0.0865252 +v -0.0662922 -0.0416192 -0.0865285 +v -0.0662922 0.0416192 -0.0865285 +v 0.0662922 -0.0416192 -0.0865285 +v 0.0662922 0.0416192 -0.0865285 +v 0.0662922 -0.0416192 0.0865285 +v 0.0662922 0.0416192 0.0865285 +v -0.0662922 -0.0416192 0.0865285 +v -0.0662922 0.0416192 0.0865285 +v -0.00292025 -0.0782124 -0.0865615 +v -0.00292025 0.0782124 -0.0865615 +v 0.00292025 -0.0782124 -0.0865615 +v 0.00292025 0.0782124 -0.0865615 +v 0.00292025 -0.0782124 0.0865615 +v 0.00292025 0.0782124 0.0865615 +v -0.00292025 -0.0782124 0.0865615 +v -0.00292025 0.0782124 0.0865615 +v -0.0149164 -0.0768314 -0.0865663 +v -0.0149164 0.0768314 -0.0865663 +v 0.0149164 -0.0768314 -0.0865663 +v 0.0149164 0.0768314 -0.0865663 +v 0.0149164 -0.0768314 0.0865663 +v 0.0149164 0.0768314 0.0865663 +v -0.0149164 -0.0768314 0.0865663 +v -0.0149164 0.0768314 0.0865663 +v -0.0779473 -0.0070506 -0.0865682 +v -0.0779473 0.0070506 -0.0865682 +v 0.0779473 -0.0070506 -0.0865682 +v 0.0779473 0.0070506 -0.0865682 +v 0.0779473 -0.0070506 0.0865682 +v 0.0779473 0.0070506 0.0865682 +v -0.0779473 -0.0070506 0.0865682 +v -0.0779473 0.0070506 0.0865682 +v -0.0103688 -0.0775702 -0.0865936 +v -0.0103688 0.0775702 -0.0865936 +v 0.0103688 -0.0775702 -0.0865936 +v 0.0103688 0.0775702 -0.0865936 +v 0.0103688 -0.0775702 0.0865936 +v 0.0103688 0.0775702 0.0865936 +v -0.0103688 -0.0775702 0.0865936 +v -0.0103688 0.0775702 0.0865936 +v -0.0781421 -0.00423388 -0.0866096 +v -0.0781421 0.00423388 -0.0866096 +v 0.0781421 -0.00423388 -0.0866096 +v 0.0781421 0.00423388 -0.0866096 +v 0.0781421 -0.00423388 0.0866096 +v 0.0781421 0.00423388 0.0866096 +v -0.0781421 -0.00423388 0.0866096 +v -0.0781421 0.00423388 0.0866096 +v -0.0782396 -0.00141188 -0.0866303 +v -0.0782396 0.00141188 -0.0866303 +v 0.0782396 -0.00141188 -0.0866303 +v 0.0782396 0.00141188 -0.0866303 +v 0.0782396 -0.00141188 0.0866303 +v 0.0782396 0.00141188 0.0866303 +v -0.0782396 -0.00141188 0.0866303 +v -0.0782396 0.00141188 0.0866303 +v -0.0341048 -0.0704285 -0.086634 +v -0.0341048 0.0704285 -0.086634 +v 0.0341048 -0.0704285 -0.086634 +v 0.0341048 0.0704285 -0.086634 +v 0.0341048 -0.0704285 0.086634 +v 0.0341048 0.0704285 0.086634 +v -0.0341048 -0.0704285 0.086634 +v -0.0341048 0.0704285 0.086634 +v -0.031288 -0.0717238 -0.0866361 +v -0.031288 0.0717238 -0.0866361 +v 0.031288 -0.0717238 -0.0866361 +v 0.031288 0.0717238 -0.0866361 +v 0.031288 -0.0717238 0.0866361 +v 0.031288 0.0717238 0.0866361 +v -0.031288 -0.0717238 0.0866361 +v -0.031288 0.0717238 0.0866361 +v -0.00234048 -0.0782124 -0.0866534 +v -0.00234048 0.0782124 -0.0866534 +v 0.00234048 -0.0782124 -0.0866534 +v 0.00234048 0.0782124 -0.0866534 +v 0.00234048 -0.0782124 0.0866534 +v 0.00234048 0.0782124 0.0866534 +v -0.00234048 -0.0782124 0.0866534 +v -0.00234048 0.0782124 0.0866534 +v -0.0513745 -0.0590087 -0.0866926 +v -0.0513745 0.0590087 -0.0866926 +v 0.0513745 -0.0590087 -0.0866926 +v 0.0513745 0.0590087 -0.0866926 +v 0.0513745 -0.0590087 0.0866926 +v 0.0513745 0.0590087 0.0866926 +v -0.0513745 -0.0590087 0.0866926 +v -0.0513745 0.0590087 0.0866926 +v -0.018571 -0.0759968 -0.0867214 +v -0.018571 0.0759968 -0.0867214 +v 0.018571 -0.0759968 -0.0867214 +v 0.018571 0.0759968 -0.0867214 +v 0.018571 -0.0759968 0.0867214 +v 0.018571 0.0759968 0.0867214 +v -0.018571 -0.0759968 0.0867214 +v -0.018571 0.0759968 0.0867214 +v -0.00175786 -0.0782124 -0.0867249 +v -0.00175786 0.0782124 -0.0867249 +v 0.00175786 -0.0782124 -0.0867249 +v 0.00175786 0.0782124 -0.0867249 +v 0.00175786 -0.0782124 0.0867249 +v 0.00175786 0.0782124 0.0867249 +v -0.00175786 -0.0782124 0.0867249 +v -0.00175786 0.0782124 0.0867249 +v -0.0011731 -0.0782124 -0.0867761 +v -0.0011731 0.0782124 -0.0867761 +v 0.0011731 -0.0782124 -0.0867761 +v 0.0011731 0.0782124 -0.0867761 +v 0.0011731 -0.0782124 0.0867761 +v 0.0011731 0.0782124 0.0867761 +v -0.0011731 -0.0782124 0.0867761 +v -0.0011731 0.0782124 0.0867761 +v -0.000586906 -0.0782124 -0.0868068 +v -0.000586906 0.0782124 -0.0868068 +v 0.000586906 -0.0782124 -0.0868068 +v 0.000586906 0.0782124 -0.0868068 +v 0.000586906 -0.0782124 0.0868068 +v 0.000586906 0.0782124 0.0868068 +v -0.000586906 -0.0782124 0.0868068 +v -0.000586906 0.0782124 0.0868068 +v -3.08924e-18 -0.0782124 -0.086817 +v -3.08924e-18 0.0782124 -0.086817 +v 1.02975e-18 -0.0782124 0.086817 +v 1.02975e-18 0.0782124 0.086817 +v -0.0676761 -0.0391821 -0.0868735 +v -0.0676761 0.0391821 -0.0868735 +v 0.0676761 -0.0391821 -0.0868735 +v 0.0676761 0.0391821 -0.0868735 +v 0.0676761 -0.0391821 0.0868735 +v 0.0676761 0.0391821 0.0868735 +v -0.0676761 -0.0391821 0.0868735 +v -0.0676761 0.0391821 0.0868735 +v -0.0418871 -0.0660233 -0.0869235 +v -0.0418871 0.0660233 -0.0869235 +v 0.0418871 -0.0660233 -0.0869235 +v 0.0418871 0.0660233 -0.0869235 +v 0.0418871 -0.0660233 0.0869235 +v 0.0418871 0.0660233 0.0869235 +v -0.0418871 -0.0660233 0.0869235 +v -0.0418871 0.0660233 0.0869235 +v -0.0251101 -0.0740447 -0.086937 +v -0.0251101 0.0740447 -0.086937 +v 0.0251101 -0.0740447 -0.086937 +v 0.0251101 0.0740447 -0.086937 +v 0.0251101 -0.0740447 0.086937 +v 0.0251101 0.0740447 0.086937 +v -0.0251101 -0.0740447 0.086937 +v -0.0251101 0.0740447 0.086937 +v -0.0097834 -0.0775702 -0.0869453 +v -0.0097834 0.0775702 -0.0869453 +v 0.0097834 -0.0775702 -0.0869453 +v 0.0097834 0.0775702 -0.0869453 +v 0.0097834 -0.0775702 0.0869453 +v 0.0097834 0.0775702 0.0869453 +v -0.0097834 -0.0775702 0.0869453 +v -0.0097834 0.0775702 0.0869453 +v -0.0467228 -0.0626721 -0.0870057 +v -0.0467228 0.0626721 -0.0870057 +v 0.0467228 -0.0626721 -0.0870057 +v 0.0467228 0.0626721 -0.0870057 +v 0.0467228 -0.0626721 0.0870057 +v 0.0467228 0.0626721 0.0870057 +v -0.0467228 -0.0626721 0.0870057 +v -0.0467228 0.0626721 0.0870057 +v -0.0217934 -0.0750675 -0.0870269 +v -0.0217934 0.0750675 -0.0870269 +v 0.0217934 -0.0750675 -0.0870269 +v 0.0217934 0.0750675 -0.0870269 +v 0.0217934 -0.0750675 0.0870269 +v 0.0217934 0.0750675 0.0870269 +v -0.0217934 -0.0750675 0.0870269 +v -0.0217934 0.0750675 0.0870269 +v -0.0593914 -0.0508196 -0.0870302 +v -0.0593914 0.0508196 -0.0870302 +v 0.0593914 -0.0508196 -0.0870302 +v 0.0593914 0.0508196 -0.0870302 +v 0.0593914 -0.0508196 0.0870302 +v 0.0593914 0.0508196 0.0870302 +v -0.0593914 -0.0508196 0.0870302 +v -0.0593914 0.0508196 0.0870302 +v -0.0143291 -0.0768314 -0.0870768 +v -0.0143291 0.0768314 -0.0870768 +v 0.0143291 -0.0768314 -0.0870768 +v 0.0143291 0.0768314 -0.0870768 +v 0.0143291 -0.0768314 0.0870768 +v 0.0143291 0.0768314 0.0870768 +v -0.0143291 -0.0768314 0.0870768 +v -0.0143291 0.0768314 0.0870768 +v -0.0689756 -0.0366961 -0.0871976 +v -0.0689756 0.0366961 -0.0871976 +v 0.0689756 -0.0366961 -0.0871976 +v 0.0689756 0.0366961 -0.0871976 +v 0.0689756 -0.0366961 0.0871976 +v 0.0689756 0.0366961 0.0871976 +v -0.0689756 -0.0366961 0.0871976 +v -0.0689756 0.0366961 0.0871976 +v -0.00918605 -0.0775702 -0.0872765 +v -0.00918605 0.0775702 -0.0872765 +v 0.00918605 -0.0775702 -0.0872765 +v 0.00918605 0.0775702 -0.0872765 +v 0.00918605 -0.0775702 0.0872765 +v 0.00918605 0.0775702 0.0872765 +v -0.00918605 -0.0775702 0.0872765 +v -0.00918605 0.0775702 0.0872765 +v -0.053323 -0.0570655 -0.0873257 +v -0.053323 0.0570655 -0.0873257 +v 0.053323 -0.0570655 -0.0873257 +v 0.053323 0.0570655 -0.0873257 +v 0.053323 -0.0570655 0.0873257 +v 0.053323 0.0570655 0.0873257 +v -0.053323 -0.0570655 0.0873257 +v -0.053323 0.0570655 0.0873257 +v -0.0179761 -0.0759968 -0.0873594 +v -0.0179761 0.0759968 -0.0873594 +v 0.0179761 -0.0759968 -0.0873594 +v 0.0179761 0.0759968 -0.0873594 +v 0.0179761 -0.0759968 0.0873594 +v 0.0179761 0.0759968 0.0873594 +v -0.0179761 -0.0759968 0.0873594 +v -0.0179761 0.0759968 0.0873594 +v -0.0391166 -0.0675765 -0.0874158 +v -0.0391166 0.0675765 -0.0874158 +v 0.0391166 -0.0675765 -0.0874158 +v 0.0391166 0.0675765 -0.0874158 +v 0.0391166 -0.0675765 0.0874158 +v 0.0391166 0.0675765 0.0874158 +v -0.0391166 -0.0675765 0.0874158 +v -0.0391166 0.0675765 0.0874158 +v -0.027886 -0.0729297 -0.0874251 +v -0.027886 0.0729297 -0.0874251 +v 0.027886 -0.0729297 -0.0874251 +v 0.027886 0.0729297 -0.0874251 +v 0.027886 -0.0729297 0.0874251 +v 0.027886 0.0729297 0.0874251 +v -0.027886 -0.0729297 0.0874251 +v -0.027886 0.0729297 0.0874251 +v -0.0701893 -0.0341645 -0.0875001 +v -0.0701893 0.0341645 -0.0875001 +v 0.0701893 -0.0341645 -0.0875001 +v 0.0701893 0.0341645 -0.0875001 +v 0.0701893 -0.0341645 0.0875001 +v 0.0701893 0.0341645 0.0875001 +v -0.0701893 -0.0341645 0.0875001 +v -0.0701893 0.0341645 0.0875001 +v -0.0610784 -0.0486075 -0.087514 +v -0.0610784 0.0486075 -0.087514 +v 0.0610784 -0.0486075 -0.087514 +v 0.0610784 0.0486075 -0.087514 +v 0.0610784 -0.0486075 0.087514 +v 0.0610784 0.0486075 0.087514 +v -0.0610784 -0.0486075 0.087514 +v -0.0610784 0.0486075 0.087514 +v -0.0137244 -0.0768314 -0.0875665 +v -0.0137244 0.0768314 -0.0875665 +v 0.0137244 -0.0768314 -0.0875665 +v 0.0137244 0.0768314 -0.0875665 +v 0.0137244 -0.0768314 0.0875665 +v 0.0137244 0.0768314 0.0875665 +v -0.0137244 -0.0768314 0.0875665 +v -0.0137244 0.0768314 0.0875665 +v -0.00857752 -0.0775702 -0.0875865 +v -0.00857752 0.0775702 -0.0875865 +v 0.00857752 -0.0775702 -0.0875865 +v 0.00857752 0.0775702 -0.0875865 +v 0.00857752 -0.0775702 0.0875865 +v 0.00857752 0.0775702 0.0875865 +v -0.00857752 -0.0775702 0.0875865 +v -0.00857752 0.0775702 0.0875865 +v -0.0363175 -0.0690455 -0.0877132 +v -0.0363175 0.0690455 -0.0877132 +v 0.0363175 -0.0690455 -0.0877132 +v 0.0363175 0.0690455 -0.0877132 +v 0.0363175 -0.0690455 0.0877132 +v 0.0363175 0.0690455 0.0877132 +v -0.0363175 -0.0690455 0.0877132 +v -0.0363175 0.0690455 0.0877132 +v -0.0306883 -0.0717238 -0.0877179 +v -0.0306883 0.0717238 -0.0877179 +v 0.0306883 -0.0717238 -0.0877179 +v 0.0306883 0.0717238 -0.0877179 +v 0.0306883 -0.0717238 0.0877179 +v 0.0306883 0.0717238 0.0877179 +v -0.0306883 -0.0717238 0.0877179 +v -0.0306883 0.0717238 0.0877179 +v -0.0487721 -0.0608783 -0.0877516 +v -0.0487721 0.0608783 -0.0877516 +v 0.0487721 -0.0608783 -0.0877516 +v 0.0487721 0.0608783 -0.0877516 +v 0.0487721 -0.0608783 0.0877516 +v 0.0487721 0.0608783 0.0877516 +v -0.0487721 -0.0608783 0.0877516 +v -0.0487721 0.0608783 0.0877516 +v -0.0211859 -0.0750675 -0.0877771 +v -0.0211859 0.0750675 -0.0877771 +v 0.0211859 -0.0750675 -0.0877771 +v 0.0211859 0.0750675 -0.0877771 +v 0.0211859 -0.0750675 0.0877771 +v 0.0211859 0.0750675 0.0877771 +v -0.0211859 -0.0750675 0.0877771 +v -0.0211859 0.0750675 0.0877771 +v -0.0713154 -0.0315903 -0.0877809 +v -0.0713154 0.0315903 -0.0877809 +v 0.0713154 -0.0315903 -0.0877809 +v 0.0713154 0.0315903 -0.0877809 +v 0.0713154 -0.0315903 0.0877809 +v 0.0713154 0.0315903 0.0877809 +v -0.0713154 -0.0315903 0.0877809 +v -0.0713154 0.0315903 0.0877809 +v -0.0440214 -0.0643878 -0.0877858 +v -0.0440214 0.0643878 -0.0877858 +v 0.0440214 -0.0643878 -0.0877858 +v 0.0440214 0.0643878 -0.0877858 +v 0.0440214 -0.0643878 0.0877858 +v 0.0440214 0.0643878 0.0877858 +v -0.0440214 -0.0643878 0.0877858 +v -0.0440214 0.0643878 0.0877858 +v -0.0245037 -0.0740447 -0.087803 +v -0.0245037 0.0740447 -0.087803 +v 0.0245037 -0.0740447 -0.087803 +v 0.0245037 0.0740447 -0.087803 +v 0.0245037 -0.0740447 0.087803 +v 0.0245037 0.0740447 0.087803 +v -0.0245037 -0.0740447 0.087803 +v -0.0245037 0.0740447 0.087803 +v -0.0335035 -0.0704285 -0.0878141 +v -0.0335035 0.0704285 -0.0878141 +v 0.0335035 -0.0704285 -0.0878141 +v 0.0335035 0.0704285 -0.0878141 +v 0.0335035 -0.0704285 0.0878141 +v 0.0335035 0.0704285 0.0878141 +v -0.0335035 -0.0704285 0.0878141 +v -0.0335035 0.0704285 0.0878141 +v -0.00795853 -0.0775702 -0.0878752 +v -0.00795853 0.0775702 -0.0878752 +v 0.00795853 -0.0775702 -0.0878752 +v 0.00795853 0.0775702 -0.0878752 +v 0.00795853 -0.0775702 0.0878752 +v 0.00795853 0.0775702 0.0878752 +v -0.00795853 -0.0775702 0.0878752 +v -0.00795853 0.0775702 0.0878752 +v -0.0552052 -0.0550513 -0.0879372 +v -0.0552052 0.0550513 -0.0879372 +v 0.0552052 -0.0550513 -0.0879372 +v 0.0552052 0.0550513 -0.0879372 +v 0.0552052 -0.0550513 0.0879372 +v 0.0552052 0.0550513 0.0879372 +v -0.0552052 -0.0550513 0.0879372 +v -0.0552052 0.0550513 0.0879372 +v -0.0626893 -0.0463348 -0.0879759 +v -0.0626893 0.0463348 -0.0879759 +v 0.0626893 -0.0463348 -0.0879759 +v 0.0626893 0.0463348 -0.0879759 +v 0.0626893 -0.0463348 0.0879759 +v 0.0626893 0.0463348 0.0879759 +v -0.0626893 -0.0463348 0.0879759 +v -0.0626893 0.0463348 0.0879759 +v -0.0173594 -0.0759968 -0.0879761 +v -0.0173594 0.0759968 -0.0879761 +v 0.0173594 -0.0759968 -0.0879761 +v 0.0173594 0.0759968 -0.0879761 +v 0.0173594 -0.0759968 0.0879761 +v 0.0173594 0.0759968 0.0879761 +v -0.0173594 -0.0759968 0.0879761 +v -0.0173594 0.0759968 0.0879761 +v -0.013103 -0.0768314 -0.0880347 +v -0.013103 0.0768314 -0.0880347 +v 0.013103 -0.0768314 -0.0880347 +v 0.013103 0.0768314 -0.0880347 +v 0.013103 -0.0768314 0.0880347 +v 0.013103 0.0768314 0.0880347 +v -0.013103 -0.0768314 0.0880347 +v -0.013103 0.0768314 0.0880347 +v -0.0723528 -0.0289768 -0.0880396 +v -0.0723528 0.0289768 -0.0880396 +v 0.0723528 -0.0289768 -0.0880396 +v 0.0723528 0.0289768 -0.0880396 +v 0.0723528 -0.0289768 0.0880396 +v 0.0723528 0.0289768 0.0880396 +v -0.0723528 -0.0289768 0.0880396 +v -0.0723528 0.0289768 0.0880396 +v -0.00732985 -0.0775702 -0.088142 +v -0.00732985 0.0775702 -0.088142 +v 0.00732985 -0.0775702 -0.088142 +v 0.00732985 0.0775702 -0.088142 +v 0.00732985 -0.0775702 0.088142 +v 0.00732985 0.0775702 0.088142 +v -0.00732985 -0.0775702 0.088142 +v -0.00732985 0.0775702 0.088142 +v -0.0732999 -0.0263271 -0.0882757 +v -0.0732999 0.0263271 -0.0882757 +v 0.0732999 -0.0263271 -0.0882757 +v 0.0732999 0.0263271 -0.0882757 +v 0.0732999 -0.0263271 0.0882757 +v 0.0732999 0.0263271 0.0882757 +v -0.0732999 -0.0263271 0.0882757 +v -0.0732999 0.0263271 0.0882757 +v -0.0412709 -0.0660233 -0.088375 +v -0.0412709 0.0660233 -0.088375 +v 0.0412709 -0.0660233 -0.088375 +v 0.0412709 0.0660233 -0.088375 +v 0.0412709 -0.0660233 0.088375 +v 0.0412709 0.0660233 0.088375 +v -0.0412709 -0.0660233 0.088375 +v -0.0412709 0.0660233 0.088375 +v -0.00669224 -0.0775702 -0.0883868 +v -0.00669224 0.0775702 -0.0883868 +v 0.00669224 -0.0775702 -0.0883868 +v 0.00669224 0.0775702 -0.0883868 +v 0.00669224 -0.0775702 0.0883868 +v 0.00669224 0.0775702 0.0883868 +v -0.00669224 -0.0775702 0.0883868 +v -0.00669224 0.0775702 0.0883868 +v -0.0272609 -0.0729297 -0.0883877 +v -0.0272609 0.0729297 -0.0883877 +v 0.0272609 -0.0729297 -0.0883877 +v 0.0272609 0.0729297 -0.0883877 +v 0.0272609 -0.0729297 0.0883877 +v 0.0272609 0.0729297 0.0883877 +v -0.0272609 -0.0729297 0.0883877 +v -0.0272609 0.0729297 0.0883877 +v -0.0642222 -0.0440044 -0.0884154 +v -0.0642222 0.0440044 -0.0884154 +v 0.0642222 -0.0440044 -0.0884154 +v 0.0642222 0.0440044 -0.0884154 +v 0.0642222 -0.0440044 0.0884154 +v 0.0642222 0.0440044 0.0884154 +v -0.0642222 -0.0440044 0.0884154 +v -0.0642222 0.0440044 0.0884154 +v -0.0507606 -0.0590087 -0.0884753 +v -0.0507606 0.0590087 -0.0884753 +v 0.0507606 -0.0590087 -0.0884753 +v 0.0507606 0.0590087 -0.0884753 +v 0.0507606 -0.0590087 0.0884753 +v 0.0507606 0.0590087 0.0884753 +v -0.0507606 -0.0590087 0.0884753 +v -0.0507606 0.0590087 0.0884753 +v -0.0124656 -0.0768314 -0.088481 +v -0.0124656 0.0768314 -0.088481 +v 0.0124656 -0.0768314 -0.088481 +v 0.0124656 0.0768314 -0.088481 +v 0.0124656 -0.0768314 0.088481 +v 0.0124656 0.0768314 0.088481 +v -0.0124656 -0.0768314 0.088481 +v -0.0124656 0.0768314 0.088481 +v -0.0741558 -0.0236447 -0.0884891 +v -0.0741558 0.0236447 -0.0884891 +v 0.0741558 -0.0236447 -0.0884891 +v 0.0741558 0.0236447 -0.0884891 +v 0.0741558 -0.0236447 0.0884891 +v 0.0741558 0.0236447 0.0884891 +v -0.0741558 -0.0236447 0.0884891 +v -0.0741558 0.0236447 0.0884891 +v -0.0205526 -0.0750675 -0.0885056 +v -0.0205526 0.0750675 -0.0885056 +v 0.0205526 -0.0750675 -0.0885056 +v 0.0205526 0.0750675 -0.0885056 +v 0.0205526 -0.0750675 0.0885056 +v 0.0205526 0.0750675 0.0885056 +v -0.0205526 -0.0750675 0.0885056 +v -0.0205526 0.0750675 0.0885056 +v -0.0570185 -0.0529685 -0.0885264 +v -0.0570185 0.0529685 -0.0885264 +v 0.0570185 -0.0529685 -0.0885264 +v 0.0570185 0.0529685 -0.0885264 +v 0.0570185 -0.0529685 0.0885264 +v 0.0570185 0.0529685 0.0885264 +v -0.0570185 -0.0529685 0.0885264 +v -0.0570185 0.0529685 0.0885264 +v -0.0167214 -0.0759968 -0.088571 +v -0.0167214 0.0759968 -0.088571 +v 0.0167214 -0.0759968 -0.088571 +v 0.0167214 0.0759968 -0.088571 +v 0.0167214 -0.0759968 0.088571 +v 0.0167214 0.0759968 0.088571 +v -0.0167214 -0.0759968 0.088571 +v -0.0167214 0.0759968 0.088571 +v -0.00604647 -0.0775702 -0.0886091 +v -0.00604647 0.0775702 -0.0886091 +v 0.00604647 -0.0775702 -0.0886091 +v 0.00604647 0.0775702 -0.0886091 +v 0.00604647 -0.0775702 0.0886091 +v 0.00604647 0.0775702 0.0886091 +v -0.00604647 -0.0775702 0.0886091 +v -0.00604647 0.0775702 0.0886091 +v -0.0461008 -0.0626721 -0.0886259 +v -0.0461008 0.0626721 -0.0886259 +v 0.0461008 -0.0626721 -0.0886259 +v 0.0461008 0.0626721 -0.0886259 +v 0.0461008 -0.0626721 0.0886259 +v 0.0461008 0.0626721 0.0886259 +v -0.0461008 -0.0626721 0.0886259 +v -0.0461008 0.0626721 0.0886259 +v -0.0238675 -0.0740447 -0.0886473 +v -0.0238675 0.0740447 -0.0886473 +v 0.0238675 -0.0740447 -0.0886473 +v 0.0238675 0.0740447 -0.0886473 +v 0.0238675 -0.0740447 0.0886473 +v 0.0238675 0.0740447 0.0886473 +v -0.0238675 -0.0740447 0.0886473 +v -0.0238675 0.0740447 0.0886473 +v -0.0749193 -0.0209327 -0.0886795 +v -0.0749193 0.0209327 -0.0886795 +v 0.0749193 -0.0209327 -0.0886795 +v 0.0749193 0.0209327 -0.0886795 +v 0.0749193 -0.0209327 0.0886795 +v 0.0749193 0.0209327 0.0886795 +v -0.0749193 -0.0209327 0.0886795 +v -0.0749193 0.0209327 0.0886795 +v -0.038485 -0.0675765 -0.0887704 +v -0.038485 0.0675765 -0.0887704 +v 0.038485 -0.0675765 -0.0887704 +v 0.038485 0.0675765 -0.0887704 +v 0.038485 -0.0675765 0.0887704 +v 0.038485 0.0675765 0.0887704 +v -0.038485 -0.0675765 0.0887704 +v -0.038485 0.0675765 0.0887704 +v -0.0300513 -0.0717238 -0.0887781 +v -0.0300513 0.0717238 -0.0887781 +v 0.0300513 -0.0717238 -0.0887781 +v 0.0300513 0.0717238 -0.0887781 +v 0.0300513 -0.0717238 0.0887781 +v 0.0300513 0.0717238 0.0887781 +v -0.0300513 -0.0717238 0.0887781 +v -0.0300513 0.0717238 0.0887781 +v -0.00539334 -0.0775702 -0.0888088 +v -0.00539334 0.0775702 -0.0888088 +v 0.00539334 -0.0775702 -0.0888088 +v 0.00539334 0.0775702 -0.0888088 +v 0.00539334 -0.0775702 0.0888088 +v 0.00539334 0.0775702 0.0888088 +v -0.00539334 -0.0775702 0.0888088 +v -0.00539334 0.0775702 0.0888088 +v -0.065675 -0.0416192 -0.088832 +v -0.065675 0.0416192 -0.088832 +v 0.065675 -0.0416192 -0.088832 +v 0.065675 0.0416192 -0.088832 +v 0.065675 -0.0416192 0.088832 +v 0.065675 0.0416192 0.088832 +v -0.065675 -0.0416192 0.088832 +v -0.065675 0.0416192 0.088832 +v -0.0755894 -0.0181947 -0.0888466 +v -0.0755894 0.0181947 -0.0888466 +v 0.0755894 -0.0181947 -0.0888466 +v 0.0755894 0.0181947 -0.0888466 +v 0.0755894 -0.0181947 0.0888466 +v 0.0755894 0.0181947 0.0888466 +v -0.0755894 -0.0181947 0.0888466 +v -0.0755894 0.0181947 0.0888466 +v -0.0118131 -0.0768314 -0.0889048 +v -0.0118131 0.0768314 -0.0889048 +v 0.0118131 -0.0768314 -0.0889048 +v 0.0118131 0.0768314 -0.0889048 +v 0.0118131 -0.0768314 0.0889048 +v 0.0118131 0.0768314 0.0889048 +v -0.0118131 -0.0768314 0.0889048 +v -0.0118131 0.0768314 0.0889048 +v -0.0356772 -0.0690455 -0.0889699 +v -0.0356772 0.0690455 -0.0889699 +v 0.0356772 -0.0690455 -0.0889699 +v 0.0356772 0.0690455 -0.0889699 +v 0.0356772 -0.0690455 0.0889699 +v 0.0356772 0.0690455 0.0889699 +v -0.0356772 -0.0690455 0.0889699 +v -0.0356772 0.0690455 0.0889699 +v -0.0328613 -0.0704285 -0.0889725 +v -0.0328613 0.0704285 -0.0889725 +v 0.0328613 -0.0704285 -0.0889725 +v 0.0328613 0.0704285 -0.0889725 +v 0.0328613 -0.0704285 0.0889725 +v 0.0328613 0.0704285 0.0889725 +v -0.0328613 -0.0704285 0.0889725 +v -0.0328613 0.0704285 0.0889725 +v -0.00473364 -0.0775702 -0.0889856 +v -0.00473364 0.0775702 -0.0889856 +v 0.00473364 -0.0775702 -0.0889856 +v 0.00473364 0.0775702 -0.0889856 +v 0.00473364 -0.0775702 0.0889856 +v 0.00473364 0.0775702 0.0889856 +v -0.00473364 -0.0775702 0.0889856 +v -0.00473364 0.0775702 0.0889856 +v -0.0761654 -0.0154341 -0.0889902 +v -0.0761654 0.0154341 -0.0889902 +v 0.0761654 -0.0154341 -0.0889902 +v 0.0761654 0.0154341 -0.0889902 +v 0.0761654 -0.0154341 0.0889902 +v 0.0761654 0.0154341 0.0889902 +v -0.0761654 -0.0154341 0.0889902 +v -0.0761654 0.0154341 0.0889902 +v -0.0587609 -0.0508196 -0.0890926 +v -0.0587609 0.0508196 -0.0890926 +v 0.0587609 -0.0508196 -0.0890926 +v 0.0587609 0.0508196 -0.0890926 +v 0.0587609 -0.0508196 0.0890926 +v 0.0587609 0.0508196 0.0890926 +v -0.0587609 -0.0508196 0.0890926 +v -0.0587609 0.0508196 0.0890926 +v -0.0766464 -0.0126542 -0.0891101 +v -0.0766464 0.0126542 -0.0891101 +v 0.0766464 -0.0126542 -0.0891101 +v 0.0766464 0.0126542 -0.0891101 +v 0.0766464 -0.0126542 0.0891101 +v 0.0766464 0.0126542 0.0891101 +v -0.0766464 -0.0126542 0.0891101 +v -0.0766464 0.0126542 0.0891101 +v -0.00406816 -0.0775702 -0.0891392 +v -0.00406816 0.0775702 -0.0891392 +v 0.00406816 -0.0775702 -0.0891392 +v 0.00406816 0.0775702 -0.0891392 +v 0.00406816 -0.0775702 0.0891392 +v 0.00406816 0.0775702 0.0891392 +v -0.00406816 -0.0775702 0.0891392 +v -0.00406816 0.0775702 0.0891392 +v -0.0160631 -0.0759968 -0.0891433 +v -0.0160631 0.0759968 -0.0891433 +v 0.0160631 -0.0759968 -0.0891433 +v 0.0160631 0.0759968 -0.0891433 +v 0.0160631 -0.0759968 0.0891433 +v 0.0160631 0.0759968 0.0891433 +v -0.0160631 -0.0759968 0.0891433 +v -0.0160631 0.0759968 0.0891433 +v -0.0526859 -0.0570655 -0.0891761 +v -0.0526859 0.0570655 -0.0891761 +v 0.0526859 -0.0570655 -0.0891761 +v 0.0526859 0.0570655 -0.0891761 +v 0.0526859 -0.0570655 0.0891761 +v 0.0526859 0.0570655 0.0891761 +v -0.0526859 -0.0570655 0.0891761 +v -0.0526859 0.0570655 0.0891761 +v -0.077032 -0.00985854 -0.0892062 +v -0.077032 0.00985854 -0.0892062 +v 0.077032 -0.00985854 -0.0892062 +v 0.077032 0.00985854 -0.0892062 +v 0.077032 -0.00985854 0.0892062 +v 0.077032 0.00985854 0.0892062 +v -0.077032 -0.00985854 0.0892062 +v -0.077032 0.00985854 0.0892062 +v -0.0198942 -0.0750675 -0.0892116 +v -0.0198942 0.0750675 -0.0892116 +v 0.0198942 -0.0750675 -0.0892116 +v 0.0198942 0.0750675 -0.0892116 +v 0.0198942 -0.0750675 0.0892116 +v 0.0198942 0.0750675 0.0892116 +v -0.0198942 -0.0750675 0.0892116 +v -0.0198942 0.0750675 0.0892116 +v -0.067046 -0.0391821 -0.0892251 +v -0.067046 0.0391821 -0.0892251 +v 0.067046 -0.0391821 -0.0892251 +v 0.067046 0.0391821 -0.0892251 +v 0.067046 -0.0391821 0.0892251 +v 0.067046 0.0391821 0.0892251 +v -0.067046 -0.0391821 0.0892251 +v -0.067046 0.0391821 0.0892251 +v -0.00339774 -0.0775702 -0.0892695 +v -0.00339774 0.0775702 -0.0892695 +v 0.00339774 -0.0775702 -0.0892695 +v 0.00339774 0.0775702 -0.0892695 +v 0.00339774 -0.0775702 0.0892695 +v 0.00339774 0.0775702 0.0892695 +v -0.00339774 -0.0775702 0.0892695 +v -0.00339774 0.0775702 0.0892695 +v -0.0773216 -0.0070506 -0.0892784 +v -0.0773216 0.0070506 -0.0892784 +v 0.0773216 -0.0070506 -0.0892784 +v 0.0773216 0.0070506 -0.0892784 +v 0.0773216 -0.0070506 0.0892784 +v 0.0773216 0.0070506 0.0892784 +v -0.0773216 -0.0070506 0.0892784 +v -0.0773216 0.0070506 0.0892784 +v -0.0111461 -0.0768314 -0.0893056 +v -0.0111461 0.0768314 -0.0893056 +v 0.0111461 -0.0768314 -0.0893056 +v 0.0111461 0.0768314 -0.0893056 +v 0.0111461 -0.0768314 0.0893056 +v 0.0111461 0.0768314 0.0893056 +v -0.0111461 -0.0768314 0.0893056 +v -0.0111461 0.0768314 0.0893056 +v -0.0433738 -0.0643878 -0.0893113 +v -0.0433738 0.0643878 -0.0893113 +v 0.0433738 -0.0643878 -0.0893113 +v 0.0433738 0.0643878 -0.0893113 +v 0.0433738 -0.0643878 0.0893113 +v 0.0433738 0.0643878 0.0893113 +v -0.0433738 -0.0643878 0.0893113 +v -0.0433738 0.0643878 0.0893113 +v -0.0775149 -0.00423388 -0.0893266 +v -0.0775149 0.00423388 -0.0893266 +v 0.0775149 -0.00423388 -0.0893266 +v 0.0775149 0.00423388 -0.0893266 +v 0.0775149 -0.00423388 0.0893266 +v 0.0775149 0.00423388 0.0893266 +v -0.0775149 -0.00423388 0.0893266 +v -0.0775149 0.00423388 0.0893266 +v -0.0266025 -0.0729297 -0.0893279 +v -0.0266025 0.0729297 -0.0893279 +v 0.0266025 -0.0729297 -0.0893279 +v 0.0266025 0.0729297 -0.0893279 +v 0.0266025 -0.0729297 0.0893279 +v 0.0266025 0.0729297 0.0893279 +v -0.0266025 -0.0729297 0.0893279 +v -0.0266025 0.0729297 0.0893279 +v -0.0776116 -0.00141188 -0.0893507 +v -0.0776116 0.00141188 -0.0893507 +v 0.0776116 -0.00141188 -0.0893507 +v 0.0776116 0.00141188 -0.0893507 +v 0.0776116 -0.00141188 0.0893507 +v 0.0776116 0.00141188 0.0893507 +v -0.0776116 -0.00141188 0.0893507 +v -0.0776116 0.00141188 0.0893507 +v -0.00272317 -0.0775702 -0.0893764 +v -0.00272317 0.0775702 -0.0893764 +v 0.00272317 -0.0775702 -0.0893764 +v 0.00272317 0.0775702 -0.0893764 +v 0.00272317 -0.0775702 0.0893764 +v 0.00272317 0.0775702 0.0893764 +v -0.00272317 -0.0775702 0.0893764 +v -0.00272317 0.0775702 0.0893764 +v -0.0481228 -0.0608783 -0.0894429 +v -0.0481228 0.0608783 -0.0894429 +v 0.0481228 -0.0608783 -0.0894429 +v 0.0481228 0.0608783 -0.0894429 +v 0.0481228 -0.0608783 0.0894429 +v 0.0481228 0.0608783 0.0894429 +v -0.0481228 -0.0608783 0.0894429 +v -0.0481228 0.0608783 0.0894429 +v -0.00204529 -0.0775702 -0.0894596 +v -0.00204529 0.0775702 -0.0894596 +v 0.00204529 -0.0775702 -0.0894596 +v 0.00204529 0.0775702 -0.0894596 +v 0.00204529 -0.0775702 0.0894596 +v 0.00204529 0.0775702 0.0894596 +v -0.00204529 -0.0775702 0.0894596 +v -0.00204529 0.0775702 0.0894596 +v -0.0232022 -0.0740447 -0.0894689 +v -0.0232022 0.0740447 -0.0894689 +v 0.0232022 -0.0740447 -0.0894689 +v 0.0232022 0.0740447 -0.0894689 +v 0.0232022 -0.0740447 0.0894689 +v 0.0232022 0.0740447 0.0894689 +v -0.0232022 -0.0740447 0.0894689 +v -0.0232022 0.0740447 0.0894689 +v -0.00136491 -0.0775702 -0.0895191 +v -0.00136491 0.0775702 -0.0895191 +v 0.00136491 -0.0775702 -0.0895191 +v 0.00136491 0.0775702 -0.0895191 +v 0.00136491 -0.0775702 0.0895191 +v 0.00136491 0.0775702 0.0895191 +v -0.00136491 -0.0775702 0.0895191 +v -0.00136491 0.0775702 0.0895191 +v -0.000682871 -0.0775702 -0.0895549 +v -0.000682871 0.0775702 -0.0895549 +v 0.000682871 -0.0775702 -0.0895549 +v 0.000682871 0.0775702 -0.0895549 +v 0.000682871 -0.0775702 0.0895549 +v 0.000682871 0.0775702 0.0895549 +v -0.000682871 -0.0775702 0.0895549 +v -0.000682871 0.0775702 0.0895549 +v -3.59436e-18 -0.0775702 -0.0895668 +v -3.59436e-18 0.0775702 -0.0895668 +v 1.19812e-18 -0.0775702 0.0895668 +v 1.19812e-18 0.0775702 0.0895668 +v -0.0683334 -0.0366961 -0.0895943 +v -0.0683334 0.0366961 -0.0895943 +v 0.0683334 -0.0366961 -0.0895943 +v 0.0683334 0.0366961 -0.0895943 +v 0.0683334 -0.0366961 0.0895943 +v 0.0683334 0.0366961 0.0895943 +v -0.0683334 -0.0366961 0.0895943 +v -0.0683334 0.0366961 0.0895943 +v -0.06043 -0.0486075 -0.0896349 +v -0.06043 0.0486075 -0.0896349 +v 0.06043 -0.0486075 -0.0896349 +v 0.06043 0.0486075 -0.0896349 +v 0.06043 -0.0486075 0.0896349 +v 0.06043 0.0486075 0.0896349 +v -0.06043 -0.0486075 0.0896349 +v -0.06043 0.0486075 0.0896349 +v -0.0104655 -0.0768314 -0.0896828 +v -0.0104655 0.0768314 -0.0896828 +v 0.0104655 -0.0768314 -0.0896828 +v 0.0104655 0.0768314 -0.0896828 +v 0.0104655 -0.0768314 0.0896828 +v 0.0104655 0.0768314 0.0896828 +v -0.0104655 -0.0768314 0.0896828 +v -0.0104655 0.0768314 0.0896828 +v -0.0153852 -0.0759968 -0.0896922 +v -0.0153852 0.0759968 -0.0896922 +v 0.0153852 -0.0759968 -0.0896922 +v 0.0153852 0.0759968 -0.0896922 +v 0.0153852 -0.0759968 0.0896922 +v 0.0153852 0.0759968 0.0896922 +v -0.0153852 -0.0759968 0.0896922 +v -0.0153852 0.0759968 0.0896922 +v -0.0406045 -0.0660233 -0.0898041 +v -0.0406045 0.0660233 -0.0898041 +v 0.0406045 -0.0660233 -0.0898041 +v 0.0406045 0.0660233 -0.0898041 +v 0.0406045 -0.0660233 0.0898041 +v 0.0406045 0.0660233 0.0898041 +v -0.0406045 -0.0660233 0.0898041 +v -0.0406045 0.0660233 0.0898041 +v -0.0293777 -0.0717238 -0.0898155 +v -0.0293777 0.0717238 -0.0898155 +v 0.0293777 -0.0717238 -0.0898155 +v 0.0293777 0.0717238 -0.0898155 +v 0.0293777 -0.0717238 0.0898155 +v 0.0293777 0.0717238 0.0898155 +v -0.0293777 -0.0717238 0.0898155 +v -0.0293777 0.0717238 0.0898155 +v -0.0545455 -0.0550513 -0.089853 +v -0.0545455 0.0550513 -0.089853 +v 0.0545455 -0.0550513 -0.089853 +v 0.0545455 0.0550513 -0.089853 +v 0.0545455 -0.0550513 0.089853 +v 0.0545455 0.0550513 0.089853 +v -0.0545455 -0.0550513 0.089853 +v -0.0545455 0.0550513 0.089853 +v -0.0192116 -0.0750675 -0.0898942 +v -0.0192116 0.0750675 -0.0898942 +v 0.0192116 -0.0750675 -0.0898942 +v 0.0192116 0.0750675 -0.0898942 +v 0.0192116 -0.0750675 0.0898942 +v 0.0192116 0.0750675 0.0898942 +v -0.0192116 -0.0750675 0.0898942 +v -0.0192116 0.0750675 0.0898942 +v -0.0695357 -0.0341645 -0.0899391 +v -0.0695357 0.0341645 -0.0899391 +v 0.0695357 -0.0341645 -0.0899391 +v 0.0695357 0.0341645 -0.0899391 +v 0.0695357 -0.0341645 0.0899391 +v 0.0695357 0.0341645 0.0899391 +v -0.0695357 -0.0341645 0.0899391 +v -0.0695357 0.0341645 0.0899391 +v -0.00977224 -0.0768314 -0.0900361 +v -0.00977224 0.0768314 -0.0900361 +v 0.00977224 -0.0768314 -0.0900361 +v 0.00977224 0.0768314 -0.0900361 +v 0.00977224 -0.0768314 0.0900361 +v 0.00977224 0.0768314 0.0900361 +v -0.00977224 -0.0768314 0.0900361 +v -0.00977224 0.0768314 0.0900361 +v -0.0378064 -0.0675765 -0.090102 +v -0.0378064 0.0675765 -0.090102 +v 0.0378064 -0.0675765 -0.090102 +v 0.0378064 0.0675765 -0.090102 +v 0.0378064 -0.0675765 0.090102 +v 0.0378064 0.0675765 0.090102 +v -0.0378064 -0.0675765 0.090102 +v -0.0378064 0.0675765 0.090102 +v -0.0321792 -0.0704285 -0.0901078 +v -0.0321792 0.0704285 -0.0901078 +v 0.0321792 -0.0704285 -0.0901078 +v 0.0321792 0.0704285 -0.0901078 +v 0.0321792 -0.0704285 0.0901078 +v 0.0321792 0.0704285 0.0901078 +v -0.0321792 -0.0704285 0.0901078 +v -0.0321792 0.0704285 0.0901078 +v -0.0620238 -0.0463348 -0.0901528 +v -0.0620238 0.0463348 -0.0901528 +v 0.0620238 -0.0463348 -0.0901528 +v 0.0620238 0.0463348 -0.0901528 +v 0.0620238 -0.0463348 0.0901528 +v 0.0620238 0.0463348 0.0901528 +v -0.0620238 -0.0463348 0.0901528 +v -0.0620238 0.0463348 0.0901528 +v -0.0349934 -0.0690455 -0.0902034 +v -0.0349934 0.0690455 -0.0902034 +v 0.0349934 -0.0690455 -0.0902034 +v 0.0349934 0.0690455 -0.0902034 +v 0.0349934 -0.0690455 0.0902034 +v 0.0349934 0.0690455 0.0902034 +v -0.0349934 -0.0690455 0.0902034 +v -0.0349934 0.0690455 0.0902034 +v -0.0146886 -0.0759968 -0.0902172 +v -0.0146886 0.0759968 -0.0902172 +v 0.0146886 -0.0759968 -0.0902172 +v 0.0146886 0.0759968 -0.0902172 +v 0.0146886 -0.0759968 0.0902172 +v 0.0146886 0.0759968 0.0902172 +v -0.0146886 -0.0759968 0.0902172 +v -0.0146886 0.0759968 0.0902172 +v -0.0454227 -0.0626721 -0.0902235 +v -0.0454227 0.0626721 -0.0902235 +v 0.0454227 -0.0626721 -0.0902235 +v 0.0454227 0.0626721 -0.0902235 +v 0.0454227 -0.0626721 0.0902235 +v 0.0454227 0.0626721 0.0902235 +v -0.0454227 -0.0626721 0.0902235 +v -0.0454227 0.0626721 0.0902235 +v -0.0500849 -0.0590087 -0.0902356 +v -0.0500849 0.0590087 -0.0902356 +v 0.0500849 -0.0590087 -0.0902356 +v 0.0500849 0.0590087 -0.0902356 +v 0.0500849 -0.0590087 0.0902356 +v 0.0500849 0.0590087 0.0902356 +v -0.0500849 -0.0590087 0.0902356 +v -0.0500849 0.0590087 0.0902356 +v -0.0259118 -0.0729297 -0.0902445 +v -0.0259118 0.0729297 -0.0902445 +v 0.0259118 -0.0729297 -0.0902445 +v 0.0259118 0.0729297 -0.0902445 +v 0.0259118 -0.0729297 0.0902445 +v 0.0259118 0.0729297 0.0902445 +v -0.0259118 -0.0729297 0.0902445 +v -0.0259118 0.0729297 0.0902445 +v -0.0706514 -0.0315903 -0.090259 +v -0.0706514 0.0315903 -0.090259 +v 0.0706514 -0.0315903 -0.090259 +v 0.0706514 0.0315903 -0.090259 +v 0.0706514 -0.0315903 0.090259 +v 0.0706514 0.0315903 0.090259 +v -0.0706514 -0.0315903 0.090259 +v -0.0706514 0.0315903 0.090259 +v -0.0225086 -0.0740447 -0.0902668 +v -0.0225086 0.0740447 -0.0902668 +v 0.0225086 -0.0740447 -0.0902668 +v 0.0225086 0.0740447 -0.0902668 +v 0.0225086 -0.0740447 0.0902668 +v 0.0225086 0.0740447 0.0902668 +v -0.0225086 -0.0740447 0.0902668 +v -0.0225086 0.0740447 0.0902668 +v -0.00906704 -0.0768314 -0.0903649 +v -0.00906704 0.0768314 -0.0903649 +v 0.00906704 -0.0768314 -0.0903649 +v 0.00906704 0.0768314 -0.0903649 +v 0.00906704 -0.0768314 0.0903649 +v 0.00906704 0.0768314 0.0903649 +v -0.00906704 -0.0768314 0.0903649 +v -0.00906704 0.0768314 0.0903649 +v -0.0563372 -0.0529685 -0.0905051 +v -0.0563372 0.0529685 -0.0905051 +v 0.0563372 -0.0529685 -0.0905051 +v 0.0563372 0.0529685 -0.0905051 +v 0.0563372 -0.0529685 0.0905051 +v 0.0563372 0.0529685 0.0905051 +v -0.0563372 -0.0529685 0.0905051 +v -0.0563372 0.0529685 0.0905051 +v -0.0185056 -0.0750675 -0.0905526 +v -0.0185056 0.0750675 -0.0905526 +v 0.0185056 -0.0750675 -0.0905526 +v 0.0185056 0.0750675 -0.0905526 +v 0.0185056 -0.0750675 0.0905526 +v 0.0185056 0.0750675 0.0905526 +v -0.0185056 -0.0750675 0.0905526 +v -0.0185056 0.0750675 0.0905526 +v -0.0716791 -0.0289768 -0.0905537 +v -0.0716791 0.0289768 -0.0905537 +v 0.0716791 -0.0289768 -0.0905537 +v 0.0716791 0.0289768 -0.0905537 +v 0.0716791 -0.0289768 0.0905537 +v 0.0716791 0.0289768 0.0905537 +v -0.0716791 -0.0289768 0.0905537 +v -0.0716791 0.0289768 0.0905537 +v -0.0635403 -0.0440044 -0.0906455 +v -0.0635403 0.0440044 -0.0906455 +v 0.0635403 -0.0440044 -0.0906455 +v 0.0635403 0.0440044 -0.0906455 +v 0.0635403 -0.0440044 0.0906455 +v 0.0635403 0.0440044 0.0906455 +v -0.0635403 -0.0440044 0.0906455 +v -0.0635403 0.0440044 0.0906455 +v -0.00835079 -0.0768314 -0.0906689 +v -0.00835079 0.0768314 -0.0906689 +v 0.00835079 -0.0768314 -0.0906689 +v 0.00835079 0.0768314 -0.0906689 +v 0.00835079 -0.0768314 0.0906689 +v 0.00835079 0.0768314 0.0906689 +v -0.00835079 -0.0768314 0.0906689 +v -0.00835079 0.0768314 0.0906689 +v -0.0139741 -0.0759968 -0.0907175 +v -0.0139741 0.0759968 -0.0907175 +v 0.0139741 -0.0759968 -0.0907175 +v 0.0139741 0.0759968 -0.0907175 +v 0.0139741 -0.0759968 0.0907175 +v 0.0139741 0.0759968 0.0907175 +v -0.0139741 -0.0759968 0.0907175 +v -0.0139741 0.0759968 0.0907175 +v -0.0426734 -0.0643878 -0.0908132 +v -0.0426734 0.0643878 -0.0908132 +v 0.0426734 -0.0643878 -0.0908132 +v 0.0426734 0.0643878 -0.0908132 +v 0.0426734 -0.0643878 0.0908132 +v 0.0426734 0.0643878 0.0908132 +v -0.0426734 -0.0643878 0.0908132 +v -0.0426734 0.0643878 0.0908132 +v -0.0726175 -0.0263271 -0.0908227 +v -0.0726175 0.0263271 -0.0908227 +v 0.0726175 -0.0263271 -0.0908227 +v 0.0726175 0.0263271 -0.0908227 +v 0.0726175 -0.0263271 0.0908227 +v 0.0726175 0.0263271 0.0908227 +v -0.0726175 -0.0263271 0.0908227 +v -0.0726175 0.0263271 0.0908227 +v -0.0286682 -0.0717238 -0.0908287 +v -0.0286682 0.0717238 -0.0908287 +v 0.0286682 -0.0717238 -0.0908287 +v 0.0286682 0.0717238 -0.0908287 +v 0.0286682 -0.0717238 0.0908287 +v 0.0286682 0.0717238 0.0908287 +v -0.0286682 -0.0717238 0.0908287 +v -0.0286682 0.0717238 0.0908287 +v -0.00762437 -0.0768314 -0.0909478 +v -0.00762437 0.0768314 -0.0909478 +v 0.00762437 -0.0768314 -0.0909478 +v 0.00762437 0.0768314 -0.0909478 +v 0.00762437 -0.0768314 0.0909478 +v 0.00762437 0.0768314 0.0909478 +v -0.00762437 -0.0768314 0.0909478 +v -0.00762437 0.0768314 0.0909478 +v -0.0519846 -0.0570655 -0.0910031 +v -0.0519846 0.0570655 -0.0910031 +v 0.0519846 -0.0570655 -0.0910031 +v 0.0519846 0.0570655 -0.0910031 +v 0.0519846 -0.0570655 0.0910031 +v 0.0519846 0.0570655 0.0910031 +v -0.0519846 -0.0570655 0.0910031 +v -0.0519846 0.0570655 0.0910031 +v -0.0217876 -0.0740447 -0.09104 +v -0.0217876 0.0740447 -0.09104 +v 0.0217876 -0.0740447 -0.09104 +v 0.0217876 0.0740447 -0.09104 +v 0.0217876 -0.0740447 0.09104 +v 0.0217876 0.0740447 0.09104 +v -0.0217876 -0.0740447 0.09104 +v -0.0217876 0.0740447 0.09104 +v -0.0734654 -0.0236447 -0.0910659 +v -0.0734654 0.0236447 -0.0910659 +v 0.0734654 -0.0236447 -0.0910659 +v 0.0734654 0.0236447 -0.0910659 +v 0.0734654 -0.0236447 0.0910659 +v 0.0734654 0.0236447 0.0910659 +v -0.0734654 -0.0236447 0.0910659 +v -0.0734654 0.0236447 0.0910659 +v -0.047415 -0.0608783 -0.0911105 +v -0.047415 0.0608783 -0.0911105 +v 0.047415 -0.0608783 -0.0911105 +v 0.047415 0.0608783 -0.0911105 +v 0.047415 -0.0608783 0.0911105 +v 0.047415 0.0608783 0.0911105 +v -0.047415 -0.0608783 0.0911105 +v -0.047415 0.0608783 0.0911105 +v -0.0649777 -0.0416192 -0.0911125 +v -0.0649777 0.0416192 -0.0911125 +v 0.0649777 -0.0416192 -0.0911125 +v 0.0649777 0.0416192 -0.0911125 +v 0.0649777 -0.0416192 0.0911125 +v 0.0649777 0.0416192 0.0911125 +v -0.0649777 -0.0416192 0.0911125 +v -0.0649777 0.0416192 0.0911125 +v -0.0580587 -0.0508196 -0.0911316 +v -0.0580587 0.0508196 -0.0911316 +v 0.0580587 -0.0508196 -0.0911316 +v 0.0580587 0.0508196 -0.0911316 +v 0.0580587 -0.0508196 0.0911316 +v 0.0580587 0.0508196 0.0911316 +v -0.0580587 -0.0508196 0.0911316 +v -0.0580587 0.0508196 0.0911316 +v -0.0251895 -0.0729297 -0.0911365 +v -0.0251895 0.0729297 -0.0911365 +v 0.0251895 -0.0729297 -0.0911365 +v 0.0251895 0.0729297 -0.0911365 +v 0.0251895 -0.0729297 0.0911365 +v 0.0251895 0.0729297 0.0911365 +v -0.0251895 -0.0729297 0.0911365 +v -0.0251895 0.0729297 0.0911365 +v -0.0177771 -0.0750675 -0.0911859 +v -0.0177771 0.0750675 -0.0911859 +v 0.0177771 -0.0750675 -0.0911859 +v 0.0177771 0.0750675 -0.0911859 +v 0.0177771 -0.0750675 0.0911859 +v 0.0177771 0.0750675 0.0911859 +v -0.0177771 -0.0750675 0.0911859 +v -0.0177771 0.0750675 0.0911859 +v -0.0132426 -0.0759968 -0.0911925 +v -0.0132426 0.0759968 -0.0911925 +v 0.0132426 -0.0759968 -0.0911925 +v 0.0132426 0.0759968 -0.0911925 +v 0.0132426 -0.0759968 0.0911925 +v 0.0132426 0.0759968 0.0911925 +v -0.0132426 -0.0759968 0.0911925 +v -0.0132426 0.0759968 0.0911925 +v -0.00688866 -0.0768314 -0.0912011 +v -0.00688866 0.0768314 -0.0912011 +v 0.00688866 -0.0768314 -0.0912011 +v 0.00688866 0.0768314 -0.0912011 +v 0.00688866 -0.0768314 0.0912011 +v 0.00688866 0.0768314 0.0912011 +v -0.00688866 -0.0768314 0.0912011 +v -0.00688866 0.0768314 0.0912011 +v -0.0398886 -0.0660233 -0.0912092 +v -0.0398886 0.0660233 -0.0912092 +v 0.0398886 -0.0660233 -0.0912092 +v 0.0398886 0.0660233 -0.0912092 +v 0.0398886 -0.0660233 0.0912092 +v 0.0398886 0.0660233 0.0912092 +v -0.0398886 -0.0660233 0.0912092 +v -0.0398886 0.0660233 0.0912092 +v -0.0314578 -0.0704285 -0.0912186 +v -0.0314578 0.0704285 -0.0912186 +v 0.0314578 -0.0704285 -0.0912186 +v 0.0314578 0.0704285 -0.0912186 +v 0.0314578 -0.0704285 0.0912186 +v 0.0314578 0.0704285 0.0912186 +v -0.0314578 -0.0704285 0.0912186 +v -0.0314578 0.0704285 0.0912186 +v -0.0742217 -0.0209327 -0.0912827 +v -0.0742217 0.0209327 -0.0912827 +v 0.0742217 -0.0209327 -0.0912827 +v 0.0742217 0.0209327 -0.0912827 +v 0.0742217 -0.0209327 0.0912827 +v 0.0742217 0.0209327 0.0912827 +v -0.0742217 -0.0209327 0.0912827 +v -0.0742217 0.0209327 0.0912827 +v -0.0370819 -0.0675765 -0.0914092 +v -0.0370819 0.0675765 -0.0914092 +v 0.0370819 -0.0675765 -0.0914092 +v 0.0370819 0.0675765 -0.0914092 +v 0.0370819 -0.0675765 0.0914092 +v 0.0370819 0.0675765 0.0914092 +v -0.0370819 -0.0675765 0.0914092 +v -0.0370819 0.0675765 0.0914092 +v -0.034267 -0.0690455 -0.0914124 +v -0.034267 0.0690455 -0.0914124 +v 0.034267 -0.0690455 -0.0914124 +v 0.034267 0.0690455 -0.0914124 +v 0.034267 -0.0690455 0.0914124 +v 0.034267 0.0690455 0.0914124 +v -0.034267 -0.0690455 0.0914124 +v -0.034267 0.0690455 0.0914124 +v -0.00614455 -0.0768314 -0.0914286 +v -0.00614455 0.0768314 -0.0914286 +v 0.00614455 -0.0768314 -0.0914286 +v 0.00614455 0.0768314 -0.0914286 +v 0.00614455 -0.0768314 0.0914286 +v 0.00614455 0.0768314 0.0914286 +v -0.00614455 -0.0768314 0.0914286 +v -0.00614455 0.0768314 0.0914286 +v -0.0748856 -0.0181947 -0.0914731 +v -0.0748856 0.0181947 -0.0914731 +v 0.0748856 -0.0181947 -0.0914731 +v 0.0748856 0.0181947 -0.0914731 +v 0.0748856 -0.0181947 0.0914731 +v 0.0748856 0.0181947 0.0914731 +v -0.0748856 -0.0181947 0.0914731 +v -0.0748856 0.0181947 0.0914731 +v -0.0663342 -0.0391821 -0.0915533 +v -0.0663342 0.0391821 -0.0915533 +v 0.0663342 -0.0391821 -0.0915533 +v 0.0663342 0.0391821 -0.0915533 +v 0.0663342 -0.0391821 0.0915533 +v 0.0663342 0.0391821 0.0915533 +v -0.0663342 -0.0391821 0.0915533 +v -0.0663342 0.0391821 0.0915533 +v -0.00539296 -0.0768314 -0.09163 +v -0.00539296 0.0768314 -0.09163 +v 0.00539296 -0.0768314 -0.09163 +v 0.00539296 0.0768314 -0.09163 +v 0.00539296 -0.0768314 0.09163 +v 0.00539296 0.0768314 0.09163 +v -0.00539296 -0.0768314 0.09163 +v -0.00539296 0.0768314 0.09163 +v -0.0754562 -0.0154341 -0.0916367 +v -0.0754562 0.0154341 -0.0916367 +v 0.0754562 -0.0154341 -0.0916367 +v 0.0754562 0.0154341 -0.0916367 +v 0.0754562 -0.0154341 0.0916367 +v 0.0754562 0.0154341 0.0916367 +v -0.0754562 -0.0154341 0.0916367 +v -0.0754562 0.0154341 0.0916367 +v -0.0124949 -0.0759968 -0.0916418 +v -0.0124949 0.0759968 -0.0916418 +v 0.0124949 -0.0759968 -0.0916418 +v 0.0124949 0.0759968 -0.0916418 +v 0.0124949 -0.0759968 0.0916418 +v 0.0124949 0.0759968 0.0916418 +v -0.0124949 -0.0759968 0.0916418 +v -0.0124949 0.0759968 0.0916418 +v -0.0597079 -0.0486075 -0.0917319 +v -0.0597079 0.0486075 -0.0917319 +v 0.0597079 -0.0486075 -0.0917319 +v 0.0597079 0.0486075 -0.0917319 +v 0.0597079 -0.0486075 0.0917319 +v 0.0597079 0.0486075 0.0917319 +v -0.0597079 -0.0486075 0.0917319 +v -0.0597079 0.0486075 0.0917319 +v -0.0538194 -0.0550513 -0.0917445 +v -0.0538194 0.0550513 -0.0917445 +v 0.0538194 -0.0550513 -0.0917445 +v 0.0538194 0.0550513 -0.0917445 +v 0.0538194 -0.0550513 0.0917445 +v 0.0538194 0.0550513 0.0917445 +v -0.0538194 -0.0550513 0.0917445 +v -0.0538194 0.0550513 0.0917445 +v -0.0759328 -0.0126542 -0.0917734 +v -0.0759328 0.0126542 -0.0917734 +v 0.0759328 -0.0126542 -0.0917734 +v 0.0759328 0.0126542 -0.0917734 +v 0.0759328 -0.0126542 0.0917734 +v 0.0759328 0.0126542 0.0917734 +v -0.0759328 -0.0126542 0.0917734 +v -0.0759328 0.0126542 0.0917734 +v -0.02104 -0.0740447 -0.0917875 +v -0.02104 0.0740447 -0.0917875 +v 0.02104 -0.0740447 -0.0917875 +v 0.02104 0.0740447 -0.0917875 +v 0.02104 -0.0740447 0.0917875 +v 0.02104 0.0740447 0.0917875 +v -0.02104 -0.0740447 0.0917875 +v -0.02104 0.0740447 0.0917875 +v -0.0170269 -0.0750675 -0.0917934 +v -0.0170269 0.0750675 -0.0917934 +v 0.0170269 -0.0750675 -0.0917934 +v 0.0170269 0.0750675 -0.0917934 +v 0.0170269 -0.0750675 0.0917934 +v 0.0170269 0.0750675 0.0917934 +v -0.0170269 -0.0750675 0.0917934 +v -0.0170269 0.0750675 0.0917934 +v -0.0446892 -0.0626721 -0.0917964 +v -0.0446892 0.0626721 -0.0917964 +v 0.0446892 -0.0626721 -0.0917964 +v 0.0446892 0.0626721 -0.0917964 +v 0.0446892 -0.0626721 0.0917964 +v 0.0446892 0.0626721 0.0917964 +v -0.0446892 -0.0626721 0.0917964 +v -0.0446892 0.0626721 0.0917964 +v -0.0046348 -0.0768314 -0.091805 +v -0.0046348 0.0768314 -0.091805 +v 0.0046348 -0.0768314 -0.091805 +v 0.0046348 0.0768314 -0.091805 +v 0.0046348 -0.0768314 0.091805 +v 0.0046348 0.0768314 0.091805 +v -0.0046348 -0.0768314 0.091805 +v -0.0046348 0.0768314 0.091805 +v -0.0279238 -0.0717238 -0.0918165 +v -0.0279238 0.0717238 -0.0918165 +v 0.0279238 -0.0717238 -0.0918165 +v 0.0279238 0.0717238 -0.0918165 +v 0.0279238 -0.0717238 0.0918165 +v 0.0279238 0.0717238 0.0918165 +v -0.0279238 -0.0717238 0.0918165 +v -0.0279238 0.0717238 0.0918165 +v -0.0763148 -0.00985854 -0.0918829 +v -0.0763148 0.00985854 -0.0918829 +v 0.0763148 -0.00985854 -0.0918829 +v 0.0763148 0.00985854 -0.0918829 +v 0.0763148 -0.00985854 0.0918829 +v 0.0763148 0.00985854 0.0918829 +v -0.0763148 -0.00985854 0.0918829 +v -0.0763148 0.00985854 0.0918829 +v -0.00387099 -0.0768314 -0.0919535 +v -0.00387099 0.0768314 -0.0919535 +v 0.00387099 -0.0768314 -0.0919535 +v 0.00387099 0.0768314 -0.0919535 +v 0.00387099 -0.0768314 0.0919535 +v 0.00387099 0.0768314 0.0919535 +v -0.00387099 -0.0768314 0.0919535 +v -0.00387099 0.0768314 0.0919535 +v -0.0766017 -0.0070506 -0.0919652 +v -0.0766017 0.0070506 -0.0919652 +v 0.0766017 -0.0070506 -0.0919652 +v 0.0766017 0.0070506 -0.0919652 +v 0.0766017 -0.0070506 0.0919652 +v 0.0766017 0.0070506 0.0919652 +v -0.0766017 -0.0070506 0.0919652 +v -0.0766017 0.0070506 0.0919652 +v -0.067608 -0.0366961 -0.0919672 +v -0.067608 0.0366961 -0.0919672 +v 0.067608 -0.0366961 -0.0919672 +v 0.067608 0.0366961 -0.0919672 +v 0.067608 -0.0366961 0.0919672 +v 0.067608 0.0366961 0.0919672 +v -0.067608 -0.0366961 0.0919672 +v -0.067608 0.0366961 0.0919672 +v -0.0493482 -0.0590087 -0.0919712 +v -0.0493482 0.0590087 -0.0919712 +v 0.0493482 -0.0590087 -0.0919712 +v 0.0493482 0.0590087 -0.0919712 +v 0.0493482 -0.0590087 0.0919712 +v 0.0493482 0.0590087 0.0919712 +v -0.0493482 -0.0590087 0.0919712 +v -0.0493482 0.0590087 0.0919712 +v -0.0244365 -0.0729297 -0.0920027 +v -0.0244365 0.0729297 -0.0920027 +v 0.0244365 -0.0729297 -0.0920027 +v 0.0244365 0.0729297 -0.0920027 +v 0.0244365 -0.0729297 0.0920027 +v 0.0244365 0.0729297 0.0920027 +v -0.0244365 -0.0729297 0.0920027 +v -0.0244365 0.0729297 0.0920027 +v -0.0767932 -0.00423388 -0.0920201 +v -0.0767932 0.00423388 -0.0920201 +v 0.0767932 -0.00423388 -0.0920201 +v 0.0767932 0.00423388 -0.0920201 +v 0.0767932 -0.00423388 0.0920201 +v 0.0767932 0.00423388 0.0920201 +v -0.0767932 -0.00423388 0.0920201 +v -0.0767932 0.00423388 0.0920201 +v -0.076889 -0.00141188 -0.0920476 +v -0.076889 0.00141188 -0.0920476 +v 0.076889 -0.00141188 -0.0920476 +v 0.076889 0.00141188 -0.0920476 +v 0.076889 -0.00141188 0.0920476 +v 0.076889 0.00141188 0.0920476 +v -0.076889 -0.00141188 0.0920476 +v -0.076889 0.00141188 0.0920476 +v -0.011732 -0.0759968 -0.0920647 +v -0.011732 0.0759968 -0.0920647 +v 0.011732 -0.0759968 -0.0920647 +v 0.011732 0.0759968 -0.0920647 +v 0.011732 -0.0759968 0.0920647 +v 0.011732 0.0759968 0.0920647 +v -0.011732 -0.0759968 0.0920647 +v -0.011732 0.0759968 0.0920647 +v -0.00310247 -0.0768314 -0.0920752 +v -0.00310247 0.0768314 -0.0920752 +v 0.00310247 -0.0768314 -0.0920752 +v 0.00310247 0.0768314 -0.0920752 +v 0.00310247 -0.0768314 0.0920752 +v 0.00310247 0.0768314 0.0920752 +v -0.00310247 -0.0768314 0.0920752 +v -0.00310247 0.0768314 0.0920752 +v -0.00233017 -0.0768314 -0.0921701 +v -0.00233017 0.0768314 -0.0921701 +v 0.00233017 -0.0768314 -0.0921701 +v 0.00233017 0.0768314 -0.0921701 +v 0.00233017 -0.0768314 0.0921701 +v 0.00233017 0.0768314 0.0921701 +v -0.00233017 -0.0768314 0.0921701 +v -0.00233017 0.0768314 0.0921701 +v -0.00155502 -0.0768314 -0.0922379 +v -0.00155502 0.0768314 -0.0922379 +v 0.00155502 -0.0768314 -0.0922379 +v 0.00155502 0.0768314 -0.0922379 +v 0.00155502 -0.0768314 0.0922379 +v 0.00155502 0.0768314 0.0922379 +v -0.00155502 -0.0768314 0.0922379 +v -0.00155502 0.0768314 0.0922379 +v -0.000777985 -0.0768314 -0.0922786 +v -0.000777985 0.0768314 -0.0922786 +v 0.000777985 -0.0768314 -0.0922786 +v 0.000777985 0.0768314 -0.0922786 +v 0.000777985 -0.0768314 0.0922786 +v 0.000777985 0.0768314 0.0922786 +v -0.000777985 -0.0768314 0.0922786 +v -0.000777985 0.0768314 0.0922786 +v -0.0419211 -0.0643878 -0.0922898 +v -0.0419211 0.0643878 -0.0922898 +v 0.0419211 -0.0643878 -0.0922898 +v 0.0419211 0.0643878 -0.0922898 +v 0.0419211 -0.0643878 0.0922898 +v 0.0419211 0.0643878 0.0922898 +v -0.0419211 -0.0643878 0.0922898 +v -0.0419211 0.0643878 0.0922898 +v -4.09501e-18 -0.0768314 -0.0922922 +v -4.09501e-18 0.0768314 -0.0922922 +v 1.365e-18 -0.0768314 0.0922922 +v 1.365e-18 0.0768314 0.0922922 +v -0.0306982 -0.0704285 -0.0923035 +v -0.0306982 0.0704285 -0.0923035 +v 0.0306982 -0.0704285 -0.0923035 +v 0.0306982 0.0704285 -0.0923035 +v 0.0306982 -0.0704285 0.0923035 +v 0.0306982 0.0704285 0.0923035 +v -0.0306982 -0.0704285 0.0923035 +v -0.0306982 0.0704285 0.0923035 +v -0.0612827 -0.0463348 -0.0923051 +v -0.0612827 0.0463348 -0.0923051 +v 0.0612827 -0.0463348 -0.0923051 +v 0.0612827 0.0463348 -0.0923051 +v 0.0612827 -0.0463348 0.0923051 +v 0.0612827 0.0463348 0.0923051 +v -0.0612827 -0.0463348 0.0923051 +v -0.0612827 0.0463348 0.0923051 +v -0.0687975 -0.0341645 -0.0923537 +v -0.0687975 0.0341645 -0.0923537 +v 0.0687975 -0.0341645 -0.0923537 +v 0.0687975 0.0341645 -0.0923537 +v 0.0687975 -0.0341645 0.0923537 +v 0.0687975 0.0341645 0.0923537 +v -0.0687975 -0.0341645 0.0923537 +v -0.0687975 0.0341645 0.0923537 +v -0.0162559 -0.0750675 -0.0923744 +v -0.0162559 0.0750675 -0.0923744 +v 0.0162559 -0.0750675 -0.0923744 +v 0.0162559 0.0750675 -0.0923744 +v 0.0162559 -0.0750675 0.0923744 +v 0.0162559 0.0750675 0.0923744 +v -0.0162559 -0.0750675 0.0923744 +v -0.0162559 0.0750675 0.0923744 +v -0.0555873 -0.0529685 -0.0924587 +v -0.0555873 0.0529685 -0.0924587 +v 0.0555873 -0.0529685 -0.0924587 +v 0.0555873 0.0529685 -0.0924587 +v 0.0555873 -0.0529685 0.0924587 +v 0.0555873 0.0529685 0.0924587 +v -0.0555873 -0.0529685 0.0924587 +v -0.0555873 0.0529685 0.0924587 +v -0.0109548 -0.0759968 -0.0924607 +v -0.0109548 0.0759968 -0.0924607 +v 0.0109548 -0.0759968 -0.0924607 +v 0.0109548 0.0759968 -0.0924607 +v 0.0109548 -0.0759968 0.0924607 +v 0.0109548 0.0759968 0.0924607 +v -0.0109548 -0.0759968 0.0924607 +v -0.0109548 0.0759968 0.0924607 +v -0.0202668 -0.0740447 -0.0925086 +v -0.0202668 0.0740447 -0.0925086 +v 0.0202668 -0.0740447 -0.0925086 +v 0.0202668 0.0740447 -0.0925086 +v 0.0202668 -0.0740447 0.0925086 +v 0.0202668 0.0740447 0.0925086 +v -0.0202668 -0.0740447 0.0925086 +v -0.0202668 0.0740447 0.0925086 +v -0.0391241 -0.0660233 -0.0925883 +v -0.0391241 0.0660233 -0.0925883 +v 0.0391241 -0.0660233 -0.0925883 +v 0.0391241 0.0660233 -0.0925883 +v 0.0391241 -0.0660233 0.0925883 +v 0.0391241 0.0660233 0.0925883 +v -0.0391241 -0.0660233 0.0925883 +v -0.0391241 0.0660233 0.0925883 +v -0.0334988 -0.0690455 -0.0925952 +v -0.0334988 0.0690455 -0.0925952 +v 0.0334988 -0.0690455 -0.0925952 +v 0.0334988 0.0690455 -0.0925952 +v 0.0334988 -0.0690455 0.0925952 +v 0.0334988 0.0690455 0.0925952 +v -0.0334988 -0.0690455 0.0925952 +v -0.0334988 0.0690455 0.0925952 +v -0.0363121 -0.0675765 -0.0926903 +v -0.0363121 0.0675765 -0.0926903 +v 0.0363121 -0.0675765 -0.0926903 +v 0.0363121 0.0675765 -0.0926903 +v 0.0363121 -0.0675765 0.0926903 +v 0.0363121 0.0675765 0.0926903 +v -0.0363121 -0.0675765 0.0926903 +v -0.0363121 0.0675765 0.0926903 +v -0.0699014 -0.0315903 -0.0927123 +v -0.0699014 0.0315903 -0.0927123 +v 0.0699014 -0.0315903 -0.0927123 +v 0.0699014 0.0315903 -0.0927123 +v 0.0699014 -0.0315903 0.0927123 +v 0.0699014 0.0315903 0.0927123 +v -0.0699014 -0.0315903 0.0927123 +v -0.0699014 0.0315903 0.0927123 +v -0.0466493 -0.0608783 -0.0927524 +v -0.0466493 0.0608783 -0.0927524 +v 0.0466493 -0.0608783 -0.0927524 +v 0.0466493 0.0608783 -0.0927524 +v 0.0466493 -0.0608783 0.0927524 +v 0.0466493 0.0608783 0.0927524 +v -0.0466493 -0.0608783 0.0927524 +v -0.0466493 0.0608783 0.0927524 +v -0.0271454 -0.0717238 -0.0927777 +v -0.0271454 0.0717238 -0.0927777 +v 0.0271454 -0.0717238 -0.0927777 +v 0.0271454 0.0717238 -0.0927777 +v 0.0271454 -0.0717238 0.0927777 +v 0.0271454 0.0717238 0.0927777 +v -0.0271454 -0.0717238 0.0927777 +v -0.0271454 0.0717238 0.0927777 +v -0.0512199 -0.0570655 -0.0928046 +v -0.0512199 0.0570655 -0.0928046 +v 0.0512199 -0.0570655 -0.0928046 +v 0.0512199 0.0570655 -0.0928046 +v 0.0512199 -0.0570655 0.0928046 +v 0.0512199 0.0570655 0.0928046 +v -0.0512199 -0.0570655 0.0928046 +v -0.0512199 0.0570655 0.0928046 +v -0.0101643 -0.0759968 -0.0928293 +v -0.0101643 0.0759968 -0.0928293 +v 0.0101643 -0.0759968 -0.0928293 +v 0.0101643 0.0759968 -0.0928293 +v 0.0101643 -0.0759968 0.0928293 +v 0.0101643 0.0759968 0.0928293 +v -0.0101643 -0.0759968 0.0928293 +v -0.0101643 0.0759968 0.0928293 +v -0.0236537 -0.0729297 -0.0928421 +v -0.0236537 0.0729297 -0.0928421 +v 0.0236537 -0.0729297 -0.0928421 +v 0.0236537 0.0729297 -0.0928421 +v 0.0236537 -0.0729297 0.0928421 +v 0.0236537 0.0729297 0.0928421 +v -0.0236537 -0.0729297 0.0928421 +v -0.0236537 0.0729297 0.0928421 +v -0.0627811 -0.0440044 -0.0928505 +v -0.0627811 0.0440044 -0.0928505 +v 0.0627811 -0.0440044 -0.0928505 +v 0.0627811 0.0440044 -0.0928505 +v 0.0627811 -0.0440044 0.0928505 +v 0.0627811 0.0440044 0.0928505 +v -0.0627811 -0.0440044 0.0928505 +v -0.0627811 0.0440044 0.0928505 +v -0.0154652 -0.0750675 -0.0929281 +v -0.0154652 0.0750675 -0.0929281 +v 0.0154652 -0.0750675 -0.0929281 +v 0.0154652 0.0750675 -0.0929281 +v 0.0154652 -0.0750675 0.0929281 +v 0.0154652 0.0750675 0.0929281 +v -0.0154652 -0.0750675 0.0929281 +v -0.0154652 0.0750675 0.0929281 +v -0.0709181 -0.0289768 -0.0930427 +v -0.0709181 0.0289768 -0.0930427 +v 0.0709181 -0.0289768 -0.0930427 +v 0.0709181 0.0289768 -0.0930427 +v 0.0709181 -0.0289768 0.0930427 +v 0.0709181 0.0289768 0.0930427 +v -0.0709181 -0.0289768 0.0930427 +v -0.0709181 0.0289768 0.0930427 +v -0.0572859 -0.0508196 -0.093145 +v -0.0572859 0.0508196 -0.093145 +v 0.0572859 -0.0508196 -0.093145 +v 0.0572859 0.0508196 -0.093145 +v 0.0572859 -0.0508196 0.093145 +v 0.0572859 0.0508196 0.093145 +v -0.0572859 -0.0508196 0.093145 +v -0.0572859 0.0508196 0.093145 +v -0.00936133 -0.0759968 -0.0931701 +v -0.00936133 0.0759968 -0.0931701 +v 0.00936133 -0.0759968 -0.0931701 +v 0.00936133 0.0759968 -0.0931701 +v 0.00936133 -0.0759968 0.0931701 +v 0.00936133 0.0759968 0.0931701 +v -0.00936133 -0.0759968 0.0931701 +v -0.00936133 0.0759968 0.0931701 +v -0.0194689 -0.0740447 -0.0932022 +v -0.0194689 0.0740447 -0.0932022 +v 0.0194689 -0.0740447 -0.0932022 +v 0.0194689 0.0740447 -0.0932022 +v 0.0194689 -0.0740447 0.0932022 +v 0.0194689 0.0740447 0.0932022 +v -0.0194689 -0.0740447 0.0932022 +v -0.0194689 0.0740447 0.0932022 +v -0.0439013 -0.0626721 -0.0933428 +v -0.0439013 0.0626721 -0.0933428 +v 0.0439013 -0.0626721 -0.0933428 +v 0.0439013 0.0626721 -0.0933428 +v 0.0439013 -0.0626721 0.0933428 +v 0.0439013 0.0626721 0.0933428 +v -0.0439013 -0.0626721 0.0933428 +v -0.0439013 0.0626721 0.0933428 +v -0.0718465 -0.0263271 -0.0933444 +v -0.0718465 0.0263271 -0.0933444 +v 0.0718465 -0.0263271 -0.0933444 +v 0.0718465 0.0263271 -0.0933444 +v 0.0718465 -0.0263271 0.0933444 +v 0.0718465 0.0263271 0.0933444 +v -0.0718465 -0.0263271 0.0933444 +v -0.0718465 0.0263271 0.0933444 +v -0.0299011 -0.0704285 -0.0933613 +v -0.0299011 0.0704285 -0.0933613 +v 0.0299011 -0.0704285 -0.0933613 +v 0.0299011 0.0704285 -0.0933613 +v 0.0299011 -0.0704285 0.0933613 +v 0.0299011 0.0704285 0.0933613 +v -0.0299011 -0.0704285 0.0933613 +v -0.0299011 0.0704285 0.0933613 +v -0.0642013 -0.0416192 -0.0933674 +v -0.0642013 0.0416192 -0.0933674 +v 0.0642013 -0.0416192 -0.0933674 +v 0.0642013 0.0416192 -0.0933674 +v 0.0642013 -0.0416192 0.0933674 +v 0.0642013 0.0416192 0.0933674 +v -0.0642013 -0.0416192 0.0933674 +v -0.0642013 0.0416192 0.0933674 +v -0.0146556 -0.0750675 -0.0934538 +v -0.0146556 0.0750675 -0.0934538 +v 0.0146556 -0.0750675 -0.0934538 +v 0.0146556 0.0750675 -0.0934538 +v 0.0146556 -0.0750675 0.0934538 +v 0.0146556 0.0750675 0.0934538 +v -0.0146556 -0.0750675 0.0934538 +v -0.0146556 0.0750675 0.0934538 +v -0.00854701 -0.0759968 -0.0934827 +v -0.00854701 0.0759968 -0.0934827 +v 0.00854701 -0.0759968 -0.0934827 +v 0.00854701 0.0759968 -0.0934827 +v 0.00854701 -0.0759968 0.0934827 +v 0.00854701 0.0759968 0.0934827 +v -0.00854701 -0.0759968 0.0934827 +v -0.00854701 0.0759968 0.0934827 +v -0.0530278 -0.0550513 -0.0936095 +v -0.0530278 0.0550513 -0.0936095 +v 0.0530278 -0.0550513 -0.0936095 +v 0.0530278 0.0550513 -0.0936095 +v 0.0530278 -0.0550513 0.0936095 +v 0.0530278 0.0550513 0.0936095 +v -0.0530278 -0.0550513 0.0936095 +v -0.0530278 0.0550513 0.0936095 +v -0.0726854 -0.0236447 -0.0936169 +v -0.0726854 0.0236447 -0.0936169 +v 0.0726854 -0.0236447 -0.0936169 +v 0.0726854 0.0236447 -0.0936169 +v 0.0726854 -0.0236447 0.0936169 +v 0.0726854 0.0236447 0.0936169 +v -0.0726854 -0.0236447 0.0936169 +v -0.0726854 0.0236447 0.0936169 +v -0.0228421 -0.0729297 -0.0936537 +v -0.0228421 0.0729297 -0.0936537 +v 0.0228421 -0.0729297 -0.0936537 +v 0.0228421 0.0729297 -0.0936537 +v 0.0228421 -0.0729297 0.0936537 +v 0.0228421 0.0729297 0.0936537 +v -0.0228421 -0.0729297 0.0936537 +v -0.0228421 0.0729297 0.0936537 +v -0.0485513 -0.0590087 -0.0936801 +v -0.0485513 0.0590087 -0.0936801 +v 0.0485513 -0.0590087 -0.0936801 +v 0.0485513 0.0590087 -0.0936801 +v 0.0485513 -0.0590087 0.0936801 +v 0.0485513 0.0590087 0.0936801 +v -0.0485513 -0.0590087 0.0936801 +v -0.0485513 0.0590087 0.0936801 +v -0.026334 -0.0717238 -0.0937112 +v -0.026334 0.0717238 -0.0937112 +v 0.026334 -0.0717238 -0.0937112 +v 0.026334 0.0717238 -0.0937112 +v 0.026334 -0.0717238 0.0937112 +v 0.026334 0.0717238 0.0937112 +v -0.026334 -0.0717238 0.0937112 +v -0.026334 0.0717238 0.0937112 +v -0.0411176 -0.0643878 -0.0937393 +v -0.0411176 0.0643878 -0.0937393 +v 0.0411176 -0.0643878 -0.0937393 +v 0.0411176 0.0643878 -0.0937393 +v 0.0411176 -0.0643878 0.0937393 +v 0.0411176 0.0643878 0.0937393 +v -0.0411176 -0.0643878 0.0937393 +v -0.0411176 0.0643878 0.0937393 +v -0.0326899 -0.0690455 -0.0937506 +v -0.0326899 0.0690455 -0.0937506 +v 0.0326899 -0.0690455 -0.0937506 +v 0.0326899 0.0690455 -0.0937506 +v 0.0326899 -0.0690455 0.0937506 +v 0.0326899 0.0690455 0.0937506 +v -0.0326899 -0.0690455 0.0937506 +v -0.0326899 0.0690455 0.0937506 +v -0.00772227 -0.0759968 -0.0937667 +v -0.00772227 0.0759968 -0.0937667 +v 0.00772227 -0.0759968 -0.0937667 +v 0.00772227 0.0759968 -0.0937667 +v 0.00772227 -0.0759968 0.0937667 +v 0.00772227 0.0759968 0.0937667 +v -0.00772227 -0.0759968 0.0937667 +v -0.00772227 0.0759968 0.0937667 +v -0.0589131 -0.0486075 -0.0938024 +v -0.0589131 0.0486075 -0.0938024 +v 0.0589131 -0.0486075 -0.0938024 +v 0.0589131 0.0486075 -0.0938024 +v 0.0589131 -0.0486075 0.0938024 +v 0.0589131 0.0486075 0.0938024 +v -0.0589131 -0.0486075 0.0938024 +v -0.0589131 0.0486075 0.0938024 +v -0.0655416 -0.0391821 -0.0938552 +v -0.0655416 0.0391821 -0.0938552 +v 0.0655416 -0.0391821 -0.0938552 +v 0.0655416 0.0391821 -0.0938552 +v 0.0655416 -0.0391821 0.0938552 +v 0.0655416 0.0391821 0.0938552 +v -0.0655416 -0.0391821 0.0938552 +v -0.0655416 0.0391821 0.0938552 +v -0.0734338 -0.0209327 -0.0938601 +v -0.0734338 0.0209327 -0.0938601 +v 0.0734338 -0.0209327 -0.0938601 +v 0.0734338 0.0209327 -0.0938601 +v 0.0734338 -0.0209327 0.0938601 +v 0.0734338 0.0209327 0.0938601 +v -0.0734338 -0.0209327 0.0938601 +v -0.0734338 0.0209327 0.0938601 +v -0.0186473 -0.0740447 -0.0938675 +v -0.0186473 0.0740447 -0.0938675 +v 0.0186473 -0.0740447 -0.0938675 +v 0.0186473 0.0740447 -0.0938675 +v 0.0186473 -0.0740447 0.0938675 +v 0.0186473 0.0740447 0.0938675 +v -0.0186473 -0.0740447 0.0938675 +v -0.0186473 0.0740447 0.0938675 +v -0.038312 -0.0660233 -0.09394 +v -0.038312 0.0660233 -0.09394 +v 0.038312 -0.0660233 -0.09394 +v 0.038312 0.0660233 -0.09394 +v 0.038312 -0.0660233 0.09394 +v 0.038312 0.0660233 0.09394 +v -0.038312 -0.0660233 0.09394 +v -0.038312 0.0660233 0.09394 +v -0.0354981 -0.0675765 -0.0939438 +v -0.0354981 0.0675765 -0.0939438 +v 0.0354981 -0.0675765 -0.0939438 +v 0.0354981 0.0675765 -0.0939438 +v 0.0354981 -0.0675765 0.0939438 +v 0.0354981 0.0675765 0.0939438 +v -0.0354981 -0.0675765 0.0939438 +v -0.0354981 0.0675765 0.0939438 +v -0.0138281 -0.0750675 -0.093951 +v -0.0138281 0.0750675 -0.093951 +v 0.0138281 -0.0750675 -0.093951 +v 0.0138281 0.0750675 -0.093951 +v 0.0138281 -0.0750675 0.093951 +v 0.0138281 0.0750675 0.093951 +v -0.0138281 -0.0750675 0.093951 +v -0.0138281 0.0750675 0.093951 +v -0.00688812 -0.0759968 -0.0940217 +v -0.00688812 0.0759968 -0.0940217 +v 0.00688812 -0.0759968 -0.0940217 +v 0.00688812 0.0759968 -0.0940217 +v 0.00688812 -0.0759968 0.0940217 +v 0.00688812 0.0759968 0.0940217 +v -0.00688812 -0.0759968 0.0940217 +v -0.00688812 0.0759968 0.0940217 +v -0.0740906 -0.0181947 -0.0940735 +v -0.0740906 0.0181947 -0.0940735 +v 0.0740906 -0.0181947 -0.0940735 +v 0.0740906 0.0181947 -0.0940735 +v 0.0740906 -0.0181947 0.0940735 +v 0.0740906 0.0181947 0.0940735 +v -0.0740906 -0.0181947 0.0940735 +v -0.0740906 0.0181947 0.0940735 +v -0.00604557 -0.0759968 -0.0942475 +v -0.00604557 0.0759968 -0.0942475 +v 0.00604557 -0.0759968 -0.0942475 +v 0.00604557 0.0759968 -0.0942475 +v 0.00604557 -0.0759968 0.0942475 +v 0.00604557 0.0759968 0.0942475 +v -0.00604557 -0.0759968 0.0942475 +v -0.00604557 0.0759968 0.0942475 +v -0.0746551 -0.0154341 -0.0942569 +v -0.0746551 0.0154341 -0.0942569 +v 0.0746551 -0.0154341 -0.0942569 +v 0.0746551 0.0154341 -0.0942569 +v 0.0746551 -0.0154341 0.0942569 +v 0.0746551 0.0154341 0.0942569 +v -0.0746551 -0.0154341 0.0942569 +v -0.0746551 0.0154341 0.0942569 +v -0.0668001 -0.0366961 -0.0943133 +v -0.0668001 0.0366961 -0.0943133 +v 0.0668001 -0.0366961 -0.0943133 +v 0.0668001 0.0366961 -0.0943133 +v 0.0668001 -0.0366961 0.0943133 +v 0.0668001 0.0366961 0.0943133 +v -0.0668001 -0.0366961 0.0943133 +v -0.0668001 0.0366961 0.0943133 +v -0.0458269 -0.0608783 -0.0943666 +v -0.0458269 0.0608783 -0.0943666 +v 0.0458269 -0.0608783 -0.0943666 +v 0.0458269 0.0608783 -0.0943666 +v 0.0458269 -0.0608783 0.0943666 +v 0.0458269 0.0608783 0.0943666 +v -0.0458269 -0.0608783 0.0943666 +v -0.0458269 0.0608783 0.0943666 +v -0.0547696 -0.0529685 -0.094385 +v -0.0547696 0.0529685 -0.094385 +v 0.0547696 -0.0529685 -0.094385 +v 0.0547696 0.0529685 -0.094385 +v 0.0547696 -0.0529685 0.094385 +v 0.0547696 0.0529685 0.094385 +v -0.0547696 -0.0529685 0.094385 +v -0.0547696 0.0529685 0.094385 +v -0.0290676 -0.0704285 -0.0943906 +v -0.0290676 0.0704285 -0.0943906 +v 0.0290676 -0.0704285 -0.0943906 +v 0.0290676 0.0704285 -0.0943906 +v 0.0290676 -0.0704285 0.0943906 +v 0.0290676 0.0704285 0.0943906 +v -0.0290676 -0.0704285 0.0943906 +v -0.0290676 0.0704285 0.0943906 +v -0.0751267 -0.0126542 -0.0944101 +v -0.0751267 0.0126542 -0.0944101 +v 0.0751267 -0.0126542 -0.0944101 +v 0.0751267 0.0126542 -0.0944101 +v 0.0751267 -0.0126542 0.0944101 +v 0.0751267 0.0126542 0.0944101 +v -0.0751267 -0.0126542 0.0944101 +v -0.0751267 0.0126542 0.0944101 +v -0.0129838 -0.0750675 -0.094419 +v -0.0129838 0.0750675 -0.094419 +v 0.0129838 -0.0750675 -0.094419 +v 0.0129838 0.0750675 -0.094419 +v 0.0129838 -0.0750675 0.094419 +v 0.0129838 0.0750675 0.094419 +v -0.0129838 -0.0750675 0.094419 +v -0.0129838 0.0750675 0.094419 +v -0.0604669 -0.0463348 -0.0944302 +v -0.0604669 0.0463348 -0.0944302 +v 0.0604669 -0.0463348 -0.0944302 +v 0.0604669 0.0463348 -0.0944302 +v 0.0604669 -0.0463348 0.0944302 +v 0.0604669 0.0463348 0.0944302 +v -0.0604669 -0.0463348 0.0944302 +v -0.0604669 0.0463348 0.0944302 +v -0.0220027 -0.0729297 -0.0944365 +v -0.0220027 0.0729297 -0.0944365 +v 0.0220027 -0.0729297 -0.0944365 +v 0.0220027 0.0729297 -0.0944365 +v 0.0220027 -0.0729297 0.0944365 +v 0.0220027 0.0729297 0.0944365 +v -0.0220027 -0.0729297 0.0944365 +v -0.0220027 0.0729297 0.0944365 +v -0.00519567 -0.0759968 -0.0944437 +v -0.00519567 0.0759968 -0.0944437 +v 0.00519567 -0.0759968 -0.0944437 +v 0.00519567 0.0759968 -0.0944437 +v 0.00519567 -0.0759968 0.0944437 +v 0.00519567 0.0759968 0.0944437 +v -0.00519567 -0.0759968 0.0944437 +v -0.00519567 0.0759968 0.0944437 +v -0.017803 -0.0740447 -0.0945037 +v -0.017803 0.0740447 -0.0945037 +v 0.017803 -0.0740447 -0.0945037 +v 0.017803 0.0740447 -0.0945037 +v 0.017803 -0.0740447 0.0945037 +v 0.017803 0.0740447 0.0945037 +v -0.017803 -0.0740447 0.0945037 +v -0.017803 0.0740447 0.0945037 +v -0.0755046 -0.00985854 -0.0945329 +v -0.0755046 0.00985854 -0.0945329 +v 0.0755046 -0.00985854 -0.0945329 +v 0.0755046 0.00985854 -0.0945329 +v 0.0755046 -0.00985854 0.0945329 +v 0.0755046 0.00985854 0.0945329 +v -0.0755046 -0.00985854 0.0945329 +v -0.0755046 0.00985854 0.0945329 +v -0.0503928 -0.0570655 -0.0945782 +v -0.0503928 0.0570655 -0.0945782 +v 0.0503928 -0.0570655 -0.0945782 +v 0.0503928 0.0570655 -0.0945782 +v 0.0503928 -0.0570655 0.0945782 +v 0.0503928 0.0570655 0.0945782 +v -0.0503928 -0.0570655 0.0945782 +v -0.0503928 0.0570655 0.0945782 +v -0.00433943 -0.0759968 -0.0946101 +v -0.00433943 0.0759968 -0.0946101 +v 0.00433943 -0.0759968 -0.0946101 +v 0.00433943 0.0759968 -0.0946101 +v 0.00433943 -0.0759968 0.0946101 +v 0.00433943 0.0759968 0.0946101 +v -0.00433943 -0.0759968 0.0946101 +v -0.00433943 0.0759968 0.0946101 +v -0.0254904 -0.0717238 -0.0946158 +v -0.0254904 0.0717238 -0.0946158 +v 0.0254904 -0.0717238 -0.0946158 +v 0.0254904 0.0717238 -0.0946158 +v 0.0254904 -0.0717238 0.0946158 +v 0.0254904 0.0717238 0.0946158 +v -0.0254904 -0.0717238 0.0946158 +v -0.0254904 0.0717238 0.0946158 +v -0.0757885 -0.0070506 -0.0946252 +v -0.0757885 0.0070506 -0.0946252 +v 0.0757885 -0.0070506 -0.0946252 +v 0.0757885 0.0070506 -0.0946252 +v 0.0757885 -0.0070506 0.0946252 +v 0.0757885 0.0070506 0.0946252 +v -0.0757885 -0.0070506 0.0946252 +v -0.0757885 0.0070506 0.0946252 +v -0.0759779 -0.00423388 -0.0946867 +v -0.0759779 0.00423388 -0.0946867 +v 0.0759779 -0.00423388 -0.0946867 +v 0.0759779 0.00423388 -0.0946867 +v 0.0759779 -0.00423388 0.0946867 +v 0.0759779 0.00423388 0.0946867 +v -0.0759779 -0.00423388 0.0946867 +v -0.0759779 0.00423388 0.0946867 +v -0.0760727 -0.00141188 -0.0947175 +v -0.0760727 0.00141188 -0.0947175 +v 0.0760727 -0.00141188 -0.0947175 +v 0.0760727 0.00141188 -0.0947175 +v 0.0760727 -0.00141188 0.0947175 +v 0.0760727 0.00141188 0.0947175 +v -0.0760727 -0.00141188 0.0947175 +v -0.0760727 0.00141188 0.0947175 +v -0.0679755 -0.0341645 -0.0947411 +v -0.0679755 0.0341645 -0.0947411 +v 0.0679755 -0.0341645 -0.0947411 +v 0.0679755 0.0341645 -0.0947411 +v 0.0679755 -0.0341645 0.0947411 +v 0.0679755 0.0341645 0.0947411 +v -0.0679755 -0.0341645 0.0947411 +v -0.0679755 0.0341645 0.0947411 +v -0.0034779 -0.0759968 -0.0947466 +v -0.0034779 0.0759968 -0.0947466 +v 0.0034779 -0.0759968 -0.0947466 +v 0.0034779 0.0759968 -0.0947466 +v 0.0034779 -0.0759968 0.0947466 +v 0.0034779 0.0759968 0.0947466 +v -0.0034779 -0.0759968 0.0947466 +v -0.0034779 0.0759968 0.0947466 +v -0.00261214 -0.0759968 -0.0948529 +v -0.00261214 0.0759968 -0.0948529 +v 0.00261214 -0.0759968 -0.0948529 +v 0.00261214 0.0759968 -0.0948529 +v 0.00261214 -0.0759968 0.0948529 +v 0.00261214 0.0759968 0.0948529 +v -0.00261214 -0.0759968 0.0948529 +v -0.00261214 0.0759968 0.0948529 +v -0.0121237 -0.0750675 -0.0948573 +v -0.0121237 0.0750675 -0.0948573 +v 0.0121237 -0.0750675 -0.0948573 +v 0.0121237 0.0750675 -0.0948573 +v 0.0121237 -0.0750675 0.0948573 +v 0.0121237 0.0750675 0.0948573 +v -0.0121237 -0.0750675 0.0948573 +v -0.0121237 0.0750675 0.0948573 +v -0.0430599 -0.0626721 -0.0948607 +v -0.0430599 0.0626721 -0.0948607 +v 0.0430599 -0.0626721 -0.0948607 +v 0.0430599 0.0626721 -0.0948607 +v 0.0430599 -0.0626721 0.0948607 +v 0.0430599 0.0626721 0.0948607 +v -0.0430599 -0.0626721 0.0948607 +v -0.0430599 0.0626721 0.0948607 +v -0.0318411 -0.0690455 -0.094877 +v -0.0318411 0.0690455 -0.094877 +v 0.0318411 -0.0690455 -0.094877 +v 0.0318411 0.0690455 -0.094877 +v 0.0318411 -0.0690455 0.094877 +v 0.0318411 0.0690455 0.094877 +v -0.0318411 -0.0690455 0.094877 +v -0.0318411 0.0690455 0.094877 +v -0.0017432 -0.0759968 -0.0949289 +v -0.0017432 0.0759968 -0.0949289 +v 0.0017432 -0.0759968 -0.0949289 +v 0.0017432 0.0759968 -0.0949289 +v 0.0017432 -0.0759968 0.0949289 +v 0.0017432 0.0759968 0.0949289 +v -0.0017432 -0.0759968 0.0949289 +v -0.0017432 0.0759968 0.0949289 +v -0.000872131 -0.0759968 -0.0949745 +v -0.000872131 0.0759968 -0.0949745 +v 0.000872131 -0.0759968 -0.0949745 +v 0.000872131 0.0759968 -0.0949745 +v 0.000872131 -0.0759968 0.0949745 +v 0.000872131 0.0759968 0.0949745 +v -0.000872131 -0.0759968 0.0949745 +v -0.000872131 0.0759968 0.0949745 +v -4.59055e-18 -0.0759968 -0.0949898 +v -4.59055e-18 0.0759968 -0.0949898 +v 1.53018e-18 -0.0759968 0.0949898 +v 1.53018e-18 0.0759968 0.0949898 +v -0.0619454 -0.0440044 -0.0950276 +v -0.0619454 0.0440044 -0.0950276 +v 0.0619454 -0.0440044 -0.0950276 +v 0.0619454 0.0440044 -0.0950276 +v 0.0619454 -0.0440044 0.0950276 +v 0.0619454 0.0440044 0.0950276 +v -0.0619454 -0.0440044 0.0950276 +v -0.0619454 0.0440044 0.0950276 +v -0.016937 -0.0740447 -0.0951101 +v -0.016937 0.0740447 -0.0951101 +v 0.016937 -0.0740447 -0.0951101 +v 0.016937 0.0740447 -0.0951101 +v 0.016937 -0.0740447 0.0951101 +v 0.016937 0.0740447 0.0951101 +v -0.016937 -0.0740447 0.0951101 +v -0.016937 0.0740447 0.0951101 +v -0.0564432 -0.0508196 -0.0951301 +v -0.0564432 0.0508196 -0.0951301 +v 0.0564432 -0.0508196 -0.0951301 +v 0.0564432 0.0508196 -0.0951301 +v 0.0564432 -0.0508196 0.0951301 +v 0.0564432 0.0508196 0.0951301 +v -0.0564432 -0.0508196 0.0951301 +v -0.0564432 0.0508196 0.0951301 +v -0.0690661 -0.0315903 -0.095138 +v -0.0690661 0.0315903 -0.095138 +v 0.0690661 -0.0315903 -0.095138 +v 0.0690661 0.0315903 -0.095138 +v 0.0690661 -0.0315903 0.095138 +v 0.0690661 0.0315903 0.095138 +v -0.0690661 -0.0315903 0.095138 +v -0.0690661 0.0315903 0.095138 +v -0.0402641 -0.0643878 -0.0951598 +v -0.0402641 0.0643878 -0.0951598 +v 0.0402641 -0.0643878 -0.0951598 +v 0.0402641 0.0643878 -0.0951598 +v 0.0402641 -0.0643878 0.0951598 +v 0.0402641 0.0643878 0.0951598 +v -0.0402641 -0.0643878 0.0951598 +v -0.0402641 0.0643878 0.0951598 +v -0.0346409 -0.0675765 -0.0951681 +v -0.0346409 0.0675765 -0.0951681 +v 0.0346409 -0.0675765 -0.0951681 +v 0.0346409 0.0675765 -0.0951681 +v 0.0346409 -0.0675765 0.0951681 +v 0.0346409 0.0675765 0.0951681 +v -0.0346409 -0.0675765 0.0951681 +v -0.0346409 0.0675765 0.0951681 +v -0.0211365 -0.0729297 -0.0951895 +v -0.0211365 0.0729297 -0.0951895 +v 0.0211365 -0.0729297 -0.0951895 +v 0.0211365 0.0729297 -0.0951895 +v 0.0211365 -0.0729297 0.0951895 +v 0.0211365 0.0729297 0.0951895 +v -0.0211365 -0.0729297 0.0951895 +v -0.0211365 0.0729297 0.0951895 +v -0.0374531 -0.0660233 -0.0952625 +v -0.0374531 0.0660233 -0.0952625 +v 0.0374531 -0.0660233 -0.0952625 +v 0.0374531 0.0660233 -0.0952625 +v 0.0374531 -0.0660233 0.0952625 +v 0.0374531 0.0660233 0.0952625 +v -0.0374531 -0.0660233 0.0952625 +v -0.0374531 0.0660233 0.0952625 +v -0.0112488 -0.0750675 -0.0952652 +v -0.0112488 0.0750675 -0.0952652 +v 0.0112488 -0.0750675 -0.0952652 +v 0.0112488 0.0750675 -0.0952652 +v 0.0112488 -0.0750675 0.0952652 +v 0.0112488 0.0750675 0.0952652 +v -0.0112488 -0.0750675 0.0952652 +v -0.0112488 0.0750675 0.0952652 +v -0.0476953 -0.0590087 -0.0953601 +v -0.0476953 0.0590087 -0.0953601 +v 0.0476953 -0.0590087 -0.0953601 +v 0.0476953 0.0590087 -0.0953601 +v 0.0476953 -0.0590087 0.0953601 +v 0.0476953 0.0590087 0.0953601 +v -0.0476953 -0.0590087 0.0953601 +v -0.0476953 0.0590087 0.0953601 +v -0.0281986 -0.0704285 -0.0953902 +v -0.0281986 0.0704285 -0.0953902 +v 0.0281986 -0.0704285 -0.0953902 +v 0.0281986 0.0704285 -0.0953902 +v 0.0281986 -0.0704285 0.0953902 +v 0.0281986 0.0704285 0.0953902 +v -0.0281986 -0.0704285 0.0953902 +v -0.0281986 0.0704285 0.0953902 +v -0.0521715 -0.0550513 -0.0954458 +v -0.0521715 0.0550513 -0.0954458 +v 0.0521715 -0.0550513 -0.0954458 +v 0.0521715 0.0550513 -0.0954458 +v 0.0521715 -0.0550513 0.0954458 +v 0.0521715 0.0550513 0.0954458 +v -0.0521715 -0.0550513 0.0954458 +v -0.0521715 0.0550513 0.0954458 +v -0.0246158 -0.0717238 -0.0954904 +v -0.0246158 0.0717238 -0.0954904 +v 0.0246158 -0.0717238 -0.0954904 +v 0.0246158 0.0717238 -0.0954904 +v 0.0246158 -0.0717238 0.0954904 +v 0.0246158 0.0717238 0.0954904 +v -0.0246158 -0.0717238 0.0954904 +v -0.0246158 0.0717238 0.0954904 +v -0.0700708 -0.0289768 -0.0955037 +v -0.0700708 0.0289768 -0.0955037 +v 0.0700708 -0.0289768 -0.0955037 +v 0.0700708 0.0289768 -0.0955037 +v 0.0700708 -0.0289768 0.0955037 +v 0.0700708 0.0289768 0.0955037 +v -0.0700708 -0.0289768 0.0955037 +v -0.0700708 0.0289768 0.0955037 +v -0.0633467 -0.0416192 -0.0955937 +v -0.0633467 0.0416192 -0.0955937 +v 0.0633467 -0.0416192 -0.0955937 +v 0.0633467 0.0416192 -0.0955937 +v 0.0633467 -0.0416192 0.0955937 +v 0.0633467 0.0416192 0.0955937 +v -0.0633467 -0.0416192 0.0955937 +v -0.0633467 0.0416192 0.0955937 +v -0.0103602 -0.0750675 -0.0956424 +v -0.0103602 0.0750675 -0.0956424 +v 0.0103602 -0.0750675 -0.0956424 +v 0.0103602 0.0750675 -0.0956424 +v 0.0103602 -0.0750675 0.0956424 +v 0.0103602 0.0750675 0.0956424 +v -0.0103602 -0.0750675 0.0956424 +v -0.0103602 0.0750675 0.0956424 +v -0.0160503 -0.0740447 -0.0956859 +v -0.0160503 0.0740447 -0.0956859 +v 0.0160503 -0.0740447 -0.0956859 +v 0.0160503 0.0740447 -0.0956859 +v 0.0160503 -0.0740447 0.0956859 +v 0.0160503 0.0740447 0.0956859 +v -0.0160503 -0.0740447 0.0956859 +v -0.0160503 0.0740447 0.0956859 +v -0.0709881 -0.0263271 -0.0958375 +v -0.0709881 0.0263271 -0.0958375 +v 0.0709881 -0.0263271 -0.0958375 +v 0.0709881 0.0263271 -0.0958375 +v 0.0709881 -0.0263271 0.0958375 +v 0.0709881 0.0263271 0.0958375 +v -0.0709881 -0.0263271 0.0958375 +v -0.0709881 0.0263271 0.0958375 +v -0.0580465 -0.0486075 -0.095844 +v -0.0580465 0.0486075 -0.095844 +v 0.0580465 -0.0486075 -0.095844 +v 0.0580465 0.0486075 -0.095844 +v 0.0580465 -0.0486075 0.095844 +v 0.0580465 0.0486075 0.095844 +v -0.0580465 -0.0486075 0.095844 +v -0.0580465 0.0486075 0.095844 +v -0.0202445 -0.0729297 -0.0959118 +v -0.0202445 0.0729297 -0.0959118 +v 0.0202445 -0.0729297 -0.0959118 +v 0.0202445 0.0729297 -0.0959118 +v 0.0202445 -0.0729297 0.0959118 +v 0.0202445 0.0729297 0.0959118 +v -0.0202445 -0.0729297 0.0959118 +v -0.0202445 0.0729297 0.0959118 +v -0.0449486 -0.0608783 -0.0959511 +v -0.0449486 0.0608783 -0.0959511 +v 0.0449486 -0.0608783 -0.0959511 +v 0.0449486 0.0608783 -0.0959511 +v 0.0449486 -0.0608783 0.0959511 +v 0.0449486 0.0608783 0.0959511 +v -0.0449486 -0.0608783 0.0959511 +v -0.0449486 0.0608783 0.0959511 +v -0.0309535 -0.0690455 -0.0959731 +v -0.0309535 0.0690455 -0.0959731 +v 0.0309535 -0.0690455 -0.0959731 +v 0.0309535 0.0690455 -0.0959731 +v 0.0309535 -0.0690455 0.0959731 +v 0.0309535 0.0690455 0.0959731 +v -0.0309535 -0.0690455 0.0959731 +v -0.0309535 0.0690455 0.0959731 +v -0.00945899 -0.0750675 -0.0959884 +v -0.00945899 0.0750675 -0.0959884 +v 0.00945899 -0.0750675 -0.0959884 +v 0.00945899 0.0750675 -0.0959884 +v 0.00945899 -0.0750675 0.0959884 +v 0.00945899 0.0750675 0.0959884 +v -0.00945899 -0.0750675 0.0959884 +v -0.00945899 0.0750675 0.0959884 +v -0.0646691 -0.0391821 -0.096128 +v -0.0646691 0.0391821 -0.096128 +v 0.0646691 -0.0391821 -0.096128 +v 0.0646691 0.0391821 -0.096128 +v 0.0646691 -0.0391821 0.096128 +v 0.0646691 0.0391821 0.096128 +v -0.0646691 -0.0391821 0.096128 +v -0.0646691 0.0391821 0.096128 +v -0.0718169 -0.0236447 -0.0961392 +v -0.0718169 0.0236447 -0.0961392 +v 0.0718169 -0.0236447 -0.0961392 +v 0.0718169 0.0236447 -0.0961392 +v 0.0718169 -0.0236447 0.0961392 +v 0.0718169 0.0236447 0.0961392 +v -0.0718169 -0.0236447 0.0961392 +v -0.0718169 0.0236447 0.0961392 +v -0.0151441 -0.0740447 -0.0962304 +v -0.0151441 0.0740447 -0.0962304 +v 0.0151441 -0.0740447 -0.0962304 +v 0.0151441 0.0740447 -0.0962304 +v 0.0151441 -0.0740447 0.0962304 +v 0.0151441 0.0740447 0.0962304 +v -0.0151441 -0.0740447 0.0962304 +v -0.0151441 0.0740447 0.0962304 +v -0.0538852 -0.0529685 -0.0962816 +v -0.0538852 0.0529685 -0.0962816 +v 0.0538852 -0.0529685 -0.0962816 +v 0.0538852 0.0529685 -0.0962816 +v 0.0538852 -0.0529685 0.0962816 +v 0.0538852 0.0529685 0.0962816 +v -0.0538852 -0.0529685 0.0962816 +v -0.0538852 0.0529685 0.0962816 +v -0.00854625 -0.0750675 -0.0963027 +v -0.00854625 0.0750675 -0.0963027 +v 0.00854625 -0.0750675 -0.0963027 +v 0.00854625 0.0750675 -0.0963027 +v 0.00854625 -0.0750675 0.0963027 +v 0.00854625 0.0750675 0.0963027 +v -0.00854625 -0.0750675 0.0963027 +v -0.00854625 0.0750675 0.0963027 +v -0.0495044 -0.0570655 -0.0963219 +v -0.0495044 0.0570655 -0.0963219 +v 0.0495044 -0.0570655 -0.0963219 +v 0.0495044 0.0570655 -0.0963219 +v 0.0495044 -0.0570655 0.0963219 +v 0.0495044 0.0570655 0.0963219 +v -0.0495044 -0.0570655 0.0963219 +v -0.0495044 0.0570655 0.0963219 +v -0.0237112 -0.0717238 -0.096334 +v -0.0237112 0.0717238 -0.096334 +v 0.0237112 -0.0717238 -0.096334 +v 0.0237112 0.0717238 -0.096334 +v 0.0237112 -0.0717238 0.096334 +v 0.0237112 0.0717238 0.096334 +v -0.0237112 -0.0717238 0.096334 +v -0.0237112 0.0717238 0.096334 +v -0.0421661 -0.0626721 -0.0963483 +v -0.0421661 0.0626721 -0.0963483 +v 0.0421661 -0.0626721 -0.0963483 +v 0.0421661 0.0626721 -0.0963483 +v 0.0421661 -0.0626721 0.0963483 +v 0.0421661 0.0626721 0.0963483 +v -0.0421661 -0.0626721 0.0963483 +v -0.0421661 0.0626721 0.0963483 +v -0.0272954 -0.0704285 -0.0963588 +v -0.0272954 0.0704285 -0.0963588 +v 0.0272954 -0.0704285 -0.0963588 +v 0.0272954 0.0704285 -0.0963588 +v 0.0272954 -0.0704285 0.0963588 +v 0.0272954 0.0704285 0.0963588 +v -0.0272954 -0.0704285 0.0963588 +v -0.0272954 0.0704285 0.0963588 +v -0.0337414 -0.0675765 -0.0963617 +v -0.0337414 0.0675765 -0.0963617 +v 0.0337414 -0.0675765 -0.0963617 +v 0.0337414 0.0675765 -0.0963617 +v 0.0337414 -0.0675765 0.0963617 +v 0.0337414 0.0675765 0.0963617 +v -0.0337414 -0.0675765 0.0963617 +v -0.0337414 0.0675765 0.0963617 +v -0.0725563 -0.0209327 -0.0964083 +v -0.0725563 0.0209327 -0.0964083 +v 0.0725563 -0.0209327 -0.0964083 +v 0.0725563 0.0209327 -0.0964083 +v 0.0725563 -0.0209327 0.0964083 +v 0.0725563 0.0209327 0.0964083 +v -0.0725563 -0.0209327 0.0964083 +v -0.0725563 0.0209327 0.0964083 +v -0.0595775 -0.0463348 -0.0965256 +v -0.0595775 0.0463348 -0.0965256 +v 0.0595775 -0.0463348 -0.0965256 +v 0.0595775 0.0463348 -0.0965256 +v 0.0595775 -0.0463348 0.0965256 +v 0.0595775 0.0463348 0.0965256 +v -0.0595775 -0.0463348 0.0965256 +v -0.0595775 0.0463348 0.0965256 +v -0.0393615 -0.0643878 -0.0965497 +v -0.0393615 0.0643878 -0.0965497 +v 0.0393615 -0.0643878 -0.0965497 +v 0.0393615 0.0643878 -0.0965497 +v 0.0393615 -0.0643878 0.0965497 +v 0.0393615 0.0643878 0.0965497 +v -0.0393615 -0.0643878 0.0965497 +v -0.0393615 0.0643878 0.0965497 +v -0.0365487 -0.0660233 -0.0965542 +v -0.0365487 0.0660233 -0.0965542 +v 0.0365487 -0.0660233 -0.0965542 +v 0.0365487 0.0660233 -0.0965542 +v 0.0365487 -0.0660233 0.0965542 +v 0.0365487 0.0660233 0.0965542 +v -0.0365487 -0.0660233 0.0965542 +v -0.0365487 0.0660233 0.0965542 +v -0.00762309 -0.0750675 -0.0965849 +v -0.00762309 0.0750675 -0.0965849 +v 0.00762309 -0.0750675 -0.0965849 +v 0.00762309 0.0750675 -0.0965849 +v 0.00762309 -0.0750675 0.0965849 +v 0.00762309 0.0750675 0.0965849 +v -0.00762309 -0.0750675 0.0965849 +v -0.00762309 0.0750675 0.0965849 +v -0.0193279 -0.0729297 -0.0966025 +v -0.0193279 0.0729297 -0.0966025 +v 0.0193279 -0.0729297 -0.0966025 +v 0.0193279 0.0729297 -0.0966025 +v 0.0193279 -0.0729297 0.0966025 +v 0.0193279 0.0729297 0.0966025 +v -0.0193279 -0.0729297 0.0966025 +v -0.0193279 0.0729297 0.0966025 +v -0.0659109 -0.0366961 -0.0966297 +v -0.0659109 0.0366961 -0.0966297 +v 0.0659109 -0.0366961 -0.0966297 +v 0.0659109 0.0366961 -0.0966297 +v 0.0659109 -0.0366961 0.0966297 +v 0.0659109 0.0366961 0.0966297 +v -0.0659109 -0.0366961 0.0966297 +v -0.0659109 0.0366961 0.0966297 +v -0.0732053 -0.0181947 -0.0966446 +v -0.0732053 0.0181947 -0.0966446 +v 0.0732053 -0.0181947 -0.0966446 +v 0.0732053 0.0181947 -0.0966446 +v 0.0732053 -0.0181947 0.0966446 +v 0.0732053 0.0181947 0.0966446 +v -0.0732053 -0.0181947 0.0966446 +v -0.0732053 0.0181947 0.0966446 +v -0.0142195 -0.0740447 -0.0967429 +v -0.0142195 0.0740447 -0.0967429 +v 0.0142195 -0.0740447 -0.0967429 +v 0.0142195 0.0740447 -0.0967429 +v 0.0142195 -0.0740447 0.0967429 +v 0.0142195 0.0740447 0.0967429 +v -0.0142195 -0.0740447 0.0967429 +v -0.0142195 0.0740447 0.0967429 +v -0.00669065 -0.0750675 -0.0968347 +v -0.00669065 0.0750675 -0.0968347 +v 0.00669065 -0.0750675 -0.0968347 +v 0.00669065 0.0750675 -0.0968347 +v 0.00669065 -0.0750675 0.0968347 +v 0.00669065 0.0750675 0.0968347 +v -0.00669065 -0.0750675 0.0968347 +v -0.00669065 0.0750675 0.0968347 +v -0.0737631 -0.0154341 -0.0968476 +v -0.0737631 0.0154341 -0.0968476 +v 0.0737631 -0.0154341 -0.0968476 +v 0.0737631 0.0154341 -0.0968476 +v 0.0737631 -0.0154341 0.0968476 +v 0.0737631 0.0154341 0.0968476 +v -0.0737631 -0.0154341 0.0968476 +v -0.0737631 0.0154341 0.0968476 +v -0.0467812 -0.0590087 -0.0970091 +v -0.0467812 0.0590087 -0.0970091 +v 0.0467812 -0.0590087 -0.0970091 +v 0.0467812 0.0590087 -0.0970091 +v 0.0467812 -0.0590087 0.0970091 +v 0.0467812 0.0590087 0.0970091 +v -0.0467812 -0.0590087 0.0970091 +v -0.0467812 0.0590087 0.0970091 +v -0.074229 -0.0126542 -0.0970171 +v -0.074229 0.0126542 -0.0970171 +v 0.074229 -0.0126542 -0.0970171 +v 0.074229 0.0126542 -0.0970171 +v 0.074229 -0.0126542 0.0970171 +v 0.074229 0.0126542 0.0970171 +v -0.074229 -0.0126542 0.0970171 +v -0.074229 0.0126542 0.0970171 +v -0.0300282 -0.0690455 -0.0970375 +v -0.0300282 0.0690455 -0.0970375 +v 0.0300282 -0.0690455 -0.0970375 +v 0.0300282 0.0690455 -0.0970375 +v 0.0300282 -0.0690455 0.0970375 +v 0.0300282 0.0690455 0.0970375 +v -0.0300282 -0.0690455 0.0970375 +v -0.0300282 0.0690455 0.0970375 +v -0.00575006 -0.0750675 -0.0970519 +v -0.00575006 0.0750675 -0.0970519 +v 0.00575006 -0.0750675 -0.0970519 +v 0.00575006 0.0750675 -0.0970519 +v 0.00575006 -0.0750675 0.0970519 +v 0.00575006 0.0750675 0.0970519 +v -0.00575006 -0.0750675 0.0970519 +v -0.00575006 0.0750675 0.0970519 +v -0.0555318 -0.0508196 -0.0970847 +v -0.0555318 0.0508196 -0.0970847 +v 0.0555318 -0.0508196 -0.0970847 +v 0.0555318 0.0508196 -0.0970847 +v 0.0555318 -0.0508196 0.0970847 +v 0.0555318 0.0508196 0.0970847 +v -0.0555318 -0.0508196 0.0970847 +v -0.0555318 0.0508196 0.0970847 +v -0.0670706 -0.0341645 -0.0970983 +v -0.0670706 0.0341645 -0.0970983 +v 0.0670706 -0.0341645 -0.0970983 +v 0.0670706 0.0341645 -0.0970983 +v 0.0670706 -0.0341645 0.0970983 +v 0.0670706 0.0341645 0.0970983 +v -0.0670706 -0.0341645 0.0970983 +v -0.0670706 0.0341645 0.0970983 +v -0.0227777 -0.0717238 -0.0971454 +v -0.0227777 0.0717238 -0.0971454 +v 0.0227777 -0.0717238 -0.0971454 +v 0.0227777 0.0717238 -0.0971454 +v 0.0227777 -0.0717238 0.0971454 +v 0.0227777 0.0717238 0.0971454 +v -0.0227777 -0.0717238 0.0971454 +v -0.0227777 0.0717238 0.0971454 +v -0.0746024 -0.00985854 -0.0971531 +v -0.0746024 0.00985854 -0.0971531 +v 0.0746024 -0.00985854 -0.0971531 +v 0.0746024 0.00985854 -0.0971531 +v 0.0746024 -0.00985854 0.0971531 +v 0.0746024 0.00985854 0.0971531 +v -0.0746024 -0.00985854 0.0971531 +v -0.0746024 0.00985854 0.0971531 +v -0.0610342 -0.0440044 -0.0971742 +v -0.0610342 0.0440044 -0.0971742 +v 0.0610342 -0.0440044 -0.0971742 +v 0.0610342 0.0440044 -0.0971742 +v 0.0610342 -0.0440044 0.0971742 +v 0.0610342 0.0440044 0.0971742 +v -0.0610342 -0.0440044 0.0971742 +v -0.0610342 0.0440044 0.0971742 +v -0.0132775 -0.0740447 -0.0972229 +v -0.0132775 0.0740447 -0.0972229 +v 0.0132775 -0.0740447 -0.0972229 +v 0.0132775 0.0740447 -0.0972229 +v 0.0132775 -0.0740447 0.0972229 +v 0.0132775 0.0740447 0.0972229 +v -0.0132775 -0.0740447 0.0972229 +v -0.0132775 0.0740447 0.0972229 +v -0.00480246 -0.0750675 -0.0972361 +v -0.00480246 0.0750675 -0.0972361 +v 0.00480246 -0.0750675 -0.0972361 +v 0.00480246 0.0750675 -0.0972361 +v 0.00480246 -0.0750675 0.0972361 +v 0.00480246 0.0750675 0.0972361 +v -0.00480246 -0.0750675 0.0972361 +v -0.00480246 0.0750675 0.0972361 +v -0.0512517 -0.0550513 -0.097251 +v -0.0512517 0.0550513 -0.097251 +v 0.0512517 -0.0550513 -0.097251 +v 0.0512517 0.0550513 -0.097251 +v 0.0512517 -0.0550513 0.097251 +v 0.0512517 0.0550513 0.097251 +v -0.0512517 -0.0550513 0.097251 +v -0.0512517 0.0550513 0.097251 +v -0.0748829 -0.0070506 -0.0972551 +v -0.0748829 0.0070506 -0.0972551 +v 0.0748829 -0.0070506 -0.0972551 +v 0.0748829 0.0070506 -0.0972551 +v 0.0748829 -0.0070506 0.0972551 +v 0.0748829 0.0070506 0.0972551 +v -0.0748829 -0.0070506 0.0972551 +v -0.0748829 0.0070506 0.0972551 +v -0.0183877 -0.0729297 -0.0972609 +v -0.0183877 0.0729297 -0.0972609 +v 0.0183877 -0.0729297 -0.0972609 +v 0.0183877 0.0729297 -0.0972609 +v 0.0183877 -0.0729297 0.0972609 +v 0.0183877 0.0729297 0.0972609 +v -0.0183877 -0.0729297 0.0972609 +v -0.0183877 0.0729297 0.0972609 +v -0.0263588 -0.0704285 -0.0972954 +v -0.0263588 0.0704285 -0.0972954 +v 0.0263588 -0.0704285 -0.0972954 +v 0.0263588 0.0704285 -0.0972954 +v 0.0263588 -0.0704285 0.0972954 +v 0.0263588 0.0704285 0.0972954 +v -0.0263588 -0.0704285 0.0972954 +v -0.0263588 0.0704285 0.0972954 +v -0.0750701 -0.00423388 -0.0973233 +v -0.0750701 0.00423388 -0.0973233 +v 0.0750701 -0.00423388 -0.0973233 +v 0.0750701 0.00423388 -0.0973233 +v 0.0750701 -0.00423388 0.0973233 +v 0.0750701 0.00423388 0.0973233 +v -0.0750701 -0.00423388 0.0973233 +v -0.0750701 0.00423388 0.0973233 +v -0.0751637 -0.00141188 -0.0973573 +v -0.0751637 0.00141188 -0.0973573 +v 0.0751637 -0.00141188 -0.0973573 +v 0.0751637 0.00141188 -0.0973573 +v 0.0751637 -0.00141188 0.0973573 +v 0.0751637 0.00141188 0.0973573 +v -0.0751637 -0.00141188 0.0973573 +v -0.0751637 0.00141188 0.0973573 +v -0.00384901 -0.0750675 -0.0973871 +v -0.00384901 0.0750675 -0.0973871 +v 0.00384901 -0.0750675 -0.0973871 +v 0.00384901 0.0750675 -0.0973871 +v 0.00384901 -0.0750675 0.0973871 +v 0.00384901 0.0750675 0.0973871 +v -0.00384901 -0.0750675 0.0973871 +v -0.00384901 0.0750675 0.0973871 +v -0.0440155 -0.0608783 -0.0975039 +v -0.0440155 0.0608783 -0.0975039 +v 0.0440155 -0.0608783 -0.0975039 +v 0.0440155 0.0608783 -0.0975039 +v 0.0440155 -0.0608783 0.0975039 +v 0.0440155 0.0608783 0.0975039 +v -0.0440155 -0.0608783 0.0975039 +v -0.0440155 0.0608783 0.0975039 +v -0.00289086 -0.0750675 -0.0975047 +v -0.00289086 0.0750675 -0.0975047 +v 0.00289086 -0.0750675 -0.0975047 +v 0.00289086 0.0750675 -0.0975047 +v 0.00289086 -0.0750675 0.0975047 +v 0.00289086 0.0750675 0.0975047 +v -0.00289086 -0.0750675 0.0975047 +v -0.00289086 0.0750675 0.0975047 +v -0.0328008 -0.0675765 -0.0975232 +v -0.0328008 0.0675765 -0.0975232 +v 0.0328008 -0.0675765 -0.0975232 +v 0.0328008 0.0675765 -0.0975232 +v 0.0328008 -0.0675765 0.0975232 +v 0.0328008 0.0675765 0.0975232 +v -0.0328008 -0.0675765 0.0975232 +v -0.0328008 0.0675765 0.0975232 +v -0.0681468 -0.0315903 -0.0975331 +v -0.0681468 0.0315903 -0.0975331 +v 0.0681468 -0.0315903 -0.0975331 +v 0.0681468 0.0315903 -0.0975331 +v 0.0681468 -0.0315903 0.0975331 +v 0.0681468 0.0315903 0.0975331 +v -0.0681468 -0.0315903 0.0975331 +v -0.0681468 0.0315903 0.0975331 +v -0.0019292 -0.0750675 -0.0975889 +v -0.0019292 0.0750675 -0.0975889 +v 0.0019292 -0.0750675 -0.0975889 +v 0.0019292 0.0750675 -0.0975889 +v 0.0019292 -0.0750675 0.0975889 +v 0.0019292 0.0750675 0.0975889 +v -0.0019292 -0.0750675 0.0975889 +v -0.0019292 0.0750675 0.0975889 +v -0.000965189 -0.0750675 -0.0976394 +v -0.000965189 0.0750675 -0.0976394 +v 0.000965189 -0.0750675 -0.0976394 +v 0.000965189 0.0750675 -0.0976394 +v 0.000965189 -0.0750675 0.0976394 +v 0.000965189 0.0750675 0.0976394 +v -0.000965189 -0.0750675 0.0976394 +v -0.000965189 0.0750675 0.0976394 +v -5.08037e-18 -0.0750675 -0.0976562 +v -5.08037e-18 0.0750675 -0.0976562 +v 1.69346e-18 -0.0750675 0.0976562 +v 1.69346e-18 0.0750675 0.0976562 +v -0.0123193 -0.0740447 -0.0976697 +v -0.0123193 0.0740447 -0.0976697 +v 0.0123193 -0.0740447 -0.0976697 +v 0.0123193 0.0740447 -0.0976697 +v 0.0123193 -0.0740447 0.0976697 +v 0.0123193 0.0740447 0.0976697 +v -0.0123193 -0.0740447 0.0976697 +v -0.0123193 0.0740447 0.0976697 +v -0.0624149 -0.0416192 -0.0977889 +v -0.0624149 0.0416192 -0.0977889 +v 0.0624149 -0.0416192 -0.0977889 +v 0.0624149 0.0416192 -0.0977889 +v 0.0624149 -0.0416192 0.0977889 +v 0.0624149 0.0416192 0.0977889 +v -0.0624149 -0.0416192 0.0977889 +v -0.0624149 0.0416192 0.0977889 +v -0.0412208 -0.0626721 -0.0978038 +v -0.0412208 0.0626721 -0.0978038 +v 0.0412208 -0.0626721 -0.0978038 +v 0.0412208 0.0626721 -0.0978038 +v 0.0412208 -0.0626721 0.0978038 +v 0.0412208 0.0626721 0.0978038 +v -0.0412208 -0.0626721 0.0978038 +v -0.0412208 0.0626721 0.0978038 +v -0.0355997 -0.0660233 -0.0978135 +v -0.0355997 0.0660233 -0.0978135 +v 0.0355997 -0.0660233 -0.0978135 +v 0.0355997 0.0660233 -0.0978135 +v 0.0355997 -0.0660233 0.0978135 +v 0.0355997 0.0660233 0.0978135 +v -0.0355997 -0.0660233 0.0978135 +v -0.0355997 0.0660233 0.0978135 +v -0.0571092 -0.0486075 -0.097854 +v -0.0571092 0.0486075 -0.097854 +v 0.0571092 -0.0486075 -0.097854 +v 0.0571092 0.0486075 -0.097854 +v 0.0571092 -0.0486075 0.097854 +v 0.0571092 0.0486075 0.097854 +v -0.0571092 -0.0486075 0.097854 +v -0.0571092 0.0486075 0.097854 +v -0.0174251 -0.0729297 -0.097886 +v -0.0174251 0.0729297 -0.097886 +v 0.0174251 -0.0729297 -0.097886 +v 0.0174251 0.0729297 -0.097886 +v 0.0174251 -0.0729297 0.097886 +v 0.0174251 0.0729297 0.097886 +v -0.0174251 -0.0729297 0.097886 +v -0.0174251 0.0729297 0.097886 +v -0.038411 -0.0643878 -0.0979072 +v -0.038411 0.0643878 -0.0979072 +v 0.038411 -0.0643878 -0.0979072 +v 0.038411 0.0643878 -0.0979072 +v 0.038411 -0.0643878 0.0979072 +v 0.038411 0.0643878 0.0979072 +v -0.038411 -0.0643878 0.0979072 +v -0.038411 0.0643878 0.0979072 +v -0.0218165 -0.0717238 -0.0979238 +v -0.0218165 0.0717238 -0.0979238 +v 0.0218165 -0.0717238 -0.0979238 +v 0.0218165 0.0717238 -0.0979238 +v 0.0218165 -0.0717238 0.0979238 +v 0.0218165 0.0717238 0.0979238 +v -0.0218165 -0.0717238 0.0979238 +v -0.0218165 0.0717238 0.0979238 +v -0.069138 -0.0289768 -0.0979336 +v -0.069138 0.0289768 -0.0979336 +v 0.069138 -0.0289768 -0.0979336 +v 0.069138 0.0289768 -0.0979336 +v 0.069138 -0.0289768 0.0979336 +v 0.069138 0.0289768 0.0979336 +v -0.069138 -0.0289768 0.0979336 +v -0.069138 0.0289768 0.0979336 +v -0.0485556 -0.0570655 -0.0980336 +v -0.0485556 0.0570655 -0.0980336 +v 0.0485556 -0.0570655 -0.0980336 +v 0.0485556 0.0570655 -0.0980336 +v 0.0485556 -0.0570655 0.0980336 +v 0.0485556 0.0570655 0.0980336 +v -0.0485556 -0.0570655 0.0980336 +v -0.0485556 0.0570655 0.0980336 +v -0.0290663 -0.0690455 -0.098069 +v -0.0290663 0.0690455 -0.098069 +v 0.0290663 -0.0690455 -0.098069 +v 0.0290663 0.0690455 -0.098069 +v 0.0290663 -0.0690455 0.098069 +v 0.0290663 0.0690455 0.098069 +v -0.0290663 -0.0690455 0.098069 +v -0.0290663 0.0690455 0.098069 +v -0.0113462 -0.0740447 -0.0980828 +v -0.0113462 0.0740447 -0.0980828 +v 0.0113462 -0.0740447 -0.0980828 +v 0.0113462 0.0740447 -0.0980828 +v 0.0113462 -0.0740447 0.0980828 +v 0.0113462 0.0740447 0.0980828 +v -0.0113462 -0.0740447 0.0980828 +v -0.0113462 0.0740447 0.0980828 +v -0.0529352 -0.0529685 -0.0981461 +v -0.0529352 0.0529685 -0.0981461 +v 0.0529352 -0.0529685 -0.0981461 +v 0.0529352 0.0529685 -0.0981461 +v 0.0529352 -0.0529685 0.0981461 +v 0.0529352 0.0529685 0.0981461 +v -0.0529352 -0.0529685 0.0981461 +v -0.0529352 0.0529685 0.0981461 +v -0.0253902 -0.0704285 -0.0981986 +v -0.0253902 0.0704285 -0.0981986 +v 0.0253902 -0.0704285 -0.0981986 +v 0.0253902 0.0704285 -0.0981986 +v 0.0253902 -0.0704285 0.0981986 +v 0.0253902 0.0704285 0.0981986 +v -0.0253902 -0.0704285 0.0981986 +v -0.0253902 0.0704285 0.0981986 +v -0.0700431 -0.0263271 -0.0982993 +v -0.0700431 0.0263271 -0.0982993 +v 0.0700431 -0.0263271 -0.0982993 +v 0.0700431 0.0263271 -0.0982993 +v 0.0700431 -0.0263271 0.0982993 +v 0.0700431 0.0263271 0.0982993 +v -0.0700431 -0.0263271 0.0982993 +v -0.0700431 0.0263271 0.0982993 +v -0.0637179 -0.0391821 -0.098369 +v -0.0637179 0.0391821 -0.098369 +v 0.0637179 -0.0391821 -0.098369 +v 0.0637179 0.0391821 -0.098369 +v 0.0637179 -0.0391821 0.098369 +v 0.0637179 0.0391821 0.098369 +v -0.0637179 -0.0391821 0.098369 +v -0.0637179 0.0391821 0.098369 +v -0.0103592 -0.0740447 -0.0984617 +v -0.0103592 0.0740447 -0.0984617 +v 0.0103592 -0.0740447 -0.0984617 +v 0.0103592 0.0740447 -0.0984617 +v 0.0103592 -0.0740447 0.0984617 +v 0.0103592 0.0740447 0.0984617 +v -0.0103592 -0.0740447 0.0984617 +v -0.0103592 0.0740447 0.0984617 +v -0.0164413 -0.0729297 -0.0984771 +v -0.0164413 0.0729297 -0.0984771 +v 0.0164413 -0.0729297 -0.0984771 +v 0.0164413 0.0729297 -0.0984771 +v 0.0164413 -0.0729297 0.0984771 +v 0.0164413 0.0729297 0.0984771 +v -0.0164413 -0.0729297 0.0984771 +v -0.0164413 0.0729297 0.0984771 +v -0.0586155 -0.0463348 -0.0985887 +v -0.0586155 0.0463348 -0.0985887 +v 0.0586155 -0.0463348 -0.0985887 +v 0.0586155 0.0463348 -0.0985887 +v 0.0586155 -0.0463348 0.0985887 +v 0.0586155 0.0463348 0.0985887 +v -0.0586155 -0.0463348 0.0985887 +v -0.0586155 0.0463348 0.0985887 +v -0.0458101 -0.0590087 -0.0986253 +v -0.0458101 0.0590087 -0.0986253 +v 0.0458101 -0.0590087 -0.0986253 +v 0.0458101 0.0590087 -0.0986253 +v 0.0458101 -0.0590087 0.0986253 +v 0.0458101 0.0590087 0.0986253 +v -0.0458101 -0.0590087 0.0986253 +v -0.0458101 0.0590087 0.0986253 +v -0.0708609 -0.0236447 -0.0986297 +v -0.0708609 0.0236447 -0.0986297 +v 0.0708609 -0.0236447 -0.0986297 +v 0.0708609 0.0236447 -0.0986297 +v 0.0708609 -0.0236447 0.0986297 +v 0.0708609 0.0236447 0.0986297 +v -0.0708609 -0.0236447 0.0986297 +v -0.0708609 0.0236447 0.0986297 +v -0.0318203 -0.0675765 -0.0986511 +v -0.0318203 0.0675765 -0.0986511 +v 0.0318203 -0.0675765 -0.0986511 +v 0.0318203 0.0675765 -0.0986511 +v 0.0318203 -0.0675765 0.0986511 +v 0.0318203 0.0675765 0.0986511 +v -0.0318203 -0.0675765 0.0986511 +v -0.0318203 0.0675765 0.0986511 +v -0.0208287 -0.0717238 -0.0986682 +v -0.0208287 0.0717238 -0.0986682 +v 0.0208287 -0.0717238 -0.0986682 +v 0.0208287 0.0717238 -0.0986682 +v 0.0208287 -0.0717238 0.0986682 +v 0.0208287 0.0717238 0.0986682 +v -0.0208287 -0.0717238 0.0986682 +v -0.0208287 0.0717238 0.0986682 +v -0.00935959 -0.0740447 -0.0988058 +v -0.00935959 0.0740447 -0.0988058 +v 0.00935959 -0.0740447 -0.0988058 +v 0.00935959 0.0740447 -0.0988058 +v 0.00935959 -0.0740447 0.0988058 +v 0.00935959 0.0740447 0.0988058 +v -0.00935959 -0.0740447 0.0988058 +v -0.00935959 0.0740447 0.0988058 +v -0.0649414 -0.0366961 -0.0989138 +v -0.0649414 0.0366961 -0.0989138 +v 0.0649414 -0.0366961 -0.0989138 +v 0.0649414 0.0366961 -0.0989138 +v 0.0649414 -0.0366961 0.0989138 +v 0.0649414 0.0366961 0.0989138 +v -0.0649414 -0.0366961 0.0989138 +v -0.0649414 0.0366961 0.0989138 +v -0.0715905 -0.0209327 -0.0989244 +v -0.0715905 0.0209327 -0.0989244 +v 0.0715905 -0.0209327 -0.0989244 +v 0.0715905 0.0209327 -0.0989244 +v 0.0715905 -0.0209327 0.0989244 +v 0.0715905 0.0209327 0.0989244 +v -0.0715905 -0.0209327 0.0989244 +v -0.0715905 0.0209327 0.0989244 +v -0.0545528 -0.0508196 -0.0990062 +v -0.0545528 0.0508196 -0.0990062 +v 0.0545528 -0.0508196 -0.0990062 +v 0.0545528 0.0508196 -0.0990062 +v 0.0545528 -0.0508196 0.0990062 +v 0.0545528 0.0508196 0.0990062 +v -0.0545528 -0.0508196 0.0990062 +v -0.0545528 0.0508196 0.0990062 +v -0.0502694 -0.0550513 -0.0990231 +v -0.0502694 0.0550513 -0.0990231 +v 0.0502694 -0.0550513 -0.0990231 +v 0.0502694 0.0550513 -0.0990231 +v 0.0502694 -0.0550513 0.0990231 +v 0.0502694 0.0550513 0.0990231 +v -0.0502694 -0.0550513 0.0990231 +v -0.0502694 0.0550513 0.0990231 +v -0.0430288 -0.0608783 -0.0990233 +v -0.0430288 0.0608783 -0.0990233 +v 0.0430288 -0.0608783 -0.0990233 +v 0.0430288 0.0608783 -0.0990233 +v 0.0430288 -0.0608783 0.0990233 +v 0.0430288 0.0608783 0.0990233 +v -0.0430288 -0.0608783 0.0990233 +v -0.0430288 0.0608783 0.0990233 +v -0.0154374 -0.0729297 -0.0990336 +v -0.0154374 0.0729297 -0.0990336 +v 0.0154374 -0.0729297 -0.0990336 +v 0.0154374 0.0729297 -0.0990336 +v 0.0154374 -0.0729297 0.0990336 +v 0.0154374 0.0729297 0.0990336 +v -0.0154374 -0.0729297 0.0990336 +v -0.0154374 0.0729297 0.0990336 +v -0.0346073 -0.0660233 -0.099039 +v -0.0346073 0.0660233 -0.099039 +v 0.0346073 -0.0660233 -0.099039 +v 0.0346073 0.0660233 -0.099039 +v 0.0346073 -0.0660233 0.099039 +v 0.0346073 0.0660233 0.099039 +v -0.0346073 -0.0660233 0.099039 +v -0.0346073 0.0660233 0.099039 +v -0.028069 -0.0690455 -0.0990663 +v -0.028069 0.0690455 -0.0990663 +v 0.028069 -0.0690455 -0.0990663 +v 0.028069 0.0690455 -0.0990663 +v 0.028069 -0.0690455 0.0990663 +v 0.028069 0.0690455 0.0990663 +v -0.028069 -0.0690455 0.0990663 +v -0.028069 0.0690455 0.0990663 +v -0.0243906 -0.0704285 -0.0990676 +v -0.0243906 0.0704285 -0.0990676 +v 0.0243906 -0.0704285 -0.0990676 +v 0.0243906 0.0704285 -0.0990676 +v 0.0243906 -0.0704285 0.0990676 +v 0.0243906 0.0704285 0.0990676 +v -0.0243906 -0.0704285 0.0990676 +v -0.0243906 0.0704285 0.0990676 +v -0.00834858 -0.0740447 -0.0991149 +v -0.00834858 0.0740447 -0.0991149 +v 0.00834858 -0.0740447 -0.0991149 +v 0.00834858 0.0740447 -0.0991149 +v 0.00834858 -0.0740447 0.0991149 +v 0.00834858 0.0740447 0.0991149 +v -0.00834858 -0.0740447 0.0991149 +v -0.00834858 0.0740447 0.0991149 +v -0.0722308 -0.0181947 -0.0991832 +v -0.0722308 0.0181947 -0.0991832 +v 0.0722308 -0.0181947 -0.0991832 +v 0.0722308 0.0181947 -0.0991832 +v 0.0722308 -0.0181947 0.0991832 +v 0.0722308 0.0181947 0.0991832 +v -0.0722308 -0.0181947 0.0991832 +v -0.0722308 0.0181947 0.0991832 +v -0.0402254 -0.0626721 -0.0992255 +v -0.0402254 0.0626721 -0.0992255 +v 0.0402254 -0.0626721 -0.0992255 +v 0.0402254 0.0626721 -0.0992255 +v 0.0402254 -0.0626721 0.0992255 +v 0.0402254 0.0626721 0.0992255 +v -0.0402254 -0.0626721 0.0992255 +v -0.0402254 0.0626721 0.0992255 +v -0.0374136 -0.0643878 -0.0992307 +v -0.0374136 0.0643878 -0.0992307 +v 0.0374136 -0.0643878 -0.0992307 +v 0.0374136 0.0643878 -0.0992307 +v 0.0374136 -0.0643878 0.0992307 +v 0.0374136 0.0643878 0.0992307 +v -0.0374136 -0.0643878 0.0992307 +v -0.0374136 0.0643878 0.0992307 +v -0.0600487 -0.0440044 -0.0992877 +v -0.0600487 0.0440044 -0.0992877 +v 0.0600487 -0.0440044 -0.0992877 +v 0.0600487 0.0440044 -0.0992877 +v 0.0600487 -0.0440044 0.0992877 +v 0.0600487 0.0440044 0.0992877 +v -0.0600487 -0.0440044 0.0992877 +v -0.0600487 0.0440044 0.0992877 +v -0.0198155 -0.0717238 -0.0993777 +v -0.0198155 0.0717238 -0.0993777 +v 0.0198155 -0.0717238 -0.0993777 +v 0.0198155 0.0717238 -0.0993777 +v 0.0198155 -0.0717238 0.0993777 +v 0.0198155 0.0717238 0.0993777 +v -0.0198155 -0.0717238 0.0993777 +v -0.0198155 0.0717238 0.0993777 +v -0.00732739 -0.0740447 -0.0993886 +v -0.00732739 0.0740447 -0.0993886 +v 0.00732739 -0.0740447 -0.0993886 +v 0.00732739 0.0740447 -0.0993886 +v 0.00732739 -0.0740447 0.0993886 +v 0.00732739 0.0740447 0.0993886 +v -0.00732739 -0.0740447 0.0993886 +v -0.00732739 0.0740447 0.0993886 +v -0.0727812 -0.0154341 -0.0994055 +v -0.0727812 0.0154341 -0.0994055 +v 0.0727812 -0.0154341 -0.0994055 +v 0.0727812 0.0154341 -0.0994055 +v 0.0727812 -0.0154341 0.0994055 +v 0.0727812 0.0154341 0.0994055 +v -0.0727812 -0.0154341 0.0994055 +v -0.0727812 0.0154341 0.0994055 +v -0.066084 -0.0341645 -0.0994225 +v -0.066084 0.0341645 -0.0994225 +v 0.066084 -0.0341645 -0.0994225 +v 0.066084 0.0341645 -0.0994225 +v 0.066084 -0.0341645 0.0994225 +v 0.066084 0.0341645 0.0994225 +v -0.066084 -0.0341645 0.0994225 +v -0.066084 0.0341645 0.0994225 +v -0.0144148 -0.0729297 -0.0995546 +v -0.0144148 0.0729297 -0.0995546 +v 0.0144148 -0.0729297 -0.0995546 +v 0.0144148 0.0729297 -0.0995546 +v 0.0144148 -0.0729297 0.0995546 +v 0.0144148 0.0729297 0.0995546 +v -0.0144148 -0.0729297 0.0995546 +v -0.0144148 0.0729297 0.0995546 +v -0.0732409 -0.0126542 -0.0995912 +v -0.0732409 0.0126542 -0.0995912 +v 0.0732409 -0.0126542 -0.0995912 +v 0.0732409 0.0126542 -0.0995912 +v 0.0732409 -0.0126542 0.0995912 +v 0.0732409 0.0126542 0.0995912 +v -0.0732409 -0.0126542 0.0995912 +v -0.0732409 0.0126542 0.0995912 +v -0.00629728 -0.0740447 -0.0996264 +v -0.00629728 0.0740447 -0.0996264 +v 0.00629728 -0.0740447 -0.0996264 +v 0.00629728 0.0740447 -0.0996264 +v 0.00629728 -0.0740447 0.0996264 +v 0.00629728 0.0740447 0.0996264 +v -0.00629728 -0.0740447 0.0996264 +v -0.00629728 0.0740447 0.0996264 +v -0.0475476 -0.0570655 -0.0997111 +v -0.0475476 0.0570655 -0.0997111 +v 0.0475476 -0.0570655 -0.0997111 +v 0.0475476 0.0570655 -0.0997111 +v 0.0475476 -0.0570655 0.0997111 +v 0.0475476 0.0570655 0.0997111 +v -0.0475476 -0.0570655 0.0997111 +v -0.0475476 0.0570655 0.0997111 +v -0.0736093 -0.00985854 -0.0997401 +v -0.0736093 0.00985854 -0.0997401 +v 0.0736093 -0.00985854 -0.0997401 +v 0.0736093 0.00985854 -0.0997401 +v 0.0736093 -0.00985854 0.0997401 +v 0.0736093 0.00985854 0.0997401 +v -0.0736093 -0.00985854 0.0997401 +v -0.0736093 0.00985854 0.0997401 +v -0.030801 -0.0675765 -0.0997442 +v -0.030801 0.0675765 -0.0997442 +v 0.030801 -0.0675765 -0.0997442 +v 0.030801 0.0675765 -0.0997442 +v 0.030801 -0.0675765 0.0997442 +v 0.030801 0.0675765 0.0997442 +v -0.030801 -0.0675765 0.0997442 +v -0.030801 0.0675765 0.0997442 +v -0.0052595 -0.0740447 -0.0998281 +v -0.0052595 0.0740447 -0.0998281 +v 0.0052595 -0.0740447 -0.0998281 +v 0.0052595 0.0740447 -0.0998281 +v 0.0052595 -0.0740447 0.0998281 +v 0.0052595 0.0740447 0.0998281 +v -0.0052595 -0.0740447 0.0998281 +v -0.0052595 0.0740447 0.0998281 +v -0.0561023 -0.0486075 -0.0998301 +v -0.0561023 0.0486075 -0.0998301 +v 0.0561023 -0.0486075 -0.0998301 +v 0.0561023 0.0486075 -0.0998301 +v 0.0561023 -0.0486075 0.0998301 +v 0.0561023 0.0486075 0.0998301 +v -0.0561023 -0.0486075 0.0998301 +v -0.0561023 0.0486075 0.0998301 +v -0.0738861 -0.0070506 -0.0998519 +v -0.0738861 0.0070506 -0.0998519 +v 0.0738861 -0.0070506 -0.0998519 +v 0.0738861 0.0070506 -0.0998519 +v 0.0738861 -0.0070506 0.0998519 +v 0.0738861 0.0070506 0.0998519 +v -0.0738861 -0.0070506 0.0998519 +v -0.0738861 0.0070506 0.0998519 +v -0.0671444 -0.0315903 -0.0998946 +v -0.0671444 0.0315903 -0.0998946 +v 0.0671444 -0.0315903 -0.0998946 +v 0.0671444 0.0315903 -0.0998946 +v 0.0671444 -0.0315903 0.0998946 +v 0.0671444 0.0315903 0.0998946 +v -0.0671444 -0.0315903 0.0998946 +v -0.0671444 0.0315903 0.0998946 +v -0.0233613 -0.0704285 -0.0999011 +v -0.0233613 0.0704285 -0.0999011 +v 0.0233613 -0.0704285 -0.0999011 +v 0.0233613 0.0704285 -0.0999011 +v 0.0233613 -0.0704285 0.0999011 +v 0.0233613 0.0704285 0.0999011 +v -0.0233613 -0.0704285 0.0999011 +v -0.0233613 0.0704285 0.0999011 +v -0.0740708 -0.00423388 -0.0999265 +v -0.0740708 0.00423388 -0.0999265 +v 0.0740708 -0.00423388 -0.0999265 +v 0.0740708 0.00423388 -0.0999265 +v 0.0740708 -0.00423388 0.0999265 +v 0.0740708 0.00423388 0.0999265 +v -0.0740708 -0.00423388 0.0999265 +v -0.0740708 0.00423388 0.0999265 +v -0.0614071 -0.0416192 -0.0999502 +v -0.0614071 0.0416192 -0.0999502 +v 0.0614071 -0.0416192 -0.0999502 +v 0.0614071 0.0416192 -0.0999502 +v 0.0614071 -0.0416192 0.0999502 +v 0.0614071 0.0416192 0.0999502 +v -0.0614071 -0.0416192 0.0999502 +v -0.0614071 0.0416192 0.0999502 +v -0.0741632 -0.00141188 -0.0999639 +v -0.0741632 0.00141188 -0.0999639 +v 0.0741632 -0.00141188 -0.0999639 +v 0.0741632 0.00141188 -0.0999639 +v 0.0741632 -0.00141188 0.0999639 +v 0.0741632 0.00141188 0.0999639 +v -0.0741632 -0.00141188 0.0999639 +v -0.0741632 0.00141188 0.0999639 +v -0.0519207 -0.0529685 -0.0999764 +v -0.0519207 0.0529685 -0.0999764 +v 0.0519207 -0.0529685 -0.0999764 +v 0.0519207 0.0529685 -0.0999764 +v 0.0519207 -0.0529685 0.0999764 +v 0.0519207 0.0529685 0.0999764 +v -0.0519207 -0.0529685 0.0999764 +v -0.0519207 0.0529685 0.0999764 +v -0.00421531 -0.0740447 -0.0999935 +v -0.00421531 0.0740447 -0.0999935 +v 0.00421531 -0.0740447 -0.0999935 +v 0.00421531 0.0740447 -0.0999935 +v 0.00421531 -0.0740447 0.0999935 +v 0.00421531 0.0740447 0.0999935 +v -0.00421531 -0.0740447 0.0999935 +v -0.00421531 0.0740447 0.0999935 +v -0.0270375 -0.0690455 -0.100028 +v -0.0270375 0.0690455 -0.100028 +v 0.0270375 -0.0690455 -0.100028 +v 0.0270375 0.0690455 -0.100028 +v 0.0270375 -0.0690455 0.100028 +v 0.0270375 0.0690455 0.100028 +v -0.0270375 -0.0690455 0.100028 +v -0.0270375 0.0690455 0.100028 +v -0.0133745 -0.0729297 -0.10004 +v -0.0133745 0.0729297 -0.10004 +v 0.0133745 -0.0729297 -0.10004 +v 0.0133745 0.0729297 -0.10004 +v 0.0133745 -0.0729297 0.10004 +v 0.0133745 0.0729297 0.10004 +v -0.0133745 -0.0729297 0.10004 +v -0.0133745 0.0729297 0.10004 +v -0.0187781 -0.0717238 -0.100051 +v -0.0187781 0.0717238 -0.100051 +v 0.0187781 -0.0717238 -0.100051 +v 0.0187781 0.0717238 -0.100051 +v 0.0187781 -0.0717238 0.100051 +v 0.0187781 0.0717238 0.100051 +v -0.0187781 -0.0717238 0.100051 +v -0.0187781 0.0717238 0.100051 +v -0.00316599 -0.0740447 -0.100122 +v -0.00316599 0.0740447 -0.100122 +v 0.00316599 -0.0740447 -0.100122 +v 0.00316599 0.0740447 -0.100122 +v 0.00316599 -0.0740447 0.100122 +v 0.00316599 0.0740447 0.100122 +v -0.00316599 -0.0740447 0.100122 +v -0.00316599 0.0740447 0.100122 +v -0.0447832 -0.0590087 -0.100207 +v -0.0447832 0.0590087 -0.100207 +v 0.0447832 -0.0590087 -0.100207 +v 0.0447832 0.0590087 -0.100207 +v 0.0447832 -0.0590087 0.100207 +v 0.0447832 0.0590087 0.100207 +v -0.0447832 -0.0590087 0.100207 +v -0.0447832 0.0590087 0.100207 +v -0.0021128 -0.0740447 -0.100214 +v -0.0021128 0.0740447 -0.100214 +v 0.0021128 -0.0740447 -0.100214 +v 0.0021128 0.0740447 -0.100214 +v 0.0021128 -0.0740447 0.100214 +v 0.0021128 0.0740447 0.100214 +v -0.0021128 -0.0740447 0.100214 +v -0.0021128 0.0740447 0.100214 +v -0.0335728 -0.0660233 -0.100229 +v -0.0335728 0.0660233 -0.100229 +v 0.0335728 -0.0660233 -0.100229 +v 0.0335728 0.0660233 -0.100229 +v 0.0335728 -0.0660233 0.100229 +v 0.0335728 0.0660233 0.100229 +v -0.0335728 -0.0660233 0.100229 +v -0.0335728 0.0660233 0.100229 +v -0.00105704 -0.0740447 -0.10027 +v -0.00105704 0.0740447 -0.10027 +v 0.00105704 -0.0740447 -0.10027 +v 0.00105704 0.0740447 -0.10027 +v 0.00105704 -0.0740447 0.10027 +v 0.00105704 0.0740447 0.10027 +v -0.00105704 -0.0740447 0.10027 +v -0.00105704 0.0740447 0.10027 +v -5.56386e-18 -0.0740447 -0.100288 +v -5.56386e-18 0.0740447 -0.100288 +v 1.85462e-18 -0.0740447 0.100288 +v 1.85462e-18 0.0740447 0.100288 +v -0.068121 -0.0289768 -0.100329 +v -0.068121 0.0289768 -0.100329 +v 0.068121 -0.0289768 -0.100329 +v 0.068121 0.0289768 -0.100329 +v 0.068121 -0.0289768 0.100329 +v 0.068121 0.0289768 0.100329 +v -0.068121 -0.0289768 0.100329 +v -0.068121 0.0289768 0.100329 +v -0.012318 -0.0729297 -0.100488 +v -0.012318 0.0729297 -0.100488 +v 0.012318 -0.0729297 -0.100488 +v 0.012318 0.0729297 -0.100488 +v 0.012318 -0.0729297 0.100488 +v 0.012318 0.0729297 0.100488 +v -0.012318 -0.0729297 0.100488 +v -0.012318 0.0729297 0.100488 +v -0.0419897 -0.0608783 -0.100507 +v -0.0419897 0.0608783 -0.100507 +v 0.0419897 -0.0608783 -0.100507 +v 0.0419897 0.0608783 -0.100507 +v 0.0419897 -0.0608783 0.100507 +v 0.0419897 0.0608783 0.100507 +v -0.0419897 -0.0608783 0.100507 +v -0.0419897 0.0608783 0.100507 +v -0.0363707 -0.0643878 -0.100519 +v -0.0363707 0.0643878 -0.100519 +v 0.0363707 -0.0643878 -0.100519 +v 0.0363707 0.0643878 -0.100519 +v 0.0363707 -0.0643878 0.100519 +v 0.0363707 0.0643878 0.100519 +v -0.0363707 -0.0643878 0.100519 +v -0.0363707 0.0643878 0.100519 +v -0.062689 -0.0391821 -0.100575 +v -0.062689 0.0391821 -0.100575 +v 0.062689 -0.0391821 -0.100575 +v 0.062689 0.0391821 -0.100575 +v 0.062689 -0.0391821 0.100575 +v 0.062689 0.0391821 0.100575 +v -0.062689 -0.0391821 0.100575 +v -0.062689 0.0391821 0.100575 +v -0.0391809 -0.0626721 -0.100612 +v -0.0391809 0.0626721 -0.100612 +v 0.0391809 -0.0626721 -0.100612 +v 0.0391809 0.0626721 -0.100612 +v 0.0391809 -0.0626721 0.100612 +v 0.0391809 0.0626721 0.100612 +v -0.0391809 -0.0626721 0.100612 +v -0.0391809 0.0626721 0.100612 +v -0.057582 -0.0463348 -0.100617 +v -0.057582 0.0463348 -0.100617 +v 0.057582 -0.0463348 -0.100617 +v 0.057582 0.0463348 -0.100617 +v 0.057582 -0.0463348 0.100617 +v 0.057582 0.0463348 0.100617 +v -0.057582 -0.0463348 0.100617 +v -0.057582 0.0463348 0.100617 +v -0.0177179 -0.0717238 -0.100688 +v -0.0177179 0.0717238 -0.100688 +v 0.0177179 -0.0717238 -0.100688 +v 0.0177179 0.0717238 -0.100688 +v 0.0177179 -0.0717238 0.100688 +v 0.0177179 0.0717238 0.100688 +v -0.0177179 -0.0717238 0.100688 +v -0.0177179 0.0717238 0.100688 +v -0.0223035 -0.0704285 -0.100698 +v -0.0223035 0.0704285 -0.100698 +v 0.0223035 -0.0704285 -0.100698 +v 0.0223035 0.0704285 -0.100698 +v 0.0223035 -0.0704285 0.100698 +v 0.0223035 0.0704285 0.100698 +v -0.0223035 -0.0704285 0.100698 +v -0.0223035 0.0704285 0.100698 +v -0.0690128 -0.0263271 -0.100726 +v -0.0690128 0.0263271 -0.100726 +v 0.0690128 -0.0263271 -0.100726 +v 0.0690128 0.0263271 -0.100726 +v 0.0690128 -0.0263271 0.100726 +v 0.0690128 0.0263271 0.100726 +v -0.0690128 -0.0263271 0.100726 +v -0.0690128 0.0263271 0.100726 +v -0.0492259 -0.0550513 -0.10076 +v -0.0492259 0.0550513 -0.10076 +v 0.0492259 -0.0550513 -0.10076 +v 0.0492259 0.0550513 -0.10076 +v 0.0492259 -0.0550513 0.10076 +v 0.0492259 0.0550513 0.10076 +v -0.0492259 -0.0550513 0.10076 +v -0.0492259 0.0550513 0.10076 +v -0.0297442 -0.0675765 -0.100801 +v -0.0297442 0.0675765 -0.100801 +v 0.0297442 -0.0675765 -0.100801 +v 0.0297442 0.0675765 -0.100801 +v 0.0297442 -0.0675765 0.100801 +v 0.0297442 0.0675765 0.100801 +v -0.0297442 -0.0675765 0.100801 +v -0.0297442 0.0675765 0.100801 +v -0.0535072 -0.0508196 -0.100892 +v -0.0535072 0.0508196 -0.100892 +v 0.0535072 -0.0508196 -0.100892 +v 0.0535072 0.0508196 -0.100892 +v 0.0535072 -0.0508196 0.100892 +v 0.0535072 0.0508196 0.100892 +v -0.0535072 -0.0508196 0.100892 +v -0.0535072 0.0508196 0.100892 +v -0.0112465 -0.0729297 -0.100899 +v -0.0112465 0.0729297 -0.100899 +v 0.0112465 -0.0729297 -0.100899 +v 0.0112465 0.0729297 -0.100899 +v 0.0112465 -0.0729297 0.100899 +v 0.0112465 0.0729297 0.100899 +v -0.0112465 -0.0729297 0.100899 +v -0.0112465 0.0729297 0.100899 +v -0.0259731 -0.0690455 -0.100953 +v -0.0259731 0.0690455 -0.100953 +v 0.0259731 -0.0690455 -0.100953 +v 0.0259731 0.0690455 -0.100953 +v 0.0259731 -0.0690455 0.100953 +v 0.0259731 0.0690455 0.100953 +v -0.0259731 -0.0690455 0.100953 +v -0.0259731 0.0690455 0.100953 +v -0.0698186 -0.0236447 -0.101085 +v -0.0698186 0.0236447 -0.101085 +v 0.0698186 -0.0236447 -0.101085 +v 0.0698186 0.0236447 -0.101085 +v 0.0698186 -0.0236447 0.101085 +v 0.0698186 0.0236447 0.101085 +v -0.0698186 -0.0236447 0.101085 +v -0.0698186 0.0236447 0.101085 +v -0.0638928 -0.0366961 -0.101163 +v -0.0638928 0.0366961 -0.101163 +v 0.0638928 -0.0366961 -0.101163 +v 0.0638928 0.0366961 -0.101163 +v 0.0638928 -0.0366961 0.101163 +v 0.0638928 0.0366961 0.101163 +v -0.0638928 -0.0366961 0.101163 +v -0.0638928 0.0366961 0.101163 +v -0.0101613 -0.0729297 -0.101273 +v -0.0101613 0.0729297 -0.101273 +v 0.0101613 -0.0729297 -0.101273 +v 0.0101613 0.0729297 -0.101273 +v 0.0101613 -0.0729297 0.101273 +v 0.0101613 0.0729297 0.101273 +v -0.0101613 -0.0729297 0.101273 +v -0.0101613 0.0729297 0.101273 +v -0.0166361 -0.0717238 -0.101288 +v -0.0166361 0.0717238 -0.101288 +v 0.0166361 -0.0717238 -0.101288 +v 0.0166361 0.0717238 -0.101288 +v 0.0166361 -0.0717238 0.101288 +v 0.0166361 0.0717238 0.101288 +v -0.0166361 -0.0717238 0.101288 +v -0.0166361 0.0717238 0.101288 +v -0.0464818 -0.0570655 -0.101352 +v -0.0464818 0.0570655 -0.101352 +v 0.0464818 -0.0570655 -0.101352 +v 0.0464818 0.0570655 -0.101352 +v 0.0464818 -0.0570655 0.101352 +v 0.0464818 0.0570655 0.101352 +v -0.0464818 -0.0570655 0.101352 +v -0.0464818 0.0570655 0.101352 +v -0.05899 -0.0440044 -0.101366 +v -0.05899 0.0440044 -0.101366 +v 0.05899 -0.0440044 -0.101366 +v 0.05899 0.0440044 -0.101366 +v 0.05899 -0.0440044 0.101366 +v 0.05899 0.0440044 0.101366 +v -0.05899 -0.0440044 0.101366 +v -0.05899 0.0440044 0.101366 +v -0.0324974 -0.0660233 -0.101382 +v -0.0324974 0.0660233 -0.101382 +v 0.0324974 -0.0660233 -0.101382 +v 0.0324974 0.0660233 -0.101382 +v 0.0324974 -0.0660233 0.101382 +v 0.0324974 0.0660233 0.101382 +v -0.0324974 -0.0660233 0.101382 +v -0.0324974 0.0660233 0.101382 +v -0.0705374 -0.0209327 -0.101405 +v -0.0705374 0.0209327 -0.101405 +v 0.0705374 -0.0209327 -0.101405 +v 0.0705374 0.0209327 -0.101405 +v 0.0705374 -0.0209327 0.101405 +v 0.0705374 0.0209327 0.101405 +v -0.0705374 -0.0209327 0.101405 +v -0.0705374 0.0209327 0.101405 +v -0.0212186 -0.0704285 -0.101458 +v -0.0212186 0.0704285 -0.101458 +v 0.0212186 -0.0704285 -0.101458 +v 0.0212186 0.0704285 -0.101458 +v 0.0212186 -0.0704285 0.101458 +v 0.0212186 0.0704285 0.101458 +v -0.0212186 -0.0704285 0.101458 +v -0.0212186 0.0704285 0.101458 +v -0.00906366 -0.0729297 -0.101609 +v -0.00906366 0.0729297 -0.101609 +v 0.00906366 -0.0729297 -0.101609 +v 0.00906366 0.0729297 -0.101609 +v 0.00906366 -0.0729297 0.101609 +v 0.00906366 0.0729297 0.101609 +v -0.00906366 -0.0729297 0.101609 +v -0.00906366 0.0729297 0.101609 +v -0.0711684 -0.0181947 -0.101686 +v -0.0711684 0.0181947 -0.101686 +v 0.0711684 -0.0181947 -0.101686 +v 0.0711684 0.0181947 -0.101686 +v 0.0711684 -0.0181947 0.101686 +v 0.0711684 0.0181947 0.101686 +v -0.0711684 -0.0181947 0.101686 +v -0.0711684 0.0181947 0.101686 +v -0.065017 -0.0341645 -0.101711 +v -0.065017 0.0341645 -0.101711 +v 0.065017 -0.0341645 -0.101711 +v 0.065017 0.0341645 -0.101711 +v 0.065017 -0.0341645 0.101711 +v 0.065017 0.0341645 0.101711 +v -0.065017 -0.0341645 0.101711 +v -0.065017 0.0341645 0.101711 +v -0.0437017 -0.0590087 -0.101751 +v -0.0437017 0.0590087 -0.101751 +v 0.0437017 -0.0590087 -0.101751 +v 0.0437017 0.0590087 -0.101751 +v 0.0437017 -0.0590087 0.101751 +v 0.0437017 0.0590087 0.101751 +v -0.0437017 -0.0590087 0.101751 +v -0.0437017 0.0590087 0.101751 +v -0.0352834 -0.0643878 -0.101769 +v -0.0352834 0.0643878 -0.101769 +v 0.0352834 -0.0643878 -0.101769 +v 0.0352834 0.0643878 -0.101769 +v 0.0352834 -0.0643878 0.101769 +v 0.0352834 0.0643878 0.101769 +v -0.0352834 -0.0643878 0.101769 +v -0.0352834 0.0643878 0.101769 +v -0.0508429 -0.0529685 -0.10177 +v -0.0508429 0.0529685 -0.10177 +v 0.0508429 -0.0529685 -0.10177 +v 0.0508429 0.0529685 -0.10177 +v 0.0508429 -0.0529685 0.10177 +v 0.0508429 0.0529685 0.10177 +v -0.0508429 -0.0529685 0.10177 +v -0.0508429 0.0529685 0.10177 +v -0.0550271 -0.0486075 -0.10177 +v -0.0550271 0.0486075 -0.10177 +v 0.0550271 -0.0486075 -0.10177 +v 0.0550271 0.0486075 -0.10177 +v 0.0550271 -0.0486075 0.10177 +v 0.0550271 0.0486075 0.10177 +v -0.0550271 -0.0486075 0.10177 +v -0.0550271 0.0486075 0.10177 +v -0.0286511 -0.0675765 -0.10182 +v -0.0286511 0.0675765 -0.10182 +v 0.0286511 -0.0675765 -0.10182 +v 0.0286511 0.0675765 -0.10182 +v 0.0286511 -0.0675765 0.10182 +v 0.0286511 0.0675765 0.10182 +v -0.0286511 -0.0675765 0.10182 +v -0.0286511 0.0675765 0.10182 +v -0.024877 -0.0690455 -0.101841 +v -0.024877 0.0690455 -0.101841 +v 0.024877 -0.0690455 -0.101841 +v 0.024877 0.0690455 -0.101841 +v 0.024877 -0.0690455 0.101841 +v 0.024877 0.0690455 0.101841 +v -0.024877 -0.0690455 0.101841 +v -0.024877 0.0690455 0.101841 +v -0.0155341 -0.0717238 -0.10185 +v -0.0155341 0.0717238 -0.10185 +v 0.0155341 -0.0717238 -0.10185 +v 0.0155341 0.0717238 -0.10185 +v 0.0155341 -0.0717238 0.10185 +v 0.0155341 0.0717238 0.10185 +v -0.0155341 -0.0717238 0.10185 +v -0.0155341 0.0717238 0.10185 +v -0.00795501 -0.0729297 -0.101906 +v -0.00795501 0.0729297 -0.101906 +v 0.00795501 -0.0729297 -0.101906 +v 0.00795501 0.0729297 -0.101906 +v 0.00795501 -0.0729297 0.101906 +v 0.00795501 0.0729297 0.101906 +v -0.00795501 -0.0729297 0.101906 +v -0.00795501 0.0729297 0.101906 +v -0.0717106 -0.0154341 -0.101928 +v -0.0717106 0.0154341 -0.101928 +v 0.0717106 -0.0154341 -0.101928 +v 0.0717106 0.0154341 -0.101928 +v 0.0717106 -0.0154341 0.101928 +v 0.0717106 0.0154341 0.101928 +v -0.0717106 -0.0154341 0.101928 +v -0.0717106 0.0154341 0.101928 +v -0.0408994 -0.0608783 -0.101954 +v -0.0408994 0.0608783 -0.101954 +v 0.0408994 -0.0608783 -0.101954 +v 0.0408994 0.0608783 -0.101954 +v 0.0408994 -0.0608783 0.101954 +v 0.0408994 0.0608783 0.101954 +v -0.0408994 -0.0608783 0.101954 +v -0.0408994 0.0608783 0.101954 +v -0.0380887 -0.0626721 -0.10196 +v -0.0380887 0.0626721 -0.10196 +v 0.0380887 -0.0626721 -0.10196 +v 0.0380887 0.0626721 -0.10196 +v 0.0380887 -0.0626721 0.10196 +v 0.0380887 0.0626721 0.10196 +v -0.0380887 -0.0626721 0.10196 +v -0.0380887 0.0626721 0.10196 +v -0.0603244 -0.0416192 -0.102075 +v -0.0603244 0.0416192 -0.102075 +v 0.0603244 -0.0416192 -0.102075 +v 0.0603244 0.0416192 -0.102075 +v 0.0603244 -0.0416192 0.102075 +v 0.0603244 0.0416192 0.102075 +v -0.0603244 -0.0416192 0.102075 +v -0.0603244 0.0416192 0.102075 +v -0.0721636 -0.0126542 -0.102129 +v -0.0721636 0.0126542 -0.102129 +v 0.0721636 -0.0126542 -0.102129 +v 0.0721636 0.0126542 -0.102129 +v 0.0721636 -0.0126542 0.102129 +v 0.0721636 0.0126542 0.102129 +v -0.0721636 -0.0126542 0.102129 +v -0.0721636 0.0126542 0.102129 +v -0.00683666 -0.0729297 -0.102164 +v -0.00683666 0.0729297 -0.102164 +v 0.00683666 -0.0729297 -0.102164 +v 0.00683666 0.0729297 -0.102164 +v 0.00683666 -0.0729297 0.102164 +v 0.00683666 0.0729297 0.102164 +v -0.00683666 -0.0729297 0.102164 +v -0.00683666 0.0729297 0.102164 +v -0.0201078 -0.0704285 -0.102179 +v -0.0201078 0.0704285 -0.102179 +v 0.0201078 -0.0704285 -0.102179 +v 0.0201078 0.0704285 -0.102179 +v 0.0201078 -0.0704285 0.102179 +v 0.0201078 0.0704285 0.102179 +v -0.0201078 -0.0704285 0.102179 +v -0.0201078 0.0704285 0.102179 +v -0.0660601 -0.0315903 -0.10222 +v -0.0660601 0.0315903 -0.10222 +v 0.0660601 -0.0315903 -0.10222 +v 0.0660601 0.0315903 -0.10222 +v 0.0660601 -0.0315903 0.10222 +v 0.0660601 0.0315903 0.10222 +v -0.0660601 -0.0315903 0.10222 +v -0.0660601 0.0315903 0.10222 +v -0.0725266 -0.00985854 -0.102291 +v -0.0725266 0.00985854 -0.102291 +v 0.0725266 -0.00985854 -0.102291 +v 0.0725266 0.00985854 -0.102291 +v 0.0725266 -0.00985854 0.102291 +v 0.0725266 0.00985854 0.102291 +v -0.0725266 -0.00985854 0.102291 +v -0.0725266 0.00985854 0.102291 +v -0.0144131 -0.0717238 -0.102372 +v -0.0144131 0.0717238 -0.102372 +v 0.0144131 -0.0717238 -0.102372 +v 0.0144131 0.0717238 -0.102372 +v 0.0144131 -0.0717238 0.102372 +v 0.0144131 0.0717238 0.102372 +v -0.0144131 -0.0717238 0.102372 +v -0.0144131 0.0717238 0.102372 +v -0.00570999 -0.0729297 -0.102383 +v -0.00570999 0.0729297 -0.102383 +v 0.00570999 -0.0729297 -0.102383 +v 0.00570999 0.0729297 -0.102383 +v 0.00570999 -0.0729297 0.102383 +v 0.00570999 0.0729297 0.102383 +v -0.00570999 -0.0729297 0.102383 +v -0.00570999 0.0729297 0.102383 +v -0.0727993 -0.0070506 -0.102412 +v -0.0727993 0.0070506 -0.102412 +v 0.0727993 -0.0070506 -0.102412 +v 0.0727993 0.0070506 -0.102412 +v 0.0727993 -0.0070506 0.102412 +v 0.0727993 0.0070506 0.102412 +v -0.0727993 -0.0070506 0.102412 +v -0.0727993 0.0070506 0.102412 +v -0.0481224 -0.0550513 -0.102459 +v -0.0481224 0.0550513 -0.102459 +v 0.0481224 -0.0550513 -0.102459 +v 0.0481224 0.0550513 -0.102459 +v 0.0481224 -0.0550513 0.102459 +v 0.0481224 0.0550513 0.102459 +v -0.0481224 -0.0550513 0.102459 +v -0.0481224 0.0550513 0.102459 +v -0.0729812 -0.00423388 -0.102493 +v -0.0729812 0.00423388 -0.102493 +v 0.0729812 -0.00423388 -0.102493 +v 0.0729812 0.00423388 -0.102493 +v 0.0729812 -0.00423388 0.102493 +v 0.0729812 0.00423388 0.102493 +v -0.0729812 -0.00423388 0.102493 +v -0.0729812 0.00423388 0.102493 +v -0.0313823 -0.0660233 -0.102497 +v -0.0313823 0.0660233 -0.102497 +v 0.0313823 -0.0660233 -0.102497 +v 0.0313823 0.0660233 -0.102497 +v 0.0313823 -0.0660233 0.102497 +v 0.0313823 0.0660233 0.102497 +v -0.0313823 -0.0660233 0.102497 +v -0.0313823 0.0660233 0.102497 +v -0.0730723 -0.00141188 -0.102534 +v -0.0730723 0.00141188 -0.102534 +v 0.0730723 -0.00141188 -0.102534 +v 0.0730723 0.00141188 -0.102534 +v 0.0730723 -0.00141188 0.102534 +v 0.0730723 0.00141188 0.102534 +v -0.0730723 -0.00141188 0.102534 +v -0.0730723 0.00141188 0.102534 +v -0.00457636 -0.0729297 -0.102563 +v -0.00457636 0.0729297 -0.102563 +v 0.00457636 -0.0729297 -0.102563 +v 0.00457636 0.0729297 -0.102563 +v 0.00457636 -0.0729297 0.102563 +v 0.00457636 0.0729297 0.102563 +v -0.00457636 -0.0729297 0.102563 +v -0.00457636 0.0729297 0.102563 +v -0.0564784 -0.0463348 -0.102608 +v -0.0564784 0.0463348 -0.102608 +v 0.0564784 -0.0463348 -0.102608 +v 0.0564784 0.0463348 -0.102608 +v 0.0564784 -0.0463348 0.102608 +v 0.0564784 0.0463348 0.102608 +v -0.0564784 -0.0463348 0.102608 +v -0.0564784 0.0463348 0.102608 +v -0.067021 -0.0289768 -0.102688 +v -0.067021 0.0289768 -0.102688 +v 0.067021 -0.0289768 -0.102688 +v 0.067021 0.0289768 -0.102688 +v 0.067021 -0.0289768 0.102688 +v 0.067021 0.0289768 0.102688 +v -0.067021 -0.0289768 0.102688 +v -0.067021 0.0289768 0.102688 +v -0.0237506 -0.0690455 -0.10269 +v -0.0237506 0.0690455 -0.10269 +v 0.0237506 -0.0690455 -0.10269 +v 0.0237506 0.0690455 -0.10269 +v 0.0237506 -0.0690455 0.10269 +v 0.0237506 0.0690455 0.10269 +v -0.0237506 -0.0690455 0.10269 +v -0.0237506 0.0690455 0.10269 +v -0.00343716 -0.0729297 -0.102702 +v -0.00343716 0.0729297 -0.102702 +v 0.00343716 -0.0729297 -0.102702 +v 0.00343716 0.0729297 -0.102702 +v 0.00343716 -0.0729297 0.102702 +v 0.00343716 0.0729297 0.102702 +v -0.00343716 -0.0729297 0.102702 +v -0.00343716 0.0729297 0.102702 +v -0.0523965 -0.0508196 -0.102741 +v -0.0523965 0.0508196 -0.102741 +v 0.0523965 -0.0508196 -0.102741 +v 0.0523965 0.0508196 -0.102741 +v 0.0523965 -0.0508196 0.102741 +v 0.0523965 0.0508196 0.102741 +v -0.0523965 -0.0508196 0.102741 +v -0.0523965 0.0508196 0.102741 +v -0.0615837 -0.0391821 -0.102745 +v -0.0615837 0.0391821 -0.102745 +v 0.0615837 -0.0391821 -0.102745 +v 0.0615837 0.0391821 -0.102745 +v 0.0615837 -0.0391821 0.102745 +v 0.0615837 0.0391821 0.102745 +v -0.0615837 -0.0391821 0.102745 +v -0.0615837 0.0391821 0.102745 +v -0.0275232 -0.0675765 -0.102801 +v -0.0275232 0.0675765 -0.102801 +v 0.0275232 -0.0675765 -0.102801 +v 0.0275232 0.0675765 -0.102801 +v 0.0275232 -0.0675765 0.102801 +v 0.0275232 0.0675765 0.102801 +v -0.0275232 -0.0675765 0.102801 +v -0.0275232 0.0675765 0.102801 +v -0.00229377 -0.0729297 -0.102802 +v -0.00229377 0.0729297 -0.102802 +v 0.00229377 -0.0729297 -0.102802 +v 0.00229377 0.0729297 -0.102802 +v 0.00229377 -0.0729297 0.102802 +v 0.00229377 0.0729297 0.102802 +v -0.00229377 -0.0729297 0.102802 +v -0.00229377 0.0729297 0.102802 +v -0.0132745 -0.0717238 -0.102856 +v -0.0132745 0.0717238 -0.102856 +v 0.0132745 -0.0717238 -0.102856 +v 0.0132745 0.0717238 -0.102856 +v 0.0132745 -0.0717238 0.102856 +v 0.0132745 0.0717238 0.102856 +v -0.0132745 -0.0717238 0.102856 +v -0.0132745 0.0717238 0.102856 +v -0.0189725 -0.0704285 -0.102861 +v -0.0189725 0.0704285 -0.102861 +v 0.0189725 -0.0704285 -0.102861 +v 0.0189725 0.0704285 -0.102861 +v 0.0189725 -0.0704285 0.102861 +v 0.0189725 0.0704285 0.102861 +v -0.0189725 -0.0704285 0.102861 +v -0.0189725 0.0704285 0.102861 +v -0.00114758 -0.0729297 -0.102863 +v -0.00114758 0.0729297 -0.102863 +v 0.00114758 -0.0729297 -0.102863 +v 0.00114758 0.0729297 -0.102863 +v 0.00114758 -0.0729297 0.102863 +v 0.00114758 0.0729297 0.102863 +v -0.00114758 -0.0729297 0.102863 +v -0.00114758 0.0729297 0.102863 +v -6.04042e-18 -0.0729297 -0.102883 +v -6.04042e-18 0.0729297 -0.102883 +v 2.01347e-18 -0.0729297 0.102883 +v 2.01347e-18 0.0729297 0.102883 +v -0.0453593 -0.0570655 -0.102955 +v -0.0453593 0.0570655 -0.102955 +v 0.0453593 -0.0570655 -0.102955 +v 0.0453593 0.0570655 -0.102955 +v 0.0453593 -0.0570655 0.102955 +v 0.0453593 0.0570655 0.102955 +v -0.0453593 -0.0570655 0.102955 +v -0.0453593 0.0570655 0.102955 +v -0.0341532 -0.0643878 -0.102981 +v -0.0341532 0.0643878 -0.102981 +v 0.0341532 -0.0643878 -0.102981 +v 0.0341532 0.0643878 -0.102981 +v 0.0341532 -0.0643878 0.102981 +v 0.0341532 0.0643878 0.102981 +v -0.0341532 -0.0643878 0.102981 +v -0.0341532 0.0643878 0.102981 +v -0.0678984 -0.0263271 -0.103116 +v -0.0678984 0.0263271 -0.103116 +v 0.0678984 -0.0263271 -0.103116 +v 0.0678984 0.0263271 -0.103116 +v 0.0678984 -0.0263271 0.103116 +v 0.0678984 0.0263271 0.103116 +v -0.0678984 -0.0263271 0.103116 +v -0.0678984 0.0263271 0.103116 +v -0.042567 -0.0590087 -0.103257 +v -0.042567 0.0590087 -0.103257 +v 0.042567 -0.0590087 -0.103257 +v 0.042567 0.0590087 -0.103257 +v 0.042567 -0.0590087 0.103257 +v 0.042567 0.0590087 0.103257 +v -0.042567 -0.0590087 0.103257 +v -0.042567 0.0590087 0.103257 +v -0.0369501 -0.0626721 -0.10327 +v -0.0369501 0.0626721 -0.10327 +v 0.0369501 -0.0626721 -0.10327 +v 0.0369501 0.0626721 -0.10327 +v 0.0369501 -0.0626721 0.10327 +v 0.0369501 0.0626721 0.10327 +v -0.0369501 -0.0626721 0.10327 +v -0.0369501 0.0626721 0.10327 +v -0.0121198 -0.0717238 -0.103299 +v -0.0121198 0.0717238 -0.103299 +v 0.0121198 -0.0717238 -0.103299 +v 0.0121198 0.0717238 -0.103299 +v 0.0121198 -0.0717238 0.103299 +v 0.0121198 0.0717238 0.103299 +v -0.0121198 -0.0717238 0.103299 +v -0.0121198 0.0717238 0.103299 +v -0.0397593 -0.0608783 -0.103362 +v -0.0397593 0.0608783 -0.103362 +v 0.0397593 -0.0608783 -0.103362 +v 0.0397593 0.0608783 -0.103362 +v 0.0397593 -0.0608783 0.103362 +v 0.0397593 0.0608783 0.103362 +v -0.0397593 -0.0608783 0.103362 +v -0.0397593 0.0608783 0.103362 +v -0.0627663 -0.0366961 -0.103373 +v -0.0627663 0.0366961 -0.103373 +v 0.0627663 -0.0366961 -0.103373 +v 0.0627663 0.0366961 -0.103373 +v 0.0627663 -0.0366961 0.103373 +v 0.0627663 0.0366961 0.103373 +v -0.0627663 -0.0366961 0.103373 +v -0.0627663 0.0366961 0.103373 +v -0.0578594 -0.0440044 -0.103405 +v -0.0578594 0.0440044 -0.103405 +v 0.0578594 -0.0440044 -0.103405 +v 0.0578594 0.0440044 -0.103405 +v 0.0578594 -0.0440044 0.103405 +v 0.0578594 0.0440044 0.103405 +v -0.0578594 -0.0440044 0.103405 +v -0.0578594 0.0440044 0.103405 +v -0.0225953 -0.0690455 -0.103499 +v -0.0225953 0.0690455 -0.103499 +v 0.0225953 -0.0690455 -0.103499 +v 0.0225953 0.0690455 -0.103499 +v 0.0225953 -0.0690455 0.103499 +v 0.0225953 0.0690455 0.103499 +v -0.0225953 -0.0690455 0.103499 +v -0.0225953 0.0690455 0.103499 +v -0.0178141 -0.0704285 -0.103503 +v -0.0178141 0.0704285 -0.103503 +v 0.0178141 -0.0704285 -0.103503 +v 0.0178141 0.0704285 -0.103503 +v 0.0178141 -0.0704285 0.103503 +v 0.0178141 0.0704285 0.103503 +v -0.0178141 -0.0704285 0.103503 +v -0.0178141 0.0704285 0.103503 +v -0.0686912 -0.0236447 -0.103503 +v -0.0686912 0.0236447 -0.103503 +v 0.0686912 -0.0236447 -0.103503 +v 0.0686912 0.0236447 -0.103503 +v 0.0686912 -0.0236447 0.103503 +v 0.0686912 0.0236447 0.103503 +v -0.0686912 -0.0236447 0.103503 +v -0.0686912 0.0236447 0.103503 +v -0.0497031 -0.0529685 -0.103525 +v -0.0497031 0.0529685 -0.103525 +v 0.0497031 -0.0529685 -0.103525 +v 0.0497031 0.0529685 -0.103525 +v 0.0497031 -0.0529685 0.103525 +v 0.0497031 0.0529685 0.103525 +v -0.0497031 -0.0529685 0.103525 +v -0.0497031 0.0529685 0.103525 +v -0.0302291 -0.0660233 -0.103573 +v -0.0302291 0.0660233 -0.103573 +v 0.0302291 -0.0660233 -0.103573 +v 0.0302291 0.0660233 -0.103573 +v 0.0302291 -0.0660233 0.103573 +v 0.0302291 0.0660233 0.103573 +v -0.0302291 -0.0660233 0.103573 +v -0.0302291 0.0660233 0.103573 +v -0.0538848 -0.0486075 -0.103671 +v -0.0538848 0.0486075 -0.103671 +v 0.0538848 -0.0486075 -0.103671 +v 0.0538848 0.0486075 -0.103671 +v 0.0538848 -0.0486075 0.103671 +v 0.0538848 0.0486075 0.103671 +v -0.0538848 -0.0486075 0.103671 +v -0.0538848 0.0486075 0.103671 +v -0.0109503 -0.0717238 -0.103701 +v -0.0109503 0.0717238 -0.103701 +v 0.0109503 -0.0717238 -0.103701 +v 0.0109503 0.0717238 -0.103701 +v 0.0109503 -0.0717238 0.103701 +v 0.0109503 0.0717238 0.103701 +v -0.0109503 -0.0717238 0.103701 +v -0.0109503 0.0717238 0.103701 +v -0.0263617 -0.0675765 -0.103741 +v -0.0263617 0.0675765 -0.103741 +v 0.0263617 -0.0675765 -0.103741 +v 0.0263617 0.0675765 -0.103741 +v 0.0263617 -0.0675765 0.103741 +v 0.0263617 0.0675765 0.103741 +v -0.0263617 -0.0675765 0.103741 +v -0.0263617 0.0675765 0.103741 +v -0.0693984 -0.0209327 -0.103848 +v -0.0693984 0.0209327 -0.103848 +v 0.0693984 -0.0209327 -0.103848 +v 0.0693984 0.0209327 -0.103848 +v 0.0693984 -0.0209327 0.103848 +v 0.0693984 0.0209327 0.103848 +v -0.0693984 -0.0209327 0.103848 +v -0.0693984 0.0209327 0.103848 +v -0.0638707 -0.0341645 -0.103961 +v -0.0638707 0.0341645 -0.103961 +v 0.0638707 -0.0341645 -0.103961 +v 0.0638707 0.0341645 -0.103961 +v 0.0638707 -0.0341645 0.103961 +v 0.0638707 0.0341645 0.103961 +v -0.0638707 -0.0341645 0.103961 +v -0.0638707 0.0341645 0.103961 +v -0.00976744 -0.0717238 -0.104063 +v -0.00976744 0.0717238 -0.104063 +v 0.00976744 -0.0717238 -0.104063 +v 0.00976744 0.0717238 -0.104063 +v 0.00976744 -0.0717238 0.104063 +v 0.00976744 0.0717238 0.104063 +v -0.00976744 -0.0717238 0.104063 +v -0.00976744 0.0717238 0.104063 +v -0.016634 -0.0704285 -0.104105 +v -0.016634 0.0704285 -0.104105 +v 0.016634 -0.0704285 -0.104105 +v 0.016634 0.0704285 -0.104105 +v 0.016634 -0.0704285 0.104105 +v 0.016634 0.0704285 0.104105 +v -0.016634 -0.0704285 0.104105 +v -0.016634 0.0704285 0.104105 +v -0.0469603 -0.0550513 -0.104119 +v -0.0469603 0.0550513 -0.104119 +v 0.0469603 -0.0550513 -0.104119 +v 0.0469603 0.0550513 -0.104119 +v 0.0469603 -0.0550513 0.104119 +v 0.0469603 0.0550513 0.104119 +v -0.0469603 -0.0550513 0.104119 +v -0.0469603 0.0550513 0.104119 +v -0.0700192 -0.0181947 -0.104151 +v -0.0700192 0.0181947 -0.104151 +v 0.0700192 -0.0181947 -0.104151 +v 0.0700192 0.0181947 -0.104151 +v 0.0700192 -0.0181947 0.104151 +v 0.0700192 0.0181947 0.104151 +v -0.0700192 -0.0181947 0.104151 +v -0.0700192 0.0181947 0.104151 +v -0.0329814 -0.0643878 -0.104153 +v -0.0329814 0.0643878 -0.104153 +v 0.0329814 -0.0643878 -0.104153 +v 0.0329814 0.0643878 -0.104153 +v 0.0329814 -0.0643878 0.104153 +v 0.0329814 0.0643878 0.104153 +v -0.0329814 -0.0643878 0.104153 +v -0.0329814 0.0643878 0.104153 +v -0.0591683 -0.0416192 -0.104161 +v -0.0591683 0.0416192 -0.104161 +v 0.0591683 -0.0416192 -0.104161 +v 0.0591683 0.0416192 -0.104161 +v 0.0591683 -0.0416192 0.104161 +v 0.0591683 0.0416192 0.104161 +v -0.0591683 -0.0416192 0.104161 +v -0.0591683 0.0416192 0.104161 +v -0.0214124 -0.0690455 -0.104267 +v -0.0214124 0.0690455 -0.104267 +v 0.0214124 -0.0690455 -0.104267 +v 0.0214124 0.0690455 -0.104267 +v 0.0214124 -0.0690455 0.104267 +v 0.0214124 0.0690455 0.104267 +v -0.0214124 -0.0690455 0.104267 +v -0.0214124 0.0690455 0.104267 +v -0.00857271 -0.0717238 -0.104383 +v -0.00857271 0.0717238 -0.104383 +v 0.00857271 -0.0717238 -0.104383 +v 0.00857271 0.0717238 -0.104383 +v 0.00857271 -0.0717238 0.104383 +v 0.00857271 0.0717238 0.104383 +v -0.00857271 -0.0717238 0.104383 +v -0.00857271 0.0717238 0.104383 +v -0.0705527 -0.0154341 -0.104411 +v -0.0705527 0.0154341 -0.104411 +v 0.0705527 -0.0154341 -0.104411 +v 0.0705527 0.0154341 -0.104411 +v 0.0705527 -0.0154341 0.104411 +v 0.0705527 0.0154341 0.104411 +v -0.0705527 -0.0154341 0.104411 +v -0.0705527 0.0154341 0.104411 +v -0.0648955 -0.0315903 -0.104506 +v -0.0648955 0.0315903 -0.104506 +v 0.0648955 -0.0315903 -0.104506 +v 0.0648955 0.0315903 -0.104506 +v 0.0648955 -0.0315903 0.104506 +v 0.0648955 0.0315903 0.104506 +v -0.0648955 -0.0315903 0.104506 +v -0.0648955 0.0315903 0.104506 +v -0.0441815 -0.0570655 -0.104518 +v -0.0441815 0.0570655 -0.104518 +v 0.0441815 -0.0570655 -0.104518 +v 0.0441815 0.0570655 -0.104518 +v 0.0441815 -0.0570655 0.104518 +v 0.0441815 0.0570655 0.104518 +v -0.0441815 -0.0570655 0.104518 +v -0.0441815 0.0570655 0.104518 +v -0.0357665 -0.0626721 -0.104539 +v -0.0357665 0.0626721 -0.104539 +v 0.0357665 -0.0626721 -0.104539 +v 0.0357665 0.0626721 -0.104539 +v 0.0357665 -0.0626721 0.104539 +v 0.0357665 0.0626721 0.104539 +v -0.0357665 -0.0626721 0.104539 +v -0.0357665 0.0626721 0.104539 +v -0.0512219 -0.0508196 -0.10455 +v -0.0512219 0.0508196 -0.10455 +v 0.0512219 -0.0508196 -0.10455 +v 0.0512219 0.0508196 -0.10455 +v 0.0512219 -0.0508196 0.10455 +v 0.0512219 0.0508196 0.10455 +v -0.0512219 -0.0508196 0.10455 +v -0.0512219 0.0508196 0.10455 +v -0.055306 -0.0463348 -0.104559 +v -0.055306 0.0463348 -0.104559 +v 0.055306 -0.0463348 -0.104559 +v 0.055306 0.0463348 -0.104559 +v 0.055306 -0.0463348 0.104559 +v 0.055306 0.0463348 0.104559 +v -0.055306 -0.0463348 0.104559 +v -0.055306 0.0463348 0.104559 +v -0.029039 -0.0660233 -0.104607 +v -0.029039 0.0660233 -0.104607 +v 0.029039 -0.0660233 -0.104607 +v 0.029039 0.0660233 -0.104607 +v 0.029039 -0.0660233 0.104607 +v 0.029039 0.0660233 0.104607 +v -0.029039 -0.0660233 0.104607 +v -0.029039 0.0660233 0.104607 +v -0.0709983 -0.0126542 -0.104628 +v -0.0709983 0.0126542 -0.104628 +v 0.0709983 -0.0126542 -0.104628 +v 0.0709983 0.0126542 -0.104628 +v 0.0709983 -0.0126542 0.104628 +v 0.0709983 0.0126542 0.104628 +v -0.0709983 -0.0126542 0.104628 +v -0.0709983 0.0126542 0.104628 +v -0.0251681 -0.0675765 -0.104641 +v -0.0251681 0.0675765 -0.104641 +v 0.0251681 -0.0675765 -0.104641 +v 0.0251681 0.0675765 -0.104641 +v 0.0251681 -0.0675765 0.104641 +v 0.0251681 0.0675765 0.104641 +v -0.0251681 -0.0675765 0.104641 +v -0.0251681 0.0675765 0.104641 +v -0.00736753 -0.0717238 -0.104661 +v -0.00736753 0.0717238 -0.104661 +v 0.00736753 -0.0717238 -0.104661 +v 0.00736753 0.0717238 -0.104661 +v 0.00736753 -0.0717238 0.104661 +v 0.00736753 0.0717238 0.104661 +v -0.00736753 -0.0717238 0.104661 +v -0.00736753 0.0717238 0.104661 +v -0.0154336 -0.0704285 -0.104664 +v -0.0154336 0.0704285 -0.104664 +v 0.0154336 -0.0704285 -0.104664 +v 0.0154336 0.0704285 -0.104664 +v 0.0154336 -0.0704285 0.104664 +v 0.0154336 0.0704285 0.104664 +v -0.0154336 -0.0704285 0.104664 +v -0.0154336 0.0704285 0.104664 +v -0.0413804 -0.0590087 -0.104722 +v -0.0413804 0.0590087 -0.104722 +v 0.0413804 -0.0590087 -0.104722 +v 0.0413804 0.0590087 -0.104722 +v 0.0413804 -0.0590087 0.104722 +v 0.0413804 0.0590087 0.104722 +v -0.0413804 -0.0590087 0.104722 +v -0.0413804 0.0590087 0.104722 +v -0.0385708 -0.0608783 -0.104729 +v -0.0385708 0.0608783 -0.104729 +v 0.0385708 -0.0608783 -0.104729 +v 0.0385708 0.0608783 -0.104729 +v 0.0385708 -0.0608783 0.104729 +v 0.0385708 0.0608783 0.104729 +v -0.0385708 -0.0608783 0.104729 +v -0.0385708 0.0608783 0.104729 +v -0.0713555 -0.00985854 -0.104802 +v -0.0713555 0.00985854 -0.104802 +v 0.0713555 -0.00985854 -0.104802 +v 0.0713555 0.00985854 -0.104802 +v 0.0713555 -0.00985854 0.104802 +v 0.0713555 0.00985854 0.104802 +v -0.0713555 -0.00985854 0.104802 +v -0.0713555 0.00985854 0.104802 +v -0.0604034 -0.0391821 -0.104874 +v -0.0604034 0.0391821 -0.104874 +v 0.0604034 -0.0391821 -0.104874 +v 0.0604034 0.0391821 -0.104874 +v 0.0604034 -0.0391821 0.104874 +v 0.0604034 0.0391821 0.104874 +v -0.0604034 -0.0391821 0.104874 +v -0.0604034 0.0391821 0.104874 +v -0.00615337 -0.0717238 -0.104897 +v -0.00615337 0.0717238 -0.104897 +v 0.00615337 -0.0717238 -0.104897 +v 0.00615337 0.0717238 -0.104897 +v 0.00615337 -0.0717238 0.104897 +v 0.00615337 0.0717238 0.104897 +v -0.00615337 -0.0717238 0.104897 +v -0.00615337 0.0717238 0.104897 +v -0.0716237 -0.0070506 -0.104933 +v -0.0716237 0.0070506 -0.104933 +v 0.0716237 -0.0070506 -0.104933 +v 0.0716237 0.0070506 -0.104933 +v 0.0716237 -0.0070506 0.104933 +v 0.0716237 0.0070506 0.104933 +v -0.0716237 -0.0070506 0.104933 +v -0.0716237 0.0070506 0.104933 +v -0.0202035 -0.0690455 -0.104993 +v -0.0202035 0.0690455 -0.104993 +v 0.0202035 -0.0690455 -0.104993 +v 0.0202035 0.0690455 -0.104993 +v 0.0202035 -0.0690455 0.104993 +v 0.0202035 0.0690455 0.104993 +v -0.0202035 -0.0690455 0.104993 +v -0.0202035 0.0690455 0.104993 +v -0.0658394 -0.0289768 -0.105007 +v -0.0658394 0.0289768 -0.105007 +v 0.0658394 -0.0289768 -0.105007 +v 0.0658394 0.0289768 -0.105007 +v 0.0658394 -0.0289768 0.105007 +v 0.0658394 0.0289768 0.105007 +v -0.0658394 -0.0289768 0.105007 +v -0.0658394 0.0289768 0.105007 +v -0.0718028 -0.00423388 -0.105021 +v -0.0718028 0.00423388 -0.105021 +v 0.0718028 -0.00423388 -0.105021 +v 0.0718028 0.00423388 -0.105021 +v 0.0718028 -0.00423388 0.105021 +v 0.0718028 0.00423388 0.105021 +v -0.0718028 -0.00423388 0.105021 +v -0.0718028 0.00423388 0.105021 +v -0.0718923 -0.00141188 -0.105064 +v -0.0718923 0.00141188 -0.105064 +v 0.0718923 -0.00141188 -0.105064 +v 0.0718923 0.00141188 -0.105064 +v 0.0718923 -0.00141188 0.105064 +v 0.0718923 0.00141188 0.105064 +v -0.0718923 -0.00141188 0.105064 +v -0.0718923 0.00141188 0.105064 +v -0.00493172 -0.0717238 -0.105091 +v -0.00493172 0.0717238 -0.105091 +v 0.00493172 -0.0717238 -0.105091 +v 0.00493172 0.0717238 -0.105091 +v 0.00493172 -0.0717238 0.105091 +v 0.00493172 0.0717238 0.105091 +v -0.00493172 -0.0717238 0.105091 +v -0.00493172 0.0717238 0.105091 +v -0.0142145 -0.0704285 -0.105182 +v -0.0142145 0.0704285 -0.105182 +v 0.0142145 -0.0704285 -0.105182 +v 0.0142145 0.0704285 -0.105182 +v 0.0142145 -0.0704285 0.105182 +v 0.0142145 0.0704285 0.105182 +v -0.0142145 -0.0704285 0.105182 +v -0.0142145 0.0704285 0.105182 +v -0.0485029 -0.0529685 -0.105239 +v -0.0485029 0.0529685 -0.105239 +v 0.0485029 -0.0529685 -0.105239 +v 0.0485029 0.0529685 -0.105239 +v 0.0485029 -0.0529685 0.105239 +v 0.0485029 0.0529685 0.105239 +v -0.0485029 -0.0529685 0.105239 +v -0.0485029 0.0529685 0.105239 +v -0.00370405 -0.0717238 -0.105242 +v -0.00370405 0.0717238 -0.105242 +v 0.00370405 -0.0717238 -0.105242 +v 0.00370405 0.0717238 -0.105242 +v 0.00370405 -0.0717238 0.105242 +v 0.00370405 0.0717238 0.105242 +v -0.00370405 -0.0717238 0.105242 +v -0.00370405 0.0717238 0.105242 +v -0.0317694 -0.0643878 -0.105283 +v -0.0317694 0.0643878 -0.105283 +v 0.0317694 -0.0643878 -0.105283 +v 0.0317694 0.0643878 -0.105283 +v 0.0317694 -0.0643878 0.105283 +v 0.0317694 0.0643878 0.105283 +v -0.0317694 -0.0643878 0.105283 +v -0.0317694 0.0643878 0.105283 +v -0.00247188 -0.0717238 -0.10535 +v -0.00247188 0.0717238 -0.10535 +v 0.00247188 -0.0717238 -0.10535 +v 0.00247188 0.0717238 -0.10535 +v 0.00247188 -0.0717238 0.10535 +v 0.00247188 0.0717238 0.10535 +v -0.00247188 -0.0717238 0.10535 +v -0.00247188 0.0717238 0.10535 +v -0.0566583 -0.0440044 -0.105404 +v -0.0566583 0.0440044 -0.105404 +v 0.0566583 -0.0440044 -0.105404 +v 0.0566583 0.0440044 -0.105404 +v 0.0566583 -0.0440044 0.105404 +v 0.0566583 0.0440044 0.105404 +v -0.0566583 -0.0440044 0.105404 +v -0.0566583 0.0440044 0.105404 +v -0.00123669 -0.0717238 -0.105414 +v -0.00123669 0.0717238 -0.105414 +v 0.00123669 -0.0717238 -0.105414 +v 0.00123669 0.0717238 -0.105414 +v 0.00123669 -0.0717238 0.105414 +v 0.00123669 0.0717238 0.105414 +v -0.00123669 -0.0717238 0.105414 +v -0.00123669 0.0717238 0.105414 +v -6.50946e-18 -0.0717238 -0.105436 +v -6.50946e-18 0.0717238 -0.105436 +v 2.16982e-18 -0.0717238 0.105436 +v 2.16982e-18 0.0717238 0.105436 +v -0.0667013 -0.0263271 -0.105466 +v -0.0667013 0.0263271 -0.105466 +v 0.0667013 -0.0263271 -0.105466 +v 0.0667013 0.0263271 -0.105466 +v 0.0667013 -0.0263271 0.105466 +v 0.0667013 0.0263271 0.105466 +v -0.0667013 -0.0263271 0.105466 +v -0.0667013 0.0263271 0.105466 +v -0.0239438 -0.0675765 -0.105498 +v -0.0239438 0.0675765 -0.105498 +v 0.0239438 -0.0675765 -0.105498 +v 0.0239438 0.0675765 -0.105498 +v 0.0239438 -0.0675765 0.105498 +v 0.0239438 0.0675765 0.105498 +v -0.0239438 -0.0675765 0.105498 +v -0.0239438 0.0675765 0.105498 +v -0.0526769 -0.0486075 -0.105531 +v -0.0526769 0.0486075 -0.105531 +v 0.0526769 -0.0486075 -0.105531 +v 0.0526769 0.0486075 -0.105531 +v 0.0526769 -0.0486075 0.105531 +v 0.0526769 0.0486075 0.105531 +v -0.0526769 -0.0486075 0.105531 +v -0.0526769 0.0486075 0.105531 +v -0.0615633 -0.0366961 -0.105544 +v -0.0615633 0.0366961 -0.105544 +v 0.0615633 -0.0366961 -0.105544 +v 0.0615633 0.0366961 -0.105544 +v 0.0615633 -0.0366961 0.105544 +v 0.0615633 0.0366961 0.105544 +v -0.0615633 -0.0366961 0.105544 +v -0.0615633 0.0366961 0.105544 +v -0.0278135 -0.0660233 -0.1056 +v -0.0278135 0.0660233 -0.1056 +v 0.0278135 -0.0660233 -0.1056 +v 0.0278135 0.0660233 -0.1056 +v 0.0278135 -0.0660233 0.1056 +v 0.0278135 0.0660233 0.1056 +v -0.0278135 -0.0660233 0.1056 +v -0.0278135 0.0660233 0.1056 +v -0.012978 -0.0704285 -0.105657 +v -0.012978 0.0704285 -0.105657 +v 0.012978 -0.0704285 -0.105657 +v 0.012978 0.0704285 -0.105657 +v 0.012978 -0.0704285 0.105657 +v 0.012978 0.0704285 0.105657 +v -0.012978 -0.0704285 0.105657 +v -0.012978 0.0704285 0.105657 +v -0.0189699 -0.0690455 -0.105677 +v -0.0189699 0.0690455 -0.105677 +v 0.0189699 -0.0690455 -0.105677 +v 0.0189699 0.0690455 -0.105677 +v 0.0189699 -0.0690455 0.105677 +v 0.0189699 0.0690455 0.105677 +v -0.0189699 -0.0690455 0.105677 +v -0.0189699 0.0690455 0.105677 +v -0.045741 -0.0550513 -0.105737 +v -0.045741 0.0550513 -0.105737 +v 0.045741 -0.0550513 -0.105737 +v 0.045741 0.0550513 -0.105737 +v 0.045741 -0.0550513 0.105737 +v 0.045741 0.0550513 0.105737 +v -0.045741 -0.0550513 0.105737 +v -0.045741 0.0550513 0.105737 +v -0.0345393 -0.0626721 -0.105767 +v -0.0345393 0.0626721 -0.105767 +v 0.0345393 -0.0626721 -0.105767 +v 0.0345393 0.0626721 -0.105767 +v 0.0345393 -0.0626721 0.105767 +v 0.0345393 0.0626721 0.105767 +v -0.0345393 -0.0626721 0.105767 +v -0.0345393 0.0626721 0.105767 +v -0.0674801 -0.0236447 -0.10588 +v -0.0674801 0.0236447 -0.10588 +v 0.0674801 -0.0236447 -0.10588 +v 0.0674801 0.0236447 -0.10588 +v 0.0674801 -0.0236447 0.10588 +v 0.0674801 0.0236447 0.10588 +v -0.0674801 -0.0236447 0.10588 +v -0.0674801 0.0236447 0.10588 +v -0.0429499 -0.0570655 -0.106039 +v -0.0429499 0.0570655 -0.106039 +v 0.0429499 -0.0570655 -0.106039 +v 0.0429499 0.0570655 -0.106039 +v 0.0429499 -0.0570655 0.106039 +v 0.0429499 0.0570655 0.106039 +v -0.0429499 -0.0570655 0.106039 +v -0.0429499 0.0570655 0.106039 +v -0.0373353 -0.0608783 -0.106054 +v -0.0373353 0.0608783 -0.106054 +v 0.0373353 -0.0608783 -0.106054 +v 0.0373353 0.0608783 -0.106054 +v 0.0373353 -0.0608783 0.106054 +v 0.0373353 0.0608783 0.106054 +v -0.0373353 -0.0608783 0.106054 +v -0.0373353 0.0608783 0.106054 +v -0.0117257 -0.0704285 -0.106088 +v -0.0117257 0.0704285 -0.106088 +v 0.0117257 -0.0704285 -0.106088 +v 0.0117257 0.0704285 -0.106088 +v 0.0117257 -0.0704285 0.106088 +v 0.0117257 0.0704285 0.106088 +v -0.0117257 -0.0704285 0.106088 +v -0.0117257 0.0704285 0.106088 +v -0.0401434 -0.0590087 -0.106145 +v -0.0401434 0.0590087 -0.106145 +v 0.0401434 -0.0590087 -0.106145 +v 0.0401434 0.0590087 -0.106145 +v 0.0401434 -0.0590087 0.106145 +v 0.0401434 0.0590087 0.106145 +v -0.0401434 -0.0590087 0.106145 +v -0.0401434 0.0590087 0.106145 +v -0.0626465 -0.0341645 -0.106169 +v -0.0626465 0.0341645 -0.106169 +v 0.0626465 -0.0341645 -0.106169 +v 0.0626465 0.0341645 -0.106169 +v 0.0626465 -0.0341645 0.106169 +v 0.0626465 0.0341645 0.106169 +v -0.0626465 -0.0341645 0.106169 +v -0.0626465 0.0341645 0.106169 +v -0.05794 -0.0416192 -0.106205 +v -0.05794 0.0416192 -0.106205 +v 0.05794 -0.0416192 -0.106205 +v 0.05794 0.0416192 -0.106205 +v 0.05794 -0.0416192 0.106205 +v 0.05794 0.0416192 0.106205 +v -0.05794 -0.0416192 0.106205 +v -0.05794 0.0416192 0.106205 +v -0.0681749 -0.0209327 -0.106249 +v -0.0681749 0.0209327 -0.106249 +v 0.0681749 -0.0209327 -0.106249 +v 0.0681749 0.0209327 -0.106249 +v 0.0681749 -0.0209327 0.106249 +v 0.0681749 0.0209327 0.106249 +v -0.0681749 -0.0209327 0.106249 +v -0.0681749 0.0209327 0.106249 +v -0.0226903 -0.0675765 -0.106312 +v -0.0226903 0.0675765 -0.106312 +v 0.0226903 -0.0675765 -0.106312 +v 0.0226903 0.0675765 -0.106312 +v 0.0226903 -0.0675765 0.106312 +v 0.0226903 0.0675765 0.106312 +v -0.0226903 -0.0675765 0.106312 +v -0.0226903 0.0675765 0.106312 +v -0.049985 -0.0508196 -0.106316 +v -0.049985 0.0508196 -0.106316 +v 0.049985 -0.0508196 -0.106316 +v 0.049985 0.0508196 -0.106316 +v 0.049985 -0.0508196 0.106316 +v 0.049985 0.0508196 0.106316 +v -0.049985 -0.0508196 0.106316 +v -0.049985 0.0508196 0.106316 +v -0.0177132 -0.0690455 -0.106317 +v -0.0177132 0.0690455 -0.106317 +v 0.0177132 -0.0690455 -0.106317 +v 0.0177132 0.0690455 -0.106317 +v 0.0177132 -0.0690455 0.106317 +v 0.0177132 0.0690455 0.106317 +v -0.0177132 -0.0690455 0.106317 +v -0.0177132 0.0690455 0.106317 +v -0.0305186 -0.0643878 -0.106371 +v -0.0305186 0.0643878 -0.106371 +v 0.0305186 -0.0643878 -0.106371 +v 0.0305186 0.0643878 -0.106371 +v 0.0305186 -0.0643878 0.106371 +v 0.0305186 0.0643878 0.106371 +v -0.0305186 -0.0643878 0.106371 +v -0.0305186 0.0643878 0.106371 +v -0.0540662 -0.0463348 -0.106468 +v -0.0540662 0.0463348 -0.106468 +v 0.0540662 -0.0463348 -0.106468 +v 0.0540662 0.0463348 -0.106468 +v 0.0540662 -0.0463348 0.106468 +v 0.0540662 0.0463348 0.106468 +v -0.0540662 -0.0463348 0.106468 +v -0.0540662 0.0463348 0.106468 +v -0.0104591 -0.0704285 -0.106475 +v -0.0104591 0.0704285 -0.106475 +v 0.0104591 -0.0704285 -0.106475 +v 0.0104591 0.0704285 -0.106475 +v 0.0104591 -0.0704285 0.106475 +v 0.0104591 0.0704285 0.106475 +v -0.0104591 -0.0704285 0.106475 +v -0.0104591 0.0704285 0.106475 +v -0.0265542 -0.0660233 -0.106549 +v -0.0265542 0.0660233 -0.106549 +v 0.0265542 -0.0660233 -0.106549 +v 0.0265542 0.0660233 -0.106549 +v 0.0265542 -0.0660233 0.106549 +v 0.0265542 0.0660233 0.106549 +v -0.0265542 -0.0660233 0.106549 +v -0.0265542 0.0660233 0.106549 +v -0.0687847 -0.0181947 -0.106573 +v -0.0687847 0.0181947 -0.106573 +v 0.0687847 -0.0181947 -0.106573 +v 0.0687847 0.0181947 -0.106573 +v 0.0687847 -0.0181947 0.106573 +v 0.0687847 0.0181947 0.106573 +v -0.0687847 -0.0181947 0.106573 +v -0.0687847 0.0181947 0.106573 +v -0.0636517 -0.0315903 -0.106749 +v -0.0636517 0.0315903 -0.106749 +v 0.0636517 -0.0315903 -0.106749 +v 0.0636517 0.0315903 -0.106749 +v 0.0636517 -0.0315903 0.106749 +v 0.0636517 0.0315903 0.106749 +v -0.0636517 -0.0315903 0.106749 +v -0.0636517 0.0315903 0.106749 +v -0.00917973 -0.0704285 -0.106818 +v -0.00917973 0.0704285 -0.106818 +v 0.00917973 -0.0704285 -0.106818 +v 0.00917973 0.0704285 -0.106818 +v 0.00917973 -0.0704285 0.106818 +v 0.00917973 0.0704285 0.106818 +v -0.00917973 -0.0704285 0.106818 +v -0.00917973 0.0704285 0.106818 +v -0.0693088 -0.0154341 -0.106852 +v -0.0693088 0.0154341 -0.106852 +v 0.0693088 -0.0154341 -0.106852 +v 0.0693088 0.0154341 -0.106852 +v 0.0693088 -0.0154341 0.106852 +v 0.0693088 0.0154341 0.106852 +v -0.0693088 -0.0154341 0.106852 +v -0.0693088 0.0154341 0.106852 +v -0.0472435 -0.0529685 -0.106911 +v -0.0472435 0.0529685 -0.106911 +v 0.0472435 -0.0529685 -0.106911 +v 0.0472435 0.0529685 -0.106911 +v 0.0472435 -0.0529685 0.106911 +v 0.0472435 0.0529685 0.106911 +v -0.0472435 -0.0529685 0.106911 +v -0.0472435 0.0529685 0.106911 +v -0.016435 -0.0690455 -0.106914 +v -0.016435 0.0690455 -0.106914 +v 0.016435 -0.0690455 -0.106914 +v 0.016435 0.0690455 -0.106914 +v 0.016435 -0.0690455 0.106914 +v 0.016435 0.0690455 0.106914 +v -0.016435 -0.0690455 0.106914 +v -0.016435 0.0690455 0.106914 +v -0.0332701 -0.0626721 -0.10695 +v -0.0332701 0.0626721 -0.10695 +v 0.0332701 -0.0626721 -0.10695 +v 0.0332701 0.0626721 -0.10695 +v 0.0332701 -0.0626721 0.10695 +v 0.0332701 0.0626721 0.10695 +v -0.0332701 -0.0626721 0.10695 +v -0.0332701 0.0626721 0.10695 +v -0.0591496 -0.0391821 -0.106961 +v -0.0591496 0.0391821 -0.106961 +v 0.0591496 -0.0391821 -0.106961 +v 0.0591496 0.0391821 -0.106961 +v 0.0591496 -0.0391821 0.106961 +v 0.0591496 0.0391821 0.106961 +v -0.0591496 -0.0391821 0.106961 +v -0.0591496 0.0391821 0.106961 +v -0.0214092 -0.0675765 -0.107082 +v -0.0214092 0.0675765 -0.107082 +v 0.0214092 -0.0675765 -0.107082 +v 0.0214092 0.0675765 -0.107082 +v 0.0214092 -0.0675765 0.107082 +v 0.0214092 0.0675765 0.107082 +v -0.0214092 -0.0675765 0.107082 +v -0.0214092 0.0675765 0.107082 +v -0.0697466 -0.0126542 -0.107085 +v -0.0697466 0.0126542 -0.107085 +v 0.0697466 -0.0126542 -0.107085 +v 0.0697466 0.0126542 -0.107085 +v 0.0697466 -0.0126542 0.107085 +v 0.0697466 0.0126542 0.107085 +v -0.0697466 -0.0126542 0.107085 +v -0.0697466 0.0126542 0.107085 +v -0.00788921 -0.0704285 -0.107116 +v -0.00788921 0.0704285 -0.107116 +v 0.00788921 -0.0704285 -0.107116 +v 0.00788921 0.0704285 -0.107116 +v 0.00788921 -0.0704285 0.107116 +v 0.00788921 0.0704285 0.107116 +v -0.00788921 -0.0704285 0.107116 +v -0.00788921 0.0704285 0.107116 +v -0.0700974 -0.00985854 -0.107271 +v -0.0700974 0.00985854 -0.107271 +v 0.0700974 -0.00985854 -0.107271 +v 0.0700974 0.00985854 -0.107271 +v 0.0700974 -0.00985854 0.107271 +v 0.0700974 0.00985854 0.107271 +v -0.0700974 -0.00985854 0.107271 +v -0.0700974 0.00985854 0.107271 +v -0.0645775 -0.0289768 -0.107284 +v -0.0645775 0.0289768 -0.107284 +v 0.0645775 -0.0289768 -0.107284 +v 0.0645775 0.0289768 -0.107284 +v 0.0645775 -0.0289768 0.107284 +v 0.0645775 0.0289768 0.107284 +v -0.0645775 -0.0289768 0.107284 +v -0.0645775 0.0289768 0.107284 +v -0.0444659 -0.0550513 -0.107311 +v -0.0444659 0.0550513 -0.107311 +v 0.0444659 -0.0550513 -0.107311 +v 0.0444659 0.0550513 -0.107311 +v 0.0444659 -0.0550513 0.107311 +v 0.0444659 0.0550513 0.107311 +v -0.0444659 -0.0550513 0.107311 +v -0.0444659 0.0550513 0.107311 +v -0.0360543 -0.0608783 -0.107335 +v -0.0360543 0.0608783 -0.107335 +v 0.0360543 -0.0608783 -0.107335 +v 0.0360543 0.0608783 -0.107335 +v 0.0360543 -0.0608783 0.107335 +v 0.0360543 0.0608783 0.107335 +v -0.0360543 -0.0608783 0.107335 +v -0.0360543 0.0608783 0.107335 +v -0.0514048 -0.0486075 -0.107348 +v -0.0514048 0.0486075 -0.107348 +v 0.0514048 -0.0486075 -0.107348 +v 0.0514048 0.0486075 -0.107348 +v 0.0514048 -0.0486075 0.107348 +v 0.0514048 0.0486075 0.107348 +v -0.0514048 -0.0486075 0.107348 +v -0.0514048 0.0486075 0.107348 +v -0.0553882 -0.0440044 -0.10736 +v -0.0553882 0.0440044 -0.10736 +v 0.0553882 -0.0440044 -0.10736 +v 0.0553882 0.0440044 -0.10736 +v 0.0553882 -0.0440044 0.10736 +v 0.0553882 0.0440044 0.10736 +v -0.0553882 -0.0440044 0.10736 +v -0.0553882 0.0440044 0.10736 +v -0.00658908 -0.0704285 -0.107369 +v -0.00658908 0.0704285 -0.107369 +v 0.00658908 -0.0704285 -0.107369 +v 0.00658908 0.0704285 -0.107369 +v 0.00658908 -0.0704285 0.107369 +v 0.00658908 0.0704285 0.107369 +v -0.00658908 -0.0704285 0.107369 +v -0.00658908 0.0704285 0.107369 +v -0.0703609 -0.0070506 -0.107412 +v -0.0703609 0.0070506 -0.107412 +v 0.0703609 -0.0070506 -0.107412 +v 0.0703609 0.0070506 -0.107412 +v 0.0703609 -0.0070506 0.107412 +v 0.0703609 0.0070506 0.107412 +v -0.0703609 -0.0070506 0.107412 +v -0.0703609 0.0070506 0.107412 +v -0.0292307 -0.0643878 -0.107414 +v -0.0292307 0.0643878 -0.107414 +v 0.0292307 -0.0643878 -0.107414 +v 0.0292307 0.0643878 -0.107414 +v 0.0292307 -0.0643878 0.107414 +v 0.0292307 0.0643878 0.107414 +v -0.0292307 -0.0643878 0.107414 +v -0.0292307 0.0643878 0.107414 +v -0.0252625 -0.0660233 -0.107453 +v -0.0252625 0.0660233 -0.107453 +v 0.0252625 -0.0660233 -0.107453 +v 0.0252625 0.0660233 -0.107453 +v 0.0252625 -0.0660233 0.107453 +v 0.0252625 0.0660233 0.107453 +v -0.0252625 -0.0660233 0.107453 +v -0.0252625 0.0660233 0.107453 +v -0.0151367 -0.0690455 -0.107465 +v -0.0151367 0.0690455 -0.107465 +v 0.0151367 -0.0690455 -0.107465 +v 0.0151367 0.0690455 -0.107465 +v 0.0151367 -0.0690455 0.107465 +v 0.0151367 0.0690455 0.107465 +v -0.0151367 -0.0690455 0.107465 +v -0.0151367 0.0690455 0.107465 +v -0.0705368 -0.00423388 -0.107505 +v -0.0705368 0.00423388 -0.107505 +v 0.0705368 -0.00423388 -0.107505 +v 0.0705368 0.00423388 -0.107505 +v 0.0705368 -0.00423388 0.107505 +v 0.0705368 0.00423388 0.107505 +v -0.0705368 -0.00423388 0.107505 +v -0.0705368 0.00423388 0.107505 +v -0.041666 -0.0570655 -0.107516 +v -0.041666 0.0570655 -0.107516 +v 0.041666 -0.0570655 -0.107516 +v 0.041666 0.0570655 -0.107516 +v 0.041666 -0.0570655 0.107516 +v 0.041666 0.0570655 0.107516 +v -0.041666 -0.0570655 0.107516 +v -0.041666 0.0570655 0.107516 +v -0.0388575 -0.0590087 -0.107524 +v -0.0388575 0.0590087 -0.107524 +v 0.0388575 -0.0590087 -0.107524 +v 0.0388575 0.0590087 -0.107524 +v 0.0388575 -0.0590087 0.107524 +v 0.0388575 0.0590087 0.107524 +v -0.0388575 -0.0590087 0.107524 +v -0.0388575 0.0590087 0.107524 +v -0.0706248 -0.00141188 -0.107552 +v -0.0706248 0.00141188 -0.107552 +v 0.0706248 -0.00141188 -0.107552 +v 0.0706248 0.00141188 -0.107552 +v 0.0706248 -0.00141188 0.107552 +v 0.0706248 0.00141188 0.107552 +v -0.0706248 -0.00141188 0.107552 +v -0.0706248 0.00141188 0.107552 +v -0.00528092 -0.0704285 -0.107576 +v -0.00528092 0.0704285 -0.107576 +v 0.00528092 -0.0704285 -0.107576 +v 0.00528092 0.0704285 -0.107576 +v 0.00528092 -0.0704285 0.107576 +v 0.00528092 0.0704285 0.107576 +v -0.00528092 -0.0704285 0.107576 +v -0.00528092 0.0704285 0.107576 +v -0.0602854 -0.0366961 -0.10767 +v -0.0602854 0.0366961 -0.10767 +v 0.0602854 -0.0366961 -0.10767 +v 0.0602854 0.0366961 -0.10767 +v 0.0602854 -0.0366961 0.10767 +v 0.0602854 0.0366961 0.10767 +v -0.0602854 -0.0366961 0.10767 +v -0.0602854 0.0366961 0.10767 +v -0.00396633 -0.0704285 -0.107737 +v -0.00396633 0.0704285 -0.107737 +v 0.00396633 -0.0704285 -0.107737 +v 0.00396633 0.0704285 -0.107737 +v 0.00396633 -0.0704285 0.107737 +v 0.00396633 0.0704285 0.107737 +v -0.00396633 -0.0704285 0.107737 +v -0.00396633 0.0704285 0.107737 +v -0.065423 -0.0263271 -0.107772 +v -0.065423 0.0263271 -0.107772 +v 0.065423 -0.0263271 -0.107772 +v 0.065423 0.0263271 -0.107772 +v 0.065423 -0.0263271 0.107772 +v 0.065423 0.0263271 0.107772 +v -0.065423 -0.0263271 0.107772 +v -0.065423 0.0263271 0.107772 +v -0.020102 -0.0675765 -0.107806 +v -0.020102 0.0675765 -0.107806 +v 0.020102 -0.0675765 -0.107806 +v 0.020102 0.0675765 -0.107806 +v 0.020102 -0.0675765 0.107806 +v 0.020102 0.0675765 0.107806 +v -0.020102 -0.0675765 0.107806 +v -0.020102 0.0675765 0.107806 +v -0.00264691 -0.0704285 -0.107853 +v -0.00264691 0.0704285 -0.107853 +v 0.00264691 -0.0704285 -0.107853 +v 0.00264691 0.0704285 -0.107853 +v 0.00264691 -0.0704285 0.107853 +v 0.00264691 0.0704285 0.107853 +v -0.00264691 -0.0704285 0.107853 +v -0.00264691 0.0704285 0.107853 +v -0.00132426 -0.0704285 -0.107922 +v -0.00132426 0.0704285 -0.107922 +v 0.00132426 -0.0704285 -0.107922 +v 0.00132426 0.0704285 -0.107922 +v 0.00132426 -0.0704285 0.107922 +v 0.00132426 0.0704285 0.107922 +v -0.00132426 -0.0704285 0.107922 +v -0.00132426 0.0704285 0.107922 +v -6.97039e-18 -0.0704285 -0.107945 +v -6.97039e-18 0.0704285 -0.107945 +v 2.32346e-18 -0.0704285 0.107945 +v 2.32346e-18 0.0704285 0.107945 +v -0.01382 -0.0690455 -0.10797 +v -0.01382 0.0690455 -0.10797 +v 0.01382 -0.0690455 -0.10797 +v 0.01382 0.0690455 -0.10797 +v 0.01382 -0.0690455 0.10797 +v 0.01382 0.0690455 0.10797 +v -0.01382 -0.0690455 0.10797 +v -0.01382 0.0690455 0.10797 +v -0.0486871 -0.0508196 -0.108039 +v -0.0486871 0.0508196 -0.108039 +v 0.0486871 -0.0508196 -0.108039 +v 0.0486871 0.0508196 -0.108039 +v 0.0486871 -0.0508196 0.108039 +v 0.0486871 0.0508196 0.108039 +v -0.0486871 -0.0508196 0.108039 +v -0.0486871 0.0508196 0.108039 +v -0.0319603 -0.0626721 -0.108089 +v -0.0319603 0.0626721 -0.108089 +v 0.0319603 -0.0626721 -0.108089 +v 0.0319603 0.0626721 -0.108089 +v 0.0319603 -0.0626721 0.108089 +v 0.0319603 0.0626721 0.108089 +v -0.0319603 -0.0626721 0.108089 +v -0.0319603 0.0626721 0.108089 +v -0.0566412 -0.0416192 -0.108205 +v -0.0566412 0.0416192 -0.108205 +v 0.0566412 -0.0416192 -0.108205 +v 0.0566412 0.0416192 -0.108205 +v 0.0566412 -0.0416192 0.108205 +v 0.0566412 0.0416192 0.108205 +v -0.0566412 -0.0416192 0.108205 +v -0.0566412 0.0416192 0.108205 +v -0.0661868 -0.0236447 -0.108213 +v -0.0661868 0.0236447 -0.108213 +v 0.0661868 -0.0236447 -0.108213 +v 0.0661868 0.0236447 -0.108213 +v 0.0661868 -0.0236447 0.108213 +v 0.0661868 0.0236447 0.108213 +v -0.0661868 -0.0236447 0.108213 +v -0.0661868 0.0236447 0.108213 +v -0.02394 -0.0660233 -0.108312 +v -0.02394 0.0660233 -0.108312 +v 0.02394 -0.0660233 -0.108312 +v 0.02394 0.0660233 -0.108312 +v 0.02394 -0.0660233 0.108312 +v 0.02394 0.0660233 0.108312 +v -0.02394 -0.0660233 0.108312 +v -0.02394 0.0660233 0.108312 +v -0.0613461 -0.0341645 -0.108333 +v -0.0613461 0.0341645 -0.108333 +v 0.0613461 -0.0341645 -0.108333 +v 0.0613461 0.0341645 -0.108333 +v 0.0613461 -0.0341645 0.108333 +v 0.0613461 0.0341645 0.108333 +v -0.0613461 -0.0341645 0.108333 +v -0.0613461 0.0341645 0.108333 +v -0.0527606 -0.0463348 -0.108333 +v -0.0527606 0.0463348 -0.108333 +v 0.0527606 -0.0463348 -0.108333 +v 0.0527606 0.0463348 -0.108333 +v 0.0527606 -0.0463348 0.108333 +v 0.0527606 0.0463348 0.108333 +v -0.0527606 -0.0463348 0.108333 +v -0.0527606 0.0463348 0.108333 +v -0.0279072 -0.0643878 -0.108411 +v -0.0279072 0.0643878 -0.108411 +v 0.0279072 -0.0643878 -0.108411 +v 0.0279072 0.0643878 -0.108411 +v 0.0279072 -0.0643878 0.108411 +v 0.0279072 0.0643878 0.108411 +v -0.0279072 -0.0643878 0.108411 +v -0.0279072 0.0643878 0.108411 +v -0.0124864 -0.0690455 -0.108429 +v -0.0124864 0.0690455 -0.108429 +v 0.0124864 -0.0690455 -0.108429 +v 0.0124864 0.0690455 -0.108429 +v 0.0124864 -0.0690455 0.108429 +v 0.0124864 0.0690455 0.108429 +v -0.0124864 -0.0690455 0.108429 +v -0.0124864 0.0690455 0.108429 +v -0.0187704 -0.0675765 -0.108485 +v -0.0187704 0.0675765 -0.108485 +v 0.0187704 -0.0675765 -0.108485 +v 0.0187704 0.0675765 -0.108485 +v 0.0187704 -0.0675765 0.108485 +v 0.0187704 0.0675765 0.108485 +v -0.0187704 -0.0675765 0.108485 +v -0.0187704 0.0675765 0.108485 +v -0.0459265 -0.0529685 -0.108537 +v -0.0459265 0.0529685 -0.108537 +v 0.0459265 -0.0529685 -0.108537 +v 0.0459265 0.0529685 -0.108537 +v 0.0459265 -0.0529685 0.108537 +v 0.0459265 0.0529685 0.108537 +v -0.0459265 -0.0529685 0.108537 +v -0.0459265 0.0529685 0.108537 +v -0.0347293 -0.0608783 -0.108571 +v -0.0347293 0.0608783 -0.108571 +v 0.0347293 -0.0608783 -0.108571 +v 0.0347293 0.0608783 -0.108571 +v 0.0347293 -0.0608783 0.108571 +v 0.0347293 0.0608783 0.108571 +v -0.0347293 -0.0608783 0.108571 +v -0.0347293 0.0608783 0.108571 +v -0.0668683 -0.0209327 -0.108606 +v -0.0668683 0.0209327 -0.108606 +v 0.0668683 -0.0209327 -0.108606 +v 0.0668683 0.0209327 -0.108606 +v 0.0668683 -0.0209327 0.108606 +v 0.0668683 0.0209327 0.108606 +v -0.0668683 -0.0209327 0.108606 +v -0.0668683 0.0209327 0.108606 +v -0.0431367 -0.0550513 -0.10884 +v -0.0431367 0.0550513 -0.10884 +v 0.0431367 -0.0550513 -0.10884 +v 0.0431367 0.0550513 -0.10884 +v 0.0431367 -0.0550513 0.10884 +v 0.0431367 0.0550513 0.10884 +v -0.0431367 -0.0550513 0.10884 +v -0.0431367 0.0550513 0.10884 +v -0.0111377 -0.0690455 -0.108842 +v -0.0111377 0.0690455 -0.108842 +v 0.0111377 -0.0690455 -0.108842 +v 0.0111377 0.0690455 -0.108842 +v 0.0111377 -0.0690455 0.108842 +v 0.0111377 0.0690455 0.108842 +v -0.0111377 -0.0690455 0.108842 +v -0.0111377 0.0690455 0.108842 +v -0.0375243 -0.0590087 -0.108858 +v -0.0375243 0.0590087 -0.108858 +v 0.0375243 -0.0590087 -0.108858 +v 0.0375243 0.0590087 -0.108858 +v 0.0375243 -0.0590087 0.108858 +v 0.0375243 0.0590087 0.108858 +v -0.0375243 -0.0590087 0.108858 +v -0.0375243 0.0590087 0.108858 +v -0.0623304 -0.0315903 -0.108948 +v -0.0623304 0.0315903 -0.108948 +v 0.0623304 -0.0315903 -0.108948 +v 0.0623304 0.0315903 -0.108948 +v 0.0623304 -0.0315903 0.108948 +v 0.0623304 0.0315903 0.108948 +v -0.0623304 -0.0315903 0.108948 +v -0.0623304 0.0315903 0.108948 +v -0.0403313 -0.0570655 -0.108948 +v -0.0403313 0.0570655 -0.108948 +v 0.0403313 -0.0570655 -0.108948 +v 0.0403313 0.0570655 -0.108948 +v 0.0403313 -0.0570655 0.108948 +v 0.0403313 0.0570655 0.108948 +v -0.0403313 -0.0570655 0.108948 +v -0.0403313 0.0570655 0.108948 +v -0.0674664 -0.0181947 -0.108952 +v -0.0674664 0.0181947 -0.108952 +v 0.0674664 -0.0181947 -0.108952 +v 0.0674664 0.0181947 -0.108952 +v 0.0674664 -0.0181947 0.108952 +v 0.0674664 0.0181947 0.108952 +v -0.0674664 -0.0181947 0.108952 +v -0.0674664 0.0181947 0.108952 +v -0.0578236 -0.0391821 -0.109003 +v -0.0578236 0.0391821 -0.109003 +v 0.0578236 -0.0391821 -0.109003 +v 0.0578236 0.0391821 -0.109003 +v 0.0578236 -0.0391821 0.109003 +v 0.0578236 0.0391821 0.109003 +v -0.0578236 -0.0391821 0.109003 +v -0.0578236 0.0391821 0.109003 +v -0.0174158 -0.0675765 -0.109117 +v -0.0174158 0.0675765 -0.109117 +v 0.0174158 -0.0675765 -0.109117 +v 0.0174158 0.0675765 -0.109117 +v 0.0174158 -0.0675765 0.109117 +v 0.0174158 0.0675765 0.109117 +v -0.0174158 -0.0675765 0.109117 +v -0.0174158 0.0675765 0.109117 +v -0.0500701 -0.0486075 -0.109119 +v -0.0500701 0.0486075 -0.109119 +v 0.0500701 -0.0486075 -0.109119 +v 0.0500701 0.0486075 -0.109119 +v 0.0500701 -0.0486075 0.109119 +v 0.0500701 0.0486075 0.109119 +v -0.0500701 -0.0486075 0.109119 +v -0.0500701 0.0486075 0.109119 +v -0.0225883 -0.0660233 -0.109124 +v -0.0225883 0.0660233 -0.109124 +v 0.0225883 -0.0660233 -0.109124 +v 0.0225883 0.0660233 -0.109124 +v 0.0225883 -0.0660233 0.109124 +v 0.0225883 0.0660233 0.109124 +v -0.0225883 -0.0660233 0.109124 +v -0.0225883 0.0660233 0.109124 +v -0.0306115 -0.0626721 -0.109181 +v -0.0306115 0.0626721 -0.109181 +v 0.0306115 -0.0626721 -0.109181 +v 0.0306115 0.0626721 -0.109181 +v 0.0306115 -0.0626721 0.109181 +v 0.0306115 0.0626721 0.109181 +v -0.0306115 -0.0626721 0.109181 +v -0.0306115 0.0626721 0.109181 +v -0.00977531 -0.0690455 -0.109207 +v -0.00977531 0.0690455 -0.109207 +v 0.00977531 -0.0690455 -0.109207 +v 0.00977531 0.0690455 -0.109207 +v 0.00977531 -0.0690455 0.109207 +v 0.00977531 0.0690455 0.109207 +v -0.00977531 -0.0690455 0.109207 +v -0.00977531 0.0690455 0.109207 +v -0.0679805 -0.0154341 -0.109249 +v -0.0679805 0.0154341 -0.109249 +v 0.0679805 -0.0154341 -0.109249 +v 0.0679805 0.0154341 -0.109249 +v 0.0679805 -0.0154341 0.109249 +v 0.0679805 0.0154341 0.109249 +v -0.0679805 -0.0154341 0.109249 +v -0.0679805 0.0154341 0.109249 +v -0.0540506 -0.0440044 -0.10927 +v -0.0540506 0.0440044 -0.10927 +v 0.0540506 -0.0440044 -0.10927 +v 0.0540506 0.0440044 -0.10927 +v 0.0540506 -0.0440044 0.10927 +v 0.0540506 0.0440044 0.10927 +v -0.0540506 -0.0440044 0.10927 +v -0.0540506 0.0440044 0.10927 +v -0.0265497 -0.0643878 -0.109362 +v -0.0265497 0.0643878 -0.109362 +v 0.0265497 -0.0643878 -0.109362 +v 0.0265497 0.0643878 -0.109362 +v 0.0265497 -0.0643878 0.109362 +v 0.0265497 0.0643878 0.109362 +v -0.0265497 -0.0643878 0.109362 +v -0.0265497 0.0643878 0.109362 +v -0.0684098 -0.0126542 -0.109496 +v -0.0684098 0.0126542 -0.109496 +v 0.0684098 -0.0126542 -0.109496 +v 0.0684098 0.0126542 -0.109496 +v 0.0684098 -0.0126542 0.109496 +v 0.0684098 0.0126542 0.109496 +v -0.0684098 -0.0126542 0.109496 +v -0.0684098 0.0126542 0.109496 +v -0.063237 -0.0289768 -0.109515 +v -0.063237 0.0289768 -0.109515 +v 0.063237 -0.0289768 -0.109515 +v 0.063237 0.0289768 -0.109515 +v 0.063237 -0.0289768 0.109515 +v 0.063237 0.0289768 0.109515 +v -0.063237 -0.0289768 0.109515 +v -0.063237 0.0289768 0.109515 +v -0.00840107 -0.0690455 -0.109524 +v -0.00840107 0.0690455 -0.109524 +v 0.00840107 -0.0690455 -0.109524 +v 0.00840107 0.0690455 -0.109524 +v 0.00840107 -0.0690455 0.109524 +v 0.00840107 0.0690455 0.109524 +v -0.00840107 -0.0690455 0.109524 +v -0.00840107 0.0690455 0.109524 +v -0.068754 -0.00985854 -0.109695 +v -0.068754 0.00985854 -0.109695 +v 0.068754 -0.00985854 -0.109695 +v 0.068754 0.00985854 -0.109695 +v 0.068754 -0.00985854 0.109695 +v 0.068754 0.00985854 0.109695 +v -0.068754 -0.00985854 0.109695 +v -0.068754 0.00985854 0.109695 +v -0.0160401 -0.0675765 -0.109701 +v -0.0160401 0.0675765 -0.109701 +v 0.0160401 -0.0675765 -0.109701 +v 0.0160401 0.0675765 -0.109701 +v 0.0160401 -0.0675765 0.109701 +v 0.0160401 0.0675765 0.109701 +v -0.0160401 -0.0675765 0.109701 +v -0.0160401 0.0675765 0.109701 +v -0.0473299 -0.0508196 -0.109715 +v -0.0473299 0.0508196 -0.109715 +v 0.0473299 -0.0508196 -0.109715 +v 0.0473299 0.0508196 -0.109715 +v 0.0473299 -0.0508196 0.109715 +v 0.0473299 0.0508196 0.109715 +v -0.0473299 -0.0508196 0.109715 +v -0.0473299 0.0508196 0.109715 +v -0.058934 -0.0366961 -0.109751 +v -0.058934 0.0366961 -0.109751 +v 0.058934 -0.0366961 -0.109751 +v 0.058934 0.0366961 -0.109751 +v 0.058934 -0.0366961 0.109751 +v 0.058934 0.0366961 0.109751 +v -0.058934 -0.0366961 0.109751 +v -0.058934 0.0366961 0.109751 +v -0.0333621 -0.0608783 -0.109759 +v -0.0333621 0.0608783 -0.109759 +v 0.0333621 -0.0608783 -0.109759 +v 0.0333621 0.0608783 -0.109759 +v 0.0333621 -0.0608783 0.109759 +v 0.0333621 0.0608783 0.109759 +v -0.0333621 -0.0608783 0.109759 +v -0.0333621 0.0608783 0.109759 +v -0.00701658 -0.0690455 -0.109793 +v -0.00701658 0.0690455 -0.109793 +v 0.00701658 -0.0690455 -0.109793 +v 0.00701658 0.0690455 -0.109793 +v 0.00701658 -0.0690455 0.109793 +v 0.00701658 0.0690455 0.109793 +v -0.00701658 -0.0690455 0.109793 +v -0.00701658 0.0690455 0.109793 +v -0.0690124 -0.0070506 -0.109844 +v -0.0690124 0.0070506 -0.109844 +v 0.0690124 -0.0070506 -0.109844 +v 0.0690124 0.0070506 -0.109844 +v 0.0690124 -0.0070506 0.109844 +v 0.0690124 0.0070506 0.109844 +v -0.0690124 -0.0070506 0.109844 +v -0.0690124 0.0070506 0.109844 +v -0.0212092 -0.0660233 -0.109889 +v -0.0212092 0.0660233 -0.109889 +v 0.0212092 -0.0660233 -0.109889 +v 0.0212092 0.0660233 -0.109889 +v 0.0212092 -0.0660233 0.109889 +v 0.0212092 0.0660233 0.109889 +v -0.0212092 -0.0660233 0.109889 +v -0.0212092 0.0660233 0.109889 +v -0.0691849 -0.00423388 -0.109944 +v -0.0691849 0.00423388 -0.109944 +v 0.0691849 -0.00423388 -0.109944 +v 0.0691849 0.00423388 -0.109944 +v 0.0691849 -0.00423388 0.109944 +v 0.0691849 0.00423388 0.109944 +v -0.0691849 -0.00423388 0.109944 +v -0.0691849 0.00423388 0.109944 +v -0.0692712 -0.00141188 -0.109994 +v -0.0692712 0.00141188 -0.109994 +v 0.0692712 -0.00141188 -0.109994 +v 0.0692712 0.00141188 -0.109994 +v 0.0692712 -0.00141188 0.109994 +v 0.0692712 0.00141188 0.109994 +v -0.0692712 -0.00141188 0.109994 +v -0.0692712 0.00141188 0.109994 +v -0.00562355 -0.0690455 -0.110014 +v -0.00562355 0.0690455 -0.110014 +v 0.00562355 -0.0690455 -0.110014 +v 0.00562355 0.0690455 -0.110014 +v 0.00562355 -0.0690455 0.110014 +v 0.00562355 0.0690455 0.110014 +v -0.00562355 -0.0690455 0.110014 +v -0.00562355 0.0690455 0.110014 +v -0.0640649 -0.0263271 -0.110032 +v -0.0640649 0.0263271 -0.110032 +v 0.0640649 -0.0263271 -0.110032 +v 0.0640649 0.0263271 -0.110032 +v 0.0640649 -0.0263271 0.110032 +v 0.0640649 0.0263271 0.110032 +v -0.0640649 -0.0263271 0.110032 +v -0.0640649 0.0263271 0.110032 +v -0.0445536 -0.0529685 -0.110116 +v -0.0445536 0.0529685 -0.110116 +v 0.0445536 -0.0529685 -0.110116 +v 0.0445536 0.0529685 -0.110116 +v 0.0445536 -0.0529685 0.110116 +v 0.0445536 0.0529685 0.110116 +v -0.0445536 -0.0529685 0.110116 +v -0.0445536 0.0529685 0.110116 +v -0.0361453 -0.0590087 -0.110143 +v -0.0361453 0.0590087 -0.110143 +v 0.0361453 -0.0590087 -0.110143 +v 0.0361453 0.0590087 -0.110143 +v 0.0361453 -0.0590087 0.110143 +v 0.0361453 0.0590087 0.110143 +v -0.0361453 -0.0590087 0.110143 +v -0.0361453 0.0590087 0.110143 +v -0.0513907 -0.0463348 -0.110151 +v -0.0513907 0.0463348 -0.110151 +v 0.0513907 -0.0463348 -0.110151 +v 0.0513907 0.0463348 -0.110151 +v 0.0513907 -0.0463348 0.110151 +v 0.0513907 0.0463348 0.110151 +v -0.0513907 -0.0463348 0.110151 +v -0.0513907 0.0463348 0.110151 +v -0.0552734 -0.0416192 -0.110158 +v -0.0552734 0.0416192 -0.110158 +v 0.0552734 -0.0416192 -0.110158 +v 0.0552734 0.0416192 -0.110158 +v 0.0552734 -0.0416192 0.110158 +v 0.0552734 0.0416192 0.110158 +v -0.0552734 -0.0416192 0.110158 +v -0.0552734 0.0416192 0.110158 +v -0.00422367 -0.0690455 -0.110186 +v -0.00422367 0.0690455 -0.110186 +v 0.00422367 -0.0690455 -0.110186 +v 0.00422367 0.0690455 -0.110186 +v 0.00422367 -0.0690455 0.110186 +v 0.00422367 0.0690455 0.110186 +v -0.00422367 -0.0690455 0.110186 +v -0.00422367 0.0690455 0.110186 +v -0.0292255 -0.0626721 -0.110225 +v -0.0292255 0.0626721 -0.110225 +v 0.0292255 -0.0626721 -0.110225 +v 0.0292255 0.0626721 -0.110225 +v 0.0292255 -0.0626721 0.110225 +v 0.0292255 0.0626721 0.110225 +v -0.0292255 -0.0626721 0.110225 +v -0.0292255 0.0626721 0.110225 +v -0.0146448 -0.0675765 -0.110236 +v -0.0146448 0.0675765 -0.110236 +v 0.0146448 -0.0675765 -0.110236 +v 0.0146448 0.0675765 -0.110236 +v 0.0146448 -0.0675765 0.110236 +v 0.0146448 0.0675765 0.110236 +v -0.0146448 -0.0675765 0.110236 +v -0.0146448 0.0675765 0.110236 +v -0.0251598 -0.0643878 -0.110264 +v -0.0251598 0.0643878 -0.110264 +v 0.0251598 -0.0643878 -0.110264 +v 0.0251598 0.0643878 -0.110264 +v 0.0251598 -0.0643878 0.110264 +v 0.0251598 0.0643878 0.110264 +v -0.0251598 -0.0643878 0.110264 +v -0.0251598 0.0643878 0.110264 +v -0.00281864 -0.0690455 -0.110308 +v -0.00281864 0.0690455 -0.110308 +v 0.00281864 -0.0690455 -0.110308 +v 0.00281864 0.0690455 -0.110308 +v 0.00281864 -0.0690455 0.110308 +v 0.00281864 0.0690455 0.110308 +v -0.00281864 -0.0690455 0.110308 +v -0.00281864 0.0690455 0.110308 +v -0.0417549 -0.0550513 -0.110322 +v -0.0417549 0.0550513 -0.110322 +v 0.0417549 -0.0550513 -0.110322 +v 0.0417549 0.0550513 -0.110322 +v 0.0417549 -0.0550513 0.110322 +v 0.0417549 0.0550513 0.110322 +v -0.0417549 -0.0550513 0.110322 +v -0.0417549 0.0550513 0.110322 +v -0.0389475 -0.0570655 -0.110331 +v -0.0389475 0.0570655 -0.110331 +v 0.0389475 -0.0570655 -0.110331 +v 0.0389475 0.0570655 -0.110331 +v 0.0389475 -0.0570655 0.110331 +v 0.0389475 0.0570655 0.110331 +v -0.0389475 -0.0570655 0.110331 +v -0.0389475 0.0570655 0.110331 +v -0.00141018 -0.0690455 -0.110382 +v -0.00141018 0.0690455 -0.110382 +v 0.00141018 -0.0690455 -0.110382 +v 0.00141018 0.0690455 -0.110382 +v 0.00141018 -0.0690455 0.110382 +v 0.00141018 0.0690455 0.110382 +v -0.00141018 -0.0690455 0.110382 +v -0.00141018 0.0690455 0.110382 +v -7.42263e-18 -0.0690455 -0.110407 +v -7.42263e-18 0.0690455 -0.110407 +v 2.47421e-18 -0.0690455 0.110407 +v 2.47421e-18 0.0690455 0.110407 +v -0.0599709 -0.0341645 -0.110451 +v -0.0599709 0.0341645 -0.110451 +v 0.0599709 -0.0341645 -0.110451 +v 0.0599709 0.0341645 -0.110451 +v 0.0599709 -0.0341645 0.110451 +v 0.0599709 0.0341645 0.110451 +v -0.0599709 -0.0341645 0.110451 +v -0.0599709 0.0341645 0.110451 +v -0.0648129 -0.0236447 -0.1105 +v -0.0648129 0.0236447 -0.1105 +v 0.0648129 -0.0236447 -0.1105 +v 0.0648129 0.0236447 -0.1105 +v 0.0648129 -0.0236447 0.1105 +v 0.0648129 0.0236447 0.1105 +v -0.0648129 -0.0236447 0.1105 +v -0.0648129 0.0236447 0.1105 +v -0.0198041 -0.0660233 -0.110605 +v -0.0198041 0.0660233 -0.110605 +v 0.0198041 -0.0660233 -0.110605 +v 0.0198041 0.0660233 -0.110605 +v 0.0198041 -0.0660233 0.110605 +v 0.0198041 0.0660233 0.110605 +v -0.0198041 -0.0660233 0.110605 +v -0.0198041 0.0660233 0.110605 +v -0.0132316 -0.0675765 -0.110723 +v -0.0132316 0.0675765 -0.110723 +v 0.0132316 -0.0675765 -0.110723 +v 0.0132316 0.0675765 -0.110723 +v 0.0132316 -0.0675765 0.110723 +v 0.0132316 0.0675765 0.110723 +v -0.0132316 -0.0675765 0.110723 +v -0.0132316 0.0675765 0.110723 +v -0.0486743 -0.0486075 -0.110843 +v -0.0486743 0.0486075 -0.110843 +v 0.0486743 -0.0486075 -0.110843 +v 0.0486743 0.0486075 -0.110843 +v 0.0486743 -0.0486075 0.110843 +v 0.0486743 0.0486075 0.110843 +v -0.0486743 -0.0486075 0.110843 +v -0.0486743 0.0486075 0.110843 +v -0.0319541 -0.0608783 -0.110899 +v -0.0319541 0.0608783 -0.110899 +v 0.0319541 -0.0608783 -0.110899 +v 0.0319541 0.0608783 -0.110899 +v 0.0319541 -0.0608783 0.110899 +v 0.0319541 0.0608783 0.110899 +v -0.0319541 -0.0608783 0.110899 +v -0.0319541 0.0608783 0.110899 +v -0.0654802 -0.0209327 -0.110917 +v -0.0654802 0.0209327 -0.110917 +v 0.0654802 -0.0209327 -0.110917 +v 0.0654802 0.0209327 -0.110917 +v 0.0654802 -0.0209327 0.110917 +v 0.0654802 0.0209327 0.110917 +v -0.0654802 -0.0209327 0.110917 +v -0.0654802 0.0209327 0.110917 +v -0.0564272 -0.0391821 -0.110997 +v -0.0564272 0.0391821 -0.110997 +v 0.0564272 -0.0391821 -0.110997 +v 0.0564272 0.0391821 -0.110997 +v 0.0564272 -0.0391821 0.110997 +v 0.0564272 0.0391821 0.110997 +v -0.0564272 -0.0391821 0.110997 +v -0.0564272 0.0391821 0.110997 +v -0.0609331 -0.0315903 -0.1111 +v -0.0609331 0.0315903 -0.1111 +v 0.0609331 -0.0315903 -0.1111 +v 0.0609331 0.0315903 -0.1111 +v 0.0609331 -0.0315903 0.1111 +v 0.0609331 0.0315903 0.1111 +v -0.0609331 -0.0315903 0.1111 +v -0.0609331 0.0315903 0.1111 +v -0.0237393 -0.0643878 -0.111118 +v -0.0237393 0.0643878 -0.111118 +v 0.0237393 -0.0643878 -0.111118 +v 0.0237393 0.0643878 -0.111118 +v 0.0237393 -0.0643878 0.111118 +v 0.0237393 0.0643878 0.111118 +v -0.0237393 -0.0643878 0.111118 +v -0.0237393 0.0643878 0.111118 +v -0.0526472 -0.0440044 -0.111133 +v -0.0526472 0.0440044 -0.111133 +v 0.0526472 -0.0440044 -0.111133 +v 0.0526472 0.0440044 -0.111133 +v 0.0526472 -0.0440044 0.111133 +v 0.0526472 0.0440044 0.111133 +v -0.0526472 -0.0440044 0.111133 +v -0.0526472 0.0440044 0.111133 +v -0.0118024 -0.0675765 -0.11116 +v -0.0118024 0.0675765 -0.11116 +v 0.0118024 -0.0675765 -0.11116 +v 0.0118024 0.0675765 -0.11116 +v 0.0118024 -0.0675765 0.11116 +v 0.0118024 0.0675765 0.11116 +v -0.0118024 -0.0675765 0.11116 +v -0.0118024 0.0675765 0.11116 +v -0.0278038 -0.0626721 -0.111221 +v -0.0278038 0.0626721 -0.111221 +v 0.0278038 -0.0626721 -0.111221 +v 0.0278038 0.0626721 -0.111221 +v 0.0278038 -0.0626721 0.111221 +v 0.0278038 0.0626721 0.111221 +v -0.0278038 -0.0626721 0.111221 +v -0.0278038 0.0626721 0.111221 +v -0.018375 -0.0660233 -0.111271 +v -0.018375 0.0660233 -0.111271 +v 0.018375 -0.0660233 -0.111271 +v 0.018375 0.0660233 -0.111271 +v 0.018375 -0.0660233 0.111271 +v 0.018375 0.0660233 0.111271 +v -0.018375 -0.0660233 0.111271 +v -0.018375 0.0660233 0.111271 +v -0.0660659 -0.0181947 -0.111283 +v -0.0660659 0.0181947 -0.111283 +v 0.0660659 -0.0181947 -0.111283 +v 0.0660659 0.0181947 -0.111283 +v 0.0660659 -0.0181947 0.111283 +v 0.0660659 0.0181947 0.111283 +v -0.0660659 -0.0181947 0.111283 +v -0.0660659 0.0181947 0.111283 +v -0.0459151 -0.0508196 -0.111342 +v -0.0459151 0.0508196 -0.111342 +v 0.0459151 -0.0508196 -0.111342 +v 0.0459151 0.0508196 -0.111342 +v 0.0459151 -0.0508196 0.111342 +v 0.0459151 0.0508196 0.111342 +v -0.0459151 -0.0508196 0.111342 +v -0.0459151 0.0508196 0.111342 +v -0.0347223 -0.0590087 -0.11138 +v -0.0347223 0.0590087 -0.11138 +v 0.0347223 -0.0590087 -0.11138 +v 0.0347223 0.0590087 -0.11138 +v 0.0347223 -0.0590087 0.11138 +v 0.0347223 0.0590087 0.11138 +v -0.0347223 -0.0590087 0.11138 +v -0.0347223 0.0590087 0.11138 +v -0.0103587 -0.0675765 -0.111547 +v -0.0103587 0.0675765 -0.111547 +v 0.0103587 -0.0675765 -0.111547 +v 0.0103587 0.0675765 -0.111547 +v 0.0103587 -0.0675765 0.111547 +v 0.0103587 0.0675765 0.111547 +v -0.0103587 -0.0675765 0.111547 +v -0.0103587 0.0675765 0.111547 +v -0.0665693 -0.0154341 -0.111597 +v -0.0665693 0.0154341 -0.111597 +v 0.0665693 -0.0154341 -0.111597 +v 0.0665693 0.0154341 -0.111597 +v 0.0665693 -0.0154341 0.111597 +v 0.0665693 0.0154341 0.111597 +v -0.0665693 -0.0154341 0.111597 +v -0.0665693 0.0154341 0.111597 +v -0.0431265 -0.0529685 -0.111647 +v -0.0431265 0.0529685 -0.111647 +v 0.0431265 -0.0529685 -0.111647 +v 0.0431265 0.0529685 -0.111647 +v 0.0431265 -0.0529685 0.111647 +v 0.0431265 0.0529685 0.111647 +v -0.0431265 -0.0529685 0.111647 +v -0.0431265 0.0529685 0.111647 +v -0.0375162 -0.0570655 -0.111666 +v -0.0375162 0.0570655 -0.111666 +v 0.0375162 -0.0570655 -0.111666 +v 0.0375162 0.0570655 -0.111666 +v 0.0375162 -0.0570655 0.111666 +v 0.0375162 0.0570655 0.111666 +v -0.0375162 -0.0570655 0.111666 +v -0.0375162 0.0570655 0.111666 +v -0.0618195 -0.0289768 -0.111698 +v -0.0618195 0.0289768 -0.111698 +v 0.0618195 -0.0289768 -0.111698 +v 0.0618195 0.0289768 -0.111698 +v 0.0618195 -0.0289768 0.111698 +v 0.0618195 0.0289768 0.111698 +v -0.0618195 -0.0289768 0.111698 +v -0.0618195 0.0289768 0.111698 +v -0.0403222 -0.0550513 -0.111755 +v -0.0403222 0.0550513 -0.111755 +v 0.0403222 -0.0550513 -0.111755 +v 0.0403222 0.0550513 -0.111755 +v 0.0403222 -0.0550513 0.111755 +v 0.0403222 0.0550513 0.111755 +v -0.0403222 -0.0550513 0.111755 +v -0.0403222 0.0550513 0.111755 +v -0.0575108 -0.0366961 -0.111784 +v -0.0575108 0.0366961 -0.111784 +v 0.0575108 -0.0366961 -0.111784 +v 0.0575108 0.0366961 -0.111784 +v 0.0575108 -0.0366961 0.111784 +v 0.0575108 0.0366961 0.111784 +v -0.0575108 -0.0366961 0.111784 +v -0.0575108 0.0366961 0.111784 +v -0.0669897 -0.0126542 -0.11186 +v -0.0669897 0.0126542 -0.11186 +v 0.0669897 -0.0126542 -0.11186 +v 0.0669897 0.0126542 -0.11186 +v 0.0669897 -0.0126542 0.11186 +v 0.0669897 0.0126542 0.11186 +v -0.0669897 -0.0126542 0.11186 +v -0.0669897 0.0126542 0.11186 +v -0.00890246 -0.0675765 -0.111883 +v -0.00890246 0.0675765 -0.111883 +v 0.00890246 -0.0675765 -0.111883 +v 0.00890246 0.0675765 -0.111883 +v 0.00890246 -0.0675765 0.111883 +v 0.00890246 0.0675765 0.111883 +v -0.00890246 -0.0675765 0.111883 +v -0.00890246 0.0675765 0.111883 +v -0.0169235 -0.0660233 -0.111887 +v -0.0169235 0.0660233 -0.111887 +v 0.0169235 -0.0660233 -0.111887 +v 0.0169235 0.0660233 -0.111887 +v 0.0169235 -0.0660233 0.111887 +v 0.0169235 0.0660233 0.111887 +v -0.0169235 -0.0660233 0.111887 +v -0.0169235 0.0660233 0.111887 +v -0.0499581 -0.0463348 -0.11192 +v -0.0499581 0.0463348 -0.11192 +v 0.0499581 -0.0463348 -0.11192 +v 0.0499581 0.0463348 -0.11192 +v 0.0499581 -0.0463348 0.11192 +v 0.0499581 0.0463348 0.11192 +v -0.0499581 -0.0463348 0.11192 +v -0.0499581 0.0463348 0.11192 +v -0.0222898 -0.0643878 -0.111921 +v -0.0222898 0.0643878 -0.111921 +v 0.0222898 -0.0643878 -0.111921 +v 0.0222898 0.0643878 -0.111921 +v 0.0222898 -0.0643878 0.111921 +v 0.0222898 0.0643878 0.111921 +v -0.0222898 -0.0643878 0.111921 +v -0.0222898 0.0643878 0.111921 +v -0.0305073 -0.0608783 -0.11199 +v -0.0305073 0.0608783 -0.11199 +v 0.0305073 -0.0608783 -0.11199 +v 0.0305073 0.0608783 -0.11199 +v 0.0305073 -0.0608783 0.11199 +v 0.0305073 0.0608783 0.11199 +v -0.0305073 -0.0608783 0.11199 +v -0.0305073 0.0608783 0.11199 +v -0.0538382 -0.0416192 -0.112063 +v -0.0538382 0.0416192 -0.112063 +v 0.0538382 -0.0416192 -0.112063 +v 0.0538382 0.0416192 -0.112063 +v 0.0538382 -0.0416192 0.112063 +v 0.0538382 0.0416192 0.112063 +v -0.0538382 -0.0416192 0.112063 +v -0.0538382 0.0416192 0.112063 +v -0.0673267 -0.00985854 -0.11207 +v -0.0673267 0.00985854 -0.11207 +v 0.0673267 -0.00985854 -0.11207 +v 0.0673267 0.00985854 -0.11207 +v 0.0673267 -0.00985854 0.11207 +v 0.0673267 0.00985854 0.11207 +v -0.0673267 -0.00985854 0.11207 +v -0.0673267 0.00985854 0.11207 +v -0.0263483 -0.0626721 -0.112166 +v -0.0263483 0.0626721 -0.112166 +v 0.0263483 -0.0626721 -0.112166 +v 0.0263483 0.0626721 -0.112166 +v 0.0263483 -0.0626721 0.112166 +v 0.0263483 0.0626721 0.112166 +v -0.0263483 -0.0626721 0.112166 +v -0.0263483 0.0626721 0.112166 +v -0.00743535 -0.0675765 -0.112168 +v -0.00743535 0.0675765 -0.112168 +v 0.00743535 -0.0675765 -0.112168 +v 0.00743535 0.0675765 -0.112168 +v 0.00743535 -0.0675765 0.112168 +v 0.00743535 0.0675765 0.112168 +v -0.00743535 -0.0675765 0.112168 +v -0.00743535 0.0675765 0.112168 +v -0.0675799 -0.0070506 -0.112229 +v -0.0675799 0.0070506 -0.112229 +v 0.0675799 -0.0070506 -0.112229 +v 0.0675799 0.0070506 -0.112229 +v 0.0675799 -0.0070506 0.112229 +v 0.0675799 0.0070506 0.112229 +v -0.0675799 -0.0070506 0.112229 +v -0.0675799 0.0070506 0.112229 +v -0.0626287 -0.0263271 -0.112244 +v -0.0626287 0.0263271 -0.112244 +v 0.0626287 -0.0263271 -0.112244 +v 0.0626287 0.0263271 -0.112244 +v 0.0626287 -0.0263271 0.112244 +v 0.0626287 0.0263271 0.112244 +v -0.0626287 -0.0263271 0.112244 +v -0.0626287 0.0263271 0.112244 +v -0.0677488 -0.00423388 -0.112334 +v -0.0677488 0.00423388 -0.112334 +v 0.0677488 -0.00423388 -0.112334 +v 0.0677488 0.00423388 -0.112334 +v 0.0677488 -0.00423388 0.112334 +v 0.0677488 0.00423388 0.112334 +v -0.0677488 -0.00423388 0.112334 +v -0.0677488 0.00423388 0.112334 +v -0.0678333 -0.00141188 -0.112387 +v -0.0678333 0.00141188 -0.112387 +v 0.0678333 -0.00141188 -0.112387 +v 0.0678333 0.00141188 -0.112387 +v 0.0678333 -0.00141188 0.112387 +v 0.0678333 0.00141188 0.112387 +v -0.0678333 -0.00141188 0.112387 +v -0.0678333 0.00141188 0.112387 +v -0.00595918 -0.0675765 -0.112402 +v -0.00595918 0.0675765 -0.112402 +v 0.00595918 -0.0675765 -0.112402 +v 0.00595918 0.0675765 -0.112402 +v 0.00595918 -0.0675765 0.112402 +v 0.00595918 0.0675765 0.112402 +v -0.00595918 -0.0675765 0.112402 +v -0.00595918 0.0675765 0.112402 +v -0.0154513 -0.0660233 -0.112452 +v -0.0154513 0.0660233 -0.112452 +v 0.0154513 -0.0660233 -0.112452 +v 0.0154513 0.0660233 -0.112452 +v 0.0154513 -0.0660233 0.112452 +v 0.0154513 0.0660233 0.112452 +v -0.0154513 -0.0660233 0.112452 +v -0.0154513 0.0660233 0.112452 +v -0.0472193 -0.0486075 -0.112516 +v -0.0472193 0.0486075 -0.112516 +v 0.0472193 -0.0486075 -0.112516 +v 0.0472193 0.0486075 -0.112516 +v 0.0472193 -0.0486075 0.112516 +v 0.0472193 0.0486075 0.112516 +v -0.0472193 -0.0486075 0.112516 +v -0.0472193 0.0486075 0.112516 +v -0.0585227 -0.0341645 -0.112519 +v -0.0585227 0.0341645 -0.112519 +v 0.0585227 -0.0341645 -0.112519 +v 0.0585227 0.0341645 -0.112519 +v 0.0585227 -0.0341645 0.112519 +v 0.0585227 0.0341645 0.112519 +v -0.0585227 -0.0341645 0.112519 +v -0.0585227 0.0341645 0.112519 +v -0.033257 -0.0590087 -0.112567 +v -0.033257 0.0590087 -0.112567 +v 0.033257 -0.0590087 -0.112567 +v 0.033257 0.0590087 -0.112567 +v 0.033257 -0.0590087 0.112567 +v 0.033257 0.0590087 0.112567 +v -0.033257 -0.0590087 0.112567 +v -0.033257 0.0590087 0.112567 +v -0.00447575 -0.0675765 -0.112584 +v -0.00447575 0.0675765 -0.112584 +v 0.00447575 -0.0675765 -0.112584 +v 0.00447575 0.0675765 -0.112584 +v 0.00447575 -0.0675765 0.112584 +v 0.00447575 0.0675765 0.112584 +v -0.00447575 -0.0675765 0.112584 +v -0.00447575 0.0675765 0.112584 +v -0.0208132 -0.0643878 -0.112673 +v -0.0208132 0.0643878 -0.112673 +v 0.0208132 -0.0643878 -0.112673 +v 0.0208132 0.0643878 -0.112673 +v 0.0208132 -0.0643878 0.112673 +v 0.0208132 0.0643878 0.112673 +v -0.0208132 -0.0643878 0.112673 +v -0.0208132 0.0643878 0.112673 +v -0.00298686 -0.0675765 -0.112714 +v -0.00298686 0.0675765 -0.112714 +v 0.00298686 -0.0675765 -0.112714 +v 0.00298686 0.0675765 -0.112714 +v 0.00298686 -0.0675765 0.112714 +v 0.00298686 0.0675765 0.112714 +v -0.00298686 -0.0675765 0.112714 +v -0.00298686 0.0675765 0.112714 +v -0.06336 -0.0236447 -0.112737 +v -0.06336 0.0236447 -0.112737 +v 0.06336 -0.0236447 -0.112737 +v 0.06336 0.0236447 -0.112737 +v 0.06336 -0.0236447 0.112737 +v 0.06336 0.0236447 0.112737 +v -0.06336 -0.0236447 0.112737 +v -0.06336 0.0236447 0.112737 +v -0.00149434 -0.0675765 -0.112792 +v -0.00149434 0.0675765 -0.112792 +v 0.00149434 -0.0675765 -0.112792 +v 0.00149434 0.0675765 -0.112792 +v 0.00149434 -0.0675765 0.112792 +v 0.00149434 0.0675765 0.112792 +v -0.00149434 -0.0675765 0.112792 +v -0.00149434 0.0675765 0.112792 +v -7.86562e-18 -0.0675765 -0.112818 +v -7.86562e-18 0.0675765 -0.112818 +v 2.62187e-18 -0.0675765 0.112818 +v 2.62187e-18 0.0675765 0.112818 +v -0.0444443 -0.0508196 -0.112919 +v -0.0444443 0.0508196 -0.112919 +v 0.0444443 -0.0508196 -0.112919 +v 0.0444443 0.0508196 -0.112919 +v 0.0444443 -0.0508196 0.112919 +v 0.0444443 0.0508196 0.112919 +v -0.0444443 -0.0508196 0.112919 +v -0.0444443 0.0508196 0.112919 +v -0.0549621 -0.0391821 -0.112941 +v -0.0549621 0.0391821 -0.112941 +v 0.0549621 -0.0391821 -0.112941 +v 0.0549621 0.0391821 -0.112941 +v 0.0549621 -0.0391821 0.112941 +v 0.0549621 0.0391821 0.112941 +v -0.0549621 -0.0391821 0.112941 +v -0.0549621 0.0391821 0.112941 +v -0.0511796 -0.0440044 -0.112945 +v -0.0511796 0.0440044 -0.112945 +v 0.0511796 -0.0440044 -0.112945 +v 0.0511796 0.0440044 -0.112945 +v 0.0511796 -0.0440044 0.112945 +v 0.0511796 0.0440044 0.112945 +v -0.0511796 -0.0440044 0.112945 +v -0.0511796 0.0440044 0.112945 +v -0.0360393 -0.0570655 -0.11295 +v -0.0360393 0.0570655 -0.11295 +v 0.0360393 -0.0570655 -0.11295 +v 0.0360393 0.0570655 -0.11295 +v 0.0360393 -0.0570655 0.11295 +v 0.0360393 0.0570655 0.11295 +v -0.0360393 -0.0570655 0.11295 +v -0.0360393 0.0570655 0.11295 +v -0.0139604 -0.0660233 -0.112966 +v -0.0139604 0.0660233 -0.112966 +v 0.0139604 -0.0660233 -0.112966 +v 0.0139604 0.0660233 -0.112966 +v 0.0139604 -0.0660233 0.112966 +v 0.0139604 0.0660233 0.112966 +v -0.0139604 -0.0660233 0.112966 +v -0.0139604 0.0660233 0.112966 +v -0.0290233 -0.0608783 -0.113029 +v -0.0290233 0.0608783 -0.113029 +v 0.0290233 -0.0608783 -0.113029 +v 0.0290233 0.0608783 -0.113029 +v 0.0290233 -0.0608783 0.113029 +v 0.0290233 0.0608783 0.113029 +v -0.0290233 -0.0608783 0.113029 +v -0.0290233 0.0608783 0.113029 +v -0.0248607 -0.0626721 -0.11306 +v -0.0248607 0.0626721 -0.11306 +v 0.0248607 -0.0626721 -0.11306 +v 0.0248607 0.0626721 -0.11306 +v 0.0248607 -0.0626721 0.11306 +v 0.0248607 0.0626721 0.11306 +v -0.0248607 -0.0626721 0.11306 +v -0.0248607 0.0626721 0.11306 +v -0.0416467 -0.0529685 -0.113126 +v -0.0416467 0.0529685 -0.113126 +v 0.0416467 -0.0529685 -0.113126 +v 0.0416467 0.0529685 -0.113126 +v 0.0416467 -0.0529685 0.113126 +v 0.0416467 0.0529685 0.113126 +v -0.0416467 -0.0529685 0.113126 +v -0.0416467 0.0529685 0.113126 +v -0.0388405 -0.0550513 -0.113137 +v -0.0388405 0.0550513 -0.113137 +v 0.0388405 -0.0550513 -0.113137 +v 0.0388405 0.0550513 -0.113137 +v 0.0388405 -0.0550513 0.113137 +v 0.0388405 0.0550513 0.113137 +v -0.0388405 -0.0550513 0.113137 +v -0.0388405 0.0550513 0.113137 +v -0.0640123 -0.0209327 -0.113177 +v -0.0640123 0.0209327 -0.113177 +v 0.0640123 -0.0209327 -0.113177 +v 0.0640123 0.0209327 -0.113177 +v 0.0640123 -0.0209327 0.113177 +v 0.0640123 0.0209327 0.113177 +v -0.0640123 -0.0209327 0.113177 +v -0.0640123 0.0209327 0.113177 +v -0.0594617 -0.0315903 -0.113201 +v -0.0594617 0.0315903 -0.113201 +v 0.0594617 -0.0315903 -0.113201 +v 0.0594617 0.0315903 -0.113201 +v 0.0594617 -0.0315903 0.113201 +v 0.0594617 0.0315903 0.113201 +v -0.0594617 -0.0315903 0.113201 +v -0.0594617 0.0315903 0.113201 +v -0.0193113 -0.0643878 -0.113374 +v -0.0193113 0.0643878 -0.113374 +v 0.0193113 -0.0643878 -0.113374 +v 0.0193113 0.0643878 -0.113374 +v 0.0193113 -0.0643878 0.113374 +v 0.0193113 0.0643878 0.113374 +v -0.0193113 -0.0643878 0.113374 +v -0.0193113 0.0643878 0.113374 +v -0.0124524 -0.0660233 -0.113427 +v -0.0124524 0.0660233 -0.113427 +v 0.0124524 -0.0660233 -0.113427 +v 0.0124524 0.0660233 -0.113427 +v 0.0124524 -0.0660233 0.113427 +v 0.0124524 0.0660233 0.113427 +v -0.0124524 -0.0660233 0.113427 +v -0.0124524 0.0660233 0.113427 +v -0.0645849 -0.0181947 -0.113563 +v -0.0645849 0.0181947 -0.113563 +v 0.0645849 -0.0181947 -0.113563 +v 0.0645849 0.0181947 -0.113563 +v 0.0645849 -0.0181947 0.113563 +v 0.0645849 0.0181947 0.113563 +v -0.0645849 -0.0181947 0.113563 +v -0.0645849 0.0181947 0.113563 +v -0.0484647 -0.0463348 -0.113638 +v -0.0484647 0.0463348 -0.113638 +v 0.0484647 -0.0463348 -0.113638 +v 0.0484647 0.0463348 -0.113638 +v 0.0484647 -0.0463348 0.113638 +v 0.0484647 0.0463348 0.113638 +v -0.0484647 -0.0463348 0.113638 +v -0.0484647 0.0463348 0.113638 +v -0.0317512 -0.0590087 -0.113702 +v -0.0317512 0.0590087 -0.113702 +v 0.0317512 -0.0590087 -0.113702 +v 0.0317512 0.0590087 -0.113702 +v 0.0317512 -0.0590087 0.113702 +v 0.0317512 0.0590087 0.113702 +v -0.0317512 -0.0590087 0.113702 +v -0.0317512 0.0590087 0.113702 +v -0.0560175 -0.0366961 -0.113766 +v -0.0560175 0.0366961 -0.113766 +v 0.0560175 -0.0366961 -0.113766 +v 0.0560175 0.0366961 -0.113766 +v 0.0560175 -0.0366961 0.113766 +v 0.0560175 0.0366961 0.113766 +v -0.0560175 -0.0366961 0.113766 +v -0.0560175 0.0366961 0.113766 +v -0.0603266 -0.0289768 -0.11383 +v -0.0603266 0.0289768 -0.11383 +v 0.0603266 -0.0289768 -0.11383 +v 0.0603266 0.0289768 -0.11383 +v 0.0603266 -0.0289768 0.11383 +v 0.0603266 0.0289768 0.11383 +v -0.0603266 -0.0289768 0.11383 +v -0.0603266 0.0289768 0.11383 +v -0.0109292 -0.0660233 -0.113835 +v -0.0109292 0.0660233 -0.113835 +v 0.0109292 -0.0660233 -0.113835 +v 0.0109292 0.0660233 -0.113835 +v 0.0109292 -0.0660233 0.113835 +v 0.0109292 0.0660233 0.113835 +v -0.0109292 -0.0660233 0.113835 +v -0.0109292 0.0660233 0.113835 +v -0.065077 -0.0154341 -0.113895 +v -0.065077 0.0154341 -0.113895 +v 0.065077 -0.0154341 -0.113895 +v 0.065077 0.0154341 -0.113895 +v 0.065077 -0.0154341 0.113895 +v 0.065077 0.0154341 0.113895 +v -0.065077 -0.0154341 0.113895 +v -0.065077 0.0154341 0.113895 +v -0.0233427 -0.0626721 -0.113901 +v -0.0233427 0.0626721 -0.113901 +v 0.0233427 -0.0626721 -0.113901 +v 0.0233427 0.0626721 -0.113901 +v 0.0233427 -0.0626721 0.113901 +v 0.0233427 0.0626721 0.113901 +v -0.0233427 -0.0626721 0.113901 +v -0.0233427 0.0626721 0.113901 +v -0.0523374 -0.0416192 -0.113916 +v -0.0523374 0.0416192 -0.113916 +v 0.0523374 -0.0416192 -0.113916 +v 0.0523374 0.0416192 -0.113916 +v 0.0523374 -0.0416192 0.113916 +v 0.0523374 0.0416192 0.113916 +v -0.0523374 -0.0416192 0.113916 +v -0.0523374 0.0416192 0.113916 +v -0.0275039 -0.0608783 -0.114016 +v -0.0275039 0.0608783 -0.114016 +v 0.0275039 -0.0608783 -0.114016 +v 0.0275039 0.0608783 -0.114016 +v 0.0275039 -0.0608783 0.114016 +v 0.0275039 0.0608783 0.114016 +v -0.0275039 -0.0608783 0.114016 +v -0.0275039 0.0608783 0.114016 +v -0.0177858 -0.0643878 -0.114021 +v -0.0177858 0.0643878 -0.114021 +v 0.0177858 -0.0643878 -0.114021 +v 0.0177858 0.0643878 -0.114021 +v 0.0177858 -0.0643878 0.114021 +v 0.0177858 0.0643878 0.114021 +v -0.0177858 -0.0643878 0.114021 +v -0.0177858 0.0643878 0.114021 +v -0.0457067 -0.0486075 -0.114138 +v -0.0457067 0.0486075 -0.114138 +v 0.0457067 -0.0486075 -0.114138 +v 0.0457067 0.0486075 -0.114138 +v 0.0457067 -0.0486075 0.114138 +v 0.0457067 0.0486075 0.114138 +v -0.0457067 -0.0486075 0.114138 +v -0.0457067 0.0486075 0.114138 +v -0.065488 -0.0126542 -0.114172 +v -0.065488 0.0126542 -0.114172 +v 0.065488 -0.0126542 -0.114172 +v 0.065488 0.0126542 -0.114172 +v 0.065488 -0.0126542 0.114172 +v 0.065488 0.0126542 0.114172 +v -0.065488 -0.0126542 0.114172 +v -0.065488 0.0126542 0.114172 +v -0.0345184 -0.0570655 -0.114182 +v -0.0345184 0.0570655 -0.114182 +v 0.0345184 -0.0570655 -0.114182 +v 0.0345184 0.0570655 -0.114182 +v 0.0345184 -0.0570655 0.114182 +v 0.0345184 0.0570655 0.114182 +v -0.0345184 -0.0570655 0.114182 +v -0.0345184 0.0570655 0.114182 +v -0.00939275 -0.0660233 -0.114189 +v -0.00939275 0.0660233 -0.114189 +v 0.00939275 -0.0660233 -0.114189 +v 0.00939275 0.0660233 -0.114189 +v 0.00939275 -0.0660233 0.114189 +v 0.00939275 0.0660233 0.114189 +v -0.00939275 -0.0660233 0.114189 +v -0.00939275 0.0660233 0.114189 +v -0.0658175 -0.00985854 -0.114394 +v -0.0658175 0.00985854 -0.114394 +v 0.0658175 -0.00985854 -0.114394 +v 0.0658175 0.00985854 -0.114394 +v 0.0658175 -0.00985854 0.114394 +v 0.0658175 0.00985854 0.114394 +v -0.0658175 -0.00985854 0.114394 +v -0.0658175 0.00985854 0.114394 +v -0.0611163 -0.0263271 -0.114404 +v -0.0611163 0.0263271 -0.114404 +v 0.0611163 -0.0263271 -0.114404 +v 0.0611163 0.0263271 -0.114404 +v 0.0611163 -0.0263271 0.114404 +v 0.0611163 0.0263271 0.114404 +v -0.0611163 -0.0263271 0.114404 +v -0.0611163 0.0263271 0.114404 +v -0.0429193 -0.0508196 -0.114444 +v -0.0429193 0.0508196 -0.114444 +v 0.0429193 -0.0508196 -0.114444 +v 0.0429193 0.0508196 -0.114444 +v 0.0429193 -0.0508196 0.114444 +v 0.0429193 0.0508196 0.114444 +v -0.0429193 -0.0508196 0.114444 +v -0.0429193 0.0508196 0.114444 +v -0.0373113 -0.0550513 -0.114466 +v -0.0373113 0.0550513 -0.114466 +v 0.0373113 -0.0550513 -0.114466 +v 0.0373113 0.0550513 -0.114466 +v 0.0373113 -0.0550513 0.114466 +v 0.0373113 0.0550513 0.114466 +v -0.0373113 -0.0550513 0.114466 +v -0.0373113 0.0550513 0.114466 +v -0.00784484 -0.0660233 -0.11449 +v -0.00784484 0.0660233 -0.11449 +v 0.00784484 -0.0660233 -0.11449 +v 0.00784484 0.0660233 -0.11449 +v 0.00784484 -0.0660233 0.11449 +v 0.00784484 0.0660233 0.11449 +v -0.00784484 -0.0660233 0.11449 +v -0.00784484 0.0660233 0.11449 +v -0.0570031 -0.0341645 -0.114536 +v -0.0570031 0.0341645 -0.114536 +v 0.0570031 -0.0341645 -0.114536 +v 0.0570031 0.0341645 -0.114536 +v 0.0570031 -0.0341645 0.114536 +v 0.0570031 0.0341645 0.114536 +v -0.0570031 -0.0341645 0.114536 +v -0.0570031 0.0341645 0.114536 +v -0.0401163 -0.0529685 -0.114554 +v -0.0401163 0.0529685 -0.114554 +v 0.0401163 -0.0529685 -0.114554 +v 0.0401163 0.0529685 -0.114554 +v 0.0401163 -0.0529685 0.114554 +v 0.0401163 0.0529685 0.114554 +v -0.0401163 -0.0529685 0.114554 +v -0.0401163 0.0529685 0.114554 +v -0.0660649 -0.0070506 -0.114561 +v -0.0660649 0.0070506 -0.114561 +v 0.0660649 -0.0070506 -0.114561 +v 0.0660649 0.0070506 -0.114561 +v 0.0660649 -0.0070506 0.114561 +v 0.0660649 0.0070506 0.114561 +v -0.0660649 -0.0070506 0.114561 +v -0.0660649 0.0070506 0.114561 +v -0.0162386 -0.0643878 -0.114615 +v -0.0162386 0.0643878 -0.114615 +v 0.0162386 -0.0643878 -0.114615 +v 0.0162386 0.0643878 -0.114615 +v 0.0162386 -0.0643878 0.114615 +v 0.0162386 0.0643878 0.114615 +v -0.0162386 -0.0643878 0.114615 +v -0.0162386 0.0643878 0.114615 +v -0.0662301 -0.00423388 -0.114673 +v -0.0662301 0.00423388 -0.114673 +v 0.0662301 -0.00423388 -0.114673 +v 0.0662301 0.00423388 -0.114673 +v 0.0662301 -0.00423388 0.114673 +v 0.0662301 0.00423388 0.114673 +v -0.0662301 -0.00423388 0.114673 +v -0.0662301 0.00423388 0.114673 +v -0.0217964 -0.0626721 -0.114689 +v -0.0217964 0.0626721 -0.114689 +v 0.0217964 -0.0626721 -0.114689 +v 0.0217964 0.0626721 -0.114689 +v 0.0217964 -0.0626721 0.114689 +v 0.0217964 0.0626721 0.114689 +v -0.0217964 -0.0626721 0.114689 +v -0.0217964 0.0626721 0.114689 +v -0.0496497 -0.0440044 -0.114705 +v -0.0496497 0.0440044 -0.114705 +v 0.0496497 -0.0440044 -0.114705 +v 0.0496497 0.0440044 -0.114705 +v 0.0496497 -0.0440044 0.114705 +v 0.0496497 0.0440044 0.114705 +v -0.0496497 -0.0440044 0.114705 +v -0.0496497 0.0440044 0.114705 +v -0.0663127 -0.00141188 -0.114728 +v -0.0663127 0.00141188 -0.114728 +v 0.0663127 -0.00141188 -0.114728 +v 0.0663127 0.00141188 -0.114728 +v 0.0663127 -0.00141188 0.114728 +v 0.0663127 0.00141188 0.114728 +v -0.0663127 -0.00141188 0.114728 +v -0.0663127 0.00141188 0.114728 +v -0.00628737 -0.0660233 -0.114737 +v -0.00628737 0.0660233 -0.114737 +v 0.00628737 -0.0660233 -0.114737 +v 0.00628737 0.0660233 -0.114737 +v 0.00628737 -0.0660233 0.114737 +v 0.00628737 0.0660233 0.114737 +v -0.00628737 -0.0660233 0.114737 +v -0.00628737 0.0660233 0.114737 +v -0.0302066 -0.0590087 -0.114783 +v -0.0302066 0.0590087 -0.114783 +v 0.0302066 -0.0590087 -0.114783 +v 0.0302066 0.0590087 -0.114783 +v 0.0302066 -0.0590087 0.114783 +v 0.0302066 0.0590087 0.114783 +v -0.0302066 -0.0590087 0.114783 +v -0.0302066 0.0590087 0.114783 +v -0.05343 -0.0391821 -0.114833 +v -0.05343 0.0391821 -0.114833 +v 0.05343 -0.0391821 -0.114833 +v 0.05343 0.0391821 -0.114833 +v 0.05343 -0.0391821 0.114833 +v 0.05343 0.0391821 0.114833 +v -0.05343 -0.0391821 0.114833 +v -0.05343 0.0391821 0.114833 +v -0.0618299 -0.0236447 -0.114922 +v -0.0618299 0.0236447 -0.114922 +v 0.0618299 -0.0236447 -0.114922 +v 0.0618299 0.0236447 -0.114922 +v 0.0618299 -0.0236447 0.114922 +v 0.0618299 0.0236447 0.114922 +v -0.0618299 -0.0236447 0.114922 +v -0.0618299 0.0236447 0.114922 +v -0.00472225 -0.0660233 -0.114929 +v -0.00472225 0.0660233 -0.114929 +v 0.00472225 -0.0660233 -0.114929 +v 0.00472225 0.0660233 -0.114929 +v 0.00472225 -0.0660233 0.114929 +v 0.00472225 0.0660233 0.114929 +v -0.00472225 -0.0660233 0.114929 +v -0.00472225 0.0660233 0.114929 +v -0.0259511 -0.0608783 -0.114949 +v -0.0259511 0.0608783 -0.114949 +v 0.0259511 -0.0608783 -0.114949 +v 0.0259511 0.0608783 -0.114949 +v 0.0259511 -0.0608783 0.114949 +v 0.0259511 0.0608783 0.114949 +v -0.0259511 -0.0608783 0.114949 +v -0.0259511 0.0608783 0.114949 +v -0.00315136 -0.0660233 -0.115067 +v -0.00315136 0.0660233 -0.115067 +v 0.00315136 -0.0660233 -0.115067 +v 0.00315136 0.0660233 -0.115067 +v 0.00315136 -0.0660233 0.115067 +v 0.00315136 0.0660233 0.115067 +v -0.00315136 -0.0660233 0.115067 +v -0.00315136 0.0660233 0.115067 +v -0.00157664 -0.0660233 -0.115149 +v -0.00157664 0.0660233 -0.115149 +v 0.00157664 -0.0660233 -0.115149 +v 0.00157664 0.0660233 -0.115149 +v 0.00157664 -0.0660233 0.115149 +v 0.00157664 0.0660233 0.115149 +v -0.00157664 -0.0660233 0.115149 +v -0.00157664 0.0660233 0.115149 +v -0.0146717 -0.0643878 -0.115155 +v -0.0146717 0.0643878 -0.115155 +v 0.0146717 -0.0643878 -0.115155 +v 0.0146717 0.0643878 -0.115155 +v 0.0146717 -0.0643878 0.115155 +v 0.0146717 0.0643878 0.115155 +v -0.0146717 -0.0643878 0.115155 +v -0.0146717 0.0643878 0.115155 +v -8.29882e-18 -0.0660233 -0.115177 +v -8.29882e-18 0.0660233 -0.115177 +v 2.76627e-18 -0.0660233 0.115177 +v 2.76627e-18 0.0660233 0.115177 +v -0.0579177 -0.0315903 -0.11525 +v -0.0579177 0.0315903 -0.11525 +v 0.0579177 -0.0315903 -0.11525 +v 0.0579177 0.0315903 -0.11525 +v 0.0579177 -0.0315903 0.11525 +v 0.0579177 0.0315903 0.11525 +v -0.0579177 -0.0315903 0.11525 +v -0.0579177 0.0315903 0.11525 +v -0.0469122 -0.0463348 -0.115303 +v -0.0469122 0.0463348 -0.115303 +v 0.0469122 -0.0463348 -0.115303 +v 0.0469122 0.0463348 -0.115303 +v 0.0469122 -0.0463348 0.115303 +v 0.0469122 0.0463348 0.115303 +v -0.0469122 -0.0463348 0.115303 +v -0.0469122 0.0463348 0.115303 +v -0.0329554 -0.0570655 -0.115359 +v -0.0329554 0.0570655 -0.115359 +v 0.0329554 -0.0570655 -0.115359 +v 0.0329554 0.0570655 -0.115359 +v 0.0329554 -0.0570655 0.115359 +v 0.0329554 0.0570655 0.115359 +v -0.0329554 -0.0570655 0.115359 +v -0.0329554 0.0570655 0.115359 +v -0.0624665 -0.0209327 -0.115385 +v -0.0624665 0.0209327 -0.115385 +v 0.0624665 -0.0209327 -0.115385 +v 0.0624665 0.0209327 -0.115385 +v 0.0624665 -0.0209327 0.115385 +v 0.0624665 0.0209327 0.115385 +v -0.0624665 -0.0209327 0.115385 +v -0.0624665 0.0209327 0.115385 +v -0.0202235 -0.0626721 -0.115423 +v -0.0202235 0.0626721 -0.115423 +v 0.0202235 -0.0626721 -0.115423 +v 0.0202235 0.0626721 -0.115423 +v 0.0202235 -0.0626721 0.115423 +v 0.0202235 0.0626721 0.115423 +v -0.0202235 -0.0626721 0.115423 +v -0.0202235 0.0626721 0.115423 +v -0.0130869 -0.0643878 -0.115639 +v -0.0130869 0.0643878 -0.115639 +v 0.0130869 -0.0643878 -0.115639 +v 0.0130869 0.0643878 -0.115639 +v 0.0130869 -0.0643878 0.115639 +v 0.0130869 0.0643878 0.115639 +v -0.0130869 -0.0643878 0.115639 +v -0.0130869 0.0643878 0.115639 +v -0.054456 -0.0366961 -0.115694 +v -0.054456 0.0366961 -0.115694 +v 0.054456 -0.0366961 -0.115694 +v 0.054456 0.0366961 -0.115694 +v 0.054456 -0.0366961 0.115694 +v 0.054456 0.0366961 0.115694 +v -0.054456 -0.0366961 0.115694 +v -0.054456 0.0366961 0.115694 +v -0.0441385 -0.0486075 -0.115707 +v -0.0441385 0.0486075 -0.115707 +v 0.0441385 -0.0486075 -0.115707 +v 0.0441385 0.0486075 -0.115707 +v 0.0441385 -0.0486075 0.115707 +v 0.0441385 0.0486075 0.115707 +v -0.0441385 -0.0486075 0.115707 +v -0.0441385 0.0486075 0.115707 +v -0.0507729 -0.0416192 -0.115716 +v -0.0507729 0.0416192 -0.115716 +v 0.0507729 -0.0416192 -0.115716 +v 0.0507729 0.0416192 -0.115716 +v 0.0507729 -0.0416192 0.115716 +v 0.0507729 0.0416192 0.115716 +v -0.0507729 -0.0416192 0.115716 +v -0.0507729 0.0416192 0.115716 +v -0.0357368 -0.0550513 -0.115741 +v -0.0357368 0.0550513 -0.115741 +v 0.0357368 -0.0550513 -0.115741 +v 0.0357368 0.0550513 -0.115741 +v 0.0357368 -0.0550513 0.115741 +v 0.0357368 0.0550513 0.115741 +v -0.0357368 -0.0550513 0.115741 +v -0.0357368 0.0550513 0.115741 +v -0.0630252 -0.0181947 -0.115791 +v -0.0630252 0.0181947 -0.115791 +v 0.0630252 -0.0181947 -0.115791 +v 0.0630252 0.0181947 -0.115791 +v 0.0630252 -0.0181947 0.115791 +v 0.0630252 0.0181947 0.115791 +v -0.0630252 -0.0181947 0.115791 +v -0.0630252 0.0181947 0.115791 +v -0.0286253 -0.0590087 -0.11581 +v -0.0286253 0.0590087 -0.11581 +v 0.0286253 -0.0590087 -0.11581 +v 0.0286253 0.0590087 -0.11581 +v 0.0286253 -0.0590087 0.11581 +v 0.0286253 0.0590087 0.11581 +v -0.0286253 -0.0590087 0.11581 +v -0.0286253 0.0590087 0.11581 +v -0.0243666 -0.0608783 -0.115827 +v -0.0243666 0.0608783 -0.115827 +v 0.0243666 -0.0608783 -0.115827 +v 0.0243666 0.0608783 -0.115827 +v 0.0243666 -0.0608783 0.115827 +v 0.0243666 0.0608783 0.115827 +v -0.0243666 -0.0608783 0.115827 +v -0.0243666 0.0608783 0.115827 +v -0.0587602 -0.0289768 -0.115908 +v -0.0587602 0.0289768 -0.115908 +v 0.0587602 -0.0289768 -0.115908 +v 0.0587602 0.0289768 -0.115908 +v 0.0587602 -0.0289768 0.115908 +v 0.0587602 0.0289768 0.115908 +v -0.0587602 -0.0289768 0.115908 +v -0.0587602 0.0289768 0.115908 +v -0.0413421 -0.0508196 -0.115915 +v -0.0413421 0.0508196 -0.115915 +v 0.0413421 -0.0508196 -0.115915 +v 0.0413421 0.0508196 -0.115915 +v 0.0413421 -0.0508196 0.115915 +v 0.0413421 0.0508196 0.115915 +v -0.0413421 -0.0508196 0.115915 +v -0.0413421 0.0508196 0.115915 +v -0.0385369 -0.0529685 -0.115927 +v -0.0385369 0.0529685 -0.115927 +v 0.0385369 -0.0529685 -0.115927 +v 0.0385369 0.0529685 -0.115927 +v 0.0385369 -0.0529685 0.115927 +v 0.0385369 0.0529685 0.115927 +v -0.0385369 -0.0529685 0.115927 +v -0.0385369 0.0529685 0.115927 +v -0.0114861 -0.0643878 -0.116068 +v -0.0114861 0.0643878 -0.116068 +v 0.0114861 -0.0643878 -0.116068 +v 0.0114861 0.0643878 -0.116068 +v 0.0114861 -0.0643878 0.116068 +v 0.0114861 0.0643878 0.116068 +v -0.0114861 -0.0643878 0.116068 +v -0.0114861 0.0643878 0.116068 +v -0.0186259 -0.0626721 -0.116101 +v -0.0186259 0.0626721 -0.116101 +v 0.0186259 -0.0626721 -0.116101 +v 0.0186259 0.0626721 -0.116101 +v 0.0186259 -0.0626721 0.116101 +v 0.0186259 0.0626721 0.116101 +v -0.0186259 -0.0626721 0.116101 +v -0.0186259 0.0626721 0.116101 +v -0.0635055 -0.0154341 -0.116139 +v -0.0635055 0.0154341 -0.116139 +v 0.0635055 -0.0154341 -0.116139 +v 0.0635055 0.0154341 -0.116139 +v 0.0635055 -0.0154341 0.116139 +v 0.0635055 0.0154341 0.116139 +v -0.0635055 -0.0154341 0.116139 +v -0.0635055 0.0154341 0.116139 +v -0.0480593 -0.0440044 -0.11641 +v -0.0480593 0.0440044 -0.11641 +v 0.0480593 -0.0440044 -0.11641 +v 0.0480593 0.0440044 -0.11641 +v 0.0480593 -0.0440044 0.11641 +v 0.0480593 0.0440044 0.11641 +v -0.0480593 -0.0440044 0.11641 +v -0.0480593 0.0440044 0.11641 +v -0.0639066 -0.0126542 -0.116431 +v -0.0639066 0.0126542 -0.116431 +v 0.0639066 -0.0126542 -0.116431 +v 0.0639066 0.0126542 -0.116431 +v 0.0639066 -0.0126542 0.116431 +v 0.0639066 0.0126542 0.116431 +v -0.0639066 -0.0126542 0.116431 +v -0.0639066 0.0126542 0.116431 +v -0.00987135 -0.0643878 -0.116441 +v -0.00987135 0.0643878 -0.116441 +v 0.00987135 -0.0643878 -0.116441 +v 0.00987135 0.0643878 -0.116441 +v 0.00987135 -0.0643878 0.116441 +v 0.00987135 0.0643878 0.116441 +v -0.00987135 -0.0643878 0.116441 +v -0.00987135 0.0643878 0.116441 +v -0.0313523 -0.0570655 -0.116482 +v -0.0313523 0.0570655 -0.116482 +v 0.0313523 -0.0570655 -0.116482 +v 0.0313523 0.0570655 -0.116482 +v 0.0313523 -0.0570655 0.116482 +v 0.0313523 0.0570655 0.116482 +v -0.0313523 -0.0570655 0.116482 +v -0.0313523 0.0570655 0.116482 +v -0.0554141 -0.0341645 -0.116498 +v -0.0554141 0.0341645 -0.116498 +v 0.0554141 -0.0341645 -0.116498 +v 0.0554141 0.0341645 -0.116498 +v 0.0554141 -0.0341645 0.116498 +v 0.0554141 0.0341645 0.116498 +v -0.0554141 -0.0341645 0.116498 +v -0.0554141 0.0341645 0.116498 +v -0.0595294 -0.0263271 -0.116509 +v -0.0595294 0.0263271 -0.116509 +v 0.0595294 -0.0263271 -0.116509 +v 0.0595294 0.0263271 -0.116509 +v 0.0595294 -0.0263271 0.116509 +v 0.0595294 0.0263271 0.116509 +v -0.0595294 -0.0263271 0.116509 +v -0.0595294 0.0263271 0.116509 +v -0.0227524 -0.0608783 -0.116649 +v -0.0227524 0.0608783 -0.116649 +v 0.0227524 -0.0608783 -0.116649 +v 0.0227524 0.0608783 -0.116649 +v 0.0227524 -0.0608783 0.116649 +v 0.0227524 0.0608783 0.116649 +v -0.0227524 -0.0608783 0.116649 +v -0.0227524 0.0608783 0.116649 +v -0.0642281 -0.00985854 -0.116664 +v -0.0642281 0.00985854 -0.116664 +v 0.0642281 -0.00985854 -0.116664 +v 0.0642281 0.00985854 -0.116664 +v 0.0642281 -0.00985854 0.116664 +v 0.0642281 0.00985854 0.116664 +v -0.0642281 -0.00985854 0.116664 +v -0.0642281 0.00985854 0.116664 +v -0.0518328 -0.0391821 -0.11667 +v -0.0518328 0.0391821 -0.11667 +v 0.0518328 -0.0391821 -0.11667 +v 0.0518328 0.0391821 -0.11667 +v 0.0518328 -0.0391821 0.11667 +v 0.0518328 0.0391821 0.11667 +v -0.0518328 -0.0391821 0.11667 +v -0.0518328 0.0391821 0.11667 +v -0.0170057 -0.0626721 -0.116723 +v -0.0170057 0.0626721 -0.116723 +v 0.0170057 -0.0626721 -0.116723 +v 0.0170057 0.0626721 -0.116723 +v 0.0170057 -0.0626721 0.116723 +v 0.0170057 0.0626721 0.116723 +v -0.0170057 -0.0626721 0.116723 +v -0.0170057 0.0626721 0.116723 +v -0.00824457 -0.0643878 -0.116757 +v -0.00824457 0.0643878 -0.116757 +v 0.00824457 -0.0643878 -0.116757 +v 0.00824457 0.0643878 -0.116757 +v 0.00824457 -0.0643878 0.116757 +v 0.00824457 0.0643878 0.116757 +v -0.00824457 -0.0643878 0.116757 +v -0.00824457 0.0643878 0.116757 +v -0.0270091 -0.0590087 -0.116781 +v -0.0270091 0.0590087 -0.116781 +v 0.0270091 -0.0590087 -0.116781 +v 0.0270091 0.0590087 -0.116781 +v 0.0270091 -0.0590087 0.116781 +v 0.0270091 0.0590087 0.116781 +v -0.0270091 -0.0590087 0.116781 +v -0.0270091 0.0590087 0.116781 +v -0.0644695 -0.0070506 -0.11684 +v -0.0644695 0.0070506 -0.11684 +v 0.0644695 -0.0070506 -0.11684 +v 0.0644695 0.0070506 -0.11684 +v 0.0644695 -0.0070506 0.11684 +v 0.0644695 0.0070506 0.11684 +v -0.0644695 -0.0070506 0.11684 +v -0.0644695 0.0070506 0.11684 +v -0.0453026 -0.0463348 -0.116912 +v -0.0453026 0.0463348 -0.116912 +v 0.0453026 -0.0463348 -0.116912 +v 0.0453026 0.0463348 -0.116912 +v 0.0453026 -0.0463348 0.116912 +v 0.0453026 0.0463348 0.116912 +v -0.0453026 -0.0463348 0.116912 +v -0.0453026 0.0463348 0.116912 +v -0.0646307 -0.00423388 -0.116957 +v -0.0646307 0.00423388 -0.116957 +v 0.0646307 -0.00423388 -0.116957 +v 0.0646307 0.00423388 -0.116957 +v 0.0646307 -0.00423388 0.116957 +v 0.0646307 0.00423388 0.116957 +v -0.0646307 -0.00423388 0.116957 +v -0.0646307 0.00423388 0.116957 +v -0.0341187 -0.0550513 -0.11696 +v -0.0341187 0.0550513 -0.11696 +v 0.0341187 -0.0550513 -0.11696 +v 0.0341187 0.0550513 -0.11696 +v 0.0341187 -0.0550513 0.11696 +v 0.0341187 0.0550513 0.11696 +v -0.0341187 -0.0550513 0.11696 +v -0.0341187 0.0550513 0.11696 +v -0.0647113 -0.00141188 -0.117015 +v -0.0647113 0.00141188 -0.117015 +v 0.0647113 -0.00141188 -0.117015 +v 0.0647113 0.00141188 -0.117015 +v 0.0647113 -0.00141188 0.117015 +v 0.0647113 0.00141188 0.117015 +v -0.0647113 -0.00141188 0.117015 +v -0.0647113 0.00141188 0.117015 +v -0.00660774 -0.0643878 -0.117017 +v -0.00660774 0.0643878 -0.117017 +v 0.00660774 -0.0643878 -0.117017 +v 0.00660774 0.0643878 -0.117017 +v 0.00660774 -0.0643878 0.117017 +v 0.00660774 0.0643878 0.117017 +v -0.00660774 -0.0643878 0.117017 +v -0.00660774 0.0643878 0.117017 +v -0.0602245 -0.0236447 -0.117053 +v -0.0602245 0.0236447 -0.117053 +v 0.0602245 -0.0236447 -0.117053 +v 0.0602245 0.0236447 -0.117053 +v 0.0602245 -0.0236447 0.117053 +v 0.0602245 0.0236447 0.117053 +v -0.0602245 -0.0236447 0.117053 +v -0.0602245 0.0236447 0.117053 +v -0.00496286 -0.0643878 -0.117218 +v -0.00496286 0.0643878 -0.117218 +v 0.00496286 -0.0643878 -0.117218 +v 0.00496286 0.0643878 -0.117218 +v 0.00496286 -0.0643878 0.117218 +v 0.00496286 0.0643878 0.117218 +v -0.00496286 -0.0643878 0.117218 +v -0.00496286 0.0643878 0.117218 +v -0.0425164 -0.0486075 -0.117219 +v -0.0425164 0.0486075 -0.117219 +v 0.0425164 -0.0486075 -0.117219 +v 0.0425164 0.0486075 -0.117219 +v 0.0425164 -0.0486075 0.117219 +v 0.0425164 0.0486075 0.117219 +v -0.0425164 -0.0486075 0.117219 +v -0.0425164 0.0486075 0.117219 +v -0.0369106 -0.0529685 -0.117243 +v -0.0369106 0.0529685 -0.117243 +v 0.0369106 -0.0529685 -0.117243 +v 0.0369106 0.0529685 -0.117243 +v 0.0369106 -0.0529685 0.117243 +v 0.0369106 0.0529685 0.117243 +v -0.0369106 -0.0529685 0.117243 +v -0.0369106 0.0529685 0.117243 +v -0.0563032 -0.0315903 -0.117244 +v -0.0563032 0.0315903 -0.117244 +v 0.0563032 -0.0315903 -0.117244 +v 0.0563032 0.0315903 -0.117244 +v 0.0563032 -0.0315903 0.117244 +v 0.0563032 0.0315903 0.117244 +v -0.0563032 -0.0315903 0.117244 +v -0.0563032 0.0315903 0.117244 +v -0.0153647 -0.0626721 -0.117288 +v -0.0153647 0.0626721 -0.117288 +v 0.0153647 -0.0626721 -0.117288 +v 0.0153647 0.0626721 -0.117288 +v 0.0153647 -0.0626721 0.117288 +v 0.0153647 0.0626721 0.117288 +v -0.0153647 -0.0626721 0.117288 +v -0.0153647 0.0626721 0.117288 +v -0.0397145 -0.0508196 -0.11733 +v -0.0397145 0.0508196 -0.11733 +v 0.0397145 -0.0508196 -0.11733 +v 0.0397145 0.0508196 -0.11733 +v 0.0397145 -0.0508196 0.11733 +v 0.0397145 0.0508196 0.11733 +v -0.0397145 -0.0508196 0.11733 +v -0.0397145 0.0508196 0.11733 +v -0.00331194 -0.0643878 -0.117363 +v -0.00331194 0.0643878 -0.117363 +v 0.00331194 -0.0643878 -0.117363 +v 0.00331194 0.0643878 -0.117363 +v 0.00331194 -0.0643878 0.117363 +v 0.00331194 0.0643878 0.117363 +v -0.00331194 -0.0643878 0.117363 +v -0.00331194 0.0643878 0.117363 +v -0.0211105 -0.0608783 -0.117415 +v -0.0211105 0.0608783 -0.117415 +v 0.0211105 -0.0608783 -0.117415 +v 0.0211105 0.0608783 -0.117415 +v 0.0211105 -0.0608783 0.117415 +v 0.0211105 0.0608783 0.117415 +v -0.0211105 -0.0608783 0.117415 +v -0.0211105 0.0608783 0.117415 +v -0.00165698 -0.0643878 -0.11745 +v -0.00165698 0.0643878 -0.11745 +v 0.00165698 -0.0643878 -0.11745 +v 0.00165698 0.0643878 -0.11745 +v 0.00165698 -0.0643878 0.11745 +v 0.00165698 0.0643878 0.11745 +v -0.00165698 -0.0643878 0.11745 +v -0.00165698 0.0643878 0.11745 +v -0.0491465 -0.0416192 -0.11746 +v -0.0491465 0.0416192 -0.11746 +v 0.0491465 -0.0416192 -0.11746 +v 0.0491465 0.0416192 -0.11746 +v 0.0491465 -0.0416192 0.11746 +v 0.0491465 0.0416192 0.11746 +v -0.0491465 -0.0416192 0.11746 +v -0.0491465 0.0416192 0.11746 +v -8.72167e-18 -0.0643878 -0.117479 +v -8.72167e-18 0.0643878 -0.117479 +v 2.90722e-18 -0.0643878 0.117479 +v 2.90722e-18 0.0643878 0.117479 +v -0.0608445 -0.0209327 -0.117537 +v -0.0608445 0.0209327 -0.117537 +v 0.0608445 -0.0209327 -0.117537 +v 0.0608445 0.0209327 -0.117537 +v 0.0608445 -0.0209327 0.117537 +v 0.0608445 0.0209327 0.117537 +v -0.0608445 -0.0209327 0.117537 +v -0.0608445 0.0209327 0.117537 +v -0.0297111 -0.0570655 -0.117548 +v -0.0297111 0.0570655 -0.117548 +v 0.0297111 -0.0570655 -0.117548 +v 0.0297111 0.0570655 -0.117548 +v 0.0297111 -0.0570655 0.117548 +v 0.0297111 0.0570655 0.117548 +v -0.0297111 -0.0570655 0.117548 +v -0.0297111 0.0570655 0.117548 +v -0.0528281 -0.0366961 -0.117567 +v -0.0528281 0.0366961 -0.117567 +v 0.0528281 -0.0366961 -0.117567 +v 0.0528281 0.0366961 -0.117567 +v 0.0528281 -0.0366961 0.117567 +v 0.0528281 0.0366961 0.117567 +v -0.0528281 -0.0366961 0.117567 +v -0.0528281 0.0366961 0.117567 +v -0.0253601 -0.0590087 -0.117695 +v -0.0253601 0.0590087 -0.117695 +v 0.0253601 -0.0590087 -0.117695 +v 0.0253601 0.0590087 -0.117695 +v 0.0253601 -0.0590087 0.117695 +v 0.0253601 0.0590087 0.117695 +v -0.0253601 -0.0590087 0.117695 +v -0.0253601 0.0590087 0.117695 +v -0.0137051 -0.0626721 -0.117795 +v -0.0137051 0.0626721 -0.117795 +v 0.0137051 -0.0626721 -0.117795 +v 0.0137051 0.0626721 -0.117795 +v 0.0137051 -0.0626721 0.117795 +v 0.0137051 0.0626721 0.117795 +v -0.0137051 -0.0626721 0.117795 +v -0.0137051 0.0626721 0.117795 +v -0.0571222 -0.0289768 -0.117931 +v -0.0571222 0.0289768 -0.117931 +v 0.0571222 -0.0289768 -0.117931 +v 0.0571222 0.0289768 -0.117931 +v 0.0571222 -0.0289768 0.117931 +v 0.0571222 0.0289768 0.117931 +v -0.0571222 -0.0289768 0.117931 +v -0.0571222 0.0289768 0.117931 +v -0.0613888 -0.0181947 -0.117962 +v -0.0613888 0.0181947 -0.117962 +v 0.0613888 -0.0181947 -0.117962 +v 0.0613888 0.0181947 -0.117962 +v 0.0613888 -0.0181947 0.117962 +v 0.0613888 0.0181947 0.117962 +v -0.0613888 -0.0181947 0.117962 +v -0.0613888 0.0181947 0.117962 +v -0.0464103 -0.0440044 -0.118059 +v -0.0464103 0.0440044 -0.118059 +v 0.0464103 -0.0440044 -0.118059 +v 0.0464103 0.0440044 -0.118059 +v 0.0464103 -0.0440044 0.118059 +v 0.0464103 0.0440044 0.118059 +v -0.0464103 -0.0440044 0.118059 +v -0.0464103 0.0440044 0.118059 +v -0.032459 -0.0550513 -0.118122 +v -0.032459 0.0550513 -0.118122 +v 0.032459 -0.0550513 -0.118122 +v 0.032459 0.0550513 -0.118122 +v 0.032459 -0.0550513 0.118122 +v 0.032459 0.0550513 0.118122 +v -0.032459 -0.0550513 0.118122 +v -0.032459 0.0550513 0.118122 +v -0.0194429 -0.0608783 -0.118123 +v -0.0194429 0.0608783 -0.118123 +v 0.0194429 -0.0608783 -0.118123 +v 0.0194429 0.0608783 -0.118123 +v 0.0194429 -0.0608783 0.118123 +v 0.0194429 0.0608783 0.118123 +v -0.0194429 -0.0608783 0.118123 +v -0.0194429 0.0608783 0.118123 +v -0.0120287 -0.0626721 -0.118244 +v -0.0120287 0.0626721 -0.118244 +v 0.0120287 -0.0626721 -0.118244 +v 0.0120287 0.0626721 -0.118244 +v 0.0120287 -0.0626721 0.118244 +v 0.0120287 0.0626721 0.118244 +v -0.0120287 -0.0626721 0.118244 +v -0.0120287 0.0626721 0.118244 +v -0.0618565 -0.0154341 -0.118328 +v -0.0618565 0.0154341 -0.118328 +v 0.0618565 -0.0154341 -0.118328 +v 0.0618565 0.0154341 -0.118328 +v 0.0618565 -0.0154341 0.118328 +v 0.0618565 0.0154341 0.118328 +v -0.0618565 -0.0154341 0.118328 +v -0.0618565 0.0154341 0.118328 +v -0.0537576 -0.0341645 -0.118404 +v -0.0537576 0.0341645 -0.118404 +v 0.0537576 -0.0341645 -0.118404 +v 0.0537576 0.0341645 -0.118404 +v 0.0537576 -0.0341645 0.118404 +v 0.0537576 0.0341645 0.118404 +v -0.0537576 -0.0341645 0.118404 +v -0.0537576 0.0341645 0.118404 +v -0.0501724 -0.0391821 -0.118451 +v -0.0501724 0.0391821 -0.118451 +v 0.0501724 -0.0391821 -0.118451 +v 0.0501724 0.0391821 -0.118451 +v 0.0501724 -0.0391821 0.118451 +v 0.0501724 0.0391821 0.118451 +v -0.0501724 -0.0391821 0.118451 +v -0.0501724 0.0391821 0.118451 +v -0.0436378 -0.0463348 -0.118465 +v -0.0436378 0.0463348 -0.118465 +v 0.0436378 -0.0463348 -0.118465 +v 0.0436378 0.0463348 -0.118465 +v 0.0436378 -0.0463348 0.118465 +v 0.0436378 0.0463348 0.118465 +v -0.0436378 -0.0463348 0.118465 +v -0.0436378 0.0463348 0.118465 +v -0.0352394 -0.0529685 -0.118503 +v -0.0352394 0.0529685 -0.118503 +v 0.0352394 -0.0529685 -0.118503 +v 0.0352394 0.0529685 -0.118503 +v 0.0352394 -0.0529685 0.118503 +v 0.0352394 0.0529685 0.118503 +v -0.0352394 -0.0529685 0.118503 +v -0.0352394 0.0529685 0.118503 +v -0.0236801 -0.0590087 -0.118551 +v -0.0236801 0.0590087 -0.118551 +v 0.0236801 -0.0590087 -0.118551 +v 0.0236801 0.0590087 -0.118551 +v 0.0236801 -0.0590087 0.118551 +v 0.0236801 0.0590087 0.118551 +v -0.0236801 -0.0590087 0.118551 +v -0.0236801 0.0590087 0.118551 +v -0.0280336 -0.0570655 -0.118556 +v -0.0280336 0.0570655 -0.118556 +v 0.0280336 -0.0570655 -0.118556 +v 0.0280336 0.0570655 -0.118556 +v 0.0280336 -0.0570655 0.118556 +v 0.0280336 0.0570655 0.118556 +v -0.0280336 -0.0570655 0.118556 +v -0.0280336 0.0570655 0.118556 +v -0.05787 -0.0263271 -0.118559 +v -0.05787 0.0263271 -0.118559 +v 0.05787 -0.0263271 -0.118559 +v 0.05787 0.0263271 -0.118559 +v 0.05787 -0.0263271 0.118559 +v 0.05787 0.0263271 0.118559 +v -0.05787 -0.0263271 0.118559 +v -0.05787 0.0263271 0.118559 +v -0.0622472 -0.0126542 -0.118633 +v -0.0622472 0.0126542 -0.118633 +v 0.0622472 -0.0126542 -0.118633 +v 0.0622472 0.0126542 -0.118633 +v 0.0622472 -0.0126542 0.118633 +v 0.0622472 0.0126542 0.118633 +v -0.0622472 -0.0126542 0.118633 +v -0.0622472 0.0126542 0.118633 +v -0.0103376 -0.0626721 -0.118635 +v -0.0103376 0.0626721 -0.118635 +v 0.0103376 -0.0626721 -0.118635 +v 0.0103376 0.0626721 -0.118635 +v 0.0103376 -0.0626721 0.118635 +v 0.0103376 0.0626721 0.118635 +v -0.0103376 -0.0626721 0.118635 +v -0.0103376 0.0626721 0.118635 +v -0.0408426 -0.0486075 -0.118674 +v -0.0408426 0.0486075 -0.118674 +v 0.0408426 -0.0486075 -0.118674 +v 0.0408426 0.0486075 -0.118674 +v 0.0408426 -0.0486075 0.118674 +v 0.0408426 0.0486075 0.118674 +v -0.0408426 -0.0486075 0.118674 +v -0.0408426 0.0486075 0.118674 +v -0.0380385 -0.0508196 -0.118687 +v -0.0380385 0.0508196 -0.118687 +v 0.0380385 -0.0508196 -0.118687 +v 0.0380385 0.0508196 -0.118687 +v 0.0380385 -0.0508196 0.118687 +v 0.0380385 0.0508196 0.118687 +v -0.0380385 -0.0508196 0.118687 +v -0.0380385 0.0508196 0.118687 +v -0.0177516 -0.0608783 -0.118772 +v -0.0177516 0.0608783 -0.118772 +v 0.0177516 -0.0608783 -0.118772 +v 0.0177516 0.0608783 -0.118772 +v 0.0177516 -0.0608783 0.118772 +v 0.0177516 0.0608783 0.118772 +v -0.0177516 -0.0608783 0.118772 +v -0.0177516 0.0608783 0.118772 +v -0.0625604 -0.00985854 -0.118878 +v -0.0625604 0.00985854 -0.118878 +v 0.0625604 -0.00985854 -0.118878 +v 0.0625604 0.00985854 -0.118878 +v 0.0625604 -0.00985854 0.118878 +v 0.0625604 0.00985854 0.118878 +v -0.0625604 -0.00985854 0.118878 +v -0.0625604 0.00985854 0.118878 +v -0.00863402 -0.0626721 -0.118966 +v -0.00863402 0.0626721 -0.118966 +v 0.00863402 -0.0626721 -0.118966 +v 0.00863402 0.0626721 -0.118966 +v 0.00863402 -0.0626721 0.118966 +v 0.00863402 0.0626721 0.118966 +v -0.00863402 -0.0626721 0.118966 +v -0.00863402 0.0626721 0.118966 +v -0.0627955 -0.0070506 -0.119061 +v -0.0627955 0.0070506 -0.119061 +v 0.0627955 -0.0070506 -0.119061 +v 0.0627955 0.0070506 -0.119061 +v 0.0627955 -0.0070506 0.119061 +v 0.0627955 0.0070506 0.119061 +v -0.0627955 -0.0070506 0.119061 +v -0.0627955 0.0070506 0.119061 +v -0.0585457 -0.0236447 -0.119126 +v -0.0585457 0.0236447 -0.119126 +v 0.0585457 -0.0236447 -0.119126 +v 0.0585457 0.0236447 -0.119126 +v 0.0585457 -0.0236447 0.119126 +v 0.0585457 0.0236447 0.119126 +v -0.0585457 -0.0236447 0.119126 +v -0.0585457 0.0236447 0.119126 +v -0.0474602 -0.0416192 -0.119146 +v -0.0474602 0.0416192 -0.119146 +v 0.0474602 -0.0416192 -0.119146 +v 0.0474602 0.0416192 -0.119146 +v 0.0474602 -0.0416192 0.119146 +v 0.0474602 0.0416192 0.119146 +v -0.0474602 -0.0416192 0.119146 +v -0.0474602 0.0416192 0.119146 +v -0.0546201 -0.0315903 -0.11918 +v -0.0546201 0.0315903 -0.11918 +v 0.0546201 -0.0315903 -0.11918 +v 0.0546201 0.0315903 -0.11918 +v 0.0546201 -0.0315903 0.11918 +v 0.0546201 0.0315903 0.11918 +v -0.0546201 -0.0315903 0.11918 +v -0.0546201 0.0315903 0.11918 +v -0.0629525 -0.00423388 -0.119184 +v -0.0629525 0.00423388 -0.119184 +v 0.0629525 -0.00423388 -0.119184 +v 0.0629525 0.00423388 -0.119184 +v 0.0629525 -0.00423388 0.119184 +v 0.0629525 0.00423388 0.119184 +v -0.0629525 -0.00423388 0.119184 +v -0.0629525 0.00423388 0.119184 +v -0.0307598 -0.0550513 -0.119226 +v -0.0307598 0.0550513 -0.119226 +v 0.0307598 -0.0550513 -0.119226 +v 0.0307598 0.0550513 -0.119226 +v 0.0307598 -0.0550513 0.119226 +v 0.0307598 0.0550513 0.119226 +v -0.0307598 -0.0550513 0.119226 +v -0.0307598 0.0550513 0.119226 +v -0.00691987 -0.0626721 -0.119237 +v -0.00691987 0.0626721 -0.119237 +v 0.00691987 -0.0626721 -0.119237 +v 0.00691987 0.0626721 -0.119237 +v 0.00691987 -0.0626721 0.119237 +v 0.00691987 0.0626721 0.119237 +v -0.00691987 -0.0626721 0.119237 +v -0.00691987 0.0626721 0.119237 +v -0.063031 -0.00141188 -0.119245 +v -0.063031 0.00141188 -0.119245 +v 0.063031 -0.00141188 -0.119245 +v 0.063031 0.00141188 -0.119245 +v 0.063031 -0.00141188 0.119245 +v 0.063031 0.00141188 0.119245 +v -0.063031 -0.00141188 0.119245 +v -0.063031 0.00141188 0.119245 +v -0.0219712 -0.0590087 -0.119348 +v -0.0219712 0.0590087 -0.119348 +v 0.0219712 -0.0590087 -0.119348 +v 0.0219712 0.0590087 -0.119348 +v 0.0219712 -0.0590087 0.119348 +v 0.0219712 0.0590087 0.119348 +v -0.0219712 -0.0590087 0.119348 +v -0.0219712 0.0590087 0.119348 +v -0.0160386 -0.0608783 -0.119362 +v -0.0160386 0.0608783 -0.119362 +v 0.0160386 -0.0608783 -0.119362 +v 0.0160386 0.0608783 -0.119362 +v 0.0160386 -0.0608783 0.119362 +v 0.0160386 0.0608783 0.119362 +v -0.0160386 -0.0608783 0.119362 +v -0.0160386 0.0608783 0.119362 +v -0.0511359 -0.0366961 -0.119381 +v -0.0511359 0.0366961 -0.119381 +v 0.0511359 -0.0366961 -0.119381 +v 0.0511359 0.0366961 -0.119381 +v 0.0511359 -0.0366961 0.119381 +v 0.0511359 0.0366961 0.119381 +v -0.0511359 -0.0366961 0.119381 +v -0.0511359 0.0366961 0.119381 +v -0.00519729 -0.0626721 -0.119449 +v -0.00519729 0.0626721 -0.119449 +v 0.00519729 -0.0626721 -0.119449 +v 0.00519729 0.0626721 -0.119449 +v 0.00519729 -0.0626721 0.119449 +v 0.00519729 0.0626721 0.119449 +v -0.00519729 -0.0626721 0.119449 +v -0.00519729 0.0626721 0.119449 +v -0.0263219 -0.0570655 -0.119504 +v -0.0263219 0.0570655 -0.119504 +v 0.0263219 -0.0570655 -0.119504 +v 0.0263219 0.0570655 -0.119504 +v 0.0263219 -0.0570655 0.119504 +v 0.0263219 0.0570655 0.119504 +v -0.0263219 -0.0570655 0.119504 +v -0.0263219 0.0570655 0.119504 +v -0.00346838 -0.0626721 -0.1196 +v -0.00346838 0.0626721 -0.1196 +v 0.00346838 -0.0626721 -0.1196 +v 0.00346838 0.0626721 -0.1196 +v 0.00346838 -0.0626721 0.1196 +v 0.00346838 0.0626721 0.1196 +v -0.00346838 -0.0626721 0.1196 +v -0.00346838 0.0626721 0.1196 +v -0.0591485 -0.0209327 -0.119631 +v -0.0591485 0.0209327 -0.119631 +v 0.0591485 -0.0209327 -0.119631 +v 0.0591485 0.0209327 -0.119631 +v 0.0591485 -0.0209327 0.119631 +v 0.0591485 0.0209327 0.119631 +v -0.0591485 -0.0209327 0.119631 +v -0.0591485 0.0209327 0.119631 +v -0.0447048 -0.0440044 -0.11965 +v -0.0447048 0.0440044 -0.11965 +v 0.0447048 -0.0440044 -0.11965 +v 0.0447048 0.0440044 -0.11965 +v 0.0447048 -0.0440044 0.11965 +v 0.0447048 0.0440044 0.11965 +v -0.0447048 -0.0440044 0.11965 +v -0.0447048 0.0440044 0.11965 +v -0.00173525 -0.0626721 -0.119691 +v -0.00173525 0.0626721 -0.119691 +v 0.00173525 -0.0626721 -0.119691 +v 0.00173525 0.0626721 -0.119691 +v 0.00173525 -0.0626721 0.119691 +v 0.00173525 0.0626721 0.119691 +v -0.00173525 -0.0626721 0.119691 +v -0.00173525 0.0626721 0.119691 +v -0.0335252 -0.0529685 -0.119703 +v -0.0335252 0.0529685 -0.119703 +v 0.0335252 -0.0529685 -0.119703 +v 0.0335252 0.0529685 -0.119703 +v 0.0335252 -0.0529685 0.119703 +v 0.0335252 0.0529685 0.119703 +v -0.0335252 -0.0529685 0.119703 +v -0.0335252 0.0529685 0.119703 +v -9.13366e-18 -0.0626721 -0.119721 +v -9.13366e-18 0.0626721 -0.119721 +v 3.04455e-18 -0.0626721 0.119721 +v 3.04455e-18 0.0626721 0.119721 +v -0.0143062 -0.0608783 -0.119892 +v -0.0143062 0.0608783 -0.119892 +v 0.0143062 -0.0608783 -0.119892 +v 0.0143062 0.0608783 -0.119892 +v 0.0143062 -0.0608783 0.119892 +v 0.0143062 0.0608783 0.119892 +v -0.0143062 -0.0608783 0.119892 +v -0.0143062 0.0608783 0.119892 +v -0.0554146 -0.0289768 -0.119896 +v -0.0554146 0.0289768 -0.119896 +v 0.0554146 -0.0289768 -0.119896 +v 0.0554146 0.0289768 -0.119896 +v 0.0554146 -0.0289768 0.119896 +v 0.0554146 0.0289768 0.119896 +v -0.0554146 -0.0289768 0.119896 +v -0.0554146 0.0289768 0.119896 +v -0.0419198 -0.0463348 -0.119958 +v -0.0419198 0.0463348 -0.119958 +v 0.0419198 -0.0463348 -0.119958 +v 0.0419198 0.0463348 -0.119958 +v 0.0419198 -0.0463348 0.119958 +v 0.0419198 0.0463348 0.119958 +v -0.0419198 -0.0463348 0.119958 +v -0.0419198 0.0463348 0.119958 +v -0.0363162 -0.0508196 -0.119985 +v -0.0363162 0.0508196 -0.119985 +v 0.0363162 -0.0508196 -0.119985 +v 0.0363162 0.0508196 -0.119985 +v 0.0363162 -0.0508196 0.119985 +v 0.0363162 0.0508196 0.119985 +v -0.0363162 -0.0508196 0.119985 +v -0.0363162 0.0508196 0.119985 +v -0.039119 -0.0486075 -0.12007 +v -0.039119 0.0486075 -0.12007 +v 0.039119 -0.0486075 -0.12007 +v 0.039119 0.0486075 -0.12007 +v 0.039119 -0.0486075 0.12007 +v 0.039119 0.0486075 0.12007 +v -0.039119 -0.0486075 0.12007 +v -0.039119 0.0486075 0.12007 +v -0.0596775 -0.0181947 -0.120075 +v -0.0596775 0.0181947 -0.120075 +v 0.0596775 -0.0181947 -0.120075 +v 0.0596775 0.0181947 -0.120075 +v 0.0596775 -0.0181947 0.120075 +v 0.0596775 0.0181947 0.120075 +v -0.0596775 -0.0181947 0.120075 +v -0.0596775 0.0181947 0.120075 +v -0.0202356 -0.0590087 -0.120085 +v -0.0202356 0.0590087 -0.120085 +v 0.0202356 -0.0590087 -0.120085 +v 0.0202356 0.0590087 -0.120085 +v 0.0202356 -0.0590087 0.120085 +v 0.0202356 0.0590087 0.120085 +v -0.0202356 -0.0590087 0.120085 +v -0.0202356 0.0590087 0.120085 +v -0.0484509 -0.0391821 -0.120172 +v -0.0484509 0.0391821 -0.120172 +v 0.0484509 -0.0391821 -0.120172 +v 0.0484509 0.0391821 -0.120172 +v 0.0484509 -0.0391821 0.120172 +v 0.0484509 0.0391821 0.120172 +v -0.0484509 -0.0391821 0.120172 +v -0.0484509 0.0391821 0.120172 +v -0.0520356 -0.0341645 -0.12025 +v -0.0520356 0.0341645 -0.12025 +v 0.0520356 -0.0341645 -0.12025 +v 0.0520356 0.0341645 -0.12025 +v 0.0520356 -0.0341645 0.12025 +v 0.0520356 0.0341645 0.12025 +v -0.0520356 -0.0341645 0.12025 +v -0.0520356 0.0341645 0.12025 +v -0.0290231 -0.0550513 -0.120269 +v -0.0290231 0.0550513 -0.120269 +v 0.0290231 -0.0550513 -0.120269 +v 0.0290231 0.0550513 -0.120269 +v 0.0290231 -0.0550513 0.120269 +v 0.0290231 0.0550513 0.120269 +v -0.0290231 -0.0550513 0.120269 +v -0.0290231 0.0550513 0.120269 +v -0.0125563 -0.0608783 -0.12036 +v -0.0125563 0.0608783 -0.12036 +v 0.0125563 -0.0608783 -0.12036 +v 0.0125563 0.0608783 -0.12036 +v 0.0125563 -0.0608783 0.12036 +v 0.0125563 0.0608783 0.12036 +v -0.0125563 -0.0608783 0.12036 +v -0.0125563 0.0608783 0.12036 +v -0.0245782 -0.0570655 -0.120393 +v -0.0245782 0.0570655 -0.120393 +v 0.0245782 -0.0570655 -0.120393 +v 0.0245782 0.0570655 -0.120393 +v 0.0245782 -0.0570655 0.120393 +v 0.0245782 0.0570655 0.120393 +v -0.0245782 -0.0570655 0.120393 +v -0.0245782 0.0570655 0.120393 +v -0.0601322 -0.0154341 -0.120457 +v -0.0601322 0.0154341 -0.120457 +v 0.0601322 -0.0154341 -0.120457 +v 0.0601322 0.0154341 -0.120457 +v 0.0601322 -0.0154341 0.120457 +v 0.0601322 0.0154341 0.120457 +v -0.0601322 -0.0154341 0.120457 +v -0.0601322 0.0154341 0.120457 +v -0.0561401 -0.0263271 -0.120549 +v -0.0561401 0.0263271 -0.120549 +v 0.0561401 -0.0263271 -0.120549 +v 0.0561401 0.0263271 -0.120549 +v 0.0561401 -0.0263271 0.120549 +v 0.0561401 0.0263271 0.120549 +v -0.0561401 -0.0263271 0.120549 +v -0.0561401 0.0263271 0.120549 +v -0.0184753 -0.0590087 -0.120761 +v -0.0184753 0.0590087 -0.120761 +v 0.0184753 -0.0590087 -0.120761 +v 0.0184753 0.0590087 -0.120761 +v 0.0184753 -0.0590087 0.120761 +v 0.0184753 0.0590087 0.120761 +v -0.0184753 -0.0590087 0.120761 +v -0.0184753 0.0590087 0.120761 +v -0.0107911 -0.0608783 -0.120768 +v -0.0107911 0.0608783 -0.120768 +v 0.0107911 -0.0608783 -0.120768 +v 0.0107911 0.0608783 -0.120768 +v 0.0107911 -0.0608783 0.120768 +v 0.0107911 0.0608783 0.120768 +v -0.0107911 -0.0608783 0.120768 +v -0.0107911 0.0608783 0.120768 +v -0.0457161 -0.0416192 -0.120773 +v -0.0457161 0.0416192 -0.120773 +v 0.0457161 -0.0416192 -0.120773 +v 0.0457161 0.0416192 -0.120773 +v 0.0457161 -0.0416192 0.120773 +v 0.0457161 0.0416192 0.120773 +v -0.0457161 -0.0416192 0.120773 +v -0.0457161 0.0416192 0.120773 +v -0.060512 -0.0126542 -0.120776 +v -0.060512 0.0126542 -0.120776 +v 0.060512 -0.0126542 -0.120776 +v 0.060512 0.0126542 -0.120776 +v 0.060512 -0.0126542 0.120776 +v 0.060512 0.0126542 0.120776 +v -0.060512 -0.0126542 0.120776 +v -0.060512 0.0126542 0.120776 +v -0.0317702 -0.0529685 -0.120843 +v -0.0317702 0.0529685 -0.120843 +v 0.0317702 -0.0529685 -0.120843 +v 0.0317702 0.0529685 -0.120843 +v 0.0317702 -0.0529685 0.120843 +v 0.0317702 0.0529685 0.120843 +v -0.0317702 -0.0529685 0.120843 +v -0.0317702 0.0529685 0.120843 +v -0.0608164 -0.00985854 -0.121031 +v -0.0608164 0.00985854 -0.121031 +v 0.0608164 -0.00985854 -0.121031 +v 0.0608164 0.00985854 -0.121031 +v 0.0608164 -0.00985854 0.121031 +v 0.0608164 0.00985854 0.121031 +v -0.0608164 -0.00985854 0.121031 +v -0.0608164 0.00985854 0.121031 +v -0.0528705 -0.0315903 -0.121056 +v -0.0528705 0.0315903 -0.121056 +v 0.0528705 -0.0315903 -0.121056 +v 0.0528705 0.0315903 -0.121056 +v 0.0528705 -0.0315903 0.121056 +v 0.0528705 0.0315903 0.121056 +v -0.0528705 -0.0315903 0.121056 +v -0.0528705 0.0315903 0.121056 +v -0.00901271 -0.0608783 -0.121114 +v -0.00901271 0.0608783 -0.121114 +v 0.00901271 -0.0608783 -0.121114 +v 0.00901271 0.0608783 -0.121114 +v 0.00901271 -0.0608783 0.121114 +v 0.00901271 0.0608783 0.121114 +v -0.00901271 -0.0608783 0.121114 +v -0.00901271 0.0608783 0.121114 +v -0.0493813 -0.0366961 -0.121136 +v -0.0493813 0.0366961 -0.121136 +v 0.0493813 -0.0366961 -0.121136 +v 0.0493813 0.0366961 -0.121136 +v 0.0493813 -0.0366961 0.121136 +v 0.0493813 0.0366961 0.121136 +v -0.0493813 -0.0366961 0.121136 +v -0.0493813 0.0366961 0.121136 +v -0.0567956 -0.0236447 -0.121139 +v -0.0567956 0.0236447 -0.121139 +v 0.0567956 -0.0236447 -0.121139 +v 0.0567956 0.0236447 -0.121139 +v 0.0567956 -0.0236447 0.121139 +v 0.0567956 0.0236447 0.121139 +v -0.0567956 -0.0236447 0.121139 +v -0.0567956 0.0236447 0.121139 +v -0.0429448 -0.0440044 -0.12118 +v -0.0429448 0.0440044 -0.12118 +v 0.0429448 -0.0440044 -0.12118 +v 0.0429448 0.0440044 -0.12118 +v 0.0429448 -0.0440044 0.12118 +v 0.0429448 0.0440044 0.12118 +v -0.0429448 -0.0440044 0.12118 +v -0.0429448 0.0440044 0.12118 +v -0.0228046 -0.0570655 -0.12122 +v -0.0228046 0.0570655 -0.12122 +v 0.0228046 -0.0570655 -0.12122 +v 0.0228046 0.0570655 -0.12122 +v 0.0228046 -0.0570655 0.12122 +v 0.0228046 0.0570655 0.12122 +v -0.0228046 -0.0570655 0.12122 +v -0.0228046 0.0570655 0.12122 +v -0.0345496 -0.0508196 -0.121222 +v -0.0345496 0.0508196 -0.121222 +v 0.0345496 -0.0508196 -0.121222 +v 0.0345496 0.0508196 -0.121222 +v 0.0345496 -0.0508196 0.121222 +v 0.0345496 0.0508196 0.121222 +v -0.0345496 -0.0508196 0.121222 +v -0.0345496 0.0508196 0.121222 +v -0.0610451 -0.0070506 -0.121223 +v -0.0610451 0.0070506 -0.121223 +v 0.0610451 -0.0070506 -0.121223 +v 0.0610451 0.0070506 -0.121223 +v 0.0610451 -0.0070506 0.121223 +v 0.0610451 0.0070506 0.121223 +v -0.0610451 -0.0070506 0.121223 +v -0.0610451 0.0070506 0.121223 +v -0.027251 -0.0550513 -0.121252 +v -0.027251 0.0550513 -0.121252 +v 0.027251 -0.0550513 -0.121252 +v 0.027251 0.0550513 -0.121252 +v 0.027251 -0.0550513 0.121252 +v 0.027251 0.0550513 0.121252 +v -0.027251 -0.0550513 0.121252 +v -0.027251 0.0550513 0.121252 +v -0.0611977 -0.00423388 -0.121351 +v -0.0611977 0.00423388 -0.121351 +v 0.0611977 -0.00423388 -0.121351 +v 0.0611977 0.00423388 -0.121351 +v 0.0611977 -0.00423388 0.121351 +v 0.0611977 0.00423388 0.121351 +v -0.0611977 -0.00423388 0.121351 +v -0.0611977 0.00423388 0.121351 +v -0.0166926 -0.0590087 -0.121374 +v -0.0166926 0.0590087 -0.121374 +v 0.0166926 -0.0590087 -0.121374 +v 0.0166926 0.0590087 -0.121374 +v 0.0166926 -0.0590087 0.121374 +v 0.0166926 0.0590087 0.121374 +v -0.0166926 -0.0590087 0.121374 +v -0.0166926 0.0590087 0.121374 +v -0.0401508 -0.0463348 -0.121391 +v -0.0401508 0.0463348 -0.121391 +v 0.0401508 -0.0463348 -0.121391 +v 0.0401508 0.0463348 -0.121391 +v 0.0401508 -0.0463348 0.121391 +v 0.0401508 0.0463348 0.121391 +v -0.0401508 -0.0463348 0.121391 +v -0.0401508 0.0463348 0.121391 +v -0.00722338 -0.0608783 -0.121397 +v -0.00722338 0.0608783 -0.121397 +v 0.00722338 -0.0608783 -0.121397 +v 0.00722338 0.0608783 -0.121397 +v 0.00722338 -0.0608783 0.121397 +v 0.00722338 0.0608783 0.121397 +v -0.00722338 -0.0608783 0.121397 +v -0.00722338 0.0608783 0.121397 +v -0.0373478 -0.0486075 -0.121405 +v -0.0373478 0.0486075 -0.121405 +v 0.0373478 -0.0486075 -0.121405 +v 0.0373478 0.0486075 -0.121405 +v 0.0373478 -0.0486075 0.121405 +v 0.0373478 0.0486075 0.121405 +v -0.0373478 -0.0486075 0.121405 +v -0.0373478 0.0486075 0.121405 +v -0.061274 -0.00141188 -0.121415 +v -0.061274 0.00141188 -0.121415 +v 0.061274 -0.00141188 -0.121415 +v 0.061274 0.00141188 -0.121415 +v 0.061274 -0.00141188 0.121415 +v 0.061274 0.00141188 0.121415 +v -0.061274 -0.00141188 0.121415 +v -0.061274 0.00141188 0.121415 +v -0.00542525 -0.0608783 -0.121618 +v -0.00542525 0.0608783 -0.121618 +v 0.00542525 -0.0608783 -0.121618 +v 0.00542525 0.0608783 -0.121618 +v 0.00542525 -0.0608783 0.121618 +v 0.00542525 0.0608783 0.121618 +v -0.00542525 -0.0608783 0.121618 +v -0.00542525 0.0608783 0.121618 +v -0.0573803 -0.0209327 -0.121665 +v -0.0573803 0.0209327 -0.121665 +v 0.0573803 -0.0209327 -0.121665 +v 0.0573803 0.0209327 -0.121665 +v 0.0573803 -0.0209327 0.121665 +v 0.0573803 0.0209327 0.121665 +v -0.0573803 -0.0209327 0.121665 +v -0.0573803 0.0209327 0.121665 +v -0.00362051 -0.0608783 -0.121776 +v -0.00362051 0.0608783 -0.121776 +v 0.00362051 -0.0608783 -0.121776 +v 0.00362051 0.0608783 -0.121776 +v 0.00362051 -0.0608783 0.121776 +v 0.00362051 0.0608783 0.121776 +v -0.00362051 -0.0608783 0.121776 +v -0.00362051 0.0608783 0.121776 +v -0.0536395 -0.0289768 -0.121799 +v -0.0536395 0.0289768 -0.121799 +v 0.0536395 -0.0289768 -0.121799 +v 0.0536395 0.0289768 -0.121799 +v 0.0536395 -0.0289768 0.121799 +v 0.0536395 0.0289768 0.121799 +v -0.0536395 -0.0289768 0.121799 +v -0.0536395 0.0289768 0.121799 +v -0.0466704 -0.0391821 -0.121833 +v -0.0466704 0.0391821 -0.121833 +v 0.0466704 -0.0391821 -0.121833 +v 0.0466704 0.0391821 -0.121833 +v 0.0466704 -0.0391821 0.121833 +v 0.0466704 0.0391821 0.121833 +v -0.0466704 -0.0391821 0.121833 +v -0.0466704 0.0391821 0.121833 +v -0.00181136 -0.0608783 -0.121871 +v -0.00181136 0.0608783 -0.121871 +v 0.00181136 -0.0608783 -0.121871 +v 0.00181136 0.0608783 -0.121871 +v 0.00181136 -0.0608783 0.121871 +v 0.00181136 0.0608783 0.121871 +v -0.00181136 -0.0608783 0.121871 +v -0.00181136 0.0608783 0.121871 +v -9.53427e-18 -0.0608783 -0.121902 +v -9.53427e-18 0.0608783 -0.121902 +v 3.17809e-18 -0.0608783 0.121902 +v 3.17809e-18 0.0608783 0.121902 +v -0.0299764 -0.0529685 -0.121921 +v -0.0299764 0.0529685 -0.121921 +v 0.0299764 -0.0529685 -0.121921 +v 0.0299764 0.0529685 -0.121921 +v 0.0299764 -0.0529685 0.121921 +v 0.0299764 0.0529685 0.121921 +v -0.0299764 -0.0529685 0.121921 +v -0.0299764 0.0529685 0.121921 +v -0.0148895 -0.0590087 -0.121926 +v -0.0148895 0.0590087 -0.121926 +v 0.0148895 -0.0590087 -0.121926 +v 0.0148895 0.0590087 -0.121926 +v 0.0148895 -0.0590087 0.121926 +v 0.0148895 0.0590087 0.121926 +v -0.0148895 -0.0590087 0.121926 +v -0.0148895 0.0590087 0.121926 +v -0.0210031 -0.0570655 -0.121985 +v -0.0210031 0.0570655 -0.121985 +v 0.0210031 -0.0570655 -0.121985 +v 0.0210031 0.0570655 -0.121985 +v 0.0210031 -0.0570655 0.121985 +v 0.0210031 0.0570655 0.121985 +v -0.0210031 -0.0570655 0.121985 +v -0.0210031 0.0570655 0.121985 +v -0.0502502 -0.0341645 -0.122036 +v -0.0502502 0.0341645 -0.122036 +v 0.0502502 -0.0341645 -0.122036 +v 0.0502502 0.0341645 -0.122036 +v 0.0502502 -0.0341645 0.122036 +v 0.0502502 0.0341645 0.122036 +v -0.0502502 -0.0341645 0.122036 +v -0.0502502 0.0341645 0.122036 +v -0.0578936 -0.0181947 -0.122128 +v -0.0578936 0.0181947 -0.122128 +v 0.0578936 -0.0181947 -0.122128 +v 0.0578936 0.0181947 -0.122128 +v 0.0578936 -0.0181947 0.122128 +v 0.0578936 0.0181947 0.122128 +v -0.0578936 -0.0181947 0.122128 +v -0.0578936 0.0181947 0.122128 +v -0.0254458 -0.0550513 -0.122172 +v -0.0254458 0.0550513 -0.122172 +v 0.0254458 -0.0550513 -0.122172 +v 0.0254458 0.0550513 -0.122172 +v 0.0254458 -0.0550513 0.122172 +v 0.0254458 0.0550513 0.122172 +v -0.0254458 -0.0550513 0.122172 +v -0.0254458 0.0550513 0.122172 +v -0.0439163 -0.0416192 -0.122337 +v -0.0439163 0.0416192 -0.122337 +v 0.0439163 -0.0416192 -0.122337 +v 0.0439163 0.0416192 -0.122337 +v 0.0439163 -0.0416192 0.122337 +v 0.0439163 0.0416192 0.122337 +v -0.0439163 -0.0416192 0.122337 +v -0.0439163 0.0416192 0.122337 +v -0.032741 -0.0508196 -0.122396 +v -0.032741 0.0508196 -0.122396 +v 0.032741 -0.0508196 -0.122396 +v 0.032741 0.0508196 -0.122396 +v 0.032741 -0.0508196 0.122396 +v 0.032741 0.0508196 0.122396 +v -0.032741 -0.0508196 0.122396 +v -0.032741 0.0508196 0.122396 +v -0.0130682 -0.0590087 -0.122414 +v -0.0130682 0.0590087 -0.122414 +v 0.0130682 -0.0590087 -0.122414 +v 0.0130682 0.0590087 -0.122414 +v 0.0130682 -0.0590087 0.122414 +v 0.0130682 0.0590087 0.122414 +v -0.0130682 -0.0590087 0.122414 +v -0.0130682 0.0590087 0.122414 +v -0.0543417 -0.0263271 -0.122477 +v -0.0543417 0.0263271 -0.122477 +v 0.0543417 -0.0263271 -0.122477 +v 0.0543417 0.0263271 -0.122477 +v 0.0543417 -0.0263271 0.122477 +v 0.0543417 0.0263271 0.122477 +v -0.0543417 -0.0263271 0.122477 +v -0.0543417 0.0263271 0.122477 +v -0.0583347 -0.0154341 -0.122525 +v -0.0583347 0.0154341 -0.122525 +v 0.0583347 -0.0154341 -0.122525 +v 0.0583347 0.0154341 -0.122525 +v 0.0583347 -0.0154341 0.122525 +v 0.0583347 0.0154341 0.122525 +v -0.0583347 -0.0154341 0.122525 +v -0.0583347 0.0154341 0.122525 +v -0.0411325 -0.0440044 -0.122647 +v -0.0411325 0.0440044 -0.122647 +v 0.0411325 -0.0440044 -0.122647 +v 0.0411325 0.0440044 -0.122647 +v 0.0411325 -0.0440044 0.122647 +v 0.0411325 0.0440044 0.122647 +v -0.0411325 -0.0440044 0.122647 +v -0.0411325 0.0440044 0.122647 +v -0.035531 -0.0486075 -0.122677 +v -0.035531 0.0486075 -0.122677 +v 0.035531 -0.0486075 -0.122677 +v 0.035531 0.0486075 -0.122677 +v 0.035531 -0.0486075 0.122677 +v 0.035531 0.0486075 0.122677 +v -0.035531 -0.0486075 0.122677 +v -0.035531 0.0486075 0.122677 +v -0.0191761 -0.0570655 -0.122686 +v -0.0191761 0.0570655 -0.122686 +v 0.0191761 -0.0570655 -0.122686 +v 0.0191761 0.0570655 -0.122686 +v 0.0191761 -0.0570655 0.122686 +v 0.0191761 0.0570655 0.122686 +v -0.0191761 -0.0570655 0.122686 +v -0.0191761 0.0570655 0.122686 +v -0.0383328 -0.0463348 -0.122761 +v -0.0383328 0.0463348 -0.122761 +v 0.0383328 -0.0463348 -0.122761 +v 0.0383328 0.0463348 -0.122761 +v 0.0383328 -0.0463348 0.122761 +v 0.0383328 0.0463348 0.122761 +v -0.0383328 -0.0463348 0.122761 +v -0.0383328 0.0463348 0.122761 +v -0.0475666 -0.0366961 -0.122828 +v -0.0475666 0.0366961 -0.122828 +v 0.0475666 -0.0366961 -0.122828 +v 0.0475666 0.0366961 -0.122828 +v 0.0475666 -0.0366961 0.122828 +v 0.0475666 0.0366961 0.122828 +v -0.0475666 -0.0366961 0.122828 +v -0.0475666 0.0366961 0.122828 +v -0.011231 -0.0590087 -0.122838 +v -0.011231 0.0590087 -0.122838 +v 0.011231 -0.0590087 -0.122838 +v 0.011231 0.0590087 -0.122838 +v 0.011231 -0.0590087 0.122838 +v 0.011231 0.0590087 0.122838 +v -0.011231 -0.0590087 0.122838 +v -0.011231 0.0590087 0.122838 +v -0.0587031 -0.0126542 -0.122857 +v -0.0587031 0.0126542 -0.122857 +v 0.0587031 -0.0126542 -0.122857 +v 0.0587031 0.0126542 -0.122857 +v 0.0587031 -0.0126542 0.122857 +v 0.0587031 0.0126542 0.122857 +v -0.0587031 -0.0126542 0.122857 +v -0.0587031 0.0126542 0.122857 +v -0.0510565 -0.0315903 -0.122871 +v -0.0510565 0.0315903 -0.122871 +v 0.0510565 -0.0315903 -0.122871 +v 0.0510565 0.0315903 -0.122871 +v 0.0510565 -0.0315903 0.122871 +v 0.0510565 0.0315903 0.122871 +v -0.0510565 -0.0315903 0.122871 +v -0.0510565 0.0315903 0.122871 +v -0.0281461 -0.0529685 -0.122935 +v -0.0281461 0.0529685 -0.122935 +v 0.0281461 -0.0529685 -0.122935 +v 0.0281461 0.0529685 -0.122935 +v 0.0281461 -0.0529685 0.122935 +v 0.0281461 0.0529685 0.122935 +v -0.0281461 -0.0529685 0.122935 +v -0.0281461 0.0529685 0.122935 +v -0.0236095 -0.0550513 -0.123028 +v -0.0236095 0.0550513 -0.123028 +v 0.0236095 -0.0550513 -0.123028 +v 0.0236095 0.0550513 -0.123028 +v 0.0236095 -0.0550513 0.123028 +v 0.0236095 0.0550513 0.123028 +v -0.0236095 -0.0550513 0.123028 +v -0.0236095 0.0550513 0.123028 +v -0.0549762 -0.0236447 -0.12309 +v -0.0549762 0.0236447 -0.12309 +v 0.0549762 -0.0236447 -0.12309 +v 0.0549762 0.0236447 -0.12309 +v 0.0549762 -0.0236447 0.12309 +v 0.0549762 0.0236447 0.12309 +v -0.0549762 -0.0236447 0.12309 +v -0.0549762 0.0236447 0.12309 +v -0.0589984 -0.00985854 -0.123122 +v -0.0589984 0.00985854 -0.123122 +v 0.0589984 -0.00985854 -0.123122 +v 0.0589984 0.00985854 -0.123122 +v 0.0589984 -0.00985854 0.123122 +v 0.0589984 0.00985854 0.123122 +v -0.0589984 -0.00985854 0.123122 +v -0.0589984 0.00985854 0.123122 +v -0.00938018 -0.0590087 -0.123198 +v -0.00938018 0.0590087 -0.123198 +v 0.00938018 -0.0590087 -0.123198 +v 0.00938018 0.0590087 -0.123198 +v 0.00938018 -0.0590087 0.123198 +v 0.00938018 0.0590087 0.123198 +v -0.00938018 -0.0590087 0.123198 +v -0.00938018 0.0590087 0.123198 +v -0.0592202 -0.0070506 -0.123322 +v -0.0592202 0.0070506 -0.123322 +v 0.0592202 -0.0070506 -0.123322 +v 0.0592202 0.0070506 -0.123322 +v 0.0592202 -0.0070506 0.123322 +v 0.0592202 0.0070506 0.123322 +v -0.0592202 -0.0070506 0.123322 +v -0.0592202 0.0070506 0.123322 +v -0.0173257 -0.0570655 -0.123323 +v -0.0173257 0.0570655 -0.123323 +v 0.0173257 -0.0570655 -0.123323 +v 0.0173257 0.0570655 -0.123323 +v 0.0173257 -0.0570655 0.123323 +v 0.0173257 0.0570655 0.123323 +v -0.0173257 -0.0570655 0.123323 +v -0.0173257 0.0570655 0.123323 +v -0.0448331 -0.0391821 -0.12343 +v -0.0448331 0.0391821 -0.12343 +v 0.0448331 -0.0391821 -0.12343 +v 0.0448331 0.0391821 -0.12343 +v 0.0448331 -0.0391821 0.12343 +v 0.0448331 0.0391821 0.12343 +v -0.0448331 -0.0391821 0.12343 +v -0.0448331 0.0391821 0.12343 +v -0.0593683 -0.00423388 -0.123455 +v -0.0593683 0.00423388 -0.123455 +v 0.0593683 -0.00423388 -0.123455 +v 0.0593683 0.00423388 -0.123455 +v 0.0593683 -0.00423388 0.123455 +v 0.0593683 0.00423388 0.123455 +v -0.0593683 -0.00423388 0.123455 +v -0.0593683 0.00423388 0.123455 +v -0.00751789 -0.0590087 -0.123493 +v -0.00751789 0.0590087 -0.123493 +v 0.00751789 -0.0590087 -0.123493 +v 0.00751789 0.0590087 -0.123493 +v 0.00751789 -0.0590087 0.123493 +v 0.00751789 0.0590087 0.123493 +v -0.00751789 -0.0590087 0.123493 +v -0.00751789 0.0590087 0.123493 +v -0.0308924 -0.0508196 -0.123507 +v -0.0308924 0.0508196 -0.123507 +v 0.0308924 -0.0508196 -0.123507 +v 0.0308924 0.0508196 -0.123507 +v 0.0308924 -0.0508196 0.123507 +v 0.0308924 0.0508196 0.123507 +v -0.0308924 -0.0508196 0.123507 +v -0.0308924 0.0508196 0.123507 +v -0.0594423 -0.00141188 -0.123522 +v -0.0594423 0.00141188 -0.123522 +v 0.0594423 -0.00141188 -0.123522 +v 0.0594423 0.00141188 -0.123522 +v 0.0594423 -0.00141188 0.123522 +v 0.0594423 0.00141188 0.123522 +v -0.0594423 -0.00141188 0.123522 +v -0.0594423 0.00141188 0.123522 +v -0.0555423 -0.0209327 -0.123637 +v -0.0555423 0.0209327 -0.123637 +v 0.0555423 -0.0209327 -0.123637 +v 0.0555423 0.0209327 -0.123637 +v 0.0555423 -0.0209327 0.123637 +v 0.0555423 0.0209327 0.123637 +v -0.0555423 -0.0209327 0.123637 +v -0.0555423 0.0209327 0.123637 +v -0.0517991 -0.0289768 -0.12364 +v -0.0517991 0.0289768 -0.12364 +v 0.0517991 -0.0289768 -0.12364 +v 0.0517991 0.0289768 -0.12364 +v 0.0517991 -0.0289768 0.12364 +v 0.0517991 0.0289768 0.12364 +v -0.0517991 -0.0289768 0.12364 +v -0.0517991 0.0289768 0.12364 +v -0.00564645 -0.0590087 -0.123722 +v -0.00564645 0.0590087 -0.123722 +v 0.00564645 -0.0590087 -0.123722 +v 0.00564645 0.0590087 -0.123722 +v 0.00564645 -0.0590087 0.123722 +v 0.00564645 0.0590087 0.123722 +v -0.00564645 -0.0590087 0.123722 +v -0.00564645 0.0590087 0.123722 +v -0.0484036 -0.0341645 -0.123758 +v -0.0484036 0.0341645 -0.123758 +v 0.0484036 -0.0341645 -0.123758 +v 0.0484036 0.0341645 -0.123758 +v 0.0484036 -0.0341645 0.123758 +v 0.0484036 0.0341645 0.123758 +v -0.0484036 -0.0341645 0.123758 +v -0.0484036 0.0341645 0.123758 +v -0.0217445 -0.0550513 -0.123819 +v -0.0217445 0.0550513 -0.123819 +v 0.0217445 -0.0550513 -0.123819 +v 0.0217445 0.0550513 -0.123819 +v 0.0217445 -0.0550513 0.123819 +v 0.0217445 0.0550513 0.123819 +v -0.0217445 -0.0550513 0.123819 +v -0.0217445 0.0550513 0.123819 +v -0.042063 -0.0416192 -0.123838 +v -0.042063 0.0416192 -0.123838 +v 0.042063 -0.0416192 -0.123838 +v 0.042063 0.0416192 -0.123838 +v 0.042063 -0.0416192 0.123838 +v 0.042063 0.0416192 0.123838 +v -0.042063 -0.0416192 0.123838 +v -0.042063 0.0416192 0.123838 +v -0.0262816 -0.0529685 -0.123885 +v -0.0262816 0.0529685 -0.123885 +v 0.0262816 -0.0529685 -0.123885 +v 0.0262816 0.0529685 -0.123885 +v 0.0262816 -0.0529685 0.123885 +v 0.0262816 0.0529685 0.123885 +v -0.0262816 -0.0529685 0.123885 +v -0.0262816 0.0529685 0.123885 +v -0.033671 -0.0486075 -0.123885 +v -0.033671 0.0486075 -0.123885 +v 0.033671 -0.0486075 -0.123885 +v 0.033671 0.0486075 -0.123885 +v 0.033671 -0.0486075 0.123885 +v 0.033671 0.0486075 0.123885 +v -0.033671 -0.0486075 0.123885 +v -0.033671 0.0486075 0.123885 +v -0.00376813 -0.0590087 -0.123887 +v -0.00376813 0.0590087 -0.123887 +v 0.00376813 -0.0590087 -0.123887 +v 0.00376813 0.0590087 -0.123887 +v 0.00376813 -0.0590087 0.123887 +v 0.00376813 0.0590087 0.123887 +v -0.00376813 -0.0590087 0.123887 +v -0.00376813 0.0590087 0.123887 +v -0.0154542 -0.0570655 -0.123895 +v -0.0154542 0.0570655 -0.123895 +v 0.0154542 -0.0570655 -0.123895 +v 0.0154542 0.0570655 -0.123895 +v 0.0154542 -0.0570655 0.123895 +v 0.0154542 0.0570655 0.123895 +v -0.0154542 -0.0570655 0.123895 +v -0.0154542 0.0570655 0.123895 +v -0.00188521 -0.0590087 -0.123985 +v -0.00188521 0.0590087 -0.123985 +v 0.00188521 -0.0590087 -0.123985 +v 0.00188521 0.0590087 -0.123985 +v 0.00188521 -0.0590087 0.123985 +v 0.00188521 0.0590087 0.123985 +v -0.00188521 -0.0590087 0.123985 +v -0.00188521 0.0590087 0.123985 +v -9.923e-18 -0.0590087 -0.124018 +v -9.923e-18 0.0590087 -0.124018 +v 3.30767e-18 -0.0590087 0.124018 +v 3.30767e-18 0.0590087 0.124018 +v -0.0392701 -0.0440044 -0.124051 +v -0.0392701 0.0440044 -0.124051 +v 0.0392701 -0.0440044 -0.124051 +v 0.0392701 0.0440044 -0.124051 +v 0.0392701 -0.0440044 0.124051 +v 0.0392701 0.0440044 0.124051 +v -0.0392701 -0.0440044 0.124051 +v -0.0392701 0.0440044 0.124051 +v -0.0364681 -0.0463348 -0.124066 +v -0.0364681 0.0463348 -0.124066 +v 0.0364681 -0.0463348 -0.124066 +v 0.0364681 0.0463348 -0.124066 +v 0.0364681 -0.0463348 0.124066 +v 0.0364681 0.0463348 0.124066 +v -0.0364681 -0.0463348 0.124066 +v -0.0364681 0.0463348 0.124066 +v -0.0560391 -0.0181947 -0.124116 +v -0.0560391 0.0181947 -0.124116 +v 0.0560391 -0.0181947 -0.124116 +v 0.0560391 0.0181947 -0.124116 +v 0.0560391 -0.0181947 0.124116 +v 0.0560391 0.0181947 0.124116 +v -0.0560391 -0.0181947 0.124116 +v -0.0560391 0.0181947 0.124116 +v -0.0524772 -0.0263271 -0.124342 +v -0.0524772 0.0263271 -0.124342 +v 0.0524772 -0.0263271 -0.124342 +v 0.0524772 0.0263271 -0.124342 +v 0.0524772 -0.0263271 0.124342 +v 0.0524772 0.0263271 0.124342 +v -0.0524772 -0.0263271 0.124342 +v -0.0524772 0.0263271 0.124342 +v -0.0135639 -0.0570655 -0.124402 +v -0.0135639 0.0570655 -0.124402 +v 0.0135639 -0.0570655 -0.124402 +v 0.0135639 0.0570655 -0.124402 +v 0.0135639 -0.0570655 0.124402 +v 0.0135639 0.0570655 0.124402 +v -0.0135639 -0.0570655 0.124402 +v -0.0135639 0.0570655 0.124402 +v -0.045694 -0.0366961 -0.124456 +v -0.045694 0.0366961 -0.124456 +v 0.045694 -0.0366961 -0.124456 +v 0.045694 0.0366961 -0.124456 +v 0.045694 -0.0366961 0.124456 +v 0.045694 0.0366961 0.124456 +v -0.045694 -0.0366961 0.124456 +v -0.045694 0.0366961 0.124456 +v -0.0564661 -0.0154341 -0.124529 +v -0.0564661 0.0154341 -0.124529 +v 0.0564661 -0.0154341 -0.124529 +v 0.0564661 0.0154341 -0.124529 +v 0.0564661 -0.0154341 0.124529 +v 0.0564661 0.0154341 0.124529 +v -0.0564661 -0.0154341 0.124529 +v -0.0564661 0.0154341 0.124529 +v -0.019853 -0.0550513 -0.124546 +v -0.019853 0.0550513 -0.124546 +v 0.019853 -0.0550513 -0.124546 +v 0.019853 0.0550513 -0.124546 +v 0.019853 -0.0550513 0.124546 +v 0.019853 0.0550513 0.124546 +v -0.019853 -0.0550513 0.124546 +v -0.019853 0.0550513 0.124546 +v -0.0290062 -0.0508196 -0.124553 +v -0.0290062 0.0508196 -0.124553 +v 0.0290062 -0.0508196 -0.124553 +v 0.0290062 0.0508196 -0.124553 +v 0.0290062 -0.0508196 0.124553 +v 0.0290062 0.0508196 0.124553 +v -0.0290062 -0.0508196 0.124553 +v -0.0290062 0.0508196 0.124553 +v -0.0491802 -0.0315903 -0.12462 +v -0.0491802 0.0315903 -0.12462 +v 0.0491802 -0.0315903 -0.12462 +v 0.0491802 0.0315903 -0.12462 +v 0.0491802 -0.0315903 0.12462 +v 0.0491802 0.0315903 0.12462 +v -0.0491802 -0.0315903 0.12462 +v -0.0491802 0.0315903 0.12462 +v -0.024385 -0.0529685 -0.12477 +v -0.024385 0.0529685 -0.12477 +v 0.024385 -0.0529685 -0.12477 +v 0.024385 0.0529685 -0.12477 +v 0.024385 -0.0529685 0.12477 +v 0.024385 0.0529685 0.12477 +v -0.024385 -0.0529685 0.12477 +v -0.024385 0.0529685 0.12477 +v -0.011657 -0.0570655 -0.124842 +v -0.011657 0.0570655 -0.124842 +v 0.011657 -0.0570655 -0.124842 +v 0.011657 0.0570655 -0.124842 +v 0.011657 -0.0570655 0.124842 +v 0.011657 0.0570655 0.124842 +v -0.011657 -0.0570655 0.124842 +v -0.011657 0.0570655 0.124842 +v -0.0568227 -0.0126542 -0.124873 +v -0.0568227 0.0126542 -0.124873 +v 0.0568227 -0.0126542 -0.124873 +v 0.0568227 0.0126542 -0.124873 +v 0.0568227 -0.0126542 0.124873 +v 0.0568227 0.0126542 0.124873 +v -0.0568227 -0.0126542 0.124873 +v -0.0568227 0.0126542 0.124873 +v -0.0429411 -0.0391821 -0.124962 +v -0.0429411 0.0391821 -0.124962 +v 0.0429411 -0.0391821 -0.124962 +v 0.0429411 0.0391821 -0.124962 +v 0.0429411 -0.0391821 0.124962 +v 0.0429411 0.0391821 0.124962 +v -0.0429411 -0.0391821 0.124962 +v -0.0429411 0.0391821 0.124962 +v -0.0530899 -0.0236447 -0.124976 +v -0.0530899 0.0236447 -0.124976 +v 0.0530899 -0.0236447 -0.124976 +v 0.0530899 0.0236447 -0.124976 +v 0.0530899 -0.0236447 0.124976 +v 0.0530899 0.0236447 0.124976 +v -0.0530899 -0.0236447 0.124976 +v -0.0530899 0.0236447 0.124976 +v -0.0317699 -0.0486075 -0.125027 +v -0.0317699 0.0486075 -0.125027 +v 0.0317699 -0.0486075 -0.125027 +v 0.0317699 0.0486075 -0.125027 +v 0.0317699 -0.0486075 0.125027 +v 0.0317699 0.0486075 0.125027 +v -0.0317699 -0.0486075 0.125027 +v -0.0317699 0.0486075 0.125027 +v -0.0571086 -0.00985854 -0.125149 +v -0.0571086 0.00985854 -0.125149 +v 0.0571086 -0.00985854 -0.125149 +v 0.0571086 0.00985854 -0.125149 +v 0.0571086 -0.00985854 0.125149 +v 0.0571086 0.00985854 0.125149 +v -0.0571086 -0.00985854 0.125149 +v -0.0571086 0.00985854 0.125149 +v -0.0179372 -0.0550513 -0.125205 +v -0.0179372 0.0550513 -0.125205 +v 0.0179372 -0.0550513 -0.125205 +v 0.0179372 0.0550513 -0.125205 +v 0.0179372 -0.0550513 0.125205 +v 0.0179372 0.0550513 0.125205 +v -0.0179372 -0.0550513 0.125205 +v -0.0179372 0.0550513 0.125205 +v -0.00973596 -0.0570655 -0.125215 +v -0.00973596 0.0570655 -0.125215 +v 0.00973596 -0.0570655 -0.125215 +v 0.00973596 0.0570655 -0.125215 +v 0.00973596 -0.0570655 0.125215 +v 0.00973596 0.0570655 0.125215 +v -0.00973596 -0.0570655 0.125215 +v -0.00973596 0.0570655 0.125215 +v -0.0401585 -0.0416192 -0.125273 +v -0.0401585 0.0416192 -0.125273 +v 0.0401585 -0.0416192 -0.125273 +v 0.0401585 0.0416192 -0.125273 +v 0.0401585 -0.0416192 0.125273 +v 0.0401585 0.0416192 0.125273 +v -0.0401585 -0.0416192 0.125273 +v -0.0401585 0.0416192 0.125273 +v -0.034559 -0.0463348 -0.125306 +v -0.034559 0.0463348 -0.125306 +v 0.034559 -0.0463348 -0.125306 +v 0.034559 0.0463348 -0.125306 +v 0.034559 -0.0463348 0.125306 +v 0.034559 0.0463348 0.125306 +v -0.034559 -0.0463348 0.125306 +v -0.034559 0.0463348 0.125306 +v -0.0573233 -0.0070506 -0.125356 +v -0.0573233 0.0070506 -0.125356 +v 0.0573233 -0.0070506 -0.125356 +v 0.0573233 0.0070506 -0.125356 +v 0.0573233 -0.0070506 0.125356 +v 0.0573233 0.0070506 0.125356 +v -0.0573233 -0.0070506 0.125356 +v -0.0573233 0.0070506 0.125356 +v -0.0373598 -0.0440044 -0.125388 +v -0.0373598 0.0440044 -0.125388 +v 0.0373598 -0.0440044 -0.125388 +v 0.0373598 0.0440044 -0.125388 +v 0.0373598 -0.0440044 0.125388 +v 0.0373598 0.0440044 0.125388 +v -0.0373598 -0.0440044 0.125388 +v -0.0373598 0.0440044 0.125388 +v -0.046498 -0.0341645 -0.125414 +v -0.046498 0.0341645 -0.125414 +v 0.046498 -0.0341645 -0.125414 +v 0.046498 0.0341645 -0.125414 +v 0.046498 -0.0341645 0.125414 +v 0.046498 0.0341645 0.125414 +v -0.046498 -0.0341645 0.125414 +v -0.046498 0.0341645 0.125414 +v -0.0498956 -0.0289768 -0.125415 +v -0.0498956 0.0289768 -0.125415 +v 0.0498956 -0.0289768 -0.125415 +v 0.0498956 0.0289768 -0.125415 +v 0.0498956 -0.0289768 0.125415 +v 0.0498956 0.0289768 0.125415 +v -0.0498956 -0.0289768 0.125415 +v -0.0498956 0.0289768 0.125415 +v -0.0574665 -0.00423388 -0.125495 +v -0.0574665 0.00423388 -0.125495 +v 0.0574665 -0.00423388 -0.125495 +v 0.0574665 0.00423388 -0.125495 +v 0.0574665 -0.00423388 0.125495 +v 0.0574665 0.00423388 0.125495 +v -0.0574665 -0.00423388 0.125495 +v -0.0574665 0.00423388 0.125495 +v -0.00780304 -0.0570655 -0.125522 +v -0.00780304 0.0570655 -0.125522 +v 0.00780304 -0.0570655 -0.125522 +v 0.00780304 0.0570655 -0.125522 +v 0.00780304 -0.0570655 0.125522 +v 0.00780304 0.0570655 0.125522 +v -0.00780304 -0.0570655 0.125522 +v -0.00780304 0.0570655 0.125522 +v -0.0270847 -0.0508196 -0.125532 +v -0.0270847 0.0508196 -0.125532 +v 0.0270847 -0.0508196 -0.125532 +v 0.0270847 0.0508196 -0.125532 +v 0.0270847 -0.0508196 0.125532 +v 0.0270847 0.0508196 0.125532 +v -0.0270847 -0.0508196 0.125532 +v -0.0270847 0.0508196 0.125532 +v -0.0536365 -0.0209327 -0.125542 +v -0.0536365 0.0209327 -0.125542 +v 0.0536365 -0.0209327 -0.125542 +v 0.0536365 0.0209327 -0.125542 +v 0.0536365 -0.0209327 0.125542 +v 0.0536365 0.0209327 0.125542 +v -0.0536365 -0.0209327 0.125542 +v -0.0536365 0.0209327 0.125542 +v -0.0575382 -0.00141188 -0.125564 +v -0.0575382 0.00141188 -0.125564 +v 0.0575382 -0.00141188 -0.125564 +v 0.0575382 0.00141188 -0.125564 +v 0.0575382 -0.00141188 0.125564 +v 0.0575382 0.00141188 0.125564 +v -0.0575382 -0.00141188 0.125564 +v -0.0575382 0.00141188 0.125564 +v -0.0224587 -0.0529685 -0.125587 +v -0.0224587 0.0529685 -0.125587 +v 0.0224587 -0.0529685 -0.125587 +v 0.0224587 0.0529685 -0.125587 +v 0.0224587 -0.0529685 0.125587 +v 0.0224587 0.0529685 0.125587 +v -0.0224587 -0.0529685 0.125587 +v -0.0224587 0.0529685 0.125587 +v -0.00586061 -0.0570655 -0.12576 +v -0.00586061 0.0570655 -0.12576 +v 0.00586061 -0.0570655 -0.12576 +v 0.00586061 0.0570655 -0.12576 +v 0.00586061 -0.0570655 0.12576 +v 0.00586061 0.0570655 0.12576 +v -0.00586061 -0.0570655 0.12576 +v -0.00586061 0.0570655 0.12576 +v -0.0159997 -0.0550513 -0.125798 +v -0.0159997 0.0550513 -0.125798 +v 0.0159997 -0.0550513 -0.125798 +v 0.0159997 0.0550513 -0.125798 +v 0.0159997 -0.0550513 0.125798 +v 0.0159997 0.0550513 0.125798 +v -0.0159997 -0.0550513 0.125798 +v -0.0159997 0.0550513 0.125798 +v -0.00391105 -0.0570655 -0.125931 +v -0.00391105 0.0570655 -0.125931 +v 0.00391105 -0.0570655 -0.125931 +v 0.00391105 0.0570655 -0.125931 +v 0.00391105 -0.0570655 0.125931 +v 0.00391105 0.0570655 0.125931 +v -0.00391105 -0.0570655 0.125931 +v -0.00391105 0.0570655 0.125931 +v -0.0437657 -0.0366961 -0.126017 +v -0.0437657 0.0366961 -0.126017 +v 0.0437657 -0.0366961 -0.126017 +v 0.0437657 0.0366961 -0.126017 +v 0.0437657 -0.0366961 0.126017 +v 0.0437657 0.0366961 0.126017 +v -0.0437657 -0.0366961 0.126017 +v -0.0437657 0.0366961 0.126017 +v -0.00195672 -0.0570655 -0.126033 +v -0.00195672 0.0570655 -0.126033 +v 0.00195672 -0.0570655 -0.126033 +v 0.00195672 0.0570655 -0.126033 +v 0.00195672 -0.0570655 0.126033 +v 0.00195672 0.0570655 0.126033 +v -0.00195672 -0.0570655 0.126033 +v -0.00195672 0.0570655 0.126033 +v -0.0541163 -0.0181947 -0.126039 +v -0.0541163 0.0181947 -0.126039 +v 0.0541163 -0.0181947 -0.126039 +v 0.0541163 0.0181947 -0.126039 +v 0.0541163 -0.0181947 0.126039 +v 0.0541163 0.0181947 0.126039 +v -0.0541163 -0.0181947 0.126039 +v -0.0541163 0.0181947 0.126039 +v -1.02994e-17 -0.0570655 -0.126067 +v -1.02994e-17 0.0570655 -0.126067 +v 3.43312e-18 -0.0570655 0.126067 +v 3.43312e-18 0.0570655 0.126067 +v -0.0298301 -0.0486075 -0.126102 +v -0.0298301 0.0486075 -0.126102 +v 0.0298301 -0.0486075 -0.126102 +v 0.0298301 0.0486075 -0.126102 +v 0.0298301 -0.0486075 0.126102 +v 0.0298301 0.0486075 0.126102 +v -0.0298301 -0.0486075 0.126102 +v -0.0298301 0.0486075 0.126102 +v -0.0505487 -0.0263271 -0.12614 +v -0.0505487 0.0263271 -0.12614 +v 0.0505487 -0.0263271 -0.12614 +v 0.0505487 0.0263271 -0.12614 +v 0.0505487 -0.0263271 0.12614 +v 0.0505487 0.0263271 0.12614 +v -0.0505487 -0.0263271 0.12614 +v -0.0505487 0.0263271 0.12614 +v -0.047244 -0.0315903 -0.126303 +v -0.047244 0.0315903 -0.126303 +v 0.047244 -0.0315903 -0.126303 +v 0.047244 0.0315903 -0.126303 +v 0.047244 -0.0315903 0.126303 +v 0.047244 0.0315903 0.126303 +v -0.047244 -0.0315903 0.126303 +v -0.047244 0.0315903 0.126303 +v -0.0140426 -0.0550513 -0.126322 +v -0.0140426 0.0550513 -0.126322 +v 0.0140426 -0.0550513 -0.126322 +v 0.0140426 0.0550513 -0.126322 +v 0.0140426 -0.0550513 0.126322 +v 0.0140426 0.0550513 0.126322 +v -0.0140426 -0.0550513 0.126322 +v -0.0140426 0.0550513 0.126322 +v -0.0205051 -0.0529685 -0.126337 +v -0.0205051 0.0529685 -0.126337 +v 0.0205051 -0.0529685 -0.126337 +v 0.0205051 0.0529685 -0.126337 +v 0.0205051 -0.0529685 0.126337 +v 0.0205051 0.0529685 0.126337 +v -0.0205051 -0.0529685 0.126337 +v -0.0205051 0.0529685 0.126337 +v -0.0409968 -0.0391821 -0.126427 +v -0.0409968 0.0391821 -0.126427 +v 0.0409968 -0.0391821 -0.126427 +v 0.0409968 0.0391821 -0.126427 +v 0.0409968 -0.0391821 0.126427 +v 0.0409968 0.0391821 0.126427 +v -0.0409968 -0.0391821 0.126427 +v -0.0409968 0.0391821 0.126427 +v -0.0251301 -0.0508196 -0.126443 +v -0.0251301 0.0508196 -0.126443 +v 0.0251301 -0.0508196 -0.126443 +v 0.0251301 0.0508196 -0.126443 +v 0.0251301 -0.0508196 0.126443 +v 0.0251301 0.0508196 0.126443 +v -0.0251301 -0.0508196 0.126443 +v -0.0251301 0.0508196 0.126443 +v -0.0545286 -0.0154341 -0.126466 +v -0.0545286 0.0154341 -0.126466 +v 0.0545286 -0.0154341 -0.126466 +v 0.0545286 0.0154341 -0.126466 +v 0.0545286 -0.0154341 0.126466 +v 0.0545286 0.0154341 0.126466 +v -0.0545286 -0.0154341 0.126466 +v -0.0545286 0.0154341 0.126466 +v -0.0326078 -0.0463348 -0.126478 +v -0.0326078 0.0463348 -0.126478 +v 0.0326078 -0.0463348 -0.126478 +v 0.0326078 0.0463348 -0.126478 +v 0.0326078 -0.0463348 0.126478 +v 0.0326078 0.0463348 0.126478 +v -0.0326078 -0.0463348 0.126478 +v -0.0326078 0.0463348 0.126478 +v -0.038205 -0.0416192 -0.126641 +v -0.038205 0.0416192 -0.126641 +v 0.038205 -0.0416192 -0.126641 +v 0.038205 0.0416192 -0.126641 +v 0.038205 -0.0416192 0.126641 +v 0.038205 0.0416192 0.126641 +v -0.038205 -0.0416192 0.126641 +v -0.038205 0.0416192 0.126641 +v -0.0354041 -0.0440044 -0.126658 +v -0.0354041 0.0440044 -0.126658 +v 0.0354041 -0.0440044 -0.126658 +v 0.0354041 0.0440044 -0.126658 +v 0.0354041 -0.0440044 0.126658 +v 0.0354041 0.0440044 0.126658 +v -0.0354041 -0.0440044 0.126658 +v -0.0354041 0.0440044 0.126658 +v -0.0120685 -0.0550513 -0.126778 +v -0.0120685 0.0550513 -0.126778 +v 0.0120685 -0.0550513 -0.126778 +v 0.0120685 0.0550513 -0.126778 +v 0.0120685 -0.0550513 0.126778 +v 0.0120685 0.0550513 0.126778 +v -0.0120685 -0.0550513 0.126778 +v -0.0120685 0.0550513 0.126778 +v -0.051139 -0.0236447 -0.126796 +v -0.051139 0.0236447 -0.126796 +v 0.051139 -0.0236447 -0.126796 +v 0.051139 0.0236447 -0.126796 +v 0.051139 -0.0236447 0.126796 +v 0.051139 0.0236447 0.126796 +v -0.051139 -0.0236447 0.126796 +v -0.051139 0.0236447 0.126796 +v -0.054873 -0.0126542 -0.126823 +v -0.054873 0.0126542 -0.126823 +v 0.054873 -0.0126542 -0.126823 +v 0.054873 0.0126542 -0.126823 +v 0.054873 -0.0126542 0.126823 +v 0.054873 0.0126542 0.126823 +v -0.054873 -0.0126542 0.126823 +v -0.054873 0.0126542 0.126823 +v -0.0445357 -0.0341645 -0.127003 +v -0.0445357 0.0341645 -0.127003 +v 0.0445357 -0.0341645 -0.127003 +v 0.0445357 0.0341645 -0.127003 +v 0.0445357 -0.0341645 0.127003 +v 0.0445357 0.0341645 0.127003 +v -0.0445357 -0.0341645 0.127003 +v -0.0445357 0.0341645 0.127003 +v -0.0185264 -0.0529685 -0.127019 +v -0.0185264 0.0529685 -0.127019 +v 0.0185264 -0.0529685 -0.127019 +v 0.0185264 0.0529685 -0.127019 +v 0.0185264 -0.0529685 0.127019 +v 0.0185264 0.0529685 0.127019 +v -0.0185264 -0.0529685 0.127019 +v -0.0185264 0.0529685 0.127019 +v -0.027854 -0.0486075 -0.127109 +v -0.027854 0.0486075 -0.127109 +v 0.027854 -0.0486075 -0.127109 +v 0.027854 0.0486075 -0.127109 +v 0.027854 -0.0486075 0.127109 +v 0.027854 0.0486075 0.127109 +v -0.027854 -0.0486075 0.127109 +v -0.027854 0.0486075 0.127109 +v -0.0551491 -0.00985854 -0.127109 +v -0.0551491 0.00985854 -0.127109 +v 0.0551491 -0.00985854 -0.127109 +v 0.0551491 0.00985854 -0.127109 +v 0.0551491 -0.00985854 0.127109 +v 0.0551491 0.00985854 0.127109 +v -0.0551491 -0.00985854 0.127109 +v -0.0551491 0.00985854 0.127109 +v -0.0479312 -0.0289768 -0.127122 +v -0.0479312 0.0289768 -0.127122 +v 0.0479312 -0.0289768 -0.127122 +v 0.0479312 0.0289768 -0.127122 +v 0.0479312 -0.0289768 0.127122 +v 0.0479312 0.0289768 0.127122 +v -0.0479312 -0.0289768 0.127122 +v -0.0479312 0.0289768 0.127122 +v -0.0100796 -0.0550513 -0.127164 +v -0.0100796 0.0550513 -0.127164 +v 0.0100796 -0.0550513 -0.127164 +v 0.0100796 0.0550513 -0.127164 +v 0.0100796 -0.0550513 0.127164 +v 0.0100796 0.0550513 0.127164 +v -0.0100796 -0.0550513 0.127164 +v -0.0100796 0.0550513 0.127164 +v -0.023145 -0.0508196 -0.127286 +v -0.023145 0.0508196 -0.127286 +v 0.023145 -0.0508196 -0.127286 +v 0.023145 0.0508196 -0.127286 +v 0.023145 -0.0508196 0.127286 +v 0.023145 0.0508196 0.127286 +v -0.023145 -0.0508196 0.127286 +v -0.023145 0.0508196 0.127286 +v -0.0553564 -0.0070506 -0.127323 +v -0.0553564 0.0070506 -0.127323 +v 0.0553564 -0.0070506 -0.127323 +v 0.0553564 0.0070506 -0.127323 +v 0.0553564 -0.0070506 0.127323 +v 0.0553564 0.0070506 0.127323 +v -0.0553564 -0.0070506 0.127323 +v -0.0553564 0.0070506 0.127323 +v -0.0516655 -0.0209327 -0.12738 +v -0.0516655 0.0209327 -0.12738 +v 0.0516655 -0.0209327 -0.12738 +v 0.0516655 0.0209327 -0.12738 +v 0.0516655 -0.0209327 0.12738 +v 0.0516655 0.0209327 0.12738 +v -0.0516655 -0.0209327 0.12738 +v -0.0516655 0.0209327 0.12738 +v -0.0554948 -0.00423388 -0.127467 +v -0.0554948 0.00423388 -0.127467 +v 0.0554948 -0.00423388 -0.127467 +v 0.0554948 0.00423388 -0.127467 +v 0.0554948 -0.00423388 0.127467 +v 0.0554948 0.00423388 0.127467 +v -0.0554948 -0.00423388 0.127467 +v -0.0554948 0.00423388 0.127467 +v -0.00807846 -0.0550513 -0.127481 +v -0.00807846 0.0550513 -0.127481 +v 0.00807846 -0.0550513 -0.127481 +v 0.00807846 0.0550513 -0.127481 +v 0.00807846 -0.0550513 0.127481 +v 0.00807846 0.0550513 0.127481 +v -0.00807846 -0.0550513 0.127481 +v -0.00807846 0.0550513 0.127481 +v -0.041784 -0.0366961 -0.127511 +v -0.041784 0.0366961 -0.127511 +v 0.041784 -0.0366961 -0.127511 +v 0.041784 0.0366961 -0.127511 +v 0.041784 -0.0366961 0.127511 +v 0.041784 0.0366961 0.127511 +v -0.041784 -0.0366961 0.127511 +v -0.041784 0.0366961 0.127511 +v -0.055564 -0.00141188 -0.127538 +v -0.055564 0.00141188 -0.127538 +v 0.055564 -0.00141188 -0.127538 +v 0.055564 0.00141188 -0.127538 +v 0.055564 -0.00141188 0.127538 +v 0.055564 0.00141188 0.127538 +v -0.055564 -0.00141188 0.127538 +v -0.055564 0.00141188 0.127538 +v -0.0306169 -0.0463348 -0.127582 +v -0.0306169 0.0463348 -0.127582 +v 0.0306169 -0.0463348 -0.127582 +v 0.0306169 0.0463348 -0.127582 +v 0.0306169 -0.0463348 0.127582 +v 0.0306169 0.0463348 0.127582 +v -0.0306169 -0.0463348 0.127582 +v -0.0306169 0.0463348 0.127582 +v -0.0165252 -0.0529685 -0.12763 +v -0.0165252 0.0529685 -0.12763 +v 0.0165252 -0.0529685 -0.12763 +v 0.0165252 0.0529685 -0.12763 +v 0.0165252 -0.0529685 0.12763 +v 0.0165252 0.0529685 0.12763 +v -0.0165252 -0.0529685 0.12763 +v -0.0165252 0.0529685 0.12763 +v -0.00606747 -0.0550513 -0.127728 +v -0.00606747 0.0550513 -0.127728 +v 0.00606747 -0.0550513 -0.127728 +v 0.00606747 0.0550513 -0.127728 +v 0.00606747 -0.0550513 0.127728 +v 0.00606747 0.0550513 0.127728 +v -0.00606747 -0.0550513 0.127728 +v -0.00606747 0.0550513 0.127728 +v -0.0390025 -0.0391821 -0.127824 +v -0.0390025 0.0391821 -0.127824 +v 0.0390025 -0.0391821 -0.127824 +v 0.0390025 0.0391821 -0.127824 +v 0.0390025 -0.0391821 0.127824 +v 0.0390025 0.0391821 0.127824 +v -0.0390025 -0.0391821 0.127824 +v -0.0390025 0.0391821 0.127824 +v -0.0334051 -0.0440044 -0.127859 +v -0.0334051 0.0440044 -0.127859 +v 0.0334051 -0.0440044 -0.127859 +v 0.0334051 0.0440044 -0.127859 +v 0.0334051 -0.0440044 0.127859 +v 0.0334051 0.0440044 0.127859 +v -0.0334051 -0.0440044 0.127859 +v -0.0334051 0.0440044 0.127859 +v -0.0485587 -0.0263271 -0.12787 +v -0.0485587 0.0263271 -0.12787 +v 0.0485587 -0.0263271 -0.12787 +v 0.0485587 0.0263271 -0.12787 +v 0.0485587 -0.0263271 0.12787 +v 0.0485587 0.0263271 0.12787 +v -0.0485587 -0.0263271 0.12787 +v -0.0485587 0.0263271 0.12787 +v -0.0521276 -0.0181947 -0.127894 +v -0.0521276 0.0181947 -0.127894 +v 0.0521276 -0.0181947 -0.127894 +v 0.0521276 0.0181947 -0.127894 +v 0.0521276 -0.0181947 0.127894 +v 0.0521276 0.0181947 0.127894 +v -0.0521276 -0.0181947 0.127894 +v -0.0521276 0.0181947 0.127894 +v -0.00404909 -0.0550513 -0.127905 +v -0.00404909 0.0550513 -0.127905 +v 0.00404909 -0.0550513 -0.127905 +v 0.00404909 0.0550513 -0.127905 +v 0.00404909 -0.0550513 0.127905 +v 0.00404909 0.0550513 0.127905 +v -0.00404909 -0.0550513 0.127905 +v -0.00404909 0.0550513 0.127905 +v -0.0452503 -0.0315903 -0.127918 +v -0.0452503 0.0315903 -0.127918 +v 0.0452503 -0.0315903 -0.127918 +v 0.0452503 0.0315903 -0.127918 +v 0.0452503 -0.0315903 0.127918 +v 0.0452503 0.0315903 0.127918 +v -0.0452503 -0.0315903 0.127918 +v -0.0452503 0.0315903 0.127918 +v -0.0362049 -0.0416192 -0.12794 +v -0.0362049 0.0416192 -0.12794 +v 0.0362049 -0.0416192 -0.12794 +v 0.0362049 0.0416192 -0.12794 +v 0.0362049 -0.0416192 0.12794 +v 0.0362049 0.0416192 0.12794 +v -0.0362049 -0.0416192 0.12794 +v -0.0362049 0.0416192 0.12794 +v -0.00202578 -0.0550513 -0.128011 +v -0.00202578 0.0550513 -0.128011 +v 0.00202578 -0.0550513 -0.128011 +v 0.00202578 0.0550513 -0.128011 +v 0.00202578 -0.0550513 0.128011 +v 0.00202578 0.0550513 0.128011 +v -0.00202578 -0.0550513 0.128011 +v -0.00202578 0.0550513 0.128011 +v -1.06629e-17 -0.0550513 -0.128046 +v -1.06629e-17 0.0550513 -0.128046 +v 3.5543e-18 -0.0550513 0.128046 +v 3.5543e-18 0.0550513 0.128046 +v -0.025844 -0.0486075 -0.128047 +v -0.025844 0.0486075 -0.128047 +v 0.025844 -0.0486075 -0.128047 +v 0.025844 0.0486075 -0.128047 +v 0.025844 -0.0486075 0.128047 +v 0.025844 0.0486075 0.128047 +v -0.025844 -0.0486075 0.128047 +v -0.025844 0.0486075 0.128047 +v -0.0211317 -0.0508196 -0.128059 +v -0.0211317 0.0508196 -0.128059 +v 0.0211317 -0.0508196 -0.128059 +v 0.0211317 0.0508196 -0.128059 +v 0.0211317 -0.0508196 0.128059 +v 0.0211317 0.0508196 0.128059 +v -0.0211317 -0.0508196 0.128059 +v -0.0211317 0.0508196 0.128059 +v -0.0145039 -0.0529685 -0.128172 +v -0.0145039 0.0529685 -0.128172 +v 0.0145039 -0.0529685 -0.128172 +v 0.0145039 0.0529685 -0.128172 +v 0.0145039 -0.0529685 0.128172 +v 0.0145039 0.0529685 0.128172 +v -0.0145039 -0.0529685 0.128172 +v -0.0145039 0.0529685 0.128172 +v -0.0525248 -0.0154341 -0.128335 +v -0.0525248 0.0154341 -0.128335 +v 0.0525248 -0.0154341 -0.128335 +v 0.0525248 0.0154341 -0.128335 +v 0.0525248 -0.0154341 0.128335 +v 0.0525248 0.0154341 0.128335 +v -0.0525248 -0.0154341 0.128335 +v -0.0525248 0.0154341 0.128335 +v -0.0425192 -0.0341645 -0.128523 +v -0.0425192 0.0341645 -0.128523 +v 0.0425192 -0.0341645 -0.128523 +v 0.0425192 0.0341645 -0.128523 +v 0.0425192 -0.0341645 0.128523 +v 0.0425192 0.0341645 0.128523 +v -0.0425192 -0.0341645 0.128523 +v -0.0425192 0.0341645 0.128523 +v -0.0491257 -0.0236447 -0.128546 +v -0.0491257 0.0236447 -0.128546 +v 0.0491257 -0.0236447 -0.128546 +v 0.0491257 0.0236447 -0.128546 +v 0.0491257 -0.0236447 0.128546 +v 0.0491257 0.0236447 0.128546 +v -0.0491257 -0.0236447 0.128546 +v -0.0491257 0.0236447 0.128546 +v -0.0285887 -0.0463348 -0.128615 +v -0.0285887 0.0463348 -0.128615 +v 0.0285887 -0.0463348 -0.128615 +v 0.0285887 0.0463348 -0.128615 +v 0.0285887 -0.0463348 0.128615 +v 0.0285887 0.0463348 0.128615 +v -0.0285887 -0.0463348 0.128615 +v -0.0285887 0.0463348 0.128615 +v -0.0124649 -0.0529685 -0.128643 +v -0.0124649 0.0529685 -0.128643 +v 0.0124649 -0.0529685 -0.128643 +v 0.0124649 0.0529685 -0.128643 +v 0.0124649 -0.0529685 0.128643 +v 0.0124649 0.0529685 0.128643 +v -0.0124649 -0.0529685 0.128643 +v -0.0124649 0.0529685 0.128643 +v -0.0528565 -0.0126542 -0.128703 +v -0.0528565 0.0126542 -0.128703 +v 0.0528565 -0.0126542 -0.128703 +v 0.0528565 0.0126542 -0.128703 +v 0.0528565 -0.0126542 0.128703 +v 0.0528565 0.0126542 0.128703 +v -0.0528565 -0.0126542 0.128703 +v -0.0528565 0.0126542 0.128703 +v -0.0459085 -0.0289768 -0.12876 +v -0.0459085 0.0289768 -0.12876 +v 0.0459085 -0.0289768 -0.12876 +v 0.0459085 0.0289768 -0.12876 +v 0.0459085 -0.0289768 0.12876 +v 0.0459085 0.0289768 0.12876 +v -0.0459085 -0.0289768 0.12876 +v -0.0459085 0.0289768 0.12876 +v -0.0190926 -0.0508196 -0.128761 +v -0.0190926 0.0508196 -0.128761 +v 0.0190926 -0.0508196 -0.128761 +v 0.0190926 0.0508196 -0.128761 +v 0.0190926 -0.0508196 0.128761 +v 0.0190926 0.0508196 0.128761 +v -0.0190926 -0.0508196 0.128761 +v -0.0190926 0.0508196 0.128761 +v -0.0238024 -0.0486075 -0.128913 +v -0.0238024 0.0486075 -0.128913 +v 0.0238024 -0.0486075 -0.128913 +v 0.0238024 0.0486075 -0.128913 +v 0.0238024 -0.0486075 0.128913 +v 0.0238024 0.0486075 0.128913 +v -0.0238024 -0.0486075 0.128913 +v -0.0238024 0.0486075 0.128913 +v -0.0397515 -0.0366961 -0.128934 +v -0.0397515 0.0366961 -0.128934 +v 0.0397515 -0.0366961 -0.128934 +v 0.0397515 0.0366961 -0.128934 +v 0.0397515 -0.0366961 0.128934 +v 0.0397515 0.0366961 0.128934 +v -0.0397515 -0.0366961 0.128934 +v -0.0397515 0.0366961 0.128934 +v -0.0313655 -0.0440044 -0.12899 +v -0.0313655 0.0440044 -0.12899 +v 0.0313655 -0.0440044 -0.12899 +v 0.0313655 0.0440044 -0.12899 +v 0.0313655 -0.0440044 0.12899 +v 0.0313655 0.0440044 0.12899 +v -0.0313655 -0.0440044 0.12899 +v -0.0313655 0.0440044 0.12899 +v -0.0531224 -0.00985854 -0.128998 +v -0.0531224 0.00985854 -0.128998 +v 0.0531224 -0.00985854 -0.128998 +v 0.0531224 0.00985854 -0.128998 +v 0.0531224 -0.00985854 0.128998 +v 0.0531224 0.00985854 0.128998 +v -0.0531224 -0.00985854 0.128998 +v -0.0531224 0.00985854 0.128998 +v -0.0104107 -0.0529685 -0.129042 +v -0.0104107 0.0529685 -0.129042 +v 0.0104107 -0.0529685 -0.129042 +v 0.0104107 0.0529685 -0.129042 +v 0.0104107 -0.0529685 0.129042 +v 0.0104107 0.0529685 0.129042 +v -0.0104107 -0.0529685 0.129042 +v -0.0104107 0.0529685 0.129042 +v -0.0496314 -0.0209327 -0.129148 +v -0.0496314 0.0209327 -0.129148 +v 0.0496314 -0.0209327 -0.129148 +v 0.0496314 0.0209327 -0.129148 +v 0.0496314 -0.0209327 0.129148 +v 0.0496314 0.0209327 0.129148 +v -0.0496314 -0.0209327 0.129148 +v -0.0496314 0.0209327 0.129148 +v -0.0369607 -0.0391821 -0.12915 +v -0.0369607 0.0391821 -0.12915 +v 0.0369607 -0.0391821 -0.12915 +v 0.0369607 0.0391821 -0.12915 +v 0.0369607 -0.0391821 0.12915 +v 0.0369607 0.0391821 0.12915 +v -0.0369607 -0.0391821 0.12915 +v -0.0369607 0.0391821 0.12915 +v -0.0341608 -0.0416192 -0.129168 +v -0.0341608 0.0416192 -0.129168 +v 0.0341608 -0.0416192 -0.129168 +v 0.0341608 0.0416192 -0.129168 +v 0.0341608 -0.0416192 0.129168 +v 0.0341608 0.0416192 0.129168 +v -0.0341608 -0.0416192 0.129168 +v -0.0341608 0.0416192 0.129168 +v -0.0533221 -0.0070506 -0.12922 +v -0.0533221 0.0070506 -0.12922 +v 0.0533221 -0.0070506 -0.12922 +v 0.0533221 0.0070506 -0.12922 +v 0.0533221 -0.0070506 0.12922 +v 0.0533221 0.0070506 0.12922 +v -0.0533221 -0.0070506 0.12922 +v -0.0533221 0.0070506 0.12922 +v -0.0534554 -0.00423388 -0.129368 +v -0.0534554 0.00423388 -0.129368 +v 0.0534554 -0.00423388 -0.129368 +v 0.0534554 0.00423388 -0.129368 +v 0.0534554 -0.00423388 0.129368 +v 0.0534554 0.00423388 0.129368 +v -0.0534554 -0.00423388 0.129368 +v -0.0534554 0.00423388 0.129368 +v -0.00834382 -0.0529685 -0.129369 +v -0.00834382 0.0529685 -0.129369 +v 0.00834382 -0.0529685 -0.129369 +v 0.00834382 0.0529685 -0.129369 +v 0.00834382 -0.0529685 0.129369 +v 0.00834382 0.0529685 0.129369 +v -0.00834382 -0.0529685 0.129369 +v -0.00834382 0.0529685 0.129369 +v -0.0170302 -0.0508196 -0.129391 +v -0.0170302 0.0508196 -0.129391 +v 0.0170302 -0.0508196 -0.129391 +v 0.0170302 0.0508196 -0.129391 +v 0.0170302 -0.0508196 0.129391 +v 0.0170302 0.0508196 0.129391 +v -0.0170302 -0.0508196 0.129391 +v -0.0170302 0.0508196 0.129391 +v -0.0535221 -0.00141188 -0.129442 +v -0.0535221 0.00141188 -0.129442 +v 0.0535221 -0.00141188 -0.129442 +v 0.0535221 0.00141188 -0.129442 +v 0.0535221 -0.00141188 0.129442 +v 0.0535221 0.00141188 0.129442 +v -0.0535221 -0.00141188 0.129442 +v -0.0535221 0.00141188 0.129442 +v -0.0432014 -0.0315903 -0.129462 +v -0.0432014 0.0315903 -0.129462 +v 0.0432014 -0.0315903 -0.129462 +v 0.0432014 0.0315903 -0.129462 +v 0.0432014 -0.0315903 0.129462 +v 0.0432014 0.0315903 0.129462 +v -0.0432014 -0.0315903 0.129462 +v -0.0432014 0.0315903 0.129462 +v -0.0465095 -0.0263271 -0.129529 +v -0.0465095 0.0263271 -0.129529 +v 0.0465095 -0.0263271 -0.129529 +v 0.0465095 0.0263271 -0.129529 +v 0.0465095 -0.0263271 0.129529 +v 0.0465095 0.0263271 0.129529 +v -0.0465095 -0.0263271 0.129529 +v -0.0465095 0.0263271 0.129529 +v -0.0265256 -0.0463348 -0.129577 +v -0.0265256 0.0463348 -0.129577 +v 0.0265256 -0.0463348 -0.129577 +v 0.0265256 0.0463348 -0.129577 +v 0.0265256 -0.0463348 0.129577 +v 0.0265256 0.0463348 0.129577 +v -0.0265256 -0.0463348 0.129577 +v -0.0265256 0.0463348 0.129577 +v -0.00626678 -0.0529685 -0.129624 +v -0.00626678 0.0529685 -0.129624 +v 0.00626678 -0.0529685 -0.129624 +v 0.00626678 0.0529685 -0.129624 +v 0.00626678 -0.0529685 0.129624 +v 0.00626678 0.0529685 0.129624 +v -0.00626678 -0.0529685 0.129624 +v -0.00626678 0.0529685 0.129624 +v -0.0500754 -0.0181947 -0.129678 +v -0.0500754 0.0181947 -0.129678 +v 0.0500754 -0.0181947 -0.129678 +v 0.0500754 0.0181947 -0.129678 +v 0.0500754 -0.0181947 0.129678 +v 0.0500754 0.0181947 0.129678 +v -0.0500754 -0.0181947 0.129678 +v -0.0500754 0.0181947 0.129678 +v -0.0217319 -0.0486075 -0.129708 +v -0.0217319 0.0486075 -0.129708 +v 0.0217319 -0.0486075 -0.129708 +v 0.0217319 0.0486075 -0.129708 +v 0.0217319 -0.0486075 0.129708 +v 0.0217319 0.0486075 0.129708 +v -0.0217319 -0.0486075 0.129708 +v -0.0217319 0.0486075 0.129708 +v -0.0041821 -0.0529685 -0.129807 +v -0.0041821 0.0529685 -0.129807 +v 0.0041821 -0.0529685 -0.129807 +v 0.0041821 0.0529685 -0.129807 +v 0.0041821 -0.0529685 0.129807 +v 0.0041821 0.0529685 0.129807 +v -0.0041821 -0.0529685 0.129807 +v -0.0041821 0.0529685 0.129807 +v -0.00209232 -0.0529685 -0.129916 +v -0.00209232 0.0529685 -0.129916 +v 0.00209232 -0.0529685 -0.129916 +v 0.00209232 0.0529685 -0.129916 +v 0.00209232 -0.0529685 0.129916 +v 0.00209232 0.0529685 0.129916 +v -0.00209232 -0.0529685 0.129916 +v -0.00209232 0.0529685 0.129916 +v -0.0149471 -0.0508196 -0.12995 +v -0.0149471 0.0508196 -0.12995 +v 0.0149471 -0.0508196 -0.12995 +v 0.0149471 0.0508196 -0.12995 +v 0.0149471 -0.0508196 0.12995 +v 0.0149471 0.0508196 0.12995 +v -0.0149471 -0.0508196 0.12995 +v -0.0149471 0.0508196 0.12995 +v -1.10132e-17 -0.0529685 -0.129953 +v -1.10132e-17 0.0529685 -0.129953 +v 3.67105e-18 -0.0529685 0.129953 +v 3.67105e-18 0.0529685 0.129953 +v -0.0404509 -0.0341645 -0.129971 +v -0.0404509 0.0341645 -0.129971 +v 0.0404509 -0.0341645 -0.129971 +v 0.0404509 0.0341645 -0.129971 +v 0.0404509 -0.0341645 0.129971 +v 0.0404509 0.0341645 0.129971 +v -0.0404509 -0.0341645 0.129971 +v -0.0404509 0.0341645 0.129971 +v -0.0292877 -0.0440044 -0.130049 +v -0.0292877 0.0440044 -0.130049 +v 0.0292877 -0.0440044 -0.130049 +v 0.0292877 0.0440044 -0.130049 +v 0.0292877 -0.0440044 0.130049 +v 0.0292877 0.0440044 0.130049 +v -0.0292877 -0.0440044 0.130049 +v -0.0292877 0.0440044 0.130049 +v -0.0504569 -0.0154341 -0.130132 +v -0.0504569 0.0154341 -0.130132 +v 0.0504569 -0.0154341 -0.130132 +v 0.0504569 0.0154341 -0.130132 +v 0.0504569 -0.0154341 0.130132 +v 0.0504569 0.0154341 0.130132 +v -0.0504569 -0.0154341 0.130132 +v -0.0504569 0.0154341 0.130132 +v -0.0470525 -0.0236447 -0.130224 +v -0.0470525 0.0236447 -0.130224 +v 0.0470525 -0.0236447 -0.130224 +v 0.0470525 0.0236447 -0.130224 +v 0.0470525 -0.0236447 0.130224 +v 0.0470525 0.0236447 0.130224 +v -0.0470525 -0.0236447 0.130224 +v -0.0470525 0.0236447 0.130224 +v -0.0376705 -0.0366961 -0.130285 +v -0.0376705 0.0366961 -0.130285 +v 0.0376705 -0.0366961 -0.130285 +v 0.0376705 0.0366961 -0.130285 +v 0.0376705 -0.0366961 0.130285 +v 0.0376705 0.0366961 0.130285 +v -0.0376705 -0.0366961 0.130285 +v -0.0376705 0.0366961 0.130285 +v -0.0320751 -0.0416192 -0.130324 +v -0.0320751 0.0416192 -0.130324 +v 0.0320751 -0.0416192 -0.130324 +v 0.0320751 0.0416192 -0.130324 +v 0.0320751 -0.0416192 0.130324 +v 0.0320751 0.0416192 0.130324 +v -0.0320751 -0.0416192 0.130324 +v -0.0320751 0.0416192 0.130324 +v -0.0438298 -0.0289768 -0.130327 +v -0.0438298 0.0289768 -0.130327 +v 0.0438298 -0.0289768 -0.130327 +v 0.0438298 0.0289768 -0.130327 +v 0.0438298 -0.0289768 0.130327 +v 0.0438298 0.0289768 0.130327 +v -0.0438298 -0.0289768 0.130327 +v -0.0438298 0.0289768 0.130327 +v -0.0348739 -0.0391821 -0.130403 +v -0.0348739 0.0391821 -0.130403 +v 0.0348739 -0.0391821 -0.130403 +v 0.0348739 0.0391821 -0.130403 +v 0.0348739 -0.0391821 0.130403 +v 0.0348739 0.0391821 0.130403 +v -0.0348739 -0.0391821 0.130403 +v -0.0348739 0.0391821 0.130403 +v -0.0196349 -0.0486075 -0.13043 +v -0.0196349 0.0486075 -0.13043 +v 0.0196349 -0.0486075 -0.13043 +v 0.0196349 0.0486075 -0.13043 +v 0.0196349 -0.0486075 0.13043 +v 0.0196349 0.0486075 0.13043 +v -0.0196349 -0.0486075 0.13043 +v -0.0196349 0.0486075 0.13043 +v -0.0128458 -0.0508196 -0.130435 +v -0.0128458 0.0508196 -0.130435 +v 0.0128458 -0.0508196 -0.130435 +v 0.0128458 0.0508196 -0.130435 +v 0.0128458 -0.0508196 0.130435 +v 0.0128458 0.0508196 0.130435 +v -0.0128458 -0.0508196 0.130435 +v -0.0128458 0.0508196 0.130435 +v -0.0244302 -0.0463348 -0.130467 +v -0.0244302 0.0463348 -0.130467 +v 0.0244302 -0.0463348 -0.130467 +v 0.0244302 0.0463348 -0.130467 +v 0.0244302 -0.0463348 0.130467 +v 0.0244302 0.0463348 0.130467 +v -0.0244302 -0.0463348 0.130467 +v -0.0244302 0.0463348 0.130467 +v -0.0507756 -0.0126542 -0.130512 +v -0.0507756 0.0126542 -0.130512 +v 0.0507756 -0.0126542 -0.130512 +v 0.0507756 0.0126542 -0.130512 +v 0.0507756 -0.0126542 0.130512 +v 0.0507756 0.0126542 0.130512 +v -0.0507756 -0.0126542 0.130512 +v -0.0507756 0.0126542 0.130512 +v -0.0510311 -0.00985854 -0.130816 +v -0.0510311 0.00985854 -0.130816 +v 0.0510311 -0.00985854 -0.130816 +v 0.0510311 0.00985854 -0.130816 +v 0.0510311 -0.00985854 0.130816 +v 0.0510311 0.00985854 0.130816 +v -0.0510311 -0.00985854 0.130816 +v -0.0510311 0.00985854 0.130816 +v -0.047537 -0.0209327 -0.130845 +v -0.047537 0.0209327 -0.130845 +v 0.047537 -0.0209327 -0.130845 +v 0.047537 0.0209327 -0.130845 +v 0.047537 -0.0209327 0.130845 +v 0.047537 0.0209327 0.130845 +v -0.047537 -0.0209327 0.130845 +v -0.047537 0.0209327 0.130845 +v -0.0107288 -0.0508196 -0.130846 +v -0.0107288 0.0508196 -0.130846 +v 0.0107288 -0.0508196 -0.130846 +v 0.0107288 0.0508196 -0.130846 +v 0.0107288 -0.0508196 0.130846 +v 0.0107288 0.0508196 0.130846 +v -0.0107288 -0.0508196 0.130846 +v -0.0107288 0.0508196 0.130846 +v -0.0410999 -0.0315903 -0.130933 +v -0.0410999 0.0315903 -0.130933 +v 0.0410999 -0.0315903 -0.130933 +v 0.0410999 0.0315903 -0.130933 +v 0.0410999 -0.0315903 0.130933 +v 0.0410999 0.0315903 0.130933 +v -0.0410999 -0.0315903 0.130933 +v -0.0410999 0.0315903 0.130933 +v -0.0271742 -0.0440044 -0.131034 +v -0.0271742 0.0440044 -0.131034 +v 0.0271742 -0.0440044 -0.131034 +v 0.0271742 0.0440044 -0.131034 +v 0.0271742 -0.0440044 0.131034 +v 0.0271742 0.0440044 0.131034 +v -0.0271742 -0.0440044 0.131034 +v -0.0271742 0.0440044 0.131034 +v -0.0512229 -0.0070506 -0.131045 +v -0.0512229 0.0070506 -0.131045 +v 0.0512229 -0.0070506 -0.131045 +v 0.0512229 0.0070506 -0.131045 +v 0.0512229 -0.0070506 0.131045 +v 0.0512229 0.0070506 0.131045 +v -0.0512229 -0.0070506 0.131045 +v -0.0512229 0.0070506 0.131045 +v -0.0175139 -0.0486075 -0.131078 +v -0.0175139 0.0486075 -0.131078 +v 0.0175139 -0.0486075 -0.131078 +v 0.0175139 0.0486075 -0.131078 +v 0.0175139 -0.0486075 0.131078 +v 0.0175139 0.0486075 0.131078 +v -0.0175139 -0.0486075 0.131078 +v -0.0175139 0.0486075 0.131078 +v -0.0444036 -0.0263271 -0.131116 +v -0.0444036 0.0263271 -0.131116 +v 0.0444036 -0.0263271 -0.131116 +v 0.0444036 0.0263271 -0.131116 +v 0.0444036 -0.0263271 0.131116 +v 0.0444036 0.0263271 0.131116 +v -0.0444036 -0.0263271 0.131116 +v -0.0444036 0.0263271 0.131116 +v -0.00859878 -0.0508196 -0.131184 +v -0.00859878 0.0508196 -0.131184 +v 0.00859878 -0.0508196 -0.131184 +v 0.00859878 0.0508196 -0.131184 +v 0.00859878 -0.0508196 0.131184 +v 0.00859878 0.0508196 0.131184 +v -0.00859878 -0.0508196 0.131184 +v -0.00859878 0.0508196 0.131184 +v -0.0513509 -0.00423388 -0.131198 +v -0.0513509 0.00423388 -0.131198 +v 0.0513509 -0.00423388 -0.131198 +v 0.0513509 0.00423388 -0.131198 +v 0.0513509 -0.00423388 0.131198 +v 0.0513509 0.00423388 0.131198 +v -0.0513509 -0.00423388 0.131198 +v -0.0513509 0.00423388 0.131198 +v -0.051415 -0.00141188 -0.131274 +v -0.051415 0.00141188 -0.131274 +v 0.051415 -0.00141188 -0.131274 +v 0.051415 0.00141188 -0.131274 +v 0.051415 -0.00141188 0.131274 +v 0.051415 0.00141188 0.131274 +v -0.051415 -0.00141188 0.131274 +v -0.051415 0.00141188 0.131274 +v -0.0223051 -0.0463348 -0.131283 +v -0.0223051 0.0463348 -0.131283 +v 0.0223051 -0.0463348 -0.131283 +v 0.0223051 0.0463348 -0.131283 +v 0.0223051 -0.0463348 0.131283 +v 0.0223051 0.0463348 0.131283 +v -0.0223051 -0.0463348 0.131283 +v -0.0223051 0.0463348 0.131283 +v -0.0383333 -0.0341645 -0.131346 +v -0.0383333 0.0341645 -0.131346 +v 0.0383333 -0.0341645 -0.131346 +v 0.0383333 0.0341645 -0.131346 +v 0.0383333 -0.0341645 0.131346 +v 0.0383333 0.0341645 0.131346 +v -0.0383333 -0.0341645 0.131346 +v -0.0383333 0.0341645 0.131346 +v -0.0479622 -0.0181947 -0.131389 +v -0.0479622 0.0181947 -0.131389 +v 0.0479622 -0.0181947 -0.131389 +v 0.0479622 0.0181947 -0.131389 +v 0.0479622 -0.0181947 0.131389 +v 0.0479622 0.0181947 0.131389 +v -0.0479622 -0.0181947 0.131389 +v -0.0479622 0.0181947 0.131389 +v -0.0299502 -0.0416192 -0.131407 +v -0.0299502 0.0416192 -0.131407 +v 0.0299502 -0.0416192 -0.131407 +v 0.0299502 0.0416192 -0.131407 +v 0.0299502 -0.0416192 0.131407 +v 0.0299502 0.0416192 0.131407 +v -0.0299502 -0.0416192 0.131407 +v -0.0299502 0.0416192 0.131407 +v -0.00645827 -0.0508196 -0.131446 +v -0.00645827 0.0508196 -0.131446 +v 0.00645827 -0.0508196 -0.131446 +v 0.00645827 0.0508196 -0.131446 +v 0.00645827 -0.0508196 0.131446 +v 0.00645827 0.0508196 0.131446 +v -0.00645827 -0.0508196 0.131446 +v -0.00645827 0.0508196 0.131446 +v -0.0355436 -0.0366961 -0.131563 +v -0.0355436 0.0366961 -0.131563 +v 0.0355436 -0.0366961 -0.131563 +v 0.0355436 0.0366961 -0.131563 +v 0.0355436 -0.0366961 0.131563 +v 0.0355436 0.0366961 0.131563 +v -0.0355436 -0.0366961 0.131563 +v -0.0355436 0.0366961 0.131563 +v -0.0327446 -0.0391821 -0.131584 +v -0.0327446 0.0391821 -0.131584 +v 0.0327446 -0.0391821 -0.131584 +v 0.0327446 0.0391821 -0.131584 +v 0.0327446 -0.0391821 0.131584 +v 0.0327446 0.0391821 0.131584 +v -0.0327446 -0.0391821 0.131584 +v -0.0327446 0.0391821 0.131584 +v -0.00430989 -0.0508196 -0.131634 +v -0.00430989 0.0508196 -0.131634 +v 0.00430989 -0.0508196 -0.131634 +v 0.00430989 0.0508196 -0.131634 +v 0.00430989 -0.0508196 0.131634 +v 0.00430989 0.0508196 0.131634 +v -0.00430989 -0.0508196 0.131634 +v -0.00430989 0.0508196 0.131634 +v -0.0153717 -0.0486075 -0.131652 +v -0.0153717 0.0486075 -0.131652 +v 0.0153717 -0.0486075 -0.131652 +v 0.0153717 0.0486075 -0.131652 +v 0.0153717 -0.0486075 0.131652 +v 0.0153717 0.0486075 0.131652 +v -0.0153717 -0.0486075 0.131652 +v -0.0153717 0.0486075 0.131652 +v -0.00215626 -0.0508196 -0.131747 +v -0.00215626 0.0508196 -0.131747 +v 0.00215626 -0.0508196 -0.131747 +v 0.00215626 0.0508196 -0.131747 +v 0.00215626 -0.0508196 0.131747 +v 0.00215626 0.0508196 0.131747 +v -0.00215626 -0.0508196 0.131747 +v -0.00215626 0.0508196 0.131747 +v -1.13497e-17 -0.0508196 -0.131785 +v -1.13497e-17 0.0508196 -0.131785 +v 3.78323e-18 -0.0508196 0.131785 +v 3.78323e-18 0.0508196 0.131785 +v -0.0416977 -0.0289768 -0.131819 +v -0.0416977 0.0289768 -0.131819 +v 0.0416977 -0.0289768 -0.131819 +v 0.0416977 0.0289768 -0.131819 +v 0.0416977 -0.0289768 0.131819 +v 0.0416977 0.0289768 0.131819 +v -0.0416977 -0.0289768 0.131819 +v -0.0416977 0.0289768 0.131819 +v -0.0449221 -0.0236447 -0.13183 +v -0.0449221 0.0236447 -0.13183 +v 0.0449221 -0.0236447 -0.13183 +v 0.0449221 0.0236447 -0.13183 +v 0.0449221 -0.0236447 0.13183 +v 0.0449221 0.0236447 0.13183 +v -0.0449221 -0.0236447 0.13183 +v -0.0449221 0.0236447 0.13183 +v -0.0483276 -0.0154341 -0.131857 +v -0.0483276 0.0154341 -0.131857 +v 0.0483276 -0.0154341 -0.131857 +v 0.0483276 0.0154341 -0.131857 +v 0.0483276 -0.0154341 0.131857 +v 0.0483276 0.0154341 0.131857 +v -0.0483276 -0.0154341 0.131857 +v -0.0483276 0.0154341 0.131857 +v -0.0250276 -0.0440044 -0.131945 +v -0.0250276 0.0440044 -0.131945 +v 0.0250276 -0.0440044 -0.131945 +v 0.0250276 0.0440044 -0.131945 +v 0.0250276 -0.0440044 0.131945 +v 0.0250276 0.0440044 0.131945 +v -0.0250276 -0.0440044 0.131945 +v -0.0250276 0.0440044 0.131945 +v -0.0201528 -0.0463348 -0.132024 +v -0.0201528 0.0463348 -0.132024 +v 0.0201528 -0.0463348 -0.132024 +v 0.0201528 0.0463348 -0.132024 +v 0.0201528 -0.0463348 0.132024 +v 0.0201528 0.0463348 0.132024 +v -0.0201528 -0.0463348 0.132024 +v -0.0201528 0.0463348 0.132024 +v -0.0132107 -0.0486075 -0.132151 +v -0.0132107 0.0486075 -0.132151 +v 0.0132107 -0.0486075 -0.132151 +v 0.0132107 0.0486075 -0.132151 +v 0.0132107 -0.0486075 0.132151 +v 0.0132107 0.0486075 0.132151 +v -0.0132107 -0.0486075 0.132151 +v -0.0132107 0.0486075 0.132151 +v -0.0486329 -0.0126542 -0.132247 +v -0.0486329 0.0126542 -0.132247 +v 0.0486329 -0.0126542 -0.132247 +v 0.0486329 0.0126542 -0.132247 +v 0.0486329 -0.0126542 0.132247 +v 0.0486329 0.0126542 0.132247 +v -0.0486329 -0.0126542 0.132247 +v -0.0486329 0.0126542 0.132247 +v -0.0389483 -0.0315903 -0.13233 +v -0.0389483 0.0315903 -0.13233 +v 0.0389483 -0.0315903 -0.13233 +v 0.0389483 0.0315903 -0.13233 +v 0.0389483 -0.0315903 0.13233 +v 0.0389483 0.0315903 0.13233 +v -0.0389483 -0.0315903 0.13233 +v -0.0389483 0.0315903 0.13233 +v -0.0277889 -0.0416192 -0.132415 +v -0.0277889 0.0416192 -0.132415 +v 0.0277889 -0.0416192 -0.132415 +v 0.0277889 0.0416192 -0.132415 +v 0.0277889 -0.0416192 0.132415 +v 0.0277889 0.0416192 0.132415 +v -0.0277889 -0.0416192 0.132415 +v -0.0277889 0.0416192 0.132415 +v -0.0453846 -0.0209327 -0.132466 +v -0.0453846 0.0209327 -0.132466 +v 0.0453846 -0.0209327 -0.132466 +v 0.0453846 0.0209327 -0.132466 +v 0.0453846 -0.0209327 0.132466 +v 0.0453846 0.0209327 0.132466 +v -0.0453846 -0.0209327 0.132466 +v -0.0453846 0.0209327 0.132466 +v -0.0488775 -0.00985854 -0.13256 +v -0.0488775 0.00985854 -0.13256 +v 0.0488775 -0.00985854 -0.13256 +v 0.0488775 0.00985854 -0.13256 +v 0.0488775 -0.00985854 0.13256 +v 0.0488775 0.00985854 0.13256 +v -0.0488775 -0.00985854 0.13256 +v -0.0488775 0.00985854 0.13256 +v -0.0110336 -0.0486075 -0.132575 +v -0.0110336 0.0486075 -0.132575 +v 0.0110336 -0.0486075 -0.132575 +v 0.0110336 0.0486075 -0.132575 +v 0.0110336 -0.0486075 0.132575 +v 0.0110336 0.0486075 0.132575 +v -0.0110336 -0.0486075 0.132575 +v -0.0110336 0.0486075 0.132575 +v -0.0422436 -0.0263271 -0.132629 +v -0.0422436 0.0263271 -0.132629 +v 0.0422436 -0.0263271 -0.132629 +v 0.0422436 0.0263271 -0.132629 +v 0.0422436 -0.0263271 0.132629 +v 0.0422436 0.0263271 0.132629 +v -0.0422436 -0.0263271 0.132629 +v -0.0422436 0.0263271 0.132629 +v -0.036169 -0.0341645 -0.132647 +v -0.036169 0.0341645 -0.132647 +v 0.036169 -0.0341645 -0.132647 +v 0.036169 0.0341645 -0.132647 +v 0.036169 -0.0341645 0.132647 +v 0.036169 0.0341645 0.132647 +v -0.036169 -0.0341645 0.132647 +v -0.036169 0.0341645 0.132647 +v -0.0179759 -0.0463348 -0.132689 +v -0.0179759 0.0463348 -0.132689 +v 0.0179759 -0.0463348 -0.132689 +v 0.0179759 0.0463348 -0.132689 +v 0.0179759 -0.0463348 0.132689 +v 0.0179759 0.0463348 0.132689 +v -0.0179759 -0.0463348 0.132689 +v -0.0179759 0.0463348 0.132689 +v -0.0305755 -0.0391821 -0.132689 +v -0.0305755 0.0391821 -0.132689 +v 0.0305755 -0.0391821 -0.132689 +v 0.0305755 0.0391821 -0.132689 +v 0.0305755 -0.0391821 0.132689 +v 0.0305755 0.0391821 0.132689 +v -0.0305755 -0.0391821 0.132689 +v -0.0305755 0.0391821 0.132689 +v -0.0333734 -0.0366961 -0.132766 +v -0.0333734 0.0366961 -0.132766 +v 0.0333734 -0.0366961 -0.132766 +v 0.0333734 0.0366961 -0.132766 +v 0.0333734 -0.0366961 0.132766 +v 0.0333734 0.0366961 0.132766 +v -0.0333734 -0.0366961 0.132766 +v -0.0333734 0.0366961 0.132766 +v -0.0228505 -0.0440044 -0.132781 +v -0.0228505 0.0440044 -0.132781 +v 0.0228505 -0.0440044 -0.132781 +v 0.0228505 0.0440044 -0.132781 +v 0.0228505 -0.0440044 0.132781 +v 0.0228505 0.0440044 0.132781 +v -0.0228505 -0.0440044 0.132781 +v -0.0228505 0.0440044 0.132781 +v -0.0490613 -0.0070506 -0.132796 +v -0.0490613 0.0070506 -0.132796 +v 0.0490613 -0.0070506 -0.132796 +v 0.0490613 0.0070506 -0.132796 +v 0.0490613 -0.0070506 0.132796 +v 0.0490613 0.0070506 0.132796 +v -0.0490613 -0.0070506 0.132796 +v -0.0490613 0.0070506 0.132796 +v -0.00884303 -0.0486075 -0.132921 +v -0.00884303 0.0486075 -0.132921 +v 0.00884303 -0.0486075 -0.132921 +v 0.00884303 0.0486075 -0.132921 +v 0.00884303 -0.0486075 0.132921 +v 0.00884303 0.0486075 0.132921 +v -0.00884303 -0.0486075 0.132921 +v -0.00884303 0.0486075 0.132921 +v -0.0491839 -0.00423388 -0.132953 +v -0.0491839 0.00423388 -0.132953 +v 0.0491839 -0.00423388 -0.132953 +v 0.0491839 0.00423388 -0.132953 +v 0.0491839 -0.00423388 0.132953 +v 0.0491839 0.00423388 0.132953 +v -0.0491839 -0.00423388 0.132953 +v -0.0491839 0.00423388 0.132953 +v -0.0457905 -0.0181947 -0.133025 +v -0.0457905 0.0181947 -0.133025 +v 0.0457905 -0.0181947 -0.133025 +v 0.0457905 0.0181947 -0.133025 +v 0.0457905 -0.0181947 0.133025 +v 0.0457905 0.0181947 0.133025 +v -0.0457905 -0.0181947 0.133025 +v -0.0457905 0.0181947 0.133025 +v -0.0492452 -0.00141188 -0.133031 +v -0.0492452 0.00141188 -0.133031 +v 0.0492452 -0.00141188 -0.133031 +v 0.0492452 0.00141188 -0.133031 +v 0.0492452 -0.00141188 0.133031 +v 0.0492452 0.00141188 0.133031 +v -0.0492452 -0.00141188 0.133031 +v -0.0492452 0.00141188 0.133031 +v -0.00664172 -0.0486075 -0.133192 +v -0.00664172 0.0486075 -0.133192 +v 0.00664172 -0.0486075 -0.133192 +v 0.00664172 0.0486075 -0.133192 +v 0.00664172 -0.0486075 0.133192 +v 0.00664172 0.0486075 0.133192 +v -0.00664172 -0.0486075 0.133192 +v -0.00664172 0.0486075 0.133192 +v -0.0395149 -0.0289768 -0.133237 +v -0.0395149 0.0289768 -0.133237 +v 0.0395149 -0.0289768 -0.133237 +v 0.0395149 0.0289768 -0.133237 +v 0.0395149 -0.0289768 0.133237 +v 0.0395149 0.0289768 0.133237 +v -0.0395149 -0.0289768 0.133237 +v -0.0395149 0.0289768 0.133237 +v -0.0157771 -0.0463348 -0.133278 +v -0.0157771 0.0463348 -0.133278 +v 0.0157771 -0.0463348 -0.133278 +v 0.0157771 0.0463348 -0.133278 +v 0.0157771 -0.0463348 0.133278 +v 0.0157771 0.0463348 0.133278 +v -0.0157771 -0.0463348 0.133278 +v -0.0157771 0.0463348 0.133278 +v -0.0255937 -0.0416192 -0.133347 +v -0.0255937 0.0416192 -0.133347 +v 0.0255937 -0.0416192 -0.133347 +v 0.0255937 0.0416192 -0.133347 +v 0.0255937 -0.0416192 0.133347 +v 0.0255937 0.0416192 0.133347 +v -0.0255937 -0.0416192 0.133347 +v -0.0255937 0.0416192 0.133347 +v -0.0427369 -0.0236447 -0.13336 +v -0.0427369 0.0236447 -0.13336 +v 0.0427369 -0.0236447 -0.13336 +v 0.0427369 0.0236447 -0.13336 +v 0.0427369 -0.0236447 0.13336 +v 0.0427369 0.0236447 0.13336 +v -0.0427369 -0.0236447 0.13336 +v -0.0427369 0.0236447 0.13336 +v -0.00443231 -0.0486075 -0.133385 +v -0.00443231 0.0486075 -0.133385 +v 0.00443231 -0.0486075 -0.133385 +v 0.00443231 0.0486075 -0.133385 +v 0.00443231 -0.0486075 0.133385 +v 0.00443231 0.0486075 0.133385 +v -0.00443231 -0.0486075 0.133385 +v -0.00443231 0.0486075 0.133385 +v -0.00221751 -0.0486075 -0.133501 +v -0.00221751 0.0486075 -0.133501 +v 0.00221751 -0.0486075 -0.133501 +v 0.00221751 0.0486075 -0.133501 +v 0.00221751 -0.0486075 0.133501 +v 0.00221751 0.0486075 0.133501 +v -0.00221751 -0.0486075 0.133501 +v -0.00221751 0.0486075 0.133501 +v -0.0461394 -0.0154341 -0.133505 +v -0.0461394 0.0154341 -0.133505 +v 0.0461394 -0.0154341 -0.133505 +v 0.0461394 0.0154341 -0.133505 +v 0.0461394 -0.0154341 0.133505 +v 0.0461394 0.0154341 0.133505 +v -0.0461394 -0.0154341 0.133505 +v -0.0461394 0.0154341 0.133505 +v -0.0206455 -0.0440044 -0.13354 +v -0.0206455 0.0440044 -0.13354 +v 0.0206455 -0.0440044 -0.13354 +v 0.0206455 0.0440044 -0.13354 +v 0.0206455 -0.0440044 0.13354 +v 0.0206455 0.0440044 0.13354 +v -0.0206455 -0.0440044 0.13354 +v -0.0206455 0.0440044 0.13354 +v -1.16721e-17 -0.0486075 -0.13354 +v -1.16721e-17 0.0486075 -0.13354 +v 3.89069e-18 -0.0486075 0.13354 +v 3.89069e-18 0.0486075 0.13354 +v -0.0367493 -0.0315903 -0.133652 +v -0.0367493 0.0315903 -0.133652 +v 0.0367493 -0.0315903 -0.133652 +v 0.0367493 0.0315903 -0.133652 +v 0.0367493 -0.0315903 0.133652 +v 0.0367493 0.0315903 0.133652 +v -0.0367493 -0.0315903 0.133652 +v -0.0367493 0.0315903 0.133652 +v -0.028369 -0.0391821 -0.133718 +v -0.028369 0.0391821 -0.133718 +v 0.028369 -0.0391821 -0.133718 +v 0.028369 0.0391821 -0.133718 +v 0.028369 -0.0391821 0.133718 +v 0.028369 0.0391821 0.133718 +v -0.028369 -0.0391821 0.133718 +v -0.028369 0.0391821 0.133718 +v -0.0135591 -0.0463348 -0.133791 +v -0.0135591 0.0463348 -0.133791 +v 0.0135591 -0.0463348 -0.133791 +v 0.0135591 0.0463348 -0.133791 +v 0.0135591 -0.0463348 0.133791 +v 0.0135591 0.0463348 0.133791 +v -0.0135591 -0.0463348 0.133791 +v -0.0135591 0.0463348 0.133791 +v -0.0339606 -0.0341645 -0.133871 +v -0.0339606 0.0341645 -0.133871 +v 0.0339606 -0.0341645 -0.133871 +v 0.0339606 0.0341645 -0.133871 +v 0.0339606 -0.0341645 0.133871 +v 0.0339606 0.0341645 0.133871 +v -0.0339606 -0.0341645 0.133871 +v -0.0339606 0.0341645 0.133871 +v -0.0311626 -0.0366961 -0.133893 +v -0.0311626 0.0366961 -0.133893 +v 0.0311626 -0.0366961 -0.133893 +v 0.0311626 0.0366961 -0.133893 +v 0.0311626 -0.0366961 0.133893 +v 0.0311626 0.0366961 0.133893 +v -0.0311626 -0.0366961 0.133893 +v -0.0311626 0.0366961 0.133893 +v -0.0464308 -0.0126542 -0.133907 +v -0.0464308 0.0126542 -0.133907 +v 0.0464308 -0.0126542 -0.133907 +v 0.0464308 0.0126542 -0.133907 +v 0.0464308 -0.0126542 0.133907 +v 0.0464308 0.0126542 0.133907 +v -0.0464308 -0.0126542 0.133907 +v -0.0464308 0.0126542 0.133907 +v -0.0431769 -0.0209327 -0.134012 +v -0.0431769 0.0209327 -0.134012 +v 0.0431769 -0.0209327 -0.134012 +v 0.0431769 0.0209327 -0.134012 +v 0.0431769 -0.0209327 0.134012 +v 0.0431769 0.0209327 0.134012 +v -0.0431769 -0.0209327 0.134012 +v -0.0431769 0.0209327 0.134012 +v -0.0400322 -0.0263271 -0.134065 +v -0.0400322 0.0263271 -0.134065 +v 0.0400322 -0.0263271 -0.134065 +v 0.0400322 0.0263271 -0.134065 +v 0.0400322 -0.0263271 0.134065 +v 0.0400322 0.0263271 0.134065 +v -0.0400322 -0.0263271 0.134065 +v -0.0400322 0.0263271 0.134065 +v -0.0233674 -0.0416192 -0.134201 +v -0.0233674 0.0416192 -0.134201 +v 0.0233674 -0.0416192 -0.134201 +v 0.0233674 0.0416192 -0.134201 +v 0.0233674 -0.0416192 0.134201 +v 0.0233674 0.0416192 0.134201 +v -0.0233674 -0.0416192 0.134201 +v -0.0233674 0.0416192 0.134201 +v -0.0184154 -0.0440044 -0.134222 +v -0.0184154 0.0440044 -0.134222 +v 0.0184154 -0.0440044 -0.134222 +v 0.0184154 0.0440044 -0.134222 +v 0.0184154 -0.0440044 0.134222 +v 0.0184154 0.0440044 0.134222 +v -0.0184154 -0.0440044 0.134222 +v -0.0184154 0.0440044 0.134222 +v -0.0113246 -0.0463348 -0.134225 +v -0.0113246 0.0463348 -0.134225 +v 0.0113246 -0.0463348 -0.134225 +v 0.0113246 0.0463348 -0.134225 +v 0.0113246 -0.0463348 0.134225 +v 0.0113246 0.0463348 0.134225 +v -0.0113246 -0.0463348 0.134225 +v -0.0113246 0.0463348 0.134225 +v -0.0466644 -0.00985854 -0.134228 +v -0.0466644 0.00985854 -0.134228 +v 0.0466644 -0.00985854 -0.134228 +v 0.0466644 0.00985854 -0.134228 +v 0.0466644 -0.00985854 0.134228 +v 0.0466644 0.00985854 0.134228 +v -0.0466644 -0.00985854 0.134228 +v -0.0466644 0.00985854 0.134228 +v -0.0468398 -0.0070506 -0.13447 +v -0.0468398 0.0070506 -0.13447 +v 0.0468398 -0.0070506 -0.13447 +v 0.0468398 0.0070506 -0.13447 +v 0.0468398 -0.0070506 0.13447 +v 0.0468398 0.0070506 0.13447 +v -0.0468398 -0.0070506 0.13447 +v -0.0468398 0.0070506 0.13447 +v -0.0372839 -0.0289768 -0.134578 +v -0.0372839 0.0289768 -0.134578 +v 0.0372839 -0.0289768 -0.134578 +v 0.0372839 0.0289768 -0.134578 +v 0.0372839 -0.0289768 0.134578 +v 0.0372839 0.0289768 0.134578 +v -0.0372839 -0.0289768 0.134578 +v -0.0372839 0.0289768 0.134578 +v -0.00907627 -0.0463348 -0.134581 +v -0.00907627 0.0463348 -0.134581 +v 0.00907627 -0.0463348 -0.134581 +v 0.00907627 0.0463348 -0.134581 +v 0.00907627 -0.0463348 0.134581 +v 0.00907627 0.0463348 0.134581 +v -0.00907627 -0.0463348 0.134581 +v -0.00907627 0.0463348 0.134581 +v -0.0435631 -0.0181947 -0.134585 +v -0.0435631 0.0181947 -0.134585 +v 0.0435631 -0.0181947 -0.134585 +v 0.0435631 0.0181947 -0.134585 +v 0.0435631 -0.0181947 0.134585 +v 0.0435631 0.0181947 0.134585 +v -0.0435631 -0.0181947 0.134585 +v -0.0435631 0.0181947 0.134585 +v -0.0469569 -0.00423388 -0.134631 +v -0.0469569 0.00423388 -0.134631 +v 0.0469569 -0.00423388 -0.134631 +v 0.0469569 0.00423388 -0.134631 +v 0.0469569 -0.00423388 0.134631 +v 0.0469569 0.00423388 0.134631 +v -0.0469569 -0.00423388 0.134631 +v -0.0469569 0.00423388 0.134631 +v -0.026128 -0.0391821 -0.134669 +v -0.026128 0.0391821 -0.134669 +v 0.026128 -0.0391821 -0.134669 +v 0.026128 0.0391821 -0.134669 +v 0.026128 -0.0391821 0.134669 +v 0.026128 0.0391821 0.134669 +v -0.026128 -0.0391821 0.134669 +v -0.026128 0.0391821 0.134669 +v -0.0470155 -0.00141188 -0.134711 +v -0.0470155 0.00141188 -0.134711 +v 0.0470155 -0.00141188 -0.134711 +v 0.0470155 0.00141188 -0.134711 +v 0.0470155 -0.00141188 0.134711 +v 0.0470155 0.00141188 0.134711 +v -0.0470155 -0.00141188 0.134711 +v -0.0470155 0.00141188 0.134711 +v -0.0404996 -0.0236447 -0.134813 +v -0.0404996 0.0236447 -0.134813 +v 0.0404996 -0.0236447 -0.134813 +v 0.0404996 0.0236447 -0.134813 +v 0.0404996 -0.0236447 0.134813 +v 0.0404996 0.0236447 0.134813 +v -0.0404996 -0.0236447 0.134813 +v -0.0404996 0.0236447 0.134813 +v -0.0161629 -0.0440044 -0.134826 +v -0.0161629 0.0440044 -0.134826 +v 0.0161629 -0.0440044 -0.134826 +v 0.0161629 0.0440044 -0.134826 +v 0.0161629 -0.0440044 0.134826 +v 0.0161629 0.0440044 0.134826 +v -0.0161629 -0.0440044 0.134826 +v -0.0161629 0.0440044 0.134826 +v -0.00681689 -0.0463348 -0.134858 +v -0.00681689 0.0463348 -0.134858 +v 0.00681689 -0.0463348 -0.134858 +v 0.00681689 0.0463348 -0.134858 +v 0.00681689 -0.0463348 0.134858 +v 0.00681689 0.0463348 0.134858 +v -0.00681689 -0.0463348 0.134858 +v -0.00681689 0.0463348 0.134858 +v -0.0345055 -0.0315903 -0.134895 +v -0.0345055 0.0315903 -0.134895 +v 0.0345055 -0.0315903 -0.134895 +v 0.0345055 0.0315903 -0.134895 +v 0.0345055 -0.0315903 0.134895 +v 0.0345055 0.0315903 0.134895 +v -0.0345055 -0.0315903 0.134895 +v -0.0345055 0.0315903 0.134895 +v -0.0289138 -0.0366961 -0.134941 +v -0.0289138 0.0366961 -0.134941 +v 0.0289138 -0.0366961 -0.134941 +v 0.0289138 0.0366961 -0.134941 +v 0.0289138 -0.0366961 0.134941 +v 0.0289138 0.0366961 0.134941 +v -0.0289138 -0.0366961 0.134941 +v -0.0289138 0.0366961 0.134941 +v -0.0211125 -0.0416192 -0.134978 +v -0.0211125 0.0416192 -0.134978 +v 0.0211125 -0.0416192 -0.134978 +v 0.0211125 0.0416192 -0.134978 +v 0.0211125 -0.0416192 0.134978 +v 0.0211125 0.0416192 0.134978 +v -0.0211125 -0.0416192 0.134978 +v -0.0211125 0.0416192 0.134978 +v -0.0317109 -0.0341645 -0.135017 +v -0.0317109 0.0341645 -0.135017 +v 0.0317109 -0.0341645 -0.135017 +v 0.0317109 0.0341645 -0.135017 +v 0.0317109 -0.0341645 0.135017 +v 0.0317109 0.0341645 0.135017 +v -0.0317109 -0.0341645 0.135017 +v -0.0317109 0.0341645 0.135017 +v -0.00454922 -0.0463348 -0.135057 +v -0.00454922 0.0463348 -0.135057 +v 0.00454922 -0.0463348 -0.135057 +v 0.00454922 0.0463348 -0.135057 +v 0.00454922 -0.0463348 0.135057 +v 0.00454922 0.0463348 0.135057 +v -0.00454922 -0.0463348 0.135057 +v -0.00454922 0.0463348 0.135057 +v -0.043895 -0.0154341 -0.135077 +v -0.043895 0.0154341 -0.135077 +v 0.043895 -0.0154341 -0.135077 +v 0.043895 0.0154341 -0.135077 +v 0.043895 -0.0154341 0.135077 +v 0.043895 0.0154341 0.135077 +v -0.043895 -0.0154341 0.135077 +v -0.043895 0.0154341 0.135077 +v -0.00227599 -0.0463348 -0.135176 +v -0.00227599 0.0463348 -0.135176 +v 0.00227599 -0.0463348 -0.135176 +v 0.00227599 0.0463348 -0.135176 +v 0.00227599 -0.0463348 0.135176 +v 0.00227599 0.0463348 0.135176 +v -0.00227599 -0.0463348 0.135176 +v -0.00227599 0.0463348 0.135176 +v -1.19799e-17 -0.0463348 -0.135216 +v -1.19799e-17 0.0463348 -0.135216 +v 3.99331e-18 -0.0463348 0.135216 +v 3.99331e-18 0.0463348 0.135216 +v -0.0138906 -0.0440044 -0.13535 +v -0.0138906 0.0440044 -0.13535 +v 0.0138906 -0.0440044 -0.13535 +v 0.0138906 0.0440044 -0.13535 +v 0.0138906 -0.0440044 0.13535 +v 0.0138906 0.0440044 0.13535 +v -0.0138906 -0.0440044 0.13535 +v -0.0138906 0.0440044 0.13535 +v -0.037772 -0.0263271 -0.135423 +v -0.037772 0.0263271 -0.135423 +v 0.037772 -0.0263271 -0.135423 +v 0.037772 0.0263271 -0.135423 +v 0.037772 -0.0263271 0.135423 +v 0.037772 0.0263271 0.135423 +v -0.037772 -0.0263271 0.135423 +v -0.037772 0.0263271 0.135423 +v -0.0409166 -0.0209327 -0.13548 +v -0.0409166 0.0209327 -0.13548 +v 0.0409166 -0.0209327 -0.13548 +v 0.0409166 0.0209327 -0.13548 +v 0.0409166 -0.0209327 0.13548 +v 0.0409166 0.0209327 0.13548 +v -0.0409166 -0.0209327 0.13548 +v -0.0409166 0.0209327 0.13548 +v -0.0441722 -0.0126542 -0.135488 +v -0.0441722 0.0126542 -0.135488 +v 0.0441722 -0.0126542 -0.135488 +v 0.0441722 0.0126542 -0.135488 +v 0.0441722 -0.0126542 0.135488 +v 0.0441722 0.0126542 0.135488 +v -0.0441722 -0.0126542 0.135488 +v -0.0441722 0.0126542 0.135488 +v -0.0238552 -0.0391821 -0.135542 +v -0.0238552 0.0391821 -0.135542 +v 0.0238552 -0.0391821 -0.135542 +v 0.0238552 0.0391821 -0.135542 +v 0.0238552 -0.0391821 0.135542 +v 0.0238552 0.0391821 0.135542 +v -0.0238552 -0.0391821 0.135542 +v -0.0238552 0.0391821 0.135542 +v -0.018832 -0.0416192 -0.135675 +v -0.018832 0.0416192 -0.135675 +v 0.018832 -0.0416192 -0.135675 +v 0.018832 0.0416192 -0.135675 +v 0.018832 -0.0416192 0.135675 +v 0.018832 0.0416192 0.135675 +v -0.018832 -0.0416192 0.135675 +v -0.018832 0.0416192 0.135675 +v -0.0116015 -0.0440044 -0.135795 +v -0.0116015 0.0440044 -0.135795 +v 0.0116015 -0.0440044 -0.135795 +v 0.0116015 0.0440044 -0.135795 +v 0.0116015 -0.0440044 0.135795 +v 0.0116015 0.0440044 0.135795 +v -0.0116015 -0.0440044 0.135795 +v -0.0116015 0.0440044 0.135795 +v -0.0443945 -0.00985854 -0.135817 +v -0.0443945 0.00985854 -0.135817 +v 0.0443945 -0.00985854 -0.135817 +v 0.0443945 0.00985854 -0.135817 +v 0.0443945 -0.00985854 0.135817 +v 0.0443945 0.00985854 0.135817 +v -0.0443945 -0.00985854 0.135817 +v -0.0443945 0.00985854 0.135817 +v -0.0350074 -0.0289768 -0.135839 +v -0.0350074 0.0289768 -0.135839 +v 0.0350074 -0.0289768 -0.135839 +v 0.0350074 0.0289768 -0.135839 +v 0.0350074 -0.0289768 0.135839 +v 0.0350074 0.0289768 0.135839 +v -0.0350074 -0.0289768 0.135839 +v -0.0350074 0.0289768 0.135839 +v -0.0266297 -0.0366961 -0.135911 +v -0.0266297 0.0366961 -0.135911 +v 0.0266297 -0.0366961 -0.135911 +v 0.0266297 0.0366961 -0.135911 +v 0.0266297 -0.0366961 0.135911 +v 0.0266297 0.0366961 0.135911 +v -0.0266297 -0.0366961 0.135911 +v -0.0266297 0.0366961 0.135911 +v -0.0322197 -0.0315903 -0.13606 +v -0.0322197 0.0315903 -0.13606 +v 0.0322197 -0.0315903 -0.13606 +v 0.0322197 0.0315903 -0.13606 +v 0.0322197 -0.0315903 0.13606 +v 0.0322197 0.0315903 0.13606 +v -0.0322197 -0.0315903 0.13606 +v -0.0322197 0.0315903 0.13606 +v -0.0445614 -0.0070506 -0.136065 +v -0.0445614 0.0070506 -0.136065 +v 0.0445614 -0.0070506 -0.136065 +v 0.0445614 0.0070506 -0.136065 +v 0.0445614 -0.0070506 0.136065 +v 0.0445614 0.0070506 0.136065 +v -0.0445614 -0.0070506 0.136065 +v -0.0445614 0.0070506 0.136065 +v -0.0412825 -0.0181947 -0.136066 +v -0.0412825 0.0181947 -0.136066 +v 0.0412825 -0.0181947 -0.136066 +v 0.0412825 0.0181947 -0.136066 +v 0.0412825 -0.0181947 0.136066 +v 0.0412825 0.0181947 0.136066 +v -0.0412825 -0.0181947 0.136066 +v -0.0412825 0.0181947 0.136066 +v -0.0294225 -0.0341645 -0.136084 +v -0.0294225 0.0341645 -0.136084 +v 0.0294225 -0.0341645 -0.136084 +v 0.0294225 0.0341645 -0.136084 +v 0.0294225 -0.0341645 0.136084 +v 0.0294225 0.0341645 0.136084 +v -0.0294225 -0.0341645 0.136084 +v -0.0294225 0.0341645 0.136084 +v -0.00929819 -0.0440044 -0.13616 +v -0.00929819 0.0440044 -0.13616 +v 0.00929819 -0.0440044 -0.13616 +v 0.00929819 0.0440044 -0.13616 +v 0.00929819 -0.0440044 0.13616 +v 0.00929819 0.0440044 0.13616 +v -0.00929819 -0.0440044 0.13616 +v -0.00929819 0.0440044 0.13616 +v -0.038213 -0.0236447 -0.136187 +v -0.038213 0.0236447 -0.136187 +v 0.038213 -0.0236447 -0.136187 +v 0.038213 0.0236447 -0.136187 +v 0.038213 -0.0236447 0.136187 +v 0.038213 0.0236447 0.136187 +v -0.038213 -0.0236447 0.136187 +v -0.038213 0.0236447 0.136187 +v -0.0446727 -0.00423388 -0.13623 +v -0.0446727 0.00423388 -0.13623 +v 0.0446727 -0.00423388 -0.13623 +v 0.0446727 0.00423388 -0.13623 +v 0.0446727 -0.00423388 0.13623 +v 0.0446727 0.00423388 0.13623 +v -0.0446727 -0.00423388 0.13623 +v -0.0446727 0.00423388 0.13623 +v -0.0165285 -0.0416192 -0.136292 +v -0.0165285 0.0416192 -0.136292 +v 0.0165285 -0.0416192 -0.136292 +v 0.0165285 0.0416192 -0.136292 +v 0.0165285 -0.0416192 0.136292 +v 0.0165285 0.0416192 0.136292 +v -0.0165285 -0.0416192 0.136292 +v -0.0165285 0.0416192 0.136292 +v -0.0447285 -0.00141188 -0.136313 +v -0.0447285 0.00141188 -0.136313 +v 0.0447285 -0.00141188 -0.136313 +v 0.0447285 0.00141188 -0.136313 +v 0.0447285 -0.00141188 0.136313 +v 0.0447285 0.00141188 0.136313 +v -0.0447285 -0.00141188 0.136313 +v -0.0447285 0.00141188 0.136313 +v -0.0215533 -0.0391821 -0.136334 +v -0.0215533 0.0391821 -0.136334 +v 0.0215533 -0.0391821 -0.136334 +v 0.0215533 0.0391821 -0.136334 +v 0.0215533 -0.0391821 0.136334 +v 0.0215533 0.0391821 0.136334 +v -0.0215533 -0.0391821 0.136334 +v -0.0215533 0.0391821 0.136334 +v -0.00698358 -0.0440044 -0.136444 +v -0.00698358 0.0440044 -0.136444 +v 0.00698358 -0.0440044 -0.136444 +v 0.00698358 0.0440044 -0.136444 +v 0.00698358 -0.0440044 0.136444 +v 0.00698358 0.0440044 0.136444 +v -0.00698358 -0.0440044 0.136444 +v -0.00698358 0.0440044 0.136444 +v -0.0415971 -0.0154341 -0.136569 +v -0.0415971 0.0154341 -0.136569 +v 0.0415971 -0.0154341 -0.136569 +v 0.0415971 0.0154341 -0.136569 +v 0.0415971 -0.0154341 0.136569 +v 0.0415971 0.0154341 0.136569 +v -0.0415971 -0.0154341 0.136569 +v -0.0415971 0.0154341 0.136569 +v -0.00466045 -0.0440044 -0.136648 +v -0.00466045 0.0440044 -0.136648 +v 0.00466045 -0.0440044 -0.136648 +v 0.00466045 0.0440044 -0.136648 +v 0.00466045 -0.0440044 0.136648 +v 0.00466045 0.0440044 0.136648 +v -0.00466045 -0.0440044 0.136648 +v -0.00466045 0.0440044 0.136648 +v -0.0354657 -0.0263271 -0.136701 +v -0.0354657 0.0263271 -0.136701 +v 0.0354657 -0.0263271 -0.136701 +v 0.0354657 0.0263271 -0.136701 +v 0.0354657 -0.0263271 0.136701 +v 0.0354657 0.0263271 0.136701 +v -0.0354657 -0.0263271 0.136701 +v -0.0354657 0.0263271 0.136701 +v -0.00233164 -0.0440044 -0.13677 +v -0.00233164 0.0440044 -0.13677 +v 0.00233164 -0.0440044 -0.13677 +v 0.00233164 0.0440044 -0.13677 +v 0.00233164 -0.0440044 0.13677 +v 0.00233164 0.0440044 0.13677 +v -0.00233164 -0.0440044 0.13677 +v -0.00233164 0.0440044 0.13677 +v -0.0243133 -0.0366961 -0.1368 +v -0.0243133 0.0366961 -0.1368 +v 0.0243133 -0.0366961 -0.1368 +v 0.0243133 0.0366961 -0.1368 +v 0.0243133 -0.0366961 0.1368 +v 0.0243133 0.0366961 0.1368 +v -0.0243133 -0.0366961 0.1368 +v -0.0243133 0.0366961 0.1368 +v -1.22728e-17 -0.0440044 -0.13681 +v -1.22728e-17 0.0440044 -0.13681 +v 4.09095e-18 -0.0440044 0.13681 +v 4.09095e-18 0.0440044 0.13681 +v -0.0142049 -0.0416192 -0.136829 +v -0.0142049 0.0416192 -0.136829 +v 0.0142049 -0.0416192 -0.136829 +v 0.0142049 0.0416192 -0.136829 +v 0.0142049 -0.0416192 0.136829 +v 0.0142049 0.0416192 0.136829 +v -0.0142049 -0.0416192 0.136829 +v -0.0142049 0.0416192 0.136829 +v -0.0386064 -0.0209327 -0.136868 +v -0.0386064 0.0209327 -0.136868 +v 0.0386064 -0.0209327 -0.136868 +v 0.0386064 0.0209327 -0.136868 +v 0.0386064 -0.0209327 0.136868 +v 0.0386064 0.0209327 0.136868 +v -0.0386064 -0.0209327 0.136868 +v -0.0386064 0.0209327 0.136868 +v -0.0418598 -0.0126542 -0.13699 +v -0.0418598 0.0126542 -0.13699 +v 0.0418598 -0.0126542 -0.13699 +v 0.0418598 0.0126542 -0.13699 +v 0.0418598 -0.0126542 0.13699 +v 0.0418598 0.0126542 0.13699 +v -0.0418598 -0.0126542 0.13699 +v -0.0418598 0.0126542 0.13699 +v -0.0326883 -0.0289768 -0.137021 +v -0.0326883 0.0289768 -0.137021 +v 0.0326883 -0.0289768 -0.137021 +v 0.0326883 0.0289768 -0.137021 +v 0.0326883 -0.0289768 0.137021 +v 0.0326883 0.0289768 0.137021 +v -0.0326883 -0.0289768 0.137021 +v -0.0326883 0.0289768 0.137021 +v -0.0192251 -0.0391821 -0.137046 +v -0.0192251 0.0391821 -0.137046 +v 0.0192251 -0.0391821 -0.137046 +v 0.0192251 0.0391821 -0.137046 +v 0.0192251 -0.0391821 0.137046 +v 0.0192251 0.0391821 0.137046 +v -0.0192251 -0.0391821 0.137046 +v -0.0192251 0.0391821 0.137046 +v -0.0270983 -0.0341645 -0.137071 +v -0.0270983 0.0341645 -0.137071 +v 0.0270983 -0.0341645 -0.137071 +v 0.0270983 0.0341645 -0.137071 +v 0.0270983 -0.0341645 0.137071 +v 0.0270983 0.0341645 0.137071 +v -0.0270983 -0.0341645 0.137071 +v -0.0270983 0.0341645 0.137071 +v -0.0298946 -0.0315903 -0.137144 +v -0.0298946 0.0315903 -0.137144 +v 0.0298946 -0.0315903 -0.137144 +v 0.0298946 0.0315903 -0.137144 +v 0.0298946 -0.0315903 0.137144 +v 0.0298946 0.0315903 0.137144 +v -0.0298946 -0.0315903 0.137144 +v -0.0298946 0.0315903 0.137144 +v -0.0118639 -0.0416192 -0.137284 +v -0.0118639 0.0416192 -0.137284 +v 0.0118639 -0.0416192 -0.137284 +v 0.0118639 0.0416192 -0.137284 +v 0.0118639 -0.0416192 0.137284 +v 0.0118639 0.0416192 0.137284 +v -0.0118639 -0.0416192 0.137284 +v -0.0118639 0.0416192 0.137284 +v -0.0420704 -0.00985854 -0.137327 +v -0.0420704 0.00985854 -0.137327 +v 0.0420704 -0.00985854 -0.137327 +v 0.0420704 0.00985854 -0.137327 +v 0.0420704 -0.00985854 0.137327 +v 0.0420704 0.00985854 0.137327 +v -0.0420704 -0.00985854 0.137327 +v -0.0420704 0.00985854 0.137327 +v -0.0389517 -0.0181947 -0.137466 +v -0.0389517 0.0181947 -0.137466 +v 0.0389517 -0.0181947 -0.137466 +v 0.0389517 0.0181947 -0.137466 +v 0.0389517 -0.0181947 0.137466 +v 0.0389517 0.0181947 0.137466 +v -0.0389517 -0.0181947 0.137466 +v -0.0389517 0.0181947 0.137466 +v -0.0358798 -0.0236447 -0.13748 +v -0.0358798 0.0236447 -0.13748 +v 0.0358798 -0.0236447 -0.13748 +v 0.0358798 0.0236447 -0.13748 +v 0.0358798 -0.0236447 0.13748 +v 0.0358798 0.0236447 0.13748 +v -0.0358798 -0.0236447 0.13748 +v -0.0358798 0.0236447 0.13748 +v -0.0422286 -0.0070506 -0.13758 +v -0.0422286 0.0070506 -0.13758 +v 0.0422286 -0.0070506 -0.13758 +v 0.0422286 0.0070506 -0.13758 +v 0.0422286 -0.0070506 0.13758 +v 0.0422286 0.0070506 0.13758 +v -0.0422286 -0.0070506 0.13758 +v -0.0422286 0.0070506 0.13758 +v -0.0219672 -0.0366961 -0.137608 +v -0.0219672 0.0366961 -0.137608 +v 0.0219672 -0.0366961 -0.137608 +v 0.0219672 0.0366961 -0.137608 +v 0.0219672 -0.0366961 0.137608 +v 0.0219672 0.0366961 0.137608 +v -0.0219672 -0.0366961 0.137608 +v -0.0219672 0.0366961 0.137608 +v -0.00950853 -0.0416192 -0.137657 +v -0.00950853 0.0416192 -0.137657 +v 0.00950853 -0.0416192 -0.137657 +v 0.00950853 0.0416192 -0.137657 +v 0.00950853 -0.0416192 0.137657 +v 0.00950853 0.0416192 0.137657 +v -0.00950853 -0.0416192 0.137657 +v -0.00950853 0.0416192 0.137657 +v -0.0168735 -0.0391821 -0.137676 +v -0.0168735 0.0391821 -0.137676 +v 0.0168735 -0.0391821 -0.137676 +v 0.0168735 0.0391821 -0.137676 +v 0.0168735 -0.0391821 0.137676 +v 0.0168735 0.0391821 0.137676 +v -0.0168735 -0.0391821 0.137676 +v -0.0168735 0.0391821 0.137676 +v -0.0423341 -0.00423388 -0.137749 +v -0.0423341 0.00423388 -0.137749 +v 0.0423341 -0.00423388 -0.137749 +v 0.0423341 0.00423388 -0.137749 +v 0.0423341 -0.00423388 0.137749 +v 0.0423341 0.00423388 0.137749 +v -0.0423341 -0.00423388 0.137749 +v -0.0423341 0.00423388 0.137749 +v -0.0423869 -0.00141188 -0.137833 +v -0.0423869 0.00141188 -0.137833 +v 0.0423869 -0.00141188 -0.137833 +v 0.0423869 0.00141188 -0.137833 +v 0.0423869 -0.00141188 0.137833 +v 0.0423869 0.00141188 0.137833 +v -0.0423869 -0.00141188 0.137833 +v -0.0423869 0.00141188 0.137833 +v -0.0331163 -0.0263271 -0.137898 +v -0.0331163 0.0263271 -0.137898 +v 0.0331163 -0.0263271 -0.137898 +v 0.0331163 0.0263271 -0.137898 +v 0.0331163 -0.0263271 0.137898 +v 0.0331163 0.0263271 0.137898 +v -0.0331163 -0.0263271 0.137898 +v -0.0331163 0.0263271 0.137898 +v -0.00714156 -0.0416192 -0.137947 +v -0.00714156 0.0416192 -0.137947 +v 0.00714156 -0.0416192 -0.137947 +v 0.00714156 0.0416192 -0.137947 +v 0.00714156 -0.0416192 0.137947 +v 0.00714156 0.0416192 0.137947 +v -0.00714156 -0.0416192 0.137947 +v -0.00714156 0.0416192 0.137947 +v -0.0247411 -0.0341645 -0.137975 +v -0.0247411 0.0341645 -0.137975 +v 0.0247411 -0.0341645 -0.137975 +v 0.0247411 0.0341645 -0.137975 +v 0.0247411 -0.0341645 0.137975 +v 0.0247411 0.0341645 0.137975 +v -0.0247411 -0.0341645 0.137975 +v -0.0247411 0.0341645 0.137975 +v -0.0392485 -0.0154341 -0.13798 +v -0.0392485 0.0154341 -0.13798 +v 0.0392485 -0.0154341 -0.13798 +v 0.0392485 0.0154341 -0.13798 +v 0.0392485 -0.0154341 0.13798 +v 0.0392485 0.0154341 0.13798 +v -0.0392485 -0.0154341 0.13798 +v -0.0392485 0.0154341 0.13798 +v -0.0303294 -0.0289768 -0.138121 +v -0.0303294 0.0289768 -0.138121 +v 0.0303294 -0.0289768 -0.138121 +v 0.0303294 0.0289768 -0.138121 +v 0.0303294 -0.0289768 0.138121 +v 0.0303294 0.0289768 0.138121 +v -0.0303294 -0.0289768 0.138121 +v -0.0303294 0.0289768 0.138121 +v -0.0275331 -0.0315903 -0.138147 +v -0.0275331 0.0315903 -0.138147 +v 0.0275331 -0.0315903 -0.138147 +v 0.0275331 0.0315903 -0.138147 +v 0.0275331 -0.0315903 0.138147 +v 0.0275331 0.0315903 0.138147 +v -0.0275331 -0.0315903 0.138147 +v -0.0275331 0.0315903 0.138147 +v -0.00476588 -0.0416192 -0.138155 +v -0.00476588 0.0416192 -0.138155 +v 0.00476588 -0.0416192 -0.138155 +v 0.00476588 0.0416192 -0.138155 +v 0.00476588 -0.0416192 0.138155 +v 0.00476588 0.0416192 0.138155 +v -0.00476588 -0.0416192 0.138155 +v -0.00476588 0.0416192 0.138155 +v -0.0362492 -0.0209327 -0.138175 +v -0.0362492 0.0209327 -0.138175 +v 0.0362492 -0.0209327 -0.138175 +v 0.0362492 0.0209327 -0.138175 +v 0.0362492 -0.0209327 0.138175 +v 0.0362492 0.0209327 0.138175 +v -0.0362492 -0.0209327 0.138175 +v -0.0362492 0.0209327 0.138175 +v -0.0145014 -0.0391821 -0.138224 +v -0.0145014 0.0391821 -0.138224 +v 0.0145014 -0.0391821 -0.138224 +v 0.0145014 0.0391821 -0.138224 +v 0.0145014 -0.0391821 0.138224 +v 0.0145014 0.0391821 0.138224 +v -0.0145014 -0.0391821 0.138224 +v -0.0145014 0.0391821 0.138224 +v -0.00238439 -0.0416192 -0.13828 +v -0.00238439 0.0416192 -0.13828 +v 0.00238439 -0.0416192 -0.13828 +v 0.00238439 0.0416192 -0.13828 +v 0.00238439 -0.0416192 0.13828 +v 0.00238439 0.0416192 0.13828 +v -0.00238439 -0.0416192 0.13828 +v -0.00238439 0.0416192 0.13828 +v -1.25505e-17 -0.0416192 -0.138322 +v -1.25505e-17 0.0416192 -0.138322 +v 4.18349e-18 -0.0416192 0.138322 +v 4.18349e-18 0.0416192 0.138322 +v -0.0195943 -0.0366961 -0.138333 +v -0.0195943 0.0366961 -0.138333 +v 0.0195943 -0.0366961 -0.138333 +v 0.0195943 0.0366961 -0.138333 +v 0.0195943 -0.0366961 0.138333 +v 0.0195943 0.0366961 0.138333 +v -0.0195943 -0.0366961 0.138333 +v -0.0195943 0.0366961 0.138333 +v -0.0394964 -0.0126542 -0.13841 +v -0.0394964 0.0126542 -0.13841 +v 0.0394964 -0.0126542 -0.13841 +v 0.0394964 0.0126542 -0.13841 +v 0.0394964 -0.0126542 0.13841 +v 0.0394964 0.0126542 0.13841 +v -0.0394964 -0.0126542 0.13841 +v -0.0394964 0.0126542 0.13841 +v -0.0121116 -0.0391821 -0.138688 +v -0.0121116 0.0391821 -0.138688 +v 0.0121116 -0.0391821 -0.138688 +v 0.0121116 0.0391821 -0.138688 +v 0.0121116 -0.0391821 0.138688 +v 0.0121116 0.0391821 0.138688 +v -0.0121116 -0.0391821 0.138688 +v -0.0121116 0.0391821 0.138688 +v -0.0335029 -0.0236447 -0.138691 +v -0.0335029 0.0236447 -0.138691 +v 0.0335029 -0.0236447 -0.138691 +v 0.0335029 0.0236447 -0.138691 +v 0.0335029 -0.0236447 0.138691 +v 0.0335029 0.0236447 0.138691 +v -0.0335029 -0.0236447 0.138691 +v -0.0335029 0.0236447 0.138691 +v -0.0396951 -0.00985854 -0.138754 +v -0.0396951 0.00985854 -0.138754 +v 0.0396951 -0.00985854 -0.138754 +v 0.0396951 0.00985854 -0.138754 +v 0.0396951 -0.00985854 0.138754 +v 0.0396951 0.00985854 0.138754 +v -0.0396951 -0.00985854 0.138754 +v -0.0396951 0.00985854 0.138754 +v -0.0365735 -0.0181947 -0.138785 +v -0.0365735 0.0181947 -0.138785 +v 0.0365735 -0.0181947 -0.138785 +v 0.0365735 0.0181947 -0.138785 +v 0.0365735 -0.0181947 0.138785 +v 0.0365735 0.0181947 0.138785 +v -0.0365735 -0.0181947 0.138785 +v -0.0365735 0.0181947 0.138785 +v -0.0223537 -0.0341645 -0.138798 +v -0.0223537 0.0341645 -0.138798 +v 0.0223537 -0.0341645 -0.138798 +v 0.0223537 0.0341645 -0.138798 +v 0.0223537 -0.0341645 0.138798 +v 0.0223537 0.0341645 0.138798 +v -0.0223537 -0.0341645 0.138798 +v -0.0223537 0.0341645 0.138798 +v -0.0171976 -0.0366961 -0.138976 +v -0.0171976 0.0366961 -0.138976 +v 0.0171976 -0.0366961 -0.138976 +v 0.0171976 0.0366961 -0.138976 +v 0.0171976 -0.0366961 0.138976 +v 0.0171976 0.0366961 0.138976 +v -0.0171976 -0.0366961 0.138976 +v -0.0171976 0.0366961 0.138976 +v -0.0398443 -0.0070506 -0.139012 +v -0.0398443 0.0070506 -0.139012 +v 0.0398443 -0.0070506 -0.139012 +v 0.0398443 0.0070506 -0.139012 +v 0.0398443 -0.0070506 0.139012 +v 0.0398443 0.0070506 0.139012 +v -0.0398443 -0.0070506 0.139012 +v -0.0398443 0.0070506 0.139012 +v -0.0307265 -0.0263271 -0.139013 +v -0.0307265 0.0263271 -0.139013 +v 0.0307265 -0.0263271 -0.139013 +v 0.0307265 0.0263271 -0.139013 +v 0.0307265 -0.0263271 0.139013 +v 0.0307265 0.0263271 0.139013 +v -0.0307265 -0.0263271 0.139013 +v -0.0307265 0.0263271 0.139013 +v -0.025138 -0.0315903 -0.139066 +v -0.025138 0.0315903 -0.139066 +v 0.025138 -0.0315903 -0.139066 +v 0.025138 0.0315903 -0.139066 +v 0.025138 -0.0315903 0.139066 +v 0.025138 0.0315903 0.139066 +v -0.025138 -0.0315903 0.139066 +v -0.025138 0.0315903 0.139066 +v -0.00970703 -0.0391821 -0.139069 +v -0.00970703 0.0391821 -0.139069 +v 0.00970703 -0.0391821 -0.139069 +v 0.00970703 0.0391821 -0.139069 +v 0.00970703 -0.0391821 0.139069 +v 0.00970703 0.0391821 0.139069 +v -0.00970703 -0.0391821 0.139069 +v -0.00970703 0.0391821 0.139069 +v -0.0279336 -0.0289768 -0.139138 +v -0.0279336 0.0289768 -0.139138 +v 0.0279336 -0.0289768 -0.139138 +v 0.0279336 0.0289768 -0.139138 +v 0.0279336 -0.0289768 0.139138 +v 0.0279336 0.0289768 0.139138 +v -0.0279336 -0.0289768 0.139138 +v -0.0279336 0.0289768 0.139138 +v -0.0399439 -0.00423388 -0.139185 +v -0.0399439 0.00423388 -0.139185 +v 0.0399439 -0.00423388 -0.139185 +v 0.0399439 0.00423388 -0.139185 +v 0.0399439 -0.00423388 0.139185 +v 0.0399439 0.00423388 0.139185 +v -0.0399439 -0.00423388 0.139185 +v -0.0399439 0.00423388 0.139185 +v -0.0399938 -0.00141188 -0.139271 +v -0.0399938 0.00141188 -0.139271 +v 0.0399938 -0.00141188 -0.139271 +v 0.0399938 0.00141188 -0.139271 +v 0.0399938 -0.00141188 0.139271 +v 0.0399938 0.00141188 0.139271 +v -0.0399938 -0.00141188 0.139271 +v -0.0399938 0.00141188 0.139271 +v -0.0368521 -0.0154341 -0.139309 +v -0.0368521 0.0154341 -0.139309 +v 0.0368521 -0.0154341 -0.139309 +v 0.0368521 0.0154341 -0.139309 +v 0.0368521 -0.0154341 0.139309 +v 0.0368521 0.0154341 0.139309 +v -0.0368521 -0.0154341 0.139309 +v -0.0368521 0.0154341 0.139309 +v -0.00729064 -0.0391821 -0.139366 +v -0.00729064 0.0391821 -0.139366 +v 0.00729064 -0.0391821 -0.139366 +v 0.00729064 0.0391821 -0.139366 +v 0.00729064 -0.0391821 0.139366 +v 0.00729064 0.0391821 0.139366 +v -0.00729064 -0.0391821 0.139366 +v -0.00729064 0.0391821 0.139366 +v -0.0338479 -0.0209327 -0.139398 +v -0.0338479 0.0209327 -0.139398 +v 0.0338479 -0.0209327 -0.139398 +v 0.0338479 0.0209327 -0.139398 +v 0.0338479 -0.0209327 0.139398 +v 0.0338479 0.0209327 0.139398 +v -0.0338479 -0.0209327 0.139398 +v -0.0338479 0.0209327 0.139398 +v -0.0147799 -0.0366961 -0.139534 +v -0.0147799 0.0366961 -0.139534 +v 0.0147799 -0.0366961 -0.139534 +v 0.0147799 0.0366961 -0.139534 +v 0.0147799 -0.0366961 0.139534 +v 0.0147799 0.0366961 0.139534 +v -0.0147799 -0.0366961 0.139534 +v -0.0147799 0.0366961 0.139534 +v -0.0199391 -0.0341645 -0.139536 +v -0.0199391 0.0341645 -0.139536 +v 0.0199391 -0.0341645 -0.139536 +v 0.0199391 0.0341645 -0.139536 +v 0.0199391 -0.0341645 0.139536 +v 0.0199391 0.0341645 0.139536 +v -0.0199391 -0.0341645 0.139536 +v -0.0199391 0.0341645 0.139536 +v -0.00486537 -0.0391821 -0.139578 +v -0.00486537 0.0391821 -0.139578 +v 0.00486537 -0.0391821 -0.139578 +v 0.00486537 0.0391821 -0.139578 +v 0.00486537 -0.0391821 0.139578 +v 0.00486537 0.0391821 0.139578 +v -0.00486537 -0.0391821 0.139578 +v -0.00486537 0.0391821 0.139578 +v -0.00243417 -0.0391821 -0.139705 +v -0.00243417 0.0391821 -0.139705 +v 0.00243417 -0.0391821 -0.139705 +v 0.00243417 0.0391821 -0.139705 +v 0.00243417 -0.0391821 0.139705 +v 0.00243417 0.0391821 0.139705 +v -0.00243417 -0.0391821 0.139705 +v -0.00243417 0.0391821 0.139705 +v -0.0370849 -0.0126542 -0.139747 +v -0.0370849 0.0126542 -0.139747 +v 0.0370849 -0.0126542 -0.139747 +v 0.0370849 0.0126542 -0.139747 +v 0.0370849 -0.0126542 0.139747 +v 0.0370849 0.0126542 0.139747 +v -0.0370849 -0.0126542 0.139747 +v -0.0370849 0.0126542 0.139747 +v -1.28125e-17 -0.0391821 -0.139748 +v -1.28125e-17 0.0391821 -0.139748 +v 4.27083e-18 -0.0391821 0.139748 +v 4.27083e-18 0.0391821 0.139748 +v -0.0310852 -0.0236447 -0.139819 +v -0.0310852 0.0236447 -0.139819 +v 0.0310852 -0.0236447 -0.139819 +v 0.0310852 0.0236447 -0.139819 +v 0.0310852 -0.0236447 0.139819 +v 0.0310852 0.0236447 0.139819 +v -0.0310852 -0.0236447 0.139819 +v -0.0310852 0.0236447 0.139819 +v -0.0227123 -0.0315903 -0.139901 +v -0.0227123 0.0315903 -0.139901 +v 0.0227123 -0.0315903 -0.139901 +v 0.0227123 0.0315903 -0.139901 +v 0.0227123 -0.0315903 0.139901 +v 0.0227123 0.0315903 0.139901 +v -0.0227123 -0.0315903 0.139901 +v -0.0227123 0.0315903 0.139901 +v -0.0123442 -0.0366961 -0.140007 +v -0.0123442 0.0366961 -0.140007 +v 0.0123442 -0.0366961 -0.140007 +v 0.0123442 0.0366961 -0.140007 +v 0.0123442 -0.0366961 0.140007 +v 0.0123442 0.0366961 0.140007 +v -0.0123442 -0.0366961 0.140007 +v -0.0123442 0.0366961 0.140007 +v -0.0341506 -0.0181947 -0.140019 +v -0.0341506 0.0181947 -0.140019 +v 0.0341506 -0.0181947 -0.140019 +v 0.0341506 0.0181947 -0.140019 +v 0.0341506 -0.0181947 0.140019 +v 0.0341506 0.0181947 0.140019 +v -0.0341506 -0.0181947 0.140019 +v -0.0341506 0.0181947 0.140019 +v -0.0282992 -0.0263271 -0.140043 +v -0.0282992 0.0263271 -0.140043 +v 0.0282992 -0.0263271 -0.140043 +v 0.0282992 0.0263271 -0.140043 +v 0.0282992 -0.0263271 0.140043 +v 0.0282992 0.0263271 0.140043 +v -0.0282992 -0.0263271 0.140043 +v -0.0282992 0.0263271 0.140043 +v -0.0255037 -0.0289768 -0.140071 +v -0.0255037 0.0289768 -0.140071 +v 0.0255037 -0.0289768 -0.140071 +v 0.0255037 0.0289768 -0.140071 +v 0.0255037 -0.0289768 0.140071 +v 0.0255037 0.0289768 0.140071 +v -0.0255037 -0.0289768 0.140071 +v -0.0255037 0.0289768 0.140071 +v -0.0372715 -0.00985854 -0.140097 +v -0.0372715 0.00985854 -0.140097 +v 0.0372715 -0.00985854 -0.140097 +v 0.0372715 0.00985854 -0.140097 +v 0.0372715 -0.00985854 0.140097 +v 0.0372715 0.00985854 0.140097 +v -0.0372715 -0.00985854 0.140097 +v -0.0372715 0.00985854 0.140097 +v -0.0175001 -0.0341645 -0.140189 +v -0.0175001 0.0341645 -0.140189 +v 0.0175001 -0.0341645 -0.140189 +v 0.0175001 0.0341645 -0.140189 +v 0.0175001 -0.0341645 0.140189 +v 0.0175001 0.0341645 0.140189 +v -0.0175001 -0.0341645 0.140189 +v -0.0175001 0.0341645 0.140189 +v -0.0374116 -0.0070506 -0.140361 +v -0.0374116 0.0070506 -0.140361 +v 0.0374116 -0.0070506 -0.140361 +v 0.0374116 0.0070506 -0.140361 +v 0.0374116 -0.0070506 0.140361 +v 0.0374116 0.0070506 0.140361 +v -0.0374116 -0.0070506 0.140361 +v -0.0374116 0.0070506 0.140361 +v -0.00989343 -0.0366961 -0.140395 +v -0.00989343 0.0366961 -0.140395 +v 0.00989343 -0.0366961 -0.140395 +v 0.00989343 0.0366961 -0.140395 +v 0.00989343 -0.0366961 0.140395 +v 0.00989343 0.0366961 0.140395 +v -0.00989343 -0.0366961 0.140395 +v -0.00989343 0.0366961 0.140395 +v -0.0314053 -0.0209327 -0.140537 +v -0.0314053 0.0209327 -0.140537 +v 0.0314053 -0.0209327 -0.140537 +v 0.0314053 0.0209327 -0.140537 +v 0.0314053 -0.0209327 0.140537 +v 0.0314053 0.0209327 0.140537 +v -0.0314053 -0.0209327 0.140537 +v -0.0314053 0.0209327 0.140537 +v -0.0375051 -0.00423388 -0.140537 +v -0.0375051 0.00423388 -0.140537 +v 0.0375051 -0.00423388 -0.140537 +v 0.0375051 0.00423388 -0.140537 +v 0.0375051 -0.00423388 0.140537 +v 0.0375051 0.00423388 0.140537 +v -0.0375051 -0.00423388 0.140537 +v -0.0375051 0.00423388 0.140537 +v -0.0344108 -0.0154341 -0.140553 +v -0.0344108 0.0154341 -0.140553 +v 0.0344108 -0.0154341 -0.140553 +v 0.0344108 0.0154341 -0.140553 +v 0.0344108 -0.0154341 0.140553 +v 0.0344108 0.0154341 0.140553 +v -0.0344108 -0.0154341 0.140553 +v -0.0344108 0.0154341 0.140553 +v -0.0375519 -0.00141188 -0.140625 +v -0.0375519 0.00141188 -0.140625 +v 0.0375519 -0.00141188 -0.140625 +v 0.0375519 0.00141188 -0.140625 +v 0.0375519 -0.00141188 0.140625 +v 0.0375519 0.00141188 0.140625 +v -0.0375519 -0.00141188 0.140625 +v -0.0375519 0.00141188 0.140625 +v -0.020259 -0.0315903 -0.140651 +v -0.020259 0.0315903 -0.140651 +v 0.020259 -0.0315903 -0.140651 +v 0.020259 0.0315903 -0.140651 +v 0.020259 -0.0315903 0.140651 +v 0.020259 0.0315903 0.140651 +v -0.020259 -0.0315903 0.140651 +v -0.020259 0.0315903 0.140651 +v -0.00743064 -0.0366961 -0.140698 +v -0.00743064 0.0366961 -0.140698 +v 0.00743064 -0.0366961 -0.140698 +v 0.00743064 0.0366961 -0.140698 +v 0.00743064 -0.0366961 0.140698 +v 0.00743064 0.0366961 0.140698 +v -0.00743064 -0.0366961 0.140698 +v -0.00743064 0.0366961 0.140698 +v -0.0150399 -0.0341645 -0.140757 +v -0.0150399 0.0341645 -0.140757 +v 0.0150399 -0.0341645 -0.140757 +v 0.0150399 0.0341645 -0.140757 +v 0.0150399 -0.0341645 0.140757 +v 0.0150399 0.0341645 0.140757 +v -0.0150399 -0.0341645 0.140757 +v -0.0150399 0.0341645 0.140757 +v -0.0286297 -0.0236447 -0.140861 +v -0.0286297 0.0236447 -0.140861 +v 0.0286297 -0.0236447 -0.140861 +v 0.0286297 0.0236447 -0.140861 +v 0.0286297 -0.0236447 0.140861 +v 0.0286297 0.0236447 0.140861 +v -0.0286297 -0.0236447 0.140861 +v -0.0286297 0.0236447 0.140861 +v -0.00495879 -0.0366961 -0.140914 +v -0.00495879 0.0366961 -0.140914 +v 0.00495879 -0.0366961 -0.140914 +v 0.00495879 0.0366961 -0.140914 +v 0.00495879 -0.0366961 0.140914 +v 0.00495879 0.0366961 0.140914 +v -0.00495879 -0.0366961 0.140914 +v -0.00495879 0.0366961 0.140914 +v -0.0230427 -0.0289768 -0.140918 +v -0.0230427 0.0289768 -0.140918 +v 0.0230427 -0.0289768 -0.140918 +v 0.0230427 0.0289768 -0.140918 +v 0.0230427 -0.0289768 0.140918 +v 0.0230427 0.0289768 0.140918 +v -0.0230427 -0.0289768 0.140918 +v -0.0230427 0.0289768 0.140918 +v -0.0258375 -0.0263271 -0.140988 +v -0.0258375 0.0263271 -0.140988 +v 0.0258375 -0.0263271 -0.140988 +v 0.0258375 0.0263271 -0.140988 +v 0.0258375 -0.0263271 0.140988 +v 0.0258375 0.0263271 0.140988 +v -0.0258375 -0.0263271 0.140988 +v -0.0258375 0.0263271 0.140988 +v -0.0346282 -0.0126542 -0.140998 +v -0.0346282 0.0126542 -0.140998 +v 0.0346282 -0.0126542 -0.140998 +v 0.0346282 0.0126542 -0.140998 +v 0.0346282 -0.0126542 0.140998 +v 0.0346282 0.0126542 0.140998 +v -0.0346282 -0.0126542 0.140998 +v -0.0346282 0.0126542 0.140998 +v -0.00248091 -0.0366961 -0.141044 +v -0.00248091 0.0366961 -0.141044 +v 0.00248091 -0.0366961 -0.141044 +v 0.00248091 0.0366961 -0.141044 +v 0.00248091 -0.0366961 0.141044 +v 0.00248091 0.0366961 0.141044 +v -0.00248091 -0.0366961 0.141044 +v -0.00248091 0.0366961 0.141044 +v -1.30585e-17 -0.0366961 -0.141087 +v -1.30585e-17 0.0366961 -0.141087 +v 4.35284e-18 -0.0366961 0.141087 +v 4.35284e-18 0.0366961 0.141087 +v -0.0316862 -0.0181947 -0.141168 +v -0.0316862 0.0181947 -0.141168 +v 0.0316862 -0.0181947 -0.141168 +v 0.0316862 0.0181947 -0.141168 +v 0.0316862 -0.0181947 0.141168 +v 0.0316862 0.0181947 0.141168 +v -0.0316862 -0.0181947 0.141168 +v -0.0316862 0.0181947 0.141168 +v -0.0125614 -0.0341645 -0.141239 +v -0.0125614 0.0341645 -0.141239 +v 0.0125614 -0.0341645 -0.141239 +v 0.0125614 0.0341645 -0.141239 +v 0.0125614 -0.0341645 0.141239 +v 0.0125614 0.0341645 0.141239 +v -0.0125614 -0.0341645 0.141239 +v -0.0125614 0.0341645 0.141239 +v -0.0177809 -0.0315903 -0.141315 +v -0.0177809 0.0315903 -0.141315 +v 0.0177809 -0.0315903 -0.141315 +v 0.0177809 0.0315903 -0.141315 +v 0.0177809 -0.0315903 0.141315 +v 0.0177809 0.0315903 0.141315 +v -0.0177809 -0.0315903 0.141315 +v -0.0177809 0.0315903 0.141315 +v -0.0348024 -0.00985854 -0.141355 +v -0.0348024 0.00985854 -0.141355 +v 0.0348024 -0.00985854 -0.141355 +v 0.0348024 0.00985854 -0.141355 +v 0.0348024 -0.00985854 0.141355 +v 0.0348024 0.00985854 0.141355 +v -0.0348024 -0.00985854 0.141355 +v -0.0348024 0.00985854 0.141355 +v -0.0289244 -0.0209327 -0.14159 +v -0.0289244 0.0209327 -0.14159 +v 0.0289244 -0.0209327 -0.14159 +v 0.0289244 0.0209327 -0.14159 +v 0.0289244 -0.0209327 0.14159 +v 0.0289244 0.0209327 0.14159 +v -0.0289244 -0.0209327 0.14159 +v -0.0289244 0.0209327 0.14159 +v -0.0349332 -0.0070506 -0.141624 +v -0.0349332 0.0070506 -0.141624 +v 0.0349332 -0.0070506 -0.141624 +v 0.0349332 0.0070506 -0.141624 +v 0.0349332 -0.0070506 0.141624 +v 0.0349332 0.0070506 0.141624 +v -0.0349332 -0.0070506 0.141624 +v -0.0349332 0.0070506 0.141624 +v -0.0100675 -0.0341645 -0.141634 +v -0.0100675 0.0341645 -0.141634 +v 0.0100675 -0.0341645 -0.141634 +v 0.0100675 0.0341645 -0.141634 +v 0.0100675 -0.0341645 0.141634 +v 0.0100675 0.0341645 0.141634 +v -0.0100675 -0.0341645 0.141634 +v -0.0100675 0.0341645 0.141634 +v -0.0205537 -0.0289768 -0.141679 +v -0.0205537 0.0289768 -0.141679 +v 0.0205537 -0.0289768 -0.141679 +v 0.0205537 0.0289768 -0.141679 +v 0.0205537 -0.0289768 0.141679 +v 0.0205537 0.0289768 0.141679 +v -0.0205537 -0.0289768 0.141679 +v -0.0205537 0.0289768 0.141679 +v -0.0319276 -0.0154341 -0.141711 +v -0.0319276 0.0154341 -0.141711 +v 0.0319276 -0.0154341 -0.141711 +v 0.0319276 0.0154341 -0.141711 +v 0.0319276 -0.0154341 0.141711 +v 0.0319276 0.0154341 0.141711 +v -0.0319276 -0.0154341 0.141711 +v -0.0319276 0.0154341 0.141711 +v -0.0350205 -0.00423388 -0.141803 +v -0.0350205 0.00423388 -0.141803 +v 0.0350205 -0.00423388 -0.141803 +v 0.0350205 0.00423388 -0.141803 +v 0.0350205 -0.00423388 0.141803 +v 0.0350205 0.00423388 0.141803 +v -0.0350205 -0.00423388 0.141803 +v -0.0350205 0.00423388 0.141803 +v -0.0261392 -0.0236447 -0.141817 +v -0.0261392 0.0236447 -0.141817 +v 0.0261392 -0.0236447 -0.141817 +v 0.0261392 0.0236447 -0.141817 +v 0.0261392 -0.0236447 0.141817 +v 0.0261392 0.0236447 0.141817 +v -0.0261392 -0.0236447 0.141817 +v -0.0261392 0.0236447 0.141817 +v -0.0233444 -0.0263271 -0.141847 +v -0.0233444 0.0263271 -0.141847 +v 0.0233444 -0.0263271 -0.141847 +v 0.0233444 0.0263271 -0.141847 +v 0.0233444 -0.0263271 0.141847 +v 0.0233444 0.0263271 0.141847 +v -0.0233444 -0.0263271 0.141847 +v -0.0233444 0.0263271 0.141847 +v -0.0350642 -0.00141188 -0.141892 +v -0.0350642 0.00141188 -0.141892 +v 0.0350642 -0.00141188 -0.141892 +v 0.0350642 0.00141188 -0.141892 +v 0.0350642 -0.00141188 0.141892 +v 0.0350642 0.00141188 0.141892 +v -0.0350642 -0.00141188 0.141892 +v -0.0350642 0.00141188 0.141892 +v -0.0152812 -0.0315903 -0.141893 +v -0.0152812 0.0315903 -0.141893 +v 0.0152812 -0.0315903 -0.141893 +v 0.0152812 0.0315903 -0.141893 +v 0.0152812 -0.0315903 0.141893 +v 0.0152812 0.0315903 0.141893 +v -0.0152812 -0.0315903 0.141893 +v -0.0152812 0.0315903 0.141893 +v -0.00756138 -0.0341645 -0.141942 +v -0.00756138 0.0341645 -0.141942 +v 0.00756138 -0.0341645 -0.141942 +v 0.00756138 0.0341645 -0.141942 +v 0.00756138 -0.0341645 0.141942 +v 0.00756138 0.0341645 0.141942 +v -0.00756138 -0.0341645 0.141942 +v -0.00756138 0.0341645 0.141942 +v -0.00504604 -0.0341645 -0.142162 +v -0.00504604 0.0341645 -0.142162 +v 0.00504604 -0.0341645 -0.142162 +v 0.00504604 0.0341645 -0.142162 +v 0.00504604 -0.0341645 0.142162 +v 0.00504604 0.0341645 0.142162 +v -0.00504604 -0.0341645 0.142162 +v -0.00504604 0.0341645 0.142162 +v -0.0321293 -0.0126542 -0.142164 +v -0.0321293 0.0126542 -0.142164 +v 0.0321293 -0.0126542 -0.142164 +v 0.0321293 0.0126542 -0.142164 +v 0.0321293 -0.0126542 0.142164 +v 0.0321293 0.0126542 0.142164 +v -0.0321293 -0.0126542 0.142164 +v -0.0321293 0.0126542 0.142164 +v -0.0291832 -0.0181947 -0.142231 +v -0.0291832 0.0181947 -0.142231 +v 0.0291832 -0.0181947 -0.142231 +v 0.0291832 0.0181947 -0.142231 +v 0.0291832 -0.0181947 0.142231 +v 0.0291832 0.0181947 0.142231 +v -0.0291832 -0.0181947 0.142231 +v -0.0291832 0.0181947 0.142231 +v -0.00252456 -0.0341645 -0.142294 +v -0.00252456 0.0341645 -0.142294 +v 0.00252456 -0.0341645 -0.142294 +v 0.00252456 0.0341645 -0.142294 +v 0.00252456 -0.0341645 0.142294 +v 0.00252456 0.0341645 0.142294 +v -0.00252456 -0.0341645 0.142294 +v -0.00252456 0.0341645 0.142294 +v -1.32883e-17 -0.0341645 -0.142338 +v -1.32883e-17 0.0341645 -0.142338 +v 4.42942e-18 -0.0341645 0.142338 +v 4.42942e-18 0.0341645 0.142338 +v -0.0180396 -0.0289768 -0.142353 +v -0.0180396 0.0289768 -0.142353 +v 0.0180396 -0.0289768 -0.142353 +v 0.0180396 0.0289768 -0.142353 +v 0.0180396 -0.0289768 0.142353 +v 0.0180396 0.0289768 0.142353 +v -0.0180396 -0.0289768 0.142353 +v -0.0180396 0.0289768 0.142353 +v -0.0127629 -0.0315903 -0.142382 +v -0.0127629 0.0315903 -0.142382 +v 0.0127629 -0.0315903 -0.142382 +v 0.0127629 0.0315903 -0.142382 +v 0.0127629 -0.0315903 0.142382 +v 0.0127629 0.0315903 0.142382 +v -0.0127629 -0.0315903 0.142382 +v -0.0127629 0.0315903 0.142382 +v -0.0322909 -0.00985854 -0.142527 +v -0.0322909 0.00985854 -0.142527 +v 0.0322909 -0.00985854 -0.142527 +v 0.0322909 0.00985854 -0.142527 +v 0.0322909 -0.00985854 0.142527 +v 0.0322909 0.00985854 0.142527 +v -0.0322909 -0.00985854 0.142527 +v -0.0322909 0.00985854 0.142527 +v -0.0264083 -0.0209327 -0.142556 +v -0.0264083 0.0209327 -0.142556 +v 0.0264083 -0.0209327 -0.142556 +v 0.0264083 0.0209327 -0.142556 +v 0.0264083 -0.0209327 0.142556 +v 0.0264083 0.0209327 0.142556 +v -0.0264083 -0.0209327 0.142556 +v -0.0264083 0.0209327 0.142556 +v -0.0208227 -0.0263271 -0.142617 +v -0.0208227 0.0263271 -0.142617 +v 0.0208227 -0.0263271 -0.142617 +v 0.0208227 0.0263271 -0.142617 +v 0.0208227 -0.0263271 0.142617 +v 0.0208227 0.0263271 0.142617 +v -0.0208227 -0.0263271 0.142617 +v -0.0208227 0.0263271 0.142617 +v -0.0236169 -0.0236447 -0.142685 +v -0.0236169 0.0236447 -0.142685 +v 0.0236169 -0.0236447 -0.142685 +v 0.0236169 0.0236447 -0.142685 +v 0.0236169 -0.0236447 0.142685 +v 0.0236169 0.0236447 0.142685 +v -0.0236169 -0.0236447 0.142685 +v -0.0236169 0.0236447 0.142685 +v -0.0294055 -0.0154341 -0.142781 +v -0.0294055 0.0154341 -0.142781 +v 0.0294055 -0.0154341 -0.142781 +v 0.0294055 0.0154341 -0.142781 +v 0.0294055 -0.0154341 0.142781 +v 0.0294055 0.0154341 0.142781 +v -0.0294055 -0.0154341 0.142781 +v -0.0294055 0.0154341 0.142781 +v -0.010229 -0.0315903 -0.142783 +v -0.010229 0.0315903 -0.142783 +v 0.010229 -0.0315903 -0.142783 +v 0.010229 0.0315903 -0.142783 +v 0.010229 -0.0315903 0.142783 +v 0.010229 0.0315903 0.142783 +v -0.010229 -0.0315903 0.142783 +v -0.010229 0.0315903 0.142783 +v -0.0324123 -0.0070506 -0.142799 +v -0.0324123 0.0070506 -0.142799 +v 0.0324123 -0.0070506 -0.142799 +v 0.0324123 0.0070506 -0.142799 +v 0.0324123 -0.0070506 0.142799 +v 0.0324123 0.0070506 0.142799 +v -0.0324123 -0.0070506 0.142799 +v -0.0324123 0.0070506 0.142799 +v -0.0155035 -0.0289768 -0.142938 +v -0.0155035 0.0289768 -0.142938 +v 0.0155035 -0.0289768 -0.142938 +v 0.0155035 0.0289768 -0.142938 +v 0.0155035 -0.0289768 0.142938 +v 0.0155035 0.0289768 0.142938 +v -0.0155035 -0.0289768 0.142938 +v -0.0155035 0.0289768 0.142938 +v -0.0324933 -0.00423388 -0.142981 +v -0.0324933 0.00423388 -0.142981 +v 0.0324933 -0.00423388 -0.142981 +v 0.0324933 0.00423388 -0.142981 +v 0.0324933 -0.00423388 0.142981 +v 0.0324933 0.00423388 0.142981 +v -0.0324933 -0.00423388 0.142981 +v -0.0324933 0.00423388 0.142981 +v -0.0325339 -0.00141188 -0.143072 +v -0.0325339 0.00141188 -0.143072 +v 0.0325339 -0.00141188 -0.143072 +v 0.0325339 0.00141188 -0.143072 +v 0.0325339 -0.00141188 0.143072 +v 0.0325339 0.00141188 0.143072 +v -0.0325339 -0.00141188 0.143072 +v -0.0325339 0.00141188 0.143072 +v -0.0076827 -0.0315903 -0.143096 +v -0.0076827 0.0315903 -0.143096 +v 0.0076827 -0.0315903 -0.143096 +v 0.0076827 0.0315903 -0.143096 +v 0.0076827 -0.0315903 0.143096 +v 0.0076827 0.0315903 0.143096 +v -0.0076827 -0.0315903 0.143096 +v -0.0076827 0.0315903 0.143096 +v -0.0266446 -0.0181947 -0.143205 +v -0.0266446 0.0181947 -0.143205 +v 0.0266446 -0.0181947 -0.143205 +v 0.0266446 0.0181947 -0.143205 +v 0.0266446 -0.0181947 0.143205 +v 0.0266446 0.0181947 0.143205 +v -0.0266446 -0.0181947 0.143205 +v -0.0266446 0.0181947 0.143205 +v -0.0295912 -0.0126542 -0.143241 +v -0.0295912 0.0126542 -0.143241 +v 0.0295912 -0.0126542 -0.143241 +v 0.0295912 0.0126542 -0.143241 +v 0.0295912 -0.0126542 0.143241 +v 0.0295912 0.0126542 0.143241 +v -0.0295912 -0.0126542 0.143241 +v -0.0295912 0.0126542 0.143241 +v -0.0182757 -0.0263271 -0.1433 +v -0.0182757 0.0263271 -0.1433 +v 0.0182757 -0.0263271 -0.1433 +v 0.0182757 0.0263271 -0.1433 +v 0.0182757 -0.0263271 0.1433 +v 0.0182757 0.0263271 0.1433 +v -0.0182757 -0.0263271 0.1433 +v -0.0182757 0.0263271 0.1433 +v -0.00512701 -0.0315903 -0.14332 +v -0.00512701 0.0315903 -0.14332 +v 0.00512701 -0.0315903 -0.14332 +v 0.00512701 0.0315903 -0.14332 +v 0.00512701 -0.0315903 0.14332 +v 0.00512701 0.0315903 0.14332 +v -0.00512701 -0.0315903 0.14332 +v -0.00512701 0.0315903 0.14332 +v -0.0238601 -0.0209327 -0.143434 +v -0.0238601 0.0209327 -0.143434 +v 0.0238601 -0.0209327 -0.143434 +v 0.0238601 0.0209327 -0.143434 +v 0.0238601 -0.0209327 0.143434 +v 0.0238601 0.0209327 0.143434 +v -0.0238601 -0.0209327 0.143434 +v -0.0238601 0.0209327 0.143434 +v -0.0129486 -0.0289768 -0.143435 +v -0.0129486 0.0289768 -0.143435 +v 0.0129486 -0.0289768 -0.143435 +v 0.0129486 0.0289768 -0.143435 +v 0.0129486 -0.0289768 0.143435 +v 0.0129486 0.0289768 0.143435 +v -0.0129486 -0.0289768 0.143435 +v -0.0129486 0.0289768 0.143435 +v -0.00256507 -0.0315903 -0.143454 +v -0.00256507 0.0315903 -0.143454 +v 0.00256507 -0.0315903 -0.143454 +v 0.00256507 0.0315903 -0.143454 +v 0.00256507 -0.0315903 0.143454 +v 0.00256507 0.0315903 0.143454 +v -0.00256507 -0.0315903 0.143454 +v -0.00256507 0.0315903 0.143454 +v -0.0210659 -0.0236447 -0.143465 +v -0.0210659 0.0236447 -0.143465 +v 0.0210659 -0.0236447 -0.143465 +v 0.0210659 0.0236447 -0.143465 +v 0.0210659 -0.0236447 0.143465 +v 0.0210659 0.0236447 0.143465 +v -0.0210659 -0.0236447 0.143465 +v -0.0210659 0.0236447 0.143465 +v -1.35015e-17 -0.0315903 -0.143499 +v -1.35015e-17 0.0315903 -0.143499 +v 4.50049e-18 -0.0315903 0.143499 +v 4.50049e-18 0.0315903 0.143499 +v -0.0297401 -0.00985854 -0.143609 +v -0.0297401 0.00985854 -0.143609 +v 0.0297401 -0.00985854 -0.143609 +v 0.0297401 0.00985854 -0.143609 +v 0.0297401 -0.00985854 0.143609 +v 0.0297401 0.00985854 0.143609 +v -0.0297401 -0.00985854 0.143609 +v -0.0297401 0.00985854 0.143609 +v -0.0268476 -0.0154341 -0.143763 +v -0.0268476 0.0154341 -0.143763 +v 0.0268476 -0.0154341 -0.143763 +v 0.0268476 0.0154341 -0.143763 +v 0.0268476 -0.0154341 0.143763 +v 0.0268476 0.0154341 0.143763 +v -0.0268476 -0.0154341 0.143763 +v -0.0268476 0.0154341 0.143763 +v -0.0103778 -0.0289768 -0.143842 +v -0.0103778 0.0289768 -0.143842 +v 0.0103778 -0.0289768 -0.143842 +v 0.0103778 0.0289768 -0.143842 +v 0.0103778 -0.0289768 0.143842 +v 0.0103778 0.0289768 0.143842 +v -0.0103778 -0.0289768 0.143842 +v -0.0103778 0.0289768 0.143842 +v -0.0298519 -0.0070506 -0.143886 +v -0.0298519 0.0070506 -0.143886 +v 0.0298519 -0.0070506 -0.143886 +v 0.0298519 0.0070506 -0.143886 +v 0.0298519 -0.0070506 0.143886 +v 0.0298519 0.0070506 0.143886 +v -0.0298519 -0.0070506 0.143886 +v -0.0298519 0.0070506 0.143886 +v -0.0157065 -0.0263271 -0.143893 +v -0.0157065 0.0263271 -0.143893 +v 0.0157065 -0.0263271 -0.143893 +v 0.0157065 0.0263271 -0.143893 +v 0.0157065 -0.0263271 0.143893 +v 0.0157065 0.0263271 0.143893 +v -0.0157065 -0.0263271 0.143893 +v -0.0157065 0.0263271 0.143893 +v -0.0299265 -0.00423388 -0.144071 +v -0.0299265 0.00423388 -0.144071 +v 0.0299265 -0.00423388 -0.144071 +v 0.0299265 0.00423388 -0.144071 +v 0.0299265 -0.00423388 0.144071 +v 0.0299265 0.00423388 0.144071 +v -0.0299265 -0.00423388 0.144071 +v -0.0299265 0.00423388 0.144071 +v -0.0240735 -0.0181947 -0.144091 +v -0.0240735 0.0181947 -0.144091 +v 0.0240735 -0.0181947 -0.144091 +v 0.0240735 0.0181947 -0.144091 +v 0.0240735 -0.0181947 0.144091 +v 0.0240735 0.0181947 0.144091 +v -0.0240735 -0.0181947 0.144091 +v -0.0240735 0.0181947 0.144091 +v -0.0184891 -0.0236447 -0.144156 +v -0.0184891 0.0236447 -0.144156 +v 0.0184891 -0.0236447 -0.144156 +v 0.0184891 0.0236447 -0.144156 +v 0.0184891 -0.0236447 0.144156 +v 0.0184891 0.0236447 0.144156 +v -0.0184891 -0.0236447 0.144156 +v -0.0184891 0.0236447 0.144156 +v -0.00779445 -0.0289768 -0.144159 +v -0.00779445 0.0289768 -0.144159 +v 0.00779445 -0.0289768 -0.144159 +v 0.00779445 0.0289768 -0.144159 +v 0.00779445 -0.0289768 0.144159 +v 0.00779445 0.0289768 0.144159 +v -0.00779445 -0.0289768 0.144159 +v -0.00779445 0.0289768 0.144159 +v -0.0299639 -0.00141188 -0.144163 +v -0.0299639 0.00141188 -0.144163 +v 0.0299639 -0.00141188 -0.144163 +v 0.0299639 0.00141188 -0.144163 +v 0.0299639 -0.00141188 0.144163 +v 0.0299639 0.00141188 0.144163 +v -0.0299639 -0.00141188 0.144163 +v -0.0299639 0.00141188 0.144163 +v -0.0212827 -0.0209327 -0.144222 +v -0.0212827 0.0209327 -0.144222 +v 0.0212827 -0.0209327 -0.144222 +v 0.0212827 0.0209327 -0.144222 +v 0.0212827 -0.0209327 0.144222 +v 0.0212827 0.0209327 0.144222 +v -0.0212827 -0.0209327 0.144222 +v -0.0212827 0.0209327 0.144222 +v -0.0270171 -0.0126542 -0.144229 +v -0.0270171 0.0126542 -0.144229 +v 0.0270171 -0.0126542 -0.144229 +v 0.0270171 0.0126542 -0.144229 +v 0.0270171 -0.0126542 0.144229 +v 0.0270171 0.0126542 0.144229 +v -0.0270171 -0.0126542 0.144229 +v -0.0270171 0.0126542 0.144229 +v -0.00520158 -0.0289768 -0.144386 +v -0.00520158 0.0289768 -0.144386 +v 0.00520158 -0.0289768 -0.144386 +v 0.00520158 0.0289768 -0.144386 +v 0.00520158 -0.0289768 0.144386 +v 0.00520158 0.0289768 0.144386 +v -0.00520158 -0.0289768 0.144386 +v -0.00520158 0.0289768 0.144386 +v -0.0131181 -0.0263271 -0.144396 +v -0.0131181 0.0263271 -0.144396 +v 0.0131181 -0.0263271 -0.144396 +v 0.0131181 0.0263271 -0.144396 +v 0.0131181 -0.0263271 0.144396 +v 0.0131181 0.0263271 0.144396 +v -0.0131181 -0.0263271 0.144396 +v -0.0131181 0.0263271 0.144396 +v -0.00260238 -0.0289768 -0.144522 +v -0.00260238 0.0289768 -0.144522 +v 0.00260238 -0.0289768 -0.144522 +v 0.00260238 0.0289768 -0.144522 +v 0.00260238 -0.0289768 0.144522 +v 0.00260238 0.0289768 0.144522 +v -0.00260238 -0.0289768 0.144522 +v -0.00260238 0.0289768 0.144522 +v -1.36979e-17 -0.0289768 -0.144568 +v -1.36979e-17 0.0289768 -0.144568 +v 4.56596e-18 -0.0289768 0.144568 +v 4.56596e-18 0.0289768 0.144568 +v -0.0271531 -0.00985854 -0.144602 +v -0.0271531 0.00985854 -0.144602 +v 0.0271531 -0.00985854 -0.144602 +v 0.0271531 0.00985854 -0.144602 +v 0.0271531 -0.00985854 0.144602 +v 0.0271531 0.00985854 0.144602 +v -0.0271531 -0.00985854 0.144602 +v -0.0271531 0.00985854 0.144602 +v -0.0242569 -0.0154341 -0.144655 +v -0.0242569 0.0154341 -0.144655 +v 0.0242569 -0.0154341 -0.144655 +v 0.0242569 0.0154341 -0.144655 +v 0.0242569 -0.0154341 0.144655 +v 0.0242569 0.0154341 0.144655 +v -0.0242569 -0.0154341 0.144655 +v -0.0242569 0.0154341 0.144655 +v -0.0158899 -0.0236447 -0.144756 +v -0.0158899 0.0236447 -0.144756 +v 0.0158899 -0.0236447 -0.144756 +v 0.0158899 0.0236447 -0.144756 +v 0.0158899 -0.0236447 0.144756 +v 0.0158899 0.0236447 0.144756 +v -0.0158899 -0.0236447 0.144756 +v -0.0158899 0.0236447 0.144756 +v -0.0105137 -0.0263271 -0.144809 +v -0.0105137 0.0263271 -0.144809 +v 0.0105137 -0.0263271 -0.144809 +v 0.0105137 0.0263271 -0.144809 +v 0.0105137 -0.0263271 0.144809 +v 0.0105137 0.0263271 0.144809 +v -0.0105137 -0.0263271 0.144809 +v -0.0105137 0.0263271 0.144809 +v -0.0272551 -0.0070506 -0.144883 +v -0.0272551 0.0070506 -0.144883 +v 0.0272551 -0.0070506 -0.144883 +v 0.0272551 0.0070506 -0.144883 +v 0.0272551 -0.0070506 0.144883 +v 0.0272551 0.0070506 0.144883 +v -0.0272551 -0.0070506 0.144883 +v -0.0272551 0.0070506 0.144883 +v -0.0214731 -0.0181947 -0.144886 +v -0.0214731 0.0181947 -0.144886 +v 0.0214731 -0.0181947 -0.144886 +v 0.0214731 0.0181947 -0.144886 +v 0.0214731 -0.0181947 0.144886 +v 0.0214731 0.0181947 0.144886 +v -0.0214731 -0.0181947 0.144886 +v -0.0214731 0.0181947 0.144886 +v -0.0186795 -0.0209327 -0.144919 +v -0.0186795 0.0209327 -0.144919 +v 0.0186795 -0.0209327 -0.144919 +v 0.0186795 0.0209327 -0.144919 +v 0.0186795 -0.0209327 0.144919 +v 0.0186795 0.0209327 0.144919 +v -0.0186795 -0.0209327 0.144919 +v -0.0186795 0.0209327 0.144919 +v -0.0273233 -0.00423388 -0.14507 +v -0.0273233 0.00423388 -0.14507 +v 0.0273233 -0.00423388 -0.14507 +v 0.0273233 0.00423388 -0.14507 +v 0.0273233 -0.00423388 0.14507 +v 0.0273233 0.00423388 0.14507 +v -0.0273233 -0.00423388 0.14507 +v -0.0273233 0.00423388 0.14507 +v -0.0244101 -0.0126542 -0.145127 +v -0.0244101 0.0126542 -0.145127 +v 0.0244101 -0.0126542 -0.145127 +v 0.0244101 0.0126542 -0.145127 +v 0.0244101 -0.0126542 0.145127 +v 0.0244101 0.0126542 0.145127 +v -0.0244101 -0.0126542 0.145127 +v -0.0244101 0.0126542 0.145127 +v -0.00789649 -0.0263271 -0.14513 +v -0.00789649 0.0263271 -0.14513 +v 0.00789649 -0.0263271 -0.14513 +v 0.00789649 0.0263271 -0.14513 +v 0.00789649 -0.0263271 0.14513 +v 0.00789649 0.0263271 0.14513 +v -0.00789649 -0.0263271 0.14513 +v -0.00789649 0.0263271 0.14513 +v -0.0273573 -0.00141188 -0.145164 +v -0.0273573 0.00141188 -0.145164 +v 0.0273573 -0.00141188 -0.145164 +v 0.0273573 0.00141188 -0.145164 +v 0.0273573 -0.00141188 0.145164 +v 0.0273573 0.00141188 0.145164 +v -0.0273573 -0.00141188 0.145164 +v -0.0273573 0.00141188 0.145164 +v -0.0132712 -0.0236447 -0.145265 +v -0.0132712 0.0236447 -0.145265 +v 0.0132712 -0.0236447 -0.145265 +v 0.0132712 0.0236447 -0.145265 +v 0.0132712 -0.0236447 0.145265 +v 0.0132712 0.0236447 0.145265 +v -0.0132712 -0.0236447 0.145265 +v -0.0132712 0.0236447 0.145265 +v -0.00526968 -0.0263271 -0.14536 +v -0.00526968 0.0263271 -0.14536 +v 0.00526968 -0.0263271 -0.14536 +v 0.00526968 0.0263271 -0.14536 +v 0.00526968 -0.0263271 0.14536 +v 0.00526968 0.0263271 0.14536 +v -0.00526968 -0.0263271 0.14536 +v -0.00526968 0.0263271 0.14536 +v -0.0216367 -0.0154341 -0.145456 +v -0.0216367 0.0154341 -0.145456 +v 0.0216367 -0.0154341 -0.145456 +v 0.0216367 0.0154341 -0.145456 +v 0.0216367 -0.0154341 0.145456 +v 0.0216367 0.0154341 0.145456 +v -0.0216367 -0.0154341 0.145456 +v -0.0216367 0.0154341 0.145456 +v -0.00263644 -0.0263271 -0.145498 +v -0.00263644 0.0263271 -0.145498 +v 0.00263644 -0.0263271 -0.145498 +v 0.00263644 0.0263271 -0.145498 +v 0.00263644 -0.0263271 0.145498 +v 0.00263644 0.0263271 0.145498 +v -0.00263644 -0.0263271 0.145498 +v -0.00263644 0.0263271 0.145498 +v -0.0245329 -0.00985854 -0.145505 +v -0.0245329 0.00985854 -0.145505 +v 0.0245329 -0.00985854 -0.145505 +v 0.0245329 0.00985854 -0.145505 +v 0.0245329 -0.00985854 0.145505 +v 0.0245329 0.00985854 0.145505 +v -0.0245329 -0.00985854 0.145505 +v -0.0245329 0.00985854 0.145505 +v -0.0160534 -0.0209327 -0.145526 +v -0.0160534 0.0209327 -0.145526 +v 0.0160534 -0.0209327 -0.145526 +v 0.0160534 0.0209327 -0.145526 +v 0.0160534 -0.0209327 0.145526 +v 0.0160534 0.0209327 0.145526 +v -0.0160534 -0.0209327 0.145526 +v -0.0160534 0.0209327 0.145526 +v -1.38772e-17 -0.0263271 -0.145544 +v -1.38772e-17 0.0263271 -0.145544 +v 4.62573e-18 -0.0263271 0.145544 +v 4.62573e-18 0.0263271 0.145544 +v -0.0188466 -0.0181947 -0.145589 +v -0.0188466 0.0181947 -0.145589 +v 0.0188466 -0.0181947 -0.145589 +v 0.0188466 0.0181947 -0.145589 +v 0.0188466 -0.0181947 0.145589 +v 0.0188466 0.0181947 0.145589 +v -0.0188466 -0.0181947 0.145589 +v -0.0188466 0.0181947 0.145589 +v -0.0106364 -0.0236447 -0.145682 +v -0.0106364 0.0236447 -0.145682 +v 0.0106364 -0.0236447 -0.145682 +v 0.0106364 0.0236447 -0.145682 +v 0.0106364 -0.0236447 0.145682 +v 0.0106364 0.0236447 0.145682 +v -0.0106364 -0.0236447 0.145682 +v -0.0106364 0.0236447 0.145682 +v -0.0246252 -0.0070506 -0.145788 +v -0.0246252 0.0070506 -0.145788 +v 0.0246252 -0.0070506 -0.145788 +v 0.0246252 0.0070506 -0.145788 +v 0.0246252 -0.0070506 0.145788 +v 0.0246252 0.0070506 0.145788 +v -0.0246252 -0.0070506 0.145788 +v -0.0246252 0.0070506 0.145788 +v -0.0217734 -0.0126542 -0.145933 +v -0.0217734 0.0126542 -0.145933 +v 0.0217734 -0.0126542 -0.145933 +v 0.0217734 0.0126542 -0.145933 +v 0.0217734 -0.0126542 0.145933 +v 0.0217734 0.0126542 0.145933 +v -0.0217734 -0.0126542 0.145933 +v -0.0217734 0.0126542 0.145933 +v -0.0246867 -0.00423388 -0.145978 +v -0.0246867 0.00423388 -0.145978 +v 0.0246867 -0.00423388 -0.145978 +v 0.0246867 0.00423388 -0.145978 +v 0.0246867 -0.00423388 0.145978 +v 0.0246867 0.00423388 0.145978 +v -0.0246867 -0.00423388 0.145978 +v -0.0246867 0.00423388 0.145978 +v -0.00798869 -0.0236447 -0.146007 +v -0.00798869 0.0236447 -0.146007 +v 0.00798869 -0.0236447 -0.146007 +v 0.00798869 0.0236447 -0.146007 +v 0.00798869 -0.0236447 0.146007 +v 0.00798869 0.0236447 0.146007 +v -0.00798869 -0.0236447 0.146007 +v -0.00798869 0.0236447 0.146007 +v -0.0134079 -0.0209327 -0.14604 +v -0.0134079 0.0209327 -0.14604 +v 0.0134079 -0.0209327 -0.14604 +v 0.0134079 0.0209327 -0.14604 +v 0.0134079 -0.0209327 0.14604 +v 0.0134079 0.0209327 0.14604 +v -0.0134079 -0.0209327 0.14604 +v -0.0134079 0.0209327 0.14604 +v -0.0247175 -0.00141188 -0.146073 +v -0.0247175 0.00141188 -0.146073 +v 0.0247175 -0.00141188 -0.146073 +v 0.0247175 0.00141188 -0.146073 +v 0.0247175 -0.00141188 0.146073 +v 0.0247175 0.00141188 0.146073 +v -0.0247175 -0.00141188 0.146073 +v -0.0247175 0.00141188 0.146073 +v -0.0189902 -0.0154341 -0.146165 +v -0.0189902 0.0154341 -0.146165 +v 0.0189902 -0.0154341 -0.146165 +v 0.0189902 0.0154341 -0.146165 +v 0.0189902 -0.0154341 0.146165 +v 0.0189902 0.0154341 0.146165 +v -0.0189902 -0.0154341 0.146165 +v -0.0189902 0.0154341 0.146165 +v -0.016197 -0.0181947 -0.146201 +v -0.016197 0.0181947 -0.146201 +v 0.016197 -0.0181947 -0.146201 +v 0.016197 0.0181947 -0.146201 +v 0.016197 -0.0181947 0.146201 +v 0.016197 0.0181947 0.146201 +v -0.016197 -0.0181947 0.146201 +v -0.016197 0.0181947 0.146201 +v -0.00533121 -0.0236447 -0.14624 +v -0.00533121 0.0236447 -0.14624 +v 0.00533121 -0.0236447 -0.14624 +v 0.00533121 0.0236447 -0.14624 +v 0.00533121 -0.0236447 0.14624 +v 0.00533121 0.0236447 0.14624 +v -0.00533121 -0.0236447 0.14624 +v -0.00533121 0.0236447 0.14624 +v -0.0218829 -0.00985854 -0.146315 +v -0.0218829 0.00985854 -0.146315 +v 0.0218829 -0.00985854 -0.146315 +v 0.0218829 0.00985854 -0.146315 +v 0.0218829 -0.00985854 0.146315 +v 0.0218829 0.00985854 0.146315 +v -0.0218829 -0.00985854 0.146315 +v -0.0218829 0.00985854 0.146315 +v -0.00266723 -0.0236447 -0.146379 +v -0.00266723 0.0236447 -0.146379 +v 0.00266723 -0.0236447 -0.146379 +v 0.00266723 0.0236447 -0.146379 +v 0.00266723 -0.0236447 0.146379 +v 0.00266723 0.0236447 0.146379 +v -0.00266723 -0.0236447 0.146379 +v -0.00266723 0.0236447 0.146379 +v -1.40392e-17 -0.0236447 -0.146426 +v -1.40392e-17 0.0236447 -0.146426 +v 4.67974e-18 -0.0236447 0.146426 +v 4.67974e-18 0.0236447 0.146426 +v -0.0107459 -0.0209327 -0.146461 +v -0.0107459 0.0209327 -0.146461 +v 0.0107459 -0.0209327 -0.146461 +v 0.0107459 0.0209327 -0.146461 +v 0.0107459 -0.0209327 0.146461 +v 0.0107459 0.0209327 0.146461 +v -0.0107459 -0.0209327 0.146461 +v -0.0107459 0.0209327 0.146461 +v -0.0219652 -0.0070506 -0.146602 +v -0.0219652 0.0070506 -0.146602 +v 0.0219652 -0.0070506 -0.146602 +v 0.0219652 0.0070506 -0.146602 +v 0.0219652 -0.0070506 0.146602 +v 0.0219652 0.0070506 0.146602 +v -0.0219652 -0.0070506 0.146602 +v -0.0219652 0.0070506 0.146602 +v -0.0191101 -0.0126542 -0.146646 +v -0.0191101 0.0126542 -0.146646 +v 0.0191101 -0.0126542 -0.146646 +v 0.0191101 0.0126542 -0.146646 +v 0.0191101 -0.0126542 0.146646 +v 0.0191101 0.0126542 0.146646 +v -0.0191101 -0.0126542 0.146646 +v -0.0191101 0.0126542 0.146646 +v -0.0135278 -0.0181947 -0.14672 +v -0.0135278 0.0181947 -0.14672 +v 0.0135278 -0.0181947 -0.14672 +v 0.0135278 0.0181947 -0.14672 +v 0.0135278 -0.0181947 0.14672 +v 0.0135278 0.0181947 0.14672 +v -0.0135278 -0.0181947 0.14672 +v -0.0135278 0.0181947 0.14672 +v -0.0163205 -0.0154341 -0.146782 +v -0.0163205 0.0154341 -0.146782 +v 0.0163205 -0.0154341 -0.146782 +v 0.0163205 0.0154341 -0.146782 +v 0.0163205 -0.0154341 0.146782 +v 0.0163205 0.0154341 0.146782 +v -0.0163205 -0.0154341 0.146782 +v -0.0163205 0.0154341 0.146782 +v -0.00807094 -0.0209327 -0.14679 +v -0.00807094 0.0209327 -0.14679 +v 0.00807094 -0.0209327 -0.14679 +v 0.00807094 0.0209327 -0.14679 +v 0.00807094 -0.0209327 0.14679 +v 0.00807094 0.0209327 0.14679 +v -0.00807094 -0.0209327 0.14679 +v -0.00807094 0.0209327 0.14679 +v -0.0220201 -0.00423388 -0.146793 +v -0.0220201 0.00423388 -0.146793 +v 0.0220201 -0.00423388 -0.146793 +v 0.0220201 0.00423388 -0.146793 +v 0.0220201 -0.00423388 0.146793 +v 0.0220201 0.00423388 0.146793 +v -0.0220201 -0.00423388 0.146793 +v -0.0220201 0.00423388 0.146793 +v -0.0220476 -0.00141188 -0.146889 +v -0.0220476 0.00141188 -0.146889 +v 0.0220476 -0.00141188 -0.146889 +v 0.0220476 0.00141188 -0.146889 +v 0.0220476 -0.00141188 0.146889 +v 0.0220476 0.00141188 0.146889 +v -0.0220476 -0.00141188 0.146889 +v -0.0220476 0.00141188 0.146889 +v -0.00538609 -0.0209327 -0.147025 +v -0.00538609 0.0209327 -0.147025 +v 0.00538609 -0.0209327 -0.147025 +v 0.00538609 0.0209327 -0.147025 +v 0.00538609 -0.0209327 0.147025 +v 0.00538609 0.0209327 0.147025 +v -0.00538609 -0.0209327 0.147025 +v -0.00538609 0.0209327 0.147025 +v -0.0192062 -0.00985854 -0.147032 +v -0.0192062 0.00985854 -0.147032 +v 0.0192062 -0.00985854 -0.147032 +v 0.0192062 0.00985854 -0.147032 +v 0.0192062 -0.00985854 0.147032 +v 0.0192062 0.00985854 0.147032 +v -0.0192062 -0.00985854 0.147032 +v -0.0192062 0.00985854 0.147032 +v -0.0108421 -0.0181947 -0.147145 +v -0.0108421 0.0181947 -0.147145 +v 0.0108421 -0.0181947 -0.147145 +v 0.0108421 0.0181947 -0.147145 +v 0.0108421 -0.0181947 0.147145 +v 0.0108421 0.0181947 0.147145 +v -0.0108421 -0.0181947 0.147145 +v -0.0108421 0.0181947 0.147145 +v -0.00269469 -0.0209327 -0.147166 +v -0.00269469 0.0209327 -0.147166 +v 0.00269469 -0.0209327 -0.147166 +v 0.00269469 0.0209327 -0.147166 +v 0.00269469 -0.0209327 0.147166 +v 0.00269469 0.0209327 0.147166 +v -0.00269469 -0.0209327 0.147166 +v -0.00269469 0.0209327 0.147166 +v -1.41838e-17 -0.0209327 -0.147213 +v -1.41838e-17 0.0209327 -0.147213 +v 4.72792e-18 -0.0209327 0.147213 +v 4.72792e-18 0.0209327 0.147213 +v -0.0164235 -0.0126542 -0.147267 +v -0.0164235 0.0126542 -0.147267 +v 0.0164235 -0.0126542 -0.147267 +v 0.0164235 0.0126542 -0.147267 +v 0.0164235 -0.0126542 0.147267 +v 0.0164235 0.0126542 0.147267 +v -0.0164235 -0.0126542 0.147267 +v -0.0164235 0.0126542 0.147267 +v -0.0136309 -0.0154341 -0.147305 +v -0.0136309 0.0154341 -0.147305 +v 0.0136309 -0.0154341 -0.147305 +v 0.0136309 0.0154341 -0.147305 +v 0.0136309 -0.0154341 0.147305 +v 0.0136309 0.0154341 0.147305 +v -0.0136309 -0.0154341 0.147305 +v -0.0136309 0.0154341 0.147305 +v -0.0192784 -0.0070506 -0.147322 +v -0.0192784 0.0070506 -0.147322 +v 0.0192784 -0.0070506 -0.147322 +v 0.0192784 0.0070506 -0.147322 +v 0.0192784 -0.0070506 0.147322 +v 0.0192784 0.0070506 0.147322 +v -0.0192784 -0.0070506 0.147322 +v -0.0192784 0.0070506 0.147322 +v -0.00814313 -0.0181947 -0.147477 +v -0.00814313 0.0181947 -0.147477 +v 0.00814313 -0.0181947 -0.147477 +v 0.00814313 0.0181947 -0.147477 +v 0.00814313 -0.0181947 0.147477 +v 0.00814313 0.0181947 0.147477 +v -0.00814313 -0.0181947 0.147477 +v -0.00814313 0.0181947 0.147477 +v -0.0193266 -0.00423388 -0.147515 +v -0.0193266 0.00423388 -0.147515 +v 0.0193266 -0.00423388 -0.147515 +v 0.0193266 0.00423388 -0.147515 +v 0.0193266 -0.00423388 0.147515 +v 0.0193266 0.00423388 0.147515 +v -0.0193266 -0.00423388 0.147515 +v -0.0193266 0.00423388 0.147515 +v -0.0193507 -0.00141188 -0.147612 +v -0.0193507 0.00141188 -0.147612 +v 0.0193507 -0.00141188 -0.147612 +v 0.0193507 0.00141188 -0.147612 +v 0.0193507 -0.00141188 0.147612 +v 0.0193507 0.00141188 0.147612 +v -0.0193507 -0.00141188 0.147612 +v -0.0193507 0.00141188 0.147612 +v -0.0165062 -0.00985854 -0.147655 +v -0.0165062 0.00985854 -0.147655 +v 0.0165062 -0.00985854 -0.147655 +v 0.0165062 0.00985854 -0.147655 +v 0.0165062 -0.00985854 0.147655 +v 0.0165062 0.00985854 0.147655 +v -0.0165062 -0.00985854 0.147655 +v -0.0165062 0.00985854 0.147655 +v -0.00543427 -0.0181947 -0.147714 +v -0.00543427 0.0181947 -0.147714 +v 0.00543427 -0.0181947 -0.147714 +v 0.00543427 0.0181947 -0.147714 +v 0.00543427 -0.0181947 0.147714 +v 0.00543427 0.0181947 0.147714 +v -0.00543427 -0.0181947 0.147714 +v -0.00543427 0.0181947 0.147714 +v -0.0109247 -0.0154341 -0.147733 +v -0.0109247 0.0154341 -0.147733 +v 0.0109247 -0.0154341 -0.147733 +v 0.0109247 0.0154341 -0.147733 +v 0.0109247 -0.0154341 0.147733 +v 0.0109247 0.0154341 0.147733 +v -0.0109247 -0.0154341 0.147733 +v -0.0109247 0.0154341 0.147733 +v -0.013717 -0.0126542 -0.147793 +v -0.013717 0.0126542 -0.147793 +v 0.013717 -0.0126542 -0.147793 +v 0.013717 0.0126542 -0.147793 +v 0.013717 -0.0126542 0.147793 +v 0.013717 0.0126542 0.147793 +v -0.013717 -0.0126542 0.147793 +v -0.013717 0.0126542 0.147793 +v -0.00271879 -0.0181947 -0.147856 +v -0.00271879 0.0181947 -0.147856 +v 0.00271879 -0.0181947 -0.147856 +v 0.00271879 0.0181947 -0.147856 +v 0.00271879 -0.0181947 0.147856 +v 0.00271879 0.0181947 0.147856 +v -0.00271879 -0.0181947 0.147856 +v -0.00271879 0.0181947 0.147856 +v -1.43106e-17 -0.0181947 -0.147903 +v -1.43106e-17 0.0181947 -0.147903 +v 4.77021e-18 -0.0181947 0.147903 +v 4.77021e-18 0.0181947 0.147903 +v -0.0165682 -0.0070506 -0.147947 +v -0.0165682 0.0070506 -0.147947 +v 0.0165682 -0.0070506 -0.147947 +v 0.0165682 0.0070506 -0.147947 +v 0.0165682 -0.0070506 0.147947 +v 0.0165682 0.0070506 0.147947 +v -0.0165682 -0.0070506 0.147947 +v -0.0165682 0.0070506 0.147947 +v -0.00820518 -0.0154341 -0.148067 +v -0.00820518 0.0154341 -0.148067 +v 0.00820518 -0.0154341 -0.148067 +v 0.00820518 0.0154341 -0.148067 +v 0.00820518 -0.0154341 0.148067 +v 0.00820518 0.0154341 0.148067 +v -0.00820518 -0.0154341 0.148067 +v -0.00820518 0.0154341 0.148067 +v -0.0166096 -0.00423388 -0.148142 +v -0.0166096 0.00423388 -0.148142 +v 0.0166096 -0.00423388 -0.148142 +v 0.0166096 0.00423388 -0.148142 +v 0.0166096 -0.00423388 0.148142 +v 0.0166096 0.00423388 0.148142 +v -0.0166096 -0.00423388 0.148142 +v -0.0166096 0.00423388 0.148142 +v -0.013786 -0.00985854 -0.148184 +v -0.013786 0.00985854 -0.148184 +v 0.013786 -0.00985854 -0.148184 +v 0.013786 0.00985854 -0.148184 +v 0.013786 -0.00985854 0.148184 +v 0.013786 0.00985854 0.148184 +v -0.013786 -0.00985854 0.148184 +v -0.013786 0.00985854 0.148184 +v -0.0109937 -0.0126542 -0.148224 +v -0.0109937 0.0126542 -0.148224 +v 0.0109937 -0.0126542 -0.148224 +v 0.0109937 0.0126542 -0.148224 +v 0.0109937 -0.0126542 0.148224 +v 0.0109937 0.0126542 0.148224 +v -0.0109937 -0.0126542 0.148224 +v -0.0109937 0.0126542 0.148224 +v -0.0166303 -0.00141188 -0.14824 +v -0.0166303 0.00141188 -0.14824 +v 0.0166303 -0.00141188 -0.14824 +v 0.0166303 0.00141188 -0.14824 +v 0.0166303 -0.00141188 0.14824 +v 0.0166303 0.00141188 0.14824 +v -0.0166303 -0.00141188 0.14824 +v -0.0166303 0.00141188 0.14824 +v -0.00547568 -0.0154341 -0.148306 +v -0.00547568 0.0154341 -0.148306 +v 0.00547568 -0.0154341 -0.148306 +v 0.00547568 0.0154341 -0.148306 +v 0.00547568 -0.0154341 0.148306 +v 0.00547568 0.0154341 0.148306 +v -0.00547568 -0.0154341 0.148306 +v -0.00547568 0.0154341 0.148306 +v -0.00273951 -0.0154341 -0.148449 +v -0.00273951 0.0154341 -0.148449 +v 0.00273951 -0.0154341 -0.148449 +v 0.00273951 0.0154341 -0.148449 +v 0.00273951 -0.0154341 0.148449 +v 0.00273951 0.0154341 0.148449 +v -0.00273951 -0.0154341 0.148449 +v -0.00273951 0.0154341 0.148449 +v -0.0138378 -0.0070506 -0.148478 +v -0.0138378 0.0070506 -0.148478 +v 0.0138378 -0.0070506 -0.148478 +v 0.0138378 0.0070506 -0.148478 +v 0.0138378 -0.0070506 0.148478 +v 0.0138378 0.0070506 0.148478 +v -0.0138378 -0.0070506 0.148478 +v -0.0138378 0.0070506 0.148478 +v -1.44197e-17 -0.0154341 -0.148497 +v -1.44197e-17 0.0154341 -0.148497 +v 4.80656e-18 -0.0154341 0.148497 +v 4.80656e-18 0.0154341 0.148497 +v -0.008257 -0.0126542 -0.14856 +v -0.008257 0.0126542 -0.14856 +v 0.008257 -0.0126542 -0.14856 +v 0.008257 0.0126542 -0.14856 +v 0.008257 -0.0126542 0.14856 +v 0.008257 0.0126542 0.14856 +v -0.008257 -0.0126542 0.14856 +v -0.008257 0.0126542 0.14856 +v -0.011049 -0.00985854 -0.148618 +v -0.011049 0.00985854 -0.148618 +v 0.011049 -0.00985854 -0.148618 +v 0.011049 0.00985854 -0.148618 +v 0.011049 -0.00985854 0.148618 +v 0.011049 0.00985854 0.148618 +v -0.011049 -0.00985854 0.148618 +v -0.011049 0.00985854 0.148618 +v -0.0138724 -0.00423388 -0.148674 +v -0.0138724 0.00423388 -0.148674 +v 0.0138724 -0.00423388 -0.148674 +v 0.0138724 0.00423388 -0.148674 +v 0.0138724 -0.00423388 0.148674 +v 0.0138724 0.00423388 0.148674 +v -0.0138724 -0.00423388 0.148674 +v -0.0138724 0.00423388 0.148674 +v -0.0138897 -0.00141188 -0.148772 +v -0.0138897 0.00141188 -0.148772 +v 0.0138897 -0.00141188 -0.148772 +v 0.0138897 0.00141188 -0.148772 +v 0.0138897 -0.00141188 0.148772 +v 0.0138897 0.00141188 0.148772 +v -0.0138897 -0.00141188 0.148772 +v -0.0138897 0.00141188 0.148772 +v -0.00551026 -0.0126542 -0.1488 +v -0.00551026 0.0126542 -0.1488 +v 0.00551026 -0.0126542 -0.1488 +v 0.00551026 0.0126542 -0.1488 +v 0.00551026 -0.0126542 0.1488 +v 0.00551026 0.0126542 0.1488 +v -0.00551026 -0.0126542 0.1488 +v -0.00551026 0.0126542 0.1488 +v -0.0110905 -0.0070506 -0.148913 +v -0.0110905 0.0070506 -0.148913 +v 0.0110905 -0.0070506 -0.148913 +v 0.0110905 0.0070506 -0.148913 +v 0.0110905 -0.0070506 0.148913 +v 0.0110905 0.0070506 0.148913 +v -0.0110905 -0.0070506 0.148913 +v -0.0110905 0.0070506 0.148913 +v -0.00275681 -0.0126542 -0.148945 +v -0.00275681 0.0126542 -0.148945 +v 0.00275681 -0.0126542 -0.148945 +v 0.00275681 0.0126542 -0.148945 +v 0.00275681 -0.0126542 0.148945 +v 0.00275681 0.0126542 0.148945 +v -0.00275681 -0.0126542 0.148945 +v -0.00275681 0.0126542 0.148945 +v -0.00829854 -0.00985854 -0.148955 +v -0.00829854 0.00985854 -0.148955 +v 0.00829854 -0.00985854 -0.148955 +v 0.00829854 0.00985854 -0.148955 +v 0.00829854 -0.00985854 0.148955 +v 0.00829854 0.00985854 0.148955 +v -0.00829854 -0.00985854 0.148955 +v -0.00829854 0.00985854 0.148955 +v -1.45108e-17 -0.0126542 -0.148993 +v -1.45108e-17 0.0126542 -0.148993 +v 4.83692e-18 -0.0126542 0.148993 +v 4.83692e-18 0.0126542 0.148993 +v -0.0111182 -0.00423388 -0.14911 +v -0.0111182 0.00423388 -0.14911 +v 0.0111182 -0.00423388 -0.14911 +v 0.0111182 0.00423388 -0.14911 +v 0.0111182 -0.00423388 0.14911 +v 0.0111182 0.00423388 0.14911 +v -0.0111182 -0.00423388 0.14911 +v -0.0111182 0.00423388 0.14911 +v -0.00553798 -0.00985854 -0.149197 +v -0.00553798 0.00985854 -0.149197 +v 0.00553798 -0.00985854 -0.149197 +v 0.00553798 0.00985854 -0.149197 +v 0.00553798 -0.00985854 0.149197 +v 0.00553798 0.00985854 0.149197 +v -0.00553798 -0.00985854 0.149197 +v -0.00553798 0.00985854 0.149197 +v -0.0111321 -0.00141188 -0.149209 +v -0.0111321 0.00141188 -0.149209 +v 0.0111321 -0.00141188 -0.149209 +v 0.0111321 0.00141188 -0.149209 +v 0.0111321 -0.00141188 0.149209 +v 0.0111321 0.00141188 0.149209 +v -0.0111321 -0.00141188 0.149209 +v -0.0111321 0.00141188 0.149209 +v -0.00832974 -0.0070506 -0.149252 +v -0.00832974 0.0070506 -0.149252 +v 0.00832974 -0.0070506 -0.149252 +v 0.00832974 0.0070506 -0.149252 +v 0.00832974 -0.0070506 0.149252 +v 0.00832974 0.0070506 0.149252 +v -0.00832974 -0.0070506 0.149252 +v -0.00832974 0.0070506 0.149252 +v -0.00277068 -0.00985854 -0.149342 +v -0.00277068 0.00985854 -0.149342 +v 0.00277068 -0.00985854 -0.149342 +v 0.00277068 0.00985854 -0.149342 +v 0.00277068 -0.00985854 0.149342 +v 0.00277068 0.00985854 0.149342 +v -0.00277068 -0.00985854 0.149342 +v -0.00277068 0.00985854 0.149342 +v -1.45838e-17 -0.00985854 -0.14939 +v -1.45838e-17 0.00985854 -0.14939 +v 4.86125e-18 -0.00985854 0.14939 +v 4.86125e-18 0.00985854 0.14939 +v -0.00835056 -0.00423388 -0.14945 +v -0.00835056 0.00423388 -0.14945 +v 0.00835056 -0.00423388 -0.14945 +v 0.00835056 0.00423388 -0.14945 +v 0.00835056 -0.00423388 0.14945 +v 0.00835056 0.00423388 0.14945 +v -0.00835056 -0.00423388 0.14945 +v -0.00835056 0.00423388 0.14945 +v -0.0055588 -0.0070506 -0.149495 +v -0.0055588 0.0070506 -0.149495 +v 0.0055588 -0.0070506 -0.149495 +v 0.0055588 0.0070506 -0.149495 +v 0.0055588 -0.0070506 0.149495 +v 0.0055588 0.0070506 0.149495 +v -0.0055588 -0.0070506 0.149495 +v -0.0055588 0.0070506 0.149495 +v -0.00836097 -0.00141188 -0.149549 +v -0.00836097 0.00141188 -0.149549 +v 0.00836097 -0.00141188 -0.149549 +v 0.00836097 0.00141188 -0.149549 +v 0.00836097 -0.00141188 0.149549 +v 0.00836097 0.00141188 0.149549 +v -0.00836097 -0.00141188 0.149549 +v -0.00836097 0.00141188 0.149549 +v -0.0027811 -0.0070506 -0.14964 +v -0.0027811 0.0070506 -0.14964 +v 0.0027811 -0.0070506 -0.14964 +v 0.0027811 0.0070506 -0.14964 +v 0.0027811 -0.0070506 0.14964 +v 0.0027811 0.0070506 0.14964 +v -0.0027811 -0.0070506 0.14964 +v -0.0027811 0.0070506 0.14964 +v -1.46386e-17 -0.0070506 -0.149689 +v -1.46386e-17 0.0070506 -0.149689 +v 4.87953e-18 -0.0070506 0.149689 +v 4.87953e-18 0.0070506 0.149689 +v -0.0055727 -0.00423388 -0.149693 +v -0.0055727 0.00423388 -0.149693 +v 0.0055727 -0.00423388 -0.149693 +v 0.0055727 0.00423388 -0.149693 +v 0.0055727 -0.00423388 0.149693 +v 0.0055727 0.00423388 0.149693 +v -0.0055727 -0.00423388 0.149693 +v -0.0055727 0.00423388 0.149693 +v -0.00557965 -0.00141188 -0.149793 +v -0.00557965 0.00141188 -0.149793 +v 0.00557965 -0.00141188 -0.149793 +v 0.00557965 0.00141188 -0.149793 +v 0.00557965 -0.00141188 0.149793 +v 0.00557965 0.00141188 0.149793 +v -0.00557965 -0.00141188 0.149793 +v -0.00557965 0.00141188 0.149793 +v -0.00278805 -0.00423388 -0.149839 +v -0.00278805 0.00423388 -0.149839 +v 0.00278805 -0.00423388 -0.149839 +v 0.00278805 0.00423388 -0.149839 +v 0.00278805 -0.00423388 0.149839 +v 0.00278805 0.00423388 0.149839 +v -0.00278805 -0.00423388 0.149839 +v -0.00278805 0.00423388 0.149839 +v -1.46752e-17 -0.00423388 -0.149888 +v -1.46752e-17 0.00423388 -0.149888 +v 4.89172e-18 -0.00423388 0.149888 +v 4.89172e-18 0.00423388 0.149888 +v -0.00279152 -0.00141188 -0.149939 +v -0.00279152 0.00141188 -0.149939 +v 0.00279152 -0.00141188 -0.149939 +v 0.00279152 0.00141188 -0.149939 +v 0.00279152 -0.00141188 0.149939 +v 0.00279152 0.00141188 0.149939 +v -0.00279152 -0.00141188 0.149939 +v -0.00279152 0.00141188 0.149939 +v -1.46935e-17 -0.00141188 -0.149988 +v -1.46935e-17 0.00141188 -0.149988 +v 4.89782e-18 -0.00141188 0.149988 +v 4.89782e-18 0.00141188 0.149988 +# </points> + +# <faces count="32080"> +g zone0 +f 633 753 369 +f 753 769 369 +f 769 777 369 +f 777 801 369 +f 801 825 369 +f 825 841 369 +f 841 873 369 +f 873 889 369 +f 889 921 369 +f 921 945 369 +f 945 977 369 +f 977 993 369 +f 993 1041 369 +f 1041 1057 369 +f 1057 1089 369 +f 1089 1121 369 +f 1121 1161 369 +f 1161 1177 369 +f 1177 1193 369 +f 1193 1241 369 +f 1241 1257 369 +f 1257 1305 369 +f 1305 1321 369 +f 1321 1353 369 +f 1353 1385 369 +f 1385 1401 369 +f 1401 1417 369 +f 1417 1473 369 +f 1473 1497 369 +f 1497 1521 369 +f 1521 1553 369 +f 1553 1569 369 +f 1569 1585 369 +f 1585 1617 369 +f 1617 1649 369 +f 1649 1665 369 +f 1665 1681 369 +f 1681 1721 369 +f 1721 1737 369 +f 1737 1753 369 +f 1753 1785 369 +f 1785 1793 369 +f 1793 1801 369 +f 1801 1825 369 +f 1825 1833 369 +f 1833 1827 369 +f 1827 1803 369 +f 1803 1795 369 +f 1795 1787 369 +f 1787 1755 369 +f 1755 1739 369 +f 1739 1723 369 +f 1723 1683 369 +f 1683 1667 369 +f 1667 1651 369 +f 1651 1619 369 +f 1619 1587 369 +f 1587 1571 369 +f 1571 1555 369 +f 1555 1523 369 +f 1523 1499 369 +f 1499 1475 369 +f 1475 1419 369 +f 1419 1403 369 +f 1403 1387 369 +f 1387 1355 369 +f 1355 1323 369 +f 1323 1307 369 +f 1307 1259 369 +f 1259 1243 369 +f 1243 1195 369 +f 1195 1179 369 +f 1179 1163 369 +f 1163 1123 369 +f 1123 1091 369 +f 1091 1059 369 +f 1059 1043 369 +f 1043 995 369 +f 995 979 369 +f 979 947 369 +f 947 923 369 +f 923 891 369 +f 891 875 369 +f 875 843 369 +f 843 827 369 +f 827 803 369 +f 803 779 369 +f 779 771 369 +f 771 755 369 +f 755 635 369 +f 634 370 754 +f 754 370 770 +f 770 370 778 +f 778 370 802 +f 802 370 826 +f 826 370 842 +f 842 370 874 +f 874 370 890 +f 890 370 922 +f 922 370 946 +f 946 370 978 +f 978 370 994 +f 994 370 1042 +f 1042 370 1058 +f 1058 370 1090 +f 1090 370 1122 +f 1122 370 1162 +f 1162 370 1178 +f 1178 370 1194 +f 1194 370 1242 +f 1242 370 1258 +f 1258 370 1306 +f 1306 370 1322 +f 1322 370 1354 +f 1354 370 1386 +f 1386 370 1402 +f 1402 370 1418 +f 1418 370 1474 +f 1474 370 1498 +f 1498 370 1522 +f 1522 370 1554 +f 1554 370 1570 +f 1570 370 1586 +f 1586 370 1618 +f 1618 370 1650 +f 1650 370 1666 +f 1666 370 1682 +f 1682 370 1722 +f 1722 370 1738 +f 1738 370 1754 +f 1754 370 1786 +f 1786 370 1794 +f 1794 370 1802 +f 1802 370 1826 +f 1826 370 1834 +f 1834 370 1828 +f 1828 370 1804 +f 1804 370 1796 +f 1796 370 1788 +f 1788 370 1756 +f 1756 370 1740 +f 1740 370 1724 +f 1724 370 1684 +f 1684 370 1668 +f 1668 370 1652 +f 1652 370 1620 +f 1620 370 1588 +f 1588 370 1572 +f 1572 370 1556 +f 1556 370 1524 +f 1524 370 1500 +f 1500 370 1476 +f 1476 370 1420 +f 1420 370 1404 +f 1404 370 1388 +f 1388 370 1356 +f 1356 370 1324 +f 1324 370 1308 +f 1308 370 1260 +f 1260 370 1244 +f 1244 370 1196 +f 1196 370 1180 +f 1180 370 1164 +f 1164 370 1124 +f 1124 370 1092 +f 1092 370 1060 +f 1060 370 1044 +f 1044 370 996 +f 996 370 980 +f 980 370 948 +f 948 370 924 +f 924 370 892 +f 892 370 876 +f 876 370 844 +f 844 370 828 +f 828 370 804 +f 804 370 780 +f 780 370 772 +f 772 370 756 +f 756 370 636 +f 633 225 761 +f 633 761 753 +f 225 705 785 +f 225 785 761 +f 705 465 793 +f 705 793 785 +f 465 137 817 +f 465 817 793 +f 137 17 833 +f 137 833 817 +f 17 169 865 +f 17 865 833 +f 169 657 881 +f 169 881 865 +f 657 553 913 +f 657 913 881 +f 553 113 937 +f 553 937 913 +f 113 281 969 +f 113 969 937 +f 281 361 985 +f 281 985 969 +f 361 689 1033 +f 361 1033 985 +f 689 249 1049 +f 689 1049 1033 +f 249 273 1081 +f 249 1081 1049 +f 273 289 1113 +f 273 1113 1081 +f 289 409 1153 +f 289 1153 1113 +f 409 665 1169 +f 409 1169 1153 +f 665 345 1185 +f 665 1185 1169 +f 345 161 1233 +f 345 1233 1185 +f 161 545 1249 +f 161 1249 1233 +f 545 9 1297 +f 545 1297 1249 +f 9 153 1313 +f 9 1313 1297 +f 153 377 1345 +f 153 1345 1313 +f 377 41 1377 +f 377 1377 1345 +f 41 145 1393 +f 41 1393 1377 +f 145 385 1409 +f 145 1409 1393 +f 385 537 1457 +f 385 1457 1409 +f 537 313 1489 +f 537 1489 1457 +f 313 697 1505 +f 313 1505 1489 +f 697 57 1545 +f 697 1545 1505 +f 57 337 1561 +f 57 1561 1545 +f 337 641 1577 +f 337 1577 1561 +f 641 257 1593 +f 641 1593 1577 +f 257 265 1625 +f 257 1625 1593 +f 265 625 1657 +f 265 1657 1625 +f 625 97 1673 +f 625 1673 1657 +f 97 457 1689 +f 97 1689 1673 +f 457 649 1713 +f 457 1713 1689 +f 649 729 1729 +f 649 1729 1713 +f 729 105 1745 +f 729 1745 1729 +f 105 353 1761 +f 105 1761 1745 +f 353 433 1769 +f 353 1769 1761 +f 433 49 1777 +f 433 1777 1769 +f 49 50 1778 +f 49 1778 1777 +f 50 434 1770 +f 50 1770 1778 +f 434 354 1762 +f 434 1762 1770 +f 354 106 1746 +f 354 1746 1762 +f 106 730 1730 +f 106 1730 1746 +f 730 650 1714 +f 730 1714 1730 +f 650 458 1690 +f 650 1690 1714 +f 458 98 1674 +f 458 1674 1690 +f 98 626 1658 +f 98 1658 1674 +f 626 266 1626 +f 626 1626 1658 +f 266 258 1594 +f 266 1594 1626 +f 258 642 1578 +f 258 1578 1594 +f 642 338 1562 +f 642 1562 1578 +f 338 58 1546 +f 338 1546 1562 +f 58 698 1506 +f 58 1506 1546 +f 698 314 1490 +f 698 1490 1506 +f 314 538 1458 +f 314 1458 1490 +f 538 386 1410 +f 538 1410 1458 +f 386 146 1394 +f 386 1394 1410 +f 146 42 1378 +f 146 1378 1394 +f 42 378 1346 +f 42 1346 1378 +f 378 154 1314 +f 378 1314 1346 +f 154 10 1298 +f 154 1298 1314 +f 10 546 1250 +f 10 1250 1298 +f 546 162 1234 +f 546 1234 1250 +f 162 346 1186 +f 162 1186 1234 +f 346 666 1170 +f 346 1170 1186 +f 666 410 1154 +f 666 1154 1170 +f 410 290 1114 +f 410 1114 1154 +f 290 274 1082 +f 290 1082 1114 +f 274 250 1050 +f 274 1050 1082 +f 250 690 1034 +f 250 1034 1050 +f 690 362 986 +f 690 986 1034 +f 362 282 970 +f 362 970 986 +f 282 114 938 +f 282 938 970 +f 114 554 914 +f 114 914 938 +f 554 658 882 +f 554 882 914 +f 658 170 866 +f 658 866 882 +f 170 18 834 +f 170 834 866 +f 18 138 818 +f 18 818 834 +f 138 466 794 +f 138 794 818 +f 466 706 786 +f 466 786 794 +f 706 226 762 +f 706 762 786 +f 226 634 754 +f 226 754 762 +f 753 761 809 +f 753 809 769 +f 761 785 857 +f 761 857 809 +f 785 793 897 +f 785 897 857 +f 793 817 953 +f 793 953 897 +f 817 833 1001 +f 817 1001 953 +f 833 865 1065 +f 833 1065 1001 +f 865 881 1129 +f 865 1129 1065 +f 881 913 1201 +f 881 1201 1129 +f 913 937 1265 +f 913 1265 1201 +f 937 969 1361 +f 937 1361 1265 +f 969 985 1425 +f 969 1425 1361 +f 985 1033 1529 +f 985 1529 1425 +f 1033 1049 1633 +f 1033 1633 1529 +f 1049 1081 1809 +f 1049 1809 1633 +f 1081 1113 1869 +f 1081 1869 1809 +f 1113 1153 1901 +f 1113 1901 1869 +f 1153 1169 1933 +f 1153 1933 1901 +f 1169 1185 1981 +f 1169 1981 1933 +f 1185 1233 2021 +f 1185 2021 1981 +f 1233 1249 2053 +f 1233 2053 2021 +f 1249 1297 2101 +f 1249 2101 2053 +f 1297 1313 2133 +f 1297 2133 2101 +f 1313 1345 2165 +f 1313 2165 2133 +f 1345 1377 2213 +f 1345 2213 2165 +f 1377 1393 2245 +f 1377 2245 2213 +f 1393 1409 2277 +f 1393 2277 2245 +f 1409 1457 2325 +f 1409 2325 2277 +f 1457 1489 2365 +f 1457 2365 2325 +f 1489 1505 2397 +f 1489 2397 2365 +f 1505 1545 2429 +f 1505 2429 2397 +f 1545 1561 2461 +f 1545 2461 2429 +f 1561 1577 2477 +f 1561 2477 2461 +f 1577 1593 2517 +f 1577 2517 2477 +f 1593 1625 2557 +f 1593 2557 2517 +f 1625 1657 2589 +f 1625 2589 2557 +f 1657 1673 2605 +f 1657 2605 2589 +f 1673 1689 2645 +f 1673 2645 2605 +f 1689 1713 2669 +f 1689 2669 2645 +f 1713 1729 2677 +f 1713 2677 2669 +f 1729 1745 2693 +f 1729 2693 2677 +f 1745 1761 2709 +f 1745 2709 2693 +f 1761 1769 2717 +f 1761 2717 2709 +f 1769 1777 2725 +f 1769 2725 2717 +f 1777 1778 2726 +f 1777 2726 2725 +f 1778 1770 2718 +f 1778 2718 2726 +f 1770 1762 2710 +f 1770 2710 2718 +f 1762 1746 2694 +f 1762 2694 2710 +f 1746 1730 2678 +f 1746 2678 2694 +f 1730 1714 2670 +f 1730 2670 2678 +f 1714 1690 2646 +f 1714 2646 2670 +f 1690 1674 2606 +f 1690 2606 2646 +f 1674 1658 2590 +f 1674 2590 2606 +f 1658 1626 2558 +f 1658 2558 2590 +f 1626 1594 2518 +f 1626 2518 2558 +f 1594 1578 2478 +f 1594 2478 2518 +f 1578 1562 2462 +f 1578 2462 2478 +f 1562 1546 2430 +f 1562 2430 2462 +f 1546 1506 2398 +f 1546 2398 2430 +f 1506 1490 2366 +f 1506 2366 2398 +f 1490 1458 2326 +f 1490 2326 2366 +f 1458 1410 2278 +f 1458 2278 2326 +f 1410 1394 2246 +f 1410 2246 2278 +f 1394 1378 2214 +f 1394 2214 2246 +f 1378 1346 2166 +f 1378 2166 2214 +f 1346 1314 2134 +f 1346 2134 2166 +f 1314 1298 2102 +f 1314 2102 2134 +f 1298 1250 2054 +f 1298 2054 2102 +f 1250 1234 2022 +f 1250 2022 2054 +f 1234 1186 1982 +f 1234 1982 2022 +f 1186 1170 1934 +f 1186 1934 1982 +f 1170 1154 1902 +f 1170 1902 1934 +f 1154 1114 1870 +f 1154 1870 1902 +f 1114 1082 1810 +f 1114 1810 1870 +f 1082 1050 1634 +f 1082 1634 1810 +f 1050 1034 1530 +f 1050 1530 1634 +f 1034 986 1426 +f 1034 1426 1530 +f 986 970 1362 +f 986 1362 1426 +f 970 938 1266 +f 970 1266 1362 +f 938 914 1202 +f 938 1202 1266 +f 914 882 1130 +f 914 1130 1202 +f 882 866 1066 +f 882 1066 1130 +f 866 834 1002 +f 866 1002 1066 +f 834 818 954 +f 834 954 1002 +f 818 794 898 +f 818 898 954 +f 794 786 858 +f 794 858 898 +f 786 762 810 +f 786 810 858 +f 762 754 770 +f 762 770 810 +f 769 809 849 +f 769 849 777 +f 809 857 929 +f 809 929 849 +f 857 897 1017 +f 857 1017 929 +f 897 953 1097 +f 897 1097 1017 +f 953 1001 1217 +f 953 1217 1097 +f 1001 1065 1329 +f 1001 1329 1217 +f 1065 1129 1441 +f 1065 1441 1329 +f 1129 1201 1601 +f 1129 1601 1441 +f 1201 1265 1837 +f 1201 1837 1601 +f 1265 1361 1917 +f 1265 1917 1837 +f 1361 1425 1965 +f 1361 1965 1917 +f 1425 1529 2037 +f 1425 2037 1965 +f 1529 1633 2117 +f 1529 2117 2037 +f 1633 1809 2197 +f 1633 2197 2117 +f 1809 1869 2261 +f 1809 2261 2197 +f 1869 1901 2341 +f 1869 2341 2261 +f 1901 1933 2437 +f 1901 2437 2341 +f 1933 1981 2509 +f 1933 2509 2437 +f 1981 2021 2637 +f 1981 2637 2509 +f 2021 2053 2785 +f 2021 2785 2637 +f 2053 2101 2833 +f 2053 2833 2785 +f 2101 2133 2881 +f 2101 2881 2833 +f 2133 2165 2921 +f 2133 2921 2881 +f 2165 2213 2969 +f 2165 2969 2921 +f 2213 2245 3017 +f 2213 3017 2969 +f 2245 2277 3049 +f 2245 3049 3017 +f 2277 2325 3113 +f 2277 3113 3049 +f 2325 2365 3145 +f 2325 3145 3113 +f 2365 2397 3177 +f 2365 3177 3145 +f 2397 2429 3225 +f 2397 3225 3177 +f 2429 2461 3273 +f 2429 3273 3225 +f 2461 2477 3305 +f 2461 3305 3273 +f 2477 2517 3329 +f 2477 3329 3305 +f 2517 2557 3393 +f 2517 3393 3329 +f 2557 2589 3425 +f 2557 3425 3393 +f 2589 2605 3441 +f 2589 3441 3425 +f 2605 2645 3473 +f 2605 3473 3441 +f 2645 2669 3489 +f 2645 3489 3473 +f 2669 2677 3513 +f 2669 3513 3489 +f 2677 2693 3529 +f 2677 3529 3513 +f 2693 2709 3545 +f 2693 3545 3529 +f 2709 2717 3569 +f 2709 3569 3545 +f 2717 2725 3585 +f 2717 3585 3569 +f 2725 2726 3586 +f 2725 3586 3585 +f 2726 2718 3570 +f 2726 3570 3586 +f 2718 2710 3546 +f 2718 3546 3570 +f 2710 2694 3530 +f 2710 3530 3546 +f 2694 2678 3514 +f 2694 3514 3530 +f 2678 2670 3490 +f 2678 3490 3514 +f 2670 2646 3474 +f 2670 3474 3490 +f 2646 2606 3442 +f 2646 3442 3474 +f 2606 2590 3426 +f 2606 3426 3442 +f 2590 2558 3394 +f 2590 3394 3426 +f 2558 2518 3330 +f 2558 3330 3394 +f 2518 2478 3306 +f 2518 3306 3330 +f 2478 2462 3274 +f 2478 3274 3306 +f 2462 2430 3226 +f 2462 3226 3274 +f 2430 2398 3178 +f 2430 3178 3226 +f 2398 2366 3146 +f 2398 3146 3178 +f 2366 2326 3114 +f 2366 3114 3146 +f 2326 2278 3050 +f 2326 3050 3114 +f 2278 2246 3018 +f 2278 3018 3050 +f 2246 2214 2970 +f 2246 2970 3018 +f 2214 2166 2922 +f 2214 2922 2970 +f 2166 2134 2882 +f 2166 2882 2922 +f 2134 2102 2834 +f 2134 2834 2882 +f 2102 2054 2786 +f 2102 2786 2834 +f 2054 2022 2638 +f 2054 2638 2786 +f 2022 1982 2510 +f 2022 2510 2638 +f 1982 1934 2438 +f 1982 2438 2510 +f 1934 1902 2342 +f 1934 2342 2438 +f 1902 1870 2262 +f 1902 2262 2342 +f 1870 1810 2198 +f 1870 2198 2262 +f 1810 1634 2118 +f 1810 2118 2198 +f 1634 1530 2038 +f 1634 2038 2118 +f 1530 1426 1966 +f 1530 1966 2038 +f 1426 1362 1918 +f 1426 1918 1966 +f 1362 1266 1838 +f 1362 1838 1918 +f 1266 1202 1602 +f 1266 1602 1838 +f 1202 1130 1442 +f 1202 1442 1602 +f 1130 1066 1330 +f 1130 1330 1442 +f 1066 1002 1218 +f 1066 1218 1330 +f 1002 954 1098 +f 1002 1098 1218 +f 954 898 1018 +f 954 1018 1098 +f 898 858 930 +f 898 930 1018 +f 858 810 850 +f 858 850 930 +f 810 770 778 +f 810 778 850 +f 777 849 905 +f 777 905 801 +f 849 929 1025 +f 849 1025 905 +f 929 1017 1145 +f 929 1145 1025 +f 1017 1097 1281 +f 1017 1281 1145 +f 1097 1217 1465 +f 1097 1465 1281 +f 1217 1329 1697 +f 1217 1697 1465 +f 1329 1441 1885 +f 1329 1885 1697 +f 1441 1601 1997 +f 1441 1997 1885 +f 1601 1837 2069 +f 1601 2069 1997 +f 1837 1917 2181 +f 1837 2181 2069 +f 1917 1965 2293 +f 1917 2293 2181 +f 1965 2037 2413 +f 1965 2413 2293 +f 2037 2117 2565 +f 2037 2565 2413 +f 2117 2197 2749 +f 2117 2749 2565 +f 2197 2261 2849 +f 2197 2849 2749 +f 2261 2341 2937 +f 2261 2937 2849 +f 2341 2437 3001 +f 2341 3001 2937 +f 2437 2509 3097 +f 2437 3097 3001 +f 2509 2637 3161 +f 2509 3161 3097 +f 2637 2785 3257 +f 2637 3257 3161 +f 2785 2833 3337 +f 2785 3337 3257 +f 2833 2881 3449 +f 2833 3449 3337 +f 2881 2921 3553 +f 2881 3553 3449 +f 2921 2969 3685 +f 2921 3685 3553 +f 2969 3017 3717 +f 2969 3717 3685 +f 3017 3049 3781 +f 3017 3781 3717 +f 3049 3113 3813 +f 3049 3813 3781 +f 3113 3145 3885 +f 3113 3885 3813 +f 3145 3177 3901 +f 3145 3901 3885 +f 3177 3225 3981 +f 3177 3981 3901 +f 3225 3273 3997 +f 3225 3997 3981 +f 3273 3305 4045 +f 3273 4045 3997 +f 3305 3329 4109 +f 3305 4109 4045 +f 3329 3393 4157 +f 3329 4157 4109 +f 3393 3425 4173 +f 3393 4173 4157 +f 3425 3441 4197 +f 3425 4197 4173 +f 3441 3473 4237 +f 3441 4237 4197 +f 3473 3489 4253 +f 3473 4253 4237 +f 3489 3513 4293 +f 3489 4293 4253 +f 3513 3529 4317 +f 3513 4317 4293 +f 3529 3545 4341 +f 3529 4341 4317 +f 3545 3569 4349 +f 3545 4349 4341 +f 3569 3585 4357 +f 3569 4357 4349 +f 3585 3586 4358 +f 3585 4358 4357 +f 3586 3570 4350 +f 3586 4350 4358 +f 3570 3546 4342 +f 3570 4342 4350 +f 3546 3530 4318 +f 3546 4318 4342 +f 3530 3514 4294 +f 3530 4294 4318 +f 3514 3490 4254 +f 3514 4254 4294 +f 3490 3474 4238 +f 3490 4238 4254 +f 3474 3442 4198 +f 3474 4198 4238 +f 3442 3426 4174 +f 3442 4174 4198 +f 3426 3394 4158 +f 3426 4158 4174 +f 3394 3330 4110 +f 3394 4110 4158 +f 3330 3306 4046 +f 3330 4046 4110 +f 3306 3274 3998 +f 3306 3998 4046 +f 3274 3226 3982 +f 3274 3982 3998 +f 3226 3178 3902 +f 3226 3902 3982 +f 3178 3146 3886 +f 3178 3886 3902 +f 3146 3114 3814 +f 3146 3814 3886 +f 3114 3050 3782 +f 3114 3782 3814 +f 3050 3018 3718 +f 3050 3718 3782 +f 3018 2970 3686 +f 3018 3686 3718 +f 2970 2922 3554 +f 2970 3554 3686 +f 2922 2882 3450 +f 2922 3450 3554 +f 2882 2834 3338 +f 2882 3338 3450 +f 2834 2786 3258 +f 2834 3258 3338 +f 2786 2638 3162 +f 2786 3162 3258 +f 2638 2510 3098 +f 2638 3098 3162 +f 2510 2438 3002 +f 2510 3002 3098 +f 2438 2342 2938 +f 2438 2938 3002 +f 2342 2262 2850 +f 2342 2850 2938 +f 2262 2198 2750 +f 2262 2750 2850 +f 2198 2118 2566 +f 2198 2566 2750 +f 2118 2038 2414 +f 2118 2414 2566 +f 2038 1966 2294 +f 2038 2294 2414 +f 1966 1918 2182 +f 1966 2182 2294 +f 1918 1838 2070 +f 1918 2070 2182 +f 1838 1602 1998 +f 1838 1998 2070 +f 1602 1442 1886 +f 1602 1886 1998 +f 1442 1330 1698 +f 1442 1698 1886 +f 1330 1218 1466 +f 1330 1466 1698 +f 1218 1098 1282 +f 1218 1282 1466 +f 1098 1018 1146 +f 1098 1146 1282 +f 1018 930 1026 +f 1018 1026 1146 +f 930 850 906 +f 930 906 1026 +f 850 778 802 +f 850 802 906 +f 801 905 961 +f 801 961 825 +f 905 1025 1105 +f 905 1105 961 +f 1025 1145 1289 +f 1025 1289 1105 +f 1145 1281 1513 +f 1145 1513 1289 +f 1281 1465 1853 +f 1281 1853 1513 +f 1465 1697 1949 +f 1465 1949 1853 +f 1697 1885 2085 +f 1697 2085 1949 +f 1885 1997 2229 +f 1885 2229 2085 +f 1997 2069 2381 +f 1997 2381 2229 +f 2069 2181 2541 +f 2069 2541 2381 +f 2181 2293 2801 +f 2181 2801 2541 +f 2293 2413 2905 +f 2293 2905 2801 +f 2413 2565 2985 +f 2413 2985 2905 +f 2565 2749 3129 +f 2565 3129 2985 +f 2749 2849 3233 +f 2749 3233 3129 +f 2849 2937 3361 +f 2849 3361 3233 +f 2937 3001 3497 +f 2937 3497 3361 +f 3001 3097 3701 +f 3001 3701 3497 +f 3097 3161 3749 +f 3097 3749 3701 +f 3161 3257 3845 +f 3161 3845 3749 +f 3257 3337 3909 +f 3257 3909 3845 +f 3337 3449 4005 +f 3337 4005 3909 +f 3449 3553 4117 +f 3449 4117 4005 +f 3553 3685 4189 +f 3553 4189 4117 +f 3685 3717 4309 +f 3685 4309 4189 +f 3717 3781 4449 +f 3717 4449 4309 +f 3781 3813 4489 +f 3781 4489 4449 +f 3813 3885 4553 +f 3813 4553 4489 +f 3885 3901 4601 +f 3885 4601 4553 +f 3901 3981 4649 +f 3901 4649 4601 +f 3981 3997 4721 +f 3981 4721 4649 +f 3997 4045 4745 +f 3997 4745 4721 +f 4045 4109 4777 +f 4045 4777 4745 +f 4109 4157 4841 +f 4109 4841 4777 +f 4157 4173 4889 +f 4157 4889 4841 +f 4173 4197 4929 +f 4173 4929 4889 +f 4197 4237 4945 +f 4197 4945 4929 +f 4237 4253 4993 +f 4237 4993 4945 +f 4253 4293 5009 +f 4253 5009 4993 +f 4293 4317 5033 +f 4293 5033 5009 +f 4317 4341 5065 +f 4317 5065 5033 +f 4341 4349 5073 +f 4341 5073 5065 +f 4349 4357 5081 +f 4349 5081 5073 +f 4357 4358 5082 +f 4357 5082 5081 +f 4358 4350 5074 +f 4358 5074 5082 +f 4350 4342 5066 +f 4350 5066 5074 +f 4342 4318 5034 +f 4342 5034 5066 +f 4318 4294 5010 +f 4318 5010 5034 +f 4294 4254 4994 +f 4294 4994 5010 +f 4254 4238 4946 +f 4254 4946 4994 +f 4238 4198 4930 +f 4238 4930 4946 +f 4198 4174 4890 +f 4198 4890 4930 +f 4174 4158 4842 +f 4174 4842 4890 +f 4158 4110 4778 +f 4158 4778 4842 +f 4110 4046 4746 +f 4110 4746 4778 +f 4046 3998 4722 +f 4046 4722 4746 +f 3998 3982 4650 +f 3998 4650 4722 +f 3982 3902 4602 +f 3982 4602 4650 +f 3902 3886 4554 +f 3902 4554 4602 +f 3886 3814 4490 +f 3886 4490 4554 +f 3814 3782 4450 +f 3814 4450 4490 +f 3782 3718 4310 +f 3782 4310 4450 +f 3718 3686 4190 +f 3718 4190 4310 +f 3686 3554 4118 +f 3686 4118 4190 +f 3554 3450 4006 +f 3554 4006 4118 +f 3450 3338 3910 +f 3450 3910 4006 +f 3338 3258 3846 +f 3338 3846 3910 +f 3258 3162 3750 +f 3258 3750 3846 +f 3162 3098 3702 +f 3162 3702 3750 +f 3098 3002 3498 +f 3098 3498 3702 +f 3002 2938 3362 +f 3002 3362 3498 +f 2938 2850 3234 +f 2938 3234 3362 +f 2850 2750 3130 +f 2850 3130 3234 +f 2750 2566 2986 +f 2750 2986 3130 +f 2566 2414 2906 +f 2566 2906 2986 +f 2414 2294 2802 +f 2414 2802 2906 +f 2294 2182 2542 +f 2294 2542 2802 +f 2182 2070 2382 +f 2182 2382 2542 +f 2070 1998 2230 +f 2070 2230 2382 +f 1998 1886 2086 +f 1998 2086 2230 +f 1886 1698 1950 +f 1886 1950 2086 +f 1698 1466 1854 +f 1698 1854 1950 +f 1466 1282 1514 +f 1466 1514 1854 +f 1282 1146 1290 +f 1282 1290 1514 +f 1146 1026 1106 +f 1146 1106 1290 +f 1026 906 962 +f 1026 962 1106 +f 906 802 826 +f 906 826 962 +f 825 961 1009 +f 825 1009 841 +f 961 1105 1225 +f 961 1225 1009 +f 1105 1289 1481 +f 1105 1481 1225 +f 1289 1513 1861 +f 1289 1861 1481 +f 1513 1853 2013 +f 1513 2013 1861 +f 1853 1949 2149 +f 1853 2149 2013 +f 1949 2085 2309 +f 1949 2309 2149 +f 2085 2229 2493 +f 2085 2493 2309 +f 2229 2381 2817 +f 2229 2817 2493 +f 2381 2541 2953 +f 2381 2953 2817 +f 2541 2801 3057 +f 2541 3057 2953 +f 2801 2905 3209 +f 2801 3209 3057 +f 2905 2985 3377 +f 2905 3377 3209 +f 2985 3129 3609 +f 2985 3609 3377 +f 3129 3233 3733 +f 3129 3733 3609 +f 3233 3361 3853 +f 3233 3853 3733 +f 3361 3497 3965 +f 3361 3965 3853 +f 3497 3701 4061 +f 3497 4061 3965 +f 3701 3749 4213 +f 3701 4213 4061 +f 3749 3845 4405 +f 3749 4405 4213 +f 3845 3909 4505 +f 3845 4505 4405 +f 3909 4005 4585 +f 3909 4585 4505 +f 4005 4117 4673 +f 4005 4673 4585 +f 4117 4189 4761 +f 4117 4761 4673 +f 4189 4309 4857 +f 4189 4857 4761 +f 4309 4449 4953 +f 4309 4953 4857 +f 4449 4489 5089 +f 4449 5089 4953 +f 4489 4553 5173 +f 4489 5173 5089 +f 4553 4601 5237 +f 4553 5237 5173 +f 4601 4649 5301 +f 4601 5301 5237 +f 4649 4721 5349 +f 4649 5349 5301 +f 4721 4745 5381 +f 4721 5381 5349 +f 4745 4777 5477 +f 4745 5477 5381 +f 4777 4841 5501 +f 4777 5501 5477 +f 4841 4889 5533 +f 4841 5533 5501 +f 4889 4929 5589 +f 4889 5589 5533 +f 4929 4945 5621 +f 4929 5621 5589 +f 4945 4993 5661 +f 4945 5661 5621 +f 4993 5009 5669 +f 4993 5669 5661 +f 5009 5033 5701 +f 5009 5701 5669 +f 5033 5065 5741 +f 5033 5741 5701 +f 5065 5073 5757 +f 5065 5757 5741 +f 5073 5081 5765 +f 5073 5765 5757 +f 5081 5082 5766 +f 5081 5766 5765 +f 5082 5074 5758 +f 5082 5758 5766 +f 5074 5066 5742 +f 5074 5742 5758 +f 5066 5034 5702 +f 5066 5702 5742 +f 5034 5010 5670 +f 5034 5670 5702 +f 5010 4994 5662 +f 5010 5662 5670 +f 4994 4946 5622 +f 4994 5622 5662 +f 4946 4930 5590 +f 4946 5590 5622 +f 4930 4890 5534 +f 4930 5534 5590 +f 4890 4842 5502 +f 4890 5502 5534 +f 4842 4778 5478 +f 4842 5478 5502 +f 4778 4746 5382 +f 4778 5382 5478 +f 4746 4722 5350 +f 4746 5350 5382 +f 4722 4650 5302 +f 4722 5302 5350 +f 4650 4602 5238 +f 4650 5238 5302 +f 4602 4554 5174 +f 4602 5174 5238 +f 4554 4490 5090 +f 4554 5090 5174 +f 4490 4450 4954 +f 4490 4954 5090 +f 4450 4310 4858 +f 4450 4858 4954 +f 4310 4190 4762 +f 4310 4762 4858 +f 4190 4118 4674 +f 4190 4674 4762 +f 4118 4006 4586 +f 4118 4586 4674 +f 4006 3910 4506 +f 4006 4506 4586 +f 3910 3846 4406 +f 3910 4406 4506 +f 3846 3750 4214 +f 3846 4214 4406 +f 3750 3702 4062 +f 3750 4062 4214 +f 3702 3498 3966 +f 3702 3966 4062 +f 3498 3362 3854 +f 3498 3854 3966 +f 3362 3234 3734 +f 3362 3734 3854 +f 3234 3130 3610 +f 3234 3610 3734 +f 3130 2986 3378 +f 3130 3378 3610 +f 2986 2906 3210 +f 2986 3210 3378 +f 2906 2802 3058 +f 2906 3058 3210 +f 2802 2542 2954 +f 2802 2954 3058 +f 2542 2382 2818 +f 2542 2818 2954 +f 2382 2230 2494 +f 2382 2494 2818 +f 2230 2086 2310 +f 2230 2310 2494 +f 2086 1950 2150 +f 2086 2150 2310 +f 1950 1854 2014 +f 1950 2014 2150 +f 1854 1514 1862 +f 1854 1862 2014 +f 1514 1290 1482 +f 1514 1482 1862 +f 1290 1106 1226 +f 1290 1226 1482 +f 1106 962 1010 +f 1106 1010 1226 +f 962 826 842 +f 962 842 1010 +f 841 1009 1073 +f 841 1073 873 +f 1009 1225 1337 +f 1009 1337 1073 +f 1225 1481 1705 +f 1225 1705 1337 +f 1481 1861 1957 +f 1481 1957 1705 +f 1861 2013 2157 +f 1861 2157 1957 +f 2013 2149 2357 +f 2013 2357 2157 +f 2149 2309 2613 +f 2149 2613 2357 +f 2309 2493 2865 +f 2309 2865 2613 +f 2493 2817 3033 +f 2493 3033 2865 +f 2817 2953 3193 +f 2817 3193 3033 +f 2953 3057 3409 +f 2953 3409 3193 +f 3057 3209 3669 +f 3057 3669 3409 +f 3209 3377 3797 +f 3209 3797 3669 +f 3377 3609 3949 +f 3377 3949 3797 +f 3609 3733 4077 +f 3609 4077 3949 +f 3733 3853 4261 +f 3733 4261 4077 +f 3853 3965 4473 +f 3853 4473 4261 +f 3965 4061 4569 +f 3965 4569 4473 +f 4061 4213 4713 +f 4061 4713 4569 +f 4213 4405 4809 +f 4213 4809 4713 +f 4405 4505 4961 +f 4405 4961 4809 +f 4505 4585 5153 +f 4505 5153 4961 +f 4585 4673 5245 +f 4585 5245 5153 +f 4673 4761 5333 +f 4673 5333 5245 +f 4761 4857 5405 +f 4761 5405 5333 +f 4857 4953 5509 +f 4857 5509 5405 +f 4953 5089 5605 +f 4953 5605 5509 +f 5089 5173 5717 +f 5089 5717 5605 +f 5173 5237 5841 +f 5173 5841 5717 +f 5237 5301 5905 +f 5237 5905 5841 +f 5301 5349 5953 +f 5301 5953 5905 +f 5349 5381 6017 +f 5349 6017 5953 +f 5381 5477 6089 +f 5381 6089 6017 +f 5477 5501 6105 +f 5477 6105 6089 +f 5501 5533 6161 +f 5501 6161 6105 +f 5533 5589 6217 +f 5533 6217 6161 +f 5589 5621 6257 +f 5589 6257 6217 +f 5621 5661 6297 +f 5621 6297 6257 +f 5661 5669 6313 +f 5661 6313 6297 +f 5669 5701 6345 +f 5669 6345 6313 +f 5701 5741 6377 +f 5701 6377 6345 +f 5741 5757 6401 +f 5741 6401 6377 +f 5757 5765 6417 +f 5757 6417 6401 +f 5765 5766 6418 +f 5765 6418 6417 +f 5766 5758 6402 +f 5766 6402 6418 +f 5758 5742 6378 +f 5758 6378 6402 +f 5742 5702 6346 +f 5742 6346 6378 +f 5702 5670 6314 +f 5702 6314 6346 +f 5670 5662 6298 +f 5670 6298 6314 +f 5662 5622 6258 +f 5662 6258 6298 +f 5622 5590 6218 +f 5622 6218 6258 +f 5590 5534 6162 +f 5590 6162 6218 +f 5534 5502 6106 +f 5534 6106 6162 +f 5502 5478 6090 +f 5502 6090 6106 +f 5478 5382 6018 +f 5478 6018 6090 +f 5382 5350 5954 +f 5382 5954 6018 +f 5350 5302 5906 +f 5350 5906 5954 +f 5302 5238 5842 +f 5302 5842 5906 +f 5238 5174 5718 +f 5238 5718 5842 +f 5174 5090 5606 +f 5174 5606 5718 +f 5090 4954 5510 +f 5090 5510 5606 +f 4954 4858 5406 +f 4954 5406 5510 +f 4858 4762 5334 +f 4858 5334 5406 +f 4762 4674 5246 +f 4762 5246 5334 +f 4674 4586 5154 +f 4674 5154 5246 +f 4586 4506 4962 +f 4586 4962 5154 +f 4506 4406 4810 +f 4506 4810 4962 +f 4406 4214 4714 +f 4406 4714 4810 +f 4214 4062 4570 +f 4214 4570 4714 +f 4062 3966 4474 +f 4062 4474 4570 +f 3966 3854 4262 +f 3966 4262 4474 +f 3854 3734 4078 +f 3854 4078 4262 +f 3734 3610 3950 +f 3734 3950 4078 +f 3610 3378 3798 +f 3610 3798 3950 +f 3378 3210 3670 +f 3378 3670 3798 +f 3210 3058 3410 +f 3210 3410 3670 +f 3058 2954 3194 +f 3058 3194 3410 +f 2954 2818 3034 +f 2954 3034 3194 +f 2818 2494 2866 +f 2818 2866 3034 +f 2494 2310 2614 +f 2494 2614 2866 +f 2310 2150 2358 +f 2310 2358 2614 +f 2150 2014 2158 +f 2150 2158 2358 +f 2014 1862 1958 +f 2014 1958 2158 +f 1862 1482 1706 +f 1862 1706 1958 +f 1482 1226 1338 +f 1482 1338 1706 +f 1226 1010 1074 +f 1226 1074 1338 +f 1010 842 874 +f 1010 874 1074 +f 873 1073 1137 +f 873 1137 889 +f 1073 1337 1449 +f 1073 1449 1137 +f 1337 1705 1893 +f 1337 1893 1449 +f 1705 1957 2093 +f 1705 2093 1893 +f 1957 2157 2317 +f 1957 2317 2093 +f 2157 2357 2621 +f 2157 2621 2317 +f 2357 2613 2897 +f 2357 2897 2621 +f 2613 2865 3081 +f 2613 3081 2897 +f 2865 3033 3289 +f 2865 3289 3081 +f 3033 3193 3561 +f 3033 3561 3289 +f 3193 3409 3765 +f 3193 3765 3561 +f 3409 3669 3933 +f 3409 3933 3765 +f 3669 3797 4141 +f 3669 4141 3933 +f 3797 3949 4365 +f 3797 4365 4141 +f 3949 4077 4537 +f 3949 4537 4365 +f 4077 4261 4665 +f 4077 4665 4537 +f 4261 4473 4817 +f 4261 4817 4665 +f 4473 4569 5001 +f 4473 5001 4817 +f 4569 4713 5205 +f 4569 5205 5001 +f 4713 4809 5317 +f 4713 5317 5205 +f 4809 4961 5453 +f 4809 5453 5317 +f 4961 5153 5549 +f 4961 5549 5453 +f 5153 5245 5709 +f 5153 5709 5549 +f 5245 5333 5889 +f 5245 5889 5709 +f 5333 5405 5961 +f 5333 5961 5889 +f 5405 5509 6065 +f 5405 6065 5961 +f 5509 5605 6137 +f 5509 6137 6065 +f 5605 5717 6249 +f 5605 6249 6137 +f 5717 5841 6361 +f 5717 6361 6249 +f 5841 5905 6477 +f 5841 6477 6361 +f 5905 5953 6541 +f 5905 6541 6477 +f 5953 6017 6621 +f 5953 6621 6541 +f 6017 6089 6661 +f 6017 6661 6621 +f 6089 6105 6701 +f 6089 6701 6661 +f 6105 6161 6741 +f 6105 6741 6701 +f 6161 6217 6821 +f 6161 6821 6741 +f 6217 6257 6853 +f 6217 6853 6821 +f 6257 6297 6877 +f 6257 6877 6853 +f 6297 6313 6909 +f 6297 6909 6877 +f 6313 6345 6957 +f 6313 6957 6909 +f 6345 6377 6973 +f 6345 6973 6957 +f 6377 6401 7005 +f 6377 7005 6973 +f 6401 6417 7013 +f 6401 7013 7005 +f 6417 6418 7014 +f 6417 7014 7013 +f 6418 6402 7006 +f 6418 7006 7014 +f 6402 6378 6974 +f 6402 6974 7006 +f 6378 6346 6958 +f 6378 6958 6974 +f 6346 6314 6910 +f 6346 6910 6958 +f 6314 6298 6878 +f 6314 6878 6910 +f 6298 6258 6854 +f 6298 6854 6878 +f 6258 6218 6822 +f 6258 6822 6854 +f 6218 6162 6742 +f 6218 6742 6822 +f 6162 6106 6702 +f 6162 6702 6742 +f 6106 6090 6662 +f 6106 6662 6702 +f 6090 6018 6622 +f 6090 6622 6662 +f 6018 5954 6542 +f 6018 6542 6622 +f 5954 5906 6478 +f 5954 6478 6542 +f 5906 5842 6362 +f 5906 6362 6478 +f 5842 5718 6250 +f 5842 6250 6362 +f 5718 5606 6138 +f 5718 6138 6250 +f 5606 5510 6066 +f 5606 6066 6138 +f 5510 5406 5962 +f 5510 5962 6066 +f 5406 5334 5890 +f 5406 5890 5962 +f 5334 5246 5710 +f 5334 5710 5890 +f 5246 5154 5550 +f 5246 5550 5710 +f 5154 4962 5454 +f 5154 5454 5550 +f 4962 4810 5318 +f 4962 5318 5454 +f 4810 4714 5206 +f 4810 5206 5318 +f 4714 4570 5002 +f 4714 5002 5206 +f 4570 4474 4818 +f 4570 4818 5002 +f 4474 4262 4666 +f 4474 4666 4818 +f 4262 4078 4538 +f 4262 4538 4666 +f 4078 3950 4366 +f 4078 4366 4538 +f 3950 3798 4142 +f 3950 4142 4366 +f 3798 3670 3934 +f 3798 3934 4142 +f 3670 3410 3766 +f 3670 3766 3934 +f 3410 3194 3562 +f 3410 3562 3766 +f 3194 3034 3290 +f 3194 3290 3562 +f 3034 2866 3082 +f 3034 3082 3290 +f 2866 2614 2898 +f 2866 2898 3082 +f 2614 2358 2622 +f 2614 2622 2898 +f 2358 2158 2318 +f 2358 2318 2622 +f 2158 1958 2094 +f 2158 2094 2318 +f 1958 1706 1894 +f 1958 1894 2094 +f 1706 1338 1450 +f 1706 1450 1894 +f 1338 1074 1138 +f 1338 1138 1450 +f 1074 874 890 +f 1074 890 1138 +f 889 1137 1209 +f 889 1209 921 +f 1137 1449 1609 +f 1137 1609 1209 +f 1449 1893 2005 +f 1449 2005 1609 +f 1893 2093 2237 +f 1893 2237 2005 +f 2093 2317 2501 +f 2093 2501 2237 +f 2317 2621 2873 +f 2317 2873 2501 +f 2621 2897 3089 +f 2621 3089 2873 +f 2897 3081 3313 +f 2897 3313 3089 +f 3081 3289 3653 +f 3081 3653 3313 +f 3289 3561 3829 +f 3289 3829 3653 +f 3561 3765 4029 +f 3561 4029 3829 +f 3765 3933 4277 +f 3765 4277 4029 +f 3933 4141 4521 +f 3933 4521 4277 +f 4141 4365 4689 +f 4141 4689 4521 +f 4365 4537 4865 +f 4365 4865 4689 +f 4537 4665 5113 +f 4537 5113 4865 +f 4665 4817 5285 +f 4665 5285 5113 +f 4817 5001 5397 +f 4817 5397 5285 +f 5001 5205 5565 +f 5001 5565 5397 +f 5205 5317 5797 +f 5205 5797 5565 +f 5317 5453 5921 +f 5317 5921 5797 +f 5453 5549 6057 +f 5453 6057 5921 +f 5549 5709 6177 +f 5549 6177 6057 +f 5709 5889 6305 +f 5709 6305 6177 +f 5889 5961 6485 +f 5889 6485 6305 +f 5961 6065 6573 +f 5961 6573 6485 +f 6065 6137 6669 +f 6065 6669 6573 +f 6137 6249 6757 +f 6137 6757 6669 +f 6249 6361 6861 +f 6249 6861 6757 +f 6361 6477 6981 +f 6361 6981 6861 +f 6477 6541 7089 +f 6477 7089 6981 +f 6541 6621 7153 +f 6541 7153 7089 +f 6621 6661 7217 +f 6621 7217 7153 +f 6661 6701 7257 +f 6661 7257 7217 +f 6701 6741 7305 +f 6701 7305 7257 +f 6741 6821 7377 +f 6741 7377 7305 +f 6821 6853 7425 +f 6821 7425 7377 +f 6853 6877 7441 +f 6853 7441 7425 +f 6877 6909 7481 +f 6877 7481 7441 +f 6909 6957 7529 +f 6909 7529 7481 +f 6957 6973 7561 +f 6957 7561 7529 +f 6973 7005 7569 +f 6973 7569 7561 +f 7005 7013 7577 +f 7005 7577 7569 +f 7013 7014 7578 +f 7013 7578 7577 +f 7014 7006 7570 +f 7014 7570 7578 +f 7006 6974 7562 +f 7006 7562 7570 +f 6974 6958 7530 +f 6974 7530 7562 +f 6958 6910 7482 +f 6958 7482 7530 +f 6910 6878 7442 +f 6910 7442 7482 +f 6878 6854 7426 +f 6878 7426 7442 +f 6854 6822 7378 +f 6854 7378 7426 +f 6822 6742 7306 +f 6822 7306 7378 +f 6742 6702 7258 +f 6742 7258 7306 +f 6702 6662 7218 +f 6702 7218 7258 +f 6662 6622 7154 +f 6662 7154 7218 +f 6622 6542 7090 +f 6622 7090 7154 +f 6542 6478 6982 +f 6542 6982 7090 +f 6478 6362 6862 +f 6478 6862 6982 +f 6362 6250 6758 +f 6362 6758 6862 +f 6250 6138 6670 +f 6250 6670 6758 +f 6138 6066 6574 +f 6138 6574 6670 +f 6066 5962 6486 +f 6066 6486 6574 +f 5962 5890 6306 +f 5962 6306 6486 +f 5890 5710 6178 +f 5890 6178 6306 +f 5710 5550 6058 +f 5710 6058 6178 +f 5550 5454 5922 +f 5550 5922 6058 +f 5454 5318 5798 +f 5454 5798 5922 +f 5318 5206 5566 +f 5318 5566 5798 +f 5206 5002 5398 +f 5206 5398 5566 +f 5002 4818 5286 +f 5002 5286 5398 +f 4818 4666 5114 +f 4818 5114 5286 +f 4666 4538 4866 +f 4666 4866 5114 +f 4538 4366 4690 +f 4538 4690 4866 +f 4366 4142 4522 +f 4366 4522 4690 +f 4142 3934 4278 +f 4142 4278 4522 +f 3934 3766 4030 +f 3934 4030 4278 +f 3766 3562 3830 +f 3766 3830 4030 +f 3562 3290 3654 +f 3562 3654 3830 +f 3290 3082 3314 +f 3290 3314 3654 +f 3082 2898 3090 +f 3082 3090 3314 +f 2898 2622 2874 +f 2898 2874 3090 +f 2622 2318 2502 +f 2622 2502 2874 +f 2318 2094 2238 +f 2318 2238 2502 +f 2094 1894 2006 +f 2094 2006 2238 +f 1894 1450 1610 +f 1894 1610 2006 +f 1450 1138 1210 +f 1450 1210 1610 +f 1138 890 922 +f 1138 922 1210 +f 921 1209 1273 +f 921 1273 945 +f 1209 1609 1845 +f 1209 1845 1273 +f 1609 2005 2077 +f 1609 2077 1845 +f 2005 2237 2389 +f 2005 2389 2077 +f 2237 2501 2825 +f 2237 2825 2389 +f 2501 2873 3041 +f 2501 3041 2825 +f 2873 3089 3297 +f 2873 3297 3041 +f 3089 3313 3661 +f 3089 3661 3297 +f 3313 3653 3877 +f 3313 3877 3661 +f 3653 3829 4085 +f 3653 4085 3877 +f 3829 4029 4413 +f 3829 4413 4085 +f 4029 4277 4609 +f 4029 4609 4413 +f 4277 4521 4785 +f 4277 4785 4609 +f 4521 4689 5041 +f 4521 5041 4785 +f 4689 4865 5269 +f 4689 5269 5041 +f 4865 5113 5445 +f 4865 5445 5269 +f 5113 5285 5637 +f 5113 5637 5445 +f 5285 5397 5873 +f 5285 5873 5637 +f 5397 5565 6001 +f 5397 6001 5873 +f 5565 5797 6145 +f 5565 6145 6001 +f 5797 5921 6337 +f 5797 6337 6145 +f 5921 6057 6525 +f 5921 6525 6337 +f 6057 6177 6645 +f 6057 6645 6525 +f 6177 6305 6765 +f 6177 6765 6645 +f 6305 6485 6893 +f 6305 6893 6765 +f 6485 6573 7081 +f 6485 7081 6893 +f 6573 6669 7201 +f 6573 7201 7081 +f 6669 6757 7273 +f 6669 7273 7201 +f 6757 6861 7369 +f 6757 7369 7273 +f 6861 6981 7449 +f 6861 7449 7369 +f 6981 7089 7585 +f 6981 7585 7449 +f 7089 7153 7677 +f 7089 7677 7585 +f 7153 7217 7757 +f 7153 7757 7677 +f 7217 7257 7789 +f 7217 7789 7757 +f 7257 7305 7845 +f 7257 7845 7789 +f 7305 7377 7917 +f 7305 7917 7845 +f 7377 7425 7973 +f 7377 7973 7917 +f 7425 7441 7997 +f 7425 7997 7973 +f 7441 7481 8013 +f 7441 8013 7997 +f 7481 7529 8061 +f 7481 8061 8013 +f 7529 7561 8101 +f 7529 8101 8061 +f 7561 7569 8125 +f 7561 8125 8101 +f 7569 7577 8133 +f 7569 8133 8125 +f 7577 7578 8134 +f 7577 8134 8133 +f 7578 7570 8126 +f 7578 8126 8134 +f 7570 7562 8102 +f 7570 8102 8126 +f 7562 7530 8062 +f 7562 8062 8102 +f 7530 7482 8014 +f 7530 8014 8062 +f 7482 7442 7998 +f 7482 7998 8014 +f 7442 7426 7974 +f 7442 7974 7998 +f 7426 7378 7918 +f 7426 7918 7974 +f 7378 7306 7846 +f 7378 7846 7918 +f 7306 7258 7790 +f 7306 7790 7846 +f 7258 7218 7758 +f 7258 7758 7790 +f 7218 7154 7678 +f 7218 7678 7758 +f 7154 7090 7586 +f 7154 7586 7678 +f 7090 6982 7450 +f 7090 7450 7586 +f 6982 6862 7370 +f 6982 7370 7450 +f 6862 6758 7274 +f 6862 7274 7370 +f 6758 6670 7202 +f 6758 7202 7274 +f 6670 6574 7082 +f 6670 7082 7202 +f 6574 6486 6894 +f 6574 6894 7082 +f 6486 6306 6766 +f 6486 6766 6894 +f 6306 6178 6646 +f 6306 6646 6766 +f 6178 6058 6526 +f 6178 6526 6646 +f 6058 5922 6338 +f 6058 6338 6526 +f 5922 5798 6146 +f 5922 6146 6338 +f 5798 5566 6002 +f 5798 6002 6146 +f 5566 5398 5874 +f 5566 5874 6002 +f 5398 5286 5638 +f 5398 5638 5874 +f 5286 5114 5446 +f 5286 5446 5638 +f 5114 4866 5270 +f 5114 5270 5446 +f 4866 4690 5042 +f 4866 5042 5270 +f 4690 4522 4786 +f 4690 4786 5042 +f 4522 4278 4610 +f 4522 4610 4786 +f 4278 4030 4414 +f 4278 4414 4610 +f 4030 3830 4086 +f 4030 4086 4414 +f 3830 3654 3878 +f 3830 3878 4086 +f 3654 3314 3662 +f 3654 3662 3878 +f 3314 3090 3298 +f 3314 3298 3662 +f 3090 2874 3042 +f 3090 3042 3298 +f 2874 2502 2826 +f 2874 2826 3042 +f 2502 2238 2390 +f 2502 2390 2826 +f 2238 2006 2078 +f 2238 2078 2390 +f 2006 1610 1846 +f 2006 1846 2078 +f 1610 1210 1274 +f 1610 1274 1846 +f 1210 922 946 +f 1210 946 1274 +f 945 1273 1369 +f 945 1369 977 +f 1273 1845 1925 +f 1273 1925 1369 +f 1845 2077 2189 +f 1845 2189 1925 +f 2077 2389 2549 +f 2077 2549 2189 +f 2389 2825 2961 +f 2389 2961 2549 +f 2825 3041 3201 +f 2825 3201 2961 +f 3041 3297 3577 +f 3041 3577 3201 +f 3297 3661 3837 +f 3297 3837 3577 +f 3661 3877 4093 +f 3661 4093 3837 +f 3877 4085 4457 +f 3877 4457 4093 +f 4085 4413 4633 +f 4085 4633 4457 +f 4413 4609 4897 +f 4413 4897 4633 +f 4609 4785 5181 +f 4609 5181 4897 +f 4785 5041 5365 +f 4785 5365 5181 +f 5041 5269 5573 +f 5041 5573 5365 +f 5269 5445 5849 +f 5269 5849 5573 +f 5445 5637 6025 +f 5445 6025 5849 +f 5637 5873 6201 +f 5637 6201 6025 +f 5873 6001 6433 +f 5873 6433 6201 +f 6001 6145 6605 +f 6001 6605 6433 +f 6145 6337 6725 +f 6145 6725 6605 +f 6337 6525 6901 +f 6337 6901 6725 +f 6525 6645 7105 +f 6525 7105 6901 +f 6645 6765 7225 +f 6645 7225 7105 +f 6765 6893 7361 +f 6765 7361 7225 +f 6893 7081 7497 +f 6893 7497 7361 +f 7081 7201 7653 +f 7081 7653 7497 +f 7201 7273 7765 +f 7201 7765 7653 +f 7273 7369 7837 +f 7273 7837 7765 +f 7369 7449 7965 +f 7369 7965 7837 +f 7449 7585 8045 +f 7449 8045 7965 +f 7585 7677 8173 +f 7585 8173 8045 +f 7677 7757 8265 +f 7677 8265 8173 +f 7757 7789 8313 +f 7757 8313 8265 +f 7789 7845 8361 +f 7789 8361 8313 +f 7845 7917 8401 +f 7845 8401 8361 +f 7917 7973 8473 +f 7917 8473 8401 +f 7973 7997 8521 +f 7973 8521 8473 +f 7997 8013 8545 +f 7997 8545 8521 +f 8013 8061 8569 +f 8013 8569 8545 +f 8061 8101 8601 +f 8061 8601 8569 +f 8101 8125 8625 +f 8101 8625 8601 +f 8125 8133 8641 +f 8125 8641 8625 +f 8133 8134 8642 +f 8133 8642 8641 +f 8134 8126 8626 +f 8134 8626 8642 +f 8126 8102 8602 +f 8126 8602 8626 +f 8102 8062 8570 +f 8102 8570 8602 +f 8062 8014 8546 +f 8062 8546 8570 +f 8014 7998 8522 +f 8014 8522 8546 +f 7998 7974 8474 +f 7998 8474 8522 +f 7974 7918 8402 +f 7974 8402 8474 +f 7918 7846 8362 +f 7918 8362 8402 +f 7846 7790 8314 +f 7846 8314 8362 +f 7790 7758 8266 +f 7790 8266 8314 +f 7758 7678 8174 +f 7758 8174 8266 +f 7678 7586 8046 +f 7678 8046 8174 +f 7586 7450 7966 +f 7586 7966 8046 +f 7450 7370 7838 +f 7450 7838 7966 +f 7370 7274 7766 +f 7370 7766 7838 +f 7274 7202 7654 +f 7274 7654 7766 +f 7202 7082 7498 +f 7202 7498 7654 +f 7082 6894 7362 +f 7082 7362 7498 +f 6894 6766 7226 +f 6894 7226 7362 +f 6766 6646 7106 +f 6766 7106 7226 +f 6646 6526 6902 +f 6646 6902 7106 +f 6526 6338 6726 +f 6526 6726 6902 +f 6338 6146 6606 +f 6338 6606 6726 +f 6146 6002 6434 +f 6146 6434 6606 +f 6002 5874 6202 +f 6002 6202 6434 +f 5874 5638 6026 +f 5874 6026 6202 +f 5638 5446 5850 +f 5638 5850 6026 +f 5446 5270 5574 +f 5446 5574 5850 +f 5270 5042 5366 +f 5270 5366 5574 +f 5042 4786 5182 +f 5042 5182 5366 +f 4786 4610 4898 +f 4786 4898 5182 +f 4610 4414 4634 +f 4610 4634 4898 +f 4414 4086 4458 +f 4414 4458 4634 +f 4086 3878 4094 +f 4086 4094 4458 +f 3878 3662 3838 +f 3878 3838 4094 +f 3662 3298 3578 +f 3662 3578 3838 +f 3298 3042 3202 +f 3298 3202 3578 +f 3042 2826 2962 +f 3042 2962 3202 +f 2826 2390 2550 +f 2826 2550 2962 +f 2390 2078 2190 +f 2390 2190 2550 +f 2078 1846 1926 +f 2078 1926 2190 +f 1846 1274 1370 +f 1846 1370 1926 +f 1274 946 978 +f 1274 978 1370 +f 977 1369 1433 +f 977 1433 993 +f 1369 1925 1973 +f 1369 1973 1433 +f 1925 2189 2301 +f 1925 2301 1973 +f 2189 2549 2809 +f 2189 2809 2301 +f 2549 2961 3065 +f 2549 3065 2809 +f 2961 3201 3417 +f 2961 3417 3065 +f 3201 3577 3773 +f 3201 3773 3417 +f 3577 3837 4037 +f 3577 4037 3773 +f 3837 4093 4421 +f 3837 4421 4037 +f 4093 4457 4641 +f 4093 4641 4421 +f 4457 4633 4921 +f 4457 4921 4641 +f 4633 4897 5221 +f 4633 5221 4921 +f 4897 5181 5429 +f 4897 5429 5221 +f 5181 5365 5677 +f 5181 5677 5429 +f 5365 5573 5937 +f 5365 5937 5677 +f 5573 5849 6113 +f 5573 6113 5937 +f 5849 6025 6393 +f 5849 6393 6113 +f 6025 6201 6597 +f 6025 6597 6393 +f 6201 6433 6749 +f 6201 6749 6597 +f 6433 6605 6989 +f 6433 6989 6749 +f 6605 6725 7177 +f 6605 7177 6989 +f 6725 6901 7297 +f 6725 7297 7177 +f 6901 7105 7465 +f 6901 7465 7297 +f 7105 7225 7669 +f 7105 7669 7465 +f 7225 7361 7797 +f 7225 7797 7669 +f 7361 7497 7925 +f 7361 7925 7797 +f 7497 7653 8069 +f 7497 8069 7925 +f 7653 7765 8209 +f 7653 8209 8069 +f 7765 7837 8321 +f 7765 8321 8209 +f 7837 7965 8393 +f 7837 8393 8321 +f 7965 8045 8529 +f 7965 8529 8393 +f 8045 8173 8609 +f 8045 8609 8529 +f 8173 8265 8733 +f 8173 8733 8609 +f 8265 8313 8805 +f 8265 8805 8733 +f 8313 8361 8853 +f 8313 8853 8805 +f 8361 8401 8909 +f 8361 8909 8853 +f 8401 8473 8933 +f 8401 8933 8909 +f 8473 8521 9013 +f 8473 9013 8933 +f 8521 8545 9045 +f 8521 9045 9013 +f 8545 8569 9077 +f 8545 9077 9045 +f 8569 8601 9101 +f 8569 9101 9077 +f 8601 8625 9117 +f 8601 9117 9101 +f 8625 8641 9133 +f 8625 9133 9117 +f 8641 8642 9134 +f 8641 9134 9133 +f 8642 8626 9118 +f 8642 9118 9134 +f 8626 8602 9102 +f 8626 9102 9118 +f 8602 8570 9078 +f 8602 9078 9102 +f 8570 8546 9046 +f 8570 9046 9078 +f 8546 8522 9014 +f 8546 9014 9046 +f 8522 8474 8934 +f 8522 8934 9014 +f 8474 8402 8910 +f 8474 8910 8934 +f 8402 8362 8854 +f 8402 8854 8910 +f 8362 8314 8806 +f 8362 8806 8854 +f 8314 8266 8734 +f 8314 8734 8806 +f 8266 8174 8610 +f 8266 8610 8734 +f 8174 8046 8530 +f 8174 8530 8610 +f 8046 7966 8394 +f 8046 8394 8530 +f 7966 7838 8322 +f 7966 8322 8394 +f 7838 7766 8210 +f 7838 8210 8322 +f 7766 7654 8070 +f 7766 8070 8210 +f 7654 7498 7926 +f 7654 7926 8070 +f 7498 7362 7798 +f 7498 7798 7926 +f 7362 7226 7670 +f 7362 7670 7798 +f 7226 7106 7466 +f 7226 7466 7670 +f 7106 6902 7298 +f 7106 7298 7466 +f 6902 6726 7178 +f 6902 7178 7298 +f 6726 6606 6990 +f 6726 6990 7178 +f 6606 6434 6750 +f 6606 6750 6990 +f 6434 6202 6598 +f 6434 6598 6750 +f 6202 6026 6394 +f 6202 6394 6598 +f 6026 5850 6114 +f 6026 6114 6394 +f 5850 5574 5938 +f 5850 5938 6114 +f 5574 5366 5678 +f 5574 5678 5938 +f 5366 5182 5430 +f 5366 5430 5678 +f 5182 4898 5222 +f 5182 5222 5430 +f 4898 4634 4922 +f 4898 4922 5222 +f 4634 4458 4642 +f 4634 4642 4922 +f 4458 4094 4422 +f 4458 4422 4642 +f 4094 3838 4038 +f 4094 4038 4422 +f 3838 3578 3774 +f 3838 3774 4038 +f 3578 3202 3418 +f 3578 3418 3774 +f 3202 2962 3066 +f 3202 3066 3418 +f 2962 2550 2810 +f 2962 2810 3066 +f 2550 2190 2302 +f 2550 2302 2810 +f 2190 1926 1974 +f 2190 1974 2302 +f 1926 1370 1434 +f 1926 1434 1974 +f 1370 978 994 +f 1370 994 1434 +f 993 1433 1537 +f 993 1537 1041 +f 1433 1973 2045 +f 1433 2045 1537 +f 1973 2301 2421 +f 1973 2421 2045 +f 2301 2809 2913 +f 2301 2913 2421 +f 2809 3065 3217 +f 2809 3217 2913 +f 3065 3417 3677 +f 3065 3677 3217 +f 3417 3773 3941 +f 3417 3941 3677 +f 3773 4037 4285 +f 3773 4285 3941 +f 4037 4421 4617 +f 4037 4617 4285 +f 4421 4641 4905 +f 4421 4905 4617 +f 4641 4921 5229 +f 4641 5229 4905 +f 4921 5221 5485 +f 4921 5485 5229 +f 5221 5429 5773 +f 5221 5773 5485 +f 5429 5677 5985 +f 5429 5985 5773 +f 5677 5937 6225 +f 5677 6225 5985 +f 5937 6113 6509 +f 5937 6509 6225 +f 6113 6393 6693 +f 6113 6693 6509 +f 6393 6597 6933 +f 6393 6933 6693 +f 6597 6749 7161 +f 6597 7161 6933 +f 6749 6989 7321 +f 6749 7321 7161 +f 6989 7177 7537 +f 6989 7537 7321 +f 7177 7297 7741 +f 7177 7741 7537 +f 7297 7465 7861 +f 7297 7861 7741 +f 7465 7669 8037 +f 7465 8037 7861 +f 7669 7797 8233 +f 7669 8233 8037 +f 7797 7925 8345 +f 7797 8345 8233 +f 7925 8069 8497 +f 7925 8497 8345 +f 8069 8209 8633 +f 8069 8633 8497 +f 8209 8321 8765 +f 8209 8765 8633 +f 8321 8393 8861 +f 8321 8861 8765 +f 8393 8529 8941 +f 8393 8941 8861 +f 8529 8609 9069 +f 8529 9069 8941 +f 8609 8733 9157 +f 8609 9157 9069 +f 8733 8805 9257 +f 8733 9257 9157 +f 8805 8853 9329 +f 8805 9329 9257 +f 8853 8909 9377 +f 8853 9377 9329 +f 8909 8933 9417 +f 8909 9417 9377 +f 8933 9013 9457 +f 8933 9457 9417 +f 9013 9045 9513 +f 9013 9513 9457 +f 9045 9077 9561 +f 9045 9561 9513 +f 9077 9101 9585 +f 9077 9585 9561 +f 9101 9117 9609 +f 9101 9609 9585 +f 9117 9133 9617 +f 9117 9617 9609 +f 9133 9134 9618 +f 9133 9618 9617 +f 9134 9118 9610 +f 9134 9610 9618 +f 9118 9102 9586 +f 9118 9586 9610 +f 9102 9078 9562 +f 9102 9562 9586 +f 9078 9046 9514 +f 9078 9514 9562 +f 9046 9014 9458 +f 9046 9458 9514 +f 9014 8934 9418 +f 9014 9418 9458 +f 8934 8910 9378 +f 8934 9378 9418 +f 8910 8854 9330 +f 8910 9330 9378 +f 8854 8806 9258 +f 8854 9258 9330 +f 8806 8734 9158 +f 8806 9158 9258 +f 8734 8610 9070 +f 8734 9070 9158 +f 8610 8530 8942 +f 8610 8942 9070 +f 8530 8394 8862 +f 8530 8862 8942 +f 8394 8322 8766 +f 8394 8766 8862 +f 8322 8210 8634 +f 8322 8634 8766 +f 8210 8070 8498 +f 8210 8498 8634 +f 8070 7926 8346 +f 8070 8346 8498 +f 7926 7798 8234 +f 7926 8234 8346 +f 7798 7670 8038 +f 7798 8038 8234 +f 7670 7466 7862 +f 7670 7862 8038 +f 7466 7298 7742 +f 7466 7742 7862 +f 7298 7178 7538 +f 7298 7538 7742 +f 7178 6990 7322 +f 7178 7322 7538 +f 6990 6750 7162 +f 6990 7162 7322 +f 6750 6598 6934 +f 6750 6934 7162 +f 6598 6394 6694 +f 6598 6694 6934 +f 6394 6114 6510 +f 6394 6510 6694 +f 6114 5938 6226 +f 6114 6226 6510 +f 5938 5678 5986 +f 5938 5986 6226 +f 5678 5430 5774 +f 5678 5774 5986 +f 5430 5222 5486 +f 5430 5486 5774 +f 5222 4922 5230 +f 5222 5230 5486 +f 4922 4642 4906 +f 4922 4906 5230 +f 4642 4422 4618 +f 4642 4618 4906 +f 4422 4038 4286 +f 4422 4286 4618 +f 4038 3774 3942 +f 4038 3942 4286 +f 3774 3418 3678 +f 3774 3678 3942 +f 3418 3066 3218 +f 3418 3218 3678 +f 3066 2810 2914 +f 3066 2914 3218 +f 2810 2302 2422 +f 2810 2422 2914 +f 2302 1974 2046 +f 2302 2046 2422 +f 1974 1434 1538 +f 1974 1538 2046 +f 1434 994 1042 +f 1434 1042 1538 +f 1041 1537 1641 +f 1041 1641 1057 +f 1537 2045 2125 +f 1537 2125 1641 +f 2045 2421 2573 +f 2045 2573 2125 +f 2421 2913 2993 +f 2421 2993 2573 +f 2913 3217 3385 +f 2913 3385 2993 +f 3217 3677 3805 +f 3217 3805 3385 +f 3677 3941 4149 +f 3677 4149 3805 +f 3941 4285 4529 +f 3941 4529 4149 +f 4285 4617 4793 +f 4285 4793 4529 +f 4617 4905 5189 +f 4617 5189 4793 +f 4905 5229 5437 +f 4905 5437 5189 +f 5229 5485 5781 +f 5229 5781 5437 +f 5485 5773 6041 +f 5485 6041 5781 +f 5773 5985 6273 +f 5773 6273 6041 +f 5985 6225 6557 +f 5985 6557 6273 +f 6225 6509 6805 +f 6225 6805 6557 +f 6509 6693 7061 +f 6509 7061 6805 +f 6693 6933 7249 +f 6693 7249 7061 +f 6933 7161 7457 +f 6933 7457 7249 +f 7161 7321 7725 +f 7161 7725 7457 +f 7321 7537 7877 +f 7321 7877 7725 +f 7537 7741 8093 +f 7537 8093 7877 +f 7741 7861 8297 +f 7741 8297 8093 +f 7861 8037 8409 +f 7861 8409 8297 +f 8037 8233 8593 +f 8037 8593 8409 +f 8233 8345 8781 +f 8233 8781 8593 +f 8345 8497 8893 +f 8345 8893 8781 +f 8497 8633 9037 +f 8497 9037 8893 +f 8633 8765 9189 +f 8633 9189 9037 +f 8765 8861 9297 +f 8765 9297 9189 +f 8861 8941 9385 +f 8861 9385 9297 +f 8941 9069 9465 +f 8941 9465 9385 +f 9069 9157 9601 +f 9069 9601 9465 +f 9157 9257 9693 +f 9157 9693 9601 +f 9257 9329 9765 +f 9257 9765 9693 +f 9329 9377 9821 +f 9329 9821 9765 +f 9377 9417 9885 +f 9377 9885 9821 +f 9417 9457 9909 +f 9417 9909 9885 +f 9457 9513 9957 +f 9457 9957 9909 +f 9513 9561 9973 +f 9513 9973 9957 +f 9561 9585 10029 +f 9561 10029 9973 +f 9585 9609 10061 +f 9585 10061 10029 +f 9609 9617 10085 +f 9609 10085 10061 +f 9617 9618 10086 +f 9617 10086 10085 +f 9618 9610 10062 +f 9618 10062 10086 +f 9610 9586 10030 +f 9610 10030 10062 +f 9586 9562 9974 +f 9586 9974 10030 +f 9562 9514 9958 +f 9562 9958 9974 +f 9514 9458 9910 +f 9514 9910 9958 +f 9458 9418 9886 +f 9458 9886 9910 +f 9418 9378 9822 +f 9418 9822 9886 +f 9378 9330 9766 +f 9378 9766 9822 +f 9330 9258 9694 +f 9330 9694 9766 +f 9258 9158 9602 +f 9258 9602 9694 +f 9158 9070 9466 +f 9158 9466 9602 +f 9070 8942 9386 +f 9070 9386 9466 +f 8942 8862 9298 +f 8942 9298 9386 +f 8862 8766 9190 +f 8862 9190 9298 +f 8766 8634 9038 +f 8766 9038 9190 +f 8634 8498 8894 +f 8634 8894 9038 +f 8498 8346 8782 +f 8498 8782 8894 +f 8346 8234 8594 +f 8346 8594 8782 +f 8234 8038 8410 +f 8234 8410 8594 +f 8038 7862 8298 +f 8038 8298 8410 +f 7862 7742 8094 +f 7862 8094 8298 +f 7742 7538 7878 +f 7742 7878 8094 +f 7538 7322 7726 +f 7538 7726 7878 +f 7322 7162 7458 +f 7322 7458 7726 +f 7162 6934 7250 +f 7162 7250 7458 +f 6934 6694 7062 +f 6934 7062 7250 +f 6694 6510 6806 +f 6694 6806 7062 +f 6510 6226 6558 +f 6510 6558 6806 +f 6226 5986 6274 +f 6226 6274 6558 +f 5986 5774 6042 +f 5986 6042 6274 +f 5774 5486 5782 +f 5774 5782 6042 +f 5486 5230 5438 +f 5486 5438 5782 +f 5230 4906 5190 +f 5230 5190 5438 +f 4906 4618 4794 +f 4906 4794 5190 +f 4618 4286 4530 +f 4618 4530 4794 +f 4286 3942 4150 +f 4286 4150 4530 +f 3942 3678 3806 +f 3942 3806 4150 +f 3678 3218 3386 +f 3678 3386 3806 +f 3218 2914 2994 +f 3218 2994 3386 +f 2914 2422 2574 +f 2914 2574 2994 +f 2422 2046 2126 +f 2422 2126 2574 +f 2046 1538 1642 +f 2046 1642 2126 +f 1538 1042 1058 +f 1538 1058 1642 +f 1057 1641 1817 +f 1057 1817 1089 +f 1641 2125 2205 +f 1641 2205 1817 +f 2125 2573 2757 +f 2125 2757 2205 +f 2573 2993 3137 +f 2573 3137 2757 +f 2993 3385 3617 +f 2993 3617 3137 +f 3385 3805 3957 +f 3385 3957 3617 +f 3805 4149 4373 +f 3805 4373 3957 +f 4149 4529 4697 +f 4149 4697 4373 +f 4529 4793 5049 +f 4529 5049 4697 +f 4793 5189 5373 +f 4793 5373 5049 +f 5189 5437 5685 +f 5189 5685 5373 +f 5437 5781 5993 +f 5437 5993 5685 +f 5781 6041 6281 +f 5781 6281 5993 +f 6041 6273 6581 +f 6041 6581 6281 +f 6273 6557 6829 +f 6273 6829 6581 +f 6557 6805 7129 +f 6557 7129 6829 +f 6805 7061 7337 +f 6805 7337 7129 +f 7061 7249 7617 +f 7061 7617 7337 +f 7249 7457 7813 +f 7249 7813 7617 +f 7457 7725 8005 +f 7457 8005 7813 +f 7725 7877 8273 +f 7725 8273 8005 +f 7877 8093 8417 +f 7877 8417 8273 +f 8093 8297 8649 +f 8093 8649 8417 +f 8297 8409 8829 +f 8297 8829 8649 +f 8409 8593 8973 +f 8409 8973 8829 +f 8593 8781 9149 +f 8593 9149 8973 +f 8781 8893 9305 +f 8781 9305 9149 +f 8893 9037 9433 +f 8893 9433 9305 +f 9037 9189 9569 +f 9037 9569 9433 +f 9189 9297 9717 +f 9189 9717 9569 +f 9297 9385 9805 +f 9297 9805 9717 +f 9385 9465 9893 +f 9385 9893 9805 +f 9465 9601 9981 +f 9465 9981 9893 +f 9601 9693 10117 +f 9601 10117 9981 +f 9693 9765 10185 +f 9693 10185 10117 +f 9765 9821 10257 +f 9765 10257 10185 +f 9821 9885 10305 +f 9821 10305 10257 +f 9885 9909 10361 +f 9885 10361 10305 +f 9909 9957 10385 +f 9909 10385 10361 +f 9957 9973 10409 +f 9957 10409 10385 +f 9973 10029 10457 +f 9973 10457 10409 +f 10029 10061 10473 +f 10029 10473 10457 +f 10061 10085 10481 +f 10061 10481 10473 +f 10085 10086 10482 +f 10085 10482 10481 +f 10086 10062 10474 +f 10086 10474 10482 +f 10062 10030 10458 +f 10062 10458 10474 +f 10030 9974 10410 +f 10030 10410 10458 +f 9974 9958 10386 +f 9974 10386 10410 +f 9958 9910 10362 +f 9958 10362 10386 +f 9910 9886 10306 +f 9910 10306 10362 +f 9886 9822 10258 +f 9886 10258 10306 +f 9822 9766 10186 +f 9822 10186 10258 +f 9766 9694 10118 +f 9766 10118 10186 +f 9694 9602 9982 +f 9694 9982 10118 +f 9602 9466 9894 +f 9602 9894 9982 +f 9466 9386 9806 +f 9466 9806 9894 +f 9386 9298 9718 +f 9386 9718 9806 +f 9298 9190 9570 +f 9298 9570 9718 +f 9190 9038 9434 +f 9190 9434 9570 +f 9038 8894 9306 +f 9038 9306 9434 +f 8894 8782 9150 +f 8894 9150 9306 +f 8782 8594 8974 +f 8782 8974 9150 +f 8594 8410 8830 +f 8594 8830 8974 +f 8410 8298 8650 +f 8410 8650 8830 +f 8298 8094 8418 +f 8298 8418 8650 +f 8094 7878 8274 +f 8094 8274 8418 +f 7878 7726 8006 +f 7878 8006 8274 +f 7726 7458 7814 +f 7726 7814 8006 +f 7458 7250 7618 +f 7458 7618 7814 +f 7250 7062 7338 +f 7250 7338 7618 +f 7062 6806 7130 +f 7062 7130 7338 +f 6806 6558 6830 +f 6806 6830 7130 +f 6558 6274 6582 +f 6558 6582 6830 +f 6274 6042 6282 +f 6274 6282 6582 +f 6042 5782 5994 +f 6042 5994 6282 +f 5782 5438 5686 +f 5782 5686 5994 +f 5438 5190 5374 +f 5438 5374 5686 +f 5190 4794 5050 +f 5190 5050 5374 +f 4794 4530 4698 +f 4794 4698 5050 +f 4530 4150 4374 +f 4530 4374 4698 +f 4150 3806 3958 +f 4150 3958 4374 +f 3806 3386 3618 +f 3806 3618 3958 +f 3386 2994 3138 +f 3386 3138 3618 +f 2994 2574 2758 +f 2994 2758 3138 +f 2574 2126 2206 +f 2574 2206 2758 +f 2126 1642 1818 +f 2126 1818 2206 +f 1642 1058 1090 +f 1642 1090 1818 +f 1089 1817 1877 +f 1089 1877 1121 +f 1817 2205 2269 +f 1817 2269 1877 +f 2205 2757 2857 +f 2205 2857 2269 +f 2757 3137 3241 +f 2757 3241 2857 +f 3137 3617 3741 +f 3137 3741 3241 +f 3617 3957 4101 +f 3617 4101 3741 +f 3957 4373 4545 +f 3957 4545 4101 +f 4373 4697 4873 +f 4373 4873 4545 +f 4697 5049 5277 +f 4697 5277 4873 +f 5049 5373 5581 +f 5049 5581 5277 +f 5373 5685 5945 +f 5373 5945 5581 +f 5685 5993 6233 +f 5685 6233 5945 +f 5993 6281 6565 +f 5993 6565 6233 +f 6281 6581 6837 +f 6281 6837 6565 +f 6581 6829 7145 +f 6581 7145 6837 +f 6829 7129 7393 +f 6829 7393 7145 +f 7129 7337 7685 +f 7129 7685 7393 +f 7337 7617 7893 +f 7337 7893 7685 +f 7617 7813 8149 +f 7617 8149 7893 +f 7813 8005 8353 +f 7813 8353 8149 +f 8005 8273 8561 +f 8005 8561 8353 +f 8273 8417 8813 +f 8273 8813 8561 +f 8417 8649 8965 +f 8417 8965 8813 +f 8649 8829 9181 +f 8649 9181 8965 +f 8829 8973 9353 +f 8829 9353 9181 +f 8973 9149 9497 +f 8973 9497 9353 +f 9149 9305 9673 +f 9149 9673 9497 +f 9305 9433 9813 +f 9305 9813 9673 +f 9433 9569 9941 +f 9433 9941 9813 +f 9569 9717 10101 +f 9569 10101 9941 +f 9717 9805 10201 +f 9717 10201 10101 +f 9805 9893 10289 +f 9805 10289 10201 +f 9893 9981 10393 +f 9893 10393 10289 +f 9981 10117 10497 +f 9981 10497 10393 +f 10117 10185 10613 +f 10117 10613 10497 +f 10185 10257 10653 +f 10185 10653 10613 +f 10257 10305 10717 +f 10257 10717 10653 +f 10305 10361 10749 +f 10305 10749 10717 +f 10361 10385 10797 +f 10361 10797 10749 +f 10385 10409 10853 +f 10385 10853 10797 +f 10409 10457 10877 +f 10409 10877 10853 +f 10457 10473 10893 +f 10457 10893 10877 +f 10473 10481 10901 +f 10473 10901 10893 +f 10481 10482 10902 +f 10481 10902 10901 +f 10482 10474 10894 +f 10482 10894 10902 +f 10474 10458 10878 +f 10474 10878 10894 +f 10458 10410 10854 +f 10458 10854 10878 +f 10410 10386 10798 +f 10410 10798 10854 +f 10386 10362 10750 +f 10386 10750 10798 +f 10362 10306 10718 +f 10362 10718 10750 +f 10306 10258 10654 +f 10306 10654 10718 +f 10258 10186 10614 +f 10258 10614 10654 +f 10186 10118 10498 +f 10186 10498 10614 +f 10118 9982 10394 +f 10118 10394 10498 +f 9982 9894 10290 +f 9982 10290 10394 +f 9894 9806 10202 +f 9894 10202 10290 +f 9806 9718 10102 +f 9806 10102 10202 +f 9718 9570 9942 +f 9718 9942 10102 +f 9570 9434 9814 +f 9570 9814 9942 +f 9434 9306 9674 +f 9434 9674 9814 +f 9306 9150 9498 +f 9306 9498 9674 +f 9150 8974 9354 +f 9150 9354 9498 +f 8974 8830 9182 +f 8974 9182 9354 +f 8830 8650 8966 +f 8830 8966 9182 +f 8650 8418 8814 +f 8650 8814 8966 +f 8418 8274 8562 +f 8418 8562 8814 +f 8274 8006 8354 +f 8274 8354 8562 +f 8006 7814 8150 +f 8006 8150 8354 +f 7814 7618 7894 +f 7814 7894 8150 +f 7618 7338 7686 +f 7618 7686 7894 +f 7338 7130 7394 +f 7338 7394 7686 +f 7130 6830 7146 +f 7130 7146 7394 +f 6830 6582 6838 +f 6830 6838 7146 +f 6582 6282 6566 +f 6582 6566 6838 +f 6282 5994 6234 +f 6282 6234 6566 +f 5994 5686 5946 +f 5994 5946 6234 +f 5686 5374 5582 +f 5686 5582 5946 +f 5374 5050 5278 +f 5374 5278 5582 +f 5050 4698 4874 +f 5050 4874 5278 +f 4698 4374 4546 +f 4698 4546 4874 +f 4374 3958 4102 +f 4374 4102 4546 +f 3958 3618 3742 +f 3958 3742 4102 +f 3618 3138 3242 +f 3618 3242 3742 +f 3138 2758 2858 +f 3138 2858 3242 +f 2758 2206 2270 +f 2758 2270 2858 +f 2206 1818 1878 +f 2206 1878 2270 +f 1818 1090 1122 +f 1818 1122 1878 +f 1121 1877 1909 +f 1121 1909 1161 +f 1877 2269 2349 +f 1877 2349 1909 +f 2269 2857 2945 +f 2269 2945 2349 +f 2857 3241 3369 +f 2857 3369 2945 +f 3241 3741 3869 +f 3241 3869 3369 +f 3741 4101 4269 +f 3741 4269 3869 +f 4101 4545 4681 +f 4101 4681 4269 +f 4545 4873 5129 +f 4545 5129 4681 +f 4873 5277 5461 +f 4873 5461 5129 +f 5277 5581 5857 +f 5277 5857 5461 +f 5581 5945 6129 +f 5581 6129 5857 +f 5945 6233 6517 +f 5945 6517 6129 +f 6233 6565 6813 +f 6233 6813 6517 +f 6565 6837 7137 +f 6565 7137 6813 +f 6837 7145 7401 +f 6837 7401 7137 +f 7145 7393 7709 +f 7145 7709 7401 +f 7393 7685 7933 +f 7393 7933 7709 +f 7685 7893 8217 +f 7685 8217 7933 +f 7893 8149 8425 +f 7893 8425 8217 +f 8149 8353 8697 +f 8149 8697 8425 +f 8353 8561 8885 +f 8353 8885 8697 +f 8561 8813 9109 +f 8561 9109 8885 +f 8813 8965 9337 +f 8813 9337 9109 +f 8965 9181 9489 +f 8965 9489 9337 +f 9181 9353 9709 +f 9181 9709 9489 +f 9353 9497 9861 +f 9353 9861 9709 +f 9497 9673 10013 +f 9497 10013 9861 +f 9673 9813 10177 +f 9673 10177 10013 +f 9813 9941 10313 +f 9813 10313 10177 +f 9941 10101 10433 +f 9941 10433 10313 +f 10101 10201 10605 +f 10101 10605 10433 +f 10201 10289 10669 +f 10201 10669 10605 +f 10289 10393 10773 +f 10289 10773 10669 +f 10393 10497 10885 +f 10393 10885 10773 +f 10497 10613 10973 +f 10497 10973 10885 +f 10613 10653 11065 +f 10613 11065 10973 +f 10653 10717 11097 +f 10653 11097 11065 +f 10717 10749 11145 +f 10717 11145 11097 +f 10749 10797 11193 +f 10749 11193 11145 +f 10797 10853 11217 +f 10797 11217 11193 +f 10853 10877 11273 +f 10853 11273 11217 +f 10877 10893 11289 +f 10877 11289 11273 +f 10893 10901 11313 +f 10893 11313 11289 +f 10901 10902 11314 +f 10901 11314 11313 +f 10902 10894 11290 +f 10902 11290 11314 +f 10894 10878 11274 +f 10894 11274 11290 +f 10878 10854 11218 +f 10878 11218 11274 +f 10854 10798 11194 +f 10854 11194 11218 +f 10798 10750 11146 +f 10798 11146 11194 +f 10750 10718 11098 +f 10750 11098 11146 +f 10718 10654 11066 +f 10718 11066 11098 +f 10654 10614 10974 +f 10654 10974 11066 +f 10614 10498 10886 +f 10614 10886 10974 +f 10498 10394 10774 +f 10498 10774 10886 +f 10394 10290 10670 +f 10394 10670 10774 +f 10290 10202 10606 +f 10290 10606 10670 +f 10202 10102 10434 +f 10202 10434 10606 +f 10102 9942 10314 +f 10102 10314 10434 +f 9942 9814 10178 +f 9942 10178 10314 +f 9814 9674 10014 +f 9814 10014 10178 +f 9674 9498 9862 +f 9674 9862 10014 +f 9498 9354 9710 +f 9498 9710 9862 +f 9354 9182 9490 +f 9354 9490 9710 +f 9182 8966 9338 +f 9182 9338 9490 +f 8966 8814 9110 +f 8966 9110 9338 +f 8814 8562 8886 +f 8814 8886 9110 +f 8562 8354 8698 +f 8562 8698 8886 +f 8354 8150 8426 +f 8354 8426 8698 +f 8150 7894 8218 +f 8150 8218 8426 +f 7894 7686 7934 +f 7894 7934 8218 +f 7686 7394 7710 +f 7686 7710 7934 +f 7394 7146 7402 +f 7394 7402 7710 +f 7146 6838 7138 +f 7146 7138 7402 +f 6838 6566 6814 +f 6838 6814 7138 +f 6566 6234 6518 +f 6566 6518 6814 +f 6234 5946 6130 +f 6234 6130 6518 +f 5946 5582 5858 +f 5946 5858 6130 +f 5582 5278 5462 +f 5582 5462 5858 +f 5278 4874 5130 +f 5278 5130 5462 +f 4874 4546 4682 +f 4874 4682 5130 +f 4546 4102 4270 +f 4546 4270 4682 +f 4102 3742 3870 +f 4102 3870 4270 +f 3742 3242 3370 +f 3742 3370 3870 +f 3242 2858 2946 +f 3242 2946 3370 +f 2858 2270 2350 +f 2858 2350 2946 +f 2270 1878 1910 +f 2270 1910 2350 +f 1878 1122 1162 +f 1878 1162 1910 +f 1161 1909 1941 +f 1161 1941 1177 +f 1909 2349 2445 +f 1909 2445 1941 +f 2349 2945 3009 +f 2349 3009 2445 +f 2945 3369 3505 +f 2945 3505 3009 +f 3369 3869 3973 +f 3369 3973 3505 +f 3869 4269 4481 +f 3869 4481 3973 +f 4269 4681 4833 +f 4269 4833 4481 +f 4681 5129 5293 +f 4681 5293 4833 +f 5129 5461 5645 +f 5129 5645 5293 +f 5461 5857 6033 +f 5461 6033 5645 +f 5857 6129 6409 +f 5857 6409 6033 +f 6129 6517 6709 +f 6129 6709 6409 +f 6517 6813 7073 +f 6517 7073 6709 +f 6813 7137 7345 +f 6813 7345 7073 +f 7137 7401 7693 +f 7137 7693 7345 +f 7401 7709 7941 +f 7401 7941 7693 +f 7709 7933 8249 +f 7709 8249 7941 +f 7933 8217 8481 +f 7933 8481 8249 +f 8217 8425 8749 +f 8217 8749 8481 +f 8425 8697 8949 +f 8425 8949 8749 +f 8697 8885 9241 +f 8697 9241 8949 +f 8885 9109 9409 +f 8885 9409 9241 +f 9109 9337 9641 +f 9109 9641 9409 +f 9337 9489 9837 +f 9337 9837 9641 +f 9489 9709 10005 +f 9489 10005 9837 +f 9709 9861 10209 +f 9709 10209 10005 +f 9861 10013 10369 +f 9861 10369 10209 +f 10013 10177 10529 +f 10013 10529 10369 +f 10177 10313 10661 +f 10177 10661 10529 +f 10313 10433 10789 +f 10313 10789 10661 +f 10433 10605 10933 +f 10433 10933 10789 +f 10605 10669 11073 +f 10605 11073 10933 +f 10669 10773 11129 +f 10669 11129 11073 +f 10773 10885 11225 +f 10773 11225 11129 +f 10885 10973 11345 +f 10885 11345 11225 +f 10973 11065 11421 +f 10973 11421 11345 +f 11065 11097 11477 +f 11065 11477 11421 +f 11097 11145 11541 +f 11097 11541 11477 +f 11145 11193 11557 +f 11145 11557 11541 +f 11193 11217 11605 +f 11193 11605 11557 +f 11217 11273 11645 +f 11217 11645 11605 +f 11273 11289 11661 +f 11273 11661 11645 +f 11289 11313 11677 +f 11289 11677 11661 +f 11313 11314 11678 +f 11313 11678 11677 +f 11314 11290 11662 +f 11314 11662 11678 +f 11290 11274 11646 +f 11290 11646 11662 +f 11274 11218 11606 +f 11274 11606 11646 +f 11218 11194 11558 +f 11218 11558 11606 +f 11194 11146 11542 +f 11194 11542 11558 +f 11146 11098 11478 +f 11146 11478 11542 +f 11098 11066 11422 +f 11098 11422 11478 +f 11066 10974 11346 +f 11066 11346 11422 +f 10974 10886 11226 +f 10974 11226 11346 +f 10886 10774 11130 +f 10886 11130 11226 +f 10774 10670 11074 +f 10774 11074 11130 +f 10670 10606 10934 +f 10670 10934 11074 +f 10606 10434 10790 +f 10606 10790 10934 +f 10434 10314 10662 +f 10434 10662 10790 +f 10314 10178 10530 +f 10314 10530 10662 +f 10178 10014 10370 +f 10178 10370 10530 +f 10014 9862 10210 +f 10014 10210 10370 +f 9862 9710 10006 +f 9862 10006 10210 +f 9710 9490 9838 +f 9710 9838 10006 +f 9490 9338 9642 +f 9490 9642 9838 +f 9338 9110 9410 +f 9338 9410 9642 +f 9110 8886 9242 +f 9110 9242 9410 +f 8886 8698 8950 +f 8886 8950 9242 +f 8698 8426 8750 +f 8698 8750 8950 +f 8426 8218 8482 +f 8426 8482 8750 +f 8218 7934 8250 +f 8218 8250 8482 +f 7934 7710 7942 +f 7934 7942 8250 +f 7710 7402 7694 +f 7710 7694 7942 +f 7402 7138 7346 +f 7402 7346 7694 +f 7138 6814 7074 +f 7138 7074 7346 +f 6814 6518 6710 +f 6814 6710 7074 +f 6518 6130 6410 +f 6518 6410 6710 +f 6130 5858 6034 +f 6130 6034 6410 +f 5858 5462 5646 +f 5858 5646 6034 +f 5462 5130 5294 +f 5462 5294 5646 +f 5130 4682 4834 +f 5130 4834 5294 +f 4682 4270 4482 +f 4682 4482 4834 +f 4270 3870 3974 +f 4270 3974 4482 +f 3870 3370 3506 +f 3870 3506 3974 +f 3370 2946 3010 +f 3370 3010 3506 +f 2946 2350 2446 +f 2946 2446 3010 +f 2350 1910 1942 +f 2350 1942 2446 +f 1910 1162 1178 +f 1910 1178 1942 +f 1177 1941 1989 +f 1177 1989 1193 +f 1941 2445 2525 +f 1941 2525 1989 +f 2445 3009 3105 +f 2445 3105 2525 +f 3009 3505 3709 +f 3009 3709 3105 +f 3505 3973 4069 +f 3505 4069 3709 +f 3973 4481 4577 +f 3973 4577 4069 +f 4481 4833 5017 +f 4481 5017 4577 +f 4833 5293 5413 +f 4833 5413 5017 +f 5293 5645 5881 +f 5293 5881 5413 +f 5645 6033 6209 +f 5645 6209 5881 +f 6033 6409 6613 +f 6033 6613 6209 +f 6409 6709 6949 +f 6409 6949 6613 +f 6709 7073 7265 +f 6709 7265 6949 +f 7073 7345 7625 +f 7073 7625 7265 +f 7345 7693 7909 +f 7345 7909 7625 +f 7693 7941 8225 +f 7693 8225 7909 +f 7941 8249 8489 +f 7941 8489 8225 +f 8249 8481 8773 +f 8249 8773 8489 +f 8481 8749 9021 +f 8481 9021 8773 +f 8749 8949 9265 +f 8749 9265 9021 +f 8949 9241 9473 +f 8949 9473 9265 +f 9241 9409 9749 +f 9241 9749 9473 +f 9409 9641 9917 +f 9409 9917 9749 +f 9641 9837 10161 +f 9641 10161 9917 +f 9837 10005 10329 +f 9837 10329 10161 +f 10005 10209 10521 +f 10005 10521 10329 +f 10209 10369 10685 +f 10209 10685 10521 +f 10369 10529 10845 +f 10369 10845 10685 +f 10529 10661 11001 +f 10529 11001 10845 +f 10661 10789 11121 +f 10661 11121 11001 +f 10789 10933 11257 +f 10789 11257 11121 +f 10933 11073 11397 +f 10933 11397 11257 +f 11073 11129 11501 +f 11073 11501 11397 +f 11129 11225 11589 +f 11129 11589 11501 +f 11225 11345 11693 +f 11225 11693 11589 +f 11345 11421 11785 +f 11345 11785 11693 +f 11421 11477 11833 +f 11421 11833 11785 +f 11477 11541 11873 +f 11477 11873 11833 +f 11541 11557 11937 +f 11541 11937 11873 +f 11557 11605 11977 +f 11557 11977 11937 +f 11605 11645 11993 +f 11605 11993 11977 +f 11645 11661 12025 +f 11645 12025 11993 +f 11661 11677 12049 +f 11661 12049 12025 +f 11677 11678 12050 +f 11677 12050 12049 +f 11678 11662 12026 +f 11678 12026 12050 +f 11662 11646 11994 +f 11662 11994 12026 +f 11646 11606 11978 +f 11646 11978 11994 +f 11606 11558 11938 +f 11606 11938 11978 +f 11558 11542 11874 +f 11558 11874 11938 +f 11542 11478 11834 +f 11542 11834 11874 +f 11478 11422 11786 +f 11478 11786 11834 +f 11422 11346 11694 +f 11422 11694 11786 +f 11346 11226 11590 +f 11346 11590 11694 +f 11226 11130 11502 +f 11226 11502 11590 +f 11130 11074 11398 +f 11130 11398 11502 +f 11074 10934 11258 +f 11074 11258 11398 +f 10934 10790 11122 +f 10934 11122 11258 +f 10790 10662 11002 +f 10790 11002 11122 +f 10662 10530 10846 +f 10662 10846 11002 +f 10530 10370 10686 +f 10530 10686 10846 +f 10370 10210 10522 +f 10370 10522 10686 +f 10210 10006 10330 +f 10210 10330 10522 +f 10006 9838 10162 +f 10006 10162 10330 +f 9838 9642 9918 +f 9838 9918 10162 +f 9642 9410 9750 +f 9642 9750 9918 +f 9410 9242 9474 +f 9410 9474 9750 +f 9242 8950 9266 +f 9242 9266 9474 +f 8950 8750 9022 +f 8950 9022 9266 +f 8750 8482 8774 +f 8750 8774 9022 +f 8482 8250 8490 +f 8482 8490 8774 +f 8250 7942 8226 +f 8250 8226 8490 +f 7942 7694 7910 +f 7942 7910 8226 +f 7694 7346 7626 +f 7694 7626 7910 +f 7346 7074 7266 +f 7346 7266 7626 +f 7074 6710 6950 +f 7074 6950 7266 +f 6710 6410 6614 +f 6710 6614 6950 +f 6410 6034 6210 +f 6410 6210 6614 +f 6034 5646 5882 +f 6034 5882 6210 +f 5646 5294 5414 +f 5646 5414 5882 +f 5294 4834 5018 +f 5294 5018 5414 +f 4834 4482 4578 +f 4834 4578 5018 +f 4482 3974 4070 +f 4482 4070 4578 +f 3974 3506 3710 +f 3974 3710 4070 +f 3506 3010 3106 +f 3506 3106 3710 +f 3010 2446 2526 +f 3010 2526 3106 +f 2446 1942 1990 +f 2446 1990 2526 +f 1942 1178 1194 +f 1942 1194 1990 +f 1193 1989 2029 +f 1193 2029 1241 +f 1989 2525 2653 +f 1989 2653 2029 +f 2525 3105 3169 +f 2525 3169 2653 +f 3105 3709 3757 +f 3105 3757 3169 +f 3709 4069 4221 +f 3709 4221 3757 +f 4069 4577 4729 +f 4069 4729 4221 +f 4577 5017 5213 +f 4577 5213 4729 +f 5017 5413 5597 +f 5017 5597 5213 +f 5413 5881 6009 +f 5413 6009 5597 +f 5881 6209 6449 +f 5881 6449 6009 +f 6209 6613 6773 +f 6209 6773 6449 +f 6613 6949 7169 +f 6613 7169 6773 +f 6949 7265 7473 +f 6949 7473 7169 +f 7265 7625 7821 +f 7265 7821 7473 +f 7625 7909 8165 +f 7625 8165 7821 +f 7909 8225 8441 +f 7909 8441 8165 +f 8225 8489 8757 +f 8225 8757 8441 +f 8489 8773 9029 +f 8489 9029 8757 +f 8773 9021 9289 +f 8773 9289 9029 +f 9021 9265 9545 +f 9021 9545 9289 +f 9265 9473 9773 +f 9265 9773 9545 +f 9473 9749 9989 +f 9473 9989 9773 +f 9749 9917 10241 +f 9749 10241 9989 +f 9917 10161 10425 +f 9917 10425 10241 +f 10161 10329 10637 +f 10161 10637 10425 +f 10329 10521 10821 +f 10329 10821 10637 +f 10521 10685 11009 +f 10521 11009 10821 +f 10685 10845 11161 +f 10685 11161 11009 +f 10845 11001 11337 +f 10845 11337 11161 +f 11001 11121 11445 +f 11001 11445 11337 +f 11121 11257 11581 +f 11121 11581 11445 +f 11257 11397 11725 +f 11257 11725 11581 +f 11397 11501 11825 +f 11397 11825 11725 +f 11501 11589 11929 +f 11501 11929 11825 +f 11589 11693 12001 +f 11589 12001 11929 +f 11693 11785 12105 +f 11693 12105 12001 +f 11785 11833 12181 +f 11785 12181 12105 +f 11833 11873 12237 +f 11833 12237 12181 +f 11873 11937 12277 +f 11873 12277 12237 +f 11937 11977 12293 +f 11937 12293 12277 +f 11977 11993 12357 +f 11977 12357 12293 +f 11993 12025 12373 +f 11993 12373 12357 +f 12025 12049 12413 +f 12025 12413 12373 +f 12049 12050 12414 +f 12049 12414 12413 +f 12050 12026 12374 +f 12050 12374 12414 +f 12026 11994 12358 +f 12026 12358 12374 +f 11994 11978 12294 +f 11994 12294 12358 +f 11978 11938 12278 +f 11978 12278 12294 +f 11938 11874 12238 +f 11938 12238 12278 +f 11874 11834 12182 +f 11874 12182 12238 +f 11834 11786 12106 +f 11834 12106 12182 +f 11786 11694 12002 +f 11786 12002 12106 +f 11694 11590 11930 +f 11694 11930 12002 +f 11590 11502 11826 +f 11590 11826 11930 +f 11502 11398 11726 +f 11502 11726 11826 +f 11398 11258 11582 +f 11398 11582 11726 +f 11258 11122 11446 +f 11258 11446 11582 +f 11122 11002 11338 +f 11122 11338 11446 +f 11002 10846 11162 +f 11002 11162 11338 +f 10846 10686 11010 +f 10846 11010 11162 +f 10686 10522 10822 +f 10686 10822 11010 +f 10522 10330 10638 +f 10522 10638 10822 +f 10330 10162 10426 +f 10330 10426 10638 +f 10162 9918 10242 +f 10162 10242 10426 +f 9918 9750 9990 +f 9918 9990 10242 +f 9750 9474 9774 +f 9750 9774 9990 +f 9474 9266 9546 +f 9474 9546 9774 +f 9266 9022 9290 +f 9266 9290 9546 +f 9022 8774 9030 +f 9022 9030 9290 +f 8774 8490 8758 +f 8774 8758 9030 +f 8490 8226 8442 +f 8490 8442 8758 +f 8226 7910 8166 +f 8226 8166 8442 +f 7910 7626 7822 +f 7910 7822 8166 +f 7626 7266 7474 +f 7626 7474 7822 +f 7266 6950 7170 +f 7266 7170 7474 +f 6950 6614 6774 +f 6950 6774 7170 +f 6614 6210 6450 +f 6614 6450 6774 +f 6210 5882 6010 +f 6210 6010 6450 +f 5882 5414 5598 +f 5882 5598 6010 +f 5414 5018 5214 +f 5414 5214 5598 +f 5018 4578 4730 +f 5018 4730 5214 +f 4578 4070 4222 +f 4578 4222 4730 +f 4070 3710 3758 +f 4070 3758 4222 +f 3710 3106 3170 +f 3710 3170 3758 +f 3106 2526 2654 +f 3106 2654 3170 +f 2526 1990 2030 +f 2526 2030 2654 +f 1990 1194 1242 +f 1990 1242 2030 +f 1241 2029 2061 +f 1241 2061 1257 +f 2029 2653 2793 +f 2029 2793 2061 +f 2653 3169 3265 +f 2653 3265 2793 +f 3169 3757 3861 +f 3169 3861 3265 +f 3757 4221 4437 +f 3757 4437 3861 +f 4221 4729 4825 +f 4221 4825 4437 +f 4729 5213 5325 +f 4729 5325 4825 +f 5213 5597 5805 +f 5213 5805 5325 +f 5597 6009 6169 +f 5597 6169 5805 +f 6009 6449 6629 +f 6009 6629 6169 +f 6449 6773 6997 +f 6449 6997 6629 +f 6773 7169 7329 +f 6773 7329 6997 +f 7169 7473 7733 +f 7169 7733 7329 +f 7473 7821 8021 +f 7473 8021 7733 +f 7821 8165 8369 +f 7821 8369 8021 +f 8165 8441 8713 +f 8165 8713 8369 +f 8441 8757 8957 +f 8441 8957 8713 +f 8757 9029 9273 +f 8757 9273 8957 +f 9029 9289 9553 +f 9029 9553 9273 +f 9289 9545 9797 +f 9289 9797 9553 +f 9545 9773 10069 +f 9545 10069 9797 +f 9773 9989 10265 +f 9773 10265 10069 +f 9989 10241 10505 +f 9989 10505 10265 +f 10241 10425 10725 +f 10241 10725 10505 +f 10425 10637 10925 +f 10425 10925 10725 +f 10637 10821 11105 +f 10637 11105 10925 +f 10821 11009 11305 +f 10821 11305 11105 +f 11009 11161 11461 +f 11009 11461 11305 +f 11161 11337 11613 +f 11161 11613 11461 +f 11337 11445 11801 +f 11337 11801 11613 +f 11445 11581 11881 +f 11445 11881 11801 +f 11581 11725 12017 +f 11581 12017 11881 +f 11725 11825 12149 +f 11725 12149 12017 +f 11825 11929 12245 +f 11825 12245 12149 +f 11929 12001 12325 +f 11929 12325 12245 +f 12001 12105 12429 +f 12001 12429 12325 +f 12105 12181 12505 +f 12105 12505 12429 +f 12181 12237 12553 +f 12181 12553 12505 +f 12237 12277 12609 +f 12237 12609 12553 +f 12277 12293 12649 +f 12277 12649 12609 +f 12293 12357 12665 +f 12293 12665 12649 +f 12357 12373 12689 +f 12357 12689 12665 +f 12373 12413 12713 +f 12373 12713 12689 +f 12413 12414 12714 +f 12413 12714 12713 +f 12414 12374 12690 +f 12414 12690 12714 +f 12374 12358 12666 +f 12374 12666 12690 +f 12358 12294 12650 +f 12358 12650 12666 +f 12294 12278 12610 +f 12294 12610 12650 +f 12278 12238 12554 +f 12278 12554 12610 +f 12238 12182 12506 +f 12238 12506 12554 +f 12182 12106 12430 +f 12182 12430 12506 +f 12106 12002 12326 +f 12106 12326 12430 +f 12002 11930 12246 +f 12002 12246 12326 +f 11930 11826 12150 +f 11930 12150 12246 +f 11826 11726 12018 +f 11826 12018 12150 +f 11726 11582 11882 +f 11726 11882 12018 +f 11582 11446 11802 +f 11582 11802 11882 +f 11446 11338 11614 +f 11446 11614 11802 +f 11338 11162 11462 +f 11338 11462 11614 +f 11162 11010 11306 +f 11162 11306 11462 +f 11010 10822 11106 +f 11010 11106 11306 +f 10822 10638 10926 +f 10822 10926 11106 +f 10638 10426 10726 +f 10638 10726 10926 +f 10426 10242 10506 +f 10426 10506 10726 +f 10242 9990 10266 +f 10242 10266 10506 +f 9990 9774 10070 +f 9990 10070 10266 +f 9774 9546 9798 +f 9774 9798 10070 +f 9546 9290 9554 +f 9546 9554 9798 +f 9290 9030 9274 +f 9290 9274 9554 +f 9030 8758 8958 +f 9030 8958 9274 +f 8758 8442 8714 +f 8758 8714 8958 +f 8442 8166 8370 +f 8442 8370 8714 +f 8166 7822 8022 +f 8166 8022 8370 +f 7822 7474 7734 +f 7822 7734 8022 +f 7474 7170 7330 +f 7474 7330 7734 +f 7170 6774 6998 +f 7170 6998 7330 +f 6774 6450 6630 +f 6774 6630 6998 +f 6450 6010 6170 +f 6450 6170 6630 +f 6010 5598 5806 +f 6010 5806 6170 +f 5598 5214 5326 +f 5598 5326 5806 +f 5214 4730 4826 +f 5214 4826 5326 +f 4730 4222 4438 +f 4730 4438 4826 +f 4222 3758 3862 +f 4222 3862 4438 +f 3758 3170 3266 +f 3758 3266 3862 +f 3170 2654 2794 +f 3170 2794 3266 +f 2654 2030 2062 +f 2654 2062 2794 +f 2030 1242 1258 +f 2030 1258 2062 +f 1257 2061 2109 +f 1257 2109 1305 +f 2061 2793 2841 +f 2061 2841 2109 +f 2793 3265 3345 +f 2793 3345 2841 +f 3265 3861 3925 +f 3265 3925 3345 +f 3861 4437 4513 +f 3861 4513 3925 +f 4437 4825 4969 +f 4437 4969 4513 +f 4825 5325 5469 +f 4825 5469 4969 +f 5325 5805 5929 +f 5325 5929 5469 +f 5805 6169 6353 +f 5805 6353 5929 +f 6169 6629 6733 +f 6169 6733 6353 +f 6629 6997 7193 +f 6629 7193 6733 +f 6997 7329 7553 +f 6997 7553 7193 +f 7329 7733 7901 +f 7329 7901 7553 +f 7733 8021 8281 +f 7733 8281 7901 +f 8021 8369 8577 +f 8021 8577 8281 +f 8369 8713 8901 +f 8369 8901 8577 +f 8713 8957 9249 +f 8713 9249 8901 +f 8957 9273 9481 +f 8957 9481 9249 +f 9273 9553 9781 +f 9273 9781 9481 +f 9553 9797 10077 +f 9553 10077 9781 +f 9797 10069 10297 +f 9797 10297 10077 +f 10069 10265 10577 +f 10069 10577 10297 +f 10265 10505 10757 +f 10265 10757 10577 +f 10505 10725 10993 +f 10505 10993 10757 +f 10725 10925 11185 +f 10725 11185 10993 +f 10925 11105 11405 +f 10925 11405 11185 +f 11105 11305 11549 +f 11105 11549 11405 +f 11305 11461 11773 +f 11305 11773 11549 +f 11461 11613 11889 +f 11461 11889 11773 +f 11613 11801 12073 +f 11613 12073 11889 +f 11801 11881 12205 +f 11801 12205 12073 +f 11881 12017 12301 +f 11881 12301 12205 +f 12017 12149 12445 +f 12017 12445 12301 +f 12149 12245 12545 +f 12149 12545 12445 +f 12245 12325 12641 +f 12245 12641 12545 +f 12325 12429 12721 +f 12325 12721 12641 +f 12429 12505 12829 +f 12429 12829 12721 +f 12505 12553 12861 +f 12505 12861 12829 +f 12553 12609 12909 +f 12553 12909 12861 +f 12609 12649 12941 +f 12609 12941 12909 +f 12649 12665 12981 +f 12649 12981 12941 +f 12665 12689 13013 +f 12665 13013 12981 +f 12689 12713 13045 +f 12689 13045 13013 +f 12713 12714 13046 +f 12713 13046 13045 +f 12714 12690 13014 +f 12714 13014 13046 +f 12690 12666 12982 +f 12690 12982 13014 +f 12666 12650 12942 +f 12666 12942 12982 +f 12650 12610 12910 +f 12650 12910 12942 +f 12610 12554 12862 +f 12610 12862 12910 +f 12554 12506 12830 +f 12554 12830 12862 +f 12506 12430 12722 +f 12506 12722 12830 +f 12430 12326 12642 +f 12430 12642 12722 +f 12326 12246 12546 +f 12326 12546 12642 +f 12246 12150 12446 +f 12246 12446 12546 +f 12150 12018 12302 +f 12150 12302 12446 +f 12018 11882 12206 +f 12018 12206 12302 +f 11882 11802 12074 +f 11882 12074 12206 +f 11802 11614 11890 +f 11802 11890 12074 +f 11614 11462 11774 +f 11614 11774 11890 +f 11462 11306 11550 +f 11462 11550 11774 +f 11306 11106 11406 +f 11306 11406 11550 +f 11106 10926 11186 +f 11106 11186 11406 +f 10926 10726 10994 +f 10926 10994 11186 +f 10726 10506 10758 +f 10726 10758 10994 +f 10506 10266 10578 +f 10506 10578 10758 +f 10266 10070 10298 +f 10266 10298 10578 +f 10070 9798 10078 +f 10070 10078 10298 +f 9798 9554 9782 +f 9798 9782 10078 +f 9554 9274 9482 +f 9554 9482 9782 +f 9274 8958 9250 +f 9274 9250 9482 +f 8958 8714 8902 +f 8958 8902 9250 +f 8714 8370 8578 +f 8714 8578 8902 +f 8370 8022 8282 +f 8370 8282 8578 +f 8022 7734 7902 +f 8022 7902 8282 +f 7734 7330 7554 +f 7734 7554 7902 +f 7330 6998 7194 +f 7330 7194 7554 +f 6998 6630 6734 +f 6998 6734 7194 +f 6630 6170 6354 +f 6630 6354 6734 +f 6170 5806 5930 +f 6170 5930 6354 +f 5806 5326 5470 +f 5806 5470 5930 +f 5326 4826 4970 +f 5326 4970 5470 +f 4826 4438 4514 +f 4826 4514 4970 +f 4438 3862 3926 +f 4438 3926 4514 +f 3862 3266 3346 +f 3862 3346 3926 +f 3266 2794 2842 +f 3266 2842 3346 +f 2794 2062 2110 +f 2794 2110 2842 +f 2062 1258 1306 +f 2062 1306 2110 +f 1305 2109 2141 +f 1305 2141 1321 +f 2109 2841 2889 +f 2109 2889 2141 +f 2841 3345 3457 +f 2841 3457 2889 +f 3345 3925 4013 +f 3345 4013 3457 +f 3925 4513 4593 +f 3925 4593 4013 +f 4513 4969 5165 +f 4513 5165 4593 +f 4969 5469 5557 +f 4969 5557 5165 +f 5469 5929 6073 +f 5469 6073 5557 +f 5929 6353 6533 +f 5929 6533 6073 +f 6353 6733 6917 +f 6353 6917 6533 +f 6733 7193 7313 +f 6733 7313 6917 +f 7193 7553 7749 +f 7193 7749 7313 +f 7553 7901 8117 +f 7553 8117 7749 +f 7901 8281 8449 +f 7901 8449 8117 +f 8281 8577 8821 +f 8281 8821 8449 +f 8577 8901 9125 +f 8577 9125 8821 +f 8901 9249 9425 +f 8901 9425 9125 +f 9249 9481 9757 +f 9249 9757 9425 +f 9481 9781 9997 +f 9481 9997 9757 +f 9781 10077 10281 +f 9781 10281 9997 +f 10077 10297 10585 +f 10077 10585 10281 +f 10297 10577 10781 +f 10297 10781 10585 +f 10577 10757 11049 +f 10577 11049 10781 +f 10757 10993 11233 +f 10757 11233 11049 +f 10993 11185 11453 +f 10993 11453 11233 +f 11185 11405 11653 +f 11185 11653 11453 +f 11405 11549 11841 +f 11405 11841 11653 +f 11549 11773 12009 +f 11549 12009 11841 +f 11773 11889 12197 +f 11773 12197 12009 +f 11889 12073 12317 +f 11889 12317 12197 +f 12073 12205 12497 +f 12073 12497 12317 +f 12205 12301 12617 +f 12205 12617 12497 +f 12301 12445 12729 +f 12301 12729 12617 +f 12445 12545 12837 +f 12445 12837 12729 +f 12545 12641 12925 +f 12545 12925 12837 +f 12641 12721 13037 +f 12641 13037 12925 +f 12721 12829 13101 +f 12721 13101 13037 +f 12829 12861 13169 +f 12829 13169 13101 +f 12861 12909 13217 +f 12861 13217 13169 +f 12909 12941 13249 +f 12909 13249 13217 +f 12941 12981 13281 +f 12941 13281 13249 +f 12981 13013 13297 +f 12981 13297 13281 +f 13013 13045 13321 +f 13013 13321 13297 +f 13045 13046 13322 +f 13045 13322 13321 +f 13046 13014 13298 +f 13046 13298 13322 +f 13014 12982 13282 +f 13014 13282 13298 +f 12982 12942 13250 +f 12982 13250 13282 +f 12942 12910 13218 +f 12942 13218 13250 +f 12910 12862 13170 +f 12910 13170 13218 +f 12862 12830 13102 +f 12862 13102 13170 +f 12830 12722 13038 +f 12830 13038 13102 +f 12722 12642 12926 +f 12722 12926 13038 +f 12642 12546 12838 +f 12642 12838 12926 +f 12546 12446 12730 +f 12546 12730 12838 +f 12446 12302 12618 +f 12446 12618 12730 +f 12302 12206 12498 +f 12302 12498 12618 +f 12206 12074 12318 +f 12206 12318 12498 +f 12074 11890 12198 +f 12074 12198 12318 +f 11890 11774 12010 +f 11890 12010 12198 +f 11774 11550 11842 +f 11774 11842 12010 +f 11550 11406 11654 +f 11550 11654 11842 +f 11406 11186 11454 +f 11406 11454 11654 +f 11186 10994 11234 +f 11186 11234 11454 +f 10994 10758 11050 +f 10994 11050 11234 +f 10758 10578 10782 +f 10758 10782 11050 +f 10578 10298 10586 +f 10578 10586 10782 +f 10298 10078 10282 +f 10298 10282 10586 +f 10078 9782 9998 +f 10078 9998 10282 +f 9782 9482 9758 +f 9782 9758 9998 +f 9482 9250 9426 +f 9482 9426 9758 +f 9250 8902 9126 +f 9250 9126 9426 +f 8902 8578 8822 +f 8902 8822 9126 +f 8578 8282 8450 +f 8578 8450 8822 +f 8282 7902 8118 +f 8282 8118 8450 +f 7902 7554 7750 +f 7902 7750 8118 +f 7554 7194 7314 +f 7554 7314 7750 +f 7194 6734 6918 +f 7194 6918 7314 +f 6734 6354 6534 +f 6734 6534 6918 +f 6354 5930 6074 +f 6354 6074 6534 +f 5930 5470 5558 +f 5930 5558 6074 +f 5470 4970 5166 +f 5470 5166 5558 +f 4970 4514 4594 +f 4970 4594 5166 +f 4514 3926 4014 +f 4514 4014 4594 +f 3926 3346 3458 +f 3926 3458 4014 +f 3346 2842 2890 +f 3346 2890 3458 +f 2842 2110 2142 +f 2842 2142 2890 +f 2110 1306 1322 +f 2110 1322 2142 +f 1321 2141 2173 +f 1321 2173 1353 +f 2141 2889 2929 +f 2141 2929 2173 +f 2889 3457 3593 +f 2889 3593 2929 +f 3457 4013 4133 +f 3457 4133 3593 +f 4013 4593 4705 +f 4013 4705 4133 +f 4593 5165 5253 +f 4593 5253 4705 +f 5165 5557 5733 +f 5165 5733 5253 +f 5557 6073 6185 +f 5557 6185 5733 +f 6073 6533 6653 +f 6073 6653 6185 +f 6533 6917 7121 +f 6533 7121 6653 +f 6917 7313 7505 +f 6917 7505 7121 +f 7313 7749 7885 +f 7313 7885 7505 +f 7749 8117 8305 +f 7749 8305 7885 +f 8117 8449 8665 +f 8117 8665 8305 +f 8449 8821 8981 +f 8449 8981 8665 +f 8821 9125 9345 +f 8821 9345 8981 +f 9125 9425 9657 +f 9125 9657 9345 +f 9425 9757 9933 +f 9425 9933 9657 +f 9757 9997 10249 +f 9757 10249 9933 +f 9997 10281 10513 +f 9997 10513 10249 +f 10281 10585 10765 +f 10281 10765 10513 +f 10585 10781 11057 +f 10585 11057 10765 +f 10781 11049 11265 +f 10781 11265 11057 +f 11049 11233 11509 +f 11049 11509 11265 +f 11233 11453 11709 +f 11233 11709 11509 +f 11453 11653 11897 +f 11453 11897 11709 +f 11653 11841 12113 +f 11653 12113 11897 +f 11841 12009 12269 +f 11841 12269 12113 +f 12009 12197 12453 +f 12009 12453 12269 +f 12197 12317 12593 +f 12197 12593 12453 +f 12317 12497 12745 +f 12317 12745 12593 +f 12497 12617 12885 +f 12497 12885 12745 +f 12617 12729 13005 +f 12617 13005 12885 +f 12729 12837 13121 +f 12729 13121 13005 +f 12837 12925 13209 +f 12837 13209 13121 +f 12925 13037 13289 +f 12925 13289 13209 +f 13037 13101 13377 +f 13037 13377 13289 +f 13101 13169 13445 +f 13101 13445 13377 +f 13169 13217 13485 +f 13169 13485 13445 +f 13217 13249 13533 +f 13217 13533 13485 +f 13249 13281 13573 +f 13249 13573 13533 +f 13281 13297 13581 +f 13281 13581 13573 +f 13297 13321 13605 +f 13297 13605 13581 +f 13321 13322 13606 +f 13321 13606 13605 +f 13322 13298 13582 +f 13322 13582 13606 +f 13298 13282 13574 +f 13298 13574 13582 +f 13282 13250 13534 +f 13282 13534 13574 +f 13250 13218 13486 +f 13250 13486 13534 +f 13218 13170 13446 +f 13218 13446 13486 +f 13170 13102 13378 +f 13170 13378 13446 +f 13102 13038 13290 +f 13102 13290 13378 +f 13038 12926 13210 +f 13038 13210 13290 +f 12926 12838 13122 +f 12926 13122 13210 +f 12838 12730 13006 +f 12838 13006 13122 +f 12730 12618 12886 +f 12730 12886 13006 +f 12618 12498 12746 +f 12618 12746 12886 +f 12498 12318 12594 +f 12498 12594 12746 +f 12318 12198 12454 +f 12318 12454 12594 +f 12198 12010 12270 +f 12198 12270 12454 +f 12010 11842 12114 +f 12010 12114 12270 +f 11842 11654 11898 +f 11842 11898 12114 +f 11654 11454 11710 +f 11654 11710 11898 +f 11454 11234 11510 +f 11454 11510 11710 +f 11234 11050 11266 +f 11234 11266 11510 +f 11050 10782 11058 +f 11050 11058 11266 +f 10782 10586 10766 +f 10782 10766 11058 +f 10586 10282 10514 +f 10586 10514 10766 +f 10282 9998 10250 +f 10282 10250 10514 +f 9998 9758 9934 +f 9998 9934 10250 +f 9758 9426 9658 +f 9758 9658 9934 +f 9426 9126 9346 +f 9426 9346 9658 +f 9126 8822 8982 +f 9126 8982 9346 +f 8822 8450 8666 +f 8822 8666 8982 +f 8450 8118 8306 +f 8450 8306 8666 +f 8118 7750 7886 +f 8118 7886 8306 +f 7750 7314 7506 +f 7750 7506 7886 +f 7314 6918 7122 +f 7314 7122 7506 +f 6918 6534 6654 +f 6918 6654 7122 +f 6534 6074 6186 +f 6534 6186 6654 +f 6074 5558 5734 +f 6074 5734 6186 +f 5558 5166 5254 +f 5558 5254 5734 +f 5166 4594 4706 +f 5166 4706 5254 +f 4594 4014 4134 +f 4594 4134 4706 +f 4014 3458 3594 +f 4014 3594 4134 +f 3458 2890 2930 +f 3458 2930 3594 +f 2890 2142 2174 +f 2890 2174 2930 +f 2142 1322 1354 +f 2142 1354 2174 +f 1353 2173 2221 +f 1353 2221 1385 +f 2173 2929 2977 +f 2173 2977 2221 +f 2929 3593 3693 +f 2929 3693 2977 +f 3593 4133 4205 +f 3593 4205 3693 +f 4133 4705 4769 +f 4133 4769 4205 +f 4705 5253 5341 +f 4705 5341 4769 +f 5253 5733 5897 +f 5253 5897 5341 +f 5733 6185 6329 +f 5733 6329 5897 +f 6185 6653 6781 +f 6185 6781 6329 +f 6653 7121 7241 +f 6653 7241 6781 +f 7121 7505 7701 +f 7121 7701 7241 +f 7505 7885 8053 +f 7505 8053 7701 +f 7885 8305 8457 +f 7885 8457 8053 +f 8305 8665 8845 +f 8305 8845 8457 +f 8665 8981 9197 +f 8665 9197 8845 +f 8981 9345 9505 +f 8981 9505 9197 +f 9345 9657 9853 +f 9345 9853 9505 +f 9657 9933 10169 +f 9657 10169 9853 +f 9933 10249 10441 +f 9933 10441 10169 +f 10249 10513 10733 +f 10249 10733 10441 +f 10513 10765 11017 +f 10513 11017 10733 +f 10765 11057 11241 +f 10765 11241 11017 +f 11057 11265 11517 +f 11057 11517 11241 +f 11265 11509 11741 +f 11265 11741 11517 +f 11509 11709 11953 +f 11509 11953 11741 +f 11709 11897 12157 +f 11709 12157 11953 +f 11897 12113 12333 +f 11897 12333 12157 +f 12113 12269 12521 +f 12113 12521 12333 +f 12269 12453 12681 +f 12269 12681 12521 +f 12453 12593 12853 +f 12453 12853 12681 +f 12593 12745 12997 +f 12593 12997 12853 +f 12745 12885 13129 +f 12745 13129 12997 +f 12885 13005 13257 +f 12885 13257 13129 +f 13005 13121 13369 +f 13005 13369 13257 +f 13121 13209 13461 +f 13121 13461 13369 +f 13209 13289 13549 +f 13209 13549 13461 +f 13289 13377 13645 +f 13289 13645 13549 +f 13377 13445 13705 +f 13377 13705 13645 +f 13445 13485 13777 +f 13445 13777 13705 +f 13485 13533 13785 +f 13485 13785 13777 +f 13533 13573 13825 +f 13533 13825 13785 +f 13573 13581 13857 +f 13573 13857 13825 +f 13581 13605 13865 +f 13581 13865 13857 +f 13605 13606 13866 +f 13605 13866 13865 +f 13606 13582 13858 +f 13606 13858 13866 +f 13582 13574 13826 +f 13582 13826 13858 +f 13574 13534 13786 +f 13574 13786 13826 +f 13534 13486 13778 +f 13534 13778 13786 +f 13486 13446 13706 +f 13486 13706 13778 +f 13446 13378 13646 +f 13446 13646 13706 +f 13378 13290 13550 +f 13378 13550 13646 +f 13290 13210 13462 +f 13290 13462 13550 +f 13210 13122 13370 +f 13210 13370 13462 +f 13122 13006 13258 +f 13122 13258 13370 +f 13006 12886 13130 +f 13006 13130 13258 +f 12886 12746 12998 +f 12886 12998 13130 +f 12746 12594 12854 +f 12746 12854 12998 +f 12594 12454 12682 +f 12594 12682 12854 +f 12454 12270 12522 +f 12454 12522 12682 +f 12270 12114 12334 +f 12270 12334 12522 +f 12114 11898 12158 +f 12114 12158 12334 +f 11898 11710 11954 +f 11898 11954 12158 +f 11710 11510 11742 +f 11710 11742 11954 +f 11510 11266 11518 +f 11510 11518 11742 +f 11266 11058 11242 +f 11266 11242 11518 +f 11058 10766 11018 +f 11058 11018 11242 +f 10766 10514 10734 +f 10766 10734 11018 +f 10514 10250 10442 +f 10514 10442 10734 +f 10250 9934 10170 +f 10250 10170 10442 +f 9934 9658 9854 +f 9934 9854 10170 +f 9658 9346 9506 +f 9658 9506 9854 +f 9346 8982 9198 +f 9346 9198 9506 +f 8982 8666 8846 +f 8982 8846 9198 +f 8666 8306 8458 +f 8666 8458 8846 +f 8306 7886 8054 +f 8306 8054 8458 +f 7886 7506 7702 +f 7886 7702 8054 +f 7506 7122 7242 +f 7506 7242 7702 +f 7122 6654 6782 +f 7122 6782 7242 +f 6654 6186 6330 +f 6654 6330 6782 +f 6186 5734 5898 +f 6186 5898 6330 +f 5734 5254 5342 +f 5734 5342 5898 +f 5254 4706 4770 +f 5254 4770 5342 +f 4706 4134 4206 +f 4706 4206 4770 +f 4134 3594 3694 +f 4134 3694 4206 +f 3594 2930 2978 +f 3594 2978 3694 +f 2930 2174 2222 +f 2930 2222 2978 +f 2174 1354 1386 +f 2174 1386 2222 +f 1385 2221 2253 +f 1385 2253 1401 +f 2221 2977 3025 +f 2221 3025 2253 +f 2977 3693 3725 +f 2977 3725 3025 +f 3693 4205 4325 +f 3693 4325 3725 +f 4205 4769 4881 +f 4205 4881 4325 +f 4769 5341 5421 +f 4769 5421 4881 +f 5341 5897 5969 +f 5341 5969 5421 +f 5897 6329 6501 +f 5897 6501 5969 +f 6329 6781 6925 +f 6329 6925 6501 +f 6781 7241 7385 +f 6781 7385 6925 +f 7241 7701 7805 +f 7241 7805 7385 +f 7701 8053 8257 +f 7701 8257 7805 +f 8053 8457 8617 +f 8053 8617 8257 +f 8457 8845 8989 +f 8457 8989 8617 +f 8845 9197 9369 +f 8845 9369 8989 +f 9197 9505 9725 +f 9197 9725 9369 +f 9505 9853 10037 +f 9505 10037 9725 +f 9853 10169 10345 +f 9853 10345 10037 +f 10169 10441 10645 +f 10169 10645 10345 +f 10441 10733 10941 +f 10441 10941 10645 +f 10733 11017 11201 +f 10733 11201 10941 +f 11017 11241 11469 +f 11017 11469 11201 +f 11241 11517 11717 +f 11241 11717 11469 +f 11517 11741 11961 +f 11517 11961 11717 +f 11741 11953 12173 +f 11741 12173 11961 +f 11953 12157 12389 +f 11953 12389 12173 +f 12157 12333 12561 +f 12157 12561 12389 +f 12333 12521 12761 +f 12333 12761 12561 +f 12521 12681 12917 +f 12521 12917 12761 +f 12681 12853 13085 +f 12681 13085 12917 +f 12853 12997 13225 +f 12853 13225 13085 +f 12997 13129 13393 +f 12997 13393 13225 +f 13129 13257 13493 +f 13129 13493 13393 +f 13257 13369 13621 +f 13257 13621 13493 +f 13369 13461 13713 +f 13369 13713 13621 +f 13461 13549 13793 +f 13461 13793 13713 +f 13549 13645 13889 +f 13549 13889 13793 +f 13645 13705 13973 +f 13645 13973 13889 +f 13705 13777 14005 +f 13705 14005 13973 +f 13777 13785 14037 +f 13777 14037 14005 +f 13785 13825 14101 +f 13785 14101 14037 +f 13825 13857 14117 +f 13825 14117 14101 +f 13857 13865 14133 +f 13857 14133 14117 +f 13865 13866 14134 +f 13865 14134 14133 +f 13866 13858 14118 +f 13866 14118 14134 +f 13858 13826 14102 +f 13858 14102 14118 +f 13826 13786 14038 +f 13826 14038 14102 +f 13786 13778 14006 +f 13786 14006 14038 +f 13778 13706 13974 +f 13778 13974 14006 +f 13706 13646 13890 +f 13706 13890 13974 +f 13646 13550 13794 +f 13646 13794 13890 +f 13550 13462 13714 +f 13550 13714 13794 +f 13462 13370 13622 +f 13462 13622 13714 +f 13370 13258 13494 +f 13370 13494 13622 +f 13258 13130 13394 +f 13258 13394 13494 +f 13130 12998 13226 +f 13130 13226 13394 +f 12998 12854 13086 +f 12998 13086 13226 +f 12854 12682 12918 +f 12854 12918 13086 +f 12682 12522 12762 +f 12682 12762 12918 +f 12522 12334 12562 +f 12522 12562 12762 +f 12334 12158 12390 +f 12334 12390 12562 +f 12158 11954 12174 +f 12158 12174 12390 +f 11954 11742 11962 +f 11954 11962 12174 +f 11742 11518 11718 +f 11742 11718 11962 +f 11518 11242 11470 +f 11518 11470 11718 +f 11242 11018 11202 +f 11242 11202 11470 +f 11018 10734 10942 +f 11018 10942 11202 +f 10734 10442 10646 +f 10734 10646 10942 +f 10442 10170 10346 +f 10442 10346 10646 +f 10170 9854 10038 +f 10170 10038 10346 +f 9854 9506 9726 +f 9854 9726 10038 +f 9506 9198 9370 +f 9506 9370 9726 +f 9198 8846 8990 +f 9198 8990 9370 +f 8846 8458 8618 +f 8846 8618 8990 +f 8458 8054 8258 +f 8458 8258 8618 +f 8054 7702 7806 +f 8054 7806 8258 +f 7702 7242 7386 +f 7702 7386 7806 +f 7242 6782 6926 +f 7242 6926 7386 +f 6782 6330 6502 +f 6782 6502 6926 +f 6330 5898 5970 +f 6330 5970 6502 +f 5898 5342 5422 +f 5898 5422 5970 +f 5342 4770 4882 +f 5342 4882 5422 +f 4770 4206 4326 +f 4770 4326 4882 +f 4206 3694 3726 +f 4206 3726 4326 +f 3694 2978 3026 +f 3694 3026 3726 +f 2978 2222 2254 +f 2978 2254 3026 +f 2222 1386 1402 +f 2222 1402 2254 +f 1401 2253 2285 +f 1401 2285 1417 +f 2253 3025 3073 +f 2253 3073 2285 +f 3025 3725 3789 +f 3025 3789 3073 +f 3725 4325 4465 +f 3725 4465 3789 +f 4325 4881 4977 +f 4325 4977 4465 +f 4881 5421 5525 +f 4881 5525 4977 +f 5421 5969 6081 +f 5421 6081 5525 +f 5969 6501 6589 +f 5969 6589 6081 +f 6501 6925 7097 +f 6501 7097 6589 +f 6925 7385 7521 +f 6925 7521 7097 +f 7385 7805 7957 +f 7385 7957 7521 +f 7805 8257 8377 +f 7805 8377 7957 +f 8257 8617 8797 +f 8257 8797 8377 +f 8617 8989 9165 +f 8617 9165 8797 +f 8989 9369 9521 +f 8989 9521 9165 +f 9369 9725 9877 +f 9369 9877 9521 +f 9725 10037 10217 +f 9725 10217 9877 +f 10037 10345 10545 +f 10037 10545 10217 +f 10345 10645 10837 +f 10345 10837 10545 +f 10645 10941 11113 +f 10645 11113 10837 +f 10941 11201 11413 +f 10941 11413 11113 +f 11201 11469 11669 +f 11201 11669 11413 +f 11469 11717 11905 +f 11469 11905 11669 +f 11717 11961 12165 +f 11717 12165 11905 +f 11961 12173 12405 +f 11961 12405 12165 +f 12173 12389 12585 +f 12173 12585 12405 +f 12389 12561 12813 +f 12389 12813 12585 +f 12561 12761 12965 +f 12561 12965 12813 +f 12761 12917 13153 +f 12761 13153 12965 +f 12917 13085 13313 +f 12917 13313 13153 +f 13085 13225 13453 +f 13085 13453 13313 +f 13225 13393 13613 +f 13225 13613 13453 +f 13393 13493 13737 +f 13393 13737 13613 +f 13493 13621 13841 +f 13493 13841 13737 +f 13621 13713 13965 +f 13621 13965 13841 +f 13713 13793 14029 +f 13713 14029 13965 +f 13793 13889 14125 +f 13793 14125 14029 +f 13889 13973 14197 +f 13889 14197 14125 +f 13973 14005 14257 +f 13973 14257 14197 +f 14005 14037 14305 +f 14005 14305 14257 +f 14037 14101 14313 +f 14037 14313 14305 +f 14101 14117 14345 +f 14101 14345 14313 +f 14117 14133 14361 +f 14117 14361 14345 +f 14133 14134 14362 +f 14133 14362 14361 +f 14134 14118 14346 +f 14134 14346 14362 +f 14118 14102 14314 +f 14118 14314 14346 +f 14102 14038 14306 +f 14102 14306 14314 +f 14038 14006 14258 +f 14038 14258 14306 +f 14006 13974 14198 +f 14006 14198 14258 +f 13974 13890 14126 +f 13974 14126 14198 +f 13890 13794 14030 +f 13890 14030 14126 +f 13794 13714 13966 +f 13794 13966 14030 +f 13714 13622 13842 +f 13714 13842 13966 +f 13622 13494 13738 +f 13622 13738 13842 +f 13494 13394 13614 +f 13494 13614 13738 +f 13394 13226 13454 +f 13394 13454 13614 +f 13226 13086 13314 +f 13226 13314 13454 +f 13086 12918 13154 +f 13086 13154 13314 +f 12918 12762 12966 +f 12918 12966 13154 +f 12762 12562 12814 +f 12762 12814 12966 +f 12562 12390 12586 +f 12562 12586 12814 +f 12390 12174 12406 +f 12390 12406 12586 +f 12174 11962 12166 +f 12174 12166 12406 +f 11962 11718 11906 +f 11962 11906 12166 +f 11718 11470 11670 +f 11718 11670 11906 +f 11470 11202 11414 +f 11470 11414 11670 +f 11202 10942 11114 +f 11202 11114 11414 +f 10942 10646 10838 +f 10942 10838 11114 +f 10646 10346 10546 +f 10646 10546 10838 +f 10346 10038 10218 +f 10346 10218 10546 +f 10038 9726 9878 +f 10038 9878 10218 +f 9726 9370 9522 +f 9726 9522 9878 +f 9370 8990 9166 +f 9370 9166 9522 +f 8990 8618 8798 +f 8990 8798 9166 +f 8618 8258 8378 +f 8618 8378 8798 +f 8258 7806 7958 +f 8258 7958 8378 +f 7806 7386 7522 +f 7806 7522 7958 +f 7386 6926 7098 +f 7386 7098 7522 +f 6926 6502 6590 +f 6926 6590 7098 +f 6502 5970 6082 +f 6502 6082 6590 +f 5970 5422 5526 +f 5970 5526 6082 +f 5422 4882 4978 +f 5422 4978 5526 +f 4882 4326 4466 +f 4882 4466 4978 +f 4326 3726 3790 +f 4326 3790 4466 +f 3726 3026 3074 +f 3726 3074 3790 +f 3026 2254 2286 +f 3026 2286 3074 +f 2254 1402 1418 +f 2254 1418 2286 +f 1417 2285 2333 +f 1417 2333 1473 +f 2285 3073 3121 +f 2285 3121 2333 +f 3073 3789 3821 +f 3073 3821 3121 +f 3789 4465 4497 +f 3789 4497 3821 +f 4465 4977 5105 +f 4465 5105 4497 +f 4977 5525 5629 +f 4977 5629 5105 +f 5525 6081 6153 +f 5525 6153 5629 +f 6081 6589 6685 +f 6081 6685 6153 +f 6589 7097 7209 +f 6589 7209 6685 +f 7097 7521 7661 +f 7097 7661 7209 +f 7521 7957 8109 +f 7521 8109 7661 +f 7957 8377 8505 +f 7957 8505 8109 +f 8377 8797 8917 +f 8377 8917 8505 +f 8797 9165 9313 +f 8797 9313 8917 +f 9165 9521 9701 +f 9165 9701 9313 +f 9521 9877 10045 +f 9521 10045 9701 +f 9877 10217 10377 +f 9877 10377 10045 +f 10217 10545 10701 +f 10217 10701 10377 +f 10545 10837 11033 +f 10545 11033 10701 +f 10837 11113 11329 +f 10837 11329 11033 +f 11113 11413 11573 +f 11113 11573 11329 +f 11413 11669 11849 +f 11413 11849 11573 +f 11669 11905 12129 +f 11669 12129 11849 +f 11905 12165 12349 +f 11905 12349 12129 +f 12165 12405 12569 +f 12165 12569 12349 +f 12405 12585 12821 +f 12405 12821 12569 +f 12585 12813 12989 +f 12585 12989 12821 +f 12813 12965 13185 +f 12813 13185 12989 +f 12965 13153 13353 +f 12965 13353 13185 +f 13153 13313 13517 +f 13153 13517 13353 +f 13313 13453 13689 +f 13313 13689 13517 +f 13453 13613 13809 +f 13453 13809 13689 +f 13613 13737 13957 +f 13613 13957 13809 +f 13737 13841 14053 +f 13737 14053 13957 +f 13841 13965 14173 +f 13841 14173 14053 +f 13965 14029 14265 +f 13965 14265 14173 +f 14029 14125 14337 +f 14029 14337 14265 +f 14125 14197 14433 +f 14125 14433 14337 +f 14197 14257 14477 +f 14197 14477 14433 +f 14257 14305 14509 +f 14257 14509 14477 +f 14305 14313 14541 +f 14305 14541 14509 +f 14313 14345 14581 +f 14313 14581 14541 +f 14345 14361 14597 +f 14345 14597 14581 +f 14361 14362 14598 +f 14361 14598 14597 +f 14362 14346 14582 +f 14362 14582 14598 +f 14346 14314 14542 +f 14346 14542 14582 +f 14314 14306 14510 +f 14314 14510 14542 +f 14306 14258 14478 +f 14306 14478 14510 +f 14258 14198 14434 +f 14258 14434 14478 +f 14198 14126 14338 +f 14198 14338 14434 +f 14126 14030 14266 +f 14126 14266 14338 +f 14030 13966 14174 +f 14030 14174 14266 +f 13966 13842 14054 +f 13966 14054 14174 +f 13842 13738 13958 +f 13842 13958 14054 +f 13738 13614 13810 +f 13738 13810 13958 +f 13614 13454 13690 +f 13614 13690 13810 +f 13454 13314 13518 +f 13454 13518 13690 +f 13314 13154 13354 +f 13314 13354 13518 +f 13154 12966 13186 +f 13154 13186 13354 +f 12966 12814 12990 +f 12966 12990 13186 +f 12814 12586 12822 +f 12814 12822 12990 +f 12586 12406 12570 +f 12586 12570 12822 +f 12406 12166 12350 +f 12406 12350 12570 +f 12166 11906 12130 +f 12166 12130 12350 +f 11906 11670 11850 +f 11906 11850 12130 +f 11670 11414 11574 +f 11670 11574 11850 +f 11414 11114 11330 +f 11414 11330 11574 +f 11114 10838 11034 +f 11114 11034 11330 +f 10838 10546 10702 +f 10838 10702 11034 +f 10546 10218 10378 +f 10546 10378 10702 +f 10218 9878 10046 +f 10218 10046 10378 +f 9878 9522 9702 +f 9878 9702 10046 +f 9522 9166 9314 +f 9522 9314 9702 +f 9166 8798 8918 +f 9166 8918 9314 +f 8798 8378 8506 +f 8798 8506 8918 +f 8378 7958 8110 +f 8378 8110 8506 +f 7958 7522 7662 +f 7958 7662 8110 +f 7522 7098 7210 +f 7522 7210 7662 +f 7098 6590 6686 +f 7098 6686 7210 +f 6590 6082 6154 +f 6590 6154 6686 +f 6082 5526 5630 +f 6082 5630 6154 +f 5526 4978 5106 +f 5526 5106 5630 +f 4978 4466 4498 +f 4978 4498 5106 +f 4466 3790 3822 +f 4466 3822 4498 +f 3790 3074 3122 +f 3790 3122 3822 +f 3074 2286 2334 +f 3074 2334 3122 +f 2286 1418 1474 +f 2286 1474 2334 +f 1473 2333 2373 +f 1473 2373 1497 +f 2333 3121 3153 +f 2333 3153 2373 +f 3121 3821 3893 +f 3121 3893 3153 +f 3821 4497 4561 +f 3821 4561 3893 +f 4497 5105 5197 +f 4497 5197 4561 +f 5105 5629 5749 +f 5105 5749 5197 +f 5629 6153 6265 +f 5629 6265 5749 +f 6153 6685 6789 +f 6153 6789 6265 +f 6685 7209 7281 +f 6685 7281 6789 +f 7209 7661 7781 +f 7209 7781 7281 +f 7661 8109 8241 +f 7661 8241 7781 +f 8109 8505 8681 +f 8109 8681 8241 +f 8505 8917 9061 +f 8505 9061 8681 +f 8917 9313 9441 +f 8917 9441 9061 +f 9313 9701 9829 +f 9313 9829 9441 +f 9701 10045 10193 +f 9701 10193 9829 +f 10045 10377 10561 +f 10045 10561 10193 +f 10377 10701 10861 +f 10377 10861 10561 +f 10701 11033 11169 +f 10701 11169 10861 +f 11033 11329 11485 +f 11033 11485 11169 +f 11329 11573 11793 +f 11329 11793 11485 +f 11573 11849 12033 +f 11573 12033 11793 +f 11849 12129 12285 +f 11849 12285 12033 +f 12129 12349 12529 +f 12129 12529 12285 +f 12349 12569 12777 +f 12349 12777 12529 +f 12569 12821 12973 +f 12569 12973 12777 +f 12821 12989 13193 +f 12821 13193 12973 +f 12989 13185 13401 +f 12989 13401 13193 +f 13185 13353 13557 +f 13185 13557 13401 +f 13353 13517 13721 +f 13353 13721 13557 +f 13517 13689 13881 +f 13517 13881 13721 +f 13689 13809 14013 +f 13689 14013 13881 +f 13809 13957 14149 +f 13809 14149 14013 +f 13957 14053 14273 +f 13957 14273 14149 +f 14053 14173 14369 +f 14053 14369 14273 +f 14173 14265 14469 +f 14173 14469 14369 +f 14265 14337 14549 +f 14265 14549 14469 +f 14337 14433 14621 +f 14337 14621 14549 +f 14433 14477 14681 +f 14433 14681 14621 +f 14477 14509 14729 +f 14477 14729 14681 +f 14509 14541 14753 +f 14509 14753 14729 +f 14541 14581 14785 +f 14541 14785 14753 +f 14581 14597 14793 +f 14581 14793 14785 +f 14597 14598 14794 +f 14597 14794 14793 +f 14598 14582 14786 +f 14598 14786 14794 +f 14582 14542 14754 +f 14582 14754 14786 +f 14542 14510 14730 +f 14542 14730 14754 +f 14510 14478 14682 +f 14510 14682 14730 +f 14478 14434 14622 +f 14478 14622 14682 +f 14434 14338 14550 +f 14434 14550 14622 +f 14338 14266 14470 +f 14338 14470 14550 +f 14266 14174 14370 +f 14266 14370 14470 +f 14174 14054 14274 +f 14174 14274 14370 +f 14054 13958 14150 +f 14054 14150 14274 +f 13958 13810 14014 +f 13958 14014 14150 +f 13810 13690 13882 +f 13810 13882 14014 +f 13690 13518 13722 +f 13690 13722 13882 +f 13518 13354 13558 +f 13518 13558 13722 +f 13354 13186 13402 +f 13354 13402 13558 +f 13186 12990 13194 +f 13186 13194 13402 +f 12990 12822 12974 +f 12990 12974 13194 +f 12822 12570 12778 +f 12822 12778 12974 +f 12570 12350 12530 +f 12570 12530 12778 +f 12350 12130 12286 +f 12350 12286 12530 +f 12130 11850 12034 +f 12130 12034 12286 +f 11850 11574 11794 +f 11850 11794 12034 +f 11574 11330 11486 +f 11574 11486 11794 +f 11330 11034 11170 +f 11330 11170 11486 +f 11034 10702 10862 +f 11034 10862 11170 +f 10702 10378 10562 +f 10702 10562 10862 +f 10378 10046 10194 +f 10378 10194 10562 +f 10046 9702 9830 +f 10046 9830 10194 +f 9702 9314 9442 +f 9702 9442 9830 +f 9314 8918 9062 +f 9314 9062 9442 +f 8918 8506 8682 +f 8918 8682 9062 +f 8506 8110 8242 +f 8506 8242 8682 +f 8110 7662 7782 +f 8110 7782 8242 +f 7662 7210 7282 +f 7662 7282 7782 +f 7210 6686 6790 +f 7210 6790 7282 +f 6686 6154 6266 +f 6686 6266 6790 +f 6154 5630 5750 +f 6154 5750 6266 +f 5630 5106 5198 +f 5630 5198 5750 +f 5106 4498 4562 +f 5106 4562 5198 +f 4498 3822 3894 +f 4498 3894 4562 +f 3822 3122 3154 +f 3822 3154 3894 +f 3122 2334 2374 +f 3122 2374 3154 +f 2334 1474 1498 +f 2334 1498 2374 +f 1497 2373 2405 +f 1497 2405 1521 +f 2373 3153 3185 +f 2373 3185 2405 +f 3153 3893 3917 +f 3153 3917 3185 +f 3893 4561 4625 +f 3893 4625 3917 +f 4561 5197 5261 +f 4561 5261 4625 +f 5197 5749 5865 +f 5197 5865 5261 +f 5749 6265 6385 +f 5749 6385 5865 +f 6265 6789 6885 +f 6265 6885 6385 +f 6789 7281 7409 +f 6789 7409 6885 +f 7281 7781 7853 +f 7281 7853 7409 +f 7781 8241 8337 +f 7781 8337 7853 +f 8241 8681 8789 +f 8241 8789 8337 +f 8681 9061 9221 +f 8681 9221 8789 +f 9061 9441 9593 +f 9061 9593 9221 +f 9441 9829 9949 +f 9441 9949 9593 +f 9829 10193 10337 +f 9829 10337 9949 +f 10193 10561 10677 +f 10193 10677 10337 +f 10561 10861 11041 +f 10561 11041 10677 +f 10861 11169 11361 +f 10861 11361 11041 +f 11169 11485 11637 +f 11169 11637 11361 +f 11485 11793 11921 +f 11485 11921 11637 +f 11793 12033 12213 +f 11793 12213 11921 +f 12033 12285 12473 +f 12033 12473 12213 +f 12285 12529 12705 +f 12285 12705 12473 +f 12529 12777 12933 +f 12529 12933 12705 +f 12777 12973 13177 +f 12777 13177 12933 +f 12973 13193 13361 +f 12973 13361 13177 +f 13193 13401 13565 +f 13193 13565 13361 +f 13401 13557 13745 +f 13401 13745 13565 +f 13557 13721 13913 +f 13557 13913 13745 +f 13721 13881 14061 +f 13721 14061 13913 +f 13881 14013 14217 +f 13881 14217 14061 +f 14013 14149 14321 +f 14013 14321 14217 +f 14149 14273 14461 +f 14149 14461 14321 +f 14273 14369 14573 +f 14273 14573 14461 +f 14369 14469 14673 +f 14369 14673 14573 +f 14469 14549 14737 +f 14469 14737 14673 +f 14549 14621 14825 +f 14549 14825 14737 +f 14621 14681 14893 +f 14621 14893 14825 +f 14681 14729 14917 +f 14681 14917 14893 +f 14729 14753 14949 +f 14729 14949 14917 +f 14753 14785 14989 +f 14753 14989 14949 +f 14785 14793 14997 +f 14785 14997 14989 +f 14793 14794 14998 +f 14793 14998 14997 +f 14794 14786 14990 +f 14794 14990 14998 +f 14786 14754 14950 +f 14786 14950 14990 +f 14754 14730 14918 +f 14754 14918 14950 +f 14730 14682 14894 +f 14730 14894 14918 +f 14682 14622 14826 +f 14682 14826 14894 +f 14622 14550 14738 +f 14622 14738 14826 +f 14550 14470 14674 +f 14550 14674 14738 +f 14470 14370 14574 +f 14470 14574 14674 +f 14370 14274 14462 +f 14370 14462 14574 +f 14274 14150 14322 +f 14274 14322 14462 +f 14150 14014 14218 +f 14150 14218 14322 +f 14014 13882 14062 +f 14014 14062 14218 +f 13882 13722 13914 +f 13882 13914 14062 +f 13722 13558 13746 +f 13722 13746 13914 +f 13558 13402 13566 +f 13558 13566 13746 +f 13402 13194 13362 +f 13402 13362 13566 +f 13194 12974 13178 +f 13194 13178 13362 +f 12974 12778 12934 +f 12974 12934 13178 +f 12778 12530 12706 +f 12778 12706 12934 +f 12530 12286 12474 +f 12530 12474 12706 +f 12286 12034 12214 +f 12286 12214 12474 +f 12034 11794 11922 +f 12034 11922 12214 +f 11794 11486 11638 +f 11794 11638 11922 +f 11486 11170 11362 +f 11486 11362 11638 +f 11170 10862 11042 +f 11170 11042 11362 +f 10862 10562 10678 +f 10862 10678 11042 +f 10562 10194 10338 +f 10562 10338 10678 +f 10194 9830 9950 +f 10194 9950 10338 +f 9830 9442 9594 +f 9830 9594 9950 +f 9442 9062 9222 +f 9442 9222 9594 +f 9062 8682 8790 +f 9062 8790 9222 +f 8682 8242 8338 +f 8682 8338 8790 +f 8242 7782 7854 +f 8242 7854 8338 +f 7782 7282 7410 +f 7782 7410 7854 +f 7282 6790 6886 +f 7282 6886 7410 +f 6790 6266 6386 +f 6790 6386 6886 +f 6266 5750 5866 +f 6266 5866 6386 +f 5750 5198 5262 +f 5750 5262 5866 +f 5198 4562 4626 +f 5198 4626 5262 +f 4562 3894 3918 +f 4562 3918 4626 +f 3894 3154 3186 +f 3894 3186 3918 +f 3154 2374 2406 +f 3154 2406 3186 +f 2374 1498 1522 +f 2374 1522 2406 +f 1521 2405 2453 +f 1521 2453 1553 +f 2405 3185 3249 +f 2405 3249 2453 +f 3185 3917 3989 +f 3185 3989 3249 +f 3917 4625 4657 +f 3917 4657 3989 +f 4625 5261 5309 +f 4625 5309 4657 +f 5261 5865 5913 +f 5261 5913 5309 +f 5865 6385 6493 +f 5865 6493 5913 +f 6385 6885 7021 +f 6385 7021 6493 +f 6885 7409 7489 +f 6885 7489 7021 +f 7409 7853 7981 +f 7409 7981 7489 +f 7853 8337 8433 +f 7853 8433 7981 +f 8337 8789 8877 +f 8337 8877 8433 +f 8789 9221 9321 +f 8789 9321 8877 +f 9221 9593 9741 +f 9221 9741 9321 +f 9593 9949 10125 +f 9593 10125 9741 +f 9949 10337 10465 +f 9949 10465 10125 +f 10337 10677 10829 +f 10337 10829 10465 +f 10677 11041 11153 +f 10677 11153 10829 +f 11041 11361 11493 +f 11041 11493 11153 +f 11361 11637 11809 +f 11361 11809 11493 +f 11637 11921 12089 +f 11637 12089 11809 +f 11921 12213 12365 +f 11921 12365 12089 +f 12213 12473 12625 +f 12213 12625 12365 +f 12473 12705 12877 +f 12473 12877 12625 +f 12705 12933 13113 +f 12705 13113 12877 +f 12933 13177 13329 +f 12933 13329 13113 +f 13177 13361 13525 +f 13177 13525 13329 +f 13361 13565 13729 +f 13361 13729 13525 +f 13565 13745 13921 +f 13565 13921 13729 +f 13745 13913 14085 +f 13745 14085 13921 +f 13913 14061 14241 +f 13913 14241 14085 +f 14061 14217 14393 +f 14061 14393 14241 +f 14217 14321 14517 +f 14217 14517 14393 +f 14321 14461 14637 +f 14321 14637 14517 +f 14461 14573 14745 +f 14461 14745 14637 +f 14573 14673 14857 +f 14573 14857 14745 +f 14673 14737 14925 +f 14673 14925 14857 +f 14737 14825 15005 +f 14737 15005 14925 +f 14825 14893 15061 +f 14825 15061 15005 +f 14893 14917 15121 +f 14893 15121 15061 +f 14917 14949 15137 +f 14917 15137 15121 +f 14949 14989 15161 +f 14949 15161 15137 +f 14989 14997 15177 +f 14989 15177 15161 +f 14997 14998 15178 +f 14997 15178 15177 +f 14998 14990 15162 +f 14998 15162 15178 +f 14990 14950 15138 +f 14990 15138 15162 +f 14950 14918 15122 +f 14950 15122 15138 +f 14918 14894 15062 +f 14918 15062 15122 +f 14894 14826 15006 +f 14894 15006 15062 +f 14826 14738 14926 +f 14826 14926 15006 +f 14738 14674 14858 +f 14738 14858 14926 +f 14674 14574 14746 +f 14674 14746 14858 +f 14574 14462 14638 +f 14574 14638 14746 +f 14462 14322 14518 +f 14462 14518 14638 +f 14322 14218 14394 +f 14322 14394 14518 +f 14218 14062 14242 +f 14218 14242 14394 +f 14062 13914 14086 +f 14062 14086 14242 +f 13914 13746 13922 +f 13914 13922 14086 +f 13746 13566 13730 +f 13746 13730 13922 +f 13566 13362 13526 +f 13566 13526 13730 +f 13362 13178 13330 +f 13362 13330 13526 +f 13178 12934 13114 +f 13178 13114 13330 +f 12934 12706 12878 +f 12934 12878 13114 +f 12706 12474 12626 +f 12706 12626 12878 +f 12474 12214 12366 +f 12474 12366 12626 +f 12214 11922 12090 +f 12214 12090 12366 +f 11922 11638 11810 +f 11922 11810 12090 +f 11638 11362 11494 +f 11638 11494 11810 +f 11362 11042 11154 +f 11362 11154 11494 +f 11042 10678 10830 +f 11042 10830 11154 +f 10678 10338 10466 +f 10678 10466 10830 +f 10338 9950 10126 +f 10338 10126 10466 +f 9950 9594 9742 +f 9950 9742 10126 +f 9594 9222 9322 +f 9594 9322 9742 +f 9222 8790 8878 +f 9222 8878 9322 +f 8790 8338 8434 +f 8790 8434 8878 +f 8338 7854 7982 +f 8338 7982 8434 +f 7854 7410 7490 +f 7854 7490 7982 +f 7410 6886 7022 +f 7410 7022 7490 +f 6886 6386 6494 +f 6886 6494 7022 +f 6386 5866 5914 +f 6386 5914 6494 +f 5866 5262 5310 +f 5866 5310 5914 +f 5262 4626 4658 +f 5262 4658 5310 +f 4626 3918 3990 +f 4626 3990 4658 +f 3918 3186 3250 +f 3918 3250 3990 +f 3186 2406 2454 +f 3186 2454 3250 +f 2406 1522 1554 +f 2406 1554 2454 +f 1553 2453 2469 +f 1553 2469 1569 +f 2453 3249 3281 +f 2453 3281 2469 +f 3249 3989 4021 +f 3249 4021 3281 +f 3989 4657 4737 +f 3989 4737 4021 +f 4657 5309 5357 +f 4657 5357 4737 +f 5309 5913 5977 +f 5309 5977 5357 +f 5913 6493 6549 +f 5913 6549 5977 +f 6493 7021 7113 +f 6493 7113 6549 +f 7021 7489 7609 +f 7021 7609 7113 +f 7489 7981 8077 +f 7489 8077 7609 +f 7981 8433 8537 +f 7981 8537 8077 +f 8433 8877 8997 +f 8433 8997 8537 +f 8877 9321 9401 +f 8877 9401 8997 +f 9321 9741 9845 +f 9321 9845 9401 +f 9741 10125 10233 +f 9741 10233 9845 +f 10125 10465 10621 +f 10125 10621 10233 +f 10465 10829 10957 +f 10465 10957 10621 +f 10829 11153 11297 +f 10829 11297 10957 +f 11153 11493 11597 +f 11153 11597 11297 +f 11493 11809 11913 +f 11493 11913 11597 +f 11809 12089 12229 +f 11809 12229 11913 +f 12089 12365 12513 +f 12089 12513 12229 +f 12365 12625 12769 +f 12365 12769 12513 +f 12625 12877 13029 +f 12625 13029 12769 +f 12877 13113 13241 +f 12877 13241 13029 +f 13113 13329 13469 +f 13113 13469 13241 +f 13329 13525 13697 +f 13329 13697 13469 +f 13525 13729 13897 +f 13525 13897 13697 +f 13729 13921 14077 +f 13729 14077 13897 +f 13921 14085 14249 +f 13921 14249 14077 +f 14085 14241 14417 +f 14085 14417 14249 +f 14241 14393 14533 +f 14241 14533 14417 +f 14393 14517 14689 +f 14393 14689 14533 +f 14517 14637 14801 +f 14517 14801 14689 +f 14637 14745 14909 +f 14637 14909 14801 +f 14745 14857 15021 +f 14745 15021 14909 +f 14857 14925 15097 +f 14857 15097 15021 +f 14925 15005 15169 +f 14925 15169 15097 +f 15005 15061 15241 +f 15005 15241 15169 +f 15061 15121 15285 +f 15061 15285 15241 +f 15121 15137 15301 +f 15121 15301 15285 +f 15137 15161 15333 +f 15137 15333 15301 +f 15161 15177 15357 +f 15161 15357 15333 +f 15177 15178 15358 +f 15177 15358 15357 +f 15178 15162 15334 +f 15178 15334 15358 +f 15162 15138 15302 +f 15162 15302 15334 +f 15138 15122 15286 +f 15138 15286 15302 +f 15122 15062 15242 +f 15122 15242 15286 +f 15062 15006 15170 +f 15062 15170 15242 +f 15006 14926 15098 +f 15006 15098 15170 +f 14926 14858 15022 +f 14926 15022 15098 +f 14858 14746 14910 +f 14858 14910 15022 +f 14746 14638 14802 +f 14746 14802 14910 +f 14638 14518 14690 +f 14638 14690 14802 +f 14518 14394 14534 +f 14518 14534 14690 +f 14394 14242 14418 +f 14394 14418 14534 +f 14242 14086 14250 +f 14242 14250 14418 +f 14086 13922 14078 +f 14086 14078 14250 +f 13922 13730 13898 +f 13922 13898 14078 +f 13730 13526 13698 +f 13730 13698 13898 +f 13526 13330 13470 +f 13526 13470 13698 +f 13330 13114 13242 +f 13330 13242 13470 +f 13114 12878 13030 +f 13114 13030 13242 +f 12878 12626 12770 +f 12878 12770 13030 +f 12626 12366 12514 +f 12626 12514 12770 +f 12366 12090 12230 +f 12366 12230 12514 +f 12090 11810 11914 +f 12090 11914 12230 +f 11810 11494 11598 +f 11810 11598 11914 +f 11494 11154 11298 +f 11494 11298 11598 +f 11154 10830 10958 +f 11154 10958 11298 +f 10830 10466 10622 +f 10830 10622 10958 +f 10466 10126 10234 +f 10466 10234 10622 +f 10126 9742 9846 +f 10126 9846 10234 +f 9742 9322 9402 +f 9742 9402 9846 +f 9322 8878 8998 +f 9322 8998 9402 +f 8878 8434 8538 +f 8878 8538 8998 +f 8434 7982 8078 +f 8434 8078 8538 +f 7982 7490 7610 +f 7982 7610 8078 +f 7490 7022 7114 +f 7490 7114 7610 +f 7022 6494 6550 +f 7022 6550 7114 +f 6494 5914 5978 +f 6494 5978 6550 +f 5914 5310 5358 +f 5914 5358 5978 +f 5310 4658 4738 +f 5310 4738 5358 +f 4658 3990 4022 +f 4658 4022 4738 +f 3990 3250 3282 +f 3990 3282 4022 +f 3250 2454 2470 +f 3250 2470 3282 +f 2454 1554 1570 +f 2454 1570 2470 +f 1569 2469 2485 +f 1569 2485 1585 +f 2469 3281 3321 +f 2469 3321 2485 +f 3281 4021 4053 +f 3281 4053 3321 +f 4021 4737 4753 +f 4021 4753 4053 +f 4737 5357 5389 +f 4737 5389 4753 +f 5357 5977 6049 +f 5357 6049 5389 +f 5977 6549 6637 +f 5977 6637 6049 +f 6549 7113 7185 +f 6549 7185 6637 +f 7113 7609 7717 +f 7113 7717 7185 +f 7609 8077 8201 +f 7609 8201 7717 +f 8077 8537 8673 +f 8077 8673 8201 +f 8537 8997 9085 +f 8537 9085 8673 +f 8997 9401 9537 +f 8997 9537 9085 +f 9401 9845 9925 +f 9401 9925 9537 +f 9845 10233 10321 +f 9845 10321 9925 +f 10233 10621 10709 +f 10233 10709 10321 +f 10621 10957 11081 +f 10621 11081 10709 +f 10957 11297 11429 +f 10957 11429 11081 +f 11297 11597 11757 +f 11297 11757 11429 +f 11597 11913 12057 +f 11597 12057 11757 +f 11913 12229 12341 +f 11913 12341 12057 +f 12229 12513 12633 +f 12229 12633 12341 +f 12513 12769 12893 +f 12513 12893 12633 +f 12769 13029 13161 +f 12769 13161 12893 +f 13029 13241 13421 +f 13029 13421 13161 +f 13241 13469 13629 +f 13241 13629 13421 +f 13469 13697 13817 +f 13469 13817 13629 +f 13697 13897 14021 +f 13697 14021 13817 +f 13897 14077 14225 +f 13897 14225 14021 +f 14077 14249 14401 +f 14077 14401 14225 +f 14249 14417 14557 +f 14249 14557 14401 +f 14417 14533 14713 +f 14417 14713 14557 +f 14533 14689 14833 +f 14533 14833 14713 +f 14689 14801 14957 +f 14689 14957 14833 +f 14801 14909 15073 +f 14801 15073 14957 +f 14909 15021 15153 +f 14909 15153 15073 +f 15021 15097 15261 +f 15021 15261 15153 +f 15097 15169 15325 +f 15097 15325 15261 +f 15169 15241 15389 +f 15169 15389 15325 +f 15241 15285 15433 +f 15241 15433 15389 +f 15285 15301 15481 +f 15285 15481 15433 +f 15301 15333 15497 +f 15301 15497 15481 +f 15333 15357 15505 +f 15333 15505 15497 +f 15357 15358 15506 +f 15357 15506 15505 +f 15358 15334 15498 +f 15358 15498 15506 +f 15334 15302 15482 +f 15334 15482 15498 +f 15302 15286 15434 +f 15302 15434 15482 +f 15286 15242 15390 +f 15286 15390 15434 +f 15242 15170 15326 +f 15242 15326 15390 +f 15170 15098 15262 +f 15170 15262 15326 +f 15098 15022 15154 +f 15098 15154 15262 +f 15022 14910 15074 +f 15022 15074 15154 +f 14910 14802 14958 +f 14910 14958 15074 +f 14802 14690 14834 +f 14802 14834 14958 +f 14690 14534 14714 +f 14690 14714 14834 +f 14534 14418 14558 +f 14534 14558 14714 +f 14418 14250 14402 +f 14418 14402 14558 +f 14250 14078 14226 +f 14250 14226 14402 +f 14078 13898 14022 +f 14078 14022 14226 +f 13898 13698 13818 +f 13898 13818 14022 +f 13698 13470 13630 +f 13698 13630 13818 +f 13470 13242 13422 +f 13470 13422 13630 +f 13242 13030 13162 +f 13242 13162 13422 +f 13030 12770 12894 +f 13030 12894 13162 +f 12770 12514 12634 +f 12770 12634 12894 +f 12514 12230 12342 +f 12514 12342 12634 +f 12230 11914 12058 +f 12230 12058 12342 +f 11914 11598 11758 +f 11914 11758 12058 +f 11598 11298 11430 +f 11598 11430 11758 +f 11298 10958 11082 +f 11298 11082 11430 +f 10958 10622 10710 +f 10958 10710 11082 +f 10622 10234 10322 +f 10622 10322 10710 +f 10234 9846 9926 +f 10234 9926 10322 +f 9846 9402 9538 +f 9846 9538 9926 +f 9402 8998 9086 +f 9402 9086 9538 +f 8998 8538 8674 +f 8998 8674 9086 +f 8538 8078 8202 +f 8538 8202 8674 +f 8078 7610 7718 +f 8078 7718 8202 +f 7610 7114 7186 +f 7610 7186 7718 +f 7114 6550 6638 +f 7114 6638 7186 +f 6550 5978 6050 +f 6550 6050 6638 +f 5978 5358 5390 +f 5978 5390 6050 +f 5358 4738 4754 +f 5358 4754 5390 +f 4738 4022 4054 +f 4738 4054 4754 +f 4022 3282 3322 +f 4022 3322 4054 +f 3282 2470 2486 +f 3282 2486 3322 +f 2470 1570 1586 +f 2470 1586 2486 +f 1585 2485 2533 +f 1585 2533 1617 +f 2485 3321 3353 +f 2485 3353 2533 +f 3321 4053 4125 +f 3321 4125 3353 +f 4053 4753 4801 +f 4053 4801 4125 +f 4753 5389 5493 +f 4753 5493 4801 +f 5389 6049 6097 +f 5389 6097 5493 +f 6049 6637 6677 +f 6049 6677 6097 +f 6637 7185 7233 +f 6637 7233 6677 +f 7185 7717 7773 +f 7185 7773 7233 +f 7717 8201 8289 +f 7717 8289 7773 +f 8201 8673 8741 +f 8201 8741 8289 +f 8673 9085 9213 +f 8673 9213 8741 +f 9085 9537 9633 +f 9085 9633 9213 +f 9537 9925 10053 +f 9537 10053 9633 +f 9925 10321 10417 +f 9925 10417 10053 +f 10321 10709 10813 +f 10321 10813 10417 +f 10709 11081 11177 +f 10709 11177 10813 +f 11081 11429 11533 +f 11081 11533 11177 +f 11429 11757 11857 +f 11429 11857 11533 +f 11757 12057 12189 +f 11757 12189 11857 +f 12057 12341 12489 +f 12057 12489 12189 +f 12341 12633 12753 +f 12341 12753 12489 +f 12633 12893 13053 +f 12633 13053 12753 +f 12893 13161 13273 +f 12893 13273 13053 +f 13161 13421 13509 +f 13161 13509 13273 +f 13421 13629 13769 +f 13421 13769 13509 +f 13629 13817 13981 +f 13629 13981 13769 +f 13817 14021 14165 +f 13817 14165 13981 +f 14021 14225 14353 +f 14021 14353 14165 +f 14225 14401 14525 +f 14225 14525 14353 +f 14401 14557 14705 +f 14401 14705 14525 +f 14557 14713 14841 +f 14557 14841 14705 +f 14713 14833 14981 +f 14713 14981 14841 +f 14833 14957 15105 +f 14833 15105 14981 +f 14957 15073 15209 +f 14957 15209 15105 +f 15073 15153 15293 +f 15073 15293 15209 +f 15153 15261 15397 +f 15153 15397 15293 +f 15261 15325 15465 +f 15261 15465 15397 +f 15325 15389 15529 +f 15325 15529 15465 +f 15389 15433 15589 +f 15389 15589 15529 +f 15433 15481 15613 +f 15433 15613 15589 +f 15481 15497 15629 +f 15481 15629 15613 +f 15497 15505 15661 +f 15497 15661 15629 +f 15505 15506 15662 +f 15505 15662 15661 +f 15506 15498 15630 +f 15506 15630 15662 +f 15498 15482 15614 +f 15498 15614 15630 +f 15482 15434 15590 +f 15482 15590 15614 +f 15434 15390 15530 +f 15434 15530 15590 +f 15390 15326 15466 +f 15390 15466 15530 +f 15326 15262 15398 +f 15326 15398 15466 +f 15262 15154 15294 +f 15262 15294 15398 +f 15154 15074 15210 +f 15154 15210 15294 +f 15074 14958 15106 +f 15074 15106 15210 +f 14958 14834 14982 +f 14958 14982 15106 +f 14834 14714 14842 +f 14834 14842 14982 +f 14714 14558 14706 +f 14714 14706 14842 +f 14558 14402 14526 +f 14558 14526 14706 +f 14402 14226 14354 +f 14402 14354 14526 +f 14226 14022 14166 +f 14226 14166 14354 +f 14022 13818 13982 +f 14022 13982 14166 +f 13818 13630 13770 +f 13818 13770 13982 +f 13630 13422 13510 +f 13630 13510 13770 +f 13422 13162 13274 +f 13422 13274 13510 +f 13162 12894 13054 +f 13162 13054 13274 +f 12894 12634 12754 +f 12894 12754 13054 +f 12634 12342 12490 +f 12634 12490 12754 +f 12342 12058 12190 +f 12342 12190 12490 +f 12058 11758 11858 +f 12058 11858 12190 +f 11758 11430 11534 +f 11758 11534 11858 +f 11430 11082 11178 +f 11430 11178 11534 +f 11082 10710 10814 +f 11082 10814 11178 +f 10710 10322 10418 +f 10710 10418 10814 +f 10322 9926 10054 +f 10322 10054 10418 +f 9926 9538 9634 +f 9926 9634 10054 +f 9538 9086 9214 +f 9538 9214 9634 +f 9086 8674 8742 +f 9086 8742 9214 +f 8674 8202 8290 +f 8674 8290 8742 +f 8202 7718 7774 +f 8202 7774 8290 +f 7718 7186 7234 +f 7718 7234 7774 +f 7186 6638 6678 +f 7186 6678 7234 +f 6638 6050 6098 +f 6638 6098 6678 +f 6050 5390 5494 +f 6050 5494 6098 +f 5390 4754 4802 +f 5390 4802 5494 +f 4754 4054 4126 +f 4754 4126 4802 +f 4054 3322 3354 +f 4054 3354 4126 +f 3322 2486 2534 +f 3322 2534 3354 +f 2486 1586 1618 +f 2486 1618 2534 +f 1617 2533 2581 +f 1617 2581 1649 +f 2533 3353 3401 +f 2533 3401 2581 +f 3353 4125 4165 +f 3353 4165 3401 +f 4125 4801 4849 +f 4125 4849 4165 +f 4801 5493 5517 +f 4801 5517 4849 +f 5493 6097 6121 +f 5493 6121 5517 +f 6097 6677 6717 +f 6097 6717 6121 +f 6677 7233 7289 +f 6677 7289 6717 +f 7233 7773 7829 +f 7233 7829 7289 +f 7773 8289 8329 +f 7773 8329 7829 +f 8289 8741 8837 +f 8289 8837 8329 +f 8741 9213 9281 +f 8741 9281 8837 +f 9213 9633 9733 +f 9213 9733 9281 +f 9633 10053 10153 +f 9633 10153 9733 +f 10053 10417 10553 +f 10053 10553 10153 +f 10417 10813 10917 +f 10417 10917 10553 +f 10813 11177 11281 +f 10813 11281 10917 +f 11177 11533 11621 +f 11177 11621 11281 +f 11533 11857 11969 +f 11533 11969 11621 +f 11857 12189 12253 +f 11857 12253 11969 +f 12189 12489 12577 +f 12189 12577 12253 +f 12489 12753 12869 +f 12489 12869 12577 +f 12753 13053 13145 +f 12753 13145 12869 +f 13053 13273 13429 +f 13053 13429 13145 +f 13273 13509 13653 +f 13273 13653 13429 +f 13509 13769 13873 +f 13509 13873 13653 +f 13769 13981 14093 +f 13769 14093 13873 +f 13981 14165 14281 +f 13981 14281 14093 +f 14165 14353 14485 +f 14165 14485 14281 +f 14353 14525 14653 +f 14353 14653 14485 +f 14525 14705 14817 +f 14525 14817 14653 +f 14705 14841 14965 +f 14705 14965 14817 +f 14841 14981 15113 +f 14841 15113 14965 +f 14981 15105 15233 +f 14981 15233 15113 +f 15105 15209 15341 +f 15105 15341 15233 +f 15209 15293 15441 +f 15209 15441 15341 +f 15293 15397 15521 +f 15293 15521 15441 +f 15397 15465 15597 +f 15397 15597 15521 +f 15465 15529 15677 +f 15465 15677 15597 +f 15529 15589 15713 +f 15529 15713 15677 +f 15589 15613 15745 +f 15589 15745 15713 +f 15613 15629 15769 +f 15613 15769 15745 +f 15629 15661 15793 +f 15629 15793 15769 +f 15661 15662 15794 +f 15661 15794 15793 +f 15662 15630 15770 +f 15662 15770 15794 +f 15630 15614 15746 +f 15630 15746 15770 +f 15614 15590 15714 +f 15614 15714 15746 +f 15590 15530 15678 +f 15590 15678 15714 +f 15530 15466 15598 +f 15530 15598 15678 +f 15466 15398 15522 +f 15466 15522 15598 +f 15398 15294 15442 +f 15398 15442 15522 +f 15294 15210 15342 +f 15294 15342 15442 +f 15210 15106 15234 +f 15210 15234 15342 +f 15106 14982 15114 +f 15106 15114 15234 +f 14982 14842 14966 +f 14982 14966 15114 +f 14842 14706 14818 +f 14842 14818 14966 +f 14706 14526 14654 +f 14706 14654 14818 +f 14526 14354 14486 +f 14526 14486 14654 +f 14354 14166 14282 +f 14354 14282 14486 +f 14166 13982 14094 +f 14166 14094 14282 +f 13982 13770 13874 +f 13982 13874 14094 +f 13770 13510 13654 +f 13770 13654 13874 +f 13510 13274 13430 +f 13510 13430 13654 +f 13274 13054 13146 +f 13274 13146 13430 +f 13054 12754 12870 +f 13054 12870 13146 +f 12754 12490 12578 +f 12754 12578 12870 +f 12490 12190 12254 +f 12490 12254 12578 +f 12190 11858 11970 +f 12190 11970 12254 +f 11858 11534 11622 +f 11858 11622 11970 +f 11534 11178 11282 +f 11534 11282 11622 +f 11178 10814 10918 +f 11178 10918 11282 +f 10814 10418 10554 +f 10814 10554 10918 +f 10418 10054 10154 +f 10418 10154 10554 +f 10054 9634 9734 +f 10054 9734 10154 +f 9634 9214 9282 +f 9634 9282 9734 +f 9214 8742 8838 +f 9214 8838 9282 +f 8742 8290 8330 +f 8742 8330 8838 +f 8290 7774 7830 +f 8290 7830 8330 +f 7774 7234 7290 +f 7774 7290 7830 +f 7234 6678 6718 +f 7234 6718 7290 +f 6678 6098 6122 +f 6678 6122 6718 +f 6098 5494 5518 +f 6098 5518 6122 +f 5494 4802 4850 +f 5494 4850 5518 +f 4802 4126 4166 +f 4802 4166 4850 +f 4126 3354 3402 +f 4126 3402 4166 +f 3354 2534 2582 +f 3354 2582 3402 +f 2534 1618 1650 +f 2534 1650 2582 +f 1649 2581 2597 +f 1649 2597 1665 +f 2581 3401 3433 +f 2581 3433 2597 +f 3401 4165 4181 +f 3401 4181 3433 +f 4165 4849 4913 +f 4165 4913 4181 +f 4849 5517 5541 +f 4849 5541 4913 +f 5517 6121 6193 +f 5517 6193 5541 +f 6121 6717 6797 +f 6121 6797 6193 +f 6717 7289 7353 +f 6717 7353 6797 +f 7289 7829 7869 +f 7289 7869 7353 +f 7829 8329 8385 +f 7829 8385 7869 +f 8329 8837 8869 +f 8329 8869 8385 +f 8837 9281 9361 +f 8837 9361 8869 +f 9281 9733 9789 +f 9281 9789 9361 +f 9733 10153 10225 +f 9733 10225 9789 +f 10153 10553 10629 +f 10153 10629 10225 +f 10553 10917 11025 +f 10553 11025 10629 +f 10917 11281 11385 +f 10917 11385 11025 +f 11281 11621 11733 +f 11281 11733 11385 +f 11621 11969 12065 +f 11621 12065 11733 +f 11969 12253 12381 +f 11969 12381 12065 +f 12253 12577 12673 +f 12253 12673 12381 +f 12577 12869 12949 +f 12577 12949 12673 +f 12869 13145 13233 +f 12869 13233 12949 +f 13145 13429 13501 +f 13145 13501 13233 +f 13429 13653 13753 +f 13429 13753 13501 +f 13653 13873 13989 +f 13653 13989 13753 +f 13873 14093 14205 +f 13873 14205 13989 +f 14093 14281 14409 +f 14093 14409 14205 +f 14281 14485 14605 +f 14281 14605 14409 +f 14485 14653 14761 +f 14485 14761 14605 +f 14653 14817 14933 +f 14653 14933 14761 +f 14817 14965 15081 +f 14817 15081 14933 +f 14965 15113 15225 +f 14965 15225 15081 +f 15113 15233 15349 +f 15113 15349 15225 +f 15233 15341 15457 +f 15233 15457 15349 +f 15341 15441 15553 +f 15341 15553 15457 +f 15441 15521 15637 +f 15441 15637 15553 +f 15521 15597 15721 +f 15521 15721 15637 +f 15597 15677 15777 +f 15597 15777 15721 +f 15677 15713 15833 +f 15677 15833 15777 +f 15713 15745 15869 +f 15713 15869 15833 +f 15745 15769 15885 +f 15745 15885 15869 +f 15769 15793 15909 +f 15769 15909 15885 +f 15793 15794 15910 +f 15793 15910 15909 +f 15794 15770 15886 +f 15794 15886 15910 +f 15770 15746 15870 +f 15770 15870 15886 +f 15746 15714 15834 +f 15746 15834 15870 +f 15714 15678 15778 +f 15714 15778 15834 +f 15678 15598 15722 +f 15678 15722 15778 +f 15598 15522 15638 +f 15598 15638 15722 +f 15522 15442 15554 +f 15522 15554 15638 +f 15442 15342 15458 +f 15442 15458 15554 +f 15342 15234 15350 +f 15342 15350 15458 +f 15234 15114 15226 +f 15234 15226 15350 +f 15114 14966 15082 +f 15114 15082 15226 +f 14966 14818 14934 +f 14966 14934 15082 +f 14818 14654 14762 +f 14818 14762 14934 +f 14654 14486 14606 +f 14654 14606 14762 +f 14486 14282 14410 +f 14486 14410 14606 +f 14282 14094 14206 +f 14282 14206 14410 +f 14094 13874 13990 +f 14094 13990 14206 +f 13874 13654 13754 +f 13874 13754 13990 +f 13654 13430 13502 +f 13654 13502 13754 +f 13430 13146 13234 +f 13430 13234 13502 +f 13146 12870 12950 +f 13146 12950 13234 +f 12870 12578 12674 +f 12870 12674 12950 +f 12578 12254 12382 +f 12578 12382 12674 +f 12254 11970 12066 +f 12254 12066 12382 +f 11970 11622 11734 +f 11970 11734 12066 +f 11622 11282 11386 +f 11622 11386 11734 +f 11282 10918 11026 +f 11282 11026 11386 +f 10918 10554 10630 +f 10918 10630 11026 +f 10554 10154 10226 +f 10554 10226 10630 +f 10154 9734 9790 +f 10154 9790 10226 +f 9734 9282 9362 +f 9734 9362 9790 +f 9282 8838 8870 +f 9282 8870 9362 +f 8838 8330 8386 +f 8838 8386 8870 +f 8330 7830 7870 +f 8330 7870 8386 +f 7830 7290 7354 +f 7830 7354 7870 +f 7290 6718 6798 +f 7290 6798 7354 +f 6718 6122 6194 +f 6718 6194 6798 +f 6122 5518 5542 +f 6122 5542 6194 +f 5518 4850 4914 +f 5518 4914 5542 +f 4850 4166 4182 +f 4850 4182 4914 +f 4166 3402 3434 +f 4166 3434 4182 +f 3402 2582 2598 +f 3402 2598 3434 +f 2582 1650 1666 +f 2582 1666 2598 +f 1665 2597 2629 +f 1665 2629 1681 +f 2597 3433 3465 +f 2597 3465 2629 +f 3433 4181 4229 +f 3433 4229 3465 +f 4181 4913 4937 +f 4181 4937 4229 +f 4913 5541 5613 +f 4913 5613 4937 +f 5541 6193 6241 +f 5541 6241 5613 +f 6193 6797 6845 +f 6193 6845 6241 +f 6797 7353 7417 +f 6797 7417 6845 +f 7353 7869 7949 +f 7353 7949 7417 +f 7869 8385 8465 +f 7869 8465 7949 +f 8385 8869 8925 +f 8385 8925 8465 +f 8869 9361 9393 +f 8869 9393 8925 +f 9361 9789 9869 +f 9361 9869 9393 +f 9789 10225 10273 +f 9789 10273 9869 +f 10225 10629 10693 +f 10225 10693 10273 +f 10629 11025 11089 +f 10629 11089 10693 +f 11025 11385 11437 +f 11025 11437 11089 +f 11385 11733 11817 +f 11385 11817 11437 +f 11733 12065 12141 +f 11733 12141 11817 +f 12065 12381 12481 +f 12065 12481 12141 +f 12381 12673 12793 +f 12381 12793 12481 +f 12673 12949 13069 +f 12673 13069 12793 +f 12949 13233 13337 +f 12949 13337 13069 +f 13233 13501 13597 +f 13233 13597 13337 +f 13501 13753 13833 +f 13501 13833 13597 +f 13753 13989 14069 +f 13753 14069 13833 +f 13989 14205 14289 +f 13989 14289 14069 +f 14205 14409 14493 +f 14205 14493 14289 +f 14409 14605 14697 +f 14409 14697 14493 +f 14605 14761 14885 +f 14605 14885 14697 +f 14761 14933 15037 +f 14761 15037 14885 +f 14933 15081 15185 +f 14933 15185 15037 +f 15081 15225 15317 +f 15081 15317 15185 +f 15225 15349 15449 +f 15225 15449 15317 +f 15349 15457 15577 +f 15349 15577 15449 +f 15457 15553 15669 +f 15457 15669 15577 +f 15553 15637 15753 +f 15553 15753 15669 +f 15637 15721 15817 +f 15637 15817 15753 +f 15721 15777 15877 +f 15721 15877 15817 +f 15777 15833 15941 +f 15777 15941 15877 +f 15833 15869 15969 +f 15833 15969 15941 +f 15869 15885 16009 +f 15869 16009 15969 +f 15885 15909 16017 +f 15885 16017 16009 +f 15909 15910 16018 +f 15909 16018 16017 +f 15910 15886 16010 +f 15910 16010 16018 +f 15886 15870 15970 +f 15886 15970 16010 +f 15870 15834 15942 +f 15870 15942 15970 +f 15834 15778 15878 +f 15834 15878 15942 +f 15778 15722 15818 +f 15778 15818 15878 +f 15722 15638 15754 +f 15722 15754 15818 +f 15638 15554 15670 +f 15638 15670 15754 +f 15554 15458 15578 +f 15554 15578 15670 +f 15458 15350 15450 +f 15458 15450 15578 +f 15350 15226 15318 +f 15350 15318 15450 +f 15226 15082 15186 +f 15226 15186 15318 +f 15082 14934 15038 +f 15082 15038 15186 +f 14934 14762 14886 +f 14934 14886 15038 +f 14762 14606 14698 +f 14762 14698 14886 +f 14606 14410 14494 +f 14606 14494 14698 +f 14410 14206 14290 +f 14410 14290 14494 +f 14206 13990 14070 +f 14206 14070 14290 +f 13990 13754 13834 +f 13990 13834 14070 +f 13754 13502 13598 +f 13754 13598 13834 +f 13502 13234 13338 +f 13502 13338 13598 +f 13234 12950 13070 +f 13234 13070 13338 +f 12950 12674 12794 +f 12950 12794 13070 +f 12674 12382 12482 +f 12674 12482 12794 +f 12382 12066 12142 +f 12382 12142 12482 +f 12066 11734 11818 +f 12066 11818 12142 +f 11734 11386 11438 +f 11734 11438 11818 +f 11386 11026 11090 +f 11386 11090 11438 +f 11026 10630 10694 +f 11026 10694 11090 +f 10630 10226 10274 +f 10630 10274 10694 +f 10226 9790 9870 +f 10226 9870 10274 +f 9790 9362 9394 +f 9790 9394 9870 +f 9362 8870 8926 +f 9362 8926 9394 +f 8870 8386 8466 +f 8870 8466 8926 +f 8386 7870 7950 +f 8386 7950 8466 +f 7870 7354 7418 +f 7870 7418 7950 +f 7354 6798 6846 +f 7354 6846 7418 +f 6798 6194 6242 +f 6798 6242 6846 +f 6194 5542 5614 +f 6194 5614 6242 +f 5542 4914 4938 +f 5542 4938 5614 +f 4914 4182 4230 +f 4914 4230 4938 +f 4182 3434 3466 +f 4182 3466 4230 +f 3434 2598 2630 +f 3434 2630 3466 +f 2598 1666 1682 +f 2598 1682 2630 +f 1681 2629 2661 +f 1681 2661 1721 +f 2629 3465 3481 +f 2629 3481 2661 +f 3465 4229 4245 +f 3465 4245 3481 +f 4229 4937 4985 +f 4229 4985 4245 +f 4937 5613 5653 +f 4937 5653 4985 +f 5613 6241 6289 +f 5613 6289 5653 +f 6241 6845 6869 +f 6241 6869 6289 +f 6845 7417 7433 +f 6845 7433 6869 +f 7417 7949 7989 +f 7417 7989 7433 +f 7949 8465 8513 +f 7949 8513 7989 +f 8465 8925 9005 +f 8465 9005 8513 +f 8925 9393 9449 +f 8925 9449 9005 +f 9393 9869 9901 +f 9393 9901 9449 +f 9869 10273 10353 +f 9869 10353 9901 +f 10273 10693 10741 +f 10273 10741 10353 +f 10693 11089 11137 +f 10693 11137 10741 +f 11089 11437 11525 +f 11089 11525 11137 +f 11437 11817 11865 +f 11437 11865 11525 +f 11817 12141 12221 +f 11817 12221 11865 +f 12141 12481 12537 +f 12141 12537 12221 +f 12481 12793 12845 +f 12481 12845 12537 +f 12793 13069 13137 +f 12793 13137 12845 +f 13069 13337 13437 +f 13069 13437 13137 +f 13337 13597 13677 +f 13337 13677 13437 +f 13597 13833 13937 +f 13597 13937 13677 +f 13833 14069 14157 +f 13833 14157 13937 +f 14069 14289 14377 +f 14069 14377 14157 +f 14289 14493 14589 +f 14289 14589 14377 +f 14493 14697 14777 +f 14493 14777 14589 +f 14697 14885 14941 +f 14697 14941 14777 +f 14885 15037 15129 +f 14885 15129 14941 +f 15037 15185 15277 +f 15037 15277 15129 +f 15185 15317 15417 +f 15185 15417 15277 +f 15317 15449 15537 +f 15317 15537 15417 +f 15449 15577 15645 +f 15449 15645 15537 +f 15577 15669 15761 +f 15577 15761 15645 +f 15669 15753 15853 +f 15669 15853 15761 +f 15753 15817 15917 +f 15753 15917 15853 +f 15817 15877 15977 +f 15817 15977 15917 +f 15877 15941 16033 +f 15877 16033 15977 +f 15941 15969 16077 +f 15941 16077 16033 +f 15969 16009 16093 +f 15969 16093 16077 +f 16009 16017 16101 +f 16009 16101 16093 +f 16017 16018 16102 +f 16017 16102 16101 +f 16018 16010 16094 +f 16018 16094 16102 +f 16010 15970 16078 +f 16010 16078 16094 +f 15970 15942 16034 +f 15970 16034 16078 +f 15942 15878 15978 +f 15942 15978 16034 +f 15878 15818 15918 +f 15878 15918 15978 +f 15818 15754 15854 +f 15818 15854 15918 +f 15754 15670 15762 +f 15754 15762 15854 +f 15670 15578 15646 +f 15670 15646 15762 +f 15578 15450 15538 +f 15578 15538 15646 +f 15450 15318 15418 +f 15450 15418 15538 +f 15318 15186 15278 +f 15318 15278 15418 +f 15186 15038 15130 +f 15186 15130 15278 +f 15038 14886 14942 +f 15038 14942 15130 +f 14886 14698 14778 +f 14886 14778 14942 +f 14698 14494 14590 +f 14698 14590 14778 +f 14494 14290 14378 +f 14494 14378 14590 +f 14290 14070 14158 +f 14290 14158 14378 +f 14070 13834 13938 +f 14070 13938 14158 +f 13834 13598 13678 +f 13834 13678 13938 +f 13598 13338 13438 +f 13598 13438 13678 +f 13338 13070 13138 +f 13338 13138 13438 +f 13070 12794 12846 +f 13070 12846 13138 +f 12794 12482 12538 +f 12794 12538 12846 +f 12482 12142 12222 +f 12482 12222 12538 +f 12142 11818 11866 +f 12142 11866 12222 +f 11818 11438 11526 +f 11818 11526 11866 +f 11438 11090 11138 +f 11438 11138 11526 +f 11090 10694 10742 +f 11090 10742 11138 +f 10694 10274 10354 +f 10694 10354 10742 +f 10274 9870 9902 +f 10274 9902 10354 +f 9870 9394 9450 +f 9870 9450 9902 +f 9394 8926 9006 +f 9394 9006 9450 +f 8926 8466 8514 +f 8926 8514 9006 +f 8466 7950 7990 +f 8466 7990 8514 +f 7950 7418 7434 +f 7950 7434 7990 +f 7418 6846 6870 +f 7418 6870 7434 +f 6846 6242 6290 +f 6846 6290 6870 +f 6242 5614 5654 +f 6242 5654 6290 +f 5614 4938 4986 +f 5614 4986 5654 +f 4938 4230 4246 +f 4938 4246 4986 +f 4230 3466 3482 +f 4230 3482 4246 +f 3466 2630 2662 +f 3466 2662 3482 +f 2630 1682 1722 +f 2630 1722 2662 +f 1721 2661 2685 +f 1721 2685 1737 +f 2661 3481 3521 +f 2661 3521 2685 +f 3481 4245 4301 +f 3481 4301 3521 +f 4245 4985 5025 +f 4245 5025 4301 +f 4985 5653 5693 +f 4985 5693 5025 +f 5653 6289 6321 +f 5653 6321 5693 +f 6289 6869 6941 +f 6289 6941 6321 +f 6869 7433 7513 +f 6869 7513 6941 +f 7433 7989 8029 +f 7433 8029 7513 +f 7989 8513 8553 +f 7989 8553 8029 +f 8513 9005 9053 +f 8513 9053 8553 +f 9005 9449 9529 +f 9005 9529 9053 +f 9449 9901 9965 +f 9449 9965 9529 +f 9901 10353 10401 +f 9901 10401 9965 +f 10353 10741 10805 +f 10353 10805 10401 +f 10741 11137 11209 +f 10741 11209 10805 +f 11137 11525 11565 +f 11137 11565 11209 +f 11525 11865 11945 +f 11525 11945 11565 +f 11865 12221 12261 +f 11865 12261 11945 +f 12221 12537 12601 +f 12221 12601 12261 +f 12537 12845 12901 +f 12537 12901 12601 +f 12845 13137 13201 +f 12845 13201 12901 +f 13137 13437 13477 +f 13137 13477 13201 +f 13437 13677 13761 +f 13437 13761 13477 +f 13677 13937 13997 +f 13677 13997 13761 +f 13937 14157 14233 +f 13937 14233 13997 +f 14157 14377 14453 +f 14157 14453 14233 +f 14377 14589 14665 +f 14377 14665 14453 +f 14589 14777 14865 +f 14589 14865 14665 +f 14777 14941 15029 +f 14777 15029 14865 +f 14941 15129 15201 +f 14941 15201 15029 +f 15129 15277 15365 +f 15129 15365 15201 +f 15277 15417 15489 +f 15277 15489 15365 +f 15417 15537 15621 +f 15417 15621 15489 +f 15537 15645 15729 +f 15537 15729 15621 +f 15645 15761 15841 +f 15645 15841 15729 +f 15761 15853 15925 +f 15761 15925 15841 +f 15853 15917 15993 +f 15853 15993 15925 +f 15917 15977 16061 +f 15917 16061 15993 +f 15977 16033 16109 +f 15977 16109 16061 +f 16033 16077 16153 +f 16033 16153 16109 +f 16077 16093 16169 +f 16077 16169 16153 +f 16093 16101 16193 +f 16093 16193 16169 +f 16101 16102 16194 +f 16101 16194 16193 +f 16102 16094 16170 +f 16102 16170 16194 +f 16094 16078 16154 +f 16094 16154 16170 +f 16078 16034 16110 +f 16078 16110 16154 +f 16034 15978 16062 +f 16034 16062 16110 +f 15978 15918 15994 +f 15978 15994 16062 +f 15918 15854 15926 +f 15918 15926 15994 +f 15854 15762 15842 +f 15854 15842 15926 +f 15762 15646 15730 +f 15762 15730 15842 +f 15646 15538 15622 +f 15646 15622 15730 +f 15538 15418 15490 +f 15538 15490 15622 +f 15418 15278 15366 +f 15418 15366 15490 +f 15278 15130 15202 +f 15278 15202 15366 +f 15130 14942 15030 +f 15130 15030 15202 +f 14942 14778 14866 +f 14942 14866 15030 +f 14778 14590 14666 +f 14778 14666 14866 +f 14590 14378 14454 +f 14590 14454 14666 +f 14378 14158 14234 +f 14378 14234 14454 +f 14158 13938 13998 +f 14158 13998 14234 +f 13938 13678 13762 +f 13938 13762 13998 +f 13678 13438 13478 +f 13678 13478 13762 +f 13438 13138 13202 +f 13438 13202 13478 +f 13138 12846 12902 +f 13138 12902 13202 +f 12846 12538 12602 +f 12846 12602 12902 +f 12538 12222 12262 +f 12538 12262 12602 +f 12222 11866 11946 +f 12222 11946 12262 +f 11866 11526 11566 +f 11866 11566 11946 +f 11526 11138 11210 +f 11526 11210 11566 +f 11138 10742 10806 +f 11138 10806 11210 +f 10742 10354 10402 +f 10742 10402 10806 +f 10354 9902 9966 +f 10354 9966 10402 +f 9902 9450 9530 +f 9902 9530 9966 +f 9450 9006 9054 +f 9450 9054 9530 +f 9006 8514 8554 +f 9006 8554 9054 +f 8514 7990 8030 +f 8514 8030 8554 +f 7990 7434 7514 +f 7990 7514 8030 +f 7434 6870 6942 +f 7434 6942 7514 +f 6870 6290 6322 +f 6870 6322 6942 +f 6290 5654 5694 +f 6290 5694 6322 +f 5654 4986 5026 +f 5654 5026 5694 +f 4986 4246 4302 +f 4986 4302 5026 +f 4246 3482 3522 +f 4246 3522 4302 +f 3482 2662 2686 +f 3482 2686 3522 +f 2662 1722 1738 +f 2662 1738 2686 +f 1737 2685 2701 +f 1737 2701 1753 +f 2685 3521 3537 +f 2685 3537 2701 +f 3521 4301 4333 +f 3521 4333 3537 +f 4301 5025 5057 +f 4301 5057 4333 +f 5025 5693 5725 +f 5025 5725 5057 +f 5693 6321 6369 +f 5693 6369 5725 +f 6321 6941 6965 +f 6321 6965 6369 +f 6941 7513 7545 +f 6941 7545 6965 +f 7513 8029 8085 +f 7513 8085 7545 +f 8029 8553 8585 +f 8029 8585 8085 +f 8553 9053 9093 +f 8553 9093 8585 +f 9053 9529 9577 +f 9053 9577 9093 +f 9529 9965 10021 +f 9529 10021 9577 +f 9965 10401 10449 +f 9965 10449 10021 +f 10401 10805 10869 +f 10401 10869 10449 +f 10805 11209 11249 +f 10805 11249 10869 +f 11209 11565 11629 +f 11209 11629 11249 +f 11565 11945 11985 +f 11565 11985 11629 +f 11945 12261 12309 +f 11945 12309 11985 +f 12261 12601 12657 +f 12261 12657 12309 +f 12601 12901 12957 +f 12601 12957 12657 +f 12901 13201 13265 +f 12901 13265 12957 +f 13201 13477 13541 +f 13201 13541 13265 +f 13477 13761 13801 +f 13477 13801 13541 +f 13761 13997 14045 +f 13761 14045 13801 +f 13997 14233 14297 +f 13997 14297 14045 +f 14233 14453 14501 +f 14233 14501 14297 +f 14453 14665 14721 +f 14453 14721 14501 +f 14665 14865 14901 +f 14665 14901 14721 +f 14865 15029 15089 +f 14865 15089 14901 +f 15029 15201 15269 +f 15029 15269 15089 +f 15201 15365 15425 +f 15201 15425 15269 +f 15365 15489 15561 +f 15365 15561 15425 +f 15489 15621 15693 +f 15489 15693 15561 +f 15621 15729 15801 +f 15621 15801 15693 +f 15729 15841 15901 +f 15729 15901 15801 +f 15841 15925 15985 +f 15841 15985 15901 +f 15925 15993 16069 +f 15925 16069 15985 +f 15993 16061 16133 +f 15993 16133 16069 +f 16061 16109 16177 +f 16061 16177 16133 +f 16109 16153 16217 +f 16109 16217 16177 +f 16153 16169 16245 +f 16153 16245 16217 +f 16169 16193 16253 +f 16169 16253 16245 +f 16193 16194 16254 +f 16193 16254 16253 +f 16194 16170 16246 +f 16194 16246 16254 +f 16170 16154 16218 +f 16170 16218 16246 +f 16154 16110 16178 +f 16154 16178 16218 +f 16110 16062 16134 +f 16110 16134 16178 +f 16062 15994 16070 +f 16062 16070 16134 +f 15994 15926 15986 +f 15994 15986 16070 +f 15926 15842 15902 +f 15926 15902 15986 +f 15842 15730 15802 +f 15842 15802 15902 +f 15730 15622 15694 +f 15730 15694 15802 +f 15622 15490 15562 +f 15622 15562 15694 +f 15490 15366 15426 +f 15490 15426 15562 +f 15366 15202 15270 +f 15366 15270 15426 +f 15202 15030 15090 +f 15202 15090 15270 +f 15030 14866 14902 +f 15030 14902 15090 +f 14866 14666 14722 +f 14866 14722 14902 +f 14666 14454 14502 +f 14666 14502 14722 +f 14454 14234 14298 +f 14454 14298 14502 +f 14234 13998 14046 +f 14234 14046 14298 +f 13998 13762 13802 +f 13998 13802 14046 +f 13762 13478 13542 +f 13762 13542 13802 +f 13478 13202 13266 +f 13478 13266 13542 +f 13202 12902 12958 +f 13202 12958 13266 +f 12902 12602 12658 +f 12902 12658 12958 +f 12602 12262 12310 +f 12602 12310 12658 +f 12262 11946 11986 +f 12262 11986 12310 +f 11946 11566 11630 +f 11946 11630 11986 +f 11566 11210 11250 +f 11566 11250 11630 +f 11210 10806 10870 +f 11210 10870 11250 +f 10806 10402 10450 +f 10806 10450 10870 +f 10402 9966 10022 +f 10402 10022 10450 +f 9966 9530 9578 +f 9966 9578 10022 +f 9530 9054 9094 +f 9530 9094 9578 +f 9054 8554 8586 +f 9054 8586 9094 +f 8554 8030 8086 +f 8554 8086 8586 +f 8030 7514 7546 +f 8030 7546 8086 +f 7514 6942 6966 +f 7514 6966 7546 +f 6942 6322 6370 +f 6942 6370 6966 +f 6322 5694 5726 +f 6322 5726 6370 +f 5694 5026 5058 +f 5694 5058 5726 +f 5026 4302 4334 +f 5026 4334 5058 +f 4302 3522 3538 +f 4302 3538 4334 +f 3522 2686 2702 +f 3522 2702 3538 +f 2686 1738 1754 +f 2686 1754 2702 +f 1753 2701 2733 +f 1753 2733 1785 +f 2701 3537 3601 +f 2701 3601 2733 +f 3537 4333 4381 +f 3537 4381 3601 +f 4333 5057 5097 +f 4333 5097 4381 +f 5057 5725 5789 +f 5057 5789 5097 +f 5725 6369 6425 +f 5725 6425 5789 +f 6369 6965 7029 +f 6369 7029 6425 +f 6965 7545 7593 +f 6965 7593 7029 +f 7545 8085 8141 +f 7545 8141 7593 +f 8085 8585 8657 +f 8085 8657 8141 +f 8585 9093 9141 +f 8585 9141 8657 +f 9093 9577 9625 +f 9093 9625 9141 +f 9577 10021 10093 +f 9577 10093 9625 +f 10021 10449 10489 +f 10021 10489 10093 +f 10449 10869 10909 +f 10449 10909 10489 +f 10869 11249 11321 +f 10869 11321 10909 +f 11249 11629 11685 +f 11249 11685 11321 +f 11629 11985 12041 +f 11629 12041 11685 +f 11985 12309 12397 +f 11985 12397 12041 +f 12309 12657 12697 +f 12309 12697 12397 +f 12657 12957 13021 +f 12657 13021 12697 +f 12957 13265 13305 +f 12957 13305 13021 +f 13265 13541 13589 +f 13265 13589 13305 +f 13541 13801 13849 +f 13541 13849 13589 +f 13801 14045 14109 +f 13801 14109 13849 +f 14045 14297 14329 +f 14045 14329 14109 +f 14297 14501 14565 +f 14297 14565 14329 +f 14501 14721 14769 +f 14501 14769 14565 +f 14721 14901 14973 +f 14721 14973 14769 +f 14901 15089 15145 +f 14901 15145 14973 +f 15089 15269 15309 +f 15089 15309 15145 +f 15269 15425 15473 +f 15269 15473 15309 +f 15425 15561 15605 +f 15425 15605 15473 +f 15561 15693 15737 +f 15561 15737 15605 +f 15693 15801 15861 +f 15693 15861 15737 +f 15801 15901 15961 +f 15801 15961 15861 +f 15901 15985 16041 +f 15901 16041 15961 +f 15985 16069 16125 +f 15985 16125 16041 +f 16069 16133 16185 +f 16069 16185 16125 +f 16133 16177 16237 +f 16133 16237 16185 +f 16177 16217 16269 +f 16177 16269 16237 +f 16217 16245 16297 +f 16217 16297 16269 +f 16245 16253 16313 +f 16245 16313 16297 +f 16253 16254 16314 +f 16253 16314 16313 +f 16254 16246 16298 +f 16254 16298 16314 +f 16246 16218 16270 +f 16246 16270 16298 +f 16218 16178 16238 +f 16218 16238 16270 +f 16178 16134 16186 +f 16178 16186 16238 +f 16134 16070 16126 +f 16134 16126 16186 +f 16070 15986 16042 +f 16070 16042 16126 +f 15986 15902 15962 +f 15986 15962 16042 +f 15902 15802 15862 +f 15902 15862 15962 +f 15802 15694 15738 +f 15802 15738 15862 +f 15694 15562 15606 +f 15694 15606 15738 +f 15562 15426 15474 +f 15562 15474 15606 +f 15426 15270 15310 +f 15426 15310 15474 +f 15270 15090 15146 +f 15270 15146 15310 +f 15090 14902 14974 +f 15090 14974 15146 +f 14902 14722 14770 +f 14902 14770 14974 +f 14722 14502 14566 +f 14722 14566 14770 +f 14502 14298 14330 +f 14502 14330 14566 +f 14298 14046 14110 +f 14298 14110 14330 +f 14046 13802 13850 +f 14046 13850 14110 +f 13802 13542 13590 +f 13802 13590 13850 +f 13542 13266 13306 +f 13542 13306 13590 +f 13266 12958 13022 +f 13266 13022 13306 +f 12958 12658 12698 +f 12958 12698 13022 +f 12658 12310 12398 +f 12658 12398 12698 +f 12310 11986 12042 +f 12310 12042 12398 +f 11986 11630 11686 +f 11986 11686 12042 +f 11630 11250 11322 +f 11630 11322 11686 +f 11250 10870 10910 +f 11250 10910 11322 +f 10870 10450 10490 +f 10870 10490 10910 +f 10450 10022 10094 +f 10450 10094 10490 +f 10022 9578 9626 +f 10022 9626 10094 +f 9578 9094 9142 +f 9578 9142 9626 +f 9094 8586 8658 +f 9094 8658 9142 +f 8586 8086 8142 +f 8586 8142 8658 +f 8086 7546 7594 +f 8086 7594 8142 +f 7546 6966 7030 +f 7546 7030 7594 +f 6966 6370 6426 +f 6966 6426 7030 +f 6370 5726 5790 +f 6370 5790 6426 +f 5726 5058 5098 +f 5726 5098 5790 +f 5058 4334 4382 +f 5058 4382 5098 +f 4334 3538 3602 +f 4334 3602 4382 +f 3538 2702 2734 +f 3538 2734 3602 +f 2702 1754 1786 +f 2702 1786 2734 +f 1785 2733 2741 +f 1785 2741 1793 +f 2733 3601 3625 +f 2733 3625 2741 +f 3601 4381 4389 +f 3601 4389 3625 +f 4381 5097 5121 +f 4381 5121 4389 +f 5097 5789 5813 +f 5097 5813 5121 +f 5789 6425 6441 +f 5789 6441 5813 +f 6425 7029 7037 +f 6425 7037 6441 +f 7029 7593 7601 +f 7029 7601 7037 +f 7593 8141 8157 +f 7593 8157 7601 +f 8141 8657 8689 +f 8141 8689 8157 +f 8657 9141 9173 +f 8657 9173 8689 +f 9141 9625 9649 +f 9141 9649 9173 +f 9625 10093 10109 +f 9625 10109 9649 +f 10093 10489 10537 +f 10093 10537 10109 +f 10489 10909 10949 +f 10489 10949 10537 +f 10909 11321 11353 +f 10909 11353 10949 +f 11321 11685 11701 +f 11321 11701 11353 +f 11685 12041 12081 +f 11685 12081 11701 +f 12041 12397 12421 +f 12041 12421 12081 +f 12397 12697 12737 +f 12397 12737 12421 +f 12697 13021 13061 +f 12697 13061 12737 +f 13021 13305 13345 +f 13021 13345 13061 +f 13305 13589 13637 +f 13305 13637 13345 +f 13589 13849 13905 +f 13589 13905 13637 +f 13849 14109 14141 +f 13849 14141 13905 +f 14109 14329 14385 +f 14109 14385 14141 +f 14329 14565 14613 +f 14329 14613 14385 +f 14565 14769 14809 +f 14565 14809 14613 +f 14769 14973 15013 +f 14769 15013 14809 +f 14973 15145 15193 +f 14973 15193 15013 +f 15145 15309 15373 +f 15145 15373 15193 +f 15309 15473 15513 +f 15309 15513 15373 +f 15473 15605 15653 +f 15473 15653 15513 +f 15605 15737 15785 +f 15605 15785 15653 +f 15737 15861 15893 +f 15737 15893 15785 +f 15861 15961 16001 +f 15861 16001 15893 +f 15961 16041 16085 +f 15961 16085 16001 +f 16041 16125 16161 +f 16041 16161 16085 +f 16125 16185 16229 +f 16125 16229 16161 +f 16185 16237 16285 +f 16185 16285 16229 +f 16237 16269 16321 +f 16237 16321 16285 +f 16269 16297 16341 +f 16269 16341 16321 +f 16297 16313 16357 +f 16297 16357 16341 +f 16313 16314 16358 +f 16313 16358 16357 +f 16314 16298 16342 +f 16314 16342 16358 +f 16298 16270 16322 +f 16298 16322 16342 +f 16270 16238 16286 +f 16270 16286 16322 +f 16238 16186 16230 +f 16238 16230 16286 +f 16186 16126 16162 +f 16186 16162 16230 +f 16126 16042 16086 +f 16126 16086 16162 +f 16042 15962 16002 +f 16042 16002 16086 +f 15962 15862 15894 +f 15962 15894 16002 +f 15862 15738 15786 +f 15862 15786 15894 +f 15738 15606 15654 +f 15738 15654 15786 +f 15606 15474 15514 +f 15606 15514 15654 +f 15474 15310 15374 +f 15474 15374 15514 +f 15310 15146 15194 +f 15310 15194 15374 +f 15146 14974 15014 +f 15146 15014 15194 +f 14974 14770 14810 +f 14974 14810 15014 +f 14770 14566 14614 +f 14770 14614 14810 +f 14566 14330 14386 +f 14566 14386 14614 +f 14330 14110 14142 +f 14330 14142 14386 +f 14110 13850 13906 +f 14110 13906 14142 +f 13850 13590 13638 +f 13850 13638 13906 +f 13590 13306 13346 +f 13590 13346 13638 +f 13306 13022 13062 +f 13306 13062 13346 +f 13022 12698 12738 +f 13022 12738 13062 +f 12698 12398 12422 +f 12698 12422 12738 +f 12398 12042 12082 +f 12398 12082 12422 +f 12042 11686 11702 +f 12042 11702 12082 +f 11686 11322 11354 +f 11686 11354 11702 +f 11322 10910 10950 +f 11322 10950 11354 +f 10910 10490 10538 +f 10910 10538 10950 +f 10490 10094 10110 +f 10490 10110 10538 +f 10094 9626 9650 +f 10094 9650 10110 +f 9626 9142 9174 +f 9626 9174 9650 +f 9142 8658 8690 +f 9142 8690 9174 +f 8658 8142 8158 +f 8658 8158 8690 +f 8142 7594 7602 +f 8142 7602 8158 +f 7594 7030 7038 +f 7594 7038 7602 +f 7030 6426 6442 +f 7030 6442 7038 +f 6426 5790 5814 +f 6426 5814 6442 +f 5790 5098 5122 +f 5790 5122 5814 +f 5098 4382 4390 +f 5098 4390 5122 +f 4382 3602 3626 +f 4382 3626 4390 +f 3602 2734 2742 +f 3602 2742 3626 +f 2734 1786 1794 +f 2734 1794 2742 +f 1793 2741 2765 +f 1793 2765 1801 +f 2741 3625 3633 +f 2741 3633 2765 +f 3625 4389 4397 +f 3625 4397 3633 +f 4389 5121 5137 +f 4389 5137 4397 +f 5121 5813 5821 +f 5121 5821 5137 +f 5813 6441 6457 +f 5813 6457 5821 +f 6441 7037 7045 +f 6441 7045 6457 +f 7037 7601 7633 +f 7037 7633 7045 +f 7601 8157 8181 +f 7601 8181 7633 +f 8157 8689 8705 +f 8157 8705 8181 +f 8689 9173 9205 +f 8689 9205 8705 +f 9173 9649 9665 +f 9173 9665 9205 +f 9649 10109 10133 +f 9649 10133 9665 +f 10109 10537 10569 +f 10109 10569 10133 +f 10537 10949 10965 +f 10537 10965 10569 +f 10949 11353 11369 +f 10949 11369 10965 +f 11353 11701 11749 +f 11353 11749 11369 +f 11701 12081 12097 +f 11701 12097 11749 +f 12081 12421 12437 +f 12081 12437 12097 +f 12421 12737 12785 +f 12421 12785 12437 +f 12737 13061 13077 +f 12737 13077 12785 +f 13061 13345 13385 +f 13061 13385 13077 +f 13345 13637 13661 +f 13345 13661 13385 +f 13637 13905 13929 +f 13637 13929 13661 +f 13905 14141 14181 +f 13905 14181 13929 +f 14141 14385 14425 +f 14141 14425 14181 +f 14385 14613 14629 +f 14385 14629 14425 +f 14613 14809 14849 +f 14613 14849 14629 +f 14809 15013 15045 +f 14809 15045 14849 +f 15013 15193 15217 +f 15013 15217 15045 +f 15193 15373 15381 +f 15193 15381 15217 +f 15373 15513 15545 +f 15373 15545 15381 +f 15513 15653 15685 +f 15513 15685 15545 +f 15653 15785 15809 +f 15653 15809 15685 +f 15785 15893 15933 +f 15785 15933 15809 +f 15893 16001 16025 +f 15893 16025 15933 +f 16001 16085 16117 +f 16001 16117 16025 +f 16085 16161 16201 +f 16085 16201 16117 +f 16161 16229 16261 +f 16161 16261 16201 +f 16229 16285 16305 +f 16229 16305 16261 +f 16285 16321 16349 +f 16285 16349 16305 +f 16321 16341 16377 +f 16321 16377 16349 +f 16341 16357 16385 +f 16341 16385 16377 +f 16357 16358 16386 +f 16357 16386 16385 +f 16358 16342 16378 +f 16358 16378 16386 +f 16342 16322 16350 +f 16342 16350 16378 +f 16322 16286 16306 +f 16322 16306 16350 +f 16286 16230 16262 +f 16286 16262 16306 +f 16230 16162 16202 +f 16230 16202 16262 +f 16162 16086 16118 +f 16162 16118 16202 +f 16086 16002 16026 +f 16086 16026 16118 +f 16002 15894 15934 +f 16002 15934 16026 +f 15894 15786 15810 +f 15894 15810 15934 +f 15786 15654 15686 +f 15786 15686 15810 +f 15654 15514 15546 +f 15654 15546 15686 +f 15514 15374 15382 +f 15514 15382 15546 +f 15374 15194 15218 +f 15374 15218 15382 +f 15194 15014 15046 +f 15194 15046 15218 +f 15014 14810 14850 +f 15014 14850 15046 +f 14810 14614 14630 +f 14810 14630 14850 +f 14614 14386 14426 +f 14614 14426 14630 +f 14386 14142 14182 +f 14386 14182 14426 +f 14142 13906 13930 +f 14142 13930 14182 +f 13906 13638 13662 +f 13906 13662 13930 +f 13638 13346 13386 +f 13638 13386 13662 +f 13346 13062 13078 +f 13346 13078 13386 +f 13062 12738 12786 +f 13062 12786 13078 +f 12738 12422 12438 +f 12738 12438 12786 +f 12422 12082 12098 +f 12422 12098 12438 +f 12082 11702 11750 +f 12082 11750 12098 +f 11702 11354 11370 +f 11702 11370 11750 +f 11354 10950 10966 +f 11354 10966 11370 +f 10950 10538 10570 +f 10950 10570 10966 +f 10538 10110 10134 +f 10538 10134 10570 +f 10110 9650 9666 +f 10110 9666 10134 +f 9650 9174 9206 +f 9650 9206 9666 +f 9174 8690 8706 +f 9174 8706 9206 +f 8690 8158 8182 +f 8690 8182 8706 +f 8158 7602 7634 +f 8158 7634 8182 +f 7602 7038 7046 +f 7602 7046 7634 +f 7038 6442 6458 +f 7038 6458 7046 +f 6442 5814 5822 +f 6442 5822 6458 +f 5814 5122 5138 +f 5814 5138 5822 +f 5122 4390 4398 +f 5122 4398 5138 +f 4390 3626 3634 +f 4390 3634 4398 +f 3626 2742 2766 +f 3626 2766 3634 +f 2742 1794 1802 +f 2742 1802 2766 +f 1801 2765 2773 +f 1801 2773 1825 +f 2765 3633 3641 +f 2765 3641 2773 +f 3633 4397 4429 +f 3633 4429 3641 +f 4397 5137 5145 +f 4397 5145 4429 +f 5137 5821 5829 +f 5137 5829 5145 +f 5821 6457 6465 +f 5821 6465 5829 +f 6457 7045 7053 +f 6457 7053 6465 +f 7045 7633 7641 +f 7045 7641 7053 +f 7633 8181 8189 +f 7633 8189 7641 +f 8181 8705 8721 +f 8181 8721 8189 +f 8705 9205 9229 +f 8705 9229 8721 +f 9205 9665 9681 +f 9205 9681 9229 +f 9665 10133 10141 +f 9665 10141 9681 +f 10133 10569 10593 +f 10133 10593 10141 +f 10569 10965 10981 +f 10569 10981 10593 +f 10965 11369 11377 +f 10965 11377 10981 +f 11369 11749 11765 +f 11369 11765 11377 +f 11749 12097 12121 +f 11749 12121 11765 +f 12097 12437 12461 +f 12097 12461 12121 +f 12437 12785 12801 +f 12437 12801 12461 +f 12785 13077 13093 +f 12785 13093 12801 +f 13077 13385 13409 +f 13077 13409 13093 +f 13385 13661 13669 +f 13385 13669 13409 +f 13661 13929 13945 +f 13661 13945 13669 +f 13929 14181 14189 +f 13929 14189 13945 +f 14181 14425 14441 +f 14181 14441 14189 +f 14425 14629 14645 +f 14425 14645 14441 +f 14629 14849 14873 +f 14629 14873 14645 +f 14849 15045 15053 +f 14849 15053 14873 +f 15045 15217 15249 +f 15045 15249 15053 +f 15217 15381 15405 +f 15217 15405 15249 +f 15381 15545 15569 +f 15381 15569 15405 +f 15545 15685 15701 +f 15545 15701 15569 +f 15685 15809 15825 +f 15685 15825 15701 +f 15809 15933 15949 +f 15809 15949 15825 +f 15933 16025 16049 +f 15933 16049 15949 +f 16025 16117 16141 +f 16025 16141 16049 +f 16117 16201 16209 +f 16117 16209 16141 +f 16201 16261 16277 +f 16201 16277 16209 +f 16261 16305 16329 +f 16261 16329 16277 +f 16305 16349 16365 +f 16305 16365 16329 +f 16349 16377 16393 +f 16349 16393 16365 +f 16377 16385 16405 +f 16377 16405 16393 +f 16385 16386 16406 +f 16385 16406 16405 +f 16386 16378 16394 +f 16386 16394 16406 +f 16378 16350 16366 +f 16378 16366 16394 +f 16350 16306 16330 +f 16350 16330 16366 +f 16306 16262 16278 +f 16306 16278 16330 +f 16262 16202 16210 +f 16262 16210 16278 +f 16202 16118 16142 +f 16202 16142 16210 +f 16118 16026 16050 +f 16118 16050 16142 +f 16026 15934 15950 +f 16026 15950 16050 +f 15934 15810 15826 +f 15934 15826 15950 +f 15810 15686 15702 +f 15810 15702 15826 +f 15686 15546 15570 +f 15686 15570 15702 +f 15546 15382 15406 +f 15546 15406 15570 +f 15382 15218 15250 +f 15382 15250 15406 +f 15218 15046 15054 +f 15218 15054 15250 +f 15046 14850 14874 +f 15046 14874 15054 +f 14850 14630 14646 +f 14850 14646 14874 +f 14630 14426 14442 +f 14630 14442 14646 +f 14426 14182 14190 +f 14426 14190 14442 +f 14182 13930 13946 +f 14182 13946 14190 +f 13930 13662 13670 +f 13930 13670 13946 +f 13662 13386 13410 +f 13662 13410 13670 +f 13386 13078 13094 +f 13386 13094 13410 +f 13078 12786 12802 +f 13078 12802 13094 +f 12786 12438 12462 +f 12786 12462 12802 +f 12438 12098 12122 +f 12438 12122 12462 +f 12098 11750 11766 +f 12098 11766 12122 +f 11750 11370 11378 +f 11750 11378 11766 +f 11370 10966 10982 +f 11370 10982 11378 +f 10966 10570 10594 +f 10966 10594 10982 +f 10570 10134 10142 +f 10570 10142 10594 +f 10134 9666 9682 +f 10134 9682 10142 +f 9666 9206 9230 +f 9666 9230 9682 +f 9206 8706 8722 +f 9206 8722 9230 +f 8706 8182 8190 +f 8706 8190 8722 +f 8182 7634 7642 +f 8182 7642 8190 +f 7634 7046 7054 +f 7634 7054 7642 +f 7046 6458 6466 +f 7046 6466 7054 +f 6458 5822 5830 +f 6458 5830 6466 +f 5822 5138 5146 +f 5822 5146 5830 +f 5138 4398 4430 +f 5138 4430 5146 +f 4398 3634 3642 +f 4398 3642 4430 +f 3634 2766 2774 +f 3634 2774 3642 +f 2766 1802 1826 +f 2766 1826 2774 +f 1825 2773 2781 +f 1825 2781 1833 +f 2773 3641 3649 +f 2773 3649 2781 +f 3641 4429 4445 +f 3641 4445 3649 +f 4429 5145 5161 +f 4429 5161 4445 +f 5145 5829 5837 +f 5145 5837 5161 +f 5829 6465 6473 +f 5829 6473 5837 +f 6465 7053 7069 +f 6465 7069 6473 +f 7053 7641 7649 +f 7053 7649 7069 +f 7641 8189 8197 +f 7641 8197 7649 +f 8189 8721 8729 +f 8189 8729 8197 +f 8721 9229 9237 +f 8721 9237 8729 +f 9229 9681 9689 +f 9229 9689 9237 +f 9681 10141 10149 +f 9681 10149 9689 +f 10141 10593 10601 +f 10141 10601 10149 +f 10593 10981 10989 +f 10593 10989 10601 +f 10981 11377 11393 +f 10981 11393 10989 +f 11377 11765 11781 +f 11377 11781 11393 +f 11765 12121 12137 +f 11765 12137 11781 +f 12121 12461 12469 +f 12121 12469 12137 +f 12461 12801 12809 +f 12461 12809 12469 +f 12801 13093 13109 +f 12801 13109 12809 +f 13093 13409 13417 +f 13093 13417 13109 +f 13409 13669 13685 +f 13409 13685 13417 +f 13669 13945 13953 +f 13669 13953 13685 +f 13945 14189 14213 +f 13945 14213 13953 +f 14189 14441 14449 +f 14189 14449 14213 +f 14441 14645 14661 +f 14441 14661 14449 +f 14645 14873 14881 +f 14645 14881 14661 +f 14873 15053 15069 +f 14873 15069 14881 +f 15053 15249 15257 +f 15053 15257 15069 +f 15249 15405 15413 +f 15249 15413 15257 +f 15405 15569 15585 +f 15405 15585 15413 +f 15569 15701 15709 +f 15569 15709 15585 +f 15701 15825 15849 +f 15701 15849 15709 +f 15825 15949 15957 +f 15825 15957 15849 +f 15949 16049 16057 +f 15949 16057 15957 +f 16049 16141 16149 +f 16049 16149 16057 +f 16141 16209 16225 +f 16141 16225 16149 +f 16209 16277 16293 +f 16209 16293 16225 +f 16277 16329 16337 +f 16277 16337 16293 +f 16329 16365 16373 +f 16329 16373 16337 +f 16365 16393 16401 +f 16365 16401 16373 +f 16393 16405 16413 +f 16393 16413 16401 +f 16405 16406 16414 +f 16405 16414 16413 +f 16406 16394 16402 +f 16406 16402 16414 +f 16394 16366 16374 +f 16394 16374 16402 +f 16366 16330 16338 +f 16366 16338 16374 +f 16330 16278 16294 +f 16330 16294 16338 +f 16278 16210 16226 +f 16278 16226 16294 +f 16210 16142 16150 +f 16210 16150 16226 +f 16142 16050 16058 +f 16142 16058 16150 +f 16050 15950 15958 +f 16050 15958 16058 +f 15950 15826 15850 +f 15950 15850 15958 +f 15826 15702 15710 +f 15826 15710 15850 +f 15702 15570 15586 +f 15702 15586 15710 +f 15570 15406 15414 +f 15570 15414 15586 +f 15406 15250 15258 +f 15406 15258 15414 +f 15250 15054 15070 +f 15250 15070 15258 +f 15054 14874 14882 +f 15054 14882 15070 +f 14874 14646 14662 +f 14874 14662 14882 +f 14646 14442 14450 +f 14646 14450 14662 +f 14442 14190 14214 +f 14442 14214 14450 +f 14190 13946 13954 +f 14190 13954 14214 +f 13946 13670 13686 +f 13946 13686 13954 +f 13670 13410 13418 +f 13670 13418 13686 +f 13410 13094 13110 +f 13410 13110 13418 +f 13094 12802 12810 +f 13094 12810 13110 +f 12802 12462 12470 +f 12802 12470 12810 +f 12462 12122 12138 +f 12462 12138 12470 +f 12122 11766 11782 +f 12122 11782 12138 +f 11766 11378 11394 +f 11766 11394 11782 +f 11378 10982 10990 +f 11378 10990 11394 +f 10982 10594 10602 +f 10982 10602 10990 +f 10594 10142 10150 +f 10594 10150 10602 +f 10142 9682 9690 +f 10142 9690 10150 +f 9682 9230 9238 +f 9682 9238 9690 +f 9230 8722 8730 +f 9230 8730 9238 +f 8722 8190 8198 +f 8722 8198 8730 +f 8190 7642 7650 +f 8190 7650 8198 +f 7642 7054 7070 +f 7642 7070 7650 +f 7054 6466 6474 +f 7054 6474 7070 +f 6466 5830 5838 +f 6466 5838 6474 +f 5830 5146 5162 +f 5830 5162 5838 +f 5146 4430 4446 +f 5146 4446 5162 +f 4430 3642 3650 +f 4430 3650 4446 +f 3642 2774 2782 +f 3642 2782 3650 +f 2774 1826 1834 +f 2774 1834 2782 +f 1833 2781 2775 +f 1833 2775 1827 +f 2781 3649 3643 +f 2781 3643 2775 +f 3649 4445 4431 +f 3649 4431 3643 +f 4445 5161 5147 +f 4445 5147 4431 +f 5161 5837 5831 +f 5161 5831 5147 +f 5837 6473 6467 +f 5837 6467 5831 +f 6473 7069 7055 +f 6473 7055 6467 +f 7069 7649 7643 +f 7069 7643 7055 +f 7649 8197 8191 +f 7649 8191 7643 +f 8197 8729 8723 +f 8197 8723 8191 +f 8729 9237 9231 +f 8729 9231 8723 +f 9237 9689 9683 +f 9237 9683 9231 +f 9689 10149 10143 +f 9689 10143 9683 +f 10149 10601 10595 +f 10149 10595 10143 +f 10601 10989 10983 +f 10601 10983 10595 +f 10989 11393 11379 +f 10989 11379 10983 +f 11393 11781 11767 +f 11393 11767 11379 +f 11781 12137 12123 +f 11781 12123 11767 +f 12137 12469 12463 +f 12137 12463 12123 +f 12469 12809 12803 +f 12469 12803 12463 +f 12809 13109 13095 +f 12809 13095 12803 +f 13109 13417 13411 +f 13109 13411 13095 +f 13417 13685 13671 +f 13417 13671 13411 +f 13685 13953 13947 +f 13685 13947 13671 +f 13953 14213 14191 +f 13953 14191 13947 +f 14213 14449 14443 +f 14213 14443 14191 +f 14449 14661 14647 +f 14449 14647 14443 +f 14661 14881 14875 +f 14661 14875 14647 +f 14881 15069 15055 +f 14881 15055 14875 +f 15069 15257 15251 +f 15069 15251 15055 +f 15257 15413 15407 +f 15257 15407 15251 +f 15413 15585 15571 +f 15413 15571 15407 +f 15585 15709 15703 +f 15585 15703 15571 +f 15709 15849 15827 +f 15709 15827 15703 +f 15849 15957 15951 +f 15849 15951 15827 +f 15957 16057 16051 +f 15957 16051 15951 +f 16057 16149 16143 +f 16057 16143 16051 +f 16149 16225 16211 +f 16149 16211 16143 +f 16225 16293 16279 +f 16225 16279 16211 +f 16293 16337 16331 +f 16293 16331 16279 +f 16337 16373 16367 +f 16337 16367 16331 +f 16373 16401 16395 +f 16373 16395 16367 +f 16401 16413 16407 +f 16401 16407 16395 +f 16413 16414 16408 +f 16413 16408 16407 +f 16414 16402 16396 +f 16414 16396 16408 +f 16402 16374 16368 +f 16402 16368 16396 +f 16374 16338 16332 +f 16374 16332 16368 +f 16338 16294 16280 +f 16338 16280 16332 +f 16294 16226 16212 +f 16294 16212 16280 +f 16226 16150 16144 +f 16226 16144 16212 +f 16150 16058 16052 +f 16150 16052 16144 +f 16058 15958 15952 +f 16058 15952 16052 +f 15958 15850 15828 +f 15958 15828 15952 +f 15850 15710 15704 +f 15850 15704 15828 +f 15710 15586 15572 +f 15710 15572 15704 +f 15586 15414 15408 +f 15586 15408 15572 +f 15414 15258 15252 +f 15414 15252 15408 +f 15258 15070 15056 +f 15258 15056 15252 +f 15070 14882 14876 +f 15070 14876 15056 +f 14882 14662 14648 +f 14882 14648 14876 +f 14662 14450 14444 +f 14662 14444 14648 +f 14450 14214 14192 +f 14450 14192 14444 +f 14214 13954 13948 +f 14214 13948 14192 +f 13954 13686 13672 +f 13954 13672 13948 +f 13686 13418 13412 +f 13686 13412 13672 +f 13418 13110 13096 +f 13418 13096 13412 +f 13110 12810 12804 +f 13110 12804 13096 +f 12810 12470 12464 +f 12810 12464 12804 +f 12470 12138 12124 +f 12470 12124 12464 +f 12138 11782 11768 +f 12138 11768 12124 +f 11782 11394 11380 +f 11782 11380 11768 +f 11394 10990 10984 +f 11394 10984 11380 +f 10990 10602 10596 +f 10990 10596 10984 +f 10602 10150 10144 +f 10602 10144 10596 +f 10150 9690 9684 +f 10150 9684 10144 +f 9690 9238 9232 +f 9690 9232 9684 +f 9238 8730 8724 +f 9238 8724 9232 +f 8730 8198 8192 +f 8730 8192 8724 +f 8198 7650 7644 +f 8198 7644 8192 +f 7650 7070 7056 +f 7650 7056 7644 +f 7070 6474 6468 +f 7070 6468 7056 +f 6474 5838 5832 +f 6474 5832 6468 +f 5838 5162 5148 +f 5838 5148 5832 +f 5162 4446 4432 +f 5162 4432 5148 +f 4446 3650 3644 +f 4446 3644 4432 +f 3650 2782 2776 +f 3650 2776 3644 +f 2782 1834 1828 +f 2782 1828 2776 +f 1827 2775 2767 +f 1827 2767 1803 +f 2775 3643 3635 +f 2775 3635 2767 +f 3643 4431 4399 +f 3643 4399 3635 +f 4431 5147 5139 +f 4431 5139 4399 +f 5147 5831 5823 +f 5147 5823 5139 +f 5831 6467 6459 +f 5831 6459 5823 +f 6467 7055 7047 +f 6467 7047 6459 +f 7055 7643 7635 +f 7055 7635 7047 +f 7643 8191 8183 +f 7643 8183 7635 +f 8191 8723 8707 +f 8191 8707 8183 +f 8723 9231 9207 +f 8723 9207 8707 +f 9231 9683 9667 +f 9231 9667 9207 +f 9683 10143 10135 +f 9683 10135 9667 +f 10143 10595 10571 +f 10143 10571 10135 +f 10595 10983 10967 +f 10595 10967 10571 +f 10983 11379 11371 +f 10983 11371 10967 +f 11379 11767 11751 +f 11379 11751 11371 +f 11767 12123 12099 +f 11767 12099 11751 +f 12123 12463 12439 +f 12123 12439 12099 +f 12463 12803 12787 +f 12463 12787 12439 +f 12803 13095 13079 +f 12803 13079 12787 +f 13095 13411 13387 +f 13095 13387 13079 +f 13411 13671 13663 +f 13411 13663 13387 +f 13671 13947 13931 +f 13671 13931 13663 +f 13947 14191 14183 +f 13947 14183 13931 +f 14191 14443 14427 +f 14191 14427 14183 +f 14443 14647 14631 +f 14443 14631 14427 +f 14647 14875 14851 +f 14647 14851 14631 +f 14875 15055 15047 +f 14875 15047 14851 +f 15055 15251 15219 +f 15055 15219 15047 +f 15251 15407 15383 +f 15251 15383 15219 +f 15407 15571 15547 +f 15407 15547 15383 +f 15571 15703 15687 +f 15571 15687 15547 +f 15703 15827 15811 +f 15703 15811 15687 +f 15827 15951 15935 +f 15827 15935 15811 +f 15951 16051 16027 +f 15951 16027 15935 +f 16051 16143 16119 +f 16051 16119 16027 +f 16143 16211 16203 +f 16143 16203 16119 +f 16211 16279 16263 +f 16211 16263 16203 +f 16279 16331 16307 +f 16279 16307 16263 +f 16331 16367 16351 +f 16331 16351 16307 +f 16367 16395 16379 +f 16367 16379 16351 +f 16395 16407 16387 +f 16395 16387 16379 +f 16407 16408 16388 +f 16407 16388 16387 +f 16408 16396 16380 +f 16408 16380 16388 +f 16396 16368 16352 +f 16396 16352 16380 +f 16368 16332 16308 +f 16368 16308 16352 +f 16332 16280 16264 +f 16332 16264 16308 +f 16280 16212 16204 +f 16280 16204 16264 +f 16212 16144 16120 +f 16212 16120 16204 +f 16144 16052 16028 +f 16144 16028 16120 +f 16052 15952 15936 +f 16052 15936 16028 +f 15952 15828 15812 +f 15952 15812 15936 +f 15828 15704 15688 +f 15828 15688 15812 +f 15704 15572 15548 +f 15704 15548 15688 +f 15572 15408 15384 +f 15572 15384 15548 +f 15408 15252 15220 +f 15408 15220 15384 +f 15252 15056 15048 +f 15252 15048 15220 +f 15056 14876 14852 +f 15056 14852 15048 +f 14876 14648 14632 +f 14876 14632 14852 +f 14648 14444 14428 +f 14648 14428 14632 +f 14444 14192 14184 +f 14444 14184 14428 +f 14192 13948 13932 +f 14192 13932 14184 +f 13948 13672 13664 +f 13948 13664 13932 +f 13672 13412 13388 +f 13672 13388 13664 +f 13412 13096 13080 +f 13412 13080 13388 +f 13096 12804 12788 +f 13096 12788 13080 +f 12804 12464 12440 +f 12804 12440 12788 +f 12464 12124 12100 +f 12464 12100 12440 +f 12124 11768 11752 +f 12124 11752 12100 +f 11768 11380 11372 +f 11768 11372 11752 +f 11380 10984 10968 +f 11380 10968 11372 +f 10984 10596 10572 +f 10984 10572 10968 +f 10596 10144 10136 +f 10596 10136 10572 +f 10144 9684 9668 +f 10144 9668 10136 +f 9684 9232 9208 +f 9684 9208 9668 +f 9232 8724 8708 +f 9232 8708 9208 +f 8724 8192 8184 +f 8724 8184 8708 +f 8192 7644 7636 +f 8192 7636 8184 +f 7644 7056 7048 +f 7644 7048 7636 +f 7056 6468 6460 +f 7056 6460 7048 +f 6468 5832 5824 +f 6468 5824 6460 +f 5832 5148 5140 +f 5832 5140 5824 +f 5148 4432 4400 +f 5148 4400 5140 +f 4432 3644 3636 +f 4432 3636 4400 +f 3644 2776 2768 +f 3644 2768 3636 +f 2776 1828 1804 +f 2776 1804 2768 +f 1803 2767 2743 +f 1803 2743 1795 +f 2767 3635 3627 +f 2767 3627 2743 +f 3635 4399 4391 +f 3635 4391 3627 +f 4399 5139 5123 +f 4399 5123 4391 +f 5139 5823 5815 +f 5139 5815 5123 +f 5823 6459 6443 +f 5823 6443 5815 +f 6459 7047 7039 +f 6459 7039 6443 +f 7047 7635 7603 +f 7047 7603 7039 +f 7635 8183 8159 +f 7635 8159 7603 +f 8183 8707 8691 +f 8183 8691 8159 +f 8707 9207 9175 +f 8707 9175 8691 +f 9207 9667 9651 +f 9207 9651 9175 +f 9667 10135 10111 +f 9667 10111 9651 +f 10135 10571 10539 +f 10135 10539 10111 +f 10571 10967 10951 +f 10571 10951 10539 +f 10967 11371 11355 +f 10967 11355 10951 +f 11371 11751 11703 +f 11371 11703 11355 +f 11751 12099 12083 +f 11751 12083 11703 +f 12099 12439 12423 +f 12099 12423 12083 +f 12439 12787 12739 +f 12439 12739 12423 +f 12787 13079 13063 +f 12787 13063 12739 +f 13079 13387 13347 +f 13079 13347 13063 +f 13387 13663 13639 +f 13387 13639 13347 +f 13663 13931 13907 +f 13663 13907 13639 +f 13931 14183 14143 +f 13931 14143 13907 +f 14183 14427 14387 +f 14183 14387 14143 +f 14427 14631 14615 +f 14427 14615 14387 +f 14631 14851 14811 +f 14631 14811 14615 +f 14851 15047 15015 +f 14851 15015 14811 +f 15047 15219 15195 +f 15047 15195 15015 +f 15219 15383 15375 +f 15219 15375 15195 +f 15383 15547 15515 +f 15383 15515 15375 +f 15547 15687 15655 +f 15547 15655 15515 +f 15687 15811 15787 +f 15687 15787 15655 +f 15811 15935 15895 +f 15811 15895 15787 +f 15935 16027 16003 +f 15935 16003 15895 +f 16027 16119 16087 +f 16027 16087 16003 +f 16119 16203 16163 +f 16119 16163 16087 +f 16203 16263 16231 +f 16203 16231 16163 +f 16263 16307 16287 +f 16263 16287 16231 +f 16307 16351 16323 +f 16307 16323 16287 +f 16351 16379 16343 +f 16351 16343 16323 +f 16379 16387 16359 +f 16379 16359 16343 +f 16387 16388 16360 +f 16387 16360 16359 +f 16388 16380 16344 +f 16388 16344 16360 +f 16380 16352 16324 +f 16380 16324 16344 +f 16352 16308 16288 +f 16352 16288 16324 +f 16308 16264 16232 +f 16308 16232 16288 +f 16264 16204 16164 +f 16264 16164 16232 +f 16204 16120 16088 +f 16204 16088 16164 +f 16120 16028 16004 +f 16120 16004 16088 +f 16028 15936 15896 +f 16028 15896 16004 +f 15936 15812 15788 +f 15936 15788 15896 +f 15812 15688 15656 +f 15812 15656 15788 +f 15688 15548 15516 +f 15688 15516 15656 +f 15548 15384 15376 +f 15548 15376 15516 +f 15384 15220 15196 +f 15384 15196 15376 +f 15220 15048 15016 +f 15220 15016 15196 +f 15048 14852 14812 +f 15048 14812 15016 +f 14852 14632 14616 +f 14852 14616 14812 +f 14632 14428 14388 +f 14632 14388 14616 +f 14428 14184 14144 +f 14428 14144 14388 +f 14184 13932 13908 +f 14184 13908 14144 +f 13932 13664 13640 +f 13932 13640 13908 +f 13664 13388 13348 +f 13664 13348 13640 +f 13388 13080 13064 +f 13388 13064 13348 +f 13080 12788 12740 +f 13080 12740 13064 +f 12788 12440 12424 +f 12788 12424 12740 +f 12440 12100 12084 +f 12440 12084 12424 +f 12100 11752 11704 +f 12100 11704 12084 +f 11752 11372 11356 +f 11752 11356 11704 +f 11372 10968 10952 +f 11372 10952 11356 +f 10968 10572 10540 +f 10968 10540 10952 +f 10572 10136 10112 +f 10572 10112 10540 +f 10136 9668 9652 +f 10136 9652 10112 +f 9668 9208 9176 +f 9668 9176 9652 +f 9208 8708 8692 +f 9208 8692 9176 +f 8708 8184 8160 +f 8708 8160 8692 +f 8184 7636 7604 +f 8184 7604 8160 +f 7636 7048 7040 +f 7636 7040 7604 +f 7048 6460 6444 +f 7048 6444 7040 +f 6460 5824 5816 +f 6460 5816 6444 +f 5824 5140 5124 +f 5824 5124 5816 +f 5140 4400 4392 +f 5140 4392 5124 +f 4400 3636 3628 +f 4400 3628 4392 +f 3636 2768 2744 +f 3636 2744 3628 +f 2768 1804 1796 +f 2768 1796 2744 +f 1795 2743 2735 +f 1795 2735 1787 +f 2743 3627 3603 +f 2743 3603 2735 +f 3627 4391 4383 +f 3627 4383 3603 +f 4391 5123 5099 +f 4391 5099 4383 +f 5123 5815 5791 +f 5123 5791 5099 +f 5815 6443 6427 +f 5815 6427 5791 +f 6443 7039 7031 +f 6443 7031 6427 +f 7039 7603 7595 +f 7039 7595 7031 +f 7603 8159 8143 +f 7603 8143 7595 +f 8159 8691 8659 +f 8159 8659 8143 +f 8691 9175 9143 +f 8691 9143 8659 +f 9175 9651 9627 +f 9175 9627 9143 +f 9651 10111 10095 +f 9651 10095 9627 +f 10111 10539 10491 +f 10111 10491 10095 +f 10539 10951 10911 +f 10539 10911 10491 +f 10951 11355 11323 +f 10951 11323 10911 +f 11355 11703 11687 +f 11355 11687 11323 +f 11703 12083 12043 +f 11703 12043 11687 +f 12083 12423 12399 +f 12083 12399 12043 +f 12423 12739 12699 +f 12423 12699 12399 +f 12739 13063 13023 +f 12739 13023 12699 +f 13063 13347 13307 +f 13063 13307 13023 +f 13347 13639 13591 +f 13347 13591 13307 +f 13639 13907 13851 +f 13639 13851 13591 +f 13907 14143 14111 +f 13907 14111 13851 +f 14143 14387 14331 +f 14143 14331 14111 +f 14387 14615 14567 +f 14387 14567 14331 +f 14615 14811 14771 +f 14615 14771 14567 +f 14811 15015 14975 +f 14811 14975 14771 +f 15015 15195 15147 +f 15015 15147 14975 +f 15195 15375 15311 +f 15195 15311 15147 +f 15375 15515 15475 +f 15375 15475 15311 +f 15515 15655 15607 +f 15515 15607 15475 +f 15655 15787 15739 +f 15655 15739 15607 +f 15787 15895 15863 +f 15787 15863 15739 +f 15895 16003 15963 +f 15895 15963 15863 +f 16003 16087 16043 +f 16003 16043 15963 +f 16087 16163 16127 +f 16087 16127 16043 +f 16163 16231 16187 +f 16163 16187 16127 +f 16231 16287 16239 +f 16231 16239 16187 +f 16287 16323 16271 +f 16287 16271 16239 +f 16323 16343 16299 +f 16323 16299 16271 +f 16343 16359 16315 +f 16343 16315 16299 +f 16359 16360 16316 +f 16359 16316 16315 +f 16360 16344 16300 +f 16360 16300 16316 +f 16344 16324 16272 +f 16344 16272 16300 +f 16324 16288 16240 +f 16324 16240 16272 +f 16288 16232 16188 +f 16288 16188 16240 +f 16232 16164 16128 +f 16232 16128 16188 +f 16164 16088 16044 +f 16164 16044 16128 +f 16088 16004 15964 +f 16088 15964 16044 +f 16004 15896 15864 +f 16004 15864 15964 +f 15896 15788 15740 +f 15896 15740 15864 +f 15788 15656 15608 +f 15788 15608 15740 +f 15656 15516 15476 +f 15656 15476 15608 +f 15516 15376 15312 +f 15516 15312 15476 +f 15376 15196 15148 +f 15376 15148 15312 +f 15196 15016 14976 +f 15196 14976 15148 +f 15016 14812 14772 +f 15016 14772 14976 +f 14812 14616 14568 +f 14812 14568 14772 +f 14616 14388 14332 +f 14616 14332 14568 +f 14388 14144 14112 +f 14388 14112 14332 +f 14144 13908 13852 +f 14144 13852 14112 +f 13908 13640 13592 +f 13908 13592 13852 +f 13640 13348 13308 +f 13640 13308 13592 +f 13348 13064 13024 +f 13348 13024 13308 +f 13064 12740 12700 +f 13064 12700 13024 +f 12740 12424 12400 +f 12740 12400 12700 +f 12424 12084 12044 +f 12424 12044 12400 +f 12084 11704 11688 +f 12084 11688 12044 +f 11704 11356 11324 +f 11704 11324 11688 +f 11356 10952 10912 +f 11356 10912 11324 +f 10952 10540 10492 +f 10952 10492 10912 +f 10540 10112 10096 +f 10540 10096 10492 +f 10112 9652 9628 +f 10112 9628 10096 +f 9652 9176 9144 +f 9652 9144 9628 +f 9176 8692 8660 +f 9176 8660 9144 +f 8692 8160 8144 +f 8692 8144 8660 +f 8160 7604 7596 +f 8160 7596 8144 +f 7604 7040 7032 +f 7604 7032 7596 +f 7040 6444 6428 +f 7040 6428 7032 +f 6444 5816 5792 +f 6444 5792 6428 +f 5816 5124 5100 +f 5816 5100 5792 +f 5124 4392 4384 +f 5124 4384 5100 +f 4392 3628 3604 +f 4392 3604 4384 +f 3628 2744 2736 +f 3628 2736 3604 +f 2744 1796 1788 +f 2744 1788 2736 +f 1787 2735 2703 +f 1787 2703 1755 +f 2735 3603 3539 +f 2735 3539 2703 +f 3603 4383 4335 +f 3603 4335 3539 +f 4383 5099 5059 +f 4383 5059 4335 +f 5099 5791 5727 +f 5099 5727 5059 +f 5791 6427 6371 +f 5791 6371 5727 +f 6427 7031 6967 +f 6427 6967 6371 +f 7031 7595 7547 +f 7031 7547 6967 +f 7595 8143 8087 +f 7595 8087 7547 +f 8143 8659 8587 +f 8143 8587 8087 +f 8659 9143 9095 +f 8659 9095 8587 +f 9143 9627 9579 +f 9143 9579 9095 +f 9627 10095 10023 +f 9627 10023 9579 +f 10095 10491 10451 +f 10095 10451 10023 +f 10491 10911 10871 +f 10491 10871 10451 +f 10911 11323 11251 +f 10911 11251 10871 +f 11323 11687 11631 +f 11323 11631 11251 +f 11687 12043 11987 +f 11687 11987 11631 +f 12043 12399 12311 +f 12043 12311 11987 +f 12399 12699 12659 +f 12399 12659 12311 +f 12699 13023 12959 +f 12699 12959 12659 +f 13023 13307 13267 +f 13023 13267 12959 +f 13307 13591 13543 +f 13307 13543 13267 +f 13591 13851 13803 +f 13591 13803 13543 +f 13851 14111 14047 +f 13851 14047 13803 +f 14111 14331 14299 +f 14111 14299 14047 +f 14331 14567 14503 +f 14331 14503 14299 +f 14567 14771 14723 +f 14567 14723 14503 +f 14771 14975 14903 +f 14771 14903 14723 +f 14975 15147 15091 +f 14975 15091 14903 +f 15147 15311 15271 +f 15147 15271 15091 +f 15311 15475 15427 +f 15311 15427 15271 +f 15475 15607 15563 +f 15475 15563 15427 +f 15607 15739 15695 +f 15607 15695 15563 +f 15739 15863 15803 +f 15739 15803 15695 +f 15863 15963 15903 +f 15863 15903 15803 +f 15963 16043 15987 +f 15963 15987 15903 +f 16043 16127 16071 +f 16043 16071 15987 +f 16127 16187 16135 +f 16127 16135 16071 +f 16187 16239 16179 +f 16187 16179 16135 +f 16239 16271 16219 +f 16239 16219 16179 +f 16271 16299 16247 +f 16271 16247 16219 +f 16299 16315 16255 +f 16299 16255 16247 +f 16315 16316 16256 +f 16315 16256 16255 +f 16316 16300 16248 +f 16316 16248 16256 +f 16300 16272 16220 +f 16300 16220 16248 +f 16272 16240 16180 +f 16272 16180 16220 +f 16240 16188 16136 +f 16240 16136 16180 +f 16188 16128 16072 +f 16188 16072 16136 +f 16128 16044 15988 +f 16128 15988 16072 +f 16044 15964 15904 +f 16044 15904 15988 +f 15964 15864 15804 +f 15964 15804 15904 +f 15864 15740 15696 +f 15864 15696 15804 +f 15740 15608 15564 +f 15740 15564 15696 +f 15608 15476 15428 +f 15608 15428 15564 +f 15476 15312 15272 +f 15476 15272 15428 +f 15312 15148 15092 +f 15312 15092 15272 +f 15148 14976 14904 +f 15148 14904 15092 +f 14976 14772 14724 +f 14976 14724 14904 +f 14772 14568 14504 +f 14772 14504 14724 +f 14568 14332 14300 +f 14568 14300 14504 +f 14332 14112 14048 +f 14332 14048 14300 +f 14112 13852 13804 +f 14112 13804 14048 +f 13852 13592 13544 +f 13852 13544 13804 +f 13592 13308 13268 +f 13592 13268 13544 +f 13308 13024 12960 +f 13308 12960 13268 +f 13024 12700 12660 +f 13024 12660 12960 +f 12700 12400 12312 +f 12700 12312 12660 +f 12400 12044 11988 +f 12400 11988 12312 +f 12044 11688 11632 +f 12044 11632 11988 +f 11688 11324 11252 +f 11688 11252 11632 +f 11324 10912 10872 +f 11324 10872 11252 +f 10912 10492 10452 +f 10912 10452 10872 +f 10492 10096 10024 +f 10492 10024 10452 +f 10096 9628 9580 +f 10096 9580 10024 +f 9628 9144 9096 +f 9628 9096 9580 +f 9144 8660 8588 +f 9144 8588 9096 +f 8660 8144 8088 +f 8660 8088 8588 +f 8144 7596 7548 +f 8144 7548 8088 +f 7596 7032 6968 +f 7596 6968 7548 +f 7032 6428 6372 +f 7032 6372 6968 +f 6428 5792 5728 +f 6428 5728 6372 +f 5792 5100 5060 +f 5792 5060 5728 +f 5100 4384 4336 +f 5100 4336 5060 +f 4384 3604 3540 +f 4384 3540 4336 +f 3604 2736 2704 +f 3604 2704 3540 +f 2736 1788 1756 +f 2736 1756 2704 +f 1755 2703 2687 +f 1755 2687 1739 +f 2703 3539 3523 +f 2703 3523 2687 +f 3539 4335 4303 +f 3539 4303 3523 +f 4335 5059 5027 +f 4335 5027 4303 +f 5059 5727 5695 +f 5059 5695 5027 +f 5727 6371 6323 +f 5727 6323 5695 +f 6371 6967 6943 +f 6371 6943 6323 +f 6967 7547 7515 +f 6967 7515 6943 +f 7547 8087 8031 +f 7547 8031 7515 +f 8087 8587 8555 +f 8087 8555 8031 +f 8587 9095 9055 +f 8587 9055 8555 +f 9095 9579 9531 +f 9095 9531 9055 +f 9579 10023 9967 +f 9579 9967 9531 +f 10023 10451 10403 +f 10023 10403 9967 +f 10451 10871 10807 +f 10451 10807 10403 +f 10871 11251 11211 +f 10871 11211 10807 +f 11251 11631 11567 +f 11251 11567 11211 +f 11631 11987 11947 +f 11631 11947 11567 +f 11987 12311 12263 +f 11987 12263 11947 +f 12311 12659 12603 +f 12311 12603 12263 +f 12659 12959 12903 +f 12659 12903 12603 +f 12959 13267 13203 +f 12959 13203 12903 +f 13267 13543 13479 +f 13267 13479 13203 +f 13543 13803 13763 +f 13543 13763 13479 +f 13803 14047 13999 +f 13803 13999 13763 +f 14047 14299 14235 +f 14047 14235 13999 +f 14299 14503 14455 +f 14299 14455 14235 +f 14503 14723 14667 +f 14503 14667 14455 +f 14723 14903 14867 +f 14723 14867 14667 +f 14903 15091 15031 +f 14903 15031 14867 +f 15091 15271 15203 +f 15091 15203 15031 +f 15271 15427 15367 +f 15271 15367 15203 +f 15427 15563 15491 +f 15427 15491 15367 +f 15563 15695 15623 +f 15563 15623 15491 +f 15695 15803 15731 +f 15695 15731 15623 +f 15803 15903 15843 +f 15803 15843 15731 +f 15903 15987 15927 +f 15903 15927 15843 +f 15987 16071 15995 +f 15987 15995 15927 +f 16071 16135 16063 +f 16071 16063 15995 +f 16135 16179 16111 +f 16135 16111 16063 +f 16179 16219 16155 +f 16179 16155 16111 +f 16219 16247 16171 +f 16219 16171 16155 +f 16247 16255 16195 +f 16247 16195 16171 +f 16255 16256 16196 +f 16255 16196 16195 +f 16256 16248 16172 +f 16256 16172 16196 +f 16248 16220 16156 +f 16248 16156 16172 +f 16220 16180 16112 +f 16220 16112 16156 +f 16180 16136 16064 +f 16180 16064 16112 +f 16136 16072 15996 +f 16136 15996 16064 +f 16072 15988 15928 +f 16072 15928 15996 +f 15988 15904 15844 +f 15988 15844 15928 +f 15904 15804 15732 +f 15904 15732 15844 +f 15804 15696 15624 +f 15804 15624 15732 +f 15696 15564 15492 +f 15696 15492 15624 +f 15564 15428 15368 +f 15564 15368 15492 +f 15428 15272 15204 +f 15428 15204 15368 +f 15272 15092 15032 +f 15272 15032 15204 +f 15092 14904 14868 +f 15092 14868 15032 +f 14904 14724 14668 +f 14904 14668 14868 +f 14724 14504 14456 +f 14724 14456 14668 +f 14504 14300 14236 +f 14504 14236 14456 +f 14300 14048 14000 +f 14300 14000 14236 +f 14048 13804 13764 +f 14048 13764 14000 +f 13804 13544 13480 +f 13804 13480 13764 +f 13544 13268 13204 +f 13544 13204 13480 +f 13268 12960 12904 +f 13268 12904 13204 +f 12960 12660 12604 +f 12960 12604 12904 +f 12660 12312 12264 +f 12660 12264 12604 +f 12312 11988 11948 +f 12312 11948 12264 +f 11988 11632 11568 +f 11988 11568 11948 +f 11632 11252 11212 +f 11632 11212 11568 +f 11252 10872 10808 +f 11252 10808 11212 +f 10872 10452 10404 +f 10872 10404 10808 +f 10452 10024 9968 +f 10452 9968 10404 +f 10024 9580 9532 +f 10024 9532 9968 +f 9580 9096 9056 +f 9580 9056 9532 +f 9096 8588 8556 +f 9096 8556 9056 +f 8588 8088 8032 +f 8588 8032 8556 +f 8088 7548 7516 +f 8088 7516 8032 +f 7548 6968 6944 +f 7548 6944 7516 +f 6968 6372 6324 +f 6968 6324 6944 +f 6372 5728 5696 +f 6372 5696 6324 +f 5728 5060 5028 +f 5728 5028 5696 +f 5060 4336 4304 +f 5060 4304 5028 +f 4336 3540 3524 +f 4336 3524 4304 +f 3540 2704 2688 +f 3540 2688 3524 +f 2704 1756 1740 +f 2704 1740 2688 +f 1739 2687 2663 +f 1739 2663 1723 +f 2687 3523 3483 +f 2687 3483 2663 +f 3523 4303 4247 +f 3523 4247 3483 +f 4303 5027 4987 +f 4303 4987 4247 +f 5027 5695 5655 +f 5027 5655 4987 +f 5695 6323 6291 +f 5695 6291 5655 +f 6323 6943 6871 +f 6323 6871 6291 +f 6943 7515 7435 +f 6943 7435 6871 +f 7515 8031 7991 +f 7515 7991 7435 +f 8031 8555 8515 +f 8031 8515 7991 +f 8555 9055 9007 +f 8555 9007 8515 +f 9055 9531 9451 +f 9055 9451 9007 +f 9531 9967 9903 +f 9531 9903 9451 +f 9967 10403 10355 +f 9967 10355 9903 +f 10403 10807 10743 +f 10403 10743 10355 +f 10807 11211 11139 +f 10807 11139 10743 +f 11211 11567 11527 +f 11211 11527 11139 +f 11567 11947 11867 +f 11567 11867 11527 +f 11947 12263 12223 +f 11947 12223 11867 +f 12263 12603 12539 +f 12263 12539 12223 +f 12603 12903 12847 +f 12603 12847 12539 +f 12903 13203 13139 +f 12903 13139 12847 +f 13203 13479 13439 +f 13203 13439 13139 +f 13479 13763 13679 +f 13479 13679 13439 +f 13763 13999 13939 +f 13763 13939 13679 +f 13999 14235 14159 +f 13999 14159 13939 +f 14235 14455 14379 +f 14235 14379 14159 +f 14455 14667 14591 +f 14455 14591 14379 +f 14667 14867 14779 +f 14667 14779 14591 +f 14867 15031 14943 +f 14867 14943 14779 +f 15031 15203 15131 +f 15031 15131 14943 +f 15203 15367 15279 +f 15203 15279 15131 +f 15367 15491 15419 +f 15367 15419 15279 +f 15491 15623 15539 +f 15491 15539 15419 +f 15623 15731 15647 +f 15623 15647 15539 +f 15731 15843 15763 +f 15731 15763 15647 +f 15843 15927 15855 +f 15843 15855 15763 +f 15927 15995 15919 +f 15927 15919 15855 +f 15995 16063 15979 +f 15995 15979 15919 +f 16063 16111 16035 +f 16063 16035 15979 +f 16111 16155 16079 +f 16111 16079 16035 +f 16155 16171 16095 +f 16155 16095 16079 +f 16171 16195 16103 +f 16171 16103 16095 +f 16195 16196 16104 +f 16195 16104 16103 +f 16196 16172 16096 +f 16196 16096 16104 +f 16172 16156 16080 +f 16172 16080 16096 +f 16156 16112 16036 +f 16156 16036 16080 +f 16112 16064 15980 +f 16112 15980 16036 +f 16064 15996 15920 +f 16064 15920 15980 +f 15996 15928 15856 +f 15996 15856 15920 +f 15928 15844 15764 +f 15928 15764 15856 +f 15844 15732 15648 +f 15844 15648 15764 +f 15732 15624 15540 +f 15732 15540 15648 +f 15624 15492 15420 +f 15624 15420 15540 +f 15492 15368 15280 +f 15492 15280 15420 +f 15368 15204 15132 +f 15368 15132 15280 +f 15204 15032 14944 +f 15204 14944 15132 +f 15032 14868 14780 +f 15032 14780 14944 +f 14868 14668 14592 +f 14868 14592 14780 +f 14668 14456 14380 +f 14668 14380 14592 +f 14456 14236 14160 +f 14456 14160 14380 +f 14236 14000 13940 +f 14236 13940 14160 +f 14000 13764 13680 +f 14000 13680 13940 +f 13764 13480 13440 +f 13764 13440 13680 +f 13480 13204 13140 +f 13480 13140 13440 +f 13204 12904 12848 +f 13204 12848 13140 +f 12904 12604 12540 +f 12904 12540 12848 +f 12604 12264 12224 +f 12604 12224 12540 +f 12264 11948 11868 +f 12264 11868 12224 +f 11948 11568 11528 +f 11948 11528 11868 +f 11568 11212 11140 +f 11568 11140 11528 +f 11212 10808 10744 +f 11212 10744 11140 +f 10808 10404 10356 +f 10808 10356 10744 +f 10404 9968 9904 +f 10404 9904 10356 +f 9968 9532 9452 +f 9968 9452 9904 +f 9532 9056 9008 +f 9532 9008 9452 +f 9056 8556 8516 +f 9056 8516 9008 +f 8556 8032 7992 +f 8556 7992 8516 +f 8032 7516 7436 +f 8032 7436 7992 +f 7516 6944 6872 +f 7516 6872 7436 +f 6944 6324 6292 +f 6944 6292 6872 +f 6324 5696 5656 +f 6324 5656 6292 +f 5696 5028 4988 +f 5696 4988 5656 +f 5028 4304 4248 +f 5028 4248 4988 +f 4304 3524 3484 +f 4304 3484 4248 +f 3524 2688 2664 +f 3524 2664 3484 +f 2688 1740 1724 +f 2688 1724 2664 +f 1723 2663 2631 +f 1723 2631 1683 +f 2663 3483 3467 +f 2663 3467 2631 +f 3483 4247 4231 +f 3483 4231 3467 +f 4247 4987 4939 +f 4247 4939 4231 +f 4987 5655 5615 +f 4987 5615 4939 +f 5655 6291 6243 +f 5655 6243 5615 +f 6291 6871 6847 +f 6291 6847 6243 +f 6871 7435 7419 +f 6871 7419 6847 +f 7435 7991 7951 +f 7435 7951 7419 +f 7991 8515 8467 +f 7991 8467 7951 +f 8515 9007 8927 +f 8515 8927 8467 +f 9007 9451 9395 +f 9007 9395 8927 +f 9451 9903 9871 +f 9451 9871 9395 +f 9903 10355 10275 +f 9903 10275 9871 +f 10355 10743 10695 +f 10355 10695 10275 +f 10743 11139 11091 +f 10743 11091 10695 +f 11139 11527 11439 +f 11139 11439 11091 +f 11527 11867 11819 +f 11527 11819 11439 +f 11867 12223 12143 +f 11867 12143 11819 +f 12223 12539 12483 +f 12223 12483 12143 +f 12539 12847 12795 +f 12539 12795 12483 +f 12847 13139 13071 +f 12847 13071 12795 +f 13139 13439 13339 +f 13139 13339 13071 +f 13439 13679 13599 +f 13439 13599 13339 +f 13679 13939 13835 +f 13679 13835 13599 +f 13939 14159 14071 +f 13939 14071 13835 +f 14159 14379 14291 +f 14159 14291 14071 +f 14379 14591 14495 +f 14379 14495 14291 +f 14591 14779 14699 +f 14591 14699 14495 +f 14779 14943 14887 +f 14779 14887 14699 +f 14943 15131 15039 +f 14943 15039 14887 +f 15131 15279 15187 +f 15131 15187 15039 +f 15279 15419 15319 +f 15279 15319 15187 +f 15419 15539 15451 +f 15419 15451 15319 +f 15539 15647 15579 +f 15539 15579 15451 +f 15647 15763 15671 +f 15647 15671 15579 +f 15763 15855 15755 +f 15763 15755 15671 +f 15855 15919 15819 +f 15855 15819 15755 +f 15919 15979 15879 +f 15919 15879 15819 +f 15979 16035 15943 +f 15979 15943 15879 +f 16035 16079 15971 +f 16035 15971 15943 +f 16079 16095 16011 +f 16079 16011 15971 +f 16095 16103 16019 +f 16095 16019 16011 +f 16103 16104 16020 +f 16103 16020 16019 +f 16104 16096 16012 +f 16104 16012 16020 +f 16096 16080 15972 +f 16096 15972 16012 +f 16080 16036 15944 +f 16080 15944 15972 +f 16036 15980 15880 +f 16036 15880 15944 +f 15980 15920 15820 +f 15980 15820 15880 +f 15920 15856 15756 +f 15920 15756 15820 +f 15856 15764 15672 +f 15856 15672 15756 +f 15764 15648 15580 +f 15764 15580 15672 +f 15648 15540 15452 +f 15648 15452 15580 +f 15540 15420 15320 +f 15540 15320 15452 +f 15420 15280 15188 +f 15420 15188 15320 +f 15280 15132 15040 +f 15280 15040 15188 +f 15132 14944 14888 +f 15132 14888 15040 +f 14944 14780 14700 +f 14944 14700 14888 +f 14780 14592 14496 +f 14780 14496 14700 +f 14592 14380 14292 +f 14592 14292 14496 +f 14380 14160 14072 +f 14380 14072 14292 +f 14160 13940 13836 +f 14160 13836 14072 +f 13940 13680 13600 +f 13940 13600 13836 +f 13680 13440 13340 +f 13680 13340 13600 +f 13440 13140 13072 +f 13440 13072 13340 +f 13140 12848 12796 +f 13140 12796 13072 +f 12848 12540 12484 +f 12848 12484 12796 +f 12540 12224 12144 +f 12540 12144 12484 +f 12224 11868 11820 +f 12224 11820 12144 +f 11868 11528 11440 +f 11868 11440 11820 +f 11528 11140 11092 +f 11528 11092 11440 +f 11140 10744 10696 +f 11140 10696 11092 +f 10744 10356 10276 +f 10744 10276 10696 +f 10356 9904 9872 +f 10356 9872 10276 +f 9904 9452 9396 +f 9904 9396 9872 +f 9452 9008 8928 +f 9452 8928 9396 +f 9008 8516 8468 +f 9008 8468 8928 +f 8516 7992 7952 +f 8516 7952 8468 +f 7992 7436 7420 +f 7992 7420 7952 +f 7436 6872 6848 +f 7436 6848 7420 +f 6872 6292 6244 +f 6872 6244 6848 +f 6292 5656 5616 +f 6292 5616 6244 +f 5656 4988 4940 +f 5656 4940 5616 +f 4988 4248 4232 +f 4988 4232 4940 +f 4248 3484 3468 +f 4248 3468 4232 +f 3484 2664 2632 +f 3484 2632 3468 +f 2664 1724 1684 +f 2664 1684 2632 +f 1683 2631 2599 +f 1683 2599 1667 +f 2631 3467 3435 +f 2631 3435 2599 +f 3467 4231 4183 +f 3467 4183 3435 +f 4231 4939 4915 +f 4231 4915 4183 +f 4939 5615 5543 +f 4939 5543 4915 +f 5615 6243 6195 +f 5615 6195 5543 +f 6243 6847 6799 +f 6243 6799 6195 +f 6847 7419 7355 +f 6847 7355 6799 +f 7419 7951 7871 +f 7419 7871 7355 +f 7951 8467 8387 +f 7951 8387 7871 +f 8467 8927 8871 +f 8467 8871 8387 +f 8927 9395 9363 +f 8927 9363 8871 +f 9395 9871 9791 +f 9395 9791 9363 +f 9871 10275 10227 +f 9871 10227 9791 +f 10275 10695 10631 +f 10275 10631 10227 +f 10695 11091 11027 +f 10695 11027 10631 +f 11091 11439 11387 +f 11091 11387 11027 +f 11439 11819 11735 +f 11439 11735 11387 +f 11819 12143 12067 +f 11819 12067 11735 +f 12143 12483 12383 +f 12143 12383 12067 +f 12483 12795 12675 +f 12483 12675 12383 +f 12795 13071 12951 +f 12795 12951 12675 +f 13071 13339 13235 +f 13071 13235 12951 +f 13339 13599 13503 +f 13339 13503 13235 +f 13599 13835 13755 +f 13599 13755 13503 +f 13835 14071 13991 +f 13835 13991 13755 +f 14071 14291 14207 +f 14071 14207 13991 +f 14291 14495 14411 +f 14291 14411 14207 +f 14495 14699 14607 +f 14495 14607 14411 +f 14699 14887 14763 +f 14699 14763 14607 +f 14887 15039 14935 +f 14887 14935 14763 +f 15039 15187 15083 +f 15039 15083 14935 +f 15187 15319 15227 +f 15187 15227 15083 +f 15319 15451 15351 +f 15319 15351 15227 +f 15451 15579 15459 +f 15451 15459 15351 +f 15579 15671 15555 +f 15579 15555 15459 +f 15671 15755 15639 +f 15671 15639 15555 +f 15755 15819 15723 +f 15755 15723 15639 +f 15819 15879 15779 +f 15819 15779 15723 +f 15879 15943 15835 +f 15879 15835 15779 +f 15943 15971 15871 +f 15943 15871 15835 +f 15971 16011 15887 +f 15971 15887 15871 +f 16011 16019 15911 +f 16011 15911 15887 +f 16019 16020 15912 +f 16019 15912 15911 +f 16020 16012 15888 +f 16020 15888 15912 +f 16012 15972 15872 +f 16012 15872 15888 +f 15972 15944 15836 +f 15972 15836 15872 +f 15944 15880 15780 +f 15944 15780 15836 +f 15880 15820 15724 +f 15880 15724 15780 +f 15820 15756 15640 +f 15820 15640 15724 +f 15756 15672 15556 +f 15756 15556 15640 +f 15672 15580 15460 +f 15672 15460 15556 +f 15580 15452 15352 +f 15580 15352 15460 +f 15452 15320 15228 +f 15452 15228 15352 +f 15320 15188 15084 +f 15320 15084 15228 +f 15188 15040 14936 +f 15188 14936 15084 +f 15040 14888 14764 +f 15040 14764 14936 +f 14888 14700 14608 +f 14888 14608 14764 +f 14700 14496 14412 +f 14700 14412 14608 +f 14496 14292 14208 +f 14496 14208 14412 +f 14292 14072 13992 +f 14292 13992 14208 +f 14072 13836 13756 +f 14072 13756 13992 +f 13836 13600 13504 +f 13836 13504 13756 +f 13600 13340 13236 +f 13600 13236 13504 +f 13340 13072 12952 +f 13340 12952 13236 +f 13072 12796 12676 +f 13072 12676 12952 +f 12796 12484 12384 +f 12796 12384 12676 +f 12484 12144 12068 +f 12484 12068 12384 +f 12144 11820 11736 +f 12144 11736 12068 +f 11820 11440 11388 +f 11820 11388 11736 +f 11440 11092 11028 +f 11440 11028 11388 +f 11092 10696 10632 +f 11092 10632 11028 +f 10696 10276 10228 +f 10696 10228 10632 +f 10276 9872 9792 +f 10276 9792 10228 +f 9872 9396 9364 +f 9872 9364 9792 +f 9396 8928 8872 +f 9396 8872 9364 +f 8928 8468 8388 +f 8928 8388 8872 +f 8468 7952 7872 +f 8468 7872 8388 +f 7952 7420 7356 +f 7952 7356 7872 +f 7420 6848 6800 +f 7420 6800 7356 +f 6848 6244 6196 +f 6848 6196 6800 +f 6244 5616 5544 +f 6244 5544 6196 +f 5616 4940 4916 +f 5616 4916 5544 +f 4940 4232 4184 +f 4940 4184 4916 +f 4232 3468 3436 +f 4232 3436 4184 +f 3468 2632 2600 +f 3468 2600 3436 +f 2632 1684 1668 +f 2632 1668 2600 +f 1667 2599 2583 +f 1667 2583 1651 +f 2599 3435 3403 +f 2599 3403 2583 +f 3435 4183 4167 +f 3435 4167 3403 +f 4183 4915 4851 +f 4183 4851 4167 +f 4915 5543 5519 +f 4915 5519 4851 +f 5543 6195 6123 +f 5543 6123 5519 +f 6195 6799 6719 +f 6195 6719 6123 +f 6799 7355 7291 +f 6799 7291 6719 +f 7355 7871 7831 +f 7355 7831 7291 +f 7871 8387 8331 +f 7871 8331 7831 +f 8387 8871 8839 +f 8387 8839 8331 +f 8871 9363 9283 +f 8871 9283 8839 +f 9363 9791 9735 +f 9363 9735 9283 +f 9791 10227 10155 +f 9791 10155 9735 +f 10227 10631 10555 +f 10227 10555 10155 +f 10631 11027 10919 +f 10631 10919 10555 +f 11027 11387 11283 +f 11027 11283 10919 +f 11387 11735 11623 +f 11387 11623 11283 +f 11735 12067 11971 +f 11735 11971 11623 +f 12067 12383 12255 +f 12067 12255 11971 +f 12383 12675 12579 +f 12383 12579 12255 +f 12675 12951 12871 +f 12675 12871 12579 +f 12951 13235 13147 +f 12951 13147 12871 +f 13235 13503 13431 +f 13235 13431 13147 +f 13503 13755 13655 +f 13503 13655 13431 +f 13755 13991 13875 +f 13755 13875 13655 +f 13991 14207 14095 +f 13991 14095 13875 +f 14207 14411 14283 +f 14207 14283 14095 +f 14411 14607 14487 +f 14411 14487 14283 +f 14607 14763 14655 +f 14607 14655 14487 +f 14763 14935 14819 +f 14763 14819 14655 +f 14935 15083 14967 +f 14935 14967 14819 +f 15083 15227 15115 +f 15083 15115 14967 +f 15227 15351 15235 +f 15227 15235 15115 +f 15351 15459 15343 +f 15351 15343 15235 +f 15459 15555 15443 +f 15459 15443 15343 +f 15555 15639 15523 +f 15555 15523 15443 +f 15639 15723 15599 +f 15639 15599 15523 +f 15723 15779 15679 +f 15723 15679 15599 +f 15779 15835 15715 +f 15779 15715 15679 +f 15835 15871 15747 +f 15835 15747 15715 +f 15871 15887 15771 +f 15871 15771 15747 +f 15887 15911 15795 +f 15887 15795 15771 +f 15911 15912 15796 +f 15911 15796 15795 +f 15912 15888 15772 +f 15912 15772 15796 +f 15888 15872 15748 +f 15888 15748 15772 +f 15872 15836 15716 +f 15872 15716 15748 +f 15836 15780 15680 +f 15836 15680 15716 +f 15780 15724 15600 +f 15780 15600 15680 +f 15724 15640 15524 +f 15724 15524 15600 +f 15640 15556 15444 +f 15640 15444 15524 +f 15556 15460 15344 +f 15556 15344 15444 +f 15460 15352 15236 +f 15460 15236 15344 +f 15352 15228 15116 +f 15352 15116 15236 +f 15228 15084 14968 +f 15228 14968 15116 +f 15084 14936 14820 +f 15084 14820 14968 +f 14936 14764 14656 +f 14936 14656 14820 +f 14764 14608 14488 +f 14764 14488 14656 +f 14608 14412 14284 +f 14608 14284 14488 +f 14412 14208 14096 +f 14412 14096 14284 +f 14208 13992 13876 +f 14208 13876 14096 +f 13992 13756 13656 +f 13992 13656 13876 +f 13756 13504 13432 +f 13756 13432 13656 +f 13504 13236 13148 +f 13504 13148 13432 +f 13236 12952 12872 +f 13236 12872 13148 +f 12952 12676 12580 +f 12952 12580 12872 +f 12676 12384 12256 +f 12676 12256 12580 +f 12384 12068 11972 +f 12384 11972 12256 +f 12068 11736 11624 +f 12068 11624 11972 +f 11736 11388 11284 +f 11736 11284 11624 +f 11388 11028 10920 +f 11388 10920 11284 +f 11028 10632 10556 +f 11028 10556 10920 +f 10632 10228 10156 +f 10632 10156 10556 +f 10228 9792 9736 +f 10228 9736 10156 +f 9792 9364 9284 +f 9792 9284 9736 +f 9364 8872 8840 +f 9364 8840 9284 +f 8872 8388 8332 +f 8872 8332 8840 +f 8388 7872 7832 +f 8388 7832 8332 +f 7872 7356 7292 +f 7872 7292 7832 +f 7356 6800 6720 +f 7356 6720 7292 +f 6800 6196 6124 +f 6800 6124 6720 +f 6196 5544 5520 +f 6196 5520 6124 +f 5544 4916 4852 +f 5544 4852 5520 +f 4916 4184 4168 +f 4916 4168 4852 +f 4184 3436 3404 +f 4184 3404 4168 +f 3436 2600 2584 +f 3436 2584 3404 +f 2600 1668 1652 +f 2600 1652 2584 +f 1651 2583 2535 +f 1651 2535 1619 +f 2583 3403 3355 +f 2583 3355 2535 +f 3403 4167 4127 +f 3403 4127 3355 +f 4167 4851 4803 +f 4167 4803 4127 +f 4851 5519 5495 +f 4851 5495 4803 +f 5519 6123 6099 +f 5519 6099 5495 +f 6123 6719 6679 +f 6123 6679 6099 +f 6719 7291 7235 +f 6719 7235 6679 +f 7291 7831 7775 +f 7291 7775 7235 +f 7831 8331 8291 +f 7831 8291 7775 +f 8331 8839 8743 +f 8331 8743 8291 +f 8839 9283 9215 +f 8839 9215 8743 +f 9283 9735 9635 +f 9283 9635 9215 +f 9735 10155 10055 +f 9735 10055 9635 +f 10155 10555 10419 +f 10155 10419 10055 +f 10555 10919 10815 +f 10555 10815 10419 +f 10919 11283 11179 +f 10919 11179 10815 +f 11283 11623 11535 +f 11283 11535 11179 +f 11623 11971 11859 +f 11623 11859 11535 +f 11971 12255 12191 +f 11971 12191 11859 +f 12255 12579 12491 +f 12255 12491 12191 +f 12579 12871 12755 +f 12579 12755 12491 +f 12871 13147 13055 +f 12871 13055 12755 +f 13147 13431 13275 +f 13147 13275 13055 +f 13431 13655 13511 +f 13431 13511 13275 +f 13655 13875 13771 +f 13655 13771 13511 +f 13875 14095 13983 +f 13875 13983 13771 +f 14095 14283 14167 +f 14095 14167 13983 +f 14283 14487 14355 +f 14283 14355 14167 +f 14487 14655 14527 +f 14487 14527 14355 +f 14655 14819 14707 +f 14655 14707 14527 +f 14819 14967 14843 +f 14819 14843 14707 +f 14967 15115 14983 +f 14967 14983 14843 +f 15115 15235 15107 +f 15115 15107 14983 +f 15235 15343 15211 +f 15235 15211 15107 +f 15343 15443 15295 +f 15343 15295 15211 +f 15443 15523 15399 +f 15443 15399 15295 +f 15523 15599 15467 +f 15523 15467 15399 +f 15599 15679 15531 +f 15599 15531 15467 +f 15679 15715 15591 +f 15679 15591 15531 +f 15715 15747 15615 +f 15715 15615 15591 +f 15747 15771 15631 +f 15747 15631 15615 +f 15771 15795 15663 +f 15771 15663 15631 +f 15795 15796 15664 +f 15795 15664 15663 +f 15796 15772 15632 +f 15796 15632 15664 +f 15772 15748 15616 +f 15772 15616 15632 +f 15748 15716 15592 +f 15748 15592 15616 +f 15716 15680 15532 +f 15716 15532 15592 +f 15680 15600 15468 +f 15680 15468 15532 +f 15600 15524 15400 +f 15600 15400 15468 +f 15524 15444 15296 +f 15524 15296 15400 +f 15444 15344 15212 +f 15444 15212 15296 +f 15344 15236 15108 +f 15344 15108 15212 +f 15236 15116 14984 +f 15236 14984 15108 +f 15116 14968 14844 +f 15116 14844 14984 +f 14968 14820 14708 +f 14968 14708 14844 +f 14820 14656 14528 +f 14820 14528 14708 +f 14656 14488 14356 +f 14656 14356 14528 +f 14488 14284 14168 +f 14488 14168 14356 +f 14284 14096 13984 +f 14284 13984 14168 +f 14096 13876 13772 +f 14096 13772 13984 +f 13876 13656 13512 +f 13876 13512 13772 +f 13656 13432 13276 +f 13656 13276 13512 +f 13432 13148 13056 +f 13432 13056 13276 +f 13148 12872 12756 +f 13148 12756 13056 +f 12872 12580 12492 +f 12872 12492 12756 +f 12580 12256 12192 +f 12580 12192 12492 +f 12256 11972 11860 +f 12256 11860 12192 +f 11972 11624 11536 +f 11972 11536 11860 +f 11624 11284 11180 +f 11624 11180 11536 +f 11284 10920 10816 +f 11284 10816 11180 +f 10920 10556 10420 +f 10920 10420 10816 +f 10556 10156 10056 +f 10556 10056 10420 +f 10156 9736 9636 +f 10156 9636 10056 +f 9736 9284 9216 +f 9736 9216 9636 +f 9284 8840 8744 +f 9284 8744 9216 +f 8840 8332 8292 +f 8840 8292 8744 +f 8332 7832 7776 +f 8332 7776 8292 +f 7832 7292 7236 +f 7832 7236 7776 +f 7292 6720 6680 +f 7292 6680 7236 +f 6720 6124 6100 +f 6720 6100 6680 +f 6124 5520 5496 +f 6124 5496 6100 +f 5520 4852 4804 +f 5520 4804 5496 +f 4852 4168 4128 +f 4852 4128 4804 +f 4168 3404 3356 +f 4168 3356 4128 +f 3404 2584 2536 +f 3404 2536 3356 +f 2584 1652 1620 +f 2584 1620 2536 +f 1619 2535 2487 +f 1619 2487 1587 +f 2535 3355 3323 +f 2535 3323 2487 +f 3355 4127 4055 +f 3355 4055 3323 +f 4127 4803 4755 +f 4127 4755 4055 +f 4803 5495 5391 +f 4803 5391 4755 +f 5495 6099 6051 +f 5495 6051 5391 +f 6099 6679 6639 +f 6099 6639 6051 +f 6679 7235 7187 +f 6679 7187 6639 +f 7235 7775 7719 +f 7235 7719 7187 +f 7775 8291 8203 +f 7775 8203 7719 +f 8291 8743 8675 +f 8291 8675 8203 +f 8743 9215 9087 +f 8743 9087 8675 +f 9215 9635 9539 +f 9215 9539 9087 +f 9635 10055 9927 +f 9635 9927 9539 +f 10055 10419 10323 +f 10055 10323 9927 +f 10419 10815 10711 +f 10419 10711 10323 +f 10815 11179 11083 +f 10815 11083 10711 +f 11179 11535 11431 +f 11179 11431 11083 +f 11535 11859 11759 +f 11535 11759 11431 +f 11859 12191 12059 +f 11859 12059 11759 +f 12191 12491 12343 +f 12191 12343 12059 +f 12491 12755 12635 +f 12491 12635 12343 +f 12755 13055 12895 +f 12755 12895 12635 +f 13055 13275 13163 +f 13055 13163 12895 +f 13275 13511 13423 +f 13275 13423 13163 +f 13511 13771 13631 +f 13511 13631 13423 +f 13771 13983 13819 +f 13771 13819 13631 +f 13983 14167 14023 +f 13983 14023 13819 +f 14167 14355 14227 +f 14167 14227 14023 +f 14355 14527 14403 +f 14355 14403 14227 +f 14527 14707 14559 +f 14527 14559 14403 +f 14707 14843 14715 +f 14707 14715 14559 +f 14843 14983 14835 +f 14843 14835 14715 +f 14983 15107 14959 +f 14983 14959 14835 +f 15107 15211 15075 +f 15107 15075 14959 +f 15211 15295 15155 +f 15211 15155 15075 +f 15295 15399 15263 +f 15295 15263 15155 +f 15399 15467 15327 +f 15399 15327 15263 +f 15467 15531 15391 +f 15467 15391 15327 +f 15531 15591 15435 +f 15531 15435 15391 +f 15591 15615 15483 +f 15591 15483 15435 +f 15615 15631 15499 +f 15615 15499 15483 +f 15631 15663 15507 +f 15631 15507 15499 +f 15663 15664 15508 +f 15663 15508 15507 +f 15664 15632 15500 +f 15664 15500 15508 +f 15632 15616 15484 +f 15632 15484 15500 +f 15616 15592 15436 +f 15616 15436 15484 +f 15592 15532 15392 +f 15592 15392 15436 +f 15532 15468 15328 +f 15532 15328 15392 +f 15468 15400 15264 +f 15468 15264 15328 +f 15400 15296 15156 +f 15400 15156 15264 +f 15296 15212 15076 +f 15296 15076 15156 +f 15212 15108 14960 +f 15212 14960 15076 +f 15108 14984 14836 +f 15108 14836 14960 +f 14984 14844 14716 +f 14984 14716 14836 +f 14844 14708 14560 +f 14844 14560 14716 +f 14708 14528 14404 +f 14708 14404 14560 +f 14528 14356 14228 +f 14528 14228 14404 +f 14356 14168 14024 +f 14356 14024 14228 +f 14168 13984 13820 +f 14168 13820 14024 +f 13984 13772 13632 +f 13984 13632 13820 +f 13772 13512 13424 +f 13772 13424 13632 +f 13512 13276 13164 +f 13512 13164 13424 +f 13276 13056 12896 +f 13276 12896 13164 +f 13056 12756 12636 +f 13056 12636 12896 +f 12756 12492 12344 +f 12756 12344 12636 +f 12492 12192 12060 +f 12492 12060 12344 +f 12192 11860 11760 +f 12192 11760 12060 +f 11860 11536 11432 +f 11860 11432 11760 +f 11536 11180 11084 +f 11536 11084 11432 +f 11180 10816 10712 +f 11180 10712 11084 +f 10816 10420 10324 +f 10816 10324 10712 +f 10420 10056 9928 +f 10420 9928 10324 +f 10056 9636 9540 +f 10056 9540 9928 +f 9636 9216 9088 +f 9636 9088 9540 +f 9216 8744 8676 +f 9216 8676 9088 +f 8744 8292 8204 +f 8744 8204 8676 +f 8292 7776 7720 +f 8292 7720 8204 +f 7776 7236 7188 +f 7776 7188 7720 +f 7236 6680 6640 +f 7236 6640 7188 +f 6680 6100 6052 +f 6680 6052 6640 +f 6100 5496 5392 +f 6100 5392 6052 +f 5496 4804 4756 +f 5496 4756 5392 +f 4804 4128 4056 +f 4804 4056 4756 +f 4128 3356 3324 +f 4128 3324 4056 +f 3356 2536 2488 +f 3356 2488 3324 +f 2536 1620 1588 +f 2536 1588 2488 +f 1587 2487 2471 +f 1587 2471 1571 +f 2487 3323 3283 +f 2487 3283 2471 +f 3323 4055 4023 +f 3323 4023 3283 +f 4055 4755 4739 +f 4055 4739 4023 +f 4755 5391 5359 +f 4755 5359 4739 +f 5391 6051 5979 +f 5391 5979 5359 +f 6051 6639 6551 +f 6051 6551 5979 +f 6639 7187 7115 +f 6639 7115 6551 +f 7187 7719 7611 +f 7187 7611 7115 +f 7719 8203 8079 +f 7719 8079 7611 +f 8203 8675 8539 +f 8203 8539 8079 +f 8675 9087 8999 +f 8675 8999 8539 +f 9087 9539 9403 +f 9087 9403 8999 +f 9539 9927 9847 +f 9539 9847 9403 +f 9927 10323 10235 +f 9927 10235 9847 +f 10323 10711 10623 +f 10323 10623 10235 +f 10711 11083 10959 +f 10711 10959 10623 +f 11083 11431 11299 +f 11083 11299 10959 +f 11431 11759 11599 +f 11431 11599 11299 +f 11759 12059 11915 +f 11759 11915 11599 +f 12059 12343 12231 +f 12059 12231 11915 +f 12343 12635 12515 +f 12343 12515 12231 +f 12635 12895 12771 +f 12635 12771 12515 +f 12895 13163 13031 +f 12895 13031 12771 +f 13163 13423 13243 +f 13163 13243 13031 +f 13423 13631 13471 +f 13423 13471 13243 +f 13631 13819 13699 +f 13631 13699 13471 +f 13819 14023 13899 +f 13819 13899 13699 +f 14023 14227 14079 +f 14023 14079 13899 +f 14227 14403 14251 +f 14227 14251 14079 +f 14403 14559 14419 +f 14403 14419 14251 +f 14559 14715 14535 +f 14559 14535 14419 +f 14715 14835 14691 +f 14715 14691 14535 +f 14835 14959 14803 +f 14835 14803 14691 +f 14959 15075 14911 +f 14959 14911 14803 +f 15075 15155 15023 +f 15075 15023 14911 +f 15155 15263 15099 +f 15155 15099 15023 +f 15263 15327 15171 +f 15263 15171 15099 +f 15327 15391 15243 +f 15327 15243 15171 +f 15391 15435 15287 +f 15391 15287 15243 +f 15435 15483 15303 +f 15435 15303 15287 +f 15483 15499 15335 +f 15483 15335 15303 +f 15499 15507 15359 +f 15499 15359 15335 +f 15507 15508 15360 +f 15507 15360 15359 +f 15508 15500 15336 +f 15508 15336 15360 +f 15500 15484 15304 +f 15500 15304 15336 +f 15484 15436 15288 +f 15484 15288 15304 +f 15436 15392 15244 +f 15436 15244 15288 +f 15392 15328 15172 +f 15392 15172 15244 +f 15328 15264 15100 +f 15328 15100 15172 +f 15264 15156 15024 +f 15264 15024 15100 +f 15156 15076 14912 +f 15156 14912 15024 +f 15076 14960 14804 +f 15076 14804 14912 +f 14960 14836 14692 +f 14960 14692 14804 +f 14836 14716 14536 +f 14836 14536 14692 +f 14716 14560 14420 +f 14716 14420 14536 +f 14560 14404 14252 +f 14560 14252 14420 +f 14404 14228 14080 +f 14404 14080 14252 +f 14228 14024 13900 +f 14228 13900 14080 +f 14024 13820 13700 +f 14024 13700 13900 +f 13820 13632 13472 +f 13820 13472 13700 +f 13632 13424 13244 +f 13632 13244 13472 +f 13424 13164 13032 +f 13424 13032 13244 +f 13164 12896 12772 +f 13164 12772 13032 +f 12896 12636 12516 +f 12896 12516 12772 +f 12636 12344 12232 +f 12636 12232 12516 +f 12344 12060 11916 +f 12344 11916 12232 +f 12060 11760 11600 +f 12060 11600 11916 +f 11760 11432 11300 +f 11760 11300 11600 +f 11432 11084 10960 +f 11432 10960 11300 +f 11084 10712 10624 +f 11084 10624 10960 +f 10712 10324 10236 +f 10712 10236 10624 +f 10324 9928 9848 +f 10324 9848 10236 +f 9928 9540 9404 +f 9928 9404 9848 +f 9540 9088 9000 +f 9540 9000 9404 +f 9088 8676 8540 +f 9088 8540 9000 +f 8676 8204 8080 +f 8676 8080 8540 +f 8204 7720 7612 +f 8204 7612 8080 +f 7720 7188 7116 +f 7720 7116 7612 +f 7188 6640 6552 +f 7188 6552 7116 +f 6640 6052 5980 +f 6640 5980 6552 +f 6052 5392 5360 +f 6052 5360 5980 +f 5392 4756 4740 +f 5392 4740 5360 +f 4756 4056 4024 +f 4756 4024 4740 +f 4056 3324 3284 +f 4056 3284 4024 +f 3324 2488 2472 +f 3324 2472 3284 +f 2488 1588 1572 +f 2488 1572 2472 +f 1571 2471 2455 +f 1571 2455 1555 +f 2471 3283 3251 +f 2471 3251 2455 +f 3283 4023 3991 +f 3283 3991 3251 +f 4023 4739 4659 +f 4023 4659 3991 +f 4739 5359 5311 +f 4739 5311 4659 +f 5359 5979 5915 +f 5359 5915 5311 +f 5979 6551 6495 +f 5979 6495 5915 +f 6551 7115 7023 +f 6551 7023 6495 +f 7115 7611 7491 +f 7115 7491 7023 +f 7611 8079 7983 +f 7611 7983 7491 +f 8079 8539 8435 +f 8079 8435 7983 +f 8539 8999 8879 +f 8539 8879 8435 +f 8999 9403 9323 +f 8999 9323 8879 +f 9403 9847 9743 +f 9403 9743 9323 +f 9847 10235 10127 +f 9847 10127 9743 +f 10235 10623 10467 +f 10235 10467 10127 +f 10623 10959 10831 +f 10623 10831 10467 +f 10959 11299 11155 +f 10959 11155 10831 +f 11299 11599 11495 +f 11299 11495 11155 +f 11599 11915 11811 +f 11599 11811 11495 +f 11915 12231 12091 +f 11915 12091 11811 +f 12231 12515 12367 +f 12231 12367 12091 +f 12515 12771 12627 +f 12515 12627 12367 +f 12771 13031 12879 +f 12771 12879 12627 +f 13031 13243 13115 +f 13031 13115 12879 +f 13243 13471 13331 +f 13243 13331 13115 +f 13471 13699 13527 +f 13471 13527 13331 +f 13699 13899 13731 +f 13699 13731 13527 +f 13899 14079 13923 +f 13899 13923 13731 +f 14079 14251 14087 +f 14079 14087 13923 +f 14251 14419 14243 +f 14251 14243 14087 +f 14419 14535 14395 +f 14419 14395 14243 +f 14535 14691 14519 +f 14535 14519 14395 +f 14691 14803 14639 +f 14691 14639 14519 +f 14803 14911 14747 +f 14803 14747 14639 +f 14911 15023 14859 +f 14911 14859 14747 +f 15023 15099 14927 +f 15023 14927 14859 +f 15099 15171 15007 +f 15099 15007 14927 +f 15171 15243 15063 +f 15171 15063 15007 +f 15243 15287 15123 +f 15243 15123 15063 +f 15287 15303 15139 +f 15287 15139 15123 +f 15303 15335 15163 +f 15303 15163 15139 +f 15335 15359 15179 +f 15335 15179 15163 +f 15359 15360 15180 +f 15359 15180 15179 +f 15360 15336 15164 +f 15360 15164 15180 +f 15336 15304 15140 +f 15336 15140 15164 +f 15304 15288 15124 +f 15304 15124 15140 +f 15288 15244 15064 +f 15288 15064 15124 +f 15244 15172 15008 +f 15244 15008 15064 +f 15172 15100 14928 +f 15172 14928 15008 +f 15100 15024 14860 +f 15100 14860 14928 +f 15024 14912 14748 +f 15024 14748 14860 +f 14912 14804 14640 +f 14912 14640 14748 +f 14804 14692 14520 +f 14804 14520 14640 +f 14692 14536 14396 +f 14692 14396 14520 +f 14536 14420 14244 +f 14536 14244 14396 +f 14420 14252 14088 +f 14420 14088 14244 +f 14252 14080 13924 +f 14252 13924 14088 +f 14080 13900 13732 +f 14080 13732 13924 +f 13900 13700 13528 +f 13900 13528 13732 +f 13700 13472 13332 +f 13700 13332 13528 +f 13472 13244 13116 +f 13472 13116 13332 +f 13244 13032 12880 +f 13244 12880 13116 +f 13032 12772 12628 +f 13032 12628 12880 +f 12772 12516 12368 +f 12772 12368 12628 +f 12516 12232 12092 +f 12516 12092 12368 +f 12232 11916 11812 +f 12232 11812 12092 +f 11916 11600 11496 +f 11916 11496 11812 +f 11600 11300 11156 +f 11600 11156 11496 +f 11300 10960 10832 +f 11300 10832 11156 +f 10960 10624 10468 +f 10960 10468 10832 +f 10624 10236 10128 +f 10624 10128 10468 +f 10236 9848 9744 +f 10236 9744 10128 +f 9848 9404 9324 +f 9848 9324 9744 +f 9404 9000 8880 +f 9404 8880 9324 +f 9000 8540 8436 +f 9000 8436 8880 +f 8540 8080 7984 +f 8540 7984 8436 +f 8080 7612 7492 +f 8080 7492 7984 +f 7612 7116 7024 +f 7612 7024 7492 +f 7116 6552 6496 +f 7116 6496 7024 +f 6552 5980 5916 +f 6552 5916 6496 +f 5980 5360 5312 +f 5980 5312 5916 +f 5360 4740 4660 +f 5360 4660 5312 +f 4740 4024 3992 +f 4740 3992 4660 +f 4024 3284 3252 +f 4024 3252 3992 +f 3284 2472 2456 +f 3284 2456 3252 +f 2472 1572 1556 +f 2472 1556 2456 +f 1555 2455 2407 +f 1555 2407 1523 +f 2455 3251 3187 +f 2455 3187 2407 +f 3251 3991 3919 +f 3251 3919 3187 +f 3991 4659 4627 +f 3991 4627 3919 +f 4659 5311 5263 +f 4659 5263 4627 +f 5311 5915 5867 +f 5311 5867 5263 +f 5915 6495 6387 +f 5915 6387 5867 +f 6495 7023 6887 +f 6495 6887 6387 +f 7023 7491 7411 +f 7023 7411 6887 +f 7491 7983 7855 +f 7491 7855 7411 +f 7983 8435 8339 +f 7983 8339 7855 +f 8435 8879 8791 +f 8435 8791 8339 +f 8879 9323 9223 +f 8879 9223 8791 +f 9323 9743 9595 +f 9323 9595 9223 +f 9743 10127 9951 +f 9743 9951 9595 +f 10127 10467 10339 +f 10127 10339 9951 +f 10467 10831 10679 +f 10467 10679 10339 +f 10831 11155 11043 +f 10831 11043 10679 +f 11155 11495 11363 +f 11155 11363 11043 +f 11495 11811 11639 +f 11495 11639 11363 +f 11811 12091 11923 +f 11811 11923 11639 +f 12091 12367 12215 +f 12091 12215 11923 +f 12367 12627 12475 +f 12367 12475 12215 +f 12627 12879 12707 +f 12627 12707 12475 +f 12879 13115 12935 +f 12879 12935 12707 +f 13115 13331 13179 +f 13115 13179 12935 +f 13331 13527 13363 +f 13331 13363 13179 +f 13527 13731 13567 +f 13527 13567 13363 +f 13731 13923 13747 +f 13731 13747 13567 +f 13923 14087 13915 +f 13923 13915 13747 +f 14087 14243 14063 +f 14087 14063 13915 +f 14243 14395 14219 +f 14243 14219 14063 +f 14395 14519 14323 +f 14395 14323 14219 +f 14519 14639 14463 +f 14519 14463 14323 +f 14639 14747 14575 +f 14639 14575 14463 +f 14747 14859 14675 +f 14747 14675 14575 +f 14859 14927 14739 +f 14859 14739 14675 +f 14927 15007 14827 +f 14927 14827 14739 +f 15007 15063 14895 +f 15007 14895 14827 +f 15063 15123 14919 +f 15063 14919 14895 +f 15123 15139 14951 +f 15123 14951 14919 +f 15139 15163 14991 +f 15139 14991 14951 +f 15163 15179 14999 +f 15163 14999 14991 +f 15179 15180 15000 +f 15179 15000 14999 +f 15180 15164 14992 +f 15180 14992 15000 +f 15164 15140 14952 +f 15164 14952 14992 +f 15140 15124 14920 +f 15140 14920 14952 +f 15124 15064 14896 +f 15124 14896 14920 +f 15064 15008 14828 +f 15064 14828 14896 +f 15008 14928 14740 +f 15008 14740 14828 +f 14928 14860 14676 +f 14928 14676 14740 +f 14860 14748 14576 +f 14860 14576 14676 +f 14748 14640 14464 +f 14748 14464 14576 +f 14640 14520 14324 +f 14640 14324 14464 +f 14520 14396 14220 +f 14520 14220 14324 +f 14396 14244 14064 +f 14396 14064 14220 +f 14244 14088 13916 +f 14244 13916 14064 +f 14088 13924 13748 +f 14088 13748 13916 +f 13924 13732 13568 +f 13924 13568 13748 +f 13732 13528 13364 +f 13732 13364 13568 +f 13528 13332 13180 +f 13528 13180 13364 +f 13332 13116 12936 +f 13332 12936 13180 +f 13116 12880 12708 +f 13116 12708 12936 +f 12880 12628 12476 +f 12880 12476 12708 +f 12628 12368 12216 +f 12628 12216 12476 +f 12368 12092 11924 +f 12368 11924 12216 +f 12092 11812 11640 +f 12092 11640 11924 +f 11812 11496 11364 +f 11812 11364 11640 +f 11496 11156 11044 +f 11496 11044 11364 +f 11156 10832 10680 +f 11156 10680 11044 +f 10832 10468 10340 +f 10832 10340 10680 +f 10468 10128 9952 +f 10468 9952 10340 +f 10128 9744 9596 +f 10128 9596 9952 +f 9744 9324 9224 +f 9744 9224 9596 +f 9324 8880 8792 +f 9324 8792 9224 +f 8880 8436 8340 +f 8880 8340 8792 +f 8436 7984 7856 +f 8436 7856 8340 +f 7984 7492 7412 +f 7984 7412 7856 +f 7492 7024 6888 +f 7492 6888 7412 +f 7024 6496 6388 +f 7024 6388 6888 +f 6496 5916 5868 +f 6496 5868 6388 +f 5916 5312 5264 +f 5916 5264 5868 +f 5312 4660 4628 +f 5312 4628 5264 +f 4660 3992 3920 +f 4660 3920 4628 +f 3992 3252 3188 +f 3992 3188 3920 +f 3252 2456 2408 +f 3252 2408 3188 +f 2456 1556 1524 +f 2456 1524 2408 +f 1523 2407 2375 +f 1523 2375 1499 +f 2407 3187 3155 +f 2407 3155 2375 +f 3187 3919 3895 +f 3187 3895 3155 +f 3919 4627 4563 +f 3919 4563 3895 +f 4627 5263 5199 +f 4627 5199 4563 +f 5263 5867 5751 +f 5263 5751 5199 +f 5867 6387 6267 +f 5867 6267 5751 +f 6387 6887 6791 +f 6387 6791 6267 +f 6887 7411 7283 +f 6887 7283 6791 +f 7411 7855 7783 +f 7411 7783 7283 +f 7855 8339 8243 +f 7855 8243 7783 +f 8339 8791 8683 +f 8339 8683 8243 +f 8791 9223 9063 +f 8791 9063 8683 +f 9223 9595 9443 +f 9223 9443 9063 +f 9595 9951 9831 +f 9595 9831 9443 +f 9951 10339 10195 +f 9951 10195 9831 +f 10339 10679 10563 +f 10339 10563 10195 +f 10679 11043 10863 +f 10679 10863 10563 +f 11043 11363 11171 +f 11043 11171 10863 +f 11363 11639 11487 +f 11363 11487 11171 +f 11639 11923 11795 +f 11639 11795 11487 +f 11923 12215 12035 +f 11923 12035 11795 +f 12215 12475 12287 +f 12215 12287 12035 +f 12475 12707 12531 +f 12475 12531 12287 +f 12707 12935 12779 +f 12707 12779 12531 +f 12935 13179 12975 +f 12935 12975 12779 +f 13179 13363 13195 +f 13179 13195 12975 +f 13363 13567 13403 +f 13363 13403 13195 +f 13567 13747 13559 +f 13567 13559 13403 +f 13747 13915 13723 +f 13747 13723 13559 +f 13915 14063 13883 +f 13915 13883 13723 +f 14063 14219 14015 +f 14063 14015 13883 +f 14219 14323 14151 +f 14219 14151 14015 +f 14323 14463 14275 +f 14323 14275 14151 +f 14463 14575 14371 +f 14463 14371 14275 +f 14575 14675 14471 +f 14575 14471 14371 +f 14675 14739 14551 +f 14675 14551 14471 +f 14739 14827 14623 +f 14739 14623 14551 +f 14827 14895 14683 +f 14827 14683 14623 +f 14895 14919 14731 +f 14895 14731 14683 +f 14919 14951 14755 +f 14919 14755 14731 +f 14951 14991 14787 +f 14951 14787 14755 +f 14991 14999 14795 +f 14991 14795 14787 +f 14999 15000 14796 +f 14999 14796 14795 +f 15000 14992 14788 +f 15000 14788 14796 +f 14992 14952 14756 +f 14992 14756 14788 +f 14952 14920 14732 +f 14952 14732 14756 +f 14920 14896 14684 +f 14920 14684 14732 +f 14896 14828 14624 +f 14896 14624 14684 +f 14828 14740 14552 +f 14828 14552 14624 +f 14740 14676 14472 +f 14740 14472 14552 +f 14676 14576 14372 +f 14676 14372 14472 +f 14576 14464 14276 +f 14576 14276 14372 +f 14464 14324 14152 +f 14464 14152 14276 +f 14324 14220 14016 +f 14324 14016 14152 +f 14220 14064 13884 +f 14220 13884 14016 +f 14064 13916 13724 +f 14064 13724 13884 +f 13916 13748 13560 +f 13916 13560 13724 +f 13748 13568 13404 +f 13748 13404 13560 +f 13568 13364 13196 +f 13568 13196 13404 +f 13364 13180 12976 +f 13364 12976 13196 +f 13180 12936 12780 +f 13180 12780 12976 +f 12936 12708 12532 +f 12936 12532 12780 +f 12708 12476 12288 +f 12708 12288 12532 +f 12476 12216 12036 +f 12476 12036 12288 +f 12216 11924 11796 +f 12216 11796 12036 +f 11924 11640 11488 +f 11924 11488 11796 +f 11640 11364 11172 +f 11640 11172 11488 +f 11364 11044 10864 +f 11364 10864 11172 +f 11044 10680 10564 +f 11044 10564 10864 +f 10680 10340 10196 +f 10680 10196 10564 +f 10340 9952 9832 +f 10340 9832 10196 +f 9952 9596 9444 +f 9952 9444 9832 +f 9596 9224 9064 +f 9596 9064 9444 +f 9224 8792 8684 +f 9224 8684 9064 +f 8792 8340 8244 +f 8792 8244 8684 +f 8340 7856 7784 +f 8340 7784 8244 +f 7856 7412 7284 +f 7856 7284 7784 +f 7412 6888 6792 +f 7412 6792 7284 +f 6888 6388 6268 +f 6888 6268 6792 +f 6388 5868 5752 +f 6388 5752 6268 +f 5868 5264 5200 +f 5868 5200 5752 +f 5264 4628 4564 +f 5264 4564 5200 +f 4628 3920 3896 +f 4628 3896 4564 +f 3920 3188 3156 +f 3920 3156 3896 +f 3188 2408 2376 +f 3188 2376 3156 +f 2408 1524 1500 +f 2408 1500 2376 +f 1499 2375 2335 +f 1499 2335 1475 +f 2375 3155 3123 +f 2375 3123 2335 +f 3155 3895 3823 +f 3155 3823 3123 +f 3895 4563 4499 +f 3895 4499 3823 +f 4563 5199 5107 +f 4563 5107 4499 +f 5199 5751 5631 +f 5199 5631 5107 +f 5751 6267 6155 +f 5751 6155 5631 +f 6267 6791 6687 +f 6267 6687 6155 +f 6791 7283 7211 +f 6791 7211 6687 +f 7283 7783 7663 +f 7283 7663 7211 +f 7783 8243 8111 +f 7783 8111 7663 +f 8243 8683 8507 +f 8243 8507 8111 +f 8683 9063 8919 +f 8683 8919 8507 +f 9063 9443 9315 +f 9063 9315 8919 +f 9443 9831 9703 +f 9443 9703 9315 +f 9831 10195 10047 +f 9831 10047 9703 +f 10195 10563 10379 +f 10195 10379 10047 +f 10563 10863 10703 +f 10563 10703 10379 +f 10863 11171 11035 +f 10863 11035 10703 +f 11171 11487 11331 +f 11171 11331 11035 +f 11487 11795 11575 +f 11487 11575 11331 +f 11795 12035 11851 +f 11795 11851 11575 +f 12035 12287 12131 +f 12035 12131 11851 +f 12287 12531 12351 +f 12287 12351 12131 +f 12531 12779 12571 +f 12531 12571 12351 +f 12779 12975 12823 +f 12779 12823 12571 +f 12975 13195 12991 +f 12975 12991 12823 +f 13195 13403 13187 +f 13195 13187 12991 +f 13403 13559 13355 +f 13403 13355 13187 +f 13559 13723 13519 +f 13559 13519 13355 +f 13723 13883 13691 +f 13723 13691 13519 +f 13883 14015 13811 +f 13883 13811 13691 +f 14015 14151 13959 +f 14015 13959 13811 +f 14151 14275 14055 +f 14151 14055 13959 +f 14275 14371 14175 +f 14275 14175 14055 +f 14371 14471 14267 +f 14371 14267 14175 +f 14471 14551 14339 +f 14471 14339 14267 +f 14551 14623 14435 +f 14551 14435 14339 +f 14623 14683 14479 +f 14623 14479 14435 +f 14683 14731 14511 +f 14683 14511 14479 +f 14731 14755 14543 +f 14731 14543 14511 +f 14755 14787 14583 +f 14755 14583 14543 +f 14787 14795 14599 +f 14787 14599 14583 +f 14795 14796 14600 +f 14795 14600 14599 +f 14796 14788 14584 +f 14796 14584 14600 +f 14788 14756 14544 +f 14788 14544 14584 +f 14756 14732 14512 +f 14756 14512 14544 +f 14732 14684 14480 +f 14732 14480 14512 +f 14684 14624 14436 +f 14684 14436 14480 +f 14624 14552 14340 +f 14624 14340 14436 +f 14552 14472 14268 +f 14552 14268 14340 +f 14472 14372 14176 +f 14472 14176 14268 +f 14372 14276 14056 +f 14372 14056 14176 +f 14276 14152 13960 +f 14276 13960 14056 +f 14152 14016 13812 +f 14152 13812 13960 +f 14016 13884 13692 +f 14016 13692 13812 +f 13884 13724 13520 +f 13884 13520 13692 +f 13724 13560 13356 +f 13724 13356 13520 +f 13560 13404 13188 +f 13560 13188 13356 +f 13404 13196 12992 +f 13404 12992 13188 +f 13196 12976 12824 +f 13196 12824 12992 +f 12976 12780 12572 +f 12976 12572 12824 +f 12780 12532 12352 +f 12780 12352 12572 +f 12532 12288 12132 +f 12532 12132 12352 +f 12288 12036 11852 +f 12288 11852 12132 +f 12036 11796 11576 +f 12036 11576 11852 +f 11796 11488 11332 +f 11796 11332 11576 +f 11488 11172 11036 +f 11488 11036 11332 +f 11172 10864 10704 +f 11172 10704 11036 +f 10864 10564 10380 +f 10864 10380 10704 +f 10564 10196 10048 +f 10564 10048 10380 +f 10196 9832 9704 +f 10196 9704 10048 +f 9832 9444 9316 +f 9832 9316 9704 +f 9444 9064 8920 +f 9444 8920 9316 +f 9064 8684 8508 +f 9064 8508 8920 +f 8684 8244 8112 +f 8684 8112 8508 +f 8244 7784 7664 +f 8244 7664 8112 +f 7784 7284 7212 +f 7784 7212 7664 +f 7284 6792 6688 +f 7284 6688 7212 +f 6792 6268 6156 +f 6792 6156 6688 +f 6268 5752 5632 +f 6268 5632 6156 +f 5752 5200 5108 +f 5752 5108 5632 +f 5200 4564 4500 +f 5200 4500 5108 +f 4564 3896 3824 +f 4564 3824 4500 +f 3896 3156 3124 +f 3896 3124 3824 +f 3156 2376 2336 +f 3156 2336 3124 +f 2376 1500 1476 +f 2376 1476 2336 +f 1475 2335 2287 +f 1475 2287 1419 +f 2335 3123 3075 +f 2335 3075 2287 +f 3123 3823 3791 +f 3123 3791 3075 +f 3823 4499 4467 +f 3823 4467 3791 +f 4499 5107 4979 +f 4499 4979 4467 +f 5107 5631 5527 +f 5107 5527 4979 +f 5631 6155 6083 +f 5631 6083 5527 +f 6155 6687 6591 +f 6155 6591 6083 +f 6687 7211 7099 +f 6687 7099 6591 +f 7211 7663 7523 +f 7211 7523 7099 +f 7663 8111 7959 +f 7663 7959 7523 +f 8111 8507 8379 +f 8111 8379 7959 +f 8507 8919 8799 +f 8507 8799 8379 +f 8919 9315 9167 +f 8919 9167 8799 +f 9315 9703 9523 +f 9315 9523 9167 +f 9703 10047 9879 +f 9703 9879 9523 +f 10047 10379 10219 +f 10047 10219 9879 +f 10379 10703 10547 +f 10379 10547 10219 +f 10703 11035 10839 +f 10703 10839 10547 +f 11035 11331 11115 +f 11035 11115 10839 +f 11331 11575 11415 +f 11331 11415 11115 +f 11575 11851 11671 +f 11575 11671 11415 +f 11851 12131 11907 +f 11851 11907 11671 +f 12131 12351 12167 +f 12131 12167 11907 +f 12351 12571 12407 +f 12351 12407 12167 +f 12571 12823 12587 +f 12571 12587 12407 +f 12823 12991 12815 +f 12823 12815 12587 +f 12991 13187 12967 +f 12991 12967 12815 +f 13187 13355 13155 +f 13187 13155 12967 +f 13355 13519 13315 +f 13355 13315 13155 +f 13519 13691 13455 +f 13519 13455 13315 +f 13691 13811 13615 +f 13691 13615 13455 +f 13811 13959 13739 +f 13811 13739 13615 +f 13959 14055 13843 +f 13959 13843 13739 +f 14055 14175 13967 +f 14055 13967 13843 +f 14175 14267 14031 +f 14175 14031 13967 +f 14267 14339 14127 +f 14267 14127 14031 +f 14339 14435 14199 +f 14339 14199 14127 +f 14435 14479 14259 +f 14435 14259 14199 +f 14479 14511 14307 +f 14479 14307 14259 +f 14511 14543 14315 +f 14511 14315 14307 +f 14543 14583 14347 +f 14543 14347 14315 +f 14583 14599 14363 +f 14583 14363 14347 +f 14599 14600 14364 +f 14599 14364 14363 +f 14600 14584 14348 +f 14600 14348 14364 +f 14584 14544 14316 +f 14584 14316 14348 +f 14544 14512 14308 +f 14544 14308 14316 +f 14512 14480 14260 +f 14512 14260 14308 +f 14480 14436 14200 +f 14480 14200 14260 +f 14436 14340 14128 +f 14436 14128 14200 +f 14340 14268 14032 +f 14340 14032 14128 +f 14268 14176 13968 +f 14268 13968 14032 +f 14176 14056 13844 +f 14176 13844 13968 +f 14056 13960 13740 +f 14056 13740 13844 +f 13960 13812 13616 +f 13960 13616 13740 +f 13812 13692 13456 +f 13812 13456 13616 +f 13692 13520 13316 +f 13692 13316 13456 +f 13520 13356 13156 +f 13520 13156 13316 +f 13356 13188 12968 +f 13356 12968 13156 +f 13188 12992 12816 +f 13188 12816 12968 +f 12992 12824 12588 +f 12992 12588 12816 +f 12824 12572 12408 +f 12824 12408 12588 +f 12572 12352 12168 +f 12572 12168 12408 +f 12352 12132 11908 +f 12352 11908 12168 +f 12132 11852 11672 +f 12132 11672 11908 +f 11852 11576 11416 +f 11852 11416 11672 +f 11576 11332 11116 +f 11576 11116 11416 +f 11332 11036 10840 +f 11332 10840 11116 +f 11036 10704 10548 +f 11036 10548 10840 +f 10704 10380 10220 +f 10704 10220 10548 +f 10380 10048 9880 +f 10380 9880 10220 +f 10048 9704 9524 +f 10048 9524 9880 +f 9704 9316 9168 +f 9704 9168 9524 +f 9316 8920 8800 +f 9316 8800 9168 +f 8920 8508 8380 +f 8920 8380 8800 +f 8508 8112 7960 +f 8508 7960 8380 +f 8112 7664 7524 +f 8112 7524 7960 +f 7664 7212 7100 +f 7664 7100 7524 +f 7212 6688 6592 +f 7212 6592 7100 +f 6688 6156 6084 +f 6688 6084 6592 +f 6156 5632 5528 +f 6156 5528 6084 +f 5632 5108 4980 +f 5632 4980 5528 +f 5108 4500 4468 +f 5108 4468 4980 +f 4500 3824 3792 +f 4500 3792 4468 +f 3824 3124 3076 +f 3824 3076 3792 +f 3124 2336 2288 +f 3124 2288 3076 +f 2336 1476 1420 +f 2336 1420 2288 +f 1419 2287 2255 +f 1419 2255 1403 +f 2287 3075 3027 +f 2287 3027 2255 +f 3075 3791 3727 +f 3075 3727 3027 +f 3791 4467 4327 +f 3791 4327 3727 +f 4467 4979 4883 +f 4467 4883 4327 +f 4979 5527 5423 +f 4979 5423 4883 +f 5527 6083 5971 +f 5527 5971 5423 +f 6083 6591 6503 +f 6083 6503 5971 +f 6591 7099 6927 +f 6591 6927 6503 +f 7099 7523 7387 +f 7099 7387 6927 +f 7523 7959 7807 +f 7523 7807 7387 +f 7959 8379 8259 +f 7959 8259 7807 +f 8379 8799 8619 +f 8379 8619 8259 +f 8799 9167 8991 +f 8799 8991 8619 +f 9167 9523 9371 +f 9167 9371 8991 +f 9523 9879 9727 +f 9523 9727 9371 +f 9879 10219 10039 +f 9879 10039 9727 +f 10219 10547 10347 +f 10219 10347 10039 +f 10547 10839 10647 +f 10547 10647 10347 +f 10839 11115 10943 +f 10839 10943 10647 +f 11115 11415 11203 +f 11115 11203 10943 +f 11415 11671 11471 +f 11415 11471 11203 +f 11671 11907 11719 +f 11671 11719 11471 +f 11907 12167 11963 +f 11907 11963 11719 +f 12167 12407 12175 +f 12167 12175 11963 +f 12407 12587 12391 +f 12407 12391 12175 +f 12587 12815 12563 +f 12587 12563 12391 +f 12815 12967 12763 +f 12815 12763 12563 +f 12967 13155 12919 +f 12967 12919 12763 +f 13155 13315 13087 +f 13155 13087 12919 +f 13315 13455 13227 +f 13315 13227 13087 +f 13455 13615 13395 +f 13455 13395 13227 +f 13615 13739 13495 +f 13615 13495 13395 +f 13739 13843 13623 +f 13739 13623 13495 +f 13843 13967 13715 +f 13843 13715 13623 +f 13967 14031 13795 +f 13967 13795 13715 +f 14031 14127 13891 +f 14031 13891 13795 +f 14127 14199 13975 +f 14127 13975 13891 +f 14199 14259 14007 +f 14199 14007 13975 +f 14259 14307 14039 +f 14259 14039 14007 +f 14307 14315 14103 +f 14307 14103 14039 +f 14315 14347 14119 +f 14315 14119 14103 +f 14347 14363 14135 +f 14347 14135 14119 +f 14363 14364 14136 +f 14363 14136 14135 +f 14364 14348 14120 +f 14364 14120 14136 +f 14348 14316 14104 +f 14348 14104 14120 +f 14316 14308 14040 +f 14316 14040 14104 +f 14308 14260 14008 +f 14308 14008 14040 +f 14260 14200 13976 +f 14260 13976 14008 +f 14200 14128 13892 +f 14200 13892 13976 +f 14128 14032 13796 +f 14128 13796 13892 +f 14032 13968 13716 +f 14032 13716 13796 +f 13968 13844 13624 +f 13968 13624 13716 +f 13844 13740 13496 +f 13844 13496 13624 +f 13740 13616 13396 +f 13740 13396 13496 +f 13616 13456 13228 +f 13616 13228 13396 +f 13456 13316 13088 +f 13456 13088 13228 +f 13316 13156 12920 +f 13316 12920 13088 +f 13156 12968 12764 +f 13156 12764 12920 +f 12968 12816 12564 +f 12968 12564 12764 +f 12816 12588 12392 +f 12816 12392 12564 +f 12588 12408 12176 +f 12588 12176 12392 +f 12408 12168 11964 +f 12408 11964 12176 +f 12168 11908 11720 +f 12168 11720 11964 +f 11908 11672 11472 +f 11908 11472 11720 +f 11672 11416 11204 +f 11672 11204 11472 +f 11416 11116 10944 +f 11416 10944 11204 +f 11116 10840 10648 +f 11116 10648 10944 +f 10840 10548 10348 +f 10840 10348 10648 +f 10548 10220 10040 +f 10548 10040 10348 +f 10220 9880 9728 +f 10220 9728 10040 +f 9880 9524 9372 +f 9880 9372 9728 +f 9524 9168 8992 +f 9524 8992 9372 +f 9168 8800 8620 +f 9168 8620 8992 +f 8800 8380 8260 +f 8800 8260 8620 +f 8380 7960 7808 +f 8380 7808 8260 +f 7960 7524 7388 +f 7960 7388 7808 +f 7524 7100 6928 +f 7524 6928 7388 +f 7100 6592 6504 +f 7100 6504 6928 +f 6592 6084 5972 +f 6592 5972 6504 +f 6084 5528 5424 +f 6084 5424 5972 +f 5528 4980 4884 +f 5528 4884 5424 +f 4980 4468 4328 +f 4980 4328 4884 +f 4468 3792 3728 +f 4468 3728 4328 +f 3792 3076 3028 +f 3792 3028 3728 +f 3076 2288 2256 +f 3076 2256 3028 +f 2288 1420 1404 +f 2288 1404 2256 +f 1403 2255 2223 +f 1403 2223 1387 +f 2255 3027 2979 +f 2255 2979 2223 +f 3027 3727 3695 +f 3027 3695 2979 +f 3727 4327 4207 +f 3727 4207 3695 +f 4327 4883 4771 +f 4327 4771 4207 +f 4883 5423 5343 +f 4883 5343 4771 +f 5423 5971 5899 +f 5423 5899 5343 +f 5971 6503 6331 +f 5971 6331 5899 +f 6503 6927 6783 +f 6503 6783 6331 +f 6927 7387 7243 +f 6927 7243 6783 +f 7387 7807 7703 +f 7387 7703 7243 +f 7807 8259 8055 +f 7807 8055 7703 +f 8259 8619 8459 +f 8259 8459 8055 +f 8619 8991 8847 +f 8619 8847 8459 +f 8991 9371 9199 +f 8991 9199 8847 +f 9371 9727 9507 +f 9371 9507 9199 +f 9727 10039 9855 +f 9727 9855 9507 +f 10039 10347 10171 +f 10039 10171 9855 +f 10347 10647 10443 +f 10347 10443 10171 +f 10647 10943 10735 +f 10647 10735 10443 +f 10943 11203 11019 +f 10943 11019 10735 +f 11203 11471 11243 +f 11203 11243 11019 +f 11471 11719 11519 +f 11471 11519 11243 +f 11719 11963 11743 +f 11719 11743 11519 +f 11963 12175 11955 +f 11963 11955 11743 +f 12175 12391 12159 +f 12175 12159 11955 +f 12391 12563 12335 +f 12391 12335 12159 +f 12563 12763 12523 +f 12563 12523 12335 +f 12763 12919 12683 +f 12763 12683 12523 +f 12919 13087 12855 +f 12919 12855 12683 +f 13087 13227 12999 +f 13087 12999 12855 +f 13227 13395 13131 +f 13227 13131 12999 +f 13395 13495 13259 +f 13395 13259 13131 +f 13495 13623 13371 +f 13495 13371 13259 +f 13623 13715 13463 +f 13623 13463 13371 +f 13715 13795 13551 +f 13715 13551 13463 +f 13795 13891 13647 +f 13795 13647 13551 +f 13891 13975 13707 +f 13891 13707 13647 +f 13975 14007 13779 +f 13975 13779 13707 +f 14007 14039 13787 +f 14007 13787 13779 +f 14039 14103 13827 +f 14039 13827 13787 +f 14103 14119 13859 +f 14103 13859 13827 +f 14119 14135 13867 +f 14119 13867 13859 +f 14135 14136 13868 +f 14135 13868 13867 +f 14136 14120 13860 +f 14136 13860 13868 +f 14120 14104 13828 +f 14120 13828 13860 +f 14104 14040 13788 +f 14104 13788 13828 +f 14040 14008 13780 +f 14040 13780 13788 +f 14008 13976 13708 +f 14008 13708 13780 +f 13976 13892 13648 +f 13976 13648 13708 +f 13892 13796 13552 +f 13892 13552 13648 +f 13796 13716 13464 +f 13796 13464 13552 +f 13716 13624 13372 +f 13716 13372 13464 +f 13624 13496 13260 +f 13624 13260 13372 +f 13496 13396 13132 +f 13496 13132 13260 +f 13396 13228 13000 +f 13396 13000 13132 +f 13228 13088 12856 +f 13228 12856 13000 +f 13088 12920 12684 +f 13088 12684 12856 +f 12920 12764 12524 +f 12920 12524 12684 +f 12764 12564 12336 +f 12764 12336 12524 +f 12564 12392 12160 +f 12564 12160 12336 +f 12392 12176 11956 +f 12392 11956 12160 +f 12176 11964 11744 +f 12176 11744 11956 +f 11964 11720 11520 +f 11964 11520 11744 +f 11720 11472 11244 +f 11720 11244 11520 +f 11472 11204 11020 +f 11472 11020 11244 +f 11204 10944 10736 +f 11204 10736 11020 +f 10944 10648 10444 +f 10944 10444 10736 +f 10648 10348 10172 +f 10648 10172 10444 +f 10348 10040 9856 +f 10348 9856 10172 +f 10040 9728 9508 +f 10040 9508 9856 +f 9728 9372 9200 +f 9728 9200 9508 +f 9372 8992 8848 +f 9372 8848 9200 +f 8992 8620 8460 +f 8992 8460 8848 +f 8620 8260 8056 +f 8620 8056 8460 +f 8260 7808 7704 +f 8260 7704 8056 +f 7808 7388 7244 +f 7808 7244 7704 +f 7388 6928 6784 +f 7388 6784 7244 +f 6928 6504 6332 +f 6928 6332 6784 +f 6504 5972 5900 +f 6504 5900 6332 +f 5972 5424 5344 +f 5972 5344 5900 +f 5424 4884 4772 +f 5424 4772 5344 +f 4884 4328 4208 +f 4884 4208 4772 +f 4328 3728 3696 +f 4328 3696 4208 +f 3728 3028 2980 +f 3728 2980 3696 +f 3028 2256 2224 +f 3028 2224 2980 +f 2256 1404 1388 +f 2256 1388 2224 +f 1387 2223 2175 +f 1387 2175 1355 +f 2223 2979 2931 +f 2223 2931 2175 +f 2979 3695 3595 +f 2979 3595 2931 +f 3695 4207 4135 +f 3695 4135 3595 +f 4207 4771 4707 +f 4207 4707 4135 +f 4771 5343 5255 +f 4771 5255 4707 +f 5343 5899 5735 +f 5343 5735 5255 +f 5899 6331 6187 +f 5899 6187 5735 +f 6331 6783 6655 +f 6331 6655 6187 +f 6783 7243 7123 +f 6783 7123 6655 +f 7243 7703 7507 +f 7243 7507 7123 +f 7703 8055 7887 +f 7703 7887 7507 +f 8055 8459 8307 +f 8055 8307 7887 +f 8459 8847 8667 +f 8459 8667 8307 +f 8847 9199 8983 +f 8847 8983 8667 +f 9199 9507 9347 +f 9199 9347 8983 +f 9507 9855 9659 +f 9507 9659 9347 +f 9855 10171 9935 +f 9855 9935 9659 +f 10171 10443 10251 +f 10171 10251 9935 +f 10443 10735 10515 +f 10443 10515 10251 +f 10735 11019 10767 +f 10735 10767 10515 +f 11019 11243 11059 +f 11019 11059 10767 +f 11243 11519 11267 +f 11243 11267 11059 +f 11519 11743 11511 +f 11519 11511 11267 +f 11743 11955 11711 +f 11743 11711 11511 +f 11955 12159 11899 +f 11955 11899 11711 +f 12159 12335 12115 +f 12159 12115 11899 +f 12335 12523 12271 +f 12335 12271 12115 +f 12523 12683 12455 +f 12523 12455 12271 +f 12683 12855 12595 +f 12683 12595 12455 +f 12855 12999 12747 +f 12855 12747 12595 +f 12999 13131 12887 +f 12999 12887 12747 +f 13131 13259 13007 +f 13131 13007 12887 +f 13259 13371 13123 +f 13259 13123 13007 +f 13371 13463 13211 +f 13371 13211 13123 +f 13463 13551 13291 +f 13463 13291 13211 +f 13551 13647 13379 +f 13551 13379 13291 +f 13647 13707 13447 +f 13647 13447 13379 +f 13707 13779 13487 +f 13707 13487 13447 +f 13779 13787 13535 +f 13779 13535 13487 +f 13787 13827 13575 +f 13787 13575 13535 +f 13827 13859 13583 +f 13827 13583 13575 +f 13859 13867 13607 +f 13859 13607 13583 +f 13867 13868 13608 +f 13867 13608 13607 +f 13868 13860 13584 +f 13868 13584 13608 +f 13860 13828 13576 +f 13860 13576 13584 +f 13828 13788 13536 +f 13828 13536 13576 +f 13788 13780 13488 +f 13788 13488 13536 +f 13780 13708 13448 +f 13780 13448 13488 +f 13708 13648 13380 +f 13708 13380 13448 +f 13648 13552 13292 +f 13648 13292 13380 +f 13552 13464 13212 +f 13552 13212 13292 +f 13464 13372 13124 +f 13464 13124 13212 +f 13372 13260 13008 +f 13372 13008 13124 +f 13260 13132 12888 +f 13260 12888 13008 +f 13132 13000 12748 +f 13132 12748 12888 +f 13000 12856 12596 +f 13000 12596 12748 +f 12856 12684 12456 +f 12856 12456 12596 +f 12684 12524 12272 +f 12684 12272 12456 +f 12524 12336 12116 +f 12524 12116 12272 +f 12336 12160 11900 +f 12336 11900 12116 +f 12160 11956 11712 +f 12160 11712 11900 +f 11956 11744 11512 +f 11956 11512 11712 +f 11744 11520 11268 +f 11744 11268 11512 +f 11520 11244 11060 +f 11520 11060 11268 +f 11244 11020 10768 +f 11244 10768 11060 +f 11020 10736 10516 +f 11020 10516 10768 +f 10736 10444 10252 +f 10736 10252 10516 +f 10444 10172 9936 +f 10444 9936 10252 +f 10172 9856 9660 +f 10172 9660 9936 +f 9856 9508 9348 +f 9856 9348 9660 +f 9508 9200 8984 +f 9508 8984 9348 +f 9200 8848 8668 +f 9200 8668 8984 +f 8848 8460 8308 +f 8848 8308 8668 +f 8460 8056 7888 +f 8460 7888 8308 +f 8056 7704 7508 +f 8056 7508 7888 +f 7704 7244 7124 +f 7704 7124 7508 +f 7244 6784 6656 +f 7244 6656 7124 +f 6784 6332 6188 +f 6784 6188 6656 +f 6332 5900 5736 +f 6332 5736 6188 +f 5900 5344 5256 +f 5900 5256 5736 +f 5344 4772 4708 +f 5344 4708 5256 +f 4772 4208 4136 +f 4772 4136 4708 +f 4208 3696 3596 +f 4208 3596 4136 +f 3696 2980 2932 +f 3696 2932 3596 +f 2980 2224 2176 +f 2980 2176 2932 +f 2224 1388 1356 +f 2224 1356 2176 +f 1355 2175 2143 +f 1355 2143 1323 +f 2175 2931 2891 +f 2175 2891 2143 +f 2931 3595 3459 +f 2931 3459 2891 +f 3595 4135 4015 +f 3595 4015 3459 +f 4135 4707 4595 +f 4135 4595 4015 +f 4707 5255 5167 +f 4707 5167 4595 +f 5255 5735 5559 +f 5255 5559 5167 +f 5735 6187 6075 +f 5735 6075 5559 +f 6187 6655 6535 +f 6187 6535 6075 +f 6655 7123 6919 +f 6655 6919 6535 +f 7123 7507 7315 +f 7123 7315 6919 +f 7507 7887 7751 +f 7507 7751 7315 +f 7887 8307 8119 +f 7887 8119 7751 +f 8307 8667 8451 +f 8307 8451 8119 +f 8667 8983 8823 +f 8667 8823 8451 +f 8983 9347 9127 +f 8983 9127 8823 +f 9347 9659 9427 +f 9347 9427 9127 +f 9659 9935 9759 +f 9659 9759 9427 +f 9935 10251 9999 +f 9935 9999 9759 +f 10251 10515 10283 +f 10251 10283 9999 +f 10515 10767 10587 +f 10515 10587 10283 +f 10767 11059 10783 +f 10767 10783 10587 +f 11059 11267 11051 +f 11059 11051 10783 +f 11267 11511 11235 +f 11267 11235 11051 +f 11511 11711 11455 +f 11511 11455 11235 +f 11711 11899 11655 +f 11711 11655 11455 +f 11899 12115 11843 +f 11899 11843 11655 +f 12115 12271 12011 +f 12115 12011 11843 +f 12271 12455 12199 +f 12271 12199 12011 +f 12455 12595 12319 +f 12455 12319 12199 +f 12595 12747 12499 +f 12595 12499 12319 +f 12747 12887 12619 +f 12747 12619 12499 +f 12887 13007 12731 +f 12887 12731 12619 +f 13007 13123 12839 +f 13007 12839 12731 +f 13123 13211 12927 +f 13123 12927 12839 +f 13211 13291 13039 +f 13211 13039 12927 +f 13291 13379 13103 +f 13291 13103 13039 +f 13379 13447 13171 +f 13379 13171 13103 +f 13447 13487 13219 +f 13447 13219 13171 +f 13487 13535 13251 +f 13487 13251 13219 +f 13535 13575 13283 +f 13535 13283 13251 +f 13575 13583 13299 +f 13575 13299 13283 +f 13583 13607 13323 +f 13583 13323 13299 +f 13607 13608 13324 +f 13607 13324 13323 +f 13608 13584 13300 +f 13608 13300 13324 +f 13584 13576 13284 +f 13584 13284 13300 +f 13576 13536 13252 +f 13576 13252 13284 +f 13536 13488 13220 +f 13536 13220 13252 +f 13488 13448 13172 +f 13488 13172 13220 +f 13448 13380 13104 +f 13448 13104 13172 +f 13380 13292 13040 +f 13380 13040 13104 +f 13292 13212 12928 +f 13292 12928 13040 +f 13212 13124 12840 +f 13212 12840 12928 +f 13124 13008 12732 +f 13124 12732 12840 +f 13008 12888 12620 +f 13008 12620 12732 +f 12888 12748 12500 +f 12888 12500 12620 +f 12748 12596 12320 +f 12748 12320 12500 +f 12596 12456 12200 +f 12596 12200 12320 +f 12456 12272 12012 +f 12456 12012 12200 +f 12272 12116 11844 +f 12272 11844 12012 +f 12116 11900 11656 +f 12116 11656 11844 +f 11900 11712 11456 +f 11900 11456 11656 +f 11712 11512 11236 +f 11712 11236 11456 +f 11512 11268 11052 +f 11512 11052 11236 +f 11268 11060 10784 +f 11268 10784 11052 +f 11060 10768 10588 +f 11060 10588 10784 +f 10768 10516 10284 +f 10768 10284 10588 +f 10516 10252 10000 +f 10516 10000 10284 +f 10252 9936 9760 +f 10252 9760 10000 +f 9936 9660 9428 +f 9936 9428 9760 +f 9660 9348 9128 +f 9660 9128 9428 +f 9348 8984 8824 +f 9348 8824 9128 +f 8984 8668 8452 +f 8984 8452 8824 +f 8668 8308 8120 +f 8668 8120 8452 +f 8308 7888 7752 +f 8308 7752 8120 +f 7888 7508 7316 +f 7888 7316 7752 +f 7508 7124 6920 +f 7508 6920 7316 +f 7124 6656 6536 +f 7124 6536 6920 +f 6656 6188 6076 +f 6656 6076 6536 +f 6188 5736 5560 +f 6188 5560 6076 +f 5736 5256 5168 +f 5736 5168 5560 +f 5256 4708 4596 +f 5256 4596 5168 +f 4708 4136 4016 +f 4708 4016 4596 +f 4136 3596 3460 +f 4136 3460 4016 +f 3596 2932 2892 +f 3596 2892 3460 +f 2932 2176 2144 +f 2932 2144 2892 +f 2176 1356 1324 +f 2176 1324 2144 +f 1323 2143 2111 +f 1323 2111 1307 +f 2143 2891 2843 +f 2143 2843 2111 +f 2891 3459 3347 +f 2891 3347 2843 +f 3459 4015 3927 +f 3459 3927 3347 +f 4015 4595 4515 +f 4015 4515 3927 +f 4595 5167 4971 +f 4595 4971 4515 +f 5167 5559 5471 +f 5167 5471 4971 +f 5559 6075 5931 +f 5559 5931 5471 +f 6075 6535 6355 +f 6075 6355 5931 +f 6535 6919 6735 +f 6535 6735 6355 +f 6919 7315 7195 +f 6919 7195 6735 +f 7315 7751 7555 +f 7315 7555 7195 +f 7751 8119 7903 +f 7751 7903 7555 +f 8119 8451 8283 +f 8119 8283 7903 +f 8451 8823 8579 +f 8451 8579 8283 +f 8823 9127 8903 +f 8823 8903 8579 +f 9127 9427 9251 +f 9127 9251 8903 +f 9427 9759 9483 +f 9427 9483 9251 +f 9759 9999 9783 +f 9759 9783 9483 +f 9999 10283 10079 +f 9999 10079 9783 +f 10283 10587 10299 +f 10283 10299 10079 +f 10587 10783 10579 +f 10587 10579 10299 +f 10783 11051 10759 +f 10783 10759 10579 +f 11051 11235 10995 +f 11051 10995 10759 +f 11235 11455 11187 +f 11235 11187 10995 +f 11455 11655 11407 +f 11455 11407 11187 +f 11655 11843 11551 +f 11655 11551 11407 +f 11843 12011 11775 +f 11843 11775 11551 +f 12011 12199 11891 +f 12011 11891 11775 +f 12199 12319 12075 +f 12199 12075 11891 +f 12319 12499 12207 +f 12319 12207 12075 +f 12499 12619 12303 +f 12499 12303 12207 +f 12619 12731 12447 +f 12619 12447 12303 +f 12731 12839 12547 +f 12731 12547 12447 +f 12839 12927 12643 +f 12839 12643 12547 +f 12927 13039 12723 +f 12927 12723 12643 +f 13039 13103 12831 +f 13039 12831 12723 +f 13103 13171 12863 +f 13103 12863 12831 +f 13171 13219 12911 +f 13171 12911 12863 +f 13219 13251 12943 +f 13219 12943 12911 +f 13251 13283 12983 +f 13251 12983 12943 +f 13283 13299 13015 +f 13283 13015 12983 +f 13299 13323 13047 +f 13299 13047 13015 +f 13323 13324 13048 +f 13323 13048 13047 +f 13324 13300 13016 +f 13324 13016 13048 +f 13300 13284 12984 +f 13300 12984 13016 +f 13284 13252 12944 +f 13284 12944 12984 +f 13252 13220 12912 +f 13252 12912 12944 +f 13220 13172 12864 +f 13220 12864 12912 +f 13172 13104 12832 +f 13172 12832 12864 +f 13104 13040 12724 +f 13104 12724 12832 +f 13040 12928 12644 +f 13040 12644 12724 +f 12928 12840 12548 +f 12928 12548 12644 +f 12840 12732 12448 +f 12840 12448 12548 +f 12732 12620 12304 +f 12732 12304 12448 +f 12620 12500 12208 +f 12620 12208 12304 +f 12500 12320 12076 +f 12500 12076 12208 +f 12320 12200 11892 +f 12320 11892 12076 +f 12200 12012 11776 +f 12200 11776 11892 +f 12012 11844 11552 +f 12012 11552 11776 +f 11844 11656 11408 +f 11844 11408 11552 +f 11656 11456 11188 +f 11656 11188 11408 +f 11456 11236 10996 +f 11456 10996 11188 +f 11236 11052 10760 +f 11236 10760 10996 +f 11052 10784 10580 +f 11052 10580 10760 +f 10784 10588 10300 +f 10784 10300 10580 +f 10588 10284 10080 +f 10588 10080 10300 +f 10284 10000 9784 +f 10284 9784 10080 +f 10000 9760 9484 +f 10000 9484 9784 +f 9760 9428 9252 +f 9760 9252 9484 +f 9428 9128 8904 +f 9428 8904 9252 +f 9128 8824 8580 +f 9128 8580 8904 +f 8824 8452 8284 +f 8824 8284 8580 +f 8452 8120 7904 +f 8452 7904 8284 +f 8120 7752 7556 +f 8120 7556 7904 +f 7752 7316 7196 +f 7752 7196 7556 +f 7316 6920 6736 +f 7316 6736 7196 +f 6920 6536 6356 +f 6920 6356 6736 +f 6536 6076 5932 +f 6536 5932 6356 +f 6076 5560 5472 +f 6076 5472 5932 +f 5560 5168 4972 +f 5560 4972 5472 +f 5168 4596 4516 +f 5168 4516 4972 +f 4596 4016 3928 +f 4596 3928 4516 +f 4016 3460 3348 +f 4016 3348 3928 +f 3460 2892 2844 +f 3460 2844 3348 +f 2892 2144 2112 +f 2892 2112 2844 +f 2144 1324 1308 +f 2144 1308 2112 +f 1307 2111 2063 +f 1307 2063 1259 +f 2111 2843 2795 +f 2111 2795 2063 +f 2843 3347 3267 +f 2843 3267 2795 +f 3347 3927 3863 +f 3347 3863 3267 +f 3927 4515 4439 +f 3927 4439 3863 +f 4515 4971 4827 +f 4515 4827 4439 +f 4971 5471 5327 +f 4971 5327 4827 +f 5471 5931 5807 +f 5471 5807 5327 +f 5931 6355 6171 +f 5931 6171 5807 +f 6355 6735 6631 +f 6355 6631 6171 +f 6735 7195 6999 +f 6735 6999 6631 +f 7195 7555 7331 +f 7195 7331 6999 +f 7555 7903 7735 +f 7555 7735 7331 +f 7903 8283 8023 +f 7903 8023 7735 +f 8283 8579 8371 +f 8283 8371 8023 +f 8579 8903 8715 +f 8579 8715 8371 +f 8903 9251 8959 +f 8903 8959 8715 +f 9251 9483 9275 +f 9251 9275 8959 +f 9483 9783 9555 +f 9483 9555 9275 +f 9783 10079 9799 +f 9783 9799 9555 +f 10079 10299 10071 +f 10079 10071 9799 +f 10299 10579 10267 +f 10299 10267 10071 +f 10579 10759 10507 +f 10579 10507 10267 +f 10759 10995 10727 +f 10759 10727 10507 +f 10995 11187 10927 +f 10995 10927 10727 +f 11187 11407 11107 +f 11187 11107 10927 +f 11407 11551 11307 +f 11407 11307 11107 +f 11551 11775 11463 +f 11551 11463 11307 +f 11775 11891 11615 +f 11775 11615 11463 +f 11891 12075 11803 +f 11891 11803 11615 +f 12075 12207 11883 +f 12075 11883 11803 +f 12207 12303 12019 +f 12207 12019 11883 +f 12303 12447 12151 +f 12303 12151 12019 +f 12447 12547 12247 +f 12447 12247 12151 +f 12547 12643 12327 +f 12547 12327 12247 +f 12643 12723 12431 +f 12643 12431 12327 +f 12723 12831 12507 +f 12723 12507 12431 +f 12831 12863 12555 +f 12831 12555 12507 +f 12863 12911 12611 +f 12863 12611 12555 +f 12911 12943 12651 +f 12911 12651 12611 +f 12943 12983 12667 +f 12943 12667 12651 +f 12983 13015 12691 +f 12983 12691 12667 +f 13015 13047 12715 +f 13015 12715 12691 +f 13047 13048 12716 +f 13047 12716 12715 +f 13048 13016 12692 +f 13048 12692 12716 +f 13016 12984 12668 +f 13016 12668 12692 +f 12984 12944 12652 +f 12984 12652 12668 +f 12944 12912 12612 +f 12944 12612 12652 +f 12912 12864 12556 +f 12912 12556 12612 +f 12864 12832 12508 +f 12864 12508 12556 +f 12832 12724 12432 +f 12832 12432 12508 +f 12724 12644 12328 +f 12724 12328 12432 +f 12644 12548 12248 +f 12644 12248 12328 +f 12548 12448 12152 +f 12548 12152 12248 +f 12448 12304 12020 +f 12448 12020 12152 +f 12304 12208 11884 +f 12304 11884 12020 +f 12208 12076 11804 +f 12208 11804 11884 +f 12076 11892 11616 +f 12076 11616 11804 +f 11892 11776 11464 +f 11892 11464 11616 +f 11776 11552 11308 +f 11776 11308 11464 +f 11552 11408 11108 +f 11552 11108 11308 +f 11408 11188 10928 +f 11408 10928 11108 +f 11188 10996 10728 +f 11188 10728 10928 +f 10996 10760 10508 +f 10996 10508 10728 +f 10760 10580 10268 +f 10760 10268 10508 +f 10580 10300 10072 +f 10580 10072 10268 +f 10300 10080 9800 +f 10300 9800 10072 +f 10080 9784 9556 +f 10080 9556 9800 +f 9784 9484 9276 +f 9784 9276 9556 +f 9484 9252 8960 +f 9484 8960 9276 +f 9252 8904 8716 +f 9252 8716 8960 +f 8904 8580 8372 +f 8904 8372 8716 +f 8580 8284 8024 +f 8580 8024 8372 +f 8284 7904 7736 +f 8284 7736 8024 +f 7904 7556 7332 +f 7904 7332 7736 +f 7556 7196 7000 +f 7556 7000 7332 +f 7196 6736 6632 +f 7196 6632 7000 +f 6736 6356 6172 +f 6736 6172 6632 +f 6356 5932 5808 +f 6356 5808 6172 +f 5932 5472 5328 +f 5932 5328 5808 +f 5472 4972 4828 +f 5472 4828 5328 +f 4972 4516 4440 +f 4972 4440 4828 +f 4516 3928 3864 +f 4516 3864 4440 +f 3928 3348 3268 +f 3928 3268 3864 +f 3348 2844 2796 +f 3348 2796 3268 +f 2844 2112 2064 +f 2844 2064 2796 +f 2112 1308 1260 +f 2112 1260 2064 +f 1259 2063 2031 +f 1259 2031 1243 +f 2063 2795 2655 +f 2063 2655 2031 +f 2795 3267 3171 +f 2795 3171 2655 +f 3267 3863 3759 +f 3267 3759 3171 +f 3863 4439 4223 +f 3863 4223 3759 +f 4439 4827 4731 +f 4439 4731 4223 +f 4827 5327 5215 +f 4827 5215 4731 +f 5327 5807 5599 +f 5327 5599 5215 +f 5807 6171 6011 +f 5807 6011 5599 +f 6171 6631 6451 +f 6171 6451 6011 +f 6631 6999 6775 +f 6631 6775 6451 +f 6999 7331 7171 +f 6999 7171 6775 +f 7331 7735 7475 +f 7331 7475 7171 +f 7735 8023 7823 +f 7735 7823 7475 +f 8023 8371 8167 +f 8023 8167 7823 +f 8371 8715 8443 +f 8371 8443 8167 +f 8715 8959 8759 +f 8715 8759 8443 +f 8959 9275 9031 +f 8959 9031 8759 +f 9275 9555 9291 +f 9275 9291 9031 +f 9555 9799 9547 +f 9555 9547 9291 +f 9799 10071 9775 +f 9799 9775 9547 +f 10071 10267 9991 +f 10071 9991 9775 +f 10267 10507 10243 +f 10267 10243 9991 +f 10507 10727 10427 +f 10507 10427 10243 +f 10727 10927 10639 +f 10727 10639 10427 +f 10927 11107 10823 +f 10927 10823 10639 +f 11107 11307 11011 +f 11107 11011 10823 +f 11307 11463 11163 +f 11307 11163 11011 +f 11463 11615 11339 +f 11463 11339 11163 +f 11615 11803 11447 +f 11615 11447 11339 +f 11803 11883 11583 +f 11803 11583 11447 +f 11883 12019 11727 +f 11883 11727 11583 +f 12019 12151 11827 +f 12019 11827 11727 +f 12151 12247 11931 +f 12151 11931 11827 +f 12247 12327 12003 +f 12247 12003 11931 +f 12327 12431 12107 +f 12327 12107 12003 +f 12431 12507 12183 +f 12431 12183 12107 +f 12507 12555 12239 +f 12507 12239 12183 +f 12555 12611 12279 +f 12555 12279 12239 +f 12611 12651 12295 +f 12611 12295 12279 +f 12651 12667 12359 +f 12651 12359 12295 +f 12667 12691 12375 +f 12667 12375 12359 +f 12691 12715 12415 +f 12691 12415 12375 +f 12715 12716 12416 +f 12715 12416 12415 +f 12716 12692 12376 +f 12716 12376 12416 +f 12692 12668 12360 +f 12692 12360 12376 +f 12668 12652 12296 +f 12668 12296 12360 +f 12652 12612 12280 +f 12652 12280 12296 +f 12612 12556 12240 +f 12612 12240 12280 +f 12556 12508 12184 +f 12556 12184 12240 +f 12508 12432 12108 +f 12508 12108 12184 +f 12432 12328 12004 +f 12432 12004 12108 +f 12328 12248 11932 +f 12328 11932 12004 +f 12248 12152 11828 +f 12248 11828 11932 +f 12152 12020 11728 +f 12152 11728 11828 +f 12020 11884 11584 +f 12020 11584 11728 +f 11884 11804 11448 +f 11884 11448 11584 +f 11804 11616 11340 +f 11804 11340 11448 +f 11616 11464 11164 +f 11616 11164 11340 +f 11464 11308 11012 +f 11464 11012 11164 +f 11308 11108 10824 +f 11308 10824 11012 +f 11108 10928 10640 +f 11108 10640 10824 +f 10928 10728 10428 +f 10928 10428 10640 +f 10728 10508 10244 +f 10728 10244 10428 +f 10508 10268 9992 +f 10508 9992 10244 +f 10268 10072 9776 +f 10268 9776 9992 +f 10072 9800 9548 +f 10072 9548 9776 +f 9800 9556 9292 +f 9800 9292 9548 +f 9556 9276 9032 +f 9556 9032 9292 +f 9276 8960 8760 +f 9276 8760 9032 +f 8960 8716 8444 +f 8960 8444 8760 +f 8716 8372 8168 +f 8716 8168 8444 +f 8372 8024 7824 +f 8372 7824 8168 +f 8024 7736 7476 +f 8024 7476 7824 +f 7736 7332 7172 +f 7736 7172 7476 +f 7332 7000 6776 +f 7332 6776 7172 +f 7000 6632 6452 +f 7000 6452 6776 +f 6632 6172 6012 +f 6632 6012 6452 +f 6172 5808 5600 +f 6172 5600 6012 +f 5808 5328 5216 +f 5808 5216 5600 +f 5328 4828 4732 +f 5328 4732 5216 +f 4828 4440 4224 +f 4828 4224 4732 +f 4440 3864 3760 +f 4440 3760 4224 +f 3864 3268 3172 +f 3864 3172 3760 +f 3268 2796 2656 +f 3268 2656 3172 +f 2796 2064 2032 +f 2796 2032 2656 +f 2064 1260 1244 +f 2064 1244 2032 +f 1243 2031 1991 +f 1243 1991 1195 +f 2031 2655 2527 +f 2031 2527 1991 +f 2655 3171 3107 +f 2655 3107 2527 +f 3171 3759 3711 +f 3171 3711 3107 +f 3759 4223 4071 +f 3759 4071 3711 +f 4223 4731 4579 +f 4223 4579 4071 +f 4731 5215 5019 +f 4731 5019 4579 +f 5215 5599 5415 +f 5215 5415 5019 +f 5599 6011 5883 +f 5599 5883 5415 +f 6011 6451 6211 +f 6011 6211 5883 +f 6451 6775 6615 +f 6451 6615 6211 +f 6775 7171 6951 +f 6775 6951 6615 +f 7171 7475 7267 +f 7171 7267 6951 +f 7475 7823 7627 +f 7475 7627 7267 +f 7823 8167 7911 +f 7823 7911 7627 +f 8167 8443 8227 +f 8167 8227 7911 +f 8443 8759 8491 +f 8443 8491 8227 +f 8759 9031 8775 +f 8759 8775 8491 +f 9031 9291 9023 +f 9031 9023 8775 +f 9291 9547 9267 +f 9291 9267 9023 +f 9547 9775 9475 +f 9547 9475 9267 +f 9775 9991 9751 +f 9775 9751 9475 +f 9991 10243 9919 +f 9991 9919 9751 +f 10243 10427 10163 +f 10243 10163 9919 +f 10427 10639 10331 +f 10427 10331 10163 +f 10639 10823 10523 +f 10639 10523 10331 +f 10823 11011 10687 +f 10823 10687 10523 +f 11011 11163 10847 +f 11011 10847 10687 +f 11163 11339 11003 +f 11163 11003 10847 +f 11339 11447 11123 +f 11339 11123 11003 +f 11447 11583 11259 +f 11447 11259 11123 +f 11583 11727 11399 +f 11583 11399 11259 +f 11727 11827 11503 +f 11727 11503 11399 +f 11827 11931 11591 +f 11827 11591 11503 +f 11931 12003 11695 +f 11931 11695 11591 +f 12003 12107 11787 +f 12003 11787 11695 +f 12107 12183 11835 +f 12107 11835 11787 +f 12183 12239 11875 +f 12183 11875 11835 +f 12239 12279 11939 +f 12239 11939 11875 +f 12279 12295 11979 +f 12279 11979 11939 +f 12295 12359 11995 +f 12295 11995 11979 +f 12359 12375 12027 +f 12359 12027 11995 +f 12375 12415 12051 +f 12375 12051 12027 +f 12415 12416 12052 +f 12415 12052 12051 +f 12416 12376 12028 +f 12416 12028 12052 +f 12376 12360 11996 +f 12376 11996 12028 +f 12360 12296 11980 +f 12360 11980 11996 +f 12296 12280 11940 +f 12296 11940 11980 +f 12280 12240 11876 +f 12280 11876 11940 +f 12240 12184 11836 +f 12240 11836 11876 +f 12184 12108 11788 +f 12184 11788 11836 +f 12108 12004 11696 +f 12108 11696 11788 +f 12004 11932 11592 +f 12004 11592 11696 +f 11932 11828 11504 +f 11932 11504 11592 +f 11828 11728 11400 +f 11828 11400 11504 +f 11728 11584 11260 +f 11728 11260 11400 +f 11584 11448 11124 +f 11584 11124 11260 +f 11448 11340 11004 +f 11448 11004 11124 +f 11340 11164 10848 +f 11340 10848 11004 +f 11164 11012 10688 +f 11164 10688 10848 +f 11012 10824 10524 +f 11012 10524 10688 +f 10824 10640 10332 +f 10824 10332 10524 +f 10640 10428 10164 +f 10640 10164 10332 +f 10428 10244 9920 +f 10428 9920 10164 +f 10244 9992 9752 +f 10244 9752 9920 +f 9992 9776 9476 +f 9992 9476 9752 +f 9776 9548 9268 +f 9776 9268 9476 +f 9548 9292 9024 +f 9548 9024 9268 +f 9292 9032 8776 +f 9292 8776 9024 +f 9032 8760 8492 +f 9032 8492 8776 +f 8760 8444 8228 +f 8760 8228 8492 +f 8444 8168 7912 +f 8444 7912 8228 +f 8168 7824 7628 +f 8168 7628 7912 +f 7824 7476 7268 +f 7824 7268 7628 +f 7476 7172 6952 +f 7476 6952 7268 +f 7172 6776 6616 +f 7172 6616 6952 +f 6776 6452 6212 +f 6776 6212 6616 +f 6452 6012 5884 +f 6452 5884 6212 +f 6012 5600 5416 +f 6012 5416 5884 +f 5600 5216 5020 +f 5600 5020 5416 +f 5216 4732 4580 +f 5216 4580 5020 +f 4732 4224 4072 +f 4732 4072 4580 +f 4224 3760 3712 +f 4224 3712 4072 +f 3760 3172 3108 +f 3760 3108 3712 +f 3172 2656 2528 +f 3172 2528 3108 +f 2656 2032 1992 +f 2656 1992 2528 +f 2032 1244 1196 +f 2032 1196 1992 +f 1195 1991 1943 +f 1195 1943 1179 +f 1991 2527 2447 +f 1991 2447 1943 +f 2527 3107 3011 +f 2527 3011 2447 +f 3107 3711 3507 +f 3107 3507 3011 +f 3711 4071 3975 +f 3711 3975 3507 +f 4071 4579 4483 +f 4071 4483 3975 +f 4579 5019 4835 +f 4579 4835 4483 +f 5019 5415 5295 +f 5019 5295 4835 +f 5415 5883 5647 +f 5415 5647 5295 +f 5883 6211 6035 +f 5883 6035 5647 +f 6211 6615 6411 +f 6211 6411 6035 +f 6615 6951 6711 +f 6615 6711 6411 +f 6951 7267 7075 +f 6951 7075 6711 +f 7267 7627 7347 +f 7267 7347 7075 +f 7627 7911 7695 +f 7627 7695 7347 +f 7911 8227 7943 +f 7911 7943 7695 +f 8227 8491 8251 +f 8227 8251 7943 +f 8491 8775 8483 +f 8491 8483 8251 +f 8775 9023 8751 +f 8775 8751 8483 +f 9023 9267 8951 +f 9023 8951 8751 +f 9267 9475 9243 +f 9267 9243 8951 +f 9475 9751 9411 +f 9475 9411 9243 +f 9751 9919 9643 +f 9751 9643 9411 +f 9919 10163 9839 +f 9919 9839 9643 +f 10163 10331 10007 +f 10163 10007 9839 +f 10331 10523 10211 +f 10331 10211 10007 +f 10523 10687 10371 +f 10523 10371 10211 +f 10687 10847 10531 +f 10687 10531 10371 +f 10847 11003 10663 +f 10847 10663 10531 +f 11003 11123 10791 +f 11003 10791 10663 +f 11123 11259 10935 +f 11123 10935 10791 +f 11259 11399 11075 +f 11259 11075 10935 +f 11399 11503 11131 +f 11399 11131 11075 +f 11503 11591 11227 +f 11503 11227 11131 +f 11591 11695 11347 +f 11591 11347 11227 +f 11695 11787 11423 +f 11695 11423 11347 +f 11787 11835 11479 +f 11787 11479 11423 +f 11835 11875 11543 +f 11835 11543 11479 +f 11875 11939 11559 +f 11875 11559 11543 +f 11939 11979 11607 +f 11939 11607 11559 +f 11979 11995 11647 +f 11979 11647 11607 +f 11995 12027 11663 +f 11995 11663 11647 +f 12027 12051 11679 +f 12027 11679 11663 +f 12051 12052 11680 +f 12051 11680 11679 +f 12052 12028 11664 +f 12052 11664 11680 +f 12028 11996 11648 +f 12028 11648 11664 +f 11996 11980 11608 +f 11996 11608 11648 +f 11980 11940 11560 +f 11980 11560 11608 +f 11940 11876 11544 +f 11940 11544 11560 +f 11876 11836 11480 +f 11876 11480 11544 +f 11836 11788 11424 +f 11836 11424 11480 +f 11788 11696 11348 +f 11788 11348 11424 +f 11696 11592 11228 +f 11696 11228 11348 +f 11592 11504 11132 +f 11592 11132 11228 +f 11504 11400 11076 +f 11504 11076 11132 +f 11400 11260 10936 +f 11400 10936 11076 +f 11260 11124 10792 +f 11260 10792 10936 +f 11124 11004 10664 +f 11124 10664 10792 +f 11004 10848 10532 +f 11004 10532 10664 +f 10848 10688 10372 +f 10848 10372 10532 +f 10688 10524 10212 +f 10688 10212 10372 +f 10524 10332 10008 +f 10524 10008 10212 +f 10332 10164 9840 +f 10332 9840 10008 +f 10164 9920 9644 +f 10164 9644 9840 +f 9920 9752 9412 +f 9920 9412 9644 +f 9752 9476 9244 +f 9752 9244 9412 +f 9476 9268 8952 +f 9476 8952 9244 +f 9268 9024 8752 +f 9268 8752 8952 +f 9024 8776 8484 +f 9024 8484 8752 +f 8776 8492 8252 +f 8776 8252 8484 +f 8492 8228 7944 +f 8492 7944 8252 +f 8228 7912 7696 +f 8228 7696 7944 +f 7912 7628 7348 +f 7912 7348 7696 +f 7628 7268 7076 +f 7628 7076 7348 +f 7268 6952 6712 +f 7268 6712 7076 +f 6952 6616 6412 +f 6952 6412 6712 +f 6616 6212 6036 +f 6616 6036 6412 +f 6212 5884 5648 +f 6212 5648 6036 +f 5884 5416 5296 +f 5884 5296 5648 +f 5416 5020 4836 +f 5416 4836 5296 +f 5020 4580 4484 +f 5020 4484 4836 +f 4580 4072 3976 +f 4580 3976 4484 +f 4072 3712 3508 +f 4072 3508 3976 +f 3712 3108 3012 +f 3712 3012 3508 +f 3108 2528 2448 +f 3108 2448 3012 +f 2528 1992 1944 +f 2528 1944 2448 +f 1992 1196 1180 +f 1992 1180 1944 +f 1179 1943 1911 +f 1179 1911 1163 +f 1943 2447 2351 +f 1943 2351 1911 +f 2447 3011 2947 +f 2447 2947 2351 +f 3011 3507 3371 +f 3011 3371 2947 +f 3507 3975 3871 +f 3507 3871 3371 +f 3975 4483 4271 +f 3975 4271 3871 +f 4483 4835 4683 +f 4483 4683 4271 +f 4835 5295 5131 +f 4835 5131 4683 +f 5295 5647 5463 +f 5295 5463 5131 +f 5647 6035 5859 +f 5647 5859 5463 +f 6035 6411 6131 +f 6035 6131 5859 +f 6411 6711 6519 +f 6411 6519 6131 +f 6711 7075 6815 +f 6711 6815 6519 +f 7075 7347 7139 +f 7075 7139 6815 +f 7347 7695 7403 +f 7347 7403 7139 +f 7695 7943 7711 +f 7695 7711 7403 +f 7943 8251 7935 +f 7943 7935 7711 +f 8251 8483 8219 +f 8251 8219 7935 +f 8483 8751 8427 +f 8483 8427 8219 +f 8751 8951 8699 +f 8751 8699 8427 +f 8951 9243 8887 +f 8951 8887 8699 +f 9243 9411 9111 +f 9243 9111 8887 +f 9411 9643 9339 +f 9411 9339 9111 +f 9643 9839 9491 +f 9643 9491 9339 +f 9839 10007 9711 +f 9839 9711 9491 +f 10007 10211 9863 +f 10007 9863 9711 +f 10211 10371 10015 +f 10211 10015 9863 +f 10371 10531 10179 +f 10371 10179 10015 +f 10531 10663 10315 +f 10531 10315 10179 +f 10663 10791 10435 +f 10663 10435 10315 +f 10791 10935 10607 +f 10791 10607 10435 +f 10935 11075 10671 +f 10935 10671 10607 +f 11075 11131 10775 +f 11075 10775 10671 +f 11131 11227 10887 +f 11131 10887 10775 +f 11227 11347 10975 +f 11227 10975 10887 +f 11347 11423 11067 +f 11347 11067 10975 +f 11423 11479 11099 +f 11423 11099 11067 +f 11479 11543 11147 +f 11479 11147 11099 +f 11543 11559 11195 +f 11543 11195 11147 +f 11559 11607 11219 +f 11559 11219 11195 +f 11607 11647 11275 +f 11607 11275 11219 +f 11647 11663 11291 +f 11647 11291 11275 +f 11663 11679 11315 +f 11663 11315 11291 +f 11679 11680 11316 +f 11679 11316 11315 +f 11680 11664 11292 +f 11680 11292 11316 +f 11664 11648 11276 +f 11664 11276 11292 +f 11648 11608 11220 +f 11648 11220 11276 +f 11608 11560 11196 +f 11608 11196 11220 +f 11560 11544 11148 +f 11560 11148 11196 +f 11544 11480 11100 +f 11544 11100 11148 +f 11480 11424 11068 +f 11480 11068 11100 +f 11424 11348 10976 +f 11424 10976 11068 +f 11348 11228 10888 +f 11348 10888 10976 +f 11228 11132 10776 +f 11228 10776 10888 +f 11132 11076 10672 +f 11132 10672 10776 +f 11076 10936 10608 +f 11076 10608 10672 +f 10936 10792 10436 +f 10936 10436 10608 +f 10792 10664 10316 +f 10792 10316 10436 +f 10664 10532 10180 +f 10664 10180 10316 +f 10532 10372 10016 +f 10532 10016 10180 +f 10372 10212 9864 +f 10372 9864 10016 +f 10212 10008 9712 +f 10212 9712 9864 +f 10008 9840 9492 +f 10008 9492 9712 +f 9840 9644 9340 +f 9840 9340 9492 +f 9644 9412 9112 +f 9644 9112 9340 +f 9412 9244 8888 +f 9412 8888 9112 +f 9244 8952 8700 +f 9244 8700 8888 +f 8952 8752 8428 +f 8952 8428 8700 +f 8752 8484 8220 +f 8752 8220 8428 +f 8484 8252 7936 +f 8484 7936 8220 +f 8252 7944 7712 +f 8252 7712 7936 +f 7944 7696 7404 +f 7944 7404 7712 +f 7696 7348 7140 +f 7696 7140 7404 +f 7348 7076 6816 +f 7348 6816 7140 +f 7076 6712 6520 +f 7076 6520 6816 +f 6712 6412 6132 +f 6712 6132 6520 +f 6412 6036 5860 +f 6412 5860 6132 +f 6036 5648 5464 +f 6036 5464 5860 +f 5648 5296 5132 +f 5648 5132 5464 +f 5296 4836 4684 +f 5296 4684 5132 +f 4836 4484 4272 +f 4836 4272 4684 +f 4484 3976 3872 +f 4484 3872 4272 +f 3976 3508 3372 +f 3976 3372 3872 +f 3508 3012 2948 +f 3508 2948 3372 +f 3012 2448 2352 +f 3012 2352 2948 +f 2448 1944 1912 +f 2448 1912 2352 +f 1944 1180 1164 +f 1944 1164 1912 +f 1163 1911 1879 +f 1163 1879 1123 +f 1911 2351 2271 +f 1911 2271 1879 +f 2351 2947 2859 +f 2351 2859 2271 +f 2947 3371 3243 +f 2947 3243 2859 +f 3371 3871 3743 +f 3371 3743 3243 +f 3871 4271 4103 +f 3871 4103 3743 +f 4271 4683 4547 +f 4271 4547 4103 +f 4683 5131 4875 +f 4683 4875 4547 +f 5131 5463 5279 +f 5131 5279 4875 +f 5463 5859 5583 +f 5463 5583 5279 +f 5859 6131 5947 +f 5859 5947 5583 +f 6131 6519 6235 +f 6131 6235 5947 +f 6519 6815 6567 +f 6519 6567 6235 +f 6815 7139 6839 +f 6815 6839 6567 +f 7139 7403 7147 +f 7139 7147 6839 +f 7403 7711 7395 +f 7403 7395 7147 +f 7711 7935 7687 +f 7711 7687 7395 +f 7935 8219 7895 +f 7935 7895 7687 +f 8219 8427 8151 +f 8219 8151 7895 +f 8427 8699 8355 +f 8427 8355 8151 +f 8699 8887 8563 +f 8699 8563 8355 +f 8887 9111 8815 +f 8887 8815 8563 +f 9111 9339 8967 +f 9111 8967 8815 +f 9339 9491 9183 +f 9339 9183 8967 +f 9491 9711 9355 +f 9491 9355 9183 +f 9711 9863 9499 +f 9711 9499 9355 +f 9863 10015 9675 +f 9863 9675 9499 +f 10015 10179 9815 +f 10015 9815 9675 +f 10179 10315 9943 +f 10179 9943 9815 +f 10315 10435 10103 +f 10315 10103 9943 +f 10435 10607 10203 +f 10435 10203 10103 +f 10607 10671 10291 +f 10607 10291 10203 +f 10671 10775 10395 +f 10671 10395 10291 +f 10775 10887 10499 +f 10775 10499 10395 +f 10887 10975 10615 +f 10887 10615 10499 +f 10975 11067 10655 +f 10975 10655 10615 +f 11067 11099 10719 +f 11067 10719 10655 +f 11099 11147 10751 +f 11099 10751 10719 +f 11147 11195 10799 +f 11147 10799 10751 +f 11195 11219 10855 +f 11195 10855 10799 +f 11219 11275 10879 +f 11219 10879 10855 +f 11275 11291 10895 +f 11275 10895 10879 +f 11291 11315 10903 +f 11291 10903 10895 +f 11315 11316 10904 +f 11315 10904 10903 +f 11316 11292 10896 +f 11316 10896 10904 +f 11292 11276 10880 +f 11292 10880 10896 +f 11276 11220 10856 +f 11276 10856 10880 +f 11220 11196 10800 +f 11220 10800 10856 +f 11196 11148 10752 +f 11196 10752 10800 +f 11148 11100 10720 +f 11148 10720 10752 +f 11100 11068 10656 +f 11100 10656 10720 +f 11068 10976 10616 +f 11068 10616 10656 +f 10976 10888 10500 +f 10976 10500 10616 +f 10888 10776 10396 +f 10888 10396 10500 +f 10776 10672 10292 +f 10776 10292 10396 +f 10672 10608 10204 +f 10672 10204 10292 +f 10608 10436 10104 +f 10608 10104 10204 +f 10436 10316 9944 +f 10436 9944 10104 +f 10316 10180 9816 +f 10316 9816 9944 +f 10180 10016 9676 +f 10180 9676 9816 +f 10016 9864 9500 +f 10016 9500 9676 +f 9864 9712 9356 +f 9864 9356 9500 +f 9712 9492 9184 +f 9712 9184 9356 +f 9492 9340 8968 +f 9492 8968 9184 +f 9340 9112 8816 +f 9340 8816 8968 +f 9112 8888 8564 +f 9112 8564 8816 +f 8888 8700 8356 +f 8888 8356 8564 +f 8700 8428 8152 +f 8700 8152 8356 +f 8428 8220 7896 +f 8428 7896 8152 +f 8220 7936 7688 +f 8220 7688 7896 +f 7936 7712 7396 +f 7936 7396 7688 +f 7712 7404 7148 +f 7712 7148 7396 +f 7404 7140 6840 +f 7404 6840 7148 +f 7140 6816 6568 +f 7140 6568 6840 +f 6816 6520 6236 +f 6816 6236 6568 +f 6520 6132 5948 +f 6520 5948 6236 +f 6132 5860 5584 +f 6132 5584 5948 +f 5860 5464 5280 +f 5860 5280 5584 +f 5464 5132 4876 +f 5464 4876 5280 +f 5132 4684 4548 +f 5132 4548 4876 +f 4684 4272 4104 +f 4684 4104 4548 +f 4272 3872 3744 +f 4272 3744 4104 +f 3872 3372 3244 +f 3872 3244 3744 +f 3372 2948 2860 +f 3372 2860 3244 +f 2948 2352 2272 +f 2948 2272 2860 +f 2352 1912 1880 +f 2352 1880 2272 +f 1912 1164 1124 +f 1912 1124 1880 +f 1123 1879 1819 +f 1123 1819 1091 +f 1879 2271 2207 +f 1879 2207 1819 +f 2271 2859 2759 +f 2271 2759 2207 +f 2859 3243 3139 +f 2859 3139 2759 +f 3243 3743 3619 +f 3243 3619 3139 +f 3743 4103 3959 +f 3743 3959 3619 +f 4103 4547 4375 +f 4103 4375 3959 +f 4547 4875 4699 +f 4547 4699 4375 +f 4875 5279 5051 +f 4875 5051 4699 +f 5279 5583 5375 +f 5279 5375 5051 +f 5583 5947 5687 +f 5583 5687 5375 +f 5947 6235 5995 +f 5947 5995 5687 +f 6235 6567 6283 +f 6235 6283 5995 +f 6567 6839 6583 +f 6567 6583 6283 +f 6839 7147 6831 +f 6839 6831 6583 +f 7147 7395 7131 +f 7147 7131 6831 +f 7395 7687 7339 +f 7395 7339 7131 +f 7687 7895 7619 +f 7687 7619 7339 +f 7895 8151 7815 +f 7895 7815 7619 +f 8151 8355 8007 +f 8151 8007 7815 +f 8355 8563 8275 +f 8355 8275 8007 +f 8563 8815 8419 +f 8563 8419 8275 +f 8815 8967 8651 +f 8815 8651 8419 +f 8967 9183 8831 +f 8967 8831 8651 +f 9183 9355 8975 +f 9183 8975 8831 +f 9355 9499 9151 +f 9355 9151 8975 +f 9499 9675 9307 +f 9499 9307 9151 +f 9675 9815 9435 +f 9675 9435 9307 +f 9815 9943 9571 +f 9815 9571 9435 +f 9943 10103 9719 +f 9943 9719 9571 +f 10103 10203 9807 +f 10103 9807 9719 +f 10203 10291 9895 +f 10203 9895 9807 +f 10291 10395 9983 +f 10291 9983 9895 +f 10395 10499 10119 +f 10395 10119 9983 +f 10499 10615 10187 +f 10499 10187 10119 +f 10615 10655 10259 +f 10615 10259 10187 +f 10655 10719 10307 +f 10655 10307 10259 +f 10719 10751 10363 +f 10719 10363 10307 +f 10751 10799 10387 +f 10751 10387 10363 +f 10799 10855 10411 +f 10799 10411 10387 +f 10855 10879 10459 +f 10855 10459 10411 +f 10879 10895 10475 +f 10879 10475 10459 +f 10895 10903 10483 +f 10895 10483 10475 +f 10903 10904 10484 +f 10903 10484 10483 +f 10904 10896 10476 +f 10904 10476 10484 +f 10896 10880 10460 +f 10896 10460 10476 +f 10880 10856 10412 +f 10880 10412 10460 +f 10856 10800 10388 +f 10856 10388 10412 +f 10800 10752 10364 +f 10800 10364 10388 +f 10752 10720 10308 +f 10752 10308 10364 +f 10720 10656 10260 +f 10720 10260 10308 +f 10656 10616 10188 +f 10656 10188 10260 +f 10616 10500 10120 +f 10616 10120 10188 +f 10500 10396 9984 +f 10500 9984 10120 +f 10396 10292 9896 +f 10396 9896 9984 +f 10292 10204 9808 +f 10292 9808 9896 +f 10204 10104 9720 +f 10204 9720 9808 +f 10104 9944 9572 +f 10104 9572 9720 +f 9944 9816 9436 +f 9944 9436 9572 +f 9816 9676 9308 +f 9816 9308 9436 +f 9676 9500 9152 +f 9676 9152 9308 +f 9500 9356 8976 +f 9500 8976 9152 +f 9356 9184 8832 +f 9356 8832 8976 +f 9184 8968 8652 +f 9184 8652 8832 +f 8968 8816 8420 +f 8968 8420 8652 +f 8816 8564 8276 +f 8816 8276 8420 +f 8564 8356 8008 +f 8564 8008 8276 +f 8356 8152 7816 +f 8356 7816 8008 +f 8152 7896 7620 +f 8152 7620 7816 +f 7896 7688 7340 +f 7896 7340 7620 +f 7688 7396 7132 +f 7688 7132 7340 +f 7396 7148 6832 +f 7396 6832 7132 +f 7148 6840 6584 +f 7148 6584 6832 +f 6840 6568 6284 +f 6840 6284 6584 +f 6568 6236 5996 +f 6568 5996 6284 +f 6236 5948 5688 +f 6236 5688 5996 +f 5948 5584 5376 +f 5948 5376 5688 +f 5584 5280 5052 +f 5584 5052 5376 +f 5280 4876 4700 +f 5280 4700 5052 +f 4876 4548 4376 +f 4876 4376 4700 +f 4548 4104 3960 +f 4548 3960 4376 +f 4104 3744 3620 +f 4104 3620 3960 +f 3744 3244 3140 +f 3744 3140 3620 +f 3244 2860 2760 +f 3244 2760 3140 +f 2860 2272 2208 +f 2860 2208 2760 +f 2272 1880 1820 +f 2272 1820 2208 +f 1880 1124 1092 +f 1880 1092 1820 +f 1091 1819 1643 +f 1091 1643 1059 +f 1819 2207 2127 +f 1819 2127 1643 +f 2207 2759 2575 +f 2207 2575 2127 +f 2759 3139 2995 +f 2759 2995 2575 +f 3139 3619 3387 +f 3139 3387 2995 +f 3619 3959 3807 +f 3619 3807 3387 +f 3959 4375 4151 +f 3959 4151 3807 +f 4375 4699 4531 +f 4375 4531 4151 +f 4699 5051 4795 +f 4699 4795 4531 +f 5051 5375 5191 +f 5051 5191 4795 +f 5375 5687 5439 +f 5375 5439 5191 +f 5687 5995 5783 +f 5687 5783 5439 +f 5995 6283 6043 +f 5995 6043 5783 +f 6283 6583 6275 +f 6283 6275 6043 +f 6583 6831 6559 +f 6583 6559 6275 +f 6831 7131 6807 +f 6831 6807 6559 +f 7131 7339 7063 +f 7131 7063 6807 +f 7339 7619 7251 +f 7339 7251 7063 +f 7619 7815 7459 +f 7619 7459 7251 +f 7815 8007 7727 +f 7815 7727 7459 +f 8007 8275 7879 +f 8007 7879 7727 +f 8275 8419 8095 +f 8275 8095 7879 +f 8419 8651 8299 +f 8419 8299 8095 +f 8651 8831 8411 +f 8651 8411 8299 +f 8831 8975 8595 +f 8831 8595 8411 +f 8975 9151 8783 +f 8975 8783 8595 +f 9151 9307 8895 +f 9151 8895 8783 +f 9307 9435 9039 +f 9307 9039 8895 +f 9435 9571 9191 +f 9435 9191 9039 +f 9571 9719 9299 +f 9571 9299 9191 +f 9719 9807 9387 +f 9719 9387 9299 +f 9807 9895 9467 +f 9807 9467 9387 +f 9895 9983 9603 +f 9895 9603 9467 +f 9983 10119 9695 +f 9983 9695 9603 +f 10119 10187 9767 +f 10119 9767 9695 +f 10187 10259 9823 +f 10187 9823 9767 +f 10259 10307 9887 +f 10259 9887 9823 +f 10307 10363 9911 +f 10307 9911 9887 +f 10363 10387 9959 +f 10363 9959 9911 +f 10387 10411 9975 +f 10387 9975 9959 +f 10411 10459 10031 +f 10411 10031 9975 +f 10459 10475 10063 +f 10459 10063 10031 +f 10475 10483 10087 +f 10475 10087 10063 +f 10483 10484 10088 +f 10483 10088 10087 +f 10484 10476 10064 +f 10484 10064 10088 +f 10476 10460 10032 +f 10476 10032 10064 +f 10460 10412 9976 +f 10460 9976 10032 +f 10412 10388 9960 +f 10412 9960 9976 +f 10388 10364 9912 +f 10388 9912 9960 +f 10364 10308 9888 +f 10364 9888 9912 +f 10308 10260 9824 +f 10308 9824 9888 +f 10260 10188 9768 +f 10260 9768 9824 +f 10188 10120 9696 +f 10188 9696 9768 +f 10120 9984 9604 +f 10120 9604 9696 +f 9984 9896 9468 +f 9984 9468 9604 +f 9896 9808 9388 +f 9896 9388 9468 +f 9808 9720 9300 +f 9808 9300 9388 +f 9720 9572 9192 +f 9720 9192 9300 +f 9572 9436 9040 +f 9572 9040 9192 +f 9436 9308 8896 +f 9436 8896 9040 +f 9308 9152 8784 +f 9308 8784 8896 +f 9152 8976 8596 +f 9152 8596 8784 +f 8976 8832 8412 +f 8976 8412 8596 +f 8832 8652 8300 +f 8832 8300 8412 +f 8652 8420 8096 +f 8652 8096 8300 +f 8420 8276 7880 +f 8420 7880 8096 +f 8276 8008 7728 +f 8276 7728 7880 +f 8008 7816 7460 +f 8008 7460 7728 +f 7816 7620 7252 +f 7816 7252 7460 +f 7620 7340 7064 +f 7620 7064 7252 +f 7340 7132 6808 +f 7340 6808 7064 +f 7132 6832 6560 +f 7132 6560 6808 +f 6832 6584 6276 +f 6832 6276 6560 +f 6584 6284 6044 +f 6584 6044 6276 +f 6284 5996 5784 +f 6284 5784 6044 +f 5996 5688 5440 +f 5996 5440 5784 +f 5688 5376 5192 +f 5688 5192 5440 +f 5376 5052 4796 +f 5376 4796 5192 +f 5052 4700 4532 +f 5052 4532 4796 +f 4700 4376 4152 +f 4700 4152 4532 +f 4376 3960 3808 +f 4376 3808 4152 +f 3960 3620 3388 +f 3960 3388 3808 +f 3620 3140 2996 +f 3620 2996 3388 +f 3140 2760 2576 +f 3140 2576 2996 +f 2760 2208 2128 +f 2760 2128 2576 +f 2208 1820 1644 +f 2208 1644 2128 +f 1820 1092 1060 +f 1820 1060 1644 +f 1059 1643 1539 +f 1059 1539 1043 +f 1643 2127 2047 +f 1643 2047 1539 +f 2127 2575 2423 +f 2127 2423 2047 +f 2575 2995 2915 +f 2575 2915 2423 +f 2995 3387 3219 +f 2995 3219 2915 +f 3387 3807 3679 +f 3387 3679 3219 +f 3807 4151 3943 +f 3807 3943 3679 +f 4151 4531 4287 +f 4151 4287 3943 +f 4531 4795 4619 +f 4531 4619 4287 +f 4795 5191 4907 +f 4795 4907 4619 +f 5191 5439 5231 +f 5191 5231 4907 +f 5439 5783 5487 +f 5439 5487 5231 +f 5783 6043 5775 +f 5783 5775 5487 +f 6043 6275 5987 +f 6043 5987 5775 +f 6275 6559 6227 +f 6275 6227 5987 +f 6559 6807 6511 +f 6559 6511 6227 +f 6807 7063 6695 +f 6807 6695 6511 +f 7063 7251 6935 +f 7063 6935 6695 +f 7251 7459 7163 +f 7251 7163 6935 +f 7459 7727 7323 +f 7459 7323 7163 +f 7727 7879 7539 +f 7727 7539 7323 +f 7879 8095 7743 +f 7879 7743 7539 +f 8095 8299 7863 +f 8095 7863 7743 +f 8299 8411 8039 +f 8299 8039 7863 +f 8411 8595 8235 +f 8411 8235 8039 +f 8595 8783 8347 +f 8595 8347 8235 +f 8783 8895 8499 +f 8783 8499 8347 +f 8895 9039 8635 +f 8895 8635 8499 +f 9039 9191 8767 +f 9039 8767 8635 +f 9191 9299 8863 +f 9191 8863 8767 +f 9299 9387 8943 +f 9299 8943 8863 +f 9387 9467 9071 +f 9387 9071 8943 +f 9467 9603 9159 +f 9467 9159 9071 +f 9603 9695 9259 +f 9603 9259 9159 +f 9695 9767 9331 +f 9695 9331 9259 +f 9767 9823 9379 +f 9767 9379 9331 +f 9823 9887 9419 +f 9823 9419 9379 +f 9887 9911 9459 +f 9887 9459 9419 +f 9911 9959 9515 +f 9911 9515 9459 +f 9959 9975 9563 +f 9959 9563 9515 +f 9975 10031 9587 +f 9975 9587 9563 +f 10031 10063 9611 +f 10031 9611 9587 +f 10063 10087 9619 +f 10063 9619 9611 +f 10087 10088 9620 +f 10087 9620 9619 +f 10088 10064 9612 +f 10088 9612 9620 +f 10064 10032 9588 +f 10064 9588 9612 +f 10032 9976 9564 +f 10032 9564 9588 +f 9976 9960 9516 +f 9976 9516 9564 +f 9960 9912 9460 +f 9960 9460 9516 +f 9912 9888 9420 +f 9912 9420 9460 +f 9888 9824 9380 +f 9888 9380 9420 +f 9824 9768 9332 +f 9824 9332 9380 +f 9768 9696 9260 +f 9768 9260 9332 +f 9696 9604 9160 +f 9696 9160 9260 +f 9604 9468 9072 +f 9604 9072 9160 +f 9468 9388 8944 +f 9468 8944 9072 +f 9388 9300 8864 +f 9388 8864 8944 +f 9300 9192 8768 +f 9300 8768 8864 +f 9192 9040 8636 +f 9192 8636 8768 +f 9040 8896 8500 +f 9040 8500 8636 +f 8896 8784 8348 +f 8896 8348 8500 +f 8784 8596 8236 +f 8784 8236 8348 +f 8596 8412 8040 +f 8596 8040 8236 +f 8412 8300 7864 +f 8412 7864 8040 +f 8300 8096 7744 +f 8300 7744 7864 +f 8096 7880 7540 +f 8096 7540 7744 +f 7880 7728 7324 +f 7880 7324 7540 +f 7728 7460 7164 +f 7728 7164 7324 +f 7460 7252 6936 +f 7460 6936 7164 +f 7252 7064 6696 +f 7252 6696 6936 +f 7064 6808 6512 +f 7064 6512 6696 +f 6808 6560 6228 +f 6808 6228 6512 +f 6560 6276 5988 +f 6560 5988 6228 +f 6276 6044 5776 +f 6276 5776 5988 +f 6044 5784 5488 +f 6044 5488 5776 +f 5784 5440 5232 +f 5784 5232 5488 +f 5440 5192 4908 +f 5440 4908 5232 +f 5192 4796 4620 +f 5192 4620 4908 +f 4796 4532 4288 +f 4796 4288 4620 +f 4532 4152 3944 +f 4532 3944 4288 +f 4152 3808 3680 +f 4152 3680 3944 +f 3808 3388 3220 +f 3808 3220 3680 +f 3388 2996 2916 +f 3388 2916 3220 +f 2996 2576 2424 +f 2996 2424 2916 +f 2576 2128 2048 +f 2576 2048 2424 +f 2128 1644 1540 +f 2128 1540 2048 +f 1644 1060 1044 +f 1644 1044 1540 +f 1043 1539 1435 +f 1043 1435 995 +f 1539 2047 1975 +f 1539 1975 1435 +f 2047 2423 2303 +f 2047 2303 1975 +f 2423 2915 2811 +f 2423 2811 2303 +f 2915 3219 3067 +f 2915 3067 2811 +f 3219 3679 3419 +f 3219 3419 3067 +f 3679 3943 3775 +f 3679 3775 3419 +f 3943 4287 4039 +f 3943 4039 3775 +f 4287 4619 4423 +f 4287 4423 4039 +f 4619 4907 4643 +f 4619 4643 4423 +f 4907 5231 4923 +f 4907 4923 4643 +f 5231 5487 5223 +f 5231 5223 4923 +f 5487 5775 5431 +f 5487 5431 5223 +f 5775 5987 5679 +f 5775 5679 5431 +f 5987 6227 5939 +f 5987 5939 5679 +f 6227 6511 6115 +f 6227 6115 5939 +f 6511 6695 6395 +f 6511 6395 6115 +f 6695 6935 6599 +f 6695 6599 6395 +f 6935 7163 6751 +f 6935 6751 6599 +f 7163 7323 6991 +f 7163 6991 6751 +f 7323 7539 7179 +f 7323 7179 6991 +f 7539 7743 7299 +f 7539 7299 7179 +f 7743 7863 7467 +f 7743 7467 7299 +f 7863 8039 7671 +f 7863 7671 7467 +f 8039 8235 7799 +f 8039 7799 7671 +f 8235 8347 7927 +f 8235 7927 7799 +f 8347 8499 8071 +f 8347 8071 7927 +f 8499 8635 8211 +f 8499 8211 8071 +f 8635 8767 8323 +f 8635 8323 8211 +f 8767 8863 8395 +f 8767 8395 8323 +f 8863 8943 8531 +f 8863 8531 8395 +f 8943 9071 8611 +f 8943 8611 8531 +f 9071 9159 8735 +f 9071 8735 8611 +f 9159 9259 8807 +f 9159 8807 8735 +f 9259 9331 8855 +f 9259 8855 8807 +f 9331 9379 8911 +f 9331 8911 8855 +f 9379 9419 8935 +f 9379 8935 8911 +f 9419 9459 9015 +f 9419 9015 8935 +f 9459 9515 9047 +f 9459 9047 9015 +f 9515 9563 9079 +f 9515 9079 9047 +f 9563 9587 9103 +f 9563 9103 9079 +f 9587 9611 9119 +f 9587 9119 9103 +f 9611 9619 9135 +f 9611 9135 9119 +f 9619 9620 9136 +f 9619 9136 9135 +f 9620 9612 9120 +f 9620 9120 9136 +f 9612 9588 9104 +f 9612 9104 9120 +f 9588 9564 9080 +f 9588 9080 9104 +f 9564 9516 9048 +f 9564 9048 9080 +f 9516 9460 9016 +f 9516 9016 9048 +f 9460 9420 8936 +f 9460 8936 9016 +f 9420 9380 8912 +f 9420 8912 8936 +f 9380 9332 8856 +f 9380 8856 8912 +f 9332 9260 8808 +f 9332 8808 8856 +f 9260 9160 8736 +f 9260 8736 8808 +f 9160 9072 8612 +f 9160 8612 8736 +f 9072 8944 8532 +f 9072 8532 8612 +f 8944 8864 8396 +f 8944 8396 8532 +f 8864 8768 8324 +f 8864 8324 8396 +f 8768 8636 8212 +f 8768 8212 8324 +f 8636 8500 8072 +f 8636 8072 8212 +f 8500 8348 7928 +f 8500 7928 8072 +f 8348 8236 7800 +f 8348 7800 7928 +f 8236 8040 7672 +f 8236 7672 7800 +f 8040 7864 7468 +f 8040 7468 7672 +f 7864 7744 7300 +f 7864 7300 7468 +f 7744 7540 7180 +f 7744 7180 7300 +f 7540 7324 6992 +f 7540 6992 7180 +f 7324 7164 6752 +f 7324 6752 6992 +f 7164 6936 6600 +f 7164 6600 6752 +f 6936 6696 6396 +f 6936 6396 6600 +f 6696 6512 6116 +f 6696 6116 6396 +f 6512 6228 5940 +f 6512 5940 6116 +f 6228 5988 5680 +f 6228 5680 5940 +f 5988 5776 5432 +f 5988 5432 5680 +f 5776 5488 5224 +f 5776 5224 5432 +f 5488 5232 4924 +f 5488 4924 5224 +f 5232 4908 4644 +f 5232 4644 4924 +f 4908 4620 4424 +f 4908 4424 4644 +f 4620 4288 4040 +f 4620 4040 4424 +f 4288 3944 3776 +f 4288 3776 4040 +f 3944 3680 3420 +f 3944 3420 3776 +f 3680 3220 3068 +f 3680 3068 3420 +f 3220 2916 2812 +f 3220 2812 3068 +f 2916 2424 2304 +f 2916 2304 2812 +f 2424 2048 1976 +f 2424 1976 2304 +f 2048 1540 1436 +f 2048 1436 1976 +f 1540 1044 996 +f 1540 996 1436 +f 995 1435 1371 +f 995 1371 979 +f 1435 1975 1927 +f 1435 1927 1371 +f 1975 2303 2191 +f 1975 2191 1927 +f 2303 2811 2551 +f 2303 2551 2191 +f 2811 3067 2963 +f 2811 2963 2551 +f 3067 3419 3203 +f 3067 3203 2963 +f 3419 3775 3579 +f 3419 3579 3203 +f 3775 4039 3839 +f 3775 3839 3579 +f 4039 4423 4095 +f 4039 4095 3839 +f 4423 4643 4459 +f 4423 4459 4095 +f 4643 4923 4635 +f 4643 4635 4459 +f 4923 5223 4899 +f 4923 4899 4635 +f 5223 5431 5183 +f 5223 5183 4899 +f 5431 5679 5367 +f 5431 5367 5183 +f 5679 5939 5575 +f 5679 5575 5367 +f 5939 6115 5851 +f 5939 5851 5575 +f 6115 6395 6027 +f 6115 6027 5851 +f 6395 6599 6203 +f 6395 6203 6027 +f 6599 6751 6435 +f 6599 6435 6203 +f 6751 6991 6607 +f 6751 6607 6435 +f 6991 7179 6727 +f 6991 6727 6607 +f 7179 7299 6903 +f 7179 6903 6727 +f 7299 7467 7107 +f 7299 7107 6903 +f 7467 7671 7227 +f 7467 7227 7107 +f 7671 7799 7363 +f 7671 7363 7227 +f 7799 7927 7499 +f 7799 7499 7363 +f 7927 8071 7655 +f 7927 7655 7499 +f 8071 8211 7767 +f 8071 7767 7655 +f 8211 8323 7839 +f 8211 7839 7767 +f 8323 8395 7967 +f 8323 7967 7839 +f 8395 8531 8047 +f 8395 8047 7967 +f 8531 8611 8175 +f 8531 8175 8047 +f 8611 8735 8267 +f 8611 8267 8175 +f 8735 8807 8315 +f 8735 8315 8267 +f 8807 8855 8363 +f 8807 8363 8315 +f 8855 8911 8403 +f 8855 8403 8363 +f 8911 8935 8475 +f 8911 8475 8403 +f 8935 9015 8523 +f 8935 8523 8475 +f 9015 9047 8547 +f 9015 8547 8523 +f 9047 9079 8571 +f 9047 8571 8547 +f 9079 9103 8603 +f 9079 8603 8571 +f 9103 9119 8627 +f 9103 8627 8603 +f 9119 9135 8643 +f 9119 8643 8627 +f 9135 9136 8644 +f 9135 8644 8643 +f 9136 9120 8628 +f 9136 8628 8644 +f 9120 9104 8604 +f 9120 8604 8628 +f 9104 9080 8572 +f 9104 8572 8604 +f 9080 9048 8548 +f 9080 8548 8572 +f 9048 9016 8524 +f 9048 8524 8548 +f 9016 8936 8476 +f 9016 8476 8524 +f 8936 8912 8404 +f 8936 8404 8476 +f 8912 8856 8364 +f 8912 8364 8404 +f 8856 8808 8316 +f 8856 8316 8364 +f 8808 8736 8268 +f 8808 8268 8316 +f 8736 8612 8176 +f 8736 8176 8268 +f 8612 8532 8048 +f 8612 8048 8176 +f 8532 8396 7968 +f 8532 7968 8048 +f 8396 8324 7840 +f 8396 7840 7968 +f 8324 8212 7768 +f 8324 7768 7840 +f 8212 8072 7656 +f 8212 7656 7768 +f 8072 7928 7500 +f 8072 7500 7656 +f 7928 7800 7364 +f 7928 7364 7500 +f 7800 7672 7228 +f 7800 7228 7364 +f 7672 7468 7108 +f 7672 7108 7228 +f 7468 7300 6904 +f 7468 6904 7108 +f 7300 7180 6728 +f 7300 6728 6904 +f 7180 6992 6608 +f 7180 6608 6728 +f 6992 6752 6436 +f 6992 6436 6608 +f 6752 6600 6204 +f 6752 6204 6436 +f 6600 6396 6028 +f 6600 6028 6204 +f 6396 6116 5852 +f 6396 5852 6028 +f 6116 5940 5576 +f 6116 5576 5852 +f 5940 5680 5368 +f 5940 5368 5576 +f 5680 5432 5184 +f 5680 5184 5368 +f 5432 5224 4900 +f 5432 4900 5184 +f 5224 4924 4636 +f 5224 4636 4900 +f 4924 4644 4460 +f 4924 4460 4636 +f 4644 4424 4096 +f 4644 4096 4460 +f 4424 4040 3840 +f 4424 3840 4096 +f 4040 3776 3580 +f 4040 3580 3840 +f 3776 3420 3204 +f 3776 3204 3580 +f 3420 3068 2964 +f 3420 2964 3204 +f 3068 2812 2552 +f 3068 2552 2964 +f 2812 2304 2192 +f 2812 2192 2552 +f 2304 1976 1928 +f 2304 1928 2192 +f 1976 1436 1372 +f 1976 1372 1928 +f 1436 996 980 +f 1436 980 1372 +f 979 1371 1275 +f 979 1275 947 +f 1371 1927 1847 +f 1371 1847 1275 +f 1927 2191 2079 +f 1927 2079 1847 +f 2191 2551 2391 +f 2191 2391 2079 +f 2551 2963 2827 +f 2551 2827 2391 +f 2963 3203 3043 +f 2963 3043 2827 +f 3203 3579 3299 +f 3203 3299 3043 +f 3579 3839 3663 +f 3579 3663 3299 +f 3839 4095 3879 +f 3839 3879 3663 +f 4095 4459 4087 +f 4095 4087 3879 +f 4459 4635 4415 +f 4459 4415 4087 +f 4635 4899 4611 +f 4635 4611 4415 +f 4899 5183 4787 +f 4899 4787 4611 +f 5183 5367 5043 +f 5183 5043 4787 +f 5367 5575 5271 +f 5367 5271 5043 +f 5575 5851 5447 +f 5575 5447 5271 +f 5851 6027 5639 +f 5851 5639 5447 +f 6027 6203 5875 +f 6027 5875 5639 +f 6203 6435 6003 +f 6203 6003 5875 +f 6435 6607 6147 +f 6435 6147 6003 +f 6607 6727 6339 +f 6607 6339 6147 +f 6727 6903 6527 +f 6727 6527 6339 +f 6903 7107 6647 +f 6903 6647 6527 +f 7107 7227 6767 +f 7107 6767 6647 +f 7227 7363 6895 +f 7227 6895 6767 +f 7363 7499 7083 +f 7363 7083 6895 +f 7499 7655 7203 +f 7499 7203 7083 +f 7655 7767 7275 +f 7655 7275 7203 +f 7767 7839 7371 +f 7767 7371 7275 +f 7839 7967 7451 +f 7839 7451 7371 +f 7967 8047 7587 +f 7967 7587 7451 +f 8047 8175 7679 +f 8047 7679 7587 +f 8175 8267 7759 +f 8175 7759 7679 +f 8267 8315 7791 +f 8267 7791 7759 +f 8315 8363 7847 +f 8315 7847 7791 +f 8363 8403 7919 +f 8363 7919 7847 +f 8403 8475 7975 +f 8403 7975 7919 +f 8475 8523 7999 +f 8475 7999 7975 +f 8523 8547 8015 +f 8523 8015 7999 +f 8547 8571 8063 +f 8547 8063 8015 +f 8571 8603 8103 +f 8571 8103 8063 +f 8603 8627 8127 +f 8603 8127 8103 +f 8627 8643 8135 +f 8627 8135 8127 +f 8643 8644 8136 +f 8643 8136 8135 +f 8644 8628 8128 +f 8644 8128 8136 +f 8628 8604 8104 +f 8628 8104 8128 +f 8604 8572 8064 +f 8604 8064 8104 +f 8572 8548 8016 +f 8572 8016 8064 +f 8548 8524 8000 +f 8548 8000 8016 +f 8524 8476 7976 +f 8524 7976 8000 +f 8476 8404 7920 +f 8476 7920 7976 +f 8404 8364 7848 +f 8404 7848 7920 +f 8364 8316 7792 +f 8364 7792 7848 +f 8316 8268 7760 +f 8316 7760 7792 +f 8268 8176 7680 +f 8268 7680 7760 +f 8176 8048 7588 +f 8176 7588 7680 +f 8048 7968 7452 +f 8048 7452 7588 +f 7968 7840 7372 +f 7968 7372 7452 +f 7840 7768 7276 +f 7840 7276 7372 +f 7768 7656 7204 +f 7768 7204 7276 +f 7656 7500 7084 +f 7656 7084 7204 +f 7500 7364 6896 +f 7500 6896 7084 +f 7364 7228 6768 +f 7364 6768 6896 +f 7228 7108 6648 +f 7228 6648 6768 +f 7108 6904 6528 +f 7108 6528 6648 +f 6904 6728 6340 +f 6904 6340 6528 +f 6728 6608 6148 +f 6728 6148 6340 +f 6608 6436 6004 +f 6608 6004 6148 +f 6436 6204 5876 +f 6436 5876 6004 +f 6204 6028 5640 +f 6204 5640 5876 +f 6028 5852 5448 +f 6028 5448 5640 +f 5852 5576 5272 +f 5852 5272 5448 +f 5576 5368 5044 +f 5576 5044 5272 +f 5368 5184 4788 +f 5368 4788 5044 +f 5184 4900 4612 +f 5184 4612 4788 +f 4900 4636 4416 +f 4900 4416 4612 +f 4636 4460 4088 +f 4636 4088 4416 +f 4460 4096 3880 +f 4460 3880 4088 +f 4096 3840 3664 +f 4096 3664 3880 +f 3840 3580 3300 +f 3840 3300 3664 +f 3580 3204 3044 +f 3580 3044 3300 +f 3204 2964 2828 +f 3204 2828 3044 +f 2964 2552 2392 +f 2964 2392 2828 +f 2552 2192 2080 +f 2552 2080 2392 +f 2192 1928 1848 +f 2192 1848 2080 +f 1928 1372 1276 +f 1928 1276 1848 +f 1372 980 948 +f 1372 948 1276 +f 947 1275 1211 +f 947 1211 923 +f 1275 1847 1611 +f 1275 1611 1211 +f 1847 2079 2007 +f 1847 2007 1611 +f 2079 2391 2239 +f 2079 2239 2007 +f 2391 2827 2503 +f 2391 2503 2239 +f 2827 3043 2875 +f 2827 2875 2503 +f 3043 3299 3091 +f 3043 3091 2875 +f 3299 3663 3315 +f 3299 3315 3091 +f 3663 3879 3655 +f 3663 3655 3315 +f 3879 4087 3831 +f 3879 3831 3655 +f 4087 4415 4031 +f 4087 4031 3831 +f 4415 4611 4279 +f 4415 4279 4031 +f 4611 4787 4523 +f 4611 4523 4279 +f 4787 5043 4691 +f 4787 4691 4523 +f 5043 5271 4867 +f 5043 4867 4691 +f 5271 5447 5115 +f 5271 5115 4867 +f 5447 5639 5287 +f 5447 5287 5115 +f 5639 5875 5399 +f 5639 5399 5287 +f 5875 6003 5567 +f 5875 5567 5399 +f 6003 6147 5799 +f 6003 5799 5567 +f 6147 6339 5923 +f 6147 5923 5799 +f 6339 6527 6059 +f 6339 6059 5923 +f 6527 6647 6179 +f 6527 6179 6059 +f 6647 6767 6307 +f 6647 6307 6179 +f 6767 6895 6487 +f 6767 6487 6307 +f 6895 7083 6575 +f 6895 6575 6487 +f 7083 7203 6671 +f 7083 6671 6575 +f 7203 7275 6759 +f 7203 6759 6671 +f 7275 7371 6863 +f 7275 6863 6759 +f 7371 7451 6983 +f 7371 6983 6863 +f 7451 7587 7091 +f 7451 7091 6983 +f 7587 7679 7155 +f 7587 7155 7091 +f 7679 7759 7219 +f 7679 7219 7155 +f 7759 7791 7259 +f 7759 7259 7219 +f 7791 7847 7307 +f 7791 7307 7259 +f 7847 7919 7379 +f 7847 7379 7307 +f 7919 7975 7427 +f 7919 7427 7379 +f 7975 7999 7443 +f 7975 7443 7427 +f 7999 8015 7483 +f 7999 7483 7443 +f 8015 8063 7531 +f 8015 7531 7483 +f 8063 8103 7563 +f 8063 7563 7531 +f 8103 8127 7571 +f 8103 7571 7563 +f 8127 8135 7579 +f 8127 7579 7571 +f 8135 8136 7580 +f 8135 7580 7579 +f 8136 8128 7572 +f 8136 7572 7580 +f 8128 8104 7564 +f 8128 7564 7572 +f 8104 8064 7532 +f 8104 7532 7564 +f 8064 8016 7484 +f 8064 7484 7532 +f 8016 8000 7444 +f 8016 7444 7484 +f 8000 7976 7428 +f 8000 7428 7444 +f 7976 7920 7380 +f 7976 7380 7428 +f 7920 7848 7308 +f 7920 7308 7380 +f 7848 7792 7260 +f 7848 7260 7308 +f 7792 7760 7220 +f 7792 7220 7260 +f 7760 7680 7156 +f 7760 7156 7220 +f 7680 7588 7092 +f 7680 7092 7156 +f 7588 7452 6984 +f 7588 6984 7092 +f 7452 7372 6864 +f 7452 6864 6984 +f 7372 7276 6760 +f 7372 6760 6864 +f 7276 7204 6672 +f 7276 6672 6760 +f 7204 7084 6576 +f 7204 6576 6672 +f 7084 6896 6488 +f 7084 6488 6576 +f 6896 6768 6308 +f 6896 6308 6488 +f 6768 6648 6180 +f 6768 6180 6308 +f 6648 6528 6060 +f 6648 6060 6180 +f 6528 6340 5924 +f 6528 5924 6060 +f 6340 6148 5800 +f 6340 5800 5924 +f 6148 6004 5568 +f 6148 5568 5800 +f 6004 5876 5400 +f 6004 5400 5568 +f 5876 5640 5288 +f 5876 5288 5400 +f 5640 5448 5116 +f 5640 5116 5288 +f 5448 5272 4868 +f 5448 4868 5116 +f 5272 5044 4692 +f 5272 4692 4868 +f 5044 4788 4524 +f 5044 4524 4692 +f 4788 4612 4280 +f 4788 4280 4524 +f 4612 4416 4032 +f 4612 4032 4280 +f 4416 4088 3832 +f 4416 3832 4032 +f 4088 3880 3656 +f 4088 3656 3832 +f 3880 3664 3316 +f 3880 3316 3656 +f 3664 3300 3092 +f 3664 3092 3316 +f 3300 3044 2876 +f 3300 2876 3092 +f 3044 2828 2504 +f 3044 2504 2876 +f 2828 2392 2240 +f 2828 2240 2504 +f 2392 2080 2008 +f 2392 2008 2240 +f 2080 1848 1612 +f 2080 1612 2008 +f 1848 1276 1212 +f 1848 1212 1612 +f 1276 948 924 +f 1276 924 1212 +f 923 1211 1139 +f 923 1139 891 +f 1211 1611 1451 +f 1211 1451 1139 +f 1611 2007 1895 +f 1611 1895 1451 +f 2007 2239 2095 +f 2007 2095 1895 +f 2239 2503 2319 +f 2239 2319 2095 +f 2503 2875 2623 +f 2503 2623 2319 +f 2875 3091 2899 +f 2875 2899 2623 +f 3091 3315 3083 +f 3091 3083 2899 +f 3315 3655 3291 +f 3315 3291 3083 +f 3655 3831 3563 +f 3655 3563 3291 +f 3831 4031 3767 +f 3831 3767 3563 +f 4031 4279 3935 +f 4031 3935 3767 +f 4279 4523 4143 +f 4279 4143 3935 +f 4523 4691 4367 +f 4523 4367 4143 +f 4691 4867 4539 +f 4691 4539 4367 +f 4867 5115 4667 +f 4867 4667 4539 +f 5115 5287 4819 +f 5115 4819 4667 +f 5287 5399 5003 +f 5287 5003 4819 +f 5399 5567 5207 +f 5399 5207 5003 +f 5567 5799 5319 +f 5567 5319 5207 +f 5799 5923 5455 +f 5799 5455 5319 +f 5923 6059 5551 +f 5923 5551 5455 +f 6059 6179 5711 +f 6059 5711 5551 +f 6179 6307 5891 +f 6179 5891 5711 +f 6307 6487 5963 +f 6307 5963 5891 +f 6487 6575 6067 +f 6487 6067 5963 +f 6575 6671 6139 +f 6575 6139 6067 +f 6671 6759 6251 +f 6671 6251 6139 +f 6759 6863 6363 +f 6759 6363 6251 +f 6863 6983 6479 +f 6863 6479 6363 +f 6983 7091 6543 +f 6983 6543 6479 +f 7091 7155 6623 +f 7091 6623 6543 +f 7155 7219 6663 +f 7155 6663 6623 +f 7219 7259 6703 +f 7219 6703 6663 +f 7259 7307 6743 +f 7259 6743 6703 +f 7307 7379 6823 +f 7307 6823 6743 +f 7379 7427 6855 +f 7379 6855 6823 +f 7427 7443 6879 +f 7427 6879 6855 +f 7443 7483 6911 +f 7443 6911 6879 +f 7483 7531 6959 +f 7483 6959 6911 +f 7531 7563 6975 +f 7531 6975 6959 +f 7563 7571 7007 +f 7563 7007 6975 +f 7571 7579 7015 +f 7571 7015 7007 +f 7579 7580 7016 +f 7579 7016 7015 +f 7580 7572 7008 +f 7580 7008 7016 +f 7572 7564 6976 +f 7572 6976 7008 +f 7564 7532 6960 +f 7564 6960 6976 +f 7532 7484 6912 +f 7532 6912 6960 +f 7484 7444 6880 +f 7484 6880 6912 +f 7444 7428 6856 +f 7444 6856 6880 +f 7428 7380 6824 +f 7428 6824 6856 +f 7380 7308 6744 +f 7380 6744 6824 +f 7308 7260 6704 +f 7308 6704 6744 +f 7260 7220 6664 +f 7260 6664 6704 +f 7220 7156 6624 +f 7220 6624 6664 +f 7156 7092 6544 +f 7156 6544 6624 +f 7092 6984 6480 +f 7092 6480 6544 +f 6984 6864 6364 +f 6984 6364 6480 +f 6864 6760 6252 +f 6864 6252 6364 +f 6760 6672 6140 +f 6760 6140 6252 +f 6672 6576 6068 +f 6672 6068 6140 +f 6576 6488 5964 +f 6576 5964 6068 +f 6488 6308 5892 +f 6488 5892 5964 +f 6308 6180 5712 +f 6308 5712 5892 +f 6180 6060 5552 +f 6180 5552 5712 +f 6060 5924 5456 +f 6060 5456 5552 +f 5924 5800 5320 +f 5924 5320 5456 +f 5800 5568 5208 +f 5800 5208 5320 +f 5568 5400 5004 +f 5568 5004 5208 +f 5400 5288 4820 +f 5400 4820 5004 +f 5288 5116 4668 +f 5288 4668 4820 +f 5116 4868 4540 +f 5116 4540 4668 +f 4868 4692 4368 +f 4868 4368 4540 +f 4692 4524 4144 +f 4692 4144 4368 +f 4524 4280 3936 +f 4524 3936 4144 +f 4280 4032 3768 +f 4280 3768 3936 +f 4032 3832 3564 +f 4032 3564 3768 +f 3832 3656 3292 +f 3832 3292 3564 +f 3656 3316 3084 +f 3656 3084 3292 +f 3316 3092 2900 +f 3316 2900 3084 +f 3092 2876 2624 +f 3092 2624 2900 +f 2876 2504 2320 +f 2876 2320 2624 +f 2504 2240 2096 +f 2504 2096 2320 +f 2240 2008 1896 +f 2240 1896 2096 +f 2008 1612 1452 +f 2008 1452 1896 +f 1612 1212 1140 +f 1612 1140 1452 +f 1212 924 892 +f 1212 892 1140 +f 891 1139 1075 +f 891 1075 875 +f 1139 1451 1339 +f 1139 1339 1075 +f 1451 1895 1707 +f 1451 1707 1339 +f 1895 2095 1959 +f 1895 1959 1707 +f 2095 2319 2159 +f 2095 2159 1959 +f 2319 2623 2359 +f 2319 2359 2159 +f 2623 2899 2615 +f 2623 2615 2359 +f 2899 3083 2867 +f 2899 2867 2615 +f 3083 3291 3035 +f 3083 3035 2867 +f 3291 3563 3195 +f 3291 3195 3035 +f 3563 3767 3411 +f 3563 3411 3195 +f 3767 3935 3671 +f 3767 3671 3411 +f 3935 4143 3799 +f 3935 3799 3671 +f 4143 4367 3951 +f 4143 3951 3799 +f 4367 4539 4079 +f 4367 4079 3951 +f 4539 4667 4263 +f 4539 4263 4079 +f 4667 4819 4475 +f 4667 4475 4263 +f 4819 5003 4571 +f 4819 4571 4475 +f 5003 5207 4715 +f 5003 4715 4571 +f 5207 5319 4811 +f 5207 4811 4715 +f 5319 5455 4963 +f 5319 4963 4811 +f 5455 5551 5155 +f 5455 5155 4963 +f 5551 5711 5247 +f 5551 5247 5155 +f 5711 5891 5335 +f 5711 5335 5247 +f 5891 5963 5407 +f 5891 5407 5335 +f 5963 6067 5511 +f 5963 5511 5407 +f 6067 6139 5607 +f 6067 5607 5511 +f 6139 6251 5719 +f 6139 5719 5607 +f 6251 6363 5843 +f 6251 5843 5719 +f 6363 6479 5907 +f 6363 5907 5843 +f 6479 6543 5955 +f 6479 5955 5907 +f 6543 6623 6019 +f 6543 6019 5955 +f 6623 6663 6091 +f 6623 6091 6019 +f 6663 6703 6107 +f 6663 6107 6091 +f 6703 6743 6163 +f 6703 6163 6107 +f 6743 6823 6219 +f 6743 6219 6163 +f 6823 6855 6259 +f 6823 6259 6219 +f 6855 6879 6299 +f 6855 6299 6259 +f 6879 6911 6315 +f 6879 6315 6299 +f 6911 6959 6347 +f 6911 6347 6315 +f 6959 6975 6379 +f 6959 6379 6347 +f 6975 7007 6403 +f 6975 6403 6379 +f 7007 7015 6419 +f 7007 6419 6403 +f 7015 7016 6420 +f 7015 6420 6419 +f 7016 7008 6404 +f 7016 6404 6420 +f 7008 6976 6380 +f 7008 6380 6404 +f 6976 6960 6348 +f 6976 6348 6380 +f 6960 6912 6316 +f 6960 6316 6348 +f 6912 6880 6300 +f 6912 6300 6316 +f 6880 6856 6260 +f 6880 6260 6300 +f 6856 6824 6220 +f 6856 6220 6260 +f 6824 6744 6164 +f 6824 6164 6220 +f 6744 6704 6108 +f 6744 6108 6164 +f 6704 6664 6092 +f 6704 6092 6108 +f 6664 6624 6020 +f 6664 6020 6092 +f 6624 6544 5956 +f 6624 5956 6020 +f 6544 6480 5908 +f 6544 5908 5956 +f 6480 6364 5844 +f 6480 5844 5908 +f 6364 6252 5720 +f 6364 5720 5844 +f 6252 6140 5608 +f 6252 5608 5720 +f 6140 6068 5512 +f 6140 5512 5608 +f 6068 5964 5408 +f 6068 5408 5512 +f 5964 5892 5336 +f 5964 5336 5408 +f 5892 5712 5248 +f 5892 5248 5336 +f 5712 5552 5156 +f 5712 5156 5248 +f 5552 5456 4964 +f 5552 4964 5156 +f 5456 5320 4812 +f 5456 4812 4964 +f 5320 5208 4716 +f 5320 4716 4812 +f 5208 5004 4572 +f 5208 4572 4716 +f 5004 4820 4476 +f 5004 4476 4572 +f 4820 4668 4264 +f 4820 4264 4476 +f 4668 4540 4080 +f 4668 4080 4264 +f 4540 4368 3952 +f 4540 3952 4080 +f 4368 4144 3800 +f 4368 3800 3952 +f 4144 3936 3672 +f 4144 3672 3800 +f 3936 3768 3412 +f 3936 3412 3672 +f 3768 3564 3196 +f 3768 3196 3412 +f 3564 3292 3036 +f 3564 3036 3196 +f 3292 3084 2868 +f 3292 2868 3036 +f 3084 2900 2616 +f 3084 2616 2868 +f 2900 2624 2360 +f 2900 2360 2616 +f 2624 2320 2160 +f 2624 2160 2360 +f 2320 2096 1960 +f 2320 1960 2160 +f 2096 1896 1708 +f 2096 1708 1960 +f 1896 1452 1340 +f 1896 1340 1708 +f 1452 1140 1076 +f 1452 1076 1340 +f 1140 892 876 +f 1140 876 1076 +f 875 1075 1011 +f 875 1011 843 +f 1075 1339 1227 +f 1075 1227 1011 +f 1339 1707 1483 +f 1339 1483 1227 +f 1707 1959 1863 +f 1707 1863 1483 +f 1959 2159 2015 +f 1959 2015 1863 +f 2159 2359 2151 +f 2159 2151 2015 +f 2359 2615 2311 +f 2359 2311 2151 +f 2615 2867 2495 +f 2615 2495 2311 +f 2867 3035 2819 +f 2867 2819 2495 +f 3035 3195 2955 +f 3035 2955 2819 +f 3195 3411 3059 +f 3195 3059 2955 +f 3411 3671 3211 +f 3411 3211 3059 +f 3671 3799 3379 +f 3671 3379 3211 +f 3799 3951 3611 +f 3799 3611 3379 +f 3951 4079 3735 +f 3951 3735 3611 +f 4079 4263 3855 +f 4079 3855 3735 +f 4263 4475 3967 +f 4263 3967 3855 +f 4475 4571 4063 +f 4475 4063 3967 +f 4571 4715 4215 +f 4571 4215 4063 +f 4715 4811 4407 +f 4715 4407 4215 +f 4811 4963 4507 +f 4811 4507 4407 +f 4963 5155 4587 +f 4963 4587 4507 +f 5155 5247 4675 +f 5155 4675 4587 +f 5247 5335 4763 +f 5247 4763 4675 +f 5335 5407 4859 +f 5335 4859 4763 +f 5407 5511 4955 +f 5407 4955 4859 +f 5511 5607 5091 +f 5511 5091 4955 +f 5607 5719 5175 +f 5607 5175 5091 +f 5719 5843 5239 +f 5719 5239 5175 +f 5843 5907 5303 +f 5843 5303 5239 +f 5907 5955 5351 +f 5907 5351 5303 +f 5955 6019 5383 +f 5955 5383 5351 +f 6019 6091 5479 +f 6019 5479 5383 +f 6091 6107 5503 +f 6091 5503 5479 +f 6107 6163 5535 +f 6107 5535 5503 +f 6163 6219 5591 +f 6163 5591 5535 +f 6219 6259 5623 +f 6219 5623 5591 +f 6259 6299 5663 +f 6259 5663 5623 +f 6299 6315 5671 +f 6299 5671 5663 +f 6315 6347 5703 +f 6315 5703 5671 +f 6347 6379 5743 +f 6347 5743 5703 +f 6379 6403 5759 +f 6379 5759 5743 +f 6403 6419 5767 +f 6403 5767 5759 +f 6419 6420 5768 +f 6419 5768 5767 +f 6420 6404 5760 +f 6420 5760 5768 +f 6404 6380 5744 +f 6404 5744 5760 +f 6380 6348 5704 +f 6380 5704 5744 +f 6348 6316 5672 +f 6348 5672 5704 +f 6316 6300 5664 +f 6316 5664 5672 +f 6300 6260 5624 +f 6300 5624 5664 +f 6260 6220 5592 +f 6260 5592 5624 +f 6220 6164 5536 +f 6220 5536 5592 +f 6164 6108 5504 +f 6164 5504 5536 +f 6108 6092 5480 +f 6108 5480 5504 +f 6092 6020 5384 +f 6092 5384 5480 +f 6020 5956 5352 +f 6020 5352 5384 +f 5956 5908 5304 +f 5956 5304 5352 +f 5908 5844 5240 +f 5908 5240 5304 +f 5844 5720 5176 +f 5844 5176 5240 +f 5720 5608 5092 +f 5720 5092 5176 +f 5608 5512 4956 +f 5608 4956 5092 +f 5512 5408 4860 +f 5512 4860 4956 +f 5408 5336 4764 +f 5408 4764 4860 +f 5336 5248 4676 +f 5336 4676 4764 +f 5248 5156 4588 +f 5248 4588 4676 +f 5156 4964 4508 +f 5156 4508 4588 +f 4964 4812 4408 +f 4964 4408 4508 +f 4812 4716 4216 +f 4812 4216 4408 +f 4716 4572 4064 +f 4716 4064 4216 +f 4572 4476 3968 +f 4572 3968 4064 +f 4476 4264 3856 +f 4476 3856 3968 +f 4264 4080 3736 +f 4264 3736 3856 +f 4080 3952 3612 +f 4080 3612 3736 +f 3952 3800 3380 +f 3952 3380 3612 +f 3800 3672 3212 +f 3800 3212 3380 +f 3672 3412 3060 +f 3672 3060 3212 +f 3412 3196 2956 +f 3412 2956 3060 +f 3196 3036 2820 +f 3196 2820 2956 +f 3036 2868 2496 +f 3036 2496 2820 +f 2868 2616 2312 +f 2868 2312 2496 +f 2616 2360 2152 +f 2616 2152 2312 +f 2360 2160 2016 +f 2360 2016 2152 +f 2160 1960 1864 +f 2160 1864 2016 +f 1960 1708 1484 +f 1960 1484 1864 +f 1708 1340 1228 +f 1708 1228 1484 +f 1340 1076 1012 +f 1340 1012 1228 +f 1076 876 844 +f 1076 844 1012 +f 843 1011 963 +f 843 963 827 +f 1011 1227 1107 +f 1011 1107 963 +f 1227 1483 1291 +f 1227 1291 1107 +f 1483 1863 1515 +f 1483 1515 1291 +f 1863 2015 1855 +f 1863 1855 1515 +f 2015 2151 1951 +f 2015 1951 1855 +f 2151 2311 2087 +f 2151 2087 1951 +f 2311 2495 2231 +f 2311 2231 2087 +f 2495 2819 2383 +f 2495 2383 2231 +f 2819 2955 2543 +f 2819 2543 2383 +f 2955 3059 2803 +f 2955 2803 2543 +f 3059 3211 2907 +f 3059 2907 2803 +f 3211 3379 2987 +f 3211 2987 2907 +f 3379 3611 3131 +f 3379 3131 2987 +f 3611 3735 3235 +f 3611 3235 3131 +f 3735 3855 3363 +f 3735 3363 3235 +f 3855 3967 3499 +f 3855 3499 3363 +f 3967 4063 3703 +f 3967 3703 3499 +f 4063 4215 3751 +f 4063 3751 3703 +f 4215 4407 3847 +f 4215 3847 3751 +f 4407 4507 3911 +f 4407 3911 3847 +f 4507 4587 4007 +f 4507 4007 3911 +f 4587 4675 4119 +f 4587 4119 4007 +f 4675 4763 4191 +f 4675 4191 4119 +f 4763 4859 4311 +f 4763 4311 4191 +f 4859 4955 4451 +f 4859 4451 4311 +f 4955 5091 4491 +f 4955 4491 4451 +f 5091 5175 4555 +f 5091 4555 4491 +f 5175 5239 4603 +f 5175 4603 4555 +f 5239 5303 4651 +f 5239 4651 4603 +f 5303 5351 4723 +f 5303 4723 4651 +f 5351 5383 4747 +f 5351 4747 4723 +f 5383 5479 4779 +f 5383 4779 4747 +f 5479 5503 4843 +f 5479 4843 4779 +f 5503 5535 4891 +f 5503 4891 4843 +f 5535 5591 4931 +f 5535 4931 4891 +f 5591 5623 4947 +f 5591 4947 4931 +f 5623 5663 4995 +f 5623 4995 4947 +f 5663 5671 5011 +f 5663 5011 4995 +f 5671 5703 5035 +f 5671 5035 5011 +f 5703 5743 5067 +f 5703 5067 5035 +f 5743 5759 5075 +f 5743 5075 5067 +f 5759 5767 5083 +f 5759 5083 5075 +f 5767 5768 5084 +f 5767 5084 5083 +f 5768 5760 5076 +f 5768 5076 5084 +f 5760 5744 5068 +f 5760 5068 5076 +f 5744 5704 5036 +f 5744 5036 5068 +f 5704 5672 5012 +f 5704 5012 5036 +f 5672 5664 4996 +f 5672 4996 5012 +f 5664 5624 4948 +f 5664 4948 4996 +f 5624 5592 4932 +f 5624 4932 4948 +f 5592 5536 4892 +f 5592 4892 4932 +f 5536 5504 4844 +f 5536 4844 4892 +f 5504 5480 4780 +f 5504 4780 4844 +f 5480 5384 4748 +f 5480 4748 4780 +f 5384 5352 4724 +f 5384 4724 4748 +f 5352 5304 4652 +f 5352 4652 4724 +f 5304 5240 4604 +f 5304 4604 4652 +f 5240 5176 4556 +f 5240 4556 4604 +f 5176 5092 4492 +f 5176 4492 4556 +f 5092 4956 4452 +f 5092 4452 4492 +f 4956 4860 4312 +f 4956 4312 4452 +f 4860 4764 4192 +f 4860 4192 4312 +f 4764 4676 4120 +f 4764 4120 4192 +f 4676 4588 4008 +f 4676 4008 4120 +f 4588 4508 3912 +f 4588 3912 4008 +f 4508 4408 3848 +f 4508 3848 3912 +f 4408 4216 3752 +f 4408 3752 3848 +f 4216 4064 3704 +f 4216 3704 3752 +f 4064 3968 3500 +f 4064 3500 3704 +f 3968 3856 3364 +f 3968 3364 3500 +f 3856 3736 3236 +f 3856 3236 3364 +f 3736 3612 3132 +f 3736 3132 3236 +f 3612 3380 2988 +f 3612 2988 3132 +f 3380 3212 2908 +f 3380 2908 2988 +f 3212 3060 2804 +f 3212 2804 2908 +f 3060 2956 2544 +f 3060 2544 2804 +f 2956 2820 2384 +f 2956 2384 2544 +f 2820 2496 2232 +f 2820 2232 2384 +f 2496 2312 2088 +f 2496 2088 2232 +f 2312 2152 1952 +f 2312 1952 2088 +f 2152 2016 1856 +f 2152 1856 1952 +f 2016 1864 1516 +f 2016 1516 1856 +f 1864 1484 1292 +f 1864 1292 1516 +f 1484 1228 1108 +f 1484 1108 1292 +f 1228 1012 964 +f 1228 964 1108 +f 1012 844 828 +f 1012 828 964 +f 827 963 907 +f 827 907 803 +f 963 1107 1027 +f 963 1027 907 +f 1107 1291 1147 +f 1107 1147 1027 +f 1291 1515 1283 +f 1291 1283 1147 +f 1515 1855 1467 +f 1515 1467 1283 +f 1855 1951 1699 +f 1855 1699 1467 +f 1951 2087 1887 +f 1951 1887 1699 +f 2087 2231 1999 +f 2087 1999 1887 +f 2231 2383 2071 +f 2231 2071 1999 +f 2383 2543 2183 +f 2383 2183 2071 +f 2543 2803 2295 +f 2543 2295 2183 +f 2803 2907 2415 +f 2803 2415 2295 +f 2907 2987 2567 +f 2907 2567 2415 +f 2987 3131 2751 +f 2987 2751 2567 +f 3131 3235 2851 +f 3131 2851 2751 +f 3235 3363 2939 +f 3235 2939 2851 +f 3363 3499 3003 +f 3363 3003 2939 +f 3499 3703 3099 +f 3499 3099 3003 +f 3703 3751 3163 +f 3703 3163 3099 +f 3751 3847 3259 +f 3751 3259 3163 +f 3847 3911 3339 +f 3847 3339 3259 +f 3911 4007 3451 +f 3911 3451 3339 +f 4007 4119 3555 +f 4007 3555 3451 +f 4119 4191 3687 +f 4119 3687 3555 +f 4191 4311 3719 +f 4191 3719 3687 +f 4311 4451 3783 +f 4311 3783 3719 +f 4451 4491 3815 +f 4451 3815 3783 +f 4491 4555 3887 +f 4491 3887 3815 +f 4555 4603 3903 +f 4555 3903 3887 +f 4603 4651 3983 +f 4603 3983 3903 +f 4651 4723 3999 +f 4651 3999 3983 +f 4723 4747 4047 +f 4723 4047 3999 +f 4747 4779 4111 +f 4747 4111 4047 +f 4779 4843 4159 +f 4779 4159 4111 +f 4843 4891 4175 +f 4843 4175 4159 +f 4891 4931 4199 +f 4891 4199 4175 +f 4931 4947 4239 +f 4931 4239 4199 +f 4947 4995 4255 +f 4947 4255 4239 +f 4995 5011 4295 +f 4995 4295 4255 +f 5011 5035 4319 +f 5011 4319 4295 +f 5035 5067 4343 +f 5035 4343 4319 +f 5067 5075 4351 +f 5067 4351 4343 +f 5075 5083 4359 +f 5075 4359 4351 +f 5083 5084 4360 +f 5083 4360 4359 +f 5084 5076 4352 +f 5084 4352 4360 +f 5076 5068 4344 +f 5076 4344 4352 +f 5068 5036 4320 +f 5068 4320 4344 +f 5036 5012 4296 +f 5036 4296 4320 +f 5012 4996 4256 +f 5012 4256 4296 +f 4996 4948 4240 +f 4996 4240 4256 +f 4948 4932 4200 +f 4948 4200 4240 +f 4932 4892 4176 +f 4932 4176 4200 +f 4892 4844 4160 +f 4892 4160 4176 +f 4844 4780 4112 +f 4844 4112 4160 +f 4780 4748 4048 +f 4780 4048 4112 +f 4748 4724 4000 +f 4748 4000 4048 +f 4724 4652 3984 +f 4724 3984 4000 +f 4652 4604 3904 +f 4652 3904 3984 +f 4604 4556 3888 +f 4604 3888 3904 +f 4556 4492 3816 +f 4556 3816 3888 +f 4492 4452 3784 +f 4492 3784 3816 +f 4452 4312 3720 +f 4452 3720 3784 +f 4312 4192 3688 +f 4312 3688 3720 +f 4192 4120 3556 +f 4192 3556 3688 +f 4120 4008 3452 +f 4120 3452 3556 +f 4008 3912 3340 +f 4008 3340 3452 +f 3912 3848 3260 +f 3912 3260 3340 +f 3848 3752 3164 +f 3848 3164 3260 +f 3752 3704 3100 +f 3752 3100 3164 +f 3704 3500 3004 +f 3704 3004 3100 +f 3500 3364 2940 +f 3500 2940 3004 +f 3364 3236 2852 +f 3364 2852 2940 +f 3236 3132 2752 +f 3236 2752 2852 +f 3132 2988 2568 +f 3132 2568 2752 +f 2988 2908 2416 +f 2988 2416 2568 +f 2908 2804 2296 +f 2908 2296 2416 +f 2804 2544 2184 +f 2804 2184 2296 +f 2544 2384 2072 +f 2544 2072 2184 +f 2384 2232 2000 +f 2384 2000 2072 +f 2232 2088 1888 +f 2232 1888 2000 +f 2088 1952 1700 +f 2088 1700 1888 +f 1952 1856 1468 +f 1952 1468 1700 +f 1856 1516 1284 +f 1856 1284 1468 +f 1516 1292 1148 +f 1516 1148 1284 +f 1292 1108 1028 +f 1292 1028 1148 +f 1108 964 908 +f 1108 908 1028 +f 964 828 804 +f 964 804 908 +f 803 907 851 +f 803 851 779 +f 907 1027 931 +f 907 931 851 +f 1027 1147 1019 +f 1027 1019 931 +f 1147 1283 1099 +f 1147 1099 1019 +f 1283 1467 1219 +f 1283 1219 1099 +f 1467 1699 1331 +f 1467 1331 1219 +f 1699 1887 1443 +f 1699 1443 1331 +f 1887 1999 1603 +f 1887 1603 1443 +f 1999 2071 1839 +f 1999 1839 1603 +f 2071 2183 1919 +f 2071 1919 1839 +f 2183 2295 1967 +f 2183 1967 1919 +f 2295 2415 2039 +f 2295 2039 1967 +f 2415 2567 2119 +f 2415 2119 2039 +f 2567 2751 2199 +f 2567 2199 2119 +f 2751 2851 2263 +f 2751 2263 2199 +f 2851 2939 2343 +f 2851 2343 2263 +f 2939 3003 2439 +f 2939 2439 2343 +f 3003 3099 2511 +f 3003 2511 2439 +f 3099 3163 2639 +f 3099 2639 2511 +f 3163 3259 2787 +f 3163 2787 2639 +f 3259 3339 2835 +f 3259 2835 2787 +f 3339 3451 2883 +f 3339 2883 2835 +f 3451 3555 2923 +f 3451 2923 2883 +f 3555 3687 2971 +f 3555 2971 2923 +f 3687 3719 3019 +f 3687 3019 2971 +f 3719 3783 3051 +f 3719 3051 3019 +f 3783 3815 3115 +f 3783 3115 3051 +f 3815 3887 3147 +f 3815 3147 3115 +f 3887 3903 3179 +f 3887 3179 3147 +f 3903 3983 3227 +f 3903 3227 3179 +f 3983 3999 3275 +f 3983 3275 3227 +f 3999 4047 3307 +f 3999 3307 3275 +f 4047 4111 3331 +f 4047 3331 3307 +f 4111 4159 3395 +f 4111 3395 3331 +f 4159 4175 3427 +f 4159 3427 3395 +f 4175 4199 3443 +f 4175 3443 3427 +f 4199 4239 3475 +f 4199 3475 3443 +f 4239 4255 3491 +f 4239 3491 3475 +f 4255 4295 3515 +f 4255 3515 3491 +f 4295 4319 3531 +f 4295 3531 3515 +f 4319 4343 3547 +f 4319 3547 3531 +f 4343 4351 3571 +f 4343 3571 3547 +f 4351 4359 3587 +f 4351 3587 3571 +f 4359 4360 3588 +f 4359 3588 3587 +f 4360 4352 3572 +f 4360 3572 3588 +f 4352 4344 3548 +f 4352 3548 3572 +f 4344 4320 3532 +f 4344 3532 3548 +f 4320 4296 3516 +f 4320 3516 3532 +f 4296 4256 3492 +f 4296 3492 3516 +f 4256 4240 3476 +f 4256 3476 3492 +f 4240 4200 3444 +f 4240 3444 3476 +f 4200 4176 3428 +f 4200 3428 3444 +f 4176 4160 3396 +f 4176 3396 3428 +f 4160 4112 3332 +f 4160 3332 3396 +f 4112 4048 3308 +f 4112 3308 3332 +f 4048 4000 3276 +f 4048 3276 3308 +f 4000 3984 3228 +f 4000 3228 3276 +f 3984 3904 3180 +f 3984 3180 3228 +f 3904 3888 3148 +f 3904 3148 3180 +f 3888 3816 3116 +f 3888 3116 3148 +f 3816 3784 3052 +f 3816 3052 3116 +f 3784 3720 3020 +f 3784 3020 3052 +f 3720 3688 2972 +f 3720 2972 3020 +f 3688 3556 2924 +f 3688 2924 2972 +f 3556 3452 2884 +f 3556 2884 2924 +f 3452 3340 2836 +f 3452 2836 2884 +f 3340 3260 2788 +f 3340 2788 2836 +f 3260 3164 2640 +f 3260 2640 2788 +f 3164 3100 2512 +f 3164 2512 2640 +f 3100 3004 2440 +f 3100 2440 2512 +f 3004 2940 2344 +f 3004 2344 2440 +f 2940 2852 2264 +f 2940 2264 2344 +f 2852 2752 2200 +f 2852 2200 2264 +f 2752 2568 2120 +f 2752 2120 2200 +f 2568 2416 2040 +f 2568 2040 2120 +f 2416 2296 1968 +f 2416 1968 2040 +f 2296 2184 1920 +f 2296 1920 1968 +f 2184 2072 1840 +f 2184 1840 1920 +f 2072 2000 1604 +f 2072 1604 1840 +f 2000 1888 1444 +f 2000 1444 1604 +f 1888 1700 1332 +f 1888 1332 1444 +f 1700 1468 1220 +f 1700 1220 1332 +f 1468 1284 1100 +f 1468 1100 1220 +f 1284 1148 1020 +f 1284 1020 1100 +f 1148 1028 932 +f 1148 932 1020 +f 1028 908 852 +f 1028 852 932 +f 908 804 780 +f 908 780 852 +f 779 851 811 +f 779 811 771 +f 851 931 859 +f 851 859 811 +f 931 1019 899 +f 931 899 859 +f 1019 1099 955 +f 1019 955 899 +f 1099 1219 1003 +f 1099 1003 955 +f 1219 1331 1067 +f 1219 1067 1003 +f 1331 1443 1131 +f 1331 1131 1067 +f 1443 1603 1203 +f 1443 1203 1131 +f 1603 1839 1267 +f 1603 1267 1203 +f 1839 1919 1363 +f 1839 1363 1267 +f 1919 1967 1427 +f 1919 1427 1363 +f 1967 2039 1531 +f 1967 1531 1427 +f 2039 2119 1635 +f 2039 1635 1531 +f 2119 2199 1811 +f 2119 1811 1635 +f 2199 2263 1871 +f 2199 1871 1811 +f 2263 2343 1903 +f 2263 1903 1871 +f 2343 2439 1935 +f 2343 1935 1903 +f 2439 2511 1983 +f 2439 1983 1935 +f 2511 2639 2023 +f 2511 2023 1983 +f 2639 2787 2055 +f 2639 2055 2023 +f 2787 2835 2103 +f 2787 2103 2055 +f 2835 2883 2135 +f 2835 2135 2103 +f 2883 2923 2167 +f 2883 2167 2135 +f 2923 2971 2215 +f 2923 2215 2167 +f 2971 3019 2247 +f 2971 2247 2215 +f 3019 3051 2279 +f 3019 2279 2247 +f 3051 3115 2327 +f 3051 2327 2279 +f 3115 3147 2367 +f 3115 2367 2327 +f 3147 3179 2399 +f 3147 2399 2367 +f 3179 3227 2431 +f 3179 2431 2399 +f 3227 3275 2463 +f 3227 2463 2431 +f 3275 3307 2479 +f 3275 2479 2463 +f 3307 3331 2519 +f 3307 2519 2479 +f 3331 3395 2559 +f 3331 2559 2519 +f 3395 3427 2591 +f 3395 2591 2559 +f 3427 3443 2607 +f 3427 2607 2591 +f 3443 3475 2647 +f 3443 2647 2607 +f 3475 3491 2671 +f 3475 2671 2647 +f 3491 3515 2679 +f 3491 2679 2671 +f 3515 3531 2695 +f 3515 2695 2679 +f 3531 3547 2711 +f 3531 2711 2695 +f 3547 3571 2719 +f 3547 2719 2711 +f 3571 3587 2727 +f 3571 2727 2719 +f 3587 3588 2728 +f 3587 2728 2727 +f 3588 3572 2720 +f 3588 2720 2728 +f 3572 3548 2712 +f 3572 2712 2720 +f 3548 3532 2696 +f 3548 2696 2712 +f 3532 3516 2680 +f 3532 2680 2696 +f 3516 3492 2672 +f 3516 2672 2680 +f 3492 3476 2648 +f 3492 2648 2672 +f 3476 3444 2608 +f 3476 2608 2648 +f 3444 3428 2592 +f 3444 2592 2608 +f 3428 3396 2560 +f 3428 2560 2592 +f 3396 3332 2520 +f 3396 2520 2560 +f 3332 3308 2480 +f 3332 2480 2520 +f 3308 3276 2464 +f 3308 2464 2480 +f 3276 3228 2432 +f 3276 2432 2464 +f 3228 3180 2400 +f 3228 2400 2432 +f 3180 3148 2368 +f 3180 2368 2400 +f 3148 3116 2328 +f 3148 2328 2368 +f 3116 3052 2280 +f 3116 2280 2328 +f 3052 3020 2248 +f 3052 2248 2280 +f 3020 2972 2216 +f 3020 2216 2248 +f 2972 2924 2168 +f 2972 2168 2216 +f 2924 2884 2136 +f 2924 2136 2168 +f 2884 2836 2104 +f 2884 2104 2136 +f 2836 2788 2056 +f 2836 2056 2104 +f 2788 2640 2024 +f 2788 2024 2056 +f 2640 2512 1984 +f 2640 1984 2024 +f 2512 2440 1936 +f 2512 1936 1984 +f 2440 2344 1904 +f 2440 1904 1936 +f 2344 2264 1872 +f 2344 1872 1904 +f 2264 2200 1812 +f 2264 1812 1872 +f 2200 2120 1636 +f 2200 1636 1812 +f 2120 2040 1532 +f 2120 1532 1636 +f 2040 1968 1428 +f 2040 1428 1532 +f 1968 1920 1364 +f 1968 1364 1428 +f 1920 1840 1268 +f 1920 1268 1364 +f 1840 1604 1204 +f 1840 1204 1268 +f 1604 1444 1132 +f 1604 1132 1204 +f 1444 1332 1068 +f 1444 1068 1132 +f 1332 1220 1004 +f 1332 1004 1068 +f 1220 1100 956 +f 1220 956 1004 +f 1100 1020 900 +f 1100 900 956 +f 1020 932 860 +f 1020 860 900 +f 932 852 812 +f 932 812 860 +f 852 780 772 +f 852 772 812 +f 771 811 763 +f 771 763 755 +f 811 859 787 +f 811 787 763 +f 859 899 795 +f 859 795 787 +f 899 955 819 +f 899 819 795 +f 955 1003 835 +f 955 835 819 +f 1003 1067 867 +f 1003 867 835 +f 1067 1131 883 +f 1067 883 867 +f 1131 1203 915 +f 1131 915 883 +f 1203 1267 939 +f 1203 939 915 +f 1267 1363 971 +f 1267 971 939 +f 1363 1427 987 +f 1363 987 971 +f 1427 1531 1035 +f 1427 1035 987 +f 1531 1635 1051 +f 1531 1051 1035 +f 1635 1811 1083 +f 1635 1083 1051 +f 1811 1871 1115 +f 1811 1115 1083 +f 1871 1903 1155 +f 1871 1155 1115 +f 1903 1935 1171 +f 1903 1171 1155 +f 1935 1983 1187 +f 1935 1187 1171 +f 1983 2023 1235 +f 1983 1235 1187 +f 2023 2055 1251 +f 2023 1251 1235 +f 2055 2103 1299 +f 2055 1299 1251 +f 2103 2135 1315 +f 2103 1315 1299 +f 2135 2167 1347 +f 2135 1347 1315 +f 2167 2215 1379 +f 2167 1379 1347 +f 2215 2247 1395 +f 2215 1395 1379 +f 2247 2279 1411 +f 2247 1411 1395 +f 2279 2327 1459 +f 2279 1459 1411 +f 2327 2367 1491 +f 2327 1491 1459 +f 2367 2399 1507 +f 2367 1507 1491 +f 2399 2431 1547 +f 2399 1547 1507 +f 2431 2463 1563 +f 2431 1563 1547 +f 2463 2479 1579 +f 2463 1579 1563 +f 2479 2519 1595 +f 2479 1595 1579 +f 2519 2559 1627 +f 2519 1627 1595 +f 2559 2591 1659 +f 2559 1659 1627 +f 2591 2607 1675 +f 2591 1675 1659 +f 2607 2647 1691 +f 2607 1691 1675 +f 2647 2671 1715 +f 2647 1715 1691 +f 2671 2679 1731 +f 2671 1731 1715 +f 2679 2695 1747 +f 2679 1747 1731 +f 2695 2711 1763 +f 2695 1763 1747 +f 2711 2719 1771 +f 2711 1771 1763 +f 2719 2727 1779 +f 2719 1779 1771 +f 2727 2728 1780 +f 2727 1780 1779 +f 2728 2720 1772 +f 2728 1772 1780 +f 2720 2712 1764 +f 2720 1764 1772 +f 2712 2696 1748 +f 2712 1748 1764 +f 2696 2680 1732 +f 2696 1732 1748 +f 2680 2672 1716 +f 2680 1716 1732 +f 2672 2648 1692 +f 2672 1692 1716 +f 2648 2608 1676 +f 2648 1676 1692 +f 2608 2592 1660 +f 2608 1660 1676 +f 2592 2560 1628 +f 2592 1628 1660 +f 2560 2520 1596 +f 2560 1596 1628 +f 2520 2480 1580 +f 2520 1580 1596 +f 2480 2464 1564 +f 2480 1564 1580 +f 2464 2432 1548 +f 2464 1548 1564 +f 2432 2400 1508 +f 2432 1508 1548 +f 2400 2368 1492 +f 2400 1492 1508 +f 2368 2328 1460 +f 2368 1460 1492 +f 2328 2280 1412 +f 2328 1412 1460 +f 2280 2248 1396 +f 2280 1396 1412 +f 2248 2216 1380 +f 2248 1380 1396 +f 2216 2168 1348 +f 2216 1348 1380 +f 2168 2136 1316 +f 2168 1316 1348 +f 2136 2104 1300 +f 2136 1300 1316 +f 2104 2056 1252 +f 2104 1252 1300 +f 2056 2024 1236 +f 2056 1236 1252 +f 2024 1984 1188 +f 2024 1188 1236 +f 1984 1936 1172 +f 1984 1172 1188 +f 1936 1904 1156 +f 1936 1156 1172 +f 1904 1872 1116 +f 1904 1116 1156 +f 1872 1812 1084 +f 1872 1084 1116 +f 1812 1636 1052 +f 1812 1052 1084 +f 1636 1532 1036 +f 1636 1036 1052 +f 1532 1428 988 +f 1532 988 1036 +f 1428 1364 972 +f 1428 972 988 +f 1364 1268 940 +f 1364 940 972 +f 1268 1204 916 +f 1268 916 940 +f 1204 1132 884 +f 1204 884 916 +f 1132 1068 868 +f 1132 868 884 +f 1068 1004 836 +f 1068 836 868 +f 1004 956 820 +f 1004 820 836 +f 956 900 796 +f 956 796 820 +f 900 860 788 +f 900 788 796 +f 860 812 764 +f 860 764 788 +f 812 772 756 +f 812 756 764 +f 755 763 227 +f 755 227 635 +f 763 787 707 +f 763 707 227 +f 787 795 467 +f 787 467 707 +f 795 819 139 +f 795 139 467 +f 819 835 19 +f 819 19 139 +f 835 867 171 +f 835 171 19 +f 867 883 659 +f 867 659 171 +f 883 915 555 +f 883 555 659 +f 915 939 115 +f 915 115 555 +f 939 971 283 +f 939 283 115 +f 971 987 363 +f 971 363 283 +f 987 1035 691 +f 987 691 363 +f 1035 1051 251 +f 1035 251 691 +f 1051 1083 275 +f 1051 275 251 +f 1083 1115 291 +f 1083 291 275 +f 1115 1155 411 +f 1115 411 291 +f 1155 1171 667 +f 1155 667 411 +f 1171 1187 347 +f 1171 347 667 +f 1187 1235 163 +f 1187 163 347 +f 1235 1251 547 +f 1235 547 163 +f 1251 1299 11 +f 1251 11 547 +f 1299 1315 155 +f 1299 155 11 +f 1315 1347 379 +f 1315 379 155 +f 1347 1379 43 +f 1347 43 379 +f 1379 1395 147 +f 1379 147 43 +f 1395 1411 387 +f 1395 387 147 +f 1411 1459 539 +f 1411 539 387 +f 1459 1491 315 +f 1459 315 539 +f 1491 1507 699 +f 1491 699 315 +f 1507 1547 59 +f 1507 59 699 +f 1547 1563 339 +f 1547 339 59 +f 1563 1579 643 +f 1563 643 339 +f 1579 1595 259 +f 1579 259 643 +f 1595 1627 267 +f 1595 267 259 +f 1627 1659 627 +f 1627 627 267 +f 1659 1675 99 +f 1659 99 627 +f 1675 1691 459 +f 1675 459 99 +f 1691 1715 651 +f 1691 651 459 +f 1715 1731 731 +f 1715 731 651 +f 1731 1747 107 +f 1731 107 731 +f 1747 1763 355 +f 1747 355 107 +f 1763 1771 435 +f 1763 435 355 +f 1771 1779 51 +f 1771 51 435 +f 1779 1780 52 +f 1779 52 51 +f 1780 1772 436 +f 1780 436 52 +f 1772 1764 356 +f 1772 356 436 +f 1764 1748 108 +f 1764 108 356 +f 1748 1732 732 +f 1748 732 108 +f 1732 1716 652 +f 1732 652 732 +f 1716 1692 460 +f 1716 460 652 +f 1692 1676 100 +f 1692 100 460 +f 1676 1660 628 +f 1676 628 100 +f 1660 1628 268 +f 1660 268 628 +f 1628 1596 260 +f 1628 260 268 +f 1596 1580 644 +f 1596 644 260 +f 1580 1564 340 +f 1580 340 644 +f 1564 1548 60 +f 1564 60 340 +f 1548 1508 700 +f 1548 700 60 +f 1508 1492 316 +f 1508 316 700 +f 1492 1460 540 +f 1492 540 316 +f 1460 1412 388 +f 1460 388 540 +f 1412 1396 148 +f 1412 148 388 +f 1396 1380 44 +f 1396 44 148 +f 1380 1348 380 +f 1380 380 44 +f 1348 1316 156 +f 1348 156 380 +f 1316 1300 12 +f 1316 12 156 +f 1300 1252 548 +f 1300 548 12 +f 1252 1236 164 +f 1252 164 548 +f 1236 1188 348 +f 1236 348 164 +f 1188 1172 668 +f 1188 668 348 +f 1172 1156 412 +f 1172 412 668 +f 1156 1116 292 +f 1156 292 412 +f 1116 1084 276 +f 1116 276 292 +f 1084 1052 252 +f 1084 252 276 +f 1052 1036 692 +f 1052 692 252 +f 1036 988 364 +f 1036 364 692 +f 988 972 284 +f 988 284 364 +f 972 940 116 +f 972 116 284 +f 940 916 556 +f 940 556 116 +f 916 884 660 +f 916 660 556 +f 884 868 172 +f 884 172 660 +f 868 836 20 +f 868 20 172 +f 836 820 140 +f 836 140 20 +f 820 796 468 +f 820 468 140 +f 796 788 708 +f 796 708 468 +f 788 764 228 +f 788 228 708 +f 764 756 636 +f 764 636 228 +f 637 757 371 +f 757 773 371 +f 773 781 371 +f 781 805 371 +f 805 829 371 +f 829 845 371 +f 845 877 371 +f 877 893 371 +f 893 925 371 +f 925 949 371 +f 949 981 371 +f 981 997 371 +f 997 1045 371 +f 1045 1061 371 +f 1061 1093 371 +f 1093 1125 371 +f 1125 1165 371 +f 1165 1181 371 +f 1181 1197 371 +f 1197 1245 371 +f 1245 1261 371 +f 1261 1309 371 +f 1309 1325 371 +f 1325 1357 371 +f 1357 1389 371 +f 1389 1405 371 +f 1405 1421 371 +f 1421 1477 371 +f 1477 1501 371 +f 1501 1525 371 +f 1525 1557 371 +f 1557 1573 371 +f 1573 1589 371 +f 1589 1621 371 +f 1621 1653 371 +f 1653 1669 371 +f 1669 1685 371 +f 1685 1725 371 +f 1725 1741 371 +f 1741 1757 371 +f 1757 1789 371 +f 1789 1797 371 +f 1797 1805 371 +f 1805 1829 371 +f 1829 1835 371 +f 1835 1831 371 +f 1831 1807 371 +f 1807 1799 371 +f 1799 1791 371 +f 1791 1759 371 +f 1759 1743 371 +f 1743 1727 371 +f 1727 1687 371 +f 1687 1671 371 +f 1671 1655 371 +f 1655 1623 371 +f 1623 1591 371 +f 1591 1575 371 +f 1575 1559 371 +f 1559 1527 371 +f 1527 1503 371 +f 1503 1479 371 +f 1479 1423 371 +f 1423 1407 371 +f 1407 1391 371 +f 1391 1359 371 +f 1359 1327 371 +f 1327 1311 371 +f 1311 1263 371 +f 1263 1247 371 +f 1247 1199 371 +f 1199 1183 371 +f 1183 1167 371 +f 1167 1127 371 +f 1127 1095 371 +f 1095 1063 371 +f 1063 1047 371 +f 1047 999 371 +f 999 983 371 +f 983 951 371 +f 951 927 371 +f 927 895 371 +f 895 879 371 +f 879 847 371 +f 847 831 371 +f 831 807 371 +f 807 783 371 +f 783 775 371 +f 775 759 371 +f 759 639 371 +f 638 372 758 +f 758 372 774 +f 774 372 782 +f 782 372 806 +f 806 372 830 +f 830 372 846 +f 846 372 878 +f 878 372 894 +f 894 372 926 +f 926 372 950 +f 950 372 982 +f 982 372 998 +f 998 372 1046 +f 1046 372 1062 +f 1062 372 1094 +f 1094 372 1126 +f 1126 372 1166 +f 1166 372 1182 +f 1182 372 1198 +f 1198 372 1246 +f 1246 372 1262 +f 1262 372 1310 +f 1310 372 1326 +f 1326 372 1358 +f 1358 372 1390 +f 1390 372 1406 +f 1406 372 1422 +f 1422 372 1478 +f 1478 372 1502 +f 1502 372 1526 +f 1526 372 1558 +f 1558 372 1574 +f 1574 372 1590 +f 1590 372 1622 +f 1622 372 1654 +f 1654 372 1670 +f 1670 372 1686 +f 1686 372 1726 +f 1726 372 1742 +f 1742 372 1758 +f 1758 372 1790 +f 1790 372 1798 +f 1798 372 1806 +f 1806 372 1830 +f 1830 372 1836 +f 1836 372 1832 +f 1832 372 1808 +f 1808 372 1800 +f 1800 372 1792 +f 1792 372 1760 +f 1760 372 1744 +f 1744 372 1728 +f 1728 372 1688 +f 1688 372 1672 +f 1672 372 1656 +f 1656 372 1624 +f 1624 372 1592 +f 1592 372 1576 +f 1576 372 1560 +f 1560 372 1528 +f 1528 372 1504 +f 1504 372 1480 +f 1480 372 1424 +f 1424 372 1408 +f 1408 372 1392 +f 1392 372 1360 +f 1360 372 1328 +f 1328 372 1312 +f 1312 372 1264 +f 1264 372 1248 +f 1248 372 1200 +f 1200 372 1184 +f 1184 372 1168 +f 1168 372 1128 +f 1128 372 1096 +f 1096 372 1064 +f 1064 372 1048 +f 1048 372 1000 +f 1000 372 984 +f 984 372 952 +f 952 372 928 +f 928 372 896 +f 896 372 880 +f 880 372 848 +f 848 372 832 +f 832 372 808 +f 808 372 784 +f 784 372 776 +f 776 372 760 +f 760 372 640 +f 637 229 765 +f 637 765 757 +f 229 709 789 +f 229 789 765 +f 709 469 797 +f 709 797 789 +f 469 141 821 +f 469 821 797 +f 141 21 837 +f 141 837 821 +f 21 173 869 +f 21 869 837 +f 173 661 885 +f 173 885 869 +f 661 557 917 +f 661 917 885 +f 557 117 941 +f 557 941 917 +f 117 285 973 +f 117 973 941 +f 285 365 989 +f 285 989 973 +f 365 693 1037 +f 365 1037 989 +f 693 253 1053 +f 693 1053 1037 +f 253 277 1085 +f 253 1085 1053 +f 277 293 1117 +f 277 1117 1085 +f 293 413 1157 +f 293 1157 1117 +f 413 669 1173 +f 413 1173 1157 +f 669 349 1189 +f 669 1189 1173 +f 349 165 1237 +f 349 1237 1189 +f 165 549 1253 +f 165 1253 1237 +f 549 13 1301 +f 549 1301 1253 +f 13 157 1317 +f 13 1317 1301 +f 157 381 1349 +f 157 1349 1317 +f 381 45 1381 +f 381 1381 1349 +f 45 149 1397 +f 45 1397 1381 +f 149 389 1413 +f 149 1413 1397 +f 389 541 1461 +f 389 1461 1413 +f 541 317 1493 +f 541 1493 1461 +f 317 701 1509 +f 317 1509 1493 +f 701 61 1549 +f 701 1549 1509 +f 61 341 1565 +f 61 1565 1549 +f 341 645 1581 +f 341 1581 1565 +f 645 261 1597 +f 645 1597 1581 +f 261 269 1629 +f 261 1629 1597 +f 269 629 1661 +f 269 1661 1629 +f 629 101 1677 +f 629 1677 1661 +f 101 461 1693 +f 101 1693 1677 +f 461 653 1717 +f 461 1717 1693 +f 653 733 1733 +f 653 1733 1717 +f 733 109 1749 +f 733 1749 1733 +f 109 357 1765 +f 109 1765 1749 +f 357 437 1773 +f 357 1773 1765 +f 437 53 1781 +f 437 1781 1773 +f 53 54 1782 +f 53 1782 1781 +f 54 438 1774 +f 54 1774 1782 +f 438 358 1766 +f 438 1766 1774 +f 358 110 1750 +f 358 1750 1766 +f 110 734 1734 +f 110 1734 1750 +f 734 654 1718 +f 734 1718 1734 +f 654 462 1694 +f 654 1694 1718 +f 462 102 1678 +f 462 1678 1694 +f 102 630 1662 +f 102 1662 1678 +f 630 270 1630 +f 630 1630 1662 +f 270 262 1598 +f 270 1598 1630 +f 262 646 1582 +f 262 1582 1598 +f 646 342 1566 +f 646 1566 1582 +f 342 62 1550 +f 342 1550 1566 +f 62 702 1510 +f 62 1510 1550 +f 702 318 1494 +f 702 1494 1510 +f 318 542 1462 +f 318 1462 1494 +f 542 390 1414 +f 542 1414 1462 +f 390 150 1398 +f 390 1398 1414 +f 150 46 1382 +f 150 1382 1398 +f 46 382 1350 +f 46 1350 1382 +f 382 158 1318 +f 382 1318 1350 +f 158 14 1302 +f 158 1302 1318 +f 14 550 1254 +f 14 1254 1302 +f 550 166 1238 +f 550 1238 1254 +f 166 350 1190 +f 166 1190 1238 +f 350 670 1174 +f 350 1174 1190 +f 670 414 1158 +f 670 1158 1174 +f 414 294 1118 +f 414 1118 1158 +f 294 278 1086 +f 294 1086 1118 +f 278 254 1054 +f 278 1054 1086 +f 254 694 1038 +f 254 1038 1054 +f 694 366 990 +f 694 990 1038 +f 366 286 974 +f 366 974 990 +f 286 118 942 +f 286 942 974 +f 118 558 918 +f 118 918 942 +f 558 662 886 +f 558 886 918 +f 662 174 870 +f 662 870 886 +f 174 22 838 +f 174 838 870 +f 22 142 822 +f 22 822 838 +f 142 470 798 +f 142 798 822 +f 470 710 790 +f 470 790 798 +f 710 230 766 +f 710 766 790 +f 230 638 758 +f 230 758 766 +f 757 765 813 +f 757 813 773 +f 765 789 861 +f 765 861 813 +f 789 797 901 +f 789 901 861 +f 797 821 957 +f 797 957 901 +f 821 837 1005 +f 821 1005 957 +f 837 869 1069 +f 837 1069 1005 +f 869 885 1133 +f 869 1133 1069 +f 885 917 1205 +f 885 1205 1133 +f 917 941 1269 +f 917 1269 1205 +f 941 973 1365 +f 941 1365 1269 +f 973 989 1429 +f 973 1429 1365 +f 989 1037 1533 +f 989 1533 1429 +f 1037 1053 1637 +f 1037 1637 1533 +f 1053 1085 1813 +f 1053 1813 1637 +f 1085 1117 1873 +f 1085 1873 1813 +f 1117 1157 1905 +f 1117 1905 1873 +f 1157 1173 1937 +f 1157 1937 1905 +f 1173 1189 1985 +f 1173 1985 1937 +f 1189 1237 2025 +f 1189 2025 1985 +f 1237 1253 2057 +f 1237 2057 2025 +f 1253 1301 2105 +f 1253 2105 2057 +f 1301 1317 2137 +f 1301 2137 2105 +f 1317 1349 2169 +f 1317 2169 2137 +f 1349 1381 2217 +f 1349 2217 2169 +f 1381 1397 2249 +f 1381 2249 2217 +f 1397 1413 2281 +f 1397 2281 2249 +f 1413 1461 2329 +f 1413 2329 2281 +f 1461 1493 2369 +f 1461 2369 2329 +f 1493 1509 2401 +f 1493 2401 2369 +f 1509 1549 2433 +f 1509 2433 2401 +f 1549 1565 2465 +f 1549 2465 2433 +f 1565 1581 2481 +f 1565 2481 2465 +f 1581 1597 2521 +f 1581 2521 2481 +f 1597 1629 2561 +f 1597 2561 2521 +f 1629 1661 2593 +f 1629 2593 2561 +f 1661 1677 2609 +f 1661 2609 2593 +f 1677 1693 2649 +f 1677 2649 2609 +f 1693 1717 2673 +f 1693 2673 2649 +f 1717 1733 2681 +f 1717 2681 2673 +f 1733 1749 2697 +f 1733 2697 2681 +f 1749 1765 2713 +f 1749 2713 2697 +f 1765 1773 2721 +f 1765 2721 2713 +f 1773 1781 2729 +f 1773 2729 2721 +f 1781 1782 2730 +f 1781 2730 2729 +f 1782 1774 2722 +f 1782 2722 2730 +f 1774 1766 2714 +f 1774 2714 2722 +f 1766 1750 2698 +f 1766 2698 2714 +f 1750 1734 2682 +f 1750 2682 2698 +f 1734 1718 2674 +f 1734 2674 2682 +f 1718 1694 2650 +f 1718 2650 2674 +f 1694 1678 2610 +f 1694 2610 2650 +f 1678 1662 2594 +f 1678 2594 2610 +f 1662 1630 2562 +f 1662 2562 2594 +f 1630 1598 2522 +f 1630 2522 2562 +f 1598 1582 2482 +f 1598 2482 2522 +f 1582 1566 2466 +f 1582 2466 2482 +f 1566 1550 2434 +f 1566 2434 2466 +f 1550 1510 2402 +f 1550 2402 2434 +f 1510 1494 2370 +f 1510 2370 2402 +f 1494 1462 2330 +f 1494 2330 2370 +f 1462 1414 2282 +f 1462 2282 2330 +f 1414 1398 2250 +f 1414 2250 2282 +f 1398 1382 2218 +f 1398 2218 2250 +f 1382 1350 2170 +f 1382 2170 2218 +f 1350 1318 2138 +f 1350 2138 2170 +f 1318 1302 2106 +f 1318 2106 2138 +f 1302 1254 2058 +f 1302 2058 2106 +f 1254 1238 2026 +f 1254 2026 2058 +f 1238 1190 1986 +f 1238 1986 2026 +f 1190 1174 1938 +f 1190 1938 1986 +f 1174 1158 1906 +f 1174 1906 1938 +f 1158 1118 1874 +f 1158 1874 1906 +f 1118 1086 1814 +f 1118 1814 1874 +f 1086 1054 1638 +f 1086 1638 1814 +f 1054 1038 1534 +f 1054 1534 1638 +f 1038 990 1430 +f 1038 1430 1534 +f 990 974 1366 +f 990 1366 1430 +f 974 942 1270 +f 974 1270 1366 +f 942 918 1206 +f 942 1206 1270 +f 918 886 1134 +f 918 1134 1206 +f 886 870 1070 +f 886 1070 1134 +f 870 838 1006 +f 870 1006 1070 +f 838 822 958 +f 838 958 1006 +f 822 798 902 +f 822 902 958 +f 798 790 862 +f 798 862 902 +f 790 766 814 +f 790 814 862 +f 766 758 774 +f 766 774 814 +f 773 813 853 +f 773 853 781 +f 813 861 933 +f 813 933 853 +f 861 901 1021 +f 861 1021 933 +f 901 957 1101 +f 901 1101 1021 +f 957 1005 1221 +f 957 1221 1101 +f 1005 1069 1333 +f 1005 1333 1221 +f 1069 1133 1445 +f 1069 1445 1333 +f 1133 1205 1605 +f 1133 1605 1445 +f 1205 1269 1841 +f 1205 1841 1605 +f 1269 1365 1921 +f 1269 1921 1841 +f 1365 1429 1969 +f 1365 1969 1921 +f 1429 1533 2041 +f 1429 2041 1969 +f 1533 1637 2121 +f 1533 2121 2041 +f 1637 1813 2201 +f 1637 2201 2121 +f 1813 1873 2265 +f 1813 2265 2201 +f 1873 1905 2345 +f 1873 2345 2265 +f 1905 1937 2441 +f 1905 2441 2345 +f 1937 1985 2513 +f 1937 2513 2441 +f 1985 2025 2641 +f 1985 2641 2513 +f 2025 2057 2789 +f 2025 2789 2641 +f 2057 2105 2837 +f 2057 2837 2789 +f 2105 2137 2885 +f 2105 2885 2837 +f 2137 2169 2925 +f 2137 2925 2885 +f 2169 2217 2973 +f 2169 2973 2925 +f 2217 2249 3021 +f 2217 3021 2973 +f 2249 2281 3053 +f 2249 3053 3021 +f 2281 2329 3117 +f 2281 3117 3053 +f 2329 2369 3149 +f 2329 3149 3117 +f 2369 2401 3181 +f 2369 3181 3149 +f 2401 2433 3229 +f 2401 3229 3181 +f 2433 2465 3277 +f 2433 3277 3229 +f 2465 2481 3309 +f 2465 3309 3277 +f 2481 2521 3333 +f 2481 3333 3309 +f 2521 2561 3397 +f 2521 3397 3333 +f 2561 2593 3429 +f 2561 3429 3397 +f 2593 2609 3445 +f 2593 3445 3429 +f 2609 2649 3477 +f 2609 3477 3445 +f 2649 2673 3493 +f 2649 3493 3477 +f 2673 2681 3517 +f 2673 3517 3493 +f 2681 2697 3533 +f 2681 3533 3517 +f 2697 2713 3549 +f 2697 3549 3533 +f 2713 2721 3573 +f 2713 3573 3549 +f 2721 2729 3589 +f 2721 3589 3573 +f 2729 2730 3590 +f 2729 3590 3589 +f 2730 2722 3574 +f 2730 3574 3590 +f 2722 2714 3550 +f 2722 3550 3574 +f 2714 2698 3534 +f 2714 3534 3550 +f 2698 2682 3518 +f 2698 3518 3534 +f 2682 2674 3494 +f 2682 3494 3518 +f 2674 2650 3478 +f 2674 3478 3494 +f 2650 2610 3446 +f 2650 3446 3478 +f 2610 2594 3430 +f 2610 3430 3446 +f 2594 2562 3398 +f 2594 3398 3430 +f 2562 2522 3334 +f 2562 3334 3398 +f 2522 2482 3310 +f 2522 3310 3334 +f 2482 2466 3278 +f 2482 3278 3310 +f 2466 2434 3230 +f 2466 3230 3278 +f 2434 2402 3182 +f 2434 3182 3230 +f 2402 2370 3150 +f 2402 3150 3182 +f 2370 2330 3118 +f 2370 3118 3150 +f 2330 2282 3054 +f 2330 3054 3118 +f 2282 2250 3022 +f 2282 3022 3054 +f 2250 2218 2974 +f 2250 2974 3022 +f 2218 2170 2926 +f 2218 2926 2974 +f 2170 2138 2886 +f 2170 2886 2926 +f 2138 2106 2838 +f 2138 2838 2886 +f 2106 2058 2790 +f 2106 2790 2838 +f 2058 2026 2642 +f 2058 2642 2790 +f 2026 1986 2514 +f 2026 2514 2642 +f 1986 1938 2442 +f 1986 2442 2514 +f 1938 1906 2346 +f 1938 2346 2442 +f 1906 1874 2266 +f 1906 2266 2346 +f 1874 1814 2202 +f 1874 2202 2266 +f 1814 1638 2122 +f 1814 2122 2202 +f 1638 1534 2042 +f 1638 2042 2122 +f 1534 1430 1970 +f 1534 1970 2042 +f 1430 1366 1922 +f 1430 1922 1970 +f 1366 1270 1842 +f 1366 1842 1922 +f 1270 1206 1606 +f 1270 1606 1842 +f 1206 1134 1446 +f 1206 1446 1606 +f 1134 1070 1334 +f 1134 1334 1446 +f 1070 1006 1222 +f 1070 1222 1334 +f 1006 958 1102 +f 1006 1102 1222 +f 958 902 1022 +f 958 1022 1102 +f 902 862 934 +f 902 934 1022 +f 862 814 854 +f 862 854 934 +f 814 774 782 +f 814 782 854 +f 781 853 909 +f 781 909 805 +f 853 933 1029 +f 853 1029 909 +f 933 1021 1149 +f 933 1149 1029 +f 1021 1101 1285 +f 1021 1285 1149 +f 1101 1221 1469 +f 1101 1469 1285 +f 1221 1333 1701 +f 1221 1701 1469 +f 1333 1445 1889 +f 1333 1889 1701 +f 1445 1605 2001 +f 1445 2001 1889 +f 1605 1841 2073 +f 1605 2073 2001 +f 1841 1921 2185 +f 1841 2185 2073 +f 1921 1969 2297 +f 1921 2297 2185 +f 1969 2041 2417 +f 1969 2417 2297 +f 2041 2121 2569 +f 2041 2569 2417 +f 2121 2201 2753 +f 2121 2753 2569 +f 2201 2265 2853 +f 2201 2853 2753 +f 2265 2345 2941 +f 2265 2941 2853 +f 2345 2441 3005 +f 2345 3005 2941 +f 2441 2513 3101 +f 2441 3101 3005 +f 2513 2641 3165 +f 2513 3165 3101 +f 2641 2789 3261 +f 2641 3261 3165 +f 2789 2837 3341 +f 2789 3341 3261 +f 2837 2885 3453 +f 2837 3453 3341 +f 2885 2925 3557 +f 2885 3557 3453 +f 2925 2973 3689 +f 2925 3689 3557 +f 2973 3021 3721 +f 2973 3721 3689 +f 3021 3053 3785 +f 3021 3785 3721 +f 3053 3117 3817 +f 3053 3817 3785 +f 3117 3149 3889 +f 3117 3889 3817 +f 3149 3181 3905 +f 3149 3905 3889 +f 3181 3229 3985 +f 3181 3985 3905 +f 3229 3277 4001 +f 3229 4001 3985 +f 3277 3309 4049 +f 3277 4049 4001 +f 3309 3333 4113 +f 3309 4113 4049 +f 3333 3397 4161 +f 3333 4161 4113 +f 3397 3429 4177 +f 3397 4177 4161 +f 3429 3445 4201 +f 3429 4201 4177 +f 3445 3477 4241 +f 3445 4241 4201 +f 3477 3493 4257 +f 3477 4257 4241 +f 3493 3517 4297 +f 3493 4297 4257 +f 3517 3533 4321 +f 3517 4321 4297 +f 3533 3549 4345 +f 3533 4345 4321 +f 3549 3573 4353 +f 3549 4353 4345 +f 3573 3589 4361 +f 3573 4361 4353 +f 3589 3590 4362 +f 3589 4362 4361 +f 3590 3574 4354 +f 3590 4354 4362 +f 3574 3550 4346 +f 3574 4346 4354 +f 3550 3534 4322 +f 3550 4322 4346 +f 3534 3518 4298 +f 3534 4298 4322 +f 3518 3494 4258 +f 3518 4258 4298 +f 3494 3478 4242 +f 3494 4242 4258 +f 3478 3446 4202 +f 3478 4202 4242 +f 3446 3430 4178 +f 3446 4178 4202 +f 3430 3398 4162 +f 3430 4162 4178 +f 3398 3334 4114 +f 3398 4114 4162 +f 3334 3310 4050 +f 3334 4050 4114 +f 3310 3278 4002 +f 3310 4002 4050 +f 3278 3230 3986 +f 3278 3986 4002 +f 3230 3182 3906 +f 3230 3906 3986 +f 3182 3150 3890 +f 3182 3890 3906 +f 3150 3118 3818 +f 3150 3818 3890 +f 3118 3054 3786 +f 3118 3786 3818 +f 3054 3022 3722 +f 3054 3722 3786 +f 3022 2974 3690 +f 3022 3690 3722 +f 2974 2926 3558 +f 2974 3558 3690 +f 2926 2886 3454 +f 2926 3454 3558 +f 2886 2838 3342 +f 2886 3342 3454 +f 2838 2790 3262 +f 2838 3262 3342 +f 2790 2642 3166 +f 2790 3166 3262 +f 2642 2514 3102 +f 2642 3102 3166 +f 2514 2442 3006 +f 2514 3006 3102 +f 2442 2346 2942 +f 2442 2942 3006 +f 2346 2266 2854 +f 2346 2854 2942 +f 2266 2202 2754 +f 2266 2754 2854 +f 2202 2122 2570 +f 2202 2570 2754 +f 2122 2042 2418 +f 2122 2418 2570 +f 2042 1970 2298 +f 2042 2298 2418 +f 1970 1922 2186 +f 1970 2186 2298 +f 1922 1842 2074 +f 1922 2074 2186 +f 1842 1606 2002 +f 1842 2002 2074 +f 1606 1446 1890 +f 1606 1890 2002 +f 1446 1334 1702 +f 1446 1702 1890 +f 1334 1222 1470 +f 1334 1470 1702 +f 1222 1102 1286 +f 1222 1286 1470 +f 1102 1022 1150 +f 1102 1150 1286 +f 1022 934 1030 +f 1022 1030 1150 +f 934 854 910 +f 934 910 1030 +f 854 782 806 +f 854 806 910 +f 805 909 965 +f 805 965 829 +f 909 1029 1109 +f 909 1109 965 +f 1029 1149 1293 +f 1029 1293 1109 +f 1149 1285 1517 +f 1149 1517 1293 +f 1285 1469 1857 +f 1285 1857 1517 +f 1469 1701 1953 +f 1469 1953 1857 +f 1701 1889 2089 +f 1701 2089 1953 +f 1889 2001 2233 +f 1889 2233 2089 +f 2001 2073 2385 +f 2001 2385 2233 +f 2073 2185 2545 +f 2073 2545 2385 +f 2185 2297 2805 +f 2185 2805 2545 +f 2297 2417 2909 +f 2297 2909 2805 +f 2417 2569 2989 +f 2417 2989 2909 +f 2569 2753 3133 +f 2569 3133 2989 +f 2753 2853 3237 +f 2753 3237 3133 +f 2853 2941 3365 +f 2853 3365 3237 +f 2941 3005 3501 +f 2941 3501 3365 +f 3005 3101 3705 +f 3005 3705 3501 +f 3101 3165 3753 +f 3101 3753 3705 +f 3165 3261 3849 +f 3165 3849 3753 +f 3261 3341 3913 +f 3261 3913 3849 +f 3341 3453 4009 +f 3341 4009 3913 +f 3453 3557 4121 +f 3453 4121 4009 +f 3557 3689 4193 +f 3557 4193 4121 +f 3689 3721 4313 +f 3689 4313 4193 +f 3721 3785 4453 +f 3721 4453 4313 +f 3785 3817 4493 +f 3785 4493 4453 +f 3817 3889 4557 +f 3817 4557 4493 +f 3889 3905 4605 +f 3889 4605 4557 +f 3905 3985 4653 +f 3905 4653 4605 +f 3985 4001 4725 +f 3985 4725 4653 +f 4001 4049 4749 +f 4001 4749 4725 +f 4049 4113 4781 +f 4049 4781 4749 +f 4113 4161 4845 +f 4113 4845 4781 +f 4161 4177 4893 +f 4161 4893 4845 +f 4177 4201 4933 +f 4177 4933 4893 +f 4201 4241 4949 +f 4201 4949 4933 +f 4241 4257 4997 +f 4241 4997 4949 +f 4257 4297 5013 +f 4257 5013 4997 +f 4297 4321 5037 +f 4297 5037 5013 +f 4321 4345 5069 +f 4321 5069 5037 +f 4345 4353 5077 +f 4345 5077 5069 +f 4353 4361 5085 +f 4353 5085 5077 +f 4361 4362 5086 +f 4361 5086 5085 +f 4362 4354 5078 +f 4362 5078 5086 +f 4354 4346 5070 +f 4354 5070 5078 +f 4346 4322 5038 +f 4346 5038 5070 +f 4322 4298 5014 +f 4322 5014 5038 +f 4298 4258 4998 +f 4298 4998 5014 +f 4258 4242 4950 +f 4258 4950 4998 +f 4242 4202 4934 +f 4242 4934 4950 +f 4202 4178 4894 +f 4202 4894 4934 +f 4178 4162 4846 +f 4178 4846 4894 +f 4162 4114 4782 +f 4162 4782 4846 +f 4114 4050 4750 +f 4114 4750 4782 +f 4050 4002 4726 +f 4050 4726 4750 +f 4002 3986 4654 +f 4002 4654 4726 +f 3986 3906 4606 +f 3986 4606 4654 +f 3906 3890 4558 +f 3906 4558 4606 +f 3890 3818 4494 +f 3890 4494 4558 +f 3818 3786 4454 +f 3818 4454 4494 +f 3786 3722 4314 +f 3786 4314 4454 +f 3722 3690 4194 +f 3722 4194 4314 +f 3690 3558 4122 +f 3690 4122 4194 +f 3558 3454 4010 +f 3558 4010 4122 +f 3454 3342 3914 +f 3454 3914 4010 +f 3342 3262 3850 +f 3342 3850 3914 +f 3262 3166 3754 +f 3262 3754 3850 +f 3166 3102 3706 +f 3166 3706 3754 +f 3102 3006 3502 +f 3102 3502 3706 +f 3006 2942 3366 +f 3006 3366 3502 +f 2942 2854 3238 +f 2942 3238 3366 +f 2854 2754 3134 +f 2854 3134 3238 +f 2754 2570 2990 +f 2754 2990 3134 +f 2570 2418 2910 +f 2570 2910 2990 +f 2418 2298 2806 +f 2418 2806 2910 +f 2298 2186 2546 +f 2298 2546 2806 +f 2186 2074 2386 +f 2186 2386 2546 +f 2074 2002 2234 +f 2074 2234 2386 +f 2002 1890 2090 +f 2002 2090 2234 +f 1890 1702 1954 +f 1890 1954 2090 +f 1702 1470 1858 +f 1702 1858 1954 +f 1470 1286 1518 +f 1470 1518 1858 +f 1286 1150 1294 +f 1286 1294 1518 +f 1150 1030 1110 +f 1150 1110 1294 +f 1030 910 966 +f 1030 966 1110 +f 910 806 830 +f 910 830 966 +f 829 965 1013 +f 829 1013 845 +f 965 1109 1229 +f 965 1229 1013 +f 1109 1293 1485 +f 1109 1485 1229 +f 1293 1517 1865 +f 1293 1865 1485 +f 1517 1857 2017 +f 1517 2017 1865 +f 1857 1953 2153 +f 1857 2153 2017 +f 1953 2089 2313 +f 1953 2313 2153 +f 2089 2233 2497 +f 2089 2497 2313 +f 2233 2385 2821 +f 2233 2821 2497 +f 2385 2545 2957 +f 2385 2957 2821 +f 2545 2805 3061 +f 2545 3061 2957 +f 2805 2909 3213 +f 2805 3213 3061 +f 2909 2989 3381 +f 2909 3381 3213 +f 2989 3133 3613 +f 2989 3613 3381 +f 3133 3237 3737 +f 3133 3737 3613 +f 3237 3365 3857 +f 3237 3857 3737 +f 3365 3501 3969 +f 3365 3969 3857 +f 3501 3705 4065 +f 3501 4065 3969 +f 3705 3753 4217 +f 3705 4217 4065 +f 3753 3849 4409 +f 3753 4409 4217 +f 3849 3913 4509 +f 3849 4509 4409 +f 3913 4009 4589 +f 3913 4589 4509 +f 4009 4121 4677 +f 4009 4677 4589 +f 4121 4193 4765 +f 4121 4765 4677 +f 4193 4313 4861 +f 4193 4861 4765 +f 4313 4453 4957 +f 4313 4957 4861 +f 4453 4493 5093 +f 4453 5093 4957 +f 4493 4557 5177 +f 4493 5177 5093 +f 4557 4605 5241 +f 4557 5241 5177 +f 4605 4653 5305 +f 4605 5305 5241 +f 4653 4725 5353 +f 4653 5353 5305 +f 4725 4749 5385 +f 4725 5385 5353 +f 4749 4781 5481 +f 4749 5481 5385 +f 4781 4845 5505 +f 4781 5505 5481 +f 4845 4893 5537 +f 4845 5537 5505 +f 4893 4933 5593 +f 4893 5593 5537 +f 4933 4949 5625 +f 4933 5625 5593 +f 4949 4997 5665 +f 4949 5665 5625 +f 4997 5013 5673 +f 4997 5673 5665 +f 5013 5037 5705 +f 5013 5705 5673 +f 5037 5069 5745 +f 5037 5745 5705 +f 5069 5077 5761 +f 5069 5761 5745 +f 5077 5085 5769 +f 5077 5769 5761 +f 5085 5086 5770 +f 5085 5770 5769 +f 5086 5078 5762 +f 5086 5762 5770 +f 5078 5070 5746 +f 5078 5746 5762 +f 5070 5038 5706 +f 5070 5706 5746 +f 5038 5014 5674 +f 5038 5674 5706 +f 5014 4998 5666 +f 5014 5666 5674 +f 4998 4950 5626 +f 4998 5626 5666 +f 4950 4934 5594 +f 4950 5594 5626 +f 4934 4894 5538 +f 4934 5538 5594 +f 4894 4846 5506 +f 4894 5506 5538 +f 4846 4782 5482 +f 4846 5482 5506 +f 4782 4750 5386 +f 4782 5386 5482 +f 4750 4726 5354 +f 4750 5354 5386 +f 4726 4654 5306 +f 4726 5306 5354 +f 4654 4606 5242 +f 4654 5242 5306 +f 4606 4558 5178 +f 4606 5178 5242 +f 4558 4494 5094 +f 4558 5094 5178 +f 4494 4454 4958 +f 4494 4958 5094 +f 4454 4314 4862 +f 4454 4862 4958 +f 4314 4194 4766 +f 4314 4766 4862 +f 4194 4122 4678 +f 4194 4678 4766 +f 4122 4010 4590 +f 4122 4590 4678 +f 4010 3914 4510 +f 4010 4510 4590 +f 3914 3850 4410 +f 3914 4410 4510 +f 3850 3754 4218 +f 3850 4218 4410 +f 3754 3706 4066 +f 3754 4066 4218 +f 3706 3502 3970 +f 3706 3970 4066 +f 3502 3366 3858 +f 3502 3858 3970 +f 3366 3238 3738 +f 3366 3738 3858 +f 3238 3134 3614 +f 3238 3614 3738 +f 3134 2990 3382 +f 3134 3382 3614 +f 2990 2910 3214 +f 2990 3214 3382 +f 2910 2806 3062 +f 2910 3062 3214 +f 2806 2546 2958 +f 2806 2958 3062 +f 2546 2386 2822 +f 2546 2822 2958 +f 2386 2234 2498 +f 2386 2498 2822 +f 2234 2090 2314 +f 2234 2314 2498 +f 2090 1954 2154 +f 2090 2154 2314 +f 1954 1858 2018 +f 1954 2018 2154 +f 1858 1518 1866 +f 1858 1866 2018 +f 1518 1294 1486 +f 1518 1486 1866 +f 1294 1110 1230 +f 1294 1230 1486 +f 1110 966 1014 +f 1110 1014 1230 +f 966 830 846 +f 966 846 1014 +f 845 1013 1077 +f 845 1077 877 +f 1013 1229 1341 +f 1013 1341 1077 +f 1229 1485 1709 +f 1229 1709 1341 +f 1485 1865 1961 +f 1485 1961 1709 +f 1865 2017 2161 +f 1865 2161 1961 +f 2017 2153 2361 +f 2017 2361 2161 +f 2153 2313 2617 +f 2153 2617 2361 +f 2313 2497 2869 +f 2313 2869 2617 +f 2497 2821 3037 +f 2497 3037 2869 +f 2821 2957 3197 +f 2821 3197 3037 +f 2957 3061 3413 +f 2957 3413 3197 +f 3061 3213 3673 +f 3061 3673 3413 +f 3213 3381 3801 +f 3213 3801 3673 +f 3381 3613 3953 +f 3381 3953 3801 +f 3613 3737 4081 +f 3613 4081 3953 +f 3737 3857 4265 +f 3737 4265 4081 +f 3857 3969 4477 +f 3857 4477 4265 +f 3969 4065 4573 +f 3969 4573 4477 +f 4065 4217 4717 +f 4065 4717 4573 +f 4217 4409 4813 +f 4217 4813 4717 +f 4409 4509 4965 +f 4409 4965 4813 +f 4509 4589 5157 +f 4509 5157 4965 +f 4589 4677 5249 +f 4589 5249 5157 +f 4677 4765 5337 +f 4677 5337 5249 +f 4765 4861 5409 +f 4765 5409 5337 +f 4861 4957 5513 +f 4861 5513 5409 +f 4957 5093 5609 +f 4957 5609 5513 +f 5093 5177 5721 +f 5093 5721 5609 +f 5177 5241 5845 +f 5177 5845 5721 +f 5241 5305 5909 +f 5241 5909 5845 +f 5305 5353 5957 +f 5305 5957 5909 +f 5353 5385 6021 +f 5353 6021 5957 +f 5385 5481 6093 +f 5385 6093 6021 +f 5481 5505 6109 +f 5481 6109 6093 +f 5505 5537 6165 +f 5505 6165 6109 +f 5537 5593 6221 +f 5537 6221 6165 +f 5593 5625 6261 +f 5593 6261 6221 +f 5625 5665 6301 +f 5625 6301 6261 +f 5665 5673 6317 +f 5665 6317 6301 +f 5673 5705 6349 +f 5673 6349 6317 +f 5705 5745 6381 +f 5705 6381 6349 +f 5745 5761 6405 +f 5745 6405 6381 +f 5761 5769 6421 +f 5761 6421 6405 +f 5769 5770 6422 +f 5769 6422 6421 +f 5770 5762 6406 +f 5770 6406 6422 +f 5762 5746 6382 +f 5762 6382 6406 +f 5746 5706 6350 +f 5746 6350 6382 +f 5706 5674 6318 +f 5706 6318 6350 +f 5674 5666 6302 +f 5674 6302 6318 +f 5666 5626 6262 +f 5666 6262 6302 +f 5626 5594 6222 +f 5626 6222 6262 +f 5594 5538 6166 +f 5594 6166 6222 +f 5538 5506 6110 +f 5538 6110 6166 +f 5506 5482 6094 +f 5506 6094 6110 +f 5482 5386 6022 +f 5482 6022 6094 +f 5386 5354 5958 +f 5386 5958 6022 +f 5354 5306 5910 +f 5354 5910 5958 +f 5306 5242 5846 +f 5306 5846 5910 +f 5242 5178 5722 +f 5242 5722 5846 +f 5178 5094 5610 +f 5178 5610 5722 +f 5094 4958 5514 +f 5094 5514 5610 +f 4958 4862 5410 +f 4958 5410 5514 +f 4862 4766 5338 +f 4862 5338 5410 +f 4766 4678 5250 +f 4766 5250 5338 +f 4678 4590 5158 +f 4678 5158 5250 +f 4590 4510 4966 +f 4590 4966 5158 +f 4510 4410 4814 +f 4510 4814 4966 +f 4410 4218 4718 +f 4410 4718 4814 +f 4218 4066 4574 +f 4218 4574 4718 +f 4066 3970 4478 +f 4066 4478 4574 +f 3970 3858 4266 +f 3970 4266 4478 +f 3858 3738 4082 +f 3858 4082 4266 +f 3738 3614 3954 +f 3738 3954 4082 +f 3614 3382 3802 +f 3614 3802 3954 +f 3382 3214 3674 +f 3382 3674 3802 +f 3214 3062 3414 +f 3214 3414 3674 +f 3062 2958 3198 +f 3062 3198 3414 +f 2958 2822 3038 +f 2958 3038 3198 +f 2822 2498 2870 +f 2822 2870 3038 +f 2498 2314 2618 +f 2498 2618 2870 +f 2314 2154 2362 +f 2314 2362 2618 +f 2154 2018 2162 +f 2154 2162 2362 +f 2018 1866 1962 +f 2018 1962 2162 +f 1866 1486 1710 +f 1866 1710 1962 +f 1486 1230 1342 +f 1486 1342 1710 +f 1230 1014 1078 +f 1230 1078 1342 +f 1014 846 878 +f 1014 878 1078 +f 877 1077 1141 +f 877 1141 893 +f 1077 1341 1453 +f 1077 1453 1141 +f 1341 1709 1897 +f 1341 1897 1453 +f 1709 1961 2097 +f 1709 2097 1897 +f 1961 2161 2321 +f 1961 2321 2097 +f 2161 2361 2625 +f 2161 2625 2321 +f 2361 2617 2901 +f 2361 2901 2625 +f 2617 2869 3085 +f 2617 3085 2901 +f 2869 3037 3293 +f 2869 3293 3085 +f 3037 3197 3565 +f 3037 3565 3293 +f 3197 3413 3769 +f 3197 3769 3565 +f 3413 3673 3937 +f 3413 3937 3769 +f 3673 3801 4145 +f 3673 4145 3937 +f 3801 3953 4369 +f 3801 4369 4145 +f 3953 4081 4541 +f 3953 4541 4369 +f 4081 4265 4669 +f 4081 4669 4541 +f 4265 4477 4821 +f 4265 4821 4669 +f 4477 4573 5005 +f 4477 5005 4821 +f 4573 4717 5209 +f 4573 5209 5005 +f 4717 4813 5321 +f 4717 5321 5209 +f 4813 4965 5457 +f 4813 5457 5321 +f 4965 5157 5553 +f 4965 5553 5457 +f 5157 5249 5713 +f 5157 5713 5553 +f 5249 5337 5893 +f 5249 5893 5713 +f 5337 5409 5965 +f 5337 5965 5893 +f 5409 5513 6069 +f 5409 6069 5965 +f 5513 5609 6141 +f 5513 6141 6069 +f 5609 5721 6253 +f 5609 6253 6141 +f 5721 5845 6365 +f 5721 6365 6253 +f 5845 5909 6481 +f 5845 6481 6365 +f 5909 5957 6545 +f 5909 6545 6481 +f 5957 6021 6625 +f 5957 6625 6545 +f 6021 6093 6665 +f 6021 6665 6625 +f 6093 6109 6705 +f 6093 6705 6665 +f 6109 6165 6745 +f 6109 6745 6705 +f 6165 6221 6825 +f 6165 6825 6745 +f 6221 6261 6857 +f 6221 6857 6825 +f 6261 6301 6881 +f 6261 6881 6857 +f 6301 6317 6913 +f 6301 6913 6881 +f 6317 6349 6961 +f 6317 6961 6913 +f 6349 6381 6977 +f 6349 6977 6961 +f 6381 6405 7009 +f 6381 7009 6977 +f 6405 6421 7017 +f 6405 7017 7009 +f 6421 6422 7018 +f 6421 7018 7017 +f 6422 6406 7010 +f 6422 7010 7018 +f 6406 6382 6978 +f 6406 6978 7010 +f 6382 6350 6962 +f 6382 6962 6978 +f 6350 6318 6914 +f 6350 6914 6962 +f 6318 6302 6882 +f 6318 6882 6914 +f 6302 6262 6858 +f 6302 6858 6882 +f 6262 6222 6826 +f 6262 6826 6858 +f 6222 6166 6746 +f 6222 6746 6826 +f 6166 6110 6706 +f 6166 6706 6746 +f 6110 6094 6666 +f 6110 6666 6706 +f 6094 6022 6626 +f 6094 6626 6666 +f 6022 5958 6546 +f 6022 6546 6626 +f 5958 5910 6482 +f 5958 6482 6546 +f 5910 5846 6366 +f 5910 6366 6482 +f 5846 5722 6254 +f 5846 6254 6366 +f 5722 5610 6142 +f 5722 6142 6254 +f 5610 5514 6070 +f 5610 6070 6142 +f 5514 5410 5966 +f 5514 5966 6070 +f 5410 5338 5894 +f 5410 5894 5966 +f 5338 5250 5714 +f 5338 5714 5894 +f 5250 5158 5554 +f 5250 5554 5714 +f 5158 4966 5458 +f 5158 5458 5554 +f 4966 4814 5322 +f 4966 5322 5458 +f 4814 4718 5210 +f 4814 5210 5322 +f 4718 4574 5006 +f 4718 5006 5210 +f 4574 4478 4822 +f 4574 4822 5006 +f 4478 4266 4670 +f 4478 4670 4822 +f 4266 4082 4542 +f 4266 4542 4670 +f 4082 3954 4370 +f 4082 4370 4542 +f 3954 3802 4146 +f 3954 4146 4370 +f 3802 3674 3938 +f 3802 3938 4146 +f 3674 3414 3770 +f 3674 3770 3938 +f 3414 3198 3566 +f 3414 3566 3770 +f 3198 3038 3294 +f 3198 3294 3566 +f 3038 2870 3086 +f 3038 3086 3294 +f 2870 2618 2902 +f 2870 2902 3086 +f 2618 2362 2626 +f 2618 2626 2902 +f 2362 2162 2322 +f 2362 2322 2626 +f 2162 1962 2098 +f 2162 2098 2322 +f 1962 1710 1898 +f 1962 1898 2098 +f 1710 1342 1454 +f 1710 1454 1898 +f 1342 1078 1142 +f 1342 1142 1454 +f 1078 878 894 +f 1078 894 1142 +f 893 1141 1213 +f 893 1213 925 +f 1141 1453 1613 +f 1141 1613 1213 +f 1453 1897 2009 +f 1453 2009 1613 +f 1897 2097 2241 +f 1897 2241 2009 +f 2097 2321 2505 +f 2097 2505 2241 +f 2321 2625 2877 +f 2321 2877 2505 +f 2625 2901 3093 +f 2625 3093 2877 +f 2901 3085 3317 +f 2901 3317 3093 +f 3085 3293 3657 +f 3085 3657 3317 +f 3293 3565 3833 +f 3293 3833 3657 +f 3565 3769 4033 +f 3565 4033 3833 +f 3769 3937 4281 +f 3769 4281 4033 +f 3937 4145 4525 +f 3937 4525 4281 +f 4145 4369 4693 +f 4145 4693 4525 +f 4369 4541 4869 +f 4369 4869 4693 +f 4541 4669 5117 +f 4541 5117 4869 +f 4669 4821 5289 +f 4669 5289 5117 +f 4821 5005 5401 +f 4821 5401 5289 +f 5005 5209 5569 +f 5005 5569 5401 +f 5209 5321 5801 +f 5209 5801 5569 +f 5321 5457 5925 +f 5321 5925 5801 +f 5457 5553 6061 +f 5457 6061 5925 +f 5553 5713 6181 +f 5553 6181 6061 +f 5713 5893 6309 +f 5713 6309 6181 +f 5893 5965 6489 +f 5893 6489 6309 +f 5965 6069 6577 +f 5965 6577 6489 +f 6069 6141 6673 +f 6069 6673 6577 +f 6141 6253 6761 +f 6141 6761 6673 +f 6253 6365 6865 +f 6253 6865 6761 +f 6365 6481 6985 +f 6365 6985 6865 +f 6481 6545 7093 +f 6481 7093 6985 +f 6545 6625 7157 +f 6545 7157 7093 +f 6625 6665 7221 +f 6625 7221 7157 +f 6665 6705 7261 +f 6665 7261 7221 +f 6705 6745 7309 +f 6705 7309 7261 +f 6745 6825 7381 +f 6745 7381 7309 +f 6825 6857 7429 +f 6825 7429 7381 +f 6857 6881 7445 +f 6857 7445 7429 +f 6881 6913 7485 +f 6881 7485 7445 +f 6913 6961 7533 +f 6913 7533 7485 +f 6961 6977 7565 +f 6961 7565 7533 +f 6977 7009 7573 +f 6977 7573 7565 +f 7009 7017 7581 +f 7009 7581 7573 +f 7017 7018 7582 +f 7017 7582 7581 +f 7018 7010 7574 +f 7018 7574 7582 +f 7010 6978 7566 +f 7010 7566 7574 +f 6978 6962 7534 +f 6978 7534 7566 +f 6962 6914 7486 +f 6962 7486 7534 +f 6914 6882 7446 +f 6914 7446 7486 +f 6882 6858 7430 +f 6882 7430 7446 +f 6858 6826 7382 +f 6858 7382 7430 +f 6826 6746 7310 +f 6826 7310 7382 +f 6746 6706 7262 +f 6746 7262 7310 +f 6706 6666 7222 +f 6706 7222 7262 +f 6666 6626 7158 +f 6666 7158 7222 +f 6626 6546 7094 +f 6626 7094 7158 +f 6546 6482 6986 +f 6546 6986 7094 +f 6482 6366 6866 +f 6482 6866 6986 +f 6366 6254 6762 +f 6366 6762 6866 +f 6254 6142 6674 +f 6254 6674 6762 +f 6142 6070 6578 +f 6142 6578 6674 +f 6070 5966 6490 +f 6070 6490 6578 +f 5966 5894 6310 +f 5966 6310 6490 +f 5894 5714 6182 +f 5894 6182 6310 +f 5714 5554 6062 +f 5714 6062 6182 +f 5554 5458 5926 +f 5554 5926 6062 +f 5458 5322 5802 +f 5458 5802 5926 +f 5322 5210 5570 +f 5322 5570 5802 +f 5210 5006 5402 +f 5210 5402 5570 +f 5006 4822 5290 +f 5006 5290 5402 +f 4822 4670 5118 +f 4822 5118 5290 +f 4670 4542 4870 +f 4670 4870 5118 +f 4542 4370 4694 +f 4542 4694 4870 +f 4370 4146 4526 +f 4370 4526 4694 +f 4146 3938 4282 +f 4146 4282 4526 +f 3938 3770 4034 +f 3938 4034 4282 +f 3770 3566 3834 +f 3770 3834 4034 +f 3566 3294 3658 +f 3566 3658 3834 +f 3294 3086 3318 +f 3294 3318 3658 +f 3086 2902 3094 +f 3086 3094 3318 +f 2902 2626 2878 +f 2902 2878 3094 +f 2626 2322 2506 +f 2626 2506 2878 +f 2322 2098 2242 +f 2322 2242 2506 +f 2098 1898 2010 +f 2098 2010 2242 +f 1898 1454 1614 +f 1898 1614 2010 +f 1454 1142 1214 +f 1454 1214 1614 +f 1142 894 926 +f 1142 926 1214 +f 925 1213 1277 +f 925 1277 949 +f 1213 1613 1849 +f 1213 1849 1277 +f 1613 2009 2081 +f 1613 2081 1849 +f 2009 2241 2393 +f 2009 2393 2081 +f 2241 2505 2829 +f 2241 2829 2393 +f 2505 2877 3045 +f 2505 3045 2829 +f 2877 3093 3301 +f 2877 3301 3045 +f 3093 3317 3665 +f 3093 3665 3301 +f 3317 3657 3881 +f 3317 3881 3665 +f 3657 3833 4089 +f 3657 4089 3881 +f 3833 4033 4417 +f 3833 4417 4089 +f 4033 4281 4613 +f 4033 4613 4417 +f 4281 4525 4789 +f 4281 4789 4613 +f 4525 4693 5045 +f 4525 5045 4789 +f 4693 4869 5273 +f 4693 5273 5045 +f 4869 5117 5449 +f 4869 5449 5273 +f 5117 5289 5641 +f 5117 5641 5449 +f 5289 5401 5877 +f 5289 5877 5641 +f 5401 5569 6005 +f 5401 6005 5877 +f 5569 5801 6149 +f 5569 6149 6005 +f 5801 5925 6341 +f 5801 6341 6149 +f 5925 6061 6529 +f 5925 6529 6341 +f 6061 6181 6649 +f 6061 6649 6529 +f 6181 6309 6769 +f 6181 6769 6649 +f 6309 6489 6897 +f 6309 6897 6769 +f 6489 6577 7085 +f 6489 7085 6897 +f 6577 6673 7205 +f 6577 7205 7085 +f 6673 6761 7277 +f 6673 7277 7205 +f 6761 6865 7373 +f 6761 7373 7277 +f 6865 6985 7453 +f 6865 7453 7373 +f 6985 7093 7589 +f 6985 7589 7453 +f 7093 7157 7681 +f 7093 7681 7589 +f 7157 7221 7761 +f 7157 7761 7681 +f 7221 7261 7793 +f 7221 7793 7761 +f 7261 7309 7849 +f 7261 7849 7793 +f 7309 7381 7921 +f 7309 7921 7849 +f 7381 7429 7977 +f 7381 7977 7921 +f 7429 7445 8001 +f 7429 8001 7977 +f 7445 7485 8017 +f 7445 8017 8001 +f 7485 7533 8065 +f 7485 8065 8017 +f 7533 7565 8105 +f 7533 8105 8065 +f 7565 7573 8129 +f 7565 8129 8105 +f 7573 7581 8137 +f 7573 8137 8129 +f 7581 7582 8138 +f 7581 8138 8137 +f 7582 7574 8130 +f 7582 8130 8138 +f 7574 7566 8106 +f 7574 8106 8130 +f 7566 7534 8066 +f 7566 8066 8106 +f 7534 7486 8018 +f 7534 8018 8066 +f 7486 7446 8002 +f 7486 8002 8018 +f 7446 7430 7978 +f 7446 7978 8002 +f 7430 7382 7922 +f 7430 7922 7978 +f 7382 7310 7850 +f 7382 7850 7922 +f 7310 7262 7794 +f 7310 7794 7850 +f 7262 7222 7762 +f 7262 7762 7794 +f 7222 7158 7682 +f 7222 7682 7762 +f 7158 7094 7590 +f 7158 7590 7682 +f 7094 6986 7454 +f 7094 7454 7590 +f 6986 6866 7374 +f 6986 7374 7454 +f 6866 6762 7278 +f 6866 7278 7374 +f 6762 6674 7206 +f 6762 7206 7278 +f 6674 6578 7086 +f 6674 7086 7206 +f 6578 6490 6898 +f 6578 6898 7086 +f 6490 6310 6770 +f 6490 6770 6898 +f 6310 6182 6650 +f 6310 6650 6770 +f 6182 6062 6530 +f 6182 6530 6650 +f 6062 5926 6342 +f 6062 6342 6530 +f 5926 5802 6150 +f 5926 6150 6342 +f 5802 5570 6006 +f 5802 6006 6150 +f 5570 5402 5878 +f 5570 5878 6006 +f 5402 5290 5642 +f 5402 5642 5878 +f 5290 5118 5450 +f 5290 5450 5642 +f 5118 4870 5274 +f 5118 5274 5450 +f 4870 4694 5046 +f 4870 5046 5274 +f 4694 4526 4790 +f 4694 4790 5046 +f 4526 4282 4614 +f 4526 4614 4790 +f 4282 4034 4418 +f 4282 4418 4614 +f 4034 3834 4090 +f 4034 4090 4418 +f 3834 3658 3882 +f 3834 3882 4090 +f 3658 3318 3666 +f 3658 3666 3882 +f 3318 3094 3302 +f 3318 3302 3666 +f 3094 2878 3046 +f 3094 3046 3302 +f 2878 2506 2830 +f 2878 2830 3046 +f 2506 2242 2394 +f 2506 2394 2830 +f 2242 2010 2082 +f 2242 2082 2394 +f 2010 1614 1850 +f 2010 1850 2082 +f 1614 1214 1278 +f 1614 1278 1850 +f 1214 926 950 +f 1214 950 1278 +f 949 1277 1373 +f 949 1373 981 +f 1277 1849 1929 +f 1277 1929 1373 +f 1849 2081 2193 +f 1849 2193 1929 +f 2081 2393 2553 +f 2081 2553 2193 +f 2393 2829 2965 +f 2393 2965 2553 +f 2829 3045 3205 +f 2829 3205 2965 +f 3045 3301 3581 +f 3045 3581 3205 +f 3301 3665 3841 +f 3301 3841 3581 +f 3665 3881 4097 +f 3665 4097 3841 +f 3881 4089 4461 +f 3881 4461 4097 +f 4089 4417 4637 +f 4089 4637 4461 +f 4417 4613 4901 +f 4417 4901 4637 +f 4613 4789 5185 +f 4613 5185 4901 +f 4789 5045 5369 +f 4789 5369 5185 +f 5045 5273 5577 +f 5045 5577 5369 +f 5273 5449 5853 +f 5273 5853 5577 +f 5449 5641 6029 +f 5449 6029 5853 +f 5641 5877 6205 +f 5641 6205 6029 +f 5877 6005 6437 +f 5877 6437 6205 +f 6005 6149 6609 +f 6005 6609 6437 +f 6149 6341 6729 +f 6149 6729 6609 +f 6341 6529 6905 +f 6341 6905 6729 +f 6529 6649 7109 +f 6529 7109 6905 +f 6649 6769 7229 +f 6649 7229 7109 +f 6769 6897 7365 +f 6769 7365 7229 +f 6897 7085 7501 +f 6897 7501 7365 +f 7085 7205 7657 +f 7085 7657 7501 +f 7205 7277 7769 +f 7205 7769 7657 +f 7277 7373 7841 +f 7277 7841 7769 +f 7373 7453 7969 +f 7373 7969 7841 +f 7453 7589 8049 +f 7453 8049 7969 +f 7589 7681 8177 +f 7589 8177 8049 +f 7681 7761 8269 +f 7681 8269 8177 +f 7761 7793 8317 +f 7761 8317 8269 +f 7793 7849 8365 +f 7793 8365 8317 +f 7849 7921 8405 +f 7849 8405 8365 +f 7921 7977 8477 +f 7921 8477 8405 +f 7977 8001 8525 +f 7977 8525 8477 +f 8001 8017 8549 +f 8001 8549 8525 +f 8017 8065 8573 +f 8017 8573 8549 +f 8065 8105 8605 +f 8065 8605 8573 +f 8105 8129 8629 +f 8105 8629 8605 +f 8129 8137 8645 +f 8129 8645 8629 +f 8137 8138 8646 +f 8137 8646 8645 +f 8138 8130 8630 +f 8138 8630 8646 +f 8130 8106 8606 +f 8130 8606 8630 +f 8106 8066 8574 +f 8106 8574 8606 +f 8066 8018 8550 +f 8066 8550 8574 +f 8018 8002 8526 +f 8018 8526 8550 +f 8002 7978 8478 +f 8002 8478 8526 +f 7978 7922 8406 +f 7978 8406 8478 +f 7922 7850 8366 +f 7922 8366 8406 +f 7850 7794 8318 +f 7850 8318 8366 +f 7794 7762 8270 +f 7794 8270 8318 +f 7762 7682 8178 +f 7762 8178 8270 +f 7682 7590 8050 +f 7682 8050 8178 +f 7590 7454 7970 +f 7590 7970 8050 +f 7454 7374 7842 +f 7454 7842 7970 +f 7374 7278 7770 +f 7374 7770 7842 +f 7278 7206 7658 +f 7278 7658 7770 +f 7206 7086 7502 +f 7206 7502 7658 +f 7086 6898 7366 +f 7086 7366 7502 +f 6898 6770 7230 +f 6898 7230 7366 +f 6770 6650 7110 +f 6770 7110 7230 +f 6650 6530 6906 +f 6650 6906 7110 +f 6530 6342 6730 +f 6530 6730 6906 +f 6342 6150 6610 +f 6342 6610 6730 +f 6150 6006 6438 +f 6150 6438 6610 +f 6006 5878 6206 +f 6006 6206 6438 +f 5878 5642 6030 +f 5878 6030 6206 +f 5642 5450 5854 +f 5642 5854 6030 +f 5450 5274 5578 +f 5450 5578 5854 +f 5274 5046 5370 +f 5274 5370 5578 +f 5046 4790 5186 +f 5046 5186 5370 +f 4790 4614 4902 +f 4790 4902 5186 +f 4614 4418 4638 +f 4614 4638 4902 +f 4418 4090 4462 +f 4418 4462 4638 +f 4090 3882 4098 +f 4090 4098 4462 +f 3882 3666 3842 +f 3882 3842 4098 +f 3666 3302 3582 +f 3666 3582 3842 +f 3302 3046 3206 +f 3302 3206 3582 +f 3046 2830 2966 +f 3046 2966 3206 +f 2830 2394 2554 +f 2830 2554 2966 +f 2394 2082 2194 +f 2394 2194 2554 +f 2082 1850 1930 +f 2082 1930 2194 +f 1850 1278 1374 +f 1850 1374 1930 +f 1278 950 982 +f 1278 982 1374 +f 981 1373 1437 +f 981 1437 997 +f 1373 1929 1977 +f 1373 1977 1437 +f 1929 2193 2305 +f 1929 2305 1977 +f 2193 2553 2813 +f 2193 2813 2305 +f 2553 2965 3069 +f 2553 3069 2813 +f 2965 3205 3421 +f 2965 3421 3069 +f 3205 3581 3777 +f 3205 3777 3421 +f 3581 3841 4041 +f 3581 4041 3777 +f 3841 4097 4425 +f 3841 4425 4041 +f 4097 4461 4645 +f 4097 4645 4425 +f 4461 4637 4925 +f 4461 4925 4645 +f 4637 4901 5225 +f 4637 5225 4925 +f 4901 5185 5433 +f 4901 5433 5225 +f 5185 5369 5681 +f 5185 5681 5433 +f 5369 5577 5941 +f 5369 5941 5681 +f 5577 5853 6117 +f 5577 6117 5941 +f 5853 6029 6397 +f 5853 6397 6117 +f 6029 6205 6601 +f 6029 6601 6397 +f 6205 6437 6753 +f 6205 6753 6601 +f 6437 6609 6993 +f 6437 6993 6753 +f 6609 6729 7181 +f 6609 7181 6993 +f 6729 6905 7301 +f 6729 7301 7181 +f 6905 7109 7469 +f 6905 7469 7301 +f 7109 7229 7673 +f 7109 7673 7469 +f 7229 7365 7801 +f 7229 7801 7673 +f 7365 7501 7929 +f 7365 7929 7801 +f 7501 7657 8073 +f 7501 8073 7929 +f 7657 7769 8213 +f 7657 8213 8073 +f 7769 7841 8325 +f 7769 8325 8213 +f 7841 7969 8397 +f 7841 8397 8325 +f 7969 8049 8533 +f 7969 8533 8397 +f 8049 8177 8613 +f 8049 8613 8533 +f 8177 8269 8737 +f 8177 8737 8613 +f 8269 8317 8809 +f 8269 8809 8737 +f 8317 8365 8857 +f 8317 8857 8809 +f 8365 8405 8913 +f 8365 8913 8857 +f 8405 8477 8937 +f 8405 8937 8913 +f 8477 8525 9017 +f 8477 9017 8937 +f 8525 8549 9049 +f 8525 9049 9017 +f 8549 8573 9081 +f 8549 9081 9049 +f 8573 8605 9105 +f 8573 9105 9081 +f 8605 8629 9121 +f 8605 9121 9105 +f 8629 8645 9137 +f 8629 9137 9121 +f 8645 8646 9138 +f 8645 9138 9137 +f 8646 8630 9122 +f 8646 9122 9138 +f 8630 8606 9106 +f 8630 9106 9122 +f 8606 8574 9082 +f 8606 9082 9106 +f 8574 8550 9050 +f 8574 9050 9082 +f 8550 8526 9018 +f 8550 9018 9050 +f 8526 8478 8938 +f 8526 8938 9018 +f 8478 8406 8914 +f 8478 8914 8938 +f 8406 8366 8858 +f 8406 8858 8914 +f 8366 8318 8810 +f 8366 8810 8858 +f 8318 8270 8738 +f 8318 8738 8810 +f 8270 8178 8614 +f 8270 8614 8738 +f 8178 8050 8534 +f 8178 8534 8614 +f 8050 7970 8398 +f 8050 8398 8534 +f 7970 7842 8326 +f 7970 8326 8398 +f 7842 7770 8214 +f 7842 8214 8326 +f 7770 7658 8074 +f 7770 8074 8214 +f 7658 7502 7930 +f 7658 7930 8074 +f 7502 7366 7802 +f 7502 7802 7930 +f 7366 7230 7674 +f 7366 7674 7802 +f 7230 7110 7470 +f 7230 7470 7674 +f 7110 6906 7302 +f 7110 7302 7470 +f 6906 6730 7182 +f 6906 7182 7302 +f 6730 6610 6994 +f 6730 6994 7182 +f 6610 6438 6754 +f 6610 6754 6994 +f 6438 6206 6602 +f 6438 6602 6754 +f 6206 6030 6398 +f 6206 6398 6602 +f 6030 5854 6118 +f 6030 6118 6398 +f 5854 5578 5942 +f 5854 5942 6118 +f 5578 5370 5682 +f 5578 5682 5942 +f 5370 5186 5434 +f 5370 5434 5682 +f 5186 4902 5226 +f 5186 5226 5434 +f 4902 4638 4926 +f 4902 4926 5226 +f 4638 4462 4646 +f 4638 4646 4926 +f 4462 4098 4426 +f 4462 4426 4646 +f 4098 3842 4042 +f 4098 4042 4426 +f 3842 3582 3778 +f 3842 3778 4042 +f 3582 3206 3422 +f 3582 3422 3778 +f 3206 2966 3070 +f 3206 3070 3422 +f 2966 2554 2814 +f 2966 2814 3070 +f 2554 2194 2306 +f 2554 2306 2814 +f 2194 1930 1978 +f 2194 1978 2306 +f 1930 1374 1438 +f 1930 1438 1978 +f 1374 982 998 +f 1374 998 1438 +f 997 1437 1541 +f 997 1541 1045 +f 1437 1977 2049 +f 1437 2049 1541 +f 1977 2305 2425 +f 1977 2425 2049 +f 2305 2813 2917 +f 2305 2917 2425 +f 2813 3069 3221 +f 2813 3221 2917 +f 3069 3421 3681 +f 3069 3681 3221 +f 3421 3777 3945 +f 3421 3945 3681 +f 3777 4041 4289 +f 3777 4289 3945 +f 4041 4425 4621 +f 4041 4621 4289 +f 4425 4645 4909 +f 4425 4909 4621 +f 4645 4925 5233 +f 4645 5233 4909 +f 4925 5225 5489 +f 4925 5489 5233 +f 5225 5433 5777 +f 5225 5777 5489 +f 5433 5681 5989 +f 5433 5989 5777 +f 5681 5941 6229 +f 5681 6229 5989 +f 5941 6117 6513 +f 5941 6513 6229 +f 6117 6397 6697 +f 6117 6697 6513 +f 6397 6601 6937 +f 6397 6937 6697 +f 6601 6753 7165 +f 6601 7165 6937 +f 6753 6993 7325 +f 6753 7325 7165 +f 6993 7181 7541 +f 6993 7541 7325 +f 7181 7301 7745 +f 7181 7745 7541 +f 7301 7469 7865 +f 7301 7865 7745 +f 7469 7673 8041 +f 7469 8041 7865 +f 7673 7801 8237 +f 7673 8237 8041 +f 7801 7929 8349 +f 7801 8349 8237 +f 7929 8073 8501 +f 7929 8501 8349 +f 8073 8213 8637 +f 8073 8637 8501 +f 8213 8325 8769 +f 8213 8769 8637 +f 8325 8397 8865 +f 8325 8865 8769 +f 8397 8533 8945 +f 8397 8945 8865 +f 8533 8613 9073 +f 8533 9073 8945 +f 8613 8737 9161 +f 8613 9161 9073 +f 8737 8809 9261 +f 8737 9261 9161 +f 8809 8857 9333 +f 8809 9333 9261 +f 8857 8913 9381 +f 8857 9381 9333 +f 8913 8937 9421 +f 8913 9421 9381 +f 8937 9017 9461 +f 8937 9461 9421 +f 9017 9049 9517 +f 9017 9517 9461 +f 9049 9081 9565 +f 9049 9565 9517 +f 9081 9105 9589 +f 9081 9589 9565 +f 9105 9121 9613 +f 9105 9613 9589 +f 9121 9137 9621 +f 9121 9621 9613 +f 9137 9138 9622 +f 9137 9622 9621 +f 9138 9122 9614 +f 9138 9614 9622 +f 9122 9106 9590 +f 9122 9590 9614 +f 9106 9082 9566 +f 9106 9566 9590 +f 9082 9050 9518 +f 9082 9518 9566 +f 9050 9018 9462 +f 9050 9462 9518 +f 9018 8938 9422 +f 9018 9422 9462 +f 8938 8914 9382 +f 8938 9382 9422 +f 8914 8858 9334 +f 8914 9334 9382 +f 8858 8810 9262 +f 8858 9262 9334 +f 8810 8738 9162 +f 8810 9162 9262 +f 8738 8614 9074 +f 8738 9074 9162 +f 8614 8534 8946 +f 8614 8946 9074 +f 8534 8398 8866 +f 8534 8866 8946 +f 8398 8326 8770 +f 8398 8770 8866 +f 8326 8214 8638 +f 8326 8638 8770 +f 8214 8074 8502 +f 8214 8502 8638 +f 8074 7930 8350 +f 8074 8350 8502 +f 7930 7802 8238 +f 7930 8238 8350 +f 7802 7674 8042 +f 7802 8042 8238 +f 7674 7470 7866 +f 7674 7866 8042 +f 7470 7302 7746 +f 7470 7746 7866 +f 7302 7182 7542 +f 7302 7542 7746 +f 7182 6994 7326 +f 7182 7326 7542 +f 6994 6754 7166 +f 6994 7166 7326 +f 6754 6602 6938 +f 6754 6938 7166 +f 6602 6398 6698 +f 6602 6698 6938 +f 6398 6118 6514 +f 6398 6514 6698 +f 6118 5942 6230 +f 6118 6230 6514 +f 5942 5682 5990 +f 5942 5990 6230 +f 5682 5434 5778 +f 5682 5778 5990 +f 5434 5226 5490 +f 5434 5490 5778 +f 5226 4926 5234 +f 5226 5234 5490 +f 4926 4646 4910 +f 4926 4910 5234 +f 4646 4426 4622 +f 4646 4622 4910 +f 4426 4042 4290 +f 4426 4290 4622 +f 4042 3778 3946 +f 4042 3946 4290 +f 3778 3422 3682 +f 3778 3682 3946 +f 3422 3070 3222 +f 3422 3222 3682 +f 3070 2814 2918 +f 3070 2918 3222 +f 2814 2306 2426 +f 2814 2426 2918 +f 2306 1978 2050 +f 2306 2050 2426 +f 1978 1438 1542 +f 1978 1542 2050 +f 1438 998 1046 +f 1438 1046 1542 +f 1045 1541 1645 +f 1045 1645 1061 +f 1541 2049 2129 +f 1541 2129 1645 +f 2049 2425 2577 +f 2049 2577 2129 +f 2425 2917 2997 +f 2425 2997 2577 +f 2917 3221 3389 +f 2917 3389 2997 +f 3221 3681 3809 +f 3221 3809 3389 +f 3681 3945 4153 +f 3681 4153 3809 +f 3945 4289 4533 +f 3945 4533 4153 +f 4289 4621 4797 +f 4289 4797 4533 +f 4621 4909 5193 +f 4621 5193 4797 +f 4909 5233 5441 +f 4909 5441 5193 +f 5233 5489 5785 +f 5233 5785 5441 +f 5489 5777 6045 +f 5489 6045 5785 +f 5777 5989 6277 +f 5777 6277 6045 +f 5989 6229 6561 +f 5989 6561 6277 +f 6229 6513 6809 +f 6229 6809 6561 +f 6513 6697 7065 +f 6513 7065 6809 +f 6697 6937 7253 +f 6697 7253 7065 +f 6937 7165 7461 +f 6937 7461 7253 +f 7165 7325 7729 +f 7165 7729 7461 +f 7325 7541 7881 +f 7325 7881 7729 +f 7541 7745 8097 +f 7541 8097 7881 +f 7745 7865 8301 +f 7745 8301 8097 +f 7865 8041 8413 +f 7865 8413 8301 +f 8041 8237 8597 +f 8041 8597 8413 +f 8237 8349 8785 +f 8237 8785 8597 +f 8349 8501 8897 +f 8349 8897 8785 +f 8501 8637 9041 +f 8501 9041 8897 +f 8637 8769 9193 +f 8637 9193 9041 +f 8769 8865 9301 +f 8769 9301 9193 +f 8865 8945 9389 +f 8865 9389 9301 +f 8945 9073 9469 +f 8945 9469 9389 +f 9073 9161 9605 +f 9073 9605 9469 +f 9161 9261 9697 +f 9161 9697 9605 +f 9261 9333 9769 +f 9261 9769 9697 +f 9333 9381 9825 +f 9333 9825 9769 +f 9381 9421 9889 +f 9381 9889 9825 +f 9421 9461 9913 +f 9421 9913 9889 +f 9461 9517 9961 +f 9461 9961 9913 +f 9517 9565 9977 +f 9517 9977 9961 +f 9565 9589 10033 +f 9565 10033 9977 +f 9589 9613 10065 +f 9589 10065 10033 +f 9613 9621 10089 +f 9613 10089 10065 +f 9621 9622 10090 +f 9621 10090 10089 +f 9622 9614 10066 +f 9622 10066 10090 +f 9614 9590 10034 +f 9614 10034 10066 +f 9590 9566 9978 +f 9590 9978 10034 +f 9566 9518 9962 +f 9566 9962 9978 +f 9518 9462 9914 +f 9518 9914 9962 +f 9462 9422 9890 +f 9462 9890 9914 +f 9422 9382 9826 +f 9422 9826 9890 +f 9382 9334 9770 +f 9382 9770 9826 +f 9334 9262 9698 +f 9334 9698 9770 +f 9262 9162 9606 +f 9262 9606 9698 +f 9162 9074 9470 +f 9162 9470 9606 +f 9074 8946 9390 +f 9074 9390 9470 +f 8946 8866 9302 +f 8946 9302 9390 +f 8866 8770 9194 +f 8866 9194 9302 +f 8770 8638 9042 +f 8770 9042 9194 +f 8638 8502 8898 +f 8638 8898 9042 +f 8502 8350 8786 +f 8502 8786 8898 +f 8350 8238 8598 +f 8350 8598 8786 +f 8238 8042 8414 +f 8238 8414 8598 +f 8042 7866 8302 +f 8042 8302 8414 +f 7866 7746 8098 +f 7866 8098 8302 +f 7746 7542 7882 +f 7746 7882 8098 +f 7542 7326 7730 +f 7542 7730 7882 +f 7326 7166 7462 +f 7326 7462 7730 +f 7166 6938 7254 +f 7166 7254 7462 +f 6938 6698 7066 +f 6938 7066 7254 +f 6698 6514 6810 +f 6698 6810 7066 +f 6514 6230 6562 +f 6514 6562 6810 +f 6230 5990 6278 +f 6230 6278 6562 +f 5990 5778 6046 +f 5990 6046 6278 +f 5778 5490 5786 +f 5778 5786 6046 +f 5490 5234 5442 +f 5490 5442 5786 +f 5234 4910 5194 +f 5234 5194 5442 +f 4910 4622 4798 +f 4910 4798 5194 +f 4622 4290 4534 +f 4622 4534 4798 +f 4290 3946 4154 +f 4290 4154 4534 +f 3946 3682 3810 +f 3946 3810 4154 +f 3682 3222 3390 +f 3682 3390 3810 +f 3222 2918 2998 +f 3222 2998 3390 +f 2918 2426 2578 +f 2918 2578 2998 +f 2426 2050 2130 +f 2426 2130 2578 +f 2050 1542 1646 +f 2050 1646 2130 +f 1542 1046 1062 +f 1542 1062 1646 +f 1061 1645 1821 +f 1061 1821 1093 +f 1645 2129 2209 +f 1645 2209 1821 +f 2129 2577 2761 +f 2129 2761 2209 +f 2577 2997 3141 +f 2577 3141 2761 +f 2997 3389 3621 +f 2997 3621 3141 +f 3389 3809 3961 +f 3389 3961 3621 +f 3809 4153 4377 +f 3809 4377 3961 +f 4153 4533 4701 +f 4153 4701 4377 +f 4533 4797 5053 +f 4533 5053 4701 +f 4797 5193 5377 +f 4797 5377 5053 +f 5193 5441 5689 +f 5193 5689 5377 +f 5441 5785 5997 +f 5441 5997 5689 +f 5785 6045 6285 +f 5785 6285 5997 +f 6045 6277 6585 +f 6045 6585 6285 +f 6277 6561 6833 +f 6277 6833 6585 +f 6561 6809 7133 +f 6561 7133 6833 +f 6809 7065 7341 +f 6809 7341 7133 +f 7065 7253 7621 +f 7065 7621 7341 +f 7253 7461 7817 +f 7253 7817 7621 +f 7461 7729 8009 +f 7461 8009 7817 +f 7729 7881 8277 +f 7729 8277 8009 +f 7881 8097 8421 +f 7881 8421 8277 +f 8097 8301 8653 +f 8097 8653 8421 +f 8301 8413 8833 +f 8301 8833 8653 +f 8413 8597 8977 +f 8413 8977 8833 +f 8597 8785 9153 +f 8597 9153 8977 +f 8785 8897 9309 +f 8785 9309 9153 +f 8897 9041 9437 +f 8897 9437 9309 +f 9041 9193 9573 +f 9041 9573 9437 +f 9193 9301 9721 +f 9193 9721 9573 +f 9301 9389 9809 +f 9301 9809 9721 +f 9389 9469 9897 +f 9389 9897 9809 +f 9469 9605 9985 +f 9469 9985 9897 +f 9605 9697 10121 +f 9605 10121 9985 +f 9697 9769 10189 +f 9697 10189 10121 +f 9769 9825 10261 +f 9769 10261 10189 +f 9825 9889 10309 +f 9825 10309 10261 +f 9889 9913 10365 +f 9889 10365 10309 +f 9913 9961 10389 +f 9913 10389 10365 +f 9961 9977 10413 +f 9961 10413 10389 +f 9977 10033 10461 +f 9977 10461 10413 +f 10033 10065 10477 +f 10033 10477 10461 +f 10065 10089 10485 +f 10065 10485 10477 +f 10089 10090 10486 +f 10089 10486 10485 +f 10090 10066 10478 +f 10090 10478 10486 +f 10066 10034 10462 +f 10066 10462 10478 +f 10034 9978 10414 +f 10034 10414 10462 +f 9978 9962 10390 +f 9978 10390 10414 +f 9962 9914 10366 +f 9962 10366 10390 +f 9914 9890 10310 +f 9914 10310 10366 +f 9890 9826 10262 +f 9890 10262 10310 +f 9826 9770 10190 +f 9826 10190 10262 +f 9770 9698 10122 +f 9770 10122 10190 +f 9698 9606 9986 +f 9698 9986 10122 +f 9606 9470 9898 +f 9606 9898 9986 +f 9470 9390 9810 +f 9470 9810 9898 +f 9390 9302 9722 +f 9390 9722 9810 +f 9302 9194 9574 +f 9302 9574 9722 +f 9194 9042 9438 +f 9194 9438 9574 +f 9042 8898 9310 +f 9042 9310 9438 +f 8898 8786 9154 +f 8898 9154 9310 +f 8786 8598 8978 +f 8786 8978 9154 +f 8598 8414 8834 +f 8598 8834 8978 +f 8414 8302 8654 +f 8414 8654 8834 +f 8302 8098 8422 +f 8302 8422 8654 +f 8098 7882 8278 +f 8098 8278 8422 +f 7882 7730 8010 +f 7882 8010 8278 +f 7730 7462 7818 +f 7730 7818 8010 +f 7462 7254 7622 +f 7462 7622 7818 +f 7254 7066 7342 +f 7254 7342 7622 +f 7066 6810 7134 +f 7066 7134 7342 +f 6810 6562 6834 +f 6810 6834 7134 +f 6562 6278 6586 +f 6562 6586 6834 +f 6278 6046 6286 +f 6278 6286 6586 +f 6046 5786 5998 +f 6046 5998 6286 +f 5786 5442 5690 +f 5786 5690 5998 +f 5442 5194 5378 +f 5442 5378 5690 +f 5194 4798 5054 +f 5194 5054 5378 +f 4798 4534 4702 +f 4798 4702 5054 +f 4534 4154 4378 +f 4534 4378 4702 +f 4154 3810 3962 +f 4154 3962 4378 +f 3810 3390 3622 +f 3810 3622 3962 +f 3390 2998 3142 +f 3390 3142 3622 +f 2998 2578 2762 +f 2998 2762 3142 +f 2578 2130 2210 +f 2578 2210 2762 +f 2130 1646 1822 +f 2130 1822 2210 +f 1646 1062 1094 +f 1646 1094 1822 +f 1093 1821 1881 +f 1093 1881 1125 +f 1821 2209 2273 +f 1821 2273 1881 +f 2209 2761 2861 +f 2209 2861 2273 +f 2761 3141 3245 +f 2761 3245 2861 +f 3141 3621 3745 +f 3141 3745 3245 +f 3621 3961 4105 +f 3621 4105 3745 +f 3961 4377 4549 +f 3961 4549 4105 +f 4377 4701 4877 +f 4377 4877 4549 +f 4701 5053 5281 +f 4701 5281 4877 +f 5053 5377 5585 +f 5053 5585 5281 +f 5377 5689 5949 +f 5377 5949 5585 +f 5689 5997 6237 +f 5689 6237 5949 +f 5997 6285 6569 +f 5997 6569 6237 +f 6285 6585 6841 +f 6285 6841 6569 +f 6585 6833 7149 +f 6585 7149 6841 +f 6833 7133 7397 +f 6833 7397 7149 +f 7133 7341 7689 +f 7133 7689 7397 +f 7341 7621 7897 +f 7341 7897 7689 +f 7621 7817 8153 +f 7621 8153 7897 +f 7817 8009 8357 +f 7817 8357 8153 +f 8009 8277 8565 +f 8009 8565 8357 +f 8277 8421 8817 +f 8277 8817 8565 +f 8421 8653 8969 +f 8421 8969 8817 +f 8653 8833 9185 +f 8653 9185 8969 +f 8833 8977 9357 +f 8833 9357 9185 +f 8977 9153 9501 +f 8977 9501 9357 +f 9153 9309 9677 +f 9153 9677 9501 +f 9309 9437 9817 +f 9309 9817 9677 +f 9437 9573 9945 +f 9437 9945 9817 +f 9573 9721 10105 +f 9573 10105 9945 +f 9721 9809 10205 +f 9721 10205 10105 +f 9809 9897 10293 +f 9809 10293 10205 +f 9897 9985 10397 +f 9897 10397 10293 +f 9985 10121 10501 +f 9985 10501 10397 +f 10121 10189 10617 +f 10121 10617 10501 +f 10189 10261 10657 +f 10189 10657 10617 +f 10261 10309 10721 +f 10261 10721 10657 +f 10309 10365 10753 +f 10309 10753 10721 +f 10365 10389 10801 +f 10365 10801 10753 +f 10389 10413 10857 +f 10389 10857 10801 +f 10413 10461 10881 +f 10413 10881 10857 +f 10461 10477 10897 +f 10461 10897 10881 +f 10477 10485 10905 +f 10477 10905 10897 +f 10485 10486 10906 +f 10485 10906 10905 +f 10486 10478 10898 +f 10486 10898 10906 +f 10478 10462 10882 +f 10478 10882 10898 +f 10462 10414 10858 +f 10462 10858 10882 +f 10414 10390 10802 +f 10414 10802 10858 +f 10390 10366 10754 +f 10390 10754 10802 +f 10366 10310 10722 +f 10366 10722 10754 +f 10310 10262 10658 +f 10310 10658 10722 +f 10262 10190 10618 +f 10262 10618 10658 +f 10190 10122 10502 +f 10190 10502 10618 +f 10122 9986 10398 +f 10122 10398 10502 +f 9986 9898 10294 +f 9986 10294 10398 +f 9898 9810 10206 +f 9898 10206 10294 +f 9810 9722 10106 +f 9810 10106 10206 +f 9722 9574 9946 +f 9722 9946 10106 +f 9574 9438 9818 +f 9574 9818 9946 +f 9438 9310 9678 +f 9438 9678 9818 +f 9310 9154 9502 +f 9310 9502 9678 +f 9154 8978 9358 +f 9154 9358 9502 +f 8978 8834 9186 +f 8978 9186 9358 +f 8834 8654 8970 +f 8834 8970 9186 +f 8654 8422 8818 +f 8654 8818 8970 +f 8422 8278 8566 +f 8422 8566 8818 +f 8278 8010 8358 +f 8278 8358 8566 +f 8010 7818 8154 +f 8010 8154 8358 +f 7818 7622 7898 +f 7818 7898 8154 +f 7622 7342 7690 +f 7622 7690 7898 +f 7342 7134 7398 +f 7342 7398 7690 +f 7134 6834 7150 +f 7134 7150 7398 +f 6834 6586 6842 +f 6834 6842 7150 +f 6586 6286 6570 +f 6586 6570 6842 +f 6286 5998 6238 +f 6286 6238 6570 +f 5998 5690 5950 +f 5998 5950 6238 +f 5690 5378 5586 +f 5690 5586 5950 +f 5378 5054 5282 +f 5378 5282 5586 +f 5054 4702 4878 +f 5054 4878 5282 +f 4702 4378 4550 +f 4702 4550 4878 +f 4378 3962 4106 +f 4378 4106 4550 +f 3962 3622 3746 +f 3962 3746 4106 +f 3622 3142 3246 +f 3622 3246 3746 +f 3142 2762 2862 +f 3142 2862 3246 +f 2762 2210 2274 +f 2762 2274 2862 +f 2210 1822 1882 +f 2210 1882 2274 +f 1822 1094 1126 +f 1822 1126 1882 +f 1125 1881 1913 +f 1125 1913 1165 +f 1881 2273 2353 +f 1881 2353 1913 +f 2273 2861 2949 +f 2273 2949 2353 +f 2861 3245 3373 +f 2861 3373 2949 +f 3245 3745 3873 +f 3245 3873 3373 +f 3745 4105 4273 +f 3745 4273 3873 +f 4105 4549 4685 +f 4105 4685 4273 +f 4549 4877 5133 +f 4549 5133 4685 +f 4877 5281 5465 +f 4877 5465 5133 +f 5281 5585 5861 +f 5281 5861 5465 +f 5585 5949 6133 +f 5585 6133 5861 +f 5949 6237 6521 +f 5949 6521 6133 +f 6237 6569 6817 +f 6237 6817 6521 +f 6569 6841 7141 +f 6569 7141 6817 +f 6841 7149 7405 +f 6841 7405 7141 +f 7149 7397 7713 +f 7149 7713 7405 +f 7397 7689 7937 +f 7397 7937 7713 +f 7689 7897 8221 +f 7689 8221 7937 +f 7897 8153 8429 +f 7897 8429 8221 +f 8153 8357 8701 +f 8153 8701 8429 +f 8357 8565 8889 +f 8357 8889 8701 +f 8565 8817 9113 +f 8565 9113 8889 +f 8817 8969 9341 +f 8817 9341 9113 +f 8969 9185 9493 +f 8969 9493 9341 +f 9185 9357 9713 +f 9185 9713 9493 +f 9357 9501 9865 +f 9357 9865 9713 +f 9501 9677 10017 +f 9501 10017 9865 +f 9677 9817 10181 +f 9677 10181 10017 +f 9817 9945 10317 +f 9817 10317 10181 +f 9945 10105 10437 +f 9945 10437 10317 +f 10105 10205 10609 +f 10105 10609 10437 +f 10205 10293 10673 +f 10205 10673 10609 +f 10293 10397 10777 +f 10293 10777 10673 +f 10397 10501 10889 +f 10397 10889 10777 +f 10501 10617 10977 +f 10501 10977 10889 +f 10617 10657 11069 +f 10617 11069 10977 +f 10657 10721 11101 +f 10657 11101 11069 +f 10721 10753 11149 +f 10721 11149 11101 +f 10753 10801 11197 +f 10753 11197 11149 +f 10801 10857 11221 +f 10801 11221 11197 +f 10857 10881 11277 +f 10857 11277 11221 +f 10881 10897 11293 +f 10881 11293 11277 +f 10897 10905 11317 +f 10897 11317 11293 +f 10905 10906 11318 +f 10905 11318 11317 +f 10906 10898 11294 +f 10906 11294 11318 +f 10898 10882 11278 +f 10898 11278 11294 +f 10882 10858 11222 +f 10882 11222 11278 +f 10858 10802 11198 +f 10858 11198 11222 +f 10802 10754 11150 +f 10802 11150 11198 +f 10754 10722 11102 +f 10754 11102 11150 +f 10722 10658 11070 +f 10722 11070 11102 +f 10658 10618 10978 +f 10658 10978 11070 +f 10618 10502 10890 +f 10618 10890 10978 +f 10502 10398 10778 +f 10502 10778 10890 +f 10398 10294 10674 +f 10398 10674 10778 +f 10294 10206 10610 +f 10294 10610 10674 +f 10206 10106 10438 +f 10206 10438 10610 +f 10106 9946 10318 +f 10106 10318 10438 +f 9946 9818 10182 +f 9946 10182 10318 +f 9818 9678 10018 +f 9818 10018 10182 +f 9678 9502 9866 +f 9678 9866 10018 +f 9502 9358 9714 +f 9502 9714 9866 +f 9358 9186 9494 +f 9358 9494 9714 +f 9186 8970 9342 +f 9186 9342 9494 +f 8970 8818 9114 +f 8970 9114 9342 +f 8818 8566 8890 +f 8818 8890 9114 +f 8566 8358 8702 +f 8566 8702 8890 +f 8358 8154 8430 +f 8358 8430 8702 +f 8154 7898 8222 +f 8154 8222 8430 +f 7898 7690 7938 +f 7898 7938 8222 +f 7690 7398 7714 +f 7690 7714 7938 +f 7398 7150 7406 +f 7398 7406 7714 +f 7150 6842 7142 +f 7150 7142 7406 +f 6842 6570 6818 +f 6842 6818 7142 +f 6570 6238 6522 +f 6570 6522 6818 +f 6238 5950 6134 +f 6238 6134 6522 +f 5950 5586 5862 +f 5950 5862 6134 +f 5586 5282 5466 +f 5586 5466 5862 +f 5282 4878 5134 +f 5282 5134 5466 +f 4878 4550 4686 +f 4878 4686 5134 +f 4550 4106 4274 +f 4550 4274 4686 +f 4106 3746 3874 +f 4106 3874 4274 +f 3746 3246 3374 +f 3746 3374 3874 +f 3246 2862 2950 +f 3246 2950 3374 +f 2862 2274 2354 +f 2862 2354 2950 +f 2274 1882 1914 +f 2274 1914 2354 +f 1882 1126 1166 +f 1882 1166 1914 +f 1165 1913 1945 +f 1165 1945 1181 +f 1913 2353 2449 +f 1913 2449 1945 +f 2353 2949 3013 +f 2353 3013 2449 +f 2949 3373 3509 +f 2949 3509 3013 +f 3373 3873 3977 +f 3373 3977 3509 +f 3873 4273 4485 +f 3873 4485 3977 +f 4273 4685 4837 +f 4273 4837 4485 +f 4685 5133 5297 +f 4685 5297 4837 +f 5133 5465 5649 +f 5133 5649 5297 +f 5465 5861 6037 +f 5465 6037 5649 +f 5861 6133 6413 +f 5861 6413 6037 +f 6133 6521 6713 +f 6133 6713 6413 +f 6521 6817 7077 +f 6521 7077 6713 +f 6817 7141 7349 +f 6817 7349 7077 +f 7141 7405 7697 +f 7141 7697 7349 +f 7405 7713 7945 +f 7405 7945 7697 +f 7713 7937 8253 +f 7713 8253 7945 +f 7937 8221 8485 +f 7937 8485 8253 +f 8221 8429 8753 +f 8221 8753 8485 +f 8429 8701 8953 +f 8429 8953 8753 +f 8701 8889 9245 +f 8701 9245 8953 +f 8889 9113 9413 +f 8889 9413 9245 +f 9113 9341 9645 +f 9113 9645 9413 +f 9341 9493 9841 +f 9341 9841 9645 +f 9493 9713 10009 +f 9493 10009 9841 +f 9713 9865 10213 +f 9713 10213 10009 +f 9865 10017 10373 +f 9865 10373 10213 +f 10017 10181 10533 +f 10017 10533 10373 +f 10181 10317 10665 +f 10181 10665 10533 +f 10317 10437 10793 +f 10317 10793 10665 +f 10437 10609 10937 +f 10437 10937 10793 +f 10609 10673 11077 +f 10609 11077 10937 +f 10673 10777 11133 +f 10673 11133 11077 +f 10777 10889 11229 +f 10777 11229 11133 +f 10889 10977 11349 +f 10889 11349 11229 +f 10977 11069 11425 +f 10977 11425 11349 +f 11069 11101 11481 +f 11069 11481 11425 +f 11101 11149 11545 +f 11101 11545 11481 +f 11149 11197 11561 +f 11149 11561 11545 +f 11197 11221 11609 +f 11197 11609 11561 +f 11221 11277 11649 +f 11221 11649 11609 +f 11277 11293 11665 +f 11277 11665 11649 +f 11293 11317 11681 +f 11293 11681 11665 +f 11317 11318 11682 +f 11317 11682 11681 +f 11318 11294 11666 +f 11318 11666 11682 +f 11294 11278 11650 +f 11294 11650 11666 +f 11278 11222 11610 +f 11278 11610 11650 +f 11222 11198 11562 +f 11222 11562 11610 +f 11198 11150 11546 +f 11198 11546 11562 +f 11150 11102 11482 +f 11150 11482 11546 +f 11102 11070 11426 +f 11102 11426 11482 +f 11070 10978 11350 +f 11070 11350 11426 +f 10978 10890 11230 +f 10978 11230 11350 +f 10890 10778 11134 +f 10890 11134 11230 +f 10778 10674 11078 +f 10778 11078 11134 +f 10674 10610 10938 +f 10674 10938 11078 +f 10610 10438 10794 +f 10610 10794 10938 +f 10438 10318 10666 +f 10438 10666 10794 +f 10318 10182 10534 +f 10318 10534 10666 +f 10182 10018 10374 +f 10182 10374 10534 +f 10018 9866 10214 +f 10018 10214 10374 +f 9866 9714 10010 +f 9866 10010 10214 +f 9714 9494 9842 +f 9714 9842 10010 +f 9494 9342 9646 +f 9494 9646 9842 +f 9342 9114 9414 +f 9342 9414 9646 +f 9114 8890 9246 +f 9114 9246 9414 +f 8890 8702 8954 +f 8890 8954 9246 +f 8702 8430 8754 +f 8702 8754 8954 +f 8430 8222 8486 +f 8430 8486 8754 +f 8222 7938 8254 +f 8222 8254 8486 +f 7938 7714 7946 +f 7938 7946 8254 +f 7714 7406 7698 +f 7714 7698 7946 +f 7406 7142 7350 +f 7406 7350 7698 +f 7142 6818 7078 +f 7142 7078 7350 +f 6818 6522 6714 +f 6818 6714 7078 +f 6522 6134 6414 +f 6522 6414 6714 +f 6134 5862 6038 +f 6134 6038 6414 +f 5862 5466 5650 +f 5862 5650 6038 +f 5466 5134 5298 +f 5466 5298 5650 +f 5134 4686 4838 +f 5134 4838 5298 +f 4686 4274 4486 +f 4686 4486 4838 +f 4274 3874 3978 +f 4274 3978 4486 +f 3874 3374 3510 +f 3874 3510 3978 +f 3374 2950 3014 +f 3374 3014 3510 +f 2950 2354 2450 +f 2950 2450 3014 +f 2354 1914 1946 +f 2354 1946 2450 +f 1914 1166 1182 +f 1914 1182 1946 +f 1181 1945 1993 +f 1181 1993 1197 +f 1945 2449 2529 +f 1945 2529 1993 +f 2449 3013 3109 +f 2449 3109 2529 +f 3013 3509 3713 +f 3013 3713 3109 +f 3509 3977 4073 +f 3509 4073 3713 +f 3977 4485 4581 +f 3977 4581 4073 +f 4485 4837 5021 +f 4485 5021 4581 +f 4837 5297 5417 +f 4837 5417 5021 +f 5297 5649 5885 +f 5297 5885 5417 +f 5649 6037 6213 +f 5649 6213 5885 +f 6037 6413 6617 +f 6037 6617 6213 +f 6413 6713 6953 +f 6413 6953 6617 +f 6713 7077 7269 +f 6713 7269 6953 +f 7077 7349 7629 +f 7077 7629 7269 +f 7349 7697 7913 +f 7349 7913 7629 +f 7697 7945 8229 +f 7697 8229 7913 +f 7945 8253 8493 +f 7945 8493 8229 +f 8253 8485 8777 +f 8253 8777 8493 +f 8485 8753 9025 +f 8485 9025 8777 +f 8753 8953 9269 +f 8753 9269 9025 +f 8953 9245 9477 +f 8953 9477 9269 +f 9245 9413 9753 +f 9245 9753 9477 +f 9413 9645 9921 +f 9413 9921 9753 +f 9645 9841 10165 +f 9645 10165 9921 +f 9841 10009 10333 +f 9841 10333 10165 +f 10009 10213 10525 +f 10009 10525 10333 +f 10213 10373 10689 +f 10213 10689 10525 +f 10373 10533 10849 +f 10373 10849 10689 +f 10533 10665 11005 +f 10533 11005 10849 +f 10665 10793 11125 +f 10665 11125 11005 +f 10793 10937 11261 +f 10793 11261 11125 +f 10937 11077 11401 +f 10937 11401 11261 +f 11077 11133 11505 +f 11077 11505 11401 +f 11133 11229 11593 +f 11133 11593 11505 +f 11229 11349 11697 +f 11229 11697 11593 +f 11349 11425 11789 +f 11349 11789 11697 +f 11425 11481 11837 +f 11425 11837 11789 +f 11481 11545 11877 +f 11481 11877 11837 +f 11545 11561 11941 +f 11545 11941 11877 +f 11561 11609 11981 +f 11561 11981 11941 +f 11609 11649 11997 +f 11609 11997 11981 +f 11649 11665 12029 +f 11649 12029 11997 +f 11665 11681 12053 +f 11665 12053 12029 +f 11681 11682 12054 +f 11681 12054 12053 +f 11682 11666 12030 +f 11682 12030 12054 +f 11666 11650 11998 +f 11666 11998 12030 +f 11650 11610 11982 +f 11650 11982 11998 +f 11610 11562 11942 +f 11610 11942 11982 +f 11562 11546 11878 +f 11562 11878 11942 +f 11546 11482 11838 +f 11546 11838 11878 +f 11482 11426 11790 +f 11482 11790 11838 +f 11426 11350 11698 +f 11426 11698 11790 +f 11350 11230 11594 +f 11350 11594 11698 +f 11230 11134 11506 +f 11230 11506 11594 +f 11134 11078 11402 +f 11134 11402 11506 +f 11078 10938 11262 +f 11078 11262 11402 +f 10938 10794 11126 +f 10938 11126 11262 +f 10794 10666 11006 +f 10794 11006 11126 +f 10666 10534 10850 +f 10666 10850 11006 +f 10534 10374 10690 +f 10534 10690 10850 +f 10374 10214 10526 +f 10374 10526 10690 +f 10214 10010 10334 +f 10214 10334 10526 +f 10010 9842 10166 +f 10010 10166 10334 +f 9842 9646 9922 +f 9842 9922 10166 +f 9646 9414 9754 +f 9646 9754 9922 +f 9414 9246 9478 +f 9414 9478 9754 +f 9246 8954 9270 +f 9246 9270 9478 +f 8954 8754 9026 +f 8954 9026 9270 +f 8754 8486 8778 +f 8754 8778 9026 +f 8486 8254 8494 +f 8486 8494 8778 +f 8254 7946 8230 +f 8254 8230 8494 +f 7946 7698 7914 +f 7946 7914 8230 +f 7698 7350 7630 +f 7698 7630 7914 +f 7350 7078 7270 +f 7350 7270 7630 +f 7078 6714 6954 +f 7078 6954 7270 +f 6714 6414 6618 +f 6714 6618 6954 +f 6414 6038 6214 +f 6414 6214 6618 +f 6038 5650 5886 +f 6038 5886 6214 +f 5650 5298 5418 +f 5650 5418 5886 +f 5298 4838 5022 +f 5298 5022 5418 +f 4838 4486 4582 +f 4838 4582 5022 +f 4486 3978 4074 +f 4486 4074 4582 +f 3978 3510 3714 +f 3978 3714 4074 +f 3510 3014 3110 +f 3510 3110 3714 +f 3014 2450 2530 +f 3014 2530 3110 +f 2450 1946 1994 +f 2450 1994 2530 +f 1946 1182 1198 +f 1946 1198 1994 +f 1197 1993 2033 +f 1197 2033 1245 +f 1993 2529 2657 +f 1993 2657 2033 +f 2529 3109 3173 +f 2529 3173 2657 +f 3109 3713 3761 +f 3109 3761 3173 +f 3713 4073 4225 +f 3713 4225 3761 +f 4073 4581 4733 +f 4073 4733 4225 +f 4581 5021 5217 +f 4581 5217 4733 +f 5021 5417 5601 +f 5021 5601 5217 +f 5417 5885 6013 +f 5417 6013 5601 +f 5885 6213 6453 +f 5885 6453 6013 +f 6213 6617 6777 +f 6213 6777 6453 +f 6617 6953 7173 +f 6617 7173 6777 +f 6953 7269 7477 +f 6953 7477 7173 +f 7269 7629 7825 +f 7269 7825 7477 +f 7629 7913 8169 +f 7629 8169 7825 +f 7913 8229 8445 +f 7913 8445 8169 +f 8229 8493 8761 +f 8229 8761 8445 +f 8493 8777 9033 +f 8493 9033 8761 +f 8777 9025 9293 +f 8777 9293 9033 +f 9025 9269 9549 +f 9025 9549 9293 +f 9269 9477 9777 +f 9269 9777 9549 +f 9477 9753 9993 +f 9477 9993 9777 +f 9753 9921 10245 +f 9753 10245 9993 +f 9921 10165 10429 +f 9921 10429 10245 +f 10165 10333 10641 +f 10165 10641 10429 +f 10333 10525 10825 +f 10333 10825 10641 +f 10525 10689 11013 +f 10525 11013 10825 +f 10689 10849 11165 +f 10689 11165 11013 +f 10849 11005 11341 +f 10849 11341 11165 +f 11005 11125 11449 +f 11005 11449 11341 +f 11125 11261 11585 +f 11125 11585 11449 +f 11261 11401 11729 +f 11261 11729 11585 +f 11401 11505 11829 +f 11401 11829 11729 +f 11505 11593 11933 +f 11505 11933 11829 +f 11593 11697 12005 +f 11593 12005 11933 +f 11697 11789 12109 +f 11697 12109 12005 +f 11789 11837 12185 +f 11789 12185 12109 +f 11837 11877 12241 +f 11837 12241 12185 +f 11877 11941 12281 +f 11877 12281 12241 +f 11941 11981 12297 +f 11941 12297 12281 +f 11981 11997 12361 +f 11981 12361 12297 +f 11997 12029 12377 +f 11997 12377 12361 +f 12029 12053 12417 +f 12029 12417 12377 +f 12053 12054 12418 +f 12053 12418 12417 +f 12054 12030 12378 +f 12054 12378 12418 +f 12030 11998 12362 +f 12030 12362 12378 +f 11998 11982 12298 +f 11998 12298 12362 +f 11982 11942 12282 +f 11982 12282 12298 +f 11942 11878 12242 +f 11942 12242 12282 +f 11878 11838 12186 +f 11878 12186 12242 +f 11838 11790 12110 +f 11838 12110 12186 +f 11790 11698 12006 +f 11790 12006 12110 +f 11698 11594 11934 +f 11698 11934 12006 +f 11594 11506 11830 +f 11594 11830 11934 +f 11506 11402 11730 +f 11506 11730 11830 +f 11402 11262 11586 +f 11402 11586 11730 +f 11262 11126 11450 +f 11262 11450 11586 +f 11126 11006 11342 +f 11126 11342 11450 +f 11006 10850 11166 +f 11006 11166 11342 +f 10850 10690 11014 +f 10850 11014 11166 +f 10690 10526 10826 +f 10690 10826 11014 +f 10526 10334 10642 +f 10526 10642 10826 +f 10334 10166 10430 +f 10334 10430 10642 +f 10166 9922 10246 +f 10166 10246 10430 +f 9922 9754 9994 +f 9922 9994 10246 +f 9754 9478 9778 +f 9754 9778 9994 +f 9478 9270 9550 +f 9478 9550 9778 +f 9270 9026 9294 +f 9270 9294 9550 +f 9026 8778 9034 +f 9026 9034 9294 +f 8778 8494 8762 +f 8778 8762 9034 +f 8494 8230 8446 +f 8494 8446 8762 +f 8230 7914 8170 +f 8230 8170 8446 +f 7914 7630 7826 +f 7914 7826 8170 +f 7630 7270 7478 +f 7630 7478 7826 +f 7270 6954 7174 +f 7270 7174 7478 +f 6954 6618 6778 +f 6954 6778 7174 +f 6618 6214 6454 +f 6618 6454 6778 +f 6214 5886 6014 +f 6214 6014 6454 +f 5886 5418 5602 +f 5886 5602 6014 +f 5418 5022 5218 +f 5418 5218 5602 +f 5022 4582 4734 +f 5022 4734 5218 +f 4582 4074 4226 +f 4582 4226 4734 +f 4074 3714 3762 +f 4074 3762 4226 +f 3714 3110 3174 +f 3714 3174 3762 +f 3110 2530 2658 +f 3110 2658 3174 +f 2530 1994 2034 +f 2530 2034 2658 +f 1994 1198 1246 +f 1994 1246 2034 +f 1245 2033 2065 +f 1245 2065 1261 +f 2033 2657 2797 +f 2033 2797 2065 +f 2657 3173 3269 +f 2657 3269 2797 +f 3173 3761 3865 +f 3173 3865 3269 +f 3761 4225 4441 +f 3761 4441 3865 +f 4225 4733 4829 +f 4225 4829 4441 +f 4733 5217 5329 +f 4733 5329 4829 +f 5217 5601 5809 +f 5217 5809 5329 +f 5601 6013 6173 +f 5601 6173 5809 +f 6013 6453 6633 +f 6013 6633 6173 +f 6453 6777 7001 +f 6453 7001 6633 +f 6777 7173 7333 +f 6777 7333 7001 +f 7173 7477 7737 +f 7173 7737 7333 +f 7477 7825 8025 +f 7477 8025 7737 +f 7825 8169 8373 +f 7825 8373 8025 +f 8169 8445 8717 +f 8169 8717 8373 +f 8445 8761 8961 +f 8445 8961 8717 +f 8761 9033 9277 +f 8761 9277 8961 +f 9033 9293 9557 +f 9033 9557 9277 +f 9293 9549 9801 +f 9293 9801 9557 +f 9549 9777 10073 +f 9549 10073 9801 +f 9777 9993 10269 +f 9777 10269 10073 +f 9993 10245 10509 +f 9993 10509 10269 +f 10245 10429 10729 +f 10245 10729 10509 +f 10429 10641 10929 +f 10429 10929 10729 +f 10641 10825 11109 +f 10641 11109 10929 +f 10825 11013 11309 +f 10825 11309 11109 +f 11013 11165 11465 +f 11013 11465 11309 +f 11165 11341 11617 +f 11165 11617 11465 +f 11341 11449 11805 +f 11341 11805 11617 +f 11449 11585 11885 +f 11449 11885 11805 +f 11585 11729 12021 +f 11585 12021 11885 +f 11729 11829 12153 +f 11729 12153 12021 +f 11829 11933 12249 +f 11829 12249 12153 +f 11933 12005 12329 +f 11933 12329 12249 +f 12005 12109 12433 +f 12005 12433 12329 +f 12109 12185 12509 +f 12109 12509 12433 +f 12185 12241 12557 +f 12185 12557 12509 +f 12241 12281 12613 +f 12241 12613 12557 +f 12281 12297 12653 +f 12281 12653 12613 +f 12297 12361 12669 +f 12297 12669 12653 +f 12361 12377 12693 +f 12361 12693 12669 +f 12377 12417 12717 +f 12377 12717 12693 +f 12417 12418 12718 +f 12417 12718 12717 +f 12418 12378 12694 +f 12418 12694 12718 +f 12378 12362 12670 +f 12378 12670 12694 +f 12362 12298 12654 +f 12362 12654 12670 +f 12298 12282 12614 +f 12298 12614 12654 +f 12282 12242 12558 +f 12282 12558 12614 +f 12242 12186 12510 +f 12242 12510 12558 +f 12186 12110 12434 +f 12186 12434 12510 +f 12110 12006 12330 +f 12110 12330 12434 +f 12006 11934 12250 +f 12006 12250 12330 +f 11934 11830 12154 +f 11934 12154 12250 +f 11830 11730 12022 +f 11830 12022 12154 +f 11730 11586 11886 +f 11730 11886 12022 +f 11586 11450 11806 +f 11586 11806 11886 +f 11450 11342 11618 +f 11450 11618 11806 +f 11342 11166 11466 +f 11342 11466 11618 +f 11166 11014 11310 +f 11166 11310 11466 +f 11014 10826 11110 +f 11014 11110 11310 +f 10826 10642 10930 +f 10826 10930 11110 +f 10642 10430 10730 +f 10642 10730 10930 +f 10430 10246 10510 +f 10430 10510 10730 +f 10246 9994 10270 +f 10246 10270 10510 +f 9994 9778 10074 +f 9994 10074 10270 +f 9778 9550 9802 +f 9778 9802 10074 +f 9550 9294 9558 +f 9550 9558 9802 +f 9294 9034 9278 +f 9294 9278 9558 +f 9034 8762 8962 +f 9034 8962 9278 +f 8762 8446 8718 +f 8762 8718 8962 +f 8446 8170 8374 +f 8446 8374 8718 +f 8170 7826 8026 +f 8170 8026 8374 +f 7826 7478 7738 +f 7826 7738 8026 +f 7478 7174 7334 +f 7478 7334 7738 +f 7174 6778 7002 +f 7174 7002 7334 +f 6778 6454 6634 +f 6778 6634 7002 +f 6454 6014 6174 +f 6454 6174 6634 +f 6014 5602 5810 +f 6014 5810 6174 +f 5602 5218 5330 +f 5602 5330 5810 +f 5218 4734 4830 +f 5218 4830 5330 +f 4734 4226 4442 +f 4734 4442 4830 +f 4226 3762 3866 +f 4226 3866 4442 +f 3762 3174 3270 +f 3762 3270 3866 +f 3174 2658 2798 +f 3174 2798 3270 +f 2658 2034 2066 +f 2658 2066 2798 +f 2034 1246 1262 +f 2034 1262 2066 +f 1261 2065 2113 +f 1261 2113 1309 +f 2065 2797 2845 +f 2065 2845 2113 +f 2797 3269 3349 +f 2797 3349 2845 +f 3269 3865 3929 +f 3269 3929 3349 +f 3865 4441 4517 +f 3865 4517 3929 +f 4441 4829 4973 +f 4441 4973 4517 +f 4829 5329 5473 +f 4829 5473 4973 +f 5329 5809 5933 +f 5329 5933 5473 +f 5809 6173 6357 +f 5809 6357 5933 +f 6173 6633 6737 +f 6173 6737 6357 +f 6633 7001 7197 +f 6633 7197 6737 +f 7001 7333 7557 +f 7001 7557 7197 +f 7333 7737 7905 +f 7333 7905 7557 +f 7737 8025 8285 +f 7737 8285 7905 +f 8025 8373 8581 +f 8025 8581 8285 +f 8373 8717 8905 +f 8373 8905 8581 +f 8717 8961 9253 +f 8717 9253 8905 +f 8961 9277 9485 +f 8961 9485 9253 +f 9277 9557 9785 +f 9277 9785 9485 +f 9557 9801 10081 +f 9557 10081 9785 +f 9801 10073 10301 +f 9801 10301 10081 +f 10073 10269 10581 +f 10073 10581 10301 +f 10269 10509 10761 +f 10269 10761 10581 +f 10509 10729 10997 +f 10509 10997 10761 +f 10729 10929 11189 +f 10729 11189 10997 +f 10929 11109 11409 +f 10929 11409 11189 +f 11109 11309 11553 +f 11109 11553 11409 +f 11309 11465 11777 +f 11309 11777 11553 +f 11465 11617 11893 +f 11465 11893 11777 +f 11617 11805 12077 +f 11617 12077 11893 +f 11805 11885 12209 +f 11805 12209 12077 +f 11885 12021 12305 +f 11885 12305 12209 +f 12021 12153 12449 +f 12021 12449 12305 +f 12153 12249 12549 +f 12153 12549 12449 +f 12249 12329 12645 +f 12249 12645 12549 +f 12329 12433 12725 +f 12329 12725 12645 +f 12433 12509 12833 +f 12433 12833 12725 +f 12509 12557 12865 +f 12509 12865 12833 +f 12557 12613 12913 +f 12557 12913 12865 +f 12613 12653 12945 +f 12613 12945 12913 +f 12653 12669 12985 +f 12653 12985 12945 +f 12669 12693 13017 +f 12669 13017 12985 +f 12693 12717 13049 +f 12693 13049 13017 +f 12717 12718 13050 +f 12717 13050 13049 +f 12718 12694 13018 +f 12718 13018 13050 +f 12694 12670 12986 +f 12694 12986 13018 +f 12670 12654 12946 +f 12670 12946 12986 +f 12654 12614 12914 +f 12654 12914 12946 +f 12614 12558 12866 +f 12614 12866 12914 +f 12558 12510 12834 +f 12558 12834 12866 +f 12510 12434 12726 +f 12510 12726 12834 +f 12434 12330 12646 +f 12434 12646 12726 +f 12330 12250 12550 +f 12330 12550 12646 +f 12250 12154 12450 +f 12250 12450 12550 +f 12154 12022 12306 +f 12154 12306 12450 +f 12022 11886 12210 +f 12022 12210 12306 +f 11886 11806 12078 +f 11886 12078 12210 +f 11806 11618 11894 +f 11806 11894 12078 +f 11618 11466 11778 +f 11618 11778 11894 +f 11466 11310 11554 +f 11466 11554 11778 +f 11310 11110 11410 +f 11310 11410 11554 +f 11110 10930 11190 +f 11110 11190 11410 +f 10930 10730 10998 +f 10930 10998 11190 +f 10730 10510 10762 +f 10730 10762 10998 +f 10510 10270 10582 +f 10510 10582 10762 +f 10270 10074 10302 +f 10270 10302 10582 +f 10074 9802 10082 +f 10074 10082 10302 +f 9802 9558 9786 +f 9802 9786 10082 +f 9558 9278 9486 +f 9558 9486 9786 +f 9278 8962 9254 +f 9278 9254 9486 +f 8962 8718 8906 +f 8962 8906 9254 +f 8718 8374 8582 +f 8718 8582 8906 +f 8374 8026 8286 +f 8374 8286 8582 +f 8026 7738 7906 +f 8026 7906 8286 +f 7738 7334 7558 +f 7738 7558 7906 +f 7334 7002 7198 +f 7334 7198 7558 +f 7002 6634 6738 +f 7002 6738 7198 +f 6634 6174 6358 +f 6634 6358 6738 +f 6174 5810 5934 +f 6174 5934 6358 +f 5810 5330 5474 +f 5810 5474 5934 +f 5330 4830 4974 +f 5330 4974 5474 +f 4830 4442 4518 +f 4830 4518 4974 +f 4442 3866 3930 +f 4442 3930 4518 +f 3866 3270 3350 +f 3866 3350 3930 +f 3270 2798 2846 +f 3270 2846 3350 +f 2798 2066 2114 +f 2798 2114 2846 +f 2066 1262 1310 +f 2066 1310 2114 +f 1309 2113 2145 +f 1309 2145 1325 +f 2113 2845 2893 +f 2113 2893 2145 +f 2845 3349 3461 +f 2845 3461 2893 +f 3349 3929 4017 +f 3349 4017 3461 +f 3929 4517 4597 +f 3929 4597 4017 +f 4517 4973 5169 +f 4517 5169 4597 +f 4973 5473 5561 +f 4973 5561 5169 +f 5473 5933 6077 +f 5473 6077 5561 +f 5933 6357 6537 +f 5933 6537 6077 +f 6357 6737 6921 +f 6357 6921 6537 +f 6737 7197 7317 +f 6737 7317 6921 +f 7197 7557 7753 +f 7197 7753 7317 +f 7557 7905 8121 +f 7557 8121 7753 +f 7905 8285 8453 +f 7905 8453 8121 +f 8285 8581 8825 +f 8285 8825 8453 +f 8581 8905 9129 +f 8581 9129 8825 +f 8905 9253 9429 +f 8905 9429 9129 +f 9253 9485 9761 +f 9253 9761 9429 +f 9485 9785 10001 +f 9485 10001 9761 +f 9785 10081 10285 +f 9785 10285 10001 +f 10081 10301 10589 +f 10081 10589 10285 +f 10301 10581 10785 +f 10301 10785 10589 +f 10581 10761 11053 +f 10581 11053 10785 +f 10761 10997 11237 +f 10761 11237 11053 +f 10997 11189 11457 +f 10997 11457 11237 +f 11189 11409 11657 +f 11189 11657 11457 +f 11409 11553 11845 +f 11409 11845 11657 +f 11553 11777 12013 +f 11553 12013 11845 +f 11777 11893 12201 +f 11777 12201 12013 +f 11893 12077 12321 +f 11893 12321 12201 +f 12077 12209 12501 +f 12077 12501 12321 +f 12209 12305 12621 +f 12209 12621 12501 +f 12305 12449 12733 +f 12305 12733 12621 +f 12449 12549 12841 +f 12449 12841 12733 +f 12549 12645 12929 +f 12549 12929 12841 +f 12645 12725 13041 +f 12645 13041 12929 +f 12725 12833 13105 +f 12725 13105 13041 +f 12833 12865 13173 +f 12833 13173 13105 +f 12865 12913 13221 +f 12865 13221 13173 +f 12913 12945 13253 +f 12913 13253 13221 +f 12945 12985 13285 +f 12945 13285 13253 +f 12985 13017 13301 +f 12985 13301 13285 +f 13017 13049 13325 +f 13017 13325 13301 +f 13049 13050 13326 +f 13049 13326 13325 +f 13050 13018 13302 +f 13050 13302 13326 +f 13018 12986 13286 +f 13018 13286 13302 +f 12986 12946 13254 +f 12986 13254 13286 +f 12946 12914 13222 +f 12946 13222 13254 +f 12914 12866 13174 +f 12914 13174 13222 +f 12866 12834 13106 +f 12866 13106 13174 +f 12834 12726 13042 +f 12834 13042 13106 +f 12726 12646 12930 +f 12726 12930 13042 +f 12646 12550 12842 +f 12646 12842 12930 +f 12550 12450 12734 +f 12550 12734 12842 +f 12450 12306 12622 +f 12450 12622 12734 +f 12306 12210 12502 +f 12306 12502 12622 +f 12210 12078 12322 +f 12210 12322 12502 +f 12078 11894 12202 +f 12078 12202 12322 +f 11894 11778 12014 +f 11894 12014 12202 +f 11778 11554 11846 +f 11778 11846 12014 +f 11554 11410 11658 +f 11554 11658 11846 +f 11410 11190 11458 +f 11410 11458 11658 +f 11190 10998 11238 +f 11190 11238 11458 +f 10998 10762 11054 +f 10998 11054 11238 +f 10762 10582 10786 +f 10762 10786 11054 +f 10582 10302 10590 +f 10582 10590 10786 +f 10302 10082 10286 +f 10302 10286 10590 +f 10082 9786 10002 +f 10082 10002 10286 +f 9786 9486 9762 +f 9786 9762 10002 +f 9486 9254 9430 +f 9486 9430 9762 +f 9254 8906 9130 +f 9254 9130 9430 +f 8906 8582 8826 +f 8906 8826 9130 +f 8582 8286 8454 +f 8582 8454 8826 +f 8286 7906 8122 +f 8286 8122 8454 +f 7906 7558 7754 +f 7906 7754 8122 +f 7558 7198 7318 +f 7558 7318 7754 +f 7198 6738 6922 +f 7198 6922 7318 +f 6738 6358 6538 +f 6738 6538 6922 +f 6358 5934 6078 +f 6358 6078 6538 +f 5934 5474 5562 +f 5934 5562 6078 +f 5474 4974 5170 +f 5474 5170 5562 +f 4974 4518 4598 +f 4974 4598 5170 +f 4518 3930 4018 +f 4518 4018 4598 +f 3930 3350 3462 +f 3930 3462 4018 +f 3350 2846 2894 +f 3350 2894 3462 +f 2846 2114 2146 +f 2846 2146 2894 +f 2114 1310 1326 +f 2114 1326 2146 +f 1325 2145 2177 +f 1325 2177 1357 +f 2145 2893 2933 +f 2145 2933 2177 +f 2893 3461 3597 +f 2893 3597 2933 +f 3461 4017 4137 +f 3461 4137 3597 +f 4017 4597 4709 +f 4017 4709 4137 +f 4597 5169 5257 +f 4597 5257 4709 +f 5169 5561 5737 +f 5169 5737 5257 +f 5561 6077 6189 +f 5561 6189 5737 +f 6077 6537 6657 +f 6077 6657 6189 +f 6537 6921 7125 +f 6537 7125 6657 +f 6921 7317 7509 +f 6921 7509 7125 +f 7317 7753 7889 +f 7317 7889 7509 +f 7753 8121 8309 +f 7753 8309 7889 +f 8121 8453 8669 +f 8121 8669 8309 +f 8453 8825 8985 +f 8453 8985 8669 +f 8825 9129 9349 +f 8825 9349 8985 +f 9129 9429 9661 +f 9129 9661 9349 +f 9429 9761 9937 +f 9429 9937 9661 +f 9761 10001 10253 +f 9761 10253 9937 +f 10001 10285 10517 +f 10001 10517 10253 +f 10285 10589 10769 +f 10285 10769 10517 +f 10589 10785 11061 +f 10589 11061 10769 +f 10785 11053 11269 +f 10785 11269 11061 +f 11053 11237 11513 +f 11053 11513 11269 +f 11237 11457 11713 +f 11237 11713 11513 +f 11457 11657 11901 +f 11457 11901 11713 +f 11657 11845 12117 +f 11657 12117 11901 +f 11845 12013 12273 +f 11845 12273 12117 +f 12013 12201 12457 +f 12013 12457 12273 +f 12201 12321 12597 +f 12201 12597 12457 +f 12321 12501 12749 +f 12321 12749 12597 +f 12501 12621 12889 +f 12501 12889 12749 +f 12621 12733 13009 +f 12621 13009 12889 +f 12733 12841 13125 +f 12733 13125 13009 +f 12841 12929 13213 +f 12841 13213 13125 +f 12929 13041 13293 +f 12929 13293 13213 +f 13041 13105 13381 +f 13041 13381 13293 +f 13105 13173 13449 +f 13105 13449 13381 +f 13173 13221 13489 +f 13173 13489 13449 +f 13221 13253 13537 +f 13221 13537 13489 +f 13253 13285 13577 +f 13253 13577 13537 +f 13285 13301 13585 +f 13285 13585 13577 +f 13301 13325 13609 +f 13301 13609 13585 +f 13325 13326 13610 +f 13325 13610 13609 +f 13326 13302 13586 +f 13326 13586 13610 +f 13302 13286 13578 +f 13302 13578 13586 +f 13286 13254 13538 +f 13286 13538 13578 +f 13254 13222 13490 +f 13254 13490 13538 +f 13222 13174 13450 +f 13222 13450 13490 +f 13174 13106 13382 +f 13174 13382 13450 +f 13106 13042 13294 +f 13106 13294 13382 +f 13042 12930 13214 +f 13042 13214 13294 +f 12930 12842 13126 +f 12930 13126 13214 +f 12842 12734 13010 +f 12842 13010 13126 +f 12734 12622 12890 +f 12734 12890 13010 +f 12622 12502 12750 +f 12622 12750 12890 +f 12502 12322 12598 +f 12502 12598 12750 +f 12322 12202 12458 +f 12322 12458 12598 +f 12202 12014 12274 +f 12202 12274 12458 +f 12014 11846 12118 +f 12014 12118 12274 +f 11846 11658 11902 +f 11846 11902 12118 +f 11658 11458 11714 +f 11658 11714 11902 +f 11458 11238 11514 +f 11458 11514 11714 +f 11238 11054 11270 +f 11238 11270 11514 +f 11054 10786 11062 +f 11054 11062 11270 +f 10786 10590 10770 +f 10786 10770 11062 +f 10590 10286 10518 +f 10590 10518 10770 +f 10286 10002 10254 +f 10286 10254 10518 +f 10002 9762 9938 +f 10002 9938 10254 +f 9762 9430 9662 +f 9762 9662 9938 +f 9430 9130 9350 +f 9430 9350 9662 +f 9130 8826 8986 +f 9130 8986 9350 +f 8826 8454 8670 +f 8826 8670 8986 +f 8454 8122 8310 +f 8454 8310 8670 +f 8122 7754 7890 +f 8122 7890 8310 +f 7754 7318 7510 +f 7754 7510 7890 +f 7318 6922 7126 +f 7318 7126 7510 +f 6922 6538 6658 +f 6922 6658 7126 +f 6538 6078 6190 +f 6538 6190 6658 +f 6078 5562 5738 +f 6078 5738 6190 +f 5562 5170 5258 +f 5562 5258 5738 +f 5170 4598 4710 +f 5170 4710 5258 +f 4598 4018 4138 +f 4598 4138 4710 +f 4018 3462 3598 +f 4018 3598 4138 +f 3462 2894 2934 +f 3462 2934 3598 +f 2894 2146 2178 +f 2894 2178 2934 +f 2146 1326 1358 +f 2146 1358 2178 +f 1357 2177 2225 +f 1357 2225 1389 +f 2177 2933 2981 +f 2177 2981 2225 +f 2933 3597 3697 +f 2933 3697 2981 +f 3597 4137 4209 +f 3597 4209 3697 +f 4137 4709 4773 +f 4137 4773 4209 +f 4709 5257 5345 +f 4709 5345 4773 +f 5257 5737 5901 +f 5257 5901 5345 +f 5737 6189 6333 +f 5737 6333 5901 +f 6189 6657 6785 +f 6189 6785 6333 +f 6657 7125 7245 +f 6657 7245 6785 +f 7125 7509 7705 +f 7125 7705 7245 +f 7509 7889 8057 +f 7509 8057 7705 +f 7889 8309 8461 +f 7889 8461 8057 +f 8309 8669 8849 +f 8309 8849 8461 +f 8669 8985 9201 +f 8669 9201 8849 +f 8985 9349 9509 +f 8985 9509 9201 +f 9349 9661 9857 +f 9349 9857 9509 +f 9661 9937 10173 +f 9661 10173 9857 +f 9937 10253 10445 +f 9937 10445 10173 +f 10253 10517 10737 +f 10253 10737 10445 +f 10517 10769 11021 +f 10517 11021 10737 +f 10769 11061 11245 +f 10769 11245 11021 +f 11061 11269 11521 +f 11061 11521 11245 +f 11269 11513 11745 +f 11269 11745 11521 +f 11513 11713 11957 +f 11513 11957 11745 +f 11713 11901 12161 +f 11713 12161 11957 +f 11901 12117 12337 +f 11901 12337 12161 +f 12117 12273 12525 +f 12117 12525 12337 +f 12273 12457 12685 +f 12273 12685 12525 +f 12457 12597 12857 +f 12457 12857 12685 +f 12597 12749 13001 +f 12597 13001 12857 +f 12749 12889 13133 +f 12749 13133 13001 +f 12889 13009 13261 +f 12889 13261 13133 +f 13009 13125 13373 +f 13009 13373 13261 +f 13125 13213 13465 +f 13125 13465 13373 +f 13213 13293 13553 +f 13213 13553 13465 +f 13293 13381 13649 +f 13293 13649 13553 +f 13381 13449 13709 +f 13381 13709 13649 +f 13449 13489 13781 +f 13449 13781 13709 +f 13489 13537 13789 +f 13489 13789 13781 +f 13537 13577 13829 +f 13537 13829 13789 +f 13577 13585 13861 +f 13577 13861 13829 +f 13585 13609 13869 +f 13585 13869 13861 +f 13609 13610 13870 +f 13609 13870 13869 +f 13610 13586 13862 +f 13610 13862 13870 +f 13586 13578 13830 +f 13586 13830 13862 +f 13578 13538 13790 +f 13578 13790 13830 +f 13538 13490 13782 +f 13538 13782 13790 +f 13490 13450 13710 +f 13490 13710 13782 +f 13450 13382 13650 +f 13450 13650 13710 +f 13382 13294 13554 +f 13382 13554 13650 +f 13294 13214 13466 +f 13294 13466 13554 +f 13214 13126 13374 +f 13214 13374 13466 +f 13126 13010 13262 +f 13126 13262 13374 +f 13010 12890 13134 +f 13010 13134 13262 +f 12890 12750 13002 +f 12890 13002 13134 +f 12750 12598 12858 +f 12750 12858 13002 +f 12598 12458 12686 +f 12598 12686 12858 +f 12458 12274 12526 +f 12458 12526 12686 +f 12274 12118 12338 +f 12274 12338 12526 +f 12118 11902 12162 +f 12118 12162 12338 +f 11902 11714 11958 +f 11902 11958 12162 +f 11714 11514 11746 +f 11714 11746 11958 +f 11514 11270 11522 +f 11514 11522 11746 +f 11270 11062 11246 +f 11270 11246 11522 +f 11062 10770 11022 +f 11062 11022 11246 +f 10770 10518 10738 +f 10770 10738 11022 +f 10518 10254 10446 +f 10518 10446 10738 +f 10254 9938 10174 +f 10254 10174 10446 +f 9938 9662 9858 +f 9938 9858 10174 +f 9662 9350 9510 +f 9662 9510 9858 +f 9350 8986 9202 +f 9350 9202 9510 +f 8986 8670 8850 +f 8986 8850 9202 +f 8670 8310 8462 +f 8670 8462 8850 +f 8310 7890 8058 +f 8310 8058 8462 +f 7890 7510 7706 +f 7890 7706 8058 +f 7510 7126 7246 +f 7510 7246 7706 +f 7126 6658 6786 +f 7126 6786 7246 +f 6658 6190 6334 +f 6658 6334 6786 +f 6190 5738 5902 +f 6190 5902 6334 +f 5738 5258 5346 +f 5738 5346 5902 +f 5258 4710 4774 +f 5258 4774 5346 +f 4710 4138 4210 +f 4710 4210 4774 +f 4138 3598 3698 +f 4138 3698 4210 +f 3598 2934 2982 +f 3598 2982 3698 +f 2934 2178 2226 +f 2934 2226 2982 +f 2178 1358 1390 +f 2178 1390 2226 +f 1389 2225 2257 +f 1389 2257 1405 +f 2225 2981 3029 +f 2225 3029 2257 +f 2981 3697 3729 +f 2981 3729 3029 +f 3697 4209 4329 +f 3697 4329 3729 +f 4209 4773 4885 +f 4209 4885 4329 +f 4773 5345 5425 +f 4773 5425 4885 +f 5345 5901 5973 +f 5345 5973 5425 +f 5901 6333 6505 +f 5901 6505 5973 +f 6333 6785 6929 +f 6333 6929 6505 +f 6785 7245 7389 +f 6785 7389 6929 +f 7245 7705 7809 +f 7245 7809 7389 +f 7705 8057 8261 +f 7705 8261 7809 +f 8057 8461 8621 +f 8057 8621 8261 +f 8461 8849 8993 +f 8461 8993 8621 +f 8849 9201 9373 +f 8849 9373 8993 +f 9201 9509 9729 +f 9201 9729 9373 +f 9509 9857 10041 +f 9509 10041 9729 +f 9857 10173 10349 +f 9857 10349 10041 +f 10173 10445 10649 +f 10173 10649 10349 +f 10445 10737 10945 +f 10445 10945 10649 +f 10737 11021 11205 +f 10737 11205 10945 +f 11021 11245 11473 +f 11021 11473 11205 +f 11245 11521 11721 +f 11245 11721 11473 +f 11521 11745 11965 +f 11521 11965 11721 +f 11745 11957 12177 +f 11745 12177 11965 +f 11957 12161 12393 +f 11957 12393 12177 +f 12161 12337 12565 +f 12161 12565 12393 +f 12337 12525 12765 +f 12337 12765 12565 +f 12525 12685 12921 +f 12525 12921 12765 +f 12685 12857 13089 +f 12685 13089 12921 +f 12857 13001 13229 +f 12857 13229 13089 +f 13001 13133 13397 +f 13001 13397 13229 +f 13133 13261 13497 +f 13133 13497 13397 +f 13261 13373 13625 +f 13261 13625 13497 +f 13373 13465 13717 +f 13373 13717 13625 +f 13465 13553 13797 +f 13465 13797 13717 +f 13553 13649 13893 +f 13553 13893 13797 +f 13649 13709 13977 +f 13649 13977 13893 +f 13709 13781 14009 +f 13709 14009 13977 +f 13781 13789 14041 +f 13781 14041 14009 +f 13789 13829 14105 +f 13789 14105 14041 +f 13829 13861 14121 +f 13829 14121 14105 +f 13861 13869 14137 +f 13861 14137 14121 +f 13869 13870 14138 +f 13869 14138 14137 +f 13870 13862 14122 +f 13870 14122 14138 +f 13862 13830 14106 +f 13862 14106 14122 +f 13830 13790 14042 +f 13830 14042 14106 +f 13790 13782 14010 +f 13790 14010 14042 +f 13782 13710 13978 +f 13782 13978 14010 +f 13710 13650 13894 +f 13710 13894 13978 +f 13650 13554 13798 +f 13650 13798 13894 +f 13554 13466 13718 +f 13554 13718 13798 +f 13466 13374 13626 +f 13466 13626 13718 +f 13374 13262 13498 +f 13374 13498 13626 +f 13262 13134 13398 +f 13262 13398 13498 +f 13134 13002 13230 +f 13134 13230 13398 +f 13002 12858 13090 +f 13002 13090 13230 +f 12858 12686 12922 +f 12858 12922 13090 +f 12686 12526 12766 +f 12686 12766 12922 +f 12526 12338 12566 +f 12526 12566 12766 +f 12338 12162 12394 +f 12338 12394 12566 +f 12162 11958 12178 +f 12162 12178 12394 +f 11958 11746 11966 +f 11958 11966 12178 +f 11746 11522 11722 +f 11746 11722 11966 +f 11522 11246 11474 +f 11522 11474 11722 +f 11246 11022 11206 +f 11246 11206 11474 +f 11022 10738 10946 +f 11022 10946 11206 +f 10738 10446 10650 +f 10738 10650 10946 +f 10446 10174 10350 +f 10446 10350 10650 +f 10174 9858 10042 +f 10174 10042 10350 +f 9858 9510 9730 +f 9858 9730 10042 +f 9510 9202 9374 +f 9510 9374 9730 +f 9202 8850 8994 +f 9202 8994 9374 +f 8850 8462 8622 +f 8850 8622 8994 +f 8462 8058 8262 +f 8462 8262 8622 +f 8058 7706 7810 +f 8058 7810 8262 +f 7706 7246 7390 +f 7706 7390 7810 +f 7246 6786 6930 +f 7246 6930 7390 +f 6786 6334 6506 +f 6786 6506 6930 +f 6334 5902 5974 +f 6334 5974 6506 +f 5902 5346 5426 +f 5902 5426 5974 +f 5346 4774 4886 +f 5346 4886 5426 +f 4774 4210 4330 +f 4774 4330 4886 +f 4210 3698 3730 +f 4210 3730 4330 +f 3698 2982 3030 +f 3698 3030 3730 +f 2982 2226 2258 +f 2982 2258 3030 +f 2226 1390 1406 +f 2226 1406 2258 +f 1405 2257 2289 +f 1405 2289 1421 +f 2257 3029 3077 +f 2257 3077 2289 +f 3029 3729 3793 +f 3029 3793 3077 +f 3729 4329 4469 +f 3729 4469 3793 +f 4329 4885 4981 +f 4329 4981 4469 +f 4885 5425 5529 +f 4885 5529 4981 +f 5425 5973 6085 +f 5425 6085 5529 +f 5973 6505 6593 +f 5973 6593 6085 +f 6505 6929 7101 +f 6505 7101 6593 +f 6929 7389 7525 +f 6929 7525 7101 +f 7389 7809 7961 +f 7389 7961 7525 +f 7809 8261 8381 +f 7809 8381 7961 +f 8261 8621 8801 +f 8261 8801 8381 +f 8621 8993 9169 +f 8621 9169 8801 +f 8993 9373 9525 +f 8993 9525 9169 +f 9373 9729 9881 +f 9373 9881 9525 +f 9729 10041 10221 +f 9729 10221 9881 +f 10041 10349 10549 +f 10041 10549 10221 +f 10349 10649 10841 +f 10349 10841 10549 +f 10649 10945 11117 +f 10649 11117 10841 +f 10945 11205 11417 +f 10945 11417 11117 +f 11205 11473 11673 +f 11205 11673 11417 +f 11473 11721 11909 +f 11473 11909 11673 +f 11721 11965 12169 +f 11721 12169 11909 +f 11965 12177 12409 +f 11965 12409 12169 +f 12177 12393 12589 +f 12177 12589 12409 +f 12393 12565 12817 +f 12393 12817 12589 +f 12565 12765 12969 +f 12565 12969 12817 +f 12765 12921 13157 +f 12765 13157 12969 +f 12921 13089 13317 +f 12921 13317 13157 +f 13089 13229 13457 +f 13089 13457 13317 +f 13229 13397 13617 +f 13229 13617 13457 +f 13397 13497 13741 +f 13397 13741 13617 +f 13497 13625 13845 +f 13497 13845 13741 +f 13625 13717 13969 +f 13625 13969 13845 +f 13717 13797 14033 +f 13717 14033 13969 +f 13797 13893 14129 +f 13797 14129 14033 +f 13893 13977 14201 +f 13893 14201 14129 +f 13977 14009 14261 +f 13977 14261 14201 +f 14009 14041 14309 +f 14009 14309 14261 +f 14041 14105 14317 +f 14041 14317 14309 +f 14105 14121 14349 +f 14105 14349 14317 +f 14121 14137 14365 +f 14121 14365 14349 +f 14137 14138 14366 +f 14137 14366 14365 +f 14138 14122 14350 +f 14138 14350 14366 +f 14122 14106 14318 +f 14122 14318 14350 +f 14106 14042 14310 +f 14106 14310 14318 +f 14042 14010 14262 +f 14042 14262 14310 +f 14010 13978 14202 +f 14010 14202 14262 +f 13978 13894 14130 +f 13978 14130 14202 +f 13894 13798 14034 +f 13894 14034 14130 +f 13798 13718 13970 +f 13798 13970 14034 +f 13718 13626 13846 +f 13718 13846 13970 +f 13626 13498 13742 +f 13626 13742 13846 +f 13498 13398 13618 +f 13498 13618 13742 +f 13398 13230 13458 +f 13398 13458 13618 +f 13230 13090 13318 +f 13230 13318 13458 +f 13090 12922 13158 +f 13090 13158 13318 +f 12922 12766 12970 +f 12922 12970 13158 +f 12766 12566 12818 +f 12766 12818 12970 +f 12566 12394 12590 +f 12566 12590 12818 +f 12394 12178 12410 +f 12394 12410 12590 +f 12178 11966 12170 +f 12178 12170 12410 +f 11966 11722 11910 +f 11966 11910 12170 +f 11722 11474 11674 +f 11722 11674 11910 +f 11474 11206 11418 +f 11474 11418 11674 +f 11206 10946 11118 +f 11206 11118 11418 +f 10946 10650 10842 +f 10946 10842 11118 +f 10650 10350 10550 +f 10650 10550 10842 +f 10350 10042 10222 +f 10350 10222 10550 +f 10042 9730 9882 +f 10042 9882 10222 +f 9730 9374 9526 +f 9730 9526 9882 +f 9374 8994 9170 +f 9374 9170 9526 +f 8994 8622 8802 +f 8994 8802 9170 +f 8622 8262 8382 +f 8622 8382 8802 +f 8262 7810 7962 +f 8262 7962 8382 +f 7810 7390 7526 +f 7810 7526 7962 +f 7390 6930 7102 +f 7390 7102 7526 +f 6930 6506 6594 +f 6930 6594 7102 +f 6506 5974 6086 +f 6506 6086 6594 +f 5974 5426 5530 +f 5974 5530 6086 +f 5426 4886 4982 +f 5426 4982 5530 +f 4886 4330 4470 +f 4886 4470 4982 +f 4330 3730 3794 +f 4330 3794 4470 +f 3730 3030 3078 +f 3730 3078 3794 +f 3030 2258 2290 +f 3030 2290 3078 +f 2258 1406 1422 +f 2258 1422 2290 +f 1421 2289 2337 +f 1421 2337 1477 +f 2289 3077 3125 +f 2289 3125 2337 +f 3077 3793 3825 +f 3077 3825 3125 +f 3793 4469 4501 +f 3793 4501 3825 +f 4469 4981 5109 +f 4469 5109 4501 +f 4981 5529 5633 +f 4981 5633 5109 +f 5529 6085 6157 +f 5529 6157 5633 +f 6085 6593 6689 +f 6085 6689 6157 +f 6593 7101 7213 +f 6593 7213 6689 +f 7101 7525 7665 +f 7101 7665 7213 +f 7525 7961 8113 +f 7525 8113 7665 +f 7961 8381 8509 +f 7961 8509 8113 +f 8381 8801 8921 +f 8381 8921 8509 +f 8801 9169 9317 +f 8801 9317 8921 +f 9169 9525 9705 +f 9169 9705 9317 +f 9525 9881 10049 +f 9525 10049 9705 +f 9881 10221 10381 +f 9881 10381 10049 +f 10221 10549 10705 +f 10221 10705 10381 +f 10549 10841 11037 +f 10549 11037 10705 +f 10841 11117 11333 +f 10841 11333 11037 +f 11117 11417 11577 +f 11117 11577 11333 +f 11417 11673 11853 +f 11417 11853 11577 +f 11673 11909 12133 +f 11673 12133 11853 +f 11909 12169 12353 +f 11909 12353 12133 +f 12169 12409 12573 +f 12169 12573 12353 +f 12409 12589 12825 +f 12409 12825 12573 +f 12589 12817 12993 +f 12589 12993 12825 +f 12817 12969 13189 +f 12817 13189 12993 +f 12969 13157 13357 +f 12969 13357 13189 +f 13157 13317 13521 +f 13157 13521 13357 +f 13317 13457 13693 +f 13317 13693 13521 +f 13457 13617 13813 +f 13457 13813 13693 +f 13617 13741 13961 +f 13617 13961 13813 +f 13741 13845 14057 +f 13741 14057 13961 +f 13845 13969 14177 +f 13845 14177 14057 +f 13969 14033 14269 +f 13969 14269 14177 +f 14033 14129 14341 +f 14033 14341 14269 +f 14129 14201 14437 +f 14129 14437 14341 +f 14201 14261 14481 +f 14201 14481 14437 +f 14261 14309 14513 +f 14261 14513 14481 +f 14309 14317 14545 +f 14309 14545 14513 +f 14317 14349 14585 +f 14317 14585 14545 +f 14349 14365 14601 +f 14349 14601 14585 +f 14365 14366 14602 +f 14365 14602 14601 +f 14366 14350 14586 +f 14366 14586 14602 +f 14350 14318 14546 +f 14350 14546 14586 +f 14318 14310 14514 +f 14318 14514 14546 +f 14310 14262 14482 +f 14310 14482 14514 +f 14262 14202 14438 +f 14262 14438 14482 +f 14202 14130 14342 +f 14202 14342 14438 +f 14130 14034 14270 +f 14130 14270 14342 +f 14034 13970 14178 +f 14034 14178 14270 +f 13970 13846 14058 +f 13970 14058 14178 +f 13846 13742 13962 +f 13846 13962 14058 +f 13742 13618 13814 +f 13742 13814 13962 +f 13618 13458 13694 +f 13618 13694 13814 +f 13458 13318 13522 +f 13458 13522 13694 +f 13318 13158 13358 +f 13318 13358 13522 +f 13158 12970 13190 +f 13158 13190 13358 +f 12970 12818 12994 +f 12970 12994 13190 +f 12818 12590 12826 +f 12818 12826 12994 +f 12590 12410 12574 +f 12590 12574 12826 +f 12410 12170 12354 +f 12410 12354 12574 +f 12170 11910 12134 +f 12170 12134 12354 +f 11910 11674 11854 +f 11910 11854 12134 +f 11674 11418 11578 +f 11674 11578 11854 +f 11418 11118 11334 +f 11418 11334 11578 +f 11118 10842 11038 +f 11118 11038 11334 +f 10842 10550 10706 +f 10842 10706 11038 +f 10550 10222 10382 +f 10550 10382 10706 +f 10222 9882 10050 +f 10222 10050 10382 +f 9882 9526 9706 +f 9882 9706 10050 +f 9526 9170 9318 +f 9526 9318 9706 +f 9170 8802 8922 +f 9170 8922 9318 +f 8802 8382 8510 +f 8802 8510 8922 +f 8382 7962 8114 +f 8382 8114 8510 +f 7962 7526 7666 +f 7962 7666 8114 +f 7526 7102 7214 +f 7526 7214 7666 +f 7102 6594 6690 +f 7102 6690 7214 +f 6594 6086 6158 +f 6594 6158 6690 +f 6086 5530 5634 +f 6086 5634 6158 +f 5530 4982 5110 +f 5530 5110 5634 +f 4982 4470 4502 +f 4982 4502 5110 +f 4470 3794 3826 +f 4470 3826 4502 +f 3794 3078 3126 +f 3794 3126 3826 +f 3078 2290 2338 +f 3078 2338 3126 +f 2290 1422 1478 +f 2290 1478 2338 +f 1477 2337 2377 +f 1477 2377 1501 +f 2337 3125 3157 +f 2337 3157 2377 +f 3125 3825 3897 +f 3125 3897 3157 +f 3825 4501 4565 +f 3825 4565 3897 +f 4501 5109 5201 +f 4501 5201 4565 +f 5109 5633 5753 +f 5109 5753 5201 +f 5633 6157 6269 +f 5633 6269 5753 +f 6157 6689 6793 +f 6157 6793 6269 +f 6689 7213 7285 +f 6689 7285 6793 +f 7213 7665 7785 +f 7213 7785 7285 +f 7665 8113 8245 +f 7665 8245 7785 +f 8113 8509 8685 +f 8113 8685 8245 +f 8509 8921 9065 +f 8509 9065 8685 +f 8921 9317 9445 +f 8921 9445 9065 +f 9317 9705 9833 +f 9317 9833 9445 +f 9705 10049 10197 +f 9705 10197 9833 +f 10049 10381 10565 +f 10049 10565 10197 +f 10381 10705 10865 +f 10381 10865 10565 +f 10705 11037 11173 +f 10705 11173 10865 +f 11037 11333 11489 +f 11037 11489 11173 +f 11333 11577 11797 +f 11333 11797 11489 +f 11577 11853 12037 +f 11577 12037 11797 +f 11853 12133 12289 +f 11853 12289 12037 +f 12133 12353 12533 +f 12133 12533 12289 +f 12353 12573 12781 +f 12353 12781 12533 +f 12573 12825 12977 +f 12573 12977 12781 +f 12825 12993 13197 +f 12825 13197 12977 +f 12993 13189 13405 +f 12993 13405 13197 +f 13189 13357 13561 +f 13189 13561 13405 +f 13357 13521 13725 +f 13357 13725 13561 +f 13521 13693 13885 +f 13521 13885 13725 +f 13693 13813 14017 +f 13693 14017 13885 +f 13813 13961 14153 +f 13813 14153 14017 +f 13961 14057 14277 +f 13961 14277 14153 +f 14057 14177 14373 +f 14057 14373 14277 +f 14177 14269 14473 +f 14177 14473 14373 +f 14269 14341 14553 +f 14269 14553 14473 +f 14341 14437 14625 +f 14341 14625 14553 +f 14437 14481 14685 +f 14437 14685 14625 +f 14481 14513 14733 +f 14481 14733 14685 +f 14513 14545 14757 +f 14513 14757 14733 +f 14545 14585 14789 +f 14545 14789 14757 +f 14585 14601 14797 +f 14585 14797 14789 +f 14601 14602 14798 +f 14601 14798 14797 +f 14602 14586 14790 +f 14602 14790 14798 +f 14586 14546 14758 +f 14586 14758 14790 +f 14546 14514 14734 +f 14546 14734 14758 +f 14514 14482 14686 +f 14514 14686 14734 +f 14482 14438 14626 +f 14482 14626 14686 +f 14438 14342 14554 +f 14438 14554 14626 +f 14342 14270 14474 +f 14342 14474 14554 +f 14270 14178 14374 +f 14270 14374 14474 +f 14178 14058 14278 +f 14178 14278 14374 +f 14058 13962 14154 +f 14058 14154 14278 +f 13962 13814 14018 +f 13962 14018 14154 +f 13814 13694 13886 +f 13814 13886 14018 +f 13694 13522 13726 +f 13694 13726 13886 +f 13522 13358 13562 +f 13522 13562 13726 +f 13358 13190 13406 +f 13358 13406 13562 +f 13190 12994 13198 +f 13190 13198 13406 +f 12994 12826 12978 +f 12994 12978 13198 +f 12826 12574 12782 +f 12826 12782 12978 +f 12574 12354 12534 +f 12574 12534 12782 +f 12354 12134 12290 +f 12354 12290 12534 +f 12134 11854 12038 +f 12134 12038 12290 +f 11854 11578 11798 +f 11854 11798 12038 +f 11578 11334 11490 +f 11578 11490 11798 +f 11334 11038 11174 +f 11334 11174 11490 +f 11038 10706 10866 +f 11038 10866 11174 +f 10706 10382 10566 +f 10706 10566 10866 +f 10382 10050 10198 +f 10382 10198 10566 +f 10050 9706 9834 +f 10050 9834 10198 +f 9706 9318 9446 +f 9706 9446 9834 +f 9318 8922 9066 +f 9318 9066 9446 +f 8922 8510 8686 +f 8922 8686 9066 +f 8510 8114 8246 +f 8510 8246 8686 +f 8114 7666 7786 +f 8114 7786 8246 +f 7666 7214 7286 +f 7666 7286 7786 +f 7214 6690 6794 +f 7214 6794 7286 +f 6690 6158 6270 +f 6690 6270 6794 +f 6158 5634 5754 +f 6158 5754 6270 +f 5634 5110 5202 +f 5634 5202 5754 +f 5110 4502 4566 +f 5110 4566 5202 +f 4502 3826 3898 +f 4502 3898 4566 +f 3826 3126 3158 +f 3826 3158 3898 +f 3126 2338 2378 +f 3126 2378 3158 +f 2338 1478 1502 +f 2338 1502 2378 +f 1501 2377 2409 +f 1501 2409 1525 +f 2377 3157 3189 +f 2377 3189 2409 +f 3157 3897 3921 +f 3157 3921 3189 +f 3897 4565 4629 +f 3897 4629 3921 +f 4565 5201 5265 +f 4565 5265 4629 +f 5201 5753 5869 +f 5201 5869 5265 +f 5753 6269 6389 +f 5753 6389 5869 +f 6269 6793 6889 +f 6269 6889 6389 +f 6793 7285 7413 +f 6793 7413 6889 +f 7285 7785 7857 +f 7285 7857 7413 +f 7785 8245 8341 +f 7785 8341 7857 +f 8245 8685 8793 +f 8245 8793 8341 +f 8685 9065 9225 +f 8685 9225 8793 +f 9065 9445 9597 +f 9065 9597 9225 +f 9445 9833 9953 +f 9445 9953 9597 +f 9833 10197 10341 +f 9833 10341 9953 +f 10197 10565 10681 +f 10197 10681 10341 +f 10565 10865 11045 +f 10565 11045 10681 +f 10865 11173 11365 +f 10865 11365 11045 +f 11173 11489 11641 +f 11173 11641 11365 +f 11489 11797 11925 +f 11489 11925 11641 +f 11797 12037 12217 +f 11797 12217 11925 +f 12037 12289 12477 +f 12037 12477 12217 +f 12289 12533 12709 +f 12289 12709 12477 +f 12533 12781 12937 +f 12533 12937 12709 +f 12781 12977 13181 +f 12781 13181 12937 +f 12977 13197 13365 +f 12977 13365 13181 +f 13197 13405 13569 +f 13197 13569 13365 +f 13405 13561 13749 +f 13405 13749 13569 +f 13561 13725 13917 +f 13561 13917 13749 +f 13725 13885 14065 +f 13725 14065 13917 +f 13885 14017 14221 +f 13885 14221 14065 +f 14017 14153 14325 +f 14017 14325 14221 +f 14153 14277 14465 +f 14153 14465 14325 +f 14277 14373 14577 +f 14277 14577 14465 +f 14373 14473 14677 +f 14373 14677 14577 +f 14473 14553 14741 +f 14473 14741 14677 +f 14553 14625 14829 +f 14553 14829 14741 +f 14625 14685 14897 +f 14625 14897 14829 +f 14685 14733 14921 +f 14685 14921 14897 +f 14733 14757 14953 +f 14733 14953 14921 +f 14757 14789 14993 +f 14757 14993 14953 +f 14789 14797 15001 +f 14789 15001 14993 +f 14797 14798 15002 +f 14797 15002 15001 +f 14798 14790 14994 +f 14798 14994 15002 +f 14790 14758 14954 +f 14790 14954 14994 +f 14758 14734 14922 +f 14758 14922 14954 +f 14734 14686 14898 +f 14734 14898 14922 +f 14686 14626 14830 +f 14686 14830 14898 +f 14626 14554 14742 +f 14626 14742 14830 +f 14554 14474 14678 +f 14554 14678 14742 +f 14474 14374 14578 +f 14474 14578 14678 +f 14374 14278 14466 +f 14374 14466 14578 +f 14278 14154 14326 +f 14278 14326 14466 +f 14154 14018 14222 +f 14154 14222 14326 +f 14018 13886 14066 +f 14018 14066 14222 +f 13886 13726 13918 +f 13886 13918 14066 +f 13726 13562 13750 +f 13726 13750 13918 +f 13562 13406 13570 +f 13562 13570 13750 +f 13406 13198 13366 +f 13406 13366 13570 +f 13198 12978 13182 +f 13198 13182 13366 +f 12978 12782 12938 +f 12978 12938 13182 +f 12782 12534 12710 +f 12782 12710 12938 +f 12534 12290 12478 +f 12534 12478 12710 +f 12290 12038 12218 +f 12290 12218 12478 +f 12038 11798 11926 +f 12038 11926 12218 +f 11798 11490 11642 +f 11798 11642 11926 +f 11490 11174 11366 +f 11490 11366 11642 +f 11174 10866 11046 +f 11174 11046 11366 +f 10866 10566 10682 +f 10866 10682 11046 +f 10566 10198 10342 +f 10566 10342 10682 +f 10198 9834 9954 +f 10198 9954 10342 +f 9834 9446 9598 +f 9834 9598 9954 +f 9446 9066 9226 +f 9446 9226 9598 +f 9066 8686 8794 +f 9066 8794 9226 +f 8686 8246 8342 +f 8686 8342 8794 +f 8246 7786 7858 +f 8246 7858 8342 +f 7786 7286 7414 +f 7786 7414 7858 +f 7286 6794 6890 +f 7286 6890 7414 +f 6794 6270 6390 +f 6794 6390 6890 +f 6270 5754 5870 +f 6270 5870 6390 +f 5754 5202 5266 +f 5754 5266 5870 +f 5202 4566 4630 +f 5202 4630 5266 +f 4566 3898 3922 +f 4566 3922 4630 +f 3898 3158 3190 +f 3898 3190 3922 +f 3158 2378 2410 +f 3158 2410 3190 +f 2378 1502 1526 +f 2378 1526 2410 +f 1525 2409 2457 +f 1525 2457 1557 +f 2409 3189 3253 +f 2409 3253 2457 +f 3189 3921 3993 +f 3189 3993 3253 +f 3921 4629 4661 +f 3921 4661 3993 +f 4629 5265 5313 +f 4629 5313 4661 +f 5265 5869 5917 +f 5265 5917 5313 +f 5869 6389 6497 +f 5869 6497 5917 +f 6389 6889 7025 +f 6389 7025 6497 +f 6889 7413 7493 +f 6889 7493 7025 +f 7413 7857 7985 +f 7413 7985 7493 +f 7857 8341 8437 +f 7857 8437 7985 +f 8341 8793 8881 +f 8341 8881 8437 +f 8793 9225 9325 +f 8793 9325 8881 +f 9225 9597 9745 +f 9225 9745 9325 +f 9597 9953 10129 +f 9597 10129 9745 +f 9953 10341 10469 +f 9953 10469 10129 +f 10341 10681 10833 +f 10341 10833 10469 +f 10681 11045 11157 +f 10681 11157 10833 +f 11045 11365 11497 +f 11045 11497 11157 +f 11365 11641 11813 +f 11365 11813 11497 +f 11641 11925 12093 +f 11641 12093 11813 +f 11925 12217 12369 +f 11925 12369 12093 +f 12217 12477 12629 +f 12217 12629 12369 +f 12477 12709 12881 +f 12477 12881 12629 +f 12709 12937 13117 +f 12709 13117 12881 +f 12937 13181 13333 +f 12937 13333 13117 +f 13181 13365 13529 +f 13181 13529 13333 +f 13365 13569 13733 +f 13365 13733 13529 +f 13569 13749 13925 +f 13569 13925 13733 +f 13749 13917 14089 +f 13749 14089 13925 +f 13917 14065 14245 +f 13917 14245 14089 +f 14065 14221 14397 +f 14065 14397 14245 +f 14221 14325 14521 +f 14221 14521 14397 +f 14325 14465 14641 +f 14325 14641 14521 +f 14465 14577 14749 +f 14465 14749 14641 +f 14577 14677 14861 +f 14577 14861 14749 +f 14677 14741 14929 +f 14677 14929 14861 +f 14741 14829 15009 +f 14741 15009 14929 +f 14829 14897 15065 +f 14829 15065 15009 +f 14897 14921 15125 +f 14897 15125 15065 +f 14921 14953 15141 +f 14921 15141 15125 +f 14953 14993 15165 +f 14953 15165 15141 +f 14993 15001 15181 +f 14993 15181 15165 +f 15001 15002 15182 +f 15001 15182 15181 +f 15002 14994 15166 +f 15002 15166 15182 +f 14994 14954 15142 +f 14994 15142 15166 +f 14954 14922 15126 +f 14954 15126 15142 +f 14922 14898 15066 +f 14922 15066 15126 +f 14898 14830 15010 +f 14898 15010 15066 +f 14830 14742 14930 +f 14830 14930 15010 +f 14742 14678 14862 +f 14742 14862 14930 +f 14678 14578 14750 +f 14678 14750 14862 +f 14578 14466 14642 +f 14578 14642 14750 +f 14466 14326 14522 +f 14466 14522 14642 +f 14326 14222 14398 +f 14326 14398 14522 +f 14222 14066 14246 +f 14222 14246 14398 +f 14066 13918 14090 +f 14066 14090 14246 +f 13918 13750 13926 +f 13918 13926 14090 +f 13750 13570 13734 +f 13750 13734 13926 +f 13570 13366 13530 +f 13570 13530 13734 +f 13366 13182 13334 +f 13366 13334 13530 +f 13182 12938 13118 +f 13182 13118 13334 +f 12938 12710 12882 +f 12938 12882 13118 +f 12710 12478 12630 +f 12710 12630 12882 +f 12478 12218 12370 +f 12478 12370 12630 +f 12218 11926 12094 +f 12218 12094 12370 +f 11926 11642 11814 +f 11926 11814 12094 +f 11642 11366 11498 +f 11642 11498 11814 +f 11366 11046 11158 +f 11366 11158 11498 +f 11046 10682 10834 +f 11046 10834 11158 +f 10682 10342 10470 +f 10682 10470 10834 +f 10342 9954 10130 +f 10342 10130 10470 +f 9954 9598 9746 +f 9954 9746 10130 +f 9598 9226 9326 +f 9598 9326 9746 +f 9226 8794 8882 +f 9226 8882 9326 +f 8794 8342 8438 +f 8794 8438 8882 +f 8342 7858 7986 +f 8342 7986 8438 +f 7858 7414 7494 +f 7858 7494 7986 +f 7414 6890 7026 +f 7414 7026 7494 +f 6890 6390 6498 +f 6890 6498 7026 +f 6390 5870 5918 +f 6390 5918 6498 +f 5870 5266 5314 +f 5870 5314 5918 +f 5266 4630 4662 +f 5266 4662 5314 +f 4630 3922 3994 +f 4630 3994 4662 +f 3922 3190 3254 +f 3922 3254 3994 +f 3190 2410 2458 +f 3190 2458 3254 +f 2410 1526 1558 +f 2410 1558 2458 +f 1557 2457 2473 +f 1557 2473 1573 +f 2457 3253 3285 +f 2457 3285 2473 +f 3253 3993 4025 +f 3253 4025 3285 +f 3993 4661 4741 +f 3993 4741 4025 +f 4661 5313 5361 +f 4661 5361 4741 +f 5313 5917 5981 +f 5313 5981 5361 +f 5917 6497 6553 +f 5917 6553 5981 +f 6497 7025 7117 +f 6497 7117 6553 +f 7025 7493 7613 +f 7025 7613 7117 +f 7493 7985 8081 +f 7493 8081 7613 +f 7985 8437 8541 +f 7985 8541 8081 +f 8437 8881 9001 +f 8437 9001 8541 +f 8881 9325 9405 +f 8881 9405 9001 +f 9325 9745 9849 +f 9325 9849 9405 +f 9745 10129 10237 +f 9745 10237 9849 +f 10129 10469 10625 +f 10129 10625 10237 +f 10469 10833 10961 +f 10469 10961 10625 +f 10833 11157 11301 +f 10833 11301 10961 +f 11157 11497 11601 +f 11157 11601 11301 +f 11497 11813 11917 +f 11497 11917 11601 +f 11813 12093 12233 +f 11813 12233 11917 +f 12093 12369 12517 +f 12093 12517 12233 +f 12369 12629 12773 +f 12369 12773 12517 +f 12629 12881 13033 +f 12629 13033 12773 +f 12881 13117 13245 +f 12881 13245 13033 +f 13117 13333 13473 +f 13117 13473 13245 +f 13333 13529 13701 +f 13333 13701 13473 +f 13529 13733 13901 +f 13529 13901 13701 +f 13733 13925 14081 +f 13733 14081 13901 +f 13925 14089 14253 +f 13925 14253 14081 +f 14089 14245 14421 +f 14089 14421 14253 +f 14245 14397 14537 +f 14245 14537 14421 +f 14397 14521 14693 +f 14397 14693 14537 +f 14521 14641 14805 +f 14521 14805 14693 +f 14641 14749 14913 +f 14641 14913 14805 +f 14749 14861 15025 +f 14749 15025 14913 +f 14861 14929 15101 +f 14861 15101 15025 +f 14929 15009 15173 +f 14929 15173 15101 +f 15009 15065 15245 +f 15009 15245 15173 +f 15065 15125 15289 +f 15065 15289 15245 +f 15125 15141 15305 +f 15125 15305 15289 +f 15141 15165 15337 +f 15141 15337 15305 +f 15165 15181 15361 +f 15165 15361 15337 +f 15181 15182 15362 +f 15181 15362 15361 +f 15182 15166 15338 +f 15182 15338 15362 +f 15166 15142 15306 +f 15166 15306 15338 +f 15142 15126 15290 +f 15142 15290 15306 +f 15126 15066 15246 +f 15126 15246 15290 +f 15066 15010 15174 +f 15066 15174 15246 +f 15010 14930 15102 +f 15010 15102 15174 +f 14930 14862 15026 +f 14930 15026 15102 +f 14862 14750 14914 +f 14862 14914 15026 +f 14750 14642 14806 +f 14750 14806 14914 +f 14642 14522 14694 +f 14642 14694 14806 +f 14522 14398 14538 +f 14522 14538 14694 +f 14398 14246 14422 +f 14398 14422 14538 +f 14246 14090 14254 +f 14246 14254 14422 +f 14090 13926 14082 +f 14090 14082 14254 +f 13926 13734 13902 +f 13926 13902 14082 +f 13734 13530 13702 +f 13734 13702 13902 +f 13530 13334 13474 +f 13530 13474 13702 +f 13334 13118 13246 +f 13334 13246 13474 +f 13118 12882 13034 +f 13118 13034 13246 +f 12882 12630 12774 +f 12882 12774 13034 +f 12630 12370 12518 +f 12630 12518 12774 +f 12370 12094 12234 +f 12370 12234 12518 +f 12094 11814 11918 +f 12094 11918 12234 +f 11814 11498 11602 +f 11814 11602 11918 +f 11498 11158 11302 +f 11498 11302 11602 +f 11158 10834 10962 +f 11158 10962 11302 +f 10834 10470 10626 +f 10834 10626 10962 +f 10470 10130 10238 +f 10470 10238 10626 +f 10130 9746 9850 +f 10130 9850 10238 +f 9746 9326 9406 +f 9746 9406 9850 +f 9326 8882 9002 +f 9326 9002 9406 +f 8882 8438 8542 +f 8882 8542 9002 +f 8438 7986 8082 +f 8438 8082 8542 +f 7986 7494 7614 +f 7986 7614 8082 +f 7494 7026 7118 +f 7494 7118 7614 +f 7026 6498 6554 +f 7026 6554 7118 +f 6498 5918 5982 +f 6498 5982 6554 +f 5918 5314 5362 +f 5918 5362 5982 +f 5314 4662 4742 +f 5314 4742 5362 +f 4662 3994 4026 +f 4662 4026 4742 +f 3994 3254 3286 +f 3994 3286 4026 +f 3254 2458 2474 +f 3254 2474 3286 +f 2458 1558 1574 +f 2458 1574 2474 +f 1573 2473 2489 +f 1573 2489 1589 +f 2473 3285 3325 +f 2473 3325 2489 +f 3285 4025 4057 +f 3285 4057 3325 +f 4025 4741 4757 +f 4025 4757 4057 +f 4741 5361 5393 +f 4741 5393 4757 +f 5361 5981 6053 +f 5361 6053 5393 +f 5981 6553 6641 +f 5981 6641 6053 +f 6553 7117 7189 +f 6553 7189 6641 +f 7117 7613 7721 +f 7117 7721 7189 +f 7613 8081 8205 +f 7613 8205 7721 +f 8081 8541 8677 +f 8081 8677 8205 +f 8541 9001 9089 +f 8541 9089 8677 +f 9001 9405 9541 +f 9001 9541 9089 +f 9405 9849 9929 +f 9405 9929 9541 +f 9849 10237 10325 +f 9849 10325 9929 +f 10237 10625 10713 +f 10237 10713 10325 +f 10625 10961 11085 +f 10625 11085 10713 +f 10961 11301 11433 +f 10961 11433 11085 +f 11301 11601 11761 +f 11301 11761 11433 +f 11601 11917 12061 +f 11601 12061 11761 +f 11917 12233 12345 +f 11917 12345 12061 +f 12233 12517 12637 +f 12233 12637 12345 +f 12517 12773 12897 +f 12517 12897 12637 +f 12773 13033 13165 +f 12773 13165 12897 +f 13033 13245 13425 +f 13033 13425 13165 +f 13245 13473 13633 +f 13245 13633 13425 +f 13473 13701 13821 +f 13473 13821 13633 +f 13701 13901 14025 +f 13701 14025 13821 +f 13901 14081 14229 +f 13901 14229 14025 +f 14081 14253 14405 +f 14081 14405 14229 +f 14253 14421 14561 +f 14253 14561 14405 +f 14421 14537 14717 +f 14421 14717 14561 +f 14537 14693 14837 +f 14537 14837 14717 +f 14693 14805 14961 +f 14693 14961 14837 +f 14805 14913 15077 +f 14805 15077 14961 +f 14913 15025 15157 +f 14913 15157 15077 +f 15025 15101 15265 +f 15025 15265 15157 +f 15101 15173 15329 +f 15101 15329 15265 +f 15173 15245 15393 +f 15173 15393 15329 +f 15245 15289 15437 +f 15245 15437 15393 +f 15289 15305 15485 +f 15289 15485 15437 +f 15305 15337 15501 +f 15305 15501 15485 +f 15337 15361 15509 +f 15337 15509 15501 +f 15361 15362 15510 +f 15361 15510 15509 +f 15362 15338 15502 +f 15362 15502 15510 +f 15338 15306 15486 +f 15338 15486 15502 +f 15306 15290 15438 +f 15306 15438 15486 +f 15290 15246 15394 +f 15290 15394 15438 +f 15246 15174 15330 +f 15246 15330 15394 +f 15174 15102 15266 +f 15174 15266 15330 +f 15102 15026 15158 +f 15102 15158 15266 +f 15026 14914 15078 +f 15026 15078 15158 +f 14914 14806 14962 +f 14914 14962 15078 +f 14806 14694 14838 +f 14806 14838 14962 +f 14694 14538 14718 +f 14694 14718 14838 +f 14538 14422 14562 +f 14538 14562 14718 +f 14422 14254 14406 +f 14422 14406 14562 +f 14254 14082 14230 +f 14254 14230 14406 +f 14082 13902 14026 +f 14082 14026 14230 +f 13902 13702 13822 +f 13902 13822 14026 +f 13702 13474 13634 +f 13702 13634 13822 +f 13474 13246 13426 +f 13474 13426 13634 +f 13246 13034 13166 +f 13246 13166 13426 +f 13034 12774 12898 +f 13034 12898 13166 +f 12774 12518 12638 +f 12774 12638 12898 +f 12518 12234 12346 +f 12518 12346 12638 +f 12234 11918 12062 +f 12234 12062 12346 +f 11918 11602 11762 +f 11918 11762 12062 +f 11602 11302 11434 +f 11602 11434 11762 +f 11302 10962 11086 +f 11302 11086 11434 +f 10962 10626 10714 +f 10962 10714 11086 +f 10626 10238 10326 +f 10626 10326 10714 +f 10238 9850 9930 +f 10238 9930 10326 +f 9850 9406 9542 +f 9850 9542 9930 +f 9406 9002 9090 +f 9406 9090 9542 +f 9002 8542 8678 +f 9002 8678 9090 +f 8542 8082 8206 +f 8542 8206 8678 +f 8082 7614 7722 +f 8082 7722 8206 +f 7614 7118 7190 +f 7614 7190 7722 +f 7118 6554 6642 +f 7118 6642 7190 +f 6554 5982 6054 +f 6554 6054 6642 +f 5982 5362 5394 +f 5982 5394 6054 +f 5362 4742 4758 +f 5362 4758 5394 +f 4742 4026 4058 +f 4742 4058 4758 +f 4026 3286 3326 +f 4026 3326 4058 +f 3286 2474 2490 +f 3286 2490 3326 +f 2474 1574 1590 +f 2474 1590 2490 +f 1589 2489 2537 +f 1589 2537 1621 +f 2489 3325 3357 +f 2489 3357 2537 +f 3325 4057 4129 +f 3325 4129 3357 +f 4057 4757 4805 +f 4057 4805 4129 +f 4757 5393 5497 +f 4757 5497 4805 +f 5393 6053 6101 +f 5393 6101 5497 +f 6053 6641 6681 +f 6053 6681 6101 +f 6641 7189 7237 +f 6641 7237 6681 +f 7189 7721 7777 +f 7189 7777 7237 +f 7721 8205 8293 +f 7721 8293 7777 +f 8205 8677 8745 +f 8205 8745 8293 +f 8677 9089 9217 +f 8677 9217 8745 +f 9089 9541 9637 +f 9089 9637 9217 +f 9541 9929 10057 +f 9541 10057 9637 +f 9929 10325 10421 +f 9929 10421 10057 +f 10325 10713 10817 +f 10325 10817 10421 +f 10713 11085 11181 +f 10713 11181 10817 +f 11085 11433 11537 +f 11085 11537 11181 +f 11433 11761 11861 +f 11433 11861 11537 +f 11761 12061 12193 +f 11761 12193 11861 +f 12061 12345 12493 +f 12061 12493 12193 +f 12345 12637 12757 +f 12345 12757 12493 +f 12637 12897 13057 +f 12637 13057 12757 +f 12897 13165 13277 +f 12897 13277 13057 +f 13165 13425 13513 +f 13165 13513 13277 +f 13425 13633 13773 +f 13425 13773 13513 +f 13633 13821 13985 +f 13633 13985 13773 +f 13821 14025 14169 +f 13821 14169 13985 +f 14025 14229 14357 +f 14025 14357 14169 +f 14229 14405 14529 +f 14229 14529 14357 +f 14405 14561 14709 +f 14405 14709 14529 +f 14561 14717 14845 +f 14561 14845 14709 +f 14717 14837 14985 +f 14717 14985 14845 +f 14837 14961 15109 +f 14837 15109 14985 +f 14961 15077 15213 +f 14961 15213 15109 +f 15077 15157 15297 +f 15077 15297 15213 +f 15157 15265 15401 +f 15157 15401 15297 +f 15265 15329 15469 +f 15265 15469 15401 +f 15329 15393 15533 +f 15329 15533 15469 +f 15393 15437 15593 +f 15393 15593 15533 +f 15437 15485 15617 +f 15437 15617 15593 +f 15485 15501 15633 +f 15485 15633 15617 +f 15501 15509 15665 +f 15501 15665 15633 +f 15509 15510 15666 +f 15509 15666 15665 +f 15510 15502 15634 +f 15510 15634 15666 +f 15502 15486 15618 +f 15502 15618 15634 +f 15486 15438 15594 +f 15486 15594 15618 +f 15438 15394 15534 +f 15438 15534 15594 +f 15394 15330 15470 +f 15394 15470 15534 +f 15330 15266 15402 +f 15330 15402 15470 +f 15266 15158 15298 +f 15266 15298 15402 +f 15158 15078 15214 +f 15158 15214 15298 +f 15078 14962 15110 +f 15078 15110 15214 +f 14962 14838 14986 +f 14962 14986 15110 +f 14838 14718 14846 +f 14838 14846 14986 +f 14718 14562 14710 +f 14718 14710 14846 +f 14562 14406 14530 +f 14562 14530 14710 +f 14406 14230 14358 +f 14406 14358 14530 +f 14230 14026 14170 +f 14230 14170 14358 +f 14026 13822 13986 +f 14026 13986 14170 +f 13822 13634 13774 +f 13822 13774 13986 +f 13634 13426 13514 +f 13634 13514 13774 +f 13426 13166 13278 +f 13426 13278 13514 +f 13166 12898 13058 +f 13166 13058 13278 +f 12898 12638 12758 +f 12898 12758 13058 +f 12638 12346 12494 +f 12638 12494 12758 +f 12346 12062 12194 +f 12346 12194 12494 +f 12062 11762 11862 +f 12062 11862 12194 +f 11762 11434 11538 +f 11762 11538 11862 +f 11434 11086 11182 +f 11434 11182 11538 +f 11086 10714 10818 +f 11086 10818 11182 +f 10714 10326 10422 +f 10714 10422 10818 +f 10326 9930 10058 +f 10326 10058 10422 +f 9930 9542 9638 +f 9930 9638 10058 +f 9542 9090 9218 +f 9542 9218 9638 +f 9090 8678 8746 +f 9090 8746 9218 +f 8678 8206 8294 +f 8678 8294 8746 +f 8206 7722 7778 +f 8206 7778 8294 +f 7722 7190 7238 +f 7722 7238 7778 +f 7190 6642 6682 +f 7190 6682 7238 +f 6642 6054 6102 +f 6642 6102 6682 +f 6054 5394 5498 +f 6054 5498 6102 +f 5394 4758 4806 +f 5394 4806 5498 +f 4758 4058 4130 +f 4758 4130 4806 +f 4058 3326 3358 +f 4058 3358 4130 +f 3326 2490 2538 +f 3326 2538 3358 +f 2490 1590 1622 +f 2490 1622 2538 +f 1621 2537 2585 +f 1621 2585 1653 +f 2537 3357 3405 +f 2537 3405 2585 +f 3357 4129 4169 +f 3357 4169 3405 +f 4129 4805 4853 +f 4129 4853 4169 +f 4805 5497 5521 +f 4805 5521 4853 +f 5497 6101 6125 +f 5497 6125 5521 +f 6101 6681 6721 +f 6101 6721 6125 +f 6681 7237 7293 +f 6681 7293 6721 +f 7237 7777 7833 +f 7237 7833 7293 +f 7777 8293 8333 +f 7777 8333 7833 +f 8293 8745 8841 +f 8293 8841 8333 +f 8745 9217 9285 +f 8745 9285 8841 +f 9217 9637 9737 +f 9217 9737 9285 +f 9637 10057 10157 +f 9637 10157 9737 +f 10057 10421 10557 +f 10057 10557 10157 +f 10421 10817 10921 +f 10421 10921 10557 +f 10817 11181 11285 +f 10817 11285 10921 +f 11181 11537 11625 +f 11181 11625 11285 +f 11537 11861 11973 +f 11537 11973 11625 +f 11861 12193 12257 +f 11861 12257 11973 +f 12193 12493 12581 +f 12193 12581 12257 +f 12493 12757 12873 +f 12493 12873 12581 +f 12757 13057 13149 +f 12757 13149 12873 +f 13057 13277 13433 +f 13057 13433 13149 +f 13277 13513 13657 +f 13277 13657 13433 +f 13513 13773 13877 +f 13513 13877 13657 +f 13773 13985 14097 +f 13773 14097 13877 +f 13985 14169 14285 +f 13985 14285 14097 +f 14169 14357 14489 +f 14169 14489 14285 +f 14357 14529 14657 +f 14357 14657 14489 +f 14529 14709 14821 +f 14529 14821 14657 +f 14709 14845 14969 +f 14709 14969 14821 +f 14845 14985 15117 +f 14845 15117 14969 +f 14985 15109 15237 +f 14985 15237 15117 +f 15109 15213 15345 +f 15109 15345 15237 +f 15213 15297 15445 +f 15213 15445 15345 +f 15297 15401 15525 +f 15297 15525 15445 +f 15401 15469 15601 +f 15401 15601 15525 +f 15469 15533 15681 +f 15469 15681 15601 +f 15533 15593 15717 +f 15533 15717 15681 +f 15593 15617 15749 +f 15593 15749 15717 +f 15617 15633 15773 +f 15617 15773 15749 +f 15633 15665 15797 +f 15633 15797 15773 +f 15665 15666 15798 +f 15665 15798 15797 +f 15666 15634 15774 +f 15666 15774 15798 +f 15634 15618 15750 +f 15634 15750 15774 +f 15618 15594 15718 +f 15618 15718 15750 +f 15594 15534 15682 +f 15594 15682 15718 +f 15534 15470 15602 +f 15534 15602 15682 +f 15470 15402 15526 +f 15470 15526 15602 +f 15402 15298 15446 +f 15402 15446 15526 +f 15298 15214 15346 +f 15298 15346 15446 +f 15214 15110 15238 +f 15214 15238 15346 +f 15110 14986 15118 +f 15110 15118 15238 +f 14986 14846 14970 +f 14986 14970 15118 +f 14846 14710 14822 +f 14846 14822 14970 +f 14710 14530 14658 +f 14710 14658 14822 +f 14530 14358 14490 +f 14530 14490 14658 +f 14358 14170 14286 +f 14358 14286 14490 +f 14170 13986 14098 +f 14170 14098 14286 +f 13986 13774 13878 +f 13986 13878 14098 +f 13774 13514 13658 +f 13774 13658 13878 +f 13514 13278 13434 +f 13514 13434 13658 +f 13278 13058 13150 +f 13278 13150 13434 +f 13058 12758 12874 +f 13058 12874 13150 +f 12758 12494 12582 +f 12758 12582 12874 +f 12494 12194 12258 +f 12494 12258 12582 +f 12194 11862 11974 +f 12194 11974 12258 +f 11862 11538 11626 +f 11862 11626 11974 +f 11538 11182 11286 +f 11538 11286 11626 +f 11182 10818 10922 +f 11182 10922 11286 +f 10818 10422 10558 +f 10818 10558 10922 +f 10422 10058 10158 +f 10422 10158 10558 +f 10058 9638 9738 +f 10058 9738 10158 +f 9638 9218 9286 +f 9638 9286 9738 +f 9218 8746 8842 +f 9218 8842 9286 +f 8746 8294 8334 +f 8746 8334 8842 +f 8294 7778 7834 +f 8294 7834 8334 +f 7778 7238 7294 +f 7778 7294 7834 +f 7238 6682 6722 +f 7238 6722 7294 +f 6682 6102 6126 +f 6682 6126 6722 +f 6102 5498 5522 +f 6102 5522 6126 +f 5498 4806 4854 +f 5498 4854 5522 +f 4806 4130 4170 +f 4806 4170 4854 +f 4130 3358 3406 +f 4130 3406 4170 +f 3358 2538 2586 +f 3358 2586 3406 +f 2538 1622 1654 +f 2538 1654 2586 +f 1653 2585 2601 +f 1653 2601 1669 +f 2585 3405 3437 +f 2585 3437 2601 +f 3405 4169 4185 +f 3405 4185 3437 +f 4169 4853 4917 +f 4169 4917 4185 +f 4853 5521 5545 +f 4853 5545 4917 +f 5521 6125 6197 +f 5521 6197 5545 +f 6125 6721 6801 +f 6125 6801 6197 +f 6721 7293 7357 +f 6721 7357 6801 +f 7293 7833 7873 +f 7293 7873 7357 +f 7833 8333 8389 +f 7833 8389 7873 +f 8333 8841 8873 +f 8333 8873 8389 +f 8841 9285 9365 +f 8841 9365 8873 +f 9285 9737 9793 +f 9285 9793 9365 +f 9737 10157 10229 +f 9737 10229 9793 +f 10157 10557 10633 +f 10157 10633 10229 +f 10557 10921 11029 +f 10557 11029 10633 +f 10921 11285 11389 +f 10921 11389 11029 +f 11285 11625 11737 +f 11285 11737 11389 +f 11625 11973 12069 +f 11625 12069 11737 +f 11973 12257 12385 +f 11973 12385 12069 +f 12257 12581 12677 +f 12257 12677 12385 +f 12581 12873 12953 +f 12581 12953 12677 +f 12873 13149 13237 +f 12873 13237 12953 +f 13149 13433 13505 +f 13149 13505 13237 +f 13433 13657 13757 +f 13433 13757 13505 +f 13657 13877 13993 +f 13657 13993 13757 +f 13877 14097 14209 +f 13877 14209 13993 +f 14097 14285 14413 +f 14097 14413 14209 +f 14285 14489 14609 +f 14285 14609 14413 +f 14489 14657 14765 +f 14489 14765 14609 +f 14657 14821 14937 +f 14657 14937 14765 +f 14821 14969 15085 +f 14821 15085 14937 +f 14969 15117 15229 +f 14969 15229 15085 +f 15117 15237 15353 +f 15117 15353 15229 +f 15237 15345 15461 +f 15237 15461 15353 +f 15345 15445 15557 +f 15345 15557 15461 +f 15445 15525 15641 +f 15445 15641 15557 +f 15525 15601 15725 +f 15525 15725 15641 +f 15601 15681 15781 +f 15601 15781 15725 +f 15681 15717 15837 +f 15681 15837 15781 +f 15717 15749 15873 +f 15717 15873 15837 +f 15749 15773 15889 +f 15749 15889 15873 +f 15773 15797 15913 +f 15773 15913 15889 +f 15797 15798 15914 +f 15797 15914 15913 +f 15798 15774 15890 +f 15798 15890 15914 +f 15774 15750 15874 +f 15774 15874 15890 +f 15750 15718 15838 +f 15750 15838 15874 +f 15718 15682 15782 +f 15718 15782 15838 +f 15682 15602 15726 +f 15682 15726 15782 +f 15602 15526 15642 +f 15602 15642 15726 +f 15526 15446 15558 +f 15526 15558 15642 +f 15446 15346 15462 +f 15446 15462 15558 +f 15346 15238 15354 +f 15346 15354 15462 +f 15238 15118 15230 +f 15238 15230 15354 +f 15118 14970 15086 +f 15118 15086 15230 +f 14970 14822 14938 +f 14970 14938 15086 +f 14822 14658 14766 +f 14822 14766 14938 +f 14658 14490 14610 +f 14658 14610 14766 +f 14490 14286 14414 +f 14490 14414 14610 +f 14286 14098 14210 +f 14286 14210 14414 +f 14098 13878 13994 +f 14098 13994 14210 +f 13878 13658 13758 +f 13878 13758 13994 +f 13658 13434 13506 +f 13658 13506 13758 +f 13434 13150 13238 +f 13434 13238 13506 +f 13150 12874 12954 +f 13150 12954 13238 +f 12874 12582 12678 +f 12874 12678 12954 +f 12582 12258 12386 +f 12582 12386 12678 +f 12258 11974 12070 +f 12258 12070 12386 +f 11974 11626 11738 +f 11974 11738 12070 +f 11626 11286 11390 +f 11626 11390 11738 +f 11286 10922 11030 +f 11286 11030 11390 +f 10922 10558 10634 +f 10922 10634 11030 +f 10558 10158 10230 +f 10558 10230 10634 +f 10158 9738 9794 +f 10158 9794 10230 +f 9738 9286 9366 +f 9738 9366 9794 +f 9286 8842 8874 +f 9286 8874 9366 +f 8842 8334 8390 +f 8842 8390 8874 +f 8334 7834 7874 +f 8334 7874 8390 +f 7834 7294 7358 +f 7834 7358 7874 +f 7294 6722 6802 +f 7294 6802 7358 +f 6722 6126 6198 +f 6722 6198 6802 +f 6126 5522 5546 +f 6126 5546 6198 +f 5522 4854 4918 +f 5522 4918 5546 +f 4854 4170 4186 +f 4854 4186 4918 +f 4170 3406 3438 +f 4170 3438 4186 +f 3406 2586 2602 +f 3406 2602 3438 +f 2586 1654 1670 +f 2586 1670 2602 +f 1669 2601 2633 +f 1669 2633 1685 +f 2601 3437 3469 +f 2601 3469 2633 +f 3437 4185 4233 +f 3437 4233 3469 +f 4185 4917 4941 +f 4185 4941 4233 +f 4917 5545 5617 +f 4917 5617 4941 +f 5545 6197 6245 +f 5545 6245 5617 +f 6197 6801 6849 +f 6197 6849 6245 +f 6801 7357 7421 +f 6801 7421 6849 +f 7357 7873 7953 +f 7357 7953 7421 +f 7873 8389 8469 +f 7873 8469 7953 +f 8389 8873 8929 +f 8389 8929 8469 +f 8873 9365 9397 +f 8873 9397 8929 +f 9365 9793 9873 +f 9365 9873 9397 +f 9793 10229 10277 +f 9793 10277 9873 +f 10229 10633 10697 +f 10229 10697 10277 +f 10633 11029 11093 +f 10633 11093 10697 +f 11029 11389 11441 +f 11029 11441 11093 +f 11389 11737 11821 +f 11389 11821 11441 +f 11737 12069 12145 +f 11737 12145 11821 +f 12069 12385 12485 +f 12069 12485 12145 +f 12385 12677 12797 +f 12385 12797 12485 +f 12677 12953 13073 +f 12677 13073 12797 +f 12953 13237 13341 +f 12953 13341 13073 +f 13237 13505 13601 +f 13237 13601 13341 +f 13505 13757 13837 +f 13505 13837 13601 +f 13757 13993 14073 +f 13757 14073 13837 +f 13993 14209 14293 +f 13993 14293 14073 +f 14209 14413 14497 +f 14209 14497 14293 +f 14413 14609 14701 +f 14413 14701 14497 +f 14609 14765 14889 +f 14609 14889 14701 +f 14765 14937 15041 +f 14765 15041 14889 +f 14937 15085 15189 +f 14937 15189 15041 +f 15085 15229 15321 +f 15085 15321 15189 +f 15229 15353 15453 +f 15229 15453 15321 +f 15353 15461 15581 +f 15353 15581 15453 +f 15461 15557 15673 +f 15461 15673 15581 +f 15557 15641 15757 +f 15557 15757 15673 +f 15641 15725 15821 +f 15641 15821 15757 +f 15725 15781 15881 +f 15725 15881 15821 +f 15781 15837 15945 +f 15781 15945 15881 +f 15837 15873 15973 +f 15837 15973 15945 +f 15873 15889 16013 +f 15873 16013 15973 +f 15889 15913 16021 +f 15889 16021 16013 +f 15913 15914 16022 +f 15913 16022 16021 +f 15914 15890 16014 +f 15914 16014 16022 +f 15890 15874 15974 +f 15890 15974 16014 +f 15874 15838 15946 +f 15874 15946 15974 +f 15838 15782 15882 +f 15838 15882 15946 +f 15782 15726 15822 +f 15782 15822 15882 +f 15726 15642 15758 +f 15726 15758 15822 +f 15642 15558 15674 +f 15642 15674 15758 +f 15558 15462 15582 +f 15558 15582 15674 +f 15462 15354 15454 +f 15462 15454 15582 +f 15354 15230 15322 +f 15354 15322 15454 +f 15230 15086 15190 +f 15230 15190 15322 +f 15086 14938 15042 +f 15086 15042 15190 +f 14938 14766 14890 +f 14938 14890 15042 +f 14766 14610 14702 +f 14766 14702 14890 +f 14610 14414 14498 +f 14610 14498 14702 +f 14414 14210 14294 +f 14414 14294 14498 +f 14210 13994 14074 +f 14210 14074 14294 +f 13994 13758 13838 +f 13994 13838 14074 +f 13758 13506 13602 +f 13758 13602 13838 +f 13506 13238 13342 +f 13506 13342 13602 +f 13238 12954 13074 +f 13238 13074 13342 +f 12954 12678 12798 +f 12954 12798 13074 +f 12678 12386 12486 +f 12678 12486 12798 +f 12386 12070 12146 +f 12386 12146 12486 +f 12070 11738 11822 +f 12070 11822 12146 +f 11738 11390 11442 +f 11738 11442 11822 +f 11390 11030 11094 +f 11390 11094 11442 +f 11030 10634 10698 +f 11030 10698 11094 +f 10634 10230 10278 +f 10634 10278 10698 +f 10230 9794 9874 +f 10230 9874 10278 +f 9794 9366 9398 +f 9794 9398 9874 +f 9366 8874 8930 +f 9366 8930 9398 +f 8874 8390 8470 +f 8874 8470 8930 +f 8390 7874 7954 +f 8390 7954 8470 +f 7874 7358 7422 +f 7874 7422 7954 +f 7358 6802 6850 +f 7358 6850 7422 +f 6802 6198 6246 +f 6802 6246 6850 +f 6198 5546 5618 +f 6198 5618 6246 +f 5546 4918 4942 +f 5546 4942 5618 +f 4918 4186 4234 +f 4918 4234 4942 +f 4186 3438 3470 +f 4186 3470 4234 +f 3438 2602 2634 +f 3438 2634 3470 +f 2602 1670 1686 +f 2602 1686 2634 +f 1685 2633 2665 +f 1685 2665 1725 +f 2633 3469 3485 +f 2633 3485 2665 +f 3469 4233 4249 +f 3469 4249 3485 +f 4233 4941 4989 +f 4233 4989 4249 +f 4941 5617 5657 +f 4941 5657 4989 +f 5617 6245 6293 +f 5617 6293 5657 +f 6245 6849 6873 +f 6245 6873 6293 +f 6849 7421 7437 +f 6849 7437 6873 +f 7421 7953 7993 +f 7421 7993 7437 +f 7953 8469 8517 +f 7953 8517 7993 +f 8469 8929 9009 +f 8469 9009 8517 +f 8929 9397 9453 +f 8929 9453 9009 +f 9397 9873 9905 +f 9397 9905 9453 +f 9873 10277 10357 +f 9873 10357 9905 +f 10277 10697 10745 +f 10277 10745 10357 +f 10697 11093 11141 +f 10697 11141 10745 +f 11093 11441 11529 +f 11093 11529 11141 +f 11441 11821 11869 +f 11441 11869 11529 +f 11821 12145 12225 +f 11821 12225 11869 +f 12145 12485 12541 +f 12145 12541 12225 +f 12485 12797 12849 +f 12485 12849 12541 +f 12797 13073 13141 +f 12797 13141 12849 +f 13073 13341 13441 +f 13073 13441 13141 +f 13341 13601 13681 +f 13341 13681 13441 +f 13601 13837 13941 +f 13601 13941 13681 +f 13837 14073 14161 +f 13837 14161 13941 +f 14073 14293 14381 +f 14073 14381 14161 +f 14293 14497 14593 +f 14293 14593 14381 +f 14497 14701 14781 +f 14497 14781 14593 +f 14701 14889 14945 +f 14701 14945 14781 +f 14889 15041 15133 +f 14889 15133 14945 +f 15041 15189 15281 +f 15041 15281 15133 +f 15189 15321 15421 +f 15189 15421 15281 +f 15321 15453 15541 +f 15321 15541 15421 +f 15453 15581 15649 +f 15453 15649 15541 +f 15581 15673 15765 +f 15581 15765 15649 +f 15673 15757 15857 +f 15673 15857 15765 +f 15757 15821 15921 +f 15757 15921 15857 +f 15821 15881 15981 +f 15821 15981 15921 +f 15881 15945 16037 +f 15881 16037 15981 +f 15945 15973 16081 +f 15945 16081 16037 +f 15973 16013 16097 +f 15973 16097 16081 +f 16013 16021 16105 +f 16013 16105 16097 +f 16021 16022 16106 +f 16021 16106 16105 +f 16022 16014 16098 +f 16022 16098 16106 +f 16014 15974 16082 +f 16014 16082 16098 +f 15974 15946 16038 +f 15974 16038 16082 +f 15946 15882 15982 +f 15946 15982 16038 +f 15882 15822 15922 +f 15882 15922 15982 +f 15822 15758 15858 +f 15822 15858 15922 +f 15758 15674 15766 +f 15758 15766 15858 +f 15674 15582 15650 +f 15674 15650 15766 +f 15582 15454 15542 +f 15582 15542 15650 +f 15454 15322 15422 +f 15454 15422 15542 +f 15322 15190 15282 +f 15322 15282 15422 +f 15190 15042 15134 +f 15190 15134 15282 +f 15042 14890 14946 +f 15042 14946 15134 +f 14890 14702 14782 +f 14890 14782 14946 +f 14702 14498 14594 +f 14702 14594 14782 +f 14498 14294 14382 +f 14498 14382 14594 +f 14294 14074 14162 +f 14294 14162 14382 +f 14074 13838 13942 +f 14074 13942 14162 +f 13838 13602 13682 +f 13838 13682 13942 +f 13602 13342 13442 +f 13602 13442 13682 +f 13342 13074 13142 +f 13342 13142 13442 +f 13074 12798 12850 +f 13074 12850 13142 +f 12798 12486 12542 +f 12798 12542 12850 +f 12486 12146 12226 +f 12486 12226 12542 +f 12146 11822 11870 +f 12146 11870 12226 +f 11822 11442 11530 +f 11822 11530 11870 +f 11442 11094 11142 +f 11442 11142 11530 +f 11094 10698 10746 +f 11094 10746 11142 +f 10698 10278 10358 +f 10698 10358 10746 +f 10278 9874 9906 +f 10278 9906 10358 +f 9874 9398 9454 +f 9874 9454 9906 +f 9398 8930 9010 +f 9398 9010 9454 +f 8930 8470 8518 +f 8930 8518 9010 +f 8470 7954 7994 +f 8470 7994 8518 +f 7954 7422 7438 +f 7954 7438 7994 +f 7422 6850 6874 +f 7422 6874 7438 +f 6850 6246 6294 +f 6850 6294 6874 +f 6246 5618 5658 +f 6246 5658 6294 +f 5618 4942 4990 +f 5618 4990 5658 +f 4942 4234 4250 +f 4942 4250 4990 +f 4234 3470 3486 +f 4234 3486 4250 +f 3470 2634 2666 +f 3470 2666 3486 +f 2634 1686 1726 +f 2634 1726 2666 +f 1725 2665 2689 +f 1725 2689 1741 +f 2665 3485 3525 +f 2665 3525 2689 +f 3485 4249 4305 +f 3485 4305 3525 +f 4249 4989 5029 +f 4249 5029 4305 +f 4989 5657 5697 +f 4989 5697 5029 +f 5657 6293 6325 +f 5657 6325 5697 +f 6293 6873 6945 +f 6293 6945 6325 +f 6873 7437 7517 +f 6873 7517 6945 +f 7437 7993 8033 +f 7437 8033 7517 +f 7993 8517 8557 +f 7993 8557 8033 +f 8517 9009 9057 +f 8517 9057 8557 +f 9009 9453 9533 +f 9009 9533 9057 +f 9453 9905 9969 +f 9453 9969 9533 +f 9905 10357 10405 +f 9905 10405 9969 +f 10357 10745 10809 +f 10357 10809 10405 +f 10745 11141 11213 +f 10745 11213 10809 +f 11141 11529 11569 +f 11141 11569 11213 +f 11529 11869 11949 +f 11529 11949 11569 +f 11869 12225 12265 +f 11869 12265 11949 +f 12225 12541 12605 +f 12225 12605 12265 +f 12541 12849 12905 +f 12541 12905 12605 +f 12849 13141 13205 +f 12849 13205 12905 +f 13141 13441 13481 +f 13141 13481 13205 +f 13441 13681 13765 +f 13441 13765 13481 +f 13681 13941 14001 +f 13681 14001 13765 +f 13941 14161 14237 +f 13941 14237 14001 +f 14161 14381 14457 +f 14161 14457 14237 +f 14381 14593 14669 +f 14381 14669 14457 +f 14593 14781 14869 +f 14593 14869 14669 +f 14781 14945 15033 +f 14781 15033 14869 +f 14945 15133 15205 +f 14945 15205 15033 +f 15133 15281 15369 +f 15133 15369 15205 +f 15281 15421 15493 +f 15281 15493 15369 +f 15421 15541 15625 +f 15421 15625 15493 +f 15541 15649 15733 +f 15541 15733 15625 +f 15649 15765 15845 +f 15649 15845 15733 +f 15765 15857 15929 +f 15765 15929 15845 +f 15857 15921 15997 +f 15857 15997 15929 +f 15921 15981 16065 +f 15921 16065 15997 +f 15981 16037 16113 +f 15981 16113 16065 +f 16037 16081 16157 +f 16037 16157 16113 +f 16081 16097 16173 +f 16081 16173 16157 +f 16097 16105 16197 +f 16097 16197 16173 +f 16105 16106 16198 +f 16105 16198 16197 +f 16106 16098 16174 +f 16106 16174 16198 +f 16098 16082 16158 +f 16098 16158 16174 +f 16082 16038 16114 +f 16082 16114 16158 +f 16038 15982 16066 +f 16038 16066 16114 +f 15982 15922 15998 +f 15982 15998 16066 +f 15922 15858 15930 +f 15922 15930 15998 +f 15858 15766 15846 +f 15858 15846 15930 +f 15766 15650 15734 +f 15766 15734 15846 +f 15650 15542 15626 +f 15650 15626 15734 +f 15542 15422 15494 +f 15542 15494 15626 +f 15422 15282 15370 +f 15422 15370 15494 +f 15282 15134 15206 +f 15282 15206 15370 +f 15134 14946 15034 +f 15134 15034 15206 +f 14946 14782 14870 +f 14946 14870 15034 +f 14782 14594 14670 +f 14782 14670 14870 +f 14594 14382 14458 +f 14594 14458 14670 +f 14382 14162 14238 +f 14382 14238 14458 +f 14162 13942 14002 +f 14162 14002 14238 +f 13942 13682 13766 +f 13942 13766 14002 +f 13682 13442 13482 +f 13682 13482 13766 +f 13442 13142 13206 +f 13442 13206 13482 +f 13142 12850 12906 +f 13142 12906 13206 +f 12850 12542 12606 +f 12850 12606 12906 +f 12542 12226 12266 +f 12542 12266 12606 +f 12226 11870 11950 +f 12226 11950 12266 +f 11870 11530 11570 +f 11870 11570 11950 +f 11530 11142 11214 +f 11530 11214 11570 +f 11142 10746 10810 +f 11142 10810 11214 +f 10746 10358 10406 +f 10746 10406 10810 +f 10358 9906 9970 +f 10358 9970 10406 +f 9906 9454 9534 +f 9906 9534 9970 +f 9454 9010 9058 +f 9454 9058 9534 +f 9010 8518 8558 +f 9010 8558 9058 +f 8518 7994 8034 +f 8518 8034 8558 +f 7994 7438 7518 +f 7994 7518 8034 +f 7438 6874 6946 +f 7438 6946 7518 +f 6874 6294 6326 +f 6874 6326 6946 +f 6294 5658 5698 +f 6294 5698 6326 +f 5658 4990 5030 +f 5658 5030 5698 +f 4990 4250 4306 +f 4990 4306 5030 +f 4250 3486 3526 +f 4250 3526 4306 +f 3486 2666 2690 +f 3486 2690 3526 +f 2666 1726 1742 +f 2666 1742 2690 +f 1741 2689 2705 +f 1741 2705 1757 +f 2689 3525 3541 +f 2689 3541 2705 +f 3525 4305 4337 +f 3525 4337 3541 +f 4305 5029 5061 +f 4305 5061 4337 +f 5029 5697 5729 +f 5029 5729 5061 +f 5697 6325 6373 +f 5697 6373 5729 +f 6325 6945 6969 +f 6325 6969 6373 +f 6945 7517 7549 +f 6945 7549 6969 +f 7517 8033 8089 +f 7517 8089 7549 +f 8033 8557 8589 +f 8033 8589 8089 +f 8557 9057 9097 +f 8557 9097 8589 +f 9057 9533 9581 +f 9057 9581 9097 +f 9533 9969 10025 +f 9533 10025 9581 +f 9969 10405 10453 +f 9969 10453 10025 +f 10405 10809 10873 +f 10405 10873 10453 +f 10809 11213 11253 +f 10809 11253 10873 +f 11213 11569 11633 +f 11213 11633 11253 +f 11569 11949 11989 +f 11569 11989 11633 +f 11949 12265 12313 +f 11949 12313 11989 +f 12265 12605 12661 +f 12265 12661 12313 +f 12605 12905 12961 +f 12605 12961 12661 +f 12905 13205 13269 +f 12905 13269 12961 +f 13205 13481 13545 +f 13205 13545 13269 +f 13481 13765 13805 +f 13481 13805 13545 +f 13765 14001 14049 +f 13765 14049 13805 +f 14001 14237 14301 +f 14001 14301 14049 +f 14237 14457 14505 +f 14237 14505 14301 +f 14457 14669 14725 +f 14457 14725 14505 +f 14669 14869 14905 +f 14669 14905 14725 +f 14869 15033 15093 +f 14869 15093 14905 +f 15033 15205 15273 +f 15033 15273 15093 +f 15205 15369 15429 +f 15205 15429 15273 +f 15369 15493 15565 +f 15369 15565 15429 +f 15493 15625 15697 +f 15493 15697 15565 +f 15625 15733 15805 +f 15625 15805 15697 +f 15733 15845 15905 +f 15733 15905 15805 +f 15845 15929 15989 +f 15845 15989 15905 +f 15929 15997 16073 +f 15929 16073 15989 +f 15997 16065 16137 +f 15997 16137 16073 +f 16065 16113 16181 +f 16065 16181 16137 +f 16113 16157 16221 +f 16113 16221 16181 +f 16157 16173 16249 +f 16157 16249 16221 +f 16173 16197 16257 +f 16173 16257 16249 +f 16197 16198 16258 +f 16197 16258 16257 +f 16198 16174 16250 +f 16198 16250 16258 +f 16174 16158 16222 +f 16174 16222 16250 +f 16158 16114 16182 +f 16158 16182 16222 +f 16114 16066 16138 +f 16114 16138 16182 +f 16066 15998 16074 +f 16066 16074 16138 +f 15998 15930 15990 +f 15998 15990 16074 +f 15930 15846 15906 +f 15930 15906 15990 +f 15846 15734 15806 +f 15846 15806 15906 +f 15734 15626 15698 +f 15734 15698 15806 +f 15626 15494 15566 +f 15626 15566 15698 +f 15494 15370 15430 +f 15494 15430 15566 +f 15370 15206 15274 +f 15370 15274 15430 +f 15206 15034 15094 +f 15206 15094 15274 +f 15034 14870 14906 +f 15034 14906 15094 +f 14870 14670 14726 +f 14870 14726 14906 +f 14670 14458 14506 +f 14670 14506 14726 +f 14458 14238 14302 +f 14458 14302 14506 +f 14238 14002 14050 +f 14238 14050 14302 +f 14002 13766 13806 +f 14002 13806 14050 +f 13766 13482 13546 +f 13766 13546 13806 +f 13482 13206 13270 +f 13482 13270 13546 +f 13206 12906 12962 +f 13206 12962 13270 +f 12906 12606 12662 +f 12906 12662 12962 +f 12606 12266 12314 +f 12606 12314 12662 +f 12266 11950 11990 +f 12266 11990 12314 +f 11950 11570 11634 +f 11950 11634 11990 +f 11570 11214 11254 +f 11570 11254 11634 +f 11214 10810 10874 +f 11214 10874 11254 +f 10810 10406 10454 +f 10810 10454 10874 +f 10406 9970 10026 +f 10406 10026 10454 +f 9970 9534 9582 +f 9970 9582 10026 +f 9534 9058 9098 +f 9534 9098 9582 +f 9058 8558 8590 +f 9058 8590 9098 +f 8558 8034 8090 +f 8558 8090 8590 +f 8034 7518 7550 +f 8034 7550 8090 +f 7518 6946 6970 +f 7518 6970 7550 +f 6946 6326 6374 +f 6946 6374 6970 +f 6326 5698 5730 +f 6326 5730 6374 +f 5698 5030 5062 +f 5698 5062 5730 +f 5030 4306 4338 +f 5030 4338 5062 +f 4306 3526 3542 +f 4306 3542 4338 +f 3526 2690 2706 +f 3526 2706 3542 +f 2690 1742 1758 +f 2690 1758 2706 +f 1757 2705 2737 +f 1757 2737 1789 +f 2705 3541 3605 +f 2705 3605 2737 +f 3541 4337 4385 +f 3541 4385 3605 +f 4337 5061 5101 +f 4337 5101 4385 +f 5061 5729 5793 +f 5061 5793 5101 +f 5729 6373 6429 +f 5729 6429 5793 +f 6373 6969 7033 +f 6373 7033 6429 +f 6969 7549 7597 +f 6969 7597 7033 +f 7549 8089 8145 +f 7549 8145 7597 +f 8089 8589 8661 +f 8089 8661 8145 +f 8589 9097 9145 +f 8589 9145 8661 +f 9097 9581 9629 +f 9097 9629 9145 +f 9581 10025 10097 +f 9581 10097 9629 +f 10025 10453 10493 +f 10025 10493 10097 +f 10453 10873 10913 +f 10453 10913 10493 +f 10873 11253 11325 +f 10873 11325 10913 +f 11253 11633 11689 +f 11253 11689 11325 +f 11633 11989 12045 +f 11633 12045 11689 +f 11989 12313 12401 +f 11989 12401 12045 +f 12313 12661 12701 +f 12313 12701 12401 +f 12661 12961 13025 +f 12661 13025 12701 +f 12961 13269 13309 +f 12961 13309 13025 +f 13269 13545 13593 +f 13269 13593 13309 +f 13545 13805 13853 +f 13545 13853 13593 +f 13805 14049 14113 +f 13805 14113 13853 +f 14049 14301 14333 +f 14049 14333 14113 +f 14301 14505 14569 +f 14301 14569 14333 +f 14505 14725 14773 +f 14505 14773 14569 +f 14725 14905 14977 +f 14725 14977 14773 +f 14905 15093 15149 +f 14905 15149 14977 +f 15093 15273 15313 +f 15093 15313 15149 +f 15273 15429 15477 +f 15273 15477 15313 +f 15429 15565 15609 +f 15429 15609 15477 +f 15565 15697 15741 +f 15565 15741 15609 +f 15697 15805 15865 +f 15697 15865 15741 +f 15805 15905 15965 +f 15805 15965 15865 +f 15905 15989 16045 +f 15905 16045 15965 +f 15989 16073 16129 +f 15989 16129 16045 +f 16073 16137 16189 +f 16073 16189 16129 +f 16137 16181 16241 +f 16137 16241 16189 +f 16181 16221 16273 +f 16181 16273 16241 +f 16221 16249 16301 +f 16221 16301 16273 +f 16249 16257 16317 +f 16249 16317 16301 +f 16257 16258 16318 +f 16257 16318 16317 +f 16258 16250 16302 +f 16258 16302 16318 +f 16250 16222 16274 +f 16250 16274 16302 +f 16222 16182 16242 +f 16222 16242 16274 +f 16182 16138 16190 +f 16182 16190 16242 +f 16138 16074 16130 +f 16138 16130 16190 +f 16074 15990 16046 +f 16074 16046 16130 +f 15990 15906 15966 +f 15990 15966 16046 +f 15906 15806 15866 +f 15906 15866 15966 +f 15806 15698 15742 +f 15806 15742 15866 +f 15698 15566 15610 +f 15698 15610 15742 +f 15566 15430 15478 +f 15566 15478 15610 +f 15430 15274 15314 +f 15430 15314 15478 +f 15274 15094 15150 +f 15274 15150 15314 +f 15094 14906 14978 +f 15094 14978 15150 +f 14906 14726 14774 +f 14906 14774 14978 +f 14726 14506 14570 +f 14726 14570 14774 +f 14506 14302 14334 +f 14506 14334 14570 +f 14302 14050 14114 +f 14302 14114 14334 +f 14050 13806 13854 +f 14050 13854 14114 +f 13806 13546 13594 +f 13806 13594 13854 +f 13546 13270 13310 +f 13546 13310 13594 +f 13270 12962 13026 +f 13270 13026 13310 +f 12962 12662 12702 +f 12962 12702 13026 +f 12662 12314 12402 +f 12662 12402 12702 +f 12314 11990 12046 +f 12314 12046 12402 +f 11990 11634 11690 +f 11990 11690 12046 +f 11634 11254 11326 +f 11634 11326 11690 +f 11254 10874 10914 +f 11254 10914 11326 +f 10874 10454 10494 +f 10874 10494 10914 +f 10454 10026 10098 +f 10454 10098 10494 +f 10026 9582 9630 +f 10026 9630 10098 +f 9582 9098 9146 +f 9582 9146 9630 +f 9098 8590 8662 +f 9098 8662 9146 +f 8590 8090 8146 +f 8590 8146 8662 +f 8090 7550 7598 +f 8090 7598 8146 +f 7550 6970 7034 +f 7550 7034 7598 +f 6970 6374 6430 +f 6970 6430 7034 +f 6374 5730 5794 +f 6374 5794 6430 +f 5730 5062 5102 +f 5730 5102 5794 +f 5062 4338 4386 +f 5062 4386 5102 +f 4338 3542 3606 +f 4338 3606 4386 +f 3542 2706 2738 +f 3542 2738 3606 +f 2706 1758 1790 +f 2706 1790 2738 +f 1789 2737 2745 +f 1789 2745 1797 +f 2737 3605 3629 +f 2737 3629 2745 +f 3605 4385 4393 +f 3605 4393 3629 +f 4385 5101 5125 +f 4385 5125 4393 +f 5101 5793 5817 +f 5101 5817 5125 +f 5793 6429 6445 +f 5793 6445 5817 +f 6429 7033 7041 +f 6429 7041 6445 +f 7033 7597 7605 +f 7033 7605 7041 +f 7597 8145 8161 +f 7597 8161 7605 +f 8145 8661 8693 +f 8145 8693 8161 +f 8661 9145 9177 +f 8661 9177 8693 +f 9145 9629 9653 +f 9145 9653 9177 +f 9629 10097 10113 +f 9629 10113 9653 +f 10097 10493 10541 +f 10097 10541 10113 +f 10493 10913 10953 +f 10493 10953 10541 +f 10913 11325 11357 +f 10913 11357 10953 +f 11325 11689 11705 +f 11325 11705 11357 +f 11689 12045 12085 +f 11689 12085 11705 +f 12045 12401 12425 +f 12045 12425 12085 +f 12401 12701 12741 +f 12401 12741 12425 +f 12701 13025 13065 +f 12701 13065 12741 +f 13025 13309 13349 +f 13025 13349 13065 +f 13309 13593 13641 +f 13309 13641 13349 +f 13593 13853 13909 +f 13593 13909 13641 +f 13853 14113 14145 +f 13853 14145 13909 +f 14113 14333 14389 +f 14113 14389 14145 +f 14333 14569 14617 +f 14333 14617 14389 +f 14569 14773 14813 +f 14569 14813 14617 +f 14773 14977 15017 +f 14773 15017 14813 +f 14977 15149 15197 +f 14977 15197 15017 +f 15149 15313 15377 +f 15149 15377 15197 +f 15313 15477 15517 +f 15313 15517 15377 +f 15477 15609 15657 +f 15477 15657 15517 +f 15609 15741 15789 +f 15609 15789 15657 +f 15741 15865 15897 +f 15741 15897 15789 +f 15865 15965 16005 +f 15865 16005 15897 +f 15965 16045 16089 +f 15965 16089 16005 +f 16045 16129 16165 +f 16045 16165 16089 +f 16129 16189 16233 +f 16129 16233 16165 +f 16189 16241 16289 +f 16189 16289 16233 +f 16241 16273 16325 +f 16241 16325 16289 +f 16273 16301 16345 +f 16273 16345 16325 +f 16301 16317 16361 +f 16301 16361 16345 +f 16317 16318 16362 +f 16317 16362 16361 +f 16318 16302 16346 +f 16318 16346 16362 +f 16302 16274 16326 +f 16302 16326 16346 +f 16274 16242 16290 +f 16274 16290 16326 +f 16242 16190 16234 +f 16242 16234 16290 +f 16190 16130 16166 +f 16190 16166 16234 +f 16130 16046 16090 +f 16130 16090 16166 +f 16046 15966 16006 +f 16046 16006 16090 +f 15966 15866 15898 +f 15966 15898 16006 +f 15866 15742 15790 +f 15866 15790 15898 +f 15742 15610 15658 +f 15742 15658 15790 +f 15610 15478 15518 +f 15610 15518 15658 +f 15478 15314 15378 +f 15478 15378 15518 +f 15314 15150 15198 +f 15314 15198 15378 +f 15150 14978 15018 +f 15150 15018 15198 +f 14978 14774 14814 +f 14978 14814 15018 +f 14774 14570 14618 +f 14774 14618 14814 +f 14570 14334 14390 +f 14570 14390 14618 +f 14334 14114 14146 +f 14334 14146 14390 +f 14114 13854 13910 +f 14114 13910 14146 +f 13854 13594 13642 +f 13854 13642 13910 +f 13594 13310 13350 +f 13594 13350 13642 +f 13310 13026 13066 +f 13310 13066 13350 +f 13026 12702 12742 +f 13026 12742 13066 +f 12702 12402 12426 +f 12702 12426 12742 +f 12402 12046 12086 +f 12402 12086 12426 +f 12046 11690 11706 +f 12046 11706 12086 +f 11690 11326 11358 +f 11690 11358 11706 +f 11326 10914 10954 +f 11326 10954 11358 +f 10914 10494 10542 +f 10914 10542 10954 +f 10494 10098 10114 +f 10494 10114 10542 +f 10098 9630 9654 +f 10098 9654 10114 +f 9630 9146 9178 +f 9630 9178 9654 +f 9146 8662 8694 +f 9146 8694 9178 +f 8662 8146 8162 +f 8662 8162 8694 +f 8146 7598 7606 +f 8146 7606 8162 +f 7598 7034 7042 +f 7598 7042 7606 +f 7034 6430 6446 +f 7034 6446 7042 +f 6430 5794 5818 +f 6430 5818 6446 +f 5794 5102 5126 +f 5794 5126 5818 +f 5102 4386 4394 +f 5102 4394 5126 +f 4386 3606 3630 +f 4386 3630 4394 +f 3606 2738 2746 +f 3606 2746 3630 +f 2738 1790 1798 +f 2738 1798 2746 +f 1797 2745 2769 +f 1797 2769 1805 +f 2745 3629 3637 +f 2745 3637 2769 +f 3629 4393 4401 +f 3629 4401 3637 +f 4393 5125 5141 +f 4393 5141 4401 +f 5125 5817 5825 +f 5125 5825 5141 +f 5817 6445 6461 +f 5817 6461 5825 +f 6445 7041 7049 +f 6445 7049 6461 +f 7041 7605 7637 +f 7041 7637 7049 +f 7605 8161 8185 +f 7605 8185 7637 +f 8161 8693 8709 +f 8161 8709 8185 +f 8693 9177 9209 +f 8693 9209 8709 +f 9177 9653 9669 +f 9177 9669 9209 +f 9653 10113 10137 +f 9653 10137 9669 +f 10113 10541 10573 +f 10113 10573 10137 +f 10541 10953 10969 +f 10541 10969 10573 +f 10953 11357 11373 +f 10953 11373 10969 +f 11357 11705 11753 +f 11357 11753 11373 +f 11705 12085 12101 +f 11705 12101 11753 +f 12085 12425 12441 +f 12085 12441 12101 +f 12425 12741 12789 +f 12425 12789 12441 +f 12741 13065 13081 +f 12741 13081 12789 +f 13065 13349 13389 +f 13065 13389 13081 +f 13349 13641 13665 +f 13349 13665 13389 +f 13641 13909 13933 +f 13641 13933 13665 +f 13909 14145 14185 +f 13909 14185 13933 +f 14145 14389 14429 +f 14145 14429 14185 +f 14389 14617 14633 +f 14389 14633 14429 +f 14617 14813 14853 +f 14617 14853 14633 +f 14813 15017 15049 +f 14813 15049 14853 +f 15017 15197 15221 +f 15017 15221 15049 +f 15197 15377 15385 +f 15197 15385 15221 +f 15377 15517 15549 +f 15377 15549 15385 +f 15517 15657 15689 +f 15517 15689 15549 +f 15657 15789 15813 +f 15657 15813 15689 +f 15789 15897 15937 +f 15789 15937 15813 +f 15897 16005 16029 +f 15897 16029 15937 +f 16005 16089 16121 +f 16005 16121 16029 +f 16089 16165 16205 +f 16089 16205 16121 +f 16165 16233 16265 +f 16165 16265 16205 +f 16233 16289 16309 +f 16233 16309 16265 +f 16289 16325 16353 +f 16289 16353 16309 +f 16325 16345 16381 +f 16325 16381 16353 +f 16345 16361 16389 +f 16345 16389 16381 +f 16361 16362 16390 +f 16361 16390 16389 +f 16362 16346 16382 +f 16362 16382 16390 +f 16346 16326 16354 +f 16346 16354 16382 +f 16326 16290 16310 +f 16326 16310 16354 +f 16290 16234 16266 +f 16290 16266 16310 +f 16234 16166 16206 +f 16234 16206 16266 +f 16166 16090 16122 +f 16166 16122 16206 +f 16090 16006 16030 +f 16090 16030 16122 +f 16006 15898 15938 +f 16006 15938 16030 +f 15898 15790 15814 +f 15898 15814 15938 +f 15790 15658 15690 +f 15790 15690 15814 +f 15658 15518 15550 +f 15658 15550 15690 +f 15518 15378 15386 +f 15518 15386 15550 +f 15378 15198 15222 +f 15378 15222 15386 +f 15198 15018 15050 +f 15198 15050 15222 +f 15018 14814 14854 +f 15018 14854 15050 +f 14814 14618 14634 +f 14814 14634 14854 +f 14618 14390 14430 +f 14618 14430 14634 +f 14390 14146 14186 +f 14390 14186 14430 +f 14146 13910 13934 +f 14146 13934 14186 +f 13910 13642 13666 +f 13910 13666 13934 +f 13642 13350 13390 +f 13642 13390 13666 +f 13350 13066 13082 +f 13350 13082 13390 +f 13066 12742 12790 +f 13066 12790 13082 +f 12742 12426 12442 +f 12742 12442 12790 +f 12426 12086 12102 +f 12426 12102 12442 +f 12086 11706 11754 +f 12086 11754 12102 +f 11706 11358 11374 +f 11706 11374 11754 +f 11358 10954 10970 +f 11358 10970 11374 +f 10954 10542 10574 +f 10954 10574 10970 +f 10542 10114 10138 +f 10542 10138 10574 +f 10114 9654 9670 +f 10114 9670 10138 +f 9654 9178 9210 +f 9654 9210 9670 +f 9178 8694 8710 +f 9178 8710 9210 +f 8694 8162 8186 +f 8694 8186 8710 +f 8162 7606 7638 +f 8162 7638 8186 +f 7606 7042 7050 +f 7606 7050 7638 +f 7042 6446 6462 +f 7042 6462 7050 +f 6446 5818 5826 +f 6446 5826 6462 +f 5818 5126 5142 +f 5818 5142 5826 +f 5126 4394 4402 +f 5126 4402 5142 +f 4394 3630 3638 +f 4394 3638 4402 +f 3630 2746 2770 +f 3630 2770 3638 +f 2746 1798 1806 +f 2746 1806 2770 +f 1805 2769 2777 +f 1805 2777 1829 +f 2769 3637 3645 +f 2769 3645 2777 +f 3637 4401 4433 +f 3637 4433 3645 +f 4401 5141 5149 +f 4401 5149 4433 +f 5141 5825 5833 +f 5141 5833 5149 +f 5825 6461 6469 +f 5825 6469 5833 +f 6461 7049 7057 +f 6461 7057 6469 +f 7049 7637 7645 +f 7049 7645 7057 +f 7637 8185 8193 +f 7637 8193 7645 +f 8185 8709 8725 +f 8185 8725 8193 +f 8709 9209 9233 +f 8709 9233 8725 +f 9209 9669 9685 +f 9209 9685 9233 +f 9669 10137 10145 +f 9669 10145 9685 +f 10137 10573 10597 +f 10137 10597 10145 +f 10573 10969 10985 +f 10573 10985 10597 +f 10969 11373 11381 +f 10969 11381 10985 +f 11373 11753 11769 +f 11373 11769 11381 +f 11753 12101 12125 +f 11753 12125 11769 +f 12101 12441 12465 +f 12101 12465 12125 +f 12441 12789 12805 +f 12441 12805 12465 +f 12789 13081 13097 +f 12789 13097 12805 +f 13081 13389 13413 +f 13081 13413 13097 +f 13389 13665 13673 +f 13389 13673 13413 +f 13665 13933 13949 +f 13665 13949 13673 +f 13933 14185 14193 +f 13933 14193 13949 +f 14185 14429 14445 +f 14185 14445 14193 +f 14429 14633 14649 +f 14429 14649 14445 +f 14633 14853 14877 +f 14633 14877 14649 +f 14853 15049 15057 +f 14853 15057 14877 +f 15049 15221 15253 +f 15049 15253 15057 +f 15221 15385 15409 +f 15221 15409 15253 +f 15385 15549 15573 +f 15385 15573 15409 +f 15549 15689 15705 +f 15549 15705 15573 +f 15689 15813 15829 +f 15689 15829 15705 +f 15813 15937 15953 +f 15813 15953 15829 +f 15937 16029 16053 +f 15937 16053 15953 +f 16029 16121 16145 +f 16029 16145 16053 +f 16121 16205 16213 +f 16121 16213 16145 +f 16205 16265 16281 +f 16205 16281 16213 +f 16265 16309 16333 +f 16265 16333 16281 +f 16309 16353 16369 +f 16309 16369 16333 +f 16353 16381 16397 +f 16353 16397 16369 +f 16381 16389 16409 +f 16381 16409 16397 +f 16389 16390 16410 +f 16389 16410 16409 +f 16390 16382 16398 +f 16390 16398 16410 +f 16382 16354 16370 +f 16382 16370 16398 +f 16354 16310 16334 +f 16354 16334 16370 +f 16310 16266 16282 +f 16310 16282 16334 +f 16266 16206 16214 +f 16266 16214 16282 +f 16206 16122 16146 +f 16206 16146 16214 +f 16122 16030 16054 +f 16122 16054 16146 +f 16030 15938 15954 +f 16030 15954 16054 +f 15938 15814 15830 +f 15938 15830 15954 +f 15814 15690 15706 +f 15814 15706 15830 +f 15690 15550 15574 +f 15690 15574 15706 +f 15550 15386 15410 +f 15550 15410 15574 +f 15386 15222 15254 +f 15386 15254 15410 +f 15222 15050 15058 +f 15222 15058 15254 +f 15050 14854 14878 +f 15050 14878 15058 +f 14854 14634 14650 +f 14854 14650 14878 +f 14634 14430 14446 +f 14634 14446 14650 +f 14430 14186 14194 +f 14430 14194 14446 +f 14186 13934 13950 +f 14186 13950 14194 +f 13934 13666 13674 +f 13934 13674 13950 +f 13666 13390 13414 +f 13666 13414 13674 +f 13390 13082 13098 +f 13390 13098 13414 +f 13082 12790 12806 +f 13082 12806 13098 +f 12790 12442 12466 +f 12790 12466 12806 +f 12442 12102 12126 +f 12442 12126 12466 +f 12102 11754 11770 +f 12102 11770 12126 +f 11754 11374 11382 +f 11754 11382 11770 +f 11374 10970 10986 +f 11374 10986 11382 +f 10970 10574 10598 +f 10970 10598 10986 +f 10574 10138 10146 +f 10574 10146 10598 +f 10138 9670 9686 +f 10138 9686 10146 +f 9670 9210 9234 +f 9670 9234 9686 +f 9210 8710 8726 +f 9210 8726 9234 +f 8710 8186 8194 +f 8710 8194 8726 +f 8186 7638 7646 +f 8186 7646 8194 +f 7638 7050 7058 +f 7638 7058 7646 +f 7050 6462 6470 +f 7050 6470 7058 +f 6462 5826 5834 +f 6462 5834 6470 +f 5826 5142 5150 +f 5826 5150 5834 +f 5142 4402 4434 +f 5142 4434 5150 +f 4402 3638 3646 +f 4402 3646 4434 +f 3638 2770 2778 +f 3638 2778 3646 +f 2770 1806 1830 +f 2770 1830 2778 +f 1829 2777 2783 +f 1829 2783 1835 +f 2777 3645 3651 +f 2777 3651 2783 +f 3645 4433 4447 +f 3645 4447 3651 +f 4433 5149 5163 +f 4433 5163 4447 +f 5149 5833 5839 +f 5149 5839 5163 +f 5833 6469 6475 +f 5833 6475 5839 +f 6469 7057 7071 +f 6469 7071 6475 +f 7057 7645 7651 +f 7057 7651 7071 +f 7645 8193 8199 +f 7645 8199 7651 +f 8193 8725 8731 +f 8193 8731 8199 +f 8725 9233 9239 +f 8725 9239 8731 +f 9233 9685 9691 +f 9233 9691 9239 +f 9685 10145 10151 +f 9685 10151 9691 +f 10145 10597 10603 +f 10145 10603 10151 +f 10597 10985 10991 +f 10597 10991 10603 +f 10985 11381 11395 +f 10985 11395 10991 +f 11381 11769 11783 +f 11381 11783 11395 +f 11769 12125 12139 +f 11769 12139 11783 +f 12125 12465 12471 +f 12125 12471 12139 +f 12465 12805 12811 +f 12465 12811 12471 +f 12805 13097 13111 +f 12805 13111 12811 +f 13097 13413 13419 +f 13097 13419 13111 +f 13413 13673 13687 +f 13413 13687 13419 +f 13673 13949 13955 +f 13673 13955 13687 +f 13949 14193 14215 +f 13949 14215 13955 +f 14193 14445 14451 +f 14193 14451 14215 +f 14445 14649 14663 +f 14445 14663 14451 +f 14649 14877 14883 +f 14649 14883 14663 +f 14877 15057 15071 +f 14877 15071 14883 +f 15057 15253 15259 +f 15057 15259 15071 +f 15253 15409 15415 +f 15253 15415 15259 +f 15409 15573 15587 +f 15409 15587 15415 +f 15573 15705 15711 +f 15573 15711 15587 +f 15705 15829 15851 +f 15705 15851 15711 +f 15829 15953 15959 +f 15829 15959 15851 +f 15953 16053 16059 +f 15953 16059 15959 +f 16053 16145 16151 +f 16053 16151 16059 +f 16145 16213 16227 +f 16145 16227 16151 +f 16213 16281 16295 +f 16213 16295 16227 +f 16281 16333 16339 +f 16281 16339 16295 +f 16333 16369 16375 +f 16333 16375 16339 +f 16369 16397 16403 +f 16369 16403 16375 +f 16397 16409 16415 +f 16397 16415 16403 +f 16409 16410 16416 +f 16409 16416 16415 +f 16410 16398 16404 +f 16410 16404 16416 +f 16398 16370 16376 +f 16398 16376 16404 +f 16370 16334 16340 +f 16370 16340 16376 +f 16334 16282 16296 +f 16334 16296 16340 +f 16282 16214 16228 +f 16282 16228 16296 +f 16214 16146 16152 +f 16214 16152 16228 +f 16146 16054 16060 +f 16146 16060 16152 +f 16054 15954 15960 +f 16054 15960 16060 +f 15954 15830 15852 +f 15954 15852 15960 +f 15830 15706 15712 +f 15830 15712 15852 +f 15706 15574 15588 +f 15706 15588 15712 +f 15574 15410 15416 +f 15574 15416 15588 +f 15410 15254 15260 +f 15410 15260 15416 +f 15254 15058 15072 +f 15254 15072 15260 +f 15058 14878 14884 +f 15058 14884 15072 +f 14878 14650 14664 +f 14878 14664 14884 +f 14650 14446 14452 +f 14650 14452 14664 +f 14446 14194 14216 +f 14446 14216 14452 +f 14194 13950 13956 +f 14194 13956 14216 +f 13950 13674 13688 +f 13950 13688 13956 +f 13674 13414 13420 +f 13674 13420 13688 +f 13414 13098 13112 +f 13414 13112 13420 +f 13098 12806 12812 +f 13098 12812 13112 +f 12806 12466 12472 +f 12806 12472 12812 +f 12466 12126 12140 +f 12466 12140 12472 +f 12126 11770 11784 +f 12126 11784 12140 +f 11770 11382 11396 +f 11770 11396 11784 +f 11382 10986 10992 +f 11382 10992 11396 +f 10986 10598 10604 +f 10986 10604 10992 +f 10598 10146 10152 +f 10598 10152 10604 +f 10146 9686 9692 +f 10146 9692 10152 +f 9686 9234 9240 +f 9686 9240 9692 +f 9234 8726 8732 +f 9234 8732 9240 +f 8726 8194 8200 +f 8726 8200 8732 +f 8194 7646 7652 +f 8194 7652 8200 +f 7646 7058 7072 +f 7646 7072 7652 +f 7058 6470 6476 +f 7058 6476 7072 +f 6470 5834 5840 +f 6470 5840 6476 +f 5834 5150 5164 +f 5834 5164 5840 +f 5150 4434 4448 +f 5150 4448 5164 +f 4434 3646 3652 +f 4434 3652 4448 +f 3646 2778 2784 +f 3646 2784 3652 +f 2778 1830 1836 +f 2778 1836 2784 +f 1835 2783 2779 +f 1835 2779 1831 +f 2783 3651 3647 +f 2783 3647 2779 +f 3651 4447 4435 +f 3651 4435 3647 +f 4447 5163 5151 +f 4447 5151 4435 +f 5163 5839 5835 +f 5163 5835 5151 +f 5839 6475 6471 +f 5839 6471 5835 +f 6475 7071 7059 +f 6475 7059 6471 +f 7071 7651 7647 +f 7071 7647 7059 +f 7651 8199 8195 +f 7651 8195 7647 +f 8199 8731 8727 +f 8199 8727 8195 +f 8731 9239 9235 +f 8731 9235 8727 +f 9239 9691 9687 +f 9239 9687 9235 +f 9691 10151 10147 +f 9691 10147 9687 +f 10151 10603 10599 +f 10151 10599 10147 +f 10603 10991 10987 +f 10603 10987 10599 +f 10991 11395 11383 +f 10991 11383 10987 +f 11395 11783 11771 +f 11395 11771 11383 +f 11783 12139 12127 +f 11783 12127 11771 +f 12139 12471 12467 +f 12139 12467 12127 +f 12471 12811 12807 +f 12471 12807 12467 +f 12811 13111 13099 +f 12811 13099 12807 +f 13111 13419 13415 +f 13111 13415 13099 +f 13419 13687 13675 +f 13419 13675 13415 +f 13687 13955 13951 +f 13687 13951 13675 +f 13955 14215 14195 +f 13955 14195 13951 +f 14215 14451 14447 +f 14215 14447 14195 +f 14451 14663 14651 +f 14451 14651 14447 +f 14663 14883 14879 +f 14663 14879 14651 +f 14883 15071 15059 +f 14883 15059 14879 +f 15071 15259 15255 +f 15071 15255 15059 +f 15259 15415 15411 +f 15259 15411 15255 +f 15415 15587 15575 +f 15415 15575 15411 +f 15587 15711 15707 +f 15587 15707 15575 +f 15711 15851 15831 +f 15711 15831 15707 +f 15851 15959 15955 +f 15851 15955 15831 +f 15959 16059 16055 +f 15959 16055 15955 +f 16059 16151 16147 +f 16059 16147 16055 +f 16151 16227 16215 +f 16151 16215 16147 +f 16227 16295 16283 +f 16227 16283 16215 +f 16295 16339 16335 +f 16295 16335 16283 +f 16339 16375 16371 +f 16339 16371 16335 +f 16375 16403 16399 +f 16375 16399 16371 +f 16403 16415 16411 +f 16403 16411 16399 +f 16415 16416 16412 +f 16415 16412 16411 +f 16416 16404 16400 +f 16416 16400 16412 +f 16404 16376 16372 +f 16404 16372 16400 +f 16376 16340 16336 +f 16376 16336 16372 +f 16340 16296 16284 +f 16340 16284 16336 +f 16296 16228 16216 +f 16296 16216 16284 +f 16228 16152 16148 +f 16228 16148 16216 +f 16152 16060 16056 +f 16152 16056 16148 +f 16060 15960 15956 +f 16060 15956 16056 +f 15960 15852 15832 +f 15960 15832 15956 +f 15852 15712 15708 +f 15852 15708 15832 +f 15712 15588 15576 +f 15712 15576 15708 +f 15588 15416 15412 +f 15588 15412 15576 +f 15416 15260 15256 +f 15416 15256 15412 +f 15260 15072 15060 +f 15260 15060 15256 +f 15072 14884 14880 +f 15072 14880 15060 +f 14884 14664 14652 +f 14884 14652 14880 +f 14664 14452 14448 +f 14664 14448 14652 +f 14452 14216 14196 +f 14452 14196 14448 +f 14216 13956 13952 +f 14216 13952 14196 +f 13956 13688 13676 +f 13956 13676 13952 +f 13688 13420 13416 +f 13688 13416 13676 +f 13420 13112 13100 +f 13420 13100 13416 +f 13112 12812 12808 +f 13112 12808 13100 +f 12812 12472 12468 +f 12812 12468 12808 +f 12472 12140 12128 +f 12472 12128 12468 +f 12140 11784 11772 +f 12140 11772 12128 +f 11784 11396 11384 +f 11784 11384 11772 +f 11396 10992 10988 +f 11396 10988 11384 +f 10992 10604 10600 +f 10992 10600 10988 +f 10604 10152 10148 +f 10604 10148 10600 +f 10152 9692 9688 +f 10152 9688 10148 +f 9692 9240 9236 +f 9692 9236 9688 +f 9240 8732 8728 +f 9240 8728 9236 +f 8732 8200 8196 +f 8732 8196 8728 +f 8200 7652 7648 +f 8200 7648 8196 +f 7652 7072 7060 +f 7652 7060 7648 +f 7072 6476 6472 +f 7072 6472 7060 +f 6476 5840 5836 +f 6476 5836 6472 +f 5840 5164 5152 +f 5840 5152 5836 +f 5164 4448 4436 +f 5164 4436 5152 +f 4448 3652 3648 +f 4448 3648 4436 +f 3652 2784 2780 +f 3652 2780 3648 +f 2784 1836 1832 +f 2784 1832 2780 +f 1831 2779 2771 +f 1831 2771 1807 +f 2779 3647 3639 +f 2779 3639 2771 +f 3647 4435 4403 +f 3647 4403 3639 +f 4435 5151 5143 +f 4435 5143 4403 +f 5151 5835 5827 +f 5151 5827 5143 +f 5835 6471 6463 +f 5835 6463 5827 +f 6471 7059 7051 +f 6471 7051 6463 +f 7059 7647 7639 +f 7059 7639 7051 +f 7647 8195 8187 +f 7647 8187 7639 +f 8195 8727 8711 +f 8195 8711 8187 +f 8727 9235 9211 +f 8727 9211 8711 +f 9235 9687 9671 +f 9235 9671 9211 +f 9687 10147 10139 +f 9687 10139 9671 +f 10147 10599 10575 +f 10147 10575 10139 +f 10599 10987 10971 +f 10599 10971 10575 +f 10987 11383 11375 +f 10987 11375 10971 +f 11383 11771 11755 +f 11383 11755 11375 +f 11771 12127 12103 +f 11771 12103 11755 +f 12127 12467 12443 +f 12127 12443 12103 +f 12467 12807 12791 +f 12467 12791 12443 +f 12807 13099 13083 +f 12807 13083 12791 +f 13099 13415 13391 +f 13099 13391 13083 +f 13415 13675 13667 +f 13415 13667 13391 +f 13675 13951 13935 +f 13675 13935 13667 +f 13951 14195 14187 +f 13951 14187 13935 +f 14195 14447 14431 +f 14195 14431 14187 +f 14447 14651 14635 +f 14447 14635 14431 +f 14651 14879 14855 +f 14651 14855 14635 +f 14879 15059 15051 +f 14879 15051 14855 +f 15059 15255 15223 +f 15059 15223 15051 +f 15255 15411 15387 +f 15255 15387 15223 +f 15411 15575 15551 +f 15411 15551 15387 +f 15575 15707 15691 +f 15575 15691 15551 +f 15707 15831 15815 +f 15707 15815 15691 +f 15831 15955 15939 +f 15831 15939 15815 +f 15955 16055 16031 +f 15955 16031 15939 +f 16055 16147 16123 +f 16055 16123 16031 +f 16147 16215 16207 +f 16147 16207 16123 +f 16215 16283 16267 +f 16215 16267 16207 +f 16283 16335 16311 +f 16283 16311 16267 +f 16335 16371 16355 +f 16335 16355 16311 +f 16371 16399 16383 +f 16371 16383 16355 +f 16399 16411 16391 +f 16399 16391 16383 +f 16411 16412 16392 +f 16411 16392 16391 +f 16412 16400 16384 +f 16412 16384 16392 +f 16400 16372 16356 +f 16400 16356 16384 +f 16372 16336 16312 +f 16372 16312 16356 +f 16336 16284 16268 +f 16336 16268 16312 +f 16284 16216 16208 +f 16284 16208 16268 +f 16216 16148 16124 +f 16216 16124 16208 +f 16148 16056 16032 +f 16148 16032 16124 +f 16056 15956 15940 +f 16056 15940 16032 +f 15956 15832 15816 +f 15956 15816 15940 +f 15832 15708 15692 +f 15832 15692 15816 +f 15708 15576 15552 +f 15708 15552 15692 +f 15576 15412 15388 +f 15576 15388 15552 +f 15412 15256 15224 +f 15412 15224 15388 +f 15256 15060 15052 +f 15256 15052 15224 +f 15060 14880 14856 +f 15060 14856 15052 +f 14880 14652 14636 +f 14880 14636 14856 +f 14652 14448 14432 +f 14652 14432 14636 +f 14448 14196 14188 +f 14448 14188 14432 +f 14196 13952 13936 +f 14196 13936 14188 +f 13952 13676 13668 +f 13952 13668 13936 +f 13676 13416 13392 +f 13676 13392 13668 +f 13416 13100 13084 +f 13416 13084 13392 +f 13100 12808 12792 +f 13100 12792 13084 +f 12808 12468 12444 +f 12808 12444 12792 +f 12468 12128 12104 +f 12468 12104 12444 +f 12128 11772 11756 +f 12128 11756 12104 +f 11772 11384 11376 +f 11772 11376 11756 +f 11384 10988 10972 +f 11384 10972 11376 +f 10988 10600 10576 +f 10988 10576 10972 +f 10600 10148 10140 +f 10600 10140 10576 +f 10148 9688 9672 +f 10148 9672 10140 +f 9688 9236 9212 +f 9688 9212 9672 +f 9236 8728 8712 +f 9236 8712 9212 +f 8728 8196 8188 +f 8728 8188 8712 +f 8196 7648 7640 +f 8196 7640 8188 +f 7648 7060 7052 +f 7648 7052 7640 +f 7060 6472 6464 +f 7060 6464 7052 +f 6472 5836 5828 +f 6472 5828 6464 +f 5836 5152 5144 +f 5836 5144 5828 +f 5152 4436 4404 +f 5152 4404 5144 +f 4436 3648 3640 +f 4436 3640 4404 +f 3648 2780 2772 +f 3648 2772 3640 +f 2780 1832 1808 +f 2780 1808 2772 +f 1807 2771 2747 +f 1807 2747 1799 +f 2771 3639 3631 +f 2771 3631 2747 +f 3639 4403 4395 +f 3639 4395 3631 +f 4403 5143 5127 +f 4403 5127 4395 +f 5143 5827 5819 +f 5143 5819 5127 +f 5827 6463 6447 +f 5827 6447 5819 +f 6463 7051 7043 +f 6463 7043 6447 +f 7051 7639 7607 +f 7051 7607 7043 +f 7639 8187 8163 +f 7639 8163 7607 +f 8187 8711 8695 +f 8187 8695 8163 +f 8711 9211 9179 +f 8711 9179 8695 +f 9211 9671 9655 +f 9211 9655 9179 +f 9671 10139 10115 +f 9671 10115 9655 +f 10139 10575 10543 +f 10139 10543 10115 +f 10575 10971 10955 +f 10575 10955 10543 +f 10971 11375 11359 +f 10971 11359 10955 +f 11375 11755 11707 +f 11375 11707 11359 +f 11755 12103 12087 +f 11755 12087 11707 +f 12103 12443 12427 +f 12103 12427 12087 +f 12443 12791 12743 +f 12443 12743 12427 +f 12791 13083 13067 +f 12791 13067 12743 +f 13083 13391 13351 +f 13083 13351 13067 +f 13391 13667 13643 +f 13391 13643 13351 +f 13667 13935 13911 +f 13667 13911 13643 +f 13935 14187 14147 +f 13935 14147 13911 +f 14187 14431 14391 +f 14187 14391 14147 +f 14431 14635 14619 +f 14431 14619 14391 +f 14635 14855 14815 +f 14635 14815 14619 +f 14855 15051 15019 +f 14855 15019 14815 +f 15051 15223 15199 +f 15051 15199 15019 +f 15223 15387 15379 +f 15223 15379 15199 +f 15387 15551 15519 +f 15387 15519 15379 +f 15551 15691 15659 +f 15551 15659 15519 +f 15691 15815 15791 +f 15691 15791 15659 +f 15815 15939 15899 +f 15815 15899 15791 +f 15939 16031 16007 +f 15939 16007 15899 +f 16031 16123 16091 +f 16031 16091 16007 +f 16123 16207 16167 +f 16123 16167 16091 +f 16207 16267 16235 +f 16207 16235 16167 +f 16267 16311 16291 +f 16267 16291 16235 +f 16311 16355 16327 +f 16311 16327 16291 +f 16355 16383 16347 +f 16355 16347 16327 +f 16383 16391 16363 +f 16383 16363 16347 +f 16391 16392 16364 +f 16391 16364 16363 +f 16392 16384 16348 +f 16392 16348 16364 +f 16384 16356 16328 +f 16384 16328 16348 +f 16356 16312 16292 +f 16356 16292 16328 +f 16312 16268 16236 +f 16312 16236 16292 +f 16268 16208 16168 +f 16268 16168 16236 +f 16208 16124 16092 +f 16208 16092 16168 +f 16124 16032 16008 +f 16124 16008 16092 +f 16032 15940 15900 +f 16032 15900 16008 +f 15940 15816 15792 +f 15940 15792 15900 +f 15816 15692 15660 +f 15816 15660 15792 +f 15692 15552 15520 +f 15692 15520 15660 +f 15552 15388 15380 +f 15552 15380 15520 +f 15388 15224 15200 +f 15388 15200 15380 +f 15224 15052 15020 +f 15224 15020 15200 +f 15052 14856 14816 +f 15052 14816 15020 +f 14856 14636 14620 +f 14856 14620 14816 +f 14636 14432 14392 +f 14636 14392 14620 +f 14432 14188 14148 +f 14432 14148 14392 +f 14188 13936 13912 +f 14188 13912 14148 +f 13936 13668 13644 +f 13936 13644 13912 +f 13668 13392 13352 +f 13668 13352 13644 +f 13392 13084 13068 +f 13392 13068 13352 +f 13084 12792 12744 +f 13084 12744 13068 +f 12792 12444 12428 +f 12792 12428 12744 +f 12444 12104 12088 +f 12444 12088 12428 +f 12104 11756 11708 +f 12104 11708 12088 +f 11756 11376 11360 +f 11756 11360 11708 +f 11376 10972 10956 +f 11376 10956 11360 +f 10972 10576 10544 +f 10972 10544 10956 +f 10576 10140 10116 +f 10576 10116 10544 +f 10140 9672 9656 +f 10140 9656 10116 +f 9672 9212 9180 +f 9672 9180 9656 +f 9212 8712 8696 +f 9212 8696 9180 +f 8712 8188 8164 +f 8712 8164 8696 +f 8188 7640 7608 +f 8188 7608 8164 +f 7640 7052 7044 +f 7640 7044 7608 +f 7052 6464 6448 +f 7052 6448 7044 +f 6464 5828 5820 +f 6464 5820 6448 +f 5828 5144 5128 +f 5828 5128 5820 +f 5144 4404 4396 +f 5144 4396 5128 +f 4404 3640 3632 +f 4404 3632 4396 +f 3640 2772 2748 +f 3640 2748 3632 +f 2772 1808 1800 +f 2772 1800 2748 +f 1799 2747 2739 +f 1799 2739 1791 +f 2747 3631 3607 +f 2747 3607 2739 +f 3631 4395 4387 +f 3631 4387 3607 +f 4395 5127 5103 +f 4395 5103 4387 +f 5127 5819 5795 +f 5127 5795 5103 +f 5819 6447 6431 +f 5819 6431 5795 +f 6447 7043 7035 +f 6447 7035 6431 +f 7043 7607 7599 +f 7043 7599 7035 +f 7607 8163 8147 +f 7607 8147 7599 +f 8163 8695 8663 +f 8163 8663 8147 +f 8695 9179 9147 +f 8695 9147 8663 +f 9179 9655 9631 +f 9179 9631 9147 +f 9655 10115 10099 +f 9655 10099 9631 +f 10115 10543 10495 +f 10115 10495 10099 +f 10543 10955 10915 +f 10543 10915 10495 +f 10955 11359 11327 +f 10955 11327 10915 +f 11359 11707 11691 +f 11359 11691 11327 +f 11707 12087 12047 +f 11707 12047 11691 +f 12087 12427 12403 +f 12087 12403 12047 +f 12427 12743 12703 +f 12427 12703 12403 +f 12743 13067 13027 +f 12743 13027 12703 +f 13067 13351 13311 +f 13067 13311 13027 +f 13351 13643 13595 +f 13351 13595 13311 +f 13643 13911 13855 +f 13643 13855 13595 +f 13911 14147 14115 +f 13911 14115 13855 +f 14147 14391 14335 +f 14147 14335 14115 +f 14391 14619 14571 +f 14391 14571 14335 +f 14619 14815 14775 +f 14619 14775 14571 +f 14815 15019 14979 +f 14815 14979 14775 +f 15019 15199 15151 +f 15019 15151 14979 +f 15199 15379 15315 +f 15199 15315 15151 +f 15379 15519 15479 +f 15379 15479 15315 +f 15519 15659 15611 +f 15519 15611 15479 +f 15659 15791 15743 +f 15659 15743 15611 +f 15791 15899 15867 +f 15791 15867 15743 +f 15899 16007 15967 +f 15899 15967 15867 +f 16007 16091 16047 +f 16007 16047 15967 +f 16091 16167 16131 +f 16091 16131 16047 +f 16167 16235 16191 +f 16167 16191 16131 +f 16235 16291 16243 +f 16235 16243 16191 +f 16291 16327 16275 +f 16291 16275 16243 +f 16327 16347 16303 +f 16327 16303 16275 +f 16347 16363 16319 +f 16347 16319 16303 +f 16363 16364 16320 +f 16363 16320 16319 +f 16364 16348 16304 +f 16364 16304 16320 +f 16348 16328 16276 +f 16348 16276 16304 +f 16328 16292 16244 +f 16328 16244 16276 +f 16292 16236 16192 +f 16292 16192 16244 +f 16236 16168 16132 +f 16236 16132 16192 +f 16168 16092 16048 +f 16168 16048 16132 +f 16092 16008 15968 +f 16092 15968 16048 +f 16008 15900 15868 +f 16008 15868 15968 +f 15900 15792 15744 +f 15900 15744 15868 +f 15792 15660 15612 +f 15792 15612 15744 +f 15660 15520 15480 +f 15660 15480 15612 +f 15520 15380 15316 +f 15520 15316 15480 +f 15380 15200 15152 +f 15380 15152 15316 +f 15200 15020 14980 +f 15200 14980 15152 +f 15020 14816 14776 +f 15020 14776 14980 +f 14816 14620 14572 +f 14816 14572 14776 +f 14620 14392 14336 +f 14620 14336 14572 +f 14392 14148 14116 +f 14392 14116 14336 +f 14148 13912 13856 +f 14148 13856 14116 +f 13912 13644 13596 +f 13912 13596 13856 +f 13644 13352 13312 +f 13644 13312 13596 +f 13352 13068 13028 +f 13352 13028 13312 +f 13068 12744 12704 +f 13068 12704 13028 +f 12744 12428 12404 +f 12744 12404 12704 +f 12428 12088 12048 +f 12428 12048 12404 +f 12088 11708 11692 +f 12088 11692 12048 +f 11708 11360 11328 +f 11708 11328 11692 +f 11360 10956 10916 +f 11360 10916 11328 +f 10956 10544 10496 +f 10956 10496 10916 +f 10544 10116 10100 +f 10544 10100 10496 +f 10116 9656 9632 +f 10116 9632 10100 +f 9656 9180 9148 +f 9656 9148 9632 +f 9180 8696 8664 +f 9180 8664 9148 +f 8696 8164 8148 +f 8696 8148 8664 +f 8164 7608 7600 +f 8164 7600 8148 +f 7608 7044 7036 +f 7608 7036 7600 +f 7044 6448 6432 +f 7044 6432 7036 +f 6448 5820 5796 +f 6448 5796 6432 +f 5820 5128 5104 +f 5820 5104 5796 +f 5128 4396 4388 +f 5128 4388 5104 +f 4396 3632 3608 +f 4396 3608 4388 +f 3632 2748 2740 +f 3632 2740 3608 +f 2748 1800 1792 +f 2748 1792 2740 +f 1791 2739 2707 +f 1791 2707 1759 +f 2739 3607 3543 +f 2739 3543 2707 +f 3607 4387 4339 +f 3607 4339 3543 +f 4387 5103 5063 +f 4387 5063 4339 +f 5103 5795 5731 +f 5103 5731 5063 +f 5795 6431 6375 +f 5795 6375 5731 +f 6431 7035 6971 +f 6431 6971 6375 +f 7035 7599 7551 +f 7035 7551 6971 +f 7599 8147 8091 +f 7599 8091 7551 +f 8147 8663 8591 +f 8147 8591 8091 +f 8663 9147 9099 +f 8663 9099 8591 +f 9147 9631 9583 +f 9147 9583 9099 +f 9631 10099 10027 +f 9631 10027 9583 +f 10099 10495 10455 +f 10099 10455 10027 +f 10495 10915 10875 +f 10495 10875 10455 +f 10915 11327 11255 +f 10915 11255 10875 +f 11327 11691 11635 +f 11327 11635 11255 +f 11691 12047 11991 +f 11691 11991 11635 +f 12047 12403 12315 +f 12047 12315 11991 +f 12403 12703 12663 +f 12403 12663 12315 +f 12703 13027 12963 +f 12703 12963 12663 +f 13027 13311 13271 +f 13027 13271 12963 +f 13311 13595 13547 +f 13311 13547 13271 +f 13595 13855 13807 +f 13595 13807 13547 +f 13855 14115 14051 +f 13855 14051 13807 +f 14115 14335 14303 +f 14115 14303 14051 +f 14335 14571 14507 +f 14335 14507 14303 +f 14571 14775 14727 +f 14571 14727 14507 +f 14775 14979 14907 +f 14775 14907 14727 +f 14979 15151 15095 +f 14979 15095 14907 +f 15151 15315 15275 +f 15151 15275 15095 +f 15315 15479 15431 +f 15315 15431 15275 +f 15479 15611 15567 +f 15479 15567 15431 +f 15611 15743 15699 +f 15611 15699 15567 +f 15743 15867 15807 +f 15743 15807 15699 +f 15867 15967 15907 +f 15867 15907 15807 +f 15967 16047 15991 +f 15967 15991 15907 +f 16047 16131 16075 +f 16047 16075 15991 +f 16131 16191 16139 +f 16131 16139 16075 +f 16191 16243 16183 +f 16191 16183 16139 +f 16243 16275 16223 +f 16243 16223 16183 +f 16275 16303 16251 +f 16275 16251 16223 +f 16303 16319 16259 +f 16303 16259 16251 +f 16319 16320 16260 +f 16319 16260 16259 +f 16320 16304 16252 +f 16320 16252 16260 +f 16304 16276 16224 +f 16304 16224 16252 +f 16276 16244 16184 +f 16276 16184 16224 +f 16244 16192 16140 +f 16244 16140 16184 +f 16192 16132 16076 +f 16192 16076 16140 +f 16132 16048 15992 +f 16132 15992 16076 +f 16048 15968 15908 +f 16048 15908 15992 +f 15968 15868 15808 +f 15968 15808 15908 +f 15868 15744 15700 +f 15868 15700 15808 +f 15744 15612 15568 +f 15744 15568 15700 +f 15612 15480 15432 +f 15612 15432 15568 +f 15480 15316 15276 +f 15480 15276 15432 +f 15316 15152 15096 +f 15316 15096 15276 +f 15152 14980 14908 +f 15152 14908 15096 +f 14980 14776 14728 +f 14980 14728 14908 +f 14776 14572 14508 +f 14776 14508 14728 +f 14572 14336 14304 +f 14572 14304 14508 +f 14336 14116 14052 +f 14336 14052 14304 +f 14116 13856 13808 +f 14116 13808 14052 +f 13856 13596 13548 +f 13856 13548 13808 +f 13596 13312 13272 +f 13596 13272 13548 +f 13312 13028 12964 +f 13312 12964 13272 +f 13028 12704 12664 +f 13028 12664 12964 +f 12704 12404 12316 +f 12704 12316 12664 +f 12404 12048 11992 +f 12404 11992 12316 +f 12048 11692 11636 +f 12048 11636 11992 +f 11692 11328 11256 +f 11692 11256 11636 +f 11328 10916 10876 +f 11328 10876 11256 +f 10916 10496 10456 +f 10916 10456 10876 +f 10496 10100 10028 +f 10496 10028 10456 +f 10100 9632 9584 +f 10100 9584 10028 +f 9632 9148 9100 +f 9632 9100 9584 +f 9148 8664 8592 +f 9148 8592 9100 +f 8664 8148 8092 +f 8664 8092 8592 +f 8148 7600 7552 +f 8148 7552 8092 +f 7600 7036 6972 +f 7600 6972 7552 +f 7036 6432 6376 +f 7036 6376 6972 +f 6432 5796 5732 +f 6432 5732 6376 +f 5796 5104 5064 +f 5796 5064 5732 +f 5104 4388 4340 +f 5104 4340 5064 +f 4388 3608 3544 +f 4388 3544 4340 +f 3608 2740 2708 +f 3608 2708 3544 +f 2740 1792 1760 +f 2740 1760 2708 +f 1759 2707 2691 +f 1759 2691 1743 +f 2707 3543 3527 +f 2707 3527 2691 +f 3543 4339 4307 +f 3543 4307 3527 +f 4339 5063 5031 +f 4339 5031 4307 +f 5063 5731 5699 +f 5063 5699 5031 +f 5731 6375 6327 +f 5731 6327 5699 +f 6375 6971 6947 +f 6375 6947 6327 +f 6971 7551 7519 +f 6971 7519 6947 +f 7551 8091 8035 +f 7551 8035 7519 +f 8091 8591 8559 +f 8091 8559 8035 +f 8591 9099 9059 +f 8591 9059 8559 +f 9099 9583 9535 +f 9099 9535 9059 +f 9583 10027 9971 +f 9583 9971 9535 +f 10027 10455 10407 +f 10027 10407 9971 +f 10455 10875 10811 +f 10455 10811 10407 +f 10875 11255 11215 +f 10875 11215 10811 +f 11255 11635 11571 +f 11255 11571 11215 +f 11635 11991 11951 +f 11635 11951 11571 +f 11991 12315 12267 +f 11991 12267 11951 +f 12315 12663 12607 +f 12315 12607 12267 +f 12663 12963 12907 +f 12663 12907 12607 +f 12963 13271 13207 +f 12963 13207 12907 +f 13271 13547 13483 +f 13271 13483 13207 +f 13547 13807 13767 +f 13547 13767 13483 +f 13807 14051 14003 +f 13807 14003 13767 +f 14051 14303 14239 +f 14051 14239 14003 +f 14303 14507 14459 +f 14303 14459 14239 +f 14507 14727 14671 +f 14507 14671 14459 +f 14727 14907 14871 +f 14727 14871 14671 +f 14907 15095 15035 +f 14907 15035 14871 +f 15095 15275 15207 +f 15095 15207 15035 +f 15275 15431 15371 +f 15275 15371 15207 +f 15431 15567 15495 +f 15431 15495 15371 +f 15567 15699 15627 +f 15567 15627 15495 +f 15699 15807 15735 +f 15699 15735 15627 +f 15807 15907 15847 +f 15807 15847 15735 +f 15907 15991 15931 +f 15907 15931 15847 +f 15991 16075 15999 +f 15991 15999 15931 +f 16075 16139 16067 +f 16075 16067 15999 +f 16139 16183 16115 +f 16139 16115 16067 +f 16183 16223 16159 +f 16183 16159 16115 +f 16223 16251 16175 +f 16223 16175 16159 +f 16251 16259 16199 +f 16251 16199 16175 +f 16259 16260 16200 +f 16259 16200 16199 +f 16260 16252 16176 +f 16260 16176 16200 +f 16252 16224 16160 +f 16252 16160 16176 +f 16224 16184 16116 +f 16224 16116 16160 +f 16184 16140 16068 +f 16184 16068 16116 +f 16140 16076 16000 +f 16140 16000 16068 +f 16076 15992 15932 +f 16076 15932 16000 +f 15992 15908 15848 +f 15992 15848 15932 +f 15908 15808 15736 +f 15908 15736 15848 +f 15808 15700 15628 +f 15808 15628 15736 +f 15700 15568 15496 +f 15700 15496 15628 +f 15568 15432 15372 +f 15568 15372 15496 +f 15432 15276 15208 +f 15432 15208 15372 +f 15276 15096 15036 +f 15276 15036 15208 +f 15096 14908 14872 +f 15096 14872 15036 +f 14908 14728 14672 +f 14908 14672 14872 +f 14728 14508 14460 +f 14728 14460 14672 +f 14508 14304 14240 +f 14508 14240 14460 +f 14304 14052 14004 +f 14304 14004 14240 +f 14052 13808 13768 +f 14052 13768 14004 +f 13808 13548 13484 +f 13808 13484 13768 +f 13548 13272 13208 +f 13548 13208 13484 +f 13272 12964 12908 +f 13272 12908 13208 +f 12964 12664 12608 +f 12964 12608 12908 +f 12664 12316 12268 +f 12664 12268 12608 +f 12316 11992 11952 +f 12316 11952 12268 +f 11992 11636 11572 +f 11992 11572 11952 +f 11636 11256 11216 +f 11636 11216 11572 +f 11256 10876 10812 +f 11256 10812 11216 +f 10876 10456 10408 +f 10876 10408 10812 +f 10456 10028 9972 +f 10456 9972 10408 +f 10028 9584 9536 +f 10028 9536 9972 +f 9584 9100 9060 +f 9584 9060 9536 +f 9100 8592 8560 +f 9100 8560 9060 +f 8592 8092 8036 +f 8592 8036 8560 +f 8092 7552 7520 +f 8092 7520 8036 +f 7552 6972 6948 +f 7552 6948 7520 +f 6972 6376 6328 +f 6972 6328 6948 +f 6376 5732 5700 +f 6376 5700 6328 +f 5732 5064 5032 +f 5732 5032 5700 +f 5064 4340 4308 +f 5064 4308 5032 +f 4340 3544 3528 +f 4340 3528 4308 +f 3544 2708 2692 +f 3544 2692 3528 +f 2708 1760 1744 +f 2708 1744 2692 +f 1743 2691 2667 +f 1743 2667 1727 +f 2691 3527 3487 +f 2691 3487 2667 +f 3527 4307 4251 +f 3527 4251 3487 +f 4307 5031 4991 +f 4307 4991 4251 +f 5031 5699 5659 +f 5031 5659 4991 +f 5699 6327 6295 +f 5699 6295 5659 +f 6327 6947 6875 +f 6327 6875 6295 +f 6947 7519 7439 +f 6947 7439 6875 +f 7519 8035 7995 +f 7519 7995 7439 +f 8035 8559 8519 +f 8035 8519 7995 +f 8559 9059 9011 +f 8559 9011 8519 +f 9059 9535 9455 +f 9059 9455 9011 +f 9535 9971 9907 +f 9535 9907 9455 +f 9971 10407 10359 +f 9971 10359 9907 +f 10407 10811 10747 +f 10407 10747 10359 +f 10811 11215 11143 +f 10811 11143 10747 +f 11215 11571 11531 +f 11215 11531 11143 +f 11571 11951 11871 +f 11571 11871 11531 +f 11951 12267 12227 +f 11951 12227 11871 +f 12267 12607 12543 +f 12267 12543 12227 +f 12607 12907 12851 +f 12607 12851 12543 +f 12907 13207 13143 +f 12907 13143 12851 +f 13207 13483 13443 +f 13207 13443 13143 +f 13483 13767 13683 +f 13483 13683 13443 +f 13767 14003 13943 +f 13767 13943 13683 +f 14003 14239 14163 +f 14003 14163 13943 +f 14239 14459 14383 +f 14239 14383 14163 +f 14459 14671 14595 +f 14459 14595 14383 +f 14671 14871 14783 +f 14671 14783 14595 +f 14871 15035 14947 +f 14871 14947 14783 +f 15035 15207 15135 +f 15035 15135 14947 +f 15207 15371 15283 +f 15207 15283 15135 +f 15371 15495 15423 +f 15371 15423 15283 +f 15495 15627 15543 +f 15495 15543 15423 +f 15627 15735 15651 +f 15627 15651 15543 +f 15735 15847 15767 +f 15735 15767 15651 +f 15847 15931 15859 +f 15847 15859 15767 +f 15931 15999 15923 +f 15931 15923 15859 +f 15999 16067 15983 +f 15999 15983 15923 +f 16067 16115 16039 +f 16067 16039 15983 +f 16115 16159 16083 +f 16115 16083 16039 +f 16159 16175 16099 +f 16159 16099 16083 +f 16175 16199 16107 +f 16175 16107 16099 +f 16199 16200 16108 +f 16199 16108 16107 +f 16200 16176 16100 +f 16200 16100 16108 +f 16176 16160 16084 +f 16176 16084 16100 +f 16160 16116 16040 +f 16160 16040 16084 +f 16116 16068 15984 +f 16116 15984 16040 +f 16068 16000 15924 +f 16068 15924 15984 +f 16000 15932 15860 +f 16000 15860 15924 +f 15932 15848 15768 +f 15932 15768 15860 +f 15848 15736 15652 +f 15848 15652 15768 +f 15736 15628 15544 +f 15736 15544 15652 +f 15628 15496 15424 +f 15628 15424 15544 +f 15496 15372 15284 +f 15496 15284 15424 +f 15372 15208 15136 +f 15372 15136 15284 +f 15208 15036 14948 +f 15208 14948 15136 +f 15036 14872 14784 +f 15036 14784 14948 +f 14872 14672 14596 +f 14872 14596 14784 +f 14672 14460 14384 +f 14672 14384 14596 +f 14460 14240 14164 +f 14460 14164 14384 +f 14240 14004 13944 +f 14240 13944 14164 +f 14004 13768 13684 +f 14004 13684 13944 +f 13768 13484 13444 +f 13768 13444 13684 +f 13484 13208 13144 +f 13484 13144 13444 +f 13208 12908 12852 +f 13208 12852 13144 +f 12908 12608 12544 +f 12908 12544 12852 +f 12608 12268 12228 +f 12608 12228 12544 +f 12268 11952 11872 +f 12268 11872 12228 +f 11952 11572 11532 +f 11952 11532 11872 +f 11572 11216 11144 +f 11572 11144 11532 +f 11216 10812 10748 +f 11216 10748 11144 +f 10812 10408 10360 +f 10812 10360 10748 +f 10408 9972 9908 +f 10408 9908 10360 +f 9972 9536 9456 +f 9972 9456 9908 +f 9536 9060 9012 +f 9536 9012 9456 +f 9060 8560 8520 +f 9060 8520 9012 +f 8560 8036 7996 +f 8560 7996 8520 +f 8036 7520 7440 +f 8036 7440 7996 +f 7520 6948 6876 +f 7520 6876 7440 +f 6948 6328 6296 +f 6948 6296 6876 +f 6328 5700 5660 +f 6328 5660 6296 +f 5700 5032 4992 +f 5700 4992 5660 +f 5032 4308 4252 +f 5032 4252 4992 +f 4308 3528 3488 +f 4308 3488 4252 +f 3528 2692 2668 +f 3528 2668 3488 +f 2692 1744 1728 +f 2692 1728 2668 +f 1727 2667 2635 +f 1727 2635 1687 +f 2667 3487 3471 +f 2667 3471 2635 +f 3487 4251 4235 +f 3487 4235 3471 +f 4251 4991 4943 +f 4251 4943 4235 +f 4991 5659 5619 +f 4991 5619 4943 +f 5659 6295 6247 +f 5659 6247 5619 +f 6295 6875 6851 +f 6295 6851 6247 +f 6875 7439 7423 +f 6875 7423 6851 +f 7439 7995 7955 +f 7439 7955 7423 +f 7995 8519 8471 +f 7995 8471 7955 +f 8519 9011 8931 +f 8519 8931 8471 +f 9011 9455 9399 +f 9011 9399 8931 +f 9455 9907 9875 +f 9455 9875 9399 +f 9907 10359 10279 +f 9907 10279 9875 +f 10359 10747 10699 +f 10359 10699 10279 +f 10747 11143 11095 +f 10747 11095 10699 +f 11143 11531 11443 +f 11143 11443 11095 +f 11531 11871 11823 +f 11531 11823 11443 +f 11871 12227 12147 +f 11871 12147 11823 +f 12227 12543 12487 +f 12227 12487 12147 +f 12543 12851 12799 +f 12543 12799 12487 +f 12851 13143 13075 +f 12851 13075 12799 +f 13143 13443 13343 +f 13143 13343 13075 +f 13443 13683 13603 +f 13443 13603 13343 +f 13683 13943 13839 +f 13683 13839 13603 +f 13943 14163 14075 +f 13943 14075 13839 +f 14163 14383 14295 +f 14163 14295 14075 +f 14383 14595 14499 +f 14383 14499 14295 +f 14595 14783 14703 +f 14595 14703 14499 +f 14783 14947 14891 +f 14783 14891 14703 +f 14947 15135 15043 +f 14947 15043 14891 +f 15135 15283 15191 +f 15135 15191 15043 +f 15283 15423 15323 +f 15283 15323 15191 +f 15423 15543 15455 +f 15423 15455 15323 +f 15543 15651 15583 +f 15543 15583 15455 +f 15651 15767 15675 +f 15651 15675 15583 +f 15767 15859 15759 +f 15767 15759 15675 +f 15859 15923 15823 +f 15859 15823 15759 +f 15923 15983 15883 +f 15923 15883 15823 +f 15983 16039 15947 +f 15983 15947 15883 +f 16039 16083 15975 +f 16039 15975 15947 +f 16083 16099 16015 +f 16083 16015 15975 +f 16099 16107 16023 +f 16099 16023 16015 +f 16107 16108 16024 +f 16107 16024 16023 +f 16108 16100 16016 +f 16108 16016 16024 +f 16100 16084 15976 +f 16100 15976 16016 +f 16084 16040 15948 +f 16084 15948 15976 +f 16040 15984 15884 +f 16040 15884 15948 +f 15984 15924 15824 +f 15984 15824 15884 +f 15924 15860 15760 +f 15924 15760 15824 +f 15860 15768 15676 +f 15860 15676 15760 +f 15768 15652 15584 +f 15768 15584 15676 +f 15652 15544 15456 +f 15652 15456 15584 +f 15544 15424 15324 +f 15544 15324 15456 +f 15424 15284 15192 +f 15424 15192 15324 +f 15284 15136 15044 +f 15284 15044 15192 +f 15136 14948 14892 +f 15136 14892 15044 +f 14948 14784 14704 +f 14948 14704 14892 +f 14784 14596 14500 +f 14784 14500 14704 +f 14596 14384 14296 +f 14596 14296 14500 +f 14384 14164 14076 +f 14384 14076 14296 +f 14164 13944 13840 +f 14164 13840 14076 +f 13944 13684 13604 +f 13944 13604 13840 +f 13684 13444 13344 +f 13684 13344 13604 +f 13444 13144 13076 +f 13444 13076 13344 +f 13144 12852 12800 +f 13144 12800 13076 +f 12852 12544 12488 +f 12852 12488 12800 +f 12544 12228 12148 +f 12544 12148 12488 +f 12228 11872 11824 +f 12228 11824 12148 +f 11872 11532 11444 +f 11872 11444 11824 +f 11532 11144 11096 +f 11532 11096 11444 +f 11144 10748 10700 +f 11144 10700 11096 +f 10748 10360 10280 +f 10748 10280 10700 +f 10360 9908 9876 +f 10360 9876 10280 +f 9908 9456 9400 +f 9908 9400 9876 +f 9456 9012 8932 +f 9456 8932 9400 +f 9012 8520 8472 +f 9012 8472 8932 +f 8520 7996 7956 +f 8520 7956 8472 +f 7996 7440 7424 +f 7996 7424 7956 +f 7440 6876 6852 +f 7440 6852 7424 +f 6876 6296 6248 +f 6876 6248 6852 +f 6296 5660 5620 +f 6296 5620 6248 +f 5660 4992 4944 +f 5660 4944 5620 +f 4992 4252 4236 +f 4992 4236 4944 +f 4252 3488 3472 +f 4252 3472 4236 +f 3488 2668 2636 +f 3488 2636 3472 +f 2668 1728 1688 +f 2668 1688 2636 +f 1687 2635 2603 +f 1687 2603 1671 +f 2635 3471 3439 +f 2635 3439 2603 +f 3471 4235 4187 +f 3471 4187 3439 +f 4235 4943 4919 +f 4235 4919 4187 +f 4943 5619 5547 +f 4943 5547 4919 +f 5619 6247 6199 +f 5619 6199 5547 +f 6247 6851 6803 +f 6247 6803 6199 +f 6851 7423 7359 +f 6851 7359 6803 +f 7423 7955 7875 +f 7423 7875 7359 +f 7955 8471 8391 +f 7955 8391 7875 +f 8471 8931 8875 +f 8471 8875 8391 +f 8931 9399 9367 +f 8931 9367 8875 +f 9399 9875 9795 +f 9399 9795 9367 +f 9875 10279 10231 +f 9875 10231 9795 +f 10279 10699 10635 +f 10279 10635 10231 +f 10699 11095 11031 +f 10699 11031 10635 +f 11095 11443 11391 +f 11095 11391 11031 +f 11443 11823 11739 +f 11443 11739 11391 +f 11823 12147 12071 +f 11823 12071 11739 +f 12147 12487 12387 +f 12147 12387 12071 +f 12487 12799 12679 +f 12487 12679 12387 +f 12799 13075 12955 +f 12799 12955 12679 +f 13075 13343 13239 +f 13075 13239 12955 +f 13343 13603 13507 +f 13343 13507 13239 +f 13603 13839 13759 +f 13603 13759 13507 +f 13839 14075 13995 +f 13839 13995 13759 +f 14075 14295 14211 +f 14075 14211 13995 +f 14295 14499 14415 +f 14295 14415 14211 +f 14499 14703 14611 +f 14499 14611 14415 +f 14703 14891 14767 +f 14703 14767 14611 +f 14891 15043 14939 +f 14891 14939 14767 +f 15043 15191 15087 +f 15043 15087 14939 +f 15191 15323 15231 +f 15191 15231 15087 +f 15323 15455 15355 +f 15323 15355 15231 +f 15455 15583 15463 +f 15455 15463 15355 +f 15583 15675 15559 +f 15583 15559 15463 +f 15675 15759 15643 +f 15675 15643 15559 +f 15759 15823 15727 +f 15759 15727 15643 +f 15823 15883 15783 +f 15823 15783 15727 +f 15883 15947 15839 +f 15883 15839 15783 +f 15947 15975 15875 +f 15947 15875 15839 +f 15975 16015 15891 +f 15975 15891 15875 +f 16015 16023 15915 +f 16015 15915 15891 +f 16023 16024 15916 +f 16023 15916 15915 +f 16024 16016 15892 +f 16024 15892 15916 +f 16016 15976 15876 +f 16016 15876 15892 +f 15976 15948 15840 +f 15976 15840 15876 +f 15948 15884 15784 +f 15948 15784 15840 +f 15884 15824 15728 +f 15884 15728 15784 +f 15824 15760 15644 +f 15824 15644 15728 +f 15760 15676 15560 +f 15760 15560 15644 +f 15676 15584 15464 +f 15676 15464 15560 +f 15584 15456 15356 +f 15584 15356 15464 +f 15456 15324 15232 +f 15456 15232 15356 +f 15324 15192 15088 +f 15324 15088 15232 +f 15192 15044 14940 +f 15192 14940 15088 +f 15044 14892 14768 +f 15044 14768 14940 +f 14892 14704 14612 +f 14892 14612 14768 +f 14704 14500 14416 +f 14704 14416 14612 +f 14500 14296 14212 +f 14500 14212 14416 +f 14296 14076 13996 +f 14296 13996 14212 +f 14076 13840 13760 +f 14076 13760 13996 +f 13840 13604 13508 +f 13840 13508 13760 +f 13604 13344 13240 +f 13604 13240 13508 +f 13344 13076 12956 +f 13344 12956 13240 +f 13076 12800 12680 +f 13076 12680 12956 +f 12800 12488 12388 +f 12800 12388 12680 +f 12488 12148 12072 +f 12488 12072 12388 +f 12148 11824 11740 +f 12148 11740 12072 +f 11824 11444 11392 +f 11824 11392 11740 +f 11444 11096 11032 +f 11444 11032 11392 +f 11096 10700 10636 +f 11096 10636 11032 +f 10700 10280 10232 +f 10700 10232 10636 +f 10280 9876 9796 +f 10280 9796 10232 +f 9876 9400 9368 +f 9876 9368 9796 +f 9400 8932 8876 +f 9400 8876 9368 +f 8932 8472 8392 +f 8932 8392 8876 +f 8472 7956 7876 +f 8472 7876 8392 +f 7956 7424 7360 +f 7956 7360 7876 +f 7424 6852 6804 +f 7424 6804 7360 +f 6852 6248 6200 +f 6852 6200 6804 +f 6248 5620 5548 +f 6248 5548 6200 +f 5620 4944 4920 +f 5620 4920 5548 +f 4944 4236 4188 +f 4944 4188 4920 +f 4236 3472 3440 +f 4236 3440 4188 +f 3472 2636 2604 +f 3472 2604 3440 +f 2636 1688 1672 +f 2636 1672 2604 +f 1671 2603 2587 +f 1671 2587 1655 +f 2603 3439 3407 +f 2603 3407 2587 +f 3439 4187 4171 +f 3439 4171 3407 +f 4187 4919 4855 +f 4187 4855 4171 +f 4919 5547 5523 +f 4919 5523 4855 +f 5547 6199 6127 +f 5547 6127 5523 +f 6199 6803 6723 +f 6199 6723 6127 +f 6803 7359 7295 +f 6803 7295 6723 +f 7359 7875 7835 +f 7359 7835 7295 +f 7875 8391 8335 +f 7875 8335 7835 +f 8391 8875 8843 +f 8391 8843 8335 +f 8875 9367 9287 +f 8875 9287 8843 +f 9367 9795 9739 +f 9367 9739 9287 +f 9795 10231 10159 +f 9795 10159 9739 +f 10231 10635 10559 +f 10231 10559 10159 +f 10635 11031 10923 +f 10635 10923 10559 +f 11031 11391 11287 +f 11031 11287 10923 +f 11391 11739 11627 +f 11391 11627 11287 +f 11739 12071 11975 +f 11739 11975 11627 +f 12071 12387 12259 +f 12071 12259 11975 +f 12387 12679 12583 +f 12387 12583 12259 +f 12679 12955 12875 +f 12679 12875 12583 +f 12955 13239 13151 +f 12955 13151 12875 +f 13239 13507 13435 +f 13239 13435 13151 +f 13507 13759 13659 +f 13507 13659 13435 +f 13759 13995 13879 +f 13759 13879 13659 +f 13995 14211 14099 +f 13995 14099 13879 +f 14211 14415 14287 +f 14211 14287 14099 +f 14415 14611 14491 +f 14415 14491 14287 +f 14611 14767 14659 +f 14611 14659 14491 +f 14767 14939 14823 +f 14767 14823 14659 +f 14939 15087 14971 +f 14939 14971 14823 +f 15087 15231 15119 +f 15087 15119 14971 +f 15231 15355 15239 +f 15231 15239 15119 +f 15355 15463 15347 +f 15355 15347 15239 +f 15463 15559 15447 +f 15463 15447 15347 +f 15559 15643 15527 +f 15559 15527 15447 +f 15643 15727 15603 +f 15643 15603 15527 +f 15727 15783 15683 +f 15727 15683 15603 +f 15783 15839 15719 +f 15783 15719 15683 +f 15839 15875 15751 +f 15839 15751 15719 +f 15875 15891 15775 +f 15875 15775 15751 +f 15891 15915 15799 +f 15891 15799 15775 +f 15915 15916 15800 +f 15915 15800 15799 +f 15916 15892 15776 +f 15916 15776 15800 +f 15892 15876 15752 +f 15892 15752 15776 +f 15876 15840 15720 +f 15876 15720 15752 +f 15840 15784 15684 +f 15840 15684 15720 +f 15784 15728 15604 +f 15784 15604 15684 +f 15728 15644 15528 +f 15728 15528 15604 +f 15644 15560 15448 +f 15644 15448 15528 +f 15560 15464 15348 +f 15560 15348 15448 +f 15464 15356 15240 +f 15464 15240 15348 +f 15356 15232 15120 +f 15356 15120 15240 +f 15232 15088 14972 +f 15232 14972 15120 +f 15088 14940 14824 +f 15088 14824 14972 +f 14940 14768 14660 +f 14940 14660 14824 +f 14768 14612 14492 +f 14768 14492 14660 +f 14612 14416 14288 +f 14612 14288 14492 +f 14416 14212 14100 +f 14416 14100 14288 +f 14212 13996 13880 +f 14212 13880 14100 +f 13996 13760 13660 +f 13996 13660 13880 +f 13760 13508 13436 +f 13760 13436 13660 +f 13508 13240 13152 +f 13508 13152 13436 +f 13240 12956 12876 +f 13240 12876 13152 +f 12956 12680 12584 +f 12956 12584 12876 +f 12680 12388 12260 +f 12680 12260 12584 +f 12388 12072 11976 +f 12388 11976 12260 +f 12072 11740 11628 +f 12072 11628 11976 +f 11740 11392 11288 +f 11740 11288 11628 +f 11392 11032 10924 +f 11392 10924 11288 +f 11032 10636 10560 +f 11032 10560 10924 +f 10636 10232 10160 +f 10636 10160 10560 +f 10232 9796 9740 +f 10232 9740 10160 +f 9796 9368 9288 +f 9796 9288 9740 +f 9368 8876 8844 +f 9368 8844 9288 +f 8876 8392 8336 +f 8876 8336 8844 +f 8392 7876 7836 +f 8392 7836 8336 +f 7876 7360 7296 +f 7876 7296 7836 +f 7360 6804 6724 +f 7360 6724 7296 +f 6804 6200 6128 +f 6804 6128 6724 +f 6200 5548 5524 +f 6200 5524 6128 +f 5548 4920 4856 +f 5548 4856 5524 +f 4920 4188 4172 +f 4920 4172 4856 +f 4188 3440 3408 +f 4188 3408 4172 +f 3440 2604 2588 +f 3440 2588 3408 +f 2604 1672 1656 +f 2604 1656 2588 +f 1655 2587 2539 +f 1655 2539 1623 +f 2587 3407 3359 +f 2587 3359 2539 +f 3407 4171 4131 +f 3407 4131 3359 +f 4171 4855 4807 +f 4171 4807 4131 +f 4855 5523 5499 +f 4855 5499 4807 +f 5523 6127 6103 +f 5523 6103 5499 +f 6127 6723 6683 +f 6127 6683 6103 +f 6723 7295 7239 +f 6723 7239 6683 +f 7295 7835 7779 +f 7295 7779 7239 +f 7835 8335 8295 +f 7835 8295 7779 +f 8335 8843 8747 +f 8335 8747 8295 +f 8843 9287 9219 +f 8843 9219 8747 +f 9287 9739 9639 +f 9287 9639 9219 +f 9739 10159 10059 +f 9739 10059 9639 +f 10159 10559 10423 +f 10159 10423 10059 +f 10559 10923 10819 +f 10559 10819 10423 +f 10923 11287 11183 +f 10923 11183 10819 +f 11287 11627 11539 +f 11287 11539 11183 +f 11627 11975 11863 +f 11627 11863 11539 +f 11975 12259 12195 +f 11975 12195 11863 +f 12259 12583 12495 +f 12259 12495 12195 +f 12583 12875 12759 +f 12583 12759 12495 +f 12875 13151 13059 +f 12875 13059 12759 +f 13151 13435 13279 +f 13151 13279 13059 +f 13435 13659 13515 +f 13435 13515 13279 +f 13659 13879 13775 +f 13659 13775 13515 +f 13879 14099 13987 +f 13879 13987 13775 +f 14099 14287 14171 +f 14099 14171 13987 +f 14287 14491 14359 +f 14287 14359 14171 +f 14491 14659 14531 +f 14491 14531 14359 +f 14659 14823 14711 +f 14659 14711 14531 +f 14823 14971 14847 +f 14823 14847 14711 +f 14971 15119 14987 +f 14971 14987 14847 +f 15119 15239 15111 +f 15119 15111 14987 +f 15239 15347 15215 +f 15239 15215 15111 +f 15347 15447 15299 +f 15347 15299 15215 +f 15447 15527 15403 +f 15447 15403 15299 +f 15527 15603 15471 +f 15527 15471 15403 +f 15603 15683 15535 +f 15603 15535 15471 +f 15683 15719 15595 +f 15683 15595 15535 +f 15719 15751 15619 +f 15719 15619 15595 +f 15751 15775 15635 +f 15751 15635 15619 +f 15775 15799 15667 +f 15775 15667 15635 +f 15799 15800 15668 +f 15799 15668 15667 +f 15800 15776 15636 +f 15800 15636 15668 +f 15776 15752 15620 +f 15776 15620 15636 +f 15752 15720 15596 +f 15752 15596 15620 +f 15720 15684 15536 +f 15720 15536 15596 +f 15684 15604 15472 +f 15684 15472 15536 +f 15604 15528 15404 +f 15604 15404 15472 +f 15528 15448 15300 +f 15528 15300 15404 +f 15448 15348 15216 +f 15448 15216 15300 +f 15348 15240 15112 +f 15348 15112 15216 +f 15240 15120 14988 +f 15240 14988 15112 +f 15120 14972 14848 +f 15120 14848 14988 +f 14972 14824 14712 +f 14972 14712 14848 +f 14824 14660 14532 +f 14824 14532 14712 +f 14660 14492 14360 +f 14660 14360 14532 +f 14492 14288 14172 +f 14492 14172 14360 +f 14288 14100 13988 +f 14288 13988 14172 +f 14100 13880 13776 +f 14100 13776 13988 +f 13880 13660 13516 +f 13880 13516 13776 +f 13660 13436 13280 +f 13660 13280 13516 +f 13436 13152 13060 +f 13436 13060 13280 +f 13152 12876 12760 +f 13152 12760 13060 +f 12876 12584 12496 +f 12876 12496 12760 +f 12584 12260 12196 +f 12584 12196 12496 +f 12260 11976 11864 +f 12260 11864 12196 +f 11976 11628 11540 +f 11976 11540 11864 +f 11628 11288 11184 +f 11628 11184 11540 +f 11288 10924 10820 +f 11288 10820 11184 +f 10924 10560 10424 +f 10924 10424 10820 +f 10560 10160 10060 +f 10560 10060 10424 +f 10160 9740 9640 +f 10160 9640 10060 +f 9740 9288 9220 +f 9740 9220 9640 +f 9288 8844 8748 +f 9288 8748 9220 +f 8844 8336 8296 +f 8844 8296 8748 +f 8336 7836 7780 +f 8336 7780 8296 +f 7836 7296 7240 +f 7836 7240 7780 +f 7296 6724 6684 +f 7296 6684 7240 +f 6724 6128 6104 +f 6724 6104 6684 +f 6128 5524 5500 +f 6128 5500 6104 +f 5524 4856 4808 +f 5524 4808 5500 +f 4856 4172 4132 +f 4856 4132 4808 +f 4172 3408 3360 +f 4172 3360 4132 +f 3408 2588 2540 +f 3408 2540 3360 +f 2588 1656 1624 +f 2588 1624 2540 +f 1623 2539 2491 +f 1623 2491 1591 +f 2539 3359 3327 +f 2539 3327 2491 +f 3359 4131 4059 +f 3359 4059 3327 +f 4131 4807 4759 +f 4131 4759 4059 +f 4807 5499 5395 +f 4807 5395 4759 +f 5499 6103 6055 +f 5499 6055 5395 +f 6103 6683 6643 +f 6103 6643 6055 +f 6683 7239 7191 +f 6683 7191 6643 +f 7239 7779 7723 +f 7239 7723 7191 +f 7779 8295 8207 +f 7779 8207 7723 +f 8295 8747 8679 +f 8295 8679 8207 +f 8747 9219 9091 +f 8747 9091 8679 +f 9219 9639 9543 +f 9219 9543 9091 +f 9639 10059 9931 +f 9639 9931 9543 +f 10059 10423 10327 +f 10059 10327 9931 +f 10423 10819 10715 +f 10423 10715 10327 +f 10819 11183 11087 +f 10819 11087 10715 +f 11183 11539 11435 +f 11183 11435 11087 +f 11539 11863 11763 +f 11539 11763 11435 +f 11863 12195 12063 +f 11863 12063 11763 +f 12195 12495 12347 +f 12195 12347 12063 +f 12495 12759 12639 +f 12495 12639 12347 +f 12759 13059 12899 +f 12759 12899 12639 +f 13059 13279 13167 +f 13059 13167 12899 +f 13279 13515 13427 +f 13279 13427 13167 +f 13515 13775 13635 +f 13515 13635 13427 +f 13775 13987 13823 +f 13775 13823 13635 +f 13987 14171 14027 +f 13987 14027 13823 +f 14171 14359 14231 +f 14171 14231 14027 +f 14359 14531 14407 +f 14359 14407 14231 +f 14531 14711 14563 +f 14531 14563 14407 +f 14711 14847 14719 +f 14711 14719 14563 +f 14847 14987 14839 +f 14847 14839 14719 +f 14987 15111 14963 +f 14987 14963 14839 +f 15111 15215 15079 +f 15111 15079 14963 +f 15215 15299 15159 +f 15215 15159 15079 +f 15299 15403 15267 +f 15299 15267 15159 +f 15403 15471 15331 +f 15403 15331 15267 +f 15471 15535 15395 +f 15471 15395 15331 +f 15535 15595 15439 +f 15535 15439 15395 +f 15595 15619 15487 +f 15595 15487 15439 +f 15619 15635 15503 +f 15619 15503 15487 +f 15635 15667 15511 +f 15635 15511 15503 +f 15667 15668 15512 +f 15667 15512 15511 +f 15668 15636 15504 +f 15668 15504 15512 +f 15636 15620 15488 +f 15636 15488 15504 +f 15620 15596 15440 +f 15620 15440 15488 +f 15596 15536 15396 +f 15596 15396 15440 +f 15536 15472 15332 +f 15536 15332 15396 +f 15472 15404 15268 +f 15472 15268 15332 +f 15404 15300 15160 +f 15404 15160 15268 +f 15300 15216 15080 +f 15300 15080 15160 +f 15216 15112 14964 +f 15216 14964 15080 +f 15112 14988 14840 +f 15112 14840 14964 +f 14988 14848 14720 +f 14988 14720 14840 +f 14848 14712 14564 +f 14848 14564 14720 +f 14712 14532 14408 +f 14712 14408 14564 +f 14532 14360 14232 +f 14532 14232 14408 +f 14360 14172 14028 +f 14360 14028 14232 +f 14172 13988 13824 +f 14172 13824 14028 +f 13988 13776 13636 +f 13988 13636 13824 +f 13776 13516 13428 +f 13776 13428 13636 +f 13516 13280 13168 +f 13516 13168 13428 +f 13280 13060 12900 +f 13280 12900 13168 +f 13060 12760 12640 +f 13060 12640 12900 +f 12760 12496 12348 +f 12760 12348 12640 +f 12496 12196 12064 +f 12496 12064 12348 +f 12196 11864 11764 +f 12196 11764 12064 +f 11864 11540 11436 +f 11864 11436 11764 +f 11540 11184 11088 +f 11540 11088 11436 +f 11184 10820 10716 +f 11184 10716 11088 +f 10820 10424 10328 +f 10820 10328 10716 +f 10424 10060 9932 +f 10424 9932 10328 +f 10060 9640 9544 +f 10060 9544 9932 +f 9640 9220 9092 +f 9640 9092 9544 +f 9220 8748 8680 +f 9220 8680 9092 +f 8748 8296 8208 +f 8748 8208 8680 +f 8296 7780 7724 +f 8296 7724 8208 +f 7780 7240 7192 +f 7780 7192 7724 +f 7240 6684 6644 +f 7240 6644 7192 +f 6684 6104 6056 +f 6684 6056 6644 +f 6104 5500 5396 +f 6104 5396 6056 +f 5500 4808 4760 +f 5500 4760 5396 +f 4808 4132 4060 +f 4808 4060 4760 +f 4132 3360 3328 +f 4132 3328 4060 +f 3360 2540 2492 +f 3360 2492 3328 +f 2540 1624 1592 +f 2540 1592 2492 +f 1591 2491 2475 +f 1591 2475 1575 +f 2491 3327 3287 +f 2491 3287 2475 +f 3327 4059 4027 +f 3327 4027 3287 +f 4059 4759 4743 +f 4059 4743 4027 +f 4759 5395 5363 +f 4759 5363 4743 +f 5395 6055 5983 +f 5395 5983 5363 +f 6055 6643 6555 +f 6055 6555 5983 +f 6643 7191 7119 +f 6643 7119 6555 +f 7191 7723 7615 +f 7191 7615 7119 +f 7723 8207 8083 +f 7723 8083 7615 +f 8207 8679 8543 +f 8207 8543 8083 +f 8679 9091 9003 +f 8679 9003 8543 +f 9091 9543 9407 +f 9091 9407 9003 +f 9543 9931 9851 +f 9543 9851 9407 +f 9931 10327 10239 +f 9931 10239 9851 +f 10327 10715 10627 +f 10327 10627 10239 +f 10715 11087 10963 +f 10715 10963 10627 +f 11087 11435 11303 +f 11087 11303 10963 +f 11435 11763 11603 +f 11435 11603 11303 +f 11763 12063 11919 +f 11763 11919 11603 +f 12063 12347 12235 +f 12063 12235 11919 +f 12347 12639 12519 +f 12347 12519 12235 +f 12639 12899 12775 +f 12639 12775 12519 +f 12899 13167 13035 +f 12899 13035 12775 +f 13167 13427 13247 +f 13167 13247 13035 +f 13427 13635 13475 +f 13427 13475 13247 +f 13635 13823 13703 +f 13635 13703 13475 +f 13823 14027 13903 +f 13823 13903 13703 +f 14027 14231 14083 +f 14027 14083 13903 +f 14231 14407 14255 +f 14231 14255 14083 +f 14407 14563 14423 +f 14407 14423 14255 +f 14563 14719 14539 +f 14563 14539 14423 +f 14719 14839 14695 +f 14719 14695 14539 +f 14839 14963 14807 +f 14839 14807 14695 +f 14963 15079 14915 +f 14963 14915 14807 +f 15079 15159 15027 +f 15079 15027 14915 +f 15159 15267 15103 +f 15159 15103 15027 +f 15267 15331 15175 +f 15267 15175 15103 +f 15331 15395 15247 +f 15331 15247 15175 +f 15395 15439 15291 +f 15395 15291 15247 +f 15439 15487 15307 +f 15439 15307 15291 +f 15487 15503 15339 +f 15487 15339 15307 +f 15503 15511 15363 +f 15503 15363 15339 +f 15511 15512 15364 +f 15511 15364 15363 +f 15512 15504 15340 +f 15512 15340 15364 +f 15504 15488 15308 +f 15504 15308 15340 +f 15488 15440 15292 +f 15488 15292 15308 +f 15440 15396 15248 +f 15440 15248 15292 +f 15396 15332 15176 +f 15396 15176 15248 +f 15332 15268 15104 +f 15332 15104 15176 +f 15268 15160 15028 +f 15268 15028 15104 +f 15160 15080 14916 +f 15160 14916 15028 +f 15080 14964 14808 +f 15080 14808 14916 +f 14964 14840 14696 +f 14964 14696 14808 +f 14840 14720 14540 +f 14840 14540 14696 +f 14720 14564 14424 +f 14720 14424 14540 +f 14564 14408 14256 +f 14564 14256 14424 +f 14408 14232 14084 +f 14408 14084 14256 +f 14232 14028 13904 +f 14232 13904 14084 +f 14028 13824 13704 +f 14028 13704 13904 +f 13824 13636 13476 +f 13824 13476 13704 +f 13636 13428 13248 +f 13636 13248 13476 +f 13428 13168 13036 +f 13428 13036 13248 +f 13168 12900 12776 +f 13168 12776 13036 +f 12900 12640 12520 +f 12900 12520 12776 +f 12640 12348 12236 +f 12640 12236 12520 +f 12348 12064 11920 +f 12348 11920 12236 +f 12064 11764 11604 +f 12064 11604 11920 +f 11764 11436 11304 +f 11764 11304 11604 +f 11436 11088 10964 +f 11436 10964 11304 +f 11088 10716 10628 +f 11088 10628 10964 +f 10716 10328 10240 +f 10716 10240 10628 +f 10328 9932 9852 +f 10328 9852 10240 +f 9932 9544 9408 +f 9932 9408 9852 +f 9544 9092 9004 +f 9544 9004 9408 +f 9092 8680 8544 +f 9092 8544 9004 +f 8680 8208 8084 +f 8680 8084 8544 +f 8208 7724 7616 +f 8208 7616 8084 +f 7724 7192 7120 +f 7724 7120 7616 +f 7192 6644 6556 +f 7192 6556 7120 +f 6644 6056 5984 +f 6644 5984 6556 +f 6056 5396 5364 +f 6056 5364 5984 +f 5396 4760 4744 +f 5396 4744 5364 +f 4760 4060 4028 +f 4760 4028 4744 +f 4060 3328 3288 +f 4060 3288 4028 +f 3328 2492 2476 +f 3328 2476 3288 +f 2492 1592 1576 +f 2492 1576 2476 +f 1575 2475 2459 +f 1575 2459 1559 +f 2475 3287 3255 +f 2475 3255 2459 +f 3287 4027 3995 +f 3287 3995 3255 +f 4027 4743 4663 +f 4027 4663 3995 +f 4743 5363 5315 +f 4743 5315 4663 +f 5363 5983 5919 +f 5363 5919 5315 +f 5983 6555 6499 +f 5983 6499 5919 +f 6555 7119 7027 +f 6555 7027 6499 +f 7119 7615 7495 +f 7119 7495 7027 +f 7615 8083 7987 +f 7615 7987 7495 +f 8083 8543 8439 +f 8083 8439 7987 +f 8543 9003 8883 +f 8543 8883 8439 +f 9003 9407 9327 +f 9003 9327 8883 +f 9407 9851 9747 +f 9407 9747 9327 +f 9851 10239 10131 +f 9851 10131 9747 +f 10239 10627 10471 +f 10239 10471 10131 +f 10627 10963 10835 +f 10627 10835 10471 +f 10963 11303 11159 +f 10963 11159 10835 +f 11303 11603 11499 +f 11303 11499 11159 +f 11603 11919 11815 +f 11603 11815 11499 +f 11919 12235 12095 +f 11919 12095 11815 +f 12235 12519 12371 +f 12235 12371 12095 +f 12519 12775 12631 +f 12519 12631 12371 +f 12775 13035 12883 +f 12775 12883 12631 +f 13035 13247 13119 +f 13035 13119 12883 +f 13247 13475 13335 +f 13247 13335 13119 +f 13475 13703 13531 +f 13475 13531 13335 +f 13703 13903 13735 +f 13703 13735 13531 +f 13903 14083 13927 +f 13903 13927 13735 +f 14083 14255 14091 +f 14083 14091 13927 +f 14255 14423 14247 +f 14255 14247 14091 +f 14423 14539 14399 +f 14423 14399 14247 +f 14539 14695 14523 +f 14539 14523 14399 +f 14695 14807 14643 +f 14695 14643 14523 +f 14807 14915 14751 +f 14807 14751 14643 +f 14915 15027 14863 +f 14915 14863 14751 +f 15027 15103 14931 +f 15027 14931 14863 +f 15103 15175 15011 +f 15103 15011 14931 +f 15175 15247 15067 +f 15175 15067 15011 +f 15247 15291 15127 +f 15247 15127 15067 +f 15291 15307 15143 +f 15291 15143 15127 +f 15307 15339 15167 +f 15307 15167 15143 +f 15339 15363 15183 +f 15339 15183 15167 +f 15363 15364 15184 +f 15363 15184 15183 +f 15364 15340 15168 +f 15364 15168 15184 +f 15340 15308 15144 +f 15340 15144 15168 +f 15308 15292 15128 +f 15308 15128 15144 +f 15292 15248 15068 +f 15292 15068 15128 +f 15248 15176 15012 +f 15248 15012 15068 +f 15176 15104 14932 +f 15176 14932 15012 +f 15104 15028 14864 +f 15104 14864 14932 +f 15028 14916 14752 +f 15028 14752 14864 +f 14916 14808 14644 +f 14916 14644 14752 +f 14808 14696 14524 +f 14808 14524 14644 +f 14696 14540 14400 +f 14696 14400 14524 +f 14540 14424 14248 +f 14540 14248 14400 +f 14424 14256 14092 +f 14424 14092 14248 +f 14256 14084 13928 +f 14256 13928 14092 +f 14084 13904 13736 +f 14084 13736 13928 +f 13904 13704 13532 +f 13904 13532 13736 +f 13704 13476 13336 +f 13704 13336 13532 +f 13476 13248 13120 +f 13476 13120 13336 +f 13248 13036 12884 +f 13248 12884 13120 +f 13036 12776 12632 +f 13036 12632 12884 +f 12776 12520 12372 +f 12776 12372 12632 +f 12520 12236 12096 +f 12520 12096 12372 +f 12236 11920 11816 +f 12236 11816 12096 +f 11920 11604 11500 +f 11920 11500 11816 +f 11604 11304 11160 +f 11604 11160 11500 +f 11304 10964 10836 +f 11304 10836 11160 +f 10964 10628 10472 +f 10964 10472 10836 +f 10628 10240 10132 +f 10628 10132 10472 +f 10240 9852 9748 +f 10240 9748 10132 +f 9852 9408 9328 +f 9852 9328 9748 +f 9408 9004 8884 +f 9408 8884 9328 +f 9004 8544 8440 +f 9004 8440 8884 +f 8544 8084 7988 +f 8544 7988 8440 +f 8084 7616 7496 +f 8084 7496 7988 +f 7616 7120 7028 +f 7616 7028 7496 +f 7120 6556 6500 +f 7120 6500 7028 +f 6556 5984 5920 +f 6556 5920 6500 +f 5984 5364 5316 +f 5984 5316 5920 +f 5364 4744 4664 +f 5364 4664 5316 +f 4744 4028 3996 +f 4744 3996 4664 +f 4028 3288 3256 +f 4028 3256 3996 +f 3288 2476 2460 +f 3288 2460 3256 +f 2476 1576 1560 +f 2476 1560 2460 +f 1559 2459 2411 +f 1559 2411 1527 +f 2459 3255 3191 +f 2459 3191 2411 +f 3255 3995 3923 +f 3255 3923 3191 +f 3995 4663 4631 +f 3995 4631 3923 +f 4663 5315 5267 +f 4663 5267 4631 +f 5315 5919 5871 +f 5315 5871 5267 +f 5919 6499 6391 +f 5919 6391 5871 +f 6499 7027 6891 +f 6499 6891 6391 +f 7027 7495 7415 +f 7027 7415 6891 +f 7495 7987 7859 +f 7495 7859 7415 +f 7987 8439 8343 +f 7987 8343 7859 +f 8439 8883 8795 +f 8439 8795 8343 +f 8883 9327 9227 +f 8883 9227 8795 +f 9327 9747 9599 +f 9327 9599 9227 +f 9747 10131 9955 +f 9747 9955 9599 +f 10131 10471 10343 +f 10131 10343 9955 +f 10471 10835 10683 +f 10471 10683 10343 +f 10835 11159 11047 +f 10835 11047 10683 +f 11159 11499 11367 +f 11159 11367 11047 +f 11499 11815 11643 +f 11499 11643 11367 +f 11815 12095 11927 +f 11815 11927 11643 +f 12095 12371 12219 +f 12095 12219 11927 +f 12371 12631 12479 +f 12371 12479 12219 +f 12631 12883 12711 +f 12631 12711 12479 +f 12883 13119 12939 +f 12883 12939 12711 +f 13119 13335 13183 +f 13119 13183 12939 +f 13335 13531 13367 +f 13335 13367 13183 +f 13531 13735 13571 +f 13531 13571 13367 +f 13735 13927 13751 +f 13735 13751 13571 +f 13927 14091 13919 +f 13927 13919 13751 +f 14091 14247 14067 +f 14091 14067 13919 +f 14247 14399 14223 +f 14247 14223 14067 +f 14399 14523 14327 +f 14399 14327 14223 +f 14523 14643 14467 +f 14523 14467 14327 +f 14643 14751 14579 +f 14643 14579 14467 +f 14751 14863 14679 +f 14751 14679 14579 +f 14863 14931 14743 +f 14863 14743 14679 +f 14931 15011 14831 +f 14931 14831 14743 +f 15011 15067 14899 +f 15011 14899 14831 +f 15067 15127 14923 +f 15067 14923 14899 +f 15127 15143 14955 +f 15127 14955 14923 +f 15143 15167 14995 +f 15143 14995 14955 +f 15167 15183 15003 +f 15167 15003 14995 +f 15183 15184 15004 +f 15183 15004 15003 +f 15184 15168 14996 +f 15184 14996 15004 +f 15168 15144 14956 +f 15168 14956 14996 +f 15144 15128 14924 +f 15144 14924 14956 +f 15128 15068 14900 +f 15128 14900 14924 +f 15068 15012 14832 +f 15068 14832 14900 +f 15012 14932 14744 +f 15012 14744 14832 +f 14932 14864 14680 +f 14932 14680 14744 +f 14864 14752 14580 +f 14864 14580 14680 +f 14752 14644 14468 +f 14752 14468 14580 +f 14644 14524 14328 +f 14644 14328 14468 +f 14524 14400 14224 +f 14524 14224 14328 +f 14400 14248 14068 +f 14400 14068 14224 +f 14248 14092 13920 +f 14248 13920 14068 +f 14092 13928 13752 +f 14092 13752 13920 +f 13928 13736 13572 +f 13928 13572 13752 +f 13736 13532 13368 +f 13736 13368 13572 +f 13532 13336 13184 +f 13532 13184 13368 +f 13336 13120 12940 +f 13336 12940 13184 +f 13120 12884 12712 +f 13120 12712 12940 +f 12884 12632 12480 +f 12884 12480 12712 +f 12632 12372 12220 +f 12632 12220 12480 +f 12372 12096 11928 +f 12372 11928 12220 +f 12096 11816 11644 +f 12096 11644 11928 +f 11816 11500 11368 +f 11816 11368 11644 +f 11500 11160 11048 +f 11500 11048 11368 +f 11160 10836 10684 +f 11160 10684 11048 +f 10836 10472 10344 +f 10836 10344 10684 +f 10472 10132 9956 +f 10472 9956 10344 +f 10132 9748 9600 +f 10132 9600 9956 +f 9748 9328 9228 +f 9748 9228 9600 +f 9328 8884 8796 +f 9328 8796 9228 +f 8884 8440 8344 +f 8884 8344 8796 +f 8440 7988 7860 +f 8440 7860 8344 +f 7988 7496 7416 +f 7988 7416 7860 +f 7496 7028 6892 +f 7496 6892 7416 +f 7028 6500 6392 +f 7028 6392 6892 +f 6500 5920 5872 +f 6500 5872 6392 +f 5920 5316 5268 +f 5920 5268 5872 +f 5316 4664 4632 +f 5316 4632 5268 +f 4664 3996 3924 +f 4664 3924 4632 +f 3996 3256 3192 +f 3996 3192 3924 +f 3256 2460 2412 +f 3256 2412 3192 +f 2460 1560 1528 +f 2460 1528 2412 +f 1527 2411 2379 +f 1527 2379 1503 +f 2411 3191 3159 +f 2411 3159 2379 +f 3191 3923 3899 +f 3191 3899 3159 +f 3923 4631 4567 +f 3923 4567 3899 +f 4631 5267 5203 +f 4631 5203 4567 +f 5267 5871 5755 +f 5267 5755 5203 +f 5871 6391 6271 +f 5871 6271 5755 +f 6391 6891 6795 +f 6391 6795 6271 +f 6891 7415 7287 +f 6891 7287 6795 +f 7415 7859 7787 +f 7415 7787 7287 +f 7859 8343 8247 +f 7859 8247 7787 +f 8343 8795 8687 +f 8343 8687 8247 +f 8795 9227 9067 +f 8795 9067 8687 +f 9227 9599 9447 +f 9227 9447 9067 +f 9599 9955 9835 +f 9599 9835 9447 +f 9955 10343 10199 +f 9955 10199 9835 +f 10343 10683 10567 +f 10343 10567 10199 +f 10683 11047 10867 +f 10683 10867 10567 +f 11047 11367 11175 +f 11047 11175 10867 +f 11367 11643 11491 +f 11367 11491 11175 +f 11643 11927 11799 +f 11643 11799 11491 +f 11927 12219 12039 +f 11927 12039 11799 +f 12219 12479 12291 +f 12219 12291 12039 +f 12479 12711 12535 +f 12479 12535 12291 +f 12711 12939 12783 +f 12711 12783 12535 +f 12939 13183 12979 +f 12939 12979 12783 +f 13183 13367 13199 +f 13183 13199 12979 +f 13367 13571 13407 +f 13367 13407 13199 +f 13571 13751 13563 +f 13571 13563 13407 +f 13751 13919 13727 +f 13751 13727 13563 +f 13919 14067 13887 +f 13919 13887 13727 +f 14067 14223 14019 +f 14067 14019 13887 +f 14223 14327 14155 +f 14223 14155 14019 +f 14327 14467 14279 +f 14327 14279 14155 +f 14467 14579 14375 +f 14467 14375 14279 +f 14579 14679 14475 +f 14579 14475 14375 +f 14679 14743 14555 +f 14679 14555 14475 +f 14743 14831 14627 +f 14743 14627 14555 +f 14831 14899 14687 +f 14831 14687 14627 +f 14899 14923 14735 +f 14899 14735 14687 +f 14923 14955 14759 +f 14923 14759 14735 +f 14955 14995 14791 +f 14955 14791 14759 +f 14995 15003 14799 +f 14995 14799 14791 +f 15003 15004 14800 +f 15003 14800 14799 +f 15004 14996 14792 +f 15004 14792 14800 +f 14996 14956 14760 +f 14996 14760 14792 +f 14956 14924 14736 +f 14956 14736 14760 +f 14924 14900 14688 +f 14924 14688 14736 +f 14900 14832 14628 +f 14900 14628 14688 +f 14832 14744 14556 +f 14832 14556 14628 +f 14744 14680 14476 +f 14744 14476 14556 +f 14680 14580 14376 +f 14680 14376 14476 +f 14580 14468 14280 +f 14580 14280 14376 +f 14468 14328 14156 +f 14468 14156 14280 +f 14328 14224 14020 +f 14328 14020 14156 +f 14224 14068 13888 +f 14224 13888 14020 +f 14068 13920 13728 +f 14068 13728 13888 +f 13920 13752 13564 +f 13920 13564 13728 +f 13752 13572 13408 +f 13752 13408 13564 +f 13572 13368 13200 +f 13572 13200 13408 +f 13368 13184 12980 +f 13368 12980 13200 +f 13184 12940 12784 +f 13184 12784 12980 +f 12940 12712 12536 +f 12940 12536 12784 +f 12712 12480 12292 +f 12712 12292 12536 +f 12480 12220 12040 +f 12480 12040 12292 +f 12220 11928 11800 +f 12220 11800 12040 +f 11928 11644 11492 +f 11928 11492 11800 +f 11644 11368 11176 +f 11644 11176 11492 +f 11368 11048 10868 +f 11368 10868 11176 +f 11048 10684 10568 +f 11048 10568 10868 +f 10684 10344 10200 +f 10684 10200 10568 +f 10344 9956 9836 +f 10344 9836 10200 +f 9956 9600 9448 +f 9956 9448 9836 +f 9600 9228 9068 +f 9600 9068 9448 +f 9228 8796 8688 +f 9228 8688 9068 +f 8796 8344 8248 +f 8796 8248 8688 +f 8344 7860 7788 +f 8344 7788 8248 +f 7860 7416 7288 +f 7860 7288 7788 +f 7416 6892 6796 +f 7416 6796 7288 +f 6892 6392 6272 +f 6892 6272 6796 +f 6392 5872 5756 +f 6392 5756 6272 +f 5872 5268 5204 +f 5872 5204 5756 +f 5268 4632 4568 +f 5268 4568 5204 +f 4632 3924 3900 +f 4632 3900 4568 +f 3924 3192 3160 +f 3924 3160 3900 +f 3192 2412 2380 +f 3192 2380 3160 +f 2412 1528 1504 +f 2412 1504 2380 +f 1503 2379 2339 +f 1503 2339 1479 +f 2379 3159 3127 +f 2379 3127 2339 +f 3159 3899 3827 +f 3159 3827 3127 +f 3899 4567 4503 +f 3899 4503 3827 +f 4567 5203 5111 +f 4567 5111 4503 +f 5203 5755 5635 +f 5203 5635 5111 +f 5755 6271 6159 +f 5755 6159 5635 +f 6271 6795 6691 +f 6271 6691 6159 +f 6795 7287 7215 +f 6795 7215 6691 +f 7287 7787 7667 +f 7287 7667 7215 +f 7787 8247 8115 +f 7787 8115 7667 +f 8247 8687 8511 +f 8247 8511 8115 +f 8687 9067 8923 +f 8687 8923 8511 +f 9067 9447 9319 +f 9067 9319 8923 +f 9447 9835 9707 +f 9447 9707 9319 +f 9835 10199 10051 +f 9835 10051 9707 +f 10199 10567 10383 +f 10199 10383 10051 +f 10567 10867 10707 +f 10567 10707 10383 +f 10867 11175 11039 +f 10867 11039 10707 +f 11175 11491 11335 +f 11175 11335 11039 +f 11491 11799 11579 +f 11491 11579 11335 +f 11799 12039 11855 +f 11799 11855 11579 +f 12039 12291 12135 +f 12039 12135 11855 +f 12291 12535 12355 +f 12291 12355 12135 +f 12535 12783 12575 +f 12535 12575 12355 +f 12783 12979 12827 +f 12783 12827 12575 +f 12979 13199 12995 +f 12979 12995 12827 +f 13199 13407 13191 +f 13199 13191 12995 +f 13407 13563 13359 +f 13407 13359 13191 +f 13563 13727 13523 +f 13563 13523 13359 +f 13727 13887 13695 +f 13727 13695 13523 +f 13887 14019 13815 +f 13887 13815 13695 +f 14019 14155 13963 +f 14019 13963 13815 +f 14155 14279 14059 +f 14155 14059 13963 +f 14279 14375 14179 +f 14279 14179 14059 +f 14375 14475 14271 +f 14375 14271 14179 +f 14475 14555 14343 +f 14475 14343 14271 +f 14555 14627 14439 +f 14555 14439 14343 +f 14627 14687 14483 +f 14627 14483 14439 +f 14687 14735 14515 +f 14687 14515 14483 +f 14735 14759 14547 +f 14735 14547 14515 +f 14759 14791 14587 +f 14759 14587 14547 +f 14791 14799 14603 +f 14791 14603 14587 +f 14799 14800 14604 +f 14799 14604 14603 +f 14800 14792 14588 +f 14800 14588 14604 +f 14792 14760 14548 +f 14792 14548 14588 +f 14760 14736 14516 +f 14760 14516 14548 +f 14736 14688 14484 +f 14736 14484 14516 +f 14688 14628 14440 +f 14688 14440 14484 +f 14628 14556 14344 +f 14628 14344 14440 +f 14556 14476 14272 +f 14556 14272 14344 +f 14476 14376 14180 +f 14476 14180 14272 +f 14376 14280 14060 +f 14376 14060 14180 +f 14280 14156 13964 +f 14280 13964 14060 +f 14156 14020 13816 +f 14156 13816 13964 +f 14020 13888 13696 +f 14020 13696 13816 +f 13888 13728 13524 +f 13888 13524 13696 +f 13728 13564 13360 +f 13728 13360 13524 +f 13564 13408 13192 +f 13564 13192 13360 +f 13408 13200 12996 +f 13408 12996 13192 +f 13200 12980 12828 +f 13200 12828 12996 +f 12980 12784 12576 +f 12980 12576 12828 +f 12784 12536 12356 +f 12784 12356 12576 +f 12536 12292 12136 +f 12536 12136 12356 +f 12292 12040 11856 +f 12292 11856 12136 +f 12040 11800 11580 +f 12040 11580 11856 +f 11800 11492 11336 +f 11800 11336 11580 +f 11492 11176 11040 +f 11492 11040 11336 +f 11176 10868 10708 +f 11176 10708 11040 +f 10868 10568 10384 +f 10868 10384 10708 +f 10568 10200 10052 +f 10568 10052 10384 +f 10200 9836 9708 +f 10200 9708 10052 +f 9836 9448 9320 +f 9836 9320 9708 +f 9448 9068 8924 +f 9448 8924 9320 +f 9068 8688 8512 +f 9068 8512 8924 +f 8688 8248 8116 +f 8688 8116 8512 +f 8248 7788 7668 +f 8248 7668 8116 +f 7788 7288 7216 +f 7788 7216 7668 +f 7288 6796 6692 +f 7288 6692 7216 +f 6796 6272 6160 +f 6796 6160 6692 +f 6272 5756 5636 +f 6272 5636 6160 +f 5756 5204 5112 +f 5756 5112 5636 +f 5204 4568 4504 +f 5204 4504 5112 +f 4568 3900 3828 +f 4568 3828 4504 +f 3900 3160 3128 +f 3900 3128 3828 +f 3160 2380 2340 +f 3160 2340 3128 +f 2380 1504 1480 +f 2380 1480 2340 +f 1479 2339 2291 +f 1479 2291 1423 +f 2339 3127 3079 +f 2339 3079 2291 +f 3127 3827 3795 +f 3127 3795 3079 +f 3827 4503 4471 +f 3827 4471 3795 +f 4503 5111 4983 +f 4503 4983 4471 +f 5111 5635 5531 +f 5111 5531 4983 +f 5635 6159 6087 +f 5635 6087 5531 +f 6159 6691 6595 +f 6159 6595 6087 +f 6691 7215 7103 +f 6691 7103 6595 +f 7215 7667 7527 +f 7215 7527 7103 +f 7667 8115 7963 +f 7667 7963 7527 +f 8115 8511 8383 +f 8115 8383 7963 +f 8511 8923 8803 +f 8511 8803 8383 +f 8923 9319 9171 +f 8923 9171 8803 +f 9319 9707 9527 +f 9319 9527 9171 +f 9707 10051 9883 +f 9707 9883 9527 +f 10051 10383 10223 +f 10051 10223 9883 +f 10383 10707 10551 +f 10383 10551 10223 +f 10707 11039 10843 +f 10707 10843 10551 +f 11039 11335 11119 +f 11039 11119 10843 +f 11335 11579 11419 +f 11335 11419 11119 +f 11579 11855 11675 +f 11579 11675 11419 +f 11855 12135 11911 +f 11855 11911 11675 +f 12135 12355 12171 +f 12135 12171 11911 +f 12355 12575 12411 +f 12355 12411 12171 +f 12575 12827 12591 +f 12575 12591 12411 +f 12827 12995 12819 +f 12827 12819 12591 +f 12995 13191 12971 +f 12995 12971 12819 +f 13191 13359 13159 +f 13191 13159 12971 +f 13359 13523 13319 +f 13359 13319 13159 +f 13523 13695 13459 +f 13523 13459 13319 +f 13695 13815 13619 +f 13695 13619 13459 +f 13815 13963 13743 +f 13815 13743 13619 +f 13963 14059 13847 +f 13963 13847 13743 +f 14059 14179 13971 +f 14059 13971 13847 +f 14179 14271 14035 +f 14179 14035 13971 +f 14271 14343 14131 +f 14271 14131 14035 +f 14343 14439 14203 +f 14343 14203 14131 +f 14439 14483 14263 +f 14439 14263 14203 +f 14483 14515 14311 +f 14483 14311 14263 +f 14515 14547 14319 +f 14515 14319 14311 +f 14547 14587 14351 +f 14547 14351 14319 +f 14587 14603 14367 +f 14587 14367 14351 +f 14603 14604 14368 +f 14603 14368 14367 +f 14604 14588 14352 +f 14604 14352 14368 +f 14588 14548 14320 +f 14588 14320 14352 +f 14548 14516 14312 +f 14548 14312 14320 +f 14516 14484 14264 +f 14516 14264 14312 +f 14484 14440 14204 +f 14484 14204 14264 +f 14440 14344 14132 +f 14440 14132 14204 +f 14344 14272 14036 +f 14344 14036 14132 +f 14272 14180 13972 +f 14272 13972 14036 +f 14180 14060 13848 +f 14180 13848 13972 +f 14060 13964 13744 +f 14060 13744 13848 +f 13964 13816 13620 +f 13964 13620 13744 +f 13816 13696 13460 +f 13816 13460 13620 +f 13696 13524 13320 +f 13696 13320 13460 +f 13524 13360 13160 +f 13524 13160 13320 +f 13360 13192 12972 +f 13360 12972 13160 +f 13192 12996 12820 +f 13192 12820 12972 +f 12996 12828 12592 +f 12996 12592 12820 +f 12828 12576 12412 +f 12828 12412 12592 +f 12576 12356 12172 +f 12576 12172 12412 +f 12356 12136 11912 +f 12356 11912 12172 +f 12136 11856 11676 +f 12136 11676 11912 +f 11856 11580 11420 +f 11856 11420 11676 +f 11580 11336 11120 +f 11580 11120 11420 +f 11336 11040 10844 +f 11336 10844 11120 +f 11040 10708 10552 +f 11040 10552 10844 +f 10708 10384 10224 +f 10708 10224 10552 +f 10384 10052 9884 +f 10384 9884 10224 +f 10052 9708 9528 +f 10052 9528 9884 +f 9708 9320 9172 +f 9708 9172 9528 +f 9320 8924 8804 +f 9320 8804 9172 +f 8924 8512 8384 +f 8924 8384 8804 +f 8512 8116 7964 +f 8512 7964 8384 +f 8116 7668 7528 +f 8116 7528 7964 +f 7668 7216 7104 +f 7668 7104 7528 +f 7216 6692 6596 +f 7216 6596 7104 +f 6692 6160 6088 +f 6692 6088 6596 +f 6160 5636 5532 +f 6160 5532 6088 +f 5636 5112 4984 +f 5636 4984 5532 +f 5112 4504 4472 +f 5112 4472 4984 +f 4504 3828 3796 +f 4504 3796 4472 +f 3828 3128 3080 +f 3828 3080 3796 +f 3128 2340 2292 +f 3128 2292 3080 +f 2340 1480 1424 +f 2340 1424 2292 +f 1423 2291 2259 +f 1423 2259 1407 +f 2291 3079 3031 +f 2291 3031 2259 +f 3079 3795 3731 +f 3079 3731 3031 +f 3795 4471 4331 +f 3795 4331 3731 +f 4471 4983 4887 +f 4471 4887 4331 +f 4983 5531 5427 +f 4983 5427 4887 +f 5531 6087 5975 +f 5531 5975 5427 +f 6087 6595 6507 +f 6087 6507 5975 +f 6595 7103 6931 +f 6595 6931 6507 +f 7103 7527 7391 +f 7103 7391 6931 +f 7527 7963 7811 +f 7527 7811 7391 +f 7963 8383 8263 +f 7963 8263 7811 +f 8383 8803 8623 +f 8383 8623 8263 +f 8803 9171 8995 +f 8803 8995 8623 +f 9171 9527 9375 +f 9171 9375 8995 +f 9527 9883 9731 +f 9527 9731 9375 +f 9883 10223 10043 +f 9883 10043 9731 +f 10223 10551 10351 +f 10223 10351 10043 +f 10551 10843 10651 +f 10551 10651 10351 +f 10843 11119 10947 +f 10843 10947 10651 +f 11119 11419 11207 +f 11119 11207 10947 +f 11419 11675 11475 +f 11419 11475 11207 +f 11675 11911 11723 +f 11675 11723 11475 +f 11911 12171 11967 +f 11911 11967 11723 +f 12171 12411 12179 +f 12171 12179 11967 +f 12411 12591 12395 +f 12411 12395 12179 +f 12591 12819 12567 +f 12591 12567 12395 +f 12819 12971 12767 +f 12819 12767 12567 +f 12971 13159 12923 +f 12971 12923 12767 +f 13159 13319 13091 +f 13159 13091 12923 +f 13319 13459 13231 +f 13319 13231 13091 +f 13459 13619 13399 +f 13459 13399 13231 +f 13619 13743 13499 +f 13619 13499 13399 +f 13743 13847 13627 +f 13743 13627 13499 +f 13847 13971 13719 +f 13847 13719 13627 +f 13971 14035 13799 +f 13971 13799 13719 +f 14035 14131 13895 +f 14035 13895 13799 +f 14131 14203 13979 +f 14131 13979 13895 +f 14203 14263 14011 +f 14203 14011 13979 +f 14263 14311 14043 +f 14263 14043 14011 +f 14311 14319 14107 +f 14311 14107 14043 +f 14319 14351 14123 +f 14319 14123 14107 +f 14351 14367 14139 +f 14351 14139 14123 +f 14367 14368 14140 +f 14367 14140 14139 +f 14368 14352 14124 +f 14368 14124 14140 +f 14352 14320 14108 +f 14352 14108 14124 +f 14320 14312 14044 +f 14320 14044 14108 +f 14312 14264 14012 +f 14312 14012 14044 +f 14264 14204 13980 +f 14264 13980 14012 +f 14204 14132 13896 +f 14204 13896 13980 +f 14132 14036 13800 +f 14132 13800 13896 +f 14036 13972 13720 +f 14036 13720 13800 +f 13972 13848 13628 +f 13972 13628 13720 +f 13848 13744 13500 +f 13848 13500 13628 +f 13744 13620 13400 +f 13744 13400 13500 +f 13620 13460 13232 +f 13620 13232 13400 +f 13460 13320 13092 +f 13460 13092 13232 +f 13320 13160 12924 +f 13320 12924 13092 +f 13160 12972 12768 +f 13160 12768 12924 +f 12972 12820 12568 +f 12972 12568 12768 +f 12820 12592 12396 +f 12820 12396 12568 +f 12592 12412 12180 +f 12592 12180 12396 +f 12412 12172 11968 +f 12412 11968 12180 +f 12172 11912 11724 +f 12172 11724 11968 +f 11912 11676 11476 +f 11912 11476 11724 +f 11676 11420 11208 +f 11676 11208 11476 +f 11420 11120 10948 +f 11420 10948 11208 +f 11120 10844 10652 +f 11120 10652 10948 +f 10844 10552 10352 +f 10844 10352 10652 +f 10552 10224 10044 +f 10552 10044 10352 +f 10224 9884 9732 +f 10224 9732 10044 +f 9884 9528 9376 +f 9884 9376 9732 +f 9528 9172 8996 +f 9528 8996 9376 +f 9172 8804 8624 +f 9172 8624 8996 +f 8804 8384 8264 +f 8804 8264 8624 +f 8384 7964 7812 +f 8384 7812 8264 +f 7964 7528 7392 +f 7964 7392 7812 +f 7528 7104 6932 +f 7528 6932 7392 +f 7104 6596 6508 +f 7104 6508 6932 +f 6596 6088 5976 +f 6596 5976 6508 +f 6088 5532 5428 +f 6088 5428 5976 +f 5532 4984 4888 +f 5532 4888 5428 +f 4984 4472 4332 +f 4984 4332 4888 +f 4472 3796 3732 +f 4472 3732 4332 +f 3796 3080 3032 +f 3796 3032 3732 +f 3080 2292 2260 +f 3080 2260 3032 +f 2292 1424 1408 +f 2292 1408 2260 +f 1407 2259 2227 +f 1407 2227 1391 +f 2259 3031 2983 +f 2259 2983 2227 +f 3031 3731 3699 +f 3031 3699 2983 +f 3731 4331 4211 +f 3731 4211 3699 +f 4331 4887 4775 +f 4331 4775 4211 +f 4887 5427 5347 +f 4887 5347 4775 +f 5427 5975 5903 +f 5427 5903 5347 +f 5975 6507 6335 +f 5975 6335 5903 +f 6507 6931 6787 +f 6507 6787 6335 +f 6931 7391 7247 +f 6931 7247 6787 +f 7391 7811 7707 +f 7391 7707 7247 +f 7811 8263 8059 +f 7811 8059 7707 +f 8263 8623 8463 +f 8263 8463 8059 +f 8623 8995 8851 +f 8623 8851 8463 +f 8995 9375 9203 +f 8995 9203 8851 +f 9375 9731 9511 +f 9375 9511 9203 +f 9731 10043 9859 +f 9731 9859 9511 +f 10043 10351 10175 +f 10043 10175 9859 +f 10351 10651 10447 +f 10351 10447 10175 +f 10651 10947 10739 +f 10651 10739 10447 +f 10947 11207 11023 +f 10947 11023 10739 +f 11207 11475 11247 +f 11207 11247 11023 +f 11475 11723 11523 +f 11475 11523 11247 +f 11723 11967 11747 +f 11723 11747 11523 +f 11967 12179 11959 +f 11967 11959 11747 +f 12179 12395 12163 +f 12179 12163 11959 +f 12395 12567 12339 +f 12395 12339 12163 +f 12567 12767 12527 +f 12567 12527 12339 +f 12767 12923 12687 +f 12767 12687 12527 +f 12923 13091 12859 +f 12923 12859 12687 +f 13091 13231 13003 +f 13091 13003 12859 +f 13231 13399 13135 +f 13231 13135 13003 +f 13399 13499 13263 +f 13399 13263 13135 +f 13499 13627 13375 +f 13499 13375 13263 +f 13627 13719 13467 +f 13627 13467 13375 +f 13719 13799 13555 +f 13719 13555 13467 +f 13799 13895 13651 +f 13799 13651 13555 +f 13895 13979 13711 +f 13895 13711 13651 +f 13979 14011 13783 +f 13979 13783 13711 +f 14011 14043 13791 +f 14011 13791 13783 +f 14043 14107 13831 +f 14043 13831 13791 +f 14107 14123 13863 +f 14107 13863 13831 +f 14123 14139 13871 +f 14123 13871 13863 +f 14139 14140 13872 +f 14139 13872 13871 +f 14140 14124 13864 +f 14140 13864 13872 +f 14124 14108 13832 +f 14124 13832 13864 +f 14108 14044 13792 +f 14108 13792 13832 +f 14044 14012 13784 +f 14044 13784 13792 +f 14012 13980 13712 +f 14012 13712 13784 +f 13980 13896 13652 +f 13980 13652 13712 +f 13896 13800 13556 +f 13896 13556 13652 +f 13800 13720 13468 +f 13800 13468 13556 +f 13720 13628 13376 +f 13720 13376 13468 +f 13628 13500 13264 +f 13628 13264 13376 +f 13500 13400 13136 +f 13500 13136 13264 +f 13400 13232 13004 +f 13400 13004 13136 +f 13232 13092 12860 +f 13232 12860 13004 +f 13092 12924 12688 +f 13092 12688 12860 +f 12924 12768 12528 +f 12924 12528 12688 +f 12768 12568 12340 +f 12768 12340 12528 +f 12568 12396 12164 +f 12568 12164 12340 +f 12396 12180 11960 +f 12396 11960 12164 +f 12180 11968 11748 +f 12180 11748 11960 +f 11968 11724 11524 +f 11968 11524 11748 +f 11724 11476 11248 +f 11724 11248 11524 +f 11476 11208 11024 +f 11476 11024 11248 +f 11208 10948 10740 +f 11208 10740 11024 +f 10948 10652 10448 +f 10948 10448 10740 +f 10652 10352 10176 +f 10652 10176 10448 +f 10352 10044 9860 +f 10352 9860 10176 +f 10044 9732 9512 +f 10044 9512 9860 +f 9732 9376 9204 +f 9732 9204 9512 +f 9376 8996 8852 +f 9376 8852 9204 +f 8996 8624 8464 +f 8996 8464 8852 +f 8624 8264 8060 +f 8624 8060 8464 +f 8264 7812 7708 +f 8264 7708 8060 +f 7812 7392 7248 +f 7812 7248 7708 +f 7392 6932 6788 +f 7392 6788 7248 +f 6932 6508 6336 +f 6932 6336 6788 +f 6508 5976 5904 +f 6508 5904 6336 +f 5976 5428 5348 +f 5976 5348 5904 +f 5428 4888 4776 +f 5428 4776 5348 +f 4888 4332 4212 +f 4888 4212 4776 +f 4332 3732 3700 +f 4332 3700 4212 +f 3732 3032 2984 +f 3732 2984 3700 +f 3032 2260 2228 +f 3032 2228 2984 +f 2260 1408 1392 +f 2260 1392 2228 +f 1391 2227 2179 +f 1391 2179 1359 +f 2227 2983 2935 +f 2227 2935 2179 +f 2983 3699 3599 +f 2983 3599 2935 +f 3699 4211 4139 +f 3699 4139 3599 +f 4211 4775 4711 +f 4211 4711 4139 +f 4775 5347 5259 +f 4775 5259 4711 +f 5347 5903 5739 +f 5347 5739 5259 +f 5903 6335 6191 +f 5903 6191 5739 +f 6335 6787 6659 +f 6335 6659 6191 +f 6787 7247 7127 +f 6787 7127 6659 +f 7247 7707 7511 +f 7247 7511 7127 +f 7707 8059 7891 +f 7707 7891 7511 +f 8059 8463 8311 +f 8059 8311 7891 +f 8463 8851 8671 +f 8463 8671 8311 +f 8851 9203 8987 +f 8851 8987 8671 +f 9203 9511 9351 +f 9203 9351 8987 +f 9511 9859 9663 +f 9511 9663 9351 +f 9859 10175 9939 +f 9859 9939 9663 +f 10175 10447 10255 +f 10175 10255 9939 +f 10447 10739 10519 +f 10447 10519 10255 +f 10739 11023 10771 +f 10739 10771 10519 +f 11023 11247 11063 +f 11023 11063 10771 +f 11247 11523 11271 +f 11247 11271 11063 +f 11523 11747 11515 +f 11523 11515 11271 +f 11747 11959 11715 +f 11747 11715 11515 +f 11959 12163 11903 +f 11959 11903 11715 +f 12163 12339 12119 +f 12163 12119 11903 +f 12339 12527 12275 +f 12339 12275 12119 +f 12527 12687 12459 +f 12527 12459 12275 +f 12687 12859 12599 +f 12687 12599 12459 +f 12859 13003 12751 +f 12859 12751 12599 +f 13003 13135 12891 +f 13003 12891 12751 +f 13135 13263 13011 +f 13135 13011 12891 +f 13263 13375 13127 +f 13263 13127 13011 +f 13375 13467 13215 +f 13375 13215 13127 +f 13467 13555 13295 +f 13467 13295 13215 +f 13555 13651 13383 +f 13555 13383 13295 +f 13651 13711 13451 +f 13651 13451 13383 +f 13711 13783 13491 +f 13711 13491 13451 +f 13783 13791 13539 +f 13783 13539 13491 +f 13791 13831 13579 +f 13791 13579 13539 +f 13831 13863 13587 +f 13831 13587 13579 +f 13863 13871 13611 +f 13863 13611 13587 +f 13871 13872 13612 +f 13871 13612 13611 +f 13872 13864 13588 +f 13872 13588 13612 +f 13864 13832 13580 +f 13864 13580 13588 +f 13832 13792 13540 +f 13832 13540 13580 +f 13792 13784 13492 +f 13792 13492 13540 +f 13784 13712 13452 +f 13784 13452 13492 +f 13712 13652 13384 +f 13712 13384 13452 +f 13652 13556 13296 +f 13652 13296 13384 +f 13556 13468 13216 +f 13556 13216 13296 +f 13468 13376 13128 +f 13468 13128 13216 +f 13376 13264 13012 +f 13376 13012 13128 +f 13264 13136 12892 +f 13264 12892 13012 +f 13136 13004 12752 +f 13136 12752 12892 +f 13004 12860 12600 +f 13004 12600 12752 +f 12860 12688 12460 +f 12860 12460 12600 +f 12688 12528 12276 +f 12688 12276 12460 +f 12528 12340 12120 +f 12528 12120 12276 +f 12340 12164 11904 +f 12340 11904 12120 +f 12164 11960 11716 +f 12164 11716 11904 +f 11960 11748 11516 +f 11960 11516 11716 +f 11748 11524 11272 +f 11748 11272 11516 +f 11524 11248 11064 +f 11524 11064 11272 +f 11248 11024 10772 +f 11248 10772 11064 +f 11024 10740 10520 +f 11024 10520 10772 +f 10740 10448 10256 +f 10740 10256 10520 +f 10448 10176 9940 +f 10448 9940 10256 +f 10176 9860 9664 +f 10176 9664 9940 +f 9860 9512 9352 +f 9860 9352 9664 +f 9512 9204 8988 +f 9512 8988 9352 +f 9204 8852 8672 +f 9204 8672 8988 +f 8852 8464 8312 +f 8852 8312 8672 +f 8464 8060 7892 +f 8464 7892 8312 +f 8060 7708 7512 +f 8060 7512 7892 +f 7708 7248 7128 +f 7708 7128 7512 +f 7248 6788 6660 +f 7248 6660 7128 +f 6788 6336 6192 +f 6788 6192 6660 +f 6336 5904 5740 +f 6336 5740 6192 +f 5904 5348 5260 +f 5904 5260 5740 +f 5348 4776 4712 +f 5348 4712 5260 +f 4776 4212 4140 +f 4776 4140 4712 +f 4212 3700 3600 +f 4212 3600 4140 +f 3700 2984 2936 +f 3700 2936 3600 +f 2984 2228 2180 +f 2984 2180 2936 +f 2228 1392 1360 +f 2228 1360 2180 +f 1359 2179 2147 +f 1359 2147 1327 +f 2179 2935 2895 +f 2179 2895 2147 +f 2935 3599 3463 +f 2935 3463 2895 +f 3599 4139 4019 +f 3599 4019 3463 +f 4139 4711 4599 +f 4139 4599 4019 +f 4711 5259 5171 +f 4711 5171 4599 +f 5259 5739 5563 +f 5259 5563 5171 +f 5739 6191 6079 +f 5739 6079 5563 +f 6191 6659 6539 +f 6191 6539 6079 +f 6659 7127 6923 +f 6659 6923 6539 +f 7127 7511 7319 +f 7127 7319 6923 +f 7511 7891 7755 +f 7511 7755 7319 +f 7891 8311 8123 +f 7891 8123 7755 +f 8311 8671 8455 +f 8311 8455 8123 +f 8671 8987 8827 +f 8671 8827 8455 +f 8987 9351 9131 +f 8987 9131 8827 +f 9351 9663 9431 +f 9351 9431 9131 +f 9663 9939 9763 +f 9663 9763 9431 +f 9939 10255 10003 +f 9939 10003 9763 +f 10255 10519 10287 +f 10255 10287 10003 +f 10519 10771 10591 +f 10519 10591 10287 +f 10771 11063 10787 +f 10771 10787 10591 +f 11063 11271 11055 +f 11063 11055 10787 +f 11271 11515 11239 +f 11271 11239 11055 +f 11515 11715 11459 +f 11515 11459 11239 +f 11715 11903 11659 +f 11715 11659 11459 +f 11903 12119 11847 +f 11903 11847 11659 +f 12119 12275 12015 +f 12119 12015 11847 +f 12275 12459 12203 +f 12275 12203 12015 +f 12459 12599 12323 +f 12459 12323 12203 +f 12599 12751 12503 +f 12599 12503 12323 +f 12751 12891 12623 +f 12751 12623 12503 +f 12891 13011 12735 +f 12891 12735 12623 +f 13011 13127 12843 +f 13011 12843 12735 +f 13127 13215 12931 +f 13127 12931 12843 +f 13215 13295 13043 +f 13215 13043 12931 +f 13295 13383 13107 +f 13295 13107 13043 +f 13383 13451 13175 +f 13383 13175 13107 +f 13451 13491 13223 +f 13451 13223 13175 +f 13491 13539 13255 +f 13491 13255 13223 +f 13539 13579 13287 +f 13539 13287 13255 +f 13579 13587 13303 +f 13579 13303 13287 +f 13587 13611 13327 +f 13587 13327 13303 +f 13611 13612 13328 +f 13611 13328 13327 +f 13612 13588 13304 +f 13612 13304 13328 +f 13588 13580 13288 +f 13588 13288 13304 +f 13580 13540 13256 +f 13580 13256 13288 +f 13540 13492 13224 +f 13540 13224 13256 +f 13492 13452 13176 +f 13492 13176 13224 +f 13452 13384 13108 +f 13452 13108 13176 +f 13384 13296 13044 +f 13384 13044 13108 +f 13296 13216 12932 +f 13296 12932 13044 +f 13216 13128 12844 +f 13216 12844 12932 +f 13128 13012 12736 +f 13128 12736 12844 +f 13012 12892 12624 +f 13012 12624 12736 +f 12892 12752 12504 +f 12892 12504 12624 +f 12752 12600 12324 +f 12752 12324 12504 +f 12600 12460 12204 +f 12600 12204 12324 +f 12460 12276 12016 +f 12460 12016 12204 +f 12276 12120 11848 +f 12276 11848 12016 +f 12120 11904 11660 +f 12120 11660 11848 +f 11904 11716 11460 +f 11904 11460 11660 +f 11716 11516 11240 +f 11716 11240 11460 +f 11516 11272 11056 +f 11516 11056 11240 +f 11272 11064 10788 +f 11272 10788 11056 +f 11064 10772 10592 +f 11064 10592 10788 +f 10772 10520 10288 +f 10772 10288 10592 +f 10520 10256 10004 +f 10520 10004 10288 +f 10256 9940 9764 +f 10256 9764 10004 +f 9940 9664 9432 +f 9940 9432 9764 +f 9664 9352 9132 +f 9664 9132 9432 +f 9352 8988 8828 +f 9352 8828 9132 +f 8988 8672 8456 +f 8988 8456 8828 +f 8672 8312 8124 +f 8672 8124 8456 +f 8312 7892 7756 +f 8312 7756 8124 +f 7892 7512 7320 +f 7892 7320 7756 +f 7512 7128 6924 +f 7512 6924 7320 +f 7128 6660 6540 +f 7128 6540 6924 +f 6660 6192 6080 +f 6660 6080 6540 +f 6192 5740 5564 +f 6192 5564 6080 +f 5740 5260 5172 +f 5740 5172 5564 +f 5260 4712 4600 +f 5260 4600 5172 +f 4712 4140 4020 +f 4712 4020 4600 +f 4140 3600 3464 +f 4140 3464 4020 +f 3600 2936 2896 +f 3600 2896 3464 +f 2936 2180 2148 +f 2936 2148 2896 +f 2180 1360 1328 +f 2180 1328 2148 +f 1327 2147 2115 +f 1327 2115 1311 +f 2147 2895 2847 +f 2147 2847 2115 +f 2895 3463 3351 +f 2895 3351 2847 +f 3463 4019 3931 +f 3463 3931 3351 +f 4019 4599 4519 +f 4019 4519 3931 +f 4599 5171 4975 +f 4599 4975 4519 +f 5171 5563 5475 +f 5171 5475 4975 +f 5563 6079 5935 +f 5563 5935 5475 +f 6079 6539 6359 +f 6079 6359 5935 +f 6539 6923 6739 +f 6539 6739 6359 +f 6923 7319 7199 +f 6923 7199 6739 +f 7319 7755 7559 +f 7319 7559 7199 +f 7755 8123 7907 +f 7755 7907 7559 +f 8123 8455 8287 +f 8123 8287 7907 +f 8455 8827 8583 +f 8455 8583 8287 +f 8827 9131 8907 +f 8827 8907 8583 +f 9131 9431 9255 +f 9131 9255 8907 +f 9431 9763 9487 +f 9431 9487 9255 +f 9763 10003 9787 +f 9763 9787 9487 +f 10003 10287 10083 +f 10003 10083 9787 +f 10287 10591 10303 +f 10287 10303 10083 +f 10591 10787 10583 +f 10591 10583 10303 +f 10787 11055 10763 +f 10787 10763 10583 +f 11055 11239 10999 +f 11055 10999 10763 +f 11239 11459 11191 +f 11239 11191 10999 +f 11459 11659 11411 +f 11459 11411 11191 +f 11659 11847 11555 +f 11659 11555 11411 +f 11847 12015 11779 +f 11847 11779 11555 +f 12015 12203 11895 +f 12015 11895 11779 +f 12203 12323 12079 +f 12203 12079 11895 +f 12323 12503 12211 +f 12323 12211 12079 +f 12503 12623 12307 +f 12503 12307 12211 +f 12623 12735 12451 +f 12623 12451 12307 +f 12735 12843 12551 +f 12735 12551 12451 +f 12843 12931 12647 +f 12843 12647 12551 +f 12931 13043 12727 +f 12931 12727 12647 +f 13043 13107 12835 +f 13043 12835 12727 +f 13107 13175 12867 +f 13107 12867 12835 +f 13175 13223 12915 +f 13175 12915 12867 +f 13223 13255 12947 +f 13223 12947 12915 +f 13255 13287 12987 +f 13255 12987 12947 +f 13287 13303 13019 +f 13287 13019 12987 +f 13303 13327 13051 +f 13303 13051 13019 +f 13327 13328 13052 +f 13327 13052 13051 +f 13328 13304 13020 +f 13328 13020 13052 +f 13304 13288 12988 +f 13304 12988 13020 +f 13288 13256 12948 +f 13288 12948 12988 +f 13256 13224 12916 +f 13256 12916 12948 +f 13224 13176 12868 +f 13224 12868 12916 +f 13176 13108 12836 +f 13176 12836 12868 +f 13108 13044 12728 +f 13108 12728 12836 +f 13044 12932 12648 +f 13044 12648 12728 +f 12932 12844 12552 +f 12932 12552 12648 +f 12844 12736 12452 +f 12844 12452 12552 +f 12736 12624 12308 +f 12736 12308 12452 +f 12624 12504 12212 +f 12624 12212 12308 +f 12504 12324 12080 +f 12504 12080 12212 +f 12324 12204 11896 +f 12324 11896 12080 +f 12204 12016 11780 +f 12204 11780 11896 +f 12016 11848 11556 +f 12016 11556 11780 +f 11848 11660 11412 +f 11848 11412 11556 +f 11660 11460 11192 +f 11660 11192 11412 +f 11460 11240 11000 +f 11460 11000 11192 +f 11240 11056 10764 +f 11240 10764 11000 +f 11056 10788 10584 +f 11056 10584 10764 +f 10788 10592 10304 +f 10788 10304 10584 +f 10592 10288 10084 +f 10592 10084 10304 +f 10288 10004 9788 +f 10288 9788 10084 +f 10004 9764 9488 +f 10004 9488 9788 +f 9764 9432 9256 +f 9764 9256 9488 +f 9432 9132 8908 +f 9432 8908 9256 +f 9132 8828 8584 +f 9132 8584 8908 +f 8828 8456 8288 +f 8828 8288 8584 +f 8456 8124 7908 +f 8456 7908 8288 +f 8124 7756 7560 +f 8124 7560 7908 +f 7756 7320 7200 +f 7756 7200 7560 +f 7320 6924 6740 +f 7320 6740 7200 +f 6924 6540 6360 +f 6924 6360 6740 +f 6540 6080 5936 +f 6540 5936 6360 +f 6080 5564 5476 +f 6080 5476 5936 +f 5564 5172 4976 +f 5564 4976 5476 +f 5172 4600 4520 +f 5172 4520 4976 +f 4600 4020 3932 +f 4600 3932 4520 +f 4020 3464 3352 +f 4020 3352 3932 +f 3464 2896 2848 +f 3464 2848 3352 +f 2896 2148 2116 +f 2896 2116 2848 +f 2148 1328 1312 +f 2148 1312 2116 +f 1311 2115 2067 +f 1311 2067 1263 +f 2115 2847 2799 +f 2115 2799 2067 +f 2847 3351 3271 +f 2847 3271 2799 +f 3351 3931 3867 +f 3351 3867 3271 +f 3931 4519 4443 +f 3931 4443 3867 +f 4519 4975 4831 +f 4519 4831 4443 +f 4975 5475 5331 +f 4975 5331 4831 +f 5475 5935 5811 +f 5475 5811 5331 +f 5935 6359 6175 +f 5935 6175 5811 +f 6359 6739 6635 +f 6359 6635 6175 +f 6739 7199 7003 +f 6739 7003 6635 +f 7199 7559 7335 +f 7199 7335 7003 +f 7559 7907 7739 +f 7559 7739 7335 +f 7907 8287 8027 +f 7907 8027 7739 +f 8287 8583 8375 +f 8287 8375 8027 +f 8583 8907 8719 +f 8583 8719 8375 +f 8907 9255 8963 +f 8907 8963 8719 +f 9255 9487 9279 +f 9255 9279 8963 +f 9487 9787 9559 +f 9487 9559 9279 +f 9787 10083 9803 +f 9787 9803 9559 +f 10083 10303 10075 +f 10083 10075 9803 +f 10303 10583 10271 +f 10303 10271 10075 +f 10583 10763 10511 +f 10583 10511 10271 +f 10763 10999 10731 +f 10763 10731 10511 +f 10999 11191 10931 +f 10999 10931 10731 +f 11191 11411 11111 +f 11191 11111 10931 +f 11411 11555 11311 +f 11411 11311 11111 +f 11555 11779 11467 +f 11555 11467 11311 +f 11779 11895 11619 +f 11779 11619 11467 +f 11895 12079 11807 +f 11895 11807 11619 +f 12079 12211 11887 +f 12079 11887 11807 +f 12211 12307 12023 +f 12211 12023 11887 +f 12307 12451 12155 +f 12307 12155 12023 +f 12451 12551 12251 +f 12451 12251 12155 +f 12551 12647 12331 +f 12551 12331 12251 +f 12647 12727 12435 +f 12647 12435 12331 +f 12727 12835 12511 +f 12727 12511 12435 +f 12835 12867 12559 +f 12835 12559 12511 +f 12867 12915 12615 +f 12867 12615 12559 +f 12915 12947 12655 +f 12915 12655 12615 +f 12947 12987 12671 +f 12947 12671 12655 +f 12987 13019 12695 +f 12987 12695 12671 +f 13019 13051 12719 +f 13019 12719 12695 +f 13051 13052 12720 +f 13051 12720 12719 +f 13052 13020 12696 +f 13052 12696 12720 +f 13020 12988 12672 +f 13020 12672 12696 +f 12988 12948 12656 +f 12988 12656 12672 +f 12948 12916 12616 +f 12948 12616 12656 +f 12916 12868 12560 +f 12916 12560 12616 +f 12868 12836 12512 +f 12868 12512 12560 +f 12836 12728 12436 +f 12836 12436 12512 +f 12728 12648 12332 +f 12728 12332 12436 +f 12648 12552 12252 +f 12648 12252 12332 +f 12552 12452 12156 +f 12552 12156 12252 +f 12452 12308 12024 +f 12452 12024 12156 +f 12308 12212 11888 +f 12308 11888 12024 +f 12212 12080 11808 +f 12212 11808 11888 +f 12080 11896 11620 +f 12080 11620 11808 +f 11896 11780 11468 +f 11896 11468 11620 +f 11780 11556 11312 +f 11780 11312 11468 +f 11556 11412 11112 +f 11556 11112 11312 +f 11412 11192 10932 +f 11412 10932 11112 +f 11192 11000 10732 +f 11192 10732 10932 +f 11000 10764 10512 +f 11000 10512 10732 +f 10764 10584 10272 +f 10764 10272 10512 +f 10584 10304 10076 +f 10584 10076 10272 +f 10304 10084 9804 +f 10304 9804 10076 +f 10084 9788 9560 +f 10084 9560 9804 +f 9788 9488 9280 +f 9788 9280 9560 +f 9488 9256 8964 +f 9488 8964 9280 +f 9256 8908 8720 +f 9256 8720 8964 +f 8908 8584 8376 +f 8908 8376 8720 +f 8584 8288 8028 +f 8584 8028 8376 +f 8288 7908 7740 +f 8288 7740 8028 +f 7908 7560 7336 +f 7908 7336 7740 +f 7560 7200 7004 +f 7560 7004 7336 +f 7200 6740 6636 +f 7200 6636 7004 +f 6740 6360 6176 +f 6740 6176 6636 +f 6360 5936 5812 +f 6360 5812 6176 +f 5936 5476 5332 +f 5936 5332 5812 +f 5476 4976 4832 +f 5476 4832 5332 +f 4976 4520 4444 +f 4976 4444 4832 +f 4520 3932 3868 +f 4520 3868 4444 +f 3932 3352 3272 +f 3932 3272 3868 +f 3352 2848 2800 +f 3352 2800 3272 +f 2848 2116 2068 +f 2848 2068 2800 +f 2116 1312 1264 +f 2116 1264 2068 +f 1263 2067 2035 +f 1263 2035 1247 +f 2067 2799 2659 +f 2067 2659 2035 +f 2799 3271 3175 +f 2799 3175 2659 +f 3271 3867 3763 +f 3271 3763 3175 +f 3867 4443 4227 +f 3867 4227 3763 +f 4443 4831 4735 +f 4443 4735 4227 +f 4831 5331 5219 +f 4831 5219 4735 +f 5331 5811 5603 +f 5331 5603 5219 +f 5811 6175 6015 +f 5811 6015 5603 +f 6175 6635 6455 +f 6175 6455 6015 +f 6635 7003 6779 +f 6635 6779 6455 +f 7003 7335 7175 +f 7003 7175 6779 +f 7335 7739 7479 +f 7335 7479 7175 +f 7739 8027 7827 +f 7739 7827 7479 +f 8027 8375 8171 +f 8027 8171 7827 +f 8375 8719 8447 +f 8375 8447 8171 +f 8719 8963 8763 +f 8719 8763 8447 +f 8963 9279 9035 +f 8963 9035 8763 +f 9279 9559 9295 +f 9279 9295 9035 +f 9559 9803 9551 +f 9559 9551 9295 +f 9803 10075 9779 +f 9803 9779 9551 +f 10075 10271 9995 +f 10075 9995 9779 +f 10271 10511 10247 +f 10271 10247 9995 +f 10511 10731 10431 +f 10511 10431 10247 +f 10731 10931 10643 +f 10731 10643 10431 +f 10931 11111 10827 +f 10931 10827 10643 +f 11111 11311 11015 +f 11111 11015 10827 +f 11311 11467 11167 +f 11311 11167 11015 +f 11467 11619 11343 +f 11467 11343 11167 +f 11619 11807 11451 +f 11619 11451 11343 +f 11807 11887 11587 +f 11807 11587 11451 +f 11887 12023 11731 +f 11887 11731 11587 +f 12023 12155 11831 +f 12023 11831 11731 +f 12155 12251 11935 +f 12155 11935 11831 +f 12251 12331 12007 +f 12251 12007 11935 +f 12331 12435 12111 +f 12331 12111 12007 +f 12435 12511 12187 +f 12435 12187 12111 +f 12511 12559 12243 +f 12511 12243 12187 +f 12559 12615 12283 +f 12559 12283 12243 +f 12615 12655 12299 +f 12615 12299 12283 +f 12655 12671 12363 +f 12655 12363 12299 +f 12671 12695 12379 +f 12671 12379 12363 +f 12695 12719 12419 +f 12695 12419 12379 +f 12719 12720 12420 +f 12719 12420 12419 +f 12720 12696 12380 +f 12720 12380 12420 +f 12696 12672 12364 +f 12696 12364 12380 +f 12672 12656 12300 +f 12672 12300 12364 +f 12656 12616 12284 +f 12656 12284 12300 +f 12616 12560 12244 +f 12616 12244 12284 +f 12560 12512 12188 +f 12560 12188 12244 +f 12512 12436 12112 +f 12512 12112 12188 +f 12436 12332 12008 +f 12436 12008 12112 +f 12332 12252 11936 +f 12332 11936 12008 +f 12252 12156 11832 +f 12252 11832 11936 +f 12156 12024 11732 +f 12156 11732 11832 +f 12024 11888 11588 +f 12024 11588 11732 +f 11888 11808 11452 +f 11888 11452 11588 +f 11808 11620 11344 +f 11808 11344 11452 +f 11620 11468 11168 +f 11620 11168 11344 +f 11468 11312 11016 +f 11468 11016 11168 +f 11312 11112 10828 +f 11312 10828 11016 +f 11112 10932 10644 +f 11112 10644 10828 +f 10932 10732 10432 +f 10932 10432 10644 +f 10732 10512 10248 +f 10732 10248 10432 +f 10512 10272 9996 +f 10512 9996 10248 +f 10272 10076 9780 +f 10272 9780 9996 +f 10076 9804 9552 +f 10076 9552 9780 +f 9804 9560 9296 +f 9804 9296 9552 +f 9560 9280 9036 +f 9560 9036 9296 +f 9280 8964 8764 +f 9280 8764 9036 +f 8964 8720 8448 +f 8964 8448 8764 +f 8720 8376 8172 +f 8720 8172 8448 +f 8376 8028 7828 +f 8376 7828 8172 +f 8028 7740 7480 +f 8028 7480 7828 +f 7740 7336 7176 +f 7740 7176 7480 +f 7336 7004 6780 +f 7336 6780 7176 +f 7004 6636 6456 +f 7004 6456 6780 +f 6636 6176 6016 +f 6636 6016 6456 +f 6176 5812 5604 +f 6176 5604 6016 +f 5812 5332 5220 +f 5812 5220 5604 +f 5332 4832 4736 +f 5332 4736 5220 +f 4832 4444 4228 +f 4832 4228 4736 +f 4444 3868 3764 +f 4444 3764 4228 +f 3868 3272 3176 +f 3868 3176 3764 +f 3272 2800 2660 +f 3272 2660 3176 +f 2800 2068 2036 +f 2800 2036 2660 +f 2068 1264 1248 +f 2068 1248 2036 +f 1247 2035 1995 +f 1247 1995 1199 +f 2035 2659 2531 +f 2035 2531 1995 +f 2659 3175 3111 +f 2659 3111 2531 +f 3175 3763 3715 +f 3175 3715 3111 +f 3763 4227 4075 +f 3763 4075 3715 +f 4227 4735 4583 +f 4227 4583 4075 +f 4735 5219 5023 +f 4735 5023 4583 +f 5219 5603 5419 +f 5219 5419 5023 +f 5603 6015 5887 +f 5603 5887 5419 +f 6015 6455 6215 +f 6015 6215 5887 +f 6455 6779 6619 +f 6455 6619 6215 +f 6779 7175 6955 +f 6779 6955 6619 +f 7175 7479 7271 +f 7175 7271 6955 +f 7479 7827 7631 +f 7479 7631 7271 +f 7827 8171 7915 +f 7827 7915 7631 +f 8171 8447 8231 +f 8171 8231 7915 +f 8447 8763 8495 +f 8447 8495 8231 +f 8763 9035 8779 +f 8763 8779 8495 +f 9035 9295 9027 +f 9035 9027 8779 +f 9295 9551 9271 +f 9295 9271 9027 +f 9551 9779 9479 +f 9551 9479 9271 +f 9779 9995 9755 +f 9779 9755 9479 +f 9995 10247 9923 +f 9995 9923 9755 +f 10247 10431 10167 +f 10247 10167 9923 +f 10431 10643 10335 +f 10431 10335 10167 +f 10643 10827 10527 +f 10643 10527 10335 +f 10827 11015 10691 +f 10827 10691 10527 +f 11015 11167 10851 +f 11015 10851 10691 +f 11167 11343 11007 +f 11167 11007 10851 +f 11343 11451 11127 +f 11343 11127 11007 +f 11451 11587 11263 +f 11451 11263 11127 +f 11587 11731 11403 +f 11587 11403 11263 +f 11731 11831 11507 +f 11731 11507 11403 +f 11831 11935 11595 +f 11831 11595 11507 +f 11935 12007 11699 +f 11935 11699 11595 +f 12007 12111 11791 +f 12007 11791 11699 +f 12111 12187 11839 +f 12111 11839 11791 +f 12187 12243 11879 +f 12187 11879 11839 +f 12243 12283 11943 +f 12243 11943 11879 +f 12283 12299 11983 +f 12283 11983 11943 +f 12299 12363 11999 +f 12299 11999 11983 +f 12363 12379 12031 +f 12363 12031 11999 +f 12379 12419 12055 +f 12379 12055 12031 +f 12419 12420 12056 +f 12419 12056 12055 +f 12420 12380 12032 +f 12420 12032 12056 +f 12380 12364 12000 +f 12380 12000 12032 +f 12364 12300 11984 +f 12364 11984 12000 +f 12300 12284 11944 +f 12300 11944 11984 +f 12284 12244 11880 +f 12284 11880 11944 +f 12244 12188 11840 +f 12244 11840 11880 +f 12188 12112 11792 +f 12188 11792 11840 +f 12112 12008 11700 +f 12112 11700 11792 +f 12008 11936 11596 +f 12008 11596 11700 +f 11936 11832 11508 +f 11936 11508 11596 +f 11832 11732 11404 +f 11832 11404 11508 +f 11732 11588 11264 +f 11732 11264 11404 +f 11588 11452 11128 +f 11588 11128 11264 +f 11452 11344 11008 +f 11452 11008 11128 +f 11344 11168 10852 +f 11344 10852 11008 +f 11168 11016 10692 +f 11168 10692 10852 +f 11016 10828 10528 +f 11016 10528 10692 +f 10828 10644 10336 +f 10828 10336 10528 +f 10644 10432 10168 +f 10644 10168 10336 +f 10432 10248 9924 +f 10432 9924 10168 +f 10248 9996 9756 +f 10248 9756 9924 +f 9996 9780 9480 +f 9996 9480 9756 +f 9780 9552 9272 +f 9780 9272 9480 +f 9552 9296 9028 +f 9552 9028 9272 +f 9296 9036 8780 +f 9296 8780 9028 +f 9036 8764 8496 +f 9036 8496 8780 +f 8764 8448 8232 +f 8764 8232 8496 +f 8448 8172 7916 +f 8448 7916 8232 +f 8172 7828 7632 +f 8172 7632 7916 +f 7828 7480 7272 +f 7828 7272 7632 +f 7480 7176 6956 +f 7480 6956 7272 +f 7176 6780 6620 +f 7176 6620 6956 +f 6780 6456 6216 +f 6780 6216 6620 +f 6456 6016 5888 +f 6456 5888 6216 +f 6016 5604 5420 +f 6016 5420 5888 +f 5604 5220 5024 +f 5604 5024 5420 +f 5220 4736 4584 +f 5220 4584 5024 +f 4736 4228 4076 +f 4736 4076 4584 +f 4228 3764 3716 +f 4228 3716 4076 +f 3764 3176 3112 +f 3764 3112 3716 +f 3176 2660 2532 +f 3176 2532 3112 +f 2660 2036 1996 +f 2660 1996 2532 +f 2036 1248 1200 +f 2036 1200 1996 +f 1199 1995 1947 +f 1199 1947 1183 +f 1995 2531 2451 +f 1995 2451 1947 +f 2531 3111 3015 +f 2531 3015 2451 +f 3111 3715 3511 +f 3111 3511 3015 +f 3715 4075 3979 +f 3715 3979 3511 +f 4075 4583 4487 +f 4075 4487 3979 +f 4583 5023 4839 +f 4583 4839 4487 +f 5023 5419 5299 +f 5023 5299 4839 +f 5419 5887 5651 +f 5419 5651 5299 +f 5887 6215 6039 +f 5887 6039 5651 +f 6215 6619 6415 +f 6215 6415 6039 +f 6619 6955 6715 +f 6619 6715 6415 +f 6955 7271 7079 +f 6955 7079 6715 +f 7271 7631 7351 +f 7271 7351 7079 +f 7631 7915 7699 +f 7631 7699 7351 +f 7915 8231 7947 +f 7915 7947 7699 +f 8231 8495 8255 +f 8231 8255 7947 +f 8495 8779 8487 +f 8495 8487 8255 +f 8779 9027 8755 +f 8779 8755 8487 +f 9027 9271 8955 +f 9027 8955 8755 +f 9271 9479 9247 +f 9271 9247 8955 +f 9479 9755 9415 +f 9479 9415 9247 +f 9755 9923 9647 +f 9755 9647 9415 +f 9923 10167 9843 +f 9923 9843 9647 +f 10167 10335 10011 +f 10167 10011 9843 +f 10335 10527 10215 +f 10335 10215 10011 +f 10527 10691 10375 +f 10527 10375 10215 +f 10691 10851 10535 +f 10691 10535 10375 +f 10851 11007 10667 +f 10851 10667 10535 +f 11007 11127 10795 +f 11007 10795 10667 +f 11127 11263 10939 +f 11127 10939 10795 +f 11263 11403 11079 +f 11263 11079 10939 +f 11403 11507 11135 +f 11403 11135 11079 +f 11507 11595 11231 +f 11507 11231 11135 +f 11595 11699 11351 +f 11595 11351 11231 +f 11699 11791 11427 +f 11699 11427 11351 +f 11791 11839 11483 +f 11791 11483 11427 +f 11839 11879 11547 +f 11839 11547 11483 +f 11879 11943 11563 +f 11879 11563 11547 +f 11943 11983 11611 +f 11943 11611 11563 +f 11983 11999 11651 +f 11983 11651 11611 +f 11999 12031 11667 +f 11999 11667 11651 +f 12031 12055 11683 +f 12031 11683 11667 +f 12055 12056 11684 +f 12055 11684 11683 +f 12056 12032 11668 +f 12056 11668 11684 +f 12032 12000 11652 +f 12032 11652 11668 +f 12000 11984 11612 +f 12000 11612 11652 +f 11984 11944 11564 +f 11984 11564 11612 +f 11944 11880 11548 +f 11944 11548 11564 +f 11880 11840 11484 +f 11880 11484 11548 +f 11840 11792 11428 +f 11840 11428 11484 +f 11792 11700 11352 +f 11792 11352 11428 +f 11700 11596 11232 +f 11700 11232 11352 +f 11596 11508 11136 +f 11596 11136 11232 +f 11508 11404 11080 +f 11508 11080 11136 +f 11404 11264 10940 +f 11404 10940 11080 +f 11264 11128 10796 +f 11264 10796 10940 +f 11128 11008 10668 +f 11128 10668 10796 +f 11008 10852 10536 +f 11008 10536 10668 +f 10852 10692 10376 +f 10852 10376 10536 +f 10692 10528 10216 +f 10692 10216 10376 +f 10528 10336 10012 +f 10528 10012 10216 +f 10336 10168 9844 +f 10336 9844 10012 +f 10168 9924 9648 +f 10168 9648 9844 +f 9924 9756 9416 +f 9924 9416 9648 +f 9756 9480 9248 +f 9756 9248 9416 +f 9480 9272 8956 +f 9480 8956 9248 +f 9272 9028 8756 +f 9272 8756 8956 +f 9028 8780 8488 +f 9028 8488 8756 +f 8780 8496 8256 +f 8780 8256 8488 +f 8496 8232 7948 +f 8496 7948 8256 +f 8232 7916 7700 +f 8232 7700 7948 +f 7916 7632 7352 +f 7916 7352 7700 +f 7632 7272 7080 +f 7632 7080 7352 +f 7272 6956 6716 +f 7272 6716 7080 +f 6956 6620 6416 +f 6956 6416 6716 +f 6620 6216 6040 +f 6620 6040 6416 +f 6216 5888 5652 +f 6216 5652 6040 +f 5888 5420 5300 +f 5888 5300 5652 +f 5420 5024 4840 +f 5420 4840 5300 +f 5024 4584 4488 +f 5024 4488 4840 +f 4584 4076 3980 +f 4584 3980 4488 +f 4076 3716 3512 +f 4076 3512 3980 +f 3716 3112 3016 +f 3716 3016 3512 +f 3112 2532 2452 +f 3112 2452 3016 +f 2532 1996 1948 +f 2532 1948 2452 +f 1996 1200 1184 +f 1996 1184 1948 +f 1183 1947 1915 +f 1183 1915 1167 +f 1947 2451 2355 +f 1947 2355 1915 +f 2451 3015 2951 +f 2451 2951 2355 +f 3015 3511 3375 +f 3015 3375 2951 +f 3511 3979 3875 +f 3511 3875 3375 +f 3979 4487 4275 +f 3979 4275 3875 +f 4487 4839 4687 +f 4487 4687 4275 +f 4839 5299 5135 +f 4839 5135 4687 +f 5299 5651 5467 +f 5299 5467 5135 +f 5651 6039 5863 +f 5651 5863 5467 +f 6039 6415 6135 +f 6039 6135 5863 +f 6415 6715 6523 +f 6415 6523 6135 +f 6715 7079 6819 +f 6715 6819 6523 +f 7079 7351 7143 +f 7079 7143 6819 +f 7351 7699 7407 +f 7351 7407 7143 +f 7699 7947 7715 +f 7699 7715 7407 +f 7947 8255 7939 +f 7947 7939 7715 +f 8255 8487 8223 +f 8255 8223 7939 +f 8487 8755 8431 +f 8487 8431 8223 +f 8755 8955 8703 +f 8755 8703 8431 +f 8955 9247 8891 +f 8955 8891 8703 +f 9247 9415 9115 +f 9247 9115 8891 +f 9415 9647 9343 +f 9415 9343 9115 +f 9647 9843 9495 +f 9647 9495 9343 +f 9843 10011 9715 +f 9843 9715 9495 +f 10011 10215 9867 +f 10011 9867 9715 +f 10215 10375 10019 +f 10215 10019 9867 +f 10375 10535 10183 +f 10375 10183 10019 +f 10535 10667 10319 +f 10535 10319 10183 +f 10667 10795 10439 +f 10667 10439 10319 +f 10795 10939 10611 +f 10795 10611 10439 +f 10939 11079 10675 +f 10939 10675 10611 +f 11079 11135 10779 +f 11079 10779 10675 +f 11135 11231 10891 +f 11135 10891 10779 +f 11231 11351 10979 +f 11231 10979 10891 +f 11351 11427 11071 +f 11351 11071 10979 +f 11427 11483 11103 +f 11427 11103 11071 +f 11483 11547 11151 +f 11483 11151 11103 +f 11547 11563 11199 +f 11547 11199 11151 +f 11563 11611 11223 +f 11563 11223 11199 +f 11611 11651 11279 +f 11611 11279 11223 +f 11651 11667 11295 +f 11651 11295 11279 +f 11667 11683 11319 +f 11667 11319 11295 +f 11683 11684 11320 +f 11683 11320 11319 +f 11684 11668 11296 +f 11684 11296 11320 +f 11668 11652 11280 +f 11668 11280 11296 +f 11652 11612 11224 +f 11652 11224 11280 +f 11612 11564 11200 +f 11612 11200 11224 +f 11564 11548 11152 +f 11564 11152 11200 +f 11548 11484 11104 +f 11548 11104 11152 +f 11484 11428 11072 +f 11484 11072 11104 +f 11428 11352 10980 +f 11428 10980 11072 +f 11352 11232 10892 +f 11352 10892 10980 +f 11232 11136 10780 +f 11232 10780 10892 +f 11136 11080 10676 +f 11136 10676 10780 +f 11080 10940 10612 +f 11080 10612 10676 +f 10940 10796 10440 +f 10940 10440 10612 +f 10796 10668 10320 +f 10796 10320 10440 +f 10668 10536 10184 +f 10668 10184 10320 +f 10536 10376 10020 +f 10536 10020 10184 +f 10376 10216 9868 +f 10376 9868 10020 +f 10216 10012 9716 +f 10216 9716 9868 +f 10012 9844 9496 +f 10012 9496 9716 +f 9844 9648 9344 +f 9844 9344 9496 +f 9648 9416 9116 +f 9648 9116 9344 +f 9416 9248 8892 +f 9416 8892 9116 +f 9248 8956 8704 +f 9248 8704 8892 +f 8956 8756 8432 +f 8956 8432 8704 +f 8756 8488 8224 +f 8756 8224 8432 +f 8488 8256 7940 +f 8488 7940 8224 +f 8256 7948 7716 +f 8256 7716 7940 +f 7948 7700 7408 +f 7948 7408 7716 +f 7700 7352 7144 +f 7700 7144 7408 +f 7352 7080 6820 +f 7352 6820 7144 +f 7080 6716 6524 +f 7080 6524 6820 +f 6716 6416 6136 +f 6716 6136 6524 +f 6416 6040 5864 +f 6416 5864 6136 +f 6040 5652 5468 +f 6040 5468 5864 +f 5652 5300 5136 +f 5652 5136 5468 +f 5300 4840 4688 +f 5300 4688 5136 +f 4840 4488 4276 +f 4840 4276 4688 +f 4488 3980 3876 +f 4488 3876 4276 +f 3980 3512 3376 +f 3980 3376 3876 +f 3512 3016 2952 +f 3512 2952 3376 +f 3016 2452 2356 +f 3016 2356 2952 +f 2452 1948 1916 +f 2452 1916 2356 +f 1948 1184 1168 +f 1948 1168 1916 +f 1167 1915 1883 +f 1167 1883 1127 +f 1915 2355 2275 +f 1915 2275 1883 +f 2355 2951 2863 +f 2355 2863 2275 +f 2951 3375 3247 +f 2951 3247 2863 +f 3375 3875 3747 +f 3375 3747 3247 +f 3875 4275 4107 +f 3875 4107 3747 +f 4275 4687 4551 +f 4275 4551 4107 +f 4687 5135 4879 +f 4687 4879 4551 +f 5135 5467 5283 +f 5135 5283 4879 +f 5467 5863 5587 +f 5467 5587 5283 +f 5863 6135 5951 +f 5863 5951 5587 +f 6135 6523 6239 +f 6135 6239 5951 +f 6523 6819 6571 +f 6523 6571 6239 +f 6819 7143 6843 +f 6819 6843 6571 +f 7143 7407 7151 +f 7143 7151 6843 +f 7407 7715 7399 +f 7407 7399 7151 +f 7715 7939 7691 +f 7715 7691 7399 +f 7939 8223 7899 +f 7939 7899 7691 +f 8223 8431 8155 +f 8223 8155 7899 +f 8431 8703 8359 +f 8431 8359 8155 +f 8703 8891 8567 +f 8703 8567 8359 +f 8891 9115 8819 +f 8891 8819 8567 +f 9115 9343 8971 +f 9115 8971 8819 +f 9343 9495 9187 +f 9343 9187 8971 +f 9495 9715 9359 +f 9495 9359 9187 +f 9715 9867 9503 +f 9715 9503 9359 +f 9867 10019 9679 +f 9867 9679 9503 +f 10019 10183 9819 +f 10019 9819 9679 +f 10183 10319 9947 +f 10183 9947 9819 +f 10319 10439 10107 +f 10319 10107 9947 +f 10439 10611 10207 +f 10439 10207 10107 +f 10611 10675 10295 +f 10611 10295 10207 +f 10675 10779 10399 +f 10675 10399 10295 +f 10779 10891 10503 +f 10779 10503 10399 +f 10891 10979 10619 +f 10891 10619 10503 +f 10979 11071 10659 +f 10979 10659 10619 +f 11071 11103 10723 +f 11071 10723 10659 +f 11103 11151 10755 +f 11103 10755 10723 +f 11151 11199 10803 +f 11151 10803 10755 +f 11199 11223 10859 +f 11199 10859 10803 +f 11223 11279 10883 +f 11223 10883 10859 +f 11279 11295 10899 +f 11279 10899 10883 +f 11295 11319 10907 +f 11295 10907 10899 +f 11319 11320 10908 +f 11319 10908 10907 +f 11320 11296 10900 +f 11320 10900 10908 +f 11296 11280 10884 +f 11296 10884 10900 +f 11280 11224 10860 +f 11280 10860 10884 +f 11224 11200 10804 +f 11224 10804 10860 +f 11200 11152 10756 +f 11200 10756 10804 +f 11152 11104 10724 +f 11152 10724 10756 +f 11104 11072 10660 +f 11104 10660 10724 +f 11072 10980 10620 +f 11072 10620 10660 +f 10980 10892 10504 +f 10980 10504 10620 +f 10892 10780 10400 +f 10892 10400 10504 +f 10780 10676 10296 +f 10780 10296 10400 +f 10676 10612 10208 +f 10676 10208 10296 +f 10612 10440 10108 +f 10612 10108 10208 +f 10440 10320 9948 +f 10440 9948 10108 +f 10320 10184 9820 +f 10320 9820 9948 +f 10184 10020 9680 +f 10184 9680 9820 +f 10020 9868 9504 +f 10020 9504 9680 +f 9868 9716 9360 +f 9868 9360 9504 +f 9716 9496 9188 +f 9716 9188 9360 +f 9496 9344 8972 +f 9496 8972 9188 +f 9344 9116 8820 +f 9344 8820 8972 +f 9116 8892 8568 +f 9116 8568 8820 +f 8892 8704 8360 +f 8892 8360 8568 +f 8704 8432 8156 +f 8704 8156 8360 +f 8432 8224 7900 +f 8432 7900 8156 +f 8224 7940 7692 +f 8224 7692 7900 +f 7940 7716 7400 +f 7940 7400 7692 +f 7716 7408 7152 +f 7716 7152 7400 +f 7408 7144 6844 +f 7408 6844 7152 +f 7144 6820 6572 +f 7144 6572 6844 +f 6820 6524 6240 +f 6820 6240 6572 +f 6524 6136 5952 +f 6524 5952 6240 +f 6136 5864 5588 +f 6136 5588 5952 +f 5864 5468 5284 +f 5864 5284 5588 +f 5468 5136 4880 +f 5468 4880 5284 +f 5136 4688 4552 +f 5136 4552 4880 +f 4688 4276 4108 +f 4688 4108 4552 +f 4276 3876 3748 +f 4276 3748 4108 +f 3876 3376 3248 +f 3876 3248 3748 +f 3376 2952 2864 +f 3376 2864 3248 +f 2952 2356 2276 +f 2952 2276 2864 +f 2356 1916 1884 +f 2356 1884 2276 +f 1916 1168 1128 +f 1916 1128 1884 +f 1127 1883 1823 +f 1127 1823 1095 +f 1883 2275 2211 +f 1883 2211 1823 +f 2275 2863 2763 +f 2275 2763 2211 +f 2863 3247 3143 +f 2863 3143 2763 +f 3247 3747 3623 +f 3247 3623 3143 +f 3747 4107 3963 +f 3747 3963 3623 +f 4107 4551 4379 +f 4107 4379 3963 +f 4551 4879 4703 +f 4551 4703 4379 +f 4879 5283 5055 +f 4879 5055 4703 +f 5283 5587 5379 +f 5283 5379 5055 +f 5587 5951 5691 +f 5587 5691 5379 +f 5951 6239 5999 +f 5951 5999 5691 +f 6239 6571 6287 +f 6239 6287 5999 +f 6571 6843 6587 +f 6571 6587 6287 +f 6843 7151 6835 +f 6843 6835 6587 +f 7151 7399 7135 +f 7151 7135 6835 +f 7399 7691 7343 +f 7399 7343 7135 +f 7691 7899 7623 +f 7691 7623 7343 +f 7899 8155 7819 +f 7899 7819 7623 +f 8155 8359 8011 +f 8155 8011 7819 +f 8359 8567 8279 +f 8359 8279 8011 +f 8567 8819 8423 +f 8567 8423 8279 +f 8819 8971 8655 +f 8819 8655 8423 +f 8971 9187 8835 +f 8971 8835 8655 +f 9187 9359 8979 +f 9187 8979 8835 +f 9359 9503 9155 +f 9359 9155 8979 +f 9503 9679 9311 +f 9503 9311 9155 +f 9679 9819 9439 +f 9679 9439 9311 +f 9819 9947 9575 +f 9819 9575 9439 +f 9947 10107 9723 +f 9947 9723 9575 +f 10107 10207 9811 +f 10107 9811 9723 +f 10207 10295 9899 +f 10207 9899 9811 +f 10295 10399 9987 +f 10295 9987 9899 +f 10399 10503 10123 +f 10399 10123 9987 +f 10503 10619 10191 +f 10503 10191 10123 +f 10619 10659 10263 +f 10619 10263 10191 +f 10659 10723 10311 +f 10659 10311 10263 +f 10723 10755 10367 +f 10723 10367 10311 +f 10755 10803 10391 +f 10755 10391 10367 +f 10803 10859 10415 +f 10803 10415 10391 +f 10859 10883 10463 +f 10859 10463 10415 +f 10883 10899 10479 +f 10883 10479 10463 +f 10899 10907 10487 +f 10899 10487 10479 +f 10907 10908 10488 +f 10907 10488 10487 +f 10908 10900 10480 +f 10908 10480 10488 +f 10900 10884 10464 +f 10900 10464 10480 +f 10884 10860 10416 +f 10884 10416 10464 +f 10860 10804 10392 +f 10860 10392 10416 +f 10804 10756 10368 +f 10804 10368 10392 +f 10756 10724 10312 +f 10756 10312 10368 +f 10724 10660 10264 +f 10724 10264 10312 +f 10660 10620 10192 +f 10660 10192 10264 +f 10620 10504 10124 +f 10620 10124 10192 +f 10504 10400 9988 +f 10504 9988 10124 +f 10400 10296 9900 +f 10400 9900 9988 +f 10296 10208 9812 +f 10296 9812 9900 +f 10208 10108 9724 +f 10208 9724 9812 +f 10108 9948 9576 +f 10108 9576 9724 +f 9948 9820 9440 +f 9948 9440 9576 +f 9820 9680 9312 +f 9820 9312 9440 +f 9680 9504 9156 +f 9680 9156 9312 +f 9504 9360 8980 +f 9504 8980 9156 +f 9360 9188 8836 +f 9360 8836 8980 +f 9188 8972 8656 +f 9188 8656 8836 +f 8972 8820 8424 +f 8972 8424 8656 +f 8820 8568 8280 +f 8820 8280 8424 +f 8568 8360 8012 +f 8568 8012 8280 +f 8360 8156 7820 +f 8360 7820 8012 +f 8156 7900 7624 +f 8156 7624 7820 +f 7900 7692 7344 +f 7900 7344 7624 +f 7692 7400 7136 +f 7692 7136 7344 +f 7400 7152 6836 +f 7400 6836 7136 +f 7152 6844 6588 +f 7152 6588 6836 +f 6844 6572 6288 +f 6844 6288 6588 +f 6572 6240 6000 +f 6572 6000 6288 +f 6240 5952 5692 +f 6240 5692 6000 +f 5952 5588 5380 +f 5952 5380 5692 +f 5588 5284 5056 +f 5588 5056 5380 +f 5284 4880 4704 +f 5284 4704 5056 +f 4880 4552 4380 +f 4880 4380 4704 +f 4552 4108 3964 +f 4552 3964 4380 +f 4108 3748 3624 +f 4108 3624 3964 +f 3748 3248 3144 +f 3748 3144 3624 +f 3248 2864 2764 +f 3248 2764 3144 +f 2864 2276 2212 +f 2864 2212 2764 +f 2276 1884 1824 +f 2276 1824 2212 +f 1884 1128 1096 +f 1884 1096 1824 +f 1095 1823 1647 +f 1095 1647 1063 +f 1823 2211 2131 +f 1823 2131 1647 +f 2211 2763 2579 +f 2211 2579 2131 +f 2763 3143 2999 +f 2763 2999 2579 +f 3143 3623 3391 +f 3143 3391 2999 +f 3623 3963 3811 +f 3623 3811 3391 +f 3963 4379 4155 +f 3963 4155 3811 +f 4379 4703 4535 +f 4379 4535 4155 +f 4703 5055 4799 +f 4703 4799 4535 +f 5055 5379 5195 +f 5055 5195 4799 +f 5379 5691 5443 +f 5379 5443 5195 +f 5691 5999 5787 +f 5691 5787 5443 +f 5999 6287 6047 +f 5999 6047 5787 +f 6287 6587 6279 +f 6287 6279 6047 +f 6587 6835 6563 +f 6587 6563 6279 +f 6835 7135 6811 +f 6835 6811 6563 +f 7135 7343 7067 +f 7135 7067 6811 +f 7343 7623 7255 +f 7343 7255 7067 +f 7623 7819 7463 +f 7623 7463 7255 +f 7819 8011 7731 +f 7819 7731 7463 +f 8011 8279 7883 +f 8011 7883 7731 +f 8279 8423 8099 +f 8279 8099 7883 +f 8423 8655 8303 +f 8423 8303 8099 +f 8655 8835 8415 +f 8655 8415 8303 +f 8835 8979 8599 +f 8835 8599 8415 +f 8979 9155 8787 +f 8979 8787 8599 +f 9155 9311 8899 +f 9155 8899 8787 +f 9311 9439 9043 +f 9311 9043 8899 +f 9439 9575 9195 +f 9439 9195 9043 +f 9575 9723 9303 +f 9575 9303 9195 +f 9723 9811 9391 +f 9723 9391 9303 +f 9811 9899 9471 +f 9811 9471 9391 +f 9899 9987 9607 +f 9899 9607 9471 +f 9987 10123 9699 +f 9987 9699 9607 +f 10123 10191 9771 +f 10123 9771 9699 +f 10191 10263 9827 +f 10191 9827 9771 +f 10263 10311 9891 +f 10263 9891 9827 +f 10311 10367 9915 +f 10311 9915 9891 +f 10367 10391 9963 +f 10367 9963 9915 +f 10391 10415 9979 +f 10391 9979 9963 +f 10415 10463 10035 +f 10415 10035 9979 +f 10463 10479 10067 +f 10463 10067 10035 +f 10479 10487 10091 +f 10479 10091 10067 +f 10487 10488 10092 +f 10487 10092 10091 +f 10488 10480 10068 +f 10488 10068 10092 +f 10480 10464 10036 +f 10480 10036 10068 +f 10464 10416 9980 +f 10464 9980 10036 +f 10416 10392 9964 +f 10416 9964 9980 +f 10392 10368 9916 +f 10392 9916 9964 +f 10368 10312 9892 +f 10368 9892 9916 +f 10312 10264 9828 +f 10312 9828 9892 +f 10264 10192 9772 +f 10264 9772 9828 +f 10192 10124 9700 +f 10192 9700 9772 +f 10124 9988 9608 +f 10124 9608 9700 +f 9988 9900 9472 +f 9988 9472 9608 +f 9900 9812 9392 +f 9900 9392 9472 +f 9812 9724 9304 +f 9812 9304 9392 +f 9724 9576 9196 +f 9724 9196 9304 +f 9576 9440 9044 +f 9576 9044 9196 +f 9440 9312 8900 +f 9440 8900 9044 +f 9312 9156 8788 +f 9312 8788 8900 +f 9156 8980 8600 +f 9156 8600 8788 +f 8980 8836 8416 +f 8980 8416 8600 +f 8836 8656 8304 +f 8836 8304 8416 +f 8656 8424 8100 +f 8656 8100 8304 +f 8424 8280 7884 +f 8424 7884 8100 +f 8280 8012 7732 +f 8280 7732 7884 +f 8012 7820 7464 +f 8012 7464 7732 +f 7820 7624 7256 +f 7820 7256 7464 +f 7624 7344 7068 +f 7624 7068 7256 +f 7344 7136 6812 +f 7344 6812 7068 +f 7136 6836 6564 +f 7136 6564 6812 +f 6836 6588 6280 +f 6836 6280 6564 +f 6588 6288 6048 +f 6588 6048 6280 +f 6288 6000 5788 +f 6288 5788 6048 +f 6000 5692 5444 +f 6000 5444 5788 +f 5692 5380 5196 +f 5692 5196 5444 +f 5380 5056 4800 +f 5380 4800 5196 +f 5056 4704 4536 +f 5056 4536 4800 +f 4704 4380 4156 +f 4704 4156 4536 +f 4380 3964 3812 +f 4380 3812 4156 +f 3964 3624 3392 +f 3964 3392 3812 +f 3624 3144 3000 +f 3624 3000 3392 +f 3144 2764 2580 +f 3144 2580 3000 +f 2764 2212 2132 +f 2764 2132 2580 +f 2212 1824 1648 +f 2212 1648 2132 +f 1824 1096 1064 +f 1824 1064 1648 +f 1063 1647 1543 +f 1063 1543 1047 +f 1647 2131 2051 +f 1647 2051 1543 +f 2131 2579 2427 +f 2131 2427 2051 +f 2579 2999 2919 +f 2579 2919 2427 +f 2999 3391 3223 +f 2999 3223 2919 +f 3391 3811 3683 +f 3391 3683 3223 +f 3811 4155 3947 +f 3811 3947 3683 +f 4155 4535 4291 +f 4155 4291 3947 +f 4535 4799 4623 +f 4535 4623 4291 +f 4799 5195 4911 +f 4799 4911 4623 +f 5195 5443 5235 +f 5195 5235 4911 +f 5443 5787 5491 +f 5443 5491 5235 +f 5787 6047 5779 +f 5787 5779 5491 +f 6047 6279 5991 +f 6047 5991 5779 +f 6279 6563 6231 +f 6279 6231 5991 +f 6563 6811 6515 +f 6563 6515 6231 +f 6811 7067 6699 +f 6811 6699 6515 +f 7067 7255 6939 +f 7067 6939 6699 +f 7255 7463 7167 +f 7255 7167 6939 +f 7463 7731 7327 +f 7463 7327 7167 +f 7731 7883 7543 +f 7731 7543 7327 +f 7883 8099 7747 +f 7883 7747 7543 +f 8099 8303 7867 +f 8099 7867 7747 +f 8303 8415 8043 +f 8303 8043 7867 +f 8415 8599 8239 +f 8415 8239 8043 +f 8599 8787 8351 +f 8599 8351 8239 +f 8787 8899 8503 +f 8787 8503 8351 +f 8899 9043 8639 +f 8899 8639 8503 +f 9043 9195 8771 +f 9043 8771 8639 +f 9195 9303 8867 +f 9195 8867 8771 +f 9303 9391 8947 +f 9303 8947 8867 +f 9391 9471 9075 +f 9391 9075 8947 +f 9471 9607 9163 +f 9471 9163 9075 +f 9607 9699 9263 +f 9607 9263 9163 +f 9699 9771 9335 +f 9699 9335 9263 +f 9771 9827 9383 +f 9771 9383 9335 +f 9827 9891 9423 +f 9827 9423 9383 +f 9891 9915 9463 +f 9891 9463 9423 +f 9915 9963 9519 +f 9915 9519 9463 +f 9963 9979 9567 +f 9963 9567 9519 +f 9979 10035 9591 +f 9979 9591 9567 +f 10035 10067 9615 +f 10035 9615 9591 +f 10067 10091 9623 +f 10067 9623 9615 +f 10091 10092 9624 +f 10091 9624 9623 +f 10092 10068 9616 +f 10092 9616 9624 +f 10068 10036 9592 +f 10068 9592 9616 +f 10036 9980 9568 +f 10036 9568 9592 +f 9980 9964 9520 +f 9980 9520 9568 +f 9964 9916 9464 +f 9964 9464 9520 +f 9916 9892 9424 +f 9916 9424 9464 +f 9892 9828 9384 +f 9892 9384 9424 +f 9828 9772 9336 +f 9828 9336 9384 +f 9772 9700 9264 +f 9772 9264 9336 +f 9700 9608 9164 +f 9700 9164 9264 +f 9608 9472 9076 +f 9608 9076 9164 +f 9472 9392 8948 +f 9472 8948 9076 +f 9392 9304 8868 +f 9392 8868 8948 +f 9304 9196 8772 +f 9304 8772 8868 +f 9196 9044 8640 +f 9196 8640 8772 +f 9044 8900 8504 +f 9044 8504 8640 +f 8900 8788 8352 +f 8900 8352 8504 +f 8788 8600 8240 +f 8788 8240 8352 +f 8600 8416 8044 +f 8600 8044 8240 +f 8416 8304 7868 +f 8416 7868 8044 +f 8304 8100 7748 +f 8304 7748 7868 +f 8100 7884 7544 +f 8100 7544 7748 +f 7884 7732 7328 +f 7884 7328 7544 +f 7732 7464 7168 +f 7732 7168 7328 +f 7464 7256 6940 +f 7464 6940 7168 +f 7256 7068 6700 +f 7256 6700 6940 +f 7068 6812 6516 +f 7068 6516 6700 +f 6812 6564 6232 +f 6812 6232 6516 +f 6564 6280 5992 +f 6564 5992 6232 +f 6280 6048 5780 +f 6280 5780 5992 +f 6048 5788 5492 +f 6048 5492 5780 +f 5788 5444 5236 +f 5788 5236 5492 +f 5444 5196 4912 +f 5444 4912 5236 +f 5196 4800 4624 +f 5196 4624 4912 +f 4800 4536 4292 +f 4800 4292 4624 +f 4536 4156 3948 +f 4536 3948 4292 +f 4156 3812 3684 +f 4156 3684 3948 +f 3812 3392 3224 +f 3812 3224 3684 +f 3392 3000 2920 +f 3392 2920 3224 +f 3000 2580 2428 +f 3000 2428 2920 +f 2580 2132 2052 +f 2580 2052 2428 +f 2132 1648 1544 +f 2132 1544 2052 +f 1648 1064 1048 +f 1648 1048 1544 +f 1047 1543 1439 +f 1047 1439 999 +f 1543 2051 1979 +f 1543 1979 1439 +f 2051 2427 2307 +f 2051 2307 1979 +f 2427 2919 2815 +f 2427 2815 2307 +f 2919 3223 3071 +f 2919 3071 2815 +f 3223 3683 3423 +f 3223 3423 3071 +f 3683 3947 3779 +f 3683 3779 3423 +f 3947 4291 4043 +f 3947 4043 3779 +f 4291 4623 4427 +f 4291 4427 4043 +f 4623 4911 4647 +f 4623 4647 4427 +f 4911 5235 4927 +f 4911 4927 4647 +f 5235 5491 5227 +f 5235 5227 4927 +f 5491 5779 5435 +f 5491 5435 5227 +f 5779 5991 5683 +f 5779 5683 5435 +f 5991 6231 5943 +f 5991 5943 5683 +f 6231 6515 6119 +f 6231 6119 5943 +f 6515 6699 6399 +f 6515 6399 6119 +f 6699 6939 6603 +f 6699 6603 6399 +f 6939 7167 6755 +f 6939 6755 6603 +f 7167 7327 6995 +f 7167 6995 6755 +f 7327 7543 7183 +f 7327 7183 6995 +f 7543 7747 7303 +f 7543 7303 7183 +f 7747 7867 7471 +f 7747 7471 7303 +f 7867 8043 7675 +f 7867 7675 7471 +f 8043 8239 7803 +f 8043 7803 7675 +f 8239 8351 7931 +f 8239 7931 7803 +f 8351 8503 8075 +f 8351 8075 7931 +f 8503 8639 8215 +f 8503 8215 8075 +f 8639 8771 8327 +f 8639 8327 8215 +f 8771 8867 8399 +f 8771 8399 8327 +f 8867 8947 8535 +f 8867 8535 8399 +f 8947 9075 8615 +f 8947 8615 8535 +f 9075 9163 8739 +f 9075 8739 8615 +f 9163 9263 8811 +f 9163 8811 8739 +f 9263 9335 8859 +f 9263 8859 8811 +f 9335 9383 8915 +f 9335 8915 8859 +f 9383 9423 8939 +f 9383 8939 8915 +f 9423 9463 9019 +f 9423 9019 8939 +f 9463 9519 9051 +f 9463 9051 9019 +f 9519 9567 9083 +f 9519 9083 9051 +f 9567 9591 9107 +f 9567 9107 9083 +f 9591 9615 9123 +f 9591 9123 9107 +f 9615 9623 9139 +f 9615 9139 9123 +f 9623 9624 9140 +f 9623 9140 9139 +f 9624 9616 9124 +f 9624 9124 9140 +f 9616 9592 9108 +f 9616 9108 9124 +f 9592 9568 9084 +f 9592 9084 9108 +f 9568 9520 9052 +f 9568 9052 9084 +f 9520 9464 9020 +f 9520 9020 9052 +f 9464 9424 8940 +f 9464 8940 9020 +f 9424 9384 8916 +f 9424 8916 8940 +f 9384 9336 8860 +f 9384 8860 8916 +f 9336 9264 8812 +f 9336 8812 8860 +f 9264 9164 8740 +f 9264 8740 8812 +f 9164 9076 8616 +f 9164 8616 8740 +f 9076 8948 8536 +f 9076 8536 8616 +f 8948 8868 8400 +f 8948 8400 8536 +f 8868 8772 8328 +f 8868 8328 8400 +f 8772 8640 8216 +f 8772 8216 8328 +f 8640 8504 8076 +f 8640 8076 8216 +f 8504 8352 7932 +f 8504 7932 8076 +f 8352 8240 7804 +f 8352 7804 7932 +f 8240 8044 7676 +f 8240 7676 7804 +f 8044 7868 7472 +f 8044 7472 7676 +f 7868 7748 7304 +f 7868 7304 7472 +f 7748 7544 7184 +f 7748 7184 7304 +f 7544 7328 6996 +f 7544 6996 7184 +f 7328 7168 6756 +f 7328 6756 6996 +f 7168 6940 6604 +f 7168 6604 6756 +f 6940 6700 6400 +f 6940 6400 6604 +f 6700 6516 6120 +f 6700 6120 6400 +f 6516 6232 5944 +f 6516 5944 6120 +f 6232 5992 5684 +f 6232 5684 5944 +f 5992 5780 5436 +f 5992 5436 5684 +f 5780 5492 5228 +f 5780 5228 5436 +f 5492 5236 4928 +f 5492 4928 5228 +f 5236 4912 4648 +f 5236 4648 4928 +f 4912 4624 4428 +f 4912 4428 4648 +f 4624 4292 4044 +f 4624 4044 4428 +f 4292 3948 3780 +f 4292 3780 4044 +f 3948 3684 3424 +f 3948 3424 3780 +f 3684 3224 3072 +f 3684 3072 3424 +f 3224 2920 2816 +f 3224 2816 3072 +f 2920 2428 2308 +f 2920 2308 2816 +f 2428 2052 1980 +f 2428 1980 2308 +f 2052 1544 1440 +f 2052 1440 1980 +f 1544 1048 1000 +f 1544 1000 1440 +f 999 1439 1375 +f 999 1375 983 +f 1439 1979 1931 +f 1439 1931 1375 +f 1979 2307 2195 +f 1979 2195 1931 +f 2307 2815 2555 +f 2307 2555 2195 +f 2815 3071 2967 +f 2815 2967 2555 +f 3071 3423 3207 +f 3071 3207 2967 +f 3423 3779 3583 +f 3423 3583 3207 +f 3779 4043 3843 +f 3779 3843 3583 +f 4043 4427 4099 +f 4043 4099 3843 +f 4427 4647 4463 +f 4427 4463 4099 +f 4647 4927 4639 +f 4647 4639 4463 +f 4927 5227 4903 +f 4927 4903 4639 +f 5227 5435 5187 +f 5227 5187 4903 +f 5435 5683 5371 +f 5435 5371 5187 +f 5683 5943 5579 +f 5683 5579 5371 +f 5943 6119 5855 +f 5943 5855 5579 +f 6119 6399 6031 +f 6119 6031 5855 +f 6399 6603 6207 +f 6399 6207 6031 +f 6603 6755 6439 +f 6603 6439 6207 +f 6755 6995 6611 +f 6755 6611 6439 +f 6995 7183 6731 +f 6995 6731 6611 +f 7183 7303 6907 +f 7183 6907 6731 +f 7303 7471 7111 +f 7303 7111 6907 +f 7471 7675 7231 +f 7471 7231 7111 +f 7675 7803 7367 +f 7675 7367 7231 +f 7803 7931 7503 +f 7803 7503 7367 +f 7931 8075 7659 +f 7931 7659 7503 +f 8075 8215 7771 +f 8075 7771 7659 +f 8215 8327 7843 +f 8215 7843 7771 +f 8327 8399 7971 +f 8327 7971 7843 +f 8399 8535 8051 +f 8399 8051 7971 +f 8535 8615 8179 +f 8535 8179 8051 +f 8615 8739 8271 +f 8615 8271 8179 +f 8739 8811 8319 +f 8739 8319 8271 +f 8811 8859 8367 +f 8811 8367 8319 +f 8859 8915 8407 +f 8859 8407 8367 +f 8915 8939 8479 +f 8915 8479 8407 +f 8939 9019 8527 +f 8939 8527 8479 +f 9019 9051 8551 +f 9019 8551 8527 +f 9051 9083 8575 +f 9051 8575 8551 +f 9083 9107 8607 +f 9083 8607 8575 +f 9107 9123 8631 +f 9107 8631 8607 +f 9123 9139 8647 +f 9123 8647 8631 +f 9139 9140 8648 +f 9139 8648 8647 +f 9140 9124 8632 +f 9140 8632 8648 +f 9124 9108 8608 +f 9124 8608 8632 +f 9108 9084 8576 +f 9108 8576 8608 +f 9084 9052 8552 +f 9084 8552 8576 +f 9052 9020 8528 +f 9052 8528 8552 +f 9020 8940 8480 +f 9020 8480 8528 +f 8940 8916 8408 +f 8940 8408 8480 +f 8916 8860 8368 +f 8916 8368 8408 +f 8860 8812 8320 +f 8860 8320 8368 +f 8812 8740 8272 +f 8812 8272 8320 +f 8740 8616 8180 +f 8740 8180 8272 +f 8616 8536 8052 +f 8616 8052 8180 +f 8536 8400 7972 +f 8536 7972 8052 +f 8400 8328 7844 +f 8400 7844 7972 +f 8328 8216 7772 +f 8328 7772 7844 +f 8216 8076 7660 +f 8216 7660 7772 +f 8076 7932 7504 +f 8076 7504 7660 +f 7932 7804 7368 +f 7932 7368 7504 +f 7804 7676 7232 +f 7804 7232 7368 +f 7676 7472 7112 +f 7676 7112 7232 +f 7472 7304 6908 +f 7472 6908 7112 +f 7304 7184 6732 +f 7304 6732 6908 +f 7184 6996 6612 +f 7184 6612 6732 +f 6996 6756 6440 +f 6996 6440 6612 +f 6756 6604 6208 +f 6756 6208 6440 +f 6604 6400 6032 +f 6604 6032 6208 +f 6400 6120 5856 +f 6400 5856 6032 +f 6120 5944 5580 +f 6120 5580 5856 +f 5944 5684 5372 +f 5944 5372 5580 +f 5684 5436 5188 +f 5684 5188 5372 +f 5436 5228 4904 +f 5436 4904 5188 +f 5228 4928 4640 +f 5228 4640 4904 +f 4928 4648 4464 +f 4928 4464 4640 +f 4648 4428 4100 +f 4648 4100 4464 +f 4428 4044 3844 +f 4428 3844 4100 +f 4044 3780 3584 +f 4044 3584 3844 +f 3780 3424 3208 +f 3780 3208 3584 +f 3424 3072 2968 +f 3424 2968 3208 +f 3072 2816 2556 +f 3072 2556 2968 +f 2816 2308 2196 +f 2816 2196 2556 +f 2308 1980 1932 +f 2308 1932 2196 +f 1980 1440 1376 +f 1980 1376 1932 +f 1440 1000 984 +f 1440 984 1376 +f 983 1375 1279 +f 983 1279 951 +f 1375 1931 1851 +f 1375 1851 1279 +f 1931 2195 2083 +f 1931 2083 1851 +f 2195 2555 2395 +f 2195 2395 2083 +f 2555 2967 2831 +f 2555 2831 2395 +f 2967 3207 3047 +f 2967 3047 2831 +f 3207 3583 3303 +f 3207 3303 3047 +f 3583 3843 3667 +f 3583 3667 3303 +f 3843 4099 3883 +f 3843 3883 3667 +f 4099 4463 4091 +f 4099 4091 3883 +f 4463 4639 4419 +f 4463 4419 4091 +f 4639 4903 4615 +f 4639 4615 4419 +f 4903 5187 4791 +f 4903 4791 4615 +f 5187 5371 5047 +f 5187 5047 4791 +f 5371 5579 5275 +f 5371 5275 5047 +f 5579 5855 5451 +f 5579 5451 5275 +f 5855 6031 5643 +f 5855 5643 5451 +f 6031 6207 5879 +f 6031 5879 5643 +f 6207 6439 6007 +f 6207 6007 5879 +f 6439 6611 6151 +f 6439 6151 6007 +f 6611 6731 6343 +f 6611 6343 6151 +f 6731 6907 6531 +f 6731 6531 6343 +f 6907 7111 6651 +f 6907 6651 6531 +f 7111 7231 6771 +f 7111 6771 6651 +f 7231 7367 6899 +f 7231 6899 6771 +f 7367 7503 7087 +f 7367 7087 6899 +f 7503 7659 7207 +f 7503 7207 7087 +f 7659 7771 7279 +f 7659 7279 7207 +f 7771 7843 7375 +f 7771 7375 7279 +f 7843 7971 7455 +f 7843 7455 7375 +f 7971 8051 7591 +f 7971 7591 7455 +f 8051 8179 7683 +f 8051 7683 7591 +f 8179 8271 7763 +f 8179 7763 7683 +f 8271 8319 7795 +f 8271 7795 7763 +f 8319 8367 7851 +f 8319 7851 7795 +f 8367 8407 7923 +f 8367 7923 7851 +f 8407 8479 7979 +f 8407 7979 7923 +f 8479 8527 8003 +f 8479 8003 7979 +f 8527 8551 8019 +f 8527 8019 8003 +f 8551 8575 8067 +f 8551 8067 8019 +f 8575 8607 8107 +f 8575 8107 8067 +f 8607 8631 8131 +f 8607 8131 8107 +f 8631 8647 8139 +f 8631 8139 8131 +f 8647 8648 8140 +f 8647 8140 8139 +f 8648 8632 8132 +f 8648 8132 8140 +f 8632 8608 8108 +f 8632 8108 8132 +f 8608 8576 8068 +f 8608 8068 8108 +f 8576 8552 8020 +f 8576 8020 8068 +f 8552 8528 8004 +f 8552 8004 8020 +f 8528 8480 7980 +f 8528 7980 8004 +f 8480 8408 7924 +f 8480 7924 7980 +f 8408 8368 7852 +f 8408 7852 7924 +f 8368 8320 7796 +f 8368 7796 7852 +f 8320 8272 7764 +f 8320 7764 7796 +f 8272 8180 7684 +f 8272 7684 7764 +f 8180 8052 7592 +f 8180 7592 7684 +f 8052 7972 7456 +f 8052 7456 7592 +f 7972 7844 7376 +f 7972 7376 7456 +f 7844 7772 7280 +f 7844 7280 7376 +f 7772 7660 7208 +f 7772 7208 7280 +f 7660 7504 7088 +f 7660 7088 7208 +f 7504 7368 6900 +f 7504 6900 7088 +f 7368 7232 6772 +f 7368 6772 6900 +f 7232 7112 6652 +f 7232 6652 6772 +f 7112 6908 6532 +f 7112 6532 6652 +f 6908 6732 6344 +f 6908 6344 6532 +f 6732 6612 6152 +f 6732 6152 6344 +f 6612 6440 6008 +f 6612 6008 6152 +f 6440 6208 5880 +f 6440 5880 6008 +f 6208 6032 5644 +f 6208 5644 5880 +f 6032 5856 5452 +f 6032 5452 5644 +f 5856 5580 5276 +f 5856 5276 5452 +f 5580 5372 5048 +f 5580 5048 5276 +f 5372 5188 4792 +f 5372 4792 5048 +f 5188 4904 4616 +f 5188 4616 4792 +f 4904 4640 4420 +f 4904 4420 4616 +f 4640 4464 4092 +f 4640 4092 4420 +f 4464 4100 3884 +f 4464 3884 4092 +f 4100 3844 3668 +f 4100 3668 3884 +f 3844 3584 3304 +f 3844 3304 3668 +f 3584 3208 3048 +f 3584 3048 3304 +f 3208 2968 2832 +f 3208 2832 3048 +f 2968 2556 2396 +f 2968 2396 2832 +f 2556 2196 2084 +f 2556 2084 2396 +f 2196 1932 1852 +f 2196 1852 2084 +f 1932 1376 1280 +f 1932 1280 1852 +f 1376 984 952 +f 1376 952 1280 +f 951 1279 1215 +f 951 1215 927 +f 1279 1851 1615 +f 1279 1615 1215 +f 1851 2083 2011 +f 1851 2011 1615 +f 2083 2395 2243 +f 2083 2243 2011 +f 2395 2831 2507 +f 2395 2507 2243 +f 2831 3047 2879 +f 2831 2879 2507 +f 3047 3303 3095 +f 3047 3095 2879 +f 3303 3667 3319 +f 3303 3319 3095 +f 3667 3883 3659 +f 3667 3659 3319 +f 3883 4091 3835 +f 3883 3835 3659 +f 4091 4419 4035 +f 4091 4035 3835 +f 4419 4615 4283 +f 4419 4283 4035 +f 4615 4791 4527 +f 4615 4527 4283 +f 4791 5047 4695 +f 4791 4695 4527 +f 5047 5275 4871 +f 5047 4871 4695 +f 5275 5451 5119 +f 5275 5119 4871 +f 5451 5643 5291 +f 5451 5291 5119 +f 5643 5879 5403 +f 5643 5403 5291 +f 5879 6007 5571 +f 5879 5571 5403 +f 6007 6151 5803 +f 6007 5803 5571 +f 6151 6343 5927 +f 6151 5927 5803 +f 6343 6531 6063 +f 6343 6063 5927 +f 6531 6651 6183 +f 6531 6183 6063 +f 6651 6771 6311 +f 6651 6311 6183 +f 6771 6899 6491 +f 6771 6491 6311 +f 6899 7087 6579 +f 6899 6579 6491 +f 7087 7207 6675 +f 7087 6675 6579 +f 7207 7279 6763 +f 7207 6763 6675 +f 7279 7375 6867 +f 7279 6867 6763 +f 7375 7455 6987 +f 7375 6987 6867 +f 7455 7591 7095 +f 7455 7095 6987 +f 7591 7683 7159 +f 7591 7159 7095 +f 7683 7763 7223 +f 7683 7223 7159 +f 7763 7795 7263 +f 7763 7263 7223 +f 7795 7851 7311 +f 7795 7311 7263 +f 7851 7923 7383 +f 7851 7383 7311 +f 7923 7979 7431 +f 7923 7431 7383 +f 7979 8003 7447 +f 7979 7447 7431 +f 8003 8019 7487 +f 8003 7487 7447 +f 8019 8067 7535 +f 8019 7535 7487 +f 8067 8107 7567 +f 8067 7567 7535 +f 8107 8131 7575 +f 8107 7575 7567 +f 8131 8139 7583 +f 8131 7583 7575 +f 8139 8140 7584 +f 8139 7584 7583 +f 8140 8132 7576 +f 8140 7576 7584 +f 8132 8108 7568 +f 8132 7568 7576 +f 8108 8068 7536 +f 8108 7536 7568 +f 8068 8020 7488 +f 8068 7488 7536 +f 8020 8004 7448 +f 8020 7448 7488 +f 8004 7980 7432 +f 8004 7432 7448 +f 7980 7924 7384 +f 7980 7384 7432 +f 7924 7852 7312 +f 7924 7312 7384 +f 7852 7796 7264 +f 7852 7264 7312 +f 7796 7764 7224 +f 7796 7224 7264 +f 7764 7684 7160 +f 7764 7160 7224 +f 7684 7592 7096 +f 7684 7096 7160 +f 7592 7456 6988 +f 7592 6988 7096 +f 7456 7376 6868 +f 7456 6868 6988 +f 7376 7280 6764 +f 7376 6764 6868 +f 7280 7208 6676 +f 7280 6676 6764 +f 7208 7088 6580 +f 7208 6580 6676 +f 7088 6900 6492 +f 7088 6492 6580 +f 6900 6772 6312 +f 6900 6312 6492 +f 6772 6652 6184 +f 6772 6184 6312 +f 6652 6532 6064 +f 6652 6064 6184 +f 6532 6344 5928 +f 6532 5928 6064 +f 6344 6152 5804 +f 6344 5804 5928 +f 6152 6008 5572 +f 6152 5572 5804 +f 6008 5880 5404 +f 6008 5404 5572 +f 5880 5644 5292 +f 5880 5292 5404 +f 5644 5452 5120 +f 5644 5120 5292 +f 5452 5276 4872 +f 5452 4872 5120 +f 5276 5048 4696 +f 5276 4696 4872 +f 5048 4792 4528 +f 5048 4528 4696 +f 4792 4616 4284 +f 4792 4284 4528 +f 4616 4420 4036 +f 4616 4036 4284 +f 4420 4092 3836 +f 4420 3836 4036 +f 4092 3884 3660 +f 4092 3660 3836 +f 3884 3668 3320 +f 3884 3320 3660 +f 3668 3304 3096 +f 3668 3096 3320 +f 3304 3048 2880 +f 3304 2880 3096 +f 3048 2832 2508 +f 3048 2508 2880 +f 2832 2396 2244 +f 2832 2244 2508 +f 2396 2084 2012 +f 2396 2012 2244 +f 2084 1852 1616 +f 2084 1616 2012 +f 1852 1280 1216 +f 1852 1216 1616 +f 1280 952 928 +f 1280 928 1216 +f 927 1215 1143 +f 927 1143 895 +f 1215 1615 1455 +f 1215 1455 1143 +f 1615 2011 1899 +f 1615 1899 1455 +f 2011 2243 2099 +f 2011 2099 1899 +f 2243 2507 2323 +f 2243 2323 2099 +f 2507 2879 2627 +f 2507 2627 2323 +f 2879 3095 2903 +f 2879 2903 2627 +f 3095 3319 3087 +f 3095 3087 2903 +f 3319 3659 3295 +f 3319 3295 3087 +f 3659 3835 3567 +f 3659 3567 3295 +f 3835 4035 3771 +f 3835 3771 3567 +f 4035 4283 3939 +f 4035 3939 3771 +f 4283 4527 4147 +f 4283 4147 3939 +f 4527 4695 4371 +f 4527 4371 4147 +f 4695 4871 4543 +f 4695 4543 4371 +f 4871 5119 4671 +f 4871 4671 4543 +f 5119 5291 4823 +f 5119 4823 4671 +f 5291 5403 5007 +f 5291 5007 4823 +f 5403 5571 5211 +f 5403 5211 5007 +f 5571 5803 5323 +f 5571 5323 5211 +f 5803 5927 5459 +f 5803 5459 5323 +f 5927 6063 5555 +f 5927 5555 5459 +f 6063 6183 5715 +f 6063 5715 5555 +f 6183 6311 5895 +f 6183 5895 5715 +f 6311 6491 5967 +f 6311 5967 5895 +f 6491 6579 6071 +f 6491 6071 5967 +f 6579 6675 6143 +f 6579 6143 6071 +f 6675 6763 6255 +f 6675 6255 6143 +f 6763 6867 6367 +f 6763 6367 6255 +f 6867 6987 6483 +f 6867 6483 6367 +f 6987 7095 6547 +f 6987 6547 6483 +f 7095 7159 6627 +f 7095 6627 6547 +f 7159 7223 6667 +f 7159 6667 6627 +f 7223 7263 6707 +f 7223 6707 6667 +f 7263 7311 6747 +f 7263 6747 6707 +f 7311 7383 6827 +f 7311 6827 6747 +f 7383 7431 6859 +f 7383 6859 6827 +f 7431 7447 6883 +f 7431 6883 6859 +f 7447 7487 6915 +f 7447 6915 6883 +f 7487 7535 6963 +f 7487 6963 6915 +f 7535 7567 6979 +f 7535 6979 6963 +f 7567 7575 7011 +f 7567 7011 6979 +f 7575 7583 7019 +f 7575 7019 7011 +f 7583 7584 7020 +f 7583 7020 7019 +f 7584 7576 7012 +f 7584 7012 7020 +f 7576 7568 6980 +f 7576 6980 7012 +f 7568 7536 6964 +f 7568 6964 6980 +f 7536 7488 6916 +f 7536 6916 6964 +f 7488 7448 6884 +f 7488 6884 6916 +f 7448 7432 6860 +f 7448 6860 6884 +f 7432 7384 6828 +f 7432 6828 6860 +f 7384 7312 6748 +f 7384 6748 6828 +f 7312 7264 6708 +f 7312 6708 6748 +f 7264 7224 6668 +f 7264 6668 6708 +f 7224 7160 6628 +f 7224 6628 6668 +f 7160 7096 6548 +f 7160 6548 6628 +f 7096 6988 6484 +f 7096 6484 6548 +f 6988 6868 6368 +f 6988 6368 6484 +f 6868 6764 6256 +f 6868 6256 6368 +f 6764 6676 6144 +f 6764 6144 6256 +f 6676 6580 6072 +f 6676 6072 6144 +f 6580 6492 5968 +f 6580 5968 6072 +f 6492 6312 5896 +f 6492 5896 5968 +f 6312 6184 5716 +f 6312 5716 5896 +f 6184 6064 5556 +f 6184 5556 5716 +f 6064 5928 5460 +f 6064 5460 5556 +f 5928 5804 5324 +f 5928 5324 5460 +f 5804 5572 5212 +f 5804 5212 5324 +f 5572 5404 5008 +f 5572 5008 5212 +f 5404 5292 4824 +f 5404 4824 5008 +f 5292 5120 4672 +f 5292 4672 4824 +f 5120 4872 4544 +f 5120 4544 4672 +f 4872 4696 4372 +f 4872 4372 4544 +f 4696 4528 4148 +f 4696 4148 4372 +f 4528 4284 3940 +f 4528 3940 4148 +f 4284 4036 3772 +f 4284 3772 3940 +f 4036 3836 3568 +f 4036 3568 3772 +f 3836 3660 3296 +f 3836 3296 3568 +f 3660 3320 3088 +f 3660 3088 3296 +f 3320 3096 2904 +f 3320 2904 3088 +f 3096 2880 2628 +f 3096 2628 2904 +f 2880 2508 2324 +f 2880 2324 2628 +f 2508 2244 2100 +f 2508 2100 2324 +f 2244 2012 1900 +f 2244 1900 2100 +f 2012 1616 1456 +f 2012 1456 1900 +f 1616 1216 1144 +f 1616 1144 1456 +f 1216 928 896 +f 1216 896 1144 +f 895 1143 1079 +f 895 1079 879 +f 1143 1455 1343 +f 1143 1343 1079 +f 1455 1899 1711 +f 1455 1711 1343 +f 1899 2099 1963 +f 1899 1963 1711 +f 2099 2323 2163 +f 2099 2163 1963 +f 2323 2627 2363 +f 2323 2363 2163 +f 2627 2903 2619 +f 2627 2619 2363 +f 2903 3087 2871 +f 2903 2871 2619 +f 3087 3295 3039 +f 3087 3039 2871 +f 3295 3567 3199 +f 3295 3199 3039 +f 3567 3771 3415 +f 3567 3415 3199 +f 3771 3939 3675 +f 3771 3675 3415 +f 3939 4147 3803 +f 3939 3803 3675 +f 4147 4371 3955 +f 4147 3955 3803 +f 4371 4543 4083 +f 4371 4083 3955 +f 4543 4671 4267 +f 4543 4267 4083 +f 4671 4823 4479 +f 4671 4479 4267 +f 4823 5007 4575 +f 4823 4575 4479 +f 5007 5211 4719 +f 5007 4719 4575 +f 5211 5323 4815 +f 5211 4815 4719 +f 5323 5459 4967 +f 5323 4967 4815 +f 5459 5555 5159 +f 5459 5159 4967 +f 5555 5715 5251 +f 5555 5251 5159 +f 5715 5895 5339 +f 5715 5339 5251 +f 5895 5967 5411 +f 5895 5411 5339 +f 5967 6071 5515 +f 5967 5515 5411 +f 6071 6143 5611 +f 6071 5611 5515 +f 6143 6255 5723 +f 6143 5723 5611 +f 6255 6367 5847 +f 6255 5847 5723 +f 6367 6483 5911 +f 6367 5911 5847 +f 6483 6547 5959 +f 6483 5959 5911 +f 6547 6627 6023 +f 6547 6023 5959 +f 6627 6667 6095 +f 6627 6095 6023 +f 6667 6707 6111 +f 6667 6111 6095 +f 6707 6747 6167 +f 6707 6167 6111 +f 6747 6827 6223 +f 6747 6223 6167 +f 6827 6859 6263 +f 6827 6263 6223 +f 6859 6883 6303 +f 6859 6303 6263 +f 6883 6915 6319 +f 6883 6319 6303 +f 6915 6963 6351 +f 6915 6351 6319 +f 6963 6979 6383 +f 6963 6383 6351 +f 6979 7011 6407 +f 6979 6407 6383 +f 7011 7019 6423 +f 7011 6423 6407 +f 7019 7020 6424 +f 7019 6424 6423 +f 7020 7012 6408 +f 7020 6408 6424 +f 7012 6980 6384 +f 7012 6384 6408 +f 6980 6964 6352 +f 6980 6352 6384 +f 6964 6916 6320 +f 6964 6320 6352 +f 6916 6884 6304 +f 6916 6304 6320 +f 6884 6860 6264 +f 6884 6264 6304 +f 6860 6828 6224 +f 6860 6224 6264 +f 6828 6748 6168 +f 6828 6168 6224 +f 6748 6708 6112 +f 6748 6112 6168 +f 6708 6668 6096 +f 6708 6096 6112 +f 6668 6628 6024 +f 6668 6024 6096 +f 6628 6548 5960 +f 6628 5960 6024 +f 6548 6484 5912 +f 6548 5912 5960 +f 6484 6368 5848 +f 6484 5848 5912 +f 6368 6256 5724 +f 6368 5724 5848 +f 6256 6144 5612 +f 6256 5612 5724 +f 6144 6072 5516 +f 6144 5516 5612 +f 6072 5968 5412 +f 6072 5412 5516 +f 5968 5896 5340 +f 5968 5340 5412 +f 5896 5716 5252 +f 5896 5252 5340 +f 5716 5556 5160 +f 5716 5160 5252 +f 5556 5460 4968 +f 5556 4968 5160 +f 5460 5324 4816 +f 5460 4816 4968 +f 5324 5212 4720 +f 5324 4720 4816 +f 5212 5008 4576 +f 5212 4576 4720 +f 5008 4824 4480 +f 5008 4480 4576 +f 4824 4672 4268 +f 4824 4268 4480 +f 4672 4544 4084 +f 4672 4084 4268 +f 4544 4372 3956 +f 4544 3956 4084 +f 4372 4148 3804 +f 4372 3804 3956 +f 4148 3940 3676 +f 4148 3676 3804 +f 3940 3772 3416 +f 3940 3416 3676 +f 3772 3568 3200 +f 3772 3200 3416 +f 3568 3296 3040 +f 3568 3040 3200 +f 3296 3088 2872 +f 3296 2872 3040 +f 3088 2904 2620 +f 3088 2620 2872 +f 2904 2628 2364 +f 2904 2364 2620 +f 2628 2324 2164 +f 2628 2164 2364 +f 2324 2100 1964 +f 2324 1964 2164 +f 2100 1900 1712 +f 2100 1712 1964 +f 1900 1456 1344 +f 1900 1344 1712 +f 1456 1144 1080 +f 1456 1080 1344 +f 1144 896 880 +f 1144 880 1080 +f 879 1079 1015 +f 879 1015 847 +f 1079 1343 1231 +f 1079 1231 1015 +f 1343 1711 1487 +f 1343 1487 1231 +f 1711 1963 1867 +f 1711 1867 1487 +f 1963 2163 2019 +f 1963 2019 1867 +f 2163 2363 2155 +f 2163 2155 2019 +f 2363 2619 2315 +f 2363 2315 2155 +f 2619 2871 2499 +f 2619 2499 2315 +f 2871 3039 2823 +f 2871 2823 2499 +f 3039 3199 2959 +f 3039 2959 2823 +f 3199 3415 3063 +f 3199 3063 2959 +f 3415 3675 3215 +f 3415 3215 3063 +f 3675 3803 3383 +f 3675 3383 3215 +f 3803 3955 3615 +f 3803 3615 3383 +f 3955 4083 3739 +f 3955 3739 3615 +f 4083 4267 3859 +f 4083 3859 3739 +f 4267 4479 3971 +f 4267 3971 3859 +f 4479 4575 4067 +f 4479 4067 3971 +f 4575 4719 4219 +f 4575 4219 4067 +f 4719 4815 4411 +f 4719 4411 4219 +f 4815 4967 4511 +f 4815 4511 4411 +f 4967 5159 4591 +f 4967 4591 4511 +f 5159 5251 4679 +f 5159 4679 4591 +f 5251 5339 4767 +f 5251 4767 4679 +f 5339 5411 4863 +f 5339 4863 4767 +f 5411 5515 4959 +f 5411 4959 4863 +f 5515 5611 5095 +f 5515 5095 4959 +f 5611 5723 5179 +f 5611 5179 5095 +f 5723 5847 5243 +f 5723 5243 5179 +f 5847 5911 5307 +f 5847 5307 5243 +f 5911 5959 5355 +f 5911 5355 5307 +f 5959 6023 5387 +f 5959 5387 5355 +f 6023 6095 5483 +f 6023 5483 5387 +f 6095 6111 5507 +f 6095 5507 5483 +f 6111 6167 5539 +f 6111 5539 5507 +f 6167 6223 5595 +f 6167 5595 5539 +f 6223 6263 5627 +f 6223 5627 5595 +f 6263 6303 5667 +f 6263 5667 5627 +f 6303 6319 5675 +f 6303 5675 5667 +f 6319 6351 5707 +f 6319 5707 5675 +f 6351 6383 5747 +f 6351 5747 5707 +f 6383 6407 5763 +f 6383 5763 5747 +f 6407 6423 5771 +f 6407 5771 5763 +f 6423 6424 5772 +f 6423 5772 5771 +f 6424 6408 5764 +f 6424 5764 5772 +f 6408 6384 5748 +f 6408 5748 5764 +f 6384 6352 5708 +f 6384 5708 5748 +f 6352 6320 5676 +f 6352 5676 5708 +f 6320 6304 5668 +f 6320 5668 5676 +f 6304 6264 5628 +f 6304 5628 5668 +f 6264 6224 5596 +f 6264 5596 5628 +f 6224 6168 5540 +f 6224 5540 5596 +f 6168 6112 5508 +f 6168 5508 5540 +f 6112 6096 5484 +f 6112 5484 5508 +f 6096 6024 5388 +f 6096 5388 5484 +f 6024 5960 5356 +f 6024 5356 5388 +f 5960 5912 5308 +f 5960 5308 5356 +f 5912 5848 5244 +f 5912 5244 5308 +f 5848 5724 5180 +f 5848 5180 5244 +f 5724 5612 5096 +f 5724 5096 5180 +f 5612 5516 4960 +f 5612 4960 5096 +f 5516 5412 4864 +f 5516 4864 4960 +f 5412 5340 4768 +f 5412 4768 4864 +f 5340 5252 4680 +f 5340 4680 4768 +f 5252 5160 4592 +f 5252 4592 4680 +f 5160 4968 4512 +f 5160 4512 4592 +f 4968 4816 4412 +f 4968 4412 4512 +f 4816 4720 4220 +f 4816 4220 4412 +f 4720 4576 4068 +f 4720 4068 4220 +f 4576 4480 3972 +f 4576 3972 4068 +f 4480 4268 3860 +f 4480 3860 3972 +f 4268 4084 3740 +f 4268 3740 3860 +f 4084 3956 3616 +f 4084 3616 3740 +f 3956 3804 3384 +f 3956 3384 3616 +f 3804 3676 3216 +f 3804 3216 3384 +f 3676 3416 3064 +f 3676 3064 3216 +f 3416 3200 2960 +f 3416 2960 3064 +f 3200 3040 2824 +f 3200 2824 2960 +f 3040 2872 2500 +f 3040 2500 2824 +f 2872 2620 2316 +f 2872 2316 2500 +f 2620 2364 2156 +f 2620 2156 2316 +f 2364 2164 2020 +f 2364 2020 2156 +f 2164 1964 1868 +f 2164 1868 2020 +f 1964 1712 1488 +f 1964 1488 1868 +f 1712 1344 1232 +f 1712 1232 1488 +f 1344 1080 1016 +f 1344 1016 1232 +f 1080 880 848 +f 1080 848 1016 +f 847 1015 967 +f 847 967 831 +f 1015 1231 1111 +f 1015 1111 967 +f 1231 1487 1295 +f 1231 1295 1111 +f 1487 1867 1519 +f 1487 1519 1295 +f 1867 2019 1859 +f 1867 1859 1519 +f 2019 2155 1955 +f 2019 1955 1859 +f 2155 2315 2091 +f 2155 2091 1955 +f 2315 2499 2235 +f 2315 2235 2091 +f 2499 2823 2387 +f 2499 2387 2235 +f 2823 2959 2547 +f 2823 2547 2387 +f 2959 3063 2807 +f 2959 2807 2547 +f 3063 3215 2911 +f 3063 2911 2807 +f 3215 3383 2991 +f 3215 2991 2911 +f 3383 3615 3135 +f 3383 3135 2991 +f 3615 3739 3239 +f 3615 3239 3135 +f 3739 3859 3367 +f 3739 3367 3239 +f 3859 3971 3503 +f 3859 3503 3367 +f 3971 4067 3707 +f 3971 3707 3503 +f 4067 4219 3755 +f 4067 3755 3707 +f 4219 4411 3851 +f 4219 3851 3755 +f 4411 4511 3915 +f 4411 3915 3851 +f 4511 4591 4011 +f 4511 4011 3915 +f 4591 4679 4123 +f 4591 4123 4011 +f 4679 4767 4195 +f 4679 4195 4123 +f 4767 4863 4315 +f 4767 4315 4195 +f 4863 4959 4455 +f 4863 4455 4315 +f 4959 5095 4495 +f 4959 4495 4455 +f 5095 5179 4559 +f 5095 4559 4495 +f 5179 5243 4607 +f 5179 4607 4559 +f 5243 5307 4655 +f 5243 4655 4607 +f 5307 5355 4727 +f 5307 4727 4655 +f 5355 5387 4751 +f 5355 4751 4727 +f 5387 5483 4783 +f 5387 4783 4751 +f 5483 5507 4847 +f 5483 4847 4783 +f 5507 5539 4895 +f 5507 4895 4847 +f 5539 5595 4935 +f 5539 4935 4895 +f 5595 5627 4951 +f 5595 4951 4935 +f 5627 5667 4999 +f 5627 4999 4951 +f 5667 5675 5015 +f 5667 5015 4999 +f 5675 5707 5039 +f 5675 5039 5015 +f 5707 5747 5071 +f 5707 5071 5039 +f 5747 5763 5079 +f 5747 5079 5071 +f 5763 5771 5087 +f 5763 5087 5079 +f 5771 5772 5088 +f 5771 5088 5087 +f 5772 5764 5080 +f 5772 5080 5088 +f 5764 5748 5072 +f 5764 5072 5080 +f 5748 5708 5040 +f 5748 5040 5072 +f 5708 5676 5016 +f 5708 5016 5040 +f 5676 5668 5000 +f 5676 5000 5016 +f 5668 5628 4952 +f 5668 4952 5000 +f 5628 5596 4936 +f 5628 4936 4952 +f 5596 5540 4896 +f 5596 4896 4936 +f 5540 5508 4848 +f 5540 4848 4896 +f 5508 5484 4784 +f 5508 4784 4848 +f 5484 5388 4752 +f 5484 4752 4784 +f 5388 5356 4728 +f 5388 4728 4752 +f 5356 5308 4656 +f 5356 4656 4728 +f 5308 5244 4608 +f 5308 4608 4656 +f 5244 5180 4560 +f 5244 4560 4608 +f 5180 5096 4496 +f 5180 4496 4560 +f 5096 4960 4456 +f 5096 4456 4496 +f 4960 4864 4316 +f 4960 4316 4456 +f 4864 4768 4196 +f 4864 4196 4316 +f 4768 4680 4124 +f 4768 4124 4196 +f 4680 4592 4012 +f 4680 4012 4124 +f 4592 4512 3916 +f 4592 3916 4012 +f 4512 4412 3852 +f 4512 3852 3916 +f 4412 4220 3756 +f 4412 3756 3852 +f 4220 4068 3708 +f 4220 3708 3756 +f 4068 3972 3504 +f 4068 3504 3708 +f 3972 3860 3368 +f 3972 3368 3504 +f 3860 3740 3240 +f 3860 3240 3368 +f 3740 3616 3136 +f 3740 3136 3240 +f 3616 3384 2992 +f 3616 2992 3136 +f 3384 3216 2912 +f 3384 2912 2992 +f 3216 3064 2808 +f 3216 2808 2912 +f 3064 2960 2548 +f 3064 2548 2808 +f 2960 2824 2388 +f 2960 2388 2548 +f 2824 2500 2236 +f 2824 2236 2388 +f 2500 2316 2092 +f 2500 2092 2236 +f 2316 2156 1956 +f 2316 1956 2092 +f 2156 2020 1860 +f 2156 1860 1956 +f 2020 1868 1520 +f 2020 1520 1860 +f 1868 1488 1296 +f 1868 1296 1520 +f 1488 1232 1112 +f 1488 1112 1296 +f 1232 1016 968 +f 1232 968 1112 +f 1016 848 832 +f 1016 832 968 +f 831 967 911 +f 831 911 807 +f 967 1111 1031 +f 967 1031 911 +f 1111 1295 1151 +f 1111 1151 1031 +f 1295 1519 1287 +f 1295 1287 1151 +f 1519 1859 1471 +f 1519 1471 1287 +f 1859 1955 1703 +f 1859 1703 1471 +f 1955 2091 1891 +f 1955 1891 1703 +f 2091 2235 2003 +f 2091 2003 1891 +f 2235 2387 2075 +f 2235 2075 2003 +f 2387 2547 2187 +f 2387 2187 2075 +f 2547 2807 2299 +f 2547 2299 2187 +f 2807 2911 2419 +f 2807 2419 2299 +f 2911 2991 2571 +f 2911 2571 2419 +f 2991 3135 2755 +f 2991 2755 2571 +f 3135 3239 2855 +f 3135 2855 2755 +f 3239 3367 2943 +f 3239 2943 2855 +f 3367 3503 3007 +f 3367 3007 2943 +f 3503 3707 3103 +f 3503 3103 3007 +f 3707 3755 3167 +f 3707 3167 3103 +f 3755 3851 3263 +f 3755 3263 3167 +f 3851 3915 3343 +f 3851 3343 3263 +f 3915 4011 3455 +f 3915 3455 3343 +f 4011 4123 3559 +f 4011 3559 3455 +f 4123 4195 3691 +f 4123 3691 3559 +f 4195 4315 3723 +f 4195 3723 3691 +f 4315 4455 3787 +f 4315 3787 3723 +f 4455 4495 3819 +f 4455 3819 3787 +f 4495 4559 3891 +f 4495 3891 3819 +f 4559 4607 3907 +f 4559 3907 3891 +f 4607 4655 3987 +f 4607 3987 3907 +f 4655 4727 4003 +f 4655 4003 3987 +f 4727 4751 4051 +f 4727 4051 4003 +f 4751 4783 4115 +f 4751 4115 4051 +f 4783 4847 4163 +f 4783 4163 4115 +f 4847 4895 4179 +f 4847 4179 4163 +f 4895 4935 4203 +f 4895 4203 4179 +f 4935 4951 4243 +f 4935 4243 4203 +f 4951 4999 4259 +f 4951 4259 4243 +f 4999 5015 4299 +f 4999 4299 4259 +f 5015 5039 4323 +f 5015 4323 4299 +f 5039 5071 4347 +f 5039 4347 4323 +f 5071 5079 4355 +f 5071 4355 4347 +f 5079 5087 4363 +f 5079 4363 4355 +f 5087 5088 4364 +f 5087 4364 4363 +f 5088 5080 4356 +f 5088 4356 4364 +f 5080 5072 4348 +f 5080 4348 4356 +f 5072 5040 4324 +f 5072 4324 4348 +f 5040 5016 4300 +f 5040 4300 4324 +f 5016 5000 4260 +f 5016 4260 4300 +f 5000 4952 4244 +f 5000 4244 4260 +f 4952 4936 4204 +f 4952 4204 4244 +f 4936 4896 4180 +f 4936 4180 4204 +f 4896 4848 4164 +f 4896 4164 4180 +f 4848 4784 4116 +f 4848 4116 4164 +f 4784 4752 4052 +f 4784 4052 4116 +f 4752 4728 4004 +f 4752 4004 4052 +f 4728 4656 3988 +f 4728 3988 4004 +f 4656 4608 3908 +f 4656 3908 3988 +f 4608 4560 3892 +f 4608 3892 3908 +f 4560 4496 3820 +f 4560 3820 3892 +f 4496 4456 3788 +f 4496 3788 3820 +f 4456 4316 3724 +f 4456 3724 3788 +f 4316 4196 3692 +f 4316 3692 3724 +f 4196 4124 3560 +f 4196 3560 3692 +f 4124 4012 3456 +f 4124 3456 3560 +f 4012 3916 3344 +f 4012 3344 3456 +f 3916 3852 3264 +f 3916 3264 3344 +f 3852 3756 3168 +f 3852 3168 3264 +f 3756 3708 3104 +f 3756 3104 3168 +f 3708 3504 3008 +f 3708 3008 3104 +f 3504 3368 2944 +f 3504 2944 3008 +f 3368 3240 2856 +f 3368 2856 2944 +f 3240 3136 2756 +f 3240 2756 2856 +f 3136 2992 2572 +f 3136 2572 2756 +f 2992 2912 2420 +f 2992 2420 2572 +f 2912 2808 2300 +f 2912 2300 2420 +f 2808 2548 2188 +f 2808 2188 2300 +f 2548 2388 2076 +f 2548 2076 2188 +f 2388 2236 2004 +f 2388 2004 2076 +f 2236 2092 1892 +f 2236 1892 2004 +f 2092 1956 1704 +f 2092 1704 1892 +f 1956 1860 1472 +f 1956 1472 1704 +f 1860 1520 1288 +f 1860 1288 1472 +f 1520 1296 1152 +f 1520 1152 1288 +f 1296 1112 1032 +f 1296 1032 1152 +f 1112 968 912 +f 1112 912 1032 +f 968 832 808 +f 968 808 912 +f 807 911 855 +f 807 855 783 +f 911 1031 935 +f 911 935 855 +f 1031 1151 1023 +f 1031 1023 935 +f 1151 1287 1103 +f 1151 1103 1023 +f 1287 1471 1223 +f 1287 1223 1103 +f 1471 1703 1335 +f 1471 1335 1223 +f 1703 1891 1447 +f 1703 1447 1335 +f 1891 2003 1607 +f 1891 1607 1447 +f 2003 2075 1843 +f 2003 1843 1607 +f 2075 2187 1923 +f 2075 1923 1843 +f 2187 2299 1971 +f 2187 1971 1923 +f 2299 2419 2043 +f 2299 2043 1971 +f 2419 2571 2123 +f 2419 2123 2043 +f 2571 2755 2203 +f 2571 2203 2123 +f 2755 2855 2267 +f 2755 2267 2203 +f 2855 2943 2347 +f 2855 2347 2267 +f 2943 3007 2443 +f 2943 2443 2347 +f 3007 3103 2515 +f 3007 2515 2443 +f 3103 3167 2643 +f 3103 2643 2515 +f 3167 3263 2791 +f 3167 2791 2643 +f 3263 3343 2839 +f 3263 2839 2791 +f 3343 3455 2887 +f 3343 2887 2839 +f 3455 3559 2927 +f 3455 2927 2887 +f 3559 3691 2975 +f 3559 2975 2927 +f 3691 3723 3023 +f 3691 3023 2975 +f 3723 3787 3055 +f 3723 3055 3023 +f 3787 3819 3119 +f 3787 3119 3055 +f 3819 3891 3151 +f 3819 3151 3119 +f 3891 3907 3183 +f 3891 3183 3151 +f 3907 3987 3231 +f 3907 3231 3183 +f 3987 4003 3279 +f 3987 3279 3231 +f 4003 4051 3311 +f 4003 3311 3279 +f 4051 4115 3335 +f 4051 3335 3311 +f 4115 4163 3399 +f 4115 3399 3335 +f 4163 4179 3431 +f 4163 3431 3399 +f 4179 4203 3447 +f 4179 3447 3431 +f 4203 4243 3479 +f 4203 3479 3447 +f 4243 4259 3495 +f 4243 3495 3479 +f 4259 4299 3519 +f 4259 3519 3495 +f 4299 4323 3535 +f 4299 3535 3519 +f 4323 4347 3551 +f 4323 3551 3535 +f 4347 4355 3575 +f 4347 3575 3551 +f 4355 4363 3591 +f 4355 3591 3575 +f 4363 4364 3592 +f 4363 3592 3591 +f 4364 4356 3576 +f 4364 3576 3592 +f 4356 4348 3552 +f 4356 3552 3576 +f 4348 4324 3536 +f 4348 3536 3552 +f 4324 4300 3520 +f 4324 3520 3536 +f 4300 4260 3496 +f 4300 3496 3520 +f 4260 4244 3480 +f 4260 3480 3496 +f 4244 4204 3448 +f 4244 3448 3480 +f 4204 4180 3432 +f 4204 3432 3448 +f 4180 4164 3400 +f 4180 3400 3432 +f 4164 4116 3336 +f 4164 3336 3400 +f 4116 4052 3312 +f 4116 3312 3336 +f 4052 4004 3280 +f 4052 3280 3312 +f 4004 3988 3232 +f 4004 3232 3280 +f 3988 3908 3184 +f 3988 3184 3232 +f 3908 3892 3152 +f 3908 3152 3184 +f 3892 3820 3120 +f 3892 3120 3152 +f 3820 3788 3056 +f 3820 3056 3120 +f 3788 3724 3024 +f 3788 3024 3056 +f 3724 3692 2976 +f 3724 2976 3024 +f 3692 3560 2928 +f 3692 2928 2976 +f 3560 3456 2888 +f 3560 2888 2928 +f 3456 3344 2840 +f 3456 2840 2888 +f 3344 3264 2792 +f 3344 2792 2840 +f 3264 3168 2644 +f 3264 2644 2792 +f 3168 3104 2516 +f 3168 2516 2644 +f 3104 3008 2444 +f 3104 2444 2516 +f 3008 2944 2348 +f 3008 2348 2444 +f 2944 2856 2268 +f 2944 2268 2348 +f 2856 2756 2204 +f 2856 2204 2268 +f 2756 2572 2124 +f 2756 2124 2204 +f 2572 2420 2044 +f 2572 2044 2124 +f 2420 2300 1972 +f 2420 1972 2044 +f 2300 2188 1924 +f 2300 1924 1972 +f 2188 2076 1844 +f 2188 1844 1924 +f 2076 2004 1608 +f 2076 1608 1844 +f 2004 1892 1448 +f 2004 1448 1608 +f 1892 1704 1336 +f 1892 1336 1448 +f 1704 1472 1224 +f 1704 1224 1336 +f 1472 1288 1104 +f 1472 1104 1224 +f 1288 1152 1024 +f 1288 1024 1104 +f 1152 1032 936 +f 1152 936 1024 +f 1032 912 856 +f 1032 856 936 +f 912 808 784 +f 912 784 856 +f 783 855 815 +f 783 815 775 +f 855 935 863 +f 855 863 815 +f 935 1023 903 +f 935 903 863 +f 1023 1103 959 +f 1023 959 903 +f 1103 1223 1007 +f 1103 1007 959 +f 1223 1335 1071 +f 1223 1071 1007 +f 1335 1447 1135 +f 1335 1135 1071 +f 1447 1607 1207 +f 1447 1207 1135 +f 1607 1843 1271 +f 1607 1271 1207 +f 1843 1923 1367 +f 1843 1367 1271 +f 1923 1971 1431 +f 1923 1431 1367 +f 1971 2043 1535 +f 1971 1535 1431 +f 2043 2123 1639 +f 2043 1639 1535 +f 2123 2203 1815 +f 2123 1815 1639 +f 2203 2267 1875 +f 2203 1875 1815 +f 2267 2347 1907 +f 2267 1907 1875 +f 2347 2443 1939 +f 2347 1939 1907 +f 2443 2515 1987 +f 2443 1987 1939 +f 2515 2643 2027 +f 2515 2027 1987 +f 2643 2791 2059 +f 2643 2059 2027 +f 2791 2839 2107 +f 2791 2107 2059 +f 2839 2887 2139 +f 2839 2139 2107 +f 2887 2927 2171 +f 2887 2171 2139 +f 2927 2975 2219 +f 2927 2219 2171 +f 2975 3023 2251 +f 2975 2251 2219 +f 3023 3055 2283 +f 3023 2283 2251 +f 3055 3119 2331 +f 3055 2331 2283 +f 3119 3151 2371 +f 3119 2371 2331 +f 3151 3183 2403 +f 3151 2403 2371 +f 3183 3231 2435 +f 3183 2435 2403 +f 3231 3279 2467 +f 3231 2467 2435 +f 3279 3311 2483 +f 3279 2483 2467 +f 3311 3335 2523 +f 3311 2523 2483 +f 3335 3399 2563 +f 3335 2563 2523 +f 3399 3431 2595 +f 3399 2595 2563 +f 3431 3447 2611 +f 3431 2611 2595 +f 3447 3479 2651 +f 3447 2651 2611 +f 3479 3495 2675 +f 3479 2675 2651 +f 3495 3519 2683 +f 3495 2683 2675 +f 3519 3535 2699 +f 3519 2699 2683 +f 3535 3551 2715 +f 3535 2715 2699 +f 3551 3575 2723 +f 3551 2723 2715 +f 3575 3591 2731 +f 3575 2731 2723 +f 3591 3592 2732 +f 3591 2732 2731 +f 3592 3576 2724 +f 3592 2724 2732 +f 3576 3552 2716 +f 3576 2716 2724 +f 3552 3536 2700 +f 3552 2700 2716 +f 3536 3520 2684 +f 3536 2684 2700 +f 3520 3496 2676 +f 3520 2676 2684 +f 3496 3480 2652 +f 3496 2652 2676 +f 3480 3448 2612 +f 3480 2612 2652 +f 3448 3432 2596 +f 3448 2596 2612 +f 3432 3400 2564 +f 3432 2564 2596 +f 3400 3336 2524 +f 3400 2524 2564 +f 3336 3312 2484 +f 3336 2484 2524 +f 3312 3280 2468 +f 3312 2468 2484 +f 3280 3232 2436 +f 3280 2436 2468 +f 3232 3184 2404 +f 3232 2404 2436 +f 3184 3152 2372 +f 3184 2372 2404 +f 3152 3120 2332 +f 3152 2332 2372 +f 3120 3056 2284 +f 3120 2284 2332 +f 3056 3024 2252 +f 3056 2252 2284 +f 3024 2976 2220 +f 3024 2220 2252 +f 2976 2928 2172 +f 2976 2172 2220 +f 2928 2888 2140 +f 2928 2140 2172 +f 2888 2840 2108 +f 2888 2108 2140 +f 2840 2792 2060 +f 2840 2060 2108 +f 2792 2644 2028 +f 2792 2028 2060 +f 2644 2516 1988 +f 2644 1988 2028 +f 2516 2444 1940 +f 2516 1940 1988 +f 2444 2348 1908 +f 2444 1908 1940 +f 2348 2268 1876 +f 2348 1876 1908 +f 2268 2204 1816 +f 2268 1816 1876 +f 2204 2124 1640 +f 2204 1640 1816 +f 2124 2044 1536 +f 2124 1536 1640 +f 2044 1972 1432 +f 2044 1432 1536 +f 1972 1924 1368 +f 1972 1368 1432 +f 1924 1844 1272 +f 1924 1272 1368 +f 1844 1608 1208 +f 1844 1208 1272 +f 1608 1448 1136 +f 1608 1136 1208 +f 1448 1336 1072 +f 1448 1072 1136 +f 1336 1224 1008 +f 1336 1008 1072 +f 1224 1104 960 +f 1224 960 1008 +f 1104 1024 904 +f 1104 904 960 +f 1024 936 864 +f 1024 864 904 +f 936 856 816 +f 936 816 864 +f 856 784 776 +f 856 776 816 +f 775 815 767 +f 775 767 759 +f 815 863 791 +f 815 791 767 +f 863 903 799 +f 863 799 791 +f 903 959 823 +f 903 823 799 +f 959 1007 839 +f 959 839 823 +f 1007 1071 871 +f 1007 871 839 +f 1071 1135 887 +f 1071 887 871 +f 1135 1207 919 +f 1135 919 887 +f 1207 1271 943 +f 1207 943 919 +f 1271 1367 975 +f 1271 975 943 +f 1367 1431 991 +f 1367 991 975 +f 1431 1535 1039 +f 1431 1039 991 +f 1535 1639 1055 +f 1535 1055 1039 +f 1639 1815 1087 +f 1639 1087 1055 +f 1815 1875 1119 +f 1815 1119 1087 +f 1875 1907 1159 +f 1875 1159 1119 +f 1907 1939 1175 +f 1907 1175 1159 +f 1939 1987 1191 +f 1939 1191 1175 +f 1987 2027 1239 +f 1987 1239 1191 +f 2027 2059 1255 +f 2027 1255 1239 +f 2059 2107 1303 +f 2059 1303 1255 +f 2107 2139 1319 +f 2107 1319 1303 +f 2139 2171 1351 +f 2139 1351 1319 +f 2171 2219 1383 +f 2171 1383 1351 +f 2219 2251 1399 +f 2219 1399 1383 +f 2251 2283 1415 +f 2251 1415 1399 +f 2283 2331 1463 +f 2283 1463 1415 +f 2331 2371 1495 +f 2331 1495 1463 +f 2371 2403 1511 +f 2371 1511 1495 +f 2403 2435 1551 +f 2403 1551 1511 +f 2435 2467 1567 +f 2435 1567 1551 +f 2467 2483 1583 +f 2467 1583 1567 +f 2483 2523 1599 +f 2483 1599 1583 +f 2523 2563 1631 +f 2523 1631 1599 +f 2563 2595 1663 +f 2563 1663 1631 +f 2595 2611 1679 +f 2595 1679 1663 +f 2611 2651 1695 +f 2611 1695 1679 +f 2651 2675 1719 +f 2651 1719 1695 +f 2675 2683 1735 +f 2675 1735 1719 +f 2683 2699 1751 +f 2683 1751 1735 +f 2699 2715 1767 +f 2699 1767 1751 +f 2715 2723 1775 +f 2715 1775 1767 +f 2723 2731 1783 +f 2723 1783 1775 +f 2731 2732 1784 +f 2731 1784 1783 +f 2732 2724 1776 +f 2732 1776 1784 +f 2724 2716 1768 +f 2724 1768 1776 +f 2716 2700 1752 +f 2716 1752 1768 +f 2700 2684 1736 +f 2700 1736 1752 +f 2684 2676 1720 +f 2684 1720 1736 +f 2676 2652 1696 +f 2676 1696 1720 +f 2652 2612 1680 +f 2652 1680 1696 +f 2612 2596 1664 +f 2612 1664 1680 +f 2596 2564 1632 +f 2596 1632 1664 +f 2564 2524 1600 +f 2564 1600 1632 +f 2524 2484 1584 +f 2524 1584 1600 +f 2484 2468 1568 +f 2484 1568 1584 +f 2468 2436 1552 +f 2468 1552 1568 +f 2436 2404 1512 +f 2436 1512 1552 +f 2404 2372 1496 +f 2404 1496 1512 +f 2372 2332 1464 +f 2372 1464 1496 +f 2332 2284 1416 +f 2332 1416 1464 +f 2284 2252 1400 +f 2284 1400 1416 +f 2252 2220 1384 +f 2252 1384 1400 +f 2220 2172 1352 +f 2220 1352 1384 +f 2172 2140 1320 +f 2172 1320 1352 +f 2140 2108 1304 +f 2140 1304 1320 +f 2108 2060 1256 +f 2108 1256 1304 +f 2060 2028 1240 +f 2060 1240 1256 +f 2028 1988 1192 +f 2028 1192 1240 +f 1988 1940 1176 +f 1988 1176 1192 +f 1940 1908 1160 +f 1940 1160 1176 +f 1908 1876 1120 +f 1908 1120 1160 +f 1876 1816 1088 +f 1876 1088 1120 +f 1816 1640 1056 +f 1816 1056 1088 +f 1640 1536 1040 +f 1640 1040 1056 +f 1536 1432 992 +f 1536 992 1040 +f 1432 1368 976 +f 1432 976 992 +f 1368 1272 944 +f 1368 944 976 +f 1272 1208 920 +f 1272 920 944 +f 1208 1136 888 +f 1208 888 920 +f 1136 1072 872 +f 1136 872 888 +f 1072 1008 840 +f 1072 840 872 +f 1008 960 824 +f 1008 824 840 +f 960 904 800 +f 960 800 824 +f 904 864 792 +f 904 792 800 +f 864 816 768 +f 864 768 792 +f 816 776 760 +f 816 760 768 +f 759 767 231 +f 759 231 639 +f 767 791 711 +f 767 711 231 +f 791 799 471 +f 791 471 711 +f 799 823 143 +f 799 143 471 +f 823 839 23 +f 823 23 143 +f 839 871 175 +f 839 175 23 +f 871 887 663 +f 871 663 175 +f 887 919 559 +f 887 559 663 +f 919 943 119 +f 919 119 559 +f 943 975 287 +f 943 287 119 +f 975 991 367 +f 975 367 287 +f 991 1039 695 +f 991 695 367 +f 1039 1055 255 +f 1039 255 695 +f 1055 1087 279 +f 1055 279 255 +f 1087 1119 295 +f 1087 295 279 +f 1119 1159 415 +f 1119 415 295 +f 1159 1175 671 +f 1159 671 415 +f 1175 1191 351 +f 1175 351 671 +f 1191 1239 167 +f 1191 167 351 +f 1239 1255 551 +f 1239 551 167 +f 1255 1303 15 +f 1255 15 551 +f 1303 1319 159 +f 1303 159 15 +f 1319 1351 383 +f 1319 383 159 +f 1351 1383 47 +f 1351 47 383 +f 1383 1399 151 +f 1383 151 47 +f 1399 1415 391 +f 1399 391 151 +f 1415 1463 543 +f 1415 543 391 +f 1463 1495 319 +f 1463 319 543 +f 1495 1511 703 +f 1495 703 319 +f 1511 1551 63 +f 1511 63 703 +f 1551 1567 343 +f 1551 343 63 +f 1567 1583 647 +f 1567 647 343 +f 1583 1599 263 +f 1583 263 647 +f 1599 1631 271 +f 1599 271 263 +f 1631 1663 631 +f 1631 631 271 +f 1663 1679 103 +f 1663 103 631 +f 1679 1695 463 +f 1679 463 103 +f 1695 1719 655 +f 1695 655 463 +f 1719 1735 735 +f 1719 735 655 +f 1735 1751 111 +f 1735 111 735 +f 1751 1767 359 +f 1751 359 111 +f 1767 1775 439 +f 1767 439 359 +f 1775 1783 55 +f 1775 55 439 +f 1783 1784 56 +f 1783 56 55 +f 1784 1776 440 +f 1784 440 56 +f 1776 1768 360 +f 1776 360 440 +f 1768 1752 112 +f 1768 112 360 +f 1752 1736 736 +f 1752 736 112 +f 1736 1720 656 +f 1736 656 736 +f 1720 1696 464 +f 1720 464 656 +f 1696 1680 104 +f 1696 104 464 +f 1680 1664 632 +f 1680 632 104 +f 1664 1632 272 +f 1664 272 632 +f 1632 1600 264 +f 1632 264 272 +f 1600 1584 648 +f 1600 648 264 +f 1584 1568 344 +f 1584 344 648 +f 1568 1552 64 +f 1568 64 344 +f 1552 1512 704 +f 1552 704 64 +f 1512 1496 320 +f 1512 320 704 +f 1496 1464 544 +f 1496 544 320 +f 1464 1416 392 +f 1464 392 544 +f 1416 1400 152 +f 1416 152 392 +f 1400 1384 48 +f 1400 48 152 +f 1384 1352 384 +f 1384 384 48 +f 1352 1320 160 +f 1352 160 384 +f 1320 1304 16 +f 1320 16 160 +f 1304 1256 552 +f 1304 552 16 +f 1256 1240 168 +f 1256 168 552 +f 1240 1192 352 +f 1240 352 168 +f 1192 1176 672 +f 1192 672 352 +f 1176 1160 416 +f 1176 416 672 +f 1160 1120 296 +f 1160 296 416 +f 1120 1088 280 +f 1120 280 296 +f 1088 1056 256 +f 1088 256 280 +f 1056 1040 696 +f 1056 696 256 +f 1040 992 368 +f 1040 368 696 +f 992 976 288 +f 992 288 368 +f 976 944 120 +f 976 120 288 +f 944 920 560 +f 944 560 120 +f 920 888 664 +f 920 664 560 +f 888 872 176 +f 888 176 664 +f 872 840 24 +f 872 24 176 +f 840 824 144 +f 840 144 24 +f 824 800 472 +f 824 472 144 +f 800 792 712 +f 800 712 472 +f 792 768 232 +f 792 232 712 +f 768 760 640 +f 768 640 232 +f 373 374 194 +f 373 194 193 +f 193 194 74 +f 193 74 73 +f 73 74 714 +f 73 714 713 +f 713 714 610 +f 713 610 609 +f 609 610 674 +f 609 674 673 +f 673 674 482 +f 673 482 481 +f 481 482 122 +f 481 122 121 +f 121 122 738 +f 121 738 737 +f 737 738 394 +f 737 394 393 +f 393 394 306 +f 393 306 305 +f 305 306 570 +f 305 570 569 +f 569 570 322 +f 569 322 321 +f 321 322 442 +f 321 442 441 +f 441 442 426 +f 441 426 425 +f 425 426 82 +f 425 82 81 +f 81 82 178 +f 81 178 177 +f 177 178 578 +f 177 578 577 +f 577 578 26 +f 577 26 25 +f 25 26 234 +f 25 234 233 +f 233 234 506 +f 233 506 505 +f 505 506 522 +f 505 522 521 +f 521 522 490 +f 521 490 489 +f 489 490 210 +f 489 210 209 +f 209 210 594 +f 209 594 593 +f 593 594 2 +f 593 2 1 +f 1 2 602 +f 1 602 601 +f 601 602 212 +f 601 212 211 +f 211 212 492 +f 211 492 491 +f 491 492 524 +f 491 524 523 +f 523 524 508 +f 523 508 507 +f 507 508 236 +f 507 236 235 +f 235 236 28 +f 235 28 27 +f 27 28 580 +f 27 580 579 +f 579 580 186 +f 579 186 185 +f 185 186 84 +f 185 84 83 +f 83 84 418 +f 83 418 417 +f 417 418 444 +f 417 444 443 +f 443 444 324 +f 443 324 323 +f 323 324 562 +f 323 562 561 +f 561 562 298 +f 561 298 297 +f 297 298 396 +f 297 396 395 +f 395 396 746 +f 395 746 745 +f 745 746 130 +f 745 130 129 +f 129 130 474 +f 129 474 473 +f 473 474 676 +f 473 676 675 +f 675 676 612 +f 675 612 611 +f 611 612 716 +f 611 716 715 +f 715 716 66 +f 715 66 65 +f 65 66 196 +f 65 196 195 +f 195 196 370 +f 195 370 372 +f 372 370 198 +f 372 198 197 +f 197 198 68 +f 197 68 67 +f 67 68 718 +f 67 718 717 +f 717 718 614 +f 717 614 613 +f 613 614 678 +f 613 678 677 +f 677 678 476 +f 677 476 475 +f 475 476 132 +f 475 132 131 +f 131 132 748 +f 131 748 747 +f 747 748 398 +f 747 398 397 +f 397 398 300 +f 397 300 299 +f 299 300 564 +f 299 564 563 +f 563 564 326 +f 563 326 325 +f 325 326 446 +f 325 446 445 +f 445 446 420 +f 445 420 419 +f 419 420 86 +f 419 86 85 +f 85 86 188 +f 85 188 187 +f 187 188 582 +f 187 582 581 +f 581 582 30 +f 581 30 29 +f 29 30 238 +f 29 238 237 +f 237 238 510 +f 237 510 509 +f 509 510 526 +f 509 526 525 +f 525 526 494 +f 525 494 493 +f 493 494 214 +f 493 214 213 +f 213 214 604 +f 213 604 603 +f 603 604 4 +f 603 4 3 +f 3 4 596 +f 3 596 595 +f 595 596 216 +f 595 216 215 +f 215 216 496 +f 215 496 495 +f 495 496 528 +f 495 528 527 +f 527 528 512 +f 527 512 511 +f 511 512 240 +f 511 240 239 +f 239 240 32 +f 239 32 31 +f 31 32 584 +f 31 584 583 +f 583 584 180 +f 583 180 179 +f 179 180 88 +f 179 88 87 +f 87 88 428 +f 87 428 427 +f 427 428 448 +f 427 448 447 +f 447 448 328 +f 447 328 327 +f 327 328 572 +f 327 572 571 +f 571 572 308 +f 571 308 307 +f 307 308 400 +f 307 400 399 +f 399 400 740 +f 399 740 739 +f 739 740 124 +f 739 124 123 +f 123 124 484 +f 123 484 483 +f 483 484 680 +f 483 680 679 +f 679 680 616 +f 679 616 615 +f 615 616 720 +f 615 720 719 +f 719 720 76 +f 719 76 75 +f 75 76 200 +f 75 200 199 +f 199 200 376 +f 199 376 375 +f 375 376 202 +f 375 202 201 +f 201 202 78 +f 201 78 77 +f 77 78 722 +f 77 722 721 +f 721 722 618 +f 721 618 617 +f 617 618 682 +f 617 682 681 +f 681 682 486 +f 681 486 485 +f 485 486 126 +f 485 126 125 +f 125 126 742 +f 125 742 741 +f 741 742 402 +f 741 402 401 +f 401 402 310 +f 401 310 309 +f 309 310 574 +f 309 574 573 +f 573 574 330 +f 573 330 329 +f 329 330 450 +f 329 450 449 +f 449 450 430 +f 449 430 429 +f 429 430 90 +f 429 90 89 +f 89 90 182 +f 89 182 181 +f 181 182 586 +f 181 586 585 +f 585 586 34 +f 585 34 33 +f 33 34 242 +f 33 242 241 +f 241 242 514 +f 241 514 513 +f 513 514 530 +f 513 530 529 +f 529 530 498 +f 529 498 497 +f 497 498 218 +f 497 218 217 +f 217 218 598 +f 217 598 597 +f 597 598 6 +f 597 6 5 +f 5 6 606 +f 5 606 605 +f 605 606 220 +f 605 220 219 +f 219 220 500 +f 219 500 499 +f 499 500 532 +f 499 532 531 +f 531 532 516 +f 531 516 515 +f 515 516 244 +f 515 244 243 +f 243 244 36 +f 243 36 35 +f 35 36 588 +f 35 588 587 +f 587 588 190 +f 587 190 189 +f 189 190 92 +f 189 92 91 +f 91 92 422 +f 91 422 421 +f 421 422 452 +f 421 452 451 +f 451 452 332 +f 451 332 331 +f 331 332 566 +f 331 566 565 +f 565 566 302 +f 565 302 301 +f 301 302 404 +f 301 404 403 +f 403 404 750 +f 403 750 749 +f 749 750 134 +f 749 134 133 +f 133 134 478 +f 133 478 477 +f 477 478 684 +f 477 684 683 +f 683 684 620 +f 683 620 619 +f 619 620 724 +f 619 724 723 +f 723 724 70 +f 723 70 69 +f 69 70 204 +f 69 204 203 +f 203 204 369 +f 203 369 371 +f 371 369 206 +f 371 206 205 +f 205 206 72 +f 205 72 71 +f 71 72 726 +f 71 726 725 +f 725 726 622 +f 725 622 621 +f 621 622 686 +f 621 686 685 +f 685 686 480 +f 685 480 479 +f 479 480 136 +f 479 136 135 +f 135 136 752 +f 135 752 751 +f 751 752 406 +f 751 406 405 +f 405 406 304 +f 405 304 303 +f 303 304 568 +f 303 568 567 +f 567 568 334 +f 567 334 333 +f 333 334 454 +f 333 454 453 +f 453 454 424 +f 453 424 423 +f 423 424 94 +f 423 94 93 +f 93 94 192 +f 93 192 191 +f 191 192 590 +f 191 590 589 +f 589 590 38 +f 589 38 37 +f 37 38 246 +f 37 246 245 +f 245 246 518 +f 245 518 517 +f 517 518 534 +f 517 534 533 +f 533 534 502 +f 533 502 501 +f 501 502 222 +f 501 222 221 +f 221 222 608 +f 221 608 607 +f 607 608 8 +f 607 8 7 +f 7 8 600 +f 7 600 599 +f 599 600 224 +f 599 224 223 +f 223 224 504 +f 223 504 503 +f 503 504 536 +f 503 536 535 +f 535 536 520 +f 535 520 519 +f 519 520 248 +f 519 248 247 +f 247 248 40 +f 247 40 39 +f 39 40 592 +f 39 592 591 +f 591 592 184 +f 591 184 183 +f 183 184 96 +f 183 96 95 +f 95 96 432 +f 95 432 431 +f 431 432 456 +f 431 456 455 +f 455 456 336 +f 455 336 335 +f 335 336 576 +f 335 576 575 +f 575 576 312 +f 575 312 311 +f 311 312 408 +f 311 408 407 +f 407 408 744 +f 407 744 743 +f 743 744 128 +f 743 128 127 +f 127 128 488 +f 127 488 487 +f 487 488 688 +f 487 688 687 +f 687 688 624 +f 687 624 623 +f 623 624 728 +f 623 728 727 +f 727 728 80 +f 727 80 79 +f 79 80 208 +f 79 208 207 +f 207 208 374 +f 207 374 373 +# </faces> diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/turbulenceProperties similarity index 92% rename from tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/dynamicMeshDict rename to tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/turbulenceProperties index 0d234e3050053c7590aa9b6089f7c448c2932b97..5eec04267266e7fd15e7701a875d683d5e658cd9 100644 --- a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/constant/turbulenceProperties @@ -11,11 +11,11 @@ FoamFile format ascii; class dictionary; location "constant"; - object dynamicMeshDict; + object turbulenceProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh staticFvMesh; +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/blockMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..7a84c4d9149b0d479ea1c2735ab778d214fd3855 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/blockMeshDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +radius 0.081; +radiusNeg -0.081; +box 0.025; +boxNeg -0.025; +zMax 0.150; +zMin -0.150; + +nR 7; +nZ 20; + +verbose no; + +geometry +{ + cylinder + { + type searchableCylinder; + point1 (0 0 -1); + point2 (0 0 1); + radius $radius; + } +} + +scale 1; + + +vertices +( + // Inner + ($boxNeg $boxNeg $zMin) + ($box $boxNeg $zMin) + ($boxNeg $box $zMin) + ($box $box $zMin) + + // Outer block points + project ($radiusNeg $radiusNeg $zMin) (cylinder) + project ($radius $radiusNeg $zMin) (cylinder) + project ($radiusNeg $radius $zMin) (cylinder) + project ($radius $radius $zMin) (cylinder) + + // Inner + ($boxNeg $boxNeg $zMax) + ($box $boxNeg $zMax) + ($boxNeg $box $zMax) + ($box $box $zMax) + + // Outer block points + project ($radiusNeg $radiusNeg $zMax) (cylinder) + project ($radius $radiusNeg $zMax) (cylinder) + project ($radiusNeg $radius $zMax) (cylinder) + project ($radius $radius $zMax) (cylinder) +); + +blocks +( + hex ( 4 5 1 0 12 13 9 8) ($nR $nR $nZ) simpleGrading (1 1 1) + hex ( 4 0 2 6 12 8 10 14) ($nR $nR $nZ) simpleGrading (1 1 1) + hex ( 1 5 7 3 9 13 15 11) ($nR $nR $nZ) simpleGrading (1 1 1) + hex ( 2 3 7 6 10 11 15 14) ($nR $nR $nZ) simpleGrading (1 1 1) + hex ( 0 1 3 2 8 9 11 10) ($nR $nR $nZ) simpleGrading (1 1 1) +); + +edges +( + project 4 5 (cylinder) + project 7 5 (cylinder) + project 6 7 (cylinder) + project 4 6 (cylinder) + project 12 13 (cylinder) + project 13 15 (cylinder) + project 12 14 (cylinder) + project 14 15 (cylinder) +); + +boundary +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/controlDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..a2a64dbe15caa3157d1343698ab9cef6bda75255 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/controlDict @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application interDyMFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 0.001; + +writeControl adjustableRunTime; + +writeInterval 0.02; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression yes; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 2; +maxAlphaCo 2; + +maxDeltaT 1; + +functions +{ +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSchemes b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..33f70de79d6c022c65e0336b478ae245640e6642 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSchemes @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + div(rhoPhi,U) Gauss vanLeerV; + div(phi,alpha) Gauss vanLeer; + div(phirb,alpha) Gauss vanLeer; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..decf81d75c654a7573d739abd601a8d20b77e958 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/fvSolution @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.water.*" + { + nAlphaCorr 2; + nAlphaSubCycles 1; + cAlpha 1; + + MULESCorr yes; + nLimiterIter 8; + + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + } + + "pcorr.*" + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + maxIter 100; + } + + p_rgh + { + solver GAMG; + smoother DIC; + tolerance 1e-05; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + maxIter 20; + } + + U + { + solver smoothSolver; + smoother GaussSeidel; + tolerance 1e-06; + relTol 0; + nSweeps 1; + } +} + +PIMPLE +{ + momentumPredictor no; + nCorrectors 2; + nNonOrthogonalCorrectors 1; + correctPhi no; + + pRefPoint (0 0 0); + pRefValue 1e5; +} + +relaxationFactors +{ + equations + { + "U.*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/meshQualityDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/meshQualityDict new file mode 100644 index 0000000000000000000000000000000000000000..86709855c1eb9ca63ec6a20e1c302f2761303311 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/meshQualityDict @@ -0,0 +1,19 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object meshQualityDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#includeEtc "caseDicts/mesh/generation/meshQualityDict.cfg" + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..ac65b488cf05d8edf4ef6f610eca10434e43a3ed --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.water 0 +); + +regions +( + boxToCell + { + box (-1 -1 -1) (1 1 -0.06); + fieldValues + ( + volScalarFieldValue alpha.water 1 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/snappyHexMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/snappyHexMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..4745bb2401df61bb1f8e7a5dbf6ce8a288a1f46f --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingCylinder/system/snappyHexMeshDict @@ -0,0 +1,83 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object snappyHexMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#includeEtc "caseDicts/mesh/generation/snappyHexMeshDict.cfg" + +castellatedMesh on; +snap on; +addLayers off; + +geometry +{ + sloshingCylinder.obj + { + type closedTriSurfaceMesh; + name sloshingCylinder; + } +}; + +castellatedMeshControls +{ + features + ( + ); + + refinementSurfaces + { + sloshingCylinder + { + level (1 1); + patchInfo { type wall; } + } + } + + refinementRegions + { + sloshingCylinder + { + mode inside; + levels ((1E15 1)); + } + } + + locationInMesh (1e-5 1e-5 1e-5); +} + +snapControls +{ + explicitFeatureSnap false; + implicitFeatureSnap false; +} + +addLayersControls +{ + layers + { + } + + relativeSizes true; + expansionRatio 1.2; + finalLayerThickness 0.5; + minThickness 1e-3; +} + +writeFlags +( +); + +mergeTolerance 1e-6; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict index e483843b00fe8f80c39c1484b3eb475400b93f5d..7ed41250a1d374499258969f21759aac572c8f39 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/dynamicMeshDict @@ -17,26 +17,21 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction SDA; - SDACoeffs - { - CofG (0 0 0); - lamda 50; - rollAmax 0.22654; - rollAmin 0.10472; - heaveA 3.79; - swayA 2.34; - Q 2; - Tp 13.93; - Tpn 11.93; - dTi 0.059; - dTp -0.001; - } -} +solidBodyMotionFunction SDA; + +CofG (0 0 0); +lamda 50; +rollAmax 0.22654; +rollAmin 0.10472; +heaveA 3.79; +swayA 2.34; +Q 2; +Tp 13.93; +Tpn 11.93; +dTi 0.059; +dTp -0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/transportProperties index 469a80c5846e9bb59f5ba405e5d554fc8d8f566c..fce2dd11b6a6c61459aec233521b518e57c95e6c 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/fvSolution index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1.5; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/dynamicMeshDict index 9c6163c0737a6c77a3ffb73e8123635f075999a3..770e13f5589b607ef3396557caa2e322e8aa3e32 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/dynamicMeshDict @@ -17,26 +17,21 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction SDA; - SDACoeffs - { - CofG (0 0 0); - lamda 50; - rollAmax 0.2; - rollAmin 0.1; - heaveA 4; - swayA 2.4; - Q 2; - Tp 14; - Tpn 12; - dTi 0.06; - dTp -0.001; - } -} +solidBodyMotionFunction SDA; + +CofG (0 0 0); +lamda 50; +rollAmax 0.2; +rollAmin 0.1; +heaveA 4; +swayA 2.4; +Q 2; +Tp 14; +Tpn 12; +dTi 0.06; +dTp -0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/transportProperties index 77e658d5c3609621f9aff003ab360e06d6f9628b..c1813344c16a54b38d59cf8806fe9cfa89246ea1 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/fvSolution index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1.5; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/dynamicMeshDict index e483843b00fe8f80c39c1484b3eb475400b93f5d..7ed41250a1d374499258969f21759aac572c8f39 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/dynamicMeshDict @@ -17,26 +17,21 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction SDA; - SDACoeffs - { - CofG (0 0 0); - lamda 50; - rollAmax 0.22654; - rollAmin 0.10472; - heaveA 3.79; - swayA 2.34; - Q 2; - Tp 13.93; - Tpn 11.93; - dTi 0.059; - dTp -0.001; - } -} +solidBodyMotionFunction SDA; + +CofG (0 0 0); +lamda 50; +rollAmax 0.22654; +rollAmin 0.10472; +heaveA 3.79; +swayA 2.34; +Q 2; +Tp 13.93; +Tpn 11.93; +dTi 0.059; +dTp -0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/transportProperties index 469a80c5846e9bb59f5ba405e5d554fc8d8f566c..fce2dd11b6a6c61459aec233521b518e57c95e6c 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/fvSolution index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1.5; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/dynamicMeshDict index 9c6163c0737a6c77a3ffb73e8123635f075999a3..770e13f5589b607ef3396557caa2e322e8aa3e32 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/dynamicMeshDict @@ -17,26 +17,21 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction SDA; - SDACoeffs - { - CofG (0 0 0); - lamda 50; - rollAmax 0.2; - rollAmin 0.1; - heaveA 4; - swayA 2.4; - Q 2; - Tp 14; - Tpn 12; - dTi 0.06; - dTp -0.001; - } -} +solidBodyMotionFunction SDA; + +CofG (0 0 0); +lamda 50; +rollAmax 0.2; +rollAmin 0.1; +heaveA 4; +swayA 2.4; +Q 2; +Tp 14; +Tpn 12; +dTi 0.06; +dTp -0.001; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/transportProperties index 77e658d5c3609621f9aff003ab360e06d6f9628b..c1813344c16a54b38d59cf8806fe9cfa89246ea1 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/fvSolution index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1.5; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/Allrun b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/Allrun index 1f23b71a3d600438758d6c85ddb0a1edc9b360c4..603304a5ae32ab7377ac84e7e38028913058ab0f 100755 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/Allrun +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/Allrun @@ -6,9 +6,8 @@ cd ${0%/*} || exit 1 # Run from this directory m4 system/blockMeshDict.m4 > system/blockMeshDict runApplication blockMesh -\cp 0/alpha.water.orig 0/alpha.water - +cp 0/alpha.water.orig 0/alpha.water runApplication setFields -runApplication $(getApplication) +runApplication `getApplication` #------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/dynamicMeshDict index 3bdcf056995674a2ae6b02a3bd792c1eb45d51d9..5d68c200613b2a2b196a4d72b363dce0c8e73f42 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/dynamicMeshDict @@ -17,17 +17,12 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction tabulated6DoFMotion; - tabulated6DoFMotionCoeffs - { - CofG (0 0 0); - timeDataFileName "$FOAM_CASE/constant/6DoF.dat"; - } -} +solidBodyMotionFunction tabulated6DoFMotion; + +CofG (0 0 0); +timeDataFileName "$FOAM_CASE/constant/6DoF.dat"; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/transportProperties index 469a80c5846e9bb59f5ba405e5d554fc8d8f566c..fce2dd11b6a6c61459aec233521b518e57c95e6c 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/gen6DoF/gen6DoF.C b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/gen6DoF/gen6DoF.C index fc7a3fbabc3edfcfe884fb8a1743aec6c0161e06..c574cd2068f87a82084a300c266a2e2fc9d53785 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/gen6DoF/gen6DoF.C +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/gen6DoF/gen6DoF.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1.5; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/dynamicMeshDict index 6a306aef41193fe105f01a55c21eaba942835fdc..dfb241c47a7cc955cb8294f3586433d02c3e0282 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/dynamicMeshDict @@ -17,49 +17,43 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - solidBodyMotionFunction multiMotion; +solidBodyMotionFunction multiMotion; - multiMotionCoeffs +// Table rotating in z axis +rotatingTable +{ + solidBodyMotionFunction rotatingMotion; + rotatingMotionCoeffs { - // Table rotating in z axis - rotatingTable - { - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0.1 0); - axis (0 0 1); - omega 6.2832; // rad/s - } - } - - //// Box rotates on rotating table - //rotatingBox - //{ - // solidBodyMotionFunction rotatingMotion; - // rotatingMotionCoeffs - // { - // origin (0 0 0); - // axis (1 0 0); - // omega 12.5664; // rad/s - // } - //} + origin (0 0.1 0); + axis (0 0 1); + omega 6.2832; // rad/s + } +} - // Tube rocking on rotating table - rotatingBox - { - solidBodyMotionFunction oscillatingRotatingMotion; - oscillatingRotatingMotionCoeffs - { - origin (0 0 0); - omega 40; // rad/s - amplitude (45 0 0); // 45 degrees max tilt - } - } +//// Box rotates on rotating table +//rotatingBox +//{ +// solidBodyMotionFunction rotatingMotion; +// rotatingMotionCoeffs +// { +// origin (0 0 0); +// axis (1 0 0); +// omega 12.5664; // rad/s +// } +//} + +// Tube rocking on rotating table +rotatingBox +{ + solidBodyMotionFunction oscillatingRotatingMotion; + oscillatingRotatingMotionCoeffs + { + origin (0 0 0); + omega 40; // rad/s + amplitude (45 0 0); // 45 degrees max tilt } } diff --git a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/transportProperties b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/transportProperties index 77e658d5c3609621f9aff003ab360e06d6f9628b..c1813344c16a54b38d59cf8806fe9cfa89246ea1 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 998.2; + nu 1e-06; + rho 998.2; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/fvSolution index 0dabb7b24213bff0eb72fa5e2782dc43b36ccb24..354054c7fdeb0cddabb189b51ab4e167591dad39 100644 --- a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/fvSolution @@ -21,10 +21,10 @@ solvers { nAlphaCorr 1; nAlphaSubCycles 3; - cAlpha 1.5; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interFoam/LES/nozzleFlow2D/constant/transportProperties b/tutorials/multiphase/interFoam/LES/nozzleFlow2D/constant/transportProperties index 0ee4a042ecb10d24d8dbd4feb98daa6bb70b17ff..7fdfd89aee3a3a9d4ae5a0013db4ad3629cc9c71 100644 --- a/tutorials/multiphase/interFoam/LES/nozzleFlow2D/constant/transportProperties +++ b/tutorials/multiphase/interFoam/LES/nozzleFlow2D/constant/transportProperties @@ -20,17 +20,17 @@ phases (fuel air); fuel { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 5.952e-06; - rho [1 -3 0 0 0 0 0] 840; + nu 5.952e-06; + rho 840; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 8.5e-07; - rho [1 -3 0 0 0 0 0] 20; + nu 8.5e-07; + rho 20; } -sigma [1 0 -2 0 0 0 0] 0.0261; +sigma 0.0261; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/LES/nozzleFlow2D/system/fvSolution b/tutorials/multiphase/interFoam/LES/nozzleFlow2D/system/fvSolution index fe33d895c73ee56134a70e81a20394274c78c2a6..55e85b47c9999ae75b3c76e5f565e53dd3ed140f 100644 --- a/tutorials/multiphase/interFoam/LES/nozzleFlow2D/system/fvSolution +++ b/tutorials/multiphase/interFoam/LES/nozzleFlow2D/system/fvSolution @@ -21,10 +21,10 @@ solvers { nAlphaCorr 1; nAlphaSubCycles 4; - cAlpha 2; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interFoam/RAS/DTCHull/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/DTCHull/constant/transportProperties index bb0c2a7ee6d0a06780ef9c8432435c493c4e17d5..92310d408aa0fefea31942949e2810aed9f9b6ed 100644 --- a/tutorials/multiphase/interFoam/RAS/DTCHull/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/DTCHull/constant/transportProperties @@ -20,17 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.09e-06; - rho [1 -3 0 0 0 0 0] 998.8; + nu 1.09e-06; + rho 998.8; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0; +sigma 0; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/DTCHull/system/fvSolution b/tutorials/multiphase/interFoam/RAS/DTCHull/system/fvSolution index a39c56f1e7267fcf00ffafeb425d29e7c3bba6c7..d7ec0095100ce4664b6b0d0e503910b90a1ca29b 100644 --- a/tutorials/multiphase/interFoam/RAS/DTCHull/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/DTCHull/system/fvSolution @@ -35,7 +35,7 @@ solvers minIter 1; } - pcorr + "pcorr.*" { solver PCG; diff --git a/tutorials/multiphase/interFoam/RAS/angledDuct/constant/fvOptions b/tutorials/multiphase/interFoam/RAS/angledDuct/constant/fvOptions index d33433d216f959d4673d6af2b4572c7f31e89590..73aae68766294a27bff94217a60640ee215b58de 100644 --- a/tutorials/multiphase/interFoam/RAS/angledDuct/constant/fvOptions +++ b/tutorials/multiphase/interFoam/RAS/angledDuct/constant/fvOptions @@ -18,7 +18,6 @@ FoamFile porosity1 { type explicitPorositySource; - active yes; explicitPorositySourceCoeffs { @@ -27,21 +26,18 @@ porosity1 type DarcyForchheimer; - DarcyForchheimerCoeffs - { - d (2e8 -1000 -1000); - f (0 0 0); + d (2e8 -1000 -1000); + f (0 0 0); - coordinateSystem + coordinateSystem + { + type cartesian; + origin (0 0 0); + coordinateRotation { - type cartesian; - origin (0 0 0); - coordinateRotation - { - type axesRotation; - e1 (0.70710678 0.70710678 0); - e2 (0 0 1); - } + type axesRotation; + e1 (0.70710678 0.70710678 0); + e2 (0 0 1); } } } diff --git a/tutorials/multiphase/interFoam/RAS/angledDuct/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/angledDuct/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/RAS/angledDuct/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/angledDuct/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/angledDuct/system/fvSolution b/tutorials/multiphase/interFoam/RAS/angledDuct/system/fvSolution index 791a7d3a0299984f6849ae5233aee972e3d783cb..75e1b33c7c0b99d2b869c457c54d329c17b88cc8 100644 --- a/tutorials/multiphase/interFoam/RAS/angledDuct/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/angledDuct/system/fvSolution @@ -32,7 +32,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/fvSolution index b6ce97884e53abeb1f7e33513b9afd2d06a63759..15f5d6b5e7c77a01c7a2dee6891b6d0ed72e7273 100644 --- a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/fvSolution @@ -32,7 +32,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/system/fvSolution b/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/system/fvSolution index ea365e59e722a911cc12e41bb3fd5b9c1d18badf..6973afc7d5fd83cd77486c345d7e78fc60d8f199 100644 --- a/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/damBreakPorousBaffle/system/fvSolution @@ -32,7 +32,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/RAS/waterChannel/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/waterChannel/constant/transportProperties index e4bcf4551587ba957c8bd13ffcefd8fdd7420ab9..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/RAS/waterChannel/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/waterChannel/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/waterChannel/system/fvSolution b/tutorials/multiphase/interFoam/RAS/waterChannel/system/fvSolution index b18ce1bc586c83917614b79c238b23018ef6b39d..bdbcd86e68b8da66cbb4236494fb27dab122ba5e 100644 --- a/tutorials/multiphase/interFoam/RAS/waterChannel/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/waterChannel/system/fvSolution @@ -32,7 +32,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/interFoam/RAS/weirOverflow/constant/transportProperties b/tutorials/multiphase/interFoam/RAS/weirOverflow/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/RAS/weirOverflow/constant/transportProperties +++ b/tutorials/multiphase/interFoam/RAS/weirOverflow/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/RAS/weirOverflow/system/fvSolution b/tutorials/multiphase/interFoam/RAS/weirOverflow/system/fvSolution index 8ec3411df47cfb41adc0cca5a97472f7b133bc5d..25029b327609401351684db70f721756ad754210 100644 --- a/tutorials/multiphase/interFoam/RAS/weirOverflow/system/fvSolution +++ b/tutorials/multiphase/interFoam/RAS/weirOverflow/system/fvSolution @@ -23,7 +23,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/transportProperties index 7640e6ad3b9cdea2bdd094ee732145eb18053ff5..42c542f07f41a9d13fa66499bd67eabd7f7170e0 100644 --- a/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.0707106; +sigma 0.0707106; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSolution b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSolution index 6d38dd0f29bbccf08de9ef6cb44fa101b415d45c..713efb35253c5e9a1bbdb6c9ae664226e362de4a 100644 --- a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..7ac5e4320860dc3115ce09d9fe9aef88c6e0663f 100644 --- a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/constant/transportProperties @@ -20,18 +20,17 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; - +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/fvSolution index c838b6c40b771b516eba9ea3361a9c6e4314d076..802a335fabd72c930cf809b6d2e13677efa06238 100644 --- a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1; MULESCorr yes; - nLimiterIter 3; + nLimiterIter 5; solver smoothSolver; smoother symGaussSeidel; @@ -32,7 +32,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties index fee1caa0e65103bd13f27aa269e496b67619f78e..debd4f5ff433b11cc2f66ed4865d3cb1fee02129 100644 --- a/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties @@ -20,18 +20,18 @@ phases (water oir); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-4; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-4; + rho 1000; } oir { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-4; - rho [1 -3 0 0 0 0 0] 500; + nu 1e-4; + rho 500; } -sigma [1 0 -2 0 0 0 0] 0.05; +sigma 0.05; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution index deabc86153fd09a913a7488e583655d67a8b862c..b4edd7e3a0107a905aa00141c1584fe6453a5d05 100644 --- a/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/constant/transportProperties index 1331af1e5ce2a7e3343e0b0d2aee2df99780ba4e..84ac74aab245e37a03a3e12950794419d5b2b205 100644 --- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution index d2eb88fed75d73d28f103b67abe1bb34c6a90a84..5afe33ef1e2a757dbbe8381a8408aeaa7f96050f 100644 --- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution @@ -24,7 +24,7 @@ solvers cAlpha 2; } - pcorr + "pcorr.*" { solver GAMG; smoother GaussSeidel; diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/constant/transportProperties index 019225dd4f128332aeb280c0f517ff2f87dfa827..be4da001c23c1eca08963fe61914a2c5ae513aaa 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution @@ -25,7 +25,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/constant/transportProperties index 019225dd4f128332aeb280c0f517ff2f87dfa827..be4da001c23c1eca08963fe61914a2c5ae513aaa 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution @@ -25,7 +25,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/constant/transportProperties index 019225dd4f128332aeb280c0f517ff2f87dfa827..be4da001c23c1eca08963fe61914a2c5ae513aaa 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution @@ -25,7 +25,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/constant/transportProperties index 019225dd4f128332aeb280c0f517ff2f87dfa827..be4da001c23c1eca08963fe61914a2c5ae513aaa 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution @@ -25,7 +25,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/constant/transportProperties index 019225dd4f128332aeb280c0f517ff2f87dfa827..be4da001c23c1eca08963fe61914a2c5ae513aaa 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/constant/transportProperties +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/constant/transportProperties @@ -20,18 +20,18 @@ phases (water air); water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644 --- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution @@ -25,7 +25,7 @@ solvers cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/transportProperties b/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/transportProperties index 6b1ab75602598d0271e95efea71c2b55a3ed0fcb..7f1dcd8d37aa96a30d0c7137724ddff38beb323d 100644 --- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/transportProperties +++ b/tutorials/multiphase/interMixingFoam/laminar/damBreak/constant/transportProperties @@ -20,29 +20,29 @@ phases (air other water); air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } other { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-6; - rho [1 -3 0 0 0 0 0] 1010; + nu 1e-6; + rho 1010; } water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-6; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-6; + rho 1000; } // Surface tension coefficients -sigma12 sigma12 [1 0 -2 0 0 0 0] 0.05; -sigma13 sigma13 [1 0 -2 0 0 0 0] 0.04; +sigma12 0.05; +sigma13 0.04; // Diffusivity between miscible phases -D23 D23 [0 2 -1 0 0 0 0] 3e-09; +D23 3e-09; // ************************************************************************* // diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSolution b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSolution index 5f6b779826422a86dea552e3cb483a79f0b21f8e..5e9e98cbe137f46c695912f735a5e4957c3d4525 100644 --- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSolution +++ b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSolution @@ -30,7 +30,7 @@ solvers nSweeps 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict index 9f4a4cd86d5c9c09ac9de7cd87b80f54a832b5fd..04e5d15fe57e3dcdecd3192324cd81d01478eb5b 100644 --- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict +++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict @@ -19,27 +19,22 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone innerCylinderSmall; - - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 1 0); - omega table - ( - (0 0) - (0.01 628) - (0.022 628) - (0.03 419) - (100 419) - ); - } -} +cellZone innerCylinderSmall; + +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 1 0); +omega table +( + (0 0) + (0.01 628) + (0.022 628) + (0.03 419) + (100 419) +); // ************************************************************************* // diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/transportProperties b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/transportProperties index 1ed351945eaa2d077f77e551d048f7441f409b77..45bb58360289ab325abeed5137e4154feca5b5ae 100644 --- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/transportProperties +++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/transportProperties @@ -19,46 +19,46 @@ phases (water vapour); phaseChangeTwoPhaseMixture SchnerrSauer; -pSat [1 -1 -2 0 0 0 0] 2300; // Saturation pressure +pSat 2300; // Saturation pressure -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 9e-07; - rho [1 -3 0 0 0 0 0] 1000; + nu 9e-07; + rho 1000; } vapour { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 4.273e-04; - rho [1 -3 0 0 0 0 0] 0.02308; + nu 4.273e-04; + rho 0.02308; } KunzCoeffs { - UInf UInf [0 1 -1 0 0 0 0] 20.0; - tInf tInf [0 0 1 0 0 0 0] 0.005; // L = 0.1 m - Cc Cc [0 0 0 0 0 0 0] 1000; - Cv Cv [0 0 0 0 0 0 0] 1000; + UInf 20.0; + tInf 0.005; // L = 0.1 m + Cc 1000; + Cv 1000; } MerkleCoeffs { - UInf UInf [0 1 -1 0 0 0 0] 20.0; - tInf tInf [0 0 1 0 0 0 0] 0.005; // L = 0.1 m - Cc Cc [0 0 0 0 0 0 0] 80; - Cv Cv [0 0 0 0 0 0 0] 1e-03; + UInf 20.0; + tInf 0.005; // L = 0.1 m + Cc 80; + Cv 1e-03; } SchnerrSauerCoeffs { - n n [0 -3 0 0 0 0 0] 1.6e+13; - dNuc dNuc [0 1 0 0 0 0 0] 2.0e-06; - Cc Cc [0 0 0 0 0 0 0] 1; - Cv Cv [0 0 0 0 0 0 0] 1; + n 1.6e+13; + dNuc 2.0e-06; + Cc 1; + Cv 1; } // ************************************************************************* // diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/transportProperties b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/transportProperties index f4be7f419a5b86b3a77a6a9b8ccb67da861fee72..ae8fe4c6d46a9f52b2dbc315fa0cba648eae3a72 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/transportProperties +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/transportProperties @@ -18,46 +18,46 @@ phases (water vapour); phaseChangeTwoPhaseMixture SchnerrSauer; -pSat [1 -1 -2 0 0 0 0] 2300; // Saturation pressure +pSat 2300; // Saturation pressure -sigma [1 0 -2 0 0 0 0] 0.07; +sigma 0.07; water { - transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 9e-07; - rho [1 -3 0 0 0 0 0] 1000; + transportModel Newtonian; + nu 9e-07; + rho 1000; } vapour { - transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 4.273e-04; - rho [1 -3 0 0 0 0 0] 0.02308; + transportModel Newtonian; + nu 4.273e-04; + rho 0.02308; } KunzCoeffs { - UInf UInf [0 1 -1 0 0 0 0] 20.0; - tInf tInf [0 0 1 0 0 0 0] 0.005; // L = 0.1 m - Cc Cc [0 0 0 0 0 0 0] 1000; - Cv Cv [0 0 0 0 0 0 0] 1000; + UInf U20.0; + tInf t0.005; // L = 0.1 m + Cc C1000; + Cv C1000; } MerkleCoeffs { - UInf UInf [0 1 -1 0 0 0 0] 20.0; - tInf tInf [0 0 1 0 0 0 0] 0.005; // L = 0.1 m - Cc Cc [0 0 0 0 0 0 0] 80; - Cv Cv [0 0 0 0 0 0 0] 1e-03; + UInf 20.0; + tInf 0.005; // L = 0.1 m + Cc 80; + Cv 1e-03; } SchnerrSauerCoeffs { - n n [0 -3 0 0 0 0 0] 1.6e+13; - dNuc dNuc [0 1 0 0 0 0 0] 2.0e-06; - Cc Cc [0 0 0 0 0 0 0] 1; - Cv Cv [0 0 0 0 0 0 0] 1; + n 1.6e+13; + dNuc 2.0e-06; + Cc 1; + Cv 1; } diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution index 503514ab57a65f2b90849e05230aa47fb9f08682..d2a24e7abb9bebfb368a470db7ba5ce5ac282a94 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution @@ -73,7 +73,7 @@ solvers maxIter 50; }; - pcorr + "pcorr.*" { $p_rgh; relTol 0; diff --git a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties index f0c5e3bcbabedc3f9a395e148708962bd0962d93..ecfb2c2c4516e2177c666f244279452d328cb710 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties @@ -88,7 +88,7 @@ drag // This is a dummy to support the Smagorinsky model transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 0; +nu 0; // ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSolution b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSolution index 959b2fbc5039fb6f6fac27ce689302a397ada5b4..25ff87a3c0b3d8f23dc2dd2c6c33c4e31764ca39 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSolution +++ b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSolution @@ -37,7 +37,7 @@ solvers relTol 0; } - pcorr + "pcorr.*" { $p_rgh; tolerance 1e-5; diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties index b4f1932c5a19e4844fa03595cbe6237dbdb43f7f..ea24f30e38cfd4757a41090af9e19cfb570b1284 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties @@ -230,7 +230,7 @@ drag // This is a dummy to support the Smagorinsky model transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 0; +nu 0; // ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSolution b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSolution index 0916ca0f4474112ca613b3e8285f8739e7b18d33..59ef5faf1d5c045cd1088bb8593981c0e625bfef 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSolution +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSolution @@ -46,7 +46,7 @@ solvers maxIter 20; } - pcorr + "pcorr.*" { $p_rghFinal; tolerance 1e-5; diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties index b4f1932c5a19e4844fa03595cbe6237dbdb43f7f..ea24f30e38cfd4757a41090af9e19cfb570b1284 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties @@ -230,7 +230,7 @@ drag // This is a dummy to support the Smagorinsky model transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 0; +nu 0; // ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSolution b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSolution index 0916ca0f4474112ca613b3e8285f8739e7b18d33..59ef5faf1d5c045cd1088bb8593981c0e625bfef 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSolution +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSolution @@ -46,7 +46,7 @@ solvers maxIter 20; } - pcorr + "pcorr.*" { $p_rghFinal; tolerance 1e-5; diff --git a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/constant/transportProperties index 4aaf867bb31ef1427552b8dca39c54bb7512b6b2..711e0bf6d8600094844214b1021fbeb0d696b663 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/constant/transportProperties @@ -242,7 +242,7 @@ drag // This is a dummy to support the Smagorinsky model transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 0; +nu 0; // ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSolution b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSolution index ab946fc9a0ee93f412966a4a5acb18a73a6d571b..ae2f7d7b2a72f98b97b0fabefdb581e89f7c175a 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSolution @@ -46,7 +46,7 @@ solvers maxIter 30; } - pcorr + "pcorr.*" { $p_rghFinal; tolerance 1e-5; diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict index bfce8712bb2747c065a9660c4cb538be3776f251..84aee2ff8b7decf9c14c361e0e850f8306f54a82 100644 --- a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict +++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict @@ -19,20 +19,15 @@ dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); -solver solidBody; +motionSolver solidBody; -solidBodyCoeffs -{ - cellZone rotor; - - solidBodyMotionFunction rotatingMotion; - rotatingMotionCoeffs - { - origin (0 0 0); - axis (0 0 1); - omega 6.2832; // rad/s - } -} +cellZone rotor; + +solidBodyMotionFunction rotatingMotion; + +origin (0 0 0); +axis (0 0 1); +omega 6.2832; // rad/s // ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties index 2c533c62ffce218e73d89cf63ba892633f64569b..f090780ac42ae021c25d8bb676cc565a079b3ea3 100644 --- a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties +++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties @@ -20,29 +20,29 @@ phases water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } oil { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 500; + nu 1e-06; + rho 500; } mercury { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.125e-07; - rho [1 -3 0 0 0 0 0] 13529; + nu 1.125e-07; + rho 13529; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } ); diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/constant/transportProperties b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/constant/transportProperties index 2c533c62ffce218e73d89cf63ba892633f64569b..f090780ac42ae021c25d8bb676cc565a079b3ea3 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/constant/transportProperties +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/constant/transportProperties @@ -20,29 +20,29 @@ phases water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } oil { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 500; + nu 1e-06; + rho 500; } mercury { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.125e-07; - rho [1 -3 0 0 0 0 0] 13529; + nu 1.125e-07; + rho 13529; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } ); diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution index 6e2b91564434e6959759491611919977bfa13908..66e6f13fffe194ff3833635073b6c07f9d2c17ba 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution @@ -20,10 +20,10 @@ solvers "alpha.*" { nAlphaSubCycles 4; - cAlpha 2; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/constant/transportProperties b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/constant/transportProperties index 2c533c62ffce218e73d89cf63ba892633f64569b..f090780ac42ae021c25d8bb676cc565a079b3ea3 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/constant/transportProperties +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/constant/transportProperties @@ -20,29 +20,29 @@ phases water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } oil { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 500; + nu 1e-06; + rho 500; } mercury { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.125e-07; - rho [1 -3 0 0 0 0 0] 13529; + nu 1.125e-07; + rho 13529; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } ); diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution index c0b53edf7e7cad9eb8c0f84ed3c6e2b7bc25bdce..ffb71eb7614d79f41f57942932e31a465c33a0ab 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution @@ -20,10 +20,10 @@ solvers "alpha.*" { nAlphaSubCycles 4; - cAlpha 2; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/constant/transportProperties index 2c533c62ffce218e73d89cf63ba892633f64569b..f090780ac42ae021c25d8bb676cc565a079b3ea3 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/constant/transportProperties +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/constant/transportProperties @@ -20,29 +20,29 @@ phases water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } oil { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 500; + nu 1e-06; + rho 500; } mercury { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.125e-07; - rho [1 -3 0 0 0 0 0] 13529; + nu 1.125e-07; + rho 13529; } air { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1.48e-05; - rho [1 -3 0 0 0 0 0] 1; + nu 1.48e-05; + rho 1; } ); diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/system/fvSolution index e7426ebca3ce635c3af7ba5e44122816bb53995d..29361e6795413079f68d1d7e38fde14696cd6b83 100644 --- a/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D/system/fvSolution @@ -21,10 +21,10 @@ solvers { nAlphaCorr 4; nAlphaSubCycles 4; - cAlpha 2; + cAlpha 1; } - pcorr + "pcorr.*" { solver PCG; preconditioner DIC; diff --git a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/dynamicMeshDict b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/dynamicMeshDict index 18719a21019f8ba4d53aa11f51b803e6da503e9a..e241e2c52752e31ad6bc6ed2e1e32a7791450a2e 100644 --- a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/dynamicMeshDict +++ b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/dynamicMeshDict @@ -16,20 +16,16 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh dynamicMotionSolverFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libfvMotionSolvers.so"); -solver displacementLaplacian; -//solver velocityComponentLaplacian z; +motionSolver displacementLaplacian; -displacementLaplacianCoeffs -{ - // diffusivity uniform; - // diffusivity directional (1 200 0); - // diffusivity motionDirectional (1 1000 0); - // diffusivity file motionDiffusivity; - diffusivity inverseDistance 1(floatingObjectBottom); -} +// diffusivity uniform; +// diffusivity directional (1 200 0); +// diffusivity motionDirectional (1 1000 0); +// diffusivity file motionDiffusivity; +diffusivity inverseDistance 1(floatingObjectBottom); // ************************************************************************* // diff --git a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/transportProperties b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/transportProperties index 0aa193ba8cc76be66f704cc3491dfeb2d65c8160..bbfe9c16e751a954a469343aa878f534f58304b4 100644 --- a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/transportProperties +++ b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/constant/transportProperties @@ -16,7 +16,7 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-06; +nu 1e-06; // ************************************************************************* // diff --git a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/0.orig/U b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/0.orig/U index 646551a80c9c2c7a9f385e5bba4aa6111cea13d1..aaa0d1df26f8c81af54952c64c0fc6544e08cd99 100644 --- a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/0.orig/U +++ b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/0.orig/U @@ -41,18 +41,27 @@ boundaryField normalVelocity { type uniformFixedValue; - uniformValue sine; - uniformValueCoeffs + + uniformValue { - frequency 1; - amplitude table - ( - ( 0 0) - ( 10 0.025) - (1000 0.025) - ); - scale (0 1 0); - level (0 0 0); + type scale; + + value + { + type sine; + + frequency 1; + amplitude 0.025; + scale (0 1 0); + level (0 0 0); + } + + scale + { + type linearRamp; + + duration 10; + } } } diff --git a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/constant/transportProperties b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/constant/transportProperties index 0aa193ba8cc76be66f704cc3491dfeb2d65c8160..bbfe9c16e751a954a469343aa878f534f58304b4 100644 --- a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/constant/transportProperties +++ b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/constant/transportProperties @@ -16,7 +16,7 @@ FoamFile transportModel Newtonian; -nu [0 2 -1 0 0 0 0] 1e-06; +nu 1e-06; // ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury index 7cde9eb8d5200d08be61820358448d495b71893c..cafffc1943f925fae91f3732fff1b762b611578e 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 200; } equationOfState diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil index 2dcd233cf24fad11af55374fef0edf5e11752b80..a12d20408f9d8d4f5ac50b93a6a55e536709245f 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 160; } equationOfState diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution index d7eb7f7e09aa570c0157cb2a789a17553f5c374b..1321992b35507614ef546fbf57cae3aa19389c4f 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution @@ -46,7 +46,7 @@ solvers maxIter 30; } - pcorr + "pcorr.*" { $p_rghFinal; tolerance 1e-5; diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.gas index f3a6278519cc55498131ef2ea1b86bf15c73e973..d66e8210553e9da2fffa49f50288e6749f970245 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.gas @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.solids b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.solids index 07945700d088208b7173be45cb11252bcffb90d9..d1fd39e3f91383a6c20a54fcd8a9f3dc438a6a9e 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.solids +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/LBend/constant/thermophysicalProperties.solids @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas index ee57f3a7cce2d75b041ce6ea624af616194f3262..8e3ced16f92d52e3b389c921e10dcd04a2a4027a 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas @@ -15,22 +15,19 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel PaSR<rhoChemistryCombustion>; -active true; +active true; laminarCoeffs -{ -} +{} noCombustionCoeffs -{ -} +{} PaSRCoeffs { Cmix 1.0; - turbulentReaction yes; } // ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas index dde77f08718b9e92919be8d3f2afa4f233dd7a03..5a836c21d101beb1d41fff2d2b712be0ccd569e5 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas @@ -2,7 +2,6 @@ CO { specie { - nMoles 1; molWeight 28.0106; } thermodynamics @@ -24,7 +23,6 @@ CO2 { specie { - nMoles 1; molWeight 44.01; } thermodynamics @@ -46,7 +44,6 @@ H2 { specie { - nMoles 1; molWeight 2.01594; } thermodynamics @@ -68,7 +65,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -90,7 +86,6 @@ AIR { specie { - nMoles 1; molWeight 28.9596; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid index e11c2a129a535ea2c98678dcb7f54d89e653fdce..4a0a478bd059ba85cb63e4e4a665c805859d5fe1 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid @@ -38,7 +38,6 @@ inertSpecie H2O; { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -62,7 +61,6 @@ AIR { specie { - nMoles 1; molWeight 28.9; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles index 3cdf11268d5a6f3caf9e419468d6e45a2a699365..0ae46ee01cdfd40837746d5cfc9aba16e4ff9415 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/combustionProperties.gas index e5ea707d1edd91421a0f2203e80aca7da2653f4d..f687c529399a38827f08950f71674146a606e62f 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/combustionProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/combustionProperties.gas @@ -15,9 +15,9 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel PaSR<rhoChemistryCombustion>; -active false; +active false; laminarCoeffs {} @@ -28,7 +28,6 @@ noCombustionCoeffs PaSRCoeffs { Cmix 1.0; - turbulentReaction yes; } // ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.gas index 799e0586afc0ea2b38f7dbc3e772f1940e9188f0..8e80205f996e07c9ac833775147838c7b95b739e 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.gas @@ -43,7 +43,6 @@ water { specie { - nMoles 1; molWeight 18.0153; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.liquid index aa1ca6c40f53fc429d843bcb2cc10dc297e39099..5f0cc5e328b4d0ac203ab82b0841c2a418a1fe3b 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.liquid +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling/constant/thermophysicalProperties.liquid @@ -39,7 +39,6 @@ inertSpecie water; { specie { - nMoles 1; molWeight 18.0153; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/combustionProperties.gas index e5ea707d1edd91421a0f2203e80aca7da2653f4d..f687c529399a38827f08950f71674146a606e62f 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/combustionProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/combustionProperties.gas @@ -15,9 +15,9 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -combustionModel PaSR<rhoChemistryCombustion>; +combustionModel PaSR<rhoChemistryCombustion>; -active false; +active false; laminarCoeffs {} @@ -28,7 +28,6 @@ noCombustionCoeffs PaSRCoeffs { Cmix 1.0; - turbulentReaction yes; } // ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.gas index 799e0586afc0ea2b38f7dbc3e772f1940e9188f0..8e80205f996e07c9ac833775147838c7b95b739e 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.gas @@ -43,7 +43,6 @@ water { specie { - nMoles 1; molWeight 18.0153; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.liquid index aa1ca6c40f53fc429d843bcb2cc10dc297e39099..5f0cc5e328b4d0ac203ab82b0841c2a418a1fe3b 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.liquid +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE/constant/thermophysicalProperties.liquid @@ -39,7 +39,6 @@ inertSpecie water; { specie { - nMoles 1; molWeight 18.0153; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas index 143db637297a1bfb496600a2f1f4df47dfb7332d..942ed6410ee1058940af0e9d7e085b8ae8f74f03 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas @@ -38,7 +38,6 @@ H2O { specie { - nMoles 1; molWeight 18.0153; } thermodynamics @@ -60,7 +59,6 @@ air { specie { - nMoles 1; molWeight 28.9596; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid index d8812f4a621f46272d3fc0567f13b0d59474abdf..25571becb579fc10382047ae59ce3bb469e26612 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid @@ -38,7 +38,6 @@ inertSpecie H2O; { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -62,7 +61,6 @@ air { specie { - nMoles 1; molWeight 28.9; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas index 124732cc4572f76c8a6c93a856b79856cd5d2043..5fa535fe5a6f3d9f60ec5f3ede8db7f6fe942f49 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas @@ -38,7 +38,6 @@ inertSpecie air; { specie { - nMoles 1; molWeight 28.9; } thermodynamics @@ -57,7 +56,6 @@ water { specie { - nMoles 1; molWeight 18.0153; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid index 9f08eb38af982d3a0b881d6402b2414bfcdf1d72..44ce6a44b459e589991d169ec0a16414a35b286f 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid @@ -38,7 +38,6 @@ inertSpecie water; { specie { - nMoles 1; molWeight 18.0153; } equationOfState @@ -62,7 +61,6 @@ air { specie { - nMoles 1; molWeight 28.9; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles index 3cdf11268d5a6f3caf9e419468d6e45a2a699365..0ae46ee01cdfd40837746d5cfc9aba16e4ff9415 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions index 6812c1f5c76777ffe623d1c43d640ace9672b233..3dd0abfea6368bed57e18fdff053b287be7a9204 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions @@ -32,15 +32,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - thermo:rho.air (1e-3 0); // kg/s - } + volumeMode absolute; + injectionRateSuSp + { + thermo:rho.air (1e-3 0); // kg/s } } @@ -48,15 +45,12 @@ options { type vectorSemiImplicitSource; - vectorSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - U.air ((0 -1e-2 0) 0); // kg*m/s^2 - } + volumeMode absolute; + injectionRateSuSp + { + U.air ((0 -1e-2 0) 0); // kg*m/s^2 } } @@ -64,15 +58,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - e.air (500 0); // kg*m^2/s^3 - } + volumeMode absolute; + injectionRateSuSp + { + e.air (500 0); // kg*m^2/s^3 } } } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions index 92a4b462c0a7fe08c8d70a05a0c9a1418111d984..26092c74ff7ad835f9ed0a5658ef0f5bbfde6fc5 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions @@ -32,15 +32,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - thermo:rho.steam (1.0e-3 0); // kg/s - } + volumeMode absolute; + injectionRateSuSp + { + thermo:rho.steam (1.0e-3 0); // kg/s } } /* @@ -48,15 +45,12 @@ options { type vectorSemiImplicitSource; - vectorSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { + volumeMode absolute; + injectionRateSuSp + { U.steam ((0 1e-2 0) 0); // kg*m/s^2 - } } } */ @@ -64,15 +58,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - e.steam (3700 0); // kg*m^2/s^3 - } + volumeMode absolute; + injectionRateSuSp + { + e.steam (3700 0); // kg*m^2/s^3 } } } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties index ca28ab5fa5f0f47c91b74381114b234950412a4c..531a0882db4f7c7ee96e4410ebed7d16744fb2f0 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -type thermalPhaseChangeTwoPhaseSystem; +type thermalPhaseChangeTwoPhaseSystem; phases (steam water); @@ -34,7 +34,7 @@ steam } Sc 0.7; - residualAlpha 1e-6; + residualAlpha 1e-3; } water @@ -47,7 +47,7 @@ water } Sc 0.7; - residualAlpha 1e-6; + residualAlpha 1e-3; } blending @@ -56,30 +56,6 @@ blending { type none; continuousPhase water; - minFullyContinuousAlpha.steam 0.7; - minPartlyContinuousAlpha.steam 0.5; - minFullyContinuousAlpha.water 0.7; - minPartlyContinuousAlpha.water 0.5; - } - - heatTransfer - { - type none; - continuousPhase water; - minFullyContinuousAlpha.steam 1; - minPartlyContinuousAlpha.steam 0; - minFullyContinuousAlpha.water 1; - minPartlyContinuousAlpha.water 0; - } - - massTransfer - { - type none; - continuousPhase water; - minFullyContinuousAlpha.steam 1; - minPartlyContinuousAlpha.steam 0; - minFullyContinuousAlpha.water 1; - minPartlyContinuousAlpha.water 0; } } @@ -107,12 +83,6 @@ aspectRatio type constant; E0 1.0; } - - (water in steam) - { - type constant; - E0 1.0; - } ); drag @@ -126,16 +96,6 @@ drag type none; } } - - (water in steam) - { - type SchillerNaumann; - residualRe 1e-3; - swarmCorrection - { - type none; - } - } ); virtualMass @@ -145,27 +105,18 @@ virtualMass type constantCoefficient; Cvm 0.5; } - - (water in steam) - { - type constantCoefficient; - Cvm 0.5; - } ); interfaceComposition +(); + +heatTransfer ( (steam in water) { - type Saturated; - species ( H2O ); - Le 1.0; - saturationPressure - { - type ArdenBuck; - } + type spherical; + residualAlpha 1e-4; } - ); heatTransfer.steam @@ -187,33 +138,19 @@ heatTransfer.water ); massTransfer.steam -( - -); +(); massTransfer.water -( - -); +(); lift -( -); +(); wallLubrication -( -); +(); turbulentDispersion -( - (steam in water) - { - type Burns;// - sigma 0.7; - Ctd 1.0; - residualAlpha 1e-3; - } -); +(); // Minimum allowable pressure pMin 10000; diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam index 164071e6801bd5cf29c9a2cb895e6eeb83e4cccf..9681d6c47442c407ec37153273ba6a5e6c7391e9 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam @@ -23,9 +23,13 @@ thermoType thermo hRefConst; equationOfState perfectGas; specie specie; - energy sensibleInternalEnergy; + energy sensibleEnthalpy; } +dpdt yes; + +pressureWorkAlphaLimit 0; + species ( water @@ -37,7 +41,6 @@ water { specie { - nMoles 1; molWeight 18.0153; } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water index ac5d8a18bad6967ddc15deb30e18b589c44586ba..5bbe19ca4d354c78509a438fc99c240dd637e932 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water @@ -23,9 +23,13 @@ thermoType thermo hRefConst; equationOfState perfectFluid; specie specie; - energy sensibleInternalEnergy; + energy sensibleEnthalpy; } +dpdt yes; + +pressureWorkAlphaLimit 0; + species ( water @@ -37,7 +41,6 @@ water { specie { - nMoles 1; molWeight 18.0153; } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict index b919ed3c2831324ac8c0bb3d06ab3e9b4cf141ab..54aafe8c3df82e44ed3cf653134dd539128f73b2 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict @@ -25,11 +25,11 @@ stopAt endTime; endTime 10; -deltaT 1e-6; +deltaT 1e-3; writeControl adjustableRunTime; -writeInterval 0.5; +writeInterval 0.1; purgeWrite 0; @@ -41,7 +41,7 @@ writeCompression compressed; timeFormat general; -timePrecision 6; +timePrecision 9; runTimeModifiable yes; @@ -51,5 +51,30 @@ maxCo 0.1; maxDeltaT 1e-2; +functions +{ + timeStepping + { + type setTimeStep; + functionObjectLibs ("libutilityFunctionObjects.so"); + enabled yes; + deltaT tableFile; + file "system/deltaTvalues"; + } + + minMaxp + { + type fieldMinMax; + functionObjectLibs ("libfieldFunctionObjects.so"); + fields + ( + p + ); + location no; + writeControl timeStep; + writeInterval 1; + } +} + // ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/deltaTvalues b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/deltaTvalues new file mode 100644 index 0000000000000000000000000000000000000000..03c2defea091efeffb8d2149840db6a26b835b2b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/deltaTvalues @@ -0,0 +1,9 @@ +( + (0 1e-3) + (0.99 1e-3) + (0.999 1e-4) + (0.9999 1e-5) + (1.001 1e-5) + (1.01 1e-4) + (1.1 1e-3) +); diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution index 7ee092485cd126d3799c90d6ed9e558a87ad9864..3d480adfee2a3ee96a53ad5a5f140b791cb7d9d4 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution @@ -27,8 +27,8 @@ solvers { solver PCG; preconditioner DIC; - tolerance 1e-8; - relTol 0; + tolerance 1e-10; + relTol 0.001; } p_rghFinal @@ -78,10 +78,10 @@ solvers PIMPLE { - nOuterCorrectors 4; + nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; - nEnergyCorrectors 1; + nEnergyCorrectors 2; faceMomentum yes; } @@ -89,7 +89,7 @@ relaxationFactors { fields { - iDmdt 1; + iDmdt 1; } equations diff --git a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/constant/transportProperties b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/constant/transportProperties index e9a800818ab2a61c89ddce05f1194e8c6eb32245..9a745eb4cfe354d9fd8428c8780ff30183be7ebf 100644 --- a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/constant/transportProperties +++ b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/constant/transportProperties @@ -15,23 +15,23 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Dab [0 2 -1 0 0 0 0] 1e-06; -alphatab [0 0 0 0 0 0 0] 1; +Dab 1e-06; +alphatab 1; phases (sludge water); sludge { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 1000; + nu 1e-06; + rho 1000; } water { transportModel Newtonian; - nu [0 2 -1 0 0 0 0] 1e-06; - rho [1 -3 0 0 0 0 0] 990; + nu 1e-06; + rho 990; } // ************************************************************************* // diff --git a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles index 3cdf11268d5a6f3caf9e419468d6e45a2a699365..0ae46ee01cdfd40837746d5cfc9aba16e4ff9415 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles +++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles index 3cdf11268d5a6f3caf9e419468d6e45a2a699365..0ae46ee01cdfd40837746d5cfc9aba16e4ff9415 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 100; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/fvOptions b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/fvOptions index 6812c1f5c76777ffe623d1c43d640ace9672b233..3dd0abfea6368bed57e18fdff053b287be7a9204 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/fvOptions +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/fvOptions @@ -32,15 +32,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - thermo:rho.air (1e-3 0); // kg/s - } + volumeMode absolute; + injectionRateSuSp + { + thermo:rho.air (1e-3 0); // kg/s } } @@ -48,15 +45,12 @@ options { type vectorSemiImplicitSource; - vectorSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - U.air ((0 -1e-2 0) 0); // kg*m/s^2 - } + volumeMode absolute; + injectionRateSuSp + { + U.air ((0 -1e-2 0) 0); // kg*m/s^2 } } @@ -64,15 +58,12 @@ options { type scalarSemiImplicitSource; - scalarSemiImplicitSourceCoeffs - { - $injector1; + $injector1; - volumeMode absolute; - injectionRateSuSp - { - e.air (500 0); // kg*m^2/s^3 - } + volumeMode absolute; + injectionRateSuSp + { + e.air (500 0); // kg*m^2/s^3 } } } diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air index 1035ba6e55ac0bde5361cf088149fed99c6ea72c..1bcc915001b7b05ed03d8396512045405f66f526 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 28.9; } thermodynamics diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water index e801c03d7e25626c0545e44530680676bbe6613e..1f5cf18e9336784e2c7311ee44c473639693fb3c 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 18; } equationOfState diff --git a/tutorials/preProcessing/createZeroDirectory/cavity/constant/transportProperties b/tutorials/preProcessing/createZeroDirectory/cavity/constant/transportProperties index de00c3587cd9e0a677d63a6a6db42f7a47fa59a9..5b9f2ab093be57a5c2a76f4f32c3a9f95972dc89 100644 --- a/tutorials/preProcessing/createZeroDirectory/cavity/constant/transportProperties +++ b/tutorials/preProcessing/createZeroDirectory/cavity/constant/transportProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -nu nu [ 0 2 -1 0 0 0 0 ] 0.01; +nu 0.01; // ************************************************************************* // diff --git a/tutorials/preProcessing/createZeroDirectory/motorBike/constant/transportProperties b/tutorials/preProcessing/createZeroDirectory/motorBike/constant/transportProperties index 5eabec50ac90dbea1cf88d4143b6e31bb5dcdb55..c4e6700e33209b565645cb3d82471d590265a4b9 100644 --- a/tutorials/preProcessing/createZeroDirectory/motorBike/constant/transportProperties +++ b/tutorials/preProcessing/createZeroDirectory/motorBike/constant/transportProperties @@ -16,6 +16,6 @@ FoamFile transportModel Newtonian; -nu nu [0 2 -1 0 0 0 0] 1.5e-05; +nu 1.5e-05; // ************************************************************************* // diff --git a/wmake/rules/General/general b/wmake/rules/General/general index 4dffa627e3e7005362634e3722a87afb1ca61a99..bd57f37e2ff48769770af230d81a53a5aab528f0 100644 --- a/wmake/rules/General/general +++ b/wmake/rules/General/general @@ -1,5 +1,5 @@ #-------------------------------*- makefile -*--------------------------------- -WM_VERSION = OPENFOAM_PLUS=1612 +WM_VERSION = OPENFOAM_PLUS=1706 AR = ar ARFLAGS = cr diff --git a/wmake/scripts/AllwmakeParseArguments b/wmake/scripts/AllwmakeParseArguments index dc6ef4a0bdbdf6c48b41fbabdae83197a577d739..a3d40d0bbc7262b069bf73ae9076ee57bba67e8a 100644 --- a/wmake/scripts/AllwmakeParseArguments +++ b/wmake/scripts/AllwmakeParseArguments @@ -2,7 +2,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -32,6 +32,13 @@ # . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments # #------------------------------------------------------------------------------ + +if [ -z "$WM_PROJECT_DIR" ] +then + echo "$Script error: The OpenFOAM environment is not set." + echo " Check the OpenFOAM entries in your dot-files and source them." + exit 1 +fi usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done diff --git a/wmake/wmake b/wmake/wmake index 100e4d9d692d125f559046629f566e14519b1934..5ac39d1a631d62d599df5f5731f27262cc70ca1b 100755 --- a/wmake/wmake +++ b/wmake/wmake @@ -49,7 +49,7 @@ # wdep -h # # See also -# wmakeLnInclude, wmakeLnIncludeAll, wmakeQueue, wdep, wrmdep, wrmo, +# wmakeLnInclude, wmakeLnIncludeAll, wmakeCollect, wdep, wrmdep, wrmo, # wclean, wcleanPlatform, wcleanLnIncludeAll # #------------------------------------------------------------------------------ @@ -69,7 +69,7 @@ Usage: $Script [OPTION] [dir] options: -s | -silent Quiet mode (does not echo commands) -a | -all wmake all sub-directories, running Allwmake if present - -q | -queue wmakeQueue all sub-directories, running Allwmake if present + -q | -queue wmakeCollect all sub-directories, running Allwmake if present -k or -non-stop Compile without stopping when errors occur -j Compile using all local cores/hyperthreads -jN or -j N Compile using N cores/hyperthreads @@ -87,7 +87,7 @@ The 'target' is a Makefile target: or a special target: all wmake all sub-directories, running Allwmake if present - queue wmakeQueue all sub-directories, running Allwmake if present + queue wmakeCollect all sub-directories, running Allwmake if present exe Compile statically linked executable lib Compile statically linked archive lib (.a) libo Compile statically linked lib (.o) @@ -335,7 +335,7 @@ fi #------------------------------------------------------------------------------ -# Recurse the source tree to compile "all" targets using wmakeQueue +# Recurse the source tree to compile "all" targets using wmakeCollect #------------------------------------------------------------------------------ if [ "$all" = queue ]