Block vector consisting of a Q1 vector and a Q1 scalar vector on distributed shell grids.
More...
|
| | VectorQ1IsoQ2Q1 ()=default |
| | Default constructor.
|
| |
| | VectorQ1IsoQ2Q1 (const std::string &label, const grid::shell::DistributedDomain &distributed_domain_fine, const grid::shell::DistributedDomain &distributed_domain_coarse, const grid::Grid4DDataScalar< grid::NodeOwnershipFlag > &mask_data_fine, const grid::Grid4DDataScalar< grid::NodeOwnershipFlag > &mask_data_coarse) |
| | Construct a block vector with labels, domains, and mask data for both blocks.
|
| |
| void | lincomb_impl (const std::vector< ScalarType > &c, const std::vector< VectorQ1IsoQ2Q1 > &x, const ScalarType c0) |
| | Linear combination implementation for Block2VectorLike concept. Computes: ( \text{block}_1 = c_0 + \sum_i c_i x_i.\text{block}_1 ), ( \text{block}_2 = c_0 + \sum_i c_i x_i.\text{block}_2 )
|
| |
| ScalarType | dot_impl (const VectorQ1IsoQ2Q1 &x) const |
| | Dot product implementation for Block2VectorLike concept. Computes: ( \text{block}_1 \cdot x.\text{block}_1 + \text{block}_2 \cdot x.\text{block}_2 )
|
| |
| void | invert_entries_impl () |
| | Invert entries implementation for Block2VectorLike concept. Computes: ( \text{block}_1 = 1 / \text{block}_1 ), ( \text{block}_2 = 1 / \text{block}_2 )
|
| |
| void | scale_with_vector_impl (const VectorQ1IsoQ2Q1 &x) |
| | Elementwise scaling implementation for Block2VectorLike concept. Computes: ( \text{block}_1 = \text{block}_1 \cdot x.\text{block}_1 ), ( \text{block}_2 = \text{block}_2 \cdot x.\text{block}_2 )
|
| |
| void | randomize_impl () |
| | Randomize entries implementation for Block2VectorLike concept. Sets each entry of both blocks to a random value.
|
| |
| ScalarType | max_abs_entry_impl () const |
| | Max absolute entry implementation for Block2VectorLike concept. Computes: ( \max( \max_i |\text{block}_1|, \max_j |\text{block}_2| ) )
|
| |
| bool | has_nan_or_inf_impl () const |
| | NaN/inf check implementation for Block2VectorLike concept. Returns true if any entry of either block is NaN/inf.
|
| |
| void | swap_impl (VectorQ1IsoQ2Q1 &other) |
| | Swap implementation for Block2VectorLike concept. Exchanges the contents of both blocks with another block vector.
|
| |
| void | add_mask_data (const grid::Grid4DDataScalar< unsigned char > &mask_data_block_1, const grid::Grid4DDataScalar< unsigned char > &mask_data_block_2) |
| | Add mask data to both blocks.
|
| |
| const Block1Type & | block_1 () const |
| | Get const reference to block 1 (vector field).
|
| |
| const Block2Type & | block_2 () const |
| | Get const reference to block 2 (scalar field).
|
| |
| Block1Type & | block_1 () |
| | Get mutable reference to block 1 (vector field).
|
| |
| Block2Type & | block_2 () |
| | Get mutable reference to block 2 (scalar field).
|
| |
template<typename ScalarT, int VecDim = 3>
class terra::linalg::VectorQ1IsoQ2Q1< ScalarT, VecDim >
Block vector consisting of a Q1 vector and a Q1 scalar vector on distributed shell grids.
Same layout as required for tensor-product wedge elements.
Satisfies the Block2VectorLike concept (see vector.hpp). Used for mixed finite element methods (e.g., Q1isoQ2-Q1).