• No results found

Current Flow In 2-Dimensional Quantum Systems

N/A
N/A
Protected

Academic year: 2022

Share "Current Flow In 2-Dimensional Quantum Systems"

Copied!
23
0
0

Loading.... (view fulltext now)

Full text

(1)

Current Flow In 2-Dimensional Quantum Systems

Item Type text; Electronic Thesis

Authors Kisiel, Elliot

Citation Kisiel, Elliot. (2019). Current Flow In 2-Dimensional Quantum Systems (Bachelor's thesis, University of Arizona, Tucson, USA).

Publisher The University of Arizona.

Rights Copyright © is held by the author. Digital access to this material is made possible by the University Libraries, University of Arizona.

Further transmission, reproduction or presentation (such as public display or performance) of protected items is prohibited except with permission of the author.

Download date 15/03/2022 13:04:48

Item License http://rightsstatements.org/vocab/InC/1.0/

Link to Item http://hdl.handle.net/10150/632839

(2)

By

ELLIOT KISIEL

A Thesis Submitted to The Honors College In Partial Fulfillment of the Bachelors degree

With Honors in PHYSICS

THE UNIVERSITY OF ARIZONA M A Y 2 0 1 9

Approved by:

Dr. Charles Stafford Department of Physics

(3)

Current Flow in 2-Dimensional Quantum Systems

Elliot Kisiel

We use the method of non-equilibrium Green’s Functions to investigate the current flow in 2- dimensional conductors. We found that by varying the Fermi energy of the system, three different classes of current density profiles could be achieved. In addition to the effects of the Fermi energy of the system, we looked at the effects of mono- and di- vacancies on the resulting current flow. We found that the effects of a mono-vacany on each of the regimes of the Fermi energy varied between the regimes and was dependent on the location of the vacancy within each regime. When two vacancies were introduced into the system, the location effects seen in the mono-vacancy was still important, but the current was also dependent on the relative locations of the two vacancies. In both of these cases we saw current branching in all three regimes but we saw back-flow and vorticies in the low-band and middle-band regimes.

INTRODUCTION

In recent years, the focus of condensed matter has been to- wards an understanding of systems far from equilibrium in the many-body setting. These applications have far reach- ing impacts from fluid dynamics to nano-scale electronics.

Due to their complicated nature, many of these problems must be studied using computational methods, which leads to a new class of simulations. Some of the methods used to investigate these problems are Dynamic Mean Field The- ory (DMFT), non-equilibrium Molecular Dynamics (NEMD), the Boltzmann equation and non-equilibrium Green’s function (NEGF) method [11, 14, 17]. Each of these methods has their strengths and weaknesses.

We had started to investigate current flow in these systems using the Boltzmann equation in a semi-classical regime. From this part of the investigation, we had found that this method did not have an adequate ability to properly model quantum systems and was inefficient in large calculations. Investigating some of the other commonly used methods, NEMD is unable to model any form of electronic transport and is typically used for mass transport. The DMFT method is great at modelling small systems in a purely quantum picture and is typically used in strongly correlated electronic systems [21–23]. The method of non-equilibrium Green’s functions can be used to model non- equilibrium systems and can be paired with ab initio methods such as density functional theory for a better picture in the quantum regime [3, 5, 15, 16, 18–20].

One of the most important aspects of theoretical work is the ability for them to reproduce or predict experimental results.

One of the aspects of quantum flow we were looking to repli- cate were branching currents, backflow and vorticies as seen in multiple experimental studies [1, 2, 5–10, 12]. In this contri- bution, we use the NEGF method to investigate current flow in 2-dimensional conductors. We decided to use this method as it is the most effective for investigating non-equilibrium quantum systems and is powerful when considering systems which have electron-electron interactions and other higher or- der effects. Previous studies of systems using this method have proven to be effective in reproducing experimental results [3–

5, 13, 15, 16, 18–20].

FIG. 1: The setup for the system we modeled. The red sites are those atoms which are coupled to the leads and the green

sites are the other atoms in the system.

COMPUTATIONAL METHOD

To understand current flows, we turned to a non-equilibrium Green’s function method implementation. An overview of the theory of this method can be seen in Appendix A. We imple- mented this algorithm in python and the code can be seen in Appendix B. We used a 100 atom square 10 × 10 grid with a spacing of 3.61 ˚Aas seen in Fig 1. The atoms in the lattice were bound to one another with a hopping energy of 0.6 eV.

The contacts were coupled to the left and right sides of the lattice to the middle 6 atoms with a constant value of 15.0 eV. All of the setups in this paper were investigated in linear response with a bias of 0.01 eV. Finally, we utilized a Gaussian orbital to convert the site representation to a representation of the current densities onto a 50 × 50 grid in real space.

The current densities were calculated from the lesser Green’s function G< in the real space representation by the following formula,

J =~ e~

4πm Z

(∇ − ∇0) G<(, ~r, ~r0)d (1) where e is the charge of the carriers and m is the mass of the

(4)

FIG. 2: The density of states for the system we considered.

Notice the large singular point at  = 0.

carriers. For the 100 atom system we were considering in the paper, the Hamiltonian and Green’s functions were 100 × 100 matrices. We can thus convert G<from the site representation to the real space representation by means of

G<(~r, ~r0, ) =

N

X

i=0 N

X

j=0

ψi(~r)G<ij()ψj(~r0) (2)

Using this information, we were able to integrate the Green’s function before converting and then take the gradient of the site basis wavefunctions ψj. Since we used a Gaussian orbital for these basis functions, we had an analytic solution for these gradients and a basis function whose conjugate was itself al- lowing for faster computation. Using the above information, we could rewrite Eq 2 above as,

~j(~r) = e~

4πm

N

X

i=0 N

X

j=0

ψj(~r0)∇ψi(~r) − ψi(~r)∇0ψj(~r0) Z

G<ij()d

This result made it easy to descretize and focus on specific computational points such as the integration of G< and the mesh size for the orbitals. For the integration of the G<, we found that using a dynamic integration step size allowed for both increased accuracy and decreased computation time fo- cusing specfically in regions where the density of states had multiple energy levels very close to one another. In these re- gions, we decreased the energy step size to retain the informa- tion about these states, while in regions with few or broader states, we used a larger step size to decrease computation time.

In the computation of the site transformations, we looked to improve the computation time by truncating the distance to which a certain influences the surrounding atoms. However, due to the size of our lattice, we found that even truncat- ing terms could lead to drastic changes in the resulting cur- rent density and therefore abandoned the truncation. We also looked to investigate the effects of vacancies on the current densities. To model a vacancy, we changed the site Hamilto-

FIG. 3: Little to no effect on the current density at both short and long range

nian to take on large energy values at the points where the vacancy was placed.

RESULTS

We ran various setups on our system to investigate the ef- fects of the Fermi energy and the effects of mono- and di- vacancies. To investigate the effects of the Fermi energy on the resulting current density, we first had to understand the density of states of the system. Fig 2 shows the density of states (DOS) for the system. We saw that the system is sym- metric about  = 0, which is the site energy for the system.

Moreover, the band extends below the site energy by about 4t = 2.4eV and above the same amount. This is consistant with the theory as the upper and lower bounds for the energy band are 4 ∗ t and −4 ∗ t respectively. Another aspect of this DOS is the narrow and highly peaked state at 0 eV. As this is a very narrow and localized state at 0 eV, it does not affect the overall calculations as much as other states may.

With the band structure of the system, we decided to vary the energy from the bottom of the band to the top in incre- ments of 0.1∗t. This allowed us to achieve a finer resolution on how the current density changed as a function of Fermi energy of the system, while at the same time not over sampling. From this we identified 3 regimes where the current densities varied very little in the pure crystal case. We have determined that the energy values from −2.4 to −1.2 eV was dominated by de- screte current along bonds as shown in Fig 4(a). The energy values from −1.2 to 1.2 was dominated by directed current along the the edges of the sample. Finally, we found that from 1.2 to 2.4 the current was distributed approximately uniform in the sample as shown in Fig 4(c).

The final situations we investigated for this paper were the effects of mono- and di- vacancies. With regards to the mono- vacancies, we looked at the effects of them with a Fermi energy of -1.75, 0.05 and 1.75 eV. We found that the placement of the vacancy had a strong effect on the resulting current in both the -1.75 and 0.05 regimes. One example of this was if the

(5)

vacancy was placed at the red site in Fig 3, there was very localized or no effect on the resulting current; however, when the vacancy was placed at the red site in Fig 5(a), there was long range effects and more disruption to the current. We also saw similar effects in the 0.05 eV regime as shown in Fig 5(b).

Finally, in the 1.75 eV regime, the effect of mono-vacancies resulted in branching currents around the vacancy as seen in Fig 5(c).

For the di-vacancies, we saw increased disruption to the cur- rent in the -1.75 and 0.05 eV regimes, but once again saw branching in the 1.75 eV regime as shown in Fig 6. Again the disruption was governed by the placement of the vacancies and the relative positions of the vacancies with respect to one another. All of our tested sets and resulting currents can also be seen in Appendix C.

CONCLUSION

We have found several interesting aspects of current flow when it comes to small quantum systems. For the Fermi en- ergy, when low in the band, the flow becomes discrete along the bonds and directed straight from one contact to the other.

One possible explanation for this type of flow is that being low in the band, there are very few occupied states and thus a lim- ited amount of states mixing and interacting. Since there are very few states carrying most of the current, when a vacancy is placed at a point where this density has an anti-node, we see long range disorder to the current density. This also helps to explain why at the boundary, there is very little effect for the vacancies, but in the middle of the conductor, vacancies cause much more disruption.

When the Fermi energy was in the middle of the band, around µ = 0 eV, the current density appeared to be con- centrated near the edges of the sample, and had little to no current near the center of the sample. Being in the middle of the band, there is an equal number of holes flowing left as there are electrons flowing right. As in the low energy limit, the cur- rent mainly flowed directly through the middle of the solid in discrete lines. The roughly equal number of holes and electrons flowing in opposite directions could lead to the cancellation of the current in the middle of the conductor. Another possible explanation for this result, is the reflection of the wavefunc- tions on the boundary of the sample. Once again, since these results came from the middle of the band, we have much more mixing of states and the symmetry of the states could give rise

to a large node in the center of the solid. Finally, when the Fermi energy was high in the band, the current appeared to be uniform throughout the sample. This can be explained due to a large number of states mixing.

Finally, the most interesting part of this investigation comes when investigating the effects vacancies have. For the mono- vacancies, we found both short range and long range disorder in the low band regimes and middle band regimes. The best explanation of this is that certain placements of the vacan- cies could sit at either nodes or anti-nodes of the states. If a vacancy were to sit at a node, the vacancy would have very little effect on the long range current densities and even little effect near the vacancy. If the vacancy were to sit at an anti- node, the long range effects can be extremely drastic including back-flow, vortices and perpendicular currents.

Finally, with respect to di-vacancies, we found a dependence on both the placement of the vacancies as well as the distance between the two vacancies. As with the mono-vacancies, if ei- ther of the vacancies sits at a node or anti-node similar results may occur just from that effect; however, the dependence on the relative distance between the vacancies could be due to the scattering of states between the two vacancies. This could cause standing waves and possibly other effects to occur be- tween the vacancies and around them.

To continue the results found in this work, one could scale this system up to a larger, more realistic setting. In a 100 atom system, there are interesting effects, but most of these effects are either not useful in practicality or non-observable. By scal- ing up the system to a larger scale, the appearence of the effects seen in this study may or may not persist to larger systems. In addition to scaling, another aspect that was discussed to be a clear advantage to the NEGF method was the ability to easily model higher order interactions such as electron-electron inter- actions and self magnetic field interactions. This together with a DFT implementation of the electron orbitals would allow us to model and investigate real materials such as graphene. Fi- nally, one interesting effect to view, together with the electron- electron and self magnetic field interations, is the effect of the bias on the current flow. Since this investigation was done with a bias of 0.01 eV, larger biases may have interesting current patterns and different effects.

I would like to acknowledge my thesis advisor Dr. Charles Stafford for his support and guidence throughout this entire process. His insight into the NEGF method was invaluable in developing, testing and in the end getting the whole project up and running.

(6)

(a) (b) (c)

FIG. 4: Current profiles for (a) low in the band with energy −1.75 eV (b) in the middle of the band with energy 0.05 eV and (c) high in the band with energy 1.75 eV.

(a) (b) (c)

FIG. 5: Current profiles for (a) low in the band with energy −1.75 eV (b) in the middle of the band with energy 0.05 eV and (c) high in the band with energy 1.75 eV with vacancies located at the red points.

(a) (b) (c)

FIG. 6: Current profiles for (a) low in the band with energy −1.75 eV (b) in the middle of the band with energy 0.05 eV and (c) high in the band with energy 1.75 eV with vacancies located at the red points.

(7)

I. APPENDICIES

Appendix A: Non-equilibrium Green’s function formalism

We begin our discussion by considering a descrete 2-dimensional conductor connected to leads at both ends. This formulation is in linear response for a tight-binding model in the absence of electron-electron interactions and magnetics fields. In this situation, we must solve for a wavefunction of the kind,

HΨ = EΨˆ (A1)

for some steady state solution of Ψ and Hamiltonian of the system ˆH. We can turn this into a Greens fuction problem by finding soultions in the form,



E − ˆH

G(~x − ~x0) = δ(~x − ~x0) (A2)

Since this is a partial differential equation, we must impose boundary conditions upon the system to ensure that the we have a unique solution. One way in which we are able to reasonably achieve this is through the introduction of a small pertubation to the energy into the complex plane. This has the effect of integrating over the poles of the above equation off the real axis. We will introduce a term ν ∈ R such that ±iν is a pertubation of the energy into the complex plane. Introducing this term into A2, we arrive at the following



E − ˆH ± iν

G = δ (A3)

We now must make a decision between using either the positive or negative value of this pertubation. We know that the solution for the Green’s function in A3, is

G = [E − ˆH ± iν]−1 (A4)

Both will give valid solutions to the equation and moreover will be related by the hermitian conjugate of the operator. Thus we will define the two Green’s functions, the retarded Green’s funtion, GR, and the advanced Green’s function, GA, as follows,

GR= [E − ˆH + iν]−1 (A5)

GA= [E − ˆH − iν]−1 (A6)

Moreover, we can see that the two are related by the following relation

GR= (GA) (A7)

All of the work up until now is valid for both the continuous and discrete conductors. We will now make the transition from the continuous system to considering only discrete systems now. We can easily discretize the Hamiltonian by considering a lattice with N atoms and then constructing an N × N matrix from this. The Hamiltonian operator for this 2-dimensional system is given by,

Hψ = −ˆ ~2

2m∇2ψ + U ψ (A8)

From here, since we are approximating a discrete lattice, we can take the difference between atoms, a, to be small enough where the approximation of the derivative is good enough. Thus for the laplacian above we get that,

2

∂x2ψ = 1

a2j+1− 2ψj+ ψj−1} (A9)

