Hart and his advisor, Prof. Julian Rimoli, co-authored a paper on the new code that was published in the journal Computer Methods in Applied Mechanics and Engineering

an example of a Mars rock. Its technical name is picritic basalt and it was characterized by the Spirit rover inside Gusev carter.

Mars Rocks. This illustration depicts picritic basalt, a rock on Mars. It was generated by MicroStructPy using data collected by the Spirit rover inside Gusev crater.

MicroStructPy code developer Kenneth A. Kip Hart, doctoral student at Georgia Tech's School of Aerospace Engineering
Kenneth A. "Kip" Hart

On the way to figuring out how to land a vehicle on Mars, School of Aerospace Engineering doctoral student Kenneth A. "Kip" Hart tackled a simulation problem that's landed him in the pages of the journal Computer Methods in Applied Mechanics and Engineering (CMAME).

His work also caught the attention of NASA, which in February, officially accepted Hart's software package, MicroStructPy, for inclusion in its software repository, an open-source library that is used by scientists around the world.

"It is not uncommon for a doctoral student to write code for a particular project and, after the project's done, to scrap it. That's not what Kip did, " said Hart's dissertation advisor and co-author Prof. Julian J. Rimoli, who also directs the Computational Solid Mechanics Lab at Georgia Tech.

"This is the first time in my career that I have seen NASA accept a student's code for their repository. The documentation and packaging made this an ideal open-source code. It's not just being used by my lab; it's being used by other faculty in the AE School. And the paper he just published about it? It's in a top-rated journal, very well-respected."

Prof. Julian Rimoli, co-author of "Generation of Statisitically Representative Microstructures with Direct Grain Geometry Control"
Prof. Julian J. Rimoli

"Generation of Statistically Representative Microstructures with Direct Grain Geometry Control" was officially published in CMAME on July 11, but MicoStructPy has been available to the public as an open-source code since September of 2019. In simple terms, the code allows researchers to input compositional data about different materials and output mathematical models that will demonstrate the functional qualities of materials comprised of dissimilar components.

Solving the Mars Rock Problem

Hart originally developed MicroStructPy to solve what he refers to as his "Mars rock problem," a component of his doctoral dissertation. That research sought to simulate the landing of a large rocket on the red planet. Hart immediately identified a potential problem: the extremely hot gases expelled by the rocket could turn the bedrock underlying the site into a sort of "geological shrapnel pit."

"We've seen something similar in Europe where they are drilling deep into the Earth to access thermal energy. If we had this problem with the hardest rock on our planet, granite, we would have to wonder what would happen on Mars," he said. "Nature didn't choose Mars to be our landing site, so if we want to land there, we needed to build out scenarios that anticipate everything."

Thanks to the Mars rovers, Hart had access to data on the mineral composition of Mars, but that didn't tell him enough about their properties. More information would be needed if he was going to accurately simulate the behavior of those materials under the projected landing conditions. MicroStructPy can do just that.

"One of the wonderful use cases for this code is that I'm going to get an exact match in my simulations with the rocks on Mars. We can reproduce elongated grains that are found in the Martian soil. They are stretched by natural forces and have very different properties," he said.

"But there's no reason why other scientists can't input different data to find out about other materials."

The banner image is the image that shows up when someone shares https://docs.microstructpy.org on social media.

The MicroStructPy Logo

This image shows up when https://docs.microstructpy.org is shared on social media.

Optimizing a Happy Accident

Hart had already interned with NASA when he found himself seated in the NASA Technology Transfer Office in of the Johnson Space Center in February of 2018. While his internship focused on solving a Mars mission problem, he was surrounded by men and women whose main goal was to promote the public use of NASA-developed innovations.

"What a happy accident that was, " says Hart. "They were exactly the people who recognized the usefulness of this code and wanted to help me once they saw it. They helped me all along the way."

It took Hart about 15 months of research, testing, and Python programming to develop about 90 percent of what is now known as MicroStructPy. A lot of his work involved noting the shortcomings of code that was already out there. 

"I made a list of pro's and con's that each package had, and then applied it to mine, so I could make sure I had more pro's on my list," he said. "I wanted my package to stand out among the competition."

The development might have gone a little quicker, he'll acknowledge, if he hadn't chosen to create such a comprehensive software package. But it was precisely his attention to the packaging and documentation that made it a perfect open-source project.

"I developed a step-by-step process of going from a material's description to the development of a mesh representation. There are five steps. I documented it for my own sake at first, because, with more than 1000 lines of code for each step, it would have been easy to get lost when I had to fix an error.  I developed tutorials for everything and I packaged it so it could be downloaded onto other computers. Eventually, I needed to run it 60,000 times, so it made sense to use the Computational Solid Mechanics Lab supercomputer."

More than 6K Lines of Source Code Later

The package that was accepted by NASA in February included more than 160 pages of documentation and 6,073 lines of code. Hosted on its own website, MicroStructPy has attracted almost 6,000 page views from 554 unique users.

If those numbers do not rival Kim Kardashian's Instagram account, Hart is not worried. In addition to NASA's official seal of approval, his software package has garnered high praise from a more demanding public. Engineers.

"To other people, it might be misleading, because fan mail from engineers will generally come in as an issue, something they tweaked or added to," he said.

"That's okay because I wrote [MicroStructPy] so that all the functions in the workflow are exposed. That allows people to write a custom script to make it work better for their purpose. And that's what this Ph.D. student from Louisiana State did. He wrote to tell me he had added some script on the outside so that the output would be in a different file format. Then he said 'thank you for writing a good package.'"

Kenneth A. Hart will officially defend his doctoral work sometime this fall. After that, he will join the staff of Blue Origin.

A description of  the steps in the process that MicroStructPy uses  to create a mesh from a description of the material.How It Works. This schematic walks users through the five-step process used by MicroStructPy to deliver a mesh using a description of the material. The bottom part shows that the code will evaluate its performance and tell users how closely the description of the mesh matches the initial description of the material.