MagInteract

class MagInt.MagInteract.MagInteract(general_par, magint_par, label_corrsite, GSM=None, SK=None, S_HI=None, GF_tmat=None)

Implements the force-theorem Hubbard-I (FT-HI) approach to intersite exchange interactions in correlated insulators. The formalism is given in L. V. Pourovskii Phys. Rev. B 94, 115117 (2016) This Python-3 version is based on TRIQS library

Retrieve_StBas(item, h5name='Standard_Basis.h5')

Retrieves the standard basis from Standard_Basis.h5.

Parameters:

selfobject

The instance of the class.

itemlist

A list containing the group and item names to retrieve from the HDF5 file, e.g., [h5_group, h5_item].

h5namestr, optional

The name of the HDF5 file where the standard basis is stored. Default is ‘Standard_Basis.h5’.

Returns:

StBasnp.ndarray

The retrieved standard basis as a NumPy array.

This function reads the standard basis from an HDF5 file and returns it as a NumPy array.

__init__(general_par, magint_par, label_corrsite, GSM=None, SK=None, S_HI=None, GF_tmat=None)

Constructor for initializing magnetic interaction calculations.

Parameters:

general_pardict

Dictionary containing general parameters, e.g., ‘dft_exec’ specifying the DFT execution type and ‘filename’.

magint_pardict

Dictionary containing parameters specific to magnetic interactions, e.g., ‘atom1’, ‘atom2’, and ‘n_shells’.

label_corrsitedict

Label for the correlated sites.

GSMobject, optional

Green’s function mesh. None by default.

SKobject, optional

Object containing structural information. None by default.

S_HIobject, optional

Object containing information on the Hamiltonian interaction structure. None by default.

GF_tmatlist or None, optional

List of transformation matrices to apply to intersite GF at each k-point, if required. None by default.

calc_MagInt(general_par, S_INT, one_per_shell=False, calc_off_diag=False, remove_CF=False, R_arr=None, R_arr_site=None, Sigma_fix=None)

Perform calculation of magnetic pair interactions by considering the intersite Green’s function and the Hubbard-I self-energy.

The function calculates magnetic pair interactions by first reading the real-space intersite vectors R, generating k-mesh in the full Brillouin zone, and then calculating the intersite Green’s function G_R. The interactions are then computed with the Hubbard-I self-energy. The interactions are stored and printed in meV.

Parameters:

general_pardict

General parameters required for the calculation.

S_INTdict

Hubbard-I self-energy.

one_per_shellbool, optional

Calculate only one interaction for each coordinate shell. Default is False.

calc_off_diagbool, optional

Calculate off-diagonal interactions. Default is False.

remove_CFbool, optional

Remove crystal field. Default is False.

R_arrnp.ndarray or None, optional

Real-space lattice vectors connecting correlated sites. Default is None.

R_arr_sitenp.ndarray or None, optional

Sites corresponding to the real-space vectors in R_arr. Default is None.

Sigma_fixnp.ndarray or None, optional

Fixed self-energy input. If provided, Sigma will be set to this value. Default is None.

Returns:

Vdict

Calculated magnetic interactions.

V_4inddict

Full 4-index magnetic interactions if calc_off_diag is True.

int_pairsdict

Interaction pairs for the calculated interactions.

Notes:

For Wien2k executions, the lattice vectors are read from the “.outputnn” file. Local rotations are suppressed during the calculation.

inter_site_GF(general_par, G_off, G_off_inv)

Calculates inter-site Green’s Functions (GF) for all required pair vectors.

The function computes the inter-site GF based on the Bloch’s theorem and updates the G_off dictionary with the Fourier-transformed GF values. This function also handles the inversion symmetry to update the G_off_inv dictionary.

Parameters:

general_pardict

Dictionary of general parameters. Must include ‘dft_exec’ which specifies the DFT execution type (either ‘Wien2k’ or ‘Vasp’).

G_offdict

Dictionary to store the Fourier-transformed inter-site GF. The keys are constructed from type0, type1, and R_key.

G_off_invdict

Dictionary to store the Fourier-transformed inter-site GF considering inversion symmetry. It has the same structure as G_off.

Returns:

None.

The method updates the dictionaries G_off and G_off_inv in-place.

Raises:

AssertionError

If the given block names in G_off are neither ‘up/down’ nor ‘ud’. If there’s an inconsistency between direct and inv transformed sites. If there’s a key error for constructed keys in G_off.

reorder_V(V, V4, orl)

Reorders V4 in accordance with the permutation matrix order.

Parameters:

selfobject

The instance of the class.

Vdict

A dictionary containing complex-valued matrices.

V4dict

A dictionary containing complex-valued rank-4 tensors.

orllist

A list containing the permutation order.

This function reorders the rank-4 tensors in V4 according to the permutation order orl. The result is stored back in the V4 dictionary.

rot_stbas(StBas, n_el, nlm, rot_mat_in, rot_time_rev)

Rotate standard basis

Parameters:

StBasnp.ndarray

initial standard basis

n_elinteger

shell occupancy

nlminteger

shell orbital degeneracy

rot_mat_innp.ndarray

one-electron rotation matrix of dimension ( nlm*2 x nlm*2 ) if SO included or ( nlm x nlm ) otherwise

rot_time_revinteger

=1 if time reversal is to be applied together with rotation

Returns:

StBas_outnp.ndarray

transformed Standard Basis

trans_V(V, V4, S_INT, tol=1e-07, site_list=None)

Transform V and V4 to a new basis given by transmat.

Parameters:

selfobject

The instance of the class.

Vdict

A dictionary of matrices to be transformed.

V4dict

A dictionary of 4-index matrices to be transformed.

transmat0np.ndarray or list

Transformation matrix for the first site. If a list, transmat0[0] is applied to the first site.

transmat1np.ndarray

Transformation matrix for the second site.

tolfloat, optional

Tolerance for considering small values as zero. Default is 1e-7.

site_listlist, optional

List of two sites for which the transformation is applied. Default is None.

Returns:

None

Transforms the matrices in V and V4 to a new basis using the provided transformation matrices.

  • If transmat0 is an np.ndarray, it’s applied to both sites.

  • If transmat0 is a list, transmat0[0] is applied to the first site, and transmat1 is applied to the second site.

The transformed matrices are stored back in V and V4.