SELF-Fluids began as the "Spectral Element Libraries in Fortran (SELF)"; a set of data-structures and type-bound procedures born out my graduate studies in applied mathematics and geophysical fluid dynamics. The SELF portion of the code contains structures for working with Lagrange interpolating polynomials, equation parsers, variable storage on 3-D unstructured spectral element meshes, unstructured mesh connectivity, and isoparametric geometry. Together, these components allow one to compute perform numerical calculus operations, like divergence, gradient, and curl.
The "Fluids" component of "SELF-Fluids" pieces together the SELF for solving the compressible Navier-Stokes using a Discontinuous Galerkin Spectral Element Method for the spatial discretization. For the time integration, we use Williamson's 3rd Order Low Storage Runge-Kutta.
The end result of SELF-Fluids is a fluids software that can be compiled for a variety of platforms and with a variety of compilers. Currently, we are in the verification and validation stages of this code.
The video on the right shows a well studied setup, known as the "dam break" or "lock exchange". Cold and hot fluids are placed side-by-side and left to evolve. Gravity causes the cold, heavy fluid to sink and subduct underneath the hot, light fluid. Sufficient gradients in velocity result in Kelvin-Helmholtz instability and a turbulent forward cascade of energy ensues, ultimately mixing the fluid.
We have been setting up other well-studied scenarios to develop an understanding of the code's performance, scalability, and accuracy for a range of fluid applications. The breadth of applications include blood-flow, aerodynamics, shock tubes, planetary boundary layers, and topographically driven flows.
Within the development of the SELF-Fluids code, we uncovered a requirement to provide a containerized product that deploys and interfaces with resources with programmatic behavior. As we developed our internal cloud compute resources we have realized a need to enable orchestration management systems to inter-operate and scale a code base at will, on optimized resources, in order to leverage the capabilities of the system entirely. To streamline this process internally with SELF-Fluids, we set out to decouple, distribute and repackage the application in a way that would integrate well with burst scalable resources. Some of the most popular options that we considered were Docker and Singularity, which we ultimately use in conjunction in order to provide a seamless serverless deployment that is ready to scale per our application's needs rather than a generic resource assignment.
This progression in the structure of our code enables us to empower a Platform as a Service to operate a Software and provision Data as the end product to potential customers or end users. It allows an interested user base to basically demonstrate proof of concept without the complexity of administrating, managing, and executing a project internally. This use case could potentially find a successful result without leaving their on-premise workstation.
A critical part of this product roadmap is an interactive model that allows interactions through a standardized API which fits the input decks it has become familiar with. By growing our products exposure to applications that might benefit we learn more about the capabilities and progression of the code.
SPEC and SELF-fluids
In July of 2018. Spectral Element Libraries in Fortran for Fluids (SELF-Fluids) was selected to participate in the SPEC project as a candidate benchmark application for HPC platforms.
Since July, we have successfully passed Phase I of initial testing and have begun Phase II of our responsibilities to the project.
High Order Methods for Fluids
Dr. Joe Schoonover, CEO of Fluid Numerics, has spent a number of years developing and refining the Spectral Element Libraries in Fortran for Fluids (SELF-Fluids). SELF-Fluids originally started as a project to put together tools for implementing spectral element methods in 3-D. The focus has been primarily developing tools for Nodal Discontinuous Galerkin Methods in 3-D. The refinement of these tools is spurred through the development of a high-end Compressible Navier Stokes fluids solver ( sfluid ) that helps guide improvements in the underlying SELF API. Additionally, this development paradigm provides the open source community with a high order fluids solver that runs on multicore and Nvidia® GPU platforms.
The sfluid binary, which drives mesh generation, initial condition setup, and forward integration can be built for serial execution or with CUDA, OpenMP, MPI, MPI+CUDA, or MPI+OpenMP.