User Bath symmetry operations

Description

Implements functions the user can use to enforce specific symmetry operations on the bath array.

Quick access

Routines:

break_symmetry_bath(), spin_symmetrize_bath(), orb_symmetrize_bath(), orb_equality_bath(), ph_symmetrize_bath(), ph_trans_bath(), enforce_normal_bath(), save_array_as_bath(), impose_equal_lambda()

Used modules

  • sf_constants

  • sf_iotools

  • sf_linalg

  • sf_arrays

  • sf_misc

  • ed_input_vars: Contains all global input variables which can be set by the user through the input file. A specific preocedure ed_read_input() should be called to read the input file using parse_input_variable() procedure from SciFortran. All variables are automatically set to a default, looked for and updated by reading into the file and, sequentially looked for and updated from command line (std.input) using the notation variable_name=variable_value(s) (case independent).

  • ed_vars_global: Contains all variables, arrays and derived types instances shared throughout the code. Specifically, it contains definitions of the effective_bath, the gfmatrix and the sector data structures.

  • ed_aux_funx: Hosts a number of auxiliary procedures required in different parts of the code. Specifically, it implements: creation/annihilation fermionic operators, binary decomposition of integer representation of Fock states and setup the local impurity Hamiltonian

  • ed_bath_aux: Implements a number of auxiliary procedures used to construct replica/general bath

  • ed_bath_dim: Returns or check the dimensions to which the user should allocate the bath array.

  • ed_bath_dmft: A class for the the effective_bath data structure describing the effective bath in the code.

Subroutines and functions

interface  ed_bath_user/break_symmetry_bath(bath_, field, sign[, save])

Function to impose a specific symmetry breaking pattern into the energy levels of the bath. A common case is to find magnetic solution by breaking spin degeneracy of the levels.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:
  • bath_ (various shapes) [real] – user bath array

  • field [real] – tiny symmetry breaking field

  • sign [real] – sign of the field

Options:

save [logical] – optional flag to save the output bath

interface  ed_bath_user/spin_symmetrize_bath(bath_[, save])

Function to impose a spin symmetry to the parameters of the bath. Enforces a non-magnetic solution

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

Options:

save [logical]

interface  ed_bath_user/orb_symmetrize_bath(bath_, orb1, orb2[, save])

Function to impose a orbital symmetry to the parameters of the bath. Enforces an orbital non-polarized solution. If two orbital indices orb1 and orb2 are passed symmetry is imposed only among such two orbitals

Warning

This operation requires the orbital to be degenerate.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:
  • bath_ (various shapes) [real]

  • orb1 [integer]

  • orb2 [integer]

Options:

save [logical]

interface  ed_bath_user/orb_equality_bath(bath_[, indx, save])

Function to impose a orbital equality on the parameters of the bath.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

Options:
  • indx [integer]

  • save [logical]

interface  ed_bath_user/ph_symmetrize_bath(bath_[, save])

Function to impose particle-hole symmetry to the parameters of the bath.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

Options:

save [logical]

interface  ed_bath_user/ph_trans_bath(bath_[, save])

Function to perform particle-hole transformation to the parameters of the bath.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

Options:

save [logical]

interface  ed_bath_user/enforce_normal_bath(bath_[, save])

Function to impose normal solution to the parameters of the bath, i.e. suppressed superconductivity if any.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

Options:

save [logical]

interface  ed_bath_user/save_array_as_bath(bath_)

Write the bath parameters to a file following the convention of the internal data structure effective_bath.

  • bath is rank-1 [:] or rank-2 [:, Nlat ] array type: double precision with assumed size

Parameters:

bath_ (various shapes) [real]

subroutine  ed_bath_user/impose_equal_lambda(bath_, ibath, lambdaindex_vec)

Function to impose \(\vec{\lambda}\) parameters to be equal to a given average of a subset of values lambdaindex_vec and for a specific bath element ibath if bath_type = replica , general.

Parameters:
  • bath_ (•) [real] – user bath array

  • ibath [integer] – index of the bath element

  • lambdaindex_vec (•) [integer] – (sub)set of indices \(i\) of \(\lambda_i\) to be averaged out