diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h index 90f28a2f633f6fbdc2b69261c509301103f9ad6c..a5ba17477685850c2f06548e8947e1c2369a6527 100644 --- a/Geo/ExtrudeParams.h +++ b/Geo/ExtrudeParams.h @@ -1,7 +1,7 @@ #ifndef _EXTRUDE_PARAMS_H_ #define _EXTRUDE_PARAMS_H_ -#define NB_LAYER_MAX 30 +#define NB_LAYER_MAX 500 #define EXTRUDED_ENTITY 1 #define COPIED_ENTITY 2 diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index ff3066c833f9b5b39dacb45d32807b0dbd9edbaa..45e7279b1f69db39a9344c2098a33294e6d127d8 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -175,7 +175,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.109 2001-08-17 08:31:31 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.110 2001-08-20 10:30:19 geuzaine Exp $ // // Generaliser sprintf avec des chaines de caracteres @@ -606,19 +606,19 @@ static const short yyrline[] = { 0, 1419, 1420, 1423, 1428, 1439, 1457, 1465, 1470, 1481, 1549, 1569, 1575, 1579, 1599, 1615, 1629, 1654, 1679, 1705, 1711, 1716, 1721, 1725, 1735, 1741, 1747, 1751, 1755, 1759, 1763, - 1768, 1773, 1779, 1786, 1790, 1795, 1816, 1826, 1845, 1863, - 1881, 1903, 1924, 1945, 1959, 1980, 1985, 1996, 1998, 1999, - 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, - 2013, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, - 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, - 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, - 2049, 2050, 2051, 2056, 2061, 2062, 2063, 2067, 2078, 2095, - 2106, 2125, 2141, 2157, 2173, 2190, 2195, 2199, 2203, 2207, - 2212, 2217, 2221, 2225, 2231, 2235, 2240, 2244, 2249, 2253, - 2257, 2263, 2269, 2276, 2282, 2286, 2290, 2300, 2307, 2318, - 2332, 2348, 2368, 2392, 2398, 2402, 2406, 2417, 2422, 2433, - 2438, 2456, 2461, 2474, 2480, 2486, 2491, 2499, 2512, 2516, - 2541, 2555 + 1768, 1773, 1779, 1786, 1790, 1795, 1825, 1835, 1854, 1872, + 1890, 1912, 1933, 1954, 1968, 1989, 1994, 2005, 2007, 2008, + 2009, 2010, 2013, 2015, 2016, 2017, 2018, 2019, 2020, 2021, + 2022, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, + 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 2058, 2059, 2060, 2065, 2070, 2071, 2072, 2076, 2087, 2104, + 2115, 2134, 2150, 2166, 2182, 2199, 2204, 2208, 2212, 2216, + 2221, 2226, 2230, 2234, 2240, 2244, 2249, 2253, 2258, 2262, + 2266, 2272, 2278, 2285, 2291, 2295, 2299, 2309, 2316, 2327, + 2341, 2357, 2377, 2401, 2407, 2411, 2415, 2426, 2431, 2442, + 2447, 2465, 2470, 2483, 2489, 2495, 2500, 2508, 2521, 2525, + 2550, 2564 }; #endif @@ -4744,15 +4744,24 @@ case 226: int j; extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l); - for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){ - List_Read(yyvsp[-6].l,i,&d); - j = (int)d; - extr.mesh.NbElmLayer[i] = j; - List_Read(yyvsp[-4].l,i,&d); - j = (int)d; - extr.mesh.ZonLayer[i] = j; - List_Read(yyvsp[-2].l,i,&d); - extr.mesh.hLayer[i] = d; + if(extr.mesh.NbLayer > NB_LAYER_MAX){ + vyyerror("Too many layers in extrusion"); + } + else if(List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-4].l) && List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-2].l)){ + for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){ + List_Read(yyvsp[-6].l,i,&d); + j = (int)d; + extr.mesh.NbElmLayer[i] = j; + List_Read(yyvsp[-4].l,i,&d); + j = (int)d; + extr.mesh.ZonLayer[i] = j; + List_Read(yyvsp[-2].l,i,&d); + extr.mesh.hLayer[i] = d; + } + } + else{ + vyyerror("Wrong layer definition {%d, %d, %d}", + List_Nbr(yyvsp[-6].l), List_Nbr(yyvsp[-4].l), List_Nbr(yyvsp[-2].l)); } List_Delete(yyvsp[-6].l); List_Delete(yyvsp[-4].l); @@ -4760,13 +4769,13 @@ case 226: ; break;} case 227: -#line 1817 "Gmsh.y" +#line 1826 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} case 228: -#line 1828 "Gmsh.y" +#line 1837 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -4786,7 +4795,7 @@ case 228: ; break;} case 229: -#line 1846 "Gmsh.y" +#line 1855 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4806,7 +4815,7 @@ case 229: ; break;} case 230: -#line 1864 "Gmsh.y" +#line 1873 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4826,7 +4835,7 @@ case 230: ; break;} case 231: -#line 1882 "Gmsh.y" +#line 1891 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -4850,7 +4859,7 @@ case 231: ; break;} case 232: -#line 1904 "Gmsh.y" +#line 1913 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -4873,7 +4882,7 @@ case 232: ; break;} case 233: -#line 1925 "Gmsh.y" +#line 1934 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -4896,7 +4905,7 @@ case 233: ; break;} case 234: -#line 1946 "Gmsh.y" +#line 1955 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -4912,7 +4921,7 @@ case 234: ; break;} case 235: -#line 1960 "Gmsh.y" +#line 1969 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -4928,71 +4937,71 @@ case 235: ; break;} case 236: -#line 1982 "Gmsh.y" +#line 1991 "Gmsh.y" { Coherence_PS(); ; break;} case 237: -#line 1986 "Gmsh.y" +#line 1995 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} case 238: -#line 1997 "Gmsh.y" +#line 2006 "Gmsh.y" {yyval.i = 1;; break;} case 239: -#line 1998 "Gmsh.y" +#line 2007 "Gmsh.y" {yyval.i = 0;; break;} case 240: -#line 1999 "Gmsh.y" +#line 2008 "Gmsh.y" {yyval.i = -1;; break;} case 241: -#line 2000 "Gmsh.y" +#line 2009 "Gmsh.y" {yyval.i = -1;; break;} case 242: -#line 2001 "Gmsh.y" +#line 2010 "Gmsh.y" {yyval.i = -1;; break;} case 243: -#line 2005 "Gmsh.y" +#line 2014 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 244: -#line 2006 "Gmsh.y" +#line 2015 "Gmsh.y" { yyval.d = yyvsp[-1].d ; ; break;} case 245: -#line 2007 "Gmsh.y" +#line 2016 "Gmsh.y" { yyval.d = -yyvsp[0].d ; ; break;} case 246: -#line 2008 "Gmsh.y" +#line 2017 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 247: -#line 2009 "Gmsh.y" +#line 2018 "Gmsh.y" { yyval.d = !yyvsp[0].d ; ; break;} case 248: -#line 2010 "Gmsh.y" +#line 2019 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} case 249: -#line 2011 "Gmsh.y" +#line 2020 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} case 250: -#line 2012 "Gmsh.y" +#line 2021 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; break;} case 251: -#line 2014 "Gmsh.y" +#line 2023 "Gmsh.y" { if(!yyvsp[0].d) vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5001,151 +5010,151 @@ case 251: ; break;} case 252: -#line 2020 "Gmsh.y" +#line 2029 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} case 253: -#line 2021 "Gmsh.y" +#line 2030 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} case 254: -#line 2022 "Gmsh.y" +#line 2031 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} case 255: -#line 2023 "Gmsh.y" +#line 2032 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} case 256: -#line 2024 "Gmsh.y" +#line 2033 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} case 257: -#line 2025 "Gmsh.y" +#line 2034 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} case 258: -#line 2026 "Gmsh.y" +#line 2035 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} case 259: -#line 2027 "Gmsh.y" +#line 2036 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} case 260: -#line 2028 "Gmsh.y" +#line 2037 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} case 261: -#line 2029 "Gmsh.y" +#line 2038 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} case 262: -#line 2030 "Gmsh.y" +#line 2039 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} case 263: -#line 2031 "Gmsh.y" +#line 2040 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 264: -#line 2032 "Gmsh.y" +#line 2041 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 265: -#line 2033 "Gmsh.y" +#line 2042 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 266: -#line 2034 "Gmsh.y" +#line 2043 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 267: -#line 2035 "Gmsh.y" +#line 2044 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 268: -#line 2036 "Gmsh.y" +#line 2045 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 269: -#line 2037 "Gmsh.y" +#line 2046 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 270: -#line 2038 "Gmsh.y" +#line 2047 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 271: -#line 2039 "Gmsh.y" +#line 2048 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 272: -#line 2040 "Gmsh.y" +#line 2049 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 273: -#line 2041 "Gmsh.y" +#line 2050 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 274: -#line 2042 "Gmsh.y" +#line 2051 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 275: -#line 2043 "Gmsh.y" +#line 2052 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 276: -#line 2044 "Gmsh.y" +#line 2053 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 277: -#line 2045 "Gmsh.y" +#line 2054 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 278: -#line 2046 "Gmsh.y" +#line 2055 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 279: -#line 2047 "Gmsh.y" +#line 2056 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 280: -#line 2048 "Gmsh.y" +#line 2057 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 281: -#line 2049 "Gmsh.y" +#line 2058 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 282: -#line 2050 "Gmsh.y" +#line 2059 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 283: -#line 2051 "Gmsh.y" +#line 2060 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 284: -#line 2060 "Gmsh.y" +#line 2069 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 285: -#line 2061 "Gmsh.y" +#line 2070 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} case 286: -#line 2062 "Gmsh.y" +#line 2071 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} case 287: -#line 2063 "Gmsh.y" +#line 2072 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} case 288: -#line 2068 "Gmsh.y" +#line 2077 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5157,7 +5166,7 @@ case 288: ; break;} case 289: -#line 2079 "Gmsh.y" +#line 2088 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5175,7 +5184,7 @@ case 289: ; break;} case 290: -#line 2096 "Gmsh.y" +#line 2105 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5187,7 +5196,7 @@ case 290: ; break;} case 291: -#line 2107 "Gmsh.y" +#line 2116 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5205,7 +5214,7 @@ case 291: ; break;} case 292: -#line 2126 "Gmsh.y" +#line 2135 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c); @@ -5222,7 +5231,7 @@ case 292: ; break;} case 293: -#line 2142 "Gmsh.y" +#line 2151 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c); @@ -5239,7 +5248,7 @@ case 293: ; break;} case 294: -#line 2158 "Gmsh.y" +#line 2167 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c); @@ -5256,7 +5265,7 @@ case 294: ; break;} case 295: -#line 2174 "Gmsh.y" +#line 2183 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c); @@ -5273,130 +5282,130 @@ case 295: ; break;} case 296: -#line 2192 "Gmsh.y" +#line 2201 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; ; break;} case 297: -#line 2196 "Gmsh.y" +#line 2205 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} case 298: -#line 2200 "Gmsh.y" +#line 2209 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} case 299: -#line 2204 "Gmsh.y" +#line 2213 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} case 300: -#line 2208 "Gmsh.y" +#line 2217 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} case 301: -#line 2214 "Gmsh.y" +#line 2223 "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 302: -#line 2218 "Gmsh.y" +#line 2227 "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 303: -#line 2222 "Gmsh.y" +#line 2231 "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 304: -#line 2226 "Gmsh.y" +#line 2235 "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 305: -#line 2233 "Gmsh.y" +#line 2242 "Gmsh.y" { ; break;} case 306: -#line 2236 "Gmsh.y" +#line 2245 "Gmsh.y" { ; break;} case 307: -#line 2242 "Gmsh.y" +#line 2251 "Gmsh.y" { ; break;} case 308: -#line 2245 "Gmsh.y" +#line 2254 "Gmsh.y" { ; break;} case 309: -#line 2251 "Gmsh.y" +#line 2260 "Gmsh.y" { ; break;} case 310: -#line 2254 "Gmsh.y" +#line 2263 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} case 311: -#line 2258 "Gmsh.y" +#line 2267 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} case 312: -#line 2265 "Gmsh.y" +#line 2274 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(List_T*)) ; List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} case 313: -#line 2270 "Gmsh.y" +#line 2279 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} case 314: -#line 2278 "Gmsh.y" +#line 2287 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} case 315: -#line 2283 "Gmsh.y" +#line 2292 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} case 316: -#line 2287 "Gmsh.y" +#line 2296 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} case 317: -#line 2291 "Gmsh.y" +#line 2300 "Gmsh.y" { yyval.l=yyvsp[-1].l; for(i=0 ; i<List_Nbr(yyval.l) ; i++){ @@ -5406,7 +5415,7 @@ case 317: ; break;} case 318: -#line 2302 "Gmsh.y" +#line 2311 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; for(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.)) @@ -5414,7 +5423,7 @@ case 318: ; break;} case 319: -#line 2308 "Gmsh.y" +#line 2317 "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)){ @@ -5427,7 +5436,7 @@ case 319: ; break;} case 320: -#line 2319 "Gmsh.y" +#line 2328 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5443,7 +5452,7 @@ case 320: ; break;} case 321: -#line 2333 "Gmsh.y" +#line 2342 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5461,7 +5470,7 @@ case 321: ; break;} case 322: -#line 2349 "Gmsh.y" +#line 2358 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5483,7 +5492,7 @@ case 322: ; break;} case 323: -#line 2369 "Gmsh.y" +#line 2378 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5507,26 +5516,26 @@ case 323: ; break;} case 324: -#line 2394 "Gmsh.y" +#line 2403 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} case 325: -#line 2399 "Gmsh.y" +#line 2408 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} case 326: -#line 2403 "Gmsh.y" +#line 2412 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} case 327: -#line 2407 "Gmsh.y" +#line 2416 "Gmsh.y" { for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){ List_Read(yyvsp[0].l, i, &d) ; @@ -5536,26 +5545,26 @@ case 327: ; break;} case 328: -#line 2419 "Gmsh.y" +#line 2428 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} case 329: -#line 2423 "Gmsh.y" +#line 2432 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} case 330: -#line 2434 "Gmsh.y" +#line 2443 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c); ; break;} case 331: -#line 2439 "Gmsh.y" +#line 2448 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown color option class '%s'", yyvsp[-4].c); @@ -5573,13 +5582,13 @@ case 331: ; break;} case 332: -#line 2458 "Gmsh.y" +#line 2467 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 333: -#line 2462 "Gmsh.y" +#line 2471 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; ColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -5592,26 +5601,26 @@ case 333: ; break;} case 334: -#line 2476 "Gmsh.y" +#line 2485 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} case 335: -#line 2481 "Gmsh.y" +#line 2490 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} case 336: -#line 2488 "Gmsh.y" +#line 2497 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} case 337: -#line 2492 "Gmsh.y" +#line 2501 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ; strcpy(yyval.c, yyvsp[-3].c) ; @@ -5621,7 +5630,7 @@ case 337: ; break;} case 338: -#line 2500 "Gmsh.y" +#line 2509 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ; for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){ @@ -5636,13 +5645,13 @@ case 338: ; break;} case 339: -#line 2513 "Gmsh.y" +#line 2522 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} case 340: -#line 2517 "Gmsh.y" +#line 2526 "Gmsh.y" { for(i = 0 ; i<List_Nbr(yyvsp[-1].l) ; i++){ if(!i){ @@ -5669,7 +5678,7 @@ case 340: ; break;} case 341: -#line 2542 "Gmsh.y" +#line 2551 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c))) vyyerror("Unknown string option class '%s'", yyvsp[-3].c); @@ -5685,7 +5694,7 @@ case 341: ; break;} case 342: -#line 2556 "Gmsh.y" +#line 2565 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c))) vyyerror("Unknown string option class '%s'", yyvsp[-6].c); @@ -5922,7 +5931,7 @@ yyerrhandle: } return 1; } -#line 2571 "Gmsh.y" +#line 2580 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index a5826ceccee23d6f4b770830432315848b40ff92..f96299fea5fb5a6b436d265a333dafa8f2a1863e 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.95 2001-08-17 08:31:32 geuzaine Exp $ +// $Id: Gmsh.y,v 1.96 2001-08-20 10:30:20 geuzaine Exp $ // // Generaliser sprintf avec des chaines de caracteres @@ -1799,15 +1799,24 @@ ExtrudeParameter : int j; extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr($3); - for(int i=0;i<List_Nbr($3);i++){ - List_Read($3,i,&d); - j = (int)d; - extr.mesh.NbElmLayer[i] = j; - List_Read($5,i,&d); - j = (int)d; - extr.mesh.ZonLayer[i] = j; - List_Read($7,i,&d); - extr.mesh.hLayer[i] = d; + if(extr.mesh.NbLayer > NB_LAYER_MAX){ + vyyerror("Too many layers in extrusion"); + } + else if(List_Nbr($3) == List_Nbr($5) && List_Nbr($3) == List_Nbr($7)){ + for(int i=0;i<List_Nbr($3);i++){ + List_Read($3,i,&d); + j = (int)d; + extr.mesh.NbElmLayer[i] = j; + List_Read($5,i,&d); + j = (int)d; + extr.mesh.ZonLayer[i] = j; + List_Read($7,i,&d); + extr.mesh.hLayer[i] = d; + } + } + else{ + vyyerror("Wrong layer definition {%d, %d, %d}", + List_Nbr($3), List_Nbr($5), List_Nbr($7)); } List_Delete($3); List_Delete($5); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 7916e8ea3bd5c65b4b3ad08a5321b1e45ec0adaf..9eae60b210ec808f48dc81cd5eb810dc1ca613d9 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.109 2001-08-17 08:31:32 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.110 2001-08-20 10:30:20 geuzaine Exp $ */ #define FLEX_SCANNER @@ -998,7 +998,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.109 2001-08-17 08:31:32 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.110 2001-08-20 10:30:20 geuzaine Exp $ #include <stdio.h> #include <stdlib.h>