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}, }
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)
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]), ]
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,
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()
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
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, } }
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': {
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 }
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,
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(' ')
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 = {
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
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': {