18template <
typename ScalarT,
int VecDim = 3 >
47 BoundaryConditions bcs,
49 : A_( domain_fine, grid, radii, mask, k, bcs, diagonal )
50 , B_T_( domain_fine, domain_coarse, grid, radii, mask, bcs )
51 , B_( domain_fine, domain_coarse, grid, radii, mask, bcs )
52 , diagonal_( diagonal )
92 throw std::runtime_error(
"block_12() is not implemented for diagonal Stokes operator" );
102 throw std::runtime_error(
"block_21() is not implemented for diagonal Stokes operator" );
115 throw std::runtime_error(
"block_12() is not implemented for diagonal Stokes operator" );
124 throw std::runtime_error(
"block_21() is not implemented for diagonal Stokes operator" );
void set_operator_apply_and_communication_modes(const linalg::OperatorApplyMode operator_apply_mode, const linalg::OperatorCommunicationMode operator_communication_mode)
Definition divergence.hpp:82
Definition epsilon_divdiv_stokes.hpp:20
Block22Type & block_22()
Definition epsilon_divdiv_stokes.hpp:129
Block11Type & block_11()
Definition epsilon_divdiv_stokes.hpp:110
ScalarT ScalarType
Definition epsilon_divdiv_stokes.hpp:24
Block21Type & block_21()
Definition epsilon_divdiv_stokes.hpp:120
Block12Type & block_12()
Definition epsilon_divdiv_stokes.hpp:111
const Block21Type & block_21() const
Definition epsilon_divdiv_stokes.hpp:98
const Block22Type & block_22() const
Definition epsilon_divdiv_stokes.hpp:108
const Block12Type & block_12() const
Definition epsilon_divdiv_stokes.hpp:88
EpsDivDivStokes(const grid::shell::DistributedDomain &domain_fine, const grid::shell::DistributedDomain &domain_coarse, const grid::Grid3DDataVec< ScalarType, 3 > &grid, const grid::Grid2DDataScalar< ScalarType > &radii, const grid::Grid4DDataScalar< grid::shell::ShellBoundaryFlag > &mask, const grid::Grid4DDataScalar< ScalarType > &k, BoundaryConditions bcs, bool diagonal)
Definition epsilon_divdiv_stokes.hpp:40
void apply_impl(const SrcVectorType &src, DstVectorType &dst)
Definition epsilon_divdiv_stokes.hpp:55
const Block11Type & block_11() const
Definition epsilon_divdiv_stokes.hpp:86
Matrix-free / matrix-based epsilon-div-div operator on wedge elements in a spherical shell.
Definition epsilon_divdiv_kerngen.hpp:58
void set_operator_apply_and_communication_modes(const linalg::OperatorApplyMode operator_apply_mode, const linalg::OperatorCommunicationMode operator_communication_mode)
Definition epsilon_divdiv_kerngen.hpp:216
void set_operator_apply_and_communication_modes(const linalg::OperatorApplyMode operator_apply_mode, const linalg::OperatorCommunicationMode operator_communication_mode)
Definition gradient.hpp:79
Parallel data structure organizing the thick spherical shell metadata for distributed (MPI parallel) ...
Definition spherical_shell.hpp:2498
Block vector consisting of a Q1 vector and a Q1 scalar vector on distributed shell grids.
Definition vector_q1isoq2_q1.hpp:20
const Block1Type & block_1() const
Get const reference to block 1 (vector field).
Definition vector_q1isoq2_q1.hpp:138
const Block2Type & block_2() const
Get const reference to block 2 (scalar field).
Definition vector_q1isoq2_q1.hpp:140
Timer supporting RAII scope or manual stop.
Definition timer.hpp:270
Concept for types that behave like block 2x2 operators. Extends OperatorLike and requires block types...
Definition operator.hpp:117
Definition boundary_mass.hpp:14
BoundaryConditionMapping[2] BoundaryConditions
Definition shell/bit_masks.hpp:37
Kokkos::View< ScalarType ***[VecDim], Layout > Grid3DDataVec
Definition grid_types.hpp:40
Kokkos::View< ScalarType ****, Layout > Grid4DDataScalar
Definition grid_types.hpp:25
Kokkos::View< ScalarType **, Layout > Grid2DDataScalar
Definition grid_types.hpp:19
@ Replace
Overwrite the destination vector.
@ Add
Add to the destination vector.
@ SkipCommunication
Do not communicate.
@ CommunicateAdditively
Communicate and add results.