Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 225 KiB
Newer Older
      yyval.s.Type = MSH_SURF_PLAN;
      yyval.s.Num  = (int)yyvsp[-4].d;
case 170:
#line 1188 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      support = FindSurface((int)yyvsp[-4].d,THEM);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	Cdbz101((int)yyvsp[-8].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-2].l,NULL);
	s = FindSurface((int)yyvsp[-8].d,THEM);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unkown Surface %d", (int)yyvsp[-8].d);
	else{
	  s->Typ =  MSH_SURF_TRIMMED;
	  s->Support = support;
	  yyval.s.Type = MSH_SURF_TRIMMED;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  yyval.s.Num  = (int)yyvsp[-8].d;
case 171:
#line 1207 "Gmsh.y"
      List_Read(yyvsp[-1].l,0,&d);
      i = (int)d;
      EdgeLoop *el = FindEdgeLoop(i,THEM);
      if(!el)
	vyyerror("Unkown Loop %d", i);
      else{
	j = List_Nbr(el->Curves);
	if(j==4)
	  yyval.s.Type = MSH_SURF_REGL;
	else if(j==3)
	  yyval.s.Type  = MSH_SURF_TRIC;
	else
	  vyyerror("Wrong Definition of Ruled Surface %d: "
		   "%d Borders Instead of 3 or 4", 
		   (int)yyvsp[-4].d, j);
	Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
	yyval.s.Num = (int)yyvsp[-4].d;
      }
    ;
case 172:
#line 1230 "Gmsh.y"
      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
      yyval.s.Type  = MSH_SURF_NURBS;
      yyval.s.Num = (int)yyvsp[-16].d;
    ;
case 173:
#line 1238 "Gmsh.y"
      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
    ;
case 174:
#line 1242 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_SURFACE;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
case 175:
#line 1248 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_SURF_LOOP;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
case 176:
#line 1254 "Gmsh.y"
{
      yyval.s.Num = (int)yyvsp[-2].d;
      Surface *s = FindSurface(yyval.s.Num,THEM);
      if(!s)
	vyyerror("Unknown Surface %d", yyval.s.Num);
      else
	yyval.s.Type = s->Typ;
     ;
    break;}
case 177:
#line 1266 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;      
    ;
    break;}
case 178:
#line 1272 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
case 179:
#line 1278 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
case 180:
#line 1291 "Gmsh.y"
      TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
case 181:
#line 1296 "Gmsh.y"
      RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
case 182:
#line 1301 "Gmsh.y"
      SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
case 183:
#line 1306 "Gmsh.y"
{
      DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
      yyval.l = yyvsp[-1].l;
    ;
#line 1313 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
#line 1314 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
#line 1315 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
case 187:
#line 1320 "Gmsh.y"
{
      yyval.l = List_Create(3,3,sizeof(Shape));
    ;
    break;}
case 188:
#line 1324 "Gmsh.y"
{
      List_Add(yyval.l,&yyvsp[0].s);
      yyval.l = yyvsp[-1].l;
    ;
    break;}
case 189:
#line 1336 "Gmsh.y"
{
      yyval.l = List_Create(3,3,sizeof(Shape));
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read (yyvsp[-1].l,i,&TheShape);
	CopyShape(TheShape.Type,TheShape.Num,&j);
	TheShape.Num = j;
	List_Add(yyval.l,&TheShape);
      }
    ;
    break;}
case 190:
#line 1354 "Gmsh.y"
{
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read (yyvsp[-1].l,i,&TheShape);
	DeleteShape(TheShape.Type,TheShape.Num);
      }
    ;
    break;}
case 191:
#line 1361 "Gmsh.y"
	if(!strcmp(yyvsp[-4].c, "View"))
	  FreeView((int)yyvsp[-2].d);
