Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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',
Ejemplo n.º 5
0
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)
Ejemplo n.º 7
0
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)

Ejemplo n.º 8
0
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 = []
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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 = []
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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()

Ejemplo n.º 13
0
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()
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
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()