Source code for ase2sprkkr.examples.A18_Ni2FeGa_JXC.ni2fega_jxc

"""Calculate Ni2FeGa exchange couplings and export them for UppASD."""


[docs] def make_ni2fega(): """Return the ordered primitive Ni2FeGa Heusler cell.""" import numpy as np from ase2sprkkr import SPRKKRAtoms cell = 5.748 * np.array( [[0.0, 0.5, 0.5], [0.5, 0.0, 0.5], [0.5, 0.5, 0.0]] ) return SPRKKRAtoms( symbols=["Ni", "Ni", "Fe", "Ga"], scaled_positions=[ [0.25, 0.25, 0.25], [0.75, 0.75, 0.75], [0.50, 0.50, 0.50], [0.00, 0.00, 0.00], ], cell=cell, pbc=True, )
[docs] def main(): from ase2sprkkr import SPRKKR # Exchange parameters require a converged magnetic potential. Performing # SCF here keeps the example independent of the CPA and XAS examples. calculator = SPRKKR(atoms=make_ni2fega()) scf_result = calculator.calculate() jxc_options = { "CONTROL.DATASET": "Ni2FeGa", "TAU.NKTAB": 1000, "MODE.LLOYD": False, "TASK.CLURAD": 4.5, "SITES.NL": 4, "MODE": "SP-SREL", "ENERGY.NE": 32, } result = calculator.calculate( potential=scf_result.potential_filename, input_parameters="jxc", options=jxc_options, ) # Inspect all three exchange-tensor components, report SPR-KKR's mean-field # Curie temperature and create jfile/posfile/momfile/inpsd for UppASD. result.jxc.plot(layout=(1, 3)) print("Mean-field Curie temperature:", result.mean_field_curie_temperature) result.write_uppasd_files()
if __name__ == "__main__": main()