Caluculation of exchange coupling coefficients using the four-state method and \(T_c\) using the Monte Carlo simulations¶
Author: Yu Qisheng
In this tutorial, I will show how to calculate exchange coupling coefficients using the four-state method with PASP (Property analysis and simulation package for materials). The example system is VHfO\(_4\), where the magnetic atoms is vanadium, DFT+U method is applied in some self-consistent energy calculations with VASP. Then calculate \(T_c\) using the Monte Carlo simulations.
The principle of the four-state method is very easy: \(\(J_{ij}=\frac{E_{ij,\uparrow\uparrow}+E_{ij,\downarrow\downarrow}-E_{ij,\uparrow\downarrow}-E_{ij,\downarrow\uparrow}}{4}\)\)
So what we need to do is find the environmentally inequivalent magnetic atom pairs and calculation the energies in different magnetic moments.
The first step is finding the environmentally inequivalent magnetic atom pairs \(A_{ij}\).
To begin, prepare an optimized unitcell structure file(POSCAR) with corresponding pseudopotential file(POTCAR). Create a new directory fourstates, using the post_VASP script to construct a 222 supercell(usage: ./post_VASP \(\rightarrow\) 1 \(\rightarrow\) 2 2 2), copy the generated POSCAR.multi file as the new POSCAR in a new created subdirectory input1, and the original POSCAR as POSCAR_UC. Then modify the PASP.input file:
And prepare a spin3.in file to create an inital spin configuration, each row corresponds to the magnetic moment of the corresponding atom in POSCAR.
Before you sbatch pasp.slurm, you should check if the files correct by ls:
After step1 calculation(often takes few seconds), if PASP is finished gracefully, copy the output files cell.str, unit_cell.str,pair_POS.*,J.POS and pasp.out(change the name to log.out) to the new created subdirectory input2, and prepare the VASP SCF calculation files except POSCAR. Modify the run_DFT.sh script so that the parameters match your needs, then run this script. Sometimes the SCF calculations may meet some problems such as convergence or compute node issues, so check each SCF calculations before you start the next step. After checking, modify the PASP.input file: add a line cal_spin_exchange T after Model find_J_path_symi, change the READ_POSCAR T and READ_POSCAR_UC T to %include cell.str and %include unit_cell.str.
Again, before you start the calculation, check the files by ls:
J*directories and pair_POS.* files shoule be equal to the number of environmentally inequivalent magnetic atom pairs.
Before do the next PASP calculation, do check all the scf calculations are correct! e.g. all the magnetic moments are maintained at the set value. If some moments changed, you can using the specially complied VASP to fix the moments. The example sbatch script follows:
The ncl VASP is necessary, do not change it! Then add or change these lines in your INCAR file:
COL_CONSTRAINED_M corresponds to two methods, 1 for methond [1] and 2 for method [2]; the values of M_CONSTR are the moments you want to maintain; the value of LAMBDA should be larger much smaller than 1 for method1 or larger than 5 for method2; the values of MAGMOM are the initial magnetic moments; the values of RWIGS are Wigner-Seitz radius, you can find them in POTCAR.
For non-collinear magnetic moments, new options 5 and 7 have been added to the existing I_CONSTRAINED_M schemes (1, 2, 3). Option 5 implements method [1], while option 7 implements method [2]. When using I_CONSTRAINED_M = 5, in addition to the parameters required for I_CONSTRAINED_M = 1 (such as LAMBDA and M_CONSTR), you must also set H_LAMBDA to specify the magnitude of the applied magnetic field (typically recommended to be much less than 1) and H_CONSTR to define its direction and magnitude (without normalization, following the same format as M_CONSTR). In contrast, I_CONSTRAINED_M = 7 requires the same parameter setup as I_CONSTRAINED_M = 1.
If you check all the scf calculations are correct, you can do the next PASP calculation by sbatch pasp.slurm.
After few seconds, if PASP is finished gracefully, check the spin_exchange.dat file to get the information about exchange coupling coefficients:
The values of the second column are the exchange coupling coefficients between the atoms with the position following columns.
Copy the spin_exchange.dat to the new created subdirectory MC, and modify the PASP.input file(compared to input1): add a line %include MC.input at the head, change the Model find_J_path_sym to Model Spin_lattice_interaction. And prepare a MC.input file:
For Monte Carlo simulations, prepare a larger supercell(such as 666,888) by using the post_VASP script mentioned before as the POSCAR file, also prepare the POSCAR_UC file.
Checking the files by ls:
After few hours(maybe longer, depends on your system), if PASP is finished gracefully, check the C_PTMC_K files, the first column is temprature and the second column is heat capacity, and the temprature correspond to the maximum heat capacity is the \(T_c\) we want to calculate. Further, you can open the lowest_onlyspin.xsf file in VESTA to see the magnetic ordering.
References [1] Y. Chen, Y. Yang, C. Xu, and H. Xiang, Constraining spin directions in density functional theory calculations by imposing a local magnetic field, Phys. Rev. B 107, 214439 (2023). [2] P.W. Ma and S. L. Dudarev, Constrained density functional for noncollinear magnetism, Phys. Rev. B 91,054420 (2015).