Skip to content
jpolton edited this page Jun 5, 2023 · 42 revisions

CO9-AMM15 Overview

Coastal-Ocean version 9 Atlantic Margins Model.

May 2023: CO9p2.0_AMM15 is locked down for operational implementation. (It is a relabelled of the old CO9p1.5c_AMM15. To avoid confusion we will never refer to p1.5c again. Ever.)

Background

CO9-AMM15 is is an upgrade from CO7-AMM15 detailed in "AMM15: a new high-resolution NEMO configuration for operational simulation of theEuropean north-west shelf, Graham et al.(2018)"(https://gmd.copernicus.org/articles/11/681/2018/) AMM15 is a 1.5 km resolution regional impementation of NEMO for the North West European Shelf.

CO7-AMM15 ran a simulation covering 1990-2014, with ERAI surface forcing, TPXO tides, EMODNET bathymetry in version 3.6 of NEMO.

We start with the above experiment as our reference.

We then created a version of CO7 usign NEMO V40..4 that was a close to VN3.6 in terms of NEMO options as possible.

This we label as P0.0.

There after we add various updates to the configuration in a set of ensmeble experiments that can show the impact of each change.

Below lists the changes we made.

P0.0

The aim of CO9 P0.0 is replication of CO7 as close as possible in NEMO 4.0.4. The base revision of NEMO 4.0.4 is chosen to align with the global ocean configuration base revision of NEMO. The code base for CO9 P0.0 with some bug fixes is contained in the package:

. For the Baltic we use the GETM model data as in CO7 Grawe et al., 2015. The open boundaries are prescribed as in CO7 using the FRS scheme for 3D temperature and salinity and the Flather radiation condition for SSH and barotropic U and V. The tidal forcing is also from the same TPXO derived constituents as used in CO7. The river dataset is also identical to that used in CO7. The 3D computational domain in NEMO4 is pre-computed in a domain cfg.nc file that is read in at the start of a model run. This is unlike previous versions of NEMO that read in a bathymetry and then compute the resulting 3D domain based on the NEMO namelist options. The process of creating the domain cfg file is based on the 3.6 code that did the same processing, and we choose the same bathymetry as used in CO7 and the same vertical grid and enveloping as in in CO7 for the creation of the domain file used in CO9 P0.0. Future versions of AMM15 will look to use updated vertical coordinates currently being tested in AMM7. The bathymetry will also need to be updated to allow for wetting and drying but these are not considered in P0.0

Differences other than name changes in namelist options from CO7 to CO9

in P0.0

Bulk Forcing

The closest bulk formulation available in NEMO4 to what was used in CO7, ln blk core is the NCAR formulation. It would appear that the NEMO 4 ECMWF bulk formulation should be the most appropriate for use with ECMWF derived fluxes. However, changing to that bulk formulation has a large impact, and the vertical mixing scheme needs to be modified to accommodate that change. That is the subject of further configurations derived from P0.0. The corresponding namelist option used for bulk formula is:

ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008)

Lateral Diffusion on Tracers

We retain the constant tracer diffusion option as in Co7. This is specified by the NEMO 4 option

nn_aht_ihj_t=0

However, in NEMO 4 the constant is specified by a constant Velocity and Length Scale which we specify as

rn_UD=0.01
rn_LD=493.

Lateral Diffusion on Momentum

Here we deviate from CO7 and use the NEMO 4 option that varies diffusion according to grid scaling and local velocity. It was found separately in experiments with a wetting and drying configuration that this specification of diffusion lead to a more stable model. In anticipation of migrating to a version of AMM15 with wetting and drying we tested this setting here also. This is set in the namelist with:

nn_ahm_ijk_t=31 ! F(i,j,k)=F(grid spacing and local velocity)

Tracer Advection

In CO7, the tracer advection was that of the Total Variance Dissipation (TVD):

ln_traadv_tvd=.true.

In NEMO 4 the closest equivalent the Flux Corrected Transport scheme (FCT) and 2nd order in horizontal and vertical directions. The namelist options required are:

nn_traadv_fct=.true.
nn_fct_h=2
nn_fct_v=2

P0.0 Model simulation background

The restart used for the P0.0 experiment comes from a NEMO4 simulation spanning Feb 10th 1990-Dec 31st 2003. The restart for 1990 comes directly from the CO7 experiment of Graham et al. [2018]. We conduct an ensemble of CO9 experiments starting with P0.0 from Jan 1st 2004 - Dec 31st 2014. This later period is used as a common time frame to assess the entire ensemble of NEMO 4 experiments with reference both to the CO7 and P0.0 experiments. It was impractical to conduct the ensemble for the longer period of 1990-2014. Note the Equation of Sea water is as in CO7:

