22 mfem_error(
"LinearFormIntegrator::AssembleRHSElementVect(...)");
53 add(elvect, ip.
weight * val, shape, elvect);
69 int intorder = oa * el.
GetOrder() + ob;
82 add(elvect, ip.
weight * val, shape, elvect);
100 int intorder = oa * el.
GetOrder() + ob;
110 Q.
Eval(Qvec, Tr, ip);
123 Vector tangent(dim), Qvec;
130 mfem_error(
"These methods make sense only in 2D problems.");
135 int intorder = oa * el.
GetOrder() + ob;
145 tangent(0) = Jac(0,0);
146 tangent(1) = Jac(1,0);
148 Q.
Eval(Qvec, Tr, ip);
152 add(elvect, ip.
weight*(Qvec*tangent), shape, elvect);
184 Q.
Eval (Qvec, Tr, ip);
186 for (
int k = 0; k < vdim; k++)
190 for (
int s = 0; s < dof; s++)
191 elvect(dof*k+s) += ip.
weight * cf * shape(s);
223 for (
int k = 0; k < vdim; k++)
224 for (
int s = 0; s < dof; s++)
225 elvect(dof*k+s) += vec(k) * shape(s);
256 QF.
Eval (vec, Tr, ip);
285 nor *= Sign * ip.
weight * F -> Eval (Tr, ip);
286 for (
int j = 0; j < dof; j++)
287 for (
int k = 0; k < dim; k++)
288 elvect(dof*k+j) += nor(k) * shape(j);
318 add(elvect, val, shape, elvect);
346 f.
Eval(f_loc, Tr, ip);
350 Swap<double>(f_hat(0), f_hat(1));
351 f_hat(0) = -f_hat(0);
361 mfem_error(
"BoundaryFlowIntegrator::AssembleRHSElementVect\n"
362 " is not implemented as boundary integrator!\n"
363 " Use LinearForm::AddBdrFaceIntegrator instead of\n"
364 " LinearForm::AddBoundaryIntegrator.");
370 int dim, ndof, order;
371 double un, w, vu_data[3], nor_data[3];
375 Vector vu(vu_data, dim), nor(nor_data, dim);
403 nor(0) = 2*eip.
x - 1.0;
408 w = 0.5*alpha*un - beta*fabs(un);
410 elvect.
Add(w, shape);
418 mfem_error(
"DGDirichletLFIntegrator::AssembleRHSElementVect");
425 bool kappa_is_nonzero = (
kappa != 0.);
461 nor(0) = 2*eip.
x - 1.0;
488 if (kappa_is_nonzero)
int GetNPoints() const
Returns the number of the points in the integration rule.
Abstract class for Finite Elements.
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
int GetDim() const
Returns the space dimension for the finite element.
Class for integration rule.
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
virtual void Eval(Vector &V, ElementTransformation &T, const IntegrationPoint &ip)=0
void SetSize(int s)
Resizes the vector if the new size is different.
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual void Eval(DenseMatrix &K, ElementTransformation &T, const IntegrationPoint &ip)=0
void CalcAdjugate(const DenseMatrix &a, DenseMatrix &adja)
int GetOrder() const
Returns the order of the finite element.
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
int Space() const
Returns the type of space on each element.
void CalcOrtho(const DenseMatrix &J, Vector &n)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
void add(const Vector &v1, const Vector &v2, Vector &v)
friend void Mult(const DenseMatrix &b, const DenseMatrix &c, DenseMatrix &a)
Matrix matrix multiplication. A = B * C.
IntegrationPoint & IntPoint(int i)
Returns a reference to the i-th integration point.
void MultTranspose(const double *x, double *y) const
Multiply a vector with the transpose matrix.
IntegrationRules IntRules(0)
A global object with all integration rules (defined in intrules.cpp)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const =0
int GetVDim()
Returns dimension of the vector.
void AddMult(const Vector &x, Vector &y) const
y += A.x
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
int GetGeomType() const
Returns the geometry type:
int GetDof() const
Returns the degrees of freedom in the FE space.
void mfem_error(const char *msg)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
Vector & Set(const double a, const Vector &x)
(*this) = a * x
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
Vector & Add(const double a, const Vector &Va)
(*this) += a * Va
Class for integration point with weight.
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual double Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
void SetSize(int s)
If the matrix is not a square matrix of size s then recreate it.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const =0