DOLFIN
DOLFIN C++ interface
Public Member Functions | List of all members
dolfin::PETScVector Class Reference

#include <PETScVector.h>

Inheritance diagram for dolfin::PETScVector:
Inheritance graph
[legend]
Collaboration diagram for dolfin::PETScVector:
Collaboration graph
[legend]

Public Member Functions

 PETScVector ()
 Create empty vector (on MPI_COMM_WORLD)
 
 PETScVector (MPI_Comm comm)
 Create empty vector on an MPI communicator.
 
 PETScVector (MPI_Comm comm, std::size_t N)
 Create vector of size N.
 
 PETScVector (const SparsityPattern &sparsity_pattern)
 Create vector.
 
 PETScVector (const PETScVector &x)
 Copy constructor.
 
 PETScVector (Vec x)
 
virtual ~PETScVector ()
 Destructor.
 
virtual void zero ()
 Set all entries to zero and keep any sparse structure.
 
virtual void apply (std::string mode)
 Finalize assembly of tensor.
 
virtual MPI_Comm mpi_comm () const
 Return MPI communicator.
 
virtual std::string str (bool verbose) const
 Return informal string representation (pretty-print)
 
virtual std::shared_ptr< GenericVectorcopy () const
 Return copy of vector.
 
virtual void init (std::size_t N)
 Initialize vector to global size N.
 
virtual void init (std::pair< std::size_t, std::size_t > range)
 Initialize vector with given ownership range.
 
virtual void init (std::pair< std::size_t, std::size_t > range, const std::vector< std::size_t > &local_to_global_map, const std::vector< la_index > &ghost_indices)
 
virtual bool empty () const
 Return true if vector is empty.
 
virtual std::size_t size () const
 Return size of vector.
 
virtual std::size_t local_size () const
 Return local size of vector.
 
virtual std::pair< std::int64_t, std::int64_t > local_range () const
 Return ownership range of a vector.
 
virtual bool owns_index (std::size_t i) const
 Determine whether global vector index is owned by this process.
 
virtual void get (double *block, std::size_t m, const dolfin::la_index *rows) const
 
virtual void get_local (double *block, std::size_t m, const dolfin::la_index *rows) const
 Get block of values using local indices.
 
virtual void set (const double *block, std::size_t m, const dolfin::la_index *rows)
 Set block of values using global indices.
 
virtual void set_local (const double *block, std::size_t m, const dolfin::la_index *rows)
 Set block of values using local indices.
 
virtual void add (const double *block, std::size_t m, const dolfin::la_index *rows)
 Add block of values using global indices.
 
virtual void add_local (const double *block, std::size_t m, const dolfin::la_index *rows)
 Add block of values using local indices.
 
virtual void get_local (std::vector< double > &values) const
 Get all values on local process.
 
virtual void set_local (const std::vector< double > &values)
 Set all values on local process.
 
virtual void add_local (const Array< double > &values)
 Add values to each entry on local process.
 
virtual void gather (GenericVector &y, const std::vector< dolfin::la_index > &indices) const
 
virtual void gather (std::vector< double > &x, const std::vector< dolfin::la_index > &indices) const
 
virtual void gather_on_zero (std::vector< double > &x) const
 
virtual void axpy (double a, const GenericVector &x)
 Add multiple of given vector (AXPY operation)
 
virtual void abs ()
 Replace all entries in the vector by their absolute values.
 
virtual double inner (const GenericVector &v) const
 Return inner product with given vector.
 
virtual double norm (std::string norm_type) const
 Return norm of vector.
 
virtual double min () const
 Return minimum value of vector.
 
virtual double max () const
 Return maximum value of vector.
 
virtual double sum () const
 Return sum of values of vector.
 
virtual double sum (const Array< std::size_t > &rows) const
 Return sum of selected rows in vector.
 
virtual const PETScVectoroperator*= (double a)
 Multiply vector by given number.
 
virtual const PETScVectoroperator*= (const GenericVector &x)
 Multiply vector by another vector pointwise.
 
virtual const PETScVectoroperator/= (double a)
 Divide vector by given number.
 
virtual const PETScVectoroperator+= (const GenericVector &x)
 Add given vector.
 
virtual const PETScVectoroperator+= (double a)
 Add number to all components of a vector.
 
virtual const PETScVectoroperator-= (const GenericVector &x)
 Subtract given vector.
 
virtual const PETScVectoroperator-= (double a)
 Subtract number from all components of a vector.
 
virtual const GenericVectoroperator= (const GenericVector &x)
 Assignment operator.
 
virtual const PETScVectoroperator= (double a)
 Assignment operator.
 
virtual void update_ghost_values ()
 Update values shared from remote processes.
 
virtual GenericLinearAlgebraFactoryfactory () const
 Return linear algebra backend factory.
 
void set_options_prefix (std::string options_prefix)
 
std::string get_options_prefix () const
 
void set_from_options ()
 
Vec vec () const
 Return pointer to PETSc Vec object.
 
const PETScVectoroperator= (const PETScVector &x)
 Assignment operator.
 
void reset (Vec vec)
 
- Public Member Functions inherited from dolfin::GenericVector
virtual ~GenericVector ()
 Destructor.
 
virtual void init (const TensorLayout &tensor_layout)
 
virtual std::size_t rank () const
 Return tensor rank (number of dimensions)
 
