zeros in bathymetry
zeros in bathymetry
dear all,
i am (obviously) new to ROMS. i installed it and all the test cases run well. then i tried to add my own bathymetry from the datafile which has zero depth (h=0) in all the dry points (i've built my grid using seagrid2roms.m which i've rewritten to Matlab 2010a native netcdf format). as i understand zeroes in bathymetry ('h'), 'pm', 'pn' and 'hraw' lead to ROMS blowup.
my question is quite obvious but i haven't been able to find the answer on the forum: what do you recommend i should do with the zeros in my bathymetry file? can i maybe just fill the dry point depths with random nonzero values? will that have any effect on the model behaviour in wet points? i know that read_srtm30plus solves this in general but its output is not quite correct for the very limited area i'm trying to model. so i guess my point is: i need to use my own grid.
any suggestions or comments will be appreciated!
i am (obviously) new to ROMS. i installed it and all the test cases run well. then i tried to add my own bathymetry from the datafile which has zero depth (h=0) in all the dry points (i've built my grid using seagrid2roms.m which i've rewritten to Matlab 2010a native netcdf format). as i understand zeroes in bathymetry ('h'), 'pm', 'pn' and 'hraw' lead to ROMS blowup.
my question is quite obvious but i haven't been able to find the answer on the forum: what do you recommend i should do with the zeros in my bathymetry file? can i maybe just fill the dry point depths with random nonzero values? will that have any effect on the model behaviour in wet points? i know that read_srtm30plus solves this in general but its output is not quite correct for the very limited area i'm trying to model. so i guess my point is: i need to use my own grid.
any suggestions or comments will be appreciated!
Re: zeros in bathymetry
I believe you can put in any nonzero value and it won't matter. However, there's the case of river inflow if you have any from a land point to a water point. Then it reads the depth inside the land and uses it to compute the depth of the actual inflow face (on a u or v point). I usually set the land to some minimum depth, like 10 meters.
Re: zeros in bathymetry
Hello,
I have always thought you can't have any zeros in your bathymetry. If you do, the slope parameter condition will never be met, unless all the points in your bathymetry are all zero.
The slope parameter is defined as |r_i - r_{i+1}|/(r_i + r_{i+1}), and it should be smaller than 0.2, according to Haidvogel and Beckmann. But if in this inequality you make r_{i+1} = 0, you have
|r_i - 0|/(r_i + 0) = r_i/r_i = 1, and this is never going to be less than 0.2.
I hope it helps.
Marcos Cobas Garcia
Centro de Supercomputación de Galicia
A Coruna (Spain)
I have always thought you can't have any zeros in your bathymetry. If you do, the slope parameter condition will never be met, unless all the points in your bathymetry are all zero.
The slope parameter is defined as |r_i - r_{i+1}|/(r_i + r_{i+1}), and it should be smaller than 0.2, according to Haidvogel and Beckmann. But if in this inequality you make r_{i+1} = 0, you have
|r_i - 0|/(r_i + 0) = r_i/r_i = 1, and this is never going to be less than 0.2.
I hope it helps.
Marcos Cobas Garcia
Centro de Supercomputación de Galicia
A Coruna (Spain)
Re: zeros in bathymetry
Once you have created your grid file and you have your land mask set, you should set all the land values to the minimum ocean depth. Then, ROMS can just simply mask out all of your land points.
I found this to be particularly important when implementing point sources as rivers at the land/sea boundary, since computations are being done as a flux through the grid cell wall. Using random values for your depths could create some issues if your point source fluxes are applied through all levels (since it ROMS computes the change in depths across grid cells). I was having blow up problems using land values as negative depths, and once I set all land values to the minimum ocean depth, the problems were alleviated.
I found this to be particularly important when implementing point sources as rivers at the land/sea boundary, since computations are being done as a flux through the grid cell wall. Using random values for your depths could create some issues if your point source fluxes are applied through all levels (since it ROMS computes the change in depths across grid cells). I was having blow up problems using land values as negative depths, and once I set all land values to the minimum ocean depth, the problems were alleviated.
Re: zeros in bathymetry
I now compute this by not checking the land values. Take the case of a fjord where you have deep water adjacent to the land. You don't want your smoother to smooth the fjord into being shallow - and you don't need to with the land points not contributing to the pressure gradients. You do need to set your land mask first, however.mcobas wrote:I have always thought you can't have any zeros in your bathymetry. If you do, the slope parameter condition will never be met, unless all the points in your bathymetry are all zero.
Also, for a modern ROMS vertical coordinate, we can get by with larger values of this parameter and frequently run with values of 0.4 or even greater.
Re: zeros in bathymetry
What do you mean with that? How do you assess whether you can or not?kate wrote: Also, for a modern ROMS vertical coordinate, we can get by with larger values of this parameter and frequently run with values of 0.4 or even greater.
- arango
- Site Admin
- Posts: 1129
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: IMCS, Rutgers University
- Contact:
Re: zeros in bathymetry
No an easy task, indeed The parameter space is really tricky involving horizontal and vertical resolution, nonlinear stretching of the vertical coordinate, bathymetry complexity and smoothing, bathymetry stiffness, r-factors, pressure-gradient errors, pressure gradient formulation and algorithm, horizontal advection of tracers, mixing tensors, numerical diapycnal mixing, conservation of water masses T-S properties, and other exotic terms like the Joint Effect of Baroclinicity and bottom Relief (JEBAR).
We cannot recommend a particular range of values for the vertical stretching parameters or associated bathymetry smoothing. The only recommendation that I can give you is to increase horizontal resolution when in doubt. The real question is what kind of pressure-gradient errors can you tolerate in your application? What is the scope and time scales? Is this is a climatological application running for decades?
You can configure your application with very steep bathymetry and high r-factors, but you always need to run test cases to quantify the magnitude of the pressure-gradient error, and decide if this is not affecting your solution or destroying the water masses characteristics. I always do the horizontal homogeneous density case to check the magnitude of the errors that are native to terrain-following coordinates. Recall that under horizontal homogeneous density conditions, the fluid have zero pressure-gradient and currents, if no additional external forcing is exerted.
Users tend to ignore that setting new applications require a set of systematic tests to check the accuracy and credibility of the solution. This is what differentiate superior from inferior numerical solutions ...
By the way, you cannot have zero bathymetry even during wetting and drying. In that case, we just add a finite small value. We cannot have zero vertical level thickness, Hz, in ROMS. Then, recall that the level thickness in terrain-following models is a functional of the bathymetry.
We cannot recommend a particular range of values for the vertical stretching parameters or associated bathymetry smoothing. The only recommendation that I can give you is to increase horizontal resolution when in doubt. The real question is what kind of pressure-gradient errors can you tolerate in your application? What is the scope and time scales? Is this is a climatological application running for decades?
You can configure your application with very steep bathymetry and high r-factors, but you always need to run test cases to quantify the magnitude of the pressure-gradient error, and decide if this is not affecting your solution or destroying the water masses characteristics. I always do the horizontal homogeneous density case to check the magnitude of the errors that are native to terrain-following coordinates. Recall that under horizontal homogeneous density conditions, the fluid have zero pressure-gradient and currents, if no additional external forcing is exerted.
Users tend to ignore that setting new applications require a set of systematic tests to check the accuracy and credibility of the solution. This is what differentiate superior from inferior numerical solutions ...
By the way, you cannot have zero bathymetry even during wetting and drying. In that case, we just add a finite small value. We cannot have zero vertical level thickness, Hz, in ROMS. Then, recall that the level thickness in terrain-following models is a functional of the bathymetry.
Re: zeros in bathymetry
thank you all very much for your thoughts and suggestions! they are very illuminating and i will try to implement my bathymetry along the lines of your remarks!
- jivica
- Posts: 137
- Joined: Mon May 05, 2003 2:41 pm
- Location: The University of Western Australia, Perth, Australia
Re: zeros in bathymetry
As Hernan suggested run the case with some zero forcing and vertical (stable) density profile to see HPGE (Horizontal Pressure Gradient Error) effect. Just 10cents to the topic; you can afford higher rx0 in shallow region than in deeper (I do smoothing with different rx0 target in different regions or if you want depth sensitive) and btw rx0 will not kill you at the first place, it's going to be rx1 which depends not only on bathymetry (number of vertical levels, type of vertical trans., density....) so bear that in mind when constructing vertical grid parameters.
Cheers,
Ivica
Cheers,
Ivica