diff --git a/benchmarks/3d/gasdis.geo b/benchmarks/3d/gasdis.geo new file mode 100644 index 0000000000000000000000000000000000000000..4c88a272530c4e4edc830c12fb54b0eb7a5cdf8a --- /dev/null +++ b/benchmarks/3d/gasdis.geo @@ -0,0 +1,217 @@ +//gasdis.geo +// + +//gas distribution ring + +//parameters + +mm=1e-3; +lc1=0.25*mm; + +bigrad=100*mm; +bigang=Pi/9; +tuberad=4*mm; +holerad=1*mm; +seglength=3*mm; + +Point(1) = {0.0,0.0,0.0,lc1}; +Point(2) = {tuberad,0.0,0.0,lc1}; +Point(3) = {-tuberad,0.0,0.0,lc1}; +Point(4) = {0,tuberad,0.0,lc1}; +Point(5) = {0,-tuberad,0.0,lc1}; + + +Rotate { {0,1,0},{0.0,0.0,0.0},Pi/6 } {Duplicata { Point{3}; }} +Rotate { {0,1,0},{0.0,0.0,0.0},-Pi/6 } {Duplicata { Point{3}; }} +Rotate { {0,0,1},{0.0,0.0,0.0},Pi/6 } {Duplicata { Point{3}; }} +Rotate { {0,0,1},{0.0,0.0,0.0},-Pi/6 } {Duplicata { Point{3}; }} + +Point(10)={-tuberad*Cos(Pi/6), 0, 0, lc1}; + +Circle(1) = {9,10,6}; +Circle(2) = {6,10,8}; +Circle(3) = {8,10,7}; +Circle(4) = {7,10,9}; + +Point(12) = {tuberad,0.0,seglength,lc1}; +Point(13) = {-tuberad,0.0,seglength,lc1}; +Point(14) = {0,tuberad,seglength,lc1}; +Point(15) = {0,-tuberad,seglength,lc1}; +Point(16) = {0,0,seglength,lc1}; + +Point(17) = {tuberad,0.0,-seglength,lc1}; +Point(18) = {-tuberad,0.0,-seglength,lc1}; +Point(19) = {0,tuberad,-seglength,lc1}; +Point(20) = {0,-tuberad,-seglength,lc1}; +Point(21) = {0,0,-seglength,lc1}; + + +Circle(6) = {13,16,14}; +Circle(7) = {14,16,12}; +Circle(8) = {12,16,15}; +Circle(9) = {15,16,13}; +Circle(10) = {18,21,19}; +Circle(11) = {19,21,17}; +Circle(12) = {17,21,20}; +Circle(13) = {20,21,18}; +Circle(14) = {9,1,4}; +Circle(15) = {4,1,2}; +Circle(16) = {2,1,5}; +Circle(17) = {5,1,8}; + +Point(22)={0,tuberad,-tuberad*Sin(Pi/6), lc1}; +Point(23)={0,-tuberad,-tuberad*Sin(Pi/6), lc1}; +Point(24)={tuberad,0,-tuberad*Sin(Pi/6), lc1}; +Point(25)={0,0,-tuberad*Sin(Pi/6), lc1}; + +Point(26)={0,tuberad,tuberad*Sin(Pi/6), lc1}; +Point(27)={0,-tuberad,tuberad*Sin(Pi/6), lc1}; +Point(28)={tuberad,0,tuberad*Sin(Pi/6), lc1}; + +Point(29)={0,0,tuberad*Sin(Pi/6), lc1}; + +Point(30)={-bigrad,tuberad,0, lc1}; +Point(31)={-bigrad,-tuberad,0, lc1}; +Point(32)={-bigrad,0,0, lc1}; + +Ellipse(18) = {6,29,26,26}; +Ellipse(19) = {7,25,22,22}; +Ellipse(20) = {6,29,27,27}; +Ellipse(21) = {7,25,23,23}; +Circle(22) = {26,29,28}; +Circle(23) = {28,29,27}; +Circle(24) = {22,25,24}; +Circle(25) = {24,25,23}; +Line(26) = {22,4}; +Line(27) = {4,26}; +Line(28) = {24,2}; +Line(29) = {2,28}; +Line(30) = {23,5}; +Line(31) = {5,27}; +Line(32) = {19,22}; +Line(33) = {20,23}; +Line(34) = {27,15}; +Line(35) = {28,12}; +Line(36) = {26,14}; +Line(37) = {18,7}; +Line(38) = {17,24}; +Line(39) = {6,13}; +Line Loop(40) = {17,-2,20,-31}; Ruled Surface(41) = {40}; +Line Loop(42) = {3,21,30,17}; Ruled Surface(43) = {42}; +Line Loop(44) = {37,21,-33,13}; Ruled Surface(45) = {44}; +Line Loop(46) = {19,-32,-10,37}; Ruled Surface(47) = {46}; +Line Loop(48) = {19,26,-14,-4}; Ruled Surface(49) = {48}; +Line Loop(50) = {14,27,-18,-1}; Ruled Surface(51) = {50}; +Line Loop(52) = {30,-16,-28,25}; Ruled Surface(53) = {52}; +Line Loop(54) = {31,-23,-29,16}; Ruled Surface(55) = {54}; +Line Loop(56) = {28,-15,-26,24}; Ruled Surface(57) = {56}; +Line Loop(58) = {32,24,-38,-11}; Ruled Surface(59) = {58}; +Line Loop(60) = {25,-33,-12,38}; Ruled Surface(61) = {60}; +Line Loop(62) = {27,22,-29,-15}; Ruled Surface(63) = {62}; +Line Loop(64) = {39,-9,-34,-20}; Ruled Surface(65) = {64}; +Line Loop(66) = {18,36,-6,-39}; Ruled Surface(67) = {66}; +Line Loop(68) = {36,7,-35,-22}; Ruled Surface(69) = {68}; +Line Loop(70) = {8,-34,-23,35}; Ruled Surface(71) = {70}; +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},bigang } {Duplicata { Surface{41,43, 45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }} +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},2*bigang } {Duplicata { Surface{41,43,45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }} +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},3*bigang } {Duplicata { Surface{41,43,45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }} +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},4*bigang } {Duplicata { Surface{41,43,45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }} +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},5*bigang } {Duplicata { Surface{41,43,45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }} +Rotate { {0.0,1.0,0.0},{-bigrad,0.0,0.0},6*bigang } {Duplicata { Surface{41,43,45,47,49,51,53,55,57, 59,61,63, 65, 67,69, 71}; }}Circle(534) = {1620,31,1168}; + +Circle(535) = {1615,32,1157}; +Circle(536) = {1658,32,1299}; +Circle(537) = {1640,30,1183}; +Circle(538) = {1349,31,897}; +Circle(539) = {1344,32,886}; +Circle(540) = {1369,30,912}; +Circle(541) = {1387,32,1028}; +Circle(542) = {1073,32,615}; +Circle(543) = {1116,32,757}; +Circle(544) = {1078,31,626}; +Circle(545) = {1098,30,641}; +Circle(546) = {802,32,344}; +Circle(547) = {807,31,355}; +Circle(548) = {827,30,370}; +Circle(549) = {845,32,486}; +Circle(550) = {531,32,73}; +Circle(551) = {215,32,574}; +Circle(552) = {99,30,556}; +Circle(553) = {536,31,84}; +Circle(554) = {260,32,18}; +Circle(555) = {17,32,303}; +Circle(556) = {20,31,265}; +Circle(557) = {285,30,19}; +Line Loop(558) = {534,433,-536,533}; +Ruled Surface(559) = {558}; +Line Loop(560) = {536,429,-537,529}; +Ruled Surface(561) = {560}; +Line Loop(562) = {534,394,-535,519}; +Ruled Surface(563) = {562}; +Line Loop(564) = {535,-398,-537,525}; +Ruled Surface(565) = {564}; +Line Loop(566) = {442,538,317,-539}; +Ruled Surface(567) = {566}; +Line Loop(568) = {539,-321,-540,448}; +Ruled Surface(569) = {568}; +Line Loop(570) = {540,-352,-541,-452}; +Ruled Surface(571) = {570}; +Line Loop(572) = {541,-356,-538,-456}; +Ruled Surface(573) = {572}; +Line Loop(574) = {542,-244,-545,371}; +Ruled Surface(575) = {574}; +Line Loop(576) = {545,-275,-543,-375}; +Ruled Surface(577) = {576}; +Line Loop(578) = {542,-240,-544,-365}; +Ruled Surface(579) = {578}; +Line Loop(580) = {544,279,-543,379}; +Ruled Surface(581) = {580}; +Ruled Surface(582) = {576}; +Line Loop(583) = {546,-163,-547,-288}; +Ruled Surface(584) = {583}; +Line Loop(585) = {202,-549,302,547}; +Ruled Surface(586) = {585}; +Line Loop(587) = {549,198,-548,298}; +Ruled Surface(588) = {587}; +Line Loop(589) = {167,-546,-294,548}; +Ruled Surface(590) = {589}; +Line Loop(591) = {217,550,-90,552}; +Ruled Surface(592) = {591}; +Line Loop(593) = {550,-86,-553,-211}; +Ruled Surface(594) = {593}; +Line Loop(595) = {225,553,125,551}; +Ruled Surface(596) = {595}; +Line Loop(597) = {221,-551,121,552}; +Ruled Surface(598) = {597}; +Line Loop(599) = {554,-13,556,-134}; +Ruled Surface(600) = {599}; +Line Loop(601) = {556,-148,-555,12}; +Ruled Surface(602) = {601}; +Line Loop(603) = {10,-557,140,554}; +Ruled Surface(604) = {603}; +Line Loop(605) = {557,11,555,-144}; +Ruled Surface(606) = {605}; +Line Loop(607) = {7,8,9,6}; +Plane Surface(608) = {607}; +Physical Surface(609) = {67,608,69,63,608,51,65,71,55,41,49,57,59,53,43,47,604,45,61,606,602,600,137,142,127,97,132,147,112,92,92,72,107,117,87,77,102,598,122,82,592,594,596,214,219,224,209,174,204,184,149,154,179,189,169,159,199,586,194,164,590,584,588,286,301,296,291,226,261,281,251,256,231,246,266,276,236,241,271,582,582,582,581,575,579,582,378,363,368,373,338,303,328,358,333,343,323,308,313,318,348,353,573,571,567,569,450,567,445,440,455,435,405,415,380,420,400,410,385,425,395,390,430,561,559,563,565,522,517,527,532,512,457,482,492,497,462,477,487,502,472,467,507}; +Line Loop(610) = {4,1,2,3}; +Plane Surface(611) = {610}; +Line Loop(612) = {101,96,-78,74}; +Plane Surface(613) = {612}; +Line Loop(614) = {178,173,-155,151}; +Plane Surface(615) = {614}; +Line Loop(616) = {255,250,-232,228}; +Plane Surface(617) = {616}; +Line Loop(618) = {327,-309,305,332}; +Plane Surface(619) = {618}; +Line Loop(620) = {404,-386,382,409}; +Plane Surface(621) = {620}; +Line Loop(622) = {481,-463,459,486}; +Plane Surface(623) = {622}; +Line Loop(624) = {506,475,-471,510}; +Plane Surface(625) = {624}; +Physical Surface(626) = {611,613,615,617,619,621,623}; +Physical Surface(627)={625}; + +Surface Loop(628) = {571,569,567,-440,-445,-405,-400,395,425,-420,-410,385,621,-380,-415,455,573,353,-333,308,619,-323,318,348,-343,358,-328,-368,373,582,575,-579,-236,241,-246,-266,-256,231,617,-251,281,296,-291,-590,164,-169,-189,-179,154,615,-174,204,219,-214,592,-594,-82,87,-92,-112,-102,77,613,-97,127,142,-137,604,47,-49,-57,-53,43,-611,-51,63,69,-67,-608,71,-65,-41,-55,-45,61,602,-600,-132,147,-107,-72,606,59,122,-596,224,-209,-149,-184,-598,117,-159,199,-586,-588,194,301,-286,-584,-226,-261,276,-581,378,-363,-303,-338,271,-313,450,435,-390,430,-559,563,565,-561,527,-522,-482,-477,472,502,-497,-487,462,623,-457,-517,532,-492,512,-467,507,-625}; +Volume(629) = {628}; diff --git a/benchmarks/bugs/needs_rand_1e-9.geo b/benchmarks/bugs/needs_rand_1e-9.geo new file mode 100644 index 0000000000000000000000000000000000000000..c1eefb096f751dfda02443a8c16cf8d046dd356c --- /dev/null +++ b/benchmarks/bugs/needs_rand_1e-9.geo @@ -0,0 +1,307 @@ +//Mesh.Algorithm = 1; +//Mesh.CharacteristicLengthFactor = 1; +Geometry.AutoCoherence = 1; + +u = 1e-3; + +FEM = 0; /* 0->Hybrid model, 1->FEM model */ + +a=u* 1000; +b=u* 1; +c=u* 400; +d=u* 150; +R=u* 30; // radius conductors +ym = u* -250; // vertical offset of circular ring +M =u* 1000*Sqrt(0.5); // circular ring inner boundary +m =u* 1500*Sqrt(0.5); // circular ring outerr boundary + + +eh1 =u* 0.5; +ev1 =u* 0.5*2; +eh2 =u* 1.5; +ev2 =u* 1.5*2; +eh3 =u* 4.5; +ev3 =u* 4.5*2; + + + +p =u* 2; +pe1 =u* 2; +pe2 =u* 5; +pe3 =u* 10; + +p =u* 2; +pe1 =u* 2; +pe2 =u* 5; +pe3 =u* 10; + +pu=u*6*3.6; + +pM1=4*pu;//4 /* For refining FEM mesh */ +pM2=4*pu; +pc=pu/3; + + +b1=0; +b2=-b/4; +b3=-b/2; +b4=-3*b/4; +b5=-b; + +Point(1) = {-a/2,b1+ym,0,p}; +Point(2) = {-a/2,b2+ym,0,p}; +Point(3) = { a/2,b1+ym,0,p}; +Point(4) = { a/2,b2+ym,0,p}; +Point(5) = {-a/2,b3+ym,0,p}; +Point(6) = { a/2,b3+ym,0,p}; +Point(7) = {-a/2,b4+ym,0,p}; +Point(8) = { a/2,b4+ym,0,p}; +Point(9) = {-a/2,b5+ym,0,p}; +Point(10) = { a/2,b5+ym,0,p}; + +Line(701) = {2,4}; +Line(703) = {4,3}; +Line(704) = {3,1}; +Line(705) = {1,2}; + +Line(901) = {2,5}; +Line(902) = {5,6}; +Line(903) = {6,4}; + +Line(913) = {5,7}; +Line(914) = {7,8}; +Line(915) = {6,8}; +Line(916) = {8,10}; +Line(917) = {10,9}; +Line(918) = {9,7}; + + +Line Loop(714) = {705,701,703,704}; +Plane Surface(715) = {714}; + +Line Loop(904) = {-903,-902,-901,701}; +Plane Surface(905) = {904}; + +Line Loop(919) = {914,-915,-902,913}; +Plane Surface(920) = {919}; + +Line Loop(921) = {914,916,917,918}; +Plane Surface(922) = {921}; + + +Fpc = 100; +If (FEM) + Fpc = 1; +EndIf + + +Point(11) = {-c/2+R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(12) = {-c/2+R/2,-b-d+ym-R/2,0,pc*Fpc}; +Point(13) = {-c/2-R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(14) = {-c/2-R/2,-b-d+ym-R/2,0,pc*Fpc}; + +Point(21) = {R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(22) = {R/2,-b-d+ym-R/2,0,pc*Fpc}; +Point(23) = {-R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(24) = {-R/2,-b-d+ym-R/2,0,pc*Fpc}; + +Point(31) = {c/2+R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(32) = {c/2+R/2,-b-d+ym-R/2,0,pc*Fpc}; +Point(33) = {c/2-R/2,-b-d+ym+R/2,0,pc*Fpc}; +Point(34) = {c/2-R/2,-b-d+ym-R/2,0,pc*Fpc}; + + +Line(1) = {12,11}; +Line(2) = {11,13}; +Line(3) = {13,14}; +Line(4) = {14,12}; +Line(5) = {22,21}; +Line(6) = {21,23}; +Line(7) = {23,24}; +Line(8) = {24,22}; +Line(9) = {32,31}; +Line(10) = {31,33}; +Line(11) = {33,34}; +Line(12) = {34,32}; + + + +Line Loop(906) = {1,2,3,4}; +Plane Surface(907) = {906}; +Line Loop(908) = {5,6,7,8}; +Plane Surface(909) = {908}; +Line Loop(910) = {9,10,11,12}; +Plane Surface(911) = {910}; + + + + +Point(501) = {-a/2-eh1,b1+ym+ev1,0,pe1}; +Point(502) = {-a/2-eh1,b5+ym-ev1,0,pe1}; +Point(503) = {0,b1+ym+ev1,0,pe1}; +Point(504) = {0,b5+ym-ev1,0,pe1}; +Point(505) = {a/2+eh1,b1+ym+ev1,0,pe1}; +Point(506) = {a/2+eh1,b5+ym-ev1,0,pe1}; +Point(507) = {-a/2-eh1,ym+(b1+b5)/2,0,pe1/1}; +Point(508) = {a/2+eh1,ym+(b1+b5)/2,0,pe1/1}; + + +Line(100003) = {502,507}; +Line(100004) = {501,503}; +Line(100005) = {503,505}; +Line(100006) = {505,508}; +Line(100007) = {506,504}; +Line(100008) = {504,502}; +Line(100009) = {507,501}; +Line(100010) = {508,506}; + +Point(601) = {-a/2-eh2,b1+ym+ev2,0,pe2}; +Point(602) = {-a/2-eh2,b5+ym-ev2,0,pe2}; +Point(603) = {0,b1+ym+ev2,0,pe2}; +Point(604) = {0,b5+ym-ev2,0,pe2}; +Point(605) = {a/2+eh2,b1+ym+ev2,0,pe2}; +Point(606) = {a/2+eh2,b5+ym-ev2,0,pe2}; +Point(607) = {-a/2-eh2,ym+(b1+b5)/2,0,pe2/1}; +Point(608) = {a/2+eh2,ym+(b1+b5)/2,0,pe2/1}; + +Line(200003) = {602,607}; +Line(200004) = {601,603}; +Line(200005) = {603,605}; +Line(200006) = {605,608}; +Line(200007) = {606,604}; +Line(200008) = {604,602}; +Line(200009) = {607,601}; +Line(200010) = {608,606}; + + + +Point(701) = {-a/2-eh3,b1+ym+ev3,0,pe3}; +Point(702) = {-a/2-eh3,b5+ym-ev3,0,pe3}; +Point(703) = {0,b1+ym+ev3,0,pe3}; +Point(704) = {0,b5+ym-ev3,0,pe3}; +Point(705) = {a/2+eh3,b1+ym+ev3,0,pe3}; +Point(706) = {a/2+eh3,b5+ym-ev3,0,pe3}; +Point(707) = {-a/2-eh3,ym+(b1+b5)/2,0,pe3/1}; +Point(708) = {a/2+eh3,ym+(b1+b5)/2,0,pe3/1}; + +Line(300003) = {702,707}; +Line(300004) = {701,703}; +Line(300005) = {703,705}; +Line(300006) = {705,708}; +Line(300007) = {706,704}; +Line(300008) = {704,702}; +Line(300009) = {707,701}; +Line(300010) = {708,706}; + + + + + + +Line Loop(100009) = {100004,100005,100006,100007,100008,100003,100009,100010}; +Line Loop(100010) = {703,704,705,901,913,-918,-917,-916,-915,903}; +Plane Surface(100011) = {100009,100010}; + +Line Loop(200009) = {200004,200005,200006,200007,200008,200003,200009,200010}; +Line Loop(300009) = {300004,300005,300006,300007,300008,300003,300009,300010}; + +Plane Surface(200011) = {200009,100009}; +Plane Surface(300011) = {300009,200009}; + +AirLayer1 = 1000; +Physical Surface(AirLayer1) = {100011}; // AirLayer1 +SkinAirLayer1 = 1500 ; +Physical Line(SkinAirLayer1) = {100004,100003,100008,100007,100006,100005,100009,100010}; // SkinAirLayer1 + +AirLayer2 = 2000 ; +Physical Surface(AirLayer2) = {200011}; // AirLayer2 +SkinAirLayer2 = 2500 ; +Physical Line(SkinAirLayer2) = {200004,200003,200008,200007,200006,200005,200009,200010}; // SkinAirLayer2 + +AirLayer3 = 3000 ; +Physical Surface(AirLayer3) = {300011}; // AirLayer3 +SkinAirLayer3 = 3500 ; +Physical Line(SkinAirLayer3) = {300004,300003,300008,300007,300006,300005,300009,300010}; // SkinAirLayer3 + +ym2 = u* 0; + +If (FEM) + +Point(0) = {0,-ym2,0,p}; + +Point(100) = {M,M-ym2,0,pM1}; +Point(101) = {-M,-M-ym2,0,pM1}; +Point(102) = {-M,M-ym2,0,pM1}; +Point(103) = {M,-M-ym2,0,pM1}; + +Point(200) = {m,m-ym2,0,pM2}; +Point(201) = {-m,-m-ym2,0,pM2}; +Point(202) = {-m,m-ym2,0,pM2}; +Point(203) = {m,-m-ym2,0,pM2}; + +Circle(25) = {103,0,100}; +Circle(26) = {100,0,102}; +Circle(27) = {102,0,101}; +Circle(28) = {101,0,103}; +Circle(35) = {203,0,200}; +Circle(36) = {200,0,202}; +Circle(37) = {202,0,201}; +Circle(38) = {201,0,203}; + +Line Loop(307) = {37,38,35,36}; +Line Loop(720) = {27,28,25,26}; + +Line Loop(923) = {913,-918,-917,-916,-915,903,703,704,705,901}; + +EndIf + +Physical Surface(100) = {907}; // left conductor +Physical Surface(150) = {909}; // middle conductor +Physical Surface(200) = {911}; // right conductor + +//Recombine Surface {715,905,920,922}; +Plate = 300 ; +Physical Surface(Plate) = {715,905,920,922}; // plate + +Physical Line(700) = {-1,-2,-3,-4}; // SkinLeft +Physical Line(750) = {-5,-6,-7,-8}; // SkinMid +Physical Line(800) = {-9,-10,-11,-12}; // SkinRight +SkinPlate = 900 ; +Physical Line(SkinPlate) = {-704,-705,-901,918,917,916,915,-903,-703,-913}; // SkinPlate + + +If (FEM) +Plane Surface(722) = {307,720}; +Plane Surface(924) = {720,300009,906,908,910}; // air + +Physical Surface(400) = {924}; // air +RingIn = 500 ; +RingOut = 600 ; +Physical Surface(RingIn) = {722}; // ring +Physical Line(RingOut) = {35,36,37,38}; // outer boundary + +EndIf + + + + + + + + +//Post Processing +xt1=0.8; +xt2=0.6; +yt1=ym+0.5; +yt2=ym+1.0; + + +Point(10001) = {xt1,yt1,0,p}; +Point(10002) = {-xt1,yt1,0,p}; +Point(10003) = {xt2,yt2,0,p}; +Point(10004) = {-xt2,yt2,0,p}; + +Line(100001) = {10001,10002}; +Line(100002) = {10003,10004}; + +