noaa-ocs-modeling / OCSMesh

OCSMesh is a mesh preparation tool for coastal ocean modeling applications.
https://noaa-ocs-modeling.github.io/OCSMesh/
Creative Commons Zero v1.0 Universal
13 stars 8 forks source link

Ocean side mesh: Eddy regime / non-eddy / Transition Ocean Mesh #149

Open saeed-moghimi-noaa opened 6 months ago

felicio93 commented 6 months ago

Eddying Regime

Information from Joseph's "Mesh generation for Eddying and Transitional Regime" (MSCI602) class:

Why?:

The mesh should be "featureless" (do not follow the bathymetry), e.g.:

Image

Non-Eddying Regime

Image

Result:

Image

Transition Zone

Information from Joseph's "Mesh generation for Eddying and Transitional Regime" (MSCI602) class:

Image

Image

Example:

Image

Non-Eddying Regime From a mesh gen perspective these nearshore areas can be treated as overland areas (i.e. resolution can vary with slope, channels, depth, etc.)

felicio93 commented 4 months ago

tagging @feiye-vims in case he has any other requirement

felicio93 commented 2 weeks ago

Here is an updated on a first idea of how this could work

In summary: 1) eddy-regime zones: should be featureless with horizontal resolution >> depth 2) non-eddy regime zones: for meshing purposes it can be treated as overland (i.e., variable resolution as a function of depth/slope/channels/etc.) 3) transition zones: between eddy and non-eddy, usually high slope, usually narrow.

With this in mind I started to put together some simple functions based on the DEM/Slope: Image

Delineating non-eddy-regime zones: Using rasterio (see https://github.com/noaa-ocs-modeling/OCSMesh/issues/164), I can convert the DEM to a shapefile of contourline polygons (let's say every 10 m). Then with rasterstats I can extract extract raster statistics to each polygon (e.g. mean, max, min, median, etc). So at the end I have a geopandas dataframe that has polygon of contourlines (every 10 m), and at each polygon I have slope info (e.g. means slope). I can also calcualte the area of each polygon

So, with this dataframe I can find an inflection point where slopes start to get step or the areas start to become small. Here are two examples criteria:

Delineating eddy-regime zones: I tried different things for delineating eddy-regime zones, but it seems that the simplest approach is to define eddy-regime zones based on a threshold depth and then the eddy regime mesh resolution on a simple multiplication that ensures that the horizontal resolution will be >> than the depth (e.g. depth * 10). So, let's say I want a open ocean mesh with a featureless 5km resolution, I would define the >-500 isobath as the threshold. This is how this would look like: Image

Delineating transition zones: In this case the transition zones would be the difference between eddy and non-eddy: Image

The final product would be something like: Image

These different polygons could then be taken by OCSMesh to create 3 different meshes following the mesh criteria for each zone.

felicio93 commented 2 weeks ago

@feiye-vims and @josephzhang8 do you think this makes sense? I put some time on it as I waited for the next steps on the STOFS 3D setup for the paper. I will go back to it now that Fei added more steps.

This is just a first idea, please let me know what you think.

feiye-vims commented 2 weeks ago

This looks really good. Previously, we've been relying on visual inspection to manually delineate the interface between eddying and non-eddying regimes. Automating this step is a big advance and the different zones identified by your algorithm look very reasonable.

Of course, we need to put into to test in a 3D model and make adjustment in the parameterization if necessary. But I see no obvious problems.

josephzhang8 commented 2 weeks ago

Thx @felicio93; this is a good first step for 3D meshing. I usually use a threshold depth with visual inspection of steep slopes to delineate the regimes. Your auto method may generate too many fragmented zones around islands - a good and rigorous tests would be in Pacific Ocean where there are many tiny islands. The most challenging part is the transition regime when it's highly compressed. I'm not sure how well your algo can handle that, so you'll need to test.

saeed-moghimi-noaa commented 2 days ago

@felicio93 Good progress! Thanks