10#ifndef MUELU_SPARSECONSTRAINT_DECL_HPP
11#define MUELU_SPARSECONSTRAINT_DECL_HPP
13#include "Teuchos_ScalarTraits.hpp"
15#include <Xpetra_MultiVector_fwd.hpp>
16#include <Xpetra_Matrix.hpp>
17#include <Xpetra_CrsGraph_fwd.hpp>
18#include <Xpetra_MapFactory_fwd.hpp>
22#include "MueLu_Constraint.hpp"
31 :
public Constraint<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
32#undef MUELU_SPARSECONSTRAINT_SHORT
40 using MagnitudeType =
typename Teuchos::ScalarTraits<Scalar>::magnitudeType;
53 SparseConstraint(
const RCP<Matrix>& P_nodal,
const RCP<Matrix>& D,
const RCP<Matrix>& Dc, RCP<const CrsGraph> Ppattern,
const std::string& solverType);
59 typename CrsGraph::local_graph_type
FindBlocks(RCP<const CrsGraph>& )
override;
85#define MUELU_SPARSECONSTRAINT_SHORT
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Constraint space information for the potential prolongator.
RCP< Matrix > P_nodal_
Nodal prolongator.
void AssignMatrixEntriesToConstraintVector(const Matrix &A, MultiVector &vecC) const
SparseConstraint()=default
Kokkos::View< bool * > block_is_singular_
block_is_singular(i) indicates whether matrix for ith constraint is singular
RCP< Matrix > D_
Fine nullspace.
RCP< Matrix > Dc_
Coarse nullspace.
typename Teuchos::ScalarTraits< Scalar >::magnitudeType MagnitudeType
CrsGraph::local_graph_type FindBlocks(RCP< const CrsGraph > &) override
RCP< const CrsGraph > RHS_pattern_
Pattern for RHS.
MagnitudeType ResidualNorm(RCP< const Matrix > P) const override
Namespace for MueLu classes and methods.
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Tpetra::Details::DefaultTypes::scalar_type DefaultScalar