Students interested in any of the following projects are encouraged to contact me.
Mesh Manipulation using DMPlex
Implementation of a novel algorithm for cutting a hexahedral mesh into tetrahedrons.
Development of a transformation table for mesh interpolation, meaning the automatic creation of edges and faces in a cell-vertex mesh.
Implementation of 3D SBR refinement as a transformation table.
Development of a projection algorithm for adaptively refined, nested meshes, such as those resulting from SBR refinement.
Automating Performance Modeling in PETSc
The Roofline Model for bandwidth-constrained algorithms could be automatically applied given a measurement of memory bandwidth to go along with the flop measurements already present. This project would augment the PETSc logging system with a PetscLogBytes to estimate bytes transferred, and thus allow an estimate of the arithmetic intensity of an operation. This paper shows an application of arithmetic intensity to performance modeling for complex PDE solvers.
We would also like to develop TAS modeling for time-dependent problems.
A related project would be to use performance counters, rather than user specified numbers, to count flops and bytes transferred. However, chip manufacturers are making this strategy harder rather than easier, so it does not seem like the best avenue at present.
Accurate Performance Measures for Mechanics Simulation
Traditional performance measures, such as flop rates or runtime, are not wholly appropriate for understanding the performance of approximations of continuum mechanics problems since they ignore the accuracy of the solution. This can become a major issue when trying to understand and plan for the cost of simulations in the aerospace, chemical, and construction industries. We have recently develop a new approach to performance modeling. The student would apply this approach to complex multiphysics problems, in aerospace and geophysical codes.
We would also like to verify higher order temporal convergence of earthquake simulation using PyLith.
Merge PETSc and Firedrake Discretizations Support
The main job here is to allow Firedrake and PETSc to agree on the definition of a field. This would enable mesh coordinates to be understood by Firedrake, enabling us to remove special support for mesh processing and multigrid. It would allow Firedrake and PETSc to share field dsicretizations, at least at some level. The simplest project here is to standardize permutations between different layout strategies. When PETSc and Firdrake agree on the definition, say for Lagrange elements, then this would allow sharing.
Modeling of 3D Printing
Scalable Graph Partitioning
By using a randomized geometric scheme, which produces provably good partitions, combined with a multilevel method, it is possible to produce a graph partitioner which matches the quality of the best libraries today (ParMetis, PT-Scotch), but is much more scalable. This work principally applies to graphs of bounded degree, as we find in meshing for simulation algorithms such as algebraic multigrid. A proof of concept has been shown, but no software exists for this. An efficient implementation would make a large impact in the scientific computing community.
A more accuracte Polarizable Continuum Model (PCM)
The Psi4 quantum chemistry code is supported by the recently funded Molecular Sciences Software Institute, the only NSF Software Institute. It has an interface to the PCMSolver code for the Polarizable Continuum Model (PCM). We would like to create another interface, analogous to that for PCMSolver, which uses the PetBEM code which is capable of simulating PCM. Such as interface would allow Psi4 to experiment with the more accurate SLIC formulation of PCM.
One Week Projects
- Make PetscQuadratureSetData() handle PetscCopyMode