12 #ifndef MFEM_SBM_SOLVER_HPP
13 #define MFEM_SBM_SOLVER_HPP
26 std::function<double(const Vector &)>
Function;
42 return (
this)->Eval(T, ip, D);
54 std::function<void(const Vector &, Vector &)>
Function;
67 return (
this)->Eval(V, T, ip, D);
114 bool include_cut_cell_ =
false,
174 bool include_cut_cell_ =
false,
176 int ls_cut_marker_ = ShiftedFaceMarker::SBElementType::CUT)
234 bool include_cut_cell_ =
false,
236 :
vN(&vN_),
vD(&vD_),
294 bool include_cut_cell_ =
false,
295 int ls_cut_marker_ = ShiftedFaceMarker::SBElementType::CUT)
296 :
vN(&vN_),
uN(&u),
vD(&vD_),
Abstract class for all finite elements.
virtual ~SBM2NeumannIntegrator()
Base class for vector Coefficients that optionally depend on time and space.
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 ...
SBM2NeumannIntegrator(const ParMesh *pmesh, VectorCoefficient &vD_, ShiftedVectorFunctionCoefficient &vN_, Array< int > &elem_marker_, Array< int > &cut_marker_, bool include_cut_cell_=false, int nterms_=1)
virtual ~SBM2DirichletIntegrator()
SBM2NeumannLFIntegrator(const ParMesh *pmesh, ShiftedFunctionCoefficient &u, VectorCoefficient &vD_, ShiftedVectorFunctionCoefficient &vN_, Array< int > &elem_marker_, int nterms_=0, bool include_cut_cell_=false, int ls_cut_marker_=ShiftedFaceMarker::SBElementType::CUT)
ShiftedVectorFunctionCoefficient * vN
Data type dense matrix using column-major storage.
SBM2DirichletLFIntegrator(const ParMesh *pmesh, ShiftedFunctionCoefficient &u, const double alpha_, VectorCoefficient &vD_, Array< int > &elem_marker_, bool include_cut_cell_=false, int nterms_=0, int ls_cut_marker_=ShiftedFaceMarker::SBElementType::CUT)
Array< int > * elem_marker
Array< int > * elem_marker
SBM2DirichletIntegrator(const ParMesh *pmesh, const double a, VectorCoefficient &vD_, Array< int > &elem_marker_, Array< int > &cut_marker_, bool include_cut_cell_=false, int nterms_=0)
std::function< void(const Vector &, Vector &)> Function
int par_shared_face_count
ShiftedFunctionCoefficient(double constant_)
Array< int > * elem_marker
ShiftedFunctionCoefficient * uN
Array< int > * elem_marker
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
ShiftedVectorFunctionCoefficient * vN
virtual void Eval(Vector &V, ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the vector coefficient in the element described by T at the point ip, storing the result in ...
int par_shared_face_count
ShiftedVectorFunctionCoefficient(int dim, std::function< void(const Vector &, Vector &)> F)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
ShiftedFunctionCoefficient(std::function< double(const Vector &v)> F)
virtual double Eval(ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the coefficient in the element described by T at the point ip.
std::function< double(const Vector &)> Function
Class for integration point with weight.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
int par_shared_face_count
double u(const Vector &xvec)
int par_shared_face_count
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect)
Class for parallel meshes.
ShiftedFunctionCoefficient * uD