1#ifndef XPED_COEFF_BINARY_OP_H_
2#define XPED_COEFF_BINARY_OP_H_
12template <
typename XprTypeLeft,
typename XprTypeRight>
15template <
typename XprTypeLeft,
typename XprTypeRight>
18 static constexpr std::size_t Rank = XprTypeLeft::Rank;
19 static constexpr std::size_t CoRank = XprTypeLeft::CoRank;
20 typedef typename XprTypeLeft::Scalar
Scalar;
21 typedef typename XprTypeLeft::Symmetry
Symmetry;
25template <
typename XprTypeLeft,
typename XprTypeRight>
29 static inline constexpr std::size_t
Rank = XprTypeLeft::Rank;
30 static inline constexpr std::size_t
CoRank = XprTypeLeft::CoRank;
31 typedef typename XprTypeLeft::Scalar
Scalar;
32 typedef typename XprTypeLeft::Symmetry
Symmetry;
34 typedef typename Symmetry::qType
qType;
41 static_assert(XprTypeLeft::Rank == XprTypeRight::Rank);
42 static_assert(XprTypeLeft::CoRank == XprTypeRight::CoRank);
43 static_assert(std::is_same<typename XprTypeLeft::Symmetry, typename XprTypeLeft::Symmetry>::value);
53 inline const std::string
name()
const {
return "CoeffBinaryOp"; }
Definition: CoeffBinaryOp.hpp:27
static constexpr std::size_t CoRank
Definition: CoeffBinaryOp.hpp:30
const auto uncoupledDomain() const
Definition: CoeffBinaryOp.hpp:67
const qType sector(std::size_t i) const
Definition: CoeffBinaryOp.hpp:58
const auto block(std::size_t i) const
Definition: CoeffBinaryOp.hpp:60
const auto coupledDomain() const
Definition: CoeffBinaryOp.hpp:70
constexpr std::size_t rank() const
Definition: CoeffBinaryOp.hpp:54
Symmetry::qType qType
Definition: CoeffBinaryOp.hpp:34
XprTypeLeft::Scalar Scalar
Definition: CoeffBinaryOp.hpp:31
XPED_CONST XprTypeLeft & refxpr_l_
Definition: CoeffBinaryOp.hpp:77
auto codomainTrees(const qType &q) const
Definition: CoeffBinaryOp.hpp:74
CoeffBinaryOp(XPED_CONST XprTypeLeft &xpr_l, XPED_CONST XprTypeRight &xpr_r, const std::function< Scalar(Scalar, Scalar)> &coeff_func)
Definition: CoeffBinaryOp.hpp:36
const std::string name() const
Definition: CoeffBinaryOp.hpp:53
auto domainTrees(const qType &q) const
Definition: CoeffBinaryOp.hpp:73
constexpr std::size_t corank() const
Definition: CoeffBinaryOp.hpp:55
const auto dict() const
Definition: CoeffBinaryOp.hpp:63
const auto sector() const
Definition: CoeffBinaryOp.hpp:57
const auto coupledCodomain() const
Definition: CoeffBinaryOp.hpp:71
const std::function< Scalar(Scalar, Scalar)> coeff_func_
Definition: CoeffBinaryOp.hpp:79
const mpi::XpedWorld & world() const
Definition: CoeffBinaryOp.hpp:65
typename XprTypeLeft::AllocationPolicy AllocationPolicy
Definition: CoeffBinaryOp.hpp:33
auto block(std::size_t i)
Definition: CoeffBinaryOp.hpp:61
static constexpr std::size_t Rank
Definition: CoeffBinaryOp.hpp:29
XprTypeLeft::Symmetry Symmetry
Definition: CoeffBinaryOp.hpp:32
XPED_CONST XprTypeRight & refxpr_r_
Definition: CoeffBinaryOp.hpp:78
const auto uncoupledCodomain() const
Definition: CoeffBinaryOp.hpp:68
Definition: TensorBase.hpp:36
static MType< Scalar > binaryFunc(MTL &&M_left, MTR &&M_right, const std::function< Scalar(Scalar, Scalar)> &func)
typename XprTypeLeft::AllocationPolicy AllocationPolicy
Definition: CoeffBinaryOp.hpp:22
XprTypeLeft::Scalar Scalar
Definition: CoeffBinaryOp.hpp:20
XprTypeLeft::Symmetry Symmetry
Definition: CoeffBinaryOp.hpp:21
Definition: TensorBase.hpp:10