After creating my truss code, I became increasingly interested in Numerical Analysis, particularly in solving Differential Equations. DEs kept appearing in my classes in various shapes and flavors, along with the reminder that 99% of the time in the real world, they were not human-solvable.
So how do we solve them?
A friend recommended that I check out the Friends of the Library Book Sale, a massive bi-annual event in Ithaca where tons of used books, ranging from novels to cookbooks to textbooks, are available for cheap.
A book I picked up was Finite Element Analysis: From Concepts to Applications, by David S. Burnett. The book outlines the theory and programming behind creating a 'simple' FEM program.
Armed with a textbook and some basic C++ experience, I set out to make my own FEM solver by the end of the summer.
My code solves problems of the following form in both 1-D and 2-D. This happens to apply to a wide variety of physical phenomena, from cable/membrane deflection to heat conduction.
On the left are two approximations to the 0th order Bessel Function, J_0(x).
The top uses linear elements, while the bottom uses quadratic elements.
Here are a few 2-D examples, solving Laplace's Equation with varying boundary conditions and mesh sizes:
The meshes were generated via gmsh and the plots by MATLAB. I plan to add elasticity to the program soon.