14#ifdef MFEM_USE_MOONOLITH
27 int tr_nd = trial.
GetDof();
66 int trial_dof = trial.
GetDof();
67 int test_dof = test.
GetDof();
71 mfem_error(
"VectorFEMassIntegrator::AssembleElementMatrix2(...)\n"
72 " is not implemented for tensor materials");
74#ifdef MFEM_THREAD_SAFE
84 elmat.
SetSize(test_dof, trial_dof);
99 VQ->
Eval(
D, test_Trans, test_ip);
102 for (
int d = 0; d <
dim; d++)
104 for (
int j = 0; j < test_dof; j++)
106 for (
int k = 0; k < trial_dof; k++)
118 int trial_dof = trial.
GetDof();
119 int test_dof = test.
GetDof();
123 mfem_error(
"VectorFEMassIntegrator::AssembleElementMatrix2(...)\n"
124 " is not implemented for vector/tensor permeability");
126#ifdef MFEM_THREAD_SAFE
137 for (
int i = 0; i < test_ir.
GetNPoints(); i++)
152 w *= Q->
Eval(test_Trans, test_ip);
155 for (
int d = 0; d <
dim; d++)
157 for (
int j = 0; j < test_dof; j++)
159 for (
int k = 0; k < trial_dof; k++)
171 int trial_dof = trial.
GetDof();
172 int test_dof = test.
GetDof();
176 mfem_error(
"VectorFEMassIntegrator::AssembleElementMatrix2(...)\n"
177 " is not implemented for vector/tensor permeability");
179#ifdef MFEM_THREAD_SAFE
187 elmat.
SetSize(test_dof, trial_dof);
190 for (
int i = 0; i < test_ir.
GetNPoints(); i++)
204 w *= Q->
Eval(test_Trans, test_ip);
207 for (
int d = 0; d <
dim; d++)
209 for (
int j = 0; j < test_dof; j++)
211 for (
int k = 0; k < trial_dof; k++)
233 int tr_nd = trial.
GetDof();
234 int te_nd = test.
GetDof();
239 vdim = (vdim == -1) ? test_Trans.
GetSpaceDim() : vdim;
241#ifdef MFEM_THREAD_SAFE
251 elmat.
SetSize(te_nd*vdim, tr_nd*vdim);
266 for (
int s = 0; s < test_ir.
GetNPoints(); s++)
279 for (
int k = 0; k < vdim; k++)
287 for (
int i = 0; i < vdim; i++)
288 for (
int j = 0; j < vdim; j++)
300 for (
int k = 0; k < vdim; k++)
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the coefficient in the element described by T at the point ip.
Data type dense matrix using column-major storage.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
void AddMatrix(DenseMatrix &A, int ro, int co)
Perform (ro+i,co+j)+=A(i,j) for 0<=i.
Abstract class for all finite elements.
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
int GetDim() const
Returns the reference space dimension for the finite element.
int GetRangeType() const
Returns the FiniteElement::RangeType of the element, one of {SCALAR, VECTOR}.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const =0
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
int GetDof() const
Returns the number of degrees of freedom in the finite element.
Class for integration point with weight.
Class for an integration rule - an Array of IntegrationPoint.
int GetNPoints() const
Returns the number of the points in the integration rule.
IntegrationPoint & IntPoint(int i)
Returns a reference to the i-th integration point.
BilinearFormIntegrator * newBFormIntegrator() const override
void AssembleElementMatrix(const FiniteElement &trial, const IntegrationRule &trial_ir, ElementTransformation &trial_Trans, const FiniteElement &test, const IntegrationRule &test_ir, ElementTransformation &test_Trans, DenseMatrix &elemmat) override
Implements the assembly routine.
void AssembleElementMatrix(const FiniteElement &trial, const IntegrationRule &trial_ir, ElementTransformation &trial_Trans, const FiniteElement &test, const IntegrationRule &test_ir, ElementTransformation &test_Trans, DenseMatrix &elemmat) override
Implements the assembly routine.
BilinearFormIntegrator * newBFormIntegrator() const override
virtual void Eval(DenseMatrix &K, ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the matrix coefficient in the element described by T at the point ip, storing the result in ...
virtual void Eval(Vector &V, ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the vector coefficient in the element described by T at the point ip, storing the result in ...
BilinearFormIntegrator * newBFormIntegrator() const override
void AssembleElementMatrix(const FiniteElement &trial, const IntegrationRule &trial_ir, ElementTransformation &trial_Trans, const FiniteElement &test, const IntegrationRule &test_ir, ElementTransformation &test_Trans, DenseMatrix &elemmat) override
Implements the assembly routine.
void SetSize(int s)
Resize the vector to size s.
void mfem_error(const char *msg)
void MultVWt(const Vector &v, const Vector &w, DenseMatrix &VWt)
void AddMultVWt(const Vector &v, const Vector &w, DenseMatrix &VWt)
VWt += v w^t.
MFEM_HOST_DEVICE real_t norm(const Complex &z)