mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of ssh://dm/home/dm4/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -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) 2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -60,7 +60,7 @@ Foam::tmp<Foam::scalarField> Foam::polyMeshTools::faceOrthogonality
|
|||||||
// Coupled faces
|
// Coupled faces
|
||||||
|
|
||||||
pointField neighbourCc;
|
pointField neighbourCc;
|
||||||
syncTools::swapBoundaryCellList(mesh, cc, neighbourCc);
|
syncTools::swapBoundaryCellPositions(mesh, cc, neighbourCc);
|
||||||
|
|
||||||
forAll(pbm, patchI)
|
forAll(pbm, patchI)
|
||||||
{
|
{
|
||||||
@ -123,7 +123,7 @@ Foam::tmp<Foam::scalarField> Foam::polyMeshTools::faceSkewness
|
|||||||
// (i.e. treat as if mirror cell on other side)
|
// (i.e. treat as if mirror cell on other side)
|
||||||
|
|
||||||
pointField neighbourCc;
|
pointField neighbourCc;
|
||||||
syncTools::swapBoundaryCellList(mesh, cellCtrs, neighbourCc);
|
syncTools::swapBoundaryCellPositions(mesh, cellCtrs, neighbourCc);
|
||||||
|
|
||||||
forAll(pbm, patchI)
|
forAll(pbm, patchI)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -27,6 +27,44 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::syncTools::swapBoundaryCellPositions
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const UList<point>& cellData,
|
||||||
|
List<point>& neighbourCellData
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (cellData.size() != mesh.nCells())
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"syncTools<class T>::swapBoundaryCellPositions"
|
||||||
|
"(const polyMesh&, const UList<T>&, List<T>&)"
|
||||||
|
) << "Number of cell values " << cellData.size()
|
||||||
|
<< " is not equal to the number of cells in the mesh "
|
||||||
|
<< mesh.nCells() << abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
||||||
|
|
||||||
|
label nBnd = mesh.nFaces()-mesh.nInternalFaces();
|
||||||
|
|
||||||
|
neighbourCellData.setSize(nBnd);
|
||||||
|
|
||||||
|
forAll(patches, patchI)
|
||||||
|
{
|
||||||
|
const polyPatch& pp = patches[patchI];
|
||||||
|
const labelUList& faceCells = pp.faceCells();
|
||||||
|
forAll(faceCells, i)
|
||||||
|
{
|
||||||
|
label bFaceI = pp.start()+i-mesh.nInternalFaces();
|
||||||
|
neighbourCellData[bFaceI] = cellData[faceCells[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
syncTools::swapBoundaryFacePositions(mesh, neighbourCellData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh)
|
Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh)
|
||||||
{
|
{
|
||||||
PackedBoolList isMasterPoint(mesh.nPoints());
|
PackedBoolList isMasterPoint(mesh.nPoints());
|
||||||
|
|||||||
@ -442,18 +442,17 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
//- Swap coupled positions.
|
//- Swap coupled positions.
|
||||||
template<class T>
|
|
||||||
static void swapBoundaryFacePositions
|
static void swapBoundaryFacePositions
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
UList<T>& l
|
UList<point>& l
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
syncBoundaryFaceList
|
syncBoundaryFaceList
|
||||||
(
|
(
|
||||||
mesh,
|
mesh,
|
||||||
l,
|
l,
|
||||||
eqOp<T>(),
|
eqOp<point>(),
|
||||||
mapDistribute::transformPosition()
|
mapDistribute::transformPosition()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -490,6 +489,14 @@ public:
|
|||||||
List<T>& neighbourCellData
|
List<T>& neighbourCellData
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//- Swap to obtain neighbour cell positions for all boundary faces
|
||||||
|
static void swapBoundaryCellPositions
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const UList<point>& cellData,
|
||||||
|
List<point>& neighbourCellData
|
||||||
|
);
|
||||||
|
|
||||||
// Sparse versions
|
// Sparse versions
|
||||||
|
|
||||||
//- Synchronize values on selected points.
|
//- Synchronize values on selected points.
|
||||||
@ -531,11 +538,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
//- Synchronize locations on selected edges.
|
//- Synchronize locations on selected edges.
|
||||||
template<class T, class CombineOp>
|
template<class CombineOp>
|
||||||
static void syncEdgePositions
|
static void syncEdgePositions
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
EdgeMap<T>& l,
|
EdgeMap<point>& l,
|
||||||
const CombineOp& cop
|
const CombineOp& cop
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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) 2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -120,7 +120,7 @@ void Foam::searchableSurfaceToFaceZone::applyToSet
|
|||||||
|
|
||||||
// Boundary faces
|
// Boundary faces
|
||||||
vectorField nbrCellCentres;
|
vectorField nbrCellCentres;
|
||||||
syncTools::swapBoundaryCellList(mesh_, cc, nbrCellCentres);
|
syncTools::swapBoundaryCellPositions(mesh_, cc, nbrCellCentres);
|
||||||
|
|
||||||
const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
|
const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
|
||||||
|
|
||||||
|
|||||||
@ -49,5 +49,9 @@ adjustTimeStep no;
|
|||||||
|
|
||||||
maxCo 0.2;
|
maxCo 0.2;
|
||||||
|
|
||||||
|
functions
|
||||||
|
{
|
||||||
|
#include "cuttingPlane"
|
||||||
|
}
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
cuttingPlane
|
||||||
|
{
|
||||||
|
type surfaces;
|
||||||
|
functionObjectLibs ("libsampling.so");
|
||||||
|
|
||||||
|
outputControl outputTime;
|
||||||
|
|
||||||
|
surfaceFormat vtk;
|
||||||
|
fields ( p U );
|
||||||
|
|
||||||
|
interpolationScheme cellPoint;
|
||||||
|
|
||||||
|
surfaces
|
||||||
|
(
|
||||||
|
zNormal
|
||||||
|
{
|
||||||
|
type cuttingPlane;
|
||||||
|
planeType pointAndNormal;
|
||||||
|
pointAndNormalDict
|
||||||
|
{
|
||||||
|
basePoint (0 0 0);
|
||||||
|
normalVector (0 0 1);
|
||||||
|
}
|
||||||
|
interpolate true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user