spirit-code / spirit

Atomistic Spin Simulation Framework
http://spirit-code.github.io
MIT License
117 stars 52 forks source link

Question: Force convergence using the LLG method at finite temperature #636

Open ywgeng opened 5 months ago

ywgeng commented 5 months ago

Dear developers and everyone, Thank you very much for providing a powerful simulation program. I used the LLG method and simulated by using the llg. py script, Version: 2.2.0. I have the following doubts:

  1. In my simulation, the exchange parameter J (nearest neighbor is FM, next neighbor is AFM), magnetic anisotropy K (in-plane), and magnetic moment in Hamiltonian are derived from the calculation results of VASP. According to article PHYSICAL VIEW B 99, 224414 (2019), mu_s in input.cfg should be set to the magnetic moment calculated by VASP, while the values of J, K, DMI, etc. should be set based on the normalized magnetic moment (S=1), right? Calculated as described by Buffay in question # 633 (i.e. divided by S^2), if S is not 1, the resulting values of J and K are inaccurate. Am I right?
  2. My goal is to obtain stable magnetic configurations of the system under different temperatures and external magnetic fields (i.e. heatmap of "External field vs. Temperature"), as this may yield some interesting magnetic domain distributions. As discussed in question # 605, at 0K, I first set the random state through configuration.random, and then used LBFGS_OSO SOLVER to find a spin configuration that locally minimizes the energy, and in fact, at 0K, when an external magnetic field was added, I could still continue to use the LBFGS_OSO SOLVER and quickly achieved convergence. However, when I add temperature in input.cfg, such as llg_temperature=10K, a random state was set through configuration.random, and then the DEPONDT solver was used. After 2000000 iterations, the Maximum torque in the log file was 0.065. I believe that even if the number of iterations is continued to increase, it is almost impossible to achieve the default convergence standard (llg_force_convergence=10e-9) in input.cfg. In addition, at 10K, I also tried using io.chain_read(p_state, "input/spins. ovf") function reads the converged magnetic configuration at 0K as the initial state, and then uses the DEPONDT solver. After 2000000 iterations, the Maximum torque is 0.057. At a finite temperature (10K), it seems that the default convergence standard of 10e-9 cannot be achieved. My question is, is my simulation process correct at 0K? How can we achieve convergence at a finite temperature (10K) (to obtain a stable magnetic configuration)? Or do we have other criteria for judgment at a finite temperature?
  3. What is the impact of the values of these parameters (llg_damping, llg_beta, llg_dt) on the final convergence result? Using the default values (llg_dampling=0.3, llg_beta=0.1, llg_dt=1e-3) is ok? I hope you can provide some valuable feedback on my questions. Thank you very much! Best regards, Gen Yongster

input.txt