# [Gmsh] How to have structured mesh with holes on plane surface?

Christophe Geuzaine geuzaine at gmail.com
Sun Mar 25 09:17:17 CEST 2018

```
> On 14 Mar 2018, at 18:45, tadej -ivan Zecevic <tady57 at gmail.com> wrote:
>
> Hi,
>
> I am trying to create structured quad mesh on the plane surface with 2 holes on it. I have tried a lot of things(transfinite surface, adding some lines and points, changing size of elements...). Can anyone help me or give some links?  This is my .geo file:

For a fully structured mesh you'll need to subdivide your surface into pieces with 3 or 4 curves on each side. Then you can specify

Transfinite Line{:} = 10;
Recombine Surface{:};
Transfinite Surface{:};

For an unstructured quad mesh, set

Mesh.RecombineAll = 0;
Mesh.SubdivisionAlgorithm = 1;

Christophe

>
> // Gmsh project created on Wed Mar 14 18:32:44 2018
> cl__1 = 1e+22;
> Point(17) = {0, 0, 0, cl__1};
> Point(18) = {1200, 0, 0, cl__1};
> Point(19) = {1200, 0, 200, cl__1};
> Point(20) = {0, 0, 200, cl__1};
> Point(21) = {250, 0, 140, cl__1};
> Point(22) = {350, 0, 140, cl__1};
> Point(23) = {350, 0, 60, cl__1};
> Point(24) = {250, 0, 60, cl__1};
> Point(25) = {800, 0, 70, cl__1};
> Point(26) = {1000, 0, 70, cl__1};
> Point(27) = {800, 0, 130, cl__1};
> Point(28) = {1000, 0, 130, cl__1};
> p17 = newp;
> Point(p17 + 1) = {60.00000000000006, 0, 0};
> Point(p17 + 2) = {120, 0, 0};
> Point(p17 + 3) = {180, 0, 0};
> Point(p17 + 4) = {239.9999999999999, 0, 0};
> Point(p17 + 5) = {300, 0, 0};
> Point(p17 + 6) = {360.0000000000001, 0, 0};
> Point(p17 + 7) = {420, 0, 0};
> Point(p17 + 8) = {480, 0, 0};
> Point(p17 + 9) = {540, 0, 0};
> Point(p17 + 10) = {600, 0, 0};
> Point(p17 + 11) = {660, 0, 0};
> Point(p17 + 12) = {720, 0, 0};
> Point(p17 + 13) = {780, 0, 0};
> Point(p17 + 14) = {840, 0, 0};
> Point(p17 + 15) = {900, 0, 0};
> Point(p17 + 16) = {960, 0, 0};
> Point(p17 + 17) = {1020, 0, 0};
> Point(p17 + 18) = {1080, 0, 0};
> Point(p17 + 19) = {1140, 0, 0};
> Spline(17) = {17, p17 + 1, p17 + 2, p17 + 3, p17 + 4, p17 + 5, p17 + 6, p17 + 7, p17 + 8, p17 + 9, p17 + 10, p17 + 11, p17 + 12, p17 + 13, p17 + 14, p17 + 15, p17 + 16, p17 + 17, p17 + 18, p17 + 19, 18};
> p18 = newp;
> Point(p18 + 1) = {1200, 0, 10.00000000000001};
> Point(p18 + 2) = {1200, 0, 20};
> Point(p18 + 3) = {1200, 0, 30};
> Point(p18 + 4) = {1200, 0, 39.99999999999999};
> Point(p18 + 5) = {1200, 0, 50};
> Point(p18 + 6) = {1200, 0, 60.00000000000001};
> Point(p18 + 7) = {1200, 0, 70};
> Point(p18 + 8) = {1200, 0, 80};
> Point(p18 + 9) = {1200, 0, 89.99999999999999};
> Point(p18 + 10) = {1200, 0, 100};
> Point(p18 + 11) = {1200, 0, 110};
> Point(p18 + 12) = {1200, 0, 120};
> Point(p18 + 13) = {1200, 0, 130};
> Point(p18 + 14) = {1200, 0, 140};
> Point(p18 + 15) = {1200, 0, 150};
> Point(p18 + 16) = {1200, 0, 160};
> Point(p18 + 17) = {1200, 0, 170};
> Point(p18 + 18) = {1200, 0, 180};
> Point(p18 + 19) = {1200, 0, 190};
> Spline(18) = {18, p18 + 1, p18 + 2, p18 + 3, p18 + 4, p18 + 5, p18 + 6, p18 + 7, p18 + 8, p18 + 9, p18 + 10, p18 + 11, p18 + 12, p18 + 13, p18 + 14, p18 + 15, p18 + 16, p18 + 17, p18 + 18, p18 + 19, 19};
> p19 = newp;
> Point(p19 + 1) = {1140, 0, 200};
> Point(p19 + 2) = {1080, 0, 200};
> Point(p19 + 3) = {1020, 0, 200};
> Point(p19 + 4) = {960, 0, 200};
> Point(p19 + 5) = {900, 0, 200};
> Point(p19 + 6) = {840, 0, 200};
> Point(p19 + 7) = {780, 0, 200};
> Point(p19 + 8) = {720, 0, 200};
> Point(p19 + 9) = {660, 0, 200};
> Point(p19 + 10) = {600, 0, 200};
> Point(p19 + 11) = {540, 0, 200};
> Point(p19 + 12) = {480, 0, 200};
> Point(p19 + 13) = {420, 0, 200};
> Point(p19 + 14) = {360, 0, 200};
> Point(p19 + 15) = {300, 0, 200};
> Point(p19 + 16) = {240, 0, 200};
> Point(p19 + 17) = {180, 0, 200};
> Point(p19 + 18) = {120, 0, 200};
> Point(p19 + 19) = {60, 0, 200};
> Spline(19) = {19, p19 + 1, p19 + 2, p19 + 3, p19 + 4, p19 + 5, p19 + 6, p19 + 7, p19 + 8, p19 + 9, p19 + 10, p19 + 11, p19 + 12, p19 + 13, p19 + 14, p19 + 15, p19 + 16, p19 + 17, p19 + 18, p19 + 19, 20};
> p20 = newp;
> Point(p20 + 1) = {0, 0, 190};
> Point(p20 + 2) = {0, 0, 180};
> Point(p20 + 3) = {0, 0, 170};
> Point(p20 + 4) = {0, 0, 160};
> Point(p20 + 5) = {0, 0, 150};
> Point(p20 + 6) = {0, 0, 140};
> Point(p20 + 7) = {0, 0, 130};
> Point(p20 + 8) = {0, 0, 120};
> Point(p20 + 9) = {0, 0, 110};
> Point(p20 + 10) = {0, 0, 100};
> Point(p20 + 11) = {0, 0, 89.99999999999999};
> Point(p20 + 12) = {0, 0, 80};
> Point(p20 + 13) = {0, 0, 70};
> Point(p20 + 14) = {0, 0, 60};
> Point(p20 + 15) = {0, 0, 50};
> Point(p20 + 16) = {0, 0, 40};
> Point(p20 + 17) = {0, 0, 30};
> Point(p20 + 18) = {0, 0, 20};
> Point(p20 + 19) = {0, 0, 10};
> Spline(20) = {20, p20 + 1, p20 + 2, p20 + 3, p20 + 4, p20 + 5, p20 + 6, p20 + 7, p20 + 8, p20 + 9, p20 + 10, p20 + 11, p20 + 12, p20 + 13, p20 + 14, p20 + 15, p20 + 16, p20 + 17, p20 + 18, p20 + 19, 17};
> p21 = newp;
> Point(p21 + 1) = {255, 0, 140};
> Point(p21 + 2) = {260, 0, 140};
> Point(p21 + 3) = {265, 0, 140};
> Point(p21 + 4) = {270, 0, 140};
> Point(p21 + 5) = {275, 0, 140};
> Point(p21 + 6) = {280, 0, 140};
> Point(p21 + 7) = {285, 0, 140};
> Point(p21 + 8) = {290, 0, 140};
> Point(p21 + 9) = {295, 0, 140};
> Point(p21 + 10) = {300, 0, 140};
> Point(p21 + 11) = {305, 0, 140};
> Point(p21 + 12) = {310, 0, 140};
> Point(p21 + 13) = {315, 0, 140};
> Point(p21 + 14) = {320, 0, 140};
> Point(p21 + 15) = {325, 0, 140};
> Point(p21 + 16) = {330, 0, 140};
> Point(p21 + 17) = {335, 0, 140};
> Point(p21 + 18) = {340, 0, 140};
> Point(p21 + 19) = {345, 0, 140};
> Spline(21) = {21, p21 + 1, p21 + 2, p21 + 3, p21 + 4, p21 + 5, p21 + 6, p21 + 7, p21 + 8, p21 + 9, p21 + 10, p21 + 11, p21 + 12, p21 + 13, p21 + 14, p21 + 15, p21 + 16, p21 + 17, p21 + 18, p21 + 19, 22};
> p22 = newp;
> Point(p22 + 1) = {355.7967803356943, 0, 60.42226378331617};
> Point(p22 + 2) = {361.7524786974607, 0, 61.76547344877589};
> Point(p22 + 3) = {367.6506983860463, 0, 64.10497833310458};
> Point(p22 + 4) = {373.244344360205, 0, 67.44696338861091};
> Point(p22 + 5) = {378.2842720655851, 0, 71.71573352090972};
> Point(p22 + 6) = {382.5530419378688, 0, 76.75566096627479};
> Point(p22 + 7) = {385.8950262341719, 0, 82.34930618123006};
> Point(p22 + 8) = {388.2345299185913, 0, 88.2475246699065};
> Point(p22 + 9) = {389.5777380288357, 0, 94.20322147645763};
> Point(p22 + 10) = {390, 0, 100};
> Point(p22 + 11) = {389.5777380288357, 0, 105.7967785235425};
> Point(p22 + 12) = {388.2345299185914, 0, 111.7524753300936};
> Point(p22 + 13) = {385.8950262341718, 0, 117.6506938187701};
> Point(p22 + 14) = {382.5530419378689, 0, 123.2443390337252};
> Point(p22 + 15) = {378.284272065585, 0, 128.2842664790903};
> Point(p22 + 16) = {373.244344360205, 0, 132.5530366113891};
> Point(p22 + 17) = {367.6506983860463, 0, 135.8950216668954};
> Point(p22 + 18) = {361.7524786974607, 0, 138.2345265512241};
> Point(p22 + 19) = {355.7967803356943, 0, 139.5777362166838};
> Spline(22) = {23, p22 + 1, p22 + 2, p22 + 3, p22 + 4, p22 + 5, p22 + 6, p22 + 7, p22 + 8, p22 + 9, p22 + 10, p22 + 11, p22 + 12, p22 + 13, p22 + 14, p22 + 15, p22 + 16, p22 + 17, p22 + 18, p22 + 19, 22};
> p23 = newp;
> Point(p23 + 1) = {255, 0, 60};
> Point(p23 + 2) = {260, 0, 60};
> Point(p23 + 3) = {265, 0, 60};
> Point(p23 + 4) = {270, 0, 60};
> Point(p23 + 5) = {275, 0, 60};
> Point(p23 + 6) = {280, 0, 60};
> Point(p23 + 7) = {285, 0, 60};
> Point(p23 + 8) = {290, 0, 60};
> Point(p23 + 9) = {295, 0, 60};
> Point(p23 + 10) = {300, 0, 60};
> Point(p23 + 11) = {305, 0, 60};
> Point(p23 + 12) = {310, 0, 60};
> Point(p23 + 13) = {315, 0, 60};
> Point(p23 + 14) = {320, 0, 60};
> Point(p23 + 15) = {325, 0, 60};
> Point(p23 + 16) = {330, 0, 60};
> Point(p23 + 17) = {335, 0, 60};
> Point(p23 + 18) = {340, 0, 60};
> Point(p23 + 19) = {345, 0, 60};
> Spline(23) = {24, p23 + 1, p23 + 2, p23 + 3, p23 + 4, p23 + 5, p23 + 6, p23 + 7, p23 + 8, p23 + 9, p23 + 10, p23 + 11, p23 + 12, p23 + 13, p23 + 14, p23 + 15, p23 + 16, p23 + 17, p23 + 18, p23 + 19, 23};
> p24 = newp;
> Point(p24 + 1) = {244.20321895994, 0, 139.5777361135183};
> Point(p24 + 2) = {238.2475198800425, 0, 138.2345261139787};
> Point(p24 + 3) = {232.3492995438666, 0, 135.8950206489691};
> Point(p24 + 4) = {226.7556530854728, 0, 132.5530347874873};
> Point(p24 + 5) = {221.7157251411674, 0, 128.2842636858425};
> Point(p24 + 6) = {217.4469553262792, 0, 123.2443352022421};
> Point(p24 + 7) = {214.1049713906681, 0, 117.6506889885676};
> Point(p24 + 8) = {211.7654683324287, 0, 111.7524696401071};
> Point(p24 + 9) = {210.4222610426765, 0, 105.7967721842533};
> Point(p24 + 10) = {210.0000000000006, 0, 99.99999325650442};
> Point(p24 + 11) = {210.422262909218, 0, 94.20321409978459};
> Point(p24 + 12) = {211.7654719047016, 0, 88.24751680155035};
> Point(p24 + 13) = {214.1049763753455, 0, 82.3492980596947};
> Point(p24 + 14) = {217.446961293809, 0, 76.75565292392081};
> Point(p24 + 15) = {221.7157315457855, 0, 71.71572595929101};
> Point(p24 + 16) = {226.755659309725, 0, 67.4469567340559};
> Point(p24 + 17) = {232.3493049599832, 0, 64.10497298225943};
> Point(p24 + 18) = {238.247523914033, 0, 61.76546971847601};
> Point(p24 + 19) = {244.203221143439, 0, 60.42226187756398};
> Spline(24) = {21, p24 + 1, p24 + 2, p24 + 3, p24 + 4, p24 + 5, p24 + 6, p24 + 7, p24 + 8, p24 + 9, p24 + 10, p24 + 11, p24 + 12, p24 + 13, p24 + 14, p24 + 15, p24 + 16, p24 + 17, p24 + 18, p24 + 19, 24};
> p25 = newp;
> Point(p25 + 1) = {810, 0, 70};
> Point(p25 + 2) = {820, 0, 70};
> Point(p25 + 3) = {830, 0, 70};
> Point(p25 + 4) = {840, 0, 70};
> Point(p25 + 5) = {850, 0, 70};
> Point(p25 + 6) = {860, 0, 70};
> Point(p25 + 7) = {870, 0, 70};
> Point(p25 + 8) = {880, 0, 70};
> Point(p25 + 9) = {890, 0, 70};
> Point(p25 + 10) = {900, 0, 70};
> Point(p25 + 11) = {910, 0, 70};
> Point(p25 + 12) = {920, 0, 70};
> Point(p25 + 13) = {930, 0, 70};
> Point(p25 + 14) = {940, 0, 70};
> Point(p25 + 15) = {950, 0, 70};
> Point(p25 + 16) = {960, 0, 70};
> Point(p25 + 17) = {970, 0, 70};
> Point(p25 + 18) = {980, 0, 70};
> Point(p25 + 19) = {990, 0, 70};
> Spline(25) = {25, p25 + 1, p25 + 2, p25 + 3, p25 + 4, p25 + 5, p25 + 6, p25 + 7, p25 + 8, p25 + 9, p25 + 10, p25 + 11, p25 + 12, p25 + 13, p25 + 14, p25 + 15, p25 + 16, p25 + 17, p25 + 18, p25 + 19, 26};
> p26 = newp;
> Point(p26 + 1) = {795.6524153293051, 0, 129.683303514453};
> Point(p26 + 2) = {791.1856418686525, 0, 128.6758973832092};
> Point(p26 + 3) = {786.7619771674225, 0, 126.9212694998612};
> Point(p26 + 4) = {782.5667425665528, 0, 124.4147810815324};
> Point(p26 + 5) = {778.7867965644039, 0, 121.2132034355966};
> Point(p26 + 6) = {775.5852189184677, 0, 117.4332574334478};
> Point(p26 + 7) = {773.0787305001388, 0, 113.2380228325778};
> Point(p26 + 8) = {771.324102616791, 0, 108.814358131348};
> Point(p26 + 9) = {770.3166964855469, 0, 104.3475846706953};
> Point(p26 + 10) = {770.0000000000001, 0, 100.0000000000004};
> Point(p26 + 11) = {770.316696485547, 0, 95.65241532930558};
> Point(p26 + 12) = {771.3241026167907, 0, 91.18564186865277};
> Point(p26 + 13) = {773.0787305001385, 0, 86.76197716742278};
> Point(p26 + 14) = {775.5852189184675, 0, 82.56674256655269};
> Point(p26 + 15) = {778.7867965644034, 0, 78.78679656440376};
> Point(p26 + 16) = {782.5667425665522, 0, 75.58521891846787};
> Point(p26 + 17) = {786.7619771674224, 0, 73.07873050013889};
> Point(p26 + 18) = {791.1856418686523, 0, 71.3241026167908};
> Point(p26 + 19) = {795.652415329305, 0, 70.31669648554697};
> Spline(26) = {27, p26 + 1, p26 + 2, p26 + 3, p26 + 4, p26 + 5, p26 + 6, p26 + 7, p26 + 8, p26 + 9, p26 + 10, p26 + 11, p26 + 12, p26 + 13, p26 + 14, p26 + 15, p26 + 16, p26 + 17, p26 + 18, p26 + 19, 25};
> p27 = newp;
> Point(p27 + 1) = {810, 0, 130};
> Point(p27 + 2) = {820, 0, 130};
> Point(p27 + 3) = {830, 0, 130};
> Point(p27 + 4) = {840, 0, 130};
> Point(p27 + 5) = {850, 0, 130};
> Point(p27 + 6) = {860, 0, 130};
> Point(p27 + 7) = {870, 0, 130};
> Point(p27 + 8) = {880, 0, 130};
> Point(p27 + 9) = {890, 0, 130};
> Point(p27 + 10) = {900, 0, 130};
> Point(p27 + 11) = {910, 0, 130};
> Point(p27 + 12) = {920, 0, 130};
> Point(p27 + 13) = {930, 0, 130};
> Point(p27 + 14) = {940, 0, 130};
> Point(p27 + 15) = {950, 0, 130};
> Point(p27 + 16) = {960, 0, 130};
> Point(p27 + 17) = {970, 0, 130};
> Point(p27 + 18) = {980, 0, 130};
> Point(p27 + 19) = {990, 0, 130};
> Spline(27) = {27, p27 + 1, p27 + 2, p27 + 3, p27 + 4, p27 + 5, p27 + 6, p27 + 7, p27 + 8, p27 + 9, p27 + 10, p27 + 11, p27 + 12, p27 + 13, p27 + 14, p27 + 15, p27 + 16, p27 + 17, p27 + 18, p27 + 19, 28};
> p28 = newp;
> Point(p28 + 1) = {1004.347585780045, 0, 70.31669791486128};
> Point(p28 + 2) = {1008.814360089968, 0, 71.32410541451598};
> Point(p28 + 3) = {1013.2380253421, 0, 73.07873451327315};
> Point(p28 + 4) = {1017.433260185896, 0, 75.58522390938454};
> Point(p28 + 5) = {1021.213206144124, 0, 78.78680223561817};
> Point(p28 + 6) = {1024.414783505291, 0, 82.56674859831843};
> Point(p28 + 7) = {1026.921271456999, 0, 86.76198325857436};
> Point(p28 + 8) = {1028.675898750678, 0, 91.18564776991978};
> Point(p28 + 9) = {1029.683304217993, 0, 95.6524208618101};
> Point(p28 + 10) = {1030, 0, 100.0000050576218};
> Point(p28 + 11) = {1029.683302818087, 0, 104.3475894251616};
> Point(p28 + 12) = {1028.675896071474, 0, 108.8143623988373};
> Point(p28 + 13) = {1026.921267718491, 0, 113.2380264552291};
> Point(p28 + 14) = {1024.414779029643, 0, 117.4332603070595};
> Point(p28 + 15) = {1021.213201340661, 0, 121.2132055305318};
> Point(p28 + 16) = {1017.433255517706, 0, 124.4147824494581};
> Point(p28 + 17) = {1013.238021280012, 0, 126.9212702633054};
> Point(p28 + 18) = {1008.814357064475, 0, 128.675897711143};
> Point(p28 + 19) = {1004.347584142421, 0, 129.683303591827};
> Spline(28) = {26, p28 + 1, p28 + 2, p28 + 3, p28 + 4, p28 + 5, p28 + 6, p28 + 7, p28 + 8, p28 + 9, p28 + 10, p28 + 11, p28 + 12, p28 + 13, p28 + 14, p28 + 15, p28 + 16, p28 + 17, p28 + 18, p28 + 19, 28};
>
> Line Loop(5) = {17, 18, 19, 20};
> Line Loop(19) ={25,28,-27,26};
> Line Loop(20)={21,-22,-23,-24};
> Plane Surface(5) = {5,19,20};
>
>
> Thank you,