Hello all, my name is Axel! I am currently working on a lattice model essentially consisting of a 1D chain of cavities with bosonic degrees of freedom, connected via two-level systems (qubits), like Q-C-Q-C-Q-C....

I need to perform a DMRG calculation on the system. As I understand it, I am supposed to define a SiteSet describing the combined degree of freedom of an adjacent cavity and qubit, then use AutoMPO to define the Hamiltonian. Presumably, I could somehow also construct the site set and the operators by hand.

My question is: what is the best way of using ITensor to do this? Am I missing something here? It would be really useful if there was some kind of Kronecker product which I could use to define the MPO:s for example, since there is already a SiteSet defined for spin 1/2. That would make the pre-defined SiteSets much more flexible, I guess.

I also want to take the opportunity to thank the ITensor developers: I think that you have developed a comprehensible and very promising tensor library, and look forward to using and contributing to it in the future.

I already started looking at how to write a new SiteSet. The bosons are unbounded/soft and the truncation should be set by the coupling constants of the problem. I do have some questions with SiteSet, especially since I'm not very experienced in C++:

- What purpose does the vector/DefaultOpsT 'dops' serve? It is obviously connected to the basis of measurement (if I check the source of 'SpinHalf') but _why_ is it important to define a default operator? Is this not obvious from its diagonal form in the particular basis?

- Is there a particular reason why both function 'getSi' and 'si' are defined?

I will probably be back with more questions soon... thank you for the answer!