diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp index 06ff057b61b4f46117c6c6ab19773fea921fe893..ddff735cdbe2d6973725a9232ab8d607b28b65b8 100644 --- a/Geo/GeoInterpolation.cpp +++ b/Geo/GeoInterpolation.cpp @@ -1,4 +1,4 @@ -// $Id: GeoInterpolation.cpp,v 1.37 2008-06-10 12:59:12 remacle Exp $ +// $Id: GeoInterpolation.cpp,v 1.38 2008-06-22 06:13:48 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -660,11 +660,14 @@ Vertex InterpolateSurface(Surface *s, double u, double v, int derivee, int u_v) return T; } - // use the exact extrusion formula if the surface is extruded + // FIXME: WARNING -- this is a major hack: we use the exact + // extrusion formula if the surface is extruded, so that we create + // exact surfaces of revolution. But this WILL fail if the extruded + // surface is transformed after the extrusion! if(s->Extrude && s->Extrude->geo.Mode == EXTRUDED_ENTITY && s->Typ != MSH_SURF_PLAN) return InterpolateExtrudedSurface(s, u, v); - + switch (s->Typ) { case MSH_SURF_REGL: case MSH_SURF_TRIC: diff --git a/Makefile b/Makefile index 5c3d71d6a44339fa4f34b21bcc665909f31764ee..7e0f07a753fabc4bd2cafdb9a25e89b17fa708f2 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.487 2008-06-20 05:54:08 geuzaine Exp $ +# $Id: Makefile,v 1.488 2008-06-22 06:15:09 geuzaine Exp $ # # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle # @@ -23,7 +23,7 @@ include variables GMSH_MAJOR_VERSION = 2 GMSH_MINOR_VERSION = 2 -GMSH_PATCH_VERSION = 2 +GMSH_PATCH_VERSION = 3 GMSH_EXTRA_VERSION = GMSH_VERSION = ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION} diff --git a/benchmarks/2d/HEA100.geo b/benchmarks/2d/HEA100.geo deleted file mode 100644 index d605efd4486c68e80df27f4cb7393df2d32f17c1..0000000000000000000000000000000000000000 --- a/benchmarks/2d/HEA100.geo +++ /dev/null @@ -1,6 +0,0 @@ -h = 96; -c = 100/2; -d = 5; -t = 8; -r = 12; -Include "IPE.geo"; diff --git a/benchmarks/2d/IPE.geo b/benchmarks/2d/IPE.geo index 0c4f85bc5d0f8e460a7370b3bd19707db0794191..caa1d5f86218eaaf26ad0ad2686ddac2f2028b18 100644 --- a/benchmarks/2d/IPE.geo +++ b/benchmarks/2d/IPE.geo @@ -1,48 +1,66 @@ -LC = t/2; -LC2 = r/4; - -Point(1) = {-c,-h/2,0,LC}; -Point(2) = {-c,-h/2+t,0,LC}; -Point(3) = {-t/2-r,-h/2+t,0,LC2}; -Point(4) = {-t/2,-h/2+t+r,0,LC2}; -Point(5) = {-t/2-r,-h/2+t+r,0,LC2}; - -Point(11) = {-c,h/2,0,LC}; -Point(12) = {-c,h/2-t,0,LC}; -Point(13) = {-t/2-r,h/2-t,0,LC2}; -Point(14) = {-t/2,h/2-t-r,0,LC2}; -Point(15) = {-t/2-r,h/2-t-r,0,LC2}; - -Point(21) = {c,-h/2,0,LC}; -Point(22) = {c,-h/2+t,0,LC}; -Point(23) = {t/2+r,-h/2+t,0,LC2}; -Point(24) = {t/2,-h/2+t+r,0,LC2}; -Point(25) = {t/2+r,-h/2+t+r,0,LC2}; - -Point(31) = {c,h/2,0,LC}; -Point(32) = {c,h/2-t,0,LC}; -Point(33) = {t/2+r,h/2-t,0,LC2}; -Point(34) = {t/2,h/2-t-r,0,LC2}; -Point(35) = {t/2+r,h/2-t-r,0,LC2}; - - -Line(1) = {1,21}; -Line(2) = {21,22}; -Line(3) = {22,23}; -Line(4) = {1,2}; -Line(5) = {2,3}; -Line(6) = {4,14}; -Line(7) = {34,24}; -Line(8) = {11,31}; -Line(9) = {31,32}; -Line(10) = {32,33}; -Line(11) = {11,12}; -Line(12) = {12,13}; -Circle(13) = {13,15,14}; -Circle(14) = {33,35,34}; -Circle(15) = {3,5,4}; -Circle(16) = {23,25,24}; -Line Loop(17) = {-7,-14,-10,-9,-8,11,12,13,-6,-15,-5,-4,1,2,3,16}; -Plane Surface(18) = {17}; -Physical Line(19) = {8,9,10,14,7,16,3,2,1,4,5,15,6,13,12,11}; -Physical Surface(20) = {18}; +Function IPE + +// create vertices +p1 = newp; Point(p1) = {0, h, 0, lc}; +p2 = newp; Point(p2) = {b, h, 0, lc}; +p3 = newp; Point(p3) = {b, h-e, 0, lc}; +p4 = newp; Point(p4) = {(0.5*b)+(0.5*a)+r, h-e, 0, lc}; +p5 = newp; Point(p5) = {(0.5*b)+(0.5*a)+r, h-e-r, 0, lc}; +p6 = newp; Point(p6) = {(0.5*b)+(0.5*a), h-e-r, 0, lc}; +p7 = newp; Point(p7) = {(0.5*b)+(0.5*a), e+r, 0, lc}; +p8 = newp; Point(p8) = {(0.5*b)+(0.5*a)+r, e+r, 0, lc}; +p9 = newp; Point(p9) = {(0.5*b)+(0.5*a)+r, e, 0, lc}; +p10 = newp; Point(p10) = {b, e, 0, lc}; +p11 = newp; Point(p11) = {b, 0, 0, lc}; +p12 = newp; Point(p12) = {0, 0, 0, lc}; +p13 = newp; Point(p13) = {0, e, 0, lc}; +p14 = newp; Point(p14) = {(0.5*b)-(0.5*a)-r, e, 0, lc}; +p15 = newp; Point(p15) = {(0.5*b)-(0.5*a)-r, e+r, 0, lc}; +p16 = newp; Point(p16) = {(0.5*b)-(0.5*a), e+r, 0, lc}; +p17 = newp; Point(p17) = {(0.5*b)-(0.5*a), h-e-r, 0, lc}; +p18 = newp; Point(p18) = {(0.5*b)-(0.5*a)-r, h-e-r, 0, lc}; +p19 = newp; Point(p19) = {(0.5*b)-(0.5*a)-r, h-e, 0, lc}; +p20 = newp; Point(p20) = {0, h-e, 0, lc}; + +// create a line from two points; +ligne1 = newl; Line(ligne1) = {p1, p2}; +ligne2 = newl; Line(ligne2) = {p2, p3}; +ligne3 = newl; Line(ligne3) = {p3, p4}; +ligne4 = newl; Line(ligne4) = {p6, p7}; +ligne5 = newl; Line(ligne5) = {p9, p10}; +ligne6 = newl; Line(ligne6) = {p10, p11}; +ligne7 = newl; Line(ligne7) = {p11, p12}; +ligne8 = newl; Line(ligne8) = {p12, p13}; +ligne9 = newl; Line(ligne9) = {p13, p14}; +ligne10 = newl; Line(ligne10) = {p16, p17}; +ligne11 = newl; Line(ligne11) = {p19, p20}; +ligne12 = newl; Line(ligne12) = {p20, p1}; + +// create a curve +Arc1 = newl; Circle(Arc1) = {p4, p5 , p6}; +Arc2 = newl; Circle(Arc2) = {p7, p8 , p9}; +Arc3 = newl; Circle(Arc3) = {p14, p15 , p16}; +Arc4 = newl; Circle(Arc4) = {p17, p18 , p19}; + +// create a wire +wire = newll; Line Loop(wire) = {ligne1, ligne2, ligne3, Arc1, ligne4, Arc2, ligne5, ligne6, ligne7, ligne8, ligne9, Arc3, ligne10, Arc4, ligne11, ligne12}; + +// create a face +face = news; Plane Surface(face) = {wire}; +Return + + +lc = 10; + +b = 200.; +e = 16.; +h = 500.; +a = 10.2; +r = 21.; +Call IPE; + +e = 40; +r = 61.; +a = 40.2; +Call IPE; +Translate{300,0,0}{Surface{face};} diff --git a/benchmarks/2d/predator.geo b/benchmarks/2d/predator.geo new file mode 100644 index 0000000000000000000000000000000000000000..6be8c35c9c2923da9ccee7c9ce4bb0f6b2a92970 --- /dev/null +++ b/benchmarks/2d/predator.geo @@ -0,0 +1,1263 @@ +// Parameters definitions of a .geo model +// for the "Predator" airplane. +// Does not run with Vista and GMSH 2.1.1 compiled version +// (2D meshing fails) +// Does run with Vista and GMSH 1.65 compiled version + + +lc1 = 0.08; + +lc2 = 0.08; + + + +Point(1) = {0, 0, 0, lc1}; + +Point(2) = {0, 8.15, 0.275, lc1}; + +Point(3) = {0.4, 3.5, 0, lc2}; + +Point(4) = {-0.4, 3.5, 0, lc1}; + +Point(5) = {-0.4, 4.75, 0, lc1}; + +Point(6) = {0.4, 4.75, 0, lc2}; + +Point(7) = {7.4, 4.45, 0, lc2}; + +Point(8) = {-7.4, 4.45, 0, lc1}; + +Point(9) = {-7.4, 3.9, 0, lc1}; + +Point(10) = {7.4, 3.9, 0, lc2}; + +Point(15) = {0.5, 0.35, 0, lc1}; + +Point(16) = {-0.5, 0.35, 0, lc1}; + +Point(17) = {-0.6, 0.95, 0, lc1}; + +Point(18) = {0.6, 0.95, 0, lc1}; + +Point(19) = {0.5, 2, 0, lc1}; + +Point(20) = {-0.5, 2, 0, lc1}; + +Point(21) = {-0.3, 6.9, 0, lc1}; + +Point(22) = {0.3, 6.9, 0, lc1}; + +Point(23) = {0.15, 7.6, 0, lc1}; + +Point(24) = {-0.15, 7.6, 0, lc1}; + +Point(25) = {0, 7.9, 0.08, lc1}; + +Point(26) = {0, 7.9, 0.47, lc1}; + +Point(27) = {0.1, 8.1, 0.275, lc1}; + +Point(28) = {-0.1, 8.1, 0.275, lc1}; + +Point(29) = {2, 6.9, -1.2, lc1}; + +Point(30) = {-2, 6.9, -1.2, lc1}; + +Point(31) = {-2, 7.6, -1.2, lc1}; + +Point(32) = {2, 7.6, -1.2, lc1}; + +Point(33) = {0, 0.8, 0.68, lc1}; + +Point(66) = {0, 1.1, 0.75, lc1}; + +Point(68) = {0, 3.25, 0.55, lc1}; + +Point(70) = {0, 4.4, 0.55, lc1}; + +Point(72) = {0.37, 3.5, 0.1, lc2}; + +Point(73) = {-0.37, 3.5, 0.1, lc1}; + +Point(74) = {-0.37, 4.75, 0.1, lc1}; + +Point(75) = {0.37, 4.75, 0.1, lc2}; + +Point(78) = {7.4, 4.45, 0.05, lc2}; + +Point(79) = {-7.4, 4.45, 0.05, lc1}; + +Point(115) = {-7.4, 3.9, 0.05, lc1}; + +Point(116) = {7.4, 3.9, 0.05, lc2}; + +Point(117) = {0, 3.65, 0.68, lc1}; + +Point(178) = {2, 6.9, -1.15, lc1}; + +Point(179) = {-2, 6.9, -1.15, lc1}; + +Point(180) = {-2, 7.6, -1.15, lc1}; + +Point(181) = {2, 7.6, -1.15, lc1}; + +Point(182) = {0.37, 6.9, 0.1, lc1}; + +Point(183) = {-0.37, 6.9, 0.1, lc1}; + +Point(184) = {-0.27, 7.6, 0.1, lc1}; + +Point(185) = {0.27, 7.6, 0.1, lc1}; + +Point(186) = {0, 1.1, 0.75, lc1}; + +Point(187) = {0.45, 1.1, 0.4, lc1}; + +Point(188) = {-0.45, 1.1, 0.4, lc1}; + +Point(189) = {-0.55, 1.1, 0.1, lc1}; + +Point(190) = {0.55, 1.1, 0.1, lc1}; + +Point(252) = {0, 0.35, -0.35, lc1}; + +Point(259) = {0.3, 0.35, -0.22, lc1}; + +Point(260) = {-0.3, 0.35, -0.22, lc1}; + +Point(261) = {0.4, 0.35, -0.07000000000000001, lc1}; + +Point(262) = {-0.4, 0.35, -0.07000000000000001, lc1}; + +Point(263) = {0.45, 0.35, 0.1, lc1}; + +Point(264) = {-0.45, 0.35, 0.1, lc1}; + +Point(265) = {0, 3.7, -0.06, lc1}; + +Point(266) = {0, 2, -0.22, lc1}; + +Point(267) = {0, 6.9, -0.05, lc1}; + +Point(269) = {0, 8.1, 0.375, lc1}; + +Point(270) = {0, 8.1, 0.275, lc1}; + +Point(271) = {0, 8.1, 0.175, lc1}; + +Point(272) = {0, 7.6, 0, lc1}; + +Point(273) = {0, 7.8, 0.5, lc1}; + +Point(274) = {0, 7.8, 0.05, lc1}; + +Point(275) = {0.225, 7.8, 0.275, lc1}; + +Point(276) = {-0.225, 7.8, 0.275, lc1}; + +Point(277) = {0, 7.8, 0.275, lc1}; + +Point(278) = {0.6, 1.1, 0, lc1}; + +Point(279) = {-0.6, 1.1, 0, lc1}; + +Point(280) = {0, 1.1, -0.3, lc1}; + +Point(281) = {0.3, 1.1, -0.17, lc1}; + +Point(282) = {-0.3, 1.1, -0.17, lc1}; + +Point(283) = {0.45, 1.1, -0.05, lc1}; + +Point(284) = {-0.45, 1.1, -0.05, lc1}; + +Point(285) = {0, 3.25, -0.1, lc1}; + +Point(286) = {0.3, 3.25, 0.35, lc1}; + +Point(287) = {-0.3, 3.25, 0.35, lc1}; + +Point(288) = {-0.37, 3.25, 0.1, lc1}; + +Point(289) = {0.37, 3.25, 0.1, lc1}; + +Point(290) = {-0.3, 3.25, -0.025, lc1}; + +Point(291) = {0.3, 3.25, -0.025, lc1}; + +Point(292) = {0.2, 3.25, -0.07000000000000001, lc1}; + +Point(293) = {-0.2, 3.25, -0.07000000000000001, lc1}; + +Point(294) = {0.4, 3.25, 0, lc1}; + +Point(295) = {-0.4, 3.25, 0, lc1}; + +Point(296) = {0, 4.75, 0.55, lc1}; + +Point(297) = {-0.3, 4.75, 0.35, lc1}; + +Point(298) = {0.3, 4.75, 0.35, lc1}; + +Point(299) = {0, 4.75, -0.05, lc1}; + +Point(300) = {0.2, 3.65, 0.5, lc1}; + +Point(301) = {-0.2, 3.65, 0.5, lc1}; + +Point(302) = {0.3, 3.65, 0.35, lc1}; + +Point(303) = {-0.3, 3.65, 0.35, lc1}; + +Point(304) = {0.37, 3.65, 0.127, lc1}; + +Point(305) = {-0.37, 3.65, 0.127, lc1}; + +Point(306) = {0, 3.65, 0.55, lc1}; + +Point(307) = {0, 6.9, 0.55, lc1}; + +Point(311) = {0.27, 6.9, 0.35, lc1}; + +Point(312) = {-0.27, 6.9, 0.35, lc1}; + +Point(313) = {0.195, 7.9, 0.275, lc1}; + +Point(314) = {-0.195, 7.9, 0.275, lc1}; + +Point(315) = {0, 7.9, 0.275, lc1}; + +Point(316) = {0, 7.6, 0.55, lc1}; + +Point(317) = {-0.2, 7.6, 0.35, lc1}; + +Point(318) = {0.2, 7.6, 0.35, lc1}; + +Point(319) = {0.3, 0.35, 0.3, lc1}; + +Point(320) = {-0.3, 0.35, 0.3, lc1}; + +Point(321) = {0, 0.35, 0.45, lc1}; + +Point(322) = {0, 0.1, 0.1, lc1}; + +Point(323) = {0.3, 1.1, 0.63, lc1}; + +Point(324) = {-0.3, 1.1, 0.63, lc1}; + +Point(325) = {0.15, 1.1, 0.72, lc1}; + +Point(326) = {-0.15, 1.1, 0.72, lc1}; + +Point(327) = {0.15, 0.35, 0.4, lc1}; + +Point(328) = {-0.15, 0.35, 0.4, lc1}; + +Point(329) = {-0.15, 0.35, -0.32, lc1}; + +Point(330) = {0.15, 0.35, -0.32, lc1}; + +Point(331) = {0.2, 1.1, -0.25, lc1}; + +Point(332) = {-0.2, 1.1, -0.25, lc1}; + +Point(333) = {0.15, 3.25, 0.5, lc1}; + +Point(334) = {-0.15, 3.25, 0.5, lc1}; + +Point(335) = {-0.15, 4.75, 0.5, lc1}; + +Point(336) = {0.15, 4.75, 0.5, lc1}; + +Point(337) = {0.1, 3.65, 0.63, lc1}; + +Point(338) = {-0.1, 3.65, 0.63, lc1}; + +Point(339) = {0.15, 6.9, 0.5, lc1}; + +Point(340) = {-0.15, 6.9, 0.5, lc1}; + +Point(341) = {-0.12, 7.6, 0.5, lc1}; + +Point(342) = {0.12, 7.6, 0.5, lc1}; + +Point(343) = {0.05, 6.9, -0.05, lc1}; + +Point(344) = {-0.05, 6.9, -0.05, lc1}; + +Point(345) = {-0.05, 7.6, 0, lc1}; + +Point(346) = {0.05, 7.6, 0, lc1}; + +Point(347) = {0.025, 7.6, -0.8, lc1}; + +Point(348) = {-0.025, 7.6, -0.8, lc1}; + +Point(349) = {-0.025, 6.9, -0.8, lc1}; + +Point(350) = {0.025, 6.9, -0.8, lc1}; + +Point(351) = {-7.4, 4.1, -0.02, lc1}; + +Point(352) = {-7.4, 4.1, 0.08, lc1}; + +Point(353) = {-0.4, 3.8, -0.02, lc1}; + +Point(354) = {-0.37, 3.9, 0.15, lc1}; + +Point(355) = {7.4, 4.1, 0.08, lc2}; + +Point(356) = {7.4, 4.1, -0.02, lc2}; + +Point(357) = {0.37, 3.9, 0.15, lc2}; + +Point(358) = {0.4, 3.8, -0.02, lc2}; + +Point(359) = {0.2, 0.06, 0, lc1}; + +Point(360) = {-0.2, 0.06, 0, lc1}; + +Point(362) = {0.25, 0.16, 0.1, lc1}; + +Point(363) = {-0.25, 0.16, 0.1, lc1}; + +Point(445) = {0.0495, 7.9, 0.4636, lc1}; + +Point(446) = {-0.0495, 7.9, 0.4636, lc1}; + +Point(447) = {-0.0495, 7.9, 0.0864, lc1}; + +Point(448) = {0.0495, 7.9, 0.0864, lc1}; + +Point(449) = {0.0496, 7.9, 0.8636, lc1}; + +Point(450) = {-0.0496, 7.9, 0.8636, lc1}; + +Point(451) = {-0.03, 7.88, 1.0636, lc1}; + +Point(452) = {0.03, 7.88, 1.0636, lc1}; + +Point(453) = {0.03, 7.88, -0.5135999999999999, lc1}; + +Point(454) = {-0.03, 7.88, -0.5135999999999999, lc1}; + +Point(456) = {-0.0495, 7.9, -0.3136, lc1}; + +Point(457) = {0.0495, 7.9, -0.3136, lc1}; + +Point(458) = {0.0496, 7.8, 0.0555, lc1}; + +Point(459) = {-0.0496, 7.8, 0.0555, lc1}; + +Point(460) = {-0.0496, 7.8, 0.4945, lc1}; + +Point(461) = {0.0496, 7.8, 0.4945, lc1}; + +Point(462) = {0.03, 7.82, -0.5135999999999999, lc1}; + +Point(463) = {-0.03, 7.82, -0.5135999999999999, lc1}; + +Point(464) = {-0.03, 7.82, 1.0636, lc1}; + +Point(465) = {0.03, 7.82, 1.0636, lc1}; + +Point(466) = {0.0496, 7.8, -0.3136, lc1}; + +Point(467) = {-0.0496, 7.8, -0.3136, lc1}; + +Point(468) = {-0.0496, 7.8, 0.8636, lc1}; + +Point(469) = {0.0496, 7.8, 0.8636, lc1}; + +Point(470) = {0, 0.08, -0.14, lc1}; + +Point(471) = {0, 0.6, -0.4, lc1}; + +Point(472) = {0.2, 4.75, -0.04, lc1}; + +Point(473) = {-0.2, 4.75, -0.04, lc1}; + +Point(474) = {0.2, 6.9, -0.04, lc1}; + +Point(475) = {-0.2, 6.9, -0.04, lc1}; + +Point(476) = {0.3, 3.5, -0.025, lc1}; + +Point(477) = {-0.3, 3.5, -0.025, lc1}; + +Point(478) = {-0.2, 3.5, -0.07000000000000001, lc1}; + +Point(479) = {0.2, 3.5, -0.07000000000000001, lc1}; + +Point(480) = {0, 3.5, -0.07000000000000001, lc1}; + +Point(481) = {-0.05, 5.4, -0.05, lc1}; + +Point(482) = {0.05, 5.4, -0.05, lc1}; + +Point(483) = {0.13, 4, 0.52, lc1}; + +Point(484) = {-0.13, 4, 0.52, lc1}; + +Point(485) = {-0.1, 3.4, 0.52, lc1}; + +Point(486) = {0.1, 3.4, 0.52, lc1}; + +Point(487) = {0, 4, 0.63, lc1}; + +Point(488) = {0, 3.4, 0.63, lc1}; + +Point(489) = {0, 0.2, 0.3, lc1}; + +Point(23502) = {-0.3, 4, 0.35, lc1}; + +Point(23503) = {0.3, 4, 0.35, lc1}; + +Point(23504) = {0, 7.88, -0.5135999999999999, lc1}; + +Point(23505) = {0, 7.82, -0.5135999999999999, lc1}; + +Point(23506) = {0, 7.88, 1.0636, lc1}; + +Point(23507) = {0, 7.82, 1.0636, lc1}; + +Point(23508) = {0, 7.8, 0.8636, lc1}; + +Point(23509) = {0, 7.9, 0.8636, lc1}; + +Point(23510) = {0, 7.8, -0.3136, lc1}; + +Point(23511) = {0, 7.9, -0.3136, lc1}; + +Line (1) = {4, 9}; + +Line (4) = {3, 10}; + +Line (5) = {6, 7}; + +Line (7) = {6, 22}; + +Line (15) = {73, 4}; + +Line (16) = {74, 79}; + +Line (18) = {79, 8}; + +Line (19) = {115, 9}; + +Line (20) = {115, 73}; + +Line (22) = {21, 30}; + +Line (23) = {24, 31}; + +Line (24) = {31, 30}; + +Line (26) = {29, 32}; + +Line (27) = {23, 32}; + +Line (29) = {72, 116}; + +Line (30) = {75, 78}; + +Line (32) = {78, 7}; + +Line (33) = {116, 10}; + +Line (39) = {183, 179}; + +Line (40) = {179, 180}; + +Line (41) = {180, 31}; + +Line (42) = {179, 30}; + +Line (43) = {183, 184}; + +Line (44) = {178, 181}; + +Line (45) = {181, 185}; + +Line (46) = {178, 182}; + +Line (47) = {182, 185}; + +Line (48) = {23, 22}; + +Line (49) = {24, 21}; + +Line (50) = {178, 29}; + +Line (51) = {181, 32}; + +Circle (62) = {269, 270, 28} Plane{0, 0, 1}; + +Circle (63) = {28, 270, 271} Plane{0, 0, 1}; + +Circle (64) = {271, 270, 27} Plane{0, 0, 1}; + +Circle (65) = {27, 270, 269} Plane{0, 0, 1}; + +Line (78) = {184, 180}; + +Line (85) = {72, 3}; + +Line (88) = {8, 5}; + +CatmullRom (101) = {285, 293, 290, 295}; + +CatmullRom (102) = {285, 292, 291, 294}; + +Line (118) = {70, 296}; + +Line (126) = {22, 29}; + +CatmullRom (138) = {2, 27, 313}; + +CatmullRom (139) = {2, 271, 25}; + +CatmullRom (140) = {2, 269, 26}; + +CatmullRom (141) = {2, 28, 314}; + +Line (146) = {296, 296}; + +Line (147) = {296, 307}; + +Line (149) = {74, 183}; + +Line (150) = {75, 182}; + +Line (151) = {5, 21}; + +CatmullRom (159) = {68, 186}; + +CatmullRom (172) = {16, 262, 260, 329, 252}; + +CatmullRom (174) = {278, 283, 281, 331, 280}; + +CatmullRom (175) = {279, 284, 282, 332, 280}; + +CatmullRom (180) = {300, 337, 117}; + +CatmullRom (181) = {301, 338, 117}; + +Line (188) = {346, 343}; + +Line (189) = {345, 344}; + +Line (190) = {344, 349}; + +Line (191) = {343, 350}; + +Line (192) = {345, 348}; + +Line (193) = {346, 347}; + +Line (194) = {348, 349}; + +Line (195) = {350, 347}; + +Line (196) = {350, 349}; + +Line (197) = {347, 348}; + +Line (198) = {307, 316}; + +Line (200) = {273, 26}; + +Line (201) = {25, 274}; + +Line (202) = {313, 275}; + +Line (203) = {314, 276}; + +CatmullRom (204) = {79, 352, 115}; + +CatmullRom (205) = {8, 351, 9}; + +CatmullRom (207) = {74, 354, 305, 73}; + +CatmullRom (208) = {116, 355, 78}; + +CatmullRom (209) = {10, 356, 7}; + +CatmullRom (211) = {75, 357, 304, 72}; + +Circle (216) = {26, 315, 445} Plane{0, 0, 1}; + +Circle (217) = {445, 315, 313} Plane{0, 0, 1}; + +Circle (218) = {313, 315, 448} Plane{0, 0, 1}; + +Circle (219) = {448, 315, 25} Plane{0, 0, 1}; + +Circle (220) = {25, 315, 447} Plane{0, 0, 1}; + +Circle (221) = {447, 315, 314} Plane{0, 0, 1}; + +Circle (222) = {314, 315, 446} Plane{0, 0, 1}; + +Circle (223) = {446, 315, 26} Plane{0, 0, 1}; + +CatmullRom (226) = {446, 450, 451}; + +CatmullRom (227) = {445, 449, 452}; + +CatmullRom (229) = {448, 457, 453}; + +CatmullRom (230) = {447, 456, 454}; + +Circle (232) = {273, 277, 461} Plane{0, 0, 1}; + +Circle (233) = {461, 277, 275} Plane{0, 0, 1}; + +Circle (234) = {275, 277, 458} Plane{0, 0, 1}; + +Circle (235) = {458, 277, 274} Plane{0, 0, 1}; + +Circle (236) = {274, 277, 459} Plane{0, 0, 1}; + +Circle (237) = {459, 277, 276} Plane{0, 0, 1}; + +Circle (238) = {276, 277, 460} Plane{0, 0, 1}; + +Circle (239) = {460, 277, 273} Plane{0, 0, 1}; + +CatmullRom (240) = {461, 469, 465}; + +CatmullRom (241) = {460, 468, 464}; + +Line (243) = {452, 465}; + +Line (244) = {451, 464}; + +Line (245) = {445, 461}; + +Line (246) = {446, 460}; + +CatmullRom (248) = {458, 466, 462}; + +CatmullRom (249) = {459, 467, 463}; + +Line (250) = {448, 458}; + +Line (251) = {447, 459}; + +Line (252) = {453, 462}; + +Line (253) = {454, 463}; + +CatmullRom (254) = {252, 330, 259, 261, 15}; + +CatmullRom (255) = {1, 359, 15}; + +CatmullRom (256) = {15, 18, 278}; + +CatmullRom (258) = {321, 33, 186}; + +Line (260) = {75, 6}; + +CatmullRom (261) = {296, 336, 298, 75}; + +Line (262) = {5, 74}; + +CatmullRom (263) = {74, 297, 335, 296}; + +CatmullRom (268) = {279, 17, 16}; + +CatmullRom (269) = {16, 360, 1}; + +CatmullRom (276) = {1, 470, 252}; + +CatmullRom (277) = {252, 471, 280}; + +CatmullRom (278) = {278, 19, 294}; + +CatmullRom (280) = {279, 20, 295}; + +CatmullRom (286) = {280, 266, 285}; + +CatmullRom (298) = {6, 472, 299}; + +CatmullRom (299) = {299, 473, 5}; + +Line (308) = {343, 344}; + +CatmullRom (310) = {22, 474, 343}; + +CatmullRom (311) = {344, 475, 21}; + +CatmullRom (354) = {480, 265, 299}; + +CatmullRom (355) = {4, 477, 478, 480}; + +CatmullRom (356) = {480, 479, 476, 3}; + +CatmullRom (357) = {5, 353, 4}; + +Line (358) = {295, 4}; + +CatmullRom (359) = {6, 358, 3}; + +Line (360) = {294, 3}; + +Line (362) = {480, 285}; + +CatmullRom (1000371) = {343, 482, 299}; + +CatmullRom (1000372) = {299, 481, 344}; + +CatmullRom (2000397) = {70, 487, 117}; + +CatmullRom (2000398) = {68, 488, 117}; + +CatmullRom (2000399) = {70, 483, 300}; + +CatmullRom (2000400) = {300, 486, 68}; + +CatmullRom (2000401) = {70, 484, 301}; + +CatmullRom (2000402) = {301, 485, 68}; + +Line (2000411) = {289, 190}; + +Line (2000412) = {289, 72}; + +Line (2000413) = {189, 288}; + +Line (2000414) = {288, 73}; + +CatmullRom (2000415) = {68, 333, 286, 289}; + +Line (2000416) = {289, 294}; + +CatmullRom (2000417) = {68, 334, 287, 288}; + +Line (2000418) = {288, 295}; + +CatmullRom (2000419) = {186, 325, 323, 187, 190}; + +Line (2000420) = {190, 278}; + +CatmullRom (2000421) = {321, 327, 319, 263}; + +CatmullRom (2000422) = {322, 362, 263}; + +Line (2000423) = {263, 15}; + +Line (2000424) = {263, 190}; + +CatmullRom (2000435) = {186, 326, 324, 188, 189}; + +Line (2000436) = {189, 279}; + +CatmullRom (2000443) = {322, 363, 264}; + +CatmullRom (2000444) = {264, 320, 328, 321}; + +Line (2000445) = {264, 189}; + +Line (2000446) = {16, 264}; + +Line (2000452) = {322, 1}; + +CatmullRom (2000453) = {321, 489, 322}; + +CatmullRom (3000466) = {300, 302, 72}; + +CatmullRom (3000469) = {301, 303, 73}; + +CatmullRom (3000473) = {301, 23502, 74}; + +CatmullRom (3000474) = {300, 23503, 75}; + +CatmullRom (5000480) = {307, 340, 312, 183}; + +Line (5000481) = {183, 21}; + +CatmullRom (5000482) = {307, 339, 311, 182}; + +Line (5000483) = {182, 22}; + +CatmullRom (5000484) = {316, 342, 318, 185}; + +Line (5000485) = {185, 23}; + +CatmullRom (5000486) = {316, 341, 317, 184}; + +Line (5000487) = {184, 24}; + +Line (6000508) = {453, 23504}; + +Line (6000509) = {23504, 23505}; + +Line (6000510) = {23505, 462}; + +Line (6000511) = {23505, 463}; + +Line (6000512) = {454, 23504}; + +Line (6000527) = {23506, 452}; + +Line (6000528) = {465, 23507}; + +Line (6000529) = {23507, 23506}; + +Line (6000530) = {23506, 451}; + +Line (6000531) = {23507, 464}; + +Line (7000546) = {23, 346}; + +Line (7000548) = {346, 458}; + +CatmullRom (7000549) = {346, 272, 345}; + +Line (7000550) = {345, 458}; + +Line (7000551) = {345, 459}; + +Line (7000560) = {24, 345}; + +Line (7000563) = {275, 185}; + +Line (7000566) = {316, 461}; + +Line (7000567) = {316, 460}; + +Line (7000572) = {184, 276}; + +Line (8000575) = {459, 24}; + +Line (8000580) = {458, 23}; + +CatmullRom (9000586) = {274, 23510, 23505}; + +CatmullRom (9000604) = {273, 23508, 23507}; + +CatmullRom (9000605) = {26, 23509, 23506}; + +CatmullRom (10000622) = {23504, 23511, 25}; + +Line Loop (1000289) = {278, -102, -286, -174}; + +Ruled Surface (289) = {1000289}; + +Line Loop (1000291) = {256, 174, -277, 254}; + +Ruled Surface (291) = {1000291}; + +Line Loop (1000293) = {277, -175, 268, 172}; + +Ruled Surface (293) = {1000293}; + +Line Loop (1000295) = {175, 286, 101, -280}; + +Ruled Surface (295) = {1000295}; + +Line Loop (1000321) = {47, -45, -44, 46}; + +Ruled Surface (321) = {1000321}; + +Line Loop (1000323) = {50, 26, -51, -44}; + +Plane Surface (323) = {1000323}; + +Line Loop (1000325) = {40, 41, 24, -42}; + +Plane Surface (325) = {1000325}; + +Line Loop (1000327) = {22, -24, -23, 49}; + +Ruled Surface (327) = {1000327}; + +Line Loop (1000329) = {43, 78, -40, -39}; + +Ruled Surface (329) = {1000329}; + +Line Loop (1000344) = {191, 195, -193, 188}; + +Plane Surface (344) = {1000344}; + +Line Loop (1000346) = {189, 190, -194, -192}; + +Plane Surface (346) = {1000346}; + +Line Loop (1000348) = {195, 197, 194, -196}; + +Plane Surface (348) = {1000348}; + +Line Loop (1000350) = {308, 190, -196, -191}; + +Ruled Surface (350) = {1000350}; + +Line Loop (1000352) = {207, -20, -204, -16}; + +Ruled Surface (352) = {1000352}; + +/* Line Loop (1000353) = {207, -20, -204, -16}; + +Ruled Surface (353) = {1000353}; is obviously duplicated */ + +Line Loop (1000364) = {358, 355, 362, 101}; + +Ruled Surface (364) = {1000364}; + +Line Loop (1000366) = {362, 102, 360, -356}; + +Ruled Surface (366) = {1000366}; + +Line Loop (1000368) = {357, 355, 354, 299}; + +Ruled Surface (368) = {1000368}; + +Line Loop (1000370) = {298, -354, 356, -359}; + +Ruled Surface (370) = {1000370}; + +Line Loop (2000374) = {1000372, -308, 1000371}; // CHANGED ORDER + +Ruled Surface (1000374) = {2000374}; + +Line Loop (2000376) = {1000371, -298, 7, 310}; + +Ruled Surface (1000376) = {2000376}; + +Line Loop (2000378) = {1000372, 311, -151, -299}; + +Ruled Surface (1000378) = {2000378}; + +Line Loop (2000380) = {357, 1, -205, 88}; + +Ruled Surface (1000380) = {2000380}; + +Line Loop (2000382) = {15, 1, -19, 20}; + +Plane Surface (1000382) = {2000382}; + +Line Loop (2000384) = {262, 16, 18, 88}; + +Plane Surface (1000384) = {2000384}; + +Line Loop (2000386) = {205, -19, -204, 18}; + +Ruled Surface (1000386) = {2000386}; + +Line Loop (2000388) = {209, -32, -208, 33}; + +Ruled Surface (1000388) = {2000388}; + +Line Loop (2000390) = {359, 4, 209, -5}; + +Ruled Surface (1000390) = {2000390}; + +Line Loop (2000392) = {30, -208, -29, -211}; + +Ruled Surface (1000392) = {2000392}; + +Line Loop (2000394) = {5, -32, -30, 260}; + +Plane Surface (1000394) = {2000394}; + +Line Loop (2000396) = {33, -4, -85, 29}; + +Plane Surface (1000396) = {2000396}; + +Line Loop (3000404) = {2000399, 180, -2000397}; + +Ruled Surface (2000404) = {3000404}; + +Line Loop (3000406) = {2000401, 181, -2000397}; + +Ruled Surface (2000406) = {3000406}; + +Line Loop (3000408) = {2000402, 2000398, -181}; + +Ruled Surface (2000408) = {3000408}; + +Line Loop (3000410) = {2000400, 2000398, -180}; + +Ruled Surface (2000410) = {3000410}; + +Line Loop (3000426) = {2000419, -2000424, -2000421, 258}; + +Ruled Surface (2000426) = {3000426}; + +Line Loop (3000428) = {2000424, 2000420, -256, -2000423}; + +Ruled Surface (2000428) = {3000428}; + +Line Loop (3000430) = {2000419, -2000411, -2000415, 159}; + +Ruled Surface (2000430) = {3000430}; + +Line Loop (3000432) = {2000420, 278, -2000416, 2000411}; + +Ruled Surface (2000432) = {3000432}; + +Line Loop (3000434) = {360, -85, -2000412, 2000416}; + +Ruled Surface (2000434) = {3000434}; + +Line Loop (3000438) = {2000417, -2000413, -2000435, -159}; + +Ruled Surface (2000438) = {3000438}; + +Line Loop (3000440) = {2000418, -280, -2000436, 2000413}; + +Ruled Surface (2000440) = {3000440}; + +Line Loop (3000442) = {2000418, 358, -15, -2000414}; + +Ruled Surface (2000442) = {3000442}; + +Line Loop (3000448) = {258, 2000435, -2000445, 2000444}; + +Ruled Surface (2000448) = {3000448}; + +Line Loop (3000450) = {2000445, 2000436, 268, 2000446}; + +Ruled Surface (2000450) = {3000450}; + +Line Loop (3000455) = {2000453, 2000443, 2000444}; + +Ruled Surface (2000455) = {3000455}; + +Line Loop (3000457) = {2000422, -2000421, 2000453}; + +Ruled Surface (2000457) = {3000457}; + +Line Loop (3000459) = {269, -2000452, 2000443, -2000446}; + +Ruled Surface (2000459) = {3000459}; + +Line Loop (3000461) = {255, -2000423, -2000422, 2000452}; + +Ruled Surface (2000461) = {3000461}; + +Line Loop (3000463) = {172, -276, -269}; + +Ruled Surface (2000463) = {3000463}; + +Line Loop (3000465) = {276, 254, -255}; + +Ruled Surface (2000465) = {3000465}; + +Line Loop (4000468) = {3000466, -2000412, -2000415, -2000400}; + +Ruled Surface (3000468) = {4000468}; + +Line Loop (4000471) = {2000417, 2000414, -3000469, 2000402}; + +Ruled Surface (3000471) = {4000471}; + +Line Loop (5000473) = {261, -3000474, -2000399, 118}; + +Ruled Surface (4000473) = {5000473}; + +Line Loop (5000475) = {211, -3000466, 3000474}; + +Ruled Surface (4000475) = {5000475}; + +Line Loop (5000477) = {3000473, 263, -118, 2000401}; + +Ruled Surface (4000477) = {5000477}; + +Line Loop (5000479) = {3000473, 207, -3000469}; + +Ruled Surface (4000479) = {5000479}; + +Line Loop (6000489) = {149, -5000480, -147, -263}; + +Ruled Surface (5000489) = {6000489}; + +Line Loop (6000491) = {262, 149, 5000481, -151}; + +Ruled Surface (5000491) = {6000491}; + +Line Loop (6000493) = {5000483, -7, -260, 150}; + +Ruled Surface (5000493) = {6000493}; + +Line Loop (6000495) = {5000482, -150, -261, 147}; + +Ruled Surface (5000495) = {6000495}; + +Line Loop (6000497) = {47, -5000484, -198, 5000482}; + +Ruled Surface (5000497) = {6000497}; + +Line Loop (6000499) = {198, 5000486, -43, -5000480}; + +Ruled Surface (5000499) = {6000499}; + +Line Loop (6000501) = {23, -41, -78, 5000487}; + +Ruled Surface (5000501) = {6000501}; + +Line Loop (6000503) = {5000481, 22, -42, -39}; + +Ruled Surface (5000503) = {6000503}; + +Line Loop (6000505) = {50, -126, -5000483, -46}; + +Ruled Surface (5000505) = {6000505}; + +Line Loop (6000507) = {5000485, 27, -51, 45}; + +Ruled Surface (5000507) = {6000507}; + +Line Loop (6000509) = {140, 216, 217, -138}; + +Ruled Surface (5000509) = {6000509}; + +Line Loop (6000511) = {141, 222, 223, -140}; + +Ruled Surface (5000511) = {6000511}; + +Line Loop (6000513) = {139, -219, -218, -138}; + +Ruled Surface (5000513) = {6000513}; + +Line Loop (6000515) = {220, 221, -141, 139}; + +Ruled Surface (5000515) = {6000515}; + +Line Loop (6000517) = {217, 202, -233, -245}; + +Ruled Surface (5000517) = {6000517}; + +Line Loop (6000519) = {202, 234, -250, -218}; + +Ruled Surface (5000519) = {6000519}; + +Line Loop (6000521) = {222, 246, -238, -203}; + +Ruled Surface (5000521) = {6000521}; + +Line Loop (6000523) = {237, -203, -221, 251}; + +Ruled Surface (5000523) = {6000523}; + +Line Loop (7000516) = {6000512, 6000509, 6000511, -253}; + +Plane Surface (6000516) = {7000516}; + +Line Loop (7000518) = {6000508, 6000509, 6000510, -252}; + +Plane Surface (6000518) = {7000518}; + +Line Loop (7000533) = {6000529, 6000527, 243, 6000528}; + +Plane Surface (6000533) = {7000533}; + +Line Loop (7000535) = {6000530, 244, -6000531, 6000529}; + +Plane Surface (6000535) = {7000535}; + +Line Loop (8000553) = {7000549, 7000550, -7000548}; + +Ruled Surface (7000553) = {8000553}; + +Line Loop (8000555) = {7000551, -236, -235, -7000550}; + +Ruled Surface (7000555) = {8000555}; + +Line Loop (8000557) = {7000549, 192, -197, -193}; + +Ruled Surface (7000557) = {8000557}; + +Line Loop (8000559) = {188, -310, -48, 7000546}; + +Ruled Surface (7000559) = {8000559}; + +Line Loop (8000562) = {311, -49, 7000560, 189}; + +Ruled Surface (7000562) = {8000562}; + +Line Loop (8000569) = {7000566, 233, 7000563, -5000484}; + +Ruled Surface (7000569) = {8000569}; + +Line Loop (8000571) = {7000566, -232, -239, -7000567}; + +Ruled Surface (7000571) = {8000571}; + +Line Loop (8000574) = {238, -7000567, 5000486, 7000572}; + +Ruled Surface (7000574) = {8000574}; + +Line Loop (9000577) = {7000560, 7000551, 8000575}; + +Ruled Surface (8000577) = {9000577}; + +Line Loop (9000579) = {5000487, -8000575, 237, -7000572}; + +Ruled Surface (8000579) = {9000579}; + +Line Loop (9000582) = {7000548, 8000580, 7000546}; + +Ruled Surface (8000582) = {9000582}; + +Line Loop (9000584) = {8000580, -5000485, -7000563, 234}; + +Ruled Surface (8000584) = {9000584}; + +Line Loop (10000588) = {230, 6000512}; + +//Plane Surface (9000588) = {10000588}; // BAD!!! + + +Line Loop (10000607) = {6000528, -9000604, 232, 240}; + +Ruled Surface (9000607) = {10000607}; + +Line Loop (10000608) = {245, 240, -243, -227}; + +Ruled Surface (9000608) = {10000608}; + +Line Loop (10000610) = {6000531, -241, 239, 9000604}; + +Ruled Surface (9000610) = {10000610}; + +Line Loop (10000612) = {6000527, -227, -216, 9000605}; + +Ruled Surface (9000612) = {10000612}; + +Line Loop (10000614) = {6000530, -226, 223, 9000605}; + +Ruled Surface (9000614) = {10000614}; + +Line Loop (10000615) = {244, -241, -246, 226}; + +Ruled Surface (9000615) = {10000615}; + +Line Loop (11000623) = {6000511, -249, -236, 9000586}; + +Ruled Surface (10000623) = {11000623}; + +Line Loop (11000624) = {248, -6000510, -9000586, -235}; + +Ruled Surface (10000624) = {11000624}; + +Line Loop (11000625) = {230, 253, -249, -251}; + +Ruled Surface (10000625) = {11000625}; + +Line Loop (11000626) = {250, 248, -252, -229}; + +Ruled Surface (10000626) = {11000626}; + +Line Loop (11000628) = {6000512, 10000622, 220, 230}; + +Ruled Surface (10000628) = {11000628}; + +Line Loop (11000630) = {6000508, 10000622, -219, 229}; + +Ruled Surface (10000630) = {11000630}; + +Line Loop (12000632) = {26, -27, 48, 126}; + +Ruled Surface (11000632) = {12000632}; diff --git a/benchmarks/bugs/bug_rabchevitch_optimize.geo b/benchmarks/bugs/bug_rabchevitch_optimize.geo new file mode 100644 index 0000000000000000000000000000000000000000..7a0fd63d2c85dbc9d7fb0e8a191e652f5f16dcfb --- /dev/null +++ b/benchmarks/bugs/bug_rabchevitch_optimize.geo @@ -0,0 +1,300 @@ +// Gmsh project created on Thu Nov 01 10:31:41 2007 + +//indenter which has a little blunt radius + +Z1 = 0.15; //Z of the sphere tip + + +D = 1.7; //contact radius + +beta = 90 / 2 * Pi / 180; //half the angle of the cone + +d = D * Cos(beta); //diameter of the touch of cone and contact sphere + +//alpha is the distance from sphere tip to some point on the sphere +//alpha = 0.5 * (D - (D ^ 2 - d ^ 2) ^ 0.5), where d is a diameter at alpha + +alpha = 0.5 * (D - (D ^ 2 - d ^ 2) ^ 0.5); + +D2 = 4; //pivot diameter + +L1 = 0.5 * (D2 - d) / Tan(beta); //length of the cone + +L2 = 20; //pivot length + +Di = 0.85 * D; //inner sphere diameter for better meshing + + +//characteristic lengths +l0 = 0.2 * (D - Di); //sphere tip +l1 = 2.0 * l0; //outer sphere +l2 = 0.5 * Di; //inner sphere can be coarse +l3 = 0.5 * D2; + + + + +//points + +//outer sphere +Point(100) = {0, 0, Z1+0.5*D, l0}; //virtual point - sphere center - for setting sphere surfaces +Point(101) = {0, 0, Z1, l0}; //sphere tip +r = 0.5 * d; +l = l1; +h = alpha; +Point(102) = {0,0,Z1+h,l}; +Point(103) = {r,0,Z1+h,l}; +tmp104[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{103}; } } ; +tmp105[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{103}; } } ; + + + + +//cone +h = alpha + L1; +a = 0.5 * D2; +a1 = 0.5 * a; +l = 0.5 * a; +Point(122) = {0,0,Z1+h,l}; +Point(123) = {a,0,Z1+h,l}; +tmp124[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{123}; } } ; +tmp125[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{123}; } } ; + + + +//thick cylinder +H = alpha + L1; +h = L2 * 0.2; +l = 0.5 * D2; +a1 = 0.5 * 0.5 * D2; +Point(142) = {0,0,H+h,l}; +Point(143) = {0.5 * D2,0,H+h,l}; +tmp144[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{143}; } } ; +tmp145[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{143}; } } ; + + + + +Point(152) = {0,0,H+2*h,l}; +Point(153) = {0.5 * D2,0,H+2*h,l}; +tmp154[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{153}; } } ; +tmp155[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{153}; } } ; + + + + +Point(162) = {0,0,H+3*h,l}; +Point(163) = {0.5 * D2,0,H+3*h,l}; +tmp164[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{163}; } } ; +tmp165[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{163}; } } ; + + + + +Point(172) = {0,0,H+4*h,l}; +Point(173) = {0.5 * D2,0,H+4*h,l}; +tmp174[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{173}; } } ; +tmp175[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{173}; } } ; + + + + +Point(182) = {0,0,H+5*h,l}; +Point(183) = {0.5 * D2,0,H+5*h,l}; +tmp184[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/4} { Duplicata{ Point{183}; } } ; +tmp185[] = Rotate {{0, 0, 1}, {0,0,0}, Pi/2} { Duplicata{ Point{183}; } } ; + + + + +Circle(1) = {103,102,104}; +Circle(2) = {104,102,105}; +Circle(3) = {103,100,101}; +Circle(4) = {104,100,101}; +Circle(5) = {105,100,101}; +Circle(6) = {123,122,124}; +Circle(7) = {124,122,125}; +Circle(8) = {143,142,144}; +Circle(9) = {144,142,145}; +Circle(10) = {153,152,154}; +Circle(11) = {154,152,155}; +Circle(12) = {163,162,164}; +Circle(13) = {164,162,165}; +Circle(14) = {173,172,174}; +Circle(15) = {174,172,175}; +Circle(16) = {183,182,184}; +Circle(17) = {184,182,185}; +Line(18) = {103,102}; +Line(19) = {104,102}; +Line(20) = {105,102}; +Line(21) = {123,122}; +Line(22) = {124,122}; +Line(23) = {125,122}; +Line(24) = {143,142}; +Line(25) = {144,142}; +Line(26) = {145,142}; +Line(27) = {153,152}; +Line(28) = {154,152}; +Line(29) = {155,152}; +Line(30) = {163,162}; +Line(31) = {164,162}; +Line(32) = {165,162}; +Line(33) = {173,172}; +Line(34) = {174,172}; +Line(35) = {175,172}; +Line(36) = {183,182}; +Line(37) = {184,182}; +Line(38) = {185,182}; +Line(39) = {101,102}; +Line(40) = {102,100}; +Line(41) = {100,122}; +Line(42) = {122,142}; +Line(43) = {142,152}; +Line(44) = {152,162}; +Line(45) = {162,172}; +Line(46) = {172,182}; +Line(47) = {103,123}; +Line(48) = {123,143}; +Line(49) = {143,153}; +Line(50) = {153,163}; +Line(51) = {163,173}; +Line(52) = {173,183}; +Line(53) = {104,124}; +Line(54) = {124,144}; +Line(55) = {144,154}; +Line(56) = {154,164}; +Line(57) = {164,174}; +Line(58) = {174,184}; +Line(59) = {125,145}; +Line(60) = {145,155}; +Line(61) = {155,165}; +Line(62) = {165,175}; +Line(63) = {175,185}; +Line(64) = {105,125}; +Line Loop(65) = {5,-4,2}; +Ruled Surface(66) = {65}; +Line Loop(67) = {4,-3,1}; +Ruled Surface(68) = {67}; +Line Loop(69) = {64,-7,-53,2}; +Ruled Surface(70) = {69}; +Line Loop(71) = {53,-6,-47,1}; +Ruled Surface(72) = {71}; +Line Loop(73) = {48,8,-54,-6}; +Ruled Surface(74) = {73}; +Line Loop(75) = {54,9,-59,-7}; +Ruled Surface(76) = {75}; +Line Loop(77) = {8,55,-10,-49}; +Ruled Surface(78) = {77}; +Line Loop(79) = {55,11,-60,-9}; +Ruled Surface(80) = {79}; +Line Loop(81) = {10,56,-12,-50}; +Ruled Surface(82) = {81}; +Line Loop(83) = {56,13,-61,-11}; +Ruled Surface(84) = {83}; +Line Loop(85) = {51,14,-57,-12}; +Ruled Surface(86) = {85}; +Line Loop(87) = {57,15,-62,-13}; +Ruled Surface(88) = {87}; +Line Loop(89) = {52,16,-58,-14}; +Ruled Surface(90) = {89}; +Line Loop(91) = {58,17,-63,-15}; +Ruled Surface(92) = {91}; +Line Loop(93) = {3,39,-18}; +Plane Surface(94) = {93}; +Line Loop(95) = {4,39,-19}; +Plane Surface(96) = {95}; +Line Loop(97) = {5,39,-20}; +Plane Surface(98) = {97}; +Line Loop(99) = {18,40,41,-21,-47}; +Plane Surface(100) = {99}; +Line Loop(101) = {19,40,41,-22,-53}; +Plane Surface(102) = {101}; +Line Loop(103) = {20,40,41,-23,-64}; +Plane Surface(104) = {103}; +Line Loop(105) = {21,42,-24,-48}; +Plane Surface(106) = {105}; +Line Loop(107) = {22,42,-25,-54}; +Plane Surface(108) = {107}; +Line Loop(109) = {23,42,-26,-59}; +Plane Surface(110) = {109}; +Line Loop(111) = {24,43,-27,-49}; +Plane Surface(112) = {111}; +Line Loop(113) = {25,43,-28,-55}; +Plane Surface(114) = {113}; +Line Loop(115) = {26,43,-29,-60}; +Plane Surface(116) = {115}; +Line Loop(117) = {27,44,-30,-50}; +Plane Surface(118) = {117}; +Line Loop(119) = {28,44,-31,-56}; +Plane Surface(120) = {119}; +Line Loop(121) = {29,44,-32,-61}; +Plane Surface(122) = {121}; +Line Loop(123) = {30,45,-33,-51}; +Plane Surface(124) = {123}; +Line Loop(125) = {31,45,-34,-57}; +Plane Surface(126) = {125}; +Line Loop(127) = {32,45,-35,-62}; +Plane Surface(128) = {127}; +Line Loop(129) = {33,46,-36,-52}; +Plane Surface(130) = {129}; +Line Loop(131) = {34,46,-37,-58}; +Plane Surface(132) = {131}; +Line Loop(133) = {35,46,-38,-63}; +Plane Surface(134) = {133}; +Line Loop(135) = {18,-19,-1}; +Plane Surface(136) = {135}; +Line Loop(137) = {19,-20,-2}; +Plane Surface(138) = {137}; +Line Loop(139) = {21,-22,-6}; +Plane Surface(140) = {139}; +Line Loop(141) = {22,-23,-7}; +Plane Surface(142) = {141}; +Line Loop(143) = {24,-25,-8}; +Plane Surface(144) = {143}; +Line Loop(145) = {25,-26,-9}; +Plane Surface(146) = {145}; +Line Loop(147) = {27,-28,-10}; +Plane Surface(148) = {147}; +Line Loop(149) = {28,-29,-11}; +Plane Surface(150) = {149}; +Line Loop(151) = {30,-31,-12}; +Plane Surface(152) = {151}; +Line Loop(153) = {31,-32,-13}; +Plane Surface(154) = {153}; +Line Loop(155) = {33,-34,-14}; +Plane Surface(156) = {155}; +Line Loop(157) = {34,-35,-15}; +Plane Surface(158) = {157}; +Line Loop(159) = {36,-37,-16}; +Plane Surface(160) = {159}; +Line Loop(161) = {37,-38,-17}; +Plane Surface(162) = {161}; +Surface Loop(163) = {94,68,96,136}; +Volume(164) = {163}; +Surface Loop(165) = {98,66,138,96}; +Volume(166) = {165}; +Surface Loop(167) = {136,140,72,100,102}; +Volume(168) = {167}; +Surface Loop(169) = {142,138,104,70,102}; +Volume(170) = {169}; +Surface Loop(171) = {74,106,108,144,140}; +Volume(172) = {171}; +Surface Loop(173) = {76,110,146,142,108}; +Volume(174) = {173}; +Surface Loop(175) = {78,112,148,144,114}; +Volume(176) = {175}; +Surface Loop(177) = {150,80,116,146,114}; +Volume(178) = {177}; +Surface Loop(179) = {82,118,152,148,120}; +Volume(180) = {179}; +Surface Loop(181) = {84,122,154,150,120}; +Volume(182) = {181}; +Surface Loop(183) = {86,124,156,152,126}; +Volume(184) = {183}; +Surface Loop(185) = {88,128,158,154,126}; +Volume(186) = {185}; +Surface Loop(187) = {90,130,160,156,132}; +Volume(188) = {187}; +Surface Loop(189) = {92,162,134,158,132}; +Volume(190) = {189}; +Physical Volume(191) = {164,166,168,170,172,174,176,178,180,182,184,186,188,190}; diff --git a/benchmarks/bugs/known_extrusion_interpolation_bug.geo b/benchmarks/bugs/known_extrusion_interpolation_bug.geo new file mode 100644 index 0000000000000000000000000000000000000000..2eaf50dc32347899439054d40bd0c9fc939b66ca --- /dev/null +++ b/benchmarks/bugs/known_extrusion_interpolation_bug.geo @@ -0,0 +1,30 @@ +l1=0.1; +Point(1) = {0,0,0,l1}; +Point(2) = {1,0,0,l1}; +Point(3) = {1,1,0,l1}; +Point(4) = {0,1,0,l1}; +Point(5) = {0,0,1,l1}; +Point(6) = {0,1,1,l1}; +Line(1) = {4,3}; +Line(2) = {3,2}; +Line(3) = {2,1}; +Line(4) = {1,4}; +Line Loop(5) = {2,3,4,1}; +Ruled Surface(6) = {5}; + +// This is OK +/* +Line(7) = {6,4}; +Line(8) = {1,5}; +Line(9) = {5,6}; +Line Loop(10) = {7,-4,8,9}; +Ruled Surface(11) = {10}; +Rotate {{0,1,0}, {0,0,0}, Pi/4} { Surface{6,11}; } +*/ + +// This will fail, since at the moment we use the extrusion formula to +// interpolate the surface (which is wrong since the surface has been +// transformed). We do this so that we can create exact surfaces of +// revolution... One more shortcoming of our little CAD engine :-) +Extrude {0,0,1}{ Line{4}; } +Rotate {{0,1,0}, {0,0,0}, Pi/4} { Surface{6,10}; }