Flow123d
master-1fea4ce
|
#include <vector_mpi.hh>
Public Types | |
typedef std::vector< double > | VectorData |
typedef std::shared_ptr< VectorData > | VectorDataPtr |
Public Member Functions | |
VectorMPI (MPI_Comm comm=PETSC_COMM_SELF) | |
VectorMPI (unsigned int local_size, MPI_Comm comm=PETSC_COMM_WORLD) | |
Create shared pointer and PETSC vector with given size. COLLECTIVE. More... | |
VectorMPI (unsigned int local_size, std::vector< LongIdx > &ghost_idx) | |
Create PETSc vector with ghost values whose indices are specified in ghost_idx . More... | |
void | resize (unsigned int local_size) |
void | resize (unsigned int local_size, std::vector< LongIdx > &ghost_idx) |
Vec & | petsc_vec () |
Getter for PETSC vector of output data (e.g. can be used by scatters). More... | |
void | zero_entries () |
unsigned int | size () const |
Return size of output data. More... | |
double | get (unsigned int pos) const |
Return value on given position. More... | |
void | set (unsigned int pos, double val) |
Set value on given position. More... | |
void | normalize (unsigned int pos, double divisor) |
Normalize value on given position. More... | |
void | add (unsigned int pos, double val) |
Add value to item on given position. More... | |
void | add_global (unsigned int pos, double val) |
Add value to item on given global position. More... | |
void | duplicate_from (VectorMPI other) |
For the current vector, it creates the same parallel structure as the other vector has. More... | |
void | swap (VectorMPI &other) |
Swaps the current vector data with the other vector data. More... | |
void | copy_from (const VectorMPI &other) |
void | local_to_ghost_begin () |
local_to_ghost_{begin,end} updates the ghost values on neighbouring processors from local values More... | |
void | local_to_ghost_end () |
local_to_ghost_{begin,end} updates the ghost values on neighbouring processors from local values More... | |
void | ghost_to_local_begin () |
ghost_to_local_{begin,end} updates the local values by adding ghost values from neighbouring processors More... | |
void | ghost_to_local_end () |
ghost_to_local_{begin,end} updates the local values by adding ghost values from neighbouring processors More... | |
~VectorMPI () | |
Destructor. More... | |
arma::vec | get_subvec (const LocDofVec &loc_indices) |
arma::vec | get_subvec (const LocDofVec &loc_indices) const |
void | set_subvec (const LocDofVec &loc_indices, const arma::vec &values) |
Static Public Member Functions | |
static VectorMPI | sequential (unsigned int size) |
Private Attributes | |
VectorDataPtr | data_ptr_ |
shared pointer to vector of data More... | |
Vec | data_petsc_ |
stored vector of data in PETSC format More... | |
MPI_Comm | communicator_ |
communicator More... | |
Auxiliary class for output elementwise concentration vectors in convection transport, sorptions, dual porosity etc.
Stores data in two formats:
Allows the following functionalities:
Definition at line 43 of file vector_mpi.hh.
typedef std::vector<double> VectorMPI::VectorData |
Definition at line 45 of file vector_mpi.hh.
typedef std::shared_ptr< VectorData > VectorMPI::VectorDataPtr |
Definition at line 46 of file vector_mpi.hh.
VectorMPI::VectorMPI | ( | MPI_Comm | comm = PETSC_COMM_SELF | ) |
VectorMPI::VectorMPI | ( | unsigned int | local_size, |
MPI_Comm | comm = PETSC_COMM_WORLD |
||
) |
Create shared pointer and PETSC vector with given size. COLLECTIVE.
Definition at line 34 of file vector_mpi.cc.
VectorMPI::VectorMPI | ( | unsigned int | local_size, |
std::vector< LongIdx > & | ghost_idx | ||
) |
Create PETSc vector with ghost values whose indices are specified in ghost_idx
.
Definition at line 39 of file vector_mpi.cc.
VectorMPI::~VectorMPI | ( | ) |
Destructor.
Definition at line 151 of file vector_mpi.cc.
|
inline |
Add value to item on given position.
Definition at line 125 of file vector_mpi.hh.
|
inline |
Add value to item on given global position.
Definition at line 132 of file vector_mpi.hh.
void VectorMPI::copy_from | ( | const VectorMPI & | other | ) |
Copies data from the other
vector. Both vector must have the same communicator and distribution.
Definition at line 103 of file vector_mpi.cc.
void VectorMPI::duplicate_from | ( | VectorMPI | other | ) |
For the current vector, it creates the same parallel structure as the other
vector has.
FIXME: it does not take care of ghost values, so it cannot be used in that situation.
Definition at line 80 of file vector_mpi.cc.
|
inline |
Return value on given position.
Definition at line 105 of file vector_mpi.hh.
arma::vec VectorMPI::get_subvec | ( | const LocDofVec & | loc_indices | ) |
Access to the vector element on local index idx
. Access to the vector element on local index idx
(const version). Access to the vector elements on local indices idx
.
Definition at line 110 of file vector_mpi.cc.
arma::vec VectorMPI::get_subvec | ( | const LocDofVec & | loc_indices | ) | const |
Access to the vector elements on local indices idx
(const version).
Definition at line 124 of file vector_mpi.cc.
|
inline |
ghost_to_local_{begin,end} updates the local values by adding ghost values from neighbouring processors
Definition at line 164 of file vector_mpi.hh.
|
inline |
ghost_to_local_{begin,end} updates the local values by adding ghost values from neighbouring processors
Definition at line 168 of file vector_mpi.hh.
|
inline |
local_to_ghost_{begin,end} updates the ghost values on neighbouring processors from local values
Definition at line 156 of file vector_mpi.hh.
|
inline |
local_to_ghost_{begin,end} updates the ghost values on neighbouring processors from local values
Definition at line 160 of file vector_mpi.hh.
|
inline |
Normalize value on given position.
Definition at line 118 of file vector_mpi.hh.
|
inline |
Getter for PETSC vector of output data (e.g. can be used by scatters).
Getter for shared pointer of output data. VectorDataPtr data_ptr()
Definition at line 79 of file vector_mpi.hh.
void VectorMPI::resize | ( | unsigned int | local_size | ) |
Resize the vector to given local size. Operation is allowed only if this object is a unique vector object pointing to the actual data.
Definition at line 50 of file vector_mpi.cc.
void VectorMPI::resize | ( | unsigned int | local_size, |
std::vector< LongIdx > & | ghost_idx | ||
) |
Resize the vector to given local size with ghost values. Indices of ghost values are in ghost_idx.
Definition at line 66 of file vector_mpi.cc.
|
static |
Helper method creating VectorMPI of given size with serial Petsc communicator.
Method is used for better readability of code.
Definition at line 44 of file vector_mpi.cc.
|
inline |
Set value on given position.
Definition at line 111 of file vector_mpi.hh.
void VectorMPI::set_subvec | ( | const LocDofVec & | loc_indices, |
const arma::vec & | values | ||
) |
Set some vector elements on local indices idx
.
Definition at line 138 of file vector_mpi.cc.
|
inline |
Return size of output data.
Definition at line 98 of file vector_mpi.hh.
void VectorMPI::swap | ( | VectorMPI & | other | ) |
Swaps the current vector data with the other vector data.
FIXME: it does not take care of ghost values, so it cannot be used
Definition at line 86 of file vector_mpi.cc.
|
inline |
|
private |
communicator
Definition at line 215 of file vector_mpi.hh.
|
private |
stored vector of data in PETSC format
Definition at line 213 of file vector_mpi.hh.
|
private |
shared pointer to vector of data
Definition at line 211 of file vector_mpi.hh.