Skip to content

Nesting: child grid C-node coordinate interpolation.

For a 3D-to-3D nesting procedure, the child grid open-boundary U/V/C-node coordinates must be specified in the Usrdef_Nested_Grids.f90 of the parent grid.

In subroutine usrdef_nstgrd_spec, the number of open-boundary C-nodes equals the sum of U- & V- open-boundary node such as nohnstglbc = nohnstglbu + nohnstglbv.

In subroutine usrdef_nstgrd, the coordinates of those nodes are specified such as

SELECT CASE (TRIM(cnode))
   !2D normal currents
   CASE ('U')
      xcoord = 
      ycoord = 
   CASE ('V')
      xcoord = 
      ycoord = 
   ! Baroclinic, scalars
   CASE('C')
      xcoord = 
      ycoord = 

Since we use Arakawa C-grid, by definition open-boundary U- & V-nodes coordinates are located in the center of the cell faces. Each open-boundary C-node is located at +-.5*resolution depending on the boundary location (North, South, West, East).

The same definition is used in the current COHERENS documentation Fig.15.5. Screenshot_from_2024-03-28_13-37-22

Figure 15.5 also shows we clearly should specify the coordinates of the child grid open-boundary U/V/C-nodes at U/V/C-node subgrid respectively.

Nevertheless, Katrijn said that PL recently introduced an interpolation from C-U-C & C-V-C so that the open-boundary C-node coordinates can be exactly the same as their respective open-boundary U & V-nodes. I have not yet found in the code what is the good answer: shifting C-nodes coordinates or giving the same location as the open-boundary U & V-nodes. (But to interpolate to U or V the model needs the 1st C-node inside the child domain. So it means that during the parent domain run, the 1st C-nodes of the child grid is computed? There is not a lot of sense over here since we can impose an initial condition in the child grid and erase the value that was used for interpolation.)

The answer might be in MODULE array_interp.f90 (array and scalar interpolation routines). We have to make sure if this is CALL or not. If yes, which type of interpolation is really used. Even tough the documentation follows the Arakawa-C grid definition, we have to make sure to find the real answer in the code.

Edited by Hugo Romanelli