Discontinuity in AGRIF parent-child boundary in W-grid variables

Hi all,

I am working on a new configuration of NEMO+AGRIF using NEMO 4.2.2.

The model runs without problem and appears to be stable over a long time period, but I noticed that in the outputs, only in the variables on the W grid, that a boundary is visible between the parent and child domains in all variables (the ones I have output are N^2, vertical diffusivity, and vertical velocity). The variables on the T, U, and V grids have a completely smooth boundary. Here is a screenshot of the problem in vertical diffusivity in the first non-zero layer (2m):

I’ve adjusted the colourbar range to better highlight the problem.

The boundary appears from the first hour of model output and does not reduce in severity or get worse over time. It’s strongest in the first layers, and then reduces at deeper layers (although this could be because these variables have very small values at deeper layers and the problem is harder to see).

After trying a variety of solutions for this problem, it seems that it arises somewhere in sbcblk.f90, although I wouldn’t rule out other possibilities. When I set the non-solar heat flux (qns) to a constant value, the boundary is no longer visible in any of the W variables. However, the outputs of the fluxes themselves are all smooth at the boundary, so the problem is not coming from the atmospheric forcing data.

Changing the bulk formula and vertical mixing scheme choices does not solve the problem, so I am confident that it is not directly caused by one of these settings.

Some other potentially relevant information is as follows:

  • The domain_cfg and 1_domain_cfg.nc files were created using the DOMAINcfg tool using the nn_bathy=2 setting for bathymetry.
  • The weights files for both the parent and child grid were generated using the WEIGHTS tool.
  • The initial conditions are interpolated onto the child grid using the ln_init_chfrpar setting in namagrif – although when child initial conditions are generated manually, the same problem still occurs.
  • The zoom is 3x for the child grid.
  • We tried the same configuration with NEMO 5 and had the same problem.

I’d greatly appreciate any advice on what could be causing this issue.

Many thanks,
Beth

Hi,

I guess what you show is the child domain, and the problem is located at the north-west corner, right ?
Diffusivity and other variables (such as ww) are diagnosed in the outermost points of the child domain (in the so called ghost zone which is 3 points wide + 1 strip of masked points, i.e. from i=1:4 with Fortran indexing). Do you see artefacts for i>2 ?

Hi,

Apologies for not being clear about the domain: the parent domain is the Mediterranean Sea with Atlantic Box (with LOBCs in the Atlantic Ocean provided by a global model), while the child is the area around the Gibraltar Strait (from approx. 8°W-1°W). I’m showing the parent in the image. To me it looks like the output is affected beyond the first few points.

All right. Which vertical mixing scheme do you use ?

In the configuration shown in the image, I use GLS, but I also tried TKE and the result was very similar

What is striking to me is the discontinuity in the Alboran sea. Since you look at diffusivity in the first layer, it should very much reflect the surface stress (wind). There’s a hint of the signature of Alboran gyres in your plot. Do you use indentical forcings and bulk parameters (incl. relative winds) in both grids ?

The forcings are identical (with different weights files to interpolate them onto each grid), and the bulk parameters are the same in both grids. I use MFS bulk in the image, but tried ECMWF bulk as well, and the discontinuity is still present. I do think the problem could be in the bulk calculation, but not part of a specific bulk formula choice.

This is another image that I think is potentially revealing: the vertical velocity at the 0 level.

Considering this is at 0m, any vertical velocity must be caused by water mass fluxes through the surface.

Hi,

I had a look at my global configuration at 1/4 of degree of resolution based on NEMO4.2.2 and using a zoom at 1/12 of degree of resolution in the Gulf Stream region and I can confirm I have the same issue that Beth is reporting - see plots below for the vertical velocity at the surface (a) and the level just below (b).

This configuration uses the same vertical grid for the both the parent and the child model.

After a chat with @jdha, I decided to check the output of the AGRIF_DEMO sette tests (thanks to @daley_calvert) and it seems a similar issue might be present also in the AGRIF_DEMO@v4.2.2 but not in the AGRIF_DEMO@v5.0 - see plots below:

.

Note that in AGRIF_DEMO@v4.2.2 the issue seems to be present only at the surface, although the sette tests are only 1 day long tests.

Having wrong vertical velocities over child grid domain on the coarse grid is just normal. Because vertical velocity calculation over coarse grid is done with barotropic fields that have not been updated by child grid domain. In order to do so, one would have had to diagnose the vertical velocity over coarse grid after child grid integration is done (one need time averaged values over all child grid steps to have correct barotropic fluxes over coarse grid). It would be more fair to overlay the child grid solution (which is the one that really matters there after all) over the coarse one.
The same apply in a sense to vertical diffusivity (even if the mismatch reveals some over things) which is also not updated from child grid values (all other prognostic variables that you see are just “copied” from the child grid). One should overlay the child grid value here again and appreciate any discontinuity. Eventually, have a look at having #undef PARENT_EXT_BDY if you have #define PARENT_EXT_BDY in agrif_oce_interp.F90. And test.

Hi,

I tested the option of #undef PARENT_EXT_BDY and found that the vertical velocity is smooth at the boundary when I make this change. This is the 10th day of simulation in the first layer (2m).

However, I checked the vertical diffusivity as well, making some plots where I superimpose the child model onto the parent grid to check the boundary.

This image shows a. the vertical diffusivity after 10 days at 2m in both grids, b. the parent grid with 20 extra grid points to the east and west (in order to see the boundary) and c. the child grid superimposed onto the parent.

To me, the boundary is smoother with the child grid overlayed like this (c) than with the parent (b), and this is the most important part. However, it’s not totally smooth, the diffusivity is a bit lower in the child grid than just outside.

Do you think it’s normal to have this situation, even with #undef PARENT_EXT_BDY in agrif_oce_interp?