# how to obtain the effective hamiltonian defined as following MPO, and performa exact diagionalization on it?

**URL:** <https://itensor.discourse.group/t/how-to-obtain-the-effective-hamiltonian-defined-as-following-mpo-and-performa-exact-diagionalization-on-it/1586>\
**Category:** ITensor C++ Questions\
**Tags:** dmrg, mpo\
**Created:** [March 26, 2024, 1:35pm UTC](https://itensor.discourse.group/t/how-to-obtain-the-effective-hamiltonian-defined-as-following-mpo-and-performa-exact-diagionalization-on-it/1586 "2024-03-26T13:35:04Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sysy](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@sysy](https://itensor.discourse.group/u/sysy)\
**Post date:** [March 26, 2024, 1:35pm UTC](https://itensor.discourse.group/t/how-to-obtain-the-effective-hamiltonian-defined-as-following-mpo-and-performa-exact-diagionalization-on-it/1586/1 "2024-03-26T13:35:04Z")

</div>

Dear itensor:  
I want to implement the algorithm mentioned in this paper  
[PhysRevB.96.054425 (aps.org)](https://journals.aps.org/prb/pdf/10.1103/PhysRevB.96.054425)  
based on itensor, I think I need to get one MPO like this

 ![image](https://global.discourse-cdn.com/free1/uploads/itensor/original/1X/0096030b0d96cd6e9402cd609942ef731fe2759b.png)

and then do exact diagonalization on it during the sweep process, what exactly do I need to do to accomplish these two steps?
