An interactive simulator for the Schrodinger Equation. Use the mouse to draw on the domain and watch as the simulation propagates according to the laws of quantum mechanics.
An interactive simulator for the Schrodinger Equation. Use the mouse to draw on the domain and watch as the simulation propagates according to the laws of quantum mechanics.
I finished building Quantum Echoes!
This project uses the Finite Difference Method and Leapfrog integration, implemented in compute shaders, to numerically solve the Schrodinger Equation: the equation that describes the propogation of a quantum wave function over time.
This was my first full project incorporating both Rust and Vulkan (I usually use OpenGL and C++). It was fun seeing how the two toolsets compared as I progressed through development.
I wrote a quick README.md and compiled releases for Linux and Windows. I also moved the velocity vector indicator to be located next to the mouse to make it easier to define particles’ directions.
Log in to leave a comment
I rearranged the UI side panel, added some guidance text, implemented a boundary condition dropdown, allowed particles’ initial direction of velocity to be set by the scroll wheel, and made a visibility layer that shows amplitude alongside phase resulting in RAINBOW.
Log in to leave a comment
I got Gaussian Wave Packets to have initial momentum, so now I can simulate Thomas Young’s double slit experiment! I am planning on sprucing up the UI so that users can define the momentum vector of each wave packet. I also want to add the option to select from a variety of preset potential energy grids and boundary conditions.
Log in to leave a comment
I implemented different layers so that potential energy can be defined over the simulation space. The dark blue regions in the picture below have higher potential energy and almost act as boundaries for the wave function in this case.
Log in to leave a comment
I implemented Schrodinger’s Equation in a compute shader :). From here, I want to add functionality to define the potential energy function and boundaries to further manipulate the wave function.
Log in to leave a comment
I implemented the brush tool by sending data to the GPU using Vulkan push constants. I then wrote a simple wave equation solver in the compute shader for testing. The next step will be to actually implement the Schrodinger Equation and flesh out the side panel UI.
Log in to leave a comment
I spent some time just cleaning up code and getting acquainted with Egui by adding some UI elements. I also made it so that the side panel doesn’t overlap the viewport (the blue-green gradient part in the image below). Hopefully next devlog I’ll get the brush tool working.
Log in to leave a comment
I got a quad rendered to the screen that displays the output of a compute shader. I am new to both Vulkan and Rust so it’s taking me a while to figure everything out. On the next devlog, I hope to get a simple brush tool working along with finding a good way to restructure all of my preexisting code.
Log in to leave a comment