EDIpack Fortran-C interface: Functions

The following is a list of EDIpack functions which are accessible from the C interface

Functions

void read_input(char *instr)

This function reads the input. Interfaces to ed_read_input()

Parameters:

instr – the input file name

void ed_set_Hloc_single_N2(std::complex<double> *Hloc, int64_t *d)

This function sets the local Hamiltonian. Interfaces to f/ed_aux_funx/ed_set_Hloc(). Rank-2 array variant for single-site DMFT

Parameters:
  • Hloc – the local Hamiltonian

  • d – array of dimensions of the local Hamiltonian

void ed_set_Hloc_single_N4(std::complex<double> *Hloc, int64_t *d)

This function sets the local Hamiltonian. Interfaces to f/ed_aux_funx/ed_set_Hloc(). Rank-4 array variant for single-site DMFT.

Parameters:
  • Hloc – the local Hamiltonian

  • d – array of dimensions of the local Hamiltonian

void ed_set_Hloc_lattice_N2(std::complex<double> *Hloc, int64_t *d, int Nlat)

This function sets the local Hamiltonian. Interfaces to f/e2i_aux_funx/ed_set_Hloc(). Rank-2 array variant for real-space DMFT.

Parameters:
  • Hloc – the local Hamiltonian

  • d – array of dimensions of the local Hamiltonian

  • Nlat – number of inequivalent sites

void ed_set_Hloc_lattice_N3(std::complex<double> *Hloc, int64_t *d, int Nlat)

This function sets the local Hamiltonian. Interfaces to f/e2i_aux_funx/ed_set_Hloc(). Rank-3 array variant for real-space DMFT.

Parameters:
  • Hloc – the local Hamiltonian

  • d – array of dimensions of the local Hamiltonian

  • Nlat – number of inequivalent sites

void ed_set_Hloc_lattice_N5(std::complex<double> *Hloc, int64_t *d, int Nlat)

This function sets the local Hamiltonian. Interfaces to f/e2i_aux_funx/ed_set_Hloc(). Rank-5 array variant for real-space DMFT.

Parameters:
  • Hloc – the local Hamiltonian

  • d – array of dimensions of the local Hamiltonian

  • Nlat – number of inequivalent sites

int get_bath_dimension_direct(void)

This function gets the dimension of the user-accessible bath array. Interfaces to get_bath_dimension().

Returns:

the dimension of the bath array

int get_bath_dimension_symmetries(int Nsym)

This function gets the dimension of the user-accessible bath array. Specific for replica and general baths. Interfaces to get_bath_dimension().

Parameters:

Nsym – the number of components of the replica matrix linear combination

Returns:

the dimension of the bath array

void search_variable(double *var, double *ntmp, int64_t *converged)

This function updates a variable (usually the chemical potential) trying to achieve a desired density set by nread. Interfaces to ed_search-variable().

Parameters:
  • var – the variable to be adjusted

  • ntmp – the density value at a given iteration

  • converged – the DMFT loop convergence status.

