netgen/libsrc/meshing/bisect.hpp

101 lines
2.4 KiB
C++
Raw Normal View History

2009-01-13 04:40:13 +05:00
#ifndef BISECT
#define BISECT
class BisectionOptions
{
public:
const char * outfilename;
const char * mlfilename;
const char * refinementfilename;
const char * femcode;
int maxlevel;
int usemarkedelements;
bool refine_hp;
bool refine_p;
TaskManager task_manager = &DummyTaskManager;
2018-01-04 14:43:22 +05:00
Tracer tracer = &DummyTracer;
2015-10-19 13:08:30 +05:00
DLL_HEADER BisectionOptions ();
2009-01-13 04:40:13 +05:00
};
class ZRefinementOptions
{
public:
int minref;
2015-10-19 13:08:30 +05:00
DLL_HEADER ZRefinementOptions();
2009-01-13 04:40:13 +05:00
};
2015-10-19 13:08:30 +05:00
DLL_HEADER extern void BisectTetsCopyMesh (Mesh &, const NetgenGeometry *,
2009-01-13 04:40:13 +05:00
BisectionOptions & opt);
2015-10-19 13:08:30 +05:00
DLL_HEADER extern void ZRefinement (Mesh &, const class NetgenGeometry *,
2009-01-13 04:40:13 +05:00
ZRefinementOptions & opt);
class DLL_HEADER Refinement
2009-01-13 04:40:13 +05:00
{
MeshOptimize2d * optimizer2d;
public:
Refinement ();
virtual ~Refinement ();
2009-08-25 20:00:20 +06:00
void Refine (Mesh & mesh) const;
2009-01-13 04:40:13 +05:00
void Refine (Mesh & mesh);
2011-01-11 01:18:01 +05:00
void Bisect (Mesh & mesh, class BisectionOptions & opt, Array<double> * quality_loss = NULL) const;
void MakeSecondOrder (Mesh & mesh) const;
2009-01-13 04:40:13 +05:00
void MakeSecondOrder (Mesh & mesh);
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
int surfi,
const PointGeomInfo & gi1,
const PointGeomInfo & gi2,
2011-01-11 01:18:01 +05:00
Point<3> & newp, PointGeomInfo & newgi) const;
2009-01-13 04:40:13 +05:00
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
int surfi1, int surfi2,
const EdgePointGeomInfo & ap1,
const EdgePointGeomInfo & ap2,
2011-01-11 01:18:01 +05:00
Point<3> & newp, EdgePointGeomInfo & newgi) const;
2009-01-13 04:40:13 +05:00
virtual Vec<3> GetTangent (const Point<3> & p, int surfi1, int surfi2,
const EdgePointGeomInfo & egi) const;
virtual Vec<3> GetNormal (const Point<3> & p, int surfi1,
const PointGeomInfo & gi) const;
2011-01-11 01:18:01 +05:00
virtual void ProjectToSurface (Point<3> & p, int surfi) const;
2009-01-13 04:40:13 +05:00
virtual void ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & /* gi */) const
2009-01-13 04:40:13 +05:00
{
ProjectToSurface (p, surfi);
}
virtual void ProjectToEdge (Point<3> & p, int surfi1, int surfi2, const EdgePointGeomInfo & egi) const;
void ValidateSecondOrder (Mesh & mesh);
void ValidateRefinedMesh (Mesh & mesh,
2009-01-25 17:35:25 +05:00
Array<INDEX_2> & parents);
2009-01-13 04:40:13 +05:00
2011-01-11 01:18:01 +05:00
MeshOptimize2d * Get2dOptimizer(void) const
2009-01-13 04:40:13 +05:00
{
return optimizer2d;
}
void Set2dOptimizer(MeshOptimize2d * opti)
{
optimizer2d = opti;
}
virtual void LocalizeEdgePoints(Mesh & /* mesh */) const {;}
};
#endif