gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
49 MTriangle(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
52 for(
int i = 0; i < 3; i++)
_v[i] = v[i];
55 virtual int getDim()
const {
return 2; }
65 virtual void xyz2uvw(
double xyz[3],
double uvw[3])
const;
68 if(
_v[0] != v1 &&
_v[0] != v2)
return _v[0];
69 if(
_v[1] != v1 &&
_v[1] != v2)
return _v[1];
70 if(
_v[2] != v1 &&
_v[2] != v2)
return _v[2];
83 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
96 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
132 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
155 virtual bool isInside(
double u,
double v,
double w)
const
158 if(u < (-tol) || v < (-tol) || u > ((1. + tol) - v) || fabs(w) > tol)
167 static const int e[3][2] = {{0, 1}, {1, 2}, {2, 0}};
168 return e[edge][vert];
173 static const int eSolin[3][2] = {{0, 1}, {1, 2}, {2, 0}};
174 return MEdge(
_v[eSolin[num][0]],
_v[eSolin[num][1]]);
197 MVertex *v5,
int num = 0,
int part = 0)
203 for(
int i = 0; i < 3; i++)
_vs[i]->setPolynomialOrder(2);
205 MTriangle6(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
208 for(
int i = 0; i < 3; i++)
_vs[i] = v[3 + i];
209 for(
int i = 0; i < 3; i++)
_vs[i]->setPolynomialOrder(2);
216 return num < 3 ?
_v[num] :
_vs[num - 3];
220 return num < 3 ?
_v[num] :
_vs[num - 3];
231 static const int map[6] = {0, 3, 1, 4, 2, 5};
234 virtual void xyz2uvw(
double xyz[3],
double uvw[3])
const
240 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
250 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
285 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
316 static std::map<TupleReorientation, IndicesReoriented>
320 std::vector<MVertex *>
_vs;
325 const std::vector<MVertex *> &v,
char order,
int num = 0,
329 for(std::size_t i = 0; i <
_vs.size(); i++)
332 MTriangleN(
const std::vector<MVertex *> &v,
char order,
int num = 0,
336 for(std::size_t i = 3; i < v.size(); i++)
_vs.push_back(v[i]);
337 for(std::size_t i = 0; i <
_vs.size(); i++)
345 return num < 3 ?
_v[num] :
_vs[num - 3];
349 return num < 3 ?
_v[num] :
_vs[num - 3];
365 virtual void xyz2uvw(
double xyz[3],
double uvw[3])
const
372 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
379 const int ie = (num + 1) * (
_order - 1);
380 for(
int i = num * (
_order - 1); i != ie; ++i) v[j++] =
_vs[i];
383 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
387 v.resize(3 +
_vs.size());
389 for(std::size_t i = 0; i !=
_vs.size(); ++i) v[i + 3] =
_vs[i];
421 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
432 template <
class T>
void sort3(T t[3])
463 if(_v1[0] < _v2[0])
return true;
464 if(_v1[0] > _v2[0])
return false;
465 if(_v1[1] < _v2[1])
return true;
466 if(_v1[1] > _v2[1])
return false;
467 if(_v1[2] < _v2[2])
return true;
virtual void getNode(int num, double &u, double &v, double &w) const
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
MTriangleN(const std::vector< MVertex * > &v, char order, int num=0, int part=0)
virtual const char * getStringForDIFF() const
void _getFaceVertices(std::vector< MVertex * > &v) const
virtual MFaceN getHighOrderFace(int num, int sign, int rot)
virtual MFace getFace(int num) const
virtual double getInnerRadius()
virtual const char * getStringForTOCHNOG() const
virtual void setVertex(int num, MVertex *v)
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual SPoint3 circumcenter()
virtual MFaceN getHighOrderFace(int num, int sign, int rot)
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
MTriangle6(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MVertex *v5, int num=0, int part=0)
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual int numEdge2numVertex(int numEdge, int numVert) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual double gammaShapeMeasure()
virtual void getNode(int num, double &u, double &v, double &w) const
static void Error(const char *fmt,...)
virtual MVertex * getVertexUNV(int num)
virtual std::size_t getNumVertices() const
virtual int getPolynomialOrder() const
virtual std::size_t getNumVertices() const
std::size_t getNum() const
std::pair< int, std::pair< int, int > > TupleReorientation
virtual void getNode(int num, double &u, double &v, double &w) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual int getNumEdgesRep(bool curved)
virtual const char * getStringForBDF() const
static int edges_tri(const int edge, const int vert)
virtual MVertex * getVertex(int num)
virtual int getTypeForUNV() const
bool operator()(MTriangle *t1, MTriangle *t2) const
virtual double etaShapeMeasure()
MTriangle6(const std::vector< MVertex * > &v, int num=0, int part=0)
virtual int getNumFacesRep(bool curved)
virtual int getNumFaceVertices() const
virtual double getOuterRadius()
virtual int getDim() const
virtual std::size_t getNumVertices() const
virtual int getNumFacesRep(bool curved)
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual MFace getFaceSolin(int num)
MTriangle(MVertex *v0, MVertex *v1, MVertex *v2, int num=0, int part=0)
virtual int getNumEdges() const
virtual MVertex * getVertex(int num)
virtual const char * getStringForRAD() const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
void swap(double &a, double &b)
virtual void reorient(int rotation, bool swap)
virtual int getNumEdgesRep(bool curved)
virtual double getVolume()
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual bool getFaceInfo(const MFace &face, int &ithFace, int &sign, int &rot) const
virtual int getTypeForVTK() const
virtual int getTypeForMSH() const
virtual int getTypeForMSH() const
virtual bool getIsAssimilatedSerendipity() const
virtual const MVertex * getVertex(int num) const
virtual const MVertex * getVertex(int num) const
virtual int getNumEdgeVertices() const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual int getTypeForUNV() const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
std::vector< int > IndicesReoriented
virtual bool isInside(double u, double v, double w) const
virtual int getType() const
virtual MFaceN getHighOrderFace(int num, int sign, int rot)
double getTolerance() const
virtual const char * getStringForPOS() const
virtual const char * getStringForINP() const
virtual MVertex * getVertex(int num)
virtual int numCommonNodesInDualGraph(const MElement *const other) const
MTriangle(const std::vector< MVertex * > &v, int num=0, int part=0)
virtual int getTypeForVTK() const
MTriangleN(MVertex *v0, MVertex *v1, MVertex *v2, const std::vector< MVertex * > &v, char order, int num=0, int part=0)
void _getFaceRep(MVertex *v0, MVertex *v1, MVertex *v2, double *x, double *y, double *z, SVector3 *n)
void _getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual MEdge getEdgeSolin(int num)
virtual const char * getStringForBDF() const
virtual const MVertex * getVertex(int num) const
virtual MEdge getEdge(int num) const
virtual void reorient(int rotation, bool swap)
virtual int getTypeForVTK() const
virtual int getNumFacesRep(bool curved)
virtual void getNode(int num, double &u, double &v, double &w) const
virtual int getTypeForMSH() const
virtual int getPolynomialOrder() const
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual int getNumEdgeVertices() const
virtual void setVertex(int num, MVertex *v)
static std::map< TupleReorientation, IndicesReoriented > _tuple2indicesReoriented
std::vector< MVertex * > _vs
virtual const char * getStringForKEY() const
virtual const char * getStringForKEY() const
virtual void setVertex(int num, MVertex *v)
virtual void reorient(int rotation, bool swap)
virtual int getNumFaces()
virtual const char * getStringForTOCHNOG() const
virtual const char * getStringForDIFF() const
virtual const char * getStringForINP() const
virtual int getNumEdgesRep(bool curved)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual double angleShapeMeasure()
virtual const char * getStringForPOS() const
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual MVertex * getOtherVertex(MVertex *v1, MVertex *v2)
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual SPoint3 barycenterUVW() const