Loading src/Engine/MeraEnviron.h +11 −11 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ private: PairSizeType layer = findLayerNumber(name, id, limits); thisEnv += "Layer=" + ttos(layer.first) + "\n"; thisEnv += "FirstOfLayer=" + ttos(layer.second) + "\n"; bool isRootTensor = (tensorSrep_(ind).fullName()[0] == 'r'); bool isRootTensor = (tensorSrep_(ind).isRootTensor()); for (SizeType c = 0; c < connections; ++c) { if (vstr[c] == "") continue; PsimagLite::String tmp = "u" + ttos(counterForOutput++); Loading @@ -131,14 +131,14 @@ private: err("Invalid tensor\n"); SizeType jnd = tensorSrep4.findConjugate(ind); bool hasConjugate = (jnd < tensorSrep4.size()); bool isRootTensor = (tensorSrep_(ind).fullName()[0] == 'r'); bool isRootTensor = (tensorSrep_(ind).isRootTensor()); bool mpsMode = (tensorSrep_(ind).fullName()[0] == 'a'); if (!hasConjugate) { if (isRootTensor) { if (isRootTensor && !mpsMode) err("Environ for root: INTERNAL ERROR\n"); } else { std::cerr<<"EMPTY_ENVIRON="<<tensorSrep4.sRep()<<"\n"; return TensorSrep(""); } } else if (isRootTensor) { tensorSrep4.eraseTensor(irreducibleIdentity_,jnd,0); // use energySrep to compute r size Loading Loading @@ -376,7 +376,7 @@ private: { SizeType ntensors = dimensionSrep_.size(); for (SizeType i = 0; i < ntensors; ++i) { if (dimensionSrep_(i).fullName()[0] != 'r') continue; if (dimensionSrep_(i).isRootTensor()) continue; SizeType ins = dimensionSrep_(i).ins(); SizeType ret = 1; Loading Loading @@ -432,11 +432,11 @@ private: void findLimits(VectorSizeType& limits) const { SizeType arity = builder_.arity(); if (arity == 0) return; SizeType sites = builder_.sites(); if (arity != 2) { PsimagLite::RuntimeError("findLimits: supported only for arity=2\n"); } if (arity != 2) err("findLimits: supported only for arity=2\n"); limits.push_back(sites/arity); SizeType tmp = sites/arity; Loading src/Engine/TensorOptimizer.h +0 −17 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ public: indToOptimize_(nameToIndexLut_(nameToOptimize + ttos(idToOptimize))), layer_(0), firstOfLayer_(0), indexOfRootTensor_(0), params_(params), paramsForMera_(paramsForMera), symmLocal_(symmLocal), Loading Loading @@ -109,18 +108,6 @@ public: srep.replace(index,5,"="); tensorSrep_[i] = new SrepStatementType(srep); } bool flag = false; for (SizeType i = 0; i < tensors_.size(); ++i) { if (tensors_[i]->name()[0] == 'r') { indexOfRootTensor_ = i; flag = true; break; } } if (!flag) throw PsimagLite::RuntimeError("TensorOptimizer: Root tensor not found\n"); } ~TensorOptimizer() Loading Loading @@ -405,9 +392,6 @@ private: RealType computeRyR(const MatrixType& y) const { if (indToOptimize_ != indexOfRootTensor_) throw PsimagLite::RuntimeError("Don't call computeRyR unless optimizing root\n"); RealType sum = 0.0; const TensorType& r = *tensors_[indToOptimize_]; assert(r.args() == 2); Loading Loading @@ -446,7 +430,6 @@ private: SizeType ignore_; SizeType layer_; SizeType firstOfLayer_; SizeType indexOfRootTensor_; const ParametersForSolverType& params_; const ParametersForMeraType& paramsForMera_; SymmetryLocalType* symmLocal_; Loading src/Engine/TensorSrep.h +2 −2 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ public: assert(index < data_.size()); bool identityIdIncreased = false; if (data_[index]->fullName()[0] == 'r') if (data_[index]->isRootTensor()) identityIdIncreased = addIrreducibleIdentity(irrIdentity); if (identityIdIncreased) irrIdentity.increase(); Loading Loading @@ -636,7 +636,7 @@ private: SizeType flag1 = 0; SizeType loc0 = 0; for (SizeType i = 0; i < ntensors; ++i) { if (data_[i]->fullName()[0] != 'r') continue; if (data_[i]->isRootTensor()) continue; bool b = data_[i]->isConjugate(); if (b) { flag0++; Loading src/Engine/TensorStanza.h +6 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,12 @@ public: return false; } bool isRootTensor() const { return (opaque_.fullName_[0] == 'r' || opaque_.fullName_[0] == 'a'); } static TensorStanza* newStanza(const TensorStanza& other) { TensorStanza* intercept = new TensorStanza(other); Loading Loading
src/Engine/MeraEnviron.h +11 −11 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ private: PairSizeType layer = findLayerNumber(name, id, limits); thisEnv += "Layer=" + ttos(layer.first) + "\n"; thisEnv += "FirstOfLayer=" + ttos(layer.second) + "\n"; bool isRootTensor = (tensorSrep_(ind).fullName()[0] == 'r'); bool isRootTensor = (tensorSrep_(ind).isRootTensor()); for (SizeType c = 0; c < connections; ++c) { if (vstr[c] == "") continue; PsimagLite::String tmp = "u" + ttos(counterForOutput++); Loading @@ -131,14 +131,14 @@ private: err("Invalid tensor\n"); SizeType jnd = tensorSrep4.findConjugate(ind); bool hasConjugate = (jnd < tensorSrep4.size()); bool isRootTensor = (tensorSrep_(ind).fullName()[0] == 'r'); bool isRootTensor = (tensorSrep_(ind).isRootTensor()); bool mpsMode = (tensorSrep_(ind).fullName()[0] == 'a'); if (!hasConjugate) { if (isRootTensor) { if (isRootTensor && !mpsMode) err("Environ for root: INTERNAL ERROR\n"); } else { std::cerr<<"EMPTY_ENVIRON="<<tensorSrep4.sRep()<<"\n"; return TensorSrep(""); } } else if (isRootTensor) { tensorSrep4.eraseTensor(irreducibleIdentity_,jnd,0); // use energySrep to compute r size Loading Loading @@ -376,7 +376,7 @@ private: { SizeType ntensors = dimensionSrep_.size(); for (SizeType i = 0; i < ntensors; ++i) { if (dimensionSrep_(i).fullName()[0] != 'r') continue; if (dimensionSrep_(i).isRootTensor()) continue; SizeType ins = dimensionSrep_(i).ins(); SizeType ret = 1; Loading Loading @@ -432,11 +432,11 @@ private: void findLimits(VectorSizeType& limits) const { SizeType arity = builder_.arity(); if (arity == 0) return; SizeType sites = builder_.sites(); if (arity != 2) { PsimagLite::RuntimeError("findLimits: supported only for arity=2\n"); } if (arity != 2) err("findLimits: supported only for arity=2\n"); limits.push_back(sites/arity); SizeType tmp = sites/arity; Loading
src/Engine/TensorOptimizer.h +0 −17 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ public: indToOptimize_(nameToIndexLut_(nameToOptimize + ttos(idToOptimize))), layer_(0), firstOfLayer_(0), indexOfRootTensor_(0), params_(params), paramsForMera_(paramsForMera), symmLocal_(symmLocal), Loading Loading @@ -109,18 +108,6 @@ public: srep.replace(index,5,"="); tensorSrep_[i] = new SrepStatementType(srep); } bool flag = false; for (SizeType i = 0; i < tensors_.size(); ++i) { if (tensors_[i]->name()[0] == 'r') { indexOfRootTensor_ = i; flag = true; break; } } if (!flag) throw PsimagLite::RuntimeError("TensorOptimizer: Root tensor not found\n"); } ~TensorOptimizer() Loading Loading @@ -405,9 +392,6 @@ private: RealType computeRyR(const MatrixType& y) const { if (indToOptimize_ != indexOfRootTensor_) throw PsimagLite::RuntimeError("Don't call computeRyR unless optimizing root\n"); RealType sum = 0.0; const TensorType& r = *tensors_[indToOptimize_]; assert(r.args() == 2); Loading Loading @@ -446,7 +430,6 @@ private: SizeType ignore_; SizeType layer_; SizeType firstOfLayer_; SizeType indexOfRootTensor_; const ParametersForSolverType& params_; const ParametersForMeraType& paramsForMera_; SymmetryLocalType* symmLocal_; Loading
src/Engine/TensorSrep.h +2 −2 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ public: assert(index < data_.size()); bool identityIdIncreased = false; if (data_[index]->fullName()[0] == 'r') if (data_[index]->isRootTensor()) identityIdIncreased = addIrreducibleIdentity(irrIdentity); if (identityIdIncreased) irrIdentity.increase(); Loading Loading @@ -636,7 +636,7 @@ private: SizeType flag1 = 0; SizeType loc0 = 0; for (SizeType i = 0; i < ntensors; ++i) { if (data_[i]->fullName()[0] != 'r') continue; if (data_[i]->isRootTensor()) continue; bool b = data_[i]->isConjugate(); if (b) { flag0++; Loading
src/Engine/TensorStanza.h +6 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,12 @@ public: return false; } bool isRootTensor() const { return (opaque_.fullName_[0] == 'r' || opaque_.fullName_[0] == 'a'); } static TensorStanza* newStanza(const TensorStanza& other) { TensorStanza* intercept = new TensorStanza(other); Loading