16template <
typename ScalarT,
int VecDim = 3 >
44 BoundaryConditions bcs,
46 : A_( domain_fine, grid, radii, boundary_mask_data_fine, bcs, diagonal )
47 , B_T_( domain_fine, domain_coarse, grid, radii, boundary_mask_data_fine, bcs )
48 , B_( domain_fine, domain_coarse, grid, radii, boundary_mask_data_fine, bcs )
49 , diagonal_( diagonal )
89 throw std::runtime_error(
"block_12() is not implemented for diagonal Stokes operator" );
99 throw std::runtime_error(
"block_21() is not implemented for diagonal Stokes operator" );
112 throw std::runtime_error(
"block_12() is not implemented for diagonal Stokes operator" );
121 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
void set_operator_apply_and_communication_modes(const linalg::OperatorApplyMode operator_apply_mode, const linalg::OperatorCommunicationMode operator_communication_mode)
Definition gradient.hpp:79
const Block21Type & block_21() const
Definition stokes.hpp:95
Block12Type & block_12()
Definition stokes.hpp:108
void apply_impl(const SrcVectorType &src, DstVectorType &dst)
Definition stokes.hpp:52
Stokes(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 > &boundary_mask_data_fine, BoundaryConditions bcs, bool diagonal)
Definition stokes.hpp:38
Block22Type & block_22()
Definition stokes.hpp:126
ScalarT ScalarType
Definition stokes.hpp:22
const Block22Type & block_22() const
Definition stokes.hpp:105
const Block11Type & block_11() const
Definition stokes.hpp:83
const Block12Type & block_12() const
Definition stokes.hpp:85
Block11Type & block_11()
Definition stokes.hpp:107
Block21Type & block_21()
Definition stokes.hpp:117
Definition vector_laplace.hpp:33
void set_operator_apply_and_communication_modes(const linalg::OperatorApplyMode operator_apply_mode, const linalg::OperatorCommunicationMode operator_communication_mode)
Definition vector_laplace.hpp:84
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
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.