Path: blob/devel/ElmerGUI/netgen/libsrc/meshing/improve2.hpp
3206 views
#ifndef FILE_IMPROVE21#define FILE_IMPROVE22345///6class MeshOptimize2d7{8int faceindex;9int improveedges;10double metricweight;11int writestatus;1213public:14///15MeshOptimize2d ();16///17void ImproveMesh (Mesh & mesh2d);18void ImproveMeshJacobian (Mesh & mesh2d);19void ImproveVolumeMesh (Mesh & mesh);20void ProjectBoundaryPoints(ARRAY<int> & surfaceindex,21const ARRAY<Point<3>* > & from, ARRAY<Point<3>* > & dest);2223void EdgeSwapping (Mesh & mesh, int usemetric);24void CombineImprove (Mesh & mesh);2526void GenericImprove (Mesh & mesh);272829void SetFaceIndex (int fi) { faceindex = fi; }30void SetImproveEdges (int ie) { improveedges = ie; }31void SetMetricWeight (double mw) { metricweight = mw; }32void SetWriteStatus (int ws) { writestatus = ws; }33343536///37virtual void SelectSurfaceOfPoint (const Point<3> & p,38const PointGeomInfo & gi);39///40virtual void ProjectPoint (INDEX /* surfind */, Point<3> & /* p */) const { };4142/// project point, use gi as initial value, and compute new gi43virtual int ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const44{ ProjectPoint (surfind, p); return CalcPointGeomInfo (surfind, gi, p); }4546///47virtual void ProjectPoint2 (INDEX /* surfind */, INDEX /* surfind2 */, Point<3> & /* p */) const { };4849/// liefert zu einem 3d-Punkt die geominfo (Dreieck) und liefert 1, wenn erfolgreich,50/// 0, wenn nicht (Punkt ausserhalb von chart)51virtual int CalcPointGeomInfo(PointGeomInfo& gi, const Point<3> & /*p3*/) const52{ gi.trignum = 1; return 1;};5354virtual int CalcPointGeomInfo(int /* surfind */, PointGeomInfo& gi, const Point<3> & p3) const55{ return CalcPointGeomInfo (gi, p3); }5657///58virtual void GetNormalVector(INDEX surfind, const Point<3> & p, PointGeomInfo & gi, Vec<3> & n) const;59virtual void GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const;6061void CheckMeshApproximation (Mesh & mesh);626364///65friend class Opti2SurfaceMinFunction;66///67friend class Opti2EdgeMinFunction;68///69friend double Opti2FunctionValueGrad (const Vector & x, Vector & grad);70///71friend double Opti2EdgeFunctionValueGrad (const Vector & x, Vector & grad);72737475};767778extern void CalcTriangleBadness (double x2, double x3, double y3,79double metricweight,80double h, double & badness,81double & g1x, double & g1y);8283848586extern double CalcTriangleBadness (const Point3d & p1,87const Point3d & p2,88const Point3d & p3,89double metricweight,90double h);9192extern double CalcTriangleBadness (const Point3d & p1,93const Point3d & p2,94const Point3d & p3,95const Vec3d & n,96double metricweight,97double h);9899#endif100101102103104