ln_eos80 = .true. ! = Use EOS80

However, a separate experiment

ln_teos10 = .true. ! = Use TEOS-10

is also conducted to ensure that there are no large deviations. No re-interpolation of temperature and salinity of boundaries nor initial condition was done for this experiment which is purely to check that changing the equation did not have any unforeseen gross changes in the model solution.

Specific changes to speed up the ensemble

Some changes from the reference CO7 experiment that were purely chosen as a means to speed up the ensemble member include:

  • Time Step: It was found that we could increase the baroclinic timestep from 60 s to 90 s and retain stability for P0.0
  • Land Suppression. We used a decomposition of
jpni=28
jpnj=48

This results in a configuration with land suppression:

decomposition 28 x 48 with 304 land subdomains
- uses a total of 1040 mpi process
- has mpi subdomains with a maximum size of (jpi = 54, jpj = 30, jpi*jpj = 1620)
Number of mpi processes: 1040
Number of ocean subdomains = 1040
Number of suppressed land subdomains = 304

Note in this rose suite the processors NEMO NRPOC is hardwired to be the appropriate 1040 and would need adjusting depending on what decomposition the user desires

Ensemble Members

Each change brought into CO9-AMM15 was tested in a stand alone experiment to look directly at the impact of that change in isolation.

Key Experiments are listed here: https://github.com/JMMP-Group/CO_AMM15/wiki/Key_CO9_Experiments. Details of the P0.x experiments are here: https://github.com/JMMP-Group/CO_AMM15/wiki/Co9-Trial-AMM15-Rose-suite-summary

The ensemble is split two broad parts P0.x:

  • NEMO Version Change (3.6->4.04)
  • Tide Forcing Change( TPXO -> FES)
  • open bdy changes for Baltic (SSH anomaly )
  • Open bdy changes for Atlantic (3DUV+ interp on the fly)
  • Change of EOS (1980->2010)
  • Change of GLS options ( note these changes appear to be best with ERA5 not ERAI)
  • Change of SBC forcing (ERA5->ERAI)

and a second part that looks at:

  • Change of Bathymetry ( replace EMODNET with blend of updated GEBCO and EMODNET and remove 10m min depth)
  • Addition of Wetting and drying functionality
  • Change of Vertical Coordinate ( Trial of ME Coordinate, aim to reduce HPGE, saw toothing)

Bathymetry Updates and configuration file

The Bathymerty was updated with a merge of the latest versions of GEBCO and EMODNET. Details with regards to processing the bathymetry data can be found here: https://github.com/JMMP-Group/CO_AMM15/blob/Process_GEB_EMOD_bathy/scripts/PROCESS_GEBCO_EMOD_2020/README_PROCESS_BATHY.md

Furthermore, we enforce smoothing near the Baltic bdy to prevent sawtooths. To do this we cut bathymetry from a sample fie form Nico to ensure bdy data he produced matched out bathy. We could just enforce an rmax criteria over this zone as that is basically what Nico did. Note we also impose a minimum depth at river points of 10m for W&D stability.

The resultant bathymetry file is available at: (note merged G-E-G bathy before splicing of Nico data is also available in the same directory)

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/AMM15_BATHY/ADD_NICO_BALTIC_BDY_RIM_SMOOTH_BDY_COPY_CUTAMM15_CORRECTED_EXPANDED_MERGE_GEBCO_DEEP_TO_200-100_EMODNET_TO_10-5_GEBCO_TO_COAST_amm15.bathydepth.co7.cs3x.cs20.nc

Domain_CFG files based on the above from both ME (P1.5) and SF12 (P1.5b, P2.0) are available at:

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/DOMAIN_CFG/domain_cfg_sig9_itr3_MEs_01-002_350-1400_local_opt_v1.nc

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/DOMAIN_CFG/GEG_SF12.nc

Forcing Fields

SBC

The surface Boundary conditions were updated from ERAI in CO7 to EAR5 in CO9 Note that the GLS options also must be updated to run with ERA5.

ERA5 Forcing fields for CO9-AMM15 are found here:

http://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/SBC/ERA5/

Note raw files are bundled into YYYY.xz archives. Associated weights files and LSM are also in the above directory.

