Sea cliffs

Report or discuss software problems and other woes

Moderators: arango, robertson

Post Reply
Message
Author
User avatar
drews
Posts: 35
Joined: Tue Jun 19, 2007 3:32 pm
Location: National Center for Atmospheric Research
Contact:

Sea cliffs

#1 Unread post by drews »

What is the proper way for handling sea cliffs?

In the Philippines, at about 121.283 degrees East and 13.6 degrees North, there is a sea cliff that rises from the deep ocean. At 900-meter horizontal resolution (SRTM30 data) the north-south cross section of bathymetry/topography is plotted below. The numerical values for the topography here are (from south to north):

-491 meters (below sea level)
-515
-508
-493
-396
-288
+7 meters (above sea level)
+139

http://acd.ucar.edu/~drews/SeaCliff.png

Obviously the topography is very steep at the shoreline. ROMS reports Beckman numbers of Inf here, but I guess I can calculate rx0 by hand as (288 - 0.5) / (288 + 0.5) = 0.9965; way over the recommended maximum value of 0.4, but this is real topography. I think I would have to increase my horizontal resolution by a factor of 100 to achieve a better r-factor {(2.88 - 0.5) / (2.88 + 0.5) = 0.7}

I am blowing a strong wind from south to north (toward the cliff). DCRIT = 0.5 meters, N = 3 levels, and DT = 6.0 seconds. I'm using MY25_MIXING. There are two problems here:

1. When I mask out all land above 5 meters, ROMS generates a blowup error on the first time step. When I mask out all land above 10 meters (now including the 7-meter point), ROMS gets started okay. I can live with that - 7 meters is a pretty high storm surge but I don't mind calculating a few extra grid points along the coast. Question #1 is how should I set the land-sea masking in this case? Is it not possible to jump right out of the sea onto a masked-out land point?

2. When I allow the 7-meter point to be "sea" (wet or dry), ROMS runs for about 5 simulated hours before blowing up. The error is a CFL violation in the W-velocity at the 7-meter point; the vertical velocity there is about 3 times what the CFL criterion will permit. The free-surface height zeta is still 7.5 meters, so that grid point has not gotten wet yet. Question #2 is how can I avoid getting so much vertical velocity in my "draped" water?

Carl
Attachments
SeaCliff.png

User avatar
drews
Posts: 35
Joined: Tue Jun 19, 2007 3:32 pm
Location: National Center for Atmospheric Research
Contact:

Re: Sea cliffs

#2 Unread post by drews »

I just encountered the same problem again, this time on the volcanic island of Nakanoshima at lat-lon coordinates (29.875° North, 129.875° East). Nakanoshima is between Japan and Taiwan, and the summit of Mt. Ontake rises to 979 meters above sea level. With a grid resolution of 4 km, the grid has a high stiffness number here, and grid cells become very high right out of the water. These natural sea cliffs are very much unlike Florida, unless your topography includes tall buildings at the water's edge.

Symptoms: The island generates 1.5-meter waves starting at simulation time 0, and these waves then propagate throughout the domain. It's annoying and quite obviously wrong. This behavior occurs with time step = 1 second and wetting and drying turned on.

Solution: I was masking out all land higher than about 100 meters above sea level. I raised the masking level to 1000 meters and the problem disappeared. Now I can run with a time step of 10 seconds.

There are probably other solutions that involve smoothing the topography.

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Sea cliffs

#3 Unread post by kate »

Interesting questions and quite relevant to some of my new domains.

First of all, for something like your first example, what I do is mask out the land points and smooth the water points. There's more than one way to handle the land-sea interface in the smoothing operation, however. Because of some fjords, I want my smoother to just smooth the sea points with each other and not try to smooth across the transitition, even if one of our steps has traditionally been to set the depth of land points to shallow water depths. A 200 m fjord with a flat bottom should not need any smoothing even if surrounded by cliffs.

Why should your first test have failed then? I'm not sure.

In the case where it really does make sense to include wetting and drying, one needs a new way to compute the r-value. Since in the running of ROMS, you set the wet points to always be at least say 0.5 m deep, you can simply clamp depths to that depth when computing the r-value, but you'll still get crazy values in the shallows. A jump from 10 m to 0.5 m is still an r-value of 0.9, in the badly-behaved range. Being good about the r-value would require quite a buffer of grid points between the 10 m channel and the wet-dry shallows. Say you aim for 0.333 in the r-value, that means points at 0.5m, 1m, 2m, 4m, and 8m. What do people realistically do about this?