(8)

Using the above and the definition of the Hamiltonian in A8 we get for the discretized Hamiltonian the following,

ij=

U − 4t, if i = j

−t, if i = j ± 1 0, otherwise

(A10)

where t = 2ma~22. Here this is the Hamiltonian for the two dimensional lattice, which we will call ˆHd as A9 is true for any arbitrary direction. Now that we have the Hamiltonian as a discrete matrix, we can construct an energy matrix by diagonalizing an N × N with E on the diagonal. Then we will construct a pertubation matrix, here being called O+which is a diagonal matrix with ν on the diagonal. As a brief aside, in our investigation, we found when varying the O+ parameter, the optimum value was 1 µeV. This allowed for both the best accuracy and the most accurate representation of the current densities. At energy deviations larger than 1 µeV, the current began to become unrealistic, due to back flow. At smaller deviations, the current also becomes minimal and vanishes in certain regions, making this situation unrealistic as well.

Returning back to the formalism we get that the site representation of the retarded Green’s function, GR, is given by, GR=h

E − ˆHd+ iO+i−1

(A11) and we still have that GA= (GR). This function gives us how the electrons act in an infinite system with no consideration of boundaries which might add or substract electrons from the system such as contacts. For this, we now need to consider how the contacts affect a finite system. This is where we will introduce the self energy of the contacts, but first must setup how the contacts couple to the system. The reason for this is that the above Green’s function represents a closed system, as it is finite dimensional, and the boundary of it no longer takes into account the coupling to the leads.

