Reference documentation for deal.II version 9.5.0
|
#include <deal.II/lac/la_vector.h>
Public Types | |
using | size_type = types::global_dof_index |
using | value_type = typename ReadWriteVector< Number >::value_type |
using | pointer = value_type * |
using | const_pointer = const value_type * |
using | iterator = value_type * |
using | const_iterator = const value_type * |
using | reference = value_type & |
using | const_reference = const value_type & |
using | real_type = typename numbers::NumberTraits< Number >::real_type |
using | real_type = typename numbers::NumberTraits< Number >::real_type |
Public Member Functions | |
Vector ()=default | |
Vector (const Vector< Number > &V) | |
Vector (const size_type n) | |
template<typename InputIterator > | |
Vector (const InputIterator first, const InputIterator last) | |
virtual void | reinit (const size_type size, const bool omit_zeroing_entries=false) override |
template<typename Number2 > | |
void | reinit (const ReadWriteVector< Number2 > &in_vector, const bool omit_zeroing_entries=false) |
virtual void | reinit (const IndexSet &locally_stored_indices, const bool omit_zeroing_entries=false) override |
virtual void | reinit (const VectorSpaceVector< Number > &V, const bool omit_zeroing_entries=false) override |
bool | has_ghost_elements () const |
Vector< Number > & | operator= (const Vector< Number > &in_vector) |
template<typename Number2 > | |
Vector< Number > & | operator= (const Vector< Number2 > &in_vector) |
virtual Vector< Number > & | operator= (const Number s) override |
virtual Vector< Number > & | operator*= (const Number factor) override |
virtual Vector< Number > & | operator/= (const Number factor) override |
virtual Vector< Number > & | operator+= (const VectorSpaceVector< Number > &V) override |
virtual Vector< Number > & | operator-= (const VectorSpaceVector< Number > &V) override |
virtual Number | operator* (const VectorSpaceVector< Number > &V) const override |
virtual void | import_elements (const ReadWriteVector< Number > &V, VectorOperation::values operation, std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > communication_pattern={}) override |
virtual void | import (const ReadWriteVector< Number > &V, VectorOperation::values operation, std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > communication_pattern={}) override |
virtual void | add (const Number a) override |
virtual void | add (const Number a, const VectorSpaceVector< Number > &V) override |
virtual void | add (const Number a, const VectorSpaceVector< Number > &V, const Number b, const VectorSpaceVector< Number > &W) override |
virtual void | sadd (const Number s, const Number a, const VectorSpaceVector< Number > &V) override |
virtual void | scale (const VectorSpaceVector< Number > &scaling_factors) override |
virtual void | equ (const Number a, const VectorSpaceVector< Number > &V) override |
virtual bool | all_zero () const override |
virtual value_type | mean_value () const override |
virtual VectorSpaceVector< Number >::real_type | l1_norm () const override |
virtual VectorSpaceVector< Number >::real_type | l2_norm () const override |
virtual VectorSpaceVector< Number >::real_type | linfty_norm () const override |
virtual Number | add_and_dot (const Number a, const VectorSpaceVector< Number > &V, const VectorSpaceVector< Number > &W) override |
virtual size_type | size () const override |
virtual ::IndexSet | locally_owned_elements () const override |
virtual void | print (std::ostream &out, const unsigned int precision=3, const bool scientific=true, const bool across=true) const override |
void | print_as_numpy_array (std::ostream &out, const unsigned int precision=9) const |
void | block_write (std::ostream &out) const |
void | block_read (std::istream &in) |
virtual std::size_t | memory_consumption () const override |
template<typename Archive > | |
void | serialize (Archive &ar, const unsigned int version) |
virtual void | compress (VectorOperation::values) |
1: Basic Object-handling | |
void | reinit (const TrilinosWrappers::MPI::Vector &trilinos_vec) |
template<typename Functor > | |
void | apply (const Functor &func) |
void | swap (ReadWriteVector< Number > &v) |
void | import_elements (const ::Vector< Number > &vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import_elements (const LinearAlgebra::Vector< Number > &vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
template<typename MemorySpace > | |
void | import_elements (const distributed::Vector< Number, MemorySpace > &vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import_elements (const PETScWrappers::MPI::Vector &petsc_vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import_elements (const TrilinosWrappers::MPI::Vector &trilinos_vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
template<typename Dummy = Number> | |
std::enable_if_t< std::is_same< Dummy, Number >::value &&::is_tpetra_type< Number >::value > | import_elements (const TpetraWrappers::Vector< Number > &tpetra_vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import_elements (const EpetraWrappers::Vector &epetra_vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import_elements (const CUDAWrappers::Vector< Number > &cuda_vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const ::Vector< Number > &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const LinearAlgebra::Vector< Number > &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
template<typename MemorySpace > | |
void | import (const distributed::Vector< Number, MemorySpace > &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const PETScWrappers::MPI::Vector &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const TrilinosWrappers::MPI::Vector &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
template<typename Dummy = Number> | |
std::enable_if_t< std::is_same< Dummy, Number >::value &&::is_tpetra_type< Number >::value > | import (const TpetraWrappers::Vector< Number > &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const EpetraWrappers::Vector &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
void | import (const CUDAWrappers::Vector< Number > &V, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={}) |
size_type | n_elements () const |
size_type | locally_owned_size () const |
const IndexSet & | get_stored_elements () const |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
2: Data-Access | |
Number | operator() (const size_type global_index) const |
Number & | operator() (const size_type global_index) |
Number | operator[] (const size_type global_index) const |
Number & | operator[] (const size_type global_index) |
template<typename Number2 > | |
void | extract_subvector_to (const std::vector< size_type > &indices, std::vector< Number2 > &values) const |
template<typename ForwardIterator , typename OutputIterator > | |
void | extract_subvector_to (ForwardIterator indices_begin, const ForwardIterator indices_end, OutputIterator values_begin) const |
Number | local_element (const size_type local_index) const |
Number & | local_element (const size_type local_index) |
3: Modification of vectors | |
template<typename Number2 > | |
void | add (const std::vector< size_type > &indices, const std::vector< Number2 > &values) |
template<typename Number2 > | |
void | add (const std::vector< size_type > &indices, const ReadWriteVector< Number2 > &values) |
template<typename Number2 > | |
void | add (const size_type n_elements, const size_type *indices, const Number2 *values) |
void | print (std::ostream &out, const unsigned int precision=3, const bool scientific=true) const |
Subscriptor functionality | |
Classes derived from Subscriptor provide a facility to subscribe to this object. This is mostly used by the SmartPointer class. | |
void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
unsigned int | n_subscriptions () const |
template<typename StreamType > | |
void | list_subscribers (StreamType &stream) const |
void | list_subscribers () const |
Static Public Member Functions | |
static ::ExceptionBase & | ExcVectorTypeNotCompatible () |
static ::ExceptionBase & | ExcInUse (int arg1, std::string arg2, std::string arg3) |
static ::ExceptionBase & | ExcNoSubscriber (std::string arg1, std::string arg2) |
Protected Member Functions | |
template<typename Dummy = Number> | |
std::enable_if_t< std::is_same< Dummy, Number >::value &&::is_tpetra_type< Number >::value > | import_elements (const Tpetra::Vector< Number, int, types::signed_global_dof_index > &tpetra_vector, const IndexSet &locally_owned_elements, VectorOperation::values operation, const MPI_Comm mpi_comm, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern) |
void | import_elements (const Epetra_MultiVector &multivector, const IndexSet &locally_owned_elements, VectorOperation::values operation, const MPI_Comm mpi_comm, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern) |
unsigned int | global_to_local (const types::global_dof_index global_index) const |
void | resize_val (const size_type new_allocated_size) |
TpetraWrappers::CommunicationPattern | create_tpetra_comm_pattern (const IndexSet &source_index_set, const MPI_Comm mpi_comm) |
EpetraWrappers::CommunicationPattern | create_epetra_comm_pattern (const IndexSet &source_index_set, const MPI_Comm mpi_comm) |
Protected Attributes | |
IndexSet | stored_elements |
IndexSet | source_stored_elements |
std::shared_ptr< Utilities::MPI::CommunicationPatternBase > | comm_pattern |
std::unique_ptr< Number[], void(*)(void *)> | values |
std::shared_ptr<::parallel::internal::TBBPartitioner > | thread_loop_partitioner |
Private Types | |
using | map_value_type = decltype(counter_map)::value_type |
using | map_iterator = decltype(counter_map)::iterator |
Private Member Functions | |
void | check_no_subscribers () const noexcept |
Private Attributes | |
std::atomic< unsigned int > | counter |
std::map< std::string, unsigned int > | counter_map |
std::vector< std::atomic< bool > * > | validity_pointers |
const std::type_info * | object_info |
Static Private Attributes | |
static std::mutex | mutex |
Friends | |
template<typename Number2 > | |
class | Vector |
Numerical vector of data. This class derives from both LinearAlgebra::ReadWriteVector and LinearAlgebra::VectorSpaceVector. As opposed to the array of the C++ standard library, this class implements an element of a vector space suitable for numerical computations.
Definition at line 78 of file la_vector.h.
using LinearAlgebra::Vector< Number >::size_type = types::global_dof_index |
Definition at line 82 of file la_vector.h.
using LinearAlgebra::Vector< Number >::value_type = typename ReadWriteVector<Number>::value_type |
Definition at line 83 of file la_vector.h.
|
inherited |
Definition at line 145 of file read_write_vector.h.
|
inherited |
Definition at line 146 of file read_write_vector.h.
|
inherited |
Definition at line 147 of file read_write_vector.h.
|
inherited |
Definition at line 148 of file read_write_vector.h.
|
inherited |
Definition at line 149 of file read_write_vector.h.
|
inherited |
Definition at line 150 of file read_write_vector.h.
|
inherited |
Definition at line 152 of file read_write_vector.h.
|
privateinherited |
The data type used in counter_map.
Definition at line 230 of file subscriptor.h.
|
privateinherited |
The iterator type used in counter_map.
Definition at line 235 of file subscriptor.h.
|
inherited |
Definition at line 61 of file vector_space_vector.h.
|
default |
Constructor. Create a vector of dimension zero.
Copy constructor. Sets the dimension to that of the given vector and copies all elements.
Definition at line 443 of file la_vector.h.
Constructor. Set dimension to n
and initialize all elements with zero.
The constructor is made explicit to avoid accident like this: v=0;
. Presumably, the user wants to set every element of the vector to zero, but instead, what happens is this call: v=Vector<Number>(0);
, i.e. the vector is replaced by one of length zero.
Definition at line 450 of file la_vector.h.
|
inline |
Initialize the vector with a given range of values pointed to by the iterators. This function exists in analogy to the std::vector
class.
Definition at line 458 of file la_vector.h.
|
overridevirtual |
Set the global size of the vector to size
. The stored elements have their index in [0,size).
If the flag omit_zeroing_entries
is set to false, the memory will be initialized with zero, otherwise the memory will be untouched (and the user must make sure to fill it with reasonable data before using it).
Reimplemented from LinearAlgebra::ReadWriteVector< Number >.
void LinearAlgebra::Vector< Number >::reinit | ( | const ReadWriteVector< Number2 > & | in_vector, |
const bool | omit_zeroing_entries = false |
||
) |
Uses the same IndexSet as the one of the input vector in_vector
and allocates memory for this vector.
If the flag omit_zeroing_entries
is set to false, the memory will be initialized with zero, otherwise the memory will be untouched (and the user must make sure to fill it with reasonable data before using it).
|
overridevirtual |
Initializes the vector. The indices are specified by locally_stored_indices
.
If the flag omit_zeroing_entries
is set to false, the memory will be initialized with zero, otherwise the memory will be untouched (and the user must make sure to fill it with reasonable data before using it). locally_stored_indices.
Reimplemented from LinearAlgebra::ReadWriteVector< Number >.
|
overridevirtual |
Change the dimension to that of the vector V. The elements of V are not copied.
Implements LinearAlgebra::VectorSpaceVector< Number >.
bool LinearAlgebra::Vector< Number >::has_ghost_elements | ( | ) | const |
Returns false
as this is a serial vector.
This functionality only needs to be called if using MPI based vectors and exists in other objects for compatibility.
Vector< Number > & LinearAlgebra::Vector< Number >::operator= | ( | const Vector< Number > & | in_vector | ) |
Copies the data of the input vector in_vector
.
Vector< Number > & LinearAlgebra::Vector< Number >::operator= | ( | const Vector< Number2 > & | in_vector | ) |
Copies the data of the input vector in_vector
.
|
overridevirtual |
Sets all elements of the vector to the scalar s
. This operation is only allowed if s
is equal to zero.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Multiply the entire vector by a fixed factor.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Divide the entire vector by a fixed factor.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Add the vector V
to the present one.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Subtract the vector V
from the present one.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return the scalar product of two vectors.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
This function is not implemented and will throw an exception.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
inlineoverridevirtual |
Implements LinearAlgebra::VectorSpaceVector< Number >.
Definition at line 236 of file la_vector.h.
|
overridevirtual |
Add a
to all components. Note that a
is a scalar not a vector.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Simple addition of a multiple of a vector, i.e. *this += a*V
.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Multiple addition of a multiple of a vector, i.e. *this += a*V+b*W
.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Scaling and simple addition of a multiple of a vector, i.e. this = s(*this)+a*V
.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Scale each element of this vector by the corresponding element in the argument. This function is mostly meant to simulate multiplication (and immediate re-assignment) by a diagonal scaling matrix.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Assignment *this = a*V
.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return whether the vector contains only elements with value zero.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return the mean value of all the entries of this vector.
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return the l1 norm of the vector (i.e., the sum of the absolute values of all entries).
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return the l2 norm of the vector (i.e., the square root of the sum of the square of all entries among all processors).
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Return the maximum norm of the vector (i.e., the maximum absolute value among all entries and among all processors).
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
overridevirtual |
Perform a combined operation of a vector addition and a subsequent inner product, returning the value of the inner product. In other words, the result of this function is the same as if the user called
The reason this function exists is that this operation involves less memory transfer than calling the two functions separately. This method only needs to load three vectors, this
, V
, W
, whereas calling separate methods means to load the calling vector this
twice. Since most vector operations are memory transfer limited, this reduces the time by 25% (or 50% if W
equals this
).
For complex-valued vectors, the scalar product in the second step is implemented as \(\left<v,w\right>=\sum_i v_i \bar{w_i}\).
Implements LinearAlgebra::VectorSpaceVector< Number >.
|
inlineoverridevirtual |
Return the global size of the vector, equal to the sum of the number of locally owned indices among all processors.
Implements LinearAlgebra::VectorSpaceVector< Number >.
Definition at line 469 of file la_vector.h.
Return an index set that describes which elements of this vector are owned by the current processor. As a consequence, the index sets returned on different processors if this is a distributed vector will form disjoint sets that add up to the complete index set. Obviously, if a vector is created on only one processor, then the result would satisfy
Implements LinearAlgebra::VectorSpaceVector< Number >.
Definition at line 478 of file la_vector.h.
|
inlineoverridevirtual |
Print the vector to the output stream out
.
Implements LinearAlgebra::VectorSpaceVector< Number >.
Definition at line 487 of file la_vector.h.
void LinearAlgebra::Vector< Number >::print_as_numpy_array | ( | std::ostream & | out, |
const unsigned int | precision = 9 |
||
) | const |
void LinearAlgebra::Vector< Number >::block_write | ( | std::ostream & | out | ) | const |
Write the vector en bloc to a file. This is done in a binary mode, so the output is neither readable by humans nor (probably) by other computers using a different operating system or number format.
void LinearAlgebra::Vector< Number >::block_read | ( | std::istream & | in | ) |
Read a vector en block from a file. This is done using the inverse operations to the above function, so it is reasonably fast because the bitstream is not interpreted.
The vector is resized if necessary.
A primitive form of error checking is performed which will recognize the bluntest attempts to interpret some data as a vector stored bitwise to a file, but not more.
|
inlineoverridevirtual |
Return the memory consumption of this class in bytes.
Implements LinearAlgebra::VectorSpaceVector< Number >.
Definition at line 515 of file la_vector.h.
|
inline |
Write and read the data of this object from a stream for the purpose of serialization using the BOOST serialization library.
Definition at line 500 of file la_vector.h.
|
inherited |
Initialize this ReadWriteVector by supplying access to all locally available entries in the given ghosted or non-ghosted vector.
trilinos_vec
.This function is mainly written for backwards-compatibility to get element access to a ghosted TrilinosWrappers::MPI::Vector inside the library.
|
inherited |
Apply the functor func
to each element of the vector. The functor should look like
|
inherited |
Swap the contents of this vector and the other vector v
. One could do this operation with a temporary variable and copying over the data elements, but this function is significantly more efficient since it only swaps the pointers to the data of the two vectors and therefore does not need to allocate temporary storage and move data around.
This function is analogous to the swap
function of all C++ standard containers. Also, there is a global function swap(u,v)
that simply calls u.swap(v)
, again in analogy to standard functions.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements.
communication_pattern
is ignored since we are dealing with a serial vector here.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements.
communication_pattern
is ignored since we are dealing with a serial vector here.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter can be used if the same communication pattern is used multiple times. This can be used to improve performance.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector petsc_vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter can be used if the same communication pattern is used multiple times. This can be used to improve performance.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector trilinos_vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter can be used if the same communication pattern is used multiple times. This can be used to improve performance.
trilinos_vec
is not allowed to have ghost entries.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector tpetra_vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter can be used if the same communication pattern is used multiple times. This can be used to improve performance.
|
inherited |
Imports all the elements present in the vector's IndexSet from the input vector epetra_vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter can be used if the same communication pattern is used multiple times. This can be used to improve performance.
|
inherited |
Import all the elements present in the vector's IndexSet from the input vector cuda_vec
. VectorOperation::values operation
is used to decide if the elements in V
should be added to the current vector or replace the current elements. The last parameter is not used.
|
protectedinherited |
Import all the elements present in the vector's IndexSet from the input vector tpetra_vector
. This is an helper function and it should not be used directly.
|
protectedinherited |
Import all the elements present in the vector's IndexSet from the input vector multivector
. This is an helper function and it should not be used directly.
|
inlineinherited |
Definition at line 312 of file read_write_vector.h.
|
inlineinherited |
Definition at line 341 of file read_write_vector.h.
|
inlineinherited |
Definition at line 370 of file read_write_vector.h.
|
inlineinherited |
Definition at line 400 of file read_write_vector.h.
|
inlineinherited |
Definition at line 432 of file read_write_vector.h.
|
inlineinherited |
Definition at line 465 of file read_write_vector.h.
|
inlineinherited |
Definition at line 495 of file read_write_vector.h.
|
inlineinherited |
Definition at line 524 of file read_write_vector.h.
|
inherited |
This function returns the number of elements stored. It is smaller or equal to the dimension of the vector space that is modeled by an object of this kind. This dimension is return by size().
|
inherited |
Return the local size of the vector, i.e., the number of indices owned locally.
|
inherited |
Return the IndexSet that represents the indices of the elements stored.
|
inherited |
Make the ReadWriteVector
class a bit like the vector<>
class of the C++ standard library by returning iterators to the start and end of the locally stored elements of this vector.
|
inherited |
Return constant iterator to the start of the locally stored elements of the vector.
|
inherited |
Return an iterator pointing to the element past the end of the array of locally stored entries.
|
inherited |
Return a constant iterator pointing to the element past the end of the array of the locally stored entries.
|
inherited |
Read access to the data in the position corresponding to global_index
. An exception is thrown if global_index
is not stored by the current object.
|
inherited |
Read and write access to the data in the position corresponding to global_index
. An exception is thrown if global_index
is not stored by the current object.
|
inherited |
Read access to the data in the position corresponding to global_index
. An exception is thrown if global_index
is not stored by the current object.
This function does the same thing as operator().
|
inherited |
Read and write access to the data in the position corresponding to global_index
. An exception is thrown if global_index
is not stored by the current object.
This function does the same thing as operator().
|
inherited |
Instead of getting individual elements of a vector via operator(), this function allows getting a whole set of elements at once. The indices of the elements to be read are stated in the first argument, the corresponding values are returned in the second.
If the current vector is called v
, then this function is the equivalent to the code
indices
and values
arrays must be identical.
|
inherited |
Instead of getting individual elements of a vector via operator(), this function allows getting a whole set of elements at once. In contrast to the previous function, this function obtains the indices of the elements by dereferencing all elements of the iterator range provided by the first two arguments, and puts the vector values into memory locations obtained by dereferencing a range of iterators starting at the location pointed to by the third argument.
If the current vector is called v
, then this function is the equivalent to the code
values_begin
as there are iterators between indices_begin
and indices_end
.
|
inherited |
Read access to the data field specified by local_index
. When you access elements in the order in which they are stored, it is necessary that you know in which they are stored. In other words, you need to know the map between the global indices of the elements this class stores, and the local indices into the contiguous array of these global elements. For this, see the general documentation of this class.
Performance: Direct array access (fast).
|
inherited |
Read and write access to the data field specified by local_index
. When you access elements in the order in which they are stored, it is necessary that you know in which they are stored. In other words, you need to know the map between the global indices of the elements this class stores, and the local indices into the contiguous array of these global elements. For this, see the general documentation of this class.
Performance: Direct array access (fast).
|
inherited |
This function adds a whole set of values stored in values
to the vector components specified by indices
.
|
inherited |
This function is similar to the previous one but takes a ReadWriteVector of values.
|
inherited |
Take an address where n_elements
are stored contiguously and add them into the vector. Handles all cases which are not covered by the other two add()
functions above.
|
inherited |
Prints the vector to the output stream out
.
|
protectedinherited |
Return the local position of global_index
.
|
protectedinherited |
A helper function that is used to resize the val array.
|
protectedinherited |
Return a TpetraWrappers::CommunicationPattern and store it for future use.
|
protectedinherited |
Return a EpetraWrappers::CommunicationPattern and store it for future use.
|
inherited |
Subscribes a user of the object by storing the pointer validity
. The subscriber may be identified by text supplied as identifier
.
Definition at line 136 of file subscriptor.cc.
|
inherited |
Unsubscribes a user from the object.
identifier
and the validity
pointer must be the same as the one supplied to subscribe(). Definition at line 156 of file subscriptor.cc.
|
inlineinherited |
Return the present number of subscriptions to this object. This allows to use this class for reference counted lifetime determination where the last one to unsubscribe also deletes the object.
Definition at line 300 of file subscriptor.h.
|
inlineinherited |
List the subscribers to the input stream
.
Definition at line 317 of file subscriptor.h.
|
inherited |
List the subscribers to deallog
.
Definition at line 204 of file subscriptor.cc.
|
privatenoexceptinherited |
Check that there are no objects subscribing to this object. If this check passes then it is safe to destroy the current object. It this check fails then this function will either abort or print an error message to deallog (by using the AssertNothrow mechanism), but will not throw an exception.
Definition at line 53 of file subscriptor.cc.
|
inlinevirtualinherited |
This function does nothing and only exists for backward compatibility.
Reimplemented in LinearAlgebra::distributed::BlockVector< Number >, LinearAlgebra::distributed::Vector< Number, MemorySpace >, and LinearAlgebra::distributed::Vector< double >.
Definition at line 238 of file vector_space_vector.h.
Typedef for the vector type used
Typedef for the vector type used.
Definition at line 436 of file la_vector.h.
|
protectedinherited |
Indices of the elements stored.
Definition at line 841 of file read_write_vector.h.
|
protectedinherited |
IndexSet of the elements of the last imported vector;
Definition at line 846 of file read_write_vector.h.
|
protectedinherited |
CommunicationPattern for the communication between the source_stored_elements IndexSet and the current vector.
Definition at line 852 of file read_write_vector.h.
|
protectedinherited |
Pointer to the array of local elements of this vector.
Definition at line 858 of file read_write_vector.h.
|
mutableprotectedinherited |
For parallel loops with TBB, this member variable stores the affinity information of loops.
Definition at line 865 of file read_write_vector.h.
|
mutableprivateinherited |
Store the number of objects which subscribed to this object. Initially, this number is zero, and upon destruction it shall be zero again (i.e. all objects which subscribed should have unsubscribed again).
The creator (and owner) of an object is counted in the map below if HE manages to supply identification.
We use the mutable
keyword in order to allow subscription to constant objects also.
This counter may be read from and written to concurrently in multithreaded code: hence we use the std::atomic
class template.
Definition at line 219 of file subscriptor.h.
|
mutableprivateinherited |
In this map, we count subscriptions for each different identification string supplied to subscribe().
Definition at line 225 of file subscriptor.h.
|
mutableprivateinherited |
In this vector, we store pointers to the validity bool in the SmartPointer objects that subscribe to this class.
Definition at line 241 of file subscriptor.h.
|
mutableprivateinherited |
Pointer to the typeinfo object of this object, from which we can later deduce the class name. Since this information on the derived class is neither available in the destructor, nor in the constructor, we obtain it in between and store it here.
Definition at line 249 of file subscriptor.h.
|
staticprivateinherited |
A mutex used to ensure data consistency when printing out the list of subscribers.
Definition at line 271 of file subscriptor.h.