void init_Hreplica_symmetries_d3(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the replica bath H. Interfaces to f/ed_bath_replica/set_hreplica(). Rank-3 array case for single-site DMFT.

Parameters:
  • Hvec – array of matrices summing up to the replica H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hreplica_symmetries_d5(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the replica bath H. Interfaces to f/ed_bath_replica/set_hreplica(). Rank-5 array case for single-site DMFT.

Parameters:
  • Hvec – array of matrices summing up to the replica H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hgeneral_symmetries_d3(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the general bath H. Interfaces to f/ed_bath_replica/set_hgeneral(). Rank-3 array case for single-site DMFT.

Parameters:
  • Hvec – array of matrices summing up to the general H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hgeneral_symmetries_d5(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the general bath H. Interfaces to f/ed_bath_replica/set_hgeneral(). Rank-5 array case for single-site DMFT.

Parameters:
  • Hvec – array of matrices summing up to the general H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hreplica_symmetries_lattice_d3(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the replica bath H. Interfaces to f/e2i_bath_replica/set_hreplica(). Rank-3 array case for real-space DMFT.

Parameters:
  • Hvec – array of matrices summing up to the replica H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hreplica_symmetries_lattice_d5(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the replica bath H. Interfaces to f/e2i_bath_replica/set_hreplica(). Rank-5 array case for real-space DMFT.

Parameters:
  • Hvec – array of matrices summing up to the replica H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hgeneral_symmetries_lattice_d3(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the general bath H. Interfaces to f/e2i_bath_replica/set_hgeneral(). Rank-3 array case for real-space DMFT.

Parameters:
  • Hvec – array of matrices summing up to the general H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void init_Hgeneral_symmetries_lattice_d5(std::complex<double> *Hvec, int64_t *d_hvec, double *lambdavec, int64_t *d_lambdavec)

This function sets the general bath H. Interfaces to f/e2i_bath_replica/set_hgeneral(). Rank-5 array case for real-space DMFT.

Parameters:
  • Hvec – array of matrices summing up to the general H

  • d_hvec – dimensions of the array of matrices

  • lambdavec – array of coefficients of the array linear combination

  • d_lambdavec – dimensions of the array of coefficients

void break_symmetry_bath_site(double *bath, int64_t *dim_bath, double field, double sgn, int sav)

This function breaks the bath symmetry. Interfaces to f/ed_bath_user/break_symmetry_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • field – symmetry breaking field

  • sgn – sign of the symmetry breaking field

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void break_symmetry_bath_ineq(double *bath, int64_t *dim_bath, double field, double *sgn, int sav)

This function breaks the bath symmetry. Interfaces to f/e2i_bath_user/break_symmetry_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath and sign array

  • field – symmetry breaking field

  • sgn – array of signs of the symmetry breaking field

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void spin_symmetrize_bath_site(double *bath, int64_t *dim_bath, int sav)

This function enforces a paramagnetic bath Interfaces to f/ed_bath_user/spin_symmetrize_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath and sign array

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void spin_symmetrize_bath_ineq(double *bath, int64_t *dim_bath, int sav)

This function enforces a paramagnetic bath Interfaces to f/e2i_bath_user/spin_symmetrize_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void orb_symmetrize_bath_site(double *bath, int64_t *dim_bath, int orb1, int orb2, int sav)

This function enforces an orbital-symmetric bath. Interfaces to f/ed_bath_user/orb_symmetrize_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • orb1 – first orbital to symmetrize

  • orb2 – second orbital to symmetrize

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void orb_symmetrize_bath_ineq(double *bath, int64_t *dim_bath, int orb1, int orb2, int sav)

This function enforces an orbital-symmetric bath. Interfaces to f/e2i_bath_user/orb_symmetrize_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • orb1 – first orbital to symmetrize

  • orb2 – second orbital to symmetrize

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void orb_equality_bath_site(double *bath, int64_t *dim_bath, int indx, int sav)

This function enforces an orbita-symmetric bath. Interfaces to f/ed_bath_user/orb_symmetrize_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • indx – index of the orbital to copy

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void orb_equality_bath_ineq(double *bath, int64_t *dim_bath, int indx, int sav)

This function enforces an orbita-symmetric bath. Interfaces to f/e2i_bath_user/orb_symmetrize_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • indx – index of the orbital to copy

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void ph_symmetrize_bath_site(double *bath, int64_t *dim_bath, int sav)

This function enforces a particle-hole symmetric bath. Interfaces to f/ed_bath_user/ph_symmetrize_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void ph_symmetrize_bath_ineq(double *bath, int64_t *dim_bath, int sav)

This function enforces a particle-hole symmetric bath. Interfaces to f/e2i_bath_user/ph_symmetrize_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • sav – integer flag to save the output bath. 1 if true, 0 if false.

void save_array_as_bath_site(double *bath, int64_t *dim_bath)

This function saves the bath array in a properly formatted file. Interfaces to f/ed_bath_user/save_array_as_bath(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

void save_array_as_bath_ineq(double *bath, int64_t *dim_bath)

This function saves the bath array in a properly formatted file. Interfaces to f/e2i_bath_user/save_array_as_bath(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

void chi2_fitgf_single_normal_n3(std::complex<double> *g, int64_t *dim_g, double *bath, int64_t *dim_bath, int ispin, int iorb, int fmpi)

This function fits the Weiss field or hybridization function. Interfaces to f/ed_bath_fit/ed_chi2_fitgf(). Single-site DMFT variant for ED_MODE = NORMAL/NONSU2 and rank-3 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

  • iorb – orbital index. If 0, the fortran function is called without iorb

  • fmpi – integer flag to enable mpi. 1 for True, 0 for False

void chi2_fitgf_single_normal_n5(std::complex<double> *g, int64_t *dim_g, double *bath, int64_t *dim_bath, int ispin, int iorb, int fmpi)

This function fits the Weiss field or hybridization function. Interfaces to f/ed_bath_fit/ed_chi2_fitgf(). Single-site DMFT variant for ED_MODE = NORMAL/NONSU2 and rank-5 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

  • iorb – orbital index. If 0, the fortran function is called without iorb

  • fmpi – integer flag to enable mpi. 1 for True, 0 for False

void chi2_fitgf_single_superc_n3(std::complex<double> *g, int64_t *dim_g, std::complex<double> *f, int64_t *dim_f, double *bath, int64_t *dim_bath, int ispin, int iorb, int fmpi)

This function fits the Weiss field or hybridization function. Interfaces to f/ed_bath_fit/ed_chi2_fitgf(). Single-site DMFT variant for ED_MODE = SUPERC and rank-3 arrays.

Parameters:
  • g – function to fit, normal component

  • dim_g – dimensions of the function to fit, normal component

  • f – function to fit, anomalous component

  • dim_f – dimensions of the function to fit, anomalous component

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

  • iorb – orbital index. If 0, the fortran function is called without iorb

  • fmpi – integer flag to enable mpi. 1 for True, 0 for False

void chi2_fitgf_single_superc_n5(std::complex<double> *g, int64_t *dim_g, std::complex<double> *f, int64_t *dim_f, double *bath, int64_t *dim_bath, int ispin, int iorb, int fmpi)

This function fits the Weiss field or hybridization function. Interfaces to f/ed_bath_fit/ed_chi2_fitgf(). Single-site DMFT variant for ED_MODE = SUPERC and rank-5 arrays.

Parameters:
  • g – function to fit, normal component

  • dim_g – dimensions of the function to fit, normal component

  • f – function to fit, anomalous component

  • dim_f – dimensions of the function to fit, anomalous component

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

  • iorb – orbital index. If 0, the fortran function is called without iorb

  • fmpi – integer flag to enable mpi. 1 for True, 0 for False

void chi2_fitgf_lattice_normal_n3(std::complex<double> *g, int64_t *dim_g, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = NORMAL/NONSU2 and rank-3 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void chi2_fitgf_lattice_normal_n4(std::complex<double> *g, int64_t *dim_g, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = NORMAL/NONSU2 and rank-4 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void chi2_fitgf_lattice_normal_n6(std::complex<double> *g, int64_t *dim_g, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = NORMAL/NONSU2 and rank-6 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void chi2_fitgf_lattice_superc_n3(std::complex<double> *g, int64_t *dim_g, std::complex<double> *f, int64_t *dim_f, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = SUPERC and rank-3 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • f – function to fit, anomalous component

  • dim_f – dimensions of the function to fit, anomalous component

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void chi2_fitgf_lattice_superc_n4(std::complex<double> *g, int64_t *dim_g, std::complex<double> *f, int64_t *dim_f, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = SUPERC and rank-4 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • f – function to fit, anomalous component

  • dim_f – dimensions of the function to fit, anomalous component

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void chi2_fitgf_lattice_superc_n6(std::complex<double> *g, int64_t *dim_g, std::complex<double> *f, int64_t *dim_f, double *bath, int64_t *dim_bath, int ispin)

This function fits the Weiss field or hybridization function. Interfaces to f/e2i_bath_fit/ed_chi2_fitgf(). Real-space DMFT variant for ED_MODE = SUPERC and rank-6 arrays.

Parameters:
  • g – function to fit

  • dim_g – dimensions of the function to fit

  • f – function to fit, anomalous component

  • dim_f – dimensions of the function to fit, anomalous component

  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • ispin – spin index

void ed_get_dens_n1(std::complex<double> *self)

This function obtains the density. Interfaces to f/ed_io/ed_get_dens(). Single-site DMFT version

Parameters:

self – orbitally-resolved density array

void ed_get_dens_n2(std::complex<double> *self, int Nlat)

This function obtains the density. Interfaces to f/e2i_io/ed_get_dens(). Real-space DMFT version

Parameters:
  • self – density array

  • Nlat – number of inequivalent sites

void ed_get_mag_n2(std::complex<double> *self)

This function obtains the magnetization. Interfaces to f/ed_io/ed_get_mag(). Single-site DMFT version

Parameters:

self – magnetization array

void ed_get_mag_n3(std::complex<double> *self, int Nlat)

This function obtains the magnetization. Interfaces to f/e2i_io/ed_get_mag(). Real-space DMFT version

Parameters:
  • self – magnetization array

  • Nlat – number of inequivalent sites

void ed_get_docc_n1(std::complex<double> *self)

This function obtains the double-occupation. Interfaces to f/ed_io/ed_get_docc(). Single-site DMFT version

Parameters:

self – double-occupation array

void ed_get_docc_n2(std::complex<double> *self, int Nlat)

This function obtains the double occupation. Interfaces to f/e2i_io/ed_get_docc(). Real-space DMFT version

Parameters:
  • self – double-occupation array

  • Nlat – number of inequivalent sites

void ed_get_phisc_n2(std::complex<double> *self)

This function obtains the superconductive order parameter. Interfaces to f/ed_io/ed_get_phi(). Single-site DMFT version

Parameters:

self – superconductive order parameter array

void ed_get_phisc_n3(std::complex<double> *self, int Nlat)

This function obtains the superconductive order parameter. Interfaces to f/e2i_io/ed_get_phi(). Real-space DMFT version

Parameters:
  • self – superconductive order parameter array

  • Nlat – number of inequivalent sites

void ed_get_eimp_n1(std::complex<double> *self)

This function obtains the local energy. Interfaces to f/ed_io/ed_get_eimp(). Single-site DMFT version

Parameters:

self – energy array

void ed_get_eimp_n2(std::complex<double> *self, int Nlat)

This function obtains the local energy. Interfaces to f/e2i_io/ed_get_eimp(). Real-space DMFT version

Parameters:
  • self – energy array

  • Nlat – number of inequivalent sites

void get_sigma_site_n3(std::complex<double> *self, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the self-energy. Interfaces to f/ed_io/ed_get_sigma() for a rank-3 array. Single-site DMFT variant.

Parameters:
  • self – the self-energy array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_sigma_site_n5(std::complex<double> *self, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the self-energy. Interfaces to f/ed_io/ed_get_sigma() for a rank-5 array. Single-site DMFT variant.

Parameters:
  • self – the self-energy array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_sigma_lattice_n3(std::complex<double> *self, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the self-energy. Interfaces to f/e2i_io/ed_get_sigma() for a rank-3 array. Real-space DMFT variant.

Parameters:
  • self – the self-energy array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_sigma_lattice_n4(std::complex<double> *self, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the self-energy. Interfaces to f/e2i_io/ed_get_sigma() for a rank-4 array. Real-space DMFT variant.

Parameters:
  • self – the self-energy array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_sigma_lattice_n6(std::complex<double> *self, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the self-energy. Interfaces to f/e2i_io/ed_get_sigma() for a rank-6 array. Real-space DMFT variant.

Parameters:
  • self – the self-energy array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_gimp_site_n3(std::complex<double> *gimp, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the impurity Green's function. Interfaces to f/ed_io/ed_get_gimp() for a rank-3 array. Single-site DMFT variant.

Parameters:
  • gimp – the impurity Green's function array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_gimp_site_n5(std::complex<double> *gimp, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the impurity Green's function. Interfaces to f/ed_io/ed_get_gimp() for a rank-5 array. Single-site DMFT variant.

Parameters:
  • gimp – the impurity Green's function array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_gimp_lattice_n3(std::complex<double> *gimp, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the impurity Green's function. Interfaces to f/e2i_io/ed_get_gimp() for a rank-3 array. Real-space DMFT variant.

Parameters:
  • gimp – the impurity Green's function array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_gimp_lattice_n4(std::complex<double> *gimp, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the impurity Green's function. Interfaces to f/e2i_io/ed_get_gimp() for a rank-4 array. Real-space DMFT variant.

Parameters:
  • gimp – the impurity Green's function array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_gimp_lattice_n6(std::complex<double> *gimp, int Nineq, int axis, int typ, std::complex<double> *zeta, int dz, int zflag)

This function obtains the impurity Green's function. Interfaces to f/e2i_io/ed_get_gimp() for a rank-6 array. Real-space DMFT variant.

Parameters:
  • gimp – the impurity Green's function array

  • Nineq – numer of inequivalent sites

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

  • zeta – frequency array

  • dz – dimension of the frequency array

  • zflag – flag to set (1) or not (0) calculation with internal frequency array

void get_g0and_n3(std::complex<double> *warray, int64_t *dim_warray, double *bath, int dim_bath, std::complex<double> *G0and, int64_t *dim_g0and, char *axis, char *typ)

This function obtains the Weiss field. Interfaces to f/ed_io/ed_get_g0and() for a rank-3 array. Single-site DMFT variant.

Parameters:
  • warray – Array of frequencies

  • dim_warray – Dimension of the array of frequencies

  • bath – User-accessible bath array

  • dim_bath – Dimension of the bath array

  • G0and – the Weiss field array

  • dim_g0and – the dimensions of the Weiss field array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

void get_g0and_n5(std::complex<double> *warray, int64_t *dim_warray, double *bath, int dim_bath, std::complex<double> *G0and, int64_t *dim_g0and, char *axis = (char*)"m", char *typ = (char*)"n")

This function obtains the Weiss field. Interfaces to f/ed_io/ed_get_g0and() for a rank-5 array. Single-site DMFT variant.

Parameters:
  • warray – Array of frequencies

  • dim_warray – Dimension of the array of frequencies

  • bath – User-accessible bath array

  • dim_bath – Dimension of the bath array

  • G0and – the Weiss field array

  • dim_g0and – the dimensions of the Weiss field array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

void get_delta_n3(std::complex<double> *warray, int64_t *dim_warray, double *bath, int dim_bath, std::complex<double> *Delta, int64_t *dim_delta, char *axis, char *typ)

This function obtains the hybridization function. Interfaces to f/ed_io/ed_get_delta() for a rank-3 array. Single-site DMFT variant.

Parameters:
  • warray – Array of frequencies

  • dim_warray – Dimension of the array of frequencies

  • bath – User-accessible bath array

  • dim_bath – Dimension of the bath array

  • Delta – the Weiss field array

  • dim_delta – the dimensions of the Weiss field array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

void get_delta_n5(std::complex<double> *warray, int64_t *dim_warray, double *bath, int dim_bath, std::complex<double> *Delta, int64_t *dim_delta, char *axis, char *typ)

This function obtains the hybridization function. Interfaces to f/ed_io/ed_get_delta() for a rank-5 array. Single-site DMFT variant.

Parameters:
  • warray – Array of frequencies

  • dim_warray – Dimension of the array of frequencies

  • bath – User-accessible bath array

  • dim_bath – Dimension of the bath array

  • Delta – the Weiss field array

  • dim_delta – the dimensions of the Weiss field array

  • axis – integer flag for axis: 1 = r, otherwise m

  • typ – integer flag for type: 1 = a, otherwise n

void ed_get_spinchi(std::complex<double> *self, std::complex<double> *zeta, int dim_zeta, int zetaflag, char *axis, int Nsites, int latticeflag)

This function obtains the spin susceptibility. Interfaces to f/ed_io/ed_spinchi() or f/e2i_io/ed_spinchi().

Parameters:
  • self – susceptibility array

  • zeta – frequency array

  • dim_zeta – dimension of the frequency array

  • zetaflag – flag to set (1) or not (0) calculation with internal frequency/time array

  • axis – flag for axis

  • Nsites – number of inequivalent sites (1 for single-impurity)

  • latticeflag – flag to set (1) or not (0) calculation with real-space DMFT

void ed_get_denschi(std::complex<double> *self, std::complex<double> *zeta, int dim_zeta, int zetaflag, char *axis, int Nsites, int latticeflag)

This function obtains the charge susceptibility. Interfaces to f/ed_io/ed_denschi() or f/e2i_io/ed_denschi().

Parameters:
  • self – susceptibility array

  • zeta – frequency array

  • dim_zeta – dimension of the frequency array

  • zetaflag – flag to set (1) or not (0) calculation with internal frequency/time array

  • axis – flag for axis

  • Nsites – number of inequivalent sites (1 for single-impurity)

  • latticeflag – flag to set (1) or not (0) calculation with real-space DMFT

void ed_get_pairchi(std::complex<double> *self, std::complex<double> *zeta, int dim_zeta, int zetaflag, char *axis, int Nsites, int latticeflag)

This function obtains the pairing susceptibility. Interfaces to f/ed_io/ed_pairchi() or f/e2i_io/ed_pairchi().

Parameters:
  • self – susceptibility array

  • zeta – frequency array

  • dim_zeta – dimension of the frequency array

  • zetaflag – flag to set (1) or not (0) calculation with internal frequency/time array

  • axis – flag for axis

  • Nsites – number of inequivalent sites (1 for single-impurity)

  • latticeflag – flag to set (1) or not (0) calculation with real-space DMFT

void ed_get_exctchi(std::complex<double> *self, std::complex<double> *zeta, int dim_zeta, int zetaflag, char *axis, int Nsites, int latticeflag)

This function obtains the excitonic susceptibility. Interfaces to f/ed_io/ed_exctchi() or f/e2i_io/ed_exctchi().

Parameters:
  • self – susceptibility array

  • zeta – frequency array

  • dim_zeta – dimension of the frequency array

  • zetaflag – flag to set (1) or not (0) calculation with internal frequency/time array

  • axis – flag for axis

  • Nsites – number of inequivalent sites (1 for single-impurity)

  • latticeflag – flag to set (1) or not (0) calculation with real-space DMFT

void init_solver_site(double *bath, int64_t *dim_bath)

This function initializes the solver. Interfaces to f/ed_main/ed_init_solver(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

void init_solver_ineq(double *bath, int64_t *dim_bath)

This function initializes the solver. Interfaces to f/ed_main/ed_init_solver(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

void solve_site(double *bath, int64_t *dim_bath, int flag_gf, int flag_mpi)

This function initializes the solver. Interfaces to f/ed_main/solve(). Single-site DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • flag_gf – Green's function calculation flag (1=True, 0=False)

  • flag_mpi – mpi setting flag (1=True, 0=False)

void solve_ineq(double *bath, int64_t *dim_bath, int flag_gf, int mpi_lanc)

This function initializes the solver. Interfaces to f/e2i_main/solve(). Real-space DMFT variant.

Parameters:
  • bath – user-accessible bath array

  • dim_bath – dimensions of the bath array

  • flag_gf – Green's function calculation flag (1=True, 0=False)

  • mpi_lanc – parallelization setting flag (1=True, 0=False)

void finalize_solver(int Nineq)

This function finalizes the solver. Interfaces to f/ed_main/finalize_solver() and f/e2i_main/finalize_solver().

Parameters:

Nineq – number of inequivalent sites. Set to 0 for single-site DMFT.

void reset_umatrix()

This function resets the interaction coefficients and user-provided terms Interfaces to f/ed_parse_umatrix/reset_umatrix().

void add_twobody_operator(int o1, int s1, int o2, int s2, int o3, int s3, int o4, int s4, double U)

This function sets the a two-body interaction term Interfaces to f/ed_parse_umatrix/add_twobody_operator().

Parameters:
  • o1 – orbital index of first creation operator

  • s1 – spin index of first creation operator

  • o2 – orbital index of second creation operator

  • s2 – spin index of second creation operator

  • o3 – orbital index of first annihilation operator

  • s3 – spin index of first annihilation operator

  • o4 – orbital index of second annihilation operator

  • s4 – spin index of second annihilation operator

  • U – interaction coefficient