We can treat this coupling of the leads as an infinite lead, with a coupling to the system at sites where the lead makes contact with the system. The contacts may not necessarily have the same hopping coefficient as the system, so we will assign the coupling constant γ to specifiy how strong the leads are coupled to the system. Then similar to how we defined the Hamiltonian, we get that the self energy term will be zeros everywhere that the leads are not coupled to the system and γ where they are coupled as such,

Γi=

(0, if not in contact with leads γ, if in contact with leads

Since our system has N sites, this matrix will also be N × N so we are able to add it to our expression. Finally, since we may have multiple leads with different coupling constants, we define the overall self energy as,

ΣR=X

i

Γi

and so our expression for the retarded Green’s function is,

GR=EI − Hd− ΣR+ iO+−1

Up until now, we had not specified whether the system we were considering was in equilibrium with the contacts or not. From here on out, we will assume that one of the contacts has µH > µL where µL is the chemical potential of the other terminal.

What we now know is that electrons are flowing into the system and elctrons are flowing out of the system. Another way in which to view this is to have hole in the conduction band flow into the system and electrons flow into the system. This will give us two more functions to consider, the electron and hole correlation functions, G< and G> respectively. Moreover, now that we have a system which has electrons flowing through it, we must also consider the ways in which these electrons (and holes) scatter inside the system.

In the semi-classical regime, we typically are concerned with a function Sin which describes how the electrons scatter when the enter into a new meduim, and a function Sout which describes how the electrons scatter when leaving the medium. We will now generalize these two functions to also consider phase considerations between two states k, k0 where an electron is scattering from a state k to a state k0. Interestingly enough, this phase consideration can be fourier transformed from a consideration over time to a consideration over energy. Thus we will write these generalized functions as Σ< and Σ> respecively, both of which are functions of k, k0, E once properly fourier transformed.

We now have the two scattering functions which are generalized to our quantum system, yet we know nothing about the structure or computability of them. The idea behind these functions are to determine how the electrons and holes make the

(9)

transition from inside of the system we are considering to the leads. It would then seem reasonable that these functions are dependent on the the distribution function inside the leads and how strongly the leads are coupled to the system. In fact, this is the right method and we get for the electronic scattering functions,

Σ<= −i 2

X

i

(fi()Γi)

Here Γi is the coupling matrix from before and fi() is the distribution function in lead i. The only difference is the 2i term in front, which comes from the relation from the self-energy terms ΣR and ΣA. For the hole scattering function, we have that

Σ>= i 2

X

i

((1 − fi())Γi)

Finally one of the biggest results from NEGF formalism, is the kinetic equations which allow us to investigate non-equilibrium systems. These come from a more in depth look which we refer the reader to the cited reference[14, 17]. These results relate the lesser and greater Green’s functions to the scattering functions we have defined above as such,

G<= GRΣ<GA G>= GRΣ<GA

From the 4 Green’s functions in this section GR, GA, G<, G>, we are able to compute the current density, density of states and many other important information about the system.

Appendix B: Code

import t i m e

import numpy a s np

import m a t p l o t l i b . p y p l o t a s p l t import p e r i o d i c t a b l e

import o s . path

import m u l t i p r o c e s s i n g a s mp

from O r b i t a l s import f e r m i d i s t , Y00 , g a u s s i a n d e r i v a t i v e , g a u s s i a n o r b i t a l c a l c t y p e = ” s e l f ”

nx = 10 ny = 10 T = 3 0 0 . 0 #K

energy max = 3 . 0 #eV e n e r g y m i n = −3.0 #eV s e l f e n e r g y = 0 #eV c o u p l i n g = 1 5 . #eV c h e m h i g h e r = 2 . 0 #eV c h e m l o w e r = 2 . 1 #eV

e l e m e n t r a d i u s = p e r i o d i c t a b l e . Cu . i n t e r a t o m i c d i s t a n c e e l e m e n t c o n s t a n t = p e r i o d i c t a b l e . Cu . c r y s t a l s t r u c t u r e [ ” a ” ] e l e m e n t n u m b e r = p e r i o d i c t a b l e . Cu . c r y s t a l s t r u c t u r e

e = 1 . 0 #e l e c t r o n c h a r g e

r e d h = 6 . 5 8 ∗ pow( 1 0 , − 1 6 ) #eVs

l a t t i c e c o n s t a n t = e l e m e n t c o n s t a n t / ( 2 . 9 9 ∗ pow( 1 0 , 1 8 ) ) #c s m = 5 1 1 . 0 ∗ pow( 1 0 , 3 ) #eV/ c ˆ2

t = 0 . 6

J f a c t o r = e ∗ r e d h / ( 4 ∗ np . math . p i ∗ m)

GammaIn , GammaOut = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) ) , np . z e r o s ( ( nx ∗ny , nx ∗ ny ) ) Hamil = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) )

def H a m i l t o n i a n d e f i n t i o n c u b e l a t t i c e ( c o u p l i n g , s e l f e n e r g y , t , v a c a n c y e n e r g y = 1 0 0 0 0 . 0 ,

(10)

c a l c t y p e = c a l c t y p e , nx = nx , ny = ny , v a c a n c y l o c a t i o n s = None , d e f e c t l o c a t i o n s a n d e n e r g i e s = None ) :

