/usr/share/netgen/libsrc/meshing/ruler3.hpp is in netgen-headers 4.9.13.dfsg-8build2.
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 | #ifndef FILE_RULER3
#define FILE_RULER3
/**
3D element generation rule.
*/
class vnetrule
{
private:
/// rule is applicable for quality classes above this value
int quality;
/// name of rule
char * name;
/// point coordinates in reference position
Array<Point3d> points;
/// old and new faces in reference numbering
Array<Element2d> faces;
/// additional edges of rule
Array<twoint> edges;
/// points of freezone in reference coordinates
Array<Point3d> freezone;
/// points of freezone in reference coordinates if tolcalss to infty
Array<Point3d> freezonelimit;
/// point index, if point equal to mappoint, otherwise 0
Array<int> freezonepi;
/// faces of each convex part of freezone
Array<Array<threeint>*> freefaces;
/// set of points of each convex part of freezone
Array<Array<int>*> freesets;
/// points of transformed freezone
Array<Point3d> transfreezone;
/// edges of each convex part of freezone
Array<Array<twoint>*> freeedges;
/// face numbers to be deleted
Array<int> delfaces;
/// elements to be generated
Array<Element> elements;
/// tolerances for points and faces (used ??)
Array<double> tolerances, linetolerances;
/// transformation matrix
DenseMatrix oldutonewu;
/// transformation matrix: deviation old point to dev. freezone
DenseMatrix * oldutofreezone;
/** transformation matrix: deviation old point to dev. freezone,
quality class to infinity */
DenseMatrix * oldutofreezonelimit;
// can be deleted:
// BaseMatrix *outf, *outfl;
/**
a point is outside of convex part of freezone,
iff mat * (point, 1) >= 0 for each component (correct ?)
*/
Array<DenseMatrix*> freefaceinequ;
///
Array<fourint> orientations;
/**
flags specified in rule-description file:
t .. test rule
*/
Array<char> flags;
/**
topological distance of face to base element
non-connected: > 100 (??)
*/
Array<int> fnearness;
Array<int> pnearness;
int maxpnearness;
/// number of old points in rule
int noldp;
/// number of new poitns in rule
int noldf;
/// box containing free-zone
public:
// double fzminx, fzmaxx, fzminy, fzmaxy, fzminz, fzmaxz;
Box3d fzbox;
public:
///
vnetrule ();
///
~vnetrule ();
///
int GetNP () const { return points.Size(); }
///
int GetNF () const { return faces.Size(); }
///
int GetNE () const { return elements.Size(); }
///
int GetNO () const { return orientations.Size(); }
///
int GetNEd () const { return edges.Size(); }
///
int GetNOldP () const { return noldp; }
///
int GetNOldF () const { return noldf; }
///
int GetNDelF () const { return delfaces.Size(); }
///
int GetQuality () const { return quality; }
///
int GetFNearness (int fi) const { return fnearness.Get(fi); }
///
int GetPNearness (int pi) const { return pnearness.Get(pi); }
///
int GetMaxPNearness () const { return maxpnearness; }
///
const Point3d & GetPoint (int i) const { return points.Get(i); }
///
const Element2d & GetFace (int i) const { return faces.Get(i); }
///
const Element & GetElement (int i) const { return elements.Get(i); }
///
const twoint & GetEdge (int i) const { return edges.Get(i); }
///
int GetDelFace (int i) const { return delfaces.Get(i); }
///
int IsDelFace (int fn) const;
///
float CalcPointDist (int pi, const Point3d & p) const;
///
double PointDistFactor (int pi) const
{
return tolerances.Get(pi);
}
///
void SetFreeZoneTransformation (const Vector & allp,
int tolclass);
///
int IsInFreeZone (const Point3d & p) const;
/**
0 not in free-zone
1 in free-zone
-1 maybe
*/
int IsTriangleInFreeZone (const Point3d & p1, const Point3d & p2,
const Point3d & p3, const Array<int> & pi, int newone);
///
int IsQuadInFreeZone (const Point3d & p1, const Point3d & p2,
const Point3d & p3, const Point3d & p4,
const Array<int> & pi, int newone);
///
int IsTriangleInFreeSet (const Point3d & p1, const Point3d & p2,
const Point3d & p3, int fs, const Array<int> & pi, int newone);
///
int IsQuadInFreeSet (const Point3d & p1, const Point3d & p2,
const Point3d & p3, const Point3d & p4,
int fs, const Array<int> & pi, int newone);
///
int ConvexFreeZone () const;
/// if t1 and t2 are neighbourtriangles, NTP returns the opposite Point of t1 in t2
int NeighbourTrianglePoint (const threeint & t1, const threeint & t2) const;
///
const Point3d & GetTransFreeZone (int i) { return transfreezone.Get(i); }
///
int GetNP (int fn) const
{ return faces.Get(fn).GetNP(); }
///
int GetPointNr (int fn, int endp) const
{ return faces.Get(fn).PNum(endp); }
///
int GetPointNrMod (int fn, int endp) const
{ return faces.Get(fn).PNumMod(endp); }
///
const fourint & GetOrientation (int i) { return orientations.Get(i); }
///
int TestFlag (char flag) const;
///
const DenseMatrix & GetOldUToNewU () const { return oldutonewu; }
//
// const DenseMatrix & GetOldUToFreeZone () const { return oldutofreezone; }
//
// const DenseMatrix & GetOldUToFreeZoneLimit () const
// { return oldutofreezonelimit; }
///
const char * Name () const { return name; }
///
void LoadRule (istream & ist);
///
const Array<Point3d> & GetTransFreeZone () { return transfreezone; }
///
int TestOk () const;
///
friend void TestRules ();
///
// friend void Plot3DRule (const ROT3D & r, char key);
};
#endif
|