Form 98 (in 2017WP/AGRIF-2_Tim Graham-vertical)

Saved Values

in subcontext 'abstract'

implementation: 'The following files in NST_SRC will be changed: agrif_user.F90, agrif_opa_interp.F90, agrif_opa_update.F90, agrif_opa_sponge.F90 For each 3D variable that is interpolated between grids an extra field is added: e.g. interptsn changes from size (jpi,jpj,jpk,2) to (jpi,jpj,jpk,3) and interpun changes from (jpi,jpj,jpk) to (jpi,jpj,jpk,2) The extra dimension is used to interpolate the vertical scale factors between grids and is used for the vertical interpolation in the before=False call to each of the interpolation, update and sponge routines. The variable tabres always remains on the parent grid number of levels (for interp and sponge) and the child grid number of levels (for updates). An extra variable (tabres_child) is introduced to hold the vertically interpolated field. Extra variables (h_in, h_out and tabin) are used to contain the thicknesses for each column of data passed to the vertical interpolation. To allow higher resolution bathymetry in updates it's necessary to adjust the velocity at the bottom grid cells in cases where the mean child bathy at U/V points is deeper than the parent in order to conserve momentum. A new routine (reconstructandremap) is added to the agrif_oce.F90 to do the vertical interpolation. This was coded by Laurent Debreu based on work by Schpetkin. It also requires an update to the AGRIF libraries (both AGRIF_FILES) and AGRIF/LIB. This was provided by Laurent Debreu. The code should work with VVL once Jerome's changes are included to call updateSSH, then call domvvl before updating the other 3D fields. For now the code is protected by a key. Ideally a namelist variable would be used but I couldn't get this to work on both grids.' by timgraham2017-12-01T09:39:37+01:00
manual: 'Using part 1 and 2, define the summary of changes to be done in the NEMO reference manual (tex files), and in the content of web pages.' by timgraham2017-11-29T14:38:14+01:00
description: 'Allow use of different vertical grids between parent and child domains with conservative interpolation between the grids. Although not the original aim this work could also allow the use of a different vertical coordinate in the child grid (e.g. S coordinates). The domains will be subject to the following constraints: 1) Near the edges of the domain and in the sponge region the child bathymetry must exactly match the parent bathymetry (after partial steps are taken into account). 2) In the inner domain (away from sponge region) the area weighted mean depth of child T grid points must equal the parent T grid point depth. Both of these constraints may require direct adjustments to the domain_cfg files if partial thickness cells are used.' by timgraham2017-11-29T14:38:14+01:00

Change History

Changed on 2017-12-01T09:39:37+01:00 by timgraham:

  • implementation changed from
    The following files in NST_SRC will be changed: agrif_user.F90, agrif_opa_interp.F90, agrif_opa_update.F90, agrif_opa_sponge.F90 For each 3D variable that is interpolated between grids an extra field is added: e.g. interptsn changes from size (jpi,jpj,jpk,2) to (jpi,jpj,jpk,3) and interpun changes from (jpi,jpj,jpk) to (jpi,jpj,jpk,2) The extra dimension is used to interpolate the vertical scale factors between grids and is used for the vertical interpolation in the before=False call to each of the interpolation, update and sponge routines. The variable tabres always remains on the parent grid number of levels (for interp and sponge) and the child grid number of levels (for updates). An extra variable (tabres_child) is introduced to hold the vertically interpolated field. Extra variables (h_in, h_out and tabin) are used to contain the thicknesses for each column of data passed to the vertical interpolation. To allow higher resolution bathymetry in updates it's necessary to adjust the velocity at the bottom grid cells in cases where the mean child bathy at U/V points is deeper than the parent in order to conserve momentum. A new routine (reconstructandremap) is added to the agrif library to do the vertical interpolation. This was coded by Laurent Debreu based on work by Schpetkin. The code should work with VVL once Jerome's changes are included to call updateSSH, then call domvvl before updating the other 3D fields. For now the code is protected by a key. Ideally a namelist variable would be used but I couldn't get this to work on both grids.
    to
    The following files in NST_SRC will be changed: agrif_user.F90, agrif_opa_interp.F90, agrif_opa_update.F90, agrif_opa_sponge.F90 For each 3D variable that is interpolated between grids an extra field is added: e.g. interptsn changes from size (jpi,jpj,jpk,2) to (jpi,jpj,jpk,3) and interpun changes from (jpi,jpj,jpk) to (jpi,jpj,jpk,2) The extra dimension is used to interpolate the vertical scale factors between grids and is used for the vertical interpolation in the before=False call to each of the interpolation, update and sponge routines. The variable tabres always remains on the parent grid number of levels (for interp and sponge) and the child grid number of levels (for updates). An extra variable (tabres_child) is introduced to hold the vertically interpolated field. Extra variables (h_in, h_out and tabin) are used to contain the thicknesses for each column of data passed to the vertical interpolation. To allow higher resolution bathymetry in updates it's necessary to adjust the velocity at the bottom grid cells in cases where the mean child bathy at U/V points is deeper than the parent in order to conserve momentum. A new routine (reconstructandremap) is added to the agrif_oce.F90 to do the vertical interpolation. This was coded by Laurent Debreu based on work by Schpetkin. It also requires an update to the AGRIF libraries (both AGRIF_FILES) and AGRIF/LIB. This was provided by Laurent Debreu. The code should work with VVL once Jerome's changes are included to call updateSSH, then call domvvl before updating the other 3D fields. For now the code is protected by a key. Ideally a namelist variable would be used but I couldn't get this to work on both grids.

