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

Hybrid/combined supercell and incommensurate calculations #119

Open
mducle opened this issue Dec 5, 2022 · 1 comment
Open

Hybrid/combined supercell and incommensurate calculations #119

mducle opened this issue Dec 5, 2022 · 1 comment

Comments

@mducle
Copy link
Member

mducle commented Dec 5, 2022

SpinW currently allows calculations which mix both a supercell and an incommensurate k-vector. However, it is not clear whether this is valid in all (or even most) cases, and this should be investigated.

(Single-k) incommensurate calculations in SpinW are done using a rotating coordinate frame in which all spins are rotate by the same phase factor (determined by the propagation k-vector) between unit cells. When users specify a supercell using nExt (such that prod(nExt)>1) the phase factor applies between spins in neighbouring supercells, which might not generate the same magnetic structure as the user intended. In addition, the propagation vector specified to SpinW k and the true propagation vector of the magnetic structure of the combined/hybrid supercell plus incommensurate would not be the same. E.g. if nExt=[2 1 1] and k=[0.5 0 0], then the combined structure should have a propagation vector of [0.25 0 0], but SpinW will treat it as a doubling of the supercell rather than a quadrupling of the structural cell. This might invalidate the equations for the -k and +k spin wave branches.

Similarly to #107 which tests consistency between supercell and incommensurate spin wave calculations, a consistency test should be done to check between fully supercell and hybrid calculations.

RichardWaiteSTFC added a commit that referenced this issue Dec 7, 2022
Not scientifically validated (see issue #119) - though intial tests suggest it is OK.
@RichardWaiteSTFC
Copy link
Collaborator

MWE of a hybrid incommensurate modulation in a supercell

cycloid = spinw;
cycloid.genlattice('lat_const',[3 8 10], 'sym',0);
cycloid.addatom('r',[0 0 0],'S',1,'label','Cu1');
cycloid.gencoupling('maxDistance',7);
cycloid.addmatrix('label','J2','value', 1);
cycloid.addcoupling('mat','J2','bond',2);
% modulation of [1/4 0 0] gets transfromed in gemagstr to
% [0.5 0 0] for nExt = [2 1 1]
cycloid.genmagstr('mode', 'helical', ...
                  'S', [1 0; 0 1; 0 0], 'n', [0 0 1], ...
                   'nExt', [2 1 1], 'k', [0.25, 0, 0]);

Note this was used in a unit test to assert warning thrown in spinwave in this instance (dce6838 - part of PR #115) - once this has been validated the warning and test should be removed.

mducle pushed a commit that referenced this issue Dec 8, 2022
…tency (#115)

* Add consistency test for AFM kagome

* Add test with 2 mag atoms per unit cell

* Add consistency test for two sym equiv matoms in unit cell

* Add method to remove ghost modes and assert equality of spec objects

Thanks @mducle for the ghost mode removal code

* Refactor tests to use a cls method to do assertions

* Add warning in spinwave for incommensurate k in supercell and test

Not scientifically validated (see issue #119) - though intial tests suggest it is OK.

* Update changelog with new warning in spinwave
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants