An overview of how to use graphs to implement forward and reverse mode differentiation.

Algorithmic Differentiation on Graphs

An overview of how to use graphs to implement forward and reverse mode differentiation.

Packing Conductive Particles with DEM

Simulation of packing spherical conductive particles and calculating effective resistance.

Smoothed Constructive Solid Geometry Operations

On combining primitive shapes with smoothed boolean operations, and how to mitigate some of the problems that arise.

Introduction to SIMD Programming

Slides from a presentation describing how to improve CPU performance through vectorization

Making Meshes from Level Set Functions

An overview of the "universal mesh" algorithm for creating quality simplex meshes of implicitly-defined regions.

Triply-Periodic Surfaces

A reference containing information about periodic surfaces suitable for infill structure in 3D printed parts.

Stability of constrained Newmark-beta

Different methods of enforcing simple constraints on ODEs can impose additional stability criteria.

Multigrid on Unstructured Meshes

This document investigates the effectiveness of multigrid when used on a nonconforming hierarchy of unstructured meshes.

Mesh Coarsening

An algorithm for coarsening simplex meshes, to enable multigrid methods with unstructured meshes.

Mesh Vertex Relaxation

A simple iterative procedure for improving element quality of finite element meshes.

Accelerating Mathematica with C++ libraries

How to speed up Mathematica notebooks by calling through to functions in C++ libraries

Visual Proof: Sum of Squares

Gauss is said to have found an elegant visual proof for summing integers. Does a similar idea work for summing perfect squares?

Coffee Cup Vibrations

What sound does a coffee mug make when you tap it with a spoon? In this post, we write a small 2D finite element code in Mathematica to simulate a coffee cup vibrating.

Improving MFEM's CUDA Kernel Implementation

This document demonstrates how in some cases, eliminating template parameters can significantly reduce compile time and binary size, while retaining performance parity.

Setting up a Local Compiler Explorer

Compiler Explorer is a great tool for prototyping and understanding code snippets, and running a local instance can make it even more flexible and responsive.

CMake `ExternalData` Example

CMake's ExternalData provides a way for projects to download large data files just-in-time, rather than putting them directly in a git repo or project tarball. This feature doesn't seem to be used very often, so this is an example project showing how to set it up.

Ball Simulation (Part 1)

Basic rigid body physics for accurate predictions of the ball’s trajectory.

Ball Simulation (Part 2)

Improve ball simulation by using the collision meshes in Rocket League.

Ball Simulation (Part 3)

A predictive model for the ball's response when hit by a car.

Car Simulation: Aerial Control

How to simulate the car's response to user inputs while in the air.

Inverse Car Simulation: Aerial Control

How to figure out the user's inputs from a car's aerial trajectory.

Car Simulation: Ground Control

How to simulate the car's response to user inputs while on the ground.

Path Analysis

How to analyze paths to determine shortest arrival time, possible arrival speeds, and boost usage.

Aerial Hits

How to make your Rocket League bot reliably hit aerials.