Class ae108::cpppetsc::Vector
template <class Policy>
ClassList > ae108 > cpppetsc > Vector
Classes
Type | Name |
---|---|
class | Inserter <Mode> Provides element() and elements() access functions to set/add single/multiple elements. These calls can be chained (vector is a Vector object) |
Public Types
Type | Name |
---|---|
typedef TaggedEntity< size_type, struct GlobalRowsTag > | GlobalRows |
typedef TaggedEntity< size_type, struct LocalRowsTag > | LocalRows |
typedef Matrix< Policy > | matrix_type |
typedef PetscReal | real_type |
typedef PetscInt | size_type |
typedef PetscScalar | value_type |
Public Functions
Type | Name |
---|---|
Vector (const size_type global_size) Allocates a vector of length global_size. |
|
Vector (const LocalRows localRows, GlobalRows globalRows) Allocates a vector with the provided layout. |
|
Vector (const size_type globalRows, const value_type value) Allocates a vector of length globalRows and initializes the vector to value. |
|
Vector (UniqueEntity< Vec > vec) Wraps the given UniqueEntity in a Vector . |
|
Inserter< ADD_VALUES > | add () Add elements to current elements. See the documentation of the Inserter class for more information on how to use the return value. |
void | addAx (const matrix_type & A, const distributed< Vector > & x) Adds A * x to the vector. |
Vec | data () const Returns the internal vector. |
void | fill (const value_type value) Set all elements of the vector to value. |
std::pair< size_type, size_type > | localRowRange () const Returns the local row indices in the format: |
size_type | localSize () const Returns the local size of the vector. |
auto | localValues () const Returns a loopable range of the local values. |
real_type | norm () const Computes the 2-norm of the vector. |
value_type | operator() (const size_type index) const Access the element at index. |
value_type | operator[] (const size_type index) const Access the element at index. |
void | print () const Print the vector to world stdout. |
Inserter< INSERT_VALUES > | replace () Replace elements with different elements. See the documentation of the Inserter class for more information on how to use the return value. |
void | scale (const value_type factor) Scale the vector by factor. |
void | setZero () Replaces all entries by zero. |
size_type | size () const Returns the global size of the vector. |
void | timesAlphaPlusBetaX (const value_type alpha, const value_type beta, const Vector & x) Sets the vector to alpha * (current value) + beta * x. |
void | timesAlphaPlusBetaXPlusGammaY (const value_type alpha, const value_type beta, const Vector & x, const value_type gamma, const Vector & y) Sets the vector to alpha * (current value) + beta * x + gamma * y. |
Public Static Functions
Type | Name |
---|---|
global< Vector > | fromDistributed (const distributed< Vector > & vector) Creates a new full sequential copy of the vector. |
global< Vector > | fromDistributedInCanonicalOrder (const distributed< Vector > & vector, const Mesh< Policy > & mesh) Creates a new full sequential copy of the vector. |
distributed< Vector > | fromGlobalMesh (const Mesh< Policy > & mesh) Creates a global vector with a structure defined by the given mesh. The vector is zero-initialized. |
Vector | fromLayoutOf (const Vector & vector) Returns a zero initialized vector with the same layout as the parameter. |
Vector | fromList (const std::initializer_list< value_type > list) Constructs a vector with the provided entries. |
local< Vector > | fromLocalMesh (const Mesh< Policy > & mesh) Creates a local vector with a structure defined by the given mesh. The vector is zero-initialized. |
Public Types Documentation
typedef GlobalRows
using ae108::cpppetsc::Vector< Policy >::GlobalRows = TaggedEntity<size_type, struct GlobalRowsTag>;
typedef LocalRows
using ae108::cpppetsc::Vector< Policy >::LocalRows = TaggedEntity<size_type, struct LocalRowsTag>;
typedef matrix_type
using ae108::cpppetsc::Vector< Policy >::matrix_type = Matrix<Policy>;
typedef real_type
using ae108::cpppetsc::Vector< Policy >::real_type = PetscReal;
typedef size_type
using ae108::cpppetsc::Vector< Policy >::size_type = PetscInt;
typedef value_type
using ae108::cpppetsc::Vector< Policy >::value_type = PetscScalar;
Public Functions Documentation
function Vector [1/4]
Allocates a vector of length global_size.
explicit ae108::cpppetsc::Vector::Vector (
const size_type global_size
)
Remark:
Does not initialize the vector.
function Vector [2/4]
Allocates a vector with the provided layout.
explicit ae108::cpppetsc::Vector::Vector (
const LocalRows localRows,
GlobalRows globalRows
)
Remark:
Does not initialize the vector.
function Vector [3/4]
Allocates a vector of length globalRows and initializes the vector to value.
explicit ae108::cpppetsc::Vector::Vector (
const size_type globalRows,
const value_type value
)
function Vector [4/4]
Wraps the given UniqueEntity in a Vector .
explicit ae108::cpppetsc::Vector::Vector (
UniqueEntity< Vec > vec
)
function add
Add elements to current elements. See the documentation of the Inserter class for more information on how to use the return value.
Inserter < ADD_VALUES > ae108::cpppetsc::Vector::add ()
Remark:
Automatically broadcasts changes. Do not use add and replace Inserters at the same time.
function addAx
Adds A * x to the vector.
void ae108::cpppetsc::Vector::addAx (
const matrix_type & A,
const distributed < Vector > & x
)
function data
Returns the internal vector.
Vec ae108::cpppetsc::Vector::data () const
Remark:
For internal use only.
function fill
Set all elements of the vector to value.
void ae108::cpppetsc::Vector::fill (
const value_type value
)
function localRowRange
Returns the local row indices in the format:
std::pair< size_type, size_type > ae108::cpppetsc::Vector::localRowRange () const
(first row index, last row index + 1).
function localSize
Returns the local size of the vector.
size_type ae108::cpppetsc::Vector::localSize () const
function localValues
Returns a loopable range of the local values.
auto ae108::cpppetsc::Vector::localValues () const
function norm
Computes the 2-norm of the vector.
real_type ae108::cpppetsc::Vector::norm () const
function operator()
Access the element at index.
value_type ae108::cpppetsc::Vector::operator() (
const size_type index
) const
function operator[]
Access the element at index.
value_type ae108::cpppetsc::Vector::operator[] (
const size_type index
) const
function print
Print the vector to world stdout.
void ae108::cpppetsc::Vector::print () const
function replace
Replace elements with different elements. See the documentation of the Inserter class for more information on how to use the return value.
Inserter < INSERT_VALUES > ae108::cpppetsc::Vector::replace ()
Remark:
Automatically broadcasts changes. Do not use add and replace Inserters at the same time.
function scale
Scale the vector by factor.
void ae108::cpppetsc::Vector::scale (
const value_type factor
)
function setZero
Replaces all entries by zero.
void ae108::cpppetsc::Vector::setZero ()
function size
Returns the global size of the vector.
size_type ae108::cpppetsc::Vector::size () const
function timesAlphaPlusBetaX
Sets the vector to alpha * (current value) + beta * x.
void ae108::cpppetsc::Vector::timesAlphaPlusBetaX (
const value_type alpha,
const value_type beta,
const Vector & x
)
function timesAlphaPlusBetaXPlusGammaY
Sets the vector to alpha * (current value) + beta * x + gamma * y.
void ae108::cpppetsc::Vector::timesAlphaPlusBetaXPlusGammaY (
const value_type alpha,
const value_type beta,
const Vector & x,
const value_type gamma,
const Vector & y
)
Public Static Functions Documentation
function fromDistributed
Creates a new full sequential copy of the vector.
static global < Vector > ae108::cpppetsc::Vector::fromDistributed (
const distributed < Vector > & vector
)
function fromDistributedInCanonicalOrder
Creates a new full sequential copy of the vector.
static global < Vector > ae108::cpppetsc::Vector::fromDistributedInCanonicalOrder (
const distributed < Vector > & vector,
const Mesh < Policy > & mesh
)
Precondition:
The vector is in the default "Mesh"-based ordering.
Postcondition:
The vector is in the canonical ordering: [dof 0 for element 0, dof 1 for element 0, ..., dof 0 for element 1, ..., dof 0 for vertex 0, dof 1 for vertex 0, ..., dof 0 for vertex 1, ...]
function fromGlobalMesh
Creates a global vector with a structure defined by the given mesh. The vector is zero-initialized.
static distributed < Vector > ae108::cpppetsc::Vector::fromGlobalMesh (
const Mesh < Policy > & mesh
)
function fromLayoutOf
Returns a zero initialized vector with the same layout as the parameter.
static Vector ae108::cpppetsc::Vector::fromLayoutOf (
const Vector & vector
)
function fromList
Constructs a vector with the provided entries.
static Vector ae108::cpppetsc::Vector::fromList (
const std::initializer_list< value_type > list
)
function fromLocalMesh
Creates a local vector with a structure defined by the given mesh. The vector is zero-initialized.
static local < Vector > ae108::cpppetsc::Vector::fromLocalMesh (
const Mesh < Policy > & mesh
)
The documentation for this class was generated from the following file cpppetsc/src/include/ae108/cpppetsc/Vector.h