25 #include <queso/Defines.h>
27 #ifdef QUESO_HAVE_LIBMESH_SLEPC
29 #ifndef QUESO_LIBMESHOPERATOR_BASE_H
30 #define QUESO_LIBMESHOPERATOR_BASE_H
35 #include <queso/SharedPtr.h>
36 #include <queso/FunctionBase.h>
37 #include <queso/OperatorBase.h>
38 #include <libmesh/system.h>
42 class EquationSystems;
47 class FunctionOperatorBuilder;
58 public libMesh::System::Assembly {
69 libMesh::MeshBase & m);
132 #endif // QUESO_LIBMESHOPERATOR_BASE_H
134 #endif // QUESO_HAVE_LIBMESH_SLEPC
std::shared_ptr< T > Type
virtual void save_converged_evec(const std::string &filename, unsigned int i) const
Save converged eigenfunction i to filename.
virtual void save_converged_evals(const std::string &filename) const
Save the eigenvalues to file filename.
Abstract base class for operator objects. Operators are assumed to be symmetric and positive-definite...
Abstract base class for operator objects using libmesh in the backend.
const FunctionOperatorBuilder & builder
~LibMeshOperatorBase()
Destructor.
virtual void print_info() const =0
Print libmesh related information.
virtual void assemble()=0
Must implement this for the solve to work.
unsigned int num_req_pairs
The number of requested eigenpairs.
LibMeshOperatorBase(const FunctionOperatorBuilder &builder, libMesh::MeshBase &m)
Constuct an operator on the mesh m using a builder builder.
SharedPtr< libMesh::EquationSystems >::Type equation_systems
virtual double get_inverted_eigenvalue(unsigned int i) const
Return the reciprocal of eigenvalue i.
virtual unsigned int get_num_converged() const
Return the number of converged eigenpairs.
virtual double get_eigenvalue(unsigned int i) const
Return eigenvalue i.
unsigned int nconv
The number of converged eigenpairs.
virtual SharedPtr< FunctionBase >::Type inverse_kl_transform(std::vector< double > &xi, double alpha) const
Given coefficients xi, computes the Karhunen-Loeve transform.
virtual libMesh::EquationSystems & get_equation_systems() const
Return the internal libmesh equation systems object.