This website contains information on my work as a PhD student in Computational Applied Mathematics at the University of Texas at Austin. To find out more information on what I am up to now check out: www.michael-harmon.com

My research focused on the intersection of mathematical analysis, high performance computing and engineering in renewable energy. My worked involved developing high performance, multi-threaded finite element based software in C++ for chemists to numerically model photoelectrochemical solar cells and optimize the cell design. The bulk of my time was spent designing, implementing and analyzing different numerical algorithms to speed up simulation time. In the end I was able to produce algorithms that resulted in a reduction in runtime by a factor of 24. The source code I developed for simulations in one and two dimensions can be found below.

As a student I worked extensively with the deal.ii library, an open source finite element library written in C++. In addition to working with the library I was able to contribute to it as well. I mostly improved their library's distributed (MPI) direct solver to be more efficient. I also wrote example code on how to implement local discontinuous Galerkin methods in a distributed computing framework. Links to the source code for these projects, as well as others I completed using the deal.ii finite element library, can be found below.

M. Harmon, I. M. Gamba and K. Ren

To be published in Journal of Computational Physics

This C++ code solves the coupled drift-diffusion-Poisson equations that model a photoelectrochemical solar cell in 2D using the deal.ii finite element library. It will automatically run in parallel using the Thread Building Blocks for multithreading. The main challenges in constructing numerical algorithms that produces reliable simulations of PECs are due to the highly nonlinear nature of the system and the different time scales of the semiconductor and electrolyte charge carrier. Furthermore, regions of stiffness caused by boundary layer formation where sharp transitions in densities and electric potential occur near the interface and pose severe constraints on the choice of discretization strategy in order to maintain numerical stability. To overcome these challenges I used a mixed finite element method to solve the Poisson equation and local discontinuous Galerkin method along with implicit-explicit time stepping method for the drift-diffusion equations.

The code is throughly tested and extensively documented using doxygen automatic documentation generation. The documentation can be found here: http://michael-harmon.com/PECS/

This code is designed to numerically solve the Poisson equation using the mixed finite element method. The code runs in parallel using multithreading through the Intel Thread Building Blocks.

Note: This project improves upon step-20 in the deal.ii tutorial by:

Adding Neumann boundary conditions.

Allowing for multithreading to reduce runtimes.

This code is designed to numerically solve the steady-state advection equation using the discontinuous Galerkin (DG) method.

Note: This is refactored code from the step-30 in the deal.ii tutorial. The capabilities of anisotropic mesh refinement has been removed to more clearly show how to implement DG methods using the deal.ii library.

Honors Vector Calculus

Fall 2015

University of Texas at Austin

Linear Algebra and Honors Linear Algebra

Fall 2014 and Spring 2015

University of Texas at Austin

Scientific Computing

Fall 2014

The University of Texas at Austin

Differential Equations

Fall 2011, Fall 2013, Spring and Summer 2014

The University of Texas at Austin

Calculus 1, 2, and 3

Fall 2012, Fall 2008, Summer 2013

The University of Texas at Austin

Basic Statistics

Spring 2011

Fisher College

College Algebra

Fall 2010, Spring 2011

Fisher College