42#ifndef __Teuchos_MatrixMarket_SymmetrizingAdder_hpp
43#define __Teuchos_MatrixMarket_SymmetrizingAdder_hpp
52#if ! defined(TRILINOS_UNUSED_FUNCTION)
53# if defined(__GNUC__) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
54# define TRILINOS_UNUSED_FUNCTION __attribute__((__unused__))
55# elif defined(__clang__)
56# if __has_attribute(unused)
57# define TRILINOS_UNUSED_FUNCTION __attribute__((__unused__))
59# define TRILINOS_UNUSED_FUNCTION
61# elif defined(__IBMCPP__)
65# define TRILINOS_UNUSED_FUNCTION
67# define TRILINOS_UNUSED_FUNCTION
76 TRILINOS_UNUSED_FUNCTION
bool
77 isSkew (
const std::string& symmType) {
78 return symmType.size() >= 4 && symmType.substr(0,4) ==
"skew";
81 TRILINOS_UNUSED_FUNCTION
bool
82 isConj (
const std::string& symmType) {
83 return std::string::npos != symmType.find (
"hermitian");
86 TRILINOS_UNUSED_FUNCTION
bool
87 needsSymmetrization (
const std::string& symmType) {
88 return symmType !=
"general";
111 template<
class AdderType>
126 const std::string& symmType) :
129 conjugate_ (
isConj (symmType)),
142 if (symmetrize_ &&
i !=
j) {
146 (conjugate_ ? STS::conjugate(
Aij) :
Aij);
Defines basic traits for the scalar field type.
Definition of Teuchos::as, for conversions between types.
Adds entries with optional symmetry to a sparse matrix.
AdderType::value_type value_type
The type of entries of the sparse matrix.
AdderType::index_type index_type
The type of indices of the sparse matrix.
SymmetrizingAdder(const Teuchos::RCP< AdderType > &adder, const std::string &symmType)
Constructor.
Teuchos::RCP< AdderType > getAdder() const
Persisting non-const view of the underlying adder object.
void operator()(const index_type i, const index_type j, const value_type &Aij)
Add value A_ij to entry (i,j), and optionally symmetrize.
Smart reference counting pointer class for automatic garbage collection.
Matrix Market file utilities.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...