Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 273 KiB
Newer Older
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  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, "Open")){

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

      }
      else if(!strcmp(yyvsp[-2].c, "System")){
	
	Msg(PARSER_INFO, "Executing system call \"%s\"", yyvsp[-1].c);
	system(yyvsp[-1].c);

Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown command '%s'", yyvsp[-2].c);
#line 1655 "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");

Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown command '%s'", yyvsp[-2].c);
#line 1675 "Gmsh.y"
{
#ifndef _NOPLUGIN
    if(CTX.default_plugins)
      GMSH_PluginManager::Instance()->Action(yyvsp[-4].c,yyvsp[-1].c,0); 
#line 1682 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1686 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#ifndef _BLACKBOX
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
#endif
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 1710 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
#line 1720 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
#line 1730 "Gmsh.y"
{
      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( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
#line 1751 "Gmsh.y"
{
      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( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
#line 1772 "Gmsh.y"
      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
	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]);
	yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
#line 1793 "Gmsh.y"
      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yyname,yylineno))
	vyyerror("Redefinition of function %s",yyvsp[0].c);
      skip_until(NULL, "Return");
#line 1799 "Gmsh.y"
      if(!FunctionManager::Instance()->leaveFunction(&yyin,yyname,yylineno))
	vyyerror("Error while exiting function");
#line 1804 "Gmsh.y"
      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yyname,yylineno))
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown function %s",yyvsp[-1].c);
#line 1809 "Gmsh.y"
      if(!yyvsp[-1].d) skip_until("If", "EndIf");
#line 1813 "Gmsh.y"
#line 1825 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
			   0.,0.,0.,0.,0.,0.,0.,
			   &pc,&prc,NULL);
#line 1832 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
			   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,
Christophe Geuzaine's avatar
Christophe Geuzaine committed
			   &pc,&prc,NULL);
#line 1839 "Gmsh.y"
      Curve *pc, *prc;
      Extrude_ProtudePoint(TRANSLATE_ROTATE,(int)yyvsp[-10].d,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].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
			   &pc,&prc,NULL);
#line 1848 "Gmsh.y"
      Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
#line 1853 "Gmsh.y"
      Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
			   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,1,NULL);
#line 1858 "Gmsh.y"
      Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-10].d,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].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,1,NULL);
#line 1863 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
#line 1868 "Gmsh.y"
      Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],
#line 1873 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
#line 1878 "Gmsh.y"
      Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-12].d,0.,0.,0.,
			   yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr);
#line 1883 "Gmsh.y"
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
#line 1888 "Gmsh.y"
      Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2],
			   yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr);
#line 1896 "Gmsh.y"
      Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
			     0.,0.,0.,0.,0.,0.,0.,0,NULL);
#line 1901 "Gmsh.y"
      Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
			     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);
#line 1906 "Gmsh.y"
      Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-10].d,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].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
#line 1911 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
#line 1916 "Gmsh.y"
{
      int vol = NEWREG();
      Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],
			     0.,0.,0.,0.,0.,0.,0.,vol,&extr);
    ;
    break;}
#line 1922 "Gmsh.y"
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
#line 1928 "Gmsh.y"
{
      int vol = NEWREG();
      Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-12].d,0.,0.,0.,
			     yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr);
    ;
    break;}
#line 1934 "Gmsh.y"
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
#line 1940 "Gmsh.y"
{
      int vol = NEWREG();
      Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2],
			     yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr);
    ;
    break;}
#line 1949 "Gmsh.y"
#line 1952 "Gmsh.y"
#line 1958 "Gmsh.y"
{
      double d;
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
      if(List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-4].l) && List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-2].l)){
	extr.mesh.NbElmLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.ZonLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.hLayer = (double*)Malloc(extr.mesh.NbLayer*sizeof(double));
	for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){
	  List_Read(yyvsp[-6].l,i,&d);
	  extr.mesh.NbElmLayer[i] = (d>0)?(int)d:1;
	  List_Read(yyvsp[-4].l,i,&d);
	  extr.mesh.ZonLayer[i] = (int)d;
	  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);
      List_Delete(yyvsp[-2].l);
