示例#1
0
def get_interaction_hamiltonian(parms, spin_names, flavor_names, is_kanamori):
    U_int = parms['U']
    J_hund = parms['J']
    if is_kanamori:
        U, Uprime = triqs_ops_util.U_matrix_kanamori(parms['NFLAVORS'],
                                                     U_int, J_hund)
        ham = triqs_ops_util.h_int_kanamori(spin_names, flavor_names,
                                            U, Uprime, J_hund, off_diag=False)
    else: # Slater-type interaction
        l_number = (parms['NFLAVORS']-1)/2
        U = triqs_ops_util.U_matrix(l=lnumber, U_int=U_int, J_hund=J_hund,
                                    basis='cubic')
        ham = triqs_ops_util.h_int_slater(spin_names, flavor_names,
                                          U, off_diag=False)
    return ham
示例#2
0
# Block structure of Green's functions
# gf_struct = {'up':[0,1,2,3,4], 'down':[0,1,2,3,4]}
# This can be computed using the TRIQS function as follows:
gf_struct = op.set_operator_structure(spin_names, orb_names, off_diag=off_diag)

# Construct the 4-index U matrix U_{ijkl}
# The spherically-symmetric U matrix is parametrised by the radial integrals
# F_0, F_2, F_4, which are related to U and J. We use the functions provided
# in the TRIQS library to construct this easily:
U_mat = op.U_matrix(l=l, U_int=U, J_hund=J, basis='spherical')

# Set the interacting part of the local Hamiltonian
# Here we use the full rotationally-invariant interaction parametrised
# by the 4-index tensor U_{ijkl}.
# The TRIQS library provides a function to build this Hamiltonian from the U tensor:
H = op.h_int_slater(spin_names, orb_names, U_mat, off_diag=off_diag)

# Construct the solver
S = Solver(beta=beta, gf_struct=gf_struct)

# Set the hybridization function and G0_iw for the Bethe lattice
delta_iw = GfImFreq(indices=[0], beta=beta)
delta_iw << (half_bandwidth / 2.0)**2 * SemiCircular(half_bandwidth)
for name, g0 in S.G0_iw:
    g0 << inverse(iOmega_n + mu - delta_iw)

# Now start the DMFT loops
for i_loop in range(n_loop):

    # Determine the new Weiss field G0_iw self-consistently
    if i_loop > 0:
示例#3
0
# Block structure of Green's functions
# gf_struct = {'up':[0,1,2,3,4], 'down':[0,1,2,3,4]}
# This can be computed using the TRIQS function as follows:
gf_struct = op.set_operator_structure(spin_names,orb_names,off_diag=off_diag) 

# Construct the 4-index U matrix U_{ijkl}
# The spherically-symmetric U matrix is parametrised by the radial integrals
# F_0, F_2, F_4, which are related to U and J. We use the functions provided
# in the TRIQS library to construct this easily:
U_mat = op.U_matrix(l=l, U_int=U, J_hund=J, basis='spherical')

# Set the interacting part of the local Hamiltonian
# Here we use the full rotationally-invariant interaction parametrised 
# by the 4-index tensor U_{ijkl}.
# The TRIQS library provides a function to build this Hamiltonian from the U tensor:
H = op.h_int_slater(spin_names,orb_names,U_mat,off_diag=off_diag)

# Construct the solver
S = Solver(beta=beta, gf_struct=gf_struct)

# Set the hybridization function and G0_iw for the Bethe lattice
delta_iw = GfImFreq(indices=[0], beta=beta)
delta_iw << (half_bandwidth/2.0)**2 * SemiCircular(half_bandwidth)
for name, g0 in S.G0_iw: g0 << inverse(iOmega_n + mu - delta_iw)

# Now start the DMFT loops
for i_loop in range(n_loop):

  # Determine the new Weiss field G0_iw self-consistently
  if i_loop > 0: 
    g_iw = GfImFreq(indices=[0], beta=beta)