dangling edges in refined hexahedral grid
i would like to perform local refinement of hexahedral grid in octtree-like structure. my concern is that this approach generates dangling edges (or faces, in 3d) where a refined cell is adjacent to a coarser cell.
how do i handle the situation in the attached pic? to the right of the coarse face F0, two fine faces F1 and F2 have created an extra vertex V3.
if V3 is not a vertex of F0 this mesh is invalid, isn't it? do i have to replace the quadrilateral F0 with the pentagon V0-V1-V2-V3-V4? then the angle V4-V3-V2 is 180°. does this impose an accuracy or mesh orthogonality problem?
in general, what is the best approach to locally refine hexahedral meshes? this seems to be standard in gerris (see below), but i have no idea how to work with dangling
edges in openfoam.
example from gerris:
Well, this isn't exactly a 'dangling' entity. One of the benefits to having polyhedral mesh support is the fact that you can pull-off stunts like this quite easily. It looks like you've already grasped the general idea - the 'pentagon' V0-V1-V2-V3-V4 is exactly how it should be.
In general, finite-volume codes don't have the 180-degree restrictions for adjacent cell-faces. What's important is the mesh-orthogonality. In this case, there might be a slight deviation of the cell-to-cell vector away from the face centroid (like the F0-F2 vector for face V3-V4), but non-orthogonal corrections can account for that.
OpenFOAM already has this capability, using dynamicRefineFvMesh.
If you actually generated a mesh like this (with dangling edges) and it's causing you trouble, there is a way to fix it.
Ages ago I've written a utility to do just that, when we were moving FOAM onto full polyhedral support. It is called zipUpMesh and works without trouble.
By the bye, this is one of the most complex algorithm I've ever written - there is a special award if you can document how it does the job on the wiki (I'm not sure I would be able to write it down myself) :)
|All times are GMT -4. The time now is 13:40.|