/usr/include/freefoam/dynamicMesh/boundaryCutter.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 | /*---------------------------------------------------------------------------*\
========= |
\\ / 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::boundaryCutter
Description
Does modifications to boundary faces.
Does
- move boundary points
- split boundary edges (multiple per edge if nessecary)
- face-centre decomposes boundary faces
- diagonal split of boundary faces
SourceFiles
boundaryCutter.C
\*---------------------------------------------------------------------------*/
#ifndef boundaryCutter_H
#define boundaryCutter_H
#include <OpenFOAM/Map.H>
#include <OpenFOAM/labelList.H>
#include <OpenFOAM/edge.H>
#include <OpenFOAM/typeInfo.H>
#include <OpenFOAM/labelPair.H>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of classes
class polyTopoChange;
class mapPolyMesh;
class polyMesh;
class face;
/*---------------------------------------------------------------------------*\
Class boundaryCutter Declaration
\*---------------------------------------------------------------------------*/
class boundaryCutter
{
// Private data
//- Reference to mesh
const polyMesh& mesh_;
//- Per edge sorted (start to end) list of points added.
HashTable<labelList, edge, Hash<edge> > edgeAddedPoints_;
//- Per face the mid point added.
Map<label> faceAddedPoint_;
// Private Member Functions
//- Get patch and zone info for face
void getFaceInfo
(
const label faceI,
label& patchID,
label& zoneID,
label& zoneFlip
) const;
//- Add cuts of edges to face
face addEdgeCutsToFace(const label faceI, const Map<labelList>&) const;
//- Splits faces with multiple cut edges. Return true if anything split.
bool splitFace
(
const label faceI,
const Map<point>& pointToPos,
const Map<labelList>& edgeToAddedPoints,
polyTopoChange& meshMod
) const;
//- Add/modify faceI for new vertices.
void addFace
(
const label faceI,
const face& newFace,
bool& modifiedFace, // have we already 'used' faceI?
polyTopoChange& meshMod
) const;
//- Disallow default bitwise copy construct
boundaryCutter(const boundaryCutter&);
//- Disallow default bitwise assignment
void operator=(const boundaryCutter&);
public:
//- Runtime type information
ClassName("boundaryCutter");
// Constructors
//- Construct from mesh
boundaryCutter(const polyMesh& mesh);
// Destructor
~boundaryCutter();
// Member Functions
// Edit
//- Do actual cutting with cut description. Inserts mesh changes
// into meshMod.
// pointToPos : new position for selected points
// edgeToCuts : per edge set of points that need to be introduced
// faceToSplit : per face the diagonal split
// faceToFeaturePoint : per face the feature point. Triangulation
// around this feature point.
void setRefinement
(
const Map<point>& pointToPos,
const Map<List<point> >& edgeToCuts,
const Map<labelPair>& faceToSplit,
const Map<point>& faceToFeaturePoint,
polyTopoChange& meshMod
);
//- Force recalculation of locally stored data on topological change
void updateMesh(const mapPolyMesh&);
// Access
//- Per edge a sorted list (start to end) of added points.
const HashTable<labelList, edge, Hash<edge> >& edgeAddedPoints()
const
{
return edgeAddedPoints_;
}
//- Per face the mid point added.
const Map<label>& faceAddedPoint() const
{
return faceAddedPoint_;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************ vim: set sw=4 sts=4 et: ************************ //
|