#line 1984 "Gmsh.y"
      double d;
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-4].l);
      if(List_Nbr(yyvsp[-4].l) == List_Nbr(yyvsp[-2].l)){
	extr.mesh.NbElmLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.ZonLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.hLayer = (double*)Malloc(extr.mesh.NbLayer*sizeof(double));
	for(int i=0;i<List_Nbr(yyvsp[-4].l);i++){
	  List_Read(yyvsp[-4].l,i,&d);
	  extr.mesh.NbElmLayer[i] = (d>0)?(int)d:1;
	  extr.mesh.ZonLayer[i] = 0;
	  List_Read(yyvsp[-2].l,i,&d);
	  extr.mesh.hLayer[i] = d;
	}
      }
      else{
	vyyerror("Wrong layer definition {%d, %d}", 
	       List_Nbr(yyvsp[-4].l), List_Nbr(yyvsp[-2].l));
      }
      List_Delete(yyvsp[-4].l);
      List_Delete(yyvsp[-2].l);
#line 2008 "Gmsh.y"
{
      extr.mesh.Recombine = true;
    ;
    break;}
#line 2019 "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)
	  Msg(WARNING, "Unkown Curve %d", j);
	  c->ipar[0] = (yyvsp[-1].d>2)?(int)yyvsp[-1].d:2;
	  c->ipar[1] = sign(d);
	  c->dpar[0] = 1.0;
      List_Delete(yyvsp[-3].l);
#line 2037 "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)
	  Msg(WARNING, "Unkown Curve %d", j);
	  c->ipar[0] = (yyvsp[-4].d>2)?(int)yyvsp[-4].d:2;
	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
      List_Delete(yyvsp[-6].l);
#line 2055 "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)
	  Msg(WARNING, "Unkown Curve %d", j);
	  c->ipar[0] = (yyvsp[-4].d>2)?(int)yyvsp[-4].d:2;
	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
      List_Delete(yyvsp[-6].l);
#line 2073 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	Msg(WARNING, "Unkown Surface %d", (int)yyvsp[-4].d);
	s->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=3 && k!=4){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  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;
      List_Delete(yyvsp[-1].l);
#line 2095 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	Msg(WARNING, "Unkown Surface %d", (int)yyvsp[-4].d);
        s->Method = ELLIPTIC;
        k = List_Nbr(yyvsp[-1].l);
        if(k != 4)
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  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;
      List_Delete(yyvsp[-1].l);
#line 2116 "Gmsh.y"
      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
      if(!v)
	Msg(WARNING, "Unkown Volume %d", (int)yyvsp[-4].d);
	v->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=6 && k!=8)
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  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;
      List_Delete(yyvsp[-1].l);
#line 2137 "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);
	  s->RecombineAngle = (yyvsp[-1].d > 0 && yyvsp[-1].d < 90) ? yyvsp[-1].d : 90;
      List_Delete(yyvsp[-3].l);
#line 2151 "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);
	  s->Recombine = 1;
	  s->RecombineAngle = 30.;
        }
      List_Delete(yyvsp[-1].l);
#line 2173 "Gmsh.y"
      ReplaceAllDuplicates(THEM);
