42 #ifndef TPETRA_ROWMATRIX_DECL_HPP 43 #define TPETRA_ROWMATRIX_DECL_HPP 45 #include <Teuchos_Describable.hpp> 46 #include <Kokkos_DefaultNode.hpp> 48 #include "Tpetra_ConfigDefs.hpp" 50 #include "Tpetra_Operator.hpp" 51 #include "Tpetra_RowGraph.hpp" 61 #ifndef DOXYGEN_SHOULD_SKIP_THIS 62 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
64 #endif // DOXYGEN_SHOULD_SKIP_THIS 93 class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type,
96 virtual public Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
98 public Packable<char, LocalOrdinal> {
131 virtual Teuchos::RCP<const Teuchos::Comm<int> >
getComm()
const = 0;
134 virtual Teuchos::RCP<Node>
getNode()
const = 0;
137 virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
getRowMap()
const = 0;
140 virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
getColMap()
const = 0;
143 virtual Teuchos::RCP<const RowGraph<LocalOrdinal,GlobalOrdinal,Node> >
getGraph()
const = 0;
267 const Teuchos::ArrayView<GlobalOrdinal> &Indices,
268 const Teuchos::ArrayView<Scalar> &Values,
269 size_t &NumEntries)
const = 0;
293 const Teuchos::ArrayView<LocalOrdinal> &Indices,
294 const Teuchos::ArrayView<Scalar> &Values,
295 size_t &NumEntries)
const = 0;
323 Teuchos::ArrayView<const GlobalOrdinal> &indices,
324 Teuchos::ArrayView<const Scalar> &values)
const = 0;
352 Teuchos::ArrayView<const LocalOrdinal>& indices,
353 Teuchos::ArrayView<const Scalar>& values)
const = 0;
383 LocalOrdinal& numEnt,
384 const LocalOrdinal*& lclColInds,
385 const Scalar*& vals)
const;
479 virtual Teuchos::RCP<RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
480 add (
const Scalar& alpha,
485 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null)
const;
491 packRow (
char*
const numEntOut,
495 const LocalOrdinal lclRow)
const;
500 allocatePackSpace (Teuchos::Array<char>& exports,
501 size_t& totalNumEntries,
502 const Teuchos::ArrayView<const LocalOrdinal>& exportLIDs)
const;
509 packImpl (
const Teuchos::ArrayView<const LocalOrdinal>& exportLIDs,
510 Teuchos::Array<char>& exports,
511 const Teuchos::ArrayView<size_t>& numPacketsPerLID,
512 size_t& constantNumPackets,
526 pack (
const Teuchos::ArrayView<const LocalOrdinal>& exportLIDs,
527 Teuchos::Array<char>& exports,
528 const Teuchos::ArrayView<size_t>& numPacketsPerLID,
529 size_t& constantNumPackets,
535 #endif // TPETRA_ROWMATRIX_DECL_HPP virtual Teuchos::RCP< const Teuchos::Comm< int > > getComm() const =0
The communicator over which this matrix is distributed.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getColMap() const =0
The Map that describes the distribution of columns over processes.
virtual global_size_t getGlobalNumDiags() const =0
The number of global diagonal entries, based on global row/column index comparisons.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
virtual bool isLocallyIndexed() const =0
Whether matrix indices are locally indexed.
virtual size_t getNodeMaxNumRowEntries() const =0
The maximum number of entries across all rows/columns on this node.
virtual global_size_t getGlobalNumCols() const =0
The global number of columns of this matrix.
virtual GlobalOrdinal getIndexBase() const =0
The index base for global indices in this matrix.
KokkosClassic::DefaultNode::DefaultNodeType node_type
Default value of Node template parameter.
Node node_type
The Kokkos Node type.
virtual size_t getNodeNumRows() const =0
The number of rows owned by the calling process.
virtual LocalOrdinal getLocalRowViewRaw(const LocalOrdinal lclRow, LocalOrdinal &numEnt, const LocalOrdinal *&lclColInds, const Scalar *&vals) const
Get a constant, nonpersisting, locally indexed view of the given row of the matrix, using "raw" pointers instead of Teuchos::ArrayView.
virtual size_t getNodeNumCols() const =0
The number of columns needed to apply the forward operator on this node.
virtual void getLocalRowCopy(LocalOrdinal LocalRow, const Teuchos::ArrayView< LocalOrdinal > &Indices, const Teuchos::ArrayView< Scalar > &Values, size_t &NumEntries) const =0
Get a copy of the given local row's entries.
virtual bool isLowerTriangular() const =0
Whether this matrix is lower triangular.
virtual Teuchos::RCP< RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > add(const Scalar &alpha, const RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const Scalar &beta, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap=Teuchos::null, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null) const
Return a new RowMatrix which is the result of beta*this + alpha*A.
Declaration of the Tpetra::Vector class.
virtual size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const =0
The current number of entries on the calling process in the specified local row.
virtual void getLocalRowView(LocalOrdinal LocalRow, Teuchos::ArrayView< const LocalOrdinal > &indices, Teuchos::ArrayView< const Scalar > &values) const =0
Get a constant, nonpersisting, locally indexed view of the given row of the matrix.
Abstract base class for sources of an Import or Export.
virtual Teuchos::RCP< const RowGraph< LocalOrdinal, GlobalOrdinal, Node > > getGraph() const =0
The RowGraph associated with this matrix.
LocalOrdinal local_ordinal_type
The type of local indices.
virtual void getLocalDiagCopy(Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node, Node::classic > &diag) const =0
Get a copy of the diagonal entries, distributed by the row Map.
int local_ordinal_type
Default value of LocalOrdinal template parameter.
virtual ~RowMatrix()
Destructor (virtual for memory safety of derived classes).
virtual bool isUpperTriangular() const =0
Whether this matrix is upper triangular.
size_t global_size_t
Global size_t object.
virtual void pack(const Teuchos::ArrayView< const LocalOrdinal > &exportLIDs, Teuchos::Array< char > &exports, const Teuchos::ArrayView< size_t > &numPacketsPerLID, size_t &constantNumPackets, Distributor &distor) const
Pack this object's data for an Import or Export.
virtual void getGlobalRowView(GlobalOrdinal GlobalRow, Teuchos::ArrayView< const GlobalOrdinal > &indices, Teuchos::ArrayView< const Scalar > &values) const =0
Get a constant, nonpersisting, globally indexed view of the given row of the matrix.
virtual void getGlobalRowCopy(GlobalOrdinal GlobalRow, const Teuchos::ArrayView< GlobalOrdinal > &Indices, const Teuchos::ArrayView< Scalar > &Values, size_t &NumEntries) const =0
Get a copy of the given global row's entries.
virtual size_t getGlobalMaxNumRowEntries() const =0
The maximum number of entries across all rows/columns on all nodes.
Abstract interface for operators (e.g., matrices and preconditioners).
GlobalOrdinal global_ordinal_type
The type of global indices.
virtual size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const =0
The current number of entries on the calling process in the specified global row. ...
Sets up and executes a communication plan for a Tpetra DistObject.
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::mag_type mag_type
Type of a norm result.
virtual void rightScale(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node, Node::classic > &x)=0
Scale the RowMatrix on the right with the given Vector x.
Abstract base class for objects that can be the source of an Import or Export operation.
double scalar_type
Default value of Scalar template parameter.
virtual Teuchos::RCP< Node > getNode() const =0
The Kokkos Node instance.
virtual bool isFillComplete() const =0
Whether fillComplete() has been called.
virtual global_size_t getGlobalNumEntries() const =0
The global number of stored (structurally nonzero) entries.
Scalar scalar_type
The type of the entries in the sparse matrix.
Kokkos::Details::ArithTraits< impl_scalar_type >::mag_type mag_type
Type of a norm result.
Describes a parallel distribution of objects over processes.
virtual bool supportsRowViews() const =0
Whether this object implements getLocalRowView() and getGlobalRowView().
A read-only, row-oriented interface to a sparse matrix.
A distributed dense vector.
virtual size_t getNodeNumEntries() const =0
The local number of stored (structurally nonzero) entries.
virtual bool isGloballyIndexed() const =0
Whether matrix indices are globally indexed.
Abstract base class for sources of an Import or Export, that also know how to pack themselves...
Abstract base class for objects that can be the source of an Import or Export operation, and that also know how to pack their data to send to the target object.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRowMap() const =0
The Map that describes the distribution of rows over processes.
virtual bool hasColMap() const =0
Whether this matrix has a well-defined column map.
virtual size_t getNodeNumDiags() const =0
The number of local diagonal entries, based on global row/column index comparisons.
virtual global_size_t getGlobalNumRows() const =0
The global number of rows of this matrix.
virtual void leftScale(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node, Node::classic > &x)=0
Scale the RowMatrix on the left with the given Vector x.
virtual mag_type getFrobeniusNorm() const =0
The Frobenius norm of the matrix.