Nesting Capabilities

11. Nesting Capabilities#

To address the challenge of bridging the gap between near-shore and offshore dynamics, a nesting capability has been added to CROCO and tested for the California Upwelling System [Debreu et al., 2012, Penven et al., 2006]. The method chosen for embedded griding takes advantage of the AGRIF (Adaptive Grid Refinement in Fortran) package [Debreu et al., 2012, Blayo and Debreu, 1999, Debreu et al., 2008]. AGRIF is a Fortran 95 package for the inclusion of adaptive mesh refinement features within a finite difference numerical model. One of the major advantages of AGRIF in static-grid embedding is the ability to manage an arbitrary number of fixed grids and an arbitrary number of embedding levels.

../_images/nesting_timestepping.png

A recursive integration procedure manages the time evolution for the child grids during the time step of the parent grids (Fig. 2). In order to preserve the CFL criterion, for a typical coefficient of refinement (say, a factor of 3 for a 5 km resolution grid embedded in a 15 km grid), for each parent time step the child must be advanced using a time step divided by the coefficient of refinement as many time as necessary to reach the time of the parent (Fig. 2). For simple 2-level embedding, the procedure is as follows:

  1. Advance the parent grid by one parent time step.

  2. Interpolate the relevant parent variables in space and time to get the boundary conditions for the child grid.

  3. Advance the child grid by as much child time steps as necessary to reach the new parent model time.

  4. Update point by point the parent model by averaging the more accurate values of the child model (in case of 2-way nesting).

The recursive approach used in AGRIF allows the specification of any number of nesting levels. Additional CPP options are related to AGRIF, they are in set_global_definitions.h and set_obc_definitions.h files. These are default options intended for nesting developers and should not be edit by standard users.

For a better understanding of ROMS nesting capabilties using AGRIF, check the published articles on CROCO/ROMS nesting implementation and also the AGRIF project homepage:

  1. CROCO/ROMS 1 way nesting : Penven et al. [2006]

  2. CROCO/ROMS 2 way nesting: Debreu et al. [2012]

  3. AGRIF homepage : http://www-ljk.imag.fr/MOISE/AGRIF/

Related CPP options:

AGRIF

Activate nesting capabilities (1-WAY by default)

AGRIF_2WAY

Activate 2-WAY nesting (update parent solution by child solution)