4 open boundaries nesting in HYCOM - D-Flow Flexible Mesh - Delft3D
intro story D-Flow FM
D-Flow Flexible Mesh
D-Flow Flexible Mesh (D-Flow FM) is the new software engine for hydrodynamical simulations on unstructured grids in 1D-2D-3D. Together with the familiar curvilinear meshes from Delft3D 4, the unstructured grid can consist of triangles, pentagons (etc.) and 1D channel networks, all in one single mesh. It combines proven technology from the hydrodynamic engines of Delft3D 4 and SOBEK 2 and adds flexible administration, resulting in:
An overview of the current developments can be found here.
The D-Flow FM - team would be delighted if you would participate in discussions on the generation of meshes, the specification of boundary conditions, the running of computations, and all kinds of other relevant topics. Feel free to share your smart questions and/or brilliant solutions!
4 open boundaries nesting in HYCOM
Danker Kolijn, modified 6 Years ago.
I am trying to run a d3d flow model with 4 open boundaries using current and WL inputs from HYCOM. Attached an image of the domain with surface current roses at each of the model domain corners. I've been having some issues achieving comparable results to HYCOM within my model domain. I've tried a variety of combinations of Riemann, WL and current boundaries, however gyres quickly develop within the model and the current directions are generally off.
I have also had no success combining current and WLs at the boundaries. Has anyone dealt with such a domain set-up before? Do you have any tricks and/or tips to set up the boundary conditions? Any suggestions are much appreciated.
- Given the main current direction (from north to west and vice versa) you can consider closing the eastern and western boundary.
- Maybe you already did that but our advice is to use all HYCOM information possible, i.e. use a lot of support points in between the corners of your model such that the support points approximately coincide with HYCOM output points
- Personally I have the best experience with a lot of velocity boundaries and only a small section (10 or 20 km in your case) water level boundary. I have colleagues who prefer Riemann boundaries. In the end it is just playing around, applying different types of boundary forcing, to see what gives the best result.
- If your model has large depths (> 100 m) you might end up with having to apply a physically unrealistic large horizontal viscosity (100 m2/s) just to keep your simulation stable. Sometimes it is sufficient to apply this large viscosity just in the direct vicinity of the open boundaries.
Hope this pointers help you.
Theo van der Kaaij
Just add one information to Theo's advices. In Delft3D, we have a research version, where you can specify both Riemann and Tangential velocity boundary conditions to a 4 open boundary model. It has been tested with a coastal case (water depth in the model domain is about 30~meters).
Then how to extract necessary info from HYCOM to Delft3D would be the next issue. I think Maarten van Ormondt has experience on that.
Hope this help a bit,
Thank you very much for your response. Since my post I have switched from the HYCOM model to the regional NCOM model, as this has a higher resolution and provided more reasonable inputs at my boundaries.
I was able to extract all NCOM data using SNCTOOLS which is a collection of MATLAB programs for accessing netCDF data. I now have a D3D model domain directly nested into NCOM every 3km at the boundary.
I've made quite some progress on my model however I'm experiencing a very strange phenomenon that I hope you may be able to assist me with.
I've been running various models with 2-4 decomposed domains (DDs) and 10-15 Z-layers, trying to find an optimum to reduce run time and still get reasonable results (current direction, magnitude, salinity and temp.).
As it stands:
- My domain is over 2000m deep and has strong temp. and salinity stratification with temperatures of around 4 degrees near the bottom and 27 degrees near the surface
- I feed the model an initial conditions (.ini) file at every z-layer to have the water column properly stratified before simulations start
- Salinity, currents and temperature are fed into the model with a 3hrly time-series every 3km around the entire boundary for every z-layer
- water levels are fed into the model on the western boundary, currents on the northern, eastern, and southern boundary
- I've incorporated atmospheric conditions and winds
- Running a model with 2DDs, 13 Z-layers, and a cut-off depth of 1000m produces favorable results, however I sacrifice a lot of large 3-dimensional deep ocean features. This influences current magnitude/direction and i'm not able to capture the full extent of the stratification in the water column offshore
- Running a model with 2DDs, 15 Z-layers and a cut-off depth of 2000m produces a large jet of cold water at the south-eastern surface boundary which discharges at the surface z-layer and produces very poor results. I would like to be able to model a depth of 2000m but haven't found a solution to this problem. (see image attached)
Things I have tried:
- Smoothing the bathy at the outer boundaries around the entire domain
- Check all my inputs in the .bct & .bcc file to make sure no strange temperatures and current magnitudes are fed into the model
- Changing the intervals of my z-layers
- Turning off the baroclinic pressure term at the boundaries
- Turning on my Forester filters
- Running the model in non-hydrostatic mode
- Turning on the slope limiter feature
Perhaps you've come across this issue before? Any suggestions / comments are much appreciated.
Does this problem appear at an open boundary or near a domain decomposition (internal) boundary with local grid refinement? In case of the latter, we know that problems may occur near the surface or the near the bed in case of local grid refinement. The reason is related to the occurrence of (very) thin layers.
I have the impression that this is the case in your application as well. In the model with a depth of 1000 m this does not seem to appear, but in the 2000 m deep model a thin layer might appear locally. Most of the alternatives that you mentioned will not work for this. Most promising options are:
a) varying the Ztop value; and
b) playing with the layer distribution.
I prefer option a). Is your Ztop e.g. more or less equal to the water level surface? Then, it might be handy to somewhat increase the Ztop value, so that the top layer is prevented from being very small.
Success and with kind regards,
Erik de Goede, Deltares
Thank you very much for you reply and all of the replies from the other users.
I have resolved all of the issues with Salinity and Temperature. The initial conditions file to "pre-stratify" the model helped a lot, as well as smoothing out all my bathymetry. I've also optimized my z-layer distribution.
The only issue that remains in my model is in the northwest corner. The western boundary is a water level boundary and after some time, the water level at this point drops dramatically and introduces a high velocity jet into the model. This jet is not due to the time series itself (being fed into the model), as this has been extensively checked. See an image of the problem attached for the outer grid only.
What i've tried:
1) Introducing an artificial island in this corner
2) Introducing an area of high friction in this corner
3) Various combinations of wls, riemann boundaries and currents
4) All Riemann boundaries
5) only a small water level boundary (this did not provide enough WL forcing to the model and island-wide water levels didn't work out)
6) Downloaded and unsuccessfully trued to compile the latest February 2015 D3D version with tangential boundary conditions
Currently my model has 20 z-layers and 3 Domain decomposed grids. After a few simulated weeks the instabilities occur. I've also started the model run on different dates and the instabilities occur after about the same run time, which leads me to believe these issues build up over a set time.
I've attached a SIMPLIFIED version of my model with a very coarse outer mesh. Anything obvious someone can spot with the model or suggestions is very much appreciated.
Many thanks in advance.
This is indeed a very "challenging" problem. There isn't a single damping factor in your model that would make life easier. As a result, the smallest disturbance at the boundaries will make the model unstable.
To tackle this problem:
- Return to use decent values: a viscosity of 1 m2/s should do. Also use a much smaller reflection parameter; a value of about 100 should do. You might even start with a value of zero.
- You have switched on a lot of processes. To investigate this boundary problem, it will make it a lot clearer to switch of processes temporary (salinity, temperature, wind, coriolis (latitude = 0.0). You might even think about starting without salinity and temperature and use that map-file to restart from for the final simulation, including salinity and temperature.
- Currently, there is a boundary section for each boundary cell. This makes the model very sensitive. Please use 1 to 3 sections for each of the 4 boundaries. FLOW will take care for a smooth interpolation along each section. Besides, it will make life easier for you.
- The western boundary is a water level boundary and north, east, south are velocity boundaries. There seems to be a mismatch between the western boundary and the northern boundary at the top left corner. Can you try to replace one third of the northern boundary (the most western part) by a water level boundary?
- If this is not enough: think about replacing one boundary section (about one third of a boundary) by a Neumann boundary. This will give the model some "breathing space".
Hope this helps.
I am making a simulation near Colombian Caribe sea with 3 open bounday. I have downloaded current, levels, temperature, salinity and wind data from Mercator and ERA-INTERIM databases and I would like to make a double nesting simulation in order to calibratre and validate the model with some field data.
- Zmodel with 43 layers (same that Mercator data set)
- Currents and levels with 1/12° resolution (1 value each 4 cells)
- Wind data from ERA-Interim (following Mercator recomendation)
-Maximum depth 2800 m
- First started with a coarsed mesh (37x37 cells)
At the moment I am having same troubles with my model than Danker had. I've been reading this forum for a while and implementing all your advices but still have no solution
Could you please tell me finally how did you solve this situation?
I've attached an outer coarse mesh with just current, wind and water levels (no salinity or temperature process). If you see some obvious mistake(s) or if you have suggestions for me please tell me