Transfinite Volume with > 5-6 faces
Dear all,
I would kindly appreciate any tips on how to overcome a modelling issue I'm having with a model.
I am trying to build the transfinite volume of a cuboid, the latter composed of many transfinite "subvolumes" (i.e., each surface being one hex element). I am having a hard time creating the 4 transfinite volume of the outer section:
Below I built an example with the problematic region. As you can see, it's a hexahedron made of 6 surfaces on the upper side, and only 1 surface on the bottom side. For connectivity reasons with the rest of the model (here not shown) I need the outer edges to be one single line. Hence I am composing surfaces with six lines on one side (Transfinite Curve = 1) and connecting them to one single line (with Transfinite Curve = 7) as suggested in t6. This works wonderfully in 2D with quad elements:
Things complicate with transfinite volumes since more than 6 faces are unsupported. I am trying to avoid subdividing the internal volumes into smaller 6-faced volumes at all costs because this would require hardcoding a lot of curve loops on the whole model (this being only the internal part of a bigger mesh).
Would you have any recommendations on how to proceed in order to build a full hex mesh? I was thinking about creating embedded points to build the smaller surfaces on the upper side, but I'm not sure this would work.
I attach below a MWE based on t6.geo, where I build a volume from a simple extrusion. Unfortunately in my model extrusions would not work, as the upper/lower surface will not share exactly the same (x, y) coords.
Best regards,
Simone
// ------------------------------------------------------------------------------
//
// Fully hexahedral transfinite volume with more than 6 faces - based on t6.geo
// POS, 18.04.2023
//
// Transfinite meshes
//
// ------------------------------------------------------------------------------
Point(1) = {0, 0, 0, 1.0};
Point(2) = {10, 0, 0, 1.0};
Point(3) = {2, 6, 0, 1.0};
Point(4) = {8, 6, 0, 1.0};
Point(5) = {3, 6, 0, 1.0};
Point(6) = {4, 6, 0, 1.0};
Point(7) = {5, 6, 0, 1.0};
Point(8) = {6, 6, 0, 1.0};
Point(9) = {7, 6, 0, 1.0};
//+
Line(1) = {1, 2};
Line(2) = {1, 3};
Line(3) = {3, 5};
Line(4) = {5, 6};
Line(5) = {6, 7};
Line(6) = {7, 8};
Line(7) = {8, 9};
Line(8) = {9, 4};
Line(9) = {4, 2};
//+
Curve Loop(1) = {1, -9, -8, -7, -6, -5, -4, -3, -2};
Plane Surface(1) = {1};
//+
Extrude {0, 0, 3} {
Curve{1}; Curve{2}; Curve{3}; Curve{4}; Curve{5}; Curve{6}; Curve{7}; Curve{8}; Curve{9};
}
// +
Curve Loop(2) = {10, -42, -38, -34, -30, -26, -22, -18, -14};
Plane Surface(46) = {2};
Surface Loop(1) = {13, 1, 45, 46, 41, 37, 33, 29, 25, 21, 17};
Volume(1) = {1};
// +
Transfinite Curve {1, 10} = 7 Using Progression 1;
Transfinite Curve {11, 12, 3, 16, 18, 20, 22, 24, 4, 5, 26, 28, 30, 32, 6, 7, 34, 36, 38, 40, 8} = 1 Using Progression 1;
Transfinite Curve {9, 2, 14, 42} = 5 Using Progression 1;
Transfinite Surface {:};
//+
Transfinite Surface {1} = {1, 3, 4, 2};
Transfinite Surface {46} = {10, 13, 25, 11};
//+
// This fails: .Error : Transfinite algorithm only available for 5- and 6-face volumes
// Info : 3D Meshing 1 volume with 1 connected component
// @.Warning : Aborted 3D meshing
// .Error : No elements in volume 1
//
// Transfinite Volume{1} = {1, 2, 4, 3, 10, 11, 25, 13};