/usr/include/freefoam/meshTools/surfaceToCell.H is in libfreefoam-dev 0.1.0+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | /*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ 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
- 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 <meshTools/topoSetSource.H>
#include <OpenFOAM/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
fileName surfName_;
//- Points which are outside
pointField outsidePoints_;
//- Include cut cells
bool includeCut_;
//- Include inside cells
bool includeInside_;
//- Include outside cells
bool includeOutside_;
//- if > 0 : include cells with distance from cellCentre to surface
// less than nearDist.
scalar nearDist_;
//- if > -1 : include cells with normals at nearest surface points
// varying more than curvature_.
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.
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 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 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 void applyToSet
(
const topoSetSource::setAction action,
topoSet&
) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************ vim: set sw=4 sts=4 et: ************************ //
|