Note if the user wants to revert to ERAI, sample files are available here: https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/SBC/ERAI/

Tides

CO7 used TPXO data but CO9 moves to FES2014

the FES files are found at

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/TIDES/FES2014/

if the user is interested olded TPXO files are available at:

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/TIDES/TPXO/

Atlantic Boundaries

Atlantic boudnaries are stil from the old GLOSE experiments but now we have opted for interpolation on the fly

some sample data is available here: https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/BDY/EXPER_NO_VERT_BDY_SJPZ_A_AND_D/

barotopic data is available here:

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/BDY/SJPZ_A_AND_D_BT/

Baltic Boundary conditions

Baltic boundary data for CO9 is available here:

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/BDY/amm15_Baltic/

RIVERS

Rivers had some specific treatment with regards large flows. They were spread out over 4 grid points instead of 1

The CO9 file is: https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/FORCING/RIVERS/Spread_Loirre_Garron_N_G.nc

The original climatology and the script to spread the rivers is available in the same directory.

coordinate and bdy coordinate files

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/COORDINATES/

Initial Conditions

Initial conditions for the start of Jan 2004 derived by interpolating P0.0 run are available here:

For ME( P1.5) :

For SF12 (P1.5b, P2.0) :

Note they TS data from where these were interpolated is also available here:

https://gws-access.jasmin.ac.uk/public/jmmp/AMM15/CO7_RESTART_SAMPLE/TN_SN_FROM_RESTART_FROM_U-BP634_BASED_TEST_NEMO4.0.2_CO7_MATCH_SAFEBUILD_TIDE_V1_GLS_EN_BUG_FIX_HALF_MASK_20040101.nc.gz

The suites used to interpolate were:

  • mi-be233 (CO7_INI_TO_G-E-G_NIC_BAL_BLOCK_MIN_RIV_10M_ME_01_003_OPT1_STRETCHED)
  • mi-be321 (CO7_INI_TO_G-E-G_NIC_BAL_BLOCK_MIN_RIV_10M_sig9_itr3_MEs_01-002_350-1400_local_opt_v1_STRETCHED)

Sample outputs and where to find the full dataset

Some sample monthly data for P1.5b:

and P1.5:

Full data is archived on mass and consists of files of the form for P1.5b (click for details of variables):

