Commit 1291c2c3 authored by Grégoire Uhlrich's avatar Grégoire Uhlrich
Browse files

Corrected multiplicity and irrep storage in tensor product (expander -> gauge)

parent 740b2faf
......@@ -602,6 +602,7 @@ class SemiSimpleAlgebra{
*/
csl::vector_expr symbolicSquaredNorms;
mutable
std::vector<std::pair<AlgebraState, Irrep>> irreps;
mutable std::vector<IndexData> indices;
......
......@@ -98,8 +98,7 @@ bool Gauge::containsTrivialRep(
for (size_t j = 1; j != fields.size(); ++j) {
decompo = groups[i]->getAlgebra()->tensorProduct(
decompo,
fields[j].getGroupIrrep(groups[i].get()),
false
fields[j].getGroupIrrep(groups[i].get())
);
}
bool hasTrivial = false;
......
......@@ -633,6 +633,7 @@ mty::Irrep SemiSimpleAlgebra::highestWeightRep(
for (const auto& [highest, rep] : irreps)
if (highest == highestWeight)
return rep;
Irrep res_rep;
if constexpr (useExperimental) {
std::vector<AlgebraState> state;
std::vector<std::vector<bool>> dep;
......@@ -640,17 +641,19 @@ mty::Irrep SemiSimpleAlgebra::highestWeightRep(
dep.reserve(1000);
getRootChainExperimental(highestWeight, state, dep);
if (computeMul)
return mty::Irrep(this,state, multiplicities(state));
res_rep = mty::Irrep(this,state, multiplicities(state));
else
return mty::Irrep(this, state, std::vector<int>(state.size(), 1));
res_rep = mty::Irrep(this, state, std::vector<int>(state.size(), 1));
}
else {
vector<AlgebraState> rep = getRootChain(highestWeight);
if (computeMul)
return mty::Irrep(this,rep, multiplicities(rep));
res_rep = mty::Irrep(this, rep, multiplicities(rep));
else
return mty::Irrep(this, rep, std::vector<int>(rep.size(), 1));
res_rep = mty::Irrep(this, rep, std::vector<int>(rep.size(), 1));
}
irreps.push_back({highestWeight, res_rep});
return res_rep;
}
mty::Irrep SemiSimpleAlgebra::highestWeightRep(
const std::vector<int>& weight,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment