Files
OpenFOAM-5.x/src/meshTools/sets/volRegions/surfaceToCell/surfaceToCell.H
Henry Weller 1d7e1a7ad5 functionObjects: renamed faceSource -> surfaceRegion, cellSource -> volRegion
The use of the term 'source' in the context of post-processing is
confusing and does not properly describe the process of region
selection.  The new names 'surfaceRegion' and 'volRegion' better
describe the purpose of the functionObjects which is to provide field
processing functionality limited to a specified region of space, either
a surface or volume.

The keyword 'source' is renamed 'regionType' which better describes the
purpose which is to specify the method by which the surface or volume
region is selected.

The keyword to select the name of the surface or volume region is
renamed from 'sourceName' to 'name' consistent with the other
name-changes above.
2016-06-12 20:56:51 +01:00

229 lines
6.3 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::surfaceToCell
Description
A topoSetSource to select cells based on relation to surface.
Selects:
- all cells inside/outside/cut by surface
- all cells inside/outside surface ('useSurfaceOrientation', requires closed
surface)
- cells with centre nearer than XXX to surface
- cells with centre nearer than XXX to surface \b and with normal
at nearest point to centre and cell-corners differing by
more than YYY (i.e., point of high curvature)
SourceFiles
surfaceToCell.C
\*---------------------------------------------------------------------------*/
#ifndef surfaceToCell_H
#define surfaceToCell_H
#include "topoSetSource.H"
#include "Map.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
class triSurfaceSearch;
class triSurface;
/*---------------------------------------------------------------------------*\
Class surfaceToCell Declaration
\*---------------------------------------------------------------------------*/
class surfaceToCell
:
public topoSetSource
{
// Private data
//- Add usage string
static addToUsageTable usage_;
//- Name of surface file
const fileName surfName_;
//- Points which are outside
const pointField outsidePoints_;
//- Include cut cells
const bool includeCut_;
//- Include inside cells
const bool includeInside_;
//- Include outside cells
const bool includeOutside_;
//- Determine inside/outside purely using geometric test
// (does not allow includeCut)
const bool useSurfaceOrientation_;
//- If > 0 : include cells with distance from cellCentre to surface
// less than nearDist.
const scalar nearDist_;
//- If > -1 : include cells with normals at nearest surface points
// varying more than curvature_.
const scalar curvature_;
//- triSurface to search on. On pointer since can be external.
const triSurface* surfPtr_;
//- Search engine on surface.
const triSurfaceSearch* querySurfPtr_;
//- Whether I allocated above surface ptrs or whether they are
// external.
const bool IOwnPtrs_;
// Private Member Functions
//- Find index of nearest triangle to point. Returns triangle or -1 if
// not found within search span.
// Cache result under pointi.
static label getNearest
(
const triSurfaceSearch& querySurf,
const label pointi,
const point& pt,
const vector& searchSpan,
Map<label>& cache
);
//- Return true if surface normal of nearest points to vertices on
// cell differ from that on cell centre. Points cached in
// pointToNearest.
bool differingPointNormals
(
const triSurfaceSearch& querySurf,
const vector& span,
const label celli,
const label cellTriI,
Map<label>& pointToNearest
) const;
//- Depending on surface add to or delete from cellSet.
void combine(topoSet& set, const bool add) const;
//- Check values at construction time.
void checkSettings() const;
const triSurfaceSearch& querySurf() const
{
return *querySurfPtr_;
}
public:
//- Runtime type information
TypeName("surfaceToCell");
// Constructors
//- Construct from components
surfaceToCell
(
const polyMesh& mesh,
const fileName& surfName,
const pointField& outsidePoints,
const bool includeCut,
const bool includeInside,
const bool includeOutside,
const bool useSurfaceOrientation,
const scalar nearDist,
const scalar curvature
);
//- Construct from components (supplied surface, surfaceSearch)
surfaceToCell
(
const polyMesh& mesh,
const fileName& surfName,
const triSurface& surf,
const triSurfaceSearch& querySurf,
const pointField& outsidePoints,
const bool includeCut,
const bool includeInside,
const bool includeOutside,
const bool useSurfaceOrientation,
const scalar nearDist,
const scalar curvature
);
//- Construct from dictionary
surfaceToCell
(
const polyMesh& mesh,
const dictionary& dict
);
//- Construct from Istream
surfaceToCell
(
const polyMesh& mesh,
Istream&
);
//- Destructor
virtual ~surfaceToCell();
// Member Functions
virtual sourceType setType() const
{
return CELLSETSOURCE;
}
virtual void applyToSet
(
const topoSetSource::setAction action,
topoSet&
) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //