ryujin 2.1.1 revision 71cbe157f0746717db03d7e1e977da66a7d7bfb5
Loading...
Searching...
No Matches
List of all members
ryujin::MultiComponentVector< Number > Class Template Reference

#include <source/multicomponent_vector.h>

Inheritance diagram for ryujin::MultiComponentVector< Number >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::MultiComponentVector< Number >:
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 unsigned int n_comp, const TransferPolicy transfer_policy=TransferPolicy::explicit_transfers)
 
void reinit_with_scalar_partitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &scalar_partitioner, const unsigned int n_comp, const TransferPolicy transfer_policy=TransferPolicy::explicit_transfers)
 
MultiComponentVector & operator= (const MultiComponentVector &other)
 
MultiComponentVector & operator= (MultiComponentVector &&other) noexcept
 
Memory space access and synchronization
template<int n_comp, typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, MemorySpace, true > view ()
 
template<int n_comp, typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, MemorySpace, false > view () const
 
template<typename MemorySpace = dealii::MemorySpace::Host>
auto & deal_ii_vector ()
 
template<typename MemorySpace = dealii::MemorySpace::Host>
const auto & deal_ii_vector () const
 
- Public Member Functions inherited from ryujin::MirroredStorage< MultiComponentVector< Number > >
bool is_resident () const
 
bool is_pinned () const
 
void copy_to_memory_space () const
 
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 > >
 
template<typename , int , typename , bool >
class MultiComponentVectorView
 

Additional Inherited Members

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

Detailed Description

template<typename Number>
class ryujin::MultiComponentVector< Number >

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 61 of file multicomponent_vector.h.

Constructor & Destructor Documentation

◆ MultiComponentVector() [1/3]

template<typename Number >
ryujin::MultiComponentVector< Number >::MultiComponentVector ( )
default

◆ MultiComponentVector() [2/3]

template<typename Number >
ryujin::MultiComponentVector< Number >::MultiComponentVector ( const MultiComponentVector< Number > &  other)

◆ MultiComponentVector() [3/3]

template<typename Number >
ryujin::MultiComponentVector< Number >::MultiComponentVector ( MultiComponentVector< Number > &&  other)
noexcept

Member Function Documentation

◆ reinit_with_vector_partitioner()

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

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

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.

Referenced by ryujin::InitialValues< Description, dim, Number >::interpolate_hyperbolic_vector(), and ryujin::SolutionTransfer< Description, dim, Number >::project().

◆ reinit_with_scalar_partitioner()

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

Reinitializes the MultiComponentVector with a scalar MPI partitioner for n_comp components. 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.

Referenced by ryujin::InitialValues< Description, dim, Number >::interpolate_initial_precomputed_vector().

◆ operator=() [1/2]

template<typename Number >
MultiComponentVector & ryujin::MultiComponentVector< Number >::operator= ( const MultiComponentVector< Number > &  other)

Return the number of components per entry.

◆ operator=() [2/2]

template<typename Number >
MultiComponentVector & ryujin::MultiComponentVector< Number >::operator= ( MultiComponentVector< Number > &&  other)
noexcept

◆ view() [1/2]

template<typename Number >
template<int n_comp, typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, MemorySpace, true > ryujin::MultiComponentVector< Number >::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).

The template parameter n_comp has to match n_comp().

◆ view() [2/2]

template<typename Number >
template<int n_comp, typename MemorySpace = dealii::MemorySpace::Host>
MultiComponentVectorView< Number, n_comp, MemorySpace, false > ryujin::MultiComponentVector< Number >::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).

The template parameter n_comp has to match n_comp().

◆ deal_ii_vector() [1/2]

template<typename Number >
template<typename MemorySpace = dealii::MemorySpace::Host>
auto & ryujin::MultiComponentVector< Number >::deal_ii_vector ( )

Return a reference to the underlying deal.II vector residing in the selected memory space.

Note
Only for n_comp() == 1 is the deal.II vector compatible with the scalar DoFHandler.
The same residency and transfer semantics as for the writable view() apply.

◆ deal_ii_vector() [2/2]

template<typename Number >
template<typename MemorySpace = dealii::MemorySpace::Host>
const auto & ryujin::MultiComponentVector< Number >::deal_ii_vector ( ) const

Return a const reference to the underlying deal.II vector residing in the selected memory space, see above.

Note
The same residency and transfer semantics as for the read-only view() apply.

Friends And Related Symbol Documentation

◆ MirroredStorage< MultiComponentVector< Number > >

template<typename Number >
friend class MirroredStorage< MultiComponentVector< Number > >
friend

Definition at line 232 of file multicomponent_vector.h.

◆ MultiComponentVectorView

template<typename Number >
template<typename , int , typename , bool >
friend class MultiComponentVectorView
friend

Definition at line 238 of file multicomponent_vector.h.


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