Hourly:
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_shelftmb_grid_T.nc.ppc3
	float sossheig(time_counter, y, x) ;
	float vosaline_bot(time_counter, y, x) ;
	float vosaline_top(time_counter, y, x) ;
	float votemper_bot(time_counter, y, x) ;
	float votemper_top(time_counter, y, x) ;
	float wetdep(time_counter, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_shelftmb_grid_U.nc.ppc3
	float vobtcrtx(time_counter, y, x) ;
	float vozocrtx_bot(time_counter, y, x) ;
	float vozocrtx_top(time_counter, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_shelftmb_grid_V.nc.ppc3
	float vobtcrty(time_counter, y, x) ;
	float vomecrty_bot(time_counter, y, x) ;
	float vomecrty_top(time_counter, y, x) ;
25 hour means
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_25hourm_grid_T.nc.ppc3
	float sossheig(time_counter, y_grid_T, x_grid_T) ;
	float vosaline(time_counter, deptht, y_grid_T, x_grid_T) ;
	float votemper(time_counter, deptht, y_grid_T, x_grid_T) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_25hourm_grid_U.nc.ppc3
	float vozocrtx(time_counter, depthu, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_25hourm_grid_V.nc.ppc3
	
	float vomecrty(time_counter, depthv, y, x) ;
Daily
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_daily_grid_T.nc.ppc3
	float e3t(time_counter, deptht, y_grid_T, x_grid_T) ;
	float vosaline(time_counter, deptht, y_grid_T, x_grid_T) ;
	float votemper(time_counter, deptht, y_grid_T, x_grid_T) ;
	float zos(time_counter, y_grid_T, x_grid_T) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_daily_grid_U.nc.ppc3
	float e3u(time_counter, depthu, y, x) ;
	float vozocrtx(time_counter, depthu, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_daily_grid_V.nc.ppc3
	
float e3v(time_counter, depthv, y, x) ;
float vomecrty(time_counter, depthv, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_daily_grid_W.nc.ppc3
	
	float e3w(time_counter, depthw, y, x) ;
	float vomecrtz(time_counter, depthw, y, x) ;
Monthly
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_monthly_grid_T.nc.ppc3
	float e3t(time_counter, deptht, y_grid_T, x_grid_T) ;
	float vosaline(time_counter, deptht, y_grid_T, x_grid_T) ;
	float votemper(time_counter, deptht, y_grid_T, x_grid_T) ;
	float zos(time_counter, y_grid_T, x_grid_T) 
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_monthly_grid_U.nc.ppc3
	float e3u(time_counter, depthu, y, x) ;
	float vozocrtx(time_counter, depthu, y, x) ;
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_monthly_grid_V.nc.ppc3
	
	float e3v(time_counter, depthv, y, x) ;
	float vomecrty(time_counter, depthv, y, x)
moose:/crum/xu-cs114/nonum_adhoc.file/20040101T0000Z_monthly_grid_W.nc.ppc3
	
	float e3w(time_counter, depthw, y, x) ;
	float vomecrtz(time_counter, depthw, y, x) ;

for P1.5b replace xu-cs114 with xu-cs317

Trace of Source Code from NEMO

The Heritage of the code stems from NEMO release 4.0.4:

------------------------------------------------------------------------
r13653 | smasson | 2020-10-21 13:54:07 +0100 (Wed, 21 Oct 2020) | 1 line

create release r4.0.4

Here A branch was made for GO suites:

------------------------------------------------------------------------
r14074 | cguiavarch | 2020-12-04 09:57:07 +0000 (Fri, 04 Dec 2020) | 2 lines

Mirror of NEMO 4.0.4 release in UKMO branch with SVN keywords removed. To form base revision for UKMO builds.
-----------------------------------------------------------------------

In that branch svn keywords were removed and package branch changes for GO8 were brought over:

r14078 | cguiavarch | 2020-12-04 10:17:01 +0000 (Fri, 04 Dec 2020) | 2 lines

UKMO/NEMO_4.0.4_GO8_package: copy over changes from NEMO_4.0.3_GO8_package branch @13647.

------------------------------------------------------------------------
r14076 | cguiavarch | 2020-12-04 10:07:48 +0000 (Fri, 04 Dec 2020) | 2 lines

UKMO GO8 package branch relative to NEMO 4.0.4 release. 

------------------------------------------------------------------------
r14075 | cguiavarch | 2020-12-04 10:02:42 +0000 (Fri, 04 Dec 2020) | 2 lines

UKMO/NEMO_4.0.4_mirror : Remove SVN keywords. 

It is at that point that we created a package branch for CO specific changes:

------------------------------------------------------------------------
r14249 | deazer | 2020-12-24 04:29:54 +0000 (Thu, 24 Dec 2020) | 1 line

CO9_AMM15 package branch relative to 4.0.4 GO8_package_branch

We brought in some fixes for bdy gls and tides:

Some bug fixes for bdy, adds tides and bug fix gls

------------------------------------------------------------------------
r14249 | deazer | 2020-12-24 04:29:54 +0000 (Thu, 24 Dec 2020) | 1 line

Then we branched again to contain specific tide fixes fro FES (more constituents) and there after corrected issues with Love number and K1 with wrong sign

r14746 | deazer | 2021-04-26 07:07:19 +0100 (Mon, 26 Apr 2021) | 2 lines

K1 value appears to be a typo with a negative sign

------------------------------------------------------------------------
r14364 | deazer | 2021-02-01 08:50:21 +0000 (Mon, 01 Feb 2021) | 2 lines

Just a small change as nblen not declared

------------------------------------------------------------------------
r14267 | dbyrne | 2021-01-05 18:58:20 +0000 (Tue, 05 Jan 2021) | 1 line

Boundary SSH switch and offset implemented
------------------------------------------------------------------------
r14266 | dbyrne | 2021-01-05 18:23:36 +0000 (Tue, 05 Jan 2021) | 1 line

Long period tide forcing, variable love number, new nodal equation 20 added
------------------------------------------------------------------------
r14263 | dbyrne | 2021-01-05 17:42:09 +0000 (Tue, 05 Jan 2021) | 1 line

Copied CO9 branch to CO9 tides, both at v4.0.4
------------------------------------------------------------------------
r14250 | deazer | 2020-12-24 06:20:29 +0000 (Thu, 24 Dec 2020) | 2 lines

After that we brought in the zenv fix for W&D

------------------------------------------------------------------------
r15173 | deazer | 2021-08-04 15:43:12 +0100 (Wed, 04 Aug 2021) | 2 lines

Bug fixes for WAD and Zenv