deepmodeling / abacus-develop

An electronic structure package based on either plane wave basis or numerical atomic orbitals.
http://abacus.ustc.edu.cn
GNU Lesser General Public License v3.0
172 stars 131 forks source link

NEW parameter `easy_axis` or `spin_axis` should be added to modify the easy axis of magnetization in `noncolin=0 lspinorb=1 nspin=4` case #4202

Open xdzhu opened 5 months ago

xdzhu commented 5 months ago

Background

Now the noncolin=0 lspinorb=1 case in ABACUS let the mag moment is constrained along the Z direction, which means that the mag moment can be only set to up or down along Z axis.

This kind of implementation largely limit the power of ABACUS. Given the magnetic moment is limited to the Z direction have been implemented now, it can be eaily found that the magnetic moment can be limited to any direction indeed. I sugguest that there should be a new parameter to set the easy axis of magnetic moment in the SOC colinear calculation, which is important in magnetic calculations.

Thus, a 3d vector parameter in xyz coordinates called easy_axis or spin_axis could be added to define the direction of magnetic moments to be limited.

This case is not as complicated as the constrained spin polarized case which contrained atoms one by one. The parameter noncolin=0 lspinorb=1 is still not changed which means that all the magnetic moments are constrained along one same line. Just add a direction which can be modified by users.

One can refer to the implementation of vasp SAXIS - VASP Wiki and VASP中的非线性磁性计算总结

SAXIS= sx sy sz !global spin quantisation axis|default:0+ 0 1

Now the noncolin=0 lspinorb=1 case is: image

The Constraint DFT for collinear spin polarized calculations does not consider the case of noncolin=0 lspinorb=1 nspin=4 : image

image

Describe the solution you'd like

Provide a 3d vector parameter to modify the global spin quantisation axis in noncolin=0 lspinorb=1 nspin=4 case.

Task list only for developers

Notice Possible Changes of Behavior (Reminder only for developers)

No response

Notice any changes of core modules (Reminder only for developers)

No response

Notice Possible Changes of Core Modules (Reminder only for developers)

No response

Additional Context

No response

Task list for Issue attackers (only for developers)

dyzheng commented 5 months ago

Good idea, I will consider to develop this feature in the future.