mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -4,6 +4,7 @@
|
||||
scalar Cmu25 = ::pow(Cmu.value(), 0.25);
|
||||
scalar Cmu75 = ::pow(Cmu.value(), 0.75);
|
||||
scalar kappa_ = kappa.value();
|
||||
scalar nub_ = nub.value();
|
||||
|
||||
const fvPatchList& patches = mesh.boundary();
|
||||
|
||||
@ -32,7 +33,7 @@
|
||||
|
||||
if (isA<wallFvPatch>(currPatch))
|
||||
{
|
||||
const scalarField& nuw = nutb.boundaryField()[patchi];
|
||||
const scalarField& nutbw = nutb.boundaryField()[patchi];
|
||||
|
||||
scalarField magFaceGradU(mag(Ub.boundaryField()[patchi].snGrad()));
|
||||
|
||||
@ -43,7 +44,7 @@
|
||||
scalar yPlus =
|
||||
Cmu25*y[patchi][facei]
|
||||
*::sqrt(k[faceCelli])
|
||||
/nub.value();
|
||||
/nub_;
|
||||
|
||||
|
||||
// For corner cells (with two boundary or more faces),
|
||||
@ -59,7 +60,7 @@
|
||||
if (yPlus > 11.6)
|
||||
{
|
||||
G[faceCelli] +=
|
||||
nuw[facei]*magFaceGradU[facei]
|
||||
(nutbw[facei] + nub_)*magFaceGradU[facei]
|
||||
*Cmu25*::sqrt(k[faceCelli])
|
||||
/(kappa_*y[patchi][facei]);
|
||||
}
|
||||
|
||||
@ -46,7 +46,6 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
|
||||
const entry& codeEntry = dict.lookupEntry("code", false, false);
|
||||
code_ = stringOps::trim(codeEntry.stream());
|
||||
stringOps::inplaceExpand(code_, dict);
|
||||
addLineDirective(code_, codeEntry.startLineNumber(), dict.name());
|
||||
}
|
||||
|
||||
// note: removes any leading/trailing whitespace
|
||||
@ -64,7 +63,6 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
|
||||
{
|
||||
include_ = stringOps::trim(includePtr->stream());
|
||||
stringOps::inplaceExpand(include_, dict);
|
||||
addLineDirective(include_, includePtr->startLineNumber(), dict.name());
|
||||
}
|
||||
|
||||
// optional
|
||||
@ -92,6 +90,28 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
|
||||
OSHA1stream os;
|
||||
os << include_ << options_ << libs_ << localCode_ << code_;
|
||||
sha1_ = os.digest();
|
||||
|
||||
|
||||
|
||||
// Add line number after calculating sha1 since includes processorDDD
|
||||
// in path which differs between processors.
|
||||
|
||||
{
|
||||
const entry& codeEntry = dict.lookupEntry("code", false, false);
|
||||
addLineDirective(code_, codeEntry.startLineNumber(), dict.name());
|
||||
}
|
||||
if (includePtr)
|
||||
{
|
||||
addLineDirective(include_, includePtr->startLineNumber(), dict.name());
|
||||
}
|
||||
if (optionsPtr)
|
||||
{
|
||||
addLineDirective(options_, optionsPtr->startLineNumber(), dict.name());
|
||||
}
|
||||
if (libsPtr)
|
||||
{
|
||||
addLineDirective(libs_, libsPtr->startLineNumber(), dict.name());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -96,7 +96,8 @@ void Foam::plane::calcPntAndVec
|
||||
" const point&,\n"
|
||||
" const point&\n"
|
||||
")\n"
|
||||
) << "Bad points." << abort(FatalError);
|
||||
) << "Bad points:" << point1 << ' ' << point2 << ' ' << point3
|
||||
<< abort(FatalError);
|
||||
}
|
||||
|
||||
unitVector_ = line12 ^ line23;
|
||||
@ -112,7 +113,8 @@ void Foam::plane::calcPntAndVec
|
||||
" const point&,\n"
|
||||
" const point&\n"
|
||||
")\n"
|
||||
) << "Plane normal defined with zero length"
|
||||
) << "Plane normal defined with zero length" << nl
|
||||
<< "Bad points:" << point1 << ' ' << point2 << ' ' << point3
|
||||
<< abort(FatalError);
|
||||
}
|
||||
|
||||
@ -137,7 +139,7 @@ Foam::plane::plane(const vector& normalVector)
|
||||
else
|
||||
{
|
||||
FatalErrorIn("plane::plane(const vector&)")
|
||||
<< "plane normal has zero length"
|
||||
<< "plane normal has zero length. basePoint:" << basePoint_
|
||||
<< abort(FatalError);
|
||||
}
|
||||
}
|
||||
@ -158,7 +160,7 @@ Foam::plane::plane(const point& basePoint, const vector& normalVector)
|
||||
else
|
||||
{
|
||||
FatalErrorIn("plane::plane(const point&, const vector&)")
|
||||
<< "plane normal has zero length"
|
||||
<< "plane normal has zero length. basePoint:" << basePoint_
|
||||
<< abort(FatalError);
|
||||
}
|
||||
}
|
||||
@ -228,8 +230,7 @@ Foam::plane::plane(const dictionary& dict)
|
||||
(
|
||||
"plane::plane(const dictionary&)",
|
||||
dict
|
||||
)
|
||||
<< "Invalid plane type: " << planeType
|
||||
) << "Invalid plane type: " << planeType
|
||||
<< abort(FatalIOError);
|
||||
}
|
||||
}
|
||||
@ -250,7 +251,7 @@ Foam::plane::plane(Istream& is)
|
||||
else
|
||||
{
|
||||
FatalErrorIn("plane::plane(Istream& is)")
|
||||
<< "plane normal has zero length"
|
||||
<< "plane normal has zero length. basePoint:" << basePoint_
|
||||
<< abort(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,6 +52,7 @@ SourceFiles
|
||||
|
||||
#include "word.H"
|
||||
#include "regExp.H"
|
||||
#include "keyType.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -60,7 +61,6 @@ namespace Foam
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
class wordRe;
|
||||
|
||||
class Istream;
|
||||
class Ostream;
|
||||
|
||||
@ -119,6 +119,9 @@ public:
|
||||
//- Construct as copy
|
||||
inline wordRe(const wordRe&);
|
||||
|
||||
//- Construct from keyType
|
||||
inline wordRe(const keyType&, const compOption=LITERAL);
|
||||
|
||||
//- Construct as copy of word
|
||||
inline wordRe(const word&);
|
||||
|
||||
@ -206,6 +209,10 @@ public:
|
||||
//- Copy word, never a regular expression
|
||||
inline const wordRe& operator=(const word&);
|
||||
|
||||
//- Copy keyType, auto-test for regular expression
|
||||
// Always case sensitive
|
||||
inline const wordRe& operator=(const keyType&);
|
||||
|
||||
//- Copy string, auto-test for regular expression
|
||||
// Always case sensitive
|
||||
inline const wordRe& operator=(const string&);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -65,6 +65,18 @@ inline Foam::wordRe::wordRe(const word& str)
|
||||
{}
|
||||
|
||||
|
||||
inline Foam::wordRe::wordRe(const keyType& str, const compOption opt)
|
||||
:
|
||||
word(str, false),
|
||||
re_()
|
||||
{
|
||||
if (str.isPattern())
|
||||
{
|
||||
compile(opt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inline Foam::wordRe::wordRe(const char* str, const compOption opt)
|
||||
:
|
||||
word(str, false),
|
||||
@ -236,6 +248,17 @@ inline const Foam::wordRe& Foam::wordRe::operator=(const word& str)
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::wordRe& Foam::wordRe::operator=(const keyType& str)
|
||||
{
|
||||
string::operator=(str);
|
||||
if (str.isPattern())
|
||||
{
|
||||
compile();
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::wordRe& Foam::wordRe::operator=(const string& str)
|
||||
{
|
||||
string::operator=(str);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -109,6 +109,12 @@ bool Foam::combineFaces::validFace
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isNonManifold = bigFace.checkPointManifold(false, NULL);
|
||||
if (isNonManifold)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for convexness
|
||||
face f(getOutsideFace(bigFace));
|
||||
|
||||
@ -984,6 +990,7 @@ void Foam::combineFaces::setUnrefinement
|
||||
zoneFlip // face flip in zone
|
||||
)
|
||||
);
|
||||
restoredFaces.insert(masterFaceI, masterFaceI);
|
||||
|
||||
// Add the previously removed faces
|
||||
for (label i = 1; i < faces.size(); i++)
|
||||
@ -991,7 +998,7 @@ void Foam::combineFaces::setUnrefinement
|
||||
//Pout<< "Restoring removed face with vertices " << faces[i]
|
||||
// << endl;
|
||||
|
||||
meshMod.setAction
|
||||
label faceI = meshMod.setAction
|
||||
(
|
||||
polyAddFace
|
||||
(
|
||||
@ -1007,6 +1014,7 @@ void Foam::combineFaces::setUnrefinement
|
||||
zoneFlip // zoneFlip
|
||||
)
|
||||
);
|
||||
restoredFaces.insert(faceI, masterFaceI);
|
||||
}
|
||||
|
||||
// Clear out restored set
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -302,6 +302,35 @@ void Foam::polyTopoChange::getMergeSets
|
||||
}
|
||||
|
||||
|
||||
bool Foam::polyTopoChange::hasValidPoints(const face& f) const
|
||||
{
|
||||
forAll(f, fp)
|
||||
{
|
||||
if (f[fp] < 0 || f[fp] >= points_.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Foam::pointField Foam::polyTopoChange::facePoints(const face& f) const
|
||||
{
|
||||
pointField points(f.size());
|
||||
forAll(f, fp)
|
||||
{
|
||||
if (f[fp] < 0 && f[fp] >= points_.size())
|
||||
{
|
||||
FatalErrorIn("polyTopoChange::facePoints(const face&) const")
|
||||
<< "Problem." << abort(FatalError);
|
||||
}
|
||||
points[fp] = points_[f[fp]];
|
||||
}
|
||||
return points;
|
||||
}
|
||||
|
||||
|
||||
void Foam::polyTopoChange::checkFace
|
||||
(
|
||||
const face& f,
|
||||
@ -329,7 +358,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -344,7 +380,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") : " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
|
||||
if (nei <= own)
|
||||
@ -358,7 +401,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") : " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,7 +423,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") : " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
if (faceI >= 0 && faceI < faces_.size() && faceRemoved(faceI))
|
||||
{
|
||||
@ -386,7 +443,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") : " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
forAll(f, fp)
|
||||
{
|
||||
@ -401,7 +465,14 @@ void Foam::polyTopoChange::checkFace
|
||||
<< "f:" << f
|
||||
<< " faceI(-1 if added face):" << faceI
|
||||
<< " own:" << own << " nei:" << nei
|
||||
<< " patchI:" << patchI << abort(FatalError);
|
||||
<< " patchI:" << patchI << nl;
|
||||
if (hasValidPoints(f))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") : " << facePoints(f);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -729,8 +800,16 @@ void Foam::polyTopoChange::getFaceOrder
|
||||
<< " neighbour " << faceNeighbour_[faceI]
|
||||
<< " region " << region_[faceI] << endl
|
||||
<< "This is usually caused by not specifying a patch for"
|
||||
<< " a boundary face."
|
||||
<< abort(FatalError);
|
||||
<< " a boundary face." << nl
|
||||
<< "Switch on the polyTopoChange::debug flag to catch"
|
||||
<< " this error earlier." << nl;
|
||||
if (hasValidPoints(faces_[faceI]))
|
||||
{
|
||||
FatalError
|
||||
<< "points (removed points marked with "
|
||||
<< vector::max << ") " << facePoints(faces_[faceI]);
|
||||
}
|
||||
FatalError << abort(FatalError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -239,6 +239,12 @@ class polyTopoChange
|
||||
List<objectMap>& cellsFromCells
|
||||
);
|
||||
|
||||
//- Are all face vertices valid
|
||||
bool hasValidPoints(const face&) const;
|
||||
|
||||
//- Return face points
|
||||
pointField facePoints(const face& f) const;
|
||||
|
||||
//- Check inputs to modFace or addFace
|
||||
void checkFace
|
||||
(
|
||||
|
||||
@ -208,9 +208,6 @@ $(interpolation)/interpolationPoint/pointMVCWeight.C
|
||||
$(interpolation)/interpolationPoint/makeInterpolationPoint.C
|
||||
|
||||
volPointInterpolation = interpolation/volPointInterpolation
|
||||
/*
|
||||
$(volPointInterpolation)/pointPatchInterpolation/pointPatchInterpolation.C
|
||||
*/
|
||||
$(volPointInterpolation)/volPointInterpolation.C
|
||||
|
||||
surfaceInterpolation = interpolation/surfaceInterpolation
|
||||
|
||||
@ -56,7 +56,7 @@ Foam::fv::correctedSnGrad<Type>::fullGradCorrection
|
||||
gradScheme<Type>::New
|
||||
(
|
||||
mesh,
|
||||
mesh.gradScheme(vf.name())
|
||||
mesh.gradScheme("grad(" + vf.name() + ')')
|
||||
)().grad(vf, "grad(" + vf.name() + ')')
|
||||
);
|
||||
tssf().rename("snGradCorr(" + vf.name() + ')');
|
||||
@ -108,7 +108,7 @@ Foam::fv::correctedSnGrad<Type>::correction
|
||||
gradScheme<typename pTraits<Type>::cmptType>::New
|
||||
(
|
||||
mesh,
|
||||
mesh.gradScheme(ssf.name())
|
||||
mesh.gradScheme("grad(" + ssf.name() + ')')
|
||||
)()
|
||||
//gaussGrad<typename pTraits<Type>::cmptType>(mesh)
|
||||
.grad(vf.component(cmpt))
|
||||
|
||||
@ -111,7 +111,16 @@ public:
|
||||
mesh.gradScheme(gradSchemeName_)
|
||||
)
|
||||
)
|
||||
{}
|
||||
{
|
||||
if (!schemeData.eof())
|
||||
{
|
||||
IOWarningIn("linearUpwind(const fvMesh&, Istream&)", schemeData)
|
||||
<< "unexpected additional entries in stream." << nl
|
||||
<< " Only the name of the gradient scheme in the"
|
||||
" 'gradSchemes' dictionary should be specified."
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
//- Construct from faceFlux and Istream
|
||||
linearUpwind
|
||||
@ -131,7 +140,16 @@ public:
|
||||
mesh.gradScheme(gradSchemeName_)
|
||||
)
|
||||
)
|
||||
{}
|
||||
{
|
||||
if (!schemeData.eof())
|
||||
{
|
||||
IOWarningIn("linearUpwind(const fvMesh&, Istream&)", schemeData)
|
||||
<< "unexpected additional entries in stream." << nl
|
||||
<< " Only the name of the gradient scheme in the"
|
||||
" 'gradSchemes' dictionary should be specified."
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
@ -110,7 +110,13 @@ public:
|
||||
mesh.gradScheme(gradSchemeName_)
|
||||
)
|
||||
)
|
||||
{}
|
||||
{
|
||||
IOWarningIn("linearUpwindV(const fvMesh&, Istream&)", schemeData)
|
||||
<< "unexpected additional entries in stream." << nl
|
||||
<< " Only the name of the gradient scheme in the"
|
||||
" 'gradSchemes' dictionary should be specified."
|
||||
<< endl;
|
||||
}
|
||||
|
||||
//- Construct from faceFlux and Istream
|
||||
linearUpwindV
|
||||
@ -130,7 +136,13 @@ public:
|
||||
mesh.gradScheme(gradSchemeName_)
|
||||
)
|
||||
)
|
||||
{}
|
||||
{
|
||||
IOWarningIn("linearUpwindV(const fvMesh&, Istream&)", schemeData)
|
||||
<< "unexpected additional entries in stream." << nl
|
||||
<< " Only the name of the gradient scheme in the"
|
||||
" 'gradSchemes' dictionary should be specified."
|
||||
<< endl;
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
@ -2615,9 +2615,12 @@ void Foam::autoLayerDriver::addLayers
|
||||
extrudeStatus
|
||||
);
|
||||
|
||||
Info<< "Extruding " << countExtrusion(pp, extrudeStatus)
|
||||
<< " out of " << returnReduce(pp().size(), sumOp<label>())
|
||||
<< " faces. Removed extrusion at " << nTotChanged << " faces."
|
||||
label nExtruded = countExtrusion(pp, extrudeStatus);
|
||||
label nTotFaces = returnReduce(pp().size(), sumOp<label>());
|
||||
Info<< "Extruding " << nExtruded
|
||||
<< " out of " << nTotFaces
|
||||
<< " faces (" << 100.0*nExtruded/nTotFaces << "%)."
|
||||
<< " Removed extrusion at " << nTotChanged << " faces."
|
||||
<< endl;
|
||||
|
||||
if (nTotChanged == 0)
|
||||
|
||||
@ -277,7 +277,11 @@ Foam::label Foam::meshRefinement::mergePatchFacesUndo
|
||||
}
|
||||
}
|
||||
|
||||
// Get all sets of faces that can be merged
|
||||
// Get all sets of faces that can be merged. Since only faces on the same
|
||||
// patch get merged there is no risk of e.g. patchID faces getting merged
|
||||
// with original patches (or even processor patches). There is a risk
|
||||
// though of original patchfaces getting merged if they make a small
|
||||
// angle. Would be pretty weird starting mesh though.
|
||||
labelListList allFaceSets
|
||||
(
|
||||
faceCombiner.getMergeSets
|
||||
@ -352,27 +356,20 @@ Foam::label Foam::meshRefinement::mergePatchFacesUndo
|
||||
// Get the kept faces that need to be recalculated.
|
||||
// Merging two boundary faces might shift the cell centre
|
||||
// (unless the faces are absolutely planar)
|
||||
labelHashSet retestFaces(6*allFaceSets.size());
|
||||
labelHashSet retestFaces(2*allFaceSets.size());
|
||||
|
||||
forAll(allFaceSets, setI)
|
||||
{
|
||||
label oldMasterI = allFaceSets[setI][0];
|
||||
|
||||
label faceI = map().reverseFaceMap()[oldMasterI];
|
||||
|
||||
// faceI is always uncoupled boundary face
|
||||
const cell& cFaces = mesh_.cells()[mesh_.faceOwner()[faceI]];
|
||||
|
||||
forAll(cFaces, i)
|
||||
{
|
||||
retestFaces.insert(cFaces[i]);
|
||||
}
|
||||
retestFaces.insert(map().reverseFaceMap()[oldMasterI]);
|
||||
}
|
||||
updateMesh(map, retestFaces.toc());
|
||||
updateMesh(map, growFaceCellFace(retestFaces));
|
||||
|
||||
if (debug)
|
||||
{
|
||||
// Check sync
|
||||
Pout<< "Checking sync after initial merging " << nFaceSets
|
||||
<< " faces." << endl;
|
||||
checkData();
|
||||
|
||||
Pout<< "Writing initial merged-faces mesh to time "
|
||||
@ -555,26 +552,18 @@ Foam::label Foam::meshRefinement::mergePatchFacesUndo
|
||||
// Get the kept faces that need to be recalculated.
|
||||
// Merging two boundary faces might shift the cell centre
|
||||
// (unless the faces are absolutely planar)
|
||||
labelHashSet retestFaces(6*restoredFaces.size());
|
||||
labelHashSet retestFaces(2*restoredFaces.size());
|
||||
|
||||
forAll(restoredFaces, setI)
|
||||
forAllConstIter(Map<label>, restoredFaces, iter)
|
||||
{
|
||||
label faceI = restoredFaces[setI];
|
||||
// faceI is always uncoupled boundary face
|
||||
const cell& cFaces = mesh_.cells()[mesh_.faceOwner()[faceI]];
|
||||
|
||||
forAll(cFaces, i)
|
||||
{
|
||||
retestFaces.insert(cFaces[i]);
|
||||
}
|
||||
retestFaces.insert(iter.key());
|
||||
}
|
||||
|
||||
|
||||
// Experimental:restore all points/face/cells in maps
|
||||
updateMesh
|
||||
(
|
||||
map,
|
||||
retestFaces.toc(),
|
||||
growFaceCellFace(retestFaces),
|
||||
restoredPoints,
|
||||
restoredFaces,
|
||||
restoredCells
|
||||
@ -583,6 +572,8 @@ Foam::label Foam::meshRefinement::mergePatchFacesUndo
|
||||
if (debug)
|
||||
{
|
||||
// Check sync
|
||||
Pout<< "Checking sync after restoring " << retestFaces.size()
|
||||
<< " faces." << endl;
|
||||
checkData();
|
||||
|
||||
Pout<< "Writing merged-faces mesh to time "
|
||||
@ -635,7 +626,26 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRemovePoints
|
||||
mesh_.setInstance(timeName());
|
||||
|
||||
pointRemover.updateMesh(map);
|
||||
updateMesh(map, labelList(0));
|
||||
|
||||
|
||||
// Retest all affected faces and all the cells using them
|
||||
labelHashSet retestFaces(pointRemover.savedFaceLabels().size());
|
||||
forAll(pointRemover.savedFaceLabels(), i)
|
||||
{
|
||||
label faceI = pointRemover.savedFaceLabels()[i];
|
||||
if (faceI >= 0)
|
||||
{
|
||||
retestFaces.insert(faceI);
|
||||
}
|
||||
}
|
||||
updateMesh(map, growFaceCellFace(retestFaces));
|
||||
|
||||
if (debug)
|
||||
{
|
||||
// Check sync
|
||||
Pout<< "Checking sync after removing points." << endl;
|
||||
checkData();
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
@ -689,7 +699,25 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRestorePoints
|
||||
mesh_.setInstance(timeName());
|
||||
|
||||
pointRemover.updateMesh(map);
|
||||
updateMesh(map, labelList(0));
|
||||
|
||||
labelHashSet retestFaces(2*facesToRestore.size());
|
||||
forAll(facesToRestore, i)
|
||||
{
|
||||
label faceI = map().reverseFaceMap()[facesToRestore[i]];
|
||||
if (faceI >= 0)
|
||||
{
|
||||
retestFaces.insert(faceI);
|
||||
}
|
||||
}
|
||||
updateMesh(map, growFaceCellFace(retestFaces));
|
||||
|
||||
if (debug)
|
||||
{
|
||||
// Check sync
|
||||
Pout<< "Checking sync after restoring points on "
|
||||
<< facesToRestore.size() << " faces." << endl;
|
||||
checkData();
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ License
|
||||
The current default mapping strategy in Scotch can be seen by using the
|
||||
"-vs" option of program gmap. It is, to date:
|
||||
|
||||
b
|
||||
r
|
||||
{
|
||||
job=t,
|
||||
map=t,
|
||||
@ -76,11 +76,17 @@ License
|
||||
{
|
||||
asc=b
|
||||
{
|
||||
bnd=d{pass=40,dif=1,rem=1}f{move=80,pass=-1,bal=0.005},
|
||||
org=f{move=80,pass=-1,bal=0.005},
|
||||
bnd=
|
||||
(
|
||||
d{pass=40,dif=1,rem=1}
|
||||
|
|
||||
)
|
||||
f{move=80,pass=-1,bal=0.002491},
|
||||
org=f{move=80,pass=-1,bal=0.002491},
|
||||
width=3
|
||||
},
|
||||
low=h{pass=10}f{move=80,pass=-1,bal=0.0005},
|
||||
low=h{pass=10}
|
||||
f{move=80,pass=-1,bal=0.002491},
|
||||
type=h,
|
||||
vert=80,
|
||||
rat=0.8
|
||||
@ -89,11 +95,17 @@ License
|
||||
{
|
||||
asc=b
|
||||
{
|
||||
bnd=d{pass=40,dif=1,rem=1}f{move=80,pass=-1,bal=0.005},
|
||||
org=f{move=80,pass=-1,bal=0.005},
|
||||
bnd=
|
||||
(
|
||||
d{pass=40,dif=1,rem=1}
|
||||
|
|
||||
)
|
||||
f{move=80,pass=-1,bal=0.002491},
|
||||
org=f{move=80,pass=-1,bal=0.002491},
|
||||
width=3
|
||||
},
|
||||
low=h{pass=10}f{move=80,pass=-1,bal=0.0005},
|
||||
low=h{pass=10}
|
||||
f{move=80,pass=-1,bal=0.002491},
|
||||
type=h,
|
||||
vert=80,
|
||||
rat=0.8
|
||||
@ -102,6 +114,9 @@ License
|
||||
}
|
||||
|
||||
|
||||
Note: instead of gmap run gpart <nProcs> -vs <grfFile>
|
||||
where <grfFile> can be obtained by running with 'writeGraph=true'
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "scotchDecomp.H"
|
||||
|
||||
@ -390,7 +390,7 @@ void kOmegaSST::correct()
|
||||
}
|
||||
|
||||
tmp<volTensorField> tgradU = fvc::grad(U_);
|
||||
volScalarField S2(magSqr(symm(tgradU())));
|
||||
volScalarField S2(2*magSqr(symm(tgradU())));
|
||||
volScalarField GbyMu((tgradU() && dev(twoSymm(tgradU()))));
|
||||
volScalarField G("RASModel::G", mut_*GbyMu);
|
||||
tgradU.clear();
|
||||
@ -448,7 +448,7 @@ void kOmegaSST::correct()
|
||||
|
||||
|
||||
// Re-calculate viscosity
|
||||
mut_ = a1_*rho_*k_/max(a1_*omega_, F2()*sqrt(2.0*S2));
|
||||
mut_ = a1_*rho_*k_/max(a1_*omega_, F2()*sqrt(S2));
|
||||
mut_.correctBoundaryConditions();
|
||||
|
||||
// Re-calculate thermal diffusivity
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -328,7 +328,7 @@ kOmegaSSTSAS::kOmegaSSTSAS
|
||||
bound(k_, kMin_);
|
||||
bound(omega_, omegaMin_);
|
||||
|
||||
updateSubGridScaleFields(magSqr(2.0*symm(fvc::grad(U))));
|
||||
updateSubGridScaleFields(2.0*magSqr(symm(fvc::grad(U))));
|
||||
|
||||
printCoeffs();
|
||||
}
|
||||
@ -345,7 +345,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU)
|
||||
y_.correct();
|
||||
}
|
||||
|
||||
volScalarField S2(magSqr(2.0*symm(gradU())));
|
||||
volScalarField S2(2.0*magSqr(symm(gradU())));
|
||||
gradU.clear();
|
||||
|
||||
volVectorField gradK(fvc::grad(k_));
|
||||
|
||||
@ -28,6 +28,12 @@ Description
|
||||
kOmegaSSTSAS LES turbulence model for incompressible flows
|
||||
|
||||
References:
|
||||
Evaluation of the SST-SAS model: Channel flow, asymmetric diffuser and axi-
|
||||
symmetric hill
|
||||
European Conference on Computational Fluid Dynamics
|
||||
ECCOMAS CFD 2006
|
||||
Lars Davison
|
||||
|
||||
A Scale-Adaptive Simulation Model using Two-Equation Models
|
||||
AIAA 2005-1095
|
||||
F. R. Menter and Y. Egorov
|
||||
|
||||
@ -347,8 +347,8 @@ void kOmegaSST::correct()
|
||||
y_.correct();
|
||||
}
|
||||
|
||||
const volScalarField S2(magSqr(symm(fvc::grad(U_))));
|
||||
volScalarField G("RASModel::G", nut_*2*S2);
|
||||
const volScalarField S2(2*magSqr(symm(fvc::grad(U_))));
|
||||
volScalarField G("RASModel::G", nut_*S2);
|
||||
|
||||
// Update omega and G at the wall
|
||||
omega_.boundaryField().updateCoeffs();
|
||||
@ -368,7 +368,7 @@ void kOmegaSST::correct()
|
||||
- fvm::Sp(fvc::div(phi_), omega_)
|
||||
- fvm::laplacian(DomegaEff(F1), omega_)
|
||||
==
|
||||
gamma(F1)*2*S2
|
||||
gamma(F1)*S2
|
||||
- fvm::Sp(beta(F1)*omega_, omega_)
|
||||
- fvm::SuSp
|
||||
(
|
||||
@ -402,7 +402,7 @@ void kOmegaSST::correct()
|
||||
|
||||
|
||||
// Re-calculate viscosity
|
||||
nut_ = a1_*k_/max(a1_*omega_, F2()*sqrt(2*S2));
|
||||
nut_ = a1_*k_/max(a1_*omega_, F2()*sqrt(S2));
|
||||
nut_.correctBoundaryConditions();
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ divSchemes
|
||||
div(phi,epsilon) Gauss upwind;
|
||||
div(phi,R) Gauss upwind;
|
||||
div(R) Gauss linear;
|
||||
div(Ji,Ii_h) Gauss linearUpwind Gauss linear; //Gauss upwind;
|
||||
div(Ji,Ii_h) Gauss linearUpwind grad(Ii_h);
|
||||
div((muEff*dev2(T(grad(U))))) Gauss linear;
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ divSchemes
|
||||
div(phi,epsilon) Gauss upwind;
|
||||
div(phi,R) Gauss upwind;
|
||||
div(R) Gauss linear;
|
||||
div(Ji,Ii_h) Gauss linearUpwind Gauss linear; //Gauss upwind;
|
||||
div(Ji,Ii_h) Gauss linearUpwind grad(U);
|
||||
div((muEff*dev2(T(grad(U))))) Gauss linear;
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ divSchemes
|
||||
div(phi,epsilon) Gauss upwind;
|
||||
div(phi,R) Gauss upwind;
|
||||
div(R) Gauss linear;
|
||||
div(Ji,Ii_h) Gauss linearUpwind Gauss linear; //Gauss upwind;
|
||||
div(Ji,Ii_h) Gauss linearUpwind grad(U);
|
||||
div((muEff*dev2(T(grad(U))))) Gauss linear;
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
|
||||
# Source tutorial run functions
|
||||
|
||||
@ -30,8 +30,8 @@ gradSchemes
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss linearUpwind Gauss linear;
|
||||
div(phi,nuTilda) Gauss linearUpwind Gauss linear;
|
||||
div(phi,U) Gauss linearUpwind grad(U);
|
||||
div(phi,nuTilda) Gauss linearUpwind grad(nuTilda);
|
||||
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
||||
}
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ gradSchemes
|
||||
|
||||
divSchemes
|
||||
{
|
||||
div(rho*phi,U) Gauss linearUpwind Gauss linear;
|
||||
div(rho*phi,U) Gauss linearUpwind grad(U);
|
||||
div(phi,alpha) Gauss vanLeer;
|
||||
div(phirb,alpha) Gauss interfaceCompression;
|
||||
div(phi,k) Gauss upwind;
|
||||
|
||||
@ -27,9 +27,9 @@ interpolationSchemes
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(rhoPhi,U) Gauss linearUpwind Gauss linear 1;
|
||||
div(phi,omega) Gauss linearUpwind Gauss linear 1;
|
||||
div(phi,k) Gauss linearUpwind Gauss linear 1;
|
||||
div(rhoPhi,U) Gauss linearUpwind grad(U);
|
||||
div(phi,omega) Gauss linearUpwind grad(omega);
|
||||
div(phi,k) Gauss linearUpwind grad(k);
|
||||
|
||||
div(phi,alpha) Gauss vanLeer;
|
||||
div(phirb,alpha) Gauss interfaceCompression;
|
||||
|
||||
Reference in New Issue
Block a user