GammaIn = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) ) GammaOut = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) )

Hamil = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) ) f o r i in range ( nx ) :

f o r j in range ( ny ) : j s c a l e = 10 ∗ j

i f ( ( i == 0 ) and ( j == 2 or j == 3 or j == 4 or j == 5 or j == 6 or j == 7 ) ) : GammaIn [ i + 10 ∗ j ] [ i + 10 ∗ j ] = c o u p l i n g

i f ( ( i == nx − 1 ) and ( j == 2 or j == 3 or j == 4 or j == 5 or j == 6 or j == 7 ) ) : GammaOut [ i + 10 ∗ j ] [ i + 10 ∗ j ] = c o u p l i n g

Hamil [ i + j s c a l e ] [ i + j s c a l e ] = s e l f e n e r g y

# i n s i d e

i f ( i > 0 and i < nx − 1 ) : i f ( j > 0 and j < ny − 1 ) :

Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

#o u t t e r l e f t

i f ( i == 0 and ( j != 0 and j != ny − 1 ) ) : Hamil [ i + j s c a l e + 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

#o u t t e r r i g h t

i f ( i == nx − 1 and ( j != 0 and j != ny − 1 ) ) : Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

#o u t t e r u p p e r

i f ( j == 0 and ( i != 0 and i != nx − 1 ) ) : Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t

#o u t t e r b o t t o m

i f ( j == ny − 1 and ( i != 0 and i != nx − 1 ) ) : Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e + 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

#u p p e r c o r n e r s i f ( i == 0 ) :

i f ( j == 0 ) :

Hamil [ i + j s c a l e + 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t i f ( j == ny − 1 ) :

(11)

Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

#b o t t o m c o r n e r s i f ( i == nx − 1 ) :

i f ( j == 0 ) :

Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e + 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e + 1 0 ] = t i f ( j == ny − 1 ) :

Hamil [ i + j s c a l e − 1 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 ] = t Hamil [ i + j s c a l e − 1 0 ] [ i + j s c a l e ] = t Hamil [ i + j s c a l e ] [ i + j s c a l e − 1 0 ] = t

i f v a c a n c y l o c a t i o n s i s not None : f o r i t e m in v a c a n c y l o c a t i o n s :

Hamil [ i t e m ] [ i t e m ] = v a c a n c y e n e r g y i f d e f e c t l o c a t i o n s a n d e n e r g i e s i s not None :

f o r p o i n t , e n e r g y in d e f e c t l o c a t i o n s a n d e n e r g i e s . i t e m s ( ) : i f ( c a l c t y p e == ” bonds ” ) :

d i f f e r e n c e = e n e r g y − s e l f e n e r g y x p o i n t = p o i n t \% 10

y p o i n t = p o i n t − x p o i n t

Hamil [ x p o i n t + y p o i n t − 1 ] [ x p o i n t + y p o i n t ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t + 1 ] [ x p o i n t + y p o i n t ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t ] [ x p o i n t + y p o i n t + 1 ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t ] [ x p o i n t + y p o i n t − 1 ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t − 1 0 ] [ x p o i n t + y p o i n t ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t + 1 0 ] [ x p o i n t + y p o i n t ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t ] [ x p o i n t + y p o i n t + 1 0 ] = t + d i f f e r e n c e / 4 . 0 Hamil [ x p o i n t + y p o i n t ] [ x p o i n t + y p o i n t − 1 0 ] = t + d i f f e r e n c e / 4 . 0 e l i f ( c a l c t y p e == ” s e l f ” ) :

Hamil [ p o i n t ] [ p o i n t ] = e n e r g y

return Hamil , GammaIn , GammaOut

def e n e r g y c o m p u t a t i o n ( s m a l l e r d e , l a r g e r d e , Hamil , s e l f e n e r g y , t , GammaIn , GammaOut, energy max , e n e r g y m i n , c h e m h i g h e r , chem lower , T ) :

s t a r t t i m e = t i m e . t i m e ( )

LDOS1 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS2 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS3 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS4 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS5 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS6 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS7 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS8 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) LDOS9 = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) W = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ )

o = 0 . 0 0 0 0 0 1 ∗ complex ( 0 , 1 ) ∗ np . a r r a y ( [ 1 f o r i in range ( 1 0 0 ) ] )

(12)

Oplus = np . d i a g ( o )

G r e t a r d e d t o t a l = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) G a d v a n c e d t o t a l = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) SigmaR = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ )

S i g m a L e s s e r = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) G l e s s e r = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ )

G l e s s e r i n t e g r a t e d = np . z e r o s ( ( nx ∗ny , nx ∗ ny ) , d t y p e = ’ complex128 ’ ) SigmaR = −1 ∗ complex ( 0 , 1 ) ∗ (GammaIn + GammaOut) / 2 . 0

en = e n e r g y m i n ge = [ ]

e p s i l = [ ] k = 0

de = l a r g e r d e

while ( en <= energy max ) :

W = np . d i a g ( np . a r r a y ( [ en f o r i in range ( 1 0 0 ) ] ) )

S i g m a L e s s e r = complex ( 0 , 1 ) ∗ (GammaIn ∗ f e r m i d i s t ( en , c h e m h i g h e r , T) + GammaOut ∗ f e r m i d i s t ( en , chem lower , T) )

G r e t a r d e d = np . l i n a l g . i n v (W − Hamil − SigmaR + Oplus ) ge . append (−1 ∗ np . t r a c e ( G r e t a r d e d ) . imag / np . math . p i ) e p s i l . append ( en )

i f ( en − ( s e l f e n e r g y + 4 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS1 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y + 3 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS2 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y + 2 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS3 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y + t ) <= 0 . 0 0 0 0 0 1 ) : LDOS4 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y ) <= 0 . 0 0 0 0 0 1 ) : LDOS5 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y − 1 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS6 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y − 2 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS7 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y − 3 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS8 = G r e t a r d e d

i f ( en − ( s e l f e n e r g y − 4 ∗ t ) <= 0 . 0 0 0 0 0 1 ) : LDOS9 = G r e t a r d e d

G r e t a r d e d t o t a l += G r e t a r d e d

G advanced = np . a r r a y ( np . m a t r i x ( G r e t a r d e d ) . getH ( ) ) G a d v a n c e d t o t a l += G advanced

G l e s s e r = np . matmul ( G r e t a r d e d , np . matmul ( S i g m a L e s s e r , G advanced ) ) G l e s s e r i n t e g r a t e d += ( G l e s s e r ) ∗ de

k += 1 en += de

i f ( k \% 10000 == 0 ) : print ( en )

i f ( en >= −1.0 and en <= 1 . 0 ) : de = s m a l l e r d e

e l s e :

de = l a r g e r d e

print ( ” Energy c o m p u t a t i o n f i n i s h e d i n { t i m e } s e c o n d s . ” . format ( t i m e = ( t i m e . t i m e ( ) − s t a r t t i m e ) ) )

d e n s = np . a r r a y ( ge ) d e n s = d e n s / d e n s .max( ) e n e r g = np . a r r a y ( e p s i l )

(13)

np . s a v e ( ” e n e r g y v a l s ” , e n e r g ) np . s a v e ( ” d o s v a l s ” , d e n s )