virtual std::size_t size (std::size_t dim) const
 Return size of given dimension.
 
virtual std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const
 Return local ownership range.
 
virtual void get (double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const
 Get block of values using global indices.
 
virtual void get_local (double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const
 Get block of values using local indices.
 
virtual void set (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Set block of values using global indices.
 
virtual void set_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Set block of values using local indices.
 
virtual void add (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Add block of values using global indices.
 
virtual void add_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Add block of values using local indices.
 
virtual void add (const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)
 Add block of values using global indices.
 
virtual void add_local (const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)
 Add block of values using local indices.
 
std::shared_ptr< GenericVectoroperator+ (const GenericVector &x)
 Sum two vectors (returns a new vector)
 
std::shared_ptr< GenericVectoroperator+ (double a)
 Add scalar to a vector (returns a new vector)
 
std::shared_ptr< GenericVectoroperator* (double a)
 Multiply vector by a scalar (returns a new vector)
 
virtual double operator[] (dolfin::la_index i) const
 Get value of given entry.
 
virtual double getitem (dolfin::la_index i) const
 Get value of given entry.
 
virtual void setitem (dolfin::la_index i, double value)
 
- Public Member Functions inherited from dolfin::GenericTensor
virtual ~GenericTensor ()
 Destructor.
 
- Public Member Functions inherited from dolfin::LinearAlgebraObject
virtual const LinearAlgebraObjectinstance () const
 Return concrete instance / unwrap (const version)
 
virtual LinearAlgebraObjectinstance ()
 Return concrete instance / unwrap (non-const version)
 
virtual std::shared_ptr< const LinearAlgebraObjectshared_instance () const
 Return concrete shared ptr instance / unwrap (const version)
 
virtual std::shared_ptr< LinearAlgebraObjectshared_instance ()
 Return concrete shared ptr instance / unwrap (non-const version)
 
- Public Member Functions inherited from dolfin::Variable
 Variable ()
 Create unnamed variable.
 
 Variable (const std::string name, const std::string label)
 Create variable with given name and label.
 
 Variable (const Variable &variable)
 Copy constructor.
 
virtual ~Variable ()
 Destructor.
 
const Variableoperator= (const Variable &variable)
 Assignment operator.
 
void rename (const std::string name, const std::string label)
 Rename variable.
 
std::string name () const
 Return name.
 
std::string label () const
 Return label (description)
 
std::size_t id () const
 
- Public Member Functions inherited from dolfin::PETScObject
 PETScObject ()
 Constructor. Ensures that PETSc has been initialised.
 
virtual ~PETScObject ()
 Destructor.
 

Additional Inherited Members

- Static Public Member Functions inherited from dolfin::PETScObject
static void petsc_error (int error_code, std::string filename, std::string petsc_function)
 Print error message for PETSc calls that return an error.
 
- Public Attributes inherited from dolfin::Variable
Parameters parameters
 Parameters.
 

Detailed Description

A simple vector class based on PETSc.

It is a simple wrapper for a PETSc vector pointer (Vec) implementing the GenericVector interface.

The interface is intentionally simple. For advanced usage, access the PETSc Vec pointer using the function vec() and use the standard PETSc interface.

Constructor & Destructor Documentation

◆ PETScVector()

PETScVector::PETScVector ( Vec  x)
explicit

Create vector wrapper of PETSc Vec pointer. The reference counter of the Vec will be increased, and decreased upon destruction of this object.

Member Function Documentation

◆ gather() [1/2]

void PETScVector::gather ( GenericVector y,
const std::vector< dolfin::la_index > &  indices 
) const
virtual

Gather entries (given by global indices) into local (MPI_COMM_SELF) vector x. Provided x must be empty or of correct dimension (same as provided indices). This operation is collective

Implements dolfin::GenericVector.

◆ gather() [2/2]

void PETScVector::gather ( std::vector< double > &  x,
const std::vector< dolfin::la_index > &  indices 
) const
virtual

Gather entries (given by global indices) into x. This operation is collective

Implements dolfin::GenericVector.

◆ gather_on_zero()

void PETScVector::gather_on_zero ( std::vector< double > &  x) const
virtual

Gather all entries into x on process 0. This operation is collective

Implements dolfin::GenericVector.

◆ get()

void PETScVector::get ( double *  block,
std::size_t  m,
const dolfin::la_index rows 
) const
virtual

Get block of values using global indices (all values must be owned by local process, ghosts cannot be accessed)

Implements dolfin::GenericVector.

◆ get_options_prefix()

std::string PETScVector::get_options_prefix ( ) const

Returns the prefix used by PETSc when searching the options database

◆ init()

void PETScVector::init ( std::pair< std::size_t, std::size_t >  range,
const std::vector< std::size_t > &  local_to_global_map,
const std::vector< la_index > &  ghost_indices 
)
virtual

Initialize vector with given ownership range and with ghost values

Implements dolfin::GenericVector.

◆ reset()

void PETScVector::reset ( Vec  vec)

Switch underlying PETSc object. Intended for internal library usage.

◆ set_from_options()

void PETScVector::set_from_options ( )

Call PETSc function VecSetFromOptions on the underlying Vec object

◆ set_options_prefix()

void PETScVector::set_options_prefix ( std::string  options_prefix)

Sets the prefix used by PETSc when searching the options database


The documentation for this class was generated from the following files: