gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
6 #ifndef MESH_GFACE_OPTIMIZE_H
7 #define MESH_GFACE_OPTIMIZE_H
34 typedef std::map<MEdge, std::pair<MElement *, MElement *>,
MEdgeLessThan>
40 for(std::size_t i = 0, elements_size = elements.size(); i < elements_size;
42 T *
const t = elements[i];
44 for(std::size_t j = 0, vertices_size = t->getNumVertices();
45 j < vertices_size; j++) {
46 adj[t->getVertex(j)].push_back(t);
56 std::vector<edge_angle> &edges_lonly);
64 std::set<MTri3 *, compareTri3Ptr> &AllTris,
68 bool nodeRepositioning,
double minqual);
79 if(
v[0] < o.
v[0])
return true;
80 if(
v[0] > o.
v[0])
return false;
81 if(
v[1] < o.
v[1])
return true;
82 if(
v[1] > o.
v[1])
return false;
83 if(
v[2] < o.
v[2])
return true;
84 if(
v[2] > o.
v[2])
return false;
85 if(
v[3] < o.
v[3])
return true;
98 swapquad(
int const v1,
int const v2,
int const v3,
int const v4)
void buildVertexToElement(std::vector< T * > const &elements, v2t_cont &adj)
void quadsToTriangles(GFace *gf, double minqual)
swapquad(MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4)
void recombineIntoQuads(GFace *gf, bool blossom, int topologicalOptiPasses, bool nodeRepositioning, double minqual)
void f(int n, double u, double *val)
std::size_t getNum() const
void buildEdgeToElement(std::vector< T * > &eles, e2t_cont &adj)
edge_angle(MVertex *_v1, MVertex *_v2, MElement *t1, MElement *t2)
std::map< MVertex *, std::vector< MElement * >, MVertexPtrLessThan > v2t_cont
void transferDataStructure(GFace *gf, std::set< MTri3 *, compareTri3Ptr > &AllTris, bidimMeshData &DATA)
RecombineTriangle(const MEdge &me, MElement *_t1, MElement *_t2, Field *f)
std::map< MEdge, std::pair< MElement *, MElement * >, MEdgeLessThan > e2t_cont
bool operator<(const swapquad &o) const
bool buildMeshGenerationDataStructures(GFace *gf, std::set< MTri3 *, compareTri3Ptr > &AllTris, bidimMeshData &data)
bool operator<(const edge_angle &other) const
void computeEquivalences(GFace *gf, bidimMeshData &DATA)
void splitElementsInBoundaryLayerIfNeeded(GFace *gf)
void buildEdgeToTriangle(std::vector< MTriangle * > &, e2t_cont &adj)
void laplaceSmoothing(GFace *gf, int niter=1, bool infinity_norm=false)
bool operator<(const RecombineTriangle &other) const
void buildListOfEdgeAngle(e2t_cont adj, std::vector< edge_angle > &edges_detected, std::vector< edge_angle > &edges_lonly)
swapquad(int const v1, int const v2, int const v3, int const v4)
void buildEdgeToElements(std::vector< MElement * > &tris, e2t_cont &adj)