TABLE OF CONTENTS
17-hp-composite
DESCRIPTION
This example demonstrates how PWTK facilitates the calculation of Hubbard U parameters with the hp.x code. It is a composite example, where the whole calculation of Hubbard U parameters is split over perturbed atoms and q points.
This example is adopted from HP/examples/exemple07 of Quantum ESPRESSO. The system considered is bulk ferromagnetic Ni2MnGa.
BEWARE
This example takes a while to complete.
EXAMPLE SOURCE FILE
SOURCE
restart on # the pw.x input data CONTROL { pseudo_dir = '.' outdir = '.' prefix = 'Ni2MnGa' } SYSTEM { ibrav = 7 celldm(1) = 7.80 celldm(3) = 1.4142136 nat = 4 ntyp = 3 ecutwfc = 50.0 ecutrho = 400.0 occupations ='smearing' smearing ='mv' degauss = 0.01 nspin = 2, starting_magnetization(Mn) = 0.5 starting_magnetization(Ni) = 0.5 } ELECTRONS { conv_thr = 1.d-15 mixing_beta = 0.7 } ATOMIC_SPECIES { Mn 54.938 Mn.pbesol-spn-rrkjus_psl.0.3.1.UPF Ni 58.693 Ni.pbesol-n-rrkjus_psl.0.1.UPF Ga 69.723 Ga.pbesol-dn-rrkjus_psl.0.2.UPF } ATOMIC_POSITIONS {crystal} { Mn 0.0 0.0 0.0 Ni 1/2 3/4 1/4 Ni 1/2 1/4 3/4 Ga 0.0 1/2 1/2 } K_POINTS {automatic} { 4 4 4 0 0 0 } HUBBARD {ortho-atomic} { U Mn-3d 0.0001 U Ni-3d 0.0001 } # the hp.x input data common to all hp.x calcs INPUTHP { nq1 = 2 nq2 = 2 nq3 = 2 conv_thr_chi = 1.0d-8 iverbosity = 2 } # run the SCF calculation runPW scf.Ni2MnGa # run hp.x calculations per-partes foreach atom {Mn Ni} { input_pushpop { INPUTHP "perturb_only_atom($atom) = .true." foreach {start_q last_q} { 1 2 3 4 } { # run the hp.x calculation for $atom from q-points in [$start_q,$last_q] input_pushpop { INPUTHP "start_q = $start_q last_q = $last_q" runHP hp.Ni2MnGa.$atom.q$start_q-$last_q } } # collect all q points for $atom input_pushpop { INPUTHP "sum_pertq = .true." runHP hp.Ni2MnGa.$atom.collect } } } # final step: collect all pieces of the response matrices, invert them # and calculate U for Mn and Ni INPUTHP { compute_hp = .true. } runHP hp.Ni2MnGa.final