Spacetime Discontinuous Galerkin Finite Element Method (SDGFEM)

SDGFEM is a highly modular and object oriented finite element code that integrates meshing, solution, post-processing, and visualization for the SDG method in both serial and parallel modes. The software is developed through highly collaborative projects at the University of Illinois at Urbana-Champaign and includes several hundred thousand lines of code in C++.  Two of the main modules of the software are:

  • Meshing: In SDG method, the meshing and solution are interleaved. The meshing module, TentPitcher, fills out the spacetime analysis domain by building patches of simplicial cells that are in turn solved locally in the physics module. TentPitcher supports all spatial dimensions from 1D to 3D. SDG meshing is quite complicated due to meshing in one dimension higher and satisfying constraints that enable the local solution strategy.
  • Physics: A novel software design streamlines the implementation of multiphysics problems with both bulk and interfacial coupling. Plus, all spatial dimensions from 0 to 3 are supported and can be coupled in a unified manner. Physics is linked to these modules:
    • Symbolic translator: The finite element weighted residual and error terms are input in text files and are directly expanded and translated to computer code during the simulation. This greatly simplifies the development of new physics.
    • zExtrude: This module extrudes the 1D and 2D x time meshes that TentPitcher generates in the thickness direction to develop very general and efficient solvers for bar and plate problems. zExtrude can model a wild range of geometries as the number of layers and their thicknesses can change gradually or abruptly.

Interleaved meshing and solution strategy: The solution is advanced in time by the generation and subsequent physics solution of small patches of simplices in spacetime.

Interleaved meshing and solution strategy: The solution is advanced in time by the generation and subsequent physics solution of small patches of simplices in spacetime.

TentPitcher in 2D x Time: The partials of initial 2D triangulation and spacetime mesh.

TentPitcher in 2D  \times Time: The partials of initial 2D triangulation and spacetime mesh.

Dynamic Crack Analysis Tool (DynaCAT)

DynaCAT is a Matlab code to extract, compute, and analyze various fracture parameters for propagations along a single line (straight or curved). Our studies show that the behavior of a particular fracture model for propagations along a straight line greatly influences its response for more general settings, implying the usability and importance of DynaCAT. Some of the extracted parameters are:

  • Crack tip position and velocity; fracture process zone end points and size; Quasi-singular core and size.
  • Energy release rate; energy dissipation; work of separation.
  • Various mechanical fields such as stress, velocity, displacement, and separation.

Based on applicability, these parameters can be computed for LEFM and various cohesive and interfacial damage models. DynaCAT is highly modular in normalizing and comparing multitude of simulations through simple config files.


Sample plot: Quasi-singular velocity behavior where the maximum material velocity,  v_m → ∞ as the crack speed normalized by the Rayleigh speed, \dot{a}^\prime 1^{-1}. DynaCAT, calculated the crack tip position, its speed, quasi-singular velocity core and v_m , and the normalizations and other manipulations of the displayed data. Here,  \tilde{v} is the intrinsic cohesive velocity scale. The results for various nondimensional load ratios, \sigma^\prime, closely match our theoretical estimate.

Arbitrary Crack Path (ArbCP) tools

Unconstrained crack propagation can produce very complicated fracture patterns. ArbCP is a very helpful tool to analyze such patterns. This Matlab code is comprised of four modules. First module focuses on the connectivity of crack segments and sheds light on how microcracks are formed, crack bifurcates, and crack path oscillates. It also computes local fracture parameters such as instantaneous crack speeds. Second module provides a detailed description of mechanical fields on the fracture surface behind the crack tip and its surrounding in the bulk. This is particularly helpful in examining various crack propagation criteria. The last two modules provide distinct approaches to display the overall crack propagation pattern.

Crack path displayed on the discretization front.

Crack path displayed on the discretization front.

Data Processing on Simplices (DPSimplex)

In many applications functions are associated with simplices or objects that can be easily broken down to simplices. DPSimplex is a C++ framework for general manipulation of simplices. A first group of operations on a simplex return a set of simplices. Examples include accessing generalized facets, subdivision, and zero/extrema set of functions. The subdivision scheme and zero/extrema finder are adaptive and ensure the desired accuracy within each subdivided simplex and zero/extrema set, respectively. The second group performs a particular task on a simplex such as I/O operations and function projection, integration, and evaluation. DPSimplex is very flexible and permits any arbitrary combination and succession of these operations using novel data structures. Some of its applications include extraction of solutions from unstructured meshes with tunable accuracy for various visualization forms and the determination of solution features such as moving boundaries, cracks surfaces, and crack tips.


SimpMesh is a toolkit in C++ for the generation, translation, and modification of simplicial meshes. Aside from the generation of certain meshes in 1D-3D, it handles the I/O and translation of meshes across various formats. Some of the mesh manipulations include simplex duplication, nodal perturbation and local modifications to the geometry and flags of the mesh. Insertion of lower dimensional elements such as contact and fracture surfaces in the mesh is one of the applications of simplex duplication. Nodal perturbation can alleviate the adverse effects that structured grids can have on the solution, especially in problems with evolving boundaries such as crack propagation.



There are many instances that we want to investigate the influence of certain parameters and options or compare different computational methods or in general arbitrary data sets. datComp is a toolkit in C++ and Matlab that streamlines the generation, analysis, and visual display of such data sets. DatComp:Gen works with computational tools such as SDGFEM to automatically generate and simulate a series of runs obtained by the manipulation of a base configuration through user-specified parameter sets and ranges. datComp:Vis analyzes and displays the data generated by dataComp:Gen or by other means; the user can specify the details of what quantities are displayed and how they are manipulated, which parameters are used and how they are compared within a plot, and various other options that control the plot type and visual settings through simple configuration files.