return G l e s s e r i n t e g r a t e d , G a d v a n c e d t o t a l , G r e t a r d e d t o t a l , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9

def s p a t i a l c o m p u t a t i o n ( s t a r t , end , w, h , r e t u r n d i c t , G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) :

s p a t i a l c u r r e n t = np . z e r o s ( ( w, h ) , d t y p e = np . n d a r r a y ) s p a t i a l w a v e = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) s p a t i a l v e c t o r r = np . z e r o s ( ( 3 , 1 ) , d t y p e = ’ complex128 ’ ) s p a t i a l v e c t o r r p r i m e = np . z e r o s ( ( 3 , 1 ) , d t y p e = ’ complex128 ’ ) localDOS1 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ )

localDOS2 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS3 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS4 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS5 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS6 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS7 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS8 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) localDOS9 = np . z e r o s ( ( w, h ) , d t y p e = ’ complex128 ’ ) X = ( nx − 1 ) ∗ l a t t i c e c o n s t a n t

Y = ( ny − 1 ) ∗ l a t t i c e c o n s t a n t x S c a l e F a c t o r = f l o a t (X) / f l o a t (w) y S c a l e F a c t o r = f l o a t (Y) / f l o a t ( h ) f o r m in range ( s t a r t , end + 1 , 1 ) :

#r prime c o o r d i n a t e s f o r n in range ( nx ∗ ny ) :

f o r i in range (w ) : f o r j in range ( h ) :

#f i g u r e o u t t h e c o r r e s p o n d i n g atoms l o c a t i o n s x m = (m \% 1 0 ) ∗ l a t t i c e c o n s t a n t

y m = (m // 1 0 ) ∗ l a t t i c e c o n s t a n t x n = ( n \% 1 0 ) ∗ l a t t i c e c o n s t a n t y n = ( n // 1 0 ) ∗ l a t t i c e c o n s t a n t

r v e c = np . s q r t (pow( x S c a l e F a c t o r ∗ i − x m , 2 ) + pow( y S c a l e F a c t o r ∗ j − y m , 2 ) ) r p v e c = np . s q r t (pow( x S c a l e F a c t o r ∗ i − x n , 2 ) + pow( y S c a l e F a c t o r ∗ j − y n , 2 ) ) s p a t i a l v e c t o r r [ 0 ] = Y00 ( ) ∗ Y00 ( ) ∗

g a u s s i a n o r b i t a l ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r p v e c ) ∗ g a u s s i a n d e r i v a t i v e ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r v e c ) s p a t i a l v e c t o r r [ 1 ] = Y00 ( ) ∗ Y00 ( ) ∗

g a u s s i a n o r b i t a l ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r p v e c ) ∗ g a u s s i a n d e r i v a t i v e ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r v e c ) s p a t i a l v e c t o r r p r i m e [ 0 ] = Y00 ( ) ∗ Y00 ( ) ∗

g a u s s i a n o r b i t a l ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r v e c ) ∗ g a u s s i a n d e r i v a t i v e ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r p v e c ) s p a t i a l v e c t o r r p r i m e [ 1 ] = Y00 ( ) ∗ Y00 ( ) ∗

g a u s s i a n o r b i t a l ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r v e c ) ∗ g a u s s i a n d e r i v a t i v e ( a l p h=l a t t i c e c o n s t a n t / 2 . 0 , r = r p v e c )

(14)

i f np . hypot ( x m , y m ) >= 0 . 0 0 0 0 0 0 0 0 0 0 1 ∗ l a t t i c e c o n s t a n t : s p a t i a l v e c t o r r [ 0 ] = s p a t i a l v e c t o r r [ 0 ] ∗

f l o a t ( x S c a l e F a c t o r ∗ i − x m ) / r v e c e l s e :

s p a t i a l v e c t o r r [ 0 ] = 0

i f np . hypot ( x m , y m ) >= 0 . 0 0 0 0 0 0 0 0 0 0 1 ∗ l a t t i c e c o n s t a n t : s p a t i a l v e c t o r r [ 1 ] = s p a t i a l v e c t o r r [ 1 ] ∗

f l o a t ( y S c a l e F a c t o r ∗ j − y m ) / r v e c e l s e :

s p a t i a l v e c t o r r [ 1 ] = 0

i f np . hypot ( x n , y n ) >= 0 . 0 0 0 0 0 0 0 0 0 0 1 ∗ l a t t i c e c o n s t a n t : s p a t i a l v e c t o r r p r i m e [ 0 ] = s p a t i a l v e c t o r r p r i m e [ 0 ] ∗ f l o a t ( x S c a l e F a c t o r ∗ i − x n ) / r p v e c

e l s e :

s p a t i a l v e c t o r r p r i m e [ 0 ] = 0

i f np . hypot ( x n , y n ) >= 0 . 0 0 0 0 0 0 0 0 0 0 1 ∗ l a t t i c e c o n s t a n t : s p a t i a l v e c t o r r p r i m e [ 1 ] = s p a t i a l v e c t o r r p r i m e [ 1 ] ∗ f l o a t ( y S c a l e F a c t o r ∗ j − y n ) / r p v e c

e l s e :

s p a t i a l v e c t o r r p r i m e [ 1 ] = 0 wavefunc = Y00 ( ) ∗ Y00 ( ) ∗

g a u s s i a n o r b i t a l ( a l p h= ( l a t t i c e c o n s t a n t ) / 2 . 0 , r = r p v e c ) ∗ g a u s s i a n o r b i t a l ( a l p h =( l a t t i c e c o n s t a n t ) / 2 . 0 , r = r v e c ) d i f f e r e n c e = s p a t i a l v e c t o r r − s p a t i a l v e c t o r r p r i m e s p a t i a l c u r r e n t [ i ] [ j ] += d i f f e r e n c e ∗ G l e s s e r [m ] [ n ] s p a t i a l w a v e [ i ] [ j ] += wavefunc ∗ G r e t a r d e d [m ] [ n ] localDOS1 [ i ] [ j ] += wavefunc ∗ LDOS1 [m ] [ n ]

localDOS2 [ i ] [ j ] += wavefunc ∗ LDOS2 [m ] [ n ] localDOS3 [ i ] [ j ] += wavefunc ∗ LDOS3 [m ] [ n ] localDOS4 [ i ] [ j ] += wavefunc ∗ LDOS4 [m ] [ n ] localDOS5 [ i ] [ j ] += wavefunc ∗ LDOS5 [m ] [ n ] localDOS6 [ i ] [ j ] += wavefunc ∗ LDOS6 [m ] [ n ] localDOS7 [ i ] [ j ] += wavefunc ∗ LDOS7 [m ] [ n ] localDOS8 [ i ] [ j ] += wavefunc ∗ LDOS8 [m ] [ n ] localDOS9 [ i ] [ j ] += wavefunc ∗ LDOS9 [m ] [ n ] i f (m \% 5 == 0 ) :

print (m)

r e t u r n d i c t [ s t a r t ] = ( J f a c t o r ∗ s p a t i a l c u r r e n t , s p a t i a l w a v e , localDOS1 , localDOS2 , localDOS3 , localDOS4 , localDOS5 , localDOS6 , localDOS7 , localDOS8 , localDOS9 )

