Пример #1
0
def tb90_scf(h,
             ab,
             old_mf,
             nkpoints=100,
             error=0.0000001,
             filling=.5,
             do_dos=False):
    """Run SCF cycle using the tb90 code"""
    h.write("hamiltonian_0.in")  # write in file
    import input_tb90
    in90 = input_tb90.tb90in()  # create class
    in90.mode("nothing")  # no mode
    in90.mode("SCF")  # no mode
    in90.kpoints.nkpoints = nkpoints
    if do_dos: in90.dos.do_dos = True  # do DOS
    in90.electrons.filling = filling
    in90.scf_convergence.mean_field_operators = "from_file"
    in90.scf_convergence.mean_field_matrix = "from_file"
    in90.scf_convergence.max_scf_err = error  # error in SCF
    in90.write()  # write in file
    write_ab_mf(ab)  # write men field operators
    input_tb90.write_mean_field(
        old_mf, output_file="mean_field.in")  # write old mean field
    #  exit()
    import os
    os.system("tb90.x")  # run SCF
    mf = input_tb90.read_mean_field(input_file="mean_field.in")
    return mf
Пример #2
0
def tb90_scf(h,ab,old_mf,nkpoints=100):
  """Run SCF cycle using the tb90 code"""
  h.write("hamiltonian_0.in") # write in file
  import input_tb90
  in90 = input_tb90.tb90in() # create class
  in90.mode("nothing") # no mode
  in90.mode("SCF") # no mode
  in90.kpoints.nkpoints = nkpoints
  in90.scf_convergence.mean_field_operators = "from_file"
  in90.scf_convergence.mean_field_matrix = "from_file"
  in90.scf_convergence.max_scf_err = 0.0000001 # error in SCF
  in90.write() # write in file
  write_ab_mf(ab) # write men field operators 
  input_tb90.write_mean_field(old_mf,output_file="mean_field.in") # write old mean field
#  exit()
  import os
  os.system("tb90.x") # run SCF
  mf = input_tb90.read_mean_field(input_file="mean_field.in")
  return mf
Пример #3
0
#h.set_finite_system()
old_mf = interactions.antiferro_initialization(h)
#old_mf = interactions.ferro_initialization(h)
ab = interactions.hubbard(h,2.0) # mean field operators
import random
rand = random.random

##############################
# create a custom mean field #
##############################
v = np.array([rand(),rand(),rand()])
#v = np.array([0.,0.,1.])
vecs = [v*(-1)**i for i in range(len(h.intra)/2)] # create AF initialization
vecs = [v for i in range(len(h.intra)/2)] # create AF initialization
mf = interactions.directional_mean_field(vecs) # create mean field matrix 
in90.write_mean_field(mf) # write in file

##############################
##############################
##############################
#vecs = [[rand(),0.,rand()] for x in h.geometry.x]
#vecs = [[0.,0.,0.] for x in h.geometry.x]
#ab = interactions.directional_hubbard(vecs,g=2.0) # mean field operators
#interactions.write_ab_mf(ab)
#exit()
#mf = interactions.selfconsistency(h,old_mf=old_mf,nkp=20,ab_list=ab)
scf = interactions.hubbardscf(h,U=1.0,nkp=10,mag=vecs,silent=False) 


import rotate_spin as rs
R = rs.rotation_matrix(h.intra,scf.magnetization)