Hi Javad,

For this goal the QN conserving DMRG feature of ITensor should be exactly what you need. I believe you are using the C++ version of ITensor, correct? Either way the basic approach for conserving total Sz is to make an initial wavefunction which has a well-defined total Sz value and is the one you want to study. Then, if your site indices carry QN information (this is the default behavior in the C++ version; for Julia you have to put conserve_qns=true when making the sites), then the DMRG code will automatically keep your wavefunction in the same total Sz sector throughout the optimization.

So if you use the above approach and just change the total Sz value of your initial states to the values you want to study, and obtain the resulting energies, you should get the information you are looking for.

Of course please ask in a comment below if you have any questions about that.

Best regards,

Miles