Subband structure of carbon nanotubes: Difference between revisions

From phys824
Jump to navigationJump to search
(Created page with "==Tools== * [https://wiki.fysik.dtu.dk/ase/ase/structure.html Create GNR atom coordinates using ASE] ==Metallic (9,0) CNT using LCAO== *zgnr_lcao.py: <pre> from gpaw impor...")
 
No edit summary
 
(10 intermediate revisions by 2 users not shown)
Line 3: Line 3:
* [https://wiki.fysik.dtu.dk/ase/ase/structure.html Create GNR atom coordinates using ASE]
* [https://wiki.fysik.dtu.dk/ase/ase/structure.html Create GNR atom coordinates using ASE]


==Metallic (9,0) CNT using LCAO==
==Metallic (7,0) CNT using LCAO==


*zgnr_lcao.py:
*cnt7-0_lcao.py:


<pre>
<pre>
Line 12: Line 12:
from ase.io import read, write
from ase.io import read, write
from gpaw import GPAW, PoissonSolver, Mixer
from gpaw import GPAW, PoissonSolver, Mixer
from ase.structure import graphene_nanoribbon
from ase.structure import nanotube
 


# -------------------------------------------------------------
# -------------------------------------------------------------
Line 19: Line 18:
# -------------------------------------------------------------
# -------------------------------------------------------------


zgnr = graphene_nanoribbon(8, 1, type='zigzag', saturated=True,
cnt = nanotube(7, 0, length=1, bond=1.4, symbol='C')
                            C_H=1.1, C_C=1.42086, vacuum=8.0,
                            magnetic=False, initial_mag=0.0)


zgnr.center()
cnt.center()
write('zgnr.traj', zgnr)
write('cnt.traj', cnt)




Line 38: Line 35:
             txt='band_sc.txt')
             txt='band_sc.txt')


zgnr.set_calculator(calc)
cnt.set_calculator(calc)
zgnr.get_potential_energy()
cnt.get_potential_energy()
calc.write('band_sc.gpw')
calc.write('band_sc.gpw')


Line 47: Line 44:
G = (0, 0, 0)
G = (0, 0, 0)
X = (0, 0, 0.5)
X = (0, 0, 0.5)
kpts, x, X = get_bandpath([G, X], zgnr.cell, 60)
kpts, x, X = get_bandpath([G, X], cnt.cell, 60)


