Spin wave spectrum of Ba3NbFe3Si2O14

Here we model the spin wave spectrum of Ba3NbFe3Si2O14 chiral compound. The crystal structure is taken from PRL 101, 247201 (2008), [[http://dx.doi.org/10.1103/PhysRevLett.101.247201]]. The spin wave model parameters are taken from PRL 106, 207201 (2011), [[http://dx.doi.org/10.1103/PhysRevLett.106.207201]].


Crystal structure

We define only the magnetic atoms in of the crystal that are Fe3+ ions with spin quantum number of 5/2.

banb = spinw;
banb.genlattice('lat_const',[8.539 8.539 5.2414],'angled',[90 90 120],'sym','P 3 2 1');
banb.addatom('label','MFe3','r',[0.24964 0 1/2],'S',5/2,'color','gray');
plot(banb,'range',[-0.5 1.5;-0.5 1.5;0 0.5])


We define three chiral properties of the crystal and magnetic order: * epsilon_T: crystal chirality, in our case we select J3-J5 interactions according to the chirality (J5>J3). * epsilon_Delta: Chirality of the triangular units. * epsilon_H: Sense of rotation of the spin helices along the c-axis (right handed rotation is positive). The three property are related: eT = eD*eH.

eD = -1;
eH = +1;
eT = eD*eH;

Magnetic Hamiltonian

We define the magnetic Hamiltonian depending on the epsilon_T crystal chirality. We neglect the Dzyaloshinskii-Moriya interaction, that can be introduced in a straightforward manner.

J1 = 0.85;
J2 = 0.24;
J3 = 0.053;
J4 = 0.017;
J5 = 0.24;



switch eT
    case +1
    case -1

plot(banb,'range',[-0.5 1.5;-0.5 1.5;0 0.5],'atomLegend',false)

Magnetic structure

We fix the magnetic structure with the predefined chirality. The magnetic ordering wave vector is k=(0,0,e_H*1/7), the spins are lying in the ab-plane and we use a single cell to describe the structure (default value of nExt = [1 1 1]). We plot the triangular plane magnetic structure.

S0 = [1 -1/2 -1/2;0 eD*sqrt(3)/2 -eD*sqrt(3)/2;0 0 0];
banb.genmagstr('mode','helical','S',S0,'k',[0 0 eH*1/7],'n',[0 0 1])
plot(banb,'range',[-0.5 1.5;-0.5 1.5;0 0.5],'magCentered',true)
E1 = banb.energy;

% Keep the manual magnetic structure.
Mag0 = banb.mag_str;

Alternatively we optimize the magnetic structure

First we find the propagation vector, then determine the moment directions. We find a slightly lower energy by allowing a tiny deviation from the propagation vector of [0 0 1/7].

banb.genmagstr('mode','rotate','n',[0 0 1])
E2 = banb.energy;

% The vetor normal to the rotation is opposite compared to the manual
% magnetic structure, while the propagation vector is the same. Thus the
% optimized magnetic structure has opposite chirality than the manual
% structure. So we should change the chirality. Instead we restore the
% manual magnetic structure.
banb.mag_str = Mag0;
ans = 

  struct with fields:

       k: [3×1 double]
       E: -5.4522
       F: [3×3 double]
    stat: [1×1 struct]

Warning: Some spins are coupled to themselves in the present magnetic cell! 

ans =


Spin wave spectrum

We calculate the spin wave spectrum and compare it to published results. Since the momentum transfer vector Q has opposite sign in SpinW and in the published PRL paper, we change the sign manually here. Also for direct comparison, we calculate the spin-spin correlation function in the coordinate system commonly used for polarised neutron scattering (x||Q, z perpendicular to the scattering plane). To define the scattering plane, we give two reciprocal space vectors in that plane: u=(0,1,0) and v=(0,0,1).

banbSpec = banb.spinwave({[0 -1 1] [0 -1 -2] 500});
banbSpec.hkl  = -banbSpec.hkl;
banbSpec.hklA = -banbSpec.hklA;
banbSpec = sw_neutron(banbSpec,'pol',true,'uv',{[0 1 0] [0 0 1]});

banbSpec = sw_egrid(banbSpec,'component','Sperp','Evect',linspace(0,6,500));
sw_plotspec(banbSpec,'mode','color','dE',0.25,'axLim',[0 10]);
tString = sprintf('\\epsilon_T = %+d, \\epsilon_\\Delta = %+d, \\epsilon_H = %+d',eD,eT,eH);
Warning: To make the Hamiltonian positive definite, a small omega_tol value was
added to its diagonal! 

Chiral correlations

We plot the imaginary part of the spin-spin correlation function: Myz-Mzy that are components in the Q coordinate system, this agrees well with Fig. 5 of PRL 106, 207201 (2011).

banbSpec = sw_egrid(banbSpec,'component','Myz-Mzy','Evect',linspace(0,6,500));
sw_plotspec(banbSpec,'mode','color','dE',0.25,'axLim',[-10 10],'imag',true);
tString = sprintf('\\epsilon_T = %+d, \\epsilon_\\Delta = %+d, \\epsilon_H = %+d',eD,eT,eH);
colormap(makecolormap([0 1 0],[1 1 1],[0 0 1],81));
Written by
Sandor Toth
16-Jun-2014, 06-Feb-2017