SOMAR stands for The Stratified Ocean Model with Adaptive Refinement. It is free software using the LGPL license and provided jointly by Thomas Jefferson University's College of Humanities and Sciences and Arizona State University's School of Engineering of Matter, Transport, and Energy.
-
Nonhydrostatic made fast - Blending the leptic method with semicoarsened multigrid, SOMAR solves the Boussinesq Navier-Stokes equations without the hydrostatic approximation in order to properly model the internal waves and tides that are ubiquitous in the ocean.
-
Anisotropic adaptive mesh refinement (AMR) - A coarse underlying grid along with on-the-fly local refinement of transient features eliminates unnecessary computation in most of the domain. Refinement can occur in some or all directions by varying amounts. Also, refinement occurs in both space and time to provide a drastic speedup of computation and reduction of memory usage.
-
Separation of background density and its deviation - By splitting the density field into a vertical background stratification and a deviation, we relieve the Poisson solver of computing the associated hydrostatic component of the pressure. This treatment, already implemented in some regional models including MITgcm, also prevents diffusion of oceanic features that are maintained by unmodeled phenomena.
-
Large Eddy Simulation (LES) - At local turbulent hotspots, AMR helps resolve the bulk of the energy cascade and LES parameterizes the rest. This two-way feedback between models uses the subgrid closure scheme of Ducros, et. al.
-
Familiar methods - Unlike SOMAR v1.0, this newer version uses methods familiar to physical oceanographers such as Arakawa-C grids and Runge-Kutta time integration. We also avoid upwinding by using simple, centered finite differences for the advection terms.
-
Error control - Embedded RK schemes are supported. Users can limit the velocity error using a variety of methods (local, PI, or PID controllers). From the user's perspective, all that is needed is an error tolerance specified in a text-based input file and SOMAR will take care of the rest.
-
Python post-processing - Analyzing SOMAR's output can be accomplished in VisIt, ParaView, or with simple Python scripts. Python can also be used to create initial conditions, create custom force functions, and process data on-the-fly.
-
Highly parallelizable - SOMAR uses MPI and is build on the Chombo framework.
- Immersed boundary method [in progress] - Work is currently underway to incorporate immersed boundaries into SOMAR. This will allow us to incorporate complex boundaries provided by digital elevation models. This effort is largely complete and will become available once its associated manuscript is published.
- Free surface [proposed] - This would extend SOMAR's abilities to resolve fast-moving gravity waves at the upper boundary.
Up-to-date documentation is available at https://somar.readthedocs.io.