Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

single ion anisotropy in magneti Hamiltonian #137

Open
dittosun opened this issue Apr 3, 2023 · 2 comments
Open

single ion anisotropy in magneti Hamiltonian #137

dittosun opened this issue Apr 3, 2023 · 2 comments
Labels
user User questions

Comments

@dittosun
Copy link

dittosun commented Apr 3, 2023

I added both the easy-plane anisotropy Dz and easy-axis anisotropy Dx in the magnetic Hamiltonian.
AFM.addmatrix('value',diag([Dx 0 Dz]),'label','D','color','black') (Dx<0 Dz>0)
But the symbolic solution only shows D, not Dx and Dz:
symSpec = spinwavesym(AFM,'hkl',[0; 0; 0])
pretty(symSpec.omega)

#1 == sqrt((2 D - J1 + 3 J3) (D - 2 J1 + 4 J2)) 2

#2 == sqrt(2) sqrt((D - J1 + 2 J2) (D - J1 + 3 J3)) 2

#3 == sqrt(D (2 D + J1 + 4 J2 + 3 J3)) 2

#4 == sqrt(2) sqrt(D (D + J1 + 4 J2 + 3 J3)) 2

How can I get the right symbolic solution of eigenvalue with Dx and Dz, not D?

@mducle
Copy link
Member

mducle commented Apr 3, 2023

@dittosun I think you have to specify the matrices for the x and z anisotropy separately. SpinW uses the 'label' to define the symbols in the symbolic calculation and in your example you the same 'label' (D). Try:

AFM.addmatrix('value',diag([1 0 0]),'label','Dx','color','black')
AFM.addmatrix('value',diag([0 0 1]),'label','Dz','color','black')

@dittosun
Copy link
Author

dittosun commented Apr 3, 2023

@mducle Hi, thank you for your suggestion. I have tried this method before, but spinw seems to only know one single-ion anisotropy matrix.

AFM.addmatrix('value',diag([0 0 Dz),'label','Dz','color','black')
AFM.addmatrix('value',diag([Dx 0 0]),'label','Dx','color','gray')
AFM.addaniso('Dz')
AFM.addaniso('Dx')

The program can only know the latest addaniso Dx (If I invert the sequence like
AFM.addaniso('Dx')
AFM.addaniso('Dz')
only Dz is included in the calculation ).

And if I check the single-ion anisotropy matrix by using NiPS3.single_ion.aniso,
only one matrix is assigned to the single_ion term. So I don't know how to add two single-ion anisotropy in the program.

By the way, if I use AFM.addmatrix('value',diag([Dx 0 Dz]),'label','D','color','black') in the program,
the numeric plot of spinwave dispersion seems to be right, but only the symbolic solution is not correct.

@mducle mducle added the user User questions label Jul 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
user User questions
Projects
None yet
Development

No branches or pull requests

2 participants