I recently started a project written in C++ called blitzdg. It’s a spin-off from my PhD work on discontinuous Galerkin (dg) methods and my goal is to do it the right way with MPI for distributed parallelism.

I’m learning a lot about the various academic C libraries out there like METIS for mesh partitioning and UMFPACK for sparse matrix solvers. I’m also learning about the power of C++ that is unleashed by boost which adds loads of functionality!

My industrial work experience has familiarized me with build automation tools and continuous integration (CI) platforms. blitzdg uses travis-ci for CI, and good old-fashioned GNU Make for its build. I’ve also integrated coveralls for tracking the percentage of code covered by the unit tests as the project matures.

I won’t go too deep into the project’s code right now, but as a starting point, here’s a call out to the UMFPACK C library for factorizing a compressed sparse matrix with pre-computed numeric factors LU.

// ...
cout << "Solving Ax = b.." << endl;
umfpack_di_solve (UMFPACK_A, Ap, Ai, Ax, x, b, Numeric, null, null);
cout << "Done." << endl;

Check out the project’s repoitory at https://github.com/dsteinmo/blitzdg/.