Computational Science Asked on October 3, 2021
I am struggling to recombine the remaining triangular cells into unstructured quadrangular ones in this geometry using Gmsh. Do I need to add auxiliary lines somewhere or do some geometries just don’t allow these type of cells?
The .geo
script:
// Gmsh project created on Wed Jul 29 13:32:48 2020
SetFactory("OpenCASCADE");
//+
Point(1) = {-4.1, -2.7, 0, 1.0};
//+
Point(2) = {-3.6, -2.7, 0, 1.0};
//+
Point(3) = {3.6, -2.7, 0, 1.0};
//+
Point(4) = {4.1, -2.7, 0, 1.0};
//+
Point(5) = {4.1, -2.2, 0, 1.0};
//+
Point(6) = {4.1, 2.2, 0, 1.0};
//+
Point(7) = {4.1, 2.7, 0, 1.0};
//+
Point(8) = {3.6, 2.7, 0, 1.0};
//+
Point(9) = {-3.6, 2.7, 0, 1.0};
//+
Point(10) = {-4.1, 2.7, 0, 1.0};
//+
Point(11) = {-4.1, 2.2, 0, 1.0};
//+
Point(12) = {-4.1, -2.2, 0, 1.0};
//+
Point(13) = {-3.6, -2.2, 0, 1.0};
//+
Point(14) = {3.6, -2.2, 0, 1.0};
//+
Point(15) = {3.6, 2.2, 0, 1.0};
//+
Point(16) = {-3.6, 2.2, 0, 1.0};
//+
Line(1) = {1, 2};
//+
Line(2) = {2, 3};
//+
Line(3) = {3, 4};
//+
Line(4) = {4, 5};
//+
Line(5) = {5, 6};
//+
Line(6) = {6, 7};
//+
Line(7) = {7, 8};
//+
Line(8) = {8, 9};
//+
Line(9) = {9, 10};
//+
Line(10) = {10, 11};
//+
Line(11) = {11, 12};
//+
Line(12) = {12, 1};
//+
Line(13) = {13, 14};
//+
Line(14) = {14, 15};
//+
Line(15) = {15, 16};
//+
Line(16) = {16, 13};
//+
Line(17) = {12, 13};
//+
Line(18) = {13, 2};
//+
Line(19) = {14, 3};
//+
Line(20) = {14, 5};
//+
Line(21) = {15, 6};
//+
Line(22) = {15, 8};
//+
Line(23) = {16, 11};
//+
Line(24) = {16, 9};
//+
Point(17) = {-2.1, -0.7, 0, 1.0};
//+
Point(18) = {2.1, -0.7, 0, 1.0};
//+
Point(19) = {2.1, 0.7, 0, 1.0};
//+
Point(20) = {-2.1, 0.7, 0, 1.0};
//+
Point(21) = {-2.1, 0.5, 0, 1.0};
//+
Point(22) = {1.9, 0.5, 0, 1.0};
//+
Point(23) = {1.9, -0.5, 0, 1.0};
//+
Point(24) = {-2.1, -0.5, 0, 1.0};
//+
Line(25) = {17, 18};
//+
Line(26) = {18, 19};
//+
Line(27) = {19, 20};
//+
Line(28) = {20, 21};
//+
Line(29) = {21, 22};
//+
Line(30) = {22, 23};
//+
Line(31) = {23, 24};
//+
Line(32) = {24, 17};
//+
Curve Loop(1) = {11, 17, -16, 23};
//+
Plane Surface(1) = {1};
//+
Curve Loop(2) = {12, 1, -18, -17};
//+
Plane Surface(2) = {2};
//+
Curve Loop(3) = {2, -19, -13, 18};
//+
Plane Surface(3) = {3};
//+
Curve Loop(4) = {3, 4, -20, 19};
//+
Plane Surface(4) = {4};
//+
Curve Loop(5) = {14, 21, -5, -20};
//+
Curve Loop(6) = {14, 21, -5, -20};
//+
Plane Surface(5) = {6};
//+
Curve Loop(7) = {21, 6, 7, -22};
//+
Curve Loop(8) = {22, -7, -6, -21};
//+
Plane Surface(6) = {8};
//+
Curve Loop(9) = {15, 24, -8, -22};
//+
Curve Loop(10) = {27, 28, 29, 30, 31, 32, 25, 26};
//+
Curve Loop(11) = {15, 24, -8, -22};
//+
Plane Surface(7) = {11};
//+
Curve Loop(12) = {23, -10, -9, -24};
//+
Plane Surface(8) = {12};
//+
Curve Loop(13) = {16, 13, 14, 15};
//+
Curve Loop(14) = {27, 28, 29, 30, 31, 32, 25, 26};
//+
Plane Surface(9) = {13, 14};
//+
Transfinite Surface {1, 2, 3, 4, 5, 6, 7, 8};
//+
Transfinite Curve {12, 18, 1, 17, 19, 3, 4, 20, 21, 22, 6, 7, 23, 9, 10, 24} = 6 Using Progression 1;
//+
Transfinite Curve {13, 2, 16, 11, 15, 8, 14, 5} = 35 Using Progression 1;
//+
Recombine Surface {1, 2, 3, 4, 5, 6, 7, 8};
To get the triangles in the last surface Recombine
d into quadrilaterals, you simply need to add the surface #9 into the last line:
Recombine Surface {1, 2, 3, 4, 5, 6, 7, 8, 9};
This will result in:
Also, you might be interested in the
Mesh.RecombineAll = 1;
option. And playing with the 2-D Recombination algorithm via Mesh.RecombinationAlgorithm
might allow you to achieve elements that fit your purpose better (0: simple, 1: blossom, 2: simple full-quad, 3: blossom full-quad).
Unfortunately, you cannot make the surface #9 Transfinite
as well that easily (which would have enabled structured quadrilateral mesh).
The only solution I am aware of is to manually split #9 into several simple 4-corner surfaces.
However, the screenshot above seems to satisfy the requirements you have specified.
Correct answer by Anton Menshov on October 3, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP