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