25 #include <queso/Defines.h>
27 #ifdef QUESO_HAVE_LIBMESH
29 #ifndef QUESO_LIBMESHOPERATOR_BASE_H
30 #define QUESO_LIBMESHOPERATOR_BASE_H
35 #include <boost/shared_ptr.hpp>
36 #include <queso/FunctionBase.h>
37 #include <queso/OperatorBase.h>
38 #include <libmesh/system.h>
42 class EquationSystems;
47 class FunctionOperatorBuilder;
57 class LibMeshOperatorBase :
public OperatorBase,
58 public libMesh::System::Assembly {
68 LibMeshOperatorBase(
const FunctionOperatorBuilder & builder,
69 libMesh::MeshBase & m);
72 ~LibMeshOperatorBase();
79 virtual void assemble() = 0;
82 virtual void print_info()
const = 0;
85 virtual void save_converged_evals(
const std::string &filename)
const;
89 save_converged_evec(
const std::string &filename,
unsigned int i)
const;
92 virtual unsigned int get_num_converged()
const;
99 virtual double get_eigenvalue(
unsigned int i)
const;
102 virtual double get_inverted_eigenvalue(
unsigned int i)
const;
105 virtual libMesh::EquationSystems & get_equation_systems()
const;
115 virtual boost::shared_ptr<FunctionBase>
116 inverse_kl_transform(std::vector<double> & xi,
double alpha)
const;
119 boost::shared_ptr<libMesh::EquationSystems> equation_systems;
121 const FunctionOperatorBuilder & builder;
124 unsigned int num_req_pairs;
132 #endif // QUESO_LIBMESHOPERATOR_BASE_H
134 #endif // QUESO_HAVE_LIBMESH