Open saeed-moghimi-noaa opened 6 months ago
tagging @feiye-vims in case he has any other requirement
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:
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:
non-eddy zone = mean slope inflection point VS. non-eddy zone= contour polygon area inflection point:
These different criteria results in the non-eddy zones:
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:
Delineating transition zones: In this case the transition zones would be the difference between eddy and non-eddy:
The final product would be something like:
These different polygons could then be taken by OCSMesh to create 3 different meshes following the mesh criteria for each zone.
@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.
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.
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.
@felicio93 Good progress! Thanks
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.:
Non-Eddying Regime
Result:
Transition Zone
Information from Joseph's "Mesh generation for Eddying and Transitional Regime" (MSCI602) class:
Example:
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.)