ryujin 2.1.1 revision ee5cbcbf2346c1299c942d0e1f13b46449973c18
Loading...
Searching...
No Matches
List of all members
ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length > Class Template Reference

#include <source/multicomponent_vector.h>

Inheritance diagram for ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >:
Collaboration graph
[legend]

Public Member Functions

Constructor and initialization
 MultiComponentVector ()=default
 
 MultiComponentVector (const MultiComponentVector &other)
 
 MultiComponentVector (MultiComponentVector &&other) noexcept
 
void reinit_with_vector_partitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &vector_partitioner, const TransferPolicy transfer_policy=TransferPolicy::explicit_transfers)
 
void reinit_with_scalar_partitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &scalar_partitioner, const TransferPolicy transfer_policy=TransferPolicy::explicit_transfers)
 
MultiComponentVectoroperator= (const MultiComponentVector &other)
 
MultiComponentVectoroperator= (MultiComponentVector &&other) noexcept
 
Memory space access and synchronization
template<typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, simd_length, MemorySpace, true > view ()
 
template<typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, simd_length, MemorySpace, false > view () const
 
MPI synchronization
template<typename MemorySpace >
void zero_out_ghost_values_on_memory_space ()
 
template<typename MemorySpace >
void update_ghost_values_on_memory_space ()
 
template<typename MemorySpace >
void compress_on_memory_space (dealii::VectorOperation::values operation)
 
- Public Member Functions inherited from ryujin::MirroredStorage< Derived >
template<typename MemorySpace >
bool is_resident () const
 
template<typename MemorySpace >
bool is_pinned () const
 
template<typename MemorySpace >
void copy_to_memory_space () const
 
template<typename MemorySpace >
void move_to_memory_space ()
 
TransferPolicy transfer_policy () const
 
void set_transfer_policy (const TransferPolicy transfer_policy)
 

Internal fields, methods, and friends

class MirroredStorage< MultiComponentVector< Number, n_comp, simd_length > >
 
template<typename , int , int , typename , bool >
class MultiComponentVectorView
 

Additional Inherited Members

- Protected Member Functions inherited from ryujin::MirroredStorage< Derived >
 MirroredStorage ()=default
 
template<typename MemorySpace >
void prepare_read_access () const
 
template<typename MemorySpace >
void prepare_write_access ()
 
void reset_residency (const bool host_resident, const bool default_resident)
 

Detailed Description

template<typename Number, int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
class ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >

A wrapper around dealii::LinearAlgebra::distributed::Vector<Number> that stores a vector element of n_comp components per entry (instead of a scalar value).

Definition at line 65 of file multicomponent_vector.h.

Constructor & Destructor Documentation

◆ MultiComponentVector() [1/3]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::MultiComponentVector ( )
default

◆ MultiComponentVector() [2/3]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::MultiComponentVector ( const MultiComponentVector< Number, n_comp, simd_length > &  other)

◆ MultiComponentVector() [3/3]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::MultiComponentVector ( MultiComponentVector< Number, n_comp, simd_length > &&  other)
noexcept

Member Function Documentation

◆ reinit_with_vector_partitioner()

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
void ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::reinit_with_vector_partitioner ( const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &  vector_partitioner,
const TransferPolicy  transfer_policy = TransferPolicy::explicit_transfers 
)

Reinitializes the MultiComponentVector with a vector MPI partitioner that was created first with create_vector_partitioner().

After reinit the vector is resident on the host memory space only; device storage is allocated lazily on the first copy_to_memory_space() / move_to_memory_space(). (If the host and default memory spaces coincide the vector is resident on both.)

Note
Because the vector ends up resident on the host memory space only, TransferPolicy::implicit_transfers_default_resident is not an admissible transfer_policy for this function.

◆ reinit_with_scalar_partitioner()

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
void ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::reinit_with_scalar_partitioner ( const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &  scalar_partitioner,
const TransferPolicy  transfer_policy = TransferPolicy::explicit_transfers 
)

Reinitializes the MultiComponentVector with a scalar MPI partitioner. The function calls create_vector_partitioner() internally to create and store a corresponding "vector" MPI partitioner.

After reinit the vector is resident on the host memory space only; device storage is allocated lazily on the first copy_to_memory_space() / move_to_memory_space(). (If the host and default memory spaces coincide the vector is resident on both.)

Note
Because the vector ends up resident on the host memory space only, TransferPolicy::implicit_transfers_default_resident is not an admissible transfer_policy for this function.

◆ operator=() [1/2]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
MultiComponentVector & ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::operator= ( const MultiComponentVector< Number, n_comp, simd_length > &  other)

◆ operator=() [2/2]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
MultiComponentVector & ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::operator= ( MultiComponentVector< Number, n_comp, simd_length > &&  other)
noexcept

◆ view() [1/2]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, simd_length, MemorySpace, true > ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::view ( )

Return a writable view on the vector for the selected memory space. Depending on the selected TransferPolicy the method either asserts that the memory space is resident (TransferPolicy::explicit_transfers), or performs an implicit move_to_memory_space() invalidating the other memory space (TransferPolicy::implicit_transfers).

◆ view() [2/2]

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, simd_length, MemorySpace, false > ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::view ( ) const

Return a read-only view on the vector for the selected memory space. Depending on the selected TransferPolicy the method either asserts that the memory space is resident (TransferPolicy::explicit_transfers), or performs an implicit copy_to_memory_space() (TransferPolicy::implicit_transfers).

◆ zero_out_ghost_values_on_memory_space()

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename MemorySpace >
void ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::zero_out_ghost_values_on_memory_space ( )

MPI synchronization: Zero out all ghost rows.

◆ update_ghost_values_on_memory_space()

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename MemorySpace >
void ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::update_ghost_values_on_memory_space ( )

MPI synchronization: Import all ghost values from neighboring MPI ranks on the templated memory space.

◆ compress_on_memory_space()

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename MemorySpace >
void ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length >::compress_on_memory_space ( dealii::VectorOperation::values  operation)

MPI synchronization: Copy the data that has accumulated in the ghost range to the owning processor. This function operates on the templated memory space.

Friends And Related Symbol Documentation

◆ MirroredStorage< MultiComponentVector< Number, n_comp, simd_length > >

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
friend class MirroredStorage< MultiComponentVector< Number, n_comp, simd_length > >
friend

Definition at line 221 of file multicomponent_vector.h.

◆ MultiComponentVectorView

template<typename Number , int n_comp, int simd_length = dealii::VectorizedArray<Number>::size()>
template<typename , int , int , typename , bool >
friend class MultiComponentVectorView
friend

Definition at line 228 of file multicomponent_vector.h.


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