Projects

I work on lots of projects and write small pieces of code for personal use. Here is a partial list of them.

PhysBAM on GCC and Clang using CMake

The purpose of this project is to get the public version of PhysBAM available here to compile using the latest versions of GCC and clang. Minor changes were required for GCC support, clang required more changes due to the way it handles templated code. Additionally I wanted to provide support for CMake for users who prefer it over SCons.

With clang support, XCode can also be used

The github repository is available here

Selective Laser Sintering Layering Simulation

This project presents an effort to use physics based simulation techniques to model the Selective Laser Sintering (SLS) layering process. SLS is an additive manufacturing process that melts thin layers of extremely fine powder; we use powder with an average diameter of 58 microns. In the numerical model, each powder particle is a discrete object with 632,000 objects used for the SLS layering simulation. We first performed an experiment to measure the angle of repose for the polyamide 12 (PA 650) powder used in the SLS process. This measurement was used to determine the correct friction parameters and calibrate the numerical model. Once calibrated, initial simulations for the SLS layering process were performed to measure the changes in the surface profile of the powder. Future work will study the effect that different powders and roller speeds have on the surface roughness of a newly deposited powder layer along with determining the changes to density and porosity in the final part.

Videos:

SLS Layering Video SLS Angle Of Repose Video

Github Repository

Contributors: Hammad Mazhar, Endrina Forti, Jonas Bollmann

Prof. Tim Osswald, Prof. Dan Negrut

Krylov Subspace Methods for Rigid Bodies with Compliant Contact and Cohesion

Using particle based methods to simulate the behavior of compliant material is a complex task. When investigating the behavior of compliant terrain with hundreds of thousands of bodies in contact, millions of unknowns need to be determined. The size of problems solvable using traditional methods such as Jacobi or Gauss Seidel are severely limited due to the poor rate of convergence. This rate of convergence is typical when the equations of motion are posed as a differential variational inequality (DVI) problem that captures contact events between rigid bodies. The methods used for this framework rely on iterative krylov subspace methods such as Conjugate Gradient and Minimum Residual, which show good convergence for large problems. However, this class of iterative algorithms is not generally suitable for solving DVI problems for dynamics simulation. This document will show that these methods, while not specifically designed to solve rigid body dynamics problems, are very capable of doing so and converge very quickly.

Paper

Videos:

Walking Through Snow

Sticky Particles

Contributors: Hammad Mazhar

Chrono

An open source dynamics engine capable of simulating complex mechanisms.

Chrono-opengl

A legacy OpenGL visualizer for chrono.

Chrono-helper

A collection of helper functions for chrono designed to simplify generation of models.

Moderngl camera

A quaternion based camera for modern OpenGL.

.bhclassic to ascii

Convert a Houdini bhclassic point cloud to an ascii file.