26template <
typename ScalarType, linalg::OperatorLike OperatorType,
typename FlagType >
28 OperatorType& A_neumann,
29 OperatorType& A_neumann_diag,
34 const FlagType& dirichlet_boundary_mask )
49template <
typename ScalarType, linalg::OperatorLike OperatorType,
typename FlagType >
51 OperatorType& A_neumann,
52 OperatorType& A_neumann_diag,
57 const FlagType& dirichlet_boundary_mask )
76template <
typename ScalarType, util::FlagLike FlagType >
80 const FlagType& dirichlet_boundary_mask )
88template <
typename ScalarType, linalg::OperatorLike OperatorType, util::FlagLike FlagType >
90 OperatorType& K_neumann,
91 OperatorType& K_neumann_diag,
96 const FlagType& dirichlet_boundary_mask )
114template <
typename ScalarType, util::FlagLike FlagType >
118 const FlagType& dirichlet_boundary_mask )
122 b.
block_1().
grid_data(), ScalarType( 0 ), mask_data, dirichlet_boundary_mask );
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 grid::Grid4DDataScalar< ScalarType > & grid_data() const
Get const reference to grid data.
Definition vector_q1.hpp:137
Static assertion: VectorQ1Scalar satisfies VectorLike concept.
Definition vector_q1.hpp:162
const grid::Grid4DDataVec< ScalarType, VecDim > & grid_data() const
Get const reference to grid data.
Definition vector_q1.hpp:280
Definition strong_algebraic_dirichlet_enforcement.hpp:8
void strong_algebraic_velocity_dirichlet_enforcement_stokes_like(OperatorType &K_neumann, OperatorType &K_neumann_diag, const linalg::VectorQ1IsoQ2Q1< ScalarType > &g, linalg::VectorQ1IsoQ2Q1< ScalarType > &tmp, linalg::VectorQ1IsoQ2Q1< ScalarType > &b, const grid::Grid4DDataScalar< FlagType > &mask_data, const FlagType &dirichlet_boundary_mask)
Same as strong_algebraic_dirichlet_enforcement_poisson_like() for Stokes-like systems (with strong en...
Definition strong_algebraic_dirichlet_enforcement.hpp:89
void strong_algebraic_homogeneous_dirichlet_enforcement_poisson_like(linalg::VectorQ1Scalar< ScalarType > &b, const grid::Grid4DDataScalar< FlagType > &mask_data, const FlagType &dirichlet_boundary_mask)
Same as strong_algebraic_dirichlet_enforcement_poisson_like() for homogenous boundary conditions ( ).
Definition strong_algebraic_dirichlet_enforcement.hpp:77
void strong_algebraic_dirichlet_enforcement_poisson_like(OperatorType &A_neumann, OperatorType &A_neumann_diag, const linalg::VectorQ1Scalar< ScalarType > &g, linalg::VectorQ1Scalar< ScalarType > &tmp, linalg::VectorQ1Scalar< ScalarType > &b, const grid::Grid4DDataScalar< FlagType > &mask_data, const FlagType &dirichlet_boundary_mask)
Helper function to modify the right-hand side vector accordingly for strong Dirichlet boundary condit...
Definition strong_algebraic_dirichlet_enforcement.hpp:27
void strong_algebraic_homogeneous_velocity_dirichlet_enforcement_stokes_like(linalg::VectorQ1IsoQ2Q1< ScalarType > &b, const grid::Grid4DDataScalar< FlagType > &mask_data, const FlagType &dirichlet_boundary_mask)
Same as strong_algebraic_homogeneous_dirichlet_enforcement_poisson_like() for Stokes-like systems (wi...
Definition strong_algebraic_dirichlet_enforcement.hpp:115
void strong_algebraic_dirichlet_enforcement_vectorlaplace_like(OperatorType &A_neumann, OperatorType &A_neumann_diag, const linalg::VectorQ1Vec< ScalarType > &g, linalg::VectorQ1Vec< ScalarType > &tmp, linalg::VectorQ1Vec< ScalarType > &b, const grid::Grid4DDataScalar< FlagType > &mask_data, const FlagType &dirichlet_boundary_mask)
Definition strong_algebraic_dirichlet_enforcement.hpp:50
Kokkos::View< ScalarType ****, Layout > Grid4DDataScalar
Definition grid_types.hpp:25
void assign_masked_else_keep_old(const grid::Grid4DDataScalar< ScalarType > &dst, const ScalarType &value, const grid::Grid4DDataScalar< FlagType > &mask_grid, const FlagType mask_value)
Definition grid_operations.hpp:80
void lincomb(Vector &y, const std::vector< ScalarOf< Vector > > &c, const std::vector< Vector > &x, const ScalarOf< Vector > &c0)
Compute a linear combination of vectors. Implements: .
Definition vector.hpp:72
void apply(LinearForm &L, typename LinearForm::DstVectorType &dst)
Apply a linear form and write to a destination vector.
Definition linear_form.hpp:37