postprocessing.eval_U_cRPA_Vasp

postprocessing.eval_U_cRPA_Vasp.calc_kan_params(uijkl, n_sites, n_orb, out=False)[source]

calculates the kanamori interaction parameters from a given Uijkl matrix. Follows the procedure given in PHYSICAL REVIEW B 86, 165105 (2012) Vaugier,Biermann formula 30,31,32

Parameters:
uijklnumpy array

4d numpy array of Coulomb tensor

n_sites: int

number of different atoms (Wannier centers)

n_orbint

number of orbitals per atom

outbool

verbose mode

Returns:
int_paramsdirect

kanamori parameters

postprocessing.eval_U_cRPA_Vasp.calc_u_avg_fulld(uijkl, n_sites, n_orb, out=False)[source]

calculates the coulomb integrals from a given Uijkl matrix for full d shells. Follows the procedure given in Pavarini - 2014 - arXiv - 1411 6906 - julich school U matrix page 8 or as done in PHYSICAL REVIEW B 86, 165105 (2012) Vaugier,Biermann formula 23, 25 works atm only for full d shell (l=2)

Returns F0=U, and J=(F2+F4)/14

Parameters:
uijklnumpy array

4d numpy array of Coulomb tensor

n_sites: int

number of different atoms (Wannier centers)

n_orbint

number of orbitals per atom

outbool

verbose mode

Returns:
int_paramsdirect

Slater parameters

postprocessing.eval_U_cRPA_Vasp.calculate_interaction_from_averaging(uijkl, n_sites, n_orb, out=False)[source]

calculates U,J by averaging directly the Uijkl matrix ignoring if tensor is given in spherical or cubic basis. The assumption here is that the averaging gives indepentendly of the choosen basis (cubic or spherical harmonics) the same results if Uijkl is a true Slater matrix.

Returns F0=U, and J=(F2+F4)/14

Parameters:
uijklnumpy array

4d numpy array of Coulomb tensor

n_sites: int

number of different atoms (Wannier centers)

n_orbint

number of orbitals per atom

outbool

verbose mode

Returns:
U, J: tuple

Slater parameters

postprocessing.eval_U_cRPA_Vasp.construct_U_kan(n_orb, U, J, Up=None, Jc=None)[source]

construct Kanamori Uijkl tensor for given U, J, Up, and Jc

Parameters:
n_orbint

number of orbitals

Ufloat

U value for elements Uiiii

Jfloat

Hunds coupling J for tensor elements Uijji

Upfloat, optional, default=U-2J

inter orbital exchange term Uijij

Jcfloat, optional, default=J

Uiijj term, is the same as J for real valued wave functions

Returns:
uijklnumpy array

uijkl Coulomb tensor

postprocessing.eval_U_cRPA_Vasp.fit_kanamori(uijkl, n_orb, switch_jk=False, fit_2=True, fit_3=False, fit_4=True)[source]

Fit Kanamori Hamiltonian with scipy to 2,3, and / or 4 parameters

Parameters:
uijkl: np.array (n_orb x n_orb x n_orb x n_orb)

input four index tensor

n_orb: int

number of orbitals

switch_jk: bool, default=False

flip two inner indices in input U tensor (for Vasp)

fit_2: bool, default=True

fit two parameter form

fit_3: bool, default=False

fit three parameter form (U,Up,J=Jc)

fit_4: bool, default=True

fit four parameter form

Returns:
Uijkl_fit: np.array (n_orb x n_orb x n_orb x n_orb)

fitted Uijkl tensor

postprocessing.eval_U_cRPA_Vasp.fit_slater_fulld(uijkl, n_sites, U_init, J_init, fixed_F4_F2=True)[source]

finds best Slater parameters U, J for given Uijkl tensor using the triqs U_matrix operator routine assumes F4/F2=0.625

postprocessing.eval_U_cRPA_Vasp.read_uijkl(path_to_uijkl, n_sites, n_orb)[source]

reads the VASP UIJKL files or the vijkl file if wanted

Parameters:
path_to_uijklstring

path to Uijkl like file

n_sites: int

number of different atoms (Wannier centers)

n_orbint

number of orbitals per atom

Returns:
uijklnumpy array

uijkl Coulomb tensor

postprocessing.eval_U_cRPA_Vasp.red_to_2ind(uijkl, n_sites, n_orb, out=False)[source]

reduces the 4index coulomb matrix to a 2index matrix and follows the procedure given in PRB96 seth,peil,georges: U_antipar = U_mm’^oo’ = U_mm’mm’ (Coulomb Int) U_par = U_mm’^oo = U_mm’mm’ - U_mm’m’m (for intersite interaction) U_ijij (Hunds coupling) the indices in VASP are switched: U_ijkl —VASP–> U_ikjl

Parameters:
uijklnumpy array

4d numpy array of Coulomb tensor

n_sites: int

number of different atoms (Wannier centers)

n_orbint

number of orbitals per atom

outbool

verbose mode

Returns:
Uij_antinumpy array

red 2 index matrix U_mm’mm’

Uiijjnumpy array

red 2 index matrix U_iijj

Uijjinumpy array

red 2 index matrix Uijji

Uij_parnumpy array

red 2 index matrix U_mm’mm’ - U_mm’m’m