|
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().