Frustrated J1-J2 AFM chain
Crystal structure, shortest bond along a-axis, Cu+ magnetic atoms with S=1 spin.
Contents
Define the lattice
J1J2chain = spinw; J1J2chain.genlattice('lat_const',[3 8 10],'angled',[90 90 90],'spgr',0); J1J2chain.addatom('r',[0 0 0],'S',1,'label','Cu1','color','blue'); disp('Magnetic lattice:') J1J2chain.table('atom') plot(J1J2chain,'range',[3 1 1],'zoom',0.5)
Magnetic lattice: ans = 1×4 table matom idx S pos _____ ___ _ ___________ 'Cu1' 1 1 0 0 0
Couplings
First and second neighbor antiferromagnetic couplings. If the name of the matrix ends with '-' the bond is plotted with dashed line.
J1J2chain.gencoupling('maxDistance',7); disp('Bonds:') J1J2chain.table('bond',[]) J1J2chain.addmatrix('label','J1', 'value',-1,'color','r'); J1J2chain.addmatrix('label','J2-','value', 2,'color','g'); J1J2chain.addcoupling('mat','J1','bond',1); J1J2chain.addcoupling('mat','J2-','bond',2); plot(J1J2chain,'range',[3 0.9 0.9],'bondMode','line','bondLinewidth0',3)
Bonds: ans = 2×10 table idx subidx dl dr length matom1 idx1 matom2 idx2 matrix ___ ______ ___________ ___________ ______ ______ ____ ______ ____ ______________ 1 1 1 0 0 1 0 0 3 'Cu1' 1 'Cu1' 1 '' '' '' 2 1 2 0 0 2 0 0 6 'Cu1' 1 'Cu1' 1 '' '' ''
Magnetic structure is a helix
We use two different methods to define the ground state magnetic structure:
Direct input
If we would know the exact solution of the spin Hamiltonian we can input that, assuming a helix with the following parameters:
- magnetic ordering wave vector k = (1/4 0 0)
- spins lying in arbitrary plane, first spin S = (1 0 0)
- normal to the plane of the spin helix has to be perpendicular to S, we choose it n = (0 0 1)
- we won't use a magnetic supercell, not necessary
J1J2chain.genmagstr('mode','helical', 'k',[0.25 0 0], 'n',[0 0 1], 'S',[1; 0; 0], 'nExt',[1 1 1]) disp('Magnetic structure:') J1J2chain.table('mag') disp('Ground state energy before optimization:') J1J2chain.energy plot(J1J2chain,'range',[3 0.9 0.9])
Magnetic structure: ans = 1×8 table num matom idx S realFhat imagFhat pos kvect ___ _____ ___ _ ___________ ___________ ___________ ____________________ 1 'Cu1' 1 1 1 0 0 0 1 0 0 0 0 0.25 0 0 Ground state energy before optimization: Ground state energy: -2.000 meV/spin.
We optimise the helix pitch angle
We are unsure about the right pitch angle of the helix, thus we want to calculate it. The sw.optmagstr() is able to determine the magnetic ground state. It uses a constraint function (@gm_planar in this case) to reduce the number of paramteres that has to be optimised. It works well if the number of free parameters are low. we will find the the right k-vector is 0.2301.
% Phi1 k_x k_y k_z nTheta nPhi x1 = [0 0 0 0 0 0]; x2 = [0 1/2 0 0 0 0]; optRes = J1J2chain.optmagstr('func',@gm_planar,'xmin',x1,'xmax',x2,'nRun',10); disp('Ground state energy after optimization') J1J2chain.energy disp('Optimized magnetic structure:') J1J2chain.table('mag') plot(J1J2chain,'range',[3 0.9 0.9],'bondMode','line','bondLineWidth0',3)
Ground state energy after optimization Ground state energy: -2.062 meV/spin. Optimized magnetic structure: ans = 1×8 table num matom idx S realFhat imagFhat pos kvect ___ _____ ___ _ ___________ ___________ ___________ _____________________________ 1 'Cu1' 1 1 1 0 0 0 1 0 0 0 0 0.23005 0 0
Spin wave spectrum
We calculate the spin wave spectrum, the code automatically uses the method that enables the spin wave calculation of incommensurate structures withouth creating a magnetic supercell. There are three spin wave modes, these are omega(Q), omega(Q+/-k). The two shifted ones are due to the incommensurate structure.
J1J2spec= J1J2chain.spinwave({[0 0 0] [1 0 0] 400}, 'hermit',false); J1J2spec = sw_neutron(J1J2spec); J1J2spec = sw_egrid(J1J2spec, 'Evect',linspace(0,6.5,100)); figure sw_plotspec(J1J2spec, 'mode',1,'colorbar',false) axis([0 1 0 6])
Warning: Eigenvectors of defective eigenvalues cannot be orthogonalised at some q-point!
Written by Bjorn Fak & Sandor Toth 06-Jun-2014, 06-Feb-2017