Newer
Older

Christophe Geuzaine
committed
case 240:
#line 3236 "Gmsh.y"
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d),
(yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
NULL, (yyval.l));

Christophe Geuzaine
committed
case 241:
#line 3243 "Gmsh.y"
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d),
(yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
NULL, (yyval.l));

Christophe Geuzaine
committed
case 242:
#line 3250 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 243:
#line 3256 "Gmsh.y"
(yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, (yyval.l));

Christophe Geuzaine
committed
case 244:
#line 3263 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 245:
#line 3269 "Gmsh.y"
ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d),
(yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, (yyval.l));

Christophe Geuzaine
committed
case 246:
#line 3276 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 247:
#line 3282 "Gmsh.y"
ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d),
(yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
&extr, (yyval.l));

Christophe Geuzaine
committed
case 248:
#line 3289 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 249:
#line 3295 "Gmsh.y"
0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 250:
#line 3302 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 251:
#line 3308 "Gmsh.y"
0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 252:
#line 3315 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 253:
#line 3321 "Gmsh.y"
0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 254:
#line 3328 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 255:
#line 3334 "Gmsh.y"
ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d),
(yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 256:
#line 3341 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 257:
#line 3347 "Gmsh.y"
ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d),
(yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 258:
#line 3354 "Gmsh.y"

Christophe Geuzaine
committed
extr.mesh.QuadToTri = NO_QUADTRI;

Christophe Geuzaine
committed
case 259:
#line 3360 "Gmsh.y"
ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d),
(yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
&extr, (yyval.l));

Christophe Geuzaine
committed
case 260:
#line 3371 "Gmsh.y"

Christophe Geuzaine
committed
case 261:
#line 3374 "Gmsh.y"

Christophe Geuzaine
committed
case 262:
#line 3380 "Gmsh.y"
int n = (int)fabs((yyvsp[(3) - (5)].d));
if(n){ // we accept n==0 to easily disable layers
extr.mesh.ExtrudeMesh = true;
extr.mesh.NbLayer = 1;
extr.mesh.NbElmLayer.clear();
extr.mesh.hLayer.clear();
extr.mesh.NbElmLayer.push_back((int)fabs((yyvsp[(3) - (5)].d)));
extr.mesh.hLayer.push_back(1.);
}

Christophe Geuzaine
committed
case 263:
#line 3392 "Gmsh.y"
extr.mesh.ExtrudeMesh = true;
extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l));
if(List_Nbr((yyvsp[(3) - (7)].l)) == List_Nbr((yyvsp[(5) - (7)].l))){
extr.mesh.NbElmLayer.clear();
extr.mesh.hLayer.clear();
for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){
double d;
List_Read((yyvsp[(3) - (7)].l), i, &d);
extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
List_Read((yyvsp[(5) - (7)].l), i, &d);
extr.mesh.hLayer.push_back(d);
}
yymsg(0, "Wrong layer definition {%d, %d}", List_Nbr((yyvsp[(3) - (7)].l)), List_Nbr((yyvsp[(5) - (7)].l)));
List_Delete((yyvsp[(3) - (7)].l));
List_Delete((yyvsp[(5) - (7)].l));

Christophe Geuzaine
committed
case 264:
#line 3412 "Gmsh.y"
yymsg(0, "Explicit region numbers in layers are deprecated");
extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (9)].l));
if(List_Nbr((yyvsp[(3) - (9)].l)) == List_Nbr((yyvsp[(5) - (9)].l)) && List_Nbr((yyvsp[(3) - (9)].l)) == List_Nbr((yyvsp[(7) - (9)].l))){
extr.mesh.NbElmLayer.clear();
extr.mesh.hLayer.clear();
for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
double d;
List_Read((yyvsp[(3) - (9)].l), i, &d);
extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
List_Read((yyvsp[(7) - (9)].l), i, &d);
extr.mesh.hLayer.push_back(d);
}
yymsg(0, "Wrong layer definition {%d, %d, %d}", List_Nbr((yyvsp[(3) - (9)].l)),
List_Nbr((yyvsp[(5) - (9)].l)), List_Nbr((yyvsp[(7) - (9)].l)));
List_Delete((yyvsp[(3) - (9)].l));
List_Delete((yyvsp[(5) - (9)].l));
List_Delete((yyvsp[(7) - (9)].l));

