42#ifndef TPETRA_DETAILS_LEFTSCALELOCALCRSMATRIX_HPP
43#define TPETRA_DETAILS_LEFTSCALELOCALCRSMATRIX_HPP
52#include "TpetraCore_config.h"
53#include "Kokkos_Core.hpp"
54#include "Kokkos_ArithTraits.hpp"
68template<
class LocalSparseMatrixType,
69 class ScalingFactorsViewType,
74 typename std::remove_const<typename LocalSparseMatrixType::value_type>::type;
75 using mag_type =
typename ScalingFactorsViewType::non_const_value_type;
76 static_assert (ScalingFactorsViewType::Rank == 1,
77 "scalingFactors must be a rank-1 Kokkos::View.");
78 using device_type =
typename LocalSparseMatrixType::device_type;
90 const bool assumeSymmetric) :
93 assumeSymmetric_ (assumeSymmetric)
99 using LO =
typename LocalSparseMatrixType::ordinal_type;
100 using KAM = Kokkos::ArithTraits<mag_type>;
120 LocalSparseMatrixType A_lcl_;
121 typename ScalingFactorsViewType::const_type scalingFactors_;
122 bool assumeSymmetric_;
138template<
class LocalSparseMatrixType,
class ScalingFactorsViewType>
142 const bool assumeSymmetric,
145 using device_type =
typename LocalSparseMatrixType::device_type;
146 using execution_space =
typename device_type::execution_space;
147 using LO =
typename LocalSparseMatrixType::ordinal_type;
148 using range_type = Kokkos::RangePolicy<execution_space, LO>;
154 typename ScalingFactorsViewType::const_type,
true>;
156 Kokkos::parallel_for (
"leftScaleLocalCrsMatrix",
162 typename ScalingFactorsViewType::const_type,
false>;
164 Kokkos::parallel_for (
"leftScaleLocalCrsMatrix",
Struct that holds views of the contents of a CrsMatrix.
Kokkos::parallel_for functor that left-scales a KokkosSparse::CrsMatrix.
LeftScaleLocalCrsMatrix(const LocalSparseMatrixType &A_lcl, const ScalingFactorsViewType &scalingFactors, const bool assumeSymmetric)
Implementation details of Tpetra.
void leftScaleLocalCrsMatrix(const LocalSparseMatrixType &A_lcl, const ScalingFactorsViewType &scalingFactors, const bool assumeSymmetric, const bool divide=true)
Left-scale a KokkosSparse::CrsMatrix.
Namespace Tpetra contains the class and methods constituting the Tpetra library.