Changed on 2017-11-29T14:43:17+01:00 by timgraham:

  • implementation changed from
    The following files in NST_SRC will be changed: agrif_user.F90, agrif_opa_interp.F90, agrif_opa_update.F90, agrif_opa_sponge.F90 For each 3D variable that is interpolated between grids an extra field is added: e.g. interptsn changes from size (jpi,jpj,jpk,2) to (jpi,jpj,jpk,3) and interpun changes from (jpi,jpj,jpk) to (jpi,jpj,jpk,2) The extra dimension is used to interpolate the vertical scale factors between grids and is used for the vertical interpolation in the before=False call to each of the interpolation, update and sponge routines. The variable tabres always remains on the parent grid number of levels (for interp and sponge) and the child grid number of levels (for updates). An extra variable (tabres_child) is introduced to hold the vertically interpolated field. Extra variables (h_in, h_out and tabin) are used to contain the thicknesses for each column of data passed to the vertical interpolation. To allow higher resolution bathymetry in updates it's necessary to adjust the velocity at the bottom grid cells in cases where the mean child bathy at U/V points is deeper than the parent in order to conserve momentum. A new routine (reconstructandremap) is added to the agrif library to do the vertical interpolation. This was coded by Laurent Debreu based on work by Schpetkin.
    to
    The following files in NST_SRC will be changed: agrif_user.F90, agrif_opa_interp.F90, agrif_opa_update.F90, agrif_opa_sponge.F90 For each 3D variable that is interpolated between grids an extra field is added: e.g. interptsn changes from size (jpi,jpj,jpk,2) to (jpi,jpj,jpk,3) and interpun changes from (jpi,jpj,jpk) to (jpi,jpj,jpk,2) The extra dimension is used to interpolate the vertical scale factors between grids and is used for the vertical interpolation in the before=False call to each of the interpolation, update and sponge routines. The variable tabres always remains on the parent grid number of levels (for interp and sponge) and the child grid number of levels (for updates). An extra variable (tabres_child) is introduced to hold the vertically interpolated field. Extra variables (h_in, h_out and tabin) are used to contain the thicknesses for each column of data passed to the vertical interpolation. To allow higher resolution bathymetry in updates it's necessary to adjust the velocity at the bottom grid cells in cases where the mean child bathy at U/V points is deeper than the parent in order to conserve momentum. A new routine (reconstructandremap) is added to the agrif library to do the vertical interpolation. This was coded by Laurent Debreu based on work by Schpetkin. The code should work with VVL once Jerome's changes are included to call updateSSH, then call domvvl before updating the other 3D fields. For now the code is protected by a key. Ideally a namelist variable would be used but I couldn't get this to work on both grids.