From 37f24ee816be0454c7339f2267b16e9f9e40b424 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Mon, 27 Nov 2006 19:23:04 +0000 Subject: [PATCH] remove elliptic - same as Transfinite with Mesh.Smoothing > 1 --- Fltk/Callbacks.cpp | 7 +- Fltk/Callbacks.h | 1 - Fltk/GUI.cpp | 3 +- Parser/Gmsh.tab.cpp | 336 +++++++++++++++++-------------------- Parser/Gmsh.y | 26 +-- Parser/Gmsh.yy.cpp | 4 +- benchmarks/2d/elliptic.geo | 4 +- doc/texinfo/gmsh.texi | 26 +-- 8 files changed, 174 insertions(+), 233 deletions(-) diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 383c05156f..7c3ac661ca 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.483 2006-11-27 03:19:47 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.484 2006-11-27 19:22:57 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -3999,11 +3999,6 @@ void mesh_define_transfinite_volume_cb(CALLBACK_ARGS) _add_transfinite_elliptic(0, 3); } -void mesh_define_elliptic_surface_cb(CALLBACK_ARGS) -{ - _add_transfinite_elliptic(1, 2); -} - // Dynamic Solver Menus void solver_cb(CALLBACK_ARGS) diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index 392857a2ee..3cacf33721 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -286,7 +286,6 @@ void mesh_define_transfinite_cb (CALLBACK_ARGS); void mesh_define_transfinite_line_cb(CALLBACK_ARGS); void mesh_define_transfinite_surface_cb(CALLBACK_ARGS); void mesh_define_transfinite_volume_cb(CALLBACK_ARGS); -void mesh_define_elliptic_surface_cb(CALLBACK_ARGS); // Dynamic Solver Menus diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index ecf43f1006..2a9ca51a02 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.565 2006-11-27 03:19:47 geuzaine Exp $ +// $Id: GUI.cpp,v 1.566 2006-11-27 19:22:57 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -358,7 +358,6 @@ Context_Item menu_mesh[] = { {"Characteristic length", (Fl_Callback *)mesh_define_length_cb } , {"Recombine", (Fl_Callback *)mesh_define_recombine_cb } , {"Transfinite", (Fl_Callback *)mesh_define_transfinite_cb } , - {"Elliptic", (Fl_Callback *)mesh_define_elliptic_surface_cb } , {0} }; Context_Item menu_mesh_define_transfinite[] = { diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 2c6a88cdb0..fba61ab6c8 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -126,7 +126,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.282 2006-11-27 17:45:07 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.283 2006-11-27 19:22:57 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -531,21 +531,21 @@ static const short yyrline[] = { 0, 2142, 2152, 2159, 2166, 2173, 2180, 2187, 2194, 2201, 2208, 2215, 2220, 2227, 2232, 2239, 2244, 2251, 2256, 2263, 2268, 2275, 2280, 2287, 2292, 2299, 2304, 2311, 2316, 2326, 2330, - 2335, 2360, 2382, 2390, 2409, 2427, 2445, 2474, 2509, 2536, - 2563, 2577, 2595, 2602, 2608, 2611, 2617, 2622, 2631, 2633, - 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2647, 2648, 2649, - 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, - 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, - 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2680, - 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, - 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, - 2705, 2710, 2711, 2712, 2713, 2714, 2715, 2719, 2735, 2750, - 2770, 2784, 2797, 2820, 2838, 2856, 2874, 2892, 2899, 2904, - 2908, 2912, 2916, 2922, 2927, 2931, 2935, 2941, 2945, 2949, - 2955, 2961, 2968, 2974, 2978, 2983, 2987, 2998, 3005, 3016, - 3036, 3046, 3056, 3066, 3083, 3102, 3126, 3154, 3160, 3164, - 3168, 3180, 3185, 3197, 3204, 3225, 3230, 3244, 3250, 3256, - 3261, 3269, 3277, 3291, 3305, 3309, 3328, 3350 + 2335, 2360, 2382, 2390, 2409, 2427, 2445, 2474, 2509, 2514, + 2541, 2555, 2573, 2580, 2586, 2589, 2595, 2600, 2609, 2611, + 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2625, 2626, 2627, + 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, + 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647, + 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2658, + 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, + 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, + 2683, 2688, 2689, 2690, 2691, 2692, 2693, 2697, 2713, 2728, + 2748, 2762, 2775, 2798, 2816, 2834, 2852, 2870, 2877, 2882, + 2886, 2890, 2894, 2900, 2905, 2909, 2913, 2919, 2923, 2927, + 2933, 2939, 2946, 2952, 2956, 2961, 2965, 2976, 2983, 2994, + 3014, 3024, 3034, 3044, 3061, 3080, 3104, 3132, 3138, 3142, + 3146, 3158, 3163, 3175, 3182, 3203, 3208, 3222, 3228, 3234, + 3239, 3247, 3255, 3269, 3283, 3287, 3306, 3328 }; #endif @@ -5389,34 +5389,12 @@ case 198: case 199: #line 2510 "Gmsh.y" { - Surface *s = FindSurface((int)yyvsp[-4].d); - if(!s) - yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d); - else{ - s->Method = ELLIPTIC; - int k = List_Nbr(yyvsp[-1].l); - if(k != 4) - yymsg(GERROR, "Wrong definition of Elliptic Surface %d: " - "%d points instead of 4" , (int)yyvsp[-4].d, k); - else{ - List_Reset(s->TrsfPoints); - for(int i = 0; i < k; i++){ - double d; - List_Read(yyvsp[-1].l, i, &d); - int j = (int)fabs(d); - Vertex *v = FindPoint(j); - if(!v) - yymsg(WARNING, "Unknown point %d", j); - else - List_Add(s->TrsfPoints, &v); - } - } - } + yymsg(GERROR, "Elliptic Surface is deprecated: use smoothed Transfinite instead"); List_Delete(yyvsp[-1].l); ; break;} case 200: -#line 2537 "Gmsh.y" +#line 2515 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d); if(!v) @@ -5445,7 +5423,7 @@ case 200: ; break;} case 201: -#line 2564 "Gmsh.y" +#line 2542 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5461,7 +5439,7 @@ case 201: ; break;} case 202: -#line 2578 "Gmsh.y" +#line 2556 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -5476,7 +5454,7 @@ case 202: ; break;} case 203: -#line 2597 "Gmsh.y" +#line 2575 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-1].d); if(s) @@ -5484,7 +5462,7 @@ case 203: ; break;} case 204: -#line 2603 "Gmsh.y" +#line 2581 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-1].d); if(s) @@ -5492,61 +5470,61 @@ case 204: ; break;} case 205: -#line 2609 "Gmsh.y" +#line 2587 "Gmsh.y" { ; break;} case 206: -#line 2612 "Gmsh.y" +#line 2590 "Gmsh.y" { ; break;} case 207: -#line 2619 "Gmsh.y" +#line 2597 "Gmsh.y" { ReplaceAllDuplicates(); ; break;} case 208: -#line 2623 "Gmsh.y" +#line 2601 "Gmsh.y" { yymsg(GERROR, "Intersect is deprecated"); ; break;} case 209: -#line 2632 "Gmsh.y" +#line 2610 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 210: -#line 2633 "Gmsh.y" +#line 2611 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} case 211: -#line 2634 "Gmsh.y" +#line 2612 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 212: -#line 2635 "Gmsh.y" +#line 2613 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 213: -#line 2636 "Gmsh.y" +#line 2614 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} case 214: -#line 2637 "Gmsh.y" +#line 2615 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} case 215: -#line 2638 "Gmsh.y" +#line 2616 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} case 216: -#line 2639 "Gmsh.y" +#line 2617 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} case 217: -#line 2641 "Gmsh.y" +#line 2619 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5555,247 +5533,247 @@ case 217: ; break;} case 218: -#line 2647 "Gmsh.y" +#line 2625 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} case 219: -#line 2648 "Gmsh.y" +#line 2626 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} case 220: -#line 2649 "Gmsh.y" +#line 2627 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} case 221: -#line 2650 "Gmsh.y" +#line 2628 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} case 222: -#line 2651 "Gmsh.y" +#line 2629 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} case 223: -#line 2652 "Gmsh.y" +#line 2630 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} case 224: -#line 2653 "Gmsh.y" +#line 2631 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} case 225: -#line 2654 "Gmsh.y" +#line 2632 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} case 226: -#line 2655 "Gmsh.y" +#line 2633 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} case 227: -#line 2656 "Gmsh.y" +#line 2634 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} case 228: -#line 2657 "Gmsh.y" +#line 2635 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} case 229: -#line 2658 "Gmsh.y" +#line 2636 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 230: -#line 2659 "Gmsh.y" +#line 2637 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 231: -#line 2660 "Gmsh.y" +#line 2638 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 232: -#line 2661 "Gmsh.y" +#line 2639 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 233: -#line 2662 "Gmsh.y" +#line 2640 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 234: -#line 2663 "Gmsh.y" +#line 2641 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 235: -#line 2664 "Gmsh.y" +#line 2642 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 236: -#line 2665 "Gmsh.y" +#line 2643 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 237: -#line 2666 "Gmsh.y" +#line 2644 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 238: -#line 2667 "Gmsh.y" +#line 2645 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 239: -#line 2668 "Gmsh.y" +#line 2646 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 240: -#line 2669 "Gmsh.y" +#line 2647 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 241: -#line 2670 "Gmsh.y" +#line 2648 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 242: -#line 2671 "Gmsh.y" +#line 2649 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 243: -#line 2672 "Gmsh.y" +#line 2650 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 244: -#line 2673 "Gmsh.y" +#line 2651 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 245: -#line 2674 "Gmsh.y" +#line 2652 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 246: -#line 2675 "Gmsh.y" +#line 2653 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 247: -#line 2676 "Gmsh.y" +#line 2654 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 248: -#line 2677 "Gmsh.y" +#line 2655 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 249: -#line 2678 "Gmsh.y" +#line 2656 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 250: -#line 2680 "Gmsh.y" +#line 2658 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 251: -#line 2681 "Gmsh.y" +#line 2659 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 252: -#line 2682 "Gmsh.y" +#line 2660 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 253: -#line 2683 "Gmsh.y" +#line 2661 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 254: -#line 2684 "Gmsh.y" +#line 2662 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 255: -#line 2685 "Gmsh.y" +#line 2663 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 256: -#line 2686 "Gmsh.y" +#line 2664 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 257: -#line 2687 "Gmsh.y" +#line 2665 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 258: -#line 2688 "Gmsh.y" +#line 2666 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 259: -#line 2689 "Gmsh.y" +#line 2667 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 260: -#line 2690 "Gmsh.y" +#line 2668 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 261: -#line 2691 "Gmsh.y" +#line 2669 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 262: -#line 2692 "Gmsh.y" +#line 2670 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 263: -#line 2693 "Gmsh.y" +#line 2671 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 264: -#line 2694 "Gmsh.y" +#line 2672 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 265: -#line 2695 "Gmsh.y" +#line 2673 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 266: -#line 2696 "Gmsh.y" +#line 2674 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 267: -#line 2697 "Gmsh.y" +#line 2675 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 268: -#line 2698 "Gmsh.y" +#line 2676 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 269: -#line 2699 "Gmsh.y" +#line 2677 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 270: -#line 2700 "Gmsh.y" +#line 2678 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 271: -#line 2709 "Gmsh.y" +#line 2687 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 272: -#line 2710 "Gmsh.y" +#line 2688 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} case 273: -#line 2711 "Gmsh.y" +#line 2689 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} case 274: -#line 2712 "Gmsh.y" +#line 2690 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} case 275: -#line 2713 "Gmsh.y" +#line 2691 "Gmsh.y" { yyval.d = Get_GmshMajorVersion(); ; break;} case 276: -#line 2714 "Gmsh.y" +#line 2692 "Gmsh.y" { yyval.d = Get_GmshMinorVersion(); ; break;} case 277: -#line 2715 "Gmsh.y" +#line 2693 "Gmsh.y" { yyval.d = Get_GmshPatchVersion(); ; break;} case 278: -#line 2720 "Gmsh.y" +#line 2698 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -5810,7 +5788,7 @@ case 278: ; break;} case 279: -#line 2736 "Gmsh.y" +#line 2714 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", yyvsp[-4].c, (int)yyvsp[-1].d) ; @@ -5827,7 +5805,7 @@ case 279: ; break;} case 280: -#line 2751 "Gmsh.y" +#line 2729 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -5849,7 +5827,7 @@ case 280: ; break;} case 281: -#line 2771 "Gmsh.y" +#line 2749 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -5865,7 +5843,7 @@ case 281: ; break;} case 282: -#line 2785 "Gmsh.y" +#line 2763 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -5880,7 +5858,7 @@ case 282: ; break;} case 283: -#line 2798 "Gmsh.y" +#line 2776 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -5902,7 +5880,7 @@ case 283: ; break;} case 284: -#line 2821 "Gmsh.y" +#line 2799 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5922,7 +5900,7 @@ case 284: ; break;} case 285: -#line 2839 "Gmsh.y" +#line 2817 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5942,7 +5920,7 @@ case 285: ; break;} case 286: -#line 2857 "Gmsh.y" +#line 2835 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5962,7 +5940,7 @@ case 286: ; break;} case 287: -#line 2875 "Gmsh.y" +#line 2853 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5982,124 +5960,124 @@ case 287: ; break;} case 288: -#line 2893 "Gmsh.y" +#line 2871 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); Free(yyvsp[-3].c); ; break;} case 289: -#line 2901 "Gmsh.y" +#line 2879 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} case 290: -#line 2905 "Gmsh.y" +#line 2883 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} case 291: -#line 2909 "Gmsh.y" +#line 2887 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} case 292: -#line 2913 "Gmsh.y" +#line 2891 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} case 293: -#line 2917 "Gmsh.y" +#line 2895 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} case 294: -#line 2924 "Gmsh.y" +#line 2902 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} case 295: -#line 2928 "Gmsh.y" +#line 2906 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} case 296: -#line 2932 "Gmsh.y" +#line 2910 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 297: -#line 2936 "Gmsh.y" +#line 2914 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 298: -#line 2943 "Gmsh.y" +#line 2921 "Gmsh.y" { ; break;} case 299: -#line 2946 "Gmsh.y" +#line 2924 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 300: -#line 2950 "Gmsh.y" +#line 2928 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 301: -#line 2957 "Gmsh.y" +#line 2935 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 302: -#line 2962 "Gmsh.y" +#line 2940 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 303: -#line 2970 "Gmsh.y" +#line 2948 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 304: -#line 2975 "Gmsh.y" +#line 2953 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 305: -#line 2979 "Gmsh.y" +#line 2957 "Gmsh.y" { // creates an empty list yyval.l = List_Create(2, 1, sizeof(double)); ; break;} case 306: -#line 2984 "Gmsh.y" +#line 2962 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 307: -#line 2988 "Gmsh.y" +#line 2966 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -6110,7 +6088,7 @@ case 307: ; break;} case 308: -#line 3000 "Gmsh.y" +#line 2978 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) @@ -6118,7 +6096,7 @@ case 308: ; break;} case 309: -#line 3006 "Gmsh.y" +#line 2984 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){ @@ -6131,7 +6109,7 @@ case 309: ; break;} case 310: -#line 3017 "Gmsh.y" +#line 2995 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -6153,7 +6131,7 @@ case 310: ; break;} case 311: -#line 3037 "Gmsh.y" +#line 3015 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6165,7 +6143,7 @@ case 311: ; break;} case 312: -#line 3047 "Gmsh.y" +#line 3025 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6177,7 +6155,7 @@ case 312: ; break;} case 313: -#line 3057 "Gmsh.y" +#line 3035 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6189,7 +6167,7 @@ case 313: ; break;} case 314: -#line 3067 "Gmsh.y" +#line 3045 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6208,7 +6186,7 @@ case 314: ; break;} case 315: -#line 3084 "Gmsh.y" +#line 3062 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6229,7 +6207,7 @@ case 315: ; break;} case 316: -#line 3103 "Gmsh.y" +#line 3081 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6255,7 +6233,7 @@ case 316: ; break;} case 317: -#line 3127 "Gmsh.y" +#line 3105 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6283,26 +6261,26 @@ case 317: ; break;} case 318: -#line 3156 "Gmsh.y" +#line 3134 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 319: -#line 3161 "Gmsh.y" +#line 3139 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 320: -#line 3165 "Gmsh.y" +#line 3143 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 321: -#line 3169 "Gmsh.y" +#line 3147 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -6313,19 +6291,19 @@ case 321: ; break;} case 322: -#line 3182 "Gmsh.y" +#line 3160 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} case 323: -#line 3186 "Gmsh.y" +#line 3164 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} case 324: -#line 3198 "Gmsh.y" +#line 3176 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); @@ -6334,7 +6312,7 @@ case 324: ; break;} case 325: -#line 3205 "Gmsh.y" +#line 3183 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6355,13 +6333,13 @@ case 325: ; break;} case 326: -#line 3227 "Gmsh.y" +#line 3205 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 327: -#line 3231 "Gmsh.y" +#line 3209 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -6375,26 +6353,26 @@ case 327: ; break;} case 328: -#line 3246 "Gmsh.y" +#line 3224 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 329: -#line 3251 "Gmsh.y" +#line 3229 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 330: -#line 3258 "Gmsh.y" +#line 3236 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} case 331: -#line 3262 "Gmsh.y" +#line 3240 "Gmsh.y" { yyval.c = (char *)Malloc(32*sizeof(char)); time_t now; @@ -6404,7 +6382,7 @@ case 331: ; break;} case 332: -#line 3270 "Gmsh.y" +#line 3248 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -6414,7 +6392,7 @@ case 332: ; break;} case 333: -#line 3278 "Gmsh.y" +#line 3256 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6430,7 +6408,7 @@ case 333: ; break;} case 334: -#line 3292 "Gmsh.y" +#line 3270 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6446,13 +6424,13 @@ case 334: ; break;} case 335: -#line 3306 "Gmsh.y" +#line 3284 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} case 336: -#line 3310 "Gmsh.y" +#line 3288 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -6473,7 +6451,7 @@ case 336: ; break;} case 337: -#line 3329 "Gmsh.y" +#line 3307 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6497,7 +6475,7 @@ case 337: ; break;} case 338: -#line 3351 "Gmsh.y" +#line 3329 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6742,7 +6720,7 @@ yyerrhandle: } return 1; } -#line 3374 "Gmsh.y" +#line 3352 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 0c0dec61ec..b49f1b260e 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.242 2006-11-27 17:45:16 geuzaine Exp $ +// $Id: Gmsh.y,v 1.243 2006-11-27 19:23:03 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2508,29 +2508,7 @@ Transfinite : } | tElliptic tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND { - Surface *s = FindSurface((int)$4); - if(!s) - yymsg(WARNING, "Unknown surface %d", (int)$4); - else{ - s->Method = ELLIPTIC; - int k = List_Nbr($7); - if(k != 4) - yymsg(GERROR, "Wrong definition of Elliptic Surface %d: " - "%d points instead of 4" , (int)$4, k); - else{ - List_Reset(s->TrsfPoints); - for(int i = 0; i < k; i++){ - double d; - List_Read($7, i, &d); - int j = (int)fabs(d); - Vertex *v = FindPoint(j); - if(!v) - yymsg(WARNING, "Unknown point %d", j); - else - List_Add(s->TrsfPoints, &v); - } - } - } + yymsg(GERROR, "Elliptic Surface is deprecated: use smoothed Transfinite instead"); List_Delete($7); } | tTransfinite tVolume '{' FExpr '}' tAFFECT ListOfDouble tEND diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 0eab956ea8..8c76c1a429 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.281 2006-11-27 17:45:18 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.282 2006-11-27 19:23:03 geuzaine Exp $ */ #define FLEX_SCANNER @@ -727,7 +727,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.281 2006-11-27 17:45:18 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.282 2006-11-27 19:23:03 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // diff --git a/benchmarks/2d/elliptic.geo b/benchmarks/2d/elliptic.geo index af85e783dd..e3928a890d 100644 --- a/benchmarks/2d/elliptic.geo +++ b/benchmarks/2d/elliptic.geo @@ -24,7 +24,9 @@ Translate {0.2,0.0,0.0} { Transfinite Line{8,10} = 30 ; Transfinite Line{9,11} = 30 Using Progression 1.08; -Elliptic Surface{7} = {6,10,14,5}; +Transfinite Surface{7} = {6,10,14,5}; Recombine Surface{7}; Extrude Surface {7, {0.0,0.0,0.1}}{Layers{10,1,1};Recombine;}; + +Mesh.Smoothing = 30; diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index f2fc70c6e5..e691ae4a24 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: gmsh.texi,v 1.218 2006-11-27 05:16:31 geuzaine Exp $ +@c $Id: gmsh.texi,v 1.219 2006-11-27 19:23:04 geuzaine Exp $ @c @c Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle @c @@ -517,8 +517,8 @@ surfaces; @item Gmsh is not primarily a structured mesh generator: no automatic quadrilateral or hexahedral meshing algorithm is provided. If you want -quadrangles, you have to use transfinite, elliptic or extruded meshes or -recombine unstructured triangular meshes. For hexahedra, your only choice is +quadrangles, you have to use transfinite or extruded meshes or recombine +unstructured triangular meshes. For hexahedra, your only choice is transfinite or extruded meshes; @item Gmsh is not a multi-bloc generator: all meshes produced by Gmsh are @@ -1853,12 +1853,12 @@ and quadrangles (when @code{Recombine Surface} is used: see @ref{Miscellaneous mesh commands}). The 3D unstructured algorithms only generate tetrahedra. -The 2D @emph{structured} algorithms (transfinite, elliptic and extrusion) -generate triangles by default, but quadrangles can be obtained by using the +The 2D @emph{structured} algorithms (transfinite and extrusion) generate +triangles by default, but quadrangles can be obtained by using the @code{Recombine} commands (see @ref{Structured grids}, and -@ref{Miscellaneous mesh commands}). The 3D structured algorithms generate -tetrahedra, hexahedra, prisms and pyramids, depending on the type of the -surface meshes they are based on. +@ref{Miscellaneous mesh commands}). The 3D structured algorithms +generate tetrahedra, hexahedra, prisms and pyramids, depending on the +type of the surface meshes they are based on. @c todo: explain what happens if we have a degenerate geometry (incorrect @c holes with surfaces in contact with the exterior shell, intersecting @@ -2011,8 +2011,6 @@ numbers are listed in @var{expression-list}. The new value is given by @cindex Mesh, extrusion @cindex Transfinite, mesh @cindex Mesh, transfinite -@cindex Elliptic, mesh -@cindex Mesh, elliptic @ftable @code @item Extrude @{ @var{expression-list} @} @{ @var{extrude-list} @var{layers} @} @@ -2082,14 +2080,6 @@ defines the ordering and orientation of the mesh elements, and should thus follow the node ordering for prisms or hexahedra given in @ref{Gmsh node ordering}. -@item Elliptic Surface @{ @var{expression} @} = @{ @var{expression-list} @}; -Selects the surface @var{expression} to be meshed with the 2D elliptic -algorithm (the surface can only have four sides). The @var{expression-list} -should contain the identification numbers of the points on the boundary of -the surface. The ordering of these point numbers defines the ordering and -orientation of the mesh elements, and should thus follow the node ordering -for triangles or quadrangles given in @ref{Gmsh node ordering}. - @end ftable @c ......................................................................... -- GitLab