FESOM1.4 is used in most of our applications and projects, providing robust performance and competitive throughput, but requiring substantial computational resources. The weakness of FESOM1.4 lies in using one-dimensional arrays to store 3D fields, and also in relying on tetrahedral elements. The latter implies very long cycles and increased exchange with memory, for mesh information should be accessed separately for each tetrahedron.
Finite volume treatment on prismatic meshes presents an alternative (to finite elements) way to develop unstructured-mesh codes, which is followed by FESOM2.0. Its key advantage is that all 3D variables are stored as two-dimensional arrays, with vertical and horizontal extents. Because of this, long cycles are split into the external cycle over edges (or elements or nodes) and the internal one, over vertical layers. The unstructured-mesh information is two-dimensional, it is reused in the internal cycle, which is the major reason of an about three-fold speedup of FESOM2.0 compared to FESOM1.4. With this increase in numerical efficiency, the performance of FESOM2.0 is very close to that of structured-mesh codes.
FESOM2.0 places scalar degrees of freedom at triangle vertices (nodes), and the horizontal velocity is on elements (triangle centroids). In the vertical, most of the variables are stored at mid-layers. The exception is the vertical velocity which is stored at full levels. The difference to FESOM1.4 is two-fold. First, this is a staggered code (horizontal velocities and scalars are not collocated. Second, vertical placement is changed, which affects (albeit slightly) the functioning of mixed-layer parameterizations.
FESOM2.0 does not use stabilization against pressure modes in the elevation, as is necessary in FESOM1.4. However, it has too many horizontal velocities which have to be efficiently coupled to avoid the appearance of grid-scale noise. For that reason, a particular attention should be paid to viscosity operators, especially in eddy-dominated regimes.
In order to allow for general vertical layers FESOM2.0 employs the concept of Arbitrary-Lagrangian-Eulerian (ALE) vertical coordinate, which combines together multiple possibilities for motion or the shape of computational layers.
The horizontal transport algorithm mixes the third-order upwind method with the fourth-order central differences, and can be run with or without the flux corrected transport method. Other higher-order methods will follow. The momentum advection is either computed in the vector invariant form or in the flux form on scalar control volumes. Both provide some smoothing, but it is needed to compensate for too many detail in the field of horizontal velocity.
For more detailed description see Danilov et al. (2017).
The latest stable version is publicly available at GitHub repository.
The version, used in Danilov et al., 2017 available here.
The model is developed at DKRZ GitLab and in order to get access to closed repository you would need a DKRZ account and request access from repository administrators (Nikolay Koldunov or Dmitry Sidorenko).
Danilov, S., Sidorenko, D., Wang, Q., and Jung, T.: The Finite-volumE Sea ice–Ocean Model (FESOM2), Geosci. Model Dev., 10, 765-789, doi.org/10.5194/gmd-10-765-2017, 2017.