diff options
author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-09 10:13:59 +0100 |
---|---|---|
committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-09 10:13:59 +0100 |
commit | 7bf6e952b53699977f5091a78f0f9f48f7b359c5 (patch) | |
tree | 4d5637c53daf33e10fc58334cb3b15b8aa07c0d8 /tensor.hpp | |
parent | d448af5010b664025c816dc2c6e383ac7bea3491 (diff) | |
download | code-7bf6e952b53699977f5091a78f0f9f48f7b359c5.tar.gz code-7bf6e952b53699977f5091a78f0f9f48f7b359c5.tar.bz2 code-7bf6e952b53699977f5091a78f0f9f48f7b359c5.zip |
Generalized code to easily allow mixed p-spins.
Diffstat (limited to 'tensor.hpp')
-rw-r--r-- | tensor.hpp | 18 |
1 files changed, 3 insertions, 15 deletions
@@ -111,27 +111,15 @@ Tensor<Scalar, p> plantState(const Tensor<Scalar, p>& J, const Vector<Scalar>& z } template <class Scalar> -Matrix<Scalar> contractDown(const Tensor<Scalar, 2>& J, const Vector<Scalar>& z) { - return Eigen::Map<const Matrix<Scalar>>(J.data(), z.size(), z.size()); +Tensor<Scalar, 3> contractDown(const Tensor<Scalar, 3>& J, const Vector<Scalar>& z) { + return J; } const std::array<Eigen::IndexPair<int>, 1> ip00 = {Eigen::IndexPair<int>(0, 0)}; template <class Scalar, int r> -Matrix<Scalar> contractDown(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) { +Tensor<Scalar, 3> contractDown(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) { Tensor<Scalar, 1> zT = Eigen::TensorMap<Tensor<const Scalar, 1>>(z.data(), {z.size()}); Tensor<Scalar, r - 1> Jz = J.contract(zT, ip00); return contractDown(Jz, z); } - -template <int f, class Scalar> -Tensor<Scalar, f> contractDownTo(const Tensor<Scalar, f>& J, const Vector<Scalar>& z) { - return J; -} - -template <int f, class Scalar, int r> -Tensor<Scalar, f> contractDownTo(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) { - Tensor<Scalar, 1> zT = Eigen::TensorMap<Tensor<const Scalar, 1>>(z.data(), {z.size()}); - Tensor<Scalar, r - 1> Jz = J.contract(zT, ip00); - return contractDownTo<f>(Jz, z); -} |