Christophe Geuzaine
committed
case 265:
#line 3436 "Gmsh.y"

Christophe Geuzaine
committed
{

Christophe Geuzaine
committed
break;

Christophe Geuzaine
committed
case 266:
#line 3441 "Gmsh.y"

Christophe Geuzaine
committed
{

Christophe Geuzaine
committed
break;

Christophe Geuzaine
committed
case 267:
#line 3445 "Gmsh.y"

Christophe Geuzaine
committed
{
yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead.");

Christophe Geuzaine
committed
break;

Christophe Geuzaine
committed
case 268:
#line 3449 "Gmsh.y"

Christophe Geuzaine
committed
{
yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead.");

Christophe Geuzaine
committed
break;

Christophe Geuzaine
committed
case 269:
#line 3453 "Gmsh.y"
yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, which has no requirement for the number of extrusion layers and meshes with body-centered vertices.");

Christophe Geuzaine
committed
case 270:
#line 3457 "Gmsh.y"
{
yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, which has no requirement for the number of extrusion layers and meshes with body-centered vertices.");
;}
break;

Christophe Geuzaine
committed
case 271:
#line 3461 "Gmsh.y"
{
extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1;
;}
break;

Christophe Geuzaine
committed
case 272:
#line 3465 "Gmsh.y"
{
extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB;
;}
break;

Christophe Geuzaine
committed
case 273:
#line 3469 "Gmsh.y"
{
extr.mesh.QuadToTri = QUADTRI_NOVERTS_1;
;}
break;

Christophe Geuzaine
committed
case 274:
#line 3473 "Gmsh.y"
{
extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB;
;}
break;

Christophe Geuzaine
committed
case 275:
#line 3477 "Gmsh.y"
yymsg(0, "Surface %d already exists", num);
Surface *s = Create_Surface(num, MSH_SURF_DISCRETE);
Tree_Add(GModel::current()->getGEOInternals()->Surfaces, &s);
extr.mesh.Holes[num].first = (yyvsp[(8) - (9)].d);
extr.mesh.Holes[num].second.clear();
for(int i = 0; i < List_Nbr((yyvsp[(6) - (9)].l)); i++){
double d;
List_Read((yyvsp[(6) - (9)].l), i, &d);
extr.mesh.Holes[num].second.push_back((int)d);
}

Christophe Geuzaine
committed
case 276:
#line 3496 "Gmsh.y"
{
if(!strcmp((yyvsp[(2) - (6)].c), "Index"))
extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d);
else if(!strcmp((yyvsp[(2) - (6)].c), "View"))
extr.mesh.ViewIndex = (yyvsp[(4) - (6)].d);
Free((yyvsp[(2) - (6)].c));

Christophe Geuzaine
committed
case 277:
#line 3508 "Gmsh.y"

Christophe Geuzaine
committed
case 278:
#line 3512 "Gmsh.y"
if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power"))
(yyval.v)[0] = 1.;
else if(!strcmp((yyvsp[(2) - (3)].c), "Bump"))
(yyval.v)[0] = 2.;
else{
yymsg(0, "Unknown transfinite mesh type");
(yyval.v)[0] = 1.;
(yyval.v)[1] = (yyvsp[(3) - (3)].d);
Free((yyvsp[(2) - (3)].c));

Christophe Geuzaine
committed
case 279:
#line 3527 "Gmsh.y"

Christophe Geuzaine
committed
case 280:
#line 3531 "Gmsh.y"
{
if(!strcmp((yyvsp[(1) - (1)].c), "Right"))
(yyval.i) = 1;
else if(!strcmp((yyvsp[(1) - (1)].c), "Left"))
(yyval.i) = -1;
else if(!strcmp((yyvsp[(1) - (1)].c), "AlternateRight"))
(yyval.i) = 2;
else if(!strcmp((yyvsp[(1) - (1)].c), "AlternateLeft"))
(yyval.i) = -2;
else // "Alternate" -> "Alternate Right"
(yyval.i) = 2;

Christophe Geuzaine
committed
case 281:
#line 3547 "Gmsh.y"
{
(yyval.l) = List_Create(1, 1, sizeof(double));

Christophe Geuzaine
committed
case 282:
#line 3551 "Gmsh.y"
{
(yyval.l) = (yyvsp[(2) - (2)].l);

Christophe Geuzaine
committed
case 283:
#line 3556 "Gmsh.y"

Christophe Geuzaine
committed
case 284:
#line 3560 "Gmsh.y"

Christophe Geuzaine
committed
case 285:
#line 3567 "Gmsh.y"
int type = (int)(yyvsp[(6) - (7)].v)[0];
double coef = fabs((yyvsp[(6) - (7)].v)[1]);
if(!(yyvsp[(3) - (7)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Curve *c;
List_Read(tmp, i, &c);
c->Method = MESH_TRANSFINITE;
c->nbPointsTransfinite = ((yyvsp[(5) - (7)].d) > 2) ? (int)(yyvsp[(5) - (7)].d) : 2;
c->typeTransfinite = type;
c->coeffTransfinite = coef;
}
}

Christophe Geuzaine
committed
(*it)->meshAttributes.method = MESH_TRANSFINITE;
(*it)->meshAttributes.nbPointsTransfinite = ((yyvsp[(5) - (7)].d) > 2) ? (int)(yyvsp[(5) - (7)].d) : 2;
(*it)->meshAttributes.typeTransfinite = type;
(*it)->meshAttributes.coeffTransfinite = coef;
List_Delete(tmp);
}
else{
for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){
double d;
List_Read((yyvsp[(3) - (7)].l), i, &d);
int j = (int)fabs(d);

Christophe Geuzaine
committed
for(int sign = -1; sign <= 1; sign += 2){
Curve *c = FindCurve(sign * j);
if(c){
c->Method = MESH_TRANSFINITE;
c->nbPointsTransfinite = ((yyvsp[(5) - (7)].d) > 2) ? (int)(yyvsp[(5) - (7)].d) : 2;
c->typeTransfinite = type * sign(d);
c->coeffTransfinite = coef;
}
else{
GEdge *ge = GModel::current()->getEdgeByTag(sign * j);
if(ge){

Christophe Geuzaine
committed
ge->meshAttributes.method = MESH_TRANSFINITE;

Christophe Geuzaine
committed
ge->meshAttributes.nbPointsTransfinite = ((yyvsp[(5) - (7)].d) > 2) ? (int)(yyvsp[(5) - (7)].d) : 2;
ge->meshAttributes.typeTransfinite = type * sign(d);
ge->meshAttributes.coeffTransfinite = coef;
}
else if(sign > 0)

Christophe Geuzaine
committed
yymsg(0, "Unknown line %d", j);
}
}
}
List_Delete((yyvsp[(3) - (7)].l));

Christophe Geuzaine
committed
case 286:
#line 3623 "Gmsh.y"
int k = List_Nbr((yyvsp[(4) - (6)].l));
if(k != 0 && k != 3 && k != 4){
yymsg(0, "Wrong definition of Transfinite Surface: 0, 3 or 4 points needed");
if(!(yyvsp[(3) - (6)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Surface *s;
List_Read(tmp, i, &s);
s->Method = MESH_TRANSFINITE;
s->Recombine_Dir = (yyvsp[(5) - (6)].i);
List_Reset(s->TrsfPoints);
it != GModel::current()->lastFace(); it++){

Christophe Geuzaine
committed
(*it)->meshAttributes.method = MESH_TRANSFINITE;
(*it)->meshAttributes.transfiniteArrangement = (yyvsp[(5) - (6)].i);
}
}
List_Delete(tmp);
}
else{
for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
double d;
List_Read((yyvsp[(3) - (6)].l), i, &d);
Surface *s = FindSurface((int)d);
if(s){
s->Method = MESH_TRANSFINITE;
s->Recombine_Dir = (yyvsp[(5) - (6)].i);
List_Reset(s->TrsfPoints);
for(int j = 0; j < k; j++){
double p;
List_Read((yyvsp[(4) - (6)].l), j, &p);
Vertex *v = FindPoint((int)fabs(p));
if(v)
List_Add(s->TrsfPoints, &v);
else
yymsg(0, "Unknown point %d", (int)fabs(p));
}
}
else{
GFace *gf = GModel::current()->getFaceByTag((int)d);
if(gf){

Christophe Geuzaine
committed
gf->meshAttributes.method = MESH_TRANSFINITE;
gf->meshAttributes.transfiniteArrangement = (yyvsp[(5) - (6)].i);
for(int j = 0; j < k; j++){
double p;
List_Read((yyvsp[(4) - (6)].l), j, &p);
GVertex *gv = GModel::current()->getVertexByTag((int)fabs(p));
if(gv)
gf->meshAttributes.corners.push_back(gv);
else
yymsg(0, "Unknown point %d", (int)fabs(p));
}
}
else
yymsg(0, "Unknown surface %d", (int)d);
}
List_Delete((yyvsp[(3) - (6)].l));
List_Delete((yyvsp[(4) - (6)].l));

Christophe Geuzaine
committed
case 287:
#line 3693 "Gmsh.y"
yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");

Christophe Geuzaine
committed
case 288:
#line 3698 "Gmsh.y"
int k = List_Nbr((yyvsp[(4) - (5)].l));
if(k != 0 && k != 6 && k != 8){
yymsg(0, "Wrong definition of Transfinite Volume: "
"%d points instead of 6 or 8", k);
if(!(yyvsp[(3) - (5)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Volume *v;
List_Read(tmp, i, &v);
v->Method = MESH_TRANSFINITE;
List_Reset(v->TrsfPoints);
}
}
else{
it != GModel::current()->lastRegion(); it++){

Christophe Geuzaine
committed
(*it)->meshAttributes.method = MESH_TRANSFINITE;
}
}
List_Delete(tmp);
}
for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){
double d;
List_Read((yyvsp[(3) - (5)].l), i, &d);
Volume *v = FindVolume((int)d);
if(v){
v->Method = MESH_TRANSFINITE;
List_Reset(v->TrsfPoints);
for(int i = 0; i < k; i++){
double p;
List_Read((yyvsp[(4) - (5)].l), i, &p);
Vertex *vert = FindPoint((int)fabs(p));
if(vert)
List_Add(v->TrsfPoints, &vert);
else
yymsg(0, "Unknown point %d", (int)fabs(p));
}
}
else{
GRegion *gr = GModel::current()->getRegionByTag((int)d);
if(gr){

Christophe Geuzaine
committed
gr->meshAttributes.method = MESH_TRANSFINITE;
for(int i = 0; i < k; i++){
double p;
List_Read((yyvsp[(4) - (5)].l), i, &p);
GVertex *gv = GModel::current()->getVertexByTag((int)fabs(p));
if(gv)
gr->meshAttributes.corners.push_back(gv);
else
yymsg(0, "Unknown point %d", (int)fabs(p));
}
}
yymsg(0, "Unknown volume %d", (int)d);
List_Delete((yyvsp[(3) - (5)].l));
List_Delete((yyvsp[(4) - (5)].l));

Christophe Geuzaine
committed
case 289:
#line 3765 "Gmsh.y"

Christophe Geuzaine
committed
{
if(!(yyvsp[(2) - (3)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Volume *v;
List_Read(tmp, i, &v);
v->QuadTri = TRANSFINITE_QUADTRI_1;
}
}
else{

Christophe Geuzaine
committed
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
it != GModel::current()->lastRegion(); it++)
(*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1;
}
List_Delete(tmp);
}
else{
for(int i = 0; i < List_Nbr((yyvsp[(2) - (3)].l)); i++){
double d;
List_Read((yyvsp[(2) - (3)].l), i, &d);
Volume *v = FindVolume((int)d);
if(v)
v->QuadTri = TRANSFINITE_QUADTRI_1;
else{
GRegion *gr = GModel::current()->getRegionByTag((int)d);
if(gr)
gr->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1;
else
yymsg(1, "Unknown region %d", (int)d);
}
}
List_Delete((yyvsp[(2) - (3)].l));
}

Christophe Geuzaine
committed
break;

Christophe Geuzaine
committed
case 290:
#line 3801 "Gmsh.y"
{
for(int i = 0; i < List_Nbr((yyvsp[(4) - (7)].l)); i++){
double d;
List_Read((yyvsp[(4) - (7)].l), i, &d);
CTX::instance()->mesh.algo2d_per_face[(int)d] = (int)(yyvsp[(6) - (7)].d);
}
break;

Christophe Geuzaine
committed
case 291:
#line 3809 "Gmsh.y"
if(!(yyvsp[(3) - (5)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Surface *s;
List_Read(tmp, i, &s);
s->Recombine = 1;
s->RecombineAngle = (yyvsp[(4) - (5)].i);
}
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
it != GModel::current()->lastFace(); it++){
(*it)->meshAttributes.recombine = 1;
(*it)->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i);
}
}
List_Delete(tmp);
}
else{
for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){
double d;
List_Read((yyvsp[(3) - (5)].l), i, &d);
Surface *s = FindSurface((int)d);
if(s){
s->Recombine = 1;
s->RecombineAngle = (yyvsp[(4) - (5)].i);
}
else{
GFace *gf = GModel::current()->getFaceByTag((int)d);
if(gf){
gf->meshAttributes.recombine = 1;
gf->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i);
}
else
yymsg(1, "Unknown surface %d", (int)d);
List_Delete((yyvsp[(3) - (5)].l));

Christophe Geuzaine
committed
case 292:
#line 3852 "Gmsh.y"
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
{
if(!(yyvsp[(3) - (4)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Volume *v;
List_Read(tmp, i, &v);
v->Recombine3D = 1;
}
}
else{
for(GModel::riter it = GModel::current()->firstRegion();
it != GModel::current()->lastRegion(); it++){
(*it)->meshAttributes.recombine3D = 1;
}
}
List_Delete(tmp);
}
else{
for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
double d;
List_Read((yyvsp[(3) - (4)].l), i, &d);
Volume *v = FindVolume((int)d);
if(v){
v->Recombine3D = 1;
}
else{
GRegion *gr = GModel::current()->getRegionByTag((int)d);
if(gr){
gr->meshAttributes.recombine3D = 1;
}
else
yymsg(1, "Unknown volume %d", (int)d);
}
}
List_Delete((yyvsp[(3) - (4)].l));
}
break;

Christophe Geuzaine
committed
case 293:
#line 3891 "Gmsh.y"
double d;
List_Read((yyvsp[(3) - (6)].l), i, &d);
int j = (int)d;
Surface *s = FindSurface(j);
if(s){
s->TransfiniteSmoothing = (int)(yyvsp[(5) - (6)].d);
}
else{
GFace *gf = GModel::current()->getFaceByTag(j);
if(gf)
gf->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d);
else
yymsg(1, "Unknown surface %d", (int)(yyvsp[(5) - (6)].d));

Christophe Geuzaine
committed
case 294:
#line 3911 "Gmsh.y"
if(List_Nbr((yyvsp[(5) - (6)].l)) != List_Nbr((yyvsp[(3) - (6)].l))){
yymsg(0, "Number of master (%d) different from number of slave (%d) lines",
List_Nbr((yyvsp[(5) - (6)].l)), List_Nbr((yyvsp[(3) - (6)].l)));
else{
for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
double d_master, d_slave;
List_Read((yyvsp[(5) - (6)].l), i, &d_master);
List_Read((yyvsp[(3) - (6)].l), i, &d_slave);
int j_master = (int)d_master;
int j_slave = (int)d_slave;
Curve *c_slave = FindCurve(abs(j_slave));
if(c_slave){
GModel::current()->getGEOInternals()->periodicEdges[j_slave] = j_master;
}
else{
GEdge *ge = GModel::current()->getEdgeByTag(abs(j_slave));
if(ge) ge->setMeshMaster(j_master);
else yymsg(0, "Unknown line %d", j_slave);
}
}
}
List_Delete((yyvsp[(3) - (6)].l));
List_Delete((yyvsp[(5) - (6)].l));

Christophe Geuzaine
committed
case 295:
#line 3939 "Gmsh.y"
if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){
yymsg(0, "Number of master surface edges (%d) different from number of "
"slave (%d) edges", List_Nbr((yyvsp[(10) - (12)].l)), List_Nbr((yyvsp[(5) - (12)].l)));
int j_master = (int)(yyvsp[(8) - (12)].d);
int j_slave = (int)(yyvsp[(3) - (12)].d);
Surface *s_slave = FindSurface(abs(j_slave));
if(s_slave){
GModel::current()->getGEOInternals()->periodicFaces[j_slave] = j_master;
for (int i = 0; i < List_Nbr((yyvsp[(5) - (12)].l)); i++){
double dm, ds;
List_Read((yyvsp[(5) - (12)].l), i, &ds);
GModel::current()->getGEOInternals()->periodicEdges[(int)ds] = (int)dm;
s_slave->edgeCounterparts[(int)ds] = (int)dm;
}
}
else{
GFace *gf = GModel::current()->getFaceByTag(abs(j_slave));
if(gf){
gf->setMeshMaster(j_master);
for (int i = 0; i < List_Nbr((yyvsp[(5) - (12)].l)); i++){
double dm, ds;
List_Read((yyvsp[(5) - (12)].l), i, &ds);
List_Read((yyvsp[(10) - (12)].l), i, &dm);
gf->edgeCounterparts[(int)ds] = (int)dm;
GEdge *ges = GModel::current()->getEdgeByTag(abs((int)ds));
ges->setMeshMaster((int)dm);
}
}
else yymsg(0, "Unknown surface %d", j_slave);
}
List_Delete((yyvsp[(5) - (12)].l));
List_Delete((yyvsp[(10) - (12)].l));

Christophe Geuzaine
committed
case 296:
#line 3978 "Gmsh.y"
setSurfaceEmbeddedPoints(s, (yyvsp[(3) - (10)].l));
}
else{
GFace *gf = GModel::current()->getFaceByTag((int)(yyvsp[(8) - (10)].d));
if(gf){
for(int i = 0; i < List_Nbr((yyvsp[(3) - (10)].l)); i++){
int iPoint;
List_Read((yyvsp[(3) - (10)].l), i, &iPoint);
GVertex *gv = GModel::current()->getVertexByTag(iPoint);
if(gv)
gf->addEmbeddedVertex(gv);
else
yymsg(0, "Unknown point %d", iPoint);
}
}
else
yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d));
}

Christophe Geuzaine
committed
case 297:
#line 4001 "Gmsh.y"
setSurfaceEmbeddedCurves(s, (yyvsp[(3) - (10)].l));
}
else{
GFace *gf = GModel::current()->getFaceByTag((int)(yyvsp[(8) - (10)].d));
if(gf){
for(int i = 0; i < List_Nbr((yyvsp[(3) - (10)].l)); i++){
int iCurve;
List_Read((yyvsp[(3) - (10)].l), i, &iCurve);
GEdge *ge = GModel::current()->getEdgeByTag(iCurve);
if(ge)
gf->addEmbeddedEdge(ge);
else
yymsg(0, "Unknown line %d", iCurve);
}
}
else
yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d));
}

Christophe Geuzaine
committed
case 298:
#line 4024 "Gmsh.y"

Christophe Geuzaine
committed
{
Msg::Error("Point in Volume not implemented yet");

Christophe Geuzaine
committed
;}
break;

Christophe Geuzaine
committed
case 299:
#line 4028 "Gmsh.y"
{
Msg::Error("Line in Volume not implemented yet");
;}
break;

Christophe Geuzaine
committed
case 300:
#line 4032 "Gmsh.y"

Christophe Geuzaine
committed
{
Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d));
if(v){
setVolumeEmbeddedSurfaces(v, (yyvsp[(3) - (10)].l));
}
else{
GRegion *gr = GModel::current()->getRegionByTag((int)(yyvsp[(8) - (10)].d));
if(gr){
for(int i = 0; i < List_Nbr((yyvsp[(3) - (10)].l)); i++){
int iSurface;
List_Read((yyvsp[(3) - (10)].l), i, &iSurface);
GFace *gf = GModel::current()->getFaceByTag(iSurface);
if(gf)
gr->addEmbeddedFace(gf);
else
yymsg(0, "Unknown surface %d", iSurface);
}
}
else
yymsg(0, "Unknown region %d", (int)(yyvsp[(8) - (10)].d));
}

Christophe Geuzaine
committed
;}
break;

Christophe Geuzaine
committed
case 301:
#line 4055 "Gmsh.y"

Christophe Geuzaine
committed
if(!(yyvsp[(3) - (4)].l)){
List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces);
if(List_Nbr(tmp)){
for(int i = 0; i < List_Nbr(tmp); i++){
Surface *s;
List_Read(tmp, i, &s);
s->ReverseMesh = 1;
}
}
else{
for(GModel::fiter it = GModel::current()->firstFace();
it != GModel::current()->lastFace(); it++){
(*it)->meshAttributes.reverseMesh = 1;
}
}
List_Delete(tmp);
}