-
Notifications
You must be signed in to change notification settings - Fork 55
Description
Dear spirit developers,
I am writing to get some clarification on the pair hamiltonian when one has more than one atom per unit cell.
This is my basis and bravais vectors:
bravais_lattice hex2d120
basis
3 # number of spins in the basis
0.0 0.0 0.0
0.0 0.0 0.62
0.33 0.66 0.30
Firstly, the heisenberg_neighbours hamiltonian is completely unable to find even the first pair correctly (which should be between atoms 0 and 1 within the same uc), so one has no choice but to use heisenberg_neighbours, as shown below
n_shells_exchange 2
jij 109.8460 30.4400
output:
### Interaction neighbours:
n_neighbours_exchange 4
i j da db dc Jij
0 2 0 -1 0 109.84600000
1 2 0 -1 0 30.44000000
2 0 0 1 0 109.84600000
2 1 0 1 0 30.44000000
When specifying only interlayer exchange, aka pairs in different uc's, I am able to reproduce the theorical spin spiral dispersion (aka E(q)=sum_r J(r) cos(q*r)) with no issue:
n_interaction_pairs 18
i j da db dc Jij Dij Dijx Dijy Dijz
1 1 -1 -1 0 -2.1170 0.0000 0.0000 0.0000 0.0000
1 1 0 -1 0 -2.1170 0.0000 0.0000 0.0000 0.0000
1 1 -1 0 0 -2.1170 0.0000 0.0000 0.0000 0.0000
1 1 1 -0 0 -2.1170 0.0000 0.0000 0.0000 0.0000
1 1 -0 1 0 -2.1170 0.0000 0.0000 0.0000 0.0000
1 1 1 1 0 -2.1170 0.0000 0.0000 0.0000 0.0000
0 0 -1 -1 0 -0.1985 0.0000 0.0000 0.0000 0.0000
0 0 0 -1 0 -0.1985 0.0000 0.0000 0.0000 0.0000
0 0 -1 0 0 -0.1985 0.0000 0.0000 0.0000 0.0000
0 0 1 -0 0 -0.1985 0.0000 0.0000 0.0000 0.0000
0 0 -0 1 0 -0.1985 0.0000 0.0000 0.0000 0.0000
0 0 1 1 0 -0.1985 0.0000 0.0000 0.0000 0.0000
2 2 -1 -1 0 -3.2540 0.0000 0.0000 0.0000 0.0000
2 2 0 -1 0 -3.2540 0.0000 0.0000 0.0000 0.0000
2 2 -1 0 0 -3.2540 0.0000 0.0000 0.0000 0.0000
2 2 1 -0 0 -3.2540 0.0000 0.0000 0.0000 0.0000
2 2 -0 1 0 -3.2540 0.0000 0.0000 0.0000 0.0000
2 2 1 1 0 -3.2540 0.0000 0.0000 0.0000 0.0000
However, when trying to specify the intralayer pairs within the same uc, the spin spiral dispersion obtained from spirit no longer matches the theory:
n_interaction_pairs 8
i j da db dc Jij Dij Dijx Dijy Dijz
1 0 0 0 0 54.9230 0.0000 0.0000 0.0000 0.0000
0 1 0 0 0 54.9230 0.0000 0.0000 0.0000 0.0000
0 2 0 0 0 15.2200 0.0000 0.0000 0.0000 0.0000
0 2 1 -0 0 15.2200 0.0000 0.0000 0.0000 0.0000
0 2 1 1 0 15.2200 0.0000 0.0000 0.0000 0.0000
2 0 -1 -1 0 15.2200 0.0000 0.0000 0.0000 0.0000
2 0 -1 0 0 15.2200 0.0000 0.0000 0.0000 0.0000
2 0 0 0 0 15.2200 0.0000 0.0000 0.0000 0.0000
Note that here the bond for J_1 is always perpendicular to q so it contributes a constant value of -J_1/uc and always between atoms of the same uc, I believe the issue may come from J_2.
I am wondering if specifying pairs within the same uc should be done a bit differently than in different ucs? Here I specify all lattice rotations which includes also the J_2 pairs between different ucs. Or there maybe be an issue elsewhere or something I am missing?
I hope this question makes sense.
Thank you in advance.