Cluster Dynamical Mean Field Theory

This submodule provides functions that perform the CDMFT algorithm.

List of functions

pyqcm.cdmft.cdmft(varia=None, beta=50, wc=2.0, maxiter=32, miniter=0, accur=0.001, accur_hybrid=0.0001, accur_dist=1e-10, accur_E0=1e-10, alpha=0.0, displaymin=False, method='Nelder-Mead', file='cdmft.tsv', averages=False, eps_algo=0, initial_step=0.1, hartree=None, check_sectors=None, grid_type='sharp', counterterms=None, SEF=False, observables=None, verb=False, max_function_eval=5000000, compute_potential_energy=False, double_counting_correct=None)

Performs the CDMFT procedure

Parameters
  • varia ([str]) – list of variational parameters OR tuple of two lists : bath energies and bath hybridizations OR function that returns dicts of bath energies and bath hybridizations given numeric arrays

  • beta (float) – inverse fictitious temperature (for the frequency grid)

  • wc (float) – cutoff frequency (for the frequency grid)

  • maxiter (int) – maximum number of CDMFT iterations

  • miniter (int) – minimum number of CDMFT iterations

  • accur (float) – the procedure converges if parameters do not change by more than accur

  • accur_hybrid (float) – the procedure converges on the hybridization function with this accuracy

  • accur_dist (float) – convergence criterion when minimizing the distance function.

  • accur_E0 (float) – convergence criterion on the impurity ground state energy.

  • alpha (float) – damping parameter (fraction of the previous iteration in the new one) OR (float,int) with number of iterations where damping is used (at the beginning if positive, at the end if negative)

  • displaymin (boolean) – displays the minimum distance function when minimized

  • method (str) – method to use, as used in scipy.optimize.minimize()

  • file (str) – name of the file where the solution is written

  • averages (boolean) – if True, computes the lattice averages after each iteration. Computes them at the end anyway.

  • eps_algo (int) – number of elements in the epsilon algorithm convergence accelerator = 2*eps_algo + 1 (0 = no acceleration)

  • initial_step (float) – initial step in the minimization routine

  • hartree ([class hartree]) – mean-field hartree couplings to incorportate in the convergence procedure

  • check_sectors (boolean) – the ground state is checked against the ground states of the sectors contained in target_sectors

  • grid_type (str) – type of frequency grid along the imaginary axis : ‘sharp’, ‘ifreq’, ‘self’

  • counterterms ([str]) – list of counterterms names (cluster operators that should strive to have zero average)

  • SEF (boolean) – if True, computes the Potthoff functional at the end

  • observable] ([class) – list of observables used to assess convergence

  • verb (boolean) – If True, prints debugging information

  • max_function_eval (int) – maximum number of distance function evaluations when minimizing distance

  • compute_potential_energy (boolean) – If True, computes Tr(Sigma*G) along with the averages

  • double_counting_correct ([(str,str,str,float,float)]) – list of recipes for double counting corrections: (kinetic operator, interaction operator, density operator, coefficient, value of the kinetic operator without interaction) :returns: None

pyqcm.cdmft.cdmft_distance_debug(varia=None, vset=None, beta=50, wc=2.0, grid_type='sharp', counterterms=None)

Debugs the CDMFT distance function

Parameters
  • varia ([str]) – list of variational parameters

  • vset ([[float]]) – sets of bath parameters

  • beta (float) – inverse fictitious temperature (for the frequency grid)

  • wc (float) – cutoff frequency (for the frequency grid)

  • grid_type (str) – type of frequency grid along the imaginary axis : ‘sharp’, ‘ifreq’, ‘self’

  • counterterms ([str]) – list of counterterms names (cluster operators that should strive to have zero average)

  • SEF (boolean) – if True, computes the Potthoff functional at the end

  • observable ([class]) – list of observables used to assess convergence

Returns

None

pyqcm.cdmft.cdmft_forcing(field_name, seq, beta_seq=None, **kwargs)

performs a sequence of CDMFT runs with the external field ‘field_name’ takes the successive values in ‘seq’

Parameters
  • field_name (str) – name of the forcing field

  • seq ([float]) – sequence of values to be taken by the forcing field

  • beta_seq ([float]) – an optional sequence of fictitious inverse temperatures (same length as seq)

  • kwargs – named parameters passed to the CDMFT function

Returns

None

pyqcm.cdmft.cdmft_variational_sequence(basic_params, varia_seq, **kwargs)

performs a sequence of CDMFT runs with an increasing variational set.

Parameters
  • basic_params (str) – specifies non variational parameters, in the format used by set_parameters()

  • varia_seq ([str]) – a sequence of strings specifying additional variational parameters and their initial values

  • kwargs – named parameters passed to the CDMFT function

Returns

None

pyqcm.cdmft.forcing_sequence(f1, f2, beta1, beta2, n=6)

generates logarithmic sequences of fields and temperatures, for use with cdmft_forcing

Parameters
  • f1 (float) – high value of the field

  • f2 (float) – low value of the field

  • beta1 (float) – low value of the inverse temperature

  • beta2 (float) – high value of the inverse temperature

  • n (int) – number of values in the sequence

Return ([float],[float])

lists of field and beta values

pyqcm.cdmft.moving_std(x, min)

finds the subsequence with the smallest standard deviation, with minimum size min

Parameters
  • x ([float]) – sequence

  • min (int) – minimum length of subsequence

List of classes

class pyqcm.cdmft.general_bath(name, ns, nb, spin_dependent=False, spin_flip=False, singlet=False, triplet=False, complex=False, sites=None)
__init__(name, ns, nb, spin_dependent=False, spin_flip=False, singlet=False, triplet=False, complex=False, sites=None)

Defines a general bath (constructor)

Parameters
  • name (str) – name of the cluster-bath model to be defined

  • ns (int) – number of sites in the cluster

  • nb (int) – number of bath orbitals in the cluster

  • spin_dependent (boolean) – if True, the parameters are spin dependent

  • spin_flip (boolean) – if True, spin-flip hybridizations are present

  • singlet (boolean) – if True, defines anomalous singlet hybridizations

  • triplet (boolean) – if True, defines anomalous triplet hybridizations

  • complex (boolean) – if True, defines imaginary parts as well, when appropriate

  • sites ([[int]]) – 2-level list of sites to couple to the bath orbitals (labels from 1 to ns). Format resembles [[site labels to bind to orbital 1], …] .

starting_values(c=1, e=(0.5, 1.5), hyb=(0.5, 0.2), shyb=(0.1, 0.05), pr=False)

returns an initialization string for the bath parameters

Parameters
  • c (int) – cluster label (starts at 1)

  • e ((float,float)) – bounds of the values for the bath energies (absolute value)

  • hyb ((float,float)) – average and deviation of the normal hybridization parameters

  • shyb ((float,float)) – average and deviation of the anomalous hybridization parameters

  • pr (boolean) – prints the starting values if True

Return str

initialization string

starting_values_PH(c=1, e=(1, 0.5), hyb=(0.5, 0.2), phi=None, pr=False)

returns an initialization string for the bath parameters, in the particle-hole symmetric case.

Parameters
  • c (int) – cluster label

  • e ((float)) – range of bath energies

  • hyb ((float,float)) – average and deviation of the normal hybridization parameters

  • phi ([int]) – PH phases of the cluster sites proper

  • pr (boolean) – if True, prints info

Return str

initialization string

varia(H=None, E=None, c=1, spin_down=False)

creates a dict of variational parameters to values taken from the hybridization matrix H and the energies E, for cluster c

Parameters
  • H (ndarray) – matrix of hybridization values

  • E (ndarray) – array of energy values

  • spin_down (boolean) – True for the spin-down values

Return {str,float}

dict of variational parameters to values

varia_E(c=1)

returns a list of parameter names from the bath energies with the suffix appropriate for cluster c

Parameters

c (int) – label of the cluster (starts at 1)

Return [str]

list of parameter names from the bath energies with the suffix appropriate for cluster c

varia_H(c=1)

returns a list of parameter names from the bath hybridization with the suffix appropriate for cluster c

Parameters

c (int) – label of the cluster (starts at 1)

Return [str]

list of parameter names from the bath hybridization with the suffix appropriate for cluster c