from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter
from dos.dos_calculator import DOSCalculator, LDOSCalculator
from copy import deepcopy

######################ZigZag_GRAPHENE_ribbon_WITH DOS##########################
a = 1.0  # C-C bond length
n = 5
system = System([array([a * sqrt(3), 0.0, 0.0])], mode="with_vectors", name="zz_ribbon_{}_pz_ldos".format(n))
system.atoms = [
    Atom("C", array([0.0, 0.0, 0.0])),
    Atom("C", array([a * sqrt(3) / 2.0, a / 2.0, 0.0])),
    Atom("C", array([a * sqrt(3) / 2.0, 3 * a / 2.0, 0.0])),
    Atom("C", array([0.0, 2 * a, 0.0])),
]
four_atoms_cell = deepcopy(system.atoms)
shift_r = array([0.0, 3.0 * a, 0.0])
for i in range(1, n):
    for atom in four_atoms_cell:
        new_atom = deepcopy(atom)
        new_atom.r = new_atom.r + i * shift_r
        system.atoms.append(new_atom)
system.spin_multiplier = 1
system.k_points = [array([-pi / sqrt(3) / a, 0.0, 0.0]), array([0.0, 0.0, 0.0]), array([pi / sqrt(3) / a, 0, 0])]
system.make_k_mesh(150)
system.parameters = {
    "C": {"ep": 1.2057, "ed": 24.1657, "lambda": 0.001},
    "CC": {"Vppp": -3.26, "Vpps": 0.0, "Vpds": 0.0, "Vpdp": 2.4, "Vdds": 0.0, "Vddp": 3.6, "Vddd": -7.4},
}
示例#2
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
import time
import matplotlib.pyplot as plt

#############################GRAPHENE###################################
a = 1.
ns = range(1,51,2)
ns_sq = [2 * i ** 2 for i in ns]
ts = []
for N in ns:
    tp = time.time()
    system = System([N * a / 2. * array([1., sqrt(3), 0.]),
                     N * a / 2. * array([- 1., sqrt(3), 0.])])
    system.name = 'graphene_pz_time_eigvalsh' + str(N)
    atoms_lst = []
    for i in range(N):
        for j in range(N):
            atoms_lst.extend([Atom('C', i * system.vectors[0] / N +
                                   j * system.vectors[1] / N +
                                   array([0., a / sqrt(3), 0.])),
                              Atom('C', i * system.vectors[0] / N +
                                   j * system.vectors[1] / N +
                                   array([0., 2 * a / sqrt(3), 0.]))])
    system.atoms = atoms_lst
    system.k_points = [array([0., 0., 0.]),
                       array([pi / a, -pi / sqrt(3) / a, 0]),
                       array([4 * pi / 3 / a, 0, 0]),
                       array([0., 0., 0.])]
    system.make_k_mesh(32)
示例#3
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter

#######################MoS2_MONOLAYER_WITH SOC#################################
a = 3.12
c = 3.11
system = System([a / 2. * array([1., sqrt(3), 0.]),
                 a / 2. * array([- 1., sqrt(3), 0.])],
                mode="with_overlap", name="mos2_mono_SOC")
system.atoms = [Atom('Mo', array([0., a / sqrt(3), 0.])),
                Atom('S', array([0., 2 * a / sqrt(3), c / 2.])),
                Atom('S', array([0., 2 * a / sqrt(3), - c / 2.])),
                ]
system.spin_multiplier = 2
system.k_points = [array([0., 0., 0.]),
                   array([pi / a, -pi / sqrt(3) / a, 0]),
                   array([4 * pi / 3 / a, 0, 0]),
                   array([0., 0., 0.])]
