diff --git a/applications/solvers/combustion/engineFoam/pEqn.H b/applications/solvers/combustion/engineFoam/pEqn.H index 2f6333cc9761b89834245073ac3edfad744a318f..bd12a82495b7b8bb8ee00733d5cc374c6b44a0d6 100644 --- a/applications/solvers/combustion/engineFoam/pEqn.H +++ b/applications/solvers/combustion/engineFoam/pEqn.H @@ -91,10 +91,7 @@ K = 0.5*magSqr(U); { rhoUf = fvc::interpolate(rho*U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - rhoUf += - mesh.Sf() - *(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf)) - /sqr(mesh.magSf()); + rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf)); } if (thermo.dpdt()) diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H index fd892bb9327e766841defe9190cfedaa49d382b1..1c58a02c33950e10054b8a9748c25278d939f114 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H @@ -107,10 +107,7 @@ K = 0.5*magSqr(U); { rhoUf = fvc::interpolate(rho*U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - rhoUf += - mesh.Sf() - *(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf)) - /sqr(mesh.magSf()); + rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf)); } if (thermo.dpdt()) diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H index 65afd1aeb88642cae2b880ac21ba6951bab763f0..4799f6456728144ee8a1327dc2fbb064b2cd8df0 100644 --- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H +++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H @@ -42,8 +42,5 @@ U.correctBoundaryConditions(); { rhoUf = fvc::interpolate(rho*U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - rhoUf += - mesh.Sf() - *(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf)) - /sqr(mesh.magSf()); + rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf)); } diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H index 7ecfe1f66236e7458835eb35dde5a76a7038b573..e2938bdb949776932b8e15d11e405fc52cb26553 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H @@ -51,7 +51,7 @@ fvOptions.correct(U); { Uf = fvc::interpolate(U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - Uf += mesh.Sf()*(phi - (mesh.Sf() & Uf))/sqr(mesh.magSf()); + Uf += n*(phi/mesh.magSf() - (n & Uf)); } // Make the fluxes relative to the mesh motion diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H index b10c24aa0b7c86eb281cea29e612929b31e1ad50..d23ec0f95058a2ea46ee547ba9833b2e4851e9e9 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H @@ -93,10 +93,7 @@ K = 0.5*magSqr(U); { rhoUf = fvc::interpolate(rho*U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - rhoUf += - mesh.Sf() - *(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf)) - /sqr(mesh.magSf()); + rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf)); } if (thermo.dpdt()) diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/pEqn.H b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/pEqn.H index 0f0d5768414323fb1df135a80b7bd1b5e27d2832..a0e0e6c74dc740175847af7d89fd41388a3dbb38 100644 --- a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/pEqn.H @@ -85,6 +85,6 @@ { Uf = fvc::interpolate(U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - Uf += mesh.Sf()*(phiv - (mesh.Sf() & Uf))/sqr(mesh.magSf()); + Uf += n*(phiv/mesh.magSf() - (n & Uf)); } } diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H index c86921371f52ec96f0cff265257110280f460546..a014a5ab4edcc2ca517b2552ed655bca42297b6c 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H @@ -114,7 +114,7 @@ { Uf = fvc::interpolate(U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - Uf += mesh.Sf()*(phi - (mesh.Sf() & Uf))/sqr(mesh.magSf()); + Uf += n*(phi/mesh.magSf() - (n & Uf)); } // Make the fluxes relative to the mesh motion diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C index 0a3d7ed11e97ed60f03d44a5b8e61705d303c4f5..ba7b4efa9ae1094b0e14f3c5a43d7a76868a3102 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C @@ -55,10 +55,10 @@ int main(int argc, char *argv[]) pimpleControl pimple(mesh); #include "createFields.H" - #include "createUf.H" #include "readTimeControls.H" #include "createPrghCorrTypes.H" #include "correctPhi.H" + #include "createUf.H" #include "CourantNo.H" #include "setInitialDeltaT.H" diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H index c30b361e72f9badfc98172483c455fc469552275..76441207919fe4427f6734750ff4de1a26c544f4 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H @@ -67,7 +67,7 @@ { Uf = fvc::interpolate(U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - Uf += mesh.Sf()*(phi - (mesh.Sf() & Uf))/sqr(mesh.magSf()); + Uf += n*(phi/mesh.magSf() - (n & Uf)); } // Make the fluxes relative to the mesh motion diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C index 0bfd8ad56eab6c4ca652b238ec5f4e8c36a3847b..810edeff308fb8ee57549e504f71aeb2a53b7ac4 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C @@ -65,10 +65,10 @@ int main(int argc, char *argv[]) pimpleControl pimple(mesh); #include "createFields.H" - #include "createUf.H" #include "readTimeControls.H" #include "createPcorrTypes.H" #include "../interFoam/interDyMFoam/correctPhi.H" + #include "createUf.H" #include "CourantNo.H" #include "setInitialDeltaT.H" diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H index 7863f5d74851ebba806897821174ff43b6484bea..6fac1df95c2236b94da9914f01a8de5416ed230f 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H @@ -68,7 +68,7 @@ { Uf = fvc::interpolate(U); surfaceVectorField n(mesh.Sf()/mesh.magSf()); - Uf += mesh.Sf()*(phi - (mesh.Sf() & Uf))/sqr(mesh.magSf()); + Uf += n*(phi/mesh.magSf() - (n & Uf)); } // Make the fluxes relative to the mesh motion diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C index cdbe770d1acdc461e9b77bd62ce02c7e0a805e9c..66bc3bcb1114b9d9f9ae0ab05e545c8ca576614d 100644 --- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C +++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C @@ -83,6 +83,7 @@ label addPatch pp.inGroups().append(groupName); } + // Add patch, create calculated everywhere fvMeshTools::addPatch ( @@ -207,7 +208,10 @@ void createFaces } else { - // Use neighbour side of face + // Use neighbour side of face. + // To keep faceZone pointing out of original neighbour + // we don't need to set faceFlip since that cell + // now becomes the owner modifyOrAddFace ( meshMod, @@ -217,7 +221,7 @@ void createFaces true, // face flip newMasterPatches[i], // patch for face fZone.index(), // zone for face - true, // face flip in zone + false, // face flip in zone modifiedFace // modify or add status ); } @@ -264,7 +268,7 @@ void createFaces false, // face flip newSlavePatches[i], // patch for face fZone.index(), // zone for face - false, // face flip in zone + true, // face flip in zone modifiedFace // modify or add status ); } @@ -633,18 +637,17 @@ int main(int argc, char *argv[]) // Note: This is added for the particular case where we want // master and slave in different groupNames // (ie 3D thermal baffles) - bool groupBase = false; - if (patchSource.found("groupBase")) - { - groupBase = readBool(patchSource.lookup("groupBase")); - if (groupBase) - { - groupNameMaster = groupName + "Group_master"; - groupNameSlave = groupName + "Group_slave"; - patchDictMaster.set("coupleGroup", groupNameMaster); - patchDictSlave.set("coupleGroup", groupNameSlave); - } + Switch sameGroup + ( + patchSource.lookupOrDefault("sameGroup", true) + ); + if (!sameGroup) + { + groupNameMaster = groupName + "Group_master"; + groupNameSlave = groupName + "Group_slave"; + patchDictMaster.set("coupleGroup", groupNameMaster); + patchDictSlave.set("coupleGroup", groupNameSlave); } addPatch(mesh, masterName, groupNameMaster, patchDictMaster); @@ -815,11 +818,11 @@ int main(int argc, char *argv[]) else { const dictionary& patchSource = dict.subDict("patchPairs"); - bool groupBase = false; - if (patchSource.found("groupBase")) - { - groupBase = readBool(patchSource.lookup("groupBase")); - } + + Switch sameGroup + ( + patchSource.lookupOrDefault("sameGroup", true) + ); const word& groupName = selectors[selectorI].name(); @@ -830,7 +833,7 @@ int main(int argc, char *argv[]) "patchFields" ); - if (!groupBase) + if (sameGroup) { // Add coupleGroup to all entries forAllIter(dictionary, patchFieldsDict, iter) diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 9771757c9edea8022c98326a7daeb9c0de171730..6d7b9fe6887707ebed82918389cb5ce3816eca45 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -1078,7 +1078,6 @@ labelList addRegionPatches mesh.boundaryMesh() ); - //interfacePatches[interI] = addPatch(mesh, patch1); interfacePatches[interI] = fvMeshTools::addPatch ( mesh, @@ -1100,7 +1099,6 @@ labelList addRegionPatches point::zero, // offset mesh.boundaryMesh() ); - //addPatch(mesh, patch2); fvMeshTools::addPatch ( mesh, diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H index c2414b0f8bc24a44a14a4421f8368a2a437d939f..4291dbde4b6b205793000128b3ae0fb065738b6e 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-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -125,6 +125,9 @@ public: //- Maximum number of iterations in the solver label maxIter_; + //- Minimum number of iterations in the solver + label minIter_; + //- Final convergence tolerance Type tolerance_; diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C index 50831a0ec94afeac0f52aeca75926b7e31ad5a90..fcd1400d591f744b998b2fe65eb64537491b7890 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-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -135,6 +135,7 @@ Foam::LduMatrix<Type, DType, LUType>::solver::solver controlDict_(solverDict), maxIter_(1000), + minIter_(0), tolerance_(1e-6*pTraits<Type>::one), relTol_(pTraits<Type>::zero) { @@ -148,6 +149,7 @@ template<class Type, class DType, class LUType> void Foam::LduMatrix<Type, DType, LUType>::solver::readControls() { readControl(controlDict_, maxIter_, "maxIter"); + readControl(controlDict_, minIter_, "minIter"); readControl(controlDict_, tolerance_, "tolerance"); readControl(controlDict_, relTol_, "relTol"); } diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C index 7ee6da05dcf6bd6c733164fe77e85773b9296469..6a9b1779dd974acf5edaddd97dd3435fc581085b 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,7 +104,11 @@ Foam::PBiCCCG<Type, DType, LUType>::solve solverPerf.finalResidual() = solverPerf.initialResidual(); // --- Check convergence, solve if not converged - if (!solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + if + ( + this->minIter_ > 0 + || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) { // --- Select and construct the preconditioner autoPtr<typename LduMatrix<Type, DType, LUType>::preconditioner> @@ -182,8 +186,11 @@ Foam::PBiCCCG<Type, DType, LUType>::solve } while ( - solverPerf.nIterations()++ < this->maxIter_ - && !(solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + ( + solverPerf.nIterations()++ < this->maxIter_ + && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) + || solverPerf.nIterations() < this->minIter_ ); } diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C index cc8f1d1c72b1eb0398f6c35dd3775409150e7f1c..5eeba9660554a81d654218d1cf49b9bc25ede14f 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,7 +92,11 @@ Foam::PCICG<Type, DType, LUType>::solve(Field<Type>& psi) const solverPerf.finalResidual() = solverPerf.initialResidual(); // --- Check convergence, solve if not converged - if (!solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + if + ( + this->minIter_ > 0 + || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) { // --- Select and construct the preconditioner autoPtr<typename LduMatrix<Type, DType, LUType>::preconditioner> @@ -174,8 +178,11 @@ Foam::PCICG<Type, DType, LUType>::solve(Field<Type>& psi) const } while ( - solverPerf.nIterations()++ < this->maxIter_ - && !(solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + ( + solverPerf.nIterations()++ < this->maxIter_ + && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) + || solverPerf.nIterations() < this->minIter_ ); } diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C index 9cf5c81223b71386ed7f40a0737045a30766a57d..5dea9207d6c6fa619f609e154544f67485bec5df 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -113,7 +113,11 @@ Foam::SmoothSolver<Type, DType, LUType>::solve(Field<Type>& psi) const // Check convergence, solve if not converged - if (!solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + if + ( + this->minIter_ > 0 + || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) { autoPtr<typename LduMatrix<Type, DType, LUType>::smoother> smootherPtr = LduMatrix<Type, DType, LUType>::smoother::New @@ -140,8 +144,11 @@ Foam::SmoothSolver<Type, DType, LUType>::solve(Field<Type>& psi) const ); } while ( - (solverPerf.nIterations() += nSweeps_) < this->maxIter_ - && !(solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + ( + (solverPerf.nIterations() += nSweeps_) < this->maxIter_ + && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + ) + || solverPerf.nIterations() < this->minIter_ ); } } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C index fd9c43da08dead04f1f4bac3b7a0a12bec88512b..b8bc5c930c5fa900a692516ed1db45a3f232c8bc 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.C @@ -31,7 +31,7 @@ License namespace Foam { -defineTypeNameAndDebug(lduMatrix, 1); + defineTypeNameAndDebug(lduMatrix, 1); } diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H index a75668dfddbfb086c1c9485f63132a86426d2d31..fdaf834a74c5889c69f4a3ce846834040ac32a04 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H @@ -107,6 +107,9 @@ public: //- Maximum number of iterations in the solver label maxIter_; + //- Minimum number of iterations in the solver + label minIter_; + //- Final convergence tolerance scalar tolerance_; diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C index cee5c1dc2f1d30ce7441ce2834927d710ec5136d..aed21fe9f734e4a9fff93760c5c51a37fe363bd9 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C @@ -164,6 +164,7 @@ Foam::lduMatrix::solver::solver void Foam::lduMatrix::solver::readControls() { maxIter_ = controlDict_.lookupOrDefault<label>("maxIter", 1000); + minIter_ = controlDict_.lookupOrDefault<label>("minIter", 0); tolerance_ = controlDict_.lookupOrDefault<scalar>("tolerance", 1e-6); relTol_ = controlDict_.lookupOrDefault<scalar>("relTol", 0); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C index 32602d3f1c6ea1dcd638f2c6b0e07871581a8ddc..5b58b1c438d83cb7a89271e40262337eb85b9e41 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C @@ -69,7 +69,11 @@ Foam::solverPerformance Foam::GAMGSolver::solve // Check convergence, solve if not converged - if (!solverPerf.checkConvergence(tolerance_, relTol_)) + if + ( + minIter_ > 0 + || !solverPerf.checkConvergence(tolerance_, relTol_) + ) { // Create coarse grid correction fields PtrList<scalarField> coarseCorrFields; @@ -131,8 +135,11 @@ Foam::solverPerformance Foam::GAMGSolver::solve } } while ( - ++solverPerf.nIterations() < maxIter_ - && !(solverPerf.checkConvergence(tolerance_, relTol_)) + ( + ++solverPerf.nIterations() < maxIter_ + && !solverPerf.checkConvergence(tolerance_, relTol_) + ) + || solverPerf.nIterations() < minIter_ ); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C index 1a221013e3abf5fbdd5cf80c630840aedefef768..3b6bbb88ff79132deadff44479feea97a2d83390 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C @@ -120,7 +120,11 @@ Foam::solverPerformance Foam::PBiCG::solve solverPerf.finalResidual() = solverPerf.initialResidual(); // --- Check convergence, solve if not converged - if (!solverPerf.checkConvergence(tolerance_, relTol_)) + if + ( + minIter_ > 0 + || !solverPerf.checkConvergence(tolerance_, relTol_) + ) { // --- Select and construct the preconditioner autoPtr<lduMatrix::preconditioner> preconPtr = @@ -192,8 +196,11 @@ Foam::solverPerformance Foam::PBiCG::solve /normFactor; } while ( - solverPerf.nIterations()++ < maxIter_ - && !(solverPerf.checkConvergence(tolerance_, relTol_)) + ( + solverPerf.nIterations()++ < maxIter_ + && !solverPerf.checkConvergence(tolerance_, relTol_) + ) + || solverPerf.nIterations() < minIter_ ); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C index b3d0c3d4f1b6e55034b0e13f0e9919a63fa20a27..a684c2ecf18dc31e9c3f8f292685794cce633f62 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C @@ -111,7 +111,11 @@ Foam::solverPerformance Foam::PCG::solve solverPerf.finalResidual() = solverPerf.initialResidual(); // --- Check convergence, solve if not converged - if (!solverPerf.checkConvergence(tolerance_, relTol_)) + if + ( + minIter_ > 0 + || !solverPerf.checkConvergence(tolerance_, relTol_) + ) { // --- Select and construct the preconditioner autoPtr<lduMatrix::preconditioner> preconPtr = @@ -177,8 +181,11 @@ Foam::solverPerformance Foam::PCG::solve } while ( - solverPerf.nIterations()++ < maxIter_ - && !(solverPerf.checkConvergence(tolerance_, relTol_)) + ( + solverPerf.nIterations()++ < maxIter_ + && !solverPerf.checkConvergence(tolerance_, relTol_) + ) + || solverPerf.nIterations() < minIter_ ); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C b/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C index a83ceaca3ece7df4448e00879e1cd78887833b2c..d073e73c372d51e7cf647dd6e42bde6da64d5efd 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C @@ -138,7 +138,11 @@ Foam::solverPerformance Foam::smoothSolver::solve // Check convergence, solve if not converged - if (!solverPerf.checkConvergence(tolerance_, relTol_)) + if + ( + minIter_ > 0 + || !solverPerf.checkConvergence(tolerance_, relTol_) + ) { autoPtr<lduMatrix::smoother> smootherPtr = lduMatrix::smoother::New ( @@ -176,8 +180,11 @@ Foam::solverPerformance Foam::smoothSolver::solve )/normFactor; } while ( - (solverPerf.nIterations() += nSweeps_) < maxIter_ - && !(solverPerf.checkConvergence(tolerance_, relTol_)) + ( + (solverPerf.nIterations() += nSweeps_) < maxIter_ + && !solverPerf.checkConvergence(tolerance_, relTol_) + ) + || solverPerf.nIterations() < minIter_ ); } } diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C index f6c3d5106155f37fe7fa4eae84fabbf6c8ea5b42..9263609ee5cfa6a53a7d2093189fe82268f8dc4f 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,13 @@ Foam::wallPolyPatch::wallPolyPatch ) : polyPatch(name, size, start, index, bm, patchType) -{} +{ + // wall is not constraint type so add wall group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::wallPolyPatch::wallPolyPatch @@ -62,7 +68,13 @@ Foam::wallPolyPatch::wallPolyPatch ) : polyPatch(name, dict, index, bm, patchType) -{} +{ + // wall is not constraint type so add wall group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::wallPolyPatch::wallPolyPatch diff --git a/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C b/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C index 968ea6c483595cab695831bdb4ba12e3a687a139..28398bdc92a1e5b6a1d181217a62b197b5826ffe 100644 --- a/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C +++ b/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C @@ -267,7 +267,11 @@ Foam::label Foam::polyMeshFilter::filterFacesLoop(const label nOriginalBadFaces) newBadFaces = false; forAll(mesh_.points(), pI) { - if (isErrorPoint[origToCurrentPointMap[pI]]) + if + ( + origToCurrentPointMap[pI] >= 0 + && isErrorPoint[origToCurrentPointMap[pI]] + ) { if (!newErrorPoint[pI]) { @@ -862,14 +866,22 @@ void Foam::polyMeshFilter::updateOldToNewPointMap { label oldPointI = origToCurrentPointMap[origPointI]; - if (oldPointI < currToNew.size()) + if (oldPointI != -1) { label newPointI = currToNew[oldPointI]; - if (newPointI != -1) + if (newPointI >= 0) { origToCurrentPointMap[origPointI] = newPointI; } + else if (newPointI == -1) + { + origToCurrentPointMap[origPointI] = -1; + } + else + { + origToCurrentPointMap[origPointI] = -newPointI-2; + } } } } diff --git a/src/edgeMesh/edgeMesh.H b/src/edgeMesh/edgeMesh.H index 534c1fb5687a8bca349d6fd86965cbb598ab1d1c..c8abb55169d6cb374630822dc7b612e13e44a7d2 100644 --- a/src/edgeMesh/edgeMesh.H +++ b/src/edgeMesh/edgeMesh.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,6 +31,7 @@ SourceFiles edgeMeshI.H edgeMesh.C edgeMeshIO.C + edgeMeshNew.C \*---------------------------------------------------------------------------*/ diff --git a/src/edgeMesh/edgeMeshNew.C b/src/edgeMesh/edgeMeshNew.C index 6254ffd3f4a2a3d63dd68ef22e3cb6ff3aa32965..da7091c73a9559088aeb0c9babba386298955ba5 100644 --- a/src/edgeMesh/edgeMeshNew.C +++ b/src/edgeMesh/edgeMeshNew.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,14 +48,11 @@ Foam::autoPtr<Foam::edgeMesh> Foam::edgeMesh::New << exit(FatalError); } - return autoPtr< edgeMesh >(cstrIter()(name)); + return autoPtr<edgeMesh>(cstrIter()(name)); } -Foam::autoPtr<Foam::edgeMesh> Foam::edgeMesh::New -( - const fileName& name -) +Foam::autoPtr<Foam::edgeMesh> Foam::edgeMesh::New(const fileName& name) { word ext = name.ext(); if (ext == "gz") diff --git a/src/edgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H b/src/edgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H index 3695a3901261e44256bb4c9c90474b94283a7c2d..fdeeeb8dd0a9cf67ec5709ca5e352fd20c9b7f2d 100644 --- a/src/edgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H +++ b/src/edgeMesh/extendedFeatureEdgeMesh/extendedFeatureEdgeMesh.H @@ -161,7 +161,7 @@ private: // points and edges, unsorted vectorField normals_; - //- + //- Type per normal: which side of normal to mesh List<sideVolumeType> normalVolumeTypes_; //- Flat and open edges require the direction of the edge diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H index 6275a5acf4ebdb5e109e57aca92c26ea063d36df..7f3a06cdf3b75d02f35c5fea1e002d7d2a6e9517 100644 --- a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H +++ b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,6 +78,8 @@ public: featureEdgeMesh(const IOobject&, const featureEdgeMesh&); + // IO + //- ReadData function required for regIOobject read operation virtual bool readData(Istream&); diff --git a/src/finiteVolume/cfdTools/compressible/createRhoUf.H b/src/finiteVolume/cfdTools/compressible/createRhoUf.H index e91115ae75b2a5b9a6e6f932352c8129bc4b693f..312aec60dca9cdaffbd448bd17b3053e9731a3fe 100644 --- a/src/finiteVolume/cfdTools/compressible/createRhoUf.H +++ b/src/finiteVolume/cfdTools/compressible/createRhoUf.H @@ -46,9 +46,14 @@ surfaceVectorField rhoUf IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), - linearInterpolate(rho*U) + fvc::interpolate(rho*U) ); +{ + surfaceVectorField n(mesh.Sf()/mesh.magSf()); + rhoUf += n*(phi/mesh.magSf() - (n & rhoUf)); +} + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/finiteVolume/cfdTools/incompressible/createUf.H b/src/finiteVolume/cfdTools/incompressible/createUf.H index aab92ce0e2aec37304bd634f72bcbee68ed80189..0b65f2daed23a820fd4850cea3852e61d4ddf21d 100644 --- a/src/finiteVolume/cfdTools/incompressible/createUf.H +++ b/src/finiteVolume/cfdTools/incompressible/createUf.H @@ -46,9 +46,15 @@ surfaceVectorField Uf IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), - linearInterpolate(U) + fvc::interpolate(U) ); +{ + surfaceVectorField n(mesh.Sf()/mesh.magSf()); + Uf += n*(phi/mesh.magSf() - (n & Uf)); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C index 35db99fe0d7b77333efeda2f7ad159763dc3270e..d4a3ca5a0a7c1f7b3dfdd2fe55eb3879d26a68b9 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,6 +139,21 @@ Foam::displacementLaplacianFvMotionSolver:: // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +Foam::motionDiffusivity& +Foam::displacementLaplacianFvMotionSolver::diffusivity() +{ + if (!diffusivityPtr_.valid()) + { + diffusivityPtr_ = motionDiffusivity::New + ( + fvMesh_, + coeffDict().lookup("diffusivity") + ); + } + return diffusivityPtr_(); +} + + Foam::tmp<Foam::pointField> Foam::displacementLaplacianFvMotionSolver::curPoints() const { @@ -210,14 +225,14 @@ void Foam::displacementLaplacianFvMotionSolver::solve() // the motionSolver accordingly movePoints(fvMesh_.points()); - diffusivityPtr_->correct(); + diffusivity().correct(); pointDisplacement_.boundaryField().updateCoeffs(); Foam::solve ( fvm::laplacian ( - diffusivityPtr_->operator()(), + diffusivity().operator()(), cellDisplacement_, "laplacian(diffusivity,cellDisplacement)" ) @@ -234,12 +249,7 @@ void Foam::displacementLaplacianFvMotionSolver::updateMesh // Update diffusivity. Note two stage to make sure old one is de-registered // before creating/registering new one. - diffusivityPtr_.reset(NULL); - diffusivityPtr_ = motionDiffusivity::New - ( - fvMesh_, - coeffDict().lookup("diffusivity") - ); + diffusivityPtr_.clear(); } diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H index c0b4e9970a25ae31d9b3f6970f8b779263b4383e..47ad2c672c9a8edd77a53cd1594f6680cb10d46a 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,6 @@ class motionDiffusivity; class displacementLaplacianFvMotionSolver : -// public displacementFvMotionSolver public displacementMotionSolver, public fvMotionSolverCore { @@ -120,6 +119,9 @@ public: return cellDisplacement_; } + //- Return reference to the diffusivity field + motionDiffusivity& diffusivity(); + //- Return point location obtained from the current motion field virtual tmp<pointField> curPoints() const; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C index 8d1729361e1d370a0357c0d5b8d9a20e746f1b89..51272f3560ed8d25a0899d74885e6818e7ba7c17 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C @@ -26,7 +26,6 @@ License #include "SurfaceFilmModel.H" #include "surfaceFilmModel.H" #include "mathematicalConstants.H" -#include "mappedPatchBase.H" using namespace Foam::constant; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H index 0f0a4d4196725d34152fd598731998d20fd1f721..9098782204e0f5041d87f3724bd8bd2f0058c296 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H @@ -55,8 +55,6 @@ namespace regionModels } } -class mappedPatchBase; - /*---------------------------------------------------------------------------*\ Class SurfaceFilmModel Declaration \*---------------------------------------------------------------------------*/ diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C index eb223c88414a6c294290464d790e15b4629d74a1..b2a142accfada9399ab60ab44cbdf61371215fe2 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C @@ -66,7 +66,6 @@ Foam::labelList Foam::medialAxisMeshMover::getFixedValueBCs if (isA<valuePointPatchField<vector> >(patchFld)) { adaptPatchIDs.append(patchI); - //Info<< "Detected adapt patch " << patchFld.patch().name() << endl; } } return adaptPatchIDs; @@ -1259,6 +1258,7 @@ handleFeatureAngleLayerTerminations void Foam::medialAxisMeshMover::findIsolatedRegions ( const scalar minCosLayerTermination, + const bool detectExtrusionIsland, const PackedBoolList& isMasterPoint, const PackedBoolList& isMasterEdge, const labelList& meshEdges, @@ -1268,6 +1268,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions ) const { const indirectPrimitivePatch& pp = adaptPatchPtr_(); + const labelListList& pointFaces = pp.pointFaces(); + Info<< typeName << " : Removing isolated regions ..." << endl; @@ -1292,41 +1294,111 @@ void Foam::medialAxisMeshMover::findIsolatedRegions syncPatchDisplacement(minThickness, patchDisp, extrudeStatus); - // Do not extrude from point where all neighbouring - // faces are not grown - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - boolList extrudedFaces(pp.size(), true); - forAll(pp.localFaces(), faceI) + + // Detect either: + // - point where all surrounding points are not extruded + // (detectExtrusionIsland) + // or + // - point where all the faces surrounding it are not fully + // extruded + + boolList keptPoints(pp.nPoints(), false); + + if (detectExtrusionIsland) { - const face& f = pp.localFaces()[faceI]; - forAll(f, fp) + // Do not extrude from point where all neighbouring + // points are not grown + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + labelList islandPoint(pp.size(), -1); + forAll(pp, faceI) { - if (extrudeStatus[f[fp]] == autoLayerDriver::NOEXTRUDE) + const face& f = pp.localFaces()[faceI]; + + forAll(f, fp) { - extrudedFaces[faceI] = false; - break; + label patchPointI = f[fp]; + + if (extrudeStatus[f[fp]] != autoLayerDriver::NOEXTRUDE) + { + if (islandPoint[faceI] == -1) + { + // First point to extrude + islandPoint[faceI] = patchPointI; + } + else + { + // Second or more point to extrude + islandPoint[faceI] = -2; + } + } } } - } - const labelListList& pointFaces = pp.pointFaces(); + // islandPoint: + // -1 : no point extruded + // -2 : >= 2 points extruded + // >=0: label of point extruded - boolList keptPoints(pp.nPoints(), false); - forAll(keptPoints, patchPointI) + // Check all surrounding faces that I am the islandPoint + boolList keptPoints(pp.nPoints(), false); + forAll(pointFaces, patchPointI) + { + if (extrudeStatus[patchPointI] != autoLayerDriver::NOEXTRUDE) + { + const labelList& pFaces = pointFaces[patchPointI]; + + forAll(pFaces, i) + { + label faceI = pFaces[i]; + if (islandPoint[faceI] != patchPointI) + { + keptPoints[patchPointI] = true; + break; + } + } + } + } + } + else { - const labelList& pFaces = pointFaces[patchPointI]; + // Do not extrude from point where all neighbouring + // faces are not grown + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - forAll(pFaces, i) + boolList extrudedFaces(pp.size(), true); + forAll(pp.localFaces(), faceI) { - label faceI = pFaces[i]; - if (extrudedFaces[faceI]) + const face& f = pp.localFaces()[faceI]; + forAll(f, fp) { - keptPoints[patchPointI] = true; - break; + if (extrudeStatus[f[fp]] == autoLayerDriver::NOEXTRUDE) + { + extrudedFaces[faceI] = false; + break; + } + } + } + + const labelListList& pointFaces = pp.pointFaces(); + + forAll(keptPoints, patchPointI) + { + const labelList& pFaces = pointFaces[patchPointI]; + + forAll(pFaces, i) + { + label faceI = pFaces[i]; + if (extrudedFaces[faceI]) + { + keptPoints[patchPointI] = true; + break; + } } } } + syncTools::syncPointList ( mesh(), @@ -1344,8 +1416,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions { if (unmarkExtrusion(patchPointI, patchDisp, extrudeStatus)) { - nPointCounter++; - nChanged++; + nPointCounter++; + nChanged++; } } } @@ -1701,6 +1773,13 @@ void Foam::medialAxisMeshMover::calculateDisplacement mesh().globalData().nTotalPoints() ); + //- Use strick extrusionIsland detection + const Switch detectExtrusionIsland = coeffDict.lookupOrDefault<label> + ( + "detectExtrusionIsland", + true + ); + // Precalulate master points/edge (only relevant for shared points/edges) const PackedBoolList isMasterPoint(syncTools::getMasterPoints(mesh())); @@ -1851,6 +1930,8 @@ void Foam::medialAxisMeshMover::calculateDisplacement findIsolatedRegions ( minCosLayerTermination, + detectExtrusionIsland, + isMasterPoint, isMasterEdge, meshEdges, diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H index a81b073dd2995a8233b94370bc3b6b976c9f5e9d..b402ecba259731069ccc03c8f02b8be9a87f2fb4 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H @@ -219,6 +219,7 @@ class medialAxisMeshMover void findIsolatedRegions ( const scalar minCosLayerTermination, + const bool detectExtrusionIsland, const PackedBoolList& isMasterPoint, const PackedBoolList& isMasterEdge, const labelList& meshEdges, diff --git a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C index f3d969e69113b09948af15f631a9c8f1672ad404..a5109bc3c88a9c322211b1e80896d293a800d9b3 100644 --- a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C +++ b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C @@ -303,7 +303,7 @@ Foam::refinementFeatures::refinementFeatures Info<< "Detected " << featurePoints.size() << " featurePoints out of " << pointEdges.size() - << " on feature " << eMesh.name() << endl; + << " points on feature " << eMesh.name() << endl; buildTrees(i, featurePoints); } @@ -372,7 +372,7 @@ Foam::refinementFeatures::refinementFeatures Info<< "Detected " << featurePoints.size() << " featurePoints out of " << points.size() - << " on feature " << eMesh.name() + << " points on feature " << eMesh.name() << " when using feature cos " << minCos << endl; buildTrees(i, featurePoints); diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C index 804b96affbc2bbab126ef28d3849e60e07d15f70..6732e5c7b18d8ca2462e9074dc6d4e22bcbfcbf3 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,13 @@ Foam::mappedPolyPatch::mappedPolyPatch : polyPatch(name, size, start, index, bm, patchType), mappedPatchBase(static_cast<const polyPatch&>(*this)) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::mappedPolyPatch::mappedPolyPatch @@ -115,7 +121,13 @@ Foam::mappedPolyPatch::mappedPolyPatch : polyPatch(name, dict, index, bm, patchType), mappedPatchBase(*this, dict) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::mappedPolyPatch::mappedPolyPatch diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C index 61bc54a3d0fc630d0ea2382460b604f4eeb4decb..243d0a804ae10a776f5a4c0a69837ab0e7ae4f2d 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "mappedWallPolyPatch.H" #include "addToRunTimeSelectionTable.H" +#include "mappedPolyPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,7 +57,13 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch : wallPolyPatch(name, size, start, index, bm, patchType), mappedPatchBase(static_cast<const polyPatch&>(*this)) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), mappedPolyPatch::typeName) == -1) + { + inGroups().append(mappedPolyPatch::typeName); + } +} Foam::mappedWallPolyPatch::mappedWallPolyPatch @@ -120,7 +127,13 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch : wallPolyPatch(name, dict, index, bm, patchType), mappedPatchBase(*this, dict) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), mappedPolyPatch::typeName) == -1) + { + inGroups().append(mappedPolyPatch::typeName); + } +} Foam::mappedWallPolyPatch::mappedWallPolyPatch diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C index 0327dd1da758b485c23cef211752c8b97c248f3e..4b51db9f17b1d1e0e57712a502e7ab078a962d4e 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -263,9 +263,9 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs() forAll (thicknessLayers_, iLayer) { const scalar l = thicknessLayers_[iLayer]; - if (l > 0.0) + if (kappaLayers_[iLayer] > 0.0) { - totalSolidRes += kappaLayers_[iLayer]/l; + totalSolidRes += l/kappaLayers_[iLayer]; } } } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T index cba8f5dedda0645d287bef1315539e78fc4cedc8..09fb826c639e52e1df9d483f5cee85f2c9bd066a 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T @@ -44,6 +44,11 @@ boundaryField { type empty; } + processor + { + type processor; + value $internalField; + } } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U index 713c1df761387fcda8db742d5c3cefc4789a7da2..94521707e2bad885cfcd41175f934f7909fadc39 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U @@ -21,6 +21,9 @@ internalField uniform (0.1 0 0); boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type fixedValue; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat index d98e7838b44fa9b51307b7398618dec8422c1e6f..e0c1d0dfbead048eee4637b2986e04cf5735a784 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat @@ -21,6 +21,9 @@ internalField uniform 0; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::alphatWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon index 7e7f3670e7b94a0b8a43a240b9140c263b35183e..7ac88b9230b1da2c8e6d50303e375c519fcd50b2 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon @@ -21,6 +21,9 @@ internalField uniform 0.01; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::epsilonWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k index 6e03f3ece448971b124b43ea9776832c1b639d80..97f41e6e200425dfb58ebf718a4f637940b599c9 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k @@ -21,6 +21,9 @@ internalField uniform 0.1; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::kqRWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut index cf8ccb9182cc90916c530ed3d8c726b5d1eb7d20..329027bb91ef622ea523c0511394a2ad917def0d 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut @@ -21,6 +21,9 @@ internalField uniform 0; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type mutkWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p index 2d49a19495048c3636dbcd2ab9f36a016592a7cd..a18ef4e1807e504ba0c125a4e15b103d3e066972 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p @@ -21,6 +21,9 @@ internalField uniform 101325; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type calculated; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh index d4845488a8365bba29ef5a82f7e45cc319f2ea6c..ac641156fbcbecac521d981ec572a39424e05a99 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh @@ -21,6 +21,9 @@ internalField uniform 101325; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type fixedFluxPressure; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict index 2aed1e32a615e3405ccb0d355239984cfc0f1514..2bc58e0d700de664fa0f4498d7df3ce5e9f3817d 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict @@ -52,8 +52,9 @@ baffles { type mappedWall; sampleMode nearestPatchFace; - //Group master and slave in different groups. (default off) - groupBase on; + // Put master and slave patch in same group (default on) + // Otherwise makeup group names xxx_master and xxx_slave + sameGroup off; patchFields { #include "./0/include/wallBafflePatches" diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary index 40530a746d077ecc7a9cb45a277031110b068c62..578783eaeb9392c4f1d70bc4e50003807d0aeb7a 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary @@ -15,46 +15,441 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -6 +72 ( - front + frontAndBack { type symmetryPlane; inGroups 1(symmetryPlane); - nFaces 160; - startFace 3456; - } - back - { - type symmetryPlane; - inGroups 1(symmetryPlane); - nFaces 160; - startFace 3616; + nFaces 320; + startFace 9440280; } inlet { type patch; nFaces 64; - startFace 3776; + startFace 9440600; } outlet { type patch; nFaces 64; - startFace 3840; + startFace 9440664; } lowerWall { type wall; - nFaces 160; - startFace 3904; + nFaces 15243; + startFace 9440728; } upperWall { type symmetryPlane; inGroups 1(symmetryPlane); nFaces 160; - startFace 4064; + startFace 9455971; + } + motorBike_frt-fairing:001%1 + { + type wall; + nFaces 90875; + startFace 9456131; + } + motorBike_windshield:002%2 + { + type wall; + nFaces 376; + startFace 9547006; + } + motorBike_rr-wh-rim:005%5 + { + type wall; + nFaces 2402; + startFace 9547382; + } + motorBike_rr-wh-rim:010%10 + { + type wall; + nFaces 5288; + startFace 9549784; + } + motorBike_fr-wh-rim:011%11 + { + type wall; + nFaces 7215; + startFace 9555072; + } + motorBike_fr-wh-brake-disk:012%12 + { + type wall; + nFaces 973; + startFace 9562287; + } + motorBike_frame:016-shadow%13 + { + type wall; + nFaces 1718; + startFace 9563260; + } + motorBike_rear-susp:014%14 + { + type wall; + nFaces 14936; + startFace 9564978; + } + motorBike_rear-susp:014-shadow%15 + { + type wall; + nFaces 8564; + startFace 9579914; + } + motorBike_frame:016%16 + { + type wall; + nFaces 969; + startFace 9588478; + } + motorBike_rr-wh-rim:005-shadow%17 + { + type wall; + nFaces 1251; + startFace 9589447; + } + motorBike_rr-wh-chain-hub:022%22 + { + type wall; + nFaces 1827; + startFace 9590698; + } + motorBike_rearseat%24 + { + type wall; + nFaces 3241; + startFace 9592525; + } + motorBike_frt-fairing%25 + { + type wall; + nFaces 5078; + startFace 9595766; + } + motorBike_windshield%26 + { + type wall; + nFaces 6545; + startFace 9600844; + } + motorBike_headlights%27 + { + type wall; + nFaces 455; + startFace 9607389; + } + motorBike_driversseat%28 + { + type wall; + nFaces 5112; + startFace 9607844; + } + motorBike_rear-body%29 + { + type wall; + nFaces 12033; + startFace 9612956; + } + motorBike_fuel-tank%30 + { + type wall; + nFaces 6586; + startFace 9624989; + } + motorBike_exhaust%31 + { + type wall; + nFaces 20319; + startFace 9631575; + } + motorBike_rr-wh-rim%32 + { + type wall; + nFaces 9928; + startFace 9651894; + } + motorBike_fr-mud-guard%33 + { + type wall; + nFaces 13989; + startFace 9661822; + } + motorBike_fr-wh-rim%34 + { + type wall; + nFaces 6592; + startFace 9675811; + } + motorBike_fr-wh-brake-disk%35 + { + type wall; + nFaces 7374; + startFace 9682403; + } + motorBike_fr-brake-caliper%36 + { + type wall; + nFaces 2178; + startFace 9689777; + } + motorBike_fr-wh-tyre%37 + { + type wall; + nFaces 9947; + startFace 9691955; + } + motorBike_hbars%38 + { + type wall; + nFaces 7345; + startFace 9701902; + } + motorBike_fr-forks%39 + { + type wall; + nFaces 10349; + startFace 9709247; + } + motorBike_chain%40 + { + type wall; + nFaces 7168; + startFace 9719596; + } + motorBike_rr-wh-tyre%41 + { + type wall; + nFaces 7245; + startFace 9726764; + } + motorBike_square-dial%42 + { + type wall; + nFaces 62; + startFace 9734009; + } + motorBike_round-dial%43 + { + type wall; + nFaces 183; + startFace 9734071; + } + motorBike_dial-holder%44 + { + type wall; + nFaces 1336; + startFace 9734254; + } + motorBike_rear-susp%45 + { + type wall; + nFaces 25738; + startFace 9735590; + } + motorBike_rear-brake-lights%46 + { + type wall; + nFaces 860; + startFace 9761328; + } + motorBike_rear-light-bracket%47 + { + type wall; + nFaces 2003; + startFace 9762188; + } + motorBike_frame%48 + { + type wall; + nFaces 20232; + startFace 9764191; + } + motorBike_rear-mud-guard%49 + { + type wall; + nFaces 10690; + startFace 9784423; + } + motorBike_rear-susp-spring-damp%50 + { + type wall; + nFaces 1769; + startFace 9795113; + } + motorBike_fairing-inner-plate%51 + { + type wall; + nFaces 4660; + startFace 9796882; + } + motorBike_clutch-housing%52 + { + type wall; + nFaces 8237; + startFace 9801542; + } + motorBike_radiator%53 + { + type wall; + nFaces 1849; + startFace 9809779; + } + motorBike_water-pipe%54 + { + type wall; + nFaces 1182; + startFace 9811628; + } + motorBike_water-pump%55 + { + type wall; + nFaces 902; + startFace 9812810; + } + motorBike_engine%56 + { + type wall; + nFaces 19087; + startFace 9813712; + } + motorBike_rear-shock-link%57 + { + type wall; + nFaces 512; + startFace 9832799; + } + motorBike_rear-brake-fluid-pot-bracket%58 + { + type wall; + nFaces 721; + startFace 9833311; + } + motorBike_rear-brake-fluid-pot%59 + { + type wall; + nFaces 795; + startFace 9834032; + } + motorBike_footpeg%60 + { + type wall; + nFaces 1405; + startFace 9834827; + } + motorBike_rr-wh-chain-hub%61 + { + type wall; + nFaces 1984; + startFace 9836232; + } + motorBike_rear-brake-caliper%62 + { + type wall; + nFaces 2119; + startFace 9838216; + } + motorBike_rider-helmet%65 + { + type wall; + nFaces 2244; + startFace 9840335; + } + motorBike_rider-visor%66 + { + type wall; + nFaces 171; + startFace 9842579; + } + motorBike_rider-boots%67 + { + type wall; + nFaces 5287; + startFace 9842750; + } + motorBike_rider-gloves%68 + { + type wall; + nFaces 3129; + startFace 9848037; + } + motorBike_rider-body%69 + { + type wall; + nFaces 22909; + startFace 9851166; + } + motorBike_frame:0%70 + { + type wall; + nFaces 361; + startFace 9874075; + } + motorBike_frt-fairing:001-shadow%74 + { + type wall; + nFaces 56996; + startFace 9874436; + } + motorBike_windshield-shadow%75 + { + type wall; + nFaces 4535; + startFace 9931432; + } + motorBike_fr-mud-guard-shadow%81 + { + type wall; + nFaces 9174; + startFace 9935967; + } + motorBike_fr-wh-brake-disk-shadow%83 + { + type wall; + nFaces 3923; + startFace 9945141; + } + motorBike_rear-mud-guard-shadow%84 + { + type wall; + nFaces 6792; + startFace 9949064; + } + motorBike_rear-susp-spring-damp-shadow%85 + { + type wall; + nFaces 1211; + startFace 9955856; + } + motorBike_radiator-shadow%86 + { + type wall; + nFaces 1080; + startFace 9957067; + } + motorBike_rear-shock-link-shadow%87 + { + type wall; + nFaces 357; + startFace 9958147; + } + motorBike_rear-brake-fluid-pot-bracket-shadow%88 + { + type wall; + nFaces 420; + startFace 9958504; + } + motorBike_rr-wh-chain-hub-shadow%89 + { + type wall; + nFaces 1071; + startFace 9958924; } ) diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun index 3953f6c668caeb66b296d8e2e32dff470b6ae07f..99d75a9906847222fb3701cef5a25a476470e508 100755 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun @@ -4,36 +4,10 @@ cd ${0%/*} || exit 1 # run from this directory # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions -\cp system/controlDict.flow system/controlDict - -# Set application name -application=$(getApplication) - -# Get number of processors to run on -nProcs=$(getNumberOfProcessors) - -\rm -rf 0 - -runApplication createBaffles -overwrite -runApplication mergeOrSplitBaffles -split -overwrite - -# Get rid of zero faced patches -runApplication createPatch -overwrite - -# Copy fields after meshing to avoind the generation of unnecessary patch fields -\cp -r 0.org 0 - -# Initialize alpha -runApplication setFields - -# Decompose -runApplication decomposePar -force - -# Run -runParallel $application 8 - -# Reconstruct -runApplication reconstructPar -noFunctionObjects +# Generate mesh +./Allrun-pre +## Run simulation +#./Allrun-simulation # ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun-simulation b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun-simulation new file mode 100755 index 0000000000000000000000000000000000000000..e789caef9fdf7c456a2ce7e532f670f14d3b11ac --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun-simulation @@ -0,0 +1,40 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +\cp system/controlDict.flow system/controlDict + +# Set application name +application=$(getApplication) + +# Get number of processors to run on +nProcs=$(getNumberOfProcessors) + +\rm -rf 0 + +runApplication createBaffles -overwrite +runApplication mergeOrSplitBaffles -split -overwrite + +# Get rid of zero faced patches +runApplication createPatch -overwrite + +# Copy fields after meshing to avoind the generation of unnecessary patch fields +\cp -r 0.org 0 + +# Initialize alpha +runApplication setFields + +# Decompose +\rm log.decomposePar +runApplication decomposePar -force + +# Run +runParallel $application 8 + +# Reconstruct +runApplication reconstructPar -noFunctionObjects + + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes index 84e4f5d57dfd09e85acab261c76262e00856e689..f9e967e83927afba644cdcac6a2fa5ab1fc481fa 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes @@ -37,8 +37,6 @@ divSchemes div(rhoPhi,K) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; - div((muEff*dev2(T(grad(U))))) Gauss linear; - div((muEff*dev(T(grad(U))))) Gauss linear; } diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution index 946d84ed62c397cfed6200bf9829658cc634d622..6798f4b2e09f0c1d317590b3552bdb1a8e3b7468 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution @@ -51,6 +51,13 @@ solvers relTol 0; } + pcorrFinal + { + $pcorr; + tolerance 0.1; + relTol 0; + } + ".*(rho|rhoFinal)" { solver diagonal; diff --git a/wmake/src/wmkdep.l b/wmake/src/wmkdep.l index d9d4b73591b6cefda555095fa61f300946cfcec6..3b6973209b562be4e06b7d7aa6296baa5fa501b5 100644 --- a/wmake/src/wmkdep.l +++ b/wmake/src/wmkdep.l @@ -46,6 +46,7 @@ Usage #include <string.h> #include <sys/types.h> #include <dirent.h> +#include <errno.h> void nextFile(const char* fileName); void importFile(const char* fileName);