gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
57 int num = 0,
int part = 0)
66 MPyramid(
const std::vector<MVertex *> &v,
int num = 0,
int part = 0)
69 for(
int i = 0; i < 5; i++)
_v[i] = v[i];
72 virtual int getDim()
const {
return 3; }
87 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
90 static const int f[8] = {0, 1, 1, 2, 0, 3, 2, 3};
109 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
113 v.resize((num < 4) ? 3 : 4);
130 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
166 virtual bool isInside(
double u,
double v,
double w)
const
169 if(u < (w - (1. + tol)) || u > ((1. + tol) - w) || v < (w - (1. + tol)) ||
170 v > ((1. + tol) - w) || w < (-tol) || w > (1. + tol))
177 static const int e[8][2] = {{0, 1}, {0, 3}, {0, 4}, {1, 2},
178 {1, 4}, {2, 3}, {2, 4}, {3, 4}};
179 return e[edge][vert];
183 static const int f[5][4] = {
184 {0, 1, 4, -1}, {3, 0, 4, -1}, {1, 2, 4, -1}, {2, 3, 4, -1}, {0, 3, 2, 1}};
185 return f[face][vert];
191 static const int e[5][4] = {{1, 5, -3, 0},
196 return e[face][edge];
201 static const int map[5] = {0, 1, 3, 2, 4};
254 std::vector<MVertex *>
_vs;
258 bool fw =
true)
const;
262 const std::vector<MVertex *> &v,
char order,
int num = 0,
266 for(std::size_t i = 0; i <
_vs.size(); i++)
270 MPyramidN(
const std::vector<MVertex *> &v,
char order,
int num = 0,
272 :
MPyramid(v[0], v[1], v[2], v[3], v[4], num, part),
_order(order)
274 for(std::size_t i = 5; i < v.size(); i++)
_vs.push_back(v[i]);
275 for(std::size_t i = 0; i <
_vs.size(); i++)
284 return num < 5 ?
_v[num] :
_vs[num - 5];
288 return num < 5 ?
_v[num] :
_vs[num - 5];
311 const int ie = (num + 1) * (
_order - 1);
312 for(
int i = num * (
_order - 1); i != ie; ++i) v[j++] =
_vs[i];
314 virtual void getFaceVertices(
const int num, std::vector<MVertex *> &v)
const;
348 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
351 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
354 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const
virtual int getNumFaceVertices() const
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
std::vector< int > IndicesReversed
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual int getDim() const
static int edges_pyramid(const int edge, const int vert)
virtual const char * getStringForBDF() const
virtual void getNode(int num, double &u, double &v, double &w) const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual const char * getStringForPOS() const
MPyramidN(const std::vector< MVertex * > &v, char order, int num=0, int part=0)
virtual MVertex * getVertexNEU(int num)
static void Error(const char *fmt,...)
virtual int getNumFaces()
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual SPoint3 barycenterUVW() const
void f(int n, double u, double *val)
virtual int numCommonNodesInDualGraph(const MElement *const other) const
virtual int getNumEdgesRep(bool curved)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
void _getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual int getNumFacesRep(bool curved)
virtual void setVertex(int num, MVertex *v)
MPyramid(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, int num=0, int part=0)
virtual MFace getFace(int num) const
virtual bool isInside(double u, double v, double w) const
void _getEdgeRep(MVertex *v0, MVertex *v1, double *x, double *y, double *z, SVector3 *n, int faceIndex=-1)
MVertex * getVertex(std::size_t i) const
static int faces2edge_pyramid(const int face, const int edge)
virtual MEdge getEdge(int num) const
virtual int getNumEdges() const
MPyramid(const std::vector< MVertex * > &v, int num=0, int part=0)
static int faces_pyramid(const int face, const int vert)
virtual std::size_t getNumVertices() const
virtual void getNode(int num, double &u, double &v, double &w) const
virtual int getTypeForMSH() const
virtual const MVertex * getVertex(int num) const
virtual bool getFaceInfo(const MFace &face, int &ithFace, int &sign, int &rot) const
virtual bool getIsAssimilatedSerendipity() const
virtual int getPolynomialOrder() const
virtual int getTypeForVTK() const
virtual int getTypeForMSH() const
virtual int getNumEdgeVertices() const
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual void setVertex(int num, MVertex *v)
virtual int getType() const
std::vector< MVertex * > _vs
double getTolerance() const
virtual int getNumFacesRep(bool curved)
MPyramidN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, const std::vector< MVertex * > &v, char order, int num=0, int part=0)
void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual int getNumEdgesRep(bool curved)
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)
virtual MVertex * getVertex(int num)
virtual std::size_t getNumVertices() const
virtual int numEdge2numVertex(int numEdge, int numVert) const
virtual int getNumVolumeVertices() const
virtual int getVolumeSign()
virtual void getNode(int num, double &u, double &v, double &w) const
static std::map< int, IndicesReversed > _order2indicesReversedPyr
virtual const MVertex * getVertex(int num) const
virtual MVertex * getVertex(int num)
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
void _getFaceVertices(const int num, std::vector< MVertex * > &v) const
void _addHOEdgePoints(int num, std::vector< MVertex * > &v, bool fw=true) const