gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
73 if(
edges.empty())
return;
77 BDS_Point(
int id,
double x = 0,
double y = 0,
double z = 0)
114 if(
p1 == other->
p1 ||
p1 == other->
p2)
return p1;
115 if(
p2 == other->
p1 ||
p2 == other->
p2)
return p2;
122 if(
p1 == p)
return p2;
123 if(
p2 == p)
return p1;
130 if(*other.
p1 < *
p1)
return true;
131 if(*
p1 < *other.
p1)
return false;
132 if(*other.
p2 < *
p2)
return true;
149 if(
_faces.empty())
return;
151 std::bind2nd(std::equal_to<BDS_Face *>(), t)),
178 Msg::Error(
"Opposite edge to point %d cannot be found for quad", p->
iD);
184 Msg::Error(
"Point %d does not belong to this triangle", p->
iD);
190 Msg::Error(
"Opposite point to edge %d %d cannot be found for quad",
197 Msg::Error(
"Edge %d %d does not belong to this triangle", e->
p1->
iD,
208 if(_n[0] && _n[1] && _n[2])
return true;
215 if(_n[0] && _n[1] && _n[2] && _n[3])
return true;
230 return *ent1 < *ent2;
237 return *ent1 < *ent2;
245 if(ent1->
X - ent2->
X >
t)
return true;
246 if(ent1->
X - ent2->
X < -
t)
return false;
247 if(ent1->
Y - ent2->
Y >
t)
return true;
248 if(ent1->
Y - ent2->
Y < -
t)
return false;
249 if(ent1->
Z - ent2->
Z >
t)
return true;
257 return *ent1 < *ent2;
332 if(
p1 < other.
p1)
return true;
333 if(
p1 > other.
p1)
return false;
334 if(
p2 < other.
p2)
return true;
346 std::set<BDS_GeomEntity *, GeomLessThan>
geom;
347 std::set<BDS_Point *, PointLessThan>
points;
372 std::set<EdgeToRecover> *e2r =
nullptr,
373 std::set<EdgeToRecover> *not_recovered =
nullptr);
389 GFace *gf =
nullptr);
392 double y3,
double x4,
double y4,
double x[2]);
bool smooth_point_centroid(BDS_Point *p, GFace *gf, double thresh)
BDS_Face * find_triangle(BDS_Edge *e1, BDS_Edge *e2, BDS_Edge *e3)
bool operator<(const BDS_GeomEntity &other) const
bool operator<(const BDS_Point &other) const
virtual ~BDS_SwapEdgeTestRecover()
bool operator<(const BDS_Edge &other) const
BDS_SwapEdgeTestQuality(bool a, bool b=true)
bool operator()(const BDS_Point *ent1, const BDS_Point *ent2) const
virtual bool operator()(BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, BDS_Point *q1, BDS_Point *q2, BDS_Point *q3, BDS_Point *op1, BDS_Point *op2, BDS_Point *op3, BDS_Point *oq1, BDS_Point *oq2, BDS_Point *oq3) const =0
void computeNeighborhood(BDS_Point *oface[2], BDS_Point *t1[4], BDS_Point *t2[4]) const
BDS_Point * find_point(int num)
static double c(int i, int j, fullMatrix< double > &CA, const std::vector< SPoint3 > &P, const std::vector< SPoint3 > &Q)
bool split_edge(BDS_Edge *, BDS_Point *, bool check_area_param=false)
static void Error(const char *fmt,...)
BDS_GeomEntity * get_geom(int p1, int p2)
BDS_SwapEdgeTestRecover()
void f(int n, double u, double *val)
BDS_SwapEdgeTestNormals(GFace *_gf, double ori)
EdgeToRecover(int _p1, int _p2, GEdge *_ge)
bool operator()(const BDS_GeomEntity *ent1, const BDS_GeomEntity *ent2) const
void del_face(BDS_Face *t)
std::vector< BDS_Face * > triangles
std::vector< BDS_Edge * > edges
std::vector< BDS_Face * > _faces
bool collapse_edge_parametric(BDS_Edge *, BDS_Point *, bool=false)
void oppositeof(BDS_Point *oface[2]) const
BDS_Face * otherFace(const BDS_Face *f) const
BDS_Mesh(const BDS_Mesh &other)
std::set< BDS_GeomEntity *, GeomLessThan > geom
virtual ~BDS_SwapEdgeTestQuality()
virtual bool operator()(BDS_Point *p1, BDS_Point *p2, BDS_Point *q1, BDS_Point *q2) const
std::set< BDS_Point *, PointLessThan > points
BDS_Edge * recover_edge_fast(BDS_Point *p1, BDS_Point *p2)
virtual bool operator()(BDS_Point *p1, BDS_Point *p2, BDS_Point *q1, BDS_Point *q2) const
void normal_triangle(BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, double c[3])
void addface(BDS_Face *f)
BDS_Edge(BDS_Point *A, BDS_Point *B)
BDS_Face * faces(std::size_t const i) const
BDS_Point * oppositeVertex(BDS_Edge *e)
void outputScalarField(std::vector< BDS_Face * > &t, const char *fn, int param, GFace *gf=nullptr)
void add_geom(int degree, int tag)
BDS_GeomEntity(int a, int b)
bool getNodes(BDS_Point *_n[4]) const
BDS_Point * othervertex(const BDS_Point *p) const
virtual bool operator()(BDS_Point *p1, BDS_Point *p2, BDS_Point *q1, BDS_Point *q2) const
BDS_Point * commonvertex(const BDS_Edge *other) const
bool operator()(const BDS_Point *ent1, const BDS_Point *ent2) const
BDS_Edge * recover_edge(int p1, int p2, bool &_fatal, std::set< EdgeToRecover > *e2r=nullptr, std::set< EdgeToRecover > *not_recovered=nullptr)
BDS_Point * add_point(int num, double x, double y, double z)
bool operator()(const BDS_Edge *ent1, const BDS_Edge *ent2) const
void del_edge(BDS_Edge *e)
std::vector< BDS_Face * > getTriangles() const
virtual ~BDS_SwapEdgeTest()
bool edge_constraint(BDS_Point *p1, BDS_Point *p2)
void del_point(BDS_Point *p)
void recur_tag(BDS_Face *t, BDS_GeomEntity *g)
int Intersect_Edges_2d(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double x[2])
virtual bool operator()(BDS_Point *p1, BDS_Point *p2, BDS_Point *q1, BDS_Point *q2) const =0
std::vector< BDS_Edge * > edges
BDS_Point(int id, double x=0, double y=0, double z=0)
BDS_Edge * add_edge(int p1, int p2)
double BDS_Face_Validity(GFace *gf, BDS_Face *f)
BDS_Face(BDS_Edge *A, BDS_Edge *B, BDS_Edge *C, BDS_Edge *D=nullptr)
bool operator<(const EdgeToRecover &other) const
BDS_Edge * oppositeEdge(BDS_Point *p)
bool swap_edge(BDS_Edge *, const BDS_SwapEdgeTest &theTest, bool force=false)
Can invalidate the iterators for edge.
BDS_Point * _periodicCounterpart
BDS_Edge * find_edge(int p1, int p2)
BDS_Face * add_triangle(int p1, int p2, int p3)
double const & lc() const