QN degeneracy caused "segmentation fault" for odd number of sites

+1 vote

Here by "QN" degeneracy I mean that two Index-QN pair defined in an IQIndex have the same QN (quantum number). For example, the following two pairs are degenerate :

Index(nameint("pzm101",n),1,Site),QN({0,-1},{2,1},{0,1},{0,1})
Index(nameint("pzm020",n),1,Site),QN({0,-1},{2,1},{0,1},{0,1})


if such degeneracy appears in the definition of IQIndex, than "segmentation fault" might happen. I seems we can redefine a Index-QN pair with two sector:

Index(nameint("pzm***",n),2,Site),QN({0,-1},{2,1},{0,1},{0,1})


But it may have problems when we try to define operators. On the other hand, QN only receive at most 4 slots, I can no longer add an additional quantum number to distinguish these two states.

Thank you.

commented by (310 points)
Hi Junjie,

For your last question, I think maybe you can edit the qn.h to allow more QNs.

There are code as follows:

explicit
QN(qn_t q0);

QN(qn_t q0,
qn_t q1);

QN(qn_t q0,
qn_t q1,
qn_t q2);

QN(qn_t q0,
qn_t q1,
qn_t q2,
qn_t q3);

you may just try to add a similiar one:

QN(qn_t q0,
qn_t q1,
qn_t q2,
qn_t q3,
qn_t q4);

Would that work?

Zhiyu
commented by (650 points)
Hi, Zhiyu, it should work. But it seems that all quantum number defined in QN object should a good quantum number of the Hamiltonian, otherwise error occurs. I shall do some tests and discuss it with you later. Thank you.