mirror of
https://github.com/triqs/dft_tools
synced 2024-12-23 04:43:42 +01:00
Merge pull request #154 from 70akaline/unstable
Fix bugs in website tutorial
This commit is contained in:
commit
e33eec8c7e
@ -37,7 +37,7 @@ that for one-shot calculations. Only at the very end we have to calculate the mo
|
|||||||
and store it in a format such that Wien2k can read it. Therefore, after the DMFT loop that we saw in the
|
and store it in a format such that Wien2k can read it. Therefore, after the DMFT loop that we saw in the
|
||||||
previous section, we symmetrise the self energy, and recalculate the impurity Green function::
|
previous section, we symmetrise the self energy, and recalculate the impurity Green function::
|
||||||
|
|
||||||
SK.symm_deg_gf(S.Sigma,orb=0)
|
SK.symm_deg_gf(S.Sigma,ish=0)
|
||||||
S.G_iw << inverse(S.G0_iw) - S.Sigma_iw
|
S.G_iw << inverse(S.G0_iw) - S.Sigma_iw
|
||||||
S.G_iw.invert()
|
S.G_iw.invert()
|
||||||
|
|
||||||
|
@ -19,10 +19,6 @@ h_field = 0.0
|
|||||||
U = 4.0
|
U = 4.0
|
||||||
J = 0.65
|
J = 0.65
|
||||||
dc_type = 1 # DC type: 0 FLL, 1 Held, 2 AMF
|
dc_type = 1 # DC type: 0 FLL, 1 Held, 2 AMF
|
||||||
# Construct U matrix for density-density calculations
|
|
||||||
Umat, Upmat = U_matrix_kanamori(n_orb=n_orb, U_int=U, J_hund=J)
|
|
||||||
# Construct density-density Hamiltonian
|
|
||||||
h_int = h_int_density(spin_names, orb_names, map_operator_structure=SK.sumk_to_solver[0], U=Umat, Uprime=Upmat)
|
|
||||||
|
|
||||||
## SLATER HAMILTONIAN
|
## SLATER HAMILTONIAN
|
||||||
## Define interaction paramters, DC and Hamiltonian
|
## Define interaction paramters, DC and Hamiltonian
|
||||||
@ -74,6 +70,10 @@ n_orb = SK.corr_shells[0]['dim']
|
|||||||
l = SK.corr_shells[0]['l']
|
l = SK.corr_shells[0]['l']
|
||||||
spin_names = ["up","down"]
|
spin_names = ["up","down"]
|
||||||
orb_names = [i for i in range(n_orb)]
|
orb_names = [i for i in range(n_orb)]
|
||||||
|
# Construct U matrix for density-density calculations
|
||||||
|
Umat, Upmat = U_matrix_kanamori(n_orb=n_orb, U_int=U, J_hund=J)
|
||||||
|
# Construct density-density Hamiltonian
|
||||||
|
h_int = h_int_density(spin_names, orb_names, map_operator_structure=SK.sumk_to_solver[0], U=Umat, Uprime=Upmat)
|
||||||
|
|
||||||
# Use GF structure determined by DFT blocks
|
# Use GF structure determined by DFT blocks
|
||||||
gf_struct = [(block, indices) for block, indices in SK.gf_struct_solver[0].items()]
|
gf_struct = [(block, indices) for block, indices in SK.gf_struct_solver[0].items()]
|
||||||
@ -99,7 +99,7 @@ if previous_present:
|
|||||||
for iteration_number in range(1,loops+1):
|
for iteration_number in range(1,loops+1):
|
||||||
if mpi.is_master_node(): print("Iteration = ", iteration_number)
|
if mpi.is_master_node(): print("Iteration = ", iteration_number)
|
||||||
|
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0) # symmetrise Sigma
|
SK.symm_deg_gf(S.Sigma_iw,ish=0) # symmetrise Sigma
|
||||||
SK.set_Sigma([ S.Sigma_iw ]) # set Sigma into the SumK class
|
SK.set_Sigma([ S.Sigma_iw ]) # set Sigma into the SumK class
|
||||||
chemical_potential = SK.calc_mu( precision = prec_mu ) # find the chemical potential for given density
|
chemical_potential = SK.calc_mu( precision = prec_mu ) # find the chemical potential for given density
|
||||||
S.G_iw << SK.extract_G_loc()[0] # calc the local Green function
|
S.G_iw << SK.extract_G_loc()[0] # calc the local Green function
|
||||||
|
@ -113,11 +113,11 @@ SK.dc_energ = mpi.bcast(SK.dc_energ)
|
|||||||
SK.chemical_potential = mpi.bcast(SK.chemical_potential)
|
SK.chemical_potential = mpi.bcast(SK.chemical_potential)
|
||||||
|
|
||||||
# Calc the first G0
|
# Calc the first G0
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0)
|
SK.symm_deg_gf(S.Sigma_iw, ish=0)
|
||||||
SK.put_Sigma(Sigma_imp = [S.Sigma_iw])
|
SK.put_Sigma(Sigma_imp = [S.Sigma_iw])
|
||||||
SK.calc_mu(precision=0.01)
|
SK.calc_mu(precision=0.01)
|
||||||
S.G_iw << SK.extract_G_loc()[0]
|
S.G_iw << SK.extract_G_loc()[0]
|
||||||
SK.symm_deg_gf(S.G_iw, orb=0)
|
SK.symm_deg_gf(S.G_iw, ish=0)
|
||||||
|
|
||||||
#Init the DC term and the self-energy if no previous iteration was found
|
#Init the DC term and the self-energy if no previous iteration was found
|
||||||
if iteration_offset == 0:
|
if iteration_offset == 0:
|
||||||
@ -145,7 +145,7 @@ for it in range(iteration_offset, iteration_offset + n_iterations):
|
|||||||
dm = S.G_iw.density()
|
dm = S.G_iw.density()
|
||||||
SK.calc_dc(dm, U_interact=U, J_hund=J, orb=0, use_dc_formula=DC_type,use_dc_value=DC_value)
|
SK.calc_dc(dm, U_interact=U, J_hund=J, orb=0, use_dc_formula=DC_type,use_dc_value=DC_value)
|
||||||
# Get new G
|
# Get new G
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0)
|
SK.symm_deg_gf(S.Sigma_iw, ish=0)
|
||||||
SK.put_Sigma(Sigma_imp=[S.Sigma_iw])
|
SK.put_Sigma(Sigma_imp=[S.Sigma_iw])
|
||||||
SK.calc_mu(precision=0.01)
|
SK.calc_mu(precision=0.01)
|
||||||
S.G_iw << SK.extract_G_loc()[0]
|
S.G_iw << SK.extract_G_loc()[0]
|
||||||
|
@ -120,11 +120,11 @@ def dmft_cycle():
|
|||||||
SK.chemical_potential = mpi.bcast(SK.chemical_potential)
|
SK.chemical_potential = mpi.bcast(SK.chemical_potential)
|
||||||
|
|
||||||
# Calc the first G0
|
# Calc the first G0
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0)
|
SK.symm_deg_gf(S.Sigma_iw, ish=0)
|
||||||
SK.put_Sigma(Sigma_imp = [S.Sigma_iw])
|
SK.put_Sigma(Sigma_imp = [S.Sigma_iw])
|
||||||
SK.calc_mu(precision=0.01)
|
SK.calc_mu(precision=0.01)
|
||||||
S.G_iw << SK.extract_G_loc()[0]
|
S.G_iw << SK.extract_G_loc()[0]
|
||||||
SK.symm_deg_gf(S.G_iw, orb=0)
|
SK.symm_deg_gf(S.G_iw, ish=0)
|
||||||
|
|
||||||
#Init the DC term and the self-energy if no previous iteration was found
|
#Init the DC term and the self-energy if no previous iteration was found
|
||||||
if iteration_offset == 0:
|
if iteration_offset == 0:
|
||||||
@ -153,7 +153,7 @@ def dmft_cycle():
|
|||||||
dm = S.G_iw.density()
|
dm = S.G_iw.density()
|
||||||
SK.calc_dc(dm, U_interact=U, J_hund=J, orb=0, use_dc_formula=DC_type,use_dc_value=DC_value)
|
SK.calc_dc(dm, U_interact=U, J_hund=J, orb=0, use_dc_formula=DC_type,use_dc_value=DC_value)
|
||||||
# Get new G
|
# Get new G
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0)
|
SK.symm_deg_gf(S.Sigma_iw, ish=0)
|
||||||
SK.put_Sigma(Sigma_imp=[S.Sigma_iw])
|
SK.put_Sigma(Sigma_imp=[S.Sigma_iw])
|
||||||
SK.calc_mu(precision=0.01)
|
SK.calc_mu(precision=0.01)
|
||||||
S.G_iw << SK.extract_G_loc()[0]
|
S.G_iw << SK.extract_G_loc()[0]
|
||||||
|
@ -187,7 +187,7 @@ some additional refinements::
|
|||||||
for iteration_number in range(1,loops+1):
|
for iteration_number in range(1,loops+1):
|
||||||
if mpi.is_master_node(): print "Iteration = ", iteration_number
|
if mpi.is_master_node(): print "Iteration = ", iteration_number
|
||||||
|
|
||||||
SK.symm_deg_gf(S.Sigma_iw,orb=0) # symmetrizing Sigma
|
SK.symm_deg_gf(S.Sigma_iw,ish=0) # symmetrizing Sigma
|
||||||
SK.set_Sigma([ S.Sigma_iw ]) # put Sigma into the SumK class
|
SK.set_Sigma([ S.Sigma_iw ]) # put Sigma into the SumK class
|
||||||
chemical_potential = SK.calc_mu( precision = prec_mu ) # find the chemical potential for given density
|
chemical_potential = SK.calc_mu( precision = prec_mu ) # find the chemical potential for given density
|
||||||
S.G_iw << SK.extract_G_loc()[0] # calc the local Green function
|
S.G_iw << SK.extract_G_loc()[0] # calc the local Green function
|
||||||
|
Loading…
Reference in New Issue
Block a user