Dr. Keith J. Roberts
Ongoing Work
Multiscale Coastal Ocean Mesh Generation
I led and continue the development of OceanMesh2D, a software library to semi-automatically build unstructured meshes for numerical simulation of regional and global coastal ocean domains. The primary focus is to enable users to quickly build highly multiscale meshes that are used with FEM models like ADCIRC, SCHISM, MIKE and TELEMAC to predict wind- and wave- driven coastal flooding. The meshing software supports end-to-end workflows (e.g., from DEMS and (un)simplified ESRI Shapefiles to numerical simulation-ready models). Workflows to build these models are embedded in short scripts within the MATLAB programming language and a number of MATLAB-based utilities are provided for developing ADCIRC models.
A Python version of this code is being developed here oceanmesh and as a plugin in community version of SMS.
Meshless Methods for Fluid Flows
Ongoing work with meshless methods for solving Fully Nonlinear Potential Flow (FNPF) and Computational Fluid Dynamics (CFD) problems focuses on leveraging semi-analytical solutions to handle complex free-surface boundary conditions efficiently. By avoiding fixed spatial discretization and using boundary element methods, these approaches offer flexibility in domains with evolving geometries, such as breaking waves or moving bodies.
Tropical Cyclones
Cyclone-viewer is an open-source JavaScript/Electron tool for visualizing and editing tropical cyclone tracks using data from NOAA’s NHC “A-deck” and “B-deck.” It supports both standalone execution within a web browser and as a packaged desktop application via Electron, with full functionality including CSV load/export, unit toggling, scale selection, parameter adjustment (e.g., wind speed, central pressure, various radii), keyboard shortcuts for efficient navigation, and storm structure editing . cyclone_viewer
Mesh Generation for Seismology
SeismicMesh is a Python package for simplex mesh generation in two or three dimensions. As an implementation of DistMesh, it produces high-geometric quality meshes at the expense of speed. For increased efficiency, the core package is written in C++, works in parallel, and uses the Computational Geometry Algorithms Library. SeismicMesh can also produce mesh-density functions from seismological data to be used in the mesh generator.
Full Waveform Inversion with Finite Elements
In this research, we solve the forward scalar wave equation with finite element methods on unstructured, variably resolved meshes. We use the discrete adjoint method to invert for material properties such as S- and P-wavespeeds. The development of these codes and the entire inversion process use the Firedrake automated finite element package.