Last week I was trying to find what the format of the filp file is for Quantum Espresso that produced by bands.x with the appropriate variable set, and which contains the matrix elements of the momentum operator between valence and conduction bands.
As I couldn’t find any documentation on is format, or any .gnu files to plot it, I thought it would be faster for me to go through the code, and indeed it was quite easy to figure out what was being printed, so I thought I would post this here too.
I will also upload a python notebook that converts them into .csv file, as soon as I double check that it is working properly. Continue reading
I started using medium to get some of my thoughts out in the wild.
Read this article here.
TBModels is a python module that belongs to the Z2Pack toolkit, and can be used to constructuct Tight Binding models to be used with Kwant software for transport calculations using the Landauer-Buttinker formula.
When deriving Hamiltonian matrices from first principles with Wannier90 for kwant, TBmodels will restore all the hoppings between adjacent unit cells. This can be proven very time-consuming both when preparing and solving systems with lots of atoms. Often, only nearest neighbor (nn) interactions are needed, especially if next-nearest neighbor (nnn) etc. decay considerably that can be safely ignored.
For example, in my system, WFs 4 and 2 are neighbors. When looking at the Wannier_hr.dat file, I see the following:
0 0 0 4 2 -1.287933 0.000000
0 1 0 4 2 0.056218 0.000000
0 2 0 4 2 0.004991 -0.000000
0 3 0 4 2 0.008744 -0.000000
0 4 0 4 2 -0.004063 -0.000000
The first three numbers signify the unit cell, which is [0,0,0] in the home, [0,1,0] one hop in the y direction, [0,2,0] two hops in the y direction etc. The next numbers are the WFs (namely 4 and 2) and the last term is the hopping term. In my system, there is no repetition in the z direction, and so only x and y are important. z stays 0.
Ever since I was really young I hated classrooms. Throughout my life, I’ve spent a great portion of my time thinking about how lecturing should be done and always had crazy, innovative ideas. But I was also afraid that they would not be effective. So, then I started thinking how a society would be like that supports this type of teaching. But then I was afraid that it’s not worth it, since I would not be able to change the whole of it!
Fast forward 15 years later and boom! I’m the lecturer! And after spending some time observing people that I admire for their patience (how they talk, their ideas, how they teach) I realise that there is absolutely no reason to be scared! The ‘preparation’ was really long and the ideas are many, but now it is time to act on them, and I can’t help but being excited for what is coming!
So there, start small. Like this:
It is with excitement that I update this almost four-years-old post now. After so many years of working in computational electronics, I have finally seen all the things that I was expecting to be realised, and I expect even more to come mainly related to accelerated materials discovery and big databases.
I provide here, a list of the software (mostly open source) that I use to find all the intriguing things that a life of a scientist has. This list is mainly about electronic devices (solid state physics) from first principles, but that is not the only field where DFT has expanded it roots. There are plenty of chemistry software out there that have recently expanded their capabilities beyond anything we’ve seen in the past.
Electronic structure calculations:
First principles electronic strcutre and/or transport and other phenomena:
Charge transport and trapping in the oxides interests many people, when it comes to device engineering, for different reasons. One of them is the variety of device configurations that can exist using thin film oxides.
During my PhD, I worked a lot with simulating such trapping mehanisms using the TCAD software Synopsys Sentaurus. Of course, the main issue with this kind of work was whether it was producing meaningful results. While this can be tested only using experimental output, in order to comare the results of the simulator with the theory, I was using some Mathematica scripts that I am attaching at the end of this post.
This model, is what Sentaurus uses to model transport and trapping in the oxide, and while many calculations can be double checked with the script, some others are impossible, as to derive them solely from the bias applied to the device, would require extensive analytical modelling. Such thing, of course, would be hard if the device is three-dimensional, unless you are willing to write your own code that solves the Drift-Diffusion (DD) equation using the Finite Elements Method.
Instead, I chose to trust the solution of the DD coming from the software, and only test the equations of charge trapping using the values of current and electron density from specific points in the oxide. This was both for current and diffusion enabled trapping, as well as the state transition functionality for the creation of new traps in the oxides (as for example after stress is applied).
DDTrapping calculates the occupational probability and the trapped harge density given constants as well as model parameters from the simulator, taken at a specific location in the device.
StateTransitions similarly calculates the probability of the defect being in a specific state as well as the state transition rates.
One common situation when calculating the band structure of a material using Density Functional Theory (DFT) is deriving the relative distances between points in the Brillouin Zone (BZ). The DFT tool will use the number of points defined for each direction in the BZ to produce the eigenvalues. Abinit calls this “circuit”, and luckily, can be set to calculate it automatically by defining the length (or points) of the smallest distance using the command “ndivsm”. This will produce something like the following in the output:
0.00000 0.00000 0.00000 ==> 0.33333 0.33333 0.00000 ( ndiv : 16 )
0.33333 0.33333 0.00000 ==> 0.50000 0.00000 0.00000 ( ndiv : 8 )
0.50000 0.00000 0.00000 ==> 0.00000 0.00000 0.00000 ( ndiv : 14 )
which is for the distance between four points, where the last is the same as the first (Γ->Κ->Μ->Γ).
Alternatively, since I use Quantum Epsresso, and it requires to set the distances between points yourself, I use the ones that Wannier90 calculates, so that I can make a direct comparison between the two band structures.