20 JacobianIsEvaluated(0),
40 MFEM_ABORT(
"unknown Geometry::Type!");
46 for (
int j = 0; j < dof; j++)
59 FElem -> CalcDShape(*
IntPoint, dshape);
60 Mult(PointMat, dshape, dFdx);
79 return (Wght = dFdx.
Weight());
84 switch (FElem->
Space())
91 mfem_error(
"IsoparametricTransformation::OrderJ()");
98 switch (FElem->
Space())
105 mfem_error(
"IsoparametricTransformation::OrderW()");
120 return ((k-1)*(d-1)+(l-1));
122 return (k*(d-1)+(l-1));
125 mfem_error(
"IsoparametricTransformation::OrderGrad(...)");
135 FElem -> CalcShape(ip, shape);
136 PointMat.
Mult(shape, trans);
142 int dof, n,
dim, i, j, k;
151 for (j = 0; j < n; j++)
153 FElem -> CalcShape (ir.
IntPoint(j), shape);
154 for (i = 0; i <
dim; i++)
157 for (k = 0; k < dof; k++)
159 tr(i, j) += PointMat(i, k) * shape(k);
173 for (
int j = 0; j < matrix.
Width(); j++)
193 const int max_iter = 16;
194 const double ref_tol = 1e-15;
195 const double phys_tol = 1e-15*pt.
Normlinf();
198 const int sdim = PointMat.
Height();
201 double xd[3], yd[3], dxd[3], Jid[9];
202 Vector x(xd, dim), y(yd, sdim), dx(dxd, dim);
204 bool hit_bdr =
false, prev_hit_bdr;
210 for (
int it = 0; it < max_iter; it++)
216 if (y.Normlinf() < phys_tol) { ip = xip;
return 0; }
222 prev_hit_bdr = hit_bdr;
227 if (dx.
Normlinf() < ref_tol) { ip = xip;
return 0; }
233 prev_xip.
Get(dxd, dim);
235 if (dx.
Normlinf() < ref_tol) {
return 1; }
261 for (i = 0; i < n; i++)
int GetNPoints() const
Returns the number of the points in the integration rule.
Abstract class for Finite Elements.
void Set(const double *p, const int dim)
void Get(double *p, const int dim) const
int GetDim() const
Returns the space dimension for the finite element.
Class for integration rule.
void SetSize(int s)
Resize the vector if the new size is different.
void Mult(const Table &A, const Table &B, Table &C)
C = A * B (as boolean matrices)
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols.
int GetOrder() const
Returns the order of the finite element.
Data type dense matrix using column-major storage.
int Space() const
Returns the type of space on each element.
double Normlinf() const
Returns the l_infinity norm of the vector.
const IntegrationPoint & GetCenter(int GeomType)
PointFiniteElement PointFE
IntegrationPoint & IntPoint(int i)
Returns a reference to the i-th integration point.
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows.
TriLinear3DFiniteElement HexahedronFE
const IntegrationRule & GetNodes() const
void CalcInverse(const DenseMatrix &a, DenseMatrix &inva)
int GetGeomType() const
Returns the geometry type:
static bool ProjectPoint(int GeomType, const IntegrationPoint &beg, IntegrationPoint &end)
int GetDof() const
Returns the degrees of freedom in the FE space.
void subtract(const Vector &x, const Vector &y, Vector &z)
void mfem_error(const char *msg)
void GetColumnReference(int c, Vector &col)
Linear3DFiniteElement TetrahedronFE
Linear2DFiniteElement TriangleFE
Class for integration point with weight.
void Mult(const double *x, double *y) const
Matrix vector multiplication.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
BiLinear2DFiniteElement QuadrilateralFE
Linear1DFiniteElement SegmentFE