gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
51 #if defined(HAVE_VISUDEV)
53 double *x,
double *y,
double *
z,
SVector3 *n);
60 MElement(std::size_t num = 0,
int part = 0);
107 for(std::size_t i = 0; i < N; i++) verts[i] =
getVertex(i);
111 Msg::Error(
"Vertex set not supported for this element");
117 Msg::Error(
"Vertex information not available for this element");
181 Msg::Error(
"Edge information not available for this element");
190 virtual void getEdgeRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
208 Msg::Error(
"Face information not available for this element");
217 virtual void getFaceRep(
bool curved,
int num,
double *x,
double *y,
double *
z,
263 double sICNMin, sICNMax;
269 double minSIGE, maxSIGE;
330 bool serendip =
false)
const;
332 bool serendip =
false)
const;
341 virtual void getNode(
int num,
double &u,
double &v,
double &w)
const;
347 int order = -1)
const;
353 double s[][3],
int order = -1)
const;
355 double s[][3][3],
int order = -1)
const;
358 int order = -1)
const;
363 double jac[3][3])
const;
366 virtual double getJacobian(
const std::vector<SVector3> &gsf,
367 double jac[3][3])
const;
369 virtual double getJacobian(
const std::vector<SVector3> &gsf,
371 virtual double getJacobian(
double u,
double v,
double w,
372 double jac[3][3])
const;
375 double jac[3][3])
const;
401 double values[3])
const;
405 virtual void pnt(
double u,
double v,
double w,
SPoint3 &p)
const;
406 virtual void pnt(
double u,
double v,
double w,
double *p)
const;
408 virtual void pnt(
const std::vector<double> &sf,
SPoint3 &p)
const;
412 virtual void xyz2uvw(
double xyz[3],
double uvw[3])
const;
421 virtual bool isInside(
double u,
double v,
double w)
const = 0;
425 double interpolate(
double val[],
double u,
double v,
double w,
int stride = 1,
427 void interpolateGrad(
double val[],
double u,
double v,
double w,
double f[],
428 int stride = 1,
double invjac[3][3] =
nullptr,
430 void interpolateCurl(
double val[],
double u,
double v,
double w,
double f[],
431 int stride = 3,
int order = -1);
433 int stride = 3,
int order = -1);
438 Msg::Error(
"No integration points defined for this type of element: %d",
443 double integrate(
double val[],
int pOrder,
int stride = 1,
int order = -1);
446 double integrateCirc(
double val[],
int edge,
int pOrder,
int order = -1);
447 double integrateFlux(
double val[],
int face,
int pOrder,
int order = -1);
450 virtual void writeMSH2(FILE *fp,
double version = 1.0,
bool binary =
false,
451 int num = 0,
int elementary = 1,
int physical = 1,
452 int parentNum = 0,
int dom1Num = 0,
int dom2Num = 0,
453 std::vector<short> *ghosts =
nullptr);
454 virtual void writeMSH3(FILE *fp,
bool binary =
false,
int elementary = 1,
455 std::vector<short> *ghosts =
nullptr);
456 virtual void writePOS(FILE *fp,
bool printElementary,
bool printElementNumber,
457 bool printSICN,
bool printSIGE,
bool printGamma,
458 bool printDisto,
double scalingFactor = 1.0,
460 virtual void writeSTL(FILE *fp,
bool binary =
false,
461 double scalingFactor = 1.0);
462 virtual void writeX3D(FILE *fp,
double scalingFactor = 1.0);
465 virtual void writeUNV(FILE *fp,
int num = 0,
int elementary = 1,
467 virtual void writeVTK(FILE *fp,
bool binary =
false,
bool bigEndian =
false);
468 virtual void writeMATLAB(FILE *fp,
int filetype,
int elementary = 0,
469 int physical = 0,
bool binary =
false);
471 virtual void writeMESH(FILE *fp,
int elementTagType = 1,
int elementary = 1,
473 virtual void writeNEU(FILE *fp,
unsigned gambitType,
int adjust,
475 virtual void writeIR3(FILE *fp,
int elementTagType,
int num,
int elementary,
477 virtual void writeBDF(FILE *fp,
int format = 0,
int elementTagType = 1,
478 int elementary = 1,
int physical = 0);
479 virtual void writeDIFF(FILE *fp,
int num,
bool binary =
false,
480 int physical_property = 1);
481 virtual void writeINP(FILE *fp,
int num);
482 virtual void writeKEY(FILE *fp,
int pid,
int num);
483 virtual void writeRAD(FILE *fp,
int num);
484 virtual void writeSU2(FILE *fp,
int num);
500 static unsigned int getInfoMSH(
const int typeMSH,
501 const char **
const name =
nullptr);
507 virtual MElement *
copy(std::map<int, MVertex *> &vertexMap,
508 std::map<MElement *, MElement *> &newParents,
509 std::map<MElement *, MElement *> &newDomains);
519 MElement *
create(
int type, std::vector<MVertex *> &v, std::size_t num = 0,
520 int part = 0,
bool owner =
false,
int parent = 0,
548 std::vector<MVertex *> v1, v2;
551 std::sort(v1.begin(), v1.end());
552 std::sort(v2.begin(), v2.end());
virtual const FuncSpaceData getJacobianFuncSpaceData(int orderElement=-1) const
double minSIGEShapeMeasure()
virtual std::size_t getNum() const
virtual bool getIsOnlySerendipity() const
size_t operator()(const MElement *e) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual bool getFaceInfo(const MFace &face, int &ithFace, int &sign, int &rot) const
virtual SPoint3 barycenter_infty() const
virtual int getNumFacesRep(bool curved)=0
double integrateFlux(double val[], int face, int pOrder, int order=-1)
void getNodesCoordNonSerendip(fullMatrix< double > &nodesXYZ) const
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
virtual const char * getStringForTOCHNOG() const
virtual bool setVolumePositive()
virtual MVertex * getVertexVTK(int num)
virtual MFaceN getHighOrderFace(int num, int sign, int rot)
virtual MVertex * getVertexDIFF(int num)
bool operator()(const MElement *e1, const MElement *e2) const
virtual void writeMSH2(FILE *fp, double version=1.0, bool binary=false, int num=0, int elementary=1, int physical=1, int parentNum=0, int dom1Num=0, int dom2Num=0, std::vector< short > *ghosts=nullptr)
virtual MVertex * getVertexBDF(int num)
virtual const MElement * getBaseElement() const
virtual MElement * getDomain(int i) const
void forceNum(std::size_t num)
virtual void writePLY2(FILE *fp)
virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)=0
virtual int getTypeForVTK() const
virtual int getTypeForMSH() const
virtual MVertex * getVertexKEY(int num)
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual const char * getStringForPOS() const
virtual void setPartition(int num)
virtual void getFaceVertices(const int num, std::vector< MVertex * > &v) const
virtual double getOuterRadius()
virtual void writeX3D(FILE *fp, double scalingFactor=1.0)
virtual MVertex * getVertex(int num)=0
virtual int getDim() const =0
virtual void writeUNV(FILE *fp, int num=0, int elementary=1, int physical=1)
static void Error(const char *fmt,...)
virtual bool getEdgeInfo(const MEdge &edge, int &ithEdge, int &sign) const
void f(int n, double u, double *val)
double maxDistToStraight() const
virtual void writeMSH3(FILE *fp, bool binary=false, int elementary=1, std::vector< short > *ghosts=nullptr)
virtual MElement * getParent() const
virtual MEdgeN getHighOrderEdge(int num, int sign)
MElement(std::size_t num=0, int part=0)
virtual const char * getStringForBDF() const
int getSerendipity(int type)
virtual void getThirdDerivativeShapeFunctions(double u, double v, double w, double s[][3][3][3], int order=-1) const
virtual const MVertex * getShapeFunctionNode(int i) const
virtual void writeNEU(FILE *fp, unsigned gambitType, int adjust, int phys=0)
double minScaledJacobian(bool knownValid=false, bool reversedOk=false)
virtual const char * getStringForINP() const
virtual void writeIR3(FILE *fp, int elementTagType, int num, int elementary, int physical)
virtual double getEigenvaluesMetric(double u, double v, double w, double values[3]) const
virtual void getEdgeVertices(const int num, std::vector< MVertex * > &v) const
virtual void writeVRML(FILE *fp)
virtual void writeTOCHNOG(FILE *fp, int num)
virtual MVertex * getVertexMATLAB(int num)
virtual void setParent(MElement *p, bool owner=false)
virtual MElement * copy(std::map< int, MVertex * > &vertexMap, std::map< MElement *, MElement * > &newParents, std::map< MElement *, MElement * > &newDomains)
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual std::size_t getNumVertices() const =0
virtual void setVertex(int num, MVertex *v)
virtual MVertex * getVertexINP(int num)
virtual bool ownsParent() const
virtual MVertex * getVertexUNV(int num)
void getSignedJacobian(fullVector< double > &jacobian, int o=-1) const
virtual void updateParent(GModel *gm)
virtual const MVertex * getVertex(int num) const =0
virtual MEdge getEdge(int num) const =0
virtual void writeSU2(FILE *fp, int num)
virtual void primaryPnt(double u, double v, double w, SPoint3 &p)
void _getEdgeRep(MVertex *v0, MVertex *v1, double *x, double *y, double *z, SVector3 *n, int faceIndex=-1)
virtual int getNumEdgesRep(bool curved)=0
virtual SPoint3 fastBarycenter(bool primary=false) const
void interpolateGrad(double val[], double u, double v, double w, double f[], int stride=1, double invjac[3][3]=nullptr, int order=-1)
virtual int getType() const =0
virtual MVertex * getVertexRAD(int num)
virtual int getNumChildren() const
virtual int getNumFaces()=0
virtual int getNumFaceVertices() const
virtual MEdge getEdgeSolin(int numEdge)
virtual int getNumVolumeVertices() const
virtual const char * getStringForRAD() const
virtual int numEdge2numVertex(int numEdge, int numVert) const
virtual int getNumEdgeVertices() const
virtual double getVolume()
virtual MFace getFace(int num) const =0
virtual void writeDIFF(FILE *fp, int num, bool binary=false, int physical_property=1)
virtual std::size_t getNumShapeFunctions() const
virtual void writeINP(FILE *fp, int num)
virtual void movePointFromElementSpaceToParentSpace(double &u, double &v, double &w) const
static bool _getFaceInfo(const MFace &face, const MFace &other, int &sign, int &rot)
virtual std::size_t getNumPrimaryShapeFunctions() const
void interpolateCurl(double val[], double u, double v, double w, double f[], int stride=3, int order=-1)
virtual bool getIsAssimilatedSerendipity() const
virtual double etaShapeMeasure()
virtual MVertex * getVertexTOCHNOG(int num)
static double _isInsideTolerance
virtual void getVertexInfo(const MVertex *vertex, int &ithVertex) const
virtual void getVerticesIdForMSH(std::vector< int > &verts)
virtual MVertex * getVertexNEU(int num)
virtual void writeMATLAB(FILE *fp, int filetype, int elementary=0, int physical=0, bool binary=false)
virtual MElement * getBaseElement()
virtual int numCommonNodesInDualGraph(const MElement *const other) const =0
virtual void signedInvCondNumRange(double &iCNMin, double &iCNMax, GEntity *ge=nullptr)
double getTolerance() const
virtual std::string getInfoString(bool multline)
MElement * create(int type, std::vector< MVertex * > &v, std::size_t num=0, int part=0, bool owner=false, int parent=0, MElement *parent_ptr=nullptr, MElement *d1=nullptr, MElement *d2=nullptr)
virtual void pnt(double u, double v, double w, SPoint3 &p) const
double integrate(double val[], int pOrder, int stride=1, int order=-1)
void getVertices(std::vector< MVertex * > &verts)
virtual double gammaShapeMeasure()
double minSICNShapeMeasure()
virtual void writeRAD(FILE *fp, int num)
void _getFaceRep(MVertex *v0, MVertex *v1, MVertex *v2, double *x, double *y, double *z, SVector3 *n)
bool operator()(MElement *e1, MElement *e2) const
virtual const char * getStringForKEY() const
virtual const char * getStringForDIFF() const
double integrateCirc(double val[], int edge, int pOrder, int order=-1)
virtual void writeMESH(FILE *fp, int elementTagType=1, int elementary=1, int physical=0)
void getNodesCoord(fullMatrix< double > &nodesXYZ) const
virtual void movePointFromParentSpaceToElementSpace(double &u, double &v, double &w) const
bezierCoeff * getBezierVerticesCoord() const
virtual const FuncSpaceData getFuncSpaceData(int order=-1, bool serendip=false) const
virtual MVertex * getShapeFunctionNode(int i)
virtual MElement * getChild(int i) const
virtual double getInnerRadius()
std::size_t getNumPrimaryVertices() const
static unsigned int getInfoMSH(const int typeMSH, const char **const name=nullptr)
double interpolateDiv(double val[], double u, double v, double w, int stride=3, int order=-1)
virtual void writeVTK(FILE *fp, bool binary=false, bool bigEndian=false)
double getJacobianDeterminant(double u, double v, double w) const
virtual void idealJacRange(double &jmin, double &jmax, GEntity *ge=nullptr)
virtual bool isInside(double u, double v, double w) const =0
virtual const JacobianBasis * getJacobianFuncSpace(int orderElement=-1) const
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const
virtual void signedInvGradErrorRange(double &minSIGE, double &maxSIGE)
virtual double angleShapeMeasure()
bool operator()(const MElement *e1, const MElement *e2) const
virtual SPoint3 barycenter(bool primary=false) const
virtual void getNode(int num, double &u, double &v, double &w) const
virtual void writeSTL(FILE *fp, bool binary=false, double scalingFactor=1.0)
virtual int getVolumeSign()
virtual void setVisibility(char val)
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
MEdgeN getHighOrderEdge(const MEdge &edge)
virtual std::size_t getNumVerticesForMSH()
virtual int getTypeForUNV() const
virtual char getVisibility() const
virtual int getPolynomialOrder() const
MFaceN getHighOrderFace(const MFace &face)
double distoShapeMeasure()
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual int getPartition() const
virtual MFace getFaceSolin(int numFace)
double minIsotropyMeasure(bool knownValid=false, bool reversedOk=false)
virtual int getNumEdges() const =0
virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n)=0
virtual void writePOS(FILE *fp, bool printElementary, bool printElementNumber, bool printSICN, bool printSIGE, bool printGamma, bool printDisto, double scalingFactor=1.0, int elementary=1)
double interpolate(double val[], double u, double v, double w, int stride=1, int order=-1)
virtual SPoint3 barycenterUVW() const
virtual void scaledJacRange(double &jmin, double &jmax, GEntity *ge=nullptr) const
virtual void setDomain(MElement *e, int i)
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
virtual void writeBDF(FILE *fp, int format=0, int elementTagType=1, int elementary=1, int physical=0)
virtual void writeKEY(FILE *fp, int pid, int num)