sw_tutorial_02.m
We define the kagome lattice using the "P -3" space group (Nr. 147),
using the 3 fold symmetry, we need to define only one magnetic atom. In
this space group all first neighbor couplings will be equivalent (related
by symmetry). Symmetry equivalent positions of the magnetic atoms are
automatically generated by the spinw.matom method. The magnetic atoms
are Cu$^+$ with $S=1$ spin.
FMkagome = spinw;
FMkagome.genlattice('lat_const',[6 6 5],'angled',[90 90 120],'spgr','P -3')
FMkagome.addatom('r', [1/2 0 0], 'S', 1, 'label','MCu1','color','r')
Display the magnetic atoms which have been generated using the table method.
Plot the lattice so that you can see the kagome structure.
The first neighbor bonds will be ferromagnetic, J1 = -1 meV. The
spinw.gencoupling will use the space group operators to identify
equivalent couplings, if two bonds have the same length but are not symmetry
related, then they will be identified as different bonds. The
'maxDistance' option of the spinw.gencoupling method will be ensure that
all bonds are generated up to the given distance in Angstrom.
FMkagome.gencoupling('maxDistance',4)
disp('Bonds (length in Angstrom):')
FMkagome.table('bond',[])
Change the 'maxDistance' value. Whats the second and third coupling?
Add a matrix labeled J1 with value -1 and assign it to the nearest neighbour bond.
All spins are parallel, pointing along the y-axis (perpendicular to ac
plane). We use the "helical" mode of the sw.gencoupling() function, even
though the structure is not helical. However in this mode all missing
spins will be automatically created using the k-vector and normal vector
and assuming helical magnetic structure. Thus if we give $\mathbf{k}$ = (0 0 0) and
only the direction of the first spin in the unit cell, the code will
create all other spin parallel to the first.
FMkagome.genmagstr('mode', 'helical', 'k', [0 0 0], 'n', [0 1 0], 'S', [0 1 0]')
disp('Magnetic structure:')
FMkagome.table('mag')
FMkagome.energy
plot(FMkagome,'range',[2 2 1])
We will talk about the modes of genmagstr in another presentation.
We calculate the spin wave dispersion. There are three modes, equal to the number of magnetic atom in the magnetic unit cell, denoted by different colors. At the zone center, the dispersion of the goldstone mode is parabolic, due to the FM interactions.
fmkSpec = FMkagome.spinwave({[-1/2 0 0] [0 0 0] [1/2 1/2 0] 100},'hermit',false);
fmkSpec = sw_neutron(fmkSpec);
fmkSpec = sw_egrid(fmkSpec, 'Evect',linspace(0,6.5,100),'component','Sperp');
figure
sw_plotspec(fmkSpec,'mode',1,'colorbar',false,'axLim',[0 8])
Read the help of sw_plotspec. Try different 'mode' options for example.
We can also calculate the powder spectrum by averaging over random orientations. We plot the powder spectrum two different ways. First as calculated (to show the extremely sharp Van Hoove singularity at the top of the dispersion), secondly convolute with a Gaussian along energy (Which is much more like what you see experimentally).
fmkPow = FMkagome.powspec(linspace(0,2.5,100),'Evect',linspace(0,7,250),'nRand',1000,'hermit',false);
figure
subplot(2,1,1)
sw_plotspec(fmkPow,'colorbar',true,'axLim',[0 0.05])
Read the help of sw_plotspec and convolute in energy with a normalised gaussian of width 0.25meV.
We can plot the density of magnon states by calculating the weight of random points in the first Brillouin Zone. Then we can convolute with a Gaussian for better plotting and sum up all the Q points.
nQ = 1E5;
Q = rand(3, nQ);
spec = FMkagome.spinwave(Q, 'hermit', false);
spec = sw_egrid(spec, 'component', 'Sxx+Syy+Szz');
spec = sw_instrument(spec, 'dE', 0.1);
I = sum(spec.swConv, 2);
E = spec.Evect(2:end);
Why did we choose the 'Sxx+Syy+Szz' component?