Newer
Older

Christophe Geuzaine
committed
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
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
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));
extr.mesh.ExtrudeMesh = true;
extr.mesh.NbLayer = 1;
extr.mesh.NbElmLayer.clear();
extr.mesh.hLayer.clear();
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));
;}
break;
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));
;}
break;
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);
}
case 228:
#line 2881 "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));
;}
break;
case 229:
#line 2893 "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));
{
if(!strcmp((yyvsp[(1) - (1)].c), "Right"))
(yyval.i) = 1;
else if(!strcmp((yyvsp[(1) - (1)].c), "Left"))
(yyval.i) = -1;
else // alternated
(yyval.i) = 0;
Free((yyvsp[(1) - (1)].c));
;}
break;
{
(yyval.l) = List_Create(1, 1, sizeof(double));
;}
break;
{
(yyval.l) = (yyvsp[(2) - (2)].l);
;}
break;
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;
}
}
for(GModel::eiter it = GModel::current()->firstEdge();
it != GModel::current()->lastEdge(); it++){
(*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){
ge->meshAttributes.Method = MESH_TRANSFINITE;
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));
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);
for(GModel::fiter it = GModel::current()->firstFace();
it != GModel::current()->lastFace(); it++){
(*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){
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));
yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
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{
for(GModel::riter it = GModel::current()->firstRegion();
it != GModel::current()->lastRegion(); it++){
(*it)->meshAttributes.Method = MESH_TRANSFINITE;
}
}
List_Delete(tmp);
}
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
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){
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));
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);
}
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
for(GModel::fiter it = GModel::current()->firstFace();
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));
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));
}
List_Delete((yyvsp[(3) - (6)].l));
;}
break;
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){
c_slave->meshMaster = 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));
;}
break;
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)));
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
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){
s_slave->meshMaster = 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);
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;
}
}
else yymsg(0, "Unknown surface %d", j_slave);
}
List_Delete((yyvsp[(5) - (12)].l));
List_Delete((yyvsp[(10) - (12)].l));
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));
}
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));
}
ReplaceAllDuplicates();
{
if(!strcmp((yyvsp[(2) - (3)].c), "Geometry"))
ReplaceAllDuplicates();
else if(!strcmp((yyvsp[(2) - (3)].c), "Mesh"))
GModel::current()->removeDuplicateMeshVertices(CTX::instance()->geom.tolerance);
else
yymsg(0, "Unknown coherence command");
Free((yyvsp[(2) - (3)].c));
;}
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
case 251:
#line 3357 "Gmsh.y"
{
if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){
double d;
List_Read((yyvsp[(4) - (6)].l), 0, &d);
Vertex *target = FindPoint((int)d);
if(!target) yymsg(0, "Could not find Point %d", (int)d);
double x = target->Pos.X, y = target->Pos.Y, z = target->Pos.Z;
for(int i = 1; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
List_Read((yyvsp[(4) - (6)].l), i, &d);
Vertex *source = FindPoint((int)d);
if(!source) yymsg(0, "Could not find Point %d", (int)d);
if(target && source){
source->Typ = target->Typ;
source->Pos.X = x;
source->Pos.Y = y;
source->Pos.Z = z;
source->boundaryLayerIndex = target->boundaryLayerIndex;
}
}
ExtrudeParams::normalsCoherence.push_back(SPoint3(x, y, z));
}
else
yymsg(0, "Need at least two points to merge");
ReplaceAllDuplicates();
List_Delete((yyvsp[(4) - (6)].l));
;}
break;

Christophe Geuzaine
committed
case 252:
List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l));
int item = 0;
List_Read(temp, i, &item);
domain.push_back(item);
}
List_Delete((yyvsp[(7) - (11)].l));
List_T *temp2 = ListOfDouble2ListOfInt((yyvsp[(9) - (11)].l));
int item = 0;
List_Read(temp2, i, &item);
subdomain.push_back(item);
}
List_Delete((yyvsp[(9) - (11)].l));
std::string fileName = "";
fileName = (yyvsp[(3) - (11)].c);
Homology* homology = new Homology(GModel::current(), domain, subdomain);
yymsg(0, "Gmsh needs to be configured with option Kbipack to use homology computation");

