12 #include "../config/config.hpp"
44 double loc_energy, glob_energy;
48 MPI_Allreduce(&loc_energy, &glob_energy, 1, MPI_DOUBLE, MPI_SUM,
80 for (
int i = 0; i < n_shared_faces; i++)
94 for (
int k = 0; k <
fnfi.Size(); k++)
96 fnfi[k]->AssembleFaceVector(*fe1, *fe2, *tr, el_x, el_y);
126 if (
fnfi.Size() == 0)
133 MFEM_ABORT(
"TODO: assemble contributions from shared face terms");
Abstract class for Finite Elements.
virtual const Operator * GetProlongationMatrix()
int Size() const
Logical size of the array.
void ExchangeFaceNbrData()
HYPRE_Int * GetDofOffsets() const
void SetSize(int s)
Resize the vector to size s.
void GetElementVDofs(int i, Array< int > &vdofs) const
Returns indexes of degrees of freedom in array dofs for i'th element.
int GetNSharedFaces() const
Return the number of shared faces (3D), edges (2D), vertices (1D)
Pointer to an Operator of a specified type.
Operator::Type Type() const
Get the currently set operator type id.
void GetSubVector(const Array< int > &dofs, Vector &elemvect) const
virtual void Mult(const Vector &x, Vector &y) const =0
Operator application: y=A(x).
Abstract parallel finite element space.
int GetLocalTDofNumber(int ldof) const
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...
void GetFaceNbrElementVDofs(int i, Array< int > &vdofs) const
const FiniteElement * GetFaceNbrFE(int i) const
FaceElementTransformations * GetSharedFaceTransformations(int sf, bool fill2=true)
HypreParMatrix * Dof_TrueDof_Matrix() const
The true dof-to-dof interpolation matrix.
void AddElementVector(const Array< int > &dofs, const Vector &elemvect)
Add (element) subvector to the vector.
Operator * Ptr() const
Access the underlying Operator pointer.
HYPRE_Int GlobalVSize() const
void Clear()
Clear the OperatorHandle, deleting the held Operator (if owned), while leaving the type id unchanged...
void Distribute(const Vector *tv)
void MakeSquareBlockDiag(MPI_Comm comm, HYPRE_Int glob_size, HYPRE_Int *row_starts, SparseMatrix *diag)
Reset the OperatorHandle to hold a parallel square block-diagonal matrix using the currently set type...
const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement associated with i'th element.
Class for parallel grid function.
Class for parallel meshes.
void MakePtAP(OperatorHandle &A, OperatorHandle &P)
Reset the OperatorHandle to hold the product P^t A P.