Inspiration
Semiconductors are critical electrical components in processors and embedded systems. Quantum mechanical processes determine their conductivity. We can model a semiconductor as an electric potential barrier to observe electronic behaviour across it, which is what we did.
Even with this quantum mechanics simulated, on its own, it fails to account for physical phenomena, such as the impurities in the semiconductor that give rise to its conductivity, periodic lattice potentials due to crystal structure, and multi-body Coulomb repulsion. Mathematically implementing perturbations allow us to more accurately determine the properties of the semiconductor we're working with. It allows research into semiconductor quality be conducted more decisively.
We could've used Python to visualise the wavefunction, but Golang is much more computationally efficient, especially for multi-dimensional mathematical modelling. Also, we wanted to try it out.
What it does
First, it displays a 3D electronic wavefunction across a semiconductor, modelled as a cube. We show the unperturbed wavefunction. We then present a second simulation of a 3D wavefunction, with corrections applied due to Coulombic interaction, and irregular potential induction by impurities.
How we built it
Golang, with testing done in Python.
Challenges we ran into
The mathematics. The mathematics was the backbone of this project, for without it, there existed no derived wavefunction to model. A lot of effort was spent trying to determine the correct semiconductor model. Refer to the pictures to see what we mean.
Accomplishments that we're proud of
We're physics and computer science students who managed to computationally model multi-dimensional perturbation-accounting single-electronic semiconductor wavefunctions in a concurrent programming language we were mostly unfamiliar with until yesterday, with confidence that it will be of use to industry. Concisely, we're impressed; we hope you are, too.
What we learned
Golang-compiled programs are very, very, very fast compared to Python.
What's next for Quantum Perturbation Simulation with Golang
We've only accounted for first order perturbations so far. This is where, for an electron in a given state, its eigenfunction is affected by those of every other state it can be in. Second order perturbations are also possible. What if the box side lengths weren't equal? What if you had multi-type doped semiconductors? How would your wavefunction differ if your semiconductor was cylindrical, or even spherical? Answering questions like these require more than the 24 hours we had to complete this project, but are answerable questions nonetheless intriguing and insightful.
Built With
- g3m
- golang
- tinygo
Log in or sign up for Devpost to join the conversation.