gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
#include <limits>
#include <set>
#include <map>
#include <algorithm>
#include <numeric>
#include "GmshConfig.h"
#include "GmshMessage.h"
#include "OS.h"
#include "robustPredicates.h"
#include "BackgroundMesh.h"
#include "meshGFaceDelaunayInsertion.h"
#include "meshGFaceOptimize.h"
#include "meshGFace.h"
#include "GModel.h"
#include "GFace.h"
#include "Numeric.h"
#include "STensor3.h"
#include "Context.h"
#include "discreteFace.h"
#include "intersectCurveSurface.h"
#include "HilbertCurve.h"
#include "fullMatrix.h"
Go to the source code of this file.
Functions | |
static void | getDegeneratedVertices (GFace *gf, std::set< GEntity * > °enerated) |
static bool | intersection_segments_2 (double *p1, double *p2, double *q1, double *q2) |
template<class ITERATOR > | |
void | _printTris (char *name, ITERATOR it, ITERATOR end, bidimMeshData *data, GFace *gf=nullptr, std::set< GEntity * > *degenerated=nullptr) |
static bool | isActive (MTri3 *t, double limit_, int &active) |
static bool | isActive (MTri3 *t, double limit_, int &i, std::set< MEdge, MEdgeLessThan > *front) |
static void | updateActiveEdges (MTri3 *t, double limit_, std::set< MEdge, MEdgeLessThan > &front) |
static void | circumCenterMetric (double *pa, double *pb, double *pc, const double *metric, double *x, double &Radius2) |
static void | circumCenterMetricXYZ (double *p1, double *p2, double *p3, SMetric3 &metric, double *res, double *uv, double &radius) |
static void | circumCenterMetric (MTriangle *base, const double *metric, bidimMeshData &data, double *x, double &Radius2) |
void | buildMetric (GFace *gf, double *uv, double *metric) |
static double | computeTolerance (const double radius) |
int | inCircumCircleAniso (GFace *gf, double *p1, double *p2, double *p3, double *uv, double *metric) |
int | inCircumCircleAniso (GFace *gf, MTriangle *base, const double *uv, const double *metricb, bidimMeshData &data) |
static void | fourthPoint (double *p1, double *p2, double *p3, double *p4) |
int | inCircumCircle (MTriangle *base, const double *p, const double *param, bidimMeshData &data) |
template<class Iterator > | |
static void | connectTris (Iterator beg, Iterator end, std::vector< edgeXface > &conn) |
void | connectTriangles (std::list< MTri3 * > &l) |
void | connectTriangles (std::vector< MTri3 * > &l) |
void | connectTriangles (std::set< MTri3 *, compareTri3Ptr > &l) |
static int | inCircumCircleXY (MTriangle *t, MVertex *v) |
static void | recurFindCavity (std::vector< edgeXface > &shell, std::vector< MTri3 * > &cavity, MVertex *v, MTri3 *t) |
static void | recurFindCavityAniso (GFace *gf, std::list< edgeXface > &shell, std::list< MTri3 * > &cavity, double *metric, double *param, MTri3 *t, bidimMeshData &data) |
static bool | circUV (MTriangle *t, bidimMeshData &data, double *res, GFace *gf) |
static bool | invMapUV (MTriangle *t, double *p, bidimMeshData &data, double *uv, double tol) |
double | getSurfUV (MTriangle *t, bidimMeshData &data) |
static int | insertVertexB (std::list< edgeXface > &shell, std::list< MTri3 * > &cavity, bool force, GFace *gf, MVertex *v, double *param, MTri3 *t, std::set< MTri3 *, compareTri3Ptr > &allTets, std::set< MTri3 *, compareTri3Ptr > *activeTets, bidimMeshData &data, double *metric, MTri3 **oneNewTriangle, bool verifyStarShapeness=true) |
static bool | invMapXY (MTriangle *t, MVertex *v) |
static MTri3 * | search4Triangle (MTri3 *t, MVertex *v, int maxx, int &ITER) |
static MTri3 * | search4Triangle (MTri3 *t, double pt[2], bidimMeshData &data, std::set< MTri3 *, compareTri3Ptr > &AllTris, double uv[2], bool force=false) |
static bool | insertAPoint (GFace *gf, std::set< MTri3 *, compareTri3Ptr >::iterator it, double center[2], double metric[3], bidimMeshData &data, std::set< MTri3 *, compareTri3Ptr > &AllTris, std::set< MTri3 *, compareTri3Ptr > *ActiveTris=nullptr, MTri3 *worst=nullptr, MTri3 **oneNewTriangle=nullptr, bool testStarShapeness=false) |
void | bowyerWatson (GFace *gf, int MAXPNT, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates) |
static double | lengthInfniteNorm (const double p[2], const double q[2], const double quadAngle) |
static void | circumCenterInfinite (MTriangle *base, double quadAngle, bidimMeshData &data, double *x) |
static double | lengthMetric (const double p[2], const double q[2], const double metric[3]) |
static double | optimalPointFrontal (GFace *gf, MTri3 *worst, int active_edge, bidimMeshData &data, double newPoint[2], double metric[3]) |
static bool | optimalPointFrontalB (GFace *gf, MTri3 *worst, int active_edge, bidimMeshData &data, double newPoint[2], double metric[3]) |
void | bowyerWatsonFrontal (GFace *gf, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates, std::vector< SPoint2 > *true_boundary) |
static void | optimalPointFrontalQuad (GFace *gf, MTri3 *worst, int active_edge, bidimMeshData &data, double newPoint[2], double metric[3]) |
void | buildBackgroundMesh (GFace *gf, bool crossFieldClosestPoint, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates) |
void | bowyerWatsonFrontalLayers (GFace *gf, bool quad, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates) |
void | bowyerWatsonParallelograms (GFace *gf, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates) |
void | bowyerWatsonParallelogramsConstrained (GFace *gf, const std::set< MVertex * > &constr_vertices, std::map< MVertex *, MVertex * > *equivalence, std::map< MVertex *, SPoint2 > *parametricCoordinates) |
static void | initialSquare (std::vector< MVertex * > &v, MVertex *box[4], std::vector< MTri3 * > &t) |
static MTri3 * | getTriToBreak (MVertex *v, std::vector< MTri3 * > &t, int &ITER) |
static bool | triOnBox (MTriangle *t, MVertex *box[4]) |
void | recoverEdges (std::vector< MTri3 * > &t, std::vector< MEdge > &edges) |
void | delaunayMeshIn2D (std::vector< MVertex * > &v, std::vector< MTriangle * > &result, bool removeBox, std::vector< MEdge > *edgesToRecover, bool hilbertSort) |
bool | swapedge (MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MTri3 *t1, int iLocalEdge) |
bool | diffend (MVertex *v1, MVertex *v2, MVertex *p1, MVertex *p2) |
static bool | recoverEdgeBySwaps (std::vector< MTri3 * > &t, MVertex *mv1, MVertex *mv2, std::vector< MEdge > &edges) |
Variables | |
static double | LIMIT_ = 0.5 * std::sqrt(2.0) * 1 |
void _printTris | ( | char * | name, |
ITERATOR | it, | ||
ITERATOR | end, | ||
bidimMeshData * | data, | ||
GFace * | gf = nullptr , |
||
std::set< GEntity * > * | degenerated = nullptr |
||
) |
Definition at line 64 of file meshGFaceDelaunayInsertion.cpp.
void bowyerWatson | ( | GFace * | gf, |
int | MAXPNT, | ||
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates | ||
) |
Definition at line 1033 of file meshGFaceDelaunayInsertion.cpp.
Referenced by buildBackgroundMesh(), meshGenerator(), and meshGeneratorPeriodic().
void bowyerWatsonFrontal | ( | GFace * | gf, |
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates, | ||
std::vector< SPoint2 > * | true_boundary | ||
) |
Definition at line 1289 of file meshGFaceDelaunayInsertion.cpp.
Referenced by meshGenerator(), and meshGeneratorPeriodic().
void bowyerWatsonFrontalLayers | ( | GFace * | gf, |
bool | quad, | ||
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates | ||
) |
Definition at line 1497 of file meshGFaceDelaunayInsertion.cpp.
Referenced by meshGenerator(), and meshGeneratorPeriodic().
void bowyerWatsonParallelograms | ( | GFace * | gf, |
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates | ||
) |
Definition at line 1621 of file meshGFaceDelaunayInsertion.cpp.
Referenced by meshGenerator(), and meshGeneratorPeriodic().
void bowyerWatsonParallelogramsConstrained | ( | GFace * | gf, |
const std::set< MVertex * > & | constr_vertices, | ||
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates | ||
) |
Definition at line 1711 of file meshGFaceDelaunayInsertion.cpp.
void buildBackgroundMesh | ( | GFace * | gf, |
bool | crossFieldClosestPoint, | ||
std::map< MVertex *, MVertex * > * | equivalence, | ||
std::map< MVertex *, SPoint2 > * | parametricCoordinates | ||
) |
Definition at line 1453 of file meshGFaceDelaunayInsertion.cpp.
Referenced by meshGenerator(), and meshGeneratorPeriodic().
void buildMetric | ( | GFace * | gf, |
double * | uv, | ||
double * | metric | ||
) |
Definition at line 332 of file meshGFaceDelaunayInsertion.cpp.
Referenced by _relocate(), bowyerWatson(), bowyerWatsonParallelograms(), bowyerWatsonParallelogramsConstrained(), edgeSwapTestDelaunayAniso(), inCircumCircleAniso(), MTri3::MTri3(), optimalPointFrontal(), and optimalPointFrontalQuad().
|
static |
Definition at line 1108 of file meshGFaceDelaunayInsertion.cpp.
Referenced by optimalPointFrontalQuad().
|
static |
Definition at line 246 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatson(), circumCenterMetric(), circumCenterMetricXYZ(), inCircumCircleAniso(), and optimalPointFrontal().
|
static |
Definition at line 319 of file meshGFaceDelaunayInsertion.cpp.
|
static |
Definition at line 278 of file meshGFaceDelaunayInsertion.cpp.
Referenced by MTri3::MTri3().
|
static |
Definition at line 623 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatson(), and optimalPointFrontal().
|
static |
Definition at line 341 of file meshGFaceDelaunayInsertion.cpp.
Referenced by inCircumCircleAniso().
void connectTriangles | ( | std::list< MTri3 * > & | l | ) |
Definition at line 543 of file meshGFaceDelaunayInsertion.cpp.
Referenced by buildMeshGenerationDataStructures(), and initialSquare().
void connectTriangles | ( | std::set< MTri3 *, compareTri3Ptr > & | l | ) |
Definition at line 555 of file meshGFaceDelaunayInsertion.cpp.
void connectTriangles | ( | std::vector< MTri3 * > & | l | ) |
Definition at line 549 of file meshGFaceDelaunayInsertion.cpp.
|
static |
Definition at line 515 of file meshGFaceDelaunayInsertion.cpp.
Referenced by connectTriangles(), delaunayMeshIn2D(), insertVertexB(), and swapedge().
void delaunayMeshIn2D | ( | std::vector< MVertex * > & | v, |
std::vector< MTriangle * > & | result, | ||
bool | removeBox, | ||
std::vector< MEdge > * | edgesToRecover, | ||
bool | hilbertSort | ||
) |
Definition at line 1834 of file meshGFaceDelaunayInsertion.cpp.
Definition at line 1947 of file meshGFaceDelaunayInsertion.cpp.
Referenced by recoverEdgeBySwaps().
|
static |
Definition at line 394 of file meshGFaceDelaunayInsertion.cpp.
Referenced by MTri3::inCircumCircle().
Definition at line 37 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontal().
|
inline |
Definition at line 665 of file meshGFaceDelaunayInsertion.cpp.
Referenced by insertVertexB().
Definition at line 1806 of file meshGFaceDelaunayInsertion.cpp.
Referenced by delaunayMeshIn2D().
int inCircumCircle | ( | MTriangle * | base, |
const double * | p, | ||
const double * | param, | ||
bidimMeshData & | data | ||
) |
Definition at line 499 of file meshGFaceDelaunayInsertion.cpp.
int inCircumCircleAniso | ( | GFace * | gf, |
double * | p1, | ||
double * | p2, | ||
double * | p3, | ||
double * | uv, | ||
double * | metric | ||
) |
Definition at line 348 of file meshGFaceDelaunayInsertion.cpp.
Referenced by edgeSwapTestDelaunayAniso(), insertAPoint(), and recurFindCavityAniso().
int inCircumCircleAniso | ( | GFace * | gf, |
MTriangle * | base, | ||
const double * | uv, | ||
const double * | metricb, | ||
bidimMeshData & | data | ||
) |
Definition at line 363 of file meshGFaceDelaunayInsertion.cpp.
Definition at line 561 of file meshGFaceDelaunayInsertion.cpp.
Referenced by getTriToBreak(), and recurFindCavity().
|
static |
Definition at line 1786 of file meshGFaceDelaunayInsertion.cpp.
Referenced by delaunayMeshIn2D().
|
static |
Definition at line 923 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatson(), bowyerWatsonFrontal(), bowyerWatsonFrontalLayers(), bowyerWatsonParallelograms(), and bowyerWatsonParallelogramsConstrained().
|
static |
Definition at line 684 of file meshGFaceDelaunayInsertion.cpp.
Referenced by insertAPoint().
|
inlinestatic |
Definition at line 51 of file meshGFaceDelaunayInsertion.cpp.
Referenced by search4Triangle().
|
static |
Definition at line 635 of file meshGFaceDelaunayInsertion.cpp.
Referenced by insertAPoint(), and search4Triangle().
Definition at line 825 of file meshGFaceDelaunayInsertion.cpp.
Referenced by search4Triangle().
|
static |
Definition at line 199 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontal(), bowyerWatsonFrontalLayers(), and insertVertexB().
|
static |
Definition at line 215 of file meshGFaceDelaunayInsertion.cpp.
|
static |
Definition at line 1094 of file meshGFaceDelaunayInsertion.cpp.
Referenced by optimalPointFrontalQuad().
|
static |
Definition at line 1131 of file meshGFaceDelaunayInsertion.cpp.
Referenced by optimalPointFrontal().
|
static |
Definition at line 1163 of file meshGFaceDelaunayInsertion.cpp.
Referenced by optimalPointFrontalB().
|
static |
Definition at line 1235 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontal(), and bowyerWatsonFrontalLayers().
|
static |
Definition at line 1366 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontalLayers().
|
static |
Definition at line 1953 of file meshGFaceDelaunayInsertion.cpp.
Referenced by recoverEdges().
Definition at line 1991 of file meshGFaceDelaunayInsertion.cpp.
Referenced by delaunayMeshIn2D().
|
static |
Definition at line 575 of file meshGFaceDelaunayInsertion.cpp.
Referenced by delaunayMeshIn2D().
|
static |
Definition at line 597 of file meshGFaceDelaunayInsertion.cpp.
Referenced by insertAPoint().
|
static |
Definition at line 874 of file meshGFaceDelaunayInsertion.cpp.
Definition at line 847 of file meshGFaceDelaunayInsertion.cpp.
Referenced by getTriToBreak(), and insertAPoint().
bool swapedge | ( | MVertex * | v1, |
MVertex * | v2, | ||
MVertex * | v3, | ||
MVertex * | v4, | ||
MTri3 * | t1, | ||
int | iLocalEdge | ||
) |
Definition at line 1912 of file meshGFaceDelaunayInsertion.cpp.
Referenced by recoverEdgeBySwaps().
Definition at line 1820 of file meshGFaceDelaunayInsertion.cpp.
Referenced by delaunayMeshIn2D().
|
static |
Definition at line 231 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontalLayers().
|
static |
Definition at line 34 of file meshGFaceDelaunayInsertion.cpp.
Referenced by bowyerWatsonFrontal(), bowyerWatsonFrontalLayers(), and insertVertexB().