system.make_k_mesh(100)
system.parameters = {
    'S': {
        'es': 7.6595,
        'ep': -2.1537,
        'ed': 8.7689,
        'lambda': 0.2129,
    },
    'Mo': {
        'es': 5.5994,
        'ep': 6.7128,
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter
from dos.dos_calculator import DOSCalculator
from copy import deepcopy

######################ZigZag_GRAPHENE_ribbon_WITH SOC##########################
a = 1. # C-C bond length
n = 3
system = System([array([0, a * 3, 0.])], mode="standard",
                name='ac_ribbon_{}_pz'.format(n))
system.atoms = [Atom('C', array([0., 0., 0.])),
                Atom('C', array([a * sqrt(3) / 2., a / 2., 0.])),
                Atom('C', array([a * sqrt(3) / 2., 3 * a / 2., 0.])),
                Atom('C', array([0., 2 * a, 0.])),
                ]
four_atoms_cell = deepcopy(system.atoms)
shift_r = array([a * sqrt(3), 0., 0.])
for i in range(1, n):
    for atom in four_atoms_cell:
        new_atom = deepcopy(atom)
        new_atom.r = new_atom.r + i * shift_r
        system.atoms.append(new_atom)
# system.atoms.append(Atom('C', array([0., 0., 0.]) + n * shift_r))
# system.atoms.append(Atom('C', array([0., 2 * a, 0.]) + n * shift_r))
system.spin_multiplier = 2
system.k_points = [array([0., - pi / 3 / a, 0.]),
                   array([0., 0., 0.]),
                   array([0., pi / 3 / a, 0]),
                   ]
示例#5
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter

#############################GRAPHENE###################################
d = 1.
t = 1.
system = System([d / 2. * array([3., sqrt(3), 0.]),
                 - d / 2. * array([3, -sqrt(3), 0.])],
                mode='with_overlap', name='grapene_sp_soc')
system.atoms = [Atom('C', array([d, 0., 0.])),
                Atom('C', array([2 * d, 0., 0.])),
                ]
system.spin_multiplier = 2
system.k_points = [array([0., 0., 0.]),
                   array([2 * pi / 3 / d, 2 * pi / 3 / sqrt(3) / d, 0]),
                   array([2 * pi / 3 / d, 0, 0]),
                   array([0., 0., 0.])]
system.make_k_mesh(100)
system.parameters = {
    'C': {
        'es': -8.7,
        'ep': 0.0,
        'lambda': 0.001,
    },
    'CC': {
        'Vsss': - 6.7,
        'Vsps': 5.5,
        'Vpps': 5.1,
        'Vppp': -3.1,
示例#6
0
from atom.model import Atom
from system.model import System
from numpy import array, pi
from plotter.plotter import Plotter
from dos.dos_calculator import DOSCalculator

#############################1D_Chain###################################
d = 1.
t = 1.
system = System([array([d, 0, 0])], mode='standard', name='chain2_1d')
system.atoms = [Atom('A', array([d/2, 0., 0.])),
                Atom('A', array([0., 0., 0.])),]
system.k_points = [array([- pi / d, 0., 0.]),
                   array([0., 0., 0.]),
                   array([pi / d, 0., 0.]),
                   ]
system.make_k_mesh(100)
system.parameters = {
    'A': {
        'es': 0.0,
    },
    'AA': {
        'Vsss': t,
    }
}


for i in xrange(len(system.atoms)):
    system.atoms[i].orbitals = ['s', ]

system.just_do_main_magic()
示例#7
0
from numpy import array, pi
from plotter.plotter import Plotter
import time
import matplotlib.pyplot as plt

###########################DIAMOND##############################
a = 1.
ns = range(1, 15, 3)
ncbs = [2 * i ** 3 for i in ns]
ts = []
for N in ns:
    tcurr = []
    for i in range(1):
        tp = time.time()
        system = System([N * a / 2. * array([1., 1., 0.]),
                         N * a / 2. * array([0., 1., 1.]),
                         N * a / 2. * array([1., 0., 1.])])
        system.name = 'diamond_multi' + str(N)
        list_of_atoms = []
        for i in xrange(N):
            for j in xrange(N):
                for k in xrange(N):
                    list_of_atoms.extend([Atom('C', i * system.vectors[0] / N +
                                               j * system.vectors[1] / N +
                                               k * system.vectors[2] / N +
                                               array([0., 0., 0.])),
                                          Atom('C', i * system.vectors[0] / N +
                                               j * system.vectors[1] / N +
                                               k * system.vectors[2] / N +
                                               a / 4. * array([1., 1., 1.]))])
        system.atoms = list_of_atoms
示例#8
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi, sin, cos
from plotter.plotter import Plotter
import os
import matplotlib.pyplot as plt

#############################GRAPHENE###################################
d = 1.
t = 1.
system = System([d / 2. * array([3., sqrt(3), 0.]),
                 - d / 2. * array([3, -sqrt(3), 0.])],
                mode='standard', name='graphene_pz')
system.atoms = [Atom('C', array([d, 0., 0.])),
                Atom('C', array([2 * d, 0., 0.])),
                ]

system.k_points = [array([0., 0., 0.]),
                   array([2 * pi / 3 / d, 2 * pi / 3 / sqrt(3) / d, 0]),
                   array([2 * pi / 3 / d, 0, 0]),
                   array([0., 0., 0.])]
system.make_k_mesh(100)
system.parameters = {
    'C': {
        'ep': 0.0,
    },
    'CC': {
        'Vppp': t,
    }
}
示例#9
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, linspace, zeros, exp, pi
import matplotlib.pyplot as plt
import os
from itertools import izip

a = 1. # C-C bond length
n = 50
length = 100
system = System([], mode="standard",
                name='zz_chain_{}_{}_pz'.format(n, length))
system.atoms = []
for j in range(length):
    for i in range(n):
        dx = j * sqrt(3) * a
        dy = 3. * a * i
        dr = array([dx, dy, 0.])
        system.atoms += [
            Atom('C', dr + array([0., 0., 0.])),
            Atom('C', dr + array([a * sqrt(3) / 2., a / 2., 0.])),
            Atom('C', dr + array([a * sqrt(3) / 2., 3 * a / 2., 0.])),
            Atom('C', dr + array([0., 2 * a, 0.])),
        ]
system.spin_multiplier = 1
system.k_mesh = [array([0., 0., 0.]), ]
system.parameters = {
    'C': {
        'ep': 0.,
    },
    'CC': {
示例#10
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter

#############################GRAPHENE###################################
a = 1.
system = System([a / 2. * array([1., sqrt(3), 0.]),
                 a / 2. * array([- 1., sqrt(3), 0.])], mode="with_overlap")
system.name = 'graphene_sp_S'
system.atoms = [Atom('C', array([0., a / sqrt(3), 0.])),
                Atom('C', array([0., 2 * a / sqrt(3), 0.])),
                ]

system.num_of_bands = 4
system.k_points = [array([0., 0., 0.]),
                   array([pi / a, -pi / sqrt(3) / a, 0]),
                   array([4 * pi / 3 / a, 0, 0]),
                   array([0., 0., 0.])]
system.make_k_mesh(100)
system.parameters = {
    'C': {
        'es': 8.370,
        'ep': 0.0,
    },
    'CC': {
        'Vsss': -5.729,
        'Vsps': 5.618,
        'Vppp': 6.050,
        'Vpps': -3.070
    }
示例#11
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from numpy.linalg import norm
from plotter.plotter import Plotter

##########################GRAPHENE_WITH SOC###################################
a = 1. # unit vector length
system = System([a / 2. * array([1., sqrt(3), 0.]),
                 a / 2. * array([- 1., sqrt(3), 0.])],
                mode="standard", name='graphene_pd_gap')
system.atoms = [Atom('C', array([0., a / sqrt(3), 0.])),
                Atom('C', array([0., 2 * a / sqrt(3), 0.])),
                ]
system.spin_multiplier = 1
distanse = 0.001
k_point = array([4 * pi / 3 / a, 0, 0])
l_point = array([pi / a, -pi / sqrt(3) / a, 0])
g_point = array([0, 0, 0])
l_side = k_point + (l_point - k_point) / norm(l_point - k_point) * distanse
g_side = k_point + (g_point - k_point) / norm(g_point - k_point) * distanse
system.k_points = [l_side, k_point, g_side]
system.make_k_mesh(30)
system.parameters = {
    'C': {
        'ep': 1.2057,
        'ed': 24.1657,
        'lambda': 0.001
    },
    'CC': {
        'Vppp': -3.26,
示例#12
0
from atom.model import Atom
from system.model import System
from numpy import array
import os
import matplotlib.pyplot as plt

#############################0D_Chain###################################
d = 1.
t = 1.
n = 20
system = System([], mode='standard', name='chain_0d_{}'.format(n))
system.atoms = []
for i in range(n):
    system.atoms.append(Atom('A', array([i * d, 0., 0.])))
system.k_mesh = [array([0., 0., 0.]), ]
system.parameters = {
    'A': {
        'es': 0.0,
    },
    'AA': {
        'Vsss': t,
    }
}

for i in xrange(len(system.atoms)):
    system.atoms[i].orbitals = ['s', ]

system.just_do_main_magic()
with open(os.path.join(os.path.abspath('./outputs/'), system.name,
                       'energies'), 'r') as data:
    txt = data.read().strip().split(' ')
示例#13
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi, linspace
from plotter.plotter import Plotter
from dos.dos_calculator import DOSCalculator, LDOSCalculator

#############################GRAPHENE###################################
a = 1.
system = System([a / 2. * array([1., sqrt(3), 0.]),
                 a / 2. * array([- 1., sqrt(3), 0.])],
                name="graphene_ldos_soc", mode="with_vectors")
system.atoms = [Atom('C', array([0., a / sqrt(3), 0.])),
                Atom('C', array([0., 2 * a / sqrt(3), 0.])),
                ]

system.k_points = [array([0., 0., 0.]),
                   array([pi / a, -pi / sqrt(3) / a, 0]),
                   array([4 * pi / 3 / a, 0, 0]),
                   array([0., 0., 0.])]
#system.make_k_mesh(100)
nx = 100
ny = int(2 / sqrt(3) * nx)
dx = 2 * pi / a / nx
dy = 4 * pi / sqrt(3) / a / ny
for kx in linspace(0, 2 * pi /a, nx):
    for ky in linspace(1 / sqrt(3) * kx, 4 * pi / sqrt(3) / a + 1 / sqrt(3) * kx, ny):
        system.k_mesh.append(array([kx, ky, 0.]))
system.parameters = {
    'C': {
        'ep': 1.2057,
        'ed': 24.1657,
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi
from plotter.plotter import Plotter
from dos.dos_calculator import DOSCalculator, LDOSCalculator
from copy import deepcopy

######################ZigZag_GRAPHENE_ribbon_WITH DOS##########################
a = 1. # C-C bond length
n = 2
system = System([array([a * sqrt(3), 0., 0.])], mode="standard",
                name='zz_ribbon_dos_{}_pz'.format(n))
system.atoms = [Atom('C', array([0., 0., 0.])),
                Atom('C', array([a * sqrt(3) / 2., a / 2., 0.])),
                Atom('C', array([a * sqrt(3) / 2., 3 * a / 2., 0.])),
                Atom('C', array([0., 2 * a, 0.])),
                ]
four_atoms_cell = deepcopy(system.atoms)
shift_r = array([0., 3. * a, 0.])
for i in range(1, n):
    for atom in four_atoms_cell:
        new_atom = deepcopy(atom)
        new_atom.r = new_atom.r + i * shift_r
        system.atoms.append(new_atom)
system.spin_multiplier = 1
system.k_points = [array([- pi / sqrt(3) / a, 0., 0.]),
                   array([0., 0., 0.]),
                   array([pi / sqrt(3) / a, 0, 0]),
                   ]
system.make_k_mesh(200)
system.parameters = {
示例#15
0
from atom.model import Atom
from system.model import System
from numpy import array, pi
from plotter.plotter import Plotter

###########################DIAMOND##############################
a = 1.

system = System([a / 2. * array([1., 1., 0.]),
                 a / 2. * array([0., 1., 1.]),
                 a / 2. * array([1., 0., 1.])],
                name='diamond_sp', mode="standard")
system.atoms = [Atom('C', array([0., 0., 0.])),
                Atom('C', a / 4. * array([1., 1., 1.])),
                ]
system.k_points = [array([pi / a, pi / a, pi / a]),
                   array([0., 0., 0.]),
                   array([0., 2 * pi / a, 0.]),
                   array([pi / 2 / a, 2 * pi / a, pi / 2 / a]),
                   array([0., 0., 0.]), ]
system.make_k_mesh(150)
system.parameters = {
    'C': {
        'es': 0,
        'ep': 7.4,
    },
    'CC': {
        'Vsss': -3.8,
        'Vsps': 4.44,#10.25 * sqrt(3) / 4.,
        'Vppp': -1.325,
        'Vpps': 4.9
示例#16
0
from atom.model import Atom
from system.model import System
from numpy import array, sqrt, pi, linspace
from dos.dos_calculator import DOSCalculator

#############################GRAPHENE###################################
a = 1.
system = System([a / 2. * array([1., sqrt(3), 0.]),
                 a / 2. * array([- 1., sqrt(3), 0.])],
                name="graphene_dos_pz", mode="standard")
system.atoms = [Atom('C', array([0., a / sqrt(3), 0.])),
                Atom('C', array([0., 2 * a / sqrt(3), 0.])),
                ]

system.k_points = [array([0., 0., 0.]),
                   array([pi / a, -pi / sqrt(3) / a, 0]),
                   array([4 * pi / 3 / a, 0, 0]),
                   array([0., 0., 0.])]
#system.make_k_mesh(100)
nx = 40
ny = int(2 / sqrt(3) * nx)
dx = 2 * pi / a / nx
dy = 4 * pi / sqrt(3) / a / ny
for kx in linspace(0, 2 * pi /a, nx):
    for ky in linspace(1 / sqrt(3) * kx, 4 * pi / sqrt(3) / a + 1 / sqrt(3) * kx, ny):
        system.k_mesh.append(array([kx, ky, 0.]))
system.parameters = {
    'C': {
        'ep': 0.,
    },
    'CC': {