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++)
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);
int GetNPoints() const
Returns the number of the points in the integration rule.
Abstract class for all finite elements.
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.
ParMesh * GetParMesh() const
void SetSize(int s)
Resize the vector to size s.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
Data type dense matrix using column-major storage.
Abstract parallel finite element space.
Array< int > ipiv_offsets
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, double e=1.0)
int GetNE() const
Returns number of elements in the mesh.
IntegrationPoint & IntPoint(int i)
Returns a reference to the i-th integration point.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
const FiniteElement * GetFaceNbrFE(int i) const
void ExchangeFaceNbrData()
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...
bool IsDGSpace() const
Return whether or not the space is discontinuous (L2)
Array< int > Minv_offsets
void Solve(int m, int n, double *X) const
int GetNFaceNeighborElements() const
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.
double * Data() const
Returns the matrix data array.
double p(const Vector &x, double t)
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
int GetDof() const
Returns the number of degrees of freedom in the finite element.
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.
void GetFaceNbrElementTransformation(int i, IsoparametricTransformation *ElTr)
Class for integration point with weight.
FDualNumber< tbase > sqrt(const FDualNumber< tbase > &f)
sqrt([dual number])
bool Factor(int m, double TOL=0.0)
Compute the LU factorization of the current matrix.
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...
virtual double Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the coefficient in the element described by T at the point ip.
void MultAtB(const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &AtB)
Multiply the transpose of a matrix A with a matrix B: At*B.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
Class for parallel meshes.
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)