Anisotropic exchange on the FM chain
Contents
Define the lattice
fmch = spinw; fmch.genlattice('lat_const',[3 4 4]) fmch.addatom('r',[ 0 0 0],'S',1) fmch.addmatrix('label','J_1','value',diag(-[3 4 5])) fmch.gencoupling fmch.addcoupling('mat','J_1','bond',1) fmch.genmagstr('mode','helical','S',[0 0 1]') plot(fmch)
spin-spin correlation function
spec = fmch.spinwave({[0 0 0] [1 0 0] 501}); spec = sw_egrid(spec,'component',{'Sxx' 'Syy' 'Szz'}); clf sw_plotspec(spec,'mode','int','dE',0.5); ylim([-0.05 0.8])
anisotropic exchange on the AFM chain
afmch = spinw; afmch.genlattice('lat_const',[3 4 4]) afmch.addatom('r',[ 0 0 0],'S',1) afmch.addmatrix('label','J_1','value',diag([3 4 4.1])) afmch.gencoupling afmch.addcoupling('mat','J_1','bond',1) afmch.genmagstr('mode','helical','S',[0 0 1]','k',[1/2 0 0],'n',[1 0 0]) %plot(afmch)
spin-spin correlation function
spec = afmch.spinwave({[0 0 0] [1 0 0] 501}); spec = sw_egrid(spec,'component',{'Sxx' 'Syy' 'Szz'}); clf sw_plotspec(spec,'mode','disp','linestyle','-','colormap',[0 0 0]) colorbar off legend off sw_plotspec(spec,'mode','color','dE',0.5,'axLim',[0 1]); hold on hLegend = legend; set(hLegend,'location','southeast')
Warning: The two times the magnetic ordering wavevector 2*km = G, reciproc lattice vector, use magnetic supercell to calculate spectrum!
anisotropic exchange on the AFM chain
rotated anisotropy
afmch = spinw; afmch.genlattice('lat_const',[3 4 4]) afmch.addatom('r',[ 0 0 0],'S',1) R = sw_rotmatd([0 0 1],45); J1 = diag([3 4 4.1]); J1 = R*J1*R'; afmch.addmatrix('label','J_1','value',J1) afmch.gencoupling afmch.addcoupling('mat','J_1','bond',1) afmch.genmagstr('mode','helical','S',[0 0 1]','k',[1/2 0 0],'n',[1 0 0],'nEXt',[2 1 1]) %plot(afmch)
spin-spin correlation function
spec = afmch.spinwave({[0 0 0] [1 0 0] 501}); spec = sw_neutron(spec,'uv',{[1 1 0] [-1 1 0]},'pol',true); spec = sw_egrid(spec,'component',{'Sxx+Sxy' 'Sxx-Sxy'}); clf sw_plotspec(spec,'mode','disp','linestyle','-','colormap',[0 0 0]) colorbar off legend off sw_plotspec(spec,'mode','color','dE',0.5,'axLim',[0 1]); hold on hLegend = legend; set(hLegend,'location','southeast')