summaryrefslogtreecommitdiff
path: root/tensor.hpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2021-11-09 10:13:59 +0100
committerJaron Kent-Dobias <jaron@kent-dobias.com>2021-11-09 10:13:59 +0100
commit7bf6e952b53699977f5091a78f0f9f48f7b359c5 (patch)
tree4d5637c53daf33e10fc58334cb3b15b8aa07c0d8 /tensor.hpp
parentd448af5010b664025c816dc2c6e383ac7bea3491 (diff)
downloadcode-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.hpp18
1 files changed, 3 insertions, 15 deletions
diff --git a/tensor.hpp b/tensor.hpp
index aa33069..fc99042 100644
--- a/tensor.hpp
+++ b/tensor.hpp
@@ -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);
-}