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();
147 int ndofs = ndof1 + ndof2;
183 if (
Q) { q = 0.5*(q +
Q->
Eval(*Trans.
Elem2, eip2)); }
190 if (ndof2) { w *= 0.5; }
192 for (
int i = 0; i < ndof1; i++)
195 for (
int j = 0; j < ndof1; j++)
203 for (
int i = 0; i < ndof2; 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);
void SetSize(int nsize)
Change the logical size of the array, keep existing entries.
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the coefficient in the element described by T at the point ip.
void PrecomputeMassInverse(class FiniteElementSpace &fes)
Precomputes the inverses (LU factorizations) of the local mass matrices.
void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat) override
Array< int > Minv_offsets
Array< int > ipiv_offsets
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, real_t e=1.0)
Data type dense matrix using column-major storage.
real_t * Data() const
Returns the matrix data array.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...
int GetNE() const
Returns number of elements in the mesh.
bool IsDGSpace() const
Return whether or not the space is discontinuous (L2)
Abstract class for all finite elements.
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
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.
int NumBdr(int GeomType) const
Return the number of boundary "faces" of a given Geometry::Type.
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.
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
const IntegrationRule * IntRule
bool Factor(int m, real_t TOL=0.0) override
Compute the LU factorization of the current matrix.
void Solve(int m, int n, real_t *X) const override
void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat) override
Abstract parallel finite element space.
void ExchangeFaceNbrData()
const FiniteElement * GetFaceNbrFE(int i, int ndofs=0) const
ParMesh * GetParMesh() const
Class for parallel meshes.
ElementTransformation * GetFaceNbrElementTransformation(int FaceNo)
Returns a pointer to the transformation defining the i-th face neighbor.
int GetNFaceNeighborElements() const
void SetSize(int s)
Resize the vector to size s.
ComplexDenseMatrix * MultAtB(const ComplexDenseMatrix &A, const ComplexDenseMatrix &B)
Multiply the complex conjugate transpose of a matrix A with a matrix B. A^H*B.
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)
real_t p(const Vector &x, real_t t)