Hi,
I introduced complex hopping parameter as follows (in the models.xml file):
<BONDOPERATOR name="fermion_hop_l" source="x" target="y"> cdag_up(x)*c_up(y)+cdag_down(x)*c_down(y) </BONDOPERATOR>
<BONDOPERATOR name="fermion_hop_r" source="x" target="y"> cdag_up(y)*c_up(x)+cdag_down(y)*c_down(x) </BONDOPERATOR>
and later, as a bound term,
<BONDTERM source="i" target="j"> <PARAMETER name="tl#" default="0"/> <PARAMETER name="tr#" default="0"/> -tl#*fermion_hop_l(i,j) -tr#*fermion_hop_r(i,j) </BONDTERM>
In the parameters file, I put tr=tl*, so it seems to me, that such definition always lead to hermitian matrix, and do not depend on lattice\graph. Nevertheless, it does not work on a graph ('can not convert complex number into real one' error) but does work on predefined square lattice.
What is the problem? Is the definition of the Hamiltonian is correct?
Thank you in advance, Volodymyr Derzhko
Do you want to use this with an ED or DMRG code> If so, have you tried setting the parameter COMPLEX ?
Matthias
On Nov 18, 2011, at 1:28 PM, Volodymyr Derzhko wrote:
Hi,
I introduced complex hopping parameter as follows (in the models.xml file):
<BONDOPERATOR name="fermion_hop_l" source="x" target="y"> cdag_up(x)*c_up(y)+cdag_down(x)*c_down(y) </BONDOPERATOR>
<BONDOPERATOR name="fermion_hop_r" source="x" target="y"> cdag_up(y)*c_up(x)+cdag_down(y)*c_down(x) </BONDOPERATOR>
and later, as a bound term,
<BONDTERM source="i" target="j"> <PARAMETER name="tl#" default="0"/> <PARAMETER name="tr#" default="0"/> -tl#*fermion_hop_l(i,j) -tr#*fermion_hop_r(i,j) </BONDTERM>
In the parameters file, I put tr=tl*, so it seems to me, that such definition always lead to hermitian matrix, and do not depend on lattice\graph. Nevertheless, it does not work on a graph ('can not convert complex number into real one' error) but does work on predefined square lattice.
What is the problem? Is the definition of the Hamiltonian is correct?
Thank you in advance, Volodymyr Derzhko
I am sorry, but I did not understand your comment regarding setting parameter COMPLEX. Did you mean to change something in parameter’s file? Not two write, "tl0=exp(-I/4); tr0=exp(I/4);" but to set parameters in a different way?
Thank you in advance!
Do you want to use this with an ED or DMRG code> If so, have you tried setting the parameter COMPLEX ?
Matthias
Yes, you need to add a parameter COMPLEX=1 to force the code to use complex numbers. On latices this is automatically implied if you use translational symmetry, but on graphs it is not.
On Nov 21, 2011, at 9:13 AM, Volodymyr Derzhko wrote:
I am sorry, but I did not understand your comment regarding setting parameter COMPLEX. Did you mean to change something in parameter’s file? Not two write, "tl0=exp(-I/4); tr0=exp(I/4);" but to set parameters in a different way?
Thank you in advance!
Do you want to use this with an ED or DMRG code> If so, have you tried setting the parameter COMPLEX ?
Matthias
comp-phys-alps-users@lists.phys.ethz.ch