gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
40 double s[],
int order)
const
46 double s[][3],
int order)
const
52 double s[][3][3],
int order)
const
66 double jac[3][3])
const
72 double jac[3][3])
const
78 double jac[3][3])
const
84 double jac[3][3])
const
126 double xyz[3] = {p.
x(), p.
y(), p.
z()};
141 double xyz[3] = {p.
x(), p.
y(), p.
z()};
151 if(!
_orig)
return false;
156 double xyz[3] = {p.
x(), p.
y(), p.
z()};
162 if(fabs(p.
x() - pE.
x()) > tol)
return false;
163 if(fabs(p.
y() - pE.
y()) > tol)
return false;
164 if(fabs(p.
z() - pE.
z()) > tol)
return false;
204 double baseJac, origJac;
205 for(
int i = 0; i <
_npts; ++i) {
255 double s[][3],
int order)
const
263 double gradsuvw[1256][3];
282 double projgradxyz[3];
283 for(std::size_t i = 0; i < nsf; ++i) {
285 gradxyz[0] = invjac[0][0] * gradsuvw[i][0] + invjac[0][1] * gradsuvw[i][1] +
286 invjac[0][2] * gradsuvw[i][2];
287 gradxyz[1] = invjac[1][0] * gradsuvw[i][0] + invjac[1][1] * gradsuvw[i][1] +
288 invjac[1][2] * gradsuvw[i][2];
289 gradxyz[2] = invjac[2][0] * gradsuvw[i][0] + invjac[2][1] * gradsuvw[i][1] +
290 invjac[2][2] * gradsuvw[i][2];
295 prodscal[0] =
dot(tang[0], grad);
296 prodscal[1] =
dot(tang[1], grad);
297 projgradxyz[0] = prodscal[0] * tang[0].
x() + prodscal[1] * tang[1].
x();
298 projgradxyz[1] = prodscal[0] * tang[0].
y() + prodscal[1] * tang[1].
y();
299 projgradxyz[2] = prodscal[0] * tang[0].
z() + prodscal[1] * tang[1].
z();
303 s[i][0] = jac[0][0] * projgradxyz[0] + jac[0][1] * projgradxyz[1] +
304 jac[0][2] * projgradxyz[2];
305 s[i][1] = jac[1][0] * projgradxyz[0] + jac[1][1] * projgradxyz[1] +
306 jac[1][2] * projgradxyz[2];
307 s[i][2] = jac[2][0] * projgradxyz[0] + jac[2][1] * projgradxyz[1] +
308 jac[2][2] * projgradxyz[2];
313 double s[][3][3],
int order)
const
327 double jac[3][3])
const
333 double jac[3][3])
const
339 double jac[3][3])
const
345 double jac[3][3])
const
386 double xyz[3] = {p.
x(), p.
y(), p.
z()};
400 double xyz[3] = {p.
x(), p.
y(), p.
z()};
410 if(!
_orig)
return false;
415 double xyz[3] = {p.
x(), p.
y(), p.
z()};
421 if(fabs(p.
x() - pE.
x()) > tol)
return false;
422 if(fabs(p.
y() - pE.
y()) > tol)
return false;
423 if(fabs(p.
z() - pE.
z()) > tol)
return false;
462 double baseJac, origJac;
463 for(
int i = 0; i <
_npts; ++i) {
513 double s[][3],
int order)
const
521 double gradsuvw[1256][3];
532 double projgradxyz[3];
533 for(std::size_t i = 0; i < nsf; ++i) {
535 gradxyz[0] = invjac[0][0] * gradsuvw[i][0] + invjac[0][1] * gradsuvw[i][1] +
536 invjac[0][2] * gradsuvw[i][2];
537 gradxyz[1] = invjac[1][0] * gradsuvw[i][0] + invjac[1][1] * gradsuvw[i][1] +
538 invjac[1][2] * gradsuvw[i][2];
539 gradxyz[2] = invjac[2][0] * gradsuvw[i][0] + invjac[2][1] * gradsuvw[i][1] +
540 invjac[2][2] * gradsuvw[i][2];
544 double prodscal =
dot(tang, grad);
545 projgradxyz[0] = prodscal * tang.
x();
546 projgradxyz[1] = prodscal * tang.
y();
547 projgradxyz[2] = prodscal * tang.
z();
551 s[i][0] = jac[0][0] * projgradxyz[0] + jac[0][1] * projgradxyz[1] +
552 jac[0][2] * projgradxyz[2];
553 s[i][1] = jac[1][0] * projgradxyz[0] + jac[1][1] * projgradxyz[1] +
554 jac[1][2] * projgradxyz[2];
555 s[i][2] = jac[2][0] * projgradxyz[0] + jac[2][1] * projgradxyz[1] +
556 jac[2][2] * projgradxyz[2];
561 double s[][3][3],
int order)
const
574 double jac[3][3])
const
580 double jac[3][3])
const
586 double jac[3][3])
const
592 double jac[3][3])
const
633 double xyz[3] = {p.
x(), p.
y(), p.
z()};
647 double xyz[3] = {p.
x(), p.
y(), p.
z()};
657 if(!
_orig)
return false;
662 double xyz[3] = {p.
x(), p.
y(), p.
z()};
668 if(fabs(p.
x() - pE.
x()) > tol)
return false;
669 if(fabs(p.
y() - pE.
y()) > tol)
return false;
670 if(fabs(p.
z() - pE.
z()) > tol)
return false;
710 double baseJac, origJac;
711 for(
int i = 0; i <
_npts; ++i) {
761 double s[][3],
int order)
const
767 double s[][3][3],
int order)
const
780 double jac[3][3])
const
786 double jac[3][3])
const
792 double jac[3][3])
const
798 double jac[3][3])
const
839 double xyz[3] = {p.
x(), p.
y(), p.
z()};
853 double xyz[3] = {p.
x(), p.
y(), p.
z()};
863 if(!
_orig)
return false;
868 double xyz[3] = {p.
x(), p.
y(), p.
z()};
874 if(fabs(p.
x() - pE.
x()) > tol)
return false;
875 if(fabs(p.
y() - pE.
y()) > tol)
return false;
876 if(fabs(p.
z() - pE.
z()) > tol)
return false;
893 double v_xyz[3] = {vi->
x(), vi->
y(), vi->
z()};
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const
virtual std::size_t getNumPrimaryShapeFunctions() const
SVector3 crossprod(const SVector3 &a, const SVector3 &b)
virtual int getDim() const
virtual const JacobianBasis * getJacobianFuncSpace(int order=-1) const
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual void movePointFromElementSpaceToParentSpace(double &u, double &v, double &w) const
double inv3x3(double mat[3][3], double inv[3][3])
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
virtual const MElement * getBaseElement() const
virtual const JacobianBasis * getJacobianFuncSpace(int order=-1) const
virtual std::size_t getNumShapeFunctions() const
double dot(const SVector3 &a, const SMetric3 &m, const SVector3 &b)
virtual void getThirdDerivativeShapeFunctions(double u, double v, double w, double s[][3][3][3], int order=-1) const
virtual std::size_t getNumPrimaryShapeFunctions() const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual void movePointFromParentSpaceToElementSpace(double &u, double &v, double &w) const
virtual void movePointFromParentSpaceToElementSpace(double &u, double &v, double &w) const
virtual int getDim() const =0
virtual void movePointFromParentSpaceToElementSpace(double &u, double &v, double &w) const
virtual void updateParent(GModel *gm)
virtual const MVertex * getShapeFunctionNode(int i) const
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
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 updateParent(GModel *gm)
virtual std::size_t getNumPrimaryShapeFunctions() const
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
virtual const MElement * getBaseElement() const
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const
virtual std::size_t getNumShapeFunctions() const
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
int getNGQLPts(int order)
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual void movePointFromElementSpaceToParentSpace(double &u, double &v, double &w) const
virtual int getDim() const
virtual const MVertex * getShapeFunctionNode(int i) const
virtual MEdge getEdge(int num) const =0
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
int getNGQTPts(int order, bool forceTensorRule=false)
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
virtual const JacobianBasis * getJacobianFuncSpace(int order=-1) const
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual bool isInside(double u, double v, double w) const
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual std::size_t getNumPrimaryShapeFunctions() const
virtual bool isInside(double u, double v, double w) const
virtual bool isInside(double u, double v, double w) const
virtual void getThirdDerivativeShapeFunctions(double u, double v, double w, double s[][3][3][3], int order=-1) const
int getNGQTetPts(int order, bool forceTensorRule=false)
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual std::size_t getNumShapeFunctions() const
virtual void movePointFromElementSpaceToParentSpace(double &u, double &v, double &w) const
virtual std::size_t getNumPrimaryShapeFunctions() const
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual void movePointFromElementSpaceToParentSpace(double &u, double &v, double &w) const
virtual void getThirdDerivativeShapeFunctions(double u, double v, double w, double s[][3][3][3], int order=-1) const
MElement * getMeshElementByTag(int n)
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual void updateParent(GModel *gm)
virtual void movePointFromParentSpaceToElementSpace(double &u, double &v, double &w) const
virtual void getThirdDerivativeShapeFunctions(double u, double v, double w, double s[][3][3][3], int order=-1) const
double getTolerance() const
virtual const JacobianBasis * getJacobianFuncSpace(int order=-1) const
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual void pnt(double u, double v, double w, SPoint3 &p) const
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
virtual bool isInside(double u, double v, double w) const
virtual const MElement * getBaseElement() const
virtual int getDim() const
virtual double getPrimaryJacobian(double u, double v, double w, double jac[3][3]) const
virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3], int order=-1) const
virtual const JacobianBasis * getJacobianFuncSpace(int orderElement=-1) const
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const
virtual const MVertex * getShapeFunctionNode(int i) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual void xyz2uvw(double xyz[3], double uvw[3]) const
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
virtual double getJacobian(const fullMatrix< double > &gsf, double jac[3][3]) const
virtual MVertex * getVertex(int num)
virtual std::size_t getNumShapeFunctions() const
virtual std::size_t getNumShapeFunctions() const
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual int getDim() const
virtual const MElement * getBaseElement() const
virtual const MVertex * getShapeFunctionNode(int i) const
virtual const nodalBasis * getFunctionSpace(int order=-1, bool serendip=false) const
virtual void getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
virtual void updateParent(GModel *gm)
virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int order=-1) const
virtual void getShapeFunctions(double u, double v, double w, double s[], int order=-1) const