Skip to content

Non positive defined Hamiltonian. #231

@XiankangTang

Description

@XiankangTang

Hello.

I am trying to use SpinW to reproduce the results in the paper Chiral magnon splitting in altermagnetic CrSb from first principles. I have successfully gotten the magnon energy dispersion, and I can put my code here.

close all;
clear;
clc;
AFMchain = spinw;
AFMchain.genlattice('lat_const',[4.103 4.103 5.463],'angled',[90 90 120],'sym',194);
AFMchain.addatom('r',[0 0 0],'S',1.5,'label','Cr1','color','blue');
AFMchain.addatom('r', [0.33333 0.66667 0.25], 'S', 0, 'label', 'Sb', 'color', 'gray');
disp('Magnetic lattice:')
AFMchain.gencoupling('maxDistance',9)
AFMchain.table('matom')
plot(AFMchain,'range',[1 1 1])

J1 = 25.76; 
J2 = -4.56;
J3 = 3.02;
J4 = 0.75;
J5 = -0.62;
J6 = 0.75;
J7 = -0.38;
J8 = -0.12;
J9 = -0.12;
J10 = 0.09;
J11 = 0.42;
J12 = 1.10; 

AFMchain.addmatrix('value', J1, 'label', 'J1', 'color', 'red');
AFMchain.addmatrix('value', J2, 'label', 'J2', 'color', 'green');
AFMchain.addmatrix('value', J3, 'label', 'J3', 'color', 'blue');
AFMchain.addmatrix('value', J4, 'label', 'J4', 'color', 'orange');
AFMchain.addmatrix('value', J5, 'label', 'J5', 'color', 'purple');
AFMchain.addmatrix('value', J6, 'label', 'J6', 'color', 'cyan');
AFMchain.addmatrix('value', J7, 'label', 'J7', 'color', 'brown');
AFMchain.addmatrix('value', J8, 'label', 'J8', 'color', 'pink');
AFMchain.addmatrix('value', J9, 'label', 'J9', 'color', 'yellow');
AFMchain.addmatrix('value', J10, 'label', 'J10', 'color', 'black');
AFMchain.addmatrix('value', J11, 'label', 'J11', 'color', 'magenta');
AFMchain.addmatrix('value', J12, 'label', 'J12', 'color', 'teal');

AFMchain.addcoupling('mat', 'J1', 'bond', 1); 
AFMchain.addcoupling('mat', 'J2', 'bond', 2);  
AFMchain.addcoupling('mat', 'J3', 'bond', 3);  
AFMchain.addcoupling('mat', 'J4', 'bond', 4);  
AFMchain.addcoupling('mat', 'J5', 'bond', 5);  
AFMchain.addcoupling('mat', 'J6', 'bond', 6);  
AFMchain.addcoupling('mat', 'J7', 'bond', 7);
AFMchain.addcoupling('mat', 'J8', 'bond', 8);
AFMchain.addcoupling('mat', 'J9', 'bond', 9);
AFMchain.addcoupling('mat', 'J10', 'bond', 10);

bonds = AFMchain.table('bond');

for i = 1:size(bonds)
    if isstruct(bonds)
        vec = bonds(i).dl;
    elseif istable(bonds)
        if iscell(bonds.dl)
            vec = bonds.dl{i};
        else
            vec = bonds.dl(i,:);
        end
    else
        error('Unrecognized bonds data type');
    end

    if all(abs(vec - [-1 1 1]) < 1e-3)
        disp(['Bond corresponding to (-1,1,1): ', num2str(i)])
    elseif all(abs(vec - [1 -1 1]) < 1e-3)
        disp(['Bond corresponding to (1,-1,1): ', num2str(i)])
    end
end

AFMchain.addcoupling('mat', 'J11', 'bond', 11);
AFMchain.addcoupling('mat', 'J12', 'bond', 12);
plot(AFMchain)
AFMchain.genmagstr('mode','helical','S',[0 0 1]','k',[0 0 -1],'n',[1 0 0])
plot(AFMchain)

Qlist = {[0 0 0] [0 0 1/2] [1/2 0 1/2] [0 0 0] 100};
Qlab  = {'\Gamma' 'A' 'L' '\Gamma'};
spec = AFMchain.spinwave(Qlist);
figure
sw_plotspec(spec, 'mode', 1, 'dashed', true, 'colormap', [0 0 0], 'qlabel', Qlab);

Although I can get the band splitting as shown in that paper, I'd like to further understand the mechanism behind this. I did a new test and I commented on the interaction from J1-J10. If we only consider J11 and J12, the model will be an FM, but I got the error that shows the Hamiltonian is not positive defined.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions