I was browsing https://code.nasa.gov/ and heard that there is an interesting story behind the development of TASC, the “Tool for Analysis of Surface Cracks” https://software.nasa.gov/software/MFS-33082-1. I’m generally interested in stories about the development of open source projects, and was curious if anyone had details, along with how this software might be useful for our community. Thanks!

# What is the Tool for Analysis of Surface Cracks (TASC) from NASA?

So I’m late with my story. In my immediate academic lineage, the primary author of TASC is PhD student #1, and I’m PhD student #3. Its origins are somewhat given in Allen and Wells: Interpolation methodology for elastic–plastic *J*-integral solutions for surface cracked plates in tension.

The basic situation is that determining when cracks will grow at all (or when the cracked structure will just fracture entirely) gets more intractable as the crack geometry, the applied stresses, and the material properties get more complex. Two-dimensional crack geometries (edge cuts, center slits) are easier than three-dimensional geometries (surface cracks or corner cracks, as if you’d stuck your thumbnail into a block of clay); constant states of tension are easier than bending (where part of the crack is in tension, and other parts are in compression); brittle materials are easier than ones that can withstand substantial permanent deformation under increasing stress; etc.

So the applicable ASTM standard (press release here) encompasses semi-elliptical surface cracks in tension or in bending, and for flat plates where the plate behavior is brittle (purely linear elastic behavior) or where substantial deformation can occur under increasing stress (elastic-plastic behavior).

For linear elastic materials, there are handbook solutions for certain crack behavior derived from curve fits for a wide range of semi-elliptical surface crack shapes and sizes, for both tension and bending. For elastic-plastic materials, there are no such curve fits. The default way to calculate this crack behavior would be to make a purpose-built finite element model of the cracked plate for any arbitrary geometry and material. These models would generally have to be recalculated from scratch if the geometry or material changed.

So PhD student #1 worked up a method to make a database of numerical solutions for the same range of surface crack geometry (20 normalized shapes and sizes) and a wide range of elastic-plastic materials (30 normalized materials) for plates in uniform tension. That’s 600 solutions in the solution space, and solutions for intermediate values can be interpolated among the 600 solutions as needed. All of this is detailed in the first link above.

As PhD student #1 is a regular engineer, and not a professional software developer, he wrote up an interpolation code and GUI in MATLAB, and that’s TASC. He had prior experience with MATLAB, could avoid reinventing wheels, and there are ways to make standalone executables in MATLAB that don’t require a MATLAB installation to run. A different developer might have picked numpy, scipy, and some other Python GUI library.

PhD student #3 (me) had a bit more software development experience and a few mental quirks that led to a **lot** of MATLAB code cleanup and a database of 600 finite element models for surface cracks in bending. That database covers the same range of crack geometry and materials as the original TASC tension database, and the models were mostly programmatically generated and evaluated. That development is generally documented in chapters 3-5 of my dissertation (still have to get all the Python automation code uploaded this summer). The still-in-testing TASC code for both tension and bending is in one of my Github repositories.