Published March 1, 2023 | Version v1
Software Open

A snippet from neXtSIM_DG : next generation sea-ice model with DG

  • 1. Otto-von-Guericke Universität Magdeburg, Magdeburg, Germany
  • 2. Université Grenoble Alpes, Institut des sciences de la Terre, Grenoble

Description

A snippet from neXtSIM_DG : next generation sea-ice model with DG

This archive contains the software described and required to reproduce the numerical results of the manuscript "The neXtSIM-DG dynamical core: A Framework for Higher-order Finite Element Sea Ice Modeling" by Thomas RichterVéronique DansereauChristian Lessig and Piotr Minakowski.

We strongly recommend that you access nextsim-DG's GitHub page https://github.com/nextsimdg/nextsimdg instead of this archive for the latest version of the code. The software is still under active development and this excerpt contains only a very small part of it. In the present form, it is provided for self-contained reproducibility.

neXtSIM-DG is created as part of SASIP: The Scale-Aware Sea Ice Project which is funded by Schmidt Futures, a philanthropic initiative founded by Eric and Wendy Schmidt that bets early on exceptional people making the world better, particularly through innovative breakthroughs in science and technology. It is a project of Schmidt Futures' Virtual Earth System Research Institute (VESRI).

Installation

The main requirements for compiling the neXtSIM_DG and the test cases from the manuscript are

  • the cmake build environment
  • a C++17 compiler. We made best experience with gcc (but clang also works)
  • the template linear algebra library Eigen version 3.4 or newer

We assume that .../nextsim/ is the path to the directory where this readme is located. To configure and compile neXtSIM_DG:

  1. create a build directory mkdir BUILD
  2. In BUILD configure neXtSIM_DG with cmake .../nextsim. You can adjust the settings by issuing ccmake . within the build directory. In particular, consider to set CMAKE_BUILD_TYPE to Release for optimal performance and turning WITH_THREADS to ON for OpenMP multithreading support.
  3. In BUILD compile neXtSIM_DG by calling make.

The executables for running the numerical tests will all be located within the build directory at  BUILD/dynamics/tests.

Detailed installation instructions for the complete neXtSIM_DG project can be found here.

Running the test cases

The test cases do not depend on any external data and can be started from any working directory.

Advection Testcase I

This reproduces Testcase I specified in Section 5.1.1 of the manuscript. A smooth initial condition is advected in a rotational velocity field using discontinuous Galerkin DG(0), DG(1) and DG(2) discretizations on sequences of refined meshes.

BUILD/dynamics/tests/example1-sasipmesh

The output shows the number of DG degrees of freedom (1 for DG(0), 3 for DG(1) and 6 for DG(2)), the number of time steps and the number of grid cells in each grid direction. This is followed by the error in mass conservation as well as the discretization error and the discretization error stored in the program. The outputs correspond to Figure 4 of the manuscript (see also the documentation).

vtk-outputs of the solution are written out in folders named Example1_DG_NX, where again DG is the number of DG degrees of freedom and NX is the number of mesh elements in each direction.

Advection Testcase II

This reproduces Testcase II specified in Section 5.1.2 of the manuscript. An initial condition that represents four shapes with different smoothness (see Figure 6 of the manuscript) is advected in a ring domain. The test is repeated using discontinuous Galerkin DG(0), DG(1) and DG(2) discretizations on sequences of refined meshes.

BUILD/dynamics/tests/example2-sasipmesh

The output is corresponding to Testcase I. The vtk's correspond to Figure 7 in the manuscript.

LKF Benchmark

This example reproduces the sea ice benchmark configuration that is described in Section 5.2 of the manuscript and that first has been introduced by Mehlmann and Richter in A modified global Newton solver for viscous-plastic sea ice models and that has been used for comparing different sea ice implementations in Simulating Linear Kinematic Features in Viscous-Plastic Sea Ice Models on Quadrilateral and Triangular Grids With Different Variable Staggering.

BUILD/dynamics/tests/example2-sasipmesh

The benchmark is defined on a domain of size 512km x 512km for 2 days simulation time. VTK output is generated every hour and stored in Benchmark_CG_DG_NX where CG stands for the degree of the velocity discretization (1 or 2) and DG for the number of DG degrees of freedom (1, 3 or 6). NX is the number of elements in each direction.

These three parameters are adjusted in the file benchmark_mevp.cpp within the main function.

Multithreading

If configured with WITH_THREADS ON, neXtsim_DG will take the maximum number of available threads. You can control the number of threads by setting the environment variable OMP_NUM_THREADS.

Files

README.md

Files (15.9 MB)

Name Size Download all
md5:86d3f3a95c324c9479bd8986968f4327
11.4 kB Download
md5:3a761735f18c829fdf0f166c1f2f5ea1
15.9 MB Download
md5:976da52d0d23a95b8fa2a986f2cb9327
5.3 kB Preview Download