Hi, so you can proceed this way i.e. defining custom operators. But for an operator composed of C and C^\dagger operators, the nice thing about the new AutoMPO is that you could just write:
ampo += "Cdagdn", j, "Cdagup", j, "Cup", i, "Cdn", i;
When I showed you the code that avoided putting two C's or Cdag's on the same site, that was because they had the same spin so would give zero anyway. In the above operator, the C's or Cdag's sharing a site have different spin so it's perfectly ok.
Also you don't always have to put a numerical coefficient in front; it's optional.
Finally, if you want to test any operator you are adding to an AutoMPO, you can add just that operator only, then use the InitState class (see sample/iqdmrg.cc or sample/exthubbard.cc) to put particles on specific sites. Making two different IQMPS this way, you can then use the overlap(psi1,Op,psi2) function to compute the matrix elements of an IQMPO "Op" and confirm that the matrix elements are correct (correct value and sign).