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
52 stars 8 forks source link

Remove chain requirement for inner boundaries #50

Closed DavidAKopriva closed 2 years ago

DavidAKopriva commented 2 years ago

Inner boundary curves no longer have to be enclosed in a CHAIN block. A chain is only needed if multiple curves are connected to define an inner boundary. If a single curve defines an inner boundary, simply use that in place of a chain. If multiple curves make up the boundary, include them in a CHAIN. This eliminates a legacy requirement, makes more sense, and eliminates a model error when a CHAIN block is forgotten in the control file.

codecov[bot] commented 2 years ago

Codecov Report

Merging #50 (aab55af) into main (4dd7d6e) will increase coverage by 0.36%. The diff coverage is 96.00%.

@@            Coverage Diff             @@
##             main      #50      +/-   ##
==========================================
+ Coverage   67.63%   68.00%   +0.36%     
==========================================
  Files          68       68              
  Lines       10266    10275       +9     
==========================================
+ Hits         6943     6987      +44     
+ Misses       3323     3288      -35     
Flag Coverage Δ
unittests 68.00% <96.00%> (+0.36%) :arrow_up:

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

Impacted Files Coverage Δ
Source/Project/Model/SMModel.f90 75.72% <96.00%> (+0.26%) :arrow_up:
Source/Mesh/MeshCleaner.f90 67.70% <0.00%> (+0.26%) :arrow_up:
Source/Project/MeshProject.f90 71.58% <0.00%> (+0.26%) :arrow_up:
Source/Mesh/BoundaryEdgeCleaning.f90 83.44% <0.00%> (+1.32%) :arrow_up:
Source/IO/MeshOutputMethods.f90 87.43% <0.00%> (+17.48%) :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 4dd7d6e...aab55af. Read the comment docs.

DavidAKopriva commented 2 years ago

This PR eliminates one of the issues raised in Issue #49 , where the control file was malformed because inner curves were not defined within a CHAIN block. Rather than supply an error message, I've simply removed that requirement, and a CHAIN is needed only if multiple curves define an inner boundary. On the other hand, it doesn't hurt if a single curve is defined within a chain, so older control files are still valid.

andrewwinters5000 commented 2 years ago

This is a cool feature to add for HOHQMesh's capabilities. The ability to add elements around a "crack" could open a whole avenue of applications in wave propagation problems. I am worried that it may cause problems in some of the interactive mesh capabilities in HOHQMesh.jl. In particular, the check routines in src/Project/Project.jl that control for a valid project model within modelCurvesAreOK or modelChainIsOK I believe rely on closed curves.

We can add a tutorial example for a kind of "open" inner boundary curve, but these checks and other tutorials would need to updated when this "crack" feature is added to the main branch of HOHQMesh.

DavidAKopriva commented 2 years ago

This PR only addresses the issue of having to define all interior boundary curves as CHAINs. If a curve is not defined within a chain then a chain is now created for it automatically with the same name as the curve, and the curve must be closed by itself. Nothing has to be changed in the interactive tool, but a new addInnerBoundaryCurve function could be added that takes only the curve name, and that then passes it on to the old routine by duplicating the name as the chain name. A bit of a hack, I guess.