def p l o t t i n g r e s u l t s ( s p a t i a l c u r r e n t , t i t l e , f i l e n a m e ) : l , w = s p a t i a l c u r r e n t . s h a p e

U = np . z e r o s ( ( l , w) , d t y p e = ’ complex128 ’ ) V = np . z e r o s ( ( l , w) , d t y p e = ’ complex128 ’ ) X, Y = np . mgrid [ 0 : l , 0 :w ]

f o r i in range ( l ) : f o r j in range (w ) :

v e c t o r = s p a t i a l c u r r e n t [ i ] [ j ]

(15)

U [ i ] [ j ] = v e c t o r [ 0 ]# ∗ np . c o n j u g a t e ( v e c t o r [ 0 ] ) V [ i ] [ j ] = v e c t o r [ 1 ]# ∗ np . c o n j u g a t e ( v e c t o r [ 1 ] ) p l t . f i g u r e ( )

p l t . t i t l e ( t i t l e ) p l t . q u i v e r (X, Y, U,V) p l t . s a v e f i g ( f i l e n a m e ) p l t . c l o s e ( )

return

def l o c a l d e n s i t y p l o t s ( localDOS1 , localDOS2 , localDOS3 , localDOS4 , localDOS5 , localDOS6 , localDOS7 , localDOS8 , localDOS9 , t y p e o f s o l i d , s e l f e n e r g y , t , s a v e d i r e c t i o n ) :

LocalDOS1 = −1 ∗ np . imag ( localDOS1 ) / np . math . p i LocalDOS2 = −1 ∗ np . imag ( localDOS2 ) / np . math . p i LocalDOS3 = −1 ∗ np . imag ( localDOS3 ) / np . math . p i LocalDOS4 = −1 ∗ np . imag ( localDOS4 ) / np . math . p i LocalDOS5 = −1 ∗ np . imag ( localDOS5 ) / np . math . p i LocalDOS6 = −1 ∗ np . imag ( localDOS6 ) / np . math . p i LocalDOS7 = −1 ∗ np . imag ( localDOS7 ) / np . math . p i LocalDOS8 = −1 ∗ np . imag ( localDOS8 ) / np . math . p i LocalDOS9 = −1 ∗ np . imag ( localDOS9 ) / np . math . p i

LDOS names = [ LocalDOS1 , LocalDOS2 , LocalDOS3 , LocalDOS4 , LocalDOS5 , LocalDOS6 , LocalDOS7 , LocalDOS8 , LocalDOS9 ]

k = 4

f o r name in LDOS names :

f i l e n a m e = ”LDOS { e n e r g y } { t y p e o f s o l i d } . png ” . format

( e n e r g y = s t r ( round ( s e l f e n e r g y + k ∗ t , 2 ) ) , t y p e o f s o l i d = t y p e o f s o l i d ) f i n a l p a t h = o s . path . j o i n ( s a v e d i r e c t i o n , f i l e n a m e )

p l t . f i g u r e ( )

p l t . imshow ( np . t r a n s p o s e ( name ) ) p l t . c o l o r b a r ( )

p l t . s a v e f i g ( f i n a l p a t h ) p l t . c l o s e ( )

k−= 1 return

def c o m p u t a t i o n s p l i t ( G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) : queue1 = mp . Manager ( )

queue2 = mp . Manager ( ) queue3 = mp . Manager ( ) queue4 = mp . Manager ( ) r e t u r n 1 = queue1 . d i c t ( ) r e t u r n 2 = queue2 . d i c t ( ) r e t u r n 3 = queue3 . d i c t ( ) r e t u r n 4 = queue4 . d i c t ( )

p1 = mp . P r o c e s s ( t a r g e t=s p a t i a l c o m p u t a t i o n , a r g s =(0 , 2 4 , 5 0 , 5 0 , r e t u r n 1 , G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) )

p2 = mp . P r o c e s s ( t a r g e t=s p a t i a l c o m p u t a t i o n , a r g s =(25 , 4 9 , 5 0 , 5 0 , r e t u r n 2 , G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) )

(16)

p3 = mp . P r o c e s s ( t a r g e t=s p a t i a l c o m p u t a t i o n , a r g s =(50 , 7 4 , 5 0 , 5 0 , r e t u r n 3 , G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) )

p4 = mp . P r o c e s s ( t a r g e t=s p a t i a l c o m p u t a t i o n , a r g s =(75 , 9 9 , 5 0 , 5 0 , r e t u r n 4 , G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) )

j o b s = [ p1 , p2 , p3 , p4 ] s t a r t t i m e = t i m e . t i m e ( ) f o r p in j o b s :

p . s t a r t ( )

print ( ” J o b s have been s t a r t e d \n” ) f o r p in j o b s :

p . j o i n ( )

print ( ” J o b s have been c o m p l e t e d \n” )

print ( ” C u r r e n t c o m p u t a t i o n f i n i s h e d i n { t i m e } s e c o n d s . ” . format ( t i m e = ( t i m e . t i m e ( ) − s t a r t t i m e ) ) ) return r e t u r n 1 , r e t u r n 2 , r e t u r n 3 , r e t u r n 4

def Y00 ( ) :

return 1 / np . s q r t ( 4 ∗ np . math . p i ) def g a u s s i a n o r b i t a l ( alph , r ) :

n o r m a l i z e d = 1 / pow( 2 ∗ np . math . p i ∗ a l p h ∗ ∗ 2 , 0 . 2 5 ) return n o r m a l i z e d ∗ np . exp (−1 ∗ ( r ∗ ∗ 2 ) / ( 2 ∗ a l p h ∗ ∗ 2 ) ) def g a u s s i a n d e r i v a t i v e ( alph , r ) :

n o r m a l i z e d = 1 . 0 / pow( 2 ∗ np . math . p i ∗ a l p h ∗ ∗ 2 , 0 . 2 5 )

return −2 ∗ r ∗ n o r m a l i z e d ∗ np . exp (−1 ∗ r ∗∗2 / ( 2 ∗ a l p h ∗ ∗ 2 ) ) / ( 2 ∗ a l p h ∗ ∗ 2 ) def r a d i a l w a v e f u n c t i o n 1 s ( Z , a , r ) :

c o n s t a n t = pow( Z / a , 1 . 5 ) / pow( np . math . p i , 0 . 5 ) f a c t o r = − Z ∗ r / a

return c o n s t a n t ∗ np . exp ( f a c t o r ) def r a d i a l w a v e f u n c t i o n 2 s ( Z , a , r ) :

c o n s t a n t = pow( Z / a , 1 . 5 ) / pow( 3 2 ∗ np . math . p i , 0 . 5 ) f a c t o r = − Z ∗ r / ( 2 ∗ a )

return c o n s t a n t ∗ ( 2 + 2 ∗ f a c t o r ) ∗ np . exp ( f a c t o r ) def r a d i a l w a v e f u n c t i o n 3 s ( Z , a , r ) :

c o n s t a n t = pow( Z / a , 1 . 5 ) / ( 8 1 ∗ pow( 3 ∗ np . math . p i , 0 . 5 ) ) f a c t o r = − Z ∗ r / ( 3 ∗ a )

