Newer
Older
yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
ImbricatedLoop++;
if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
yymsg(GERROR, "Reached maximum number of imbricated loops");
ImbricatedLoop = MAX_RECUR_LOOPS-1;
}
if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
if(ImbricatedLoop <= 0){
yymsg(GERROR, "Invalid For/EndFor loop");
ImbricatedLoop = 0;
double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0];
double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1];
double step = LoopControlVariablesTab[ImbricatedLoop-1][2];
int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1);
if(do_next){
LoopControlVariablesTab[ImbricatedLoop-1][0] +=
LoopControlVariablesTab[ImbricatedLoop-1][2];
Symbol TheSymbol;
TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
Symbol *pSymbol;
if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol)))
yymsg(GERROR, "Unknown loop variable");
else
*(double*)List_Pointer_Fast(pSymbol->val, 0) +=
LoopControlVariablesTab[ImbricatedLoop-1][2];
}
fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
}
{
if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c);
if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))

Christophe Geuzaine
committed
yymsg(GERROR, "Error while exiting function");
{
if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
//FIXME: wee leak $2
{
if(!yyvsp[-1].d) skip_until("If", "EndIf");
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(TRANSLATE, yyvsp[-1].l,
yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(ROTATE, yyvsp[-1].l,
0., 0., 0., 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,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l,
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].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d,
NULL, yyval.l);
List_Delete(yyvsp[-1].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(TRANSLATE, yyvsp[-3].l,
yyvsp[-5].v[0], yyvsp[-5].v[1], yyvsp[-5].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(ROTATE, yyvsp[-3].l,
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,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l,
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,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShapes(BOUNDARY_LAYER, yyvsp[-3].l, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
List_Delete(yyvsp[-3].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
extr.mesh.ViewIndex = (int)yyvsp[-6].d;
ExtrudeShapes(BOUNDARY_LAYER, yyvsp[-3].l, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
Free(yyvsp[-8].c);
List_Delete(yyvsp[-3].l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d,
yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_POINT, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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,
NULL, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d,
yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_POINT, (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,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
&extr, yyval.l);
;
break;}
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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,
&extr, yyval.l);
;
break;}
extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
{
yyval.l = List_Create(2, 1, sizeof(Shape));
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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,
&extr, yyval.l);
;
break;}
extr.mesh.ExtrudeMesh = true;
extr.mesh.NbLayer = 1;
extr.mesh.NbElmLayer.clear();
extr.mesh.hLayer.clear();
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)){
for(int i = 0; i < List_Nbr(yyvsp[-4].l); i++){
List_Read(yyvsp[-4].l, i, &d);
else
yymsg(GERROR, "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);
;
break;}
yymsg(GERROR, "Explicit region numbers in layers are deprecated");
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)){
for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
List_Read(yyvsp[-6].l, i, &d);
else
yymsg(GERROR, "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);
;
break;}
if(FindSurface(num)){
yymsg(GERROR, "Surface %d already exists", num);
}
else{
Surface *s = Create_Surface(num, MSH_SURF_DISCRETE);
c->Method = TRANSFINI;
c->ipar[1] = sign(d);
c->dpar[0] = 1.0;
c->Method = TRANSFINI;
c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
c->Method = TRANSFINI;
c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
s->Method = TRANSFINI;

Christophe Geuzaine
committed
yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
if(k != 3 && k != 4){
yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
}
else{
List_Reset(s->TrsfPoints);
s->Recombine_Dir = -1;
else
s->Recombine_Dir = 0;
for(int i = 0; i < k; i++){
double d;
if(!v)
yymsg(WARNING, "Unknown point %d", j);
else
List_Add(s->TrsfPoints, &v);
}
}
}
List_Delete(yyvsp[-2].l);
Free(yyvsp[-1].c);
;
break;}
yymsg(WARNING, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
v->Method = TRANSFINI;

Christophe Geuzaine
committed
yymsg(GERROR, "Wrong definition of Transfinite Volume %d: "
s->Recombine = 1;
s->RecombineAngle = (yyvsp[-1].d > 0 && yyvsp[-1].d < 90) ? yyvsp[-1].d : 90;
s->Recombine = 1;
}
if(s)
if(s)
ReplaceAllDuplicates();
{
if(!yyvsp[0].d)
yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;