top of page
Galerkin Numerical Modeling Environment (GNuME)
​
​
Welcome to the GNuME page.  Let us describe what GNuME is all about (pronounced New Me).

 

 

What is GNuME
 

GNuME is a high-order element-based Galerkin (continuous Galerkin and discontinuous Galerkin) environment for solving various systems of nonlinear partial differential equations in two and three dimensions.  We call GNuME a modeling environment because it contains all of the infrastructure for solving a variety of systems of equations and also has the flexibility to allow the user to build solutions to new systems of equations.  Currently, GNuME only allows for Galerkin tensor-product basis functions (nodal representations only); however, a beta version is maintained by Daniel Abdi which extends GNuME to other types of grids (e.g., triangles and triangular prisms).  GNuME currently contains solvers for:

  1. the compressible Euler (and Navier-Stokes) equations in two and three dimensions,

  2. the incompressible Navier-Stokes equations in two and three dimensions, and

  3. the shallow water equations in two-dimensions both on the plane and on the sphere. 

There is no restriction on the type of domain that GNuME can use as long as you are able to define a tensor-product grid.

​

​

What can GNuME be used for
 

GNuME can be used to solve the compressible Navier-Stokes equations (using the NUMA component), the incompressible Navier-Stokes equations (using the NUMO component), or the shallow water equations (using the shallow water component).  You can also use GNuME to build new solvers for other systems of equations. GNuME allows the user to build equations based on specific operators. For example, gradient, curl, divergence, and Laplacians (even hyper-Laplacians of any order) can be constructed. In a separate ONR-funded projected, GNuME is being used to develop a prototype for a next-generation hydrostatic ocean model (led by FSU [click here] and Boise State [click here]).

 

What language is GNuME written in
 

GNuME is primarily written in modern Fortran using an object-oriented programming approach. Parts of GNuME are written in C and in another C-like language. The C and C-like routines are primarily used to interface with other libraries and to take advantage of GPUs, for example.

​

​

Which external libraries does GNuME require
 

GNuME requires LAPACK, NetCDF, P4est, Open MPI, and OCCA.

​

​

Who built GNuME
 

GNuME was designed and constructed by my group in the Department of Applied Mathematics at the Naval Postgraduate School.  Many of my National Research Council postdocs have contributed to the construction of GNuME in a variety of ways, although Daniel Abdi has been the main developer of this infrastructure. GNuME resulted from our group attempting to merge all of the different models created in my group. The net result was the GNuME framework.

​

​

Who funded GNuME
 

GNuME was funded by many agencies including the Office of Naval Research (Battlespace Environments and Computational Mathematics), the Air Force Office of Scientific Research (Computational Mathematics), the National Science Foundation (Computational Mathematics), and the Department of Energy (SCIDAC).

 

​

GNuME Grids
 

GNuME uses grids comprised of quadrilaterals (in 2D) and hexahedra (in 3D); however, preliminary work has been done to include triangles (in 2D) and triangular prisms (in 3D).  GNuME is able to use different polynomial orders in each spatial direction. Although GNuME has its own internal grid generator,  GNuME also includes the capability to use the P4est parallel grid generator. GNuME is also able to use adaptive mesh refinement (AMR) via P4est. GNuME uses P4est to handle all the mesh information including the graph partitioning.  P4est was chosen for this task because it has been shown to be scalable up to hundreds of thousands of CPU-only cores. GNuME currently is able to construct static and dynamic AMR in both 2D and 3D mode - both CG and DG methods are supported with this capability. In addition, GNuME is equipped with the capability to read VTK-type grid files produced by various grid generators such as GMSH.

​

 
GNuME HPC Performance
 

One of the main features of GNuME is that it has been designed to fully exploit current massively parallel architectures including CPU-only and CPU-GPU hybrid. GNuME uses MPI for CPU-only parallelization. In addition, GNuME uses the OCCA library for writing compute kernels in order to take advantage of accelerator technology (e.g., ARM, GPUs, Xeon Phis, etc.).

bottom of page