Some simple examples
Anderson model
from triqs.gfs import *
from h5 import *
from numpy import array, zeros, identity
# set up a few parameters
U = 1.0
beta = 20.0
mu = 1.3
eps = 0.2
delta = 0.35
# Interaction matrix U[block,block][index,index]
IdU = U*identity(1)
Id0 = zeros([1,1])
Umat = [[Id0,IdU],
[IdU,Id0]]
# alpha[block][index,s]
diag = 0.5 + delta
odiag = 0.5 - delta
alpha = [[[diag,odiag]], [[odiag,diag]]]
# Construct the interaction solver
from triqs_ctint import SolverCore
S = Solver(beta = beta, block_names = ["up","down"], block_sizes = [1,1], n_iw = 200)
# Initialize the Green's function
S.G0_iw << inverse(iOmega_n + mu - inverse(iOmega_n - eps));
# Solve!
S.solve(U = Umat,
alpha = alpha,
beta = beta,
n_cycles = 10000,
length_cycle = 50,
n_warmup_cycles = 5000,
random_seed = 34788,
only_sign = False,
measure_gw = True,
measure_ft = False,
measure_hist = True)
# Save in archive
A = HDFArchive("anderson.out.h5",'w')
A["G"] = S.G_iw
2-site model
from triqs_ctint import SolverCore
from triqs.gfs import *
from h5 import *
import numpy as np
# Solver
S = Solver(beta = 20.0,
block_names = ['up','down'],
block_sizes = [2,2],
n_iw = 300)
# Set parameters
U = 1.0
t = 0.2
# Set U and alpha
Umat = [[np.array([[0,0],[0,0]]), np.array([[U,0],[0,U]])],
[np.array([[U,0],[0,U]]), np.array([[0,0],[0,0]])]]
alpha = [ np.array([[0.80,0.20],[0.80,0.20]]) , np.array([[0.20,0.80],[0.20,0.80]]) ]
# Prepare G0
S.G0_iw['up'][0,0] << iOmega_n + 1.3 - inverse(iOmega_n - 0.2)
S.G0_iw['up'][0,1] << t - 0.1*inverse(iOmega_n)
S.G0_iw['up'][1,0] << t - 0.1*inverse(iOmega_n)
S.G0_iw['up'][1,1] << iOmega_n + 1.3 - inverse(iOmega_n - 0.2)
S.G0_iw['down'] << S.G0_iw['up']
S.G0_iw.invert()
# Solve!
S.solve( beta = 20.0, U = Umat, alpha = alpha, n_cycles = 100000 )
# Save stuff
A = HDFArchive("twosites.output.h5",'w')
A["G_int"] = S.G_iw