20 #ifndef LIBMESH_SHELL_MATRIX_H    21 #define LIBMESH_SHELL_MATRIX_H    25 #include "libmesh/libmesh_common.h"    26 #include "libmesh/reference_counted_object.h"    27 #include "libmesh/libmesh.h"    28 #include "libmesh/id_types.h"    29 #include "libmesh/parallel_object.h"    30 #include "libmesh/dof_map.h"    31 #include "libmesh/parallel.h"    37 template <
typename T> 
class NumericVector;
    49 class ShellMatrix : 
public ReferenceCountedObject<ShellMatrix<T>>,
    56   ShellMatrix (
const Parallel::Communicator & comm_in);
    62   static std::unique_ptr<ShellMatrix<T>>
    63   build(
const Parallel::Communicator & 
comm,
    88                             const NumericVector<T> & arg) 
const = 0;
    94                                 const NumericVector<T> & arg) 
const = 0;
    99   virtual void get_diagonal (NumericVector<T> & dest) 
const = 0;
   108   virtual void clear () { libmesh_error_msg (
"Not implemented yet"); }
   110   virtual void init () { libmesh_error_msg (
"Not implemented yet"); }
   130 template <
typename T>
   135   _omit_constrained_dofs(false)
   139 template <
typename T>
   148 #endif // LIBMESH_SHELL_MATRIX_H virtual ~ShellMatrix()
Destructor. 
void attach_dof_map(const DofMap &dof_map)
Get a pointer to the DofMap to use. 
static std::unique_ptr< ShellMatrix< T > > build(const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
Builds a ShellMatrix<T> using the linear solver package specified by solver_package. 
const Parallel::Communicator & comm() const
The libMesh namespace provides an interface to certain functionality in the library. 
bool _omit_constrained_dofs
Whether to omit constrained dofs from this data structure. 
void omit_constrained_dofs()
virtual numeric_index_type m() const =0
virtual void vector_mult_add(NumericVector< T > &dest, const NumericVector< T > &arg) const =0
Multiplies the matrix with arg and adds the result to dest. 
SolverPackage default_solver_package()
This class handles the numbering of degrees of freedom on a mesh. 
dof_id_type numeric_index_type
ShellMatrix(const Parallel::Communicator &comm_in)
Constructor; does nothing. 
DofMap const  * _dof_map
The DofMap object associated with this object. 
An object whose state is distributed along a set of processors. 
virtual numeric_index_type n() const =0
virtual void get_diagonal(NumericVector< T > &dest) const =0
Copies the diagonal part of the matrix into dest. 
SolverPackage
Defines an enum for various linear solver packages. 
Generic shell matrix, i.e. 
virtual void vector_mult(NumericVector< T > &dest, const NumericVector< T > &arg) const =0
Multiplies the matrix with arg and stores the result in dest. 
void ErrorVector unsigned int