L = 7.00 basis = BasisMaker('Na').generate(1, 1, energysplit=0.3) atoms = Atoms('Na9', pbc=(0, 0, 1), cell=[L, L, 9 * a]) atoms.positions[:9, 2] = [i * a for i in range(9)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(5, 9) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1, 1, 1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1, 1, 5), edge_atoms=[[0, 3], [0, 8]], mol_atoms=[4], guess_steps=1, fixed_boundary=False) atoms.set_calculator(t) t.calculate_iv(0.5, 2)
basis = BasisMaker('Na').generate(1, 1, energysplit=0.3) atoms = Atoms('Na12', pbc=(1, 1, 1), cell=[L, L, 12 * a]) atoms.positions[:12, 2] = [i * a for i in range(12)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(2, 2, 1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(2, 2, 15), analysis_data_list=['tc'], edge_atoms=[[0, 3], [0, 11]], mol_atoms=range(4, 8)) atoms.set_calculator(t) t.calculate_iv(0.5, 2)
atoms = Atoms('Na12', pbc=(0, 0, 1), cell=[L, L, 12 * a]) atoms.positions[:12, 2] = [i * a for i in range(12)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1, 1, 1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1, 1, 15), non_sc=True, analysis_data_list=['tc'], fixed_boundary=False, edge_atoms=[[0, 3], [0, 11]], mol_atoms=range(4, 8)) atoms.set_calculator(t) t.negf_prepare() t.non_sc_analysis()
magmoms = np.zeros([134]) magmoms[:54]=0.7 magmoms[-54:] = -0.7 system.set_initial_magnetic_moments(magmoms) t = Transport( h=0.2, xc='RPBE', basis={'Ni': 'szp', 'H': 'szp', 'C': 'szp', 'S':'szp'}, kpts=(2, 2, 1), occupations=FermiDirac(0.2), mode='lcao', txt='NiC8.txt', buffer_guess=True, lead_guess=True, spinpol=True, guess_steps=80, beta_guess=0.003, alpha=0.1, poissonsolver=PoissonSolver(nn=2), mixer=MixerSum(0.005, 5, weight=100.0), extra_density=True, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=[2 , 2 , 15], edge_atoms=[[ 0, 35],[0 , 133]], mol_atoms=range(36, 98), nleadlayers=[1,1]) system.set_calculator(t) t.calculate_iv() t = Transport( h=0.2, xc='RPBE',
atoms.positions[:9, 2] = [i * a for i in range(9)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(5, 9) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1,1,5), edge_atoms=[[0, 3], [0, 8]], mol_atoms=[4], guess_steps=1, fixed_boundary=False, foot_print=False) atoms.set_calculator(t) t.calculate_iv(0.5, 2)
xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', mixer=Mixer(0.1, 5, weight=100.0), txt='Device.txt')) Device.get_potential_energy() from gpaw.transport.tools import save_bias_data_file save_bias_data_file(Lead1, Lead2, Device) system = Device.copy() pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[range(4), range(5,9)], pl_cells=[pl_cell1, pl_cell2], leads=[Lead1,Lead2], pl_kpts=(1,1,5), analysis_mode=True) system.set_calculator(t) t.analysis(1)
atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, fix_contour=True, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1,1,16), fixed_boundary=False, analysis_data_list=['tc'], edge_atoms=[[0, 3], [0, 11]], mol_atoms=range(4, 8)) atoms.set_calculator(t) t.calculate_to_bias(0.0, 1) qn=QuasiNewton(atoms, trajectory='transport.traj') qn.run(fmax=0.05)
pl_cell2 = pl_cell1 pl_cell3 = pl_cell1 t = Transport(h=0.25, xc='LDA', basis='sz', occupations=FermiDirac(0.2), kpts=(1, 1, 1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, LR_leads=False, bias=[0] * 3, fixed_boundary=False, identical_leads=True, pl_atoms=[pl_atoms1, pl_atoms2, pl_atoms3], pl_cells=[pl_cell1, pl_cell2, pl_cell3], pl_kpts=(1, 1, 15), save_file=True, use_buffer=True, neutral=False, normalize_density=False, extended_atoms=eatoms, multi_lead_directions=[[6, 9], [10, 13], [14, 17]], nleadlayers=[1, 1, 1], edge_atoms=[[0, 0, 0], [6, 10, 14]], mol_atoms=range(6) + range(18, 21)) atoms.set_calculator(t) lp = []
system.set_initial_magnetic_moments(magmoms) t = Transport(h=0.2, xc='RPBE', basis={ 'Ni': 'szp', 'H': 'szp', 'C': 'szp', 'S': 'szp' }, kpts=(2, 2, 1), occupations=FermiDirac(0.2), mode='lcao', txt='NiC8.txt', buffer_guess=True, lead_guess=True, spinpol=True, guess_steps=80, beta_guess=0.003, alpha=0.1, poissonsolver=PoissonSolver(nn=2), mixer=MixerSum(0.005, 5, weight=100.0), extra_density=True, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=[2, 2, 15], edge_atoms=[[0, 35], [0, 133]], mol_atoms=range(36, 98), nleadlayers=[1, 1]) system.set_calculator(t) t.calculate_iv()
pl_cell2 = pl_cell1 pl_cell3 = pl_cell1 t = Transport(h=0.25, xc='LDA', basis='sz', occupations=FermiDirac(0.2), kpts=(1,1,1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, LR_leads=False, bias=[0]*3, fixed_boundary=False, identical_leads=True, pl_atoms=[pl_atoms1, pl_atoms2, pl_atoms3], pl_cells=[pl_cell1, pl_cell2, pl_cell3], pl_kpts=(1,1,15), save_file=True, use_buffer=True, neutral=False, normalize_density=False, extended_atoms=eatoms, multi_lead_directions=[[6, 9], [10, 13], [14,17]], nleadlayers=[1,1,1], edge_atoms=[[0, 0, 0], [6, 10, 14]], mol_atoms=range(6)+ range(18,21)) atoms.set_calculator(t) lp = []
import numpy as np from ase.io import read from gpaw import FermiDirac, PoissonSolver, Mixer from gpaw.transport.calculator import Transport system = read('BDT.traj', -1) pl_atoms1 = range(36) pl_atoms2 = range(72, 108) pl_cell1 = np.diag(system.cell) pl_cell1[2] = 7.067 pl_cell2 = pl_cell1 t = Transport(h=0.2, xc='PBE', basis={'Au': 'sz(dzp)', 'H': 'dzp', 'C': 'dzp', 'S':'dzp'}, kpts=(1, 1, 1), occupations=FermiDirac(0.1), mode='lcao', txt='ABA.txt', poissonsolver=PoissonSolver(nn=2), mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=[1, 1, 15], extra_density=True, analysis_data_list=['tc'], edge_atoms=[[ 0, 35],[0 , 107]], mol_atoms=range(36, 72)) system.set_calculator(t) t.calculate_iv(3.0, 2)
atoms.positions[:12, 2] = [i * a for i in range(12)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), guess_steps=10, pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1,1,15), non_sc=True, analysis_data_list=['tc'], fixed_boundary=False, edge_atoms=[[0, 3], [0, 11]], mol_atoms=range(4, 8)) atoms.set_calculator(t) t.negf_prepare() t.non_sc_analysis()
a = 3.6 L = 7.00 basis = BasisMaker('Na').generate(1, 1, energysplit=0.3) atoms = Atoms('Na12', pbc=(0, 0, 1), cell=[L, L, 12 * a]) atoms.positions[:12, 2] = [i * a for i in range(12)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1,1,1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1,1,16), non_sc=True) atoms.set_calculator(t) t.calculate_iv()
pl_cell2 = pl_cell1 # Cell for the right principal layer atoms.rotate('x', 'z') # Attach a GPAW calculator atoms.set_calculator( Transport(h=0.3, xc='PBE', basis='szp(dzp)', occupations=FermiDirac(width=0.1), kpts=(1, 1, 1), mode='lcao', save_file=False, txt='pt_h2_transport.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1, 1, 13), mol_atoms=range(4, 8), lead_restart=False, scat_restart=False, edge_atoms=[[0, 3], [0, 11]], analysis_data_list=['tc'], data_file='Pt_H2_nsc.dat', non_sc=True)) t = atoms.calc t.set_energies(np.linspace(-5, 3, 201)) t.negf_prepare() t.non_sc_analysis()
a = 3.6 L = 7.00 basis = BasisMaker('Na').generate(1, 1, energysplit=0.3) atoms = Atoms('Na12', pbc=(0, 0, 1), cell=[L, L, 12 * a]) atoms.positions[:12, 2] = [i * a for i in range(12)] atoms.positions[:, :2] = L / 2. atoms.center() pl_atoms1 = range(4) pl_atoms2 = range(8, 12) pl_cell1 = (L, L, 4 * a) pl_cell2 = pl_cell1 t = Transport(h=0.3, xc='LDA', basis={'Na': basis}, kpts=(1, 1, 1), occupations=FermiDirac(0.1), mode='lcao', poissonsolver=PoissonSolver(nn=2, relax='GS'), txt='Na_lcao.txt', mixer=Mixer(0.1, 5, weight=100.0), pl_atoms=[pl_atoms1, pl_atoms2], pl_cells=[pl_cell1, pl_cell2], pl_kpts=(1, 1, 16), non_sc=True) atoms.set_calculator(t) t.calculate_iv()