Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
sergio
2011-06-02 17:27:29 +01:00
11 changed files with 78 additions and 18 deletions

View File

@ -105,7 +105,15 @@
+ Additional wall functions for primary region momentum and temperature + Additional wall functions for primary region momentum and temperature
taking film into account taking film into account
+ Parallel aware + Parallel aware
*** *New* ptscotch decomposition method *** *New* ptscotch decomposition method.
*** *New* multiLevel decomposition method.
Decomposes in levels, e.g. first decompose onto number of nodes and
then onto number of cores per node. This will minimise off-node
communication. Each level can use any of the other decomposition methods
*** *New* structured decomposition method.
Does a 2D decomposition of a mesh. Valid only for an 'extruded' mesh, i.e.
columns of cells originating from a patch. Bases decomposition on this
patch and assigns the cells according to the patch decomposition.
*** *Updated* scotch decomposition method to run in parallel by doing *** *Updated* scotch decomposition method to run in parallel by doing
decomposition on the master. Unfortunately scotch and ptscotch cannot decomposition on the master. Unfortunately scotch and ptscotch cannot
be linked in to the same executable. be linked in to the same executable.
@ -229,7 +237,8 @@
(nonuniformTransform)cyclic <zoneA>_<zoneB> (nonuniformTransform)cyclic <zoneA>_<zoneB>
+ extrudes into master direction (i.e. away from the owner cell + extrudes into master direction (i.e. away from the owner cell
if flipMap is false) if flipMap is false)
+ =topoSet=: replacement of cellSet,faceSet,pointSet utilities. + =topoSet=: replacement of cellSet,faceSet,pointSet utilities. Multiple
commands operating on different sets.
Comparable to a dictionary driven =setSet= utility. Comparable to a dictionary driven =setSet= utility.
*** Updated utilities *** Updated utilities
+ =setFields=: optionally use faceSets to set patch values (see + =setFields=: optionally use faceSets to set patch values (see

View File

@ -37,6 +37,7 @@ method scotch;
// method metis; // method metis;
// method manual; // method manual;
// method multiLevel; // method multiLevel;
// method structured; // does 2D decomposition of structured mesh
multiLevelCoeffs multiLevelCoeffs
{ {
@ -108,6 +109,15 @@ manualCoeffs
} }
structuredCoeffs
{
// Patches to do 2D decomposition on. Structured mesh only; cells have
// to be in 'columns' on top of patches.
patches (bottomPatch);
}
//// Is the case distributed //// Is the case distributed
//distributed yes; //distributed yes;
//// Per slave (so nProcs-1 entries) the directory above the case. //// Per slave (so nProcs-1 entries) the directory above the case.

View File

@ -860,6 +860,16 @@ bool Foam::domainDecomposition::writeDecomposition()
scalar avgProcPatches = scalar(totProcPatches)/nProcs_; scalar avgProcPatches = scalar(totProcPatches)/nProcs_;
scalar avgProcFaces = scalar(totProcFaces)/nProcs_; scalar avgProcFaces = scalar(totProcFaces)/nProcs_;
// In case of all faces on one processor. Just to avoid division by 0.
if (totProcPatches == 0)
{
avgProcPatches = 1;
}
if (totProcFaces == 0)
{
avgProcFaces = 1;
}
Info<< nl Info<< nl
<< "Number of processor faces = " << totProcFaces/2 << nl << "Number of processor faces = " << totProcFaces/2 << nl
<< "Max number of cells = " << maxProcCells << "Max number of cells = " << maxProcCells

View File

@ -475,6 +475,16 @@ void printMeshData(const polyMesh& mesh)
scalar avgProcPatches = scalar(totProcPatches)/Pstream::nProcs(); scalar avgProcPatches = scalar(totProcPatches)/Pstream::nProcs();
scalar avgProcFaces = scalar(totProcFaces)/Pstream::nProcs(); scalar avgProcFaces = scalar(totProcFaces)/Pstream::nProcs();
// In case of all faces on one processor. Just to avoid division by 0.
if (totProcPatches == 0)
{
avgProcPatches = 1;
}
if (totProcFaces == 0)
{
avgProcFaces = 1;
}
Info<< nl Info<< nl
<< "Number of processor faces = " << totProcFaces/2 << nl << "Number of processor faces = " << totProcFaces/2 << nl
<< "Max number of cells = " << maxProcCells << "Max number of cells = " << maxProcCells

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -249,7 +249,11 @@ int main(int argc, char *argv[])
// search engine // search engine
indexedOctree<treeDataTriSurface> selectTree indexedOctree<treeDataTriSurface> selectTree
( (
treeDataTriSurface(selectSurf), treeDataTriSurface
(
selectSurf,
indexedOctree<treeDataTriSurface>::perturbTol()
),
bb.extend(rndGen, 1E-4), // slightly randomize bb bb.extend(rndGen, 1E-4), // slightly randomize bb
8, // maxLevel 8, // maxLevel
10, // leafsize 10, // leafsize

View File

@ -714,7 +714,7 @@ Foam::point Foam::indexedOctree<Type>::pushPoint
) )
{ {
// Get local length scale. // Get local length scale.
const vector perturbVec = perturbTol_*(bb.span()); const vector perturbVec = perturbTol_*bb.span();
point perturbedPt(pt); point perturbedPt(pt);

View File

@ -179,9 +179,14 @@ defineTypeNameAndDebug(Foam::treeDataTriSurface, 0);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct from components // Construct from components
Foam::treeDataTriSurface::treeDataTriSurface(const triSurface& surface) Foam::treeDataTriSurface::treeDataTriSurface
(
const triSurface& surface,
const scalar planarTol
)
: :
surface_(surface) surface_(surface),
planarTol_(planarTol)
{} {}
@ -437,7 +442,7 @@ bool Foam::treeDataTriSurface::intersects
dir, dir,
points, points,
intersection::HALF_RAY, intersection::HALF_RAY,
indexedOctree<treeDataTriSurface>::perturbTol() planarTol_
); );
if (inter.hit() && inter.distance() <= 1) if (inter.hit() && inter.distance() <= 1)

View File

@ -55,8 +55,11 @@ class treeDataTriSurface
{ {
// Private data // Private data
//- Reference to triSurface
const triSurface& surface_; const triSurface& surface_;
//- Tolerance to use for intersection tests
const scalar planarTol_;
// Private Member Functions // Private Member Functions
@ -83,8 +86,9 @@ public:
// Constructors // Constructors
//- Construct from triSurface. Holds reference. //- Construct from triSurface and tolerance for intersection
treeDataTriSurface(const triSurface&); // tests. Holds reference.
treeDataTriSurface(const triSurface&, const scalar planarTol);
// Member Functions // Member Functions

View File

@ -492,7 +492,7 @@ void Foam::triSurfaceMesh::movePoints(const pointField& newPoints)
const Foam::indexedOctree<Foam::treeDataTriSurface>& const Foam::indexedOctree<Foam::treeDataTriSurface>&
Foam::triSurfaceMesh::tree() const Foam::triSurfaceMesh::tree() const
{ {
if (tree_.empty()) if (tree_.empty())
{ {
@ -528,7 +528,7 @@ const Foam::indexedOctree<Foam::treeDataTriSurface>&
( (
new indexedOctree<treeDataTriSurface> new indexedOctree<treeDataTriSurface>
( (
treeDataTriSurface(*this), treeDataTriSurface(*this, tolerance_),
bb, bb,
maxTreeDepth_, // maxLevel maxTreeDepth_, // maxLevel
10, // leafsize 10, // leafsize
@ -544,7 +544,7 @@ const Foam::indexedOctree<Foam::treeDataTriSurface>&
const Foam::indexedOctree<Foam::treeDataEdge>& const Foam::indexedOctree<Foam::treeDataEdge>&
Foam::triSurfaceMesh::edgeTree() const Foam::triSurfaceMesh::edgeTree() const
{ {
if (edgeTree_.empty()) if (edgeTree_.empty())
{ {

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -64,7 +64,11 @@ Foam::triSurfaceSearch::triSurfaceSearch(const triSurface& surface)
( (
new indexedOctree<treeDataTriSurface> new indexedOctree<treeDataTriSurface>
( (
treeDataTriSurface(surface_), treeDataTriSurface
(
surface_,
indexedOctree<treeDataTriSurface>::perturbTol()
),
treeBb, treeBb,
8, // maxLevel 8, // maxLevel
10, // leafsize 10, // leafsize

View File

@ -448,8 +448,8 @@ void Foam::decompositionMethod::calcCellCells
// Count number of faces (internal + coupled) // Count number of faces (internal + coupled)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Number of faces per cell // Number of faces per coarse cell
labelList nFacesPerCell(mesh.nCells(), 0); labelList nFacesPerCell(nCoarse, 0);
for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++) for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++)
{ {
@ -481,7 +481,11 @@ void Foam::decompositionMethod::calcCellCells
{ {
label own = agglom[faceOwner[faceI]]; label own = agglom[faceOwner[faceI]];
label globalNei = globalNeighbour[bFaceI]; label globalNei = globalNeighbour[bFaceI];
if (cellPair.insert(labelPair(own, globalNei))) if
(
globalAgglom.toGlobal(own) != globalNei
&& cellPair.insert(labelPair(own, globalNei))
)
{ {
nFacesPerCell[own]++; nFacesPerCell[own]++;
} }