Christophe Geuzaine
committed
case 253:
int item = 0;
List_Read(temp, i, &item);
domain.push_back(item);
}
int item = 0;
List_Read(temp2, i, &item);
subdomain.push_back(item);
}
std::string fileName = "";
fileName = (yyvsp[(3) - (11)].c);
Homology* homology = new Homology(GModel::current(), domain, subdomain);
homology->setFileName(fileName);
homology->findGenerators();
yymsg(0, "Gmsh needs to be configured with option Kbipack to use homology computation");

Christophe Geuzaine
committed
case 254:
int item = 0;
List_Read(temp, i, &item);
domain.push_back(item);
}
int item = 0;
List_Read(temp2, i, &item);
subdomain.push_back(item);
}
std::string fileName = "";
fileName = (yyvsp[(3) - (11)].c);
Homology* homology = new Homology(GModel::current(), domain, subdomain);
homology->setFileName(fileName);
homology->findDualGenerators();
yymsg(0, "Gmsh needs to be configured with option Kbipack to use homology computation");

Christophe Geuzaine
committed
case 255:
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
{
List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l));
std::vector<int> domain;
for (int i = 0; i < List_Nbr(temp); i++){
int item = 0;
List_Read(temp, i, &item);
domain.push_back(item);
}
List_Delete((yyvsp[(7) - (11)].l));
List_Delete(temp);
List_T *temp2 = ListOfDouble2ListOfInt((yyvsp[(9) - (11)].l));
std::vector<int> subdomain;
for (int i = 0; i < List_Nbr(temp2); i++){
int item = 0;
List_Read(temp2, i, &item);
subdomain.push_back(item);
}
List_Delete((yyvsp[(9) - (11)].l));
List_Delete(temp2);
std::string fileName = "";
fileName = (yyvsp[(3) - (11)].c);
#if defined(HAVE_KBIPACK)
Homology* homology = new Homology(GModel::current(), domain, subdomain);
homology->setFileName(fileName);
homology->findHomSequence();
delete homology;
#else
yymsg(0, "Gmsh needs to be configured with option Kbipack to use homology computation");
#endif
;}

Christophe Geuzaine
committed
case 256:
{ (yyval.d) = (yyvsp[(1) - (1)].d); ;}

Christophe Geuzaine
committed
case 257:
{ (yyval.d) = (yyvsp[(2) - (3)].d); ;}

Christophe Geuzaine
committed
case 258:
{ (yyval.d) = -(yyvsp[(2) - (2)].d); ;}

Christophe Geuzaine
committed
case 259:
{ (yyval.d) = (yyvsp[(2) - (2)].d); ;}

Christophe Geuzaine
committed
case 260:
{ (yyval.d) = !(yyvsp[(2) - (2)].d); ;}

Christophe Geuzaine
committed
case 261:
{ (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 262:
{ (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 263:
{ (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;}
break;

Christophe Geuzaine
committed
case 264:
yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
(yyval.d) = (yyvsp[(1) - (3)].d) / (yyvsp[(3) - (3)].d);

Christophe Geuzaine
committed
case 265:
{ (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 266:
{ (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;}

Christophe Geuzaine
committed
case 267:
{ (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 268:
{ (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 269:
{ (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 270:
{ (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 271:
{ (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 272:
{ (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 273:
{ (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 274:
{ (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;}

Christophe Geuzaine
committed
case 275:
{ (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;}

Christophe Geuzaine
committed
case 276:
{ (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 277:
{ (yyval.d) = log((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 278:
{ (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 279:
{ (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 280:
{ (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 281:
{ (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 282:
{ (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 283:
{ (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed

Christophe Geuzaine
committed
case 284:
{ (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 285:
{ (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;}

Christophe Geuzaine
committed
case 286:
{ (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}