New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2013WP/INGV-Basic-Reliability-tests – NEMO
wiki:2013WP/INGV-Basic-Reliability-tests

INGV-2 Action in the 2013 WP =

Perform basic coherency/consistency tests. NEMO-technical report.

In order to evaluate the NEMO model behaviors, in terms of numerical noise propagation and reproduction of very simple analytical solutions, some simple test cases have been designed and corresponding simulations performed.

No Motion case

The simplest analytical solution to reproduce is the no motion case. Irrespective of the numerical schemes adopted (implicit, explicit or semi-implicit) to solve the primitive equations, model parameterizations and discretizzation techniques (full step, sigma or partial steps), in case of homogeneous density field and in absence of external forcing the ocean should be characterized by the absence of motion. However due to derivatives accuracy and/or discretizzation methods (implicit semi-implicit or explicit) we know that numerical solution differs from the analytical solution. The model code should be designed in a way that the differences between the two solutions remain confined and do not act as a physical process.

Case 1 ===

In the most simple case, a cube (flat bottom) with homogeneous density field, the NEMO code fulfill the requirements. Some noise appears as a consequence of the implicit scheme used to solve the vertical physics of the active tracers (with the explicit scheme the numerical solution perfectly matches the analytical solution) but it remains confined and close to the truncation error several order of magnitude lower than the physical processes. Starting from Gyre namelist also different options for:

  • no-slip condition;
  • vorlat;
  • energy & enstrophy scheme;
  • centered advection;
  • bi-laplacian operators

have been checked.

The NEMO results are independent from those options. The results are not shown.

Case 2 ===

Introducing a bathymetric gradient produces the amplification of the numerical noise in case of implicit vertical physics for the active tracers. For the second experiment, the bathymetry have been designed as in Mellor et al (1998) or Ezer et al (2002). This is the "classical" Sea Mountain case designed to study the hydrostatic pressure gradient errors in sigma coordinate. We have used the same geometry (Figure-1) but with close lateral boundaries, no surface forcing and initial condition characterized by no motion and homogeneous density field. In order to evaluate NEMO behavior we compared NEMO results with results from an equivalent implementation of the Princeton Ocean Model (POM, Blumberg and Mellor 1987). Where Possible the difference between the two codes have been minimized, setting the NEMO configuration as much as possible similar to POM (Annex-1). In this experiment NEMO code seems to have less numerical noise than POM. Figure-2.

Figure.1 Seamountain Bathymetry

Figure.2 Top-left panel: SSH from NEMO simulation after 14 days. Top-right panel: SSH from POM simulation after 14 days. Middle-left panel: SSH from NEMO simulation after 7 days. Middle-right panel: SSH from POM simulation after 7 days. Bottom panel: time series of potential temperature (initialized at 15) for NEMO (blu line) and POM (red line)

Case 3 (Realistic Geometry)

The third experiment is done using a realistic bathymetry for the Northern Adriatic Sea; T and S are still homogeneous. The bathymetry is shown in figure-3. With realistic bathymetry, even if NEMO better preserve T and S (Temperature bottom panel Fig.3), there is a strange pattern in the SSH field that oscillate in time. There are large and small scale noise. A 2-point numerical noise is evident as the SSH field appears as purple (the combination of red and blu in adiacent grid boxes). A large scale propagation of the induced numerical noise is also evident as a wave propagating from the deeper west part toward the centre of the basin. Different tests have been done using the same bathymetric file but varying the number of vertical levels (from 31 to 89, letting the model to decide the distribution). Also in this case the namelist setup is as similar as possible to POM.

FIgure.3 Adriatic Bathymetry.

Figure.4 Top-left panel: SSH from NEMO simulation after 14 days. Top-right panel: SSH from POM simulation after 14 days. Middle-left panel: SSH from NEMO simulation after 7 days. Middle-right panel: SSH from POM simulation after 7 days. Bottom-left panel: SSH from NEMO simulation after 1 hr. Bottom-right panel: SSH from POM simulation after 1 hr.

References:

Blumberg, A. F., and G. L. Mellor (1987), A description of a three-dimensional coastal ocean circulation model, in Three-Dimensional Coastal Ocean Models, Coastal Estuarine Sci. Ser., vol. 4, edited by N. Neaps, pp. 1 - 16, AGU, Washington

C Ezer, T., Arango, H., Shchepetkin A.F., Developments in terrain-following ocean models: intercomparisonsn of numerical aspects. Ocean Modelling 4 249-267.

Mellor, G. L., L-Y. Oey, T. Ezer, 1998: Sigma Coordinate Pressure Gradient Errors and the Seamount Problem. J. Atmos. Oceanic Technol., 15, 1122-1131.

Annex-1 Differences with standard GYRE namelist

nn_itend    =    4032   !  last  time step
nn_write    =     144   !  frequency of write in the output file   (modulo referenced to nn_it000)
ln_zco      = .false.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined)
ln_zps      = .true.   !  z-coordinate - partial steps   (T/F)
nn_bathy    =    1      !  compute (=0) or read (=1) the bathymetry file
nn_msh      =    1      !  create (=1) a mesh file or not (=0)
rn_hmin     =    3.     !  min depth of the ocean (>0) or min number of ocean level (<0)
rn_rdt      =  300.     !  time step for the dynamics (and tracer if nn_acc=0)
nn_baro     =  100      !  number of barotropic time step            ("key_dynspg_ts")
rn_utau0    =   0.0e0   !  uniform value for the i-stress
rn_shlat    =    2.     !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat
ln_vorlat   = .true.   !  consistency of vorticity boundary condition with analytical eqs.
nn_eos      =   0       !  type of equation of state and Brunt-Vaisala frequency
ln_traadv_cen2   =  .true.  !  2nd order centered scheme
ln_traldf_hor    =  .true.  !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
rn_aht_0         =  100.    !  horizontal eddy diffusivity for tracers [m2/s]
ln_dynadv_cen2= .true. !  flux form - 2nd order centered scheme
ln_dynvor_ene = .false.  !  energy    conserving scheme  
ln_dynvor_een = .true. !  energy & enstrophy scheme
ln_hpg_zps  = .true.   !  z-coordinate - partial steps (interpolation)
rn_ahm_0_lap     = 100.   !  horizontal laplacian eddy viscosity   [m2/s]
Last modified 10 years ago Last modified on 2013-11-12T16:33:19+01:00

Attachments (4)

Download all attachments as: .zip