Newer
Older
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;
#line 2800 "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));
;}
break;
#line 2823 "Gmsh.y"
#line 2827 "Gmsh.y"
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);
}
#line 2850 "Gmsh.y"
#line 2854 "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));
#line 2869 "Gmsh.y"
#line 2873 "Gmsh.y"
{
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;
#line 2885 "Gmsh.y"
{
(yyval.l) = List_Create(1, 1, sizeof(double));
;}
break;
#line 2889 "Gmsh.y"
{
(yyval.l) = (yyvsp[(2) - (2)].l);
;}
break;
#line 2894 "Gmsh.y"
#line 2898 "Gmsh.y"
#line 2905 "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;
}
}
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));
#line 2961 "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);
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));
#line 3031 "Gmsh.y"
yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
#line 3036 "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{
for(GModel::riter it = GModel::current()->firstRegion();
it != GModel::current()->lastRegion(); it++){
(*it)->meshAttributes.Method = MESH_TRANSFINITE;
}
}
List_Delete(tmp);
}
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
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));
#line 3103 "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);
}
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
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));
#line 3146 "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{
gf->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d);
else
}
List_Delete((yyvsp[(3) - (6)].l));
;}
break;
#line 3172 "Gmsh.y"
}
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));
}
#line 3195 "Gmsh.y"
}
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));
}
#line 3218 "Gmsh.y"
#line 3221 "Gmsh.y"
#line 3230 "Gmsh.y"
ReplaceAllDuplicates();
#line 3234 "Gmsh.y"
{
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));
;}
#line 3249 "Gmsh.y"
#line 3250 "Gmsh.y"
#line 3251 "Gmsh.y"
#line 3252 "Gmsh.y"
#line 3253 "Gmsh.y"
#line 3254 "Gmsh.y"
#line 3255 "Gmsh.y"
#line 3256 "Gmsh.y"
{ (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;}
break;
#line 3258 "Gmsh.y"
yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
#line 3264 "Gmsh.y"
{ (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;}
#line 3265 "Gmsh.y"
{ (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;}
#line 3266 "Gmsh.y"
#line 3267 "Gmsh.y"
#line 3268 "Gmsh.y"
#line 3269 "Gmsh.y"
#line 3270 "Gmsh.y"
#line 3271 "Gmsh.y"
#line 3272 "Gmsh.y"
#line 3273 "Gmsh.y"
#line 3274 "Gmsh.y"
{ (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;}
#line 3275 "Gmsh.y"
#line 3276 "Gmsh.y"
#line 3277 "Gmsh.y"
#line 3278 "Gmsh.y"
#line 3279 "Gmsh.y"
#line 3280 "Gmsh.y"
#line 3281 "Gmsh.y"
#line 3282 "Gmsh.y"
#line 3283 "Gmsh.y"

Christophe Geuzaine
committed
#line 3284 "Gmsh.y"
#line 3285 "Gmsh.y"
{ (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
#line 3286 "Gmsh.y"
#line 3287 "Gmsh.y"
#line 3288 "Gmsh.y"
#line 3289 "Gmsh.y"
#line 3290 "Gmsh.y"
#line 3291 "Gmsh.y"
#line 3292 "Gmsh.y"
{ (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
#line 3293 "Gmsh.y"
{ (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
#line 3294 "Gmsh.y"
{ (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;}
#line 3295 "Gmsh.y"
{ (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;}
#line 3297 "Gmsh.y"
#line 3298 "Gmsh.y"
#line 3299 "Gmsh.y"
#line 3300 "Gmsh.y"
#line 3301 "Gmsh.y"
#line 3302 "Gmsh.y"
#line 3303 "Gmsh.y"
#line 3304 "Gmsh.y"
#line 3305 "Gmsh.y"
#line 3306 "Gmsh.y"
#line 3307 "Gmsh.y"
{ (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
#line 3308 "Gmsh.y"
#line 3309 "Gmsh.y"
#line 3310 "Gmsh.y"
#line 3311 "Gmsh.y"
#line 3312 "Gmsh.y"
#line 3313 "Gmsh.y"
#line 3314 "Gmsh.y"
{ (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
#line 3315 "Gmsh.y"
{ (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
#line 3316 "Gmsh.y"
{ (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;}
#line 3317 "Gmsh.y"
{ (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;}
#line 3326 "Gmsh.y"
#line 3327 "Gmsh.y"
#line 3328 "Gmsh.y"
#line 3329 "Gmsh.y"
#line 3330 "Gmsh.y"
#line 3331 "Gmsh.y"
#line 3332 "Gmsh.y"
#line 3337 "Gmsh.y"
if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){
yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c));
(yyval.d) = 0.;

Christophe Geuzaine
committed
else
#line 3350 "Gmsh.y"
sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ;
if(!gmsh_yysymbols.count(tmpstring)){
yymsg(0, "Unknown variable '%s'", tmpstring);
(yyval.d) = 0.;
#line 3362 "Gmsh.y"
int index = (int)(yyvsp[(3) - (4)].d);
if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){
yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (4)].c));
(yyval.d) = 0.;
else if((int)gmsh_yysymbols[(yyvsp[(1) - (4)].c)].size() < index + 1){
yymsg(0, "Uninitialized variable '%s[%d]'", (yyvsp[(1) - (4)].c), index);
(yyval.d) = 0.;
#line 3377 "Gmsh.y"
if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){
yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c));
(yyval.d) = 0.;
#line 3387 "Gmsh.y"
if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){
yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c));
(yyval.d) = 0.;

Christophe Geuzaine
committed
else
(yyval.d) = (gmsh_yysymbols[(yyvsp[(1) - (2)].c)][0] += (yyvsp[(2) - (2)].i));
#line 3397 "Gmsh.y"
int index = (int)(yyvsp[(3) - (5)].d);
if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){
yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (5)].c));
(yyval.d) = 0.;
else if((int)gmsh_yysymbols[(yyvsp[(1) - (5)].c)].size() < index + 1){
yymsg(0, "Uninitialized variable '%s[%d]'", (yyvsp[(1) - (5)].c), index);
(yyval.d) = 0.;
(yyval.d) = (gmsh_yysymbols[(yyvsp[(1) - (5)].c)][index] += (yyvsp[(5) - (5)].i));
#line 3415 "Gmsh.y"
NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d));
Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c));
;}
break;
#line 3420 "Gmsh.y"
NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d));
Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c));
;}
break;
#line 3425 "Gmsh.y"
double d = 0.;
if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){
d += (yyvsp[(4) - (4)].i);
NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d);
(yyval.d) = d;
Free((yyvsp[(1) - (4)].c)); Free((yyvsp[(3) - (4)].c));
;}
break;
#line 3435 "Gmsh.y"
double d = 0.;
if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){
d += (yyvsp[(7) - (7)].i);
NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d);
(yyval.d) = d;
Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(6) - (7)].c));
;}
break;
#line 3445 "Gmsh.y"
(yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
#line 3453 "Gmsh.y"
{
memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double));
;}
break;
#line 3457 "Gmsh.y"
{
for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i];
;}
break;