source: NEMO/trunk/src/NST @ 14738

Name Size Rev Age Author Last Change
agrif2model.F90 2.5 KB 10068   3 years nicolasmartin First part of modifications to have a common default header : fix typos …
agrif_all_update.F90 3.1 KB 12377   18 months acc The big one. Merging all 2019 developments from the option 1 branch back …
agrif_ice.F90 1.4 KB 13216   13 months rblod Merge dev_r12973_AGRIF_CMEMS
agrif_ice_update.F90 10.8 KB 13472   11 months smasson trunk: commit changes from r4.0-HEAD from 13284 to 13449, see #2523
agrif_oce.F90 6.9 KB 14086   8 months cetlod Adding AGRIF branches into the trunk
README.rst 4.1 KB 14113   8 months nicolasmartin #2414 Reintegration to the trunk, LaTeX manuals are compiling ;-)
zooms.bib 1.7 KB 14113   8 months nicolasmartin #2414 Reintegration to the trunk, LaTeX manuals are compiling ;-)
agrif_ice_interp.F90 19.8 KB 14125   8 months jchanut #2222, restore correct ssh initialization from parent grid + suppress …
agrif_top_update.F90 8.2 KB 14148   8 months jchanut #2385, qco and agrif TOP (missing substitutes)
agrif_top_sponge.F90 11.4 KB 14170   8 months jchanut #2222, 2129: 1) Corrected ssh initialization from parent in line with what …
agrif_top_interp.F90 8.7 KB 14218   7 months jchanut #2222, Fixes uninitialized arrays with vertical remap
agrif_oce_update.F90 54.0 KB 14227   7 months smasson trunk: replace remaining OPA by OCE
agrif_oce_interp.F90 72.4 KB 14433   6 months smasson trunk: merge dev_r14312_MPI_Interface into the trunk, #2598
agrif_oce_sponge.F90 44.8 KB 14433   6 months smasson trunk: merge dev_r14312_MPI_Interface into the trunk, #2598
agrif_user.F90 52.2 KB 14433   6 months smasson trunk: merge dev_r14312_MPI_Interface into the trunk, #2598
vremap.F90 16.2 KB 14439   6 months jchanut #2222, turn on the use of PPR library with vertical nesting


Embedded zooms

.. todo::

.. contents::


AGRIF (Adaptive Grid Refinement In Fortran) is a library that
allows the seamless space and time refinement over rectangular regions in NEMO.
Refinement factors can be odd or even (usually lower than 5 to maintain stability).
Interaction between grid is "two-ways" in the sense that
the parent grid feeds the child grid open boundaries and
the child grid provides volume averages of prognostic variables once
a given number of time step is completed.
These pages provide guidelines how to use AGRIF in NEMO.
For a more technical description of the library itself, please refer to AGRIF_.


Activating AGRIF requires to append the cpp key ``key_agrif`` at compilation time:

.. code-block:: sh

   ./makenemo [...] add_key 'key_agrif'

Although this is transparent to users,
the way the code is processed during compilation is different from the standard case:
a preprocessing stage (the so called ``conv`` program) translates the actual code so that
saved arrays may be switched in memory space from one domain to an other.

Definition of the grid hierarchy

An additional text file :file:`` is required at run time.
This is where the grid hierarchy is defined.
An example of such a file, here taken from the ``ICEDYN`` test case, is given below

.. literalinclude:: ../../../tests/ICE_AGRIF/EXPREF/

The first line indicates the number of zooms (1).
The second line contains the starting and ending indices in both directions on the root grid
(``imin=34 imax=63 jmin=34 jmax=63``) followed by the space and time refinement factors (3 3 3).
The last line is the number of child grid nested in the refined region (0).
A more complex example with telescoping grids can be found below and
in the :file:`AGRIF_DEMO` reference configuration directory.

.. todo::

   Add some plots here with grid staggering and positioning?

When creating the nested domain, one must keep in mind that
the child domain is shifted toward north-east and
depends on the number of ghost cells as illustrated by
the *attempted* drawing below for ``nbghostcells=1`` and ``nbghostcells=3``.
The grid refinement is 3 and ``nxfin`` is the number of child grid points in i-direction.

.. image:: _static/agrif_grid_position.jpg

Note that rectangular regions must be defined so that they are connected to a single parent grid.
Hence, defining overlapping grids with the same refinement ratio will not work properly,
boundary data exchange and update being only performed between root and child grids.
Use of east-west periodic or north-fold boundary conditions is not allowed in child grids either.
Defining for instance a circumpolar zoom in a global model is therefore not possible.


Knowing the refinement factors and area,
a ``NESTING`` pre-processing tool may help to create needed input files
(mesh file, restart, climatological and forcing files).
The key is to ensure volume matching near the child grid interface,
a step done by invoking the :file:`Agrif_create_bathy.exe` program.
You may use the namelists provided in the :file:`NESTING` directory as a guide.
These correspond to the namelists used to create ``AGRIF_DEMO`` inputs.

Namelist options

Each child grid expects to read its own namelist so that different numerical choices can be made
(these should be stored in the form :file:`1_namelist_cfg`, :file:`2_namelist_cfg`, etc...
according to their rank in the grid hierarchy).
Consistent time steps and number of steps with the chosen time refinement have to be provided.
Specific to AGRIF is the following block:

.. literalinclude:: ../../namelists/namagrif
   :language: fortran

where sponge layer coefficients have to be chosen according to the child grid mesh size.
The sponge area is hard coded in NEMO and applies on the following grid points:
2 x refinement factor (from ``i=1+nbghostcells+1`` to ``i=1+nbghostcells+sponge_area``)

.. rubric:: References

.. bibliography:: zooms.bib
   :style: unsrt
   :labelprefix: A
   :keyprefix: a-
Note: See TracBrowser for help on using the repository browser.