User avatar
jivica
Posts: 169
Joined: Mon May 05, 2003 2:41 pm
Location: The University of Western Australia, Perth, Australia
Contact:

Re: Sea cliffs

#4 Unread post by jivica »

If you care only about storm surge possibly you are happy with 2D barotropic case which has only N=! !!
What is killing you (blowup) is not rx0 but rx1, this is important to notice (i.e. density fields, number of vertical nodes, theta_b, ... all of them play a role). For wet_dry one have to be careful, I do smooth along the land as well.
Another point raised here is smoothing, what I do is a bit complex case (think that Kate's gang rewrote older version of our smoothing LP matlab scripts into python, they are improved nowdays though) and wrote cookbook recently to Rich and Thanos, so just shorter version, possibly you can benefit from it:
1) get naked grid (to follow coastal and bathy features, with denser cells in regions (gridgen, seagrid) I want and so on, if using data assimilation be careful with de-corellation times), at the boundary not smart to have non-orthogonal (John Wilkin's phd) etc..
2) get the best bathy for the region, if finer than grid use average of bathy points falling into each cell (not nearest or interpolation) or similar can give you peaks not fully representative for the cell.
3) now we get to the smoothing part;
3.1) first cut smoothing to get something still rough but without big spikes (use something fast like laplacian, volume conservative) i.e. get rx0 to 0.6-0.7 (depending on application, if using for internal tides have to have steep, spectrally -> "tides only case" can have steep, if for short time run can afford steep (HPGE-horizontal pressure gradient errors) still do not develop. On the other hand if running longer simulation than you have to smooth more, because HPGE plague solution in mean sense.
3.2) run ROMS with the grid for say week without any(!) forcing. just vertically stable your mean density field (i.e. T, S spatially avg for your region, can use analytical function as well). Then all currents that are induced after week have origin in HPGE. Look for the bottom ones, where pressure is big. Those are regions that I want to smooth more. Note that in shallow regions you can have bigger rx0 not inducing huge HPGE(!). Be familiar with magnitude of those velocities, they represent numerical noise.
3.3) create mask with regions that I want to smooth more (i.e. HPGE big -> magnitude of velocity > trash or weights for smoothing) ; trash depends on your application i.e. 5cm/s or less or whatever.
3.4) use another smoothing functions with mask as the argument (i.e. smooth in regions not in the whole domain) with appropriate weight as well, basically you end up with targeted rx0 which has dimension of "eta_rho,xi_rho" and smoothing weight with same dim-> smooth stronger/less at certain regions (i.e. function of HPGE magnitude)
3.5) use LP solver to smooth minimally, create new bathy and then goto step 3.2 again
use a few iterations to get to the optimal bathy that you are happy with.

Note (1) rx0 is not the one to blame for HPGE but rx1(!) which is hard to use as smoothing param as input (depends on many things), instead we use rx0 but at the end we do one more sweep to calculate rx1 and smooth at those regions if needed. You can have big rx1 if have strong density gradients...
So, you can use simple method with constant "targeted" rx0 (like people usually do) or you can invest more time/energy/nerves to get it right and than use for years (think of it as one time investment).

Good luck,
Ivica

prakash22
Posts: 24
Joined: Thu Jan 08, 2015 11:16 pm
Location: iit delhi

Re: Sea cliffs

#5 Unread post by prakash22 »

hello

I new in ROMS modelling. I have to run ROMS for storm-surge

I want to know how can I set masking level to a particular height

please could tell me where I have to set masking level

thanks
-ravi

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Sea cliffs

#6 Unread post by kate »

You're using SeaGrid, aren't you? It would be somewhere in that code. Then you need a version of editmask where you draw an isobath other than the coastline, say ten meters above sea level. Note that wetting and drying can introduce new instabilities depending on how you do bathymetry smoothing across mean sea level.

prakash22
Posts: 24
Joined: Thu Jan 08, 2015 11:16 pm
Location: iit delhi

Re: Sea cliffs

#7 Unread post by prakash22 »

Yes I am using seagrid

so Please could you tell me how can I get the version of editmask for change masking level

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Sea cliffs

#8 Unread post by kate »

Maybe someone else can answer. I only have it in Python.

prakash22
Posts: 24
Joined: Thu Jan 08, 2015 11:16 pm
Location: iit delhi

Re: Sea cliffs

#9 Unread post by prakash22 »

thank you so much kate.

my another question is that, In ROMS model storm surge is same as free surface or i have subtract means sea level height from free surface ?

Post Reply