case 192:
#line 1366 "Gmsh.y"
case 193:
#line 1378 "Gmsh.y"
      if(!strcmp(yyvsp[-2].c, "Include")){

	yyinTab[RecursionLevel++] = yyin;

	strcpy(tmpstring, yyname);
	i = strlen(yyname)-1 ;
	while(i >= 0 && yyname[i] != '/' && yyname[i] != '\\') i-- ;
	tmpstring[i+1] = '\0';
	strcat(tmpstring,yyvsp[-1].c);

	if((yyin = fopen(tmpstring,"r"))){
	  Msg(INFO, "Including '%s'", tmpstring); 
	  strcpy(yynameTab[RecursionLevel-1],yyname);
	  yylinenoTab[RecursionLevel-1]=yylineno;
	  yylineno=1;
	  strcpy(yyname,tmpstring);
	  while(!feof(yyin)){
	    yyparse();
	  }
	  fclose(yyin);
	  yyin = yyinTab[--RecursionLevel];
	  strcpy(yyname,yynameTab[RecursionLevel]);
	  yylineno = yylinenoTab[RecursionLevel];
	  vyyerror("Unknown File '%s'", tmpstring) ;  
	  yyin = yyinTab[--RecursionLevel];
	}

      else if(!strcmp(yyvsp[-2].c, "Print")){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	if(!CTX.batch) CreateOutputFile(yyvsp[-1].c, CTX.print.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      }
      else if(!strcmp(yyvsp[-2].c, "Save")){
	CreateOutputFile(yyvsp[-1].c, CTX.mesh.format);
      }
      else if(!strcmp(yyvsp[-2].c, "Merge")){

	FILE *ff = yyin;
	MergeProblem(yyvsp[-1].c);
	yyin = ff;

      }
      else if(!strcmp(yyvsp[-2].c, "System")){
	
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	Msg(PARSER_INFO, "Executing System Call \"%s\"", yyvsp[-1].c);
	system(yyvsp[-1].c);

      else
	vyyerror("Unknown Command '%s'", yyvsp[-2].c);
case 194:
#line 1432 "Gmsh.y"
      if(!strcmp(yyvsp[-2].c, "Sleep")){

	long sleep_time = GetTime();
	while(1){
	  if(GetTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
	}
      
      }
      else if(!strcmp(yyvsp[-2].c, "Mesh")){

	//Maillage_Dimension_0(THEM);
	//mai3d(THEM,(int)$2);
	vyyerror("Mesh directives are not (yet) allowed in scripts");

      }
      else
	vyyerror("Unknown Command '%s'", yyvsp[-2].c);
    ;
case 195:
#line 1452 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 196:
#line 1456 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      if(!CTX.batch){ // we're in interactive mode
	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
	  Replot();
	  DrawUI();
	  DrawUI();
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 197:
#line 1478 "Gmsh.y"
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
case 198:
#line 1492 "Gmsh.y"
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
case 199:
#line 1506 "Gmsh.y"
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ;
      
      TheSymbol.Name = yyvsp[-6].c;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(1,1,sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
	List_Add(Symbol_L, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
      }
      
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
case 200:
#line 1531 "Gmsh.y"
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ;
      TheSymbol.Name = yyvsp[-8].c;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(1,1,sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
	List_Add(Symbol_L, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
      }
      
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
    break;}
case 201:
#line 1556 "Gmsh.y"
      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
	FILE* ff;
	if(RecursionLevel)
	  ff = yyinTab[RecursionLevel-1];
	else
	  ff = yyin;
	
	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
	  LoopControlVariablesTab[ImbricatedLoop-1][2];
	if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
	  TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
	  pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols);
	  *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
	    LoopControlVariablesTab[ImbricatedLoop-1][2] ;
	
	fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
case 202:
#line 1582 "Gmsh.y"
      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno))
	vyyerror("Redefinition of function %s",yyvsp[0].c);
      skip_until(NULL, "Return");
case 203:
#line 1588 "Gmsh.y"
      if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno))
	vyyerror("Error while exiting function");
case 204:
#line 1593 "Gmsh.y"
      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno))
	vyyerror("Unknown Function %s",yyvsp[-1].c);
case 205:
#line 1598 "Gmsh.y"
      if(!yyvsp[-1].d) skip_until("If", "EndIf");
case 206:
#line 1602 "Gmsh.y"
case 207:
#line 1613 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL);
case 208:
#line 1618 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
			   &pc,&prc,NULL);
case 209:
#line 1624 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL);
case 210:
#line 1628 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL);
case 211:
#line 1632 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL);
case 212:
#line 1636 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
case 213:
#line 1640 "Gmsh.y"
{
    int vol = NEWREG();
    Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr);
  ;
    break;}