calc = GPAW('band_sc.gpw',
calc = GPAW('band_sc.gpw',
Line 64: Line 61:


calc.get_potential_energy()
calc.get_potential_energy()
ef = calc.get_fermi_level()
calc.write('band_harris.gpw')
calc.write('band_harris.gpw')
calc = GPAW('band_harris', txt=None)
import numpy as np
eps_skn = np.array([[calc.get_eigenvalues(k,s)
                    for k in range(60)]
                    for s in range(1)]) - ef
# Write the results to a file e.g. for plotting with gnuplot
f = open('bands.dat', 'w')
for n in range(66):
    for k in range(60):
        print >>f, k, eps_skn[0, k, n]
    print >>f
</pre>
</pre>


*find_band_dat.py
==Semiconducting (7,7) CNT using LCAO==
 
* cnt7-7_lcao.py:
 
<pre>
<pre>
from ase.lattice import bulk
from gpaw import GPAW, FermiDirac
from gpaw import GPAW
from ase import Atoms
from ase.io import read, write
from gpaw import GPAW, PoissonSolver, Mixer
from ase.structure import nanotube
 
# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
 
cnt = nanotube(7, 7, length=1, bond=1.4, symbol='C')
 
cnt.center()
write('cnt.traj', cnt)
 
 
# Make self-consistent calculation and save results
calc = GPAW(h=0.18,
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=(1,1,9),
            occupations=FermiDirac(width=0.05, maxiter=2000),
            mixer=Mixer(beta=0.010, nmaxold=8, weight=100.0),
            poissonsolver=PoissonSolver(eps=1e-12),
            txt='band_sc.txt')
 
cnt.set_calculator(calc)
cnt.get_potential_energy()
calc.write('band_sc.gpw')
 
 
# Calculate band structure along Gamma-X
from ase.dft.kpoints import ibz_points, get_bandpath
G = (0, 0, 0)
X = (0, 0, 0.5)
kpts, x, X = get_bandpath([G, X], cnt.cell, 60)
 
calc = GPAW('band_sc.gpw',
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=kpts,
            txt='band_harris.txt',
            fixdensity=True,
            parallel={'domain': 1},
            usesymm=None,
            convergence={'bands': 'all'})
 
if calc.input_parameters['mode'] == 'lcao':
    calc.scf.reset()
 
calc.get_potential_energy()
ef = calc.get_fermi_level()
calc.write('band_harris.gpw')


calc = GPAW('band_harris', txt=None)
calc = GPAW('band_harris', txt=None)
import numpy as np
import numpy as np
eps_skn = np.array([[calc.get_eigenvalues(k,s)
eps_skn = np.array([[calc.get_eigenvalues(k,s)
                     for k in range(60)]
                     for k in range(60)]
                     for s in range(1)]) + 6.23712
                     for s in range(1)]) - ef


# Write the results to a file e.g. for plotting with gnuplot
f = open('bands.dat', 'w')
for n in range(66):
for n in range(66):
     for k in range(60):
     for k in range(60):
         print k, eps_skn[0, k, n]
         print >>f, k, eps_skn[0, k, n]
     print
     print >>f
 
</pre>
</pre>

Latest revision as of 13:18, 16 November 2014

Tools

Metallic (7,0) CNT using LCAO

  • cnt7-0_lcao.py:
from gpaw import GPAW, FermiDirac
from ase import Atoms
from ase.io import read, write
from gpaw import GPAW, PoissonSolver, Mixer
from ase.structure import nanotube

# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------

cnt = nanotube(7, 0, length=1, bond=1.4, symbol='C')

cnt.center()
write('cnt.traj', cnt)


# Make self-consistent calculation and save results
calc = GPAW(h=0.18,
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=(1,1,9),
            occupations=FermiDirac(width=0.05, maxiter=2000),
            mixer=Mixer(beta=0.010, nmaxold=8, weight=100.0),
            poissonsolver=PoissonSolver(eps=1e-12),
            txt='band_sc.txt')

cnt.set_calculator(calc)
cnt.get_potential_energy()
calc.write('band_sc.gpw')


# Calculate band structure along Gamma-X 
from ase.dft.kpoints import ibz_points, get_bandpath
G = (0, 0, 0)
X = (0, 0, 0.5)
kpts, x, X = get_bandpath([G, X], cnt.cell, 60)

calc = GPAW('band_sc.gpw',
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=kpts,
            txt='band_harris.txt',
            fixdensity=True,
            parallel={'domain': 1},
            usesymm=None,
            convergence={'bands': 'all'})

if calc.input_parameters['mode'] == 'lcao':
    calc.scf.reset()

calc.get_potential_energy()
ef = calc.get_fermi_level()
calc.write('band_harris.gpw')

calc = GPAW('band_harris', txt=None)
import numpy as np

eps_skn = np.array([[calc.get_eigenvalues(k,s)
                     for k in range(60)]
                    for s in range(1)]) - ef



# Write the results to a file e.g. for plotting with gnuplot
f = open('bands.dat', 'w')
for n in range(66):
    for k in range(60):
        print >>f, k, eps_skn[0, k, n]
    print >>f

Semiconducting (7,7) CNT using LCAO

  • cnt7-7_lcao.py:
from gpaw import GPAW, FermiDirac
from ase import Atoms
from ase.io import read, write
from gpaw import GPAW, PoissonSolver, Mixer
from ase.structure import nanotube

# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------

cnt = nanotube(7, 7, length=1, bond=1.4, symbol='C')

cnt.center()
write('cnt.traj', cnt)


# Make self-consistent calculation and save results
calc = GPAW(h=0.18,
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=(1,1,9),
            occupations=FermiDirac(width=0.05, maxiter=2000),
            mixer=Mixer(beta=0.010, nmaxold=8, weight=100.0),
            poissonsolver=PoissonSolver(eps=1e-12),
            txt='band_sc.txt')

cnt.set_calculator(calc)
cnt.get_potential_energy()
calc.write('band_sc.gpw')


# Calculate band structure along Gamma-X 
from ase.dft.kpoints import ibz_points, get_bandpath
G = (0, 0, 0)
X = (0, 0, 0.5)
kpts, x, X = get_bandpath([G, X], cnt.cell, 60)

calc = GPAW('band_sc.gpw',
            mode='lcao',
            xc='PBE',
            basis='szp(dzp)',
            kpts=kpts,
            txt='band_harris.txt',
            fixdensity=True,
            parallel={'domain': 1},
            usesymm=None,
            convergence={'bands': 'all'})

if calc.input_parameters['mode'] == 'lcao':
    calc.scf.reset()

calc.get_potential_energy()
ef = calc.get_fermi_level()
calc.write('band_harris.gpw')

calc = GPAW('band_harris', txt=None)
import numpy as np
eps_skn = np.array([[calc.get_eigenvalues(k,s)
                     for k in range(60)]
                    for s in range(1)]) - ef

# Write the results to a file e.g. for plotting with gnuplot
f = open('bands.dat', 'w')
for n in range(66):
    for k in range(60):
        print >>f, k, eps_skn[0, k, n]
    print >>f