return c o n s t a n t ∗ ( 2 7 + 54 ∗ f a c t o r − 18 ∗ pow( f a c t o r , 2 ) ) ∗ np . exp ( f a c t o r ) def f e r m i d i s t (E , chemP , T ) :

k = 8 . 6 1 ∗ pow( 1 0 , − 5 )

f a c t o r = (E − chemP ) / ( k ∗ T) return 1 / ( 1 + np . exp ( f a c t o r ) )

def r a d i a l w a v e f u n c t i o n 1 s d e r i v a t i v e ( Z , a , r ) :

c o n s t a n t = −1 ∗ Z ∗ pow( Z / a , 1 . 5 ) / ( a ∗ pow( np . math . p i , 0 . 5 ) ) f a c t o r = − Z ∗ r / a

return c o n s t a n t ∗ np . exp ( f a c t o r )

def r a d i a l w a v e f u n c t i o n 2 s d e r i v a t i v e ( Z , a , r ) :

c o n s t a n t = pow( Z / a , 1 . 5 ) / pow( 3 2 ∗ np . math . p i , 0 . 5 ) f a c t o r = − Z ∗ r / ( 2 ∗ a )

return c o n s t a n t ∗ ( 2 + 2 ∗ f a c t o r ) ∗ np . exp ( f a c t o r ) def r a d i a l w a v e f u n c t i o n 3 s d e r i v a t i v e ( Z , a , r ) :

(17)

c o n s t a n t = pow( Z / a , 1 . 5 ) / ( 8 1 ∗ pow( 3 ∗ np . math . p i , 0 . 5 ) ) f a c t o r = − Z ∗ r / ( 3 ∗ a )

return c o n s t a n t ∗ ( 2 7 + 54 ∗ f a c t o r − 18 ∗ pow( f a c t o r , 2 ) ) ∗ np . exp ( f a c t o r ) def S l a t e r O r i b i t a l s ( n , gam , r ) :

N = pow( 2 ∗ gam , n ) ∗ np . s q r t ( ( 2 ∗ gam ) / ( np . math . f a c t o r i a l ( 2 ∗ n ) ) ) return N ∗ ( r ∗∗ ( n − 1 ) ) ∗ np . exp (−1 ∗ gam ∗ r )

i f n a m e == ” m a i n ” : import numpy a s np import p e r i o d i c t a b l e import o s

from s h u t i l import r m t r e e

e l e m e n t r a d i u s = p e r i o d i c t a b l e . Cu . i n t e r a t o m i c d i s t a n c e e l e m e n t c o n s t a n t = p e r i o d i c t a b l e . Cu . c r y s t a l s t r u c t u r e [ ” a ” ] e l e m e n t n u m b e r = p e r i o d i c t a b l e . Cu . c r y s t a l s t r u c t u r e

e = 1 . 0 #e l e c t r o n c h a r g e

r e d h = 6 . 5 8 ∗ pow( 1 0 , − 1 6 ) #eVs

l a t t i c e c o n s t a n t = 2 ∗ e l e m e n t c o n s t a n t / ( 2 . 9 9 ∗ pow( 1 0 , 1 8 ) ) #c s m = 5 1 1 . 0 ∗ pow( 1 0 , 3 ) #eV/ c ˆ2

J f a c t o r = e ∗ r e d h / ( 4 ∗ np . math . p i ∗ m) t = 0 . 6

c a l c t y p e = ” s e l f ” nx = 10

ny = 10 T = 3 0 0 . 0 #K

energy max = 3 . 0 #eV e n e r g y m i n = −3.0 #eV s e l f e n e r g y = 0 #eV c o u p l i n g = 1 5 . 0 #eV e n e r g y s t u f f = [ 1 . 7 5 ]

f o r f e r m i e n e r g y in e n e r g y s t u f f : c h e m h i g h e r = f e r m i e n e r g y + 0 . 0 0 5 c h e m l o w e r = f e r m i e n e r g y − 0 . 0 0 5 c u r r e n t p a t h = o s . getcwd ( )

s a v e f o l d e r = ” L i n e a r r e s p o n s e f e r m i s w e e p { e n e r g y } ”

. format ( e n e r g y = s t r ( round ( f e r m i e n e r g y , 3 ) ) ) t o t a l p a t h = o s . path . j o i n ( c u r r e n t p a t h , s a v e f o l d e r )

try :

o s . mkdir ( s a v e f o l d e r ) except :

r m t r e e ( t o t a l p a t h ) o s . mkdir ( s a v e f o l d e r )

Hamil , GammaIn , GammaOut = H a m i l t o n i a n d e f i n t i o n c u b e l a t t i c e ( c o u p l i n g , s e l f e n e r g y , t )

G l e s s e r , G advanced , G r e t a r d e d , LDOS1 , LDOS2 , LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 = e n e r g y c o m p u t a t i o n ( 0 . 0 0 0 0 0 1 ,

0 . 0 0 0 0 1 , Hamil , s e l f e n e r g y , t , GammaIn , GammaOut , energy max , e n e r g y m i n , c h e m h i g h e r , chem lower , T) r e t u r n 1 , r e t u r n 2 , r e t u r n 3 , r e t u r n 4 =

c o m p u t a t i o n s p l i t ( G l e s s e r , J f a c t o r , G r e t a r d e d , LDOS1 , LDOS2 ,

(18)

LDOS3 , LDOS4 , LDOS5 , LDOS6 , LDOS7 , LDOS8 , LDOS9 , l a t t i c e c o n s t a n t ) f i r s t = r e t u r n 1 . v a l u e s ( ) [ 0 ]

s e c o n d = r e t u r n 2 . v a l u e s ( ) [ 0 ] t h i r d = r e t u r n 3 . v a l u e s ( ) [ 0 ] f o u r t h = r e t u r n 4 . v a l u e s ( ) [ 0 ]

c u r r e n t = f i r s t [ 0 ] + s e c o n d [ 0 ] + t h i r d [ 0 ] + f o u r t h [ 0 ] G r s p a t i a l = f i r s t [ 1 ] + s e c o n d [ 1 ] + t h i r d [ 1 ] + f o u r t h [ 1 ] localDOS1 = f i r s t [ 2 ] + s e c o n d [ 2 ] + t h i r d [ 2 ] + f o u r t h [ 2 ] localDOS2 = f i r s t [ 3 ] + s e c o n d [ 3 ] + t h i r d [ 3 ] + f o u r t h [ 3 ] localDOS3 = f i r s t [ 4 ] + s e c o n d [ 4 ] + t h i r d [ 4 ] + f o u r t h [ 4 ] localDOS4 = f i r s t [ 5 ] + s e c o n d [ 5 ] + t h i r d [ 5 ] + f o u r t h [ 5 ] localDOS5 = f i r s t [ 6 ] + s e c o n d [ 6 ] + t h i r d [ 6 ] + f o u r t h [ 6 ] localDOS6 = f i r s t [ 7 ] + s e c o n d [ 7 ] + t h i r d [ 7 ] + f o u r t h [ 7 ] localDOS7 = f i r s t [ 8 ] + s e c o n d [ 8 ] + t h i r d [ 8 ] + f o u r t h [ 8 ] localDOS8 = f i r s t [ 9 ] + s e c o n d [ 9 ] + t h i r d [ 9 ] + f o u r t h [ 9 ] localDOS9 = f i r s t [ 1 0 ] + s e c o n d [ 1 0 ] + t h i r d [ 1 0 ] + f o u r t h [ 1 0 ]

