gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
52 MVertex *v5,
int num = 0,
int part = 0)
62 MPrism(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
65 for(
int i = 0; i < 6; i++)
_v[i] = v[i];
68 virtual int getDim()
const {
return 3; }
84 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
104 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
108 v.resize((num < 2) ? 3 : 4);
132 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
173 virtual bool isInside(
double u,
double v,
double w)
const
176 if(w > (1. + tol) || w < -(1. + tol) || u < (-tol) || v < (-tol) ||
177 u > ((1. + tol) - v))
184 static const int e[9][2] = {{0, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 4},
185 {2, 5}, {3, 4}, {3, 5}, {4, 5}};
186 return e[edge][vert];
190 static const int f[5][4] = {
191 {0, 2, 1, -1}, {3, 4, 5, -1}, {0, 1, 4, 3}, {0, 3, 5, 2}, {1, 2, 5, 4}};
192 return f[face][vert];
198 static const int e[5][4] = {{2, -4, -1, 0},
203 return e[face][edge];
210 static const int f[5][4] = {{2, -4, -1, 0},
215 return f[face][edge];
220 static const int eSolin[9][2] = {{0, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 4},
221 {2, 5}, {3, 4}, {3, 5}, {4, 5}};
222 return MEdge(
_v[eSolin[num][0]],
_v[eSolin[num][1]]);
226 static const int fSolin[5][4] = {
227 {0, 1, 3, 4}, {0, 2, 3, 5}, {1, 2, 4, 5}, {0, 1, 2, -1}, {3, 4, 5, -1}};
229 return MFace(
_v[fSolin[num][0]],
_v[fSolin[num][1]],
_v[fSolin[num][2]]);
232 return MFace(
_v[fSolin[num][0]],
_v[fSolin[num][1]],
233 _v[fSolin[num][2]],
_v[fSolin[num][3]]);
238 static const int map[6] = {0, 2, 1, 3, 5, 4};
271 int num = 0,
int part = 0)
272 :
MPrism(v0, v1, v2, v3, v4, v5, num, part)
283 for(
int i = 0; i < 9; i++)
_vs[i]->setPolynomialOrder(2);
285 MPrism15(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
288 for(
int i = 0; i < 9; i++)
_vs[i] = v[6 + i];
289 for(
int i = 0; i < 9; i++)
_vs[i]->setPolynomialOrder(2);
296 return num < 6 ?
_v[num] :
_vs[num - 6];
300 return num < 6 ?
_v[num] :
_vs[num - 6];
311 static const int map[15] = {0, 6, 1, 9, 2, 7, 8, 10,
312 11, 3, 12, 4, 14, 5, 13};
317 static const int map[15] = {0, 1, 2, 3, 4, 5, 6, 9,
318 7, 8, 10, 11, 12, 14, 13};
323 static const int map[15] = {0, 1, 2, 3, 4, 5, 6, 9,
324 7, 12, 14, 13, 8, 10, 11};
329 static const int map[15] = {0, 1, 2, 3, 4, 5, 6, 9,
330 7, 12, 14, 13, 8, 10, 11};
336 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
345 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
349 v.resize((num < 2) ? 6 : 8);
351 static const int f[5][4] = {
352 {1, 3, 0, -1}, {6, 8, 7, -1}, {0, 4, 6, 2}, {2, 7, 5, 1}, {3, 5, 8, 4}};
353 const int i = (num < 2) ? 3 : 4;
354 v[i] =
_vs[
f[num][0]];
355 v[i + 1] =
_vs[
f[num][1]];
356 v[i + 2] =
_vs[
f[num][2]];
357 if(num >= 2) v[7] =
_vs[
f[num][3]];
387 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
422 :
MPrism(v0, v1, v2, v3, v4, v5, num, part)
436 for(
int i = 0; i < 12; i++)
_vs[i]->setPolynomialOrder(2);
438 MPrism18(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
441 for(
int i = 0; i < 12; i++)
_vs[i] = v[6 + i];
442 for(
int i = 0; i < 12; i++)
_vs[i]->setPolynomialOrder(2);
449 return num < 6 ?
_v[num] :
_vs[num - 6];
453 return num < 6 ?
_v[num] :
_vs[num - 6];
465 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
474 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
478 v.resize((num < 2) ? 6 : 9);
480 static const int f[5][4] = {
481 {1, 3, 0, -1}, {6, 8, 7, -1}, {0, 4, 6, 2}, {2, 7, 5, 1}, {3, 5, 8, 4}};
482 const int i = (num < 2) ? 3 : 4;
483 v[i] =
_vs[
f[num][0]];
484 v[i + 1] =
_vs[
f[num][1]];
485 v[i + 2] =
_vs[
f[num][2]];
487 v[7] =
_vs[
f[num][3]];
517 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
524 static const int map[18] = {0, 1, 2, 3, 4, 5, 6, 9, 7,
525 12, 14, 13, 8, 10, 11, 15, 17, 16};
540 std::vector<MVertex *>
_vs;
545 MVertex *v5,
const std::vector<MVertex *> &v,
char order,
int num = 0,
549 for(std::size_t i = 0; i <
_vs.size(); i++)
552 MPrismN(
const std::vector<MVertex *> &v,
char order,
int num = 0,
556 for(std::size_t i = 6; i < v.size(); i++)
_vs.push_back(v[i]);
557 for(std::size_t i = 0; i <
_vs.size(); i++)
_vs[i]->setPolynomialOrder(2);
564 return num < 6 ?
_v[num] :
_vs[num - 6];
568 return num < 6 ?
_v[num] :
_vs[num - 6];
584 return (n - 1 + 3 * n) * n;
593 return n * ((n - 1) * n / 2);
597 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
604 for(
int i = 0; i < n; i++) v[2 + i] =
_vs[num * n + i];
607 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
609 virtual void getFaceVertices(
const int num, std::vector<MVertex *> &v)
const;
655 case 0:
return "SI0";
656 case 1:
return "SI1";
657 case 2:
return "SI2";
658 case 3:
return "SI3";
659 case 4:
return "SI4";
660 case 5:
return "SI5";
661 case 6:
return "SI6";
662 case 7:
return "SI7";
663 case 8:
return "SI8";
664 case 9:
return "SI9";
669 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const;
virtual int getNumFaces()
MPrism18(const std::vector< MVertex * > &v, int num=0, int part=0)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual const char * getStringForINP() const
static int faces_prism(const int face, const int vert)
virtual MEdge getEdge(int num) const
virtual int getType() const
virtual const char * getStringForBDF() const
virtual MFace getFaceSolin(int num)
virtual int getNumEdgesRep(bool curved)
virtual int getNumFacesRep(bool curved)
MPrismN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MVertex *v5, const std::vector< MVertex * > &v, char order, int num=0, int part=0)
void _getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual int getTypeForUNV() const
virtual MVertex * getVertexBDF(int num)
virtual const char * getStringForPOS() const
virtual double getInnerRadius()
virtual bool isInside(double u, double v, double w) const
virtual MVertex * getVertex(int num)
static void Error(const char *fmt,...)
virtual int getPolynomialOrder() const
virtual MVertex * getVertexINP(int num)
void f(int n, double u, double *val)
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual std::size_t getNumVertices() const
virtual std::size_t getNumVertices() const
virtual std::size_t getNumVertices() const
static int faceClosureEdge2edge(const int face, const int edge)
virtual double gammaShapeMeasure()
virtual MVertex * getVertex(int num)
virtual MVertex * getVertexVTK(int num)
virtual const char * getStringForPOS() const
virtual int getNumFaceVertices() const
MPrism15(const std::vector< MVertex * > &v, int num=0, int part=0)
MPrismN(const std::vector< MVertex * > &v, char order, int num=0, int part=0)
virtual int getTypeForMSH() const
virtual const char * getStringForBDF() const
virtual int getDim() const
MPrism(const std::vector< MVertex * > &v, int num=0, int part=0)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
MPrism18(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9, MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14, MVertex *v15, MVertex *v16, MVertex *v17, int num=0, int part=0)
virtual void getNode(int num, double &u, double &v, double &w) const
virtual const char * getStringForPOS() const
virtual const MVertex * getVertex(int num) const
void _getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual MVertex * getVertex(int num)
virtual int getTypeForUNV() const
virtual const MVertex * getVertex(int num) const
virtual int getTypeForMSH() const
virtual MVertex * getVertex(int num)
virtual void getNode(int num, double &u, double &v, double &w) const
virtual bool getFaceInfo(const MFace &face, int &ithFace, int &sign, int &rot) const
virtual MVertex * getVertexUNV(int num)
virtual const MVertex * getVertex(int num) const
static int edges_prism(const int edge, const int vert)
std::vector< int > IndicesReversed
virtual int getTypeForVTK() const
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual const char * getStringForRAD() const
virtual MEdge getEdgeSolin(int num)
MPrism(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MVertex *v5, int num=0, int part=0)
virtual bool getIsAssimilatedSerendipity() const
static int faces2edge_prism(const int face, const int edge)
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual int getTypeForVTK() const
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual int getVolumeSign()
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual int getNumEdgesRep(bool curved)
double getTolerance() const
virtual void getNode(int num, double &u, double &v, double &w) const
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual void setVertex(int num, MVertex *v)
virtual int getPolynomialOrder() const
virtual std::size_t getNumVertices() const
virtual MVertex * getVertexVTK(int num)
virtual int getNumEdgesRep(bool curved)
virtual int getTypeForMSH() const
MPrism15(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9, MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14, int num=0, int part=0)
virtual const char * getStringForINP() const
virtual int getPolynomialOrder() const
static std::map< int, IndicesReversed > _order2indicesReversedPri
virtual SPoint3 barycenterUVW() const
virtual int getNumFacesRep(bool curved)
virtual const MVertex * getVertex(int num) const
virtual MVertex * getVertexKEY(int num)
virtual void getNode(int num, double &u, double &v, double &w) const
virtual int getNumEdges() const
virtual void getNode(int num, double &u, double &v, double &w) const
std::vector< MVertex * > _vs
virtual int getNumFacesRep(bool curved)
virtual int getNumVolumeVertices() const
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual void setVertex(int num, MVertex *v)
virtual int getNumFacesRep(bool curved)
virtual MVertex * getVertexVTK(int num)
virtual void setVertex(int num, MVertex *v)
virtual int getNumEdgeVertices() const
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual int getTypeForMSH() const
virtual int getNumEdgesRep(bool curved)
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual int getNumEdgeVertices() const
virtual int getNumFaceVertices() const
virtual const char * getStringForKEY() const
virtual MFace getFace(int num) const
virtual const char * getStringForKEY() const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual int getNumEdgeVertices() const
virtual void setVertex(int num, MVertex *v)
virtual int numEdge2numVertex(int numEdge, int numVert) const
virtual int getTypeForVTK() const
virtual int numCommonNodesInDualGraph(const MElement *const other) const