mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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]++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user