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
77 isSkew (
const std::string& symmType) {
78 return symmType.size() >= 4 && symmType.substr(0,4) ==
"skew";
82 isConj (
const std::string& symmType) {
83 return std::string::npos != symmType.find (
"hermitian");
87 needsSymmetrization (
const std::string& symmType) {
88 return symmType !=
"general";
111 template<
class AdderType>
126 const std::string& symmType) :
#define TRILINOS_UNUSED_FUNCTION
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.
Teuchos::RCP< AdderType > adder_
The wrapped AdderType instance.
AdderType::value_type value_type
The type of entries of the sparse matrix.
bool conjugate_
Whether to conjugate when symmetrizing.
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.
bool skew_
Whether to negate when symmetrizing.
bool symmetrize_
Whether to do symmetrization at all.
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.
Concrete serial communicator subclass.
Matrix Market file utilities.