/usr/include/freefoam/dynamicMesh/edgeCollapser.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 | /*---------------------------------------------------------------------------*\
========= |
\\ / 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::edgeCollapser
Description
Does polyTopoChanges to remove edges. Can remove faces due to edge
collapse but can not remove cells due to face removal!
Also removes unused points.
SourceFiles
edgeCollapser.C
\*---------------------------------------------------------------------------*/
#ifndef edgeCollapser_H
#define edgeCollapser_H
#include <OpenFOAM/labelList.H>
#include <OpenFOAM/DynamicList.H>
#include <OpenFOAM/typeInfo.H>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of classes
class polyMesh;
class polyTopoChange;
class face;
class mapPolyMesh;
/*---------------------------------------------------------------------------*\
Class edgeCollapser Declaration
\*---------------------------------------------------------------------------*/
class edgeCollapser
{
// Private data
//- Reference to mesh
const polyMesh& mesh_;
//- For every point -1 or region number
labelList pointRegion_;
//- -1 or master vertex for region number
DynamicList<label> pointRegionMaster_;
//- Stack of free region numbers. Corresponds to -1 in pointRegionMaster
SLList<label> freeRegions_;
// Static Functions
//- Find val in list. Search starts at start, continues to size-1.
static label findIndex
(
const labelList&,
const label start,
const label size,
const label val
);
// Private Member Functions
//- Determine points connected through edgesToRemove_.
// Note: Only routine that uses edgesToRemove!
label changePointRegion
(
const label pointI,
const label oldRegion,
const label newRegion
);
//- Whether point is master of region or has been removed
bool pointRemoved(const label) const;
//- Renumber f with new vertices. Removes duplicates.
void filterFace(const label faceI, face&) const;
//- Some debugging printing
void printRegions() const;
//- Collapse list of edges. Tries to find master to collapse to.
void collapseEdges(const labelList& edgeLabels);
//- Disallow default bitwise copy construct
edgeCollapser(const edgeCollapser&);
//- Disallow default bitwise assignment
void operator=(const edgeCollapser&);
public:
//- Runtime type information
ClassName("edgeCollapser");
// Constructors
//- Construct from mesh.
edgeCollapser(const polyMesh& mesh);
// Member Functions
// Access
//- For every point the region it belongs to or -1.
const labelList& pointRegion() const
{
return pointRegion_;
}
//- For every region the master (i.e. the point the region will
// be replaced by)
const DynamicList<label>& pointRegionMaster() const
{
return pointRegionMaster_;
}
//- Check that edge is not marked for anything
bool unaffectedEdge(const label edgeI) const;
// Edit
//- Set edge to collapse and point to collapse it to.
// Return true if collapse is valid.
// (always true at the moment)
bool collapseEdge(const label edgeI, const label master);
//- Play commands into polyTopoChange to create mesh. Return true
// if anything changed.
bool setRefinement(polyTopoChange&);
void updateMesh(const mapPolyMesh&);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************ vim: set sw=4 sts=4 et: ************************ //
|