Generation of Locate high res subdomain to nest into UK wider ROSA domain


  • OpenMap shapefiles (reduced in size in qgis from the AMM wide domain). Original data from Data/OpenStreetMap/shp/AMM.
  • lymebay_v03 sms project from pml-aquaculture/grids/lyme_bay_v03/
  • Bathymetry - lidar and single beam downloaded from Channel Observatory website. EMODNET UK bathymetry. Several local bathymetries from PML for the Plymouth sound and tamar estuary.


  • Reduction of AMM coastline to area of interest
  • load raw coastline into SMS. Edit lyme_bay_v03 coastline guided by raw original coastline. Make sure capes that are ignored in lyme_bay are put back. check that nodes are at coast rather than in-land (because of sms smoothing). Remove small details (piers, harbour entries). Use common sense to make sure the relevant coastal features are represented (e.g. large scale embayments or capes can sometimes disappear when smoothing to a fix resolution in sms).
  • adjust boundaries (in our case, bring them a little bit closer to area of interest). New coastline version is lymebay_v04. The minimum mesh resolution will be determined by the smallest feature in the coastline. For example, if the plymouth breakwater is 50m wide, a mesh coarser than 50m will not resolve this feature correctly.
  • Merge all relevant bathymetry data into a single file for digesting with ADMESH. Because of the varied sources and bathymetry resolution a level of smoothing is required. My suggestion is that the original SMS mesh is of high enough resolution so that the combined bathymetry can be interpolated onto the mesh and the fvcom-toolbox smoothfield function is used to smooth the bathymetry. I am sure there are other ways to smooth it but I am trying to avoid interpolating onto the minimum size (i.e. 30m) and use a gridded data smoother (like the ROMS processing). Other things to bear in mind are to remove non-bathymetric signals in lidar (i.e. bridges!) and to remove coarse bathymetry where you have coastal detailed bathymetry as they are unlikely to agree (i.e. remove emodnet data where there are single/multi beam data (and I haven't done that other than manually in SMS).

ADMESH considerations

  1. All files uploaded to ADMESH need to be in geographical coordinates. ADMESH will automatically convert them to UTM for generating the mesh. At the moment, the only way we have successfully run ADMESH is by generating an SMS grid, convert the 2dm grid to a .14 grid format and load that in ADMESH.
  2. The bathymetry (in ADMESH is called elevation file) is a simple xyz scatter data file in lat/lon.
  3. We use all options available except for the tidal constraint.
  4. It is advisable to start with a low spatial resolution in the drop down menu (if you are using the GUI, we are expecting the source code to be made available through github but at the moment we only have the distributed compiled version).
  5. Select max and min resolutions in metres (for our Locate high resolution domain we are using 40-6000).
  6. We use boundary curvature as 15 (the number refers to the number of elements per fraction of radian as described in Dalton's thesis, higher number produces higher resolution).
  7. For Local feature size we use 3 (the higher the number the higher the resolution).
  8. For elevation the smaller the number the higher the resolution. For our case we use 0.3.
  9. For mesh grading, lower values increases the resolution (I think). We use 0.1 but 0.2 also shows acceptable FVCOM mesh grading (as evaluated in SMS quality checks).
  10. For our domain characteristics the generation time oscillates between one hour and 4 depending on whether the bathymetry and medial axis need to be recalculated or not. The resulting mesh has 150k nodes and 300k elements.

SMS post processing of ADMESH mesh

  • We had to offset the admesh mesh by 60m southwards. We assume this has to do with ADMESH using a different projection than we do in SMS. No East-West translation was apparent.
  • Elements with two land boundaries were removed and single element channels were generally removed. Each bathymetry was loaded separately. Emodnet was upload first and the few elements that exist inside the estuaries were we have good local bathymetry were removed. These included areas were lidar and singlebeam bathymetry from CCO were available. Where inconsistencies of a few data points were observed, these points were deleted by hand in SMS. All bathy datasets were merged into a single dataset and individual ones deleted (lyme_bay_v06_merged_bathy.sms)

Nesting mesh process

  1. Load coarse mesh in SMS.
  2. Delete all nodestrings.
  3. Generate a new nodestring to act as external boundary of the buffer zone. This needs to include two rows of nodes, the boundary one and the inmediate internal one. Save mesh.
  4. In MATLAB, read mesh and extract node's position of the nodestring and save as a cst file (write\_SMS\_cst.m in fvcom-toolbox).
  5. Extract nodestring from high res domain and save it as cst file. Make sure you have re-numbered the high resolution domain even if you will have to renumber it again afterwards (otherwise readSMSmesh will not work).
  6. Load both cst files into working high res mesh.
  7. Join high res cst feature with coarse nodestring feature. Build polygon and generate mesh of buffer band. Check mesh quality criteria and save.
  8. Load buffer mesh into high res domain sms project and append buffer to existing mesh.
  9. Next you need to generate the nesting file in MATLAB. Read both high res and coarse mesh. Find the buffer nodes in the high res mesh and output them in the nest_nodes file.