40 "The BR2 integrator is only defined for DG spaces.");
44 int nel = fes.
GetNE();
49 for (
int i=0; i<nel; ++i)
67 for (
int i=0; i<nel_nbr; ++i)
82 for (
int i=0; i<nel; ++i)
94 int inbr = i - fes.
GetNE();
125 if (
Trans.Elem2No >= 0)
147 int ndofs = ndof1 + ndof2;
173 Trans.SetAllIntPoints(&ip);
183 if (
Q) { q = 0.5*(q +
Q->
Eval(*
Trans.Elem2, eip2)); }
187 double w = sqrt((factor + 1)*
eta*q)*ip.
weight*
Trans.Face->Weight();
190 if (ndof2) { w *= 0.5; }
192 for (
int i = 0; i < ndof1; i++)
194 const double wsi = w*
shape1(i);
195 for (
int j = 0; j < ndof1; j++)
203 for (
int i = 0; i < ndof2; i++)
205 const double wsi = w*
shape2(i);
206 for (
int j = 0; j < ndof1; j++)
211 for (
int j = 0; j < ndof2; j++)
221 for (
int i = 0; i < ndof1; i++)
223 for (
int j = 0; j < ndof1; j++)
225 Re(i, j) =
R11(i, j);
239 for (
int i = 0; i < ndof2; i++)
241 for (
int j = 0; j < ndof1; j++)
243 Re(ndof1 + i, j) =
R21(i, j);
246 Re(j, ndof1 + i) =
R12(j, i);
249 for (
int j = 0; j < ndof2; j++)
251 Re(ndof1 + i, ndof1 + j) =
R22(i, j);
Abstract class for all finite elements.
int GetNPoints() const
Returns the number of the points in the integration rule.
Class for an integration rule - an Array of IntegrationPoint.
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
const FiniteElement * GetFaceNbrFE(int i) const
void SetSize(int s)
Resize the vector to size s.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void Solve(int m, int n, double *X) const
Data type dense matrix using column-major storage.
double * Data() const
Returns the matrix data array.
Abstract parallel finite element space.
Array< int > ipiv_offsets
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, double e=1.0)
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)
IntegrationPoint & IntPoint(int i)
Returns a reference to the i-th integration point.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
void ExchangeFaceNbrData()
ParMesh * GetParMesh() const
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...
Array< int > Minv_offsets
int GetNE() const
Returns number of elements in the mesh.
int GetNFaceNeighborElements() const
double p(const Vector &x, double t)
ComplexDenseMatrix * MultAtB(const ComplexDenseMatrix &A, const ComplexDenseMatrix &B)
Multiply the complex conjugate transpose of a matrix A with a matrix B. A^H*B.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
void PrecomputeMassInverse(class FiniteElementSpace &fes)
Precomputes the inverses (LU factorizations) of the local mass matrices.
void SetSize(int nsize)
Change the logical size of the array, keep existing entries.
int NumBdr(int GeomType)
Return the number of boundary "faces" of a given Geometry::Type.
int GetDof() const
Returns the number of degrees of freedom in the finite element.
void GetFaceNbrElementTransformation(int i, IsoparametricTransformation *ElTr)
Class for integration point with weight.
virtual bool Factor(int m, double TOL=0.0)
Compute the LU factorization of the current matrix.
virtual double Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the coefficient in the element described by T at the point ip.
bool IsDGSpace() const
Return whether or not the space is discontinuous (L2)
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
Class for parallel meshes.
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.