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
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
#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)