#line 2177 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ 
      IntersectAllSegmentsTogether();
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2188 "Gmsh.y"
{yyval.i = 1;;
#line 2189 "Gmsh.y"
{yyval.i = 0;;
#line 2190 "Gmsh.y"
{yyval.i = -1;;
#line 2191 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{yyval.i = -1;;
#line 2192 "Gmsh.y"
{yyval.i = -1;;
#line 2196 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2197 "Gmsh.y"
{ yyval.d = yyvsp[-1].d ;          ;
#line 2198 "Gmsh.y"
{ yyval.d = -yyvsp[0].d ;         ;
#line 2199 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
#line 2200 "Gmsh.y"
{ yyval.d = !yyvsp[0].d ;         ;
#line 2201 "Gmsh.y"
{ yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
#line 2202 "Gmsh.y"
{ yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2203 "Gmsh.y"
{ yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
    break;}
#line 2205 "Gmsh.y"
{ 
      if(!yyvsp[0].d)
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
      else
	yyval.d = yyvsp[-2].d / yyvsp[0].d ;     
    ;
#line 2211 "Gmsh.y"
{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
#line 2212 "Gmsh.y"
{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
#line 2213 "Gmsh.y"
{ yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
#line 2214 "Gmsh.y"
{ yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
#line 2215 "Gmsh.y"
{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
#line 2216 "Gmsh.y"
{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
#line 2217 "Gmsh.y"
{ yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
#line 2218 "Gmsh.y"
{ yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
#line 2219 "Gmsh.y"
{ yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
#line 2220 "Gmsh.y"
{ yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
#line 2221 "Gmsh.y"
{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
#line 2222 "Gmsh.y"
{ yyval.d = exp(yyvsp[-1].d);      ;
#line 2223 "Gmsh.y"
{ yyval.d = log(yyvsp[-1].d);      ;
#line 2224 "Gmsh.y"
{ yyval.d = log10(yyvsp[-1].d);    ;
#line 2225 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-1].d);     ;
#line 2226 "Gmsh.y"
{ yyval.d = sin(yyvsp[-1].d);      ;
#line 2227 "Gmsh.y"
{ yyval.d = asin(yyvsp[-1].d);     ;
#line 2228 "Gmsh.y"
{ yyval.d = cos(yyvsp[-1].d);      ;
#line 2229 "Gmsh.y"
{ yyval.d = acos(yyvsp[-1].d);     ;
#line 2230 "Gmsh.y"
{ yyval.d = tan(yyvsp[-1].d);      ;
#line 2231 "Gmsh.y"
{ yyval.d = atan(yyvsp[-1].d);     ;
#line 2232 "Gmsh.y"
{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
#line 2233 "Gmsh.y"
{ yyval.d = sinh(yyvsp[-1].d);     ;
#line 2234 "Gmsh.y"
{ yyval.d = cosh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2235 "Gmsh.y"
{ yyval.d = tanh(yyvsp[-1].d);     ;
David Colignon's avatar
David Colignon committed
    break;}
#line 2236 "Gmsh.y"
{ yyval.d = fabs(yyvsp[-1].d);     ;
    break;}
#line 2237 "Gmsh.y"
{ yyval.d = floor(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2238 "Gmsh.y"
{ yyval.d = ceil(yyvsp[-1].d);     ;
#line 2239 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
#line 2240 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
#line 2241 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
#line 2242 "Gmsh.y"
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
#line 2244 "Gmsh.y"
{ yyval.d = exp(yyvsp[-1].d);      ;
#line 2245 "Gmsh.y"
{ yyval.d = log(yyvsp[-1].d);      ;
#line 2246 "Gmsh.y"
{ yyval.d = log10(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2247 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-1].d);     ;
#line 2248 "Gmsh.y"
{ yyval.d = sin(yyvsp[-1].d);      ;
#line 2249 "Gmsh.y"
{ yyval.d = asin(yyvsp[-1].d);     ;
#line 2250 "Gmsh.y"
{ yyval.d = cos(yyvsp[-1].d);      ;
#line 2251 "Gmsh.y"
{ yyval.d = acos(yyvsp[-1].d);     ;
#line 2252 "Gmsh.y"
{ yyval.d = tan(yyvsp[-1].d);      ;
#line 2253 "Gmsh.y"
{ yyval.d = atan(yyvsp[-1].d);     ;
#line 2254 "Gmsh.y"
{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
#line 2255 "Gmsh.y"
{ yyval.d = sinh(yyvsp[-1].d);     ;
#line 2256 "Gmsh.y"
{ yyval.d = cosh(yyvsp[-1].d);     ;
#line 2257 "Gmsh.y"
{ yyval.d = tanh(yyvsp[-1].d);     ;
#line 2258 "Gmsh.y"
{ yyval.d = fabs(yyvsp[-1].d);     ;
#line 2259 "Gmsh.y"
{ yyval.d = floor(yyvsp[-1].d);    ;
#line 2260 "Gmsh.y"
{ yyval.d = ceil(yyvsp[-1].d);     ;
#line 2261 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
    break;}
#line 2262 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
#line 2263 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
#line 2264 "Gmsh.y"
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
#line 2273 "Gmsh.y"
{ yyval.d = yyvsp[0].d; ;
#line 2274 "Gmsh.y"
{ yyval.d = 3.141592653589793; ;
#line 2275 "Gmsh.y"
{ yyval.d = ParUtil::Instance()->rank(); ;
#line 2276 "Gmsh.y"
{ yyval.d = ParUtil::Instance()->size(); ;
    break;}
#line 2281 "Gmsh.y"
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown variable '%s'", yyvsp[0].c) ;
	yyval.d = 0. ;
      }
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ;
#line 2292 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-3].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	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{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d) ;
	  yyval.d = 0. ;
	}
      }
    ;
    break;}
#line 2309 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-1].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown variable '%s'", yyvsp[-1].c) ;
	yyval.d = 0. ;
      }
      else
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ;
#line 2320 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-4].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown variable '%s'", yyvsp[-4].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ;
	  yyval.d = 0. ;
	}
      }
    ;
    break;}
#line 2339 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unknown numeric option '%s.%s'", yyvsp[-2].c, yyvsp[0].c);
	  yyval.d = 0. ;
	}
#line 2355 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unknown numeric option '%s[%d].%s'", yyvsp[-5].c, (int)yyvsp[-3].d, yyvsp[0].c);
	  yyval.d = 0. ;
	else
	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);