trixi-framework / HOHQMesh

High Order Hex-Quad Mesh (HOHQMesh) package to automatically generate all-quadrilateral meshes with high order boundary information.
https://trixi-framework.github.io/HOHQMesh
Other
45 stars 8 forks source link

Implement subdivision check #38

Closed DavidAKopriva closed 2 years ago

DavidAKopriva commented 2 years ago

Finds the number of refinements necessary to resolve boundary curves. If that number is larger than maxLevelLimit (currently 8, for a size ratio of 256) then a fatal error is posted with a message to rerun with the sLimit flag. Plus a warning to think before doing it. No auto testing for this feature is added yet.

codecov[bot] commented 2 years ago

Codecov Report

Merging #38 (113d8dd) into main (c6e2f06) will increase coverage by 0.05%. The diff coverage is 76.00%.

@@            Coverage Diff             @@
##             main      #38      +/-   ##
==========================================
+ Coverage   67.55%   67.61%   +0.05%     
==========================================
  Files          68       68              
  Lines       10203    10261      +58     
==========================================
+ Hits         6893     6938      +45     
- Misses       3310     3323      +13     
Flag Coverage Δ
unittests 67.61% <76.00%> (+0.05%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
Source/HOHQMesh.f90 65.57% <0.00%> (-0.55%) :arrow_down:
Source/Project/MeshProject.f90 71.31% <45.45%> (-0.79%) :arrow_down:
Source/HOHQMeshMain.f90 47.54% <50.00%> (+0.08%) :arrow_up:
Source/QuadTreeGrid/QuadTreeGridGenerator.f90 79.16% <66.66%> (ø)
Source/QuadTreeGrid/QuadTreeGridClass.f90 78.75% <71.42%> (-0.78%) :arrow_down:
Source/Project/Sizer/Sizer.f90 78.59% <96.77%> (+1.53%) :arrow_up:
...rves/DiscreteCurves/ChainedSegmentedCurveClass.f90 54.31% <100.00%> (+1.68%) :arrow_up:
Source/Mesh/MeshGeneratorMethods.f90 77.56% <100.00%> (+0.05%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update c6e2f06...113d8dd. Read the comment docs.

DavidAKopriva commented 2 years ago

One other thing: Right now the level check is only done for sizing related to the boundary curves. Refinement regions and bottom topography are not checked. They are 2D "features" and are not amenable to a-priori testing. They can be tested when sizing is done, with either a warning (no more subdivisions done) or fatal. It's not as easy to estimate how many levels might be needed. And one would only want to post a single notification rather than every time at every point. So It may have some usefulness, but would be limited.

andrewwinters5000 commented 2 years ago

Right now the level check is only done for sizing related to the boundary curves. Refinement regions and bottom topography are not checked.

Checking the refinement regions might be overkill, but checking the bottom curvature could be interesting. Although that is very application specific and might not need to live in main. I would aim to keep a philosophy that things that make sense in 2D for quad meshes should live in main but specialization to 3D extruded meshes are more experimental. What do you think @fluidnumerics-joe ?

DavidAKopriva commented 2 years ago

Actually, the latest commit checks during the course of the calculation and bails when the refinement limit is breached. This will handle the bottom topography and refinement regions.

fluidnumerics-joe commented 2 years ago

I think that if HOHQMesh supports 3-D meshing, even if it through simple extrusions, we ought to do what we can to cover scenarios for all methods of refinement. It sounds like this is covered via the last commit, which is good.