25 #ifndef __GENERIC_TENSOR_H    26 #define __GENERIC_TENSOR_H    34 #include <dolfin/common/ArrayView.h>    35 #include <dolfin/common/MPI.h>    36 #include <dolfin/common/types.h>    37 #include <dolfin/log/log.h>    38 #include "LinearAlgebraObject.h"    44   class GenericLinearAlgebraFactory;
    61     virtual bool empty() 
const = 0;
    64     virtual std::size_t 
rank() 
const = 0;
    67     virtual std::size_t 
size(std::size_t dim) 
const = 0;
    70     virtual std::pair<std::int64_t, std::int64_t>
    82     virtual void set_local(
const double* block,
    88       void add(
const double* block,
   102     virtual void add_local(
const double* block,
   107     virtual void zero() = 0;
   110     virtual void apply(std::string mode) = 0;
   116     virtual std::string 
str(
bool verbose) 
const = 0;
 virtual std::size_t size(std::size_t dim) const =0
Return size of given dimension. 
 
virtual std::size_t rank() const =0
Return tensor rank (number of dimensions) 
 
virtual void apply(std::string mode)=0
Finalize assembly of tensor. 
 
virtual void set_local(const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)=0
Set block of values using local indices. 
 
virtual GenericLinearAlgebraFactory & factory() const =0
Return linear algebra backend factory. 
 
Definition: LinearAlgebraObject.h:36
 
Definition: TensorLayout.h:41
 
Base class for LinearAlgebra factories. 
Definition: GenericLinearAlgebraFactory.h:46
 
virtual std::string str(bool verbose) const =0
Return MPI communicator. 
 
virtual void zero()=0
Set all entries to zero and keep any sparse structure. 
 
A common interface for arbitrary rank tensors. 
Definition: GenericTensor.h:48
 
Definition: ArrayView.h:31
 
virtual bool empty() const =0
Return true if empty. 
 
PetscInt la_index
Index type for compatibility with linear algebra backend(s) 
Definition: types.h:32
 
virtual void add(const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)=0
Add block of values using global indices. 
 
virtual std::pair< std::int64_t, std::int64_t > local_range(std::size_t dim) const =0
Return local ownership range. 
 
virtual ~GenericTensor()
Destructor. 
Definition: GenericTensor.h:53
 
virtual void add_local(const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)=0
Add block of values using local indices. 
 
virtual void init(const TensorLayout &tensor_layout)=0
Initialize zero tensor using tensor layout.