case 214:
#line 1645 "Gmsh.y"
{
    int vol = NEWREG();
    Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr);
  ;
    break;}
case 215:
#line 1653 "Gmsh.y"
case 216:
#line 1656 "Gmsh.y"
case 217:
#line 1662 "Gmsh.y"
{
      double d;
      int j;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
      extr.mesh.ExtrudeMesh = true;
      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;
case 218:
#line 1679 "Gmsh.y"
      extr.mesh.Recombine = true;
case 219:
#line 1690 "Gmsh.y"
      Curve *c;
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
	List_Read(yyvsp[-3].l,i,&d);
	j = (int)fabs(d);
        c = FindCurve(j,THEM);
	if(!c)
	  vyyerror("Unkown Curve %d", j);
	  c->Method = TRANSFINI;
	  c->ipar[0] = (int)yyvsp[-1].d;
	  c->ipar[1] = sign(d);
	  c->dpar[0] = 1.0;
case 220:
#line 1707 "Gmsh.y"
      Curve *c;
      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
	List_Read(yyvsp[-6].l,i,&d);
	j = (int)fabs(d);
        c = FindCurve(j,THEM);
	if(!c)
	  vyyerror("Unkown Curve %d", j);
	  c->Method = TRANSFINI;
	  c->ipar[0] = (int)yyvsp[-4].d;
	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
case 221:
#line 1724 "Gmsh.y"
      Curve *c;
      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
	List_Read(yyvsp[-6].l,i,&d);
	j = (int)fabs(d);
        c = FindCurve(j,THEM);
	if(!c)
	  vyyerror("Unkown Curve %d", j);
	  c->Method = TRANSFINI;
	  c->ipar[0] = (int)yyvsp[-4].d;
	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
case 222:
#line 1741 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
	s->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=3 && k!=4){
	  vyyerror("Wrong Definition of Transfinite Surface %d: "
		   "%d Points Instead of 3 or 4" , yyvsp[-4].d, k) ;
	}
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    s->ipar[i] = j;
case 223:
#line 1762 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
        s->Method = ELLIPTIC;
        k = List_Nbr(yyvsp[-1].l);
        if(k != 4)
	  vyyerror("Wrong Definition of Elliptic Surface %d: "
		   "%d Points Instead of 4" , yyvsp[-4].d, k) ;
        else{
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    s->ipar[i] = j;
case 224:
#line 1782 "Gmsh.y"
      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
      if(!v)
	vyyerror("Unkown Volume %d", (int)yyvsp[-4].d);
	v->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=6 && k!=8)
	  vyyerror("Wrong Definition of Transfinite Volume %d: "
		   "%d Points Instead of 6 or 8" , yyvsp[-4].d, k) ;
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    v->ipar[i] = j;
case 225:
#line 1802 "Gmsh.y"
      Surface *s;
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
	List_Read(yyvsp[-3].l,i,&d);
	j = (int)d;
	s = FindSurface(j,THEM);
	if(!s){
	  /* Allow generic lists, even if the surfaces don't exist
	     vyyerror("Unkown Surface %d", j); */
	}
	else{
	  s->Recombine = 1;
	  s->RecombineAngle = yyvsp[-1].d;
case 226:
#line 1819 "Gmsh.y"
      Surface *s;
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read(yyvsp[-1].l,i,&d);
	j = (int)d;
        s = FindSurface(j,THEM);
	if(!s){
	  /* Allow generic lists, even if the surfaces don't exist
	     vyyerror("Unkown Surface %d", j); */
	else{
	  s->Recombine = 1;
	  s->RecombineAngle = 30.;
        }
case 227:
#line 1844 "Gmsh.y"
case 228:
#line 1848 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ 
      IntersectAllSegmentsTogether();
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1859 "Gmsh.y"
{ yyval.d = yyvsp[0].d; ;
#line 1860 "Gmsh.y"
{ yyval.d = -yyvsp[0].d; ;
#line 1864 "Gmsh.y"
{yyval.i = 1;;
#line 1865 "Gmsh.y"
{yyval.i = 0;;
#line 1866 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{yyval.i = -1;;
#line 1867 "Gmsh.y"
#line 1868 "Gmsh.y"
{yyval.i = -1;;
#line 1872 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
#line 1873 "Gmsh.y"
{ yyval.d = yyvsp[-1].d ;          ;
#line 1874 "Gmsh.y"
{ yyval.d = -yyvsp[0].d ;         ;
#line 1875 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
#line 1876 "Gmsh.y"
{ yyval.d = !yyvsp[0].d ;         ;
#line 1877 "Gmsh.y"
{ yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1878 "Gmsh.y"
{ yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
#line 1879 "Gmsh.y"
{ yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
    break;}
case 244:
#line 1881 "Gmsh.y"
{ 
      if(!yyvsp[0].d)
	vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
      else
	yyval.d = yyvsp[-2].d / yyvsp[0].d ;     
    ;
#line 1887 "Gmsh.y"
{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
#line 1888 "Gmsh.y"
{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
#line 1889 "Gmsh.y"
{ yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
#line 1890 "Gmsh.y"
{ yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
#line 1891 "Gmsh.y"
{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
#line 1892 "Gmsh.y"
{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
#line 1893 "Gmsh.y"
{ yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
#line 1894 "Gmsh.y"
{ yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
#line 1895 "Gmsh.y"
{ yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
#line 1896 "Gmsh.y"
{ yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
#line 1897 "Gmsh.y"
{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
#line 1898 "Gmsh.y"
{ yyval.d = exp(yyvsp[-1].d);      ;
#line 1899 "Gmsh.y"
{ yyval.d = log(yyvsp[-1].d);      ;
#line 1900 "Gmsh.y"
{ yyval.d = log10(yyvsp[-1].d);    ;
#line 1901 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-1].d);     ;
#line 1902 "Gmsh.y"
{ yyval.d = sin(yyvsp[-1].d);      ;
#line 1903 "Gmsh.y"
{ yyval.d = asin(yyvsp[-1].d);     ;
#line 1904 "Gmsh.y"
{ yyval.d = cos(yyvsp[-1].d);      ;
#line 1905 "Gmsh.y"
{ yyval.d = acos(yyvsp[-1].d);     ;
#line 1906 "Gmsh.y"
{ yyval.d = tan(yyvsp[-1].d);      ;
#line 1907 "Gmsh.y"
{ yyval.d = atan(yyvsp[-1].d);     ;
#line 1908 "Gmsh.y"
{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
#line 1909 "Gmsh.y"
{ yyval.d = sinh(yyvsp[-1].d);     ;
#line 1910 "Gmsh.y"
{ yyval.d = cosh(yyvsp[-1].d);     ;
#line 1911 "Gmsh.y"
{ yyval.d = tanh(yyvsp[-1].d);     ;
#line 1912 "Gmsh.y"
{ yyval.d = fabs(yyvsp[-1].d);     ;
#line 1913 "Gmsh.y"
{ yyval.d = floor(yyvsp[-1].d);    ;
#line 1914 "Gmsh.y"
{ yyval.d = ceil(yyvsp[-1].d);     ;
#line 1915 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1916 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
David Colignon's avatar
David Colignon committed
    break;}
#line 1917 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
    break;}
#line 1918 "Gmsh.y"
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1927 "Gmsh.y"
{ yyval.d = yyvsp[0].d; ;
#line 1928 "Gmsh.y"
{ yyval.d = 3.141592653589793; ;
    break;}
case 279:
#line 1933 "Gmsh.y"
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[0].c) ;
	yyval.d = 0. ;
      }
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ;
case 280:
#line 1944 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-3].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-1].d)))
	  yyval.d = *pd ;
	else{
	  vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d) ;
	  yyval.d = 0. ;
	}
      }
    ;
    break;}
case 281:
#line 1961 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-1].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-1].c) ;
	yyval.d = 0. ;
      }
      else
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ;
case 282:
#line 1972 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-4].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-4].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
	else{
	  vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ;
	  yyval.d = 0. ;
	}
      }
    ;
    break;}
case 283:
#line 1991 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-2].c, yyvsp[0].c);
	  yyval.d = 0. ;
	}
case 284:
#line 2007 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){