np . s a v e ( o s . path . j o i n ( t o t a l p a t h , ” G r e t a r d e d f i l e { e n e r g y } { width } ” . format ( e n e r g y = round ( f e r m i e n e r g y , 2 ) ,

width = round ( ( c h e m h i g h e r − c h e m l o w e r ) , 4 ) ) ) , G r e t a r d e d ) np . s a v e ( o s . path . j o i n ( t o t a l p a t h , ” G l e s s e r f i l e { e n e r g y } { width } ”

. format ( e n e r g y = round ( f e r m i e n e r g y , 2 ) ,

width = round ( ( c h e m h i g h e r − c h e m l o w e r ) , 4 ) ) ) , G l e s s e r ) np . s a v e ( o s . path . j o i n ( t o t a l p a t h , ” C u r r e n t f i l e { e n e r g y } { width } ”

. format ( e n e r g y = round ( f e r m i e n e r g y , 2 ) ,

width = round ( ( c h e m h i g h e r − c h e m l o w e r ) , 4 ) ) ) , c u r r e n t )

t o t a l f i l e p a t h = o s . path . j o i n ( t o t a l p a t h , ” c u r r e n t p r o f i l e f e { e n e r g y } . png ” . format ( e n e r g y = s t r ( round ( f e r m i e n e r g y , 2 ) ) ) )

p l o t t i n g r e s u l t s ( c u r r e n t , ” C u r r e n t p r o f i l e i n l i n e a r r e s p o n s e f o r mu = ” + s t r ( round ( f e r m i e n e r g y , 2 ) ) +

” and b i a s = ” + s t r ( 0 . 0 1 ) , t o t a l f i l e p a t h )

l o c a l d e n s i t y p l o t s ( localDOS1 , localDOS2 , localDOS3 , localDOS4 , localDOS5 , localDOS6 , localDOS7 , localDOS8 , localDOS9 , ” p u r e ” , s e l f e n e r g y , t , t o t a l p a t h )

Appendix C: Resulting Currents 1. Fermi energy of -1.75 eV

a. Di-vacancies

(19)

b. Mono-vacancies

(20)

2. Fermi energy of 0.05 eV

a. Di-vacancies

(21)

b. Mono-vacancies 3. Fermi energy of 1.75 eV

a. Di-vacancies

(22)

b. Mono-vacancies

[1] M. A. Topinka, B. J. LeRoy, R. M. Westervelt, S. E. J. Shaw, R. Fleischmann, E. J. Heller, K. D. Maranowski, and A. C.

Gossard, Nature 410, 183 (2001).

[2] B. A. Braem, C. Gold, S. Hennel, M. R¨o¨osli, M. Berl, W. Di- etsche, W. Wegscheider, K. Ensslin, and T. Ihn, New Journal

of Physics 20, 073015 (2018).

[3] D. Nozaki and W. G. Schmidt, Journal of Computational Chemistry 38, 1685 (2017).

[4] D. K. Morr, Phys. Rev. B 95, 195162 (2017).

[5] K. Chang, A. Eichler, J. Rhensius, L. Lorenzelli, and C. L.

(23)

Degen, Nano Letters 17, 2367 (2017).

[6] S. Bhandari and R. M. Westervelt, Semiconductor Science and Technology 32, 024001 (2017).

[7] S. Bhandari, K. Wang, K. Watanabe, T. Taniguchi, P. Kim, and R. M. Westervelt, Journal of Physics: Conference Series 864, 012031 (2017).

[8] K. Kolasi´nski, B. Szafran, B. Brun, and H. Sellier, Phys. Rev.

B 94, 075301 (2016).

[9] S. Bhandari, G.-H. Lee, A. Klales, K. Watanabe, T. Taniguchi, E. Heller, P. Kim, and R. M. Westervelt, Nano Letters 16, 1690 (2016).

[10] R. Steinacher, A. A. Kozikov, C. R¨ossler, C. Reichl, W. Wegscheider, K. Ensslin, and T. Ihn, Phys. Rev. B 93, 085303 (2016).

[11] D. K. Morr, Contemporary Physics 57, 19 (2016).

[12] A. A. Kozikov, R. Steinacher, C. R¨ossler, T. Ihn, K. Ensslin, C. Reichl, and W. Wegscheider, Nano Letters 15, 7994 (2015).

[13] S. Ganguly and S. Basu, The European Physical Journal B 88, 96 (2015).

[14] S. Datta, Electronic Transport in Mesoscopic Systems, Cam- bridge Studies in Semiconductor Physics and Microelectronic Engineering (Cambridge University Press, 1995).

[15] S. Inui, C. A. Stafford, and J. P. Bergfield, ACS Nano 12, 4304

(2018).

[16] K. Stokbro, J. Taylor, M. Brandbyge, and H. Guo, Ab-initio non-equilibrium green’s function formalism for calculating elec- tron transport in molecular devices, in Introducing Molecular Electronics, edited by G. Cuniberti, K. Richter, and G. Fa- gas (Springer Berlin Heidelberg, Berlin, Heidelberg, 2005) pp.

117–151.

[17] E. Ye and A. J. Minnich, Journal of Applied Physics 125, 055107 (2019); S. Datta, in Digest. International Electron De- vices Meeting, (2002) pp. 703–706.

[18] Y. Lu and J. Guo, Applied Physics Letters 101, 043112 (2012).

[19] U. Aeberhard, Journal of Computational Electronics 10, 394 (2011).

[20] J. Guo, S. Datta, M. P. Anantram, and M. Lundstrom, Journal of Computational Electronics 3, 373 (2004).

[21] G. Kotliar, S. Y. Savrasov, G. P´alsson, and G. Biroli, Phys.

Rev. Lett. 87, 186401 (2001).

[22] S. Biermann, F. Aryasetiawan, and A. Georges, Phys. Rev.

Lett. 90, 086402 (2003).

[23] K. Held, I. A. Nekrasov, G. Keller, V. Eyert, N. Bl¨umer, A. K.

McMahan, R. T. Scalettar, T. Pruschke, V. I. Anisimov, and D. Vollhardt, physica status solidi (b) 243, 2599 (2006).

References

Related documents

WIP MEMORY CARD Saffiano bonded leather bookmark with page marker and pocket for 4GB USB key or credit card... WIP MEMORY KEY Saffiano bonded leather bookmark with 4GB

So, this study aims to know the level of customers’ acceptance of IBP that are offered by the Dual Banking system among the non-Muslims and the relationship between acceptance and

This study therefore assessed to what extent adolescents’ perceived anti-smoking norms among best friends, teachers, and society at large were associated with

Creates a thing you declare there was book royalties if the earth shall we have been declared all the firmament declareth the.. Passes through the expanse and creation itself joins

Needs to the best practices questionnaire that govern debt capacity measures the most business owners have formal policies, financial risk management do associated contractor

Pithawalla College Of Eng... Institute

Random sampling of combinations of site conditions and load parameters is performed in order to classify the effects of parameter scattering on the stress variability by means

An irregular verb is one that tip not form its simple past tense or first past participle by adding ed or d to fleet base form Irregular verbs contrast with regular verbs which