The default location for my personal research that's more or less ready for outside consumption. Right now this consists of four main topics, each updated manually as sections are completed. I've chosen to put this on GitHub as while it's a terrible place to demonstrate the math behind all of this stuff, it's a great place to share code; and, some of what I've done in the code is relevant beyond my personal interests. Where possible or where I was interested enough to type it up, I've included with each topic a longer form paper describing the math / physics / theory of what's been put in code. Hopefully some of it makes sense!
The topics so far include:
- Non-Relativistic Quantum Mechanics,
- Perfectly Matched Layer for a Standard Wave Equation,
- Quantum Eigenvectors Arising from Discretized Quantum Mechanics,
- Fundamental Solutions for a Standard Wave Equation.
Those aren't particularly descriptive titles in and of themselves, but--except for the first--they all have longer papers (in .pdf) in each folder describing my overall thought process. I have no clue if any of it's correct theoretically, but it works and I got the results that the larger theory predicted so... progress!
Over the past few years I've been slowly poking away at figuring out how time-domain versions of non-relatistic quantum mechanics (i.e. Schrodinger's Equation, Pauli's Equation, Electromagnetic Potential Wave Equations) can be shoved into a computer, and to see if we can get some useful results out of it. This is part of a larger thesis--very much a work in progress--but the completed code I figure I'd upload somewhere just because.
There should be a separate README.md in this folder describing how things can be used, but this contains a few things:
- General classes that integrate Schrodinger and Pauli's equations in one or two dimensions via a specific, implicit, finite difference method (Thomas' or the tri-diagonal matrix algorithm);
- A couple of test files specific to one or two dimensional potentials; the one-dimensional ones are more complete,
- A whole bunch of standalone electromagnetic scalar potentials, magnetic fields, helper functions, and
- A bunch of common functions that are useful.
Oh, for 2D problems, I've written a mostly optimized version of a tdma solver in C found in tdma.c
, deep in /+CommonFunctions/C Source Files/
. You'll probably have to compile this one your own and place in the /+CommonFunctions/
folder instead of whatever's in there as tdma.mexw64
. To compile it, please use mex -R2018a 'CFLAGS=-mavx' tdma.c
(Windows only).
How do you add decent absorbing boundary conditions so that you can pretend you're simulating real electromagnetic phenomenon except inside of a computer? How do you do this when you're not solving Maxwell's equations, but wave equations for potentials and not fields? Well look no further, 'cause some ongoing work is being done all up in this folder. So far this includes a, "standard," analytic continuation of spatial coordinates into the complex domain, and then discretized and solved using a few different techniques:
- A fully explicit finite difference method using first order equations via an auxiliary differential equation,
- A fully explicit finite difference method using second order equations,
- A semi-implicit finite difference method using first order equations via an auxiliary differential equation.
The nice thing about these methods is that the exact same files should work exactly the same in 3D (albeit quite slow and memory intensive) because MATLAB is rad like that. Since my larger research requires absolute stability, hopefully a fully implicit method will appear soon. This requires a completely different approach to thinking about integrating the wave equation so there will be a quick writeup for it as well.
This is a terrible name for a folder but I don't want to change it. As part of my larger work discretizing various partial differential equations, I was looking at the validity of various methods for numerical integration when the underlying solutions are necessarily complex-valued. Turns out that the underlying eigenvectors of the system end up being the various modes or stationary states of the Hamiltonian that you're simulating. It's kinda neat.
This is also a terrible name for a folder. You'll have to read through the whole paper for this to make sense, but I was just poking around with various distributions convolved with the fundamental solution for the wave equation in 3D. It turns out that there are a bunch of inferences you can make by staring at these things move around that help you justify a whole bunch of things we take for granted in electrostatics without being allowed to ask, "why is it like this?"