diff --git a/Fltk/fieldWindow.cpp b/Fltk/fieldWindow.cpp index 0b72b7f5693fabb64f72deea37d42ff797d7b33f..362be0c9a6a552cc5295ebae80b3d76cd8a79794 100644 --- a/Fltk/fieldWindow.cpp +++ b/Fltk/fieldWindow.cpp @@ -236,6 +236,7 @@ void fieldWindow::saveFieldOptions() std::ostringstream sstream; int i; char a; + double d; sstream.precision(16); for(std::map<std::string, FieldOption*>::iterator it = f->options.begin(); it != f->options.end(); it++){ @@ -271,6 +272,22 @@ void fieldWindow::saveFieldOptions() sstream << "}"; } break; + case FIELD_OPTION_LIST_DOUBLE: + { + sstream << "{"; + std::istringstream istream(((Fl_Input*)*input)->value()); + while(istream >> d){ + sstream << d; + if(istream >> a){ + if(a != ',') + Msg::Error("Unexpected character \'%c\' while parsing option " + "'%s' of field \'%d\'", a, it->first.c_str(), f->id); + sstream << ", "; + } + } + sstream << "}"; + } + break; } if((*input)->changed()){ add_field_option @@ -300,6 +317,7 @@ void fieldWindow::loadFieldOptions() FieldOption *option = it->second; std::ostringstream vstr; std::list<int>::const_iterator list_it; + std::list<double>::const_iterator listdouble_it; switch(option->getType()){ case FIELD_OPTION_STRING: case FIELD_OPTION_PATH: @@ -322,6 +340,17 @@ void fieldWindow::loadFieldOptions() } ((Fl_Input*)(*input))->value(vstr.str().c_str()); break; + case FIELD_OPTION_LIST_DOUBLE: + vstr.str(""); + vstr.precision(16); + for(listdouble_it = option->listdouble().begin(); listdouble_it != option->listdouble().end(); + listdouble_it++){ + if(listdouble_it!=option->listdouble().begin()) + vstr << ", "; + vstr << *listdouble_it; + } + ((Fl_Input*)(*input))->value(vstr.str().c_str()); + break; } (*input)->clear_changed(); input++; @@ -389,6 +418,7 @@ void fieldWindow::editField(Field *f) input->align(FL_ALIGN_RIGHT); break; case FIELD_OPTION_LIST: + case FIELD_OPTION_LIST_DOUBLE: default: input = new Fl_Input(xx, yy, IW, BH, it->first.c_str()); input->align(FL_ALIGN_RIGHT); diff --git a/Geo/boundaryLayersData.cpp b/Geo/boundaryLayersData.cpp index 494383ed2d6dbe6a140bdbd00c9d7c02b8eab5ea..5073bb051dc054026ab781f2cdf8ca17a0298a96 100644 --- a/Geo/boundaryLayersData.cpp +++ b/Geo/boundaryLayersData.cpp @@ -384,26 +384,39 @@ static void addColumnAtTheEndOfTheBL(GEdge *ge, if (!blf->isEdgeBL(ge->tag())){ GVertex *g0 = ge->getBeginVertex(); GVertex *g1 = ge->getEndVertex(); - // printf("coucou 2 %d %d vs %d\n",g0->tag(),g1->tag(),gv->tag()); MVertex * v0 = g0->mesh_vertices[0]; MVertex * v1 = g1->mesh_vertices[0]; std::vector<MVertex*> invert; - // std::vector<SMetric3> _metrics; - for(unsigned int i = 0; i < ge->mesh_vertices.size() ; i++){ + for(unsigned int i = 0; i < ge->mesh_vertices.size() ; i++) invert.push_back(ge->mesh_vertices[ge->mesh_vertices.size() - i - 1]); - // _metrics.push_back(SMetric3(1.0)); - } SVector3 t (v1->x()-v0->x(), v1->y()-v0->y(),v1->z()-v0->z()); t.normalize(); - if (g0 == gv){ - _columns->addColumn(t, v0, ge->mesh_vertices/*,_metrics*/); - } - else if (g1 == gv){ - _columns->addColumn(t*-1.0, v1,invert/*,_metrics*/); - } + if (g0 == gv) + _columns->addColumn(t, v0, ge->mesh_vertices); + else if (g1 == gv) + _columns->addColumn(t*-1.0, v1,invert); } } +void getLocalInfoAtNode (MVertex *v, BoundaryLayerField *blf, double &hwall) { + hwall = blf->hwall_n; + if (v->onWhat()->dim() == 0){ + hwall= blf->hwall (v->onWhat()->tag()); + } + else if (v->onWhat()->dim() == 1){ + GEdge *ge = (GEdge*)v->onWhat(); + Range<double> bounds = ge->parBounds(0); + double t_begin = bounds.low(); + double t_end = bounds.high(); + double t; + v->getParameter(0,t); + double hwall_beg = blf->hwall (ge->getBeginVertex()->tag()); + double hwall_end = blf->hwall (ge->getEndVertex()->tag()); + hwall = hwall_beg + (t-t_begin)/(t_end-t_begin) * (hwall_end - hwall_beg); + } +} + + bool buildAdditionalPoints2D(GFace *gf) { @@ -548,9 +561,11 @@ bool buildAdditionalPoints2D(GFace *gf) } else { MVertex *first = *it; + double hwall; + getLocalInfoAtNode (first, blf, hwall); std::vector<MVertex*> _column; SPoint2 par = gf->parFromPoint(SPoint3(first->x(),first->y(),first->z())); - double L = blf->hwall_n ; + double L = hwall; while(1){ // printf("L = %g\n",L); if (L > blf->thickness) break; @@ -561,7 +576,7 @@ bool buildAdditionalPoints2D(GFace *gf) _current->bl_data = new MVertexBoundaryLayerData; _column.push_back(_current); int ith = _column.size() ; - L+= blf->hwall_n * pow (blf->ratio, ith); + L+= hwall * pow (blf->ratio, ith); } _columns->addColumn(n,*it, _column /*,_metrics*/); } diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp index 6a20fa24df4aa2368feec545ae504344fdcb627c..34ff4484b531147e7bcad97febea99d2e624ae36 100644 --- a/Mesh/Field.cpp +++ b/Mesh/Field.cpp @@ -2222,12 +2222,10 @@ BoundaryLayerField::BoundaryLayerField() (iIntersect, "Intersect metrics of all faces"); options["hwall_n"] = new FieldOptionDouble (hwall_n, "Mesh Size Normal to the The Wall"); - // options["fan_angle"] = new FieldOptionDouble - // (fan_angle, "Threshold angle for creating a mesh fan in the boundary layer"); + options["hwall_n_nodes"] = new FieldOptionListDouble + (hwall_n_nodes, "Mesh Size Normal to the The Wall at nodes (overwrite hwall_n when defined)"); options["AnisoMax"] = new FieldOptionDouble (tgt_aniso_ratio, "Threshold angle for creating a mesh fan in the boundary layer"); - // options["hwall_t"] = new FieldOptionDouble - // (hwall_t, "Mesh Size Tangent to the Wall"); options["ratio"] = new FieldOptionDouble (ratio, "Size Ratio Between Two Successive Layers"); options["hfar"] = new FieldOptionDouble diff --git a/Mesh/Field.h b/Mesh/Field.h index df99fad2a5124b44be33e8e5178f49ed51744901..9b46d5955b54b68656c345cdb01e68e1950e950f 100644 --- a/Mesh/Field.h +++ b/Mesh/Field.h @@ -31,7 +31,8 @@ typedef enum { FIELD_OPTION_STRING, FIELD_OPTION_PATH, FIELD_OPTION_BOOL, - FIELD_OPTION_LIST + FIELD_OPTION_LIST, + FIELD_OPTION_LIST_DOUBLE } FieldOptionType; class FieldCallback { @@ -64,13 +65,16 @@ class FieldOption { case FIELD_OPTION_PATH: return "path"; break; case FIELD_OPTION_STRING: return "string"; break; case FIELD_OPTION_LIST: return "list"; break; + case FIELD_OPTION_LIST_DOUBLE: return "list_double"; break; default: return "unknown"; } } virtual void numericalValue(double val) { throw(1); } virtual double numericalValue() const { throw(1); } - virtual const std::list<int> &list() const { throw(1); } - virtual void list(std::list<int> value) { throw(1); } + virtual const std::list<int> &list() const { printf("coucou4\n");throw(1); } + virtual const std::list<double> &listdouble() const { printf("coucou3\n");throw(1); } + virtual void list(std::list<int> value) { printf("coucou1\n");throw(1); } + virtual void listdouble(std::list<double> value) { printf("coucou2\n");throw(1); } virtual std::string string() const { throw(1); } virtual void string(const std::string value) { throw(1); } }; @@ -139,6 +143,7 @@ class AttractorField; class BoundaryLayerField : public Field { private: std::list<AttractorField *> _att_fields; + std::list<double> hwall_n_nodes; std::list<int> nodes_id, edges_id; std::list<int> edges_id_saved, nodes_id_saved, fan_nodes_id; void operator() (AttractorField *cc, double dist, double x, double y, double z, @@ -173,6 +178,15 @@ class BoundaryLayerField : public Field { { return std::find(nodes_id.begin(),nodes_id.end(),iV) != nodes_id.end(); } + double hwall (int iV){ + for (std::list<double>::iterator it = hwall_n_nodes.begin(); it != hwall_n_nodes.end(); ++it){ + int i = (int) *it; ++it; + double h = *it; + if (i == iV)return h; + } + return hwall_n; + } + void computeFor1dMesh(double x, double y, double z, SMetric3 &metr); void setupFor1d(int iE); void setupFor2d(int iF); @@ -280,6 +294,31 @@ class FieldOptionList : public FieldOption } }; +class FieldOptionListDouble : public FieldOption +{ + public: + std::list<double> &val; + FieldOptionType getType(){ return FIELD_OPTION_LIST_DOUBLE; } + FieldOptionListDouble(std::list<double> &_val, std::string _help, bool *_status=0) + : FieldOption(_help, _status), val(_val) {} + void listdouble(std::list<double> value){ modified(); val = value; } + const std::list<double>& listdouble() const { return val; } + void getTextRepresentation(std::string & v_str) + { + std::ostringstream sstream; + sstream.precision(16); + sstream << "{"; + for(std::list<double>::iterator it = val.begin(); it != val.end(); it++) { + if(it != val.begin()) + sstream << ", "; + sstream << *it; + } + sstream << "}"; + v_str = sstream.str(); + } +}; + + class FieldOptionPath : public FieldOptionString { public: diff --git a/Mesh/filterElements.cpp b/Mesh/filterElements.cpp index 5990306d09dd039acb56e153973925dc94b8a42c..bc8728af6ce95da30cacf07cd9860a1e6a349d77 100644 --- a/Mesh/filterElements.cpp +++ b/Mesh/filterElements.cpp @@ -52,7 +52,7 @@ struct MElement_Wrapper inline double orientationTest (double a[2], double b[2], double c[2]){ double s = -robustPredicates::orient2d(a,b,c); - return s > 0 ? 1.0 : s < 0 ? -1.0 : 0.0; + return s >= 0 ? 1.0 : s <= 0 ? -1.0 : 0.0; } inline double orientationTest (MVertex *va, MVertex *vb, MVertex *vc){ @@ -72,6 +72,29 @@ inline double orientationTest (SVector3 &va, SVector3 &vb, SVector3 &vc){ bool intersectEdge2d(const MEdge &ed1, const MEdge &ed2) { + double xmax1 = std::max(ed1.getVertex(0)->x(),ed1.getVertex(1)->x()); + double xmax2 = std::max(ed2.getVertex(0)->x(),ed2.getVertex(1)->x()); + double ymax1 = std::max(ed1.getVertex(0)->y(),ed1.getVertex(1)->y()); + double ymax2 = std::max(ed2.getVertex(0)->y(),ed2.getVertex(1)->y()); + double xmin1 = std::min(ed1.getVertex(0)->x(),ed1.getVertex(1)->x()); + double xmin2 = std::min(ed2.getVertex(0)->x(),ed2.getVertex(1)->x()); + double ymin1 = std::min(ed1.getVertex(0)->y(),ed1.getVertex(1)->y()); + double ymin2 = std::min(ed2.getVertex(0)->y(),ed2.getVertex(1)->y()); + + if (xmax1 < xmin2) return false; + if (xmax2 < xmin1) return false; + if (ymax1 < ymin2) return false; + if (ymax2 < ymin1) return false; + + if (xmin1 > xmax2) return false; + if (xmin2 > xmax1) return false; + if (ymin1 > ymax2) return false; + if (ymin2 > ymax1) return false; + + // ed2.getVertex(0)->x(),ed2.getVertex(0)->y(),ed2.getVertex(1)->x(),ed2.getVertex(1)->y() + + + /* SVector3 a1(ed1.getVertex(0)->x(), ed1.getVertex(0)->y(), 0); SVector3 a2(ed1.getVertex(1)->x(), ed1.getVertex(1)->y(), 0); @@ -110,7 +133,12 @@ bool overlap2D (MElement *e1, MElement *e2) { for (int j=0;j<e2->getNumEdges();j++){ MEdge ed2 = e2->getEdge (j); if (intersectEdge2d(ed1,ed2)){ - // printf("apero time \n"); + // printf("apero time nnodes %d %d partitions %d %d : %g %g -- %g %g vs %g %g -- %g %g\n", + // e1->getNumVertices(),e2->getNumVertices(), + // e1->getPartition(),e2->getPartition(), + // ed1.getVertex(0)->x(),ed1.getVertex(0)->y(),ed1.getVertex(1)->x(),ed1.getVertex(1)->y(), + // ed2.getVertex(0)->x(),ed2.getVertex(0)->y(),ed2.getVertex(1)->x(),ed2.getVertex(1)->y() + // ); return true; } } @@ -159,13 +187,15 @@ void filterColumns(std::vector<MElement*> &elem, // printf("size of column %d\n",c.size()); for (unsigned int i=0;i<c.size(); i++){ if (!std::binary_search(elem.begin(),elem.end(),c[i])){ - MAX = i - 1; + MAX = i ; break; } } if (!MAX)MAX=1; - // printf("MAX = %d c = %d\n",MAX,c.size()); + // if (MAX != c.size()) printf("MAX = %d c = %d\n",MAX,c.size()); for (unsigned int i=0;i<MAX;i++){ + if (orientationTest (c[i]->getVertex(0),c[i]->getVertex(1),c[i]->getVertex(2))<0) + c[i]->reverse(); toKeep.push_back(c[i]); } // for (unsigned int i=MAX;i<c.size();i++){ diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index 450f36d3836982e10707ac7213119613410e8fd2..c4f82aa4a262a10d2450011c3677e98ce27e429e 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -690,20 +690,16 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) v11 = c1._column[l-1]; v12 = c2._column[l-1]; } - MEdge dv2 (v21,v22); - - //avoid convergent errors - if (dv2.length() < 0.03 * dv.length())break; MQuadrangle *qq = new MQuadrangle(v11,v21,v22,v12); qq->setPartition (l+1); myCol.push_back(qq); blQuads.push_back(qq); if(ff2) - fprintf(ff2,"SQ (%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){1,1,1,1};\n", + fprintf(ff2,"SQ (%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){%d,%d,%d,%d};\n", v11->x(),v11->y(),v11->z(), v12->x(),v12->y(),v12->z(), v22->x(),v22->y(),v22->z(), - v21->x(),v21->y(),v21->z()); + v21->x(),v21->y(),v21->z(),l+1,l+1,l+1,l+1); } // int M = std::max(c1._column.size(),c2._column.size()); for (unsigned int l=0;l<myCol.size();l++)_columns->_toFirst[myCol[l]] = myCol[0]; @@ -718,11 +714,12 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) MVertex *v = itf->first; int nbCol = _columns->getNbColumns(v); - std::vector<MElement*> myCol; for (int i=0;i<nbCol-1;i++){ const BoundaryLayerData & c1 = _columns->getColumn(v,i); const BoundaryLayerData & c2 = _columns->getColumn(v,i+1); int N = std::min(c1._column.size(),c2._column.size()); + // printf("%d %d\n",c1._column.size(),c2._column.size()); + std::vector<MElement*> myCol; for (int l=0;l < N ;++l){ MVertex *v11,*v12,*v21,*v22; v21 = c1._column[l]; @@ -741,11 +738,11 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) myCol.push_back(qq); blQuads.push_back(qq); if(ff2) - fprintf(ff2,"SQ (%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){1,1,1,1};\n", + fprintf(ff2,"SQ (%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){%d,%d,%d,%d};\n", v11->x(),v11->y(),v11->z(), v12->x(),v12->y(),v12->z(), v22->x(),v22->y(),v22->z(), - v21->x(),v21->y(),v21->z()); + v21->x(),v21->y(),v21->z(),l+1,l+1,l+1,l+1); } else { MTriangle *qq = new MTriangle(v,v22,v21); @@ -753,15 +750,15 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) myCol.push_back(qq); blTris.push_back(qq); if(ff2) - fprintf(ff2,"ST (%g,%g,%g,%g,%g,%g,%g,%g,%g){1,1,1,1};\n", + fprintf(ff2,"ST (%g,%g,%g,%g,%g,%g,%g,%g,%g){%d,%d,%d};\n", v->x(),v->y(),v->z(), v22->x(),v22->y(),v22->z(), - v21->x(),v21->y(),v21->z()); + v21->x(),v21->y(),v21->z(),l+1,l+1,l+1); } } + for (unsigned int l=0;l<myCol.size();l++)_columns->_toFirst[myCol[l]] = myCol[0]; + _columns->_elemColumns[myCol[0]] = myCol; } - for (unsigned int l=0;l<myCol.size();l++)_columns->_toFirst[myCol[l]] = myCol[0]; - _columns->_elemColumns[myCol[0]] = myCol; } if(ff2){ diff --git a/Mesh/meshGFaceDelaunayInsertion.cpp b/Mesh/meshGFaceDelaunayInsertion.cpp index 1e8b2e85fb4d81404001b3cc90ca111af161064d..076d3cc2e76ea401af6060f55c90f24868889cc3 100644 --- a/Mesh/meshGFaceDelaunayInsertion.cpp +++ b/Mesh/meshGFaceDelaunayInsertion.cpp @@ -1115,7 +1115,7 @@ void bowyerWatson(GFace *gf, int MAXPNT, // printf("%12.5E %12.5E %12.5E %12.5E %12.5E\n",DT1,DT2,DT3,__DT1,__DT2); // printf("%12.5E \n",__DT2); #if defined(HAVE_ANN) - { + if (!CTX::instance()->mesh.recombineAll){ FieldManager *fields = gf->model()->getFields(); BoundaryLayerField *blf = 0; if(fields->getBoundaryLayerField() > 0){ @@ -1435,7 +1435,7 @@ void bowyerWatsonFrontal(GFace *gf, // in case of boundary layer meshing #if defined(HAVE_ANN) - { + if (!CTX::instance()->mesh.recombineAll){ FieldManager *fields = gf->model()->getFields(); BoundaryLayerField *blf = 0; if(fields->getBoundaryLayerField() > 0){ @@ -1724,27 +1724,27 @@ void bowyerWatsonFrontalLayers(GFace *gf, bool quad, backgroundMesh::unset(); #if defined(HAVE_ANN) - { - FieldManager *fields = gf->model()->getFields(); - BoundaryLayerField *blf = 0; - if(fields->getBoundaryLayerField() > 0){ - Field *bl_field = fields->get(fields->getBoundaryLayerField()); - blf = dynamic_cast<BoundaryLayerField*> (bl_field); - if (blf && !blf->iRecombine)quadsToTriangles(gf,10000); - } + if (!CTX::instance()->mesh.recombineAll){ + FieldManager *fields = gf->model()->getFields(); + BoundaryLayerField *blf = 0; + if(fields->getBoundaryLayerField() > 0){ + Field *bl_field = fields->get(fields->getBoundaryLayerField()); + blf = dynamic_cast<BoundaryLayerField*> (bl_field); + if (blf && !blf->iRecombine)quadsToTriangles(gf,10000); } -#endif } +#endif +} - void bowyerWatsonParallelograms(GFace *gf, - std::map<MVertex* , MVertex*>* equivalence, - std::map<MVertex*, SPoint2> * parametricCoordinates) - { - std::set<MTri3*,compareTri3Ptr> AllTris; - bidimMeshData DATA(equivalence, parametricCoordinates); - std::vector<MVertex*> packed; - std::vector<SMetric3> metrics; - +void bowyerWatsonParallelograms(GFace *gf, + std::map<MVertex* , MVertex*>* equivalence, + std::map<MVertex*, SPoint2> * parametricCoordinates) +{ + std::set<MTri3*,compareTri3Ptr> AllTris; + bidimMeshData DATA(equivalence, parametricCoordinates); + std::vector<MVertex*> packed; + std::vector<SMetric3> metrics; + // printf("creating the points\n"); // PEB MODIF if (old_algo_hexa()) @@ -1818,7 +1818,7 @@ void bowyerWatsonFrontalLayers(GFace *gf, bool quad, transferDataStructure(gf, AllTris, DATA); backgroundMesh::unset(); #if defined(HAVE_ANN) - { + if (!CTX::instance()->mesh.recombineAll){ FieldManager *fields = gf->model()->getFields(); BoundaryLayerField *blf = 0; if(fields->getBoundaryLayerField() > 0){ @@ -1924,7 +1924,7 @@ void bowyerWatsonParallelogramsConstrained(GFace *gf, } backgroundMesh::unset(); #if defined(HAVE_ANN) - { + if (!CTX::instance()->mesh.recombineAll){ FieldManager *fields = gf->model()->getFields(); BoundaryLayerField *blf = 0; if(fields->getBoundaryLayerField() > 0){ diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp index ce97fee7dc1280d79acb50cdca8dd89ae55897c2..6b7b00512cd794b31ebcfc406d5ea4671c9148dd 100644 --- a/Mesh/meshGFaceOptimize.cpp +++ b/Mesh/meshGFaceOptimize.cpp @@ -818,7 +818,7 @@ void _relocateVertex(GFace *gf, MVertex *ver, } void getAllBoundaryLayerVertices (GFace *gf, std::set<MVertex*> &vs){ - // return; + //return; vs.clear(); BoundaryLayerColumns* _columns = gf->getColumns(); if (!_columns)return; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 734cd552d537e998cacd1f9515e6f58d8ae2afee..476b073cb23af79075c3ca91b04354bffd1845ef 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1303,51 +1303,51 @@ static const yytype_uint16 yyrline[] = 833, 838, 843, 848, 855, 865, 894, 923, 928, 933, 938, 946, 955, 961, 967, 980, 993, 1008, 1025, 1031, 1037, 1050, 1063, 1078, 1095, 1101, 1110, 1128, 1146, 1155, - 1167, 1172, 1180, 1200, 1223, 1234, 1242, 1264, 1287, 1313, - 1334, 1346, 1360, 1360, 1362, 1364, 1373, 1383, 1382, 1403, - 1402, 1421, 1420, 1438, 1448, 1447, 1461, 1463, 1471, 1477, - 1482, 1508, 1509, 1513, 1524, 1539, 1549, 1550, 1555, 1563, - 1572, 1580, 1598, 1602, 1608, 1616, 1620, 1626, 1634, 1638, - 1644, 1652, 1656, 1662, 1671, 1674, 1687, 1690, 1700, 1723, - 1766, 1789, 1807, 1828, 1846, 1876, 1906, 1924, 1942, 1969, - 1988, 1993, 2011, 2057, 2075, 2114, 2120, 2126, 2133, 2158, - 2183, 2200, 2204, 2223, 2257, 2304, 2322, 2339, 2343, 2359, - 2407, 2412, 2417, 2422, 2427, 2432, 2455, 2461, 2472, 2473, - 2478, 2481, 2485, 2508, 2531, 2554, 2582, 2603, 2629, 2650, - 2672, 2692, 2804, 2823, 2861, 2970, 2979, 2985, 3000, 3028, - 3045, 3054, 3068, 3082, 3088, 3094, 3103, 3112, 3121, 3135, - 3197, 3215, 3232, 3247, 3276, 3288, 3312, 3316, 3321, 3328, - 3333, 3339, 3344, 3350, 3358, 3362, 3366, 3371, 3431, 3447, - 3464, 3481, 3503, 3525, 3560, 3568, 3576, 3582, 3589, 3596, - 3616, 3642, 3654, 3666, 3674, 3682, 3691, 3690, 3705, 3704, - 3719, 3718, 3733, 3732, 3746, 3753, 3760, 3767, 3774, 3781, - 3788, 3795, 3802, 3810, 3809, 3823, 3822, 3836, 3835, 3849, - 3848, 3862, 3861, 3875, 3874, 3888, 3887, 3901, 3900, 3914, - 3913, 3930, 3933, 3939, 3951, 3971, 3995, 3999, 4003, 4007, - 4011, 4015, 4021, 4027, 4031, 4035, 4039, 4043, 4062, 4075, - 4078, 4094, 4097, 4114, 4117, 4123, 4126, 4133, 4136, 4143, - 4199, 4269, 4274, 4341, 4377, 4385, 4428, 4467, 4487, 4519, - 4546, 4572, 4598, 4624, 4650, 4672, 4700, 4728, 4756, 4784, - 4812, 4851, 4890, 4911, 4932, 4959, 4963, 4973, 5008, 5009, - 5010, 5014, 5020, 5032, 5050, 5078, 5079, 5080, 5081, 5082, - 5083, 5084, 5085, 5086, 5093, 5094, 5095, 5096, 5097, 5098, - 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, - 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, - 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5134, 5135, 5136, - 5137, 5138, 5139, 5140, 5141, 5142, 5143, 5144, 5149, 5148, - 5156, 5161, 5166, 5183, 5201, 5219, 5237, 5255, 5260, 5266, - 5281, 5300, 5320, 5340, 5360, 5383, 5388, 5393, 5403, 5413, - 5418, 5429, 5438, 5443, 5470, 5474, 5478, 5482, 5486, 5493, - 5497, 5501, 5505, 5512, 5517, 5524, 5529, 5533, 5538, 5542, - 5550, 5561, 5565, 5577, 5585, 5593, 5600, 5610, 5639, 5643, - 5647, 5651, 5655, 5659, 5663, 5667, 5671, 5700, 5729, 5758, - 5787, 5800, 5813, 5826, 5839, 5849, 5859, 5871, 5884, 5896, - 5900, 5904, 5908, 5912, 5930, 5951, 5956, 5960, 5964, 5976, - 5980, 5992, 6009, 6019, 6023, 6038, 6043, 6050, 6054, 6067, - 6081, 6095, 6109, 6123, 6131, 6142, 6146, 6150, 6158, 6164, - 6170, 6178, 6186, 6193, 6201, 6216, 6230, 6244, 6256, 6272, - 6281, 6290, 6300, 6311, 6315, 6334, 6341, 6347, 6354, 6362, - 6361, 6374, 6379, 6385, 6394, 6407, 6410, 6414 + 1167, 1172, 1180, 1200, 1223, 1234, 1242, 1264, 1287, 1325, + 1346, 1358, 1372, 1372, 1374, 1376, 1385, 1395, 1394, 1415, + 1414, 1433, 1432, 1450, 1460, 1459, 1473, 1475, 1483, 1489, + 1494, 1520, 1521, 1525, 1536, 1551, 1561, 1562, 1567, 1575, + 1584, 1592, 1610, 1614, 1620, 1628, 1632, 1638, 1646, 1650, + 1656, 1664, 1668, 1674, 1683, 1686, 1699, 1702, 1712, 1735, + 1778, 1801, 1819, 1840, 1858, 1888, 1918, 1936, 1954, 1981, + 2000, 2005, 2023, 2069, 2087, 2126, 2132, 2138, 2145, 2170, + 2195, 2212, 2216, 2235, 2269, 2316, 2334, 2351, 2355, 2371, + 2419, 2424, 2429, 2434, 2439, 2444, 2467, 2473, 2484, 2485, + 2490, 2493, 2497, 2520, 2543, 2566, 2594, 2615, 2641, 2662, + 2684, 2704, 2816, 2835, 2873, 2982, 2991, 2997, 3012, 3040, + 3057, 3066, 3080, 3094, 3100, 3106, 3115, 3124, 3133, 3147, + 3209, 3227, 3244, 3259, 3288, 3300, 3324, 3328, 3333, 3340, + 3345, 3351, 3356, 3362, 3370, 3374, 3378, 3383, 3443, 3459, + 3476, 3493, 3515, 3537, 3572, 3580, 3588, 3594, 3601, 3608, + 3628, 3654, 3666, 3678, 3686, 3694, 3703, 3702, 3717, 3716, + 3731, 3730, 3745, 3744, 3758, 3765, 3772, 3779, 3786, 3793, + 3800, 3807, 3814, 3822, 3821, 3835, 3834, 3848, 3847, 3861, + 3860, 3874, 3873, 3887, 3886, 3900, 3899, 3913, 3912, 3926, + 3925, 3942, 3945, 3951, 3963, 3983, 4007, 4011, 4015, 4019, + 4023, 4027, 4033, 4039, 4043, 4047, 4051, 4055, 4074, 4087, + 4090, 4106, 4109, 4126, 4129, 4135, 4138, 4145, 4148, 4155, + 4211, 4281, 4286, 4353, 4389, 4397, 4440, 4479, 4499, 4531, + 4558, 4584, 4610, 4636, 4662, 4684, 4712, 4740, 4768, 4796, + 4824, 4863, 4902, 4923, 4944, 4971, 4975, 4985, 5020, 5021, + 5022, 5026, 5032, 5044, 5062, 5090, 5091, 5092, 5093, 5094, + 5095, 5096, 5097, 5098, 5105, 5106, 5107, 5108, 5109, 5110, + 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, + 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, + 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5146, 5147, 5148, + 5149, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5161, 5160, + 5168, 5173, 5178, 5195, 5213, 5231, 5249, 5267, 5272, 5278, + 5293, 5312, 5332, 5352, 5372, 5395, 5400, 5405, 5415, 5425, + 5430, 5441, 5450, 5455, 5482, 5486, 5490, 5494, 5498, 5505, + 5509, 5513, 5517, 5524, 5529, 5536, 5541, 5545, 5550, 5554, + 5562, 5573, 5577, 5589, 5597, 5605, 5612, 5622, 5651, 5655, + 5659, 5663, 5667, 5671, 5675, 5679, 5683, 5712, 5741, 5770, + 5799, 5812, 5825, 5838, 5851, 5861, 5871, 5883, 5896, 5908, + 5912, 5916, 5920, 5924, 5942, 5963, 5968, 5972, 5976, 5988, + 5992, 6004, 6021, 6031, 6035, 6050, 6055, 6062, 6066, 6079, + 6093, 6107, 6121, 6135, 6143, 6154, 6158, 6162, 6170, 6176, + 6182, 6190, 6198, 6205, 6213, 6228, 6242, 6256, 6268, 6284, + 6293, 6302, 6312, 6323, 6327, 6346, 6353, 6359, 6366, 6374, + 6373, 6386, 6391, 6397, 6406, 6419, 6422, 6426 }; #endif @@ -6868,14 +6868,26 @@ yyreduce: if(field){ FieldOption *option = field->options[(yyvsp[(6) - (11)].c)]; if(option){ - std::list<int> vl = option->list(); - vl.clear(); - for(int i = 0; i < List_Nbr((yyvsp[(9) - (11)].l)); i++){ - double id; - List_Read((yyvsp[(9) - (11)].l), i, &id); - vl.push_back((int)id); + if (option->getType() == FIELD_OPTION_LIST) { + std::list<int> vl = option->list(); + vl.clear(); + for(int i = 0; i < List_Nbr((yyvsp[(9) - (11)].l)); i++){ + double id; + List_Read((yyvsp[(9) - (11)].l), i, &id); + vl.push_back((int)id); + } + option->list(vl); + } + else { + std::list<double> vl = option->listdouble(); + vl.clear(); + for(int i = 0; i < List_Nbr((yyvsp[(9) - (11)].l)); i++){ + double id; + List_Read((yyvsp[(9) - (11)].l), i, &id); + vl.push_back(id); + } + option->listdouble(vl); } - option->list(vl); } else yymsg(0, "Unknown option '%s' in field %i of type '%s'", @@ -6890,7 +6902,7 @@ yyreduce: break; case 119: -#line 1314 "Gmsh.y" +#line 1326 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (7)].d)); @@ -6911,7 +6923,7 @@ yyreduce: break; case 120: -#line 1335 "Gmsh.y" +#line 1347 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -6926,7 +6938,7 @@ yyreduce: break; case 121: -#line 1347 "Gmsh.y" +#line 1359 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -6941,7 +6953,7 @@ yyreduce: break; case 125: -#line 1365 "Gmsh.y" +#line 1377 "Gmsh.y" { std::string key((yyvsp[(3) - (3)].c)); std::vector<double> val(1, 0.); @@ -6953,7 +6965,7 @@ yyreduce: break; case 126: -#line 1374 "Gmsh.y" +#line 1386 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)); std::vector<double> val(1, (yyvsp[(5) - (5)].d)); @@ -6965,12 +6977,12 @@ yyreduce: break; case 127: -#line 1383 "Gmsh.y" +#line 1395 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 128: -#line 1385 "Gmsh.y" +#line 1397 "Gmsh.y" { if(List_Nbr((yyvsp[(6) - (9)].l)) != 1) yymsg(1, "List notation should be used to define list '%s[]'", (yyvsp[(3) - (9)].c)); @@ -6991,12 +7003,12 @@ yyreduce: break; case 129: -#line 1403 "Gmsh.y" +#line 1415 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 130: -#line 1405 "Gmsh.y" +#line 1417 "Gmsh.y" { std::string key((yyvsp[(3) - (11)].c)); std::vector<double> val; @@ -7015,12 +7027,12 @@ yyreduce: break; case 131: -#line 1421 "Gmsh.y" +#line 1433 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 132: -#line 1423 "Gmsh.y" +#line 1435 "Gmsh.y" { std::string key((yyvsp[(3) - (11)].c)); std::vector<double> val; @@ -7039,7 +7051,7 @@ yyreduce: break; case 133: -#line 1439 "Gmsh.y" +#line 1451 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c)); if(!gmsh_yystringsymbols.count(key)){ @@ -7051,12 +7063,12 @@ yyreduce: break; case 134: -#line 1448 "Gmsh.y" +#line 1460 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 135: -#line 1450 "Gmsh.y" +#line 1462 "Gmsh.y" { std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c)); if(!gmsh_yysymbols.count(key)){ @@ -7069,7 +7081,7 @@ yyreduce: break; case 137: -#line 1464 "Gmsh.y" +#line 1476 "Gmsh.y" { std::string name((yyvsp[(3) - (3)].c)); Msg::UndefineOnelabParameter(name); @@ -7078,7 +7090,7 @@ yyreduce: break; case 138: -#line 1472 "Gmsh.y" +#line 1484 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)}; @@ -7087,7 +7099,7 @@ yyreduce: break; case 139: -#line 1478 "Gmsh.y" +#line 1490 "Gmsh.y" { doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)}; List_Add((yyval.l), &v); @@ -7095,7 +7107,7 @@ yyreduce: break; case 140: -#line 1483 "Gmsh.y" +#line 1495 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); int n = List_Nbr((yyvsp[(1) - (5)].l)); @@ -7122,7 +7134,7 @@ yyreduce: break; case 143: -#line 1514 "Gmsh.y" +#line 1526 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ @@ -7136,7 +7148,7 @@ yyreduce: break; case 144: -#line 1525 "Gmsh.y" +#line 1537 "Gmsh.y" { std::string key((yyvsp[(2) - (5)].c)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -7153,7 +7165,7 @@ yyreduce: break; case 145: -#line 1540 "Gmsh.y" +#line 1552 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); std::string val((yyvsp[(3) - (3)].c)); @@ -7164,7 +7176,7 @@ yyreduce: break; case 148: -#line 1556 "Gmsh.y" +#line 1568 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); double val = (yyvsp[(3) - (3)].d); @@ -7174,7 +7186,7 @@ yyreduce: break; case 149: -#line 1564 "Gmsh.y" +#line 1576 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); std::string val((yyvsp[(3) - (3)].c)); @@ -7185,7 +7197,7 @@ yyreduce: break; case 150: -#line 1573 "Gmsh.y" +#line 1585 "Gmsh.y" { std::string key("Macro"); std::string val((yyvsp[(3) - (3)].c)); @@ -7195,7 +7207,7 @@ yyreduce: break; case 151: -#line 1581 "Gmsh.y" +#line 1593 "Gmsh.y" { std::string key((yyvsp[(2) - (5)].c)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -7211,14 +7223,14 @@ yyreduce: break; case 152: -#line 1599 "Gmsh.y" +#line 1611 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; case 153: -#line 1603 "Gmsh.y" +#line 1615 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), 0, ++GModel::current()->getGEOInternals()->MaxPhysicalNum); @@ -7227,7 +7239,7 @@ yyreduce: break; case 154: -#line 1609 "Gmsh.y" +#line 1621 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 0, (yyvsp[(3) - (3)].d)); Free((yyvsp[(1) - (3)].c)); @@ -7235,14 +7247,14 @@ yyreduce: break; case 155: -#line 1617 "Gmsh.y" +#line 1629 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; case 156: -#line 1621 "Gmsh.y" +#line 1633 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), 1, ++GModel::current()->getGEOInternals()->MaxPhysicalNum); @@ -7251,7 +7263,7 @@ yyreduce: break; case 157: -#line 1627 "Gmsh.y" +#line 1639 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 1, (yyvsp[(3) - (3)].d)); Free((yyvsp[(1) - (3)].c)); @@ -7259,14 +7271,14 @@ yyreduce: break; case 158: -#line 1635 "Gmsh.y" +#line 1647 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; case 159: -#line 1639 "Gmsh.y" +#line 1651 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), 2, ++GModel::current()->getGEOInternals()->MaxPhysicalNum); @@ -7275,7 +7287,7 @@ yyreduce: break; case 160: -#line 1645 "Gmsh.y" +#line 1657 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 2, (yyvsp[(3) - (3)].d)); Free((yyvsp[(1) - (3)].c)); @@ -7283,14 +7295,14 @@ yyreduce: break; case 161: -#line 1653 "Gmsh.y" +#line 1665 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; case 162: -#line 1657 "Gmsh.y" +#line 1669 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), 3, ++GModel::current()->getGEOInternals()->MaxPhysicalNum); @@ -7299,7 +7311,7 @@ yyreduce: break; case 163: -#line 1663 "Gmsh.y" +#line 1675 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), 3, (yyvsp[(3) - (3)].d)); Free((yyvsp[(1) - (3)].c)); @@ -7307,14 +7319,14 @@ yyreduce: break; case 164: -#line 1671 "Gmsh.y" +#line 1683 "Gmsh.y" { (yyval.l) = 0; ;} break; case 165: -#line 1675 "Gmsh.y" +#line 1687 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(Vertex*)); Vertex *v = FindPoint((int)(yyvsp[(4) - (5)].d)); @@ -7327,21 +7339,21 @@ yyreduce: break; case 166: -#line 1687 "Gmsh.y" +#line 1699 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.; ;} break; case 167: -#line 1691 "Gmsh.y" +#line 1703 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 168: -#line 1701 "Gmsh.y" +#line 1713 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindPoint(num)){ @@ -7367,7 +7379,7 @@ yyreduce: break; case 169: -#line 1724 "Gmsh.y" +#line 1736 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].i); int op = (yyvsp[(6) - (8)].i); @@ -7413,7 +7425,7 @@ yyreduce: break; case 170: -#line 1767 "Gmsh.y" +#line 1779 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -7436,7 +7448,7 @@ yyreduce: break; case 171: -#line 1790 "Gmsh.y" +#line 1802 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -7457,7 +7469,7 @@ yyreduce: break; case 172: -#line 1808 "Gmsh.y" +#line 1820 "Gmsh.y" { for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -7481,7 +7493,7 @@ yyreduce: break; case 173: -#line 1829 "Gmsh.y" +#line 1841 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -7502,7 +7514,7 @@ yyreduce: break; case 174: -#line 1847 "Gmsh.y" +#line 1859 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -7535,7 +7547,7 @@ yyreduce: break; case 175: -#line 1877 "Gmsh.y" +#line 1889 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -7568,7 +7580,7 @@ yyreduce: break; case 176: -#line 1907 "Gmsh.y" +#line 1919 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -7589,7 +7601,7 @@ yyreduce: break; case 177: -#line 1925 "Gmsh.y" +#line 1937 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -7610,7 +7622,7 @@ yyreduce: break; case 178: -#line 1944 "Gmsh.y" +#line 1956 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); if(List_Nbr((yyvsp[(6) - (11)].l)) + (int)(yyvsp[(10) - (11)].d) + 1 != List_Nbr((yyvsp[(8) - (11)].l))){ @@ -7639,7 +7651,7 @@ yyreduce: break; case 179: -#line 1970 "Gmsh.y" +#line 1982 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindEdgeLoop(num)){ @@ -7660,14 +7672,14 @@ yyreduce: break; case 180: -#line 1989 "Gmsh.y" +#line 2001 "Gmsh.y" { GModel::current()->getGEOInternals()->addCompoundMesh ( 1 , (yyvsp[(3) - (4)].l) ); ;} break; case 181: -#line 1994 "Gmsh.y" +#line 2006 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindCurve(num)){ @@ -7688,7 +7700,7 @@ yyreduce: break; case 182: -#line 2012 "Gmsh.y" +#line 2024 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].i); int op = (yyvsp[(6) - (8)].i); @@ -7734,7 +7746,7 @@ yyreduce: break; case 183: -#line 2058 "Gmsh.y" +#line 2070 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -7755,7 +7767,7 @@ yyreduce: break; case 184: -#line 2076 "Gmsh.y" +#line 2088 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d), type = 0; if(FindSurface(num)){ @@ -7797,7 +7809,7 @@ yyreduce: break; case 185: -#line 2115 "Gmsh.y" +#line 2127 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; @@ -7806,7 +7818,7 @@ yyreduce: break; case 186: -#line 2121 "Gmsh.y" +#line 2133 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; @@ -7815,7 +7827,7 @@ yyreduce: break; case 187: -#line 2127 "Gmsh.y" +#line 2139 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); @@ -7825,7 +7837,7 @@ yyreduce: break; case 188: -#line 2134 "Gmsh.y" +#line 2146 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -7853,7 +7865,7 @@ yyreduce: break; case 189: -#line 2159 "Gmsh.y" +#line 2171 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -7881,7 +7893,7 @@ yyreduce: break; case 190: -#line 2184 "Gmsh.y" +#line 2196 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurfaceLoop(num)){ @@ -7901,14 +7913,14 @@ yyreduce: break; case 191: -#line 2201 "Gmsh.y" +#line 2213 "Gmsh.y" { GModel::current()->getGEOInternals()->addCompoundMesh ( 2 , (yyvsp[(3) - (4)].l) ); ;} break; case 192: -#line 2205 "Gmsh.y" +#line 2217 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -7930,7 +7942,7 @@ yyreduce: break; case 193: -#line 2225 "Gmsh.y" +#line 2237 "Gmsh.y" { int num = (int)(yyvsp[(4) - (12)].d); if(FindSurface(num)){ @@ -7966,7 +7978,7 @@ yyreduce: break; case 194: -#line 2258 "Gmsh.y" +#line 2270 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].i); int op = (yyvsp[(6) - (8)].i); @@ -8012,7 +8024,7 @@ yyreduce: break; case 195: -#line 2305 "Gmsh.y" +#line 2317 "Gmsh.y" { yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead"); int num = (int)(yyvsp[(4) - (8)].d); @@ -8033,7 +8045,7 @@ yyreduce: break; case 196: -#line 2323 "Gmsh.y" +#line 2335 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindVolume(num)){ @@ -8053,14 +8065,14 @@ yyreduce: break; case 197: -#line 2340 "Gmsh.y" +#line 2352 "Gmsh.y" { GModel::current()->getGEOInternals()->addCompoundMesh ( 3 , (yyvsp[(3) - (4)].l) ); ;} break; case 198: -#line 2344 "Gmsh.y" +#line 2356 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindVolume(num)){ @@ -8079,7 +8091,7 @@ yyreduce: break; case 199: -#line 2360 "Gmsh.y" +#line 2372 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].i); int op = (yyvsp[(6) - (8)].i); @@ -8125,7 +8137,7 @@ yyreduce: break; case 200: -#line 2408 "Gmsh.y" +#line 2420 "Gmsh.y" { TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); @@ -8133,7 +8145,7 @@ yyreduce: break; case 201: -#line 2413 "Gmsh.y" +#line 2425 "Gmsh.y" { RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); (yyval.l) = (yyvsp[(10) - (11)].l); @@ -8141,7 +8153,7 @@ yyreduce: break; case 202: -#line 2418 "Gmsh.y" +#line 2430 "Gmsh.y" { SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); @@ -8149,7 +8161,7 @@ yyreduce: break; case 203: -#line 2423 "Gmsh.y" +#line 2435 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); @@ -8157,7 +8169,7 @@ yyreduce: break; case 204: -#line 2428 "Gmsh.y" +#line 2440 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0], (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2], (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); @@ -8165,7 +8177,7 @@ yyreduce: break; case 205: -#line 2433 "Gmsh.y" +#line 2445 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){ @@ -8191,7 +8203,7 @@ yyreduce: break; case 206: -#line 2456 "Gmsh.y" +#line 2468 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l)); @@ -8200,7 +8212,7 @@ yyreduce: break; case 207: -#line 2462 "Gmsh.y" +#line 2474 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); List_T *tmp = ListOfDouble2ListOfInt((yyvsp[(7) - (9)].l)); @@ -8211,31 +8223,31 @@ yyreduce: break; case 208: -#line 2472 "Gmsh.y" +#line 2484 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 209: -#line 2473 "Gmsh.y" +#line 2485 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 210: -#line 2478 "Gmsh.y" +#line 2490 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; case 211: -#line 2482 "Gmsh.y" +#line 2494 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; case 212: -#line 2486 "Gmsh.y" +#line 2498 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8261,7 +8273,7 @@ yyreduce: break; case 213: -#line 2509 "Gmsh.y" +#line 2521 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8287,7 +8299,7 @@ yyreduce: break; case 214: -#line 2532 "Gmsh.y" +#line 2544 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8313,7 +8325,7 @@ yyreduce: break; case 215: -#line 2555 "Gmsh.y" +#line 2567 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8339,7 +8351,7 @@ yyreduce: break; case 216: -#line 2583 "Gmsh.y" +#line 2595 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ @@ -8363,7 +8375,7 @@ yyreduce: break; case 217: -#line 2604 "Gmsh.y" +#line 2616 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) int t = (int)(yyvsp[(4) - (10)].d); @@ -8392,7 +8404,7 @@ yyreduce: break; case 218: -#line 2631 "Gmsh.y" +#line 2643 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 0){ @@ -8415,7 +8427,7 @@ yyreduce: break; case 219: -#line 2652 "Gmsh.y" +#line 2664 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(14) - (16)].l)) == 0){ @@ -8439,7 +8451,7 @@ yyreduce: break; case 220: -#line 2673 "Gmsh.y" +#line 2685 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ @@ -8462,7 +8474,7 @@ yyreduce: break; case 221: -#line 2693 "Gmsh.y" +#line 2705 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ @@ -8577,7 +8589,7 @@ yyreduce: break; case 222: -#line 2805 "Gmsh.y" +#line 2817 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ @@ -8599,7 +8611,7 @@ yyreduce: break; case 223: -#line 2824 "Gmsh.y" +#line 2836 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ @@ -8640,7 +8652,7 @@ yyreduce: break; case 224: -#line 2863 "Gmsh.y" +#line 2875 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){ @@ -8746,7 +8758,7 @@ yyreduce: break; case 225: -#line 2971 "Gmsh.y" +#line 2983 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -8758,7 +8770,7 @@ yyreduce: break; case 226: -#line 2980 "Gmsh.y" +#line 2992 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -8767,7 +8779,7 @@ yyreduce: break; case 227: -#line 2986 "Gmsh.y" +#line 2998 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -8785,7 +8797,7 @@ yyreduce: break; case 228: -#line 3001 "Gmsh.y" +#line 3013 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -8816,7 +8828,7 @@ yyreduce: break; case 229: -#line 3029 "Gmsh.y" +#line 3041 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -8831,7 +8843,7 @@ yyreduce: break; case 230: -#line 3046 "Gmsh.y" +#line 3058 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -8843,7 +8855,7 @@ yyreduce: break; case 231: -#line 3055 "Gmsh.y" +#line 3067 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++){ Shape TheShape; @@ -8855,7 +8867,7 @@ yyreduce: break; case 232: -#line 3069 "Gmsh.y" +#line 3081 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -8867,7 +8879,7 @@ yyreduce: break; case 233: -#line 3083 "Gmsh.y" +#line 3095 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1, false); @@ -8876,7 +8888,7 @@ yyreduce: break; case 234: -#line 3089 "Gmsh.y" +#line 3101 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0, false); @@ -8885,7 +8897,7 @@ yyreduce: break; case 235: -#line 3095 "Gmsh.y" +#line 3107 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -8897,7 +8909,7 @@ yyreduce: break; case 236: -#line 3104 "Gmsh.y" +#line 3116 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -8909,7 +8921,7 @@ yyreduce: break; case 237: -#line 3113 "Gmsh.y" +#line 3125 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -8921,7 +8933,7 @@ yyreduce: break; case 238: -#line 3122 "Gmsh.y" +#line 3134 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -8933,7 +8945,7 @@ yyreduce: break; case 239: -#line 3136 "Gmsh.y" +#line 3148 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -8998,7 +9010,7 @@ yyreduce: break; case 240: -#line 3198 "Gmsh.y" +#line 3210 "Gmsh.y" { int n = List_Nbr((yyvsp[(3) - (5)].l)); if(n == 1){ @@ -9019,7 +9031,7 @@ yyreduce: break; case 241: -#line 3216 "Gmsh.y" +#line 3228 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -9039,7 +9051,7 @@ yyreduce: break; case 242: -#line 3233 "Gmsh.y" +#line 3245 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -9057,7 +9069,7 @@ yyreduce: break; case 243: -#line 3248 "Gmsh.y" +#line 3260 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -9089,7 +9101,7 @@ yyreduce: break; case 244: -#line 3277 "Gmsh.y" +#line 3289 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -9104,7 +9116,7 @@ yyreduce: break; case 245: -#line 3289 "Gmsh.y" +#line 3301 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -9131,14 +9143,14 @@ yyreduce: break; case 246: -#line 3313 "Gmsh.y" +#line 3325 "Gmsh.y" { Msg::Exit(0); ;} break; case 247: -#line 3317 "Gmsh.y" +#line 3329 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; @@ -9146,7 +9158,7 @@ yyreduce: break; case 248: -#line 3322 "Gmsh.y" +#line 3334 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the @@ -9156,7 +9168,7 @@ yyreduce: break; case 249: -#line 3329 "Gmsh.y" +#line 3341 "Gmsh.y" { new GModel(); GModel::current(GModel::list.size() - 1); @@ -9164,7 +9176,7 @@ yyreduce: break; case 250: -#line 3334 "Gmsh.y" +#line 3346 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); @@ -9173,7 +9185,7 @@ yyreduce: break; case 251: -#line 3340 "Gmsh.y" +#line 3352 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); @@ -9181,7 +9193,7 @@ yyreduce: break; case 252: -#line 3345 "Gmsh.y" +#line 3357 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -9190,7 +9202,7 @@ yyreduce: break; case 253: -#line 3351 "Gmsh.y" +#line 3363 "Gmsh.y" { #if defined(HAVE_OPENGL) CTX::instance()->mesh.changed = ENT_ALL; @@ -9201,21 +9213,21 @@ yyreduce: break; case 254: -#line 3359 "Gmsh.y" +#line 3371 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; case 255: -#line 3363 "Gmsh.y" +#line 3375 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); ;} break; case 256: -#line 3367 "Gmsh.y" +#line 3379 "Gmsh.y" { GModel::current()->importGEOInternals(); GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear); @@ -9223,7 +9235,7 @@ yyreduce: break; case 257: -#line 3373 "Gmsh.y" +#line 3385 "Gmsh.y" { int lock = CTX::instance()->lock; CTX::instance()->lock = 0; @@ -9280,7 +9292,7 @@ yyreduce: break; case 258: -#line 3432 "Gmsh.y" +#line 3444 "Gmsh.y" { #if defined(HAVE_POPPLER) std::vector<int> is; @@ -9295,7 +9307,7 @@ yyreduce: break; case 259: -#line 3448 "Gmsh.y" +#line 3460 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -9315,7 +9327,7 @@ yyreduce: break; case 260: -#line 3465 "Gmsh.y" +#line 3477 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -9335,7 +9347,7 @@ yyreduce: break; case 261: -#line 3482 "Gmsh.y" +#line 3494 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -9360,7 +9372,7 @@ yyreduce: break; case 262: -#line 3504 "Gmsh.y" +#line 3516 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -9385,7 +9397,7 @@ yyreduce: break; case 263: -#line 3526 "Gmsh.y" +#line 3538 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -9423,7 +9435,7 @@ yyreduce: break; case 264: -#line 3561 "Gmsh.y" +#line 3573 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9434,7 +9446,7 @@ yyreduce: break; case 265: -#line 3569 "Gmsh.y" +#line 3581 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9445,7 +9457,7 @@ yyreduce: break; case 266: -#line 3577 "Gmsh.y" +#line 3589 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9454,7 +9466,7 @@ yyreduce: break; case 267: -#line 3583 "Gmsh.y" +#line 3595 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9464,7 +9476,7 @@ yyreduce: break; case 268: -#line 3590 "Gmsh.y" +#line 3602 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9474,7 +9486,7 @@ yyreduce: break; case 269: -#line 3597 "Gmsh.y" +#line 3609 "Gmsh.y" { ImbricatedTest++; if(ImbricatedTest > MAX_RECUR_TESTS-1){ @@ -9497,7 +9509,7 @@ yyreduce: break; case 270: -#line 3617 "Gmsh.y" +#line 3629 "Gmsh.y" { if(ImbricatedTest > 0){ if (statusImbricatedTests[ImbricatedTest]){ @@ -9526,7 +9538,7 @@ yyreduce: break; case 271: -#line 3643 "Gmsh.y" +#line 3655 "Gmsh.y" { if(ImbricatedTest > 0){ if(statusImbricatedTests[ImbricatedTest]){ @@ -9541,7 +9553,7 @@ yyreduce: break; case 272: -#line 3655 "Gmsh.y" +#line 3667 "Gmsh.y" { ImbricatedTest--; if(ImbricatedTest < 0) @@ -9550,7 +9562,7 @@ yyreduce: break; case 273: -#line 3667 "Gmsh.y" +#line 3679 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), @@ -9561,7 +9573,7 @@ yyreduce: break; case 274: -#line 3675 "Gmsh.y" +#line 3687 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), @@ -9572,7 +9584,7 @@ yyreduce: break; case 275: -#line 3683 "Gmsh.y" +#line 3695 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), @@ -9583,7 +9595,7 @@ yyreduce: break; case 276: -#line 3691 "Gmsh.y" +#line 3703 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9592,7 +9604,7 @@ yyreduce: break; case 277: -#line 3697 "Gmsh.y" +#line 3709 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), @@ -9603,7 +9615,7 @@ yyreduce: break; case 278: -#line 3705 "Gmsh.y" +#line 3717 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9612,7 +9624,7 @@ yyreduce: break; case 279: -#line 3711 "Gmsh.y" +#line 3723 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), @@ -9623,7 +9635,7 @@ yyreduce: break; case 280: -#line 3719 "Gmsh.y" +#line 3731 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9632,7 +9644,7 @@ yyreduce: break; case 281: -#line 3725 "Gmsh.y" +#line 3737 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), @@ -9643,7 +9655,7 @@ yyreduce: break; case 282: -#line 3733 "Gmsh.y" +#line 3745 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9652,7 +9664,7 @@ yyreduce: break; case 283: -#line 3739 "Gmsh.y" +#line 3751 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., @@ -9662,7 +9674,7 @@ yyreduce: break; case 284: -#line 3747 "Gmsh.y" +#line 3759 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), @@ -9672,7 +9684,7 @@ yyreduce: break; case 285: -#line 3754 "Gmsh.y" +#line 3766 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), @@ -9682,7 +9694,7 @@ yyreduce: break; case 286: -#line 3761 "Gmsh.y" +#line 3773 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), @@ -9692,7 +9704,7 @@ yyreduce: break; case 287: -#line 3768 "Gmsh.y" +#line 3780 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -9702,7 +9714,7 @@ yyreduce: break; case 288: -#line 3775 "Gmsh.y" +#line 3787 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -9712,7 +9724,7 @@ yyreduce: break; case 289: -#line 3782 "Gmsh.y" +#line 3794 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -9722,7 +9734,7 @@ yyreduce: break; case 290: -#line 3789 "Gmsh.y" +#line 3801 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), @@ -9732,7 +9744,7 @@ yyreduce: break; case 291: -#line 3796 "Gmsh.y" +#line 3808 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), @@ -9742,7 +9754,7 @@ yyreduce: break; case 292: -#line 3803 "Gmsh.y" +#line 3815 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), @@ -9752,7 +9764,7 @@ yyreduce: break; case 293: -#line 3810 "Gmsh.y" +#line 3822 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9761,7 +9773,7 @@ yyreduce: break; case 294: -#line 3816 "Gmsh.y" +#line 3828 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -9771,7 +9783,7 @@ yyreduce: break; case 295: -#line 3823 "Gmsh.y" +#line 3835 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9780,7 +9792,7 @@ yyreduce: break; case 296: -#line 3829 "Gmsh.y" +#line 3841 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -9790,7 +9802,7 @@ yyreduce: break; case 297: -#line 3836 "Gmsh.y" +#line 3848 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9799,7 +9811,7 @@ yyreduce: break; case 298: -#line 3842 "Gmsh.y" +#line 3854 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -9809,7 +9821,7 @@ yyreduce: break; case 299: -#line 3849 "Gmsh.y" +#line 3861 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9818,7 +9830,7 @@ yyreduce: break; case 300: -#line 3855 "Gmsh.y" +#line 3867 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), @@ -9828,7 +9840,7 @@ yyreduce: break; case 301: -#line 3862 "Gmsh.y" +#line 3874 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9837,7 +9849,7 @@ yyreduce: break; case 302: -#line 3868 "Gmsh.y" +#line 3880 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), @@ -9847,7 +9859,7 @@ yyreduce: break; case 303: -#line 3875 "Gmsh.y" +#line 3887 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9856,7 +9868,7 @@ yyreduce: break; case 304: -#line 3881 "Gmsh.y" +#line 3893 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), @@ -9866,7 +9878,7 @@ yyreduce: break; case 305: -#line 3888 "Gmsh.y" +#line 3900 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9875,7 +9887,7 @@ yyreduce: break; case 306: -#line 3894 "Gmsh.y" +#line 3906 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), @@ -9885,7 +9897,7 @@ yyreduce: break; case 307: -#line 3901 "Gmsh.y" +#line 3913 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9894,7 +9906,7 @@ yyreduce: break; case 308: -#line 3907 "Gmsh.y" +#line 3919 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), @@ -9904,7 +9916,7 @@ yyreduce: break; case 309: -#line 3914 "Gmsh.y" +#line 3926 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -9913,7 +9925,7 @@ yyreduce: break; case 310: -#line 3920 "Gmsh.y" +#line 3932 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), @@ -9923,19 +9935,19 @@ yyreduce: break; case 311: -#line 3931 "Gmsh.y" +#line 3943 "Gmsh.y" { ;} break; case 312: -#line 3934 "Gmsh.y" +#line 3946 "Gmsh.y" { ;} break; case 313: -#line 3940 "Gmsh.y" +#line 3952 "Gmsh.y" { int n = (int)fabs((yyvsp[(3) - (5)].d)); if(n){ // we accept n==0 to easily disable layers @@ -9950,7 +9962,7 @@ yyreduce: break; case 314: -#line 3952 "Gmsh.y" +#line 3964 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -9973,7 +9985,7 @@ yyreduce: break; case 315: -#line 3972 "Gmsh.y" +#line 3984 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); extr.mesh.ExtrudeMesh = true; @@ -9999,42 +10011,42 @@ yyreduce: break; case 316: -#line 3996 "Gmsh.y" +#line 4008 "Gmsh.y" { extr.mesh.ScaleLast = true; ;} break; case 317: -#line 4000 "Gmsh.y" +#line 4012 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; case 318: -#line 4004 "Gmsh.y" +#line 4016 "Gmsh.y" { extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false; ;} break; case 319: -#line 4008 "Gmsh.y" +#line 4020 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 320: -#line 4012 "Gmsh.y" +#line 4024 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 321: -#line 4016 "Gmsh.y" +#line 4028 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, " "which has no requirement for the number of extrusion layers and meshes " @@ -10043,7 +10055,7 @@ yyreduce: break; case 322: -#line 4022 "Gmsh.y" +#line 4034 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, " "which has no requirement for the number of extrusion layers and meshes " @@ -10052,35 +10064,35 @@ yyreduce: break; case 323: -#line 4028 "Gmsh.y" +#line 4040 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1; ;} break; case 324: -#line 4032 "Gmsh.y" +#line 4044 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB; ;} break; case 325: -#line 4036 "Gmsh.y" +#line 4048 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1; ;} break; case 326: -#line 4040 "Gmsh.y" +#line 4052 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB; ;} break; case 327: -#line 4044 "Gmsh.y" +#line 4056 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); if(FindSurface(num)){ @@ -10102,7 +10114,7 @@ yyreduce: break; case 328: -#line 4063 "Gmsh.y" +#line 4075 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -10113,14 +10125,14 @@ yyreduce: break; case 329: -#line 4075 "Gmsh.y" +#line 4087 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; case 330: -#line 4079 "Gmsh.y" +#line 4091 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -10136,14 +10148,14 @@ yyreduce: break; case 331: -#line 4094 "Gmsh.y" +#line 4106 "Gmsh.y" { (yyval.i) = -1; // left ;} break; case 332: -#line 4098 "Gmsh.y" +#line 4110 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -10160,49 +10172,49 @@ yyreduce: break; case 333: -#line 4114 "Gmsh.y" +#line 4126 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 334: -#line 4118 "Gmsh.y" +#line 4130 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 335: -#line 4123 "Gmsh.y" +#line 4135 "Gmsh.y" { (yyval.i) = 45; ;} break; case 336: -#line 4127 "Gmsh.y" +#line 4139 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 337: -#line 4133 "Gmsh.y" +#line 4145 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 338: -#line 4137 "Gmsh.y" +#line 4149 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 339: -#line 4144 "Gmsh.y" +#line 4156 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; double coef = fabs((yyvsp[(6) - (7)].v)[1]); @@ -10261,7 +10273,7 @@ yyreduce: break; case 340: -#line 4200 "Gmsh.y" +#line 4212 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); if(k != 0 && k != 3 && k != 4){ @@ -10334,7 +10346,7 @@ yyreduce: break; case 341: -#line 4270 "Gmsh.y" +#line 4282 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); @@ -10342,7 +10354,7 @@ yyreduce: break; case 342: -#line 4275 "Gmsh.y" +#line 4287 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); if(k != 0 && k != 6 && k != 8){ @@ -10412,7 +10424,7 @@ yyreduce: break; case 343: -#line 4342 "Gmsh.y" +#line 4354 "Gmsh.y" { if(!(yyvsp[(2) - (3)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -10451,7 +10463,7 @@ yyreduce: break; case 344: -#line 4378 "Gmsh.y" +#line 4390 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){ double d; @@ -10462,7 +10474,7 @@ yyreduce: break; case 345: -#line 4386 "Gmsh.y" +#line 4398 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -10508,7 +10520,7 @@ yyreduce: break; case 346: -#line 4429 "Gmsh.y" +#line 4441 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -10550,7 +10562,7 @@ yyreduce: break; case 347: -#line 4468 "Gmsh.y" +#line 4480 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -10573,7 +10585,7 @@ yyreduce: break; case 348: -#line 4489 "Gmsh.y" +#line 4501 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master lines (%d) different from number of " @@ -10607,7 +10619,7 @@ yyreduce: break; case 349: -#line 4521 "Gmsh.y" +#line 4533 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -10636,7 +10648,7 @@ yyreduce: break; case 350: -#line 4548 "Gmsh.y" +#line 4560 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -10664,7 +10676,7 @@ yyreduce: break; case 351: -#line 4574 "Gmsh.y" +#line 4586 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -10692,7 +10704,7 @@ yyreduce: break; case 352: -#line 4600 "Gmsh.y" +#line 4612 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -10720,7 +10732,7 @@ yyreduce: break; case 353: -#line 4626 "Gmsh.y" +#line 4638 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -10748,7 +10760,7 @@ yyreduce: break; case 354: -#line 4652 "Gmsh.y" +#line 4664 "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 " @@ -10772,7 +10784,7 @@ yyreduce: break; case 355: -#line 4673 "Gmsh.y" +#line 4685 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -10803,7 +10815,7 @@ yyreduce: break; case 356: -#line 4701 "Gmsh.y" +#line 4713 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -10834,7 +10846,7 @@ yyreduce: break; case 357: -#line 4729 "Gmsh.y" +#line 4741 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -10865,7 +10877,7 @@ yyreduce: break; case 358: -#line 4757 "Gmsh.y" +#line 4769 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -10896,7 +10908,7 @@ yyreduce: break; case 359: -#line 4785 "Gmsh.y" +#line 4797 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -10927,7 +10939,7 @@ yyreduce: break; case 360: -#line 4813 "Gmsh.y" +#line 4825 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -10969,7 +10981,7 @@ yyreduce: break; case 361: -#line 4852 "Gmsh.y" +#line 4864 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves); @@ -11011,7 +11023,7 @@ yyreduce: break; case 362: -#line 4891 "Gmsh.y" +#line 4903 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::viter it = GModel::current()->firstVertex(); @@ -11035,7 +11047,7 @@ yyreduce: break; case 363: -#line 4912 "Gmsh.y" +#line 4924 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::eiter it = GModel::current()->firstEdge(); @@ -11059,7 +11071,7 @@ yyreduce: break; case 364: -#line 4933 "Gmsh.y" +#line 4945 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::fiter it = GModel::current()->firstFace(); @@ -11083,14 +11095,14 @@ yyreduce: break; case 365: -#line 4960 "Gmsh.y" +#line 4972 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; case 366: -#line 4964 "Gmsh.y" +#line 4976 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -11103,7 +11115,7 @@ yyreduce: break; case 367: -#line 4974 "Gmsh.y" +#line 4986 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){ double d; @@ -11136,22 +11148,22 @@ yyreduce: break; case 368: -#line 5008 "Gmsh.y" +#line 5020 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; case 369: -#line 5009 "Gmsh.y" +#line 5021 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; case 370: -#line 5010 "Gmsh.y" +#line 5022 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; case 371: -#line 5015 "Gmsh.y" +#line 5027 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -11160,7 +11172,7 @@ yyreduce: break; case 372: -#line 5021 "Gmsh.y" +#line 5033 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -11175,7 +11187,7 @@ yyreduce: break; case 373: -#line 5033 "Gmsh.y" +#line 5045 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -11196,7 +11208,7 @@ yyreduce: break; case 374: -#line 5051 "Gmsh.y" +#line 5063 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -11222,47 +11234,47 @@ yyreduce: break; case 375: -#line 5078 "Gmsh.y" +#line 5090 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 376: -#line 5079 "Gmsh.y" +#line 5091 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 377: -#line 5080 "Gmsh.y" +#line 5092 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 378: -#line 5081 "Gmsh.y" +#line 5093 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 379: -#line 5082 "Gmsh.y" +#line 5094 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 380: -#line 5083 "Gmsh.y" +#line 5095 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 381: -#line 5084 "Gmsh.y" +#line 5096 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 382: -#line 5085 "Gmsh.y" +#line 5097 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 383: -#line 5087 "Gmsh.y" +#line 5099 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -11272,232 +11284,232 @@ yyreduce: break; case 384: -#line 5093 "Gmsh.y" +#line 5105 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 385: -#line 5094 "Gmsh.y" +#line 5106 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 386: -#line 5095 "Gmsh.y" +#line 5107 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 387: -#line 5096 "Gmsh.y" +#line 5108 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 388: -#line 5097 "Gmsh.y" +#line 5109 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 389: -#line 5098 "Gmsh.y" +#line 5110 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 390: -#line 5099 "Gmsh.y" +#line 5111 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 391: -#line 5100 "Gmsh.y" +#line 5112 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 392: -#line 5101 "Gmsh.y" +#line 5113 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 393: -#line 5102 "Gmsh.y" +#line 5114 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 394: -#line 5103 "Gmsh.y" +#line 5115 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 395: -#line 5104 "Gmsh.y" +#line 5116 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 396: -#line 5105 "Gmsh.y" +#line 5117 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 397: -#line 5106 "Gmsh.y" +#line 5118 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 398: -#line 5107 "Gmsh.y" +#line 5119 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 399: -#line 5108 "Gmsh.y" +#line 5120 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 400: -#line 5109 "Gmsh.y" +#line 5121 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 401: -#line 5110 "Gmsh.y" +#line 5122 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 402: -#line 5111 "Gmsh.y" +#line 5123 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 403: -#line 5112 "Gmsh.y" +#line 5124 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 404: -#line 5113 "Gmsh.y" +#line 5125 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 405: -#line 5114 "Gmsh.y" +#line 5126 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 406: -#line 5115 "Gmsh.y" +#line 5127 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 407: -#line 5116 "Gmsh.y" +#line 5128 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 408: -#line 5117 "Gmsh.y" +#line 5129 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 409: -#line 5118 "Gmsh.y" +#line 5130 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 410: -#line 5119 "Gmsh.y" +#line 5131 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 411: -#line 5120 "Gmsh.y" +#line 5132 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 412: -#line 5121 "Gmsh.y" +#line 5133 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 413: -#line 5122 "Gmsh.y" +#line 5134 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 414: -#line 5123 "Gmsh.y" +#line 5135 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 415: -#line 5124 "Gmsh.y" +#line 5136 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 416: -#line 5125 "Gmsh.y" +#line 5137 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 417: -#line 5134 "Gmsh.y" +#line 5146 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 418: -#line 5135 "Gmsh.y" +#line 5147 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 419: -#line 5136 "Gmsh.y" +#line 5148 "Gmsh.y" { (yyval.d) = (double)ImbricatedTest; ;} break; case 420: -#line 5137 "Gmsh.y" +#line 5149 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 421: -#line 5138 "Gmsh.y" +#line 5150 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 422: -#line 5139 "Gmsh.y" +#line 5151 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 423: -#line 5140 "Gmsh.y" +#line 5152 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 424: -#line 5141 "Gmsh.y" +#line 5153 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 425: -#line 5142 "Gmsh.y" +#line 5154 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; case 426: -#line 5143 "Gmsh.y" +#line 5155 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; case 427: -#line 5144 "Gmsh.y" +#line 5156 "Gmsh.y" { (yyval.d) = TotalRam(); ;} break; case 428: -#line 5149 "Gmsh.y" +#line 5161 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 429: -#line 5151 "Gmsh.y" +#line 5163 "Gmsh.y" { std::vector<double> val(1, (yyvsp[(3) - (6)].d)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -11506,7 +11518,7 @@ yyreduce: break; case 430: -#line 5157 "Gmsh.y" +#line 5169 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -11514,7 +11526,7 @@ yyreduce: break; case 431: -#line 5162 "Gmsh.y" +#line 5174 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -11522,7 +11534,7 @@ yyreduce: break; case 432: -#line 5167 "Gmsh.y" +#line 5179 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -11542,7 +11554,7 @@ yyreduce: break; case 433: -#line 5184 "Gmsh.y" +#line 5196 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -11563,7 +11575,7 @@ yyreduce: break; case 434: -#line 5202 "Gmsh.y" +#line 5214 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -11584,7 +11596,7 @@ yyreduce: break; case 435: -#line 5220 "Gmsh.y" +#line 5232 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -11605,7 +11617,7 @@ yyreduce: break; case 436: -#line 5238 "Gmsh.y" +#line 5250 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -11626,7 +11638,7 @@ yyreduce: break; case 437: -#line 5256 "Gmsh.y" +#line 5268 "Gmsh.y" { (yyval.d) = gmsh_yysymbols.count((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -11634,7 +11646,7 @@ yyreduce: break; case 438: -#line 5261 "Gmsh.y" +#line 5273 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.d) = !StatFile(tmp); @@ -11643,7 +11655,7 @@ yyreduce: break; case 439: -#line 5267 "Gmsh.y" +#line 5279 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]); @@ -11661,7 +11673,7 @@ yyreduce: break; case 440: -#line 5282 "Gmsh.y" +#line 5294 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -11683,7 +11695,7 @@ yyreduce: break; case 441: -#line 5301 "Gmsh.y" +#line 5313 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11706,7 +11718,7 @@ yyreduce: break; case 442: -#line 5321 "Gmsh.y" +#line 5333 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11729,7 +11741,7 @@ yyreduce: break; case 443: -#line 5341 "Gmsh.y" +#line 5353 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11752,7 +11764,7 @@ yyreduce: break; case 444: -#line 5361 "Gmsh.y" +#line 5373 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11775,7 +11787,7 @@ yyreduce: break; case 445: -#line 5384 "Gmsh.y" +#line 5396 "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)); @@ -11783,7 +11795,7 @@ yyreduce: break; case 446: -#line 5389 "Gmsh.y" +#line 5401 "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)); @@ -11791,7 +11803,7 @@ yyreduce: break; case 447: -#line 5394 "Gmsh.y" +#line 5406 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -11804,7 +11816,7 @@ yyreduce: break; case 448: -#line 5404 "Gmsh.y" +#line 5416 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -11817,7 +11829,7 @@ yyreduce: break; case 449: -#line 5414 "Gmsh.y" +#line 5426 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -11825,7 +11837,7 @@ yyreduce: break; case 450: -#line 5419 "Gmsh.y" +#line 5431 "Gmsh.y" { int matches = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -11839,7 +11851,7 @@ yyreduce: break; case 451: -#line 5430 "Gmsh.y" +#line 5442 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -11851,7 +11863,7 @@ yyreduce: break; case 452: -#line 5439 "Gmsh.y" +#line 5451 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); @@ -11859,7 +11871,7 @@ yyreduce: break; case 453: -#line 5444 "Gmsh.y" +#line 5456 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -11886,70 +11898,70 @@ yyreduce: break; case 454: -#line 5471 "Gmsh.y" +#line 5483 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 455: -#line 5475 "Gmsh.y" +#line 5487 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 456: -#line 5479 "Gmsh.y" +#line 5491 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 457: -#line 5483 "Gmsh.y" +#line 5495 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 458: -#line 5487 "Gmsh.y" +#line 5499 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 459: -#line 5494 "Gmsh.y" +#line 5506 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; case 460: -#line 5498 "Gmsh.y" +#line 5510 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; case 461: -#line 5502 "Gmsh.y" +#line 5514 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 462: -#line 5506 "Gmsh.y" +#line 5518 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 463: -#line 5513 "Gmsh.y" +#line 5525 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -11957,14 +11969,14 @@ yyreduce: break; case 464: -#line 5518 "Gmsh.y" +#line 5530 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 465: -#line 5525 "Gmsh.y" +#line 5537 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -11972,14 +11984,14 @@ yyreduce: break; case 466: -#line 5530 "Gmsh.y" +#line 5542 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 467: -#line 5534 "Gmsh.y" +#line 5546 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -11987,14 +11999,14 @@ yyreduce: break; case 468: -#line 5539 "Gmsh.y" +#line 5551 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 469: -#line 5543 "Gmsh.y" +#line 5555 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12005,7 +12017,7 @@ yyreduce: break; case 470: -#line 5551 "Gmsh.y" +#line 5563 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12016,14 +12028,14 @@ yyreduce: break; case 471: -#line 5562 "Gmsh.y" +#line 5574 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 472: -#line 5566 "Gmsh.y" +#line 5578 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -12035,7 +12047,7 @@ yyreduce: break; case 473: -#line 5578 "Gmsh.y" +#line 5590 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12046,7 +12058,7 @@ yyreduce: break; case 474: -#line 5586 "Gmsh.y" +#line 5598 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12057,7 +12069,7 @@ yyreduce: break; case 475: -#line 5594 "Gmsh.y" +#line 5606 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -12067,7 +12079,7 @@ yyreduce: break; case 476: -#line 5601 "Gmsh.y" +#line 5613 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -12080,7 +12092,7 @@ yyreduce: break; case 477: -#line 5611 "Gmsh.y" +#line 5623 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -12112,63 +12124,63 @@ yyreduce: break; case 478: -#line 5640 "Gmsh.y" +#line 5652 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(0); ;} break; case 479: -#line 5644 "Gmsh.y" +#line 5656 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(1); ;} break; case 480: -#line 5648 "Gmsh.y" +#line 5660 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(2); ;} break; case 481: -#line 5652 "Gmsh.y" +#line 5664 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(3); ;} break; case 482: -#line 5656 "Gmsh.y" +#line 5668 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(0); ;} break; case 483: -#line 5660 "Gmsh.y" +#line 5672 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(1); ;} break; case 484: -#line 5664 "Gmsh.y" +#line 5676 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(2); ;} break; case 485: -#line 5668 "Gmsh.y" +#line 5680 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(3); ;} break; case 486: -#line 5672 "Gmsh.y" +#line 5684 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12200,7 +12212,7 @@ yyreduce: break; case 487: -#line 5701 "Gmsh.y" +#line 5713 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12232,7 +12244,7 @@ yyreduce: break; case 488: -#line 5730 "Gmsh.y" +#line 5742 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12264,7 +12276,7 @@ yyreduce: break; case 489: -#line 5759 "Gmsh.y" +#line 5771 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -12296,7 +12308,7 @@ yyreduce: break; case 490: -#line 5789 "Gmsh.y" +#line 5801 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -12311,7 +12323,7 @@ yyreduce: break; case 491: -#line 5802 "Gmsh.y" +#line 5814 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -12326,7 +12338,7 @@ yyreduce: break; case 492: -#line 5815 "Gmsh.y" +#line 5827 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -12341,7 +12353,7 @@ yyreduce: break; case 493: -#line 5828 "Gmsh.y" +#line 5840 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); GModel::current()->importGEOInternals(); @@ -12356,7 +12368,7 @@ yyreduce: break; case 494: -#line 5840 "Gmsh.y" +#line 5852 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -12369,7 +12381,7 @@ yyreduce: break; case 495: -#line 5850 "Gmsh.y" +#line 5862 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -12382,7 +12394,7 @@ yyreduce: break; case 496: -#line 5860 "Gmsh.y" +#line 5872 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -12397,7 +12409,7 @@ yyreduce: break; case 497: -#line 5872 "Gmsh.y" +#line 5884 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -12412,7 +12424,7 @@ yyreduce: break; case 498: -#line 5885 "Gmsh.y" +#line 5897 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -12427,35 +12439,35 @@ yyreduce: break; case 499: -#line 5897 "Gmsh.y" +#line 5909 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 500: -#line 5901 "Gmsh.y" +#line 5913 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 501: -#line 5905 "Gmsh.y" +#line 5917 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 502: -#line 5909 "Gmsh.y" +#line 5921 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 503: -#line 5913 "Gmsh.y" +#line 5925 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -12476,7 +12488,7 @@ yyreduce: break; case 504: -#line 5931 "Gmsh.y" +#line 5943 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -12497,7 +12509,7 @@ yyreduce: break; case 505: -#line 5952 "Gmsh.y" +#line 5964 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -12505,21 +12517,21 @@ yyreduce: break; case 506: -#line 5957 "Gmsh.y" +#line 5969 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 507: -#line 5961 "Gmsh.y" +#line 5973 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 508: -#line 5965 "Gmsh.y" +#line 5977 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -12531,21 +12543,21 @@ yyreduce: break; case 509: -#line 5977 "Gmsh.y" +#line 5989 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; case 510: -#line 5981 "Gmsh.y" +#line 5993 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; case 511: -#line 5993 "Gmsh.y" +#line 6005 "Gmsh.y" { int flag = 0; if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ @@ -12565,7 +12577,7 @@ yyreduce: break; case 512: -#line 6010 "Gmsh.y" +#line 6022 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -12575,14 +12587,14 @@ yyreduce: break; case 513: -#line 6020 "Gmsh.y" +#line 6032 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 514: -#line 6024 "Gmsh.y" +#line 6036 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -12597,7 +12609,7 @@ yyreduce: break; case 515: -#line 6039 "Gmsh.y" +#line 6051 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -12605,21 +12617,21 @@ yyreduce: break; case 516: -#line 6044 "Gmsh.y" +#line 6056 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 517: -#line 6051 "Gmsh.y" +#line 6063 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 518: -#line 6055 "Gmsh.y" +#line 6067 "Gmsh.y" { std::string val; if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))) @@ -12635,7 +12647,7 @@ yyreduce: break; case 519: -#line 6068 "Gmsh.y" +#line 6080 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12652,7 +12664,7 @@ yyreduce: break; case 520: -#line 6082 "Gmsh.y" +#line 6094 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12669,7 +12681,7 @@ yyreduce: break; case 521: -#line 6096 "Gmsh.y" +#line 6108 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12686,7 +12698,7 @@ yyreduce: break; case 522: -#line 6110 "Gmsh.y" +#line 6122 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12703,7 +12715,7 @@ yyreduce: break; case 523: -#line 6124 "Gmsh.y" +#line 6136 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -12714,7 +12726,7 @@ yyreduce: break; case 524: -#line 6132 "Gmsh.y" +#line 6144 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -12725,21 +12737,21 @@ yyreduce: break; case 525: -#line 6143 "Gmsh.y" +#line 6155 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 526: -#line 6147 "Gmsh.y" +#line 6159 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 527: -#line 6151 "Gmsh.y" +#line 6163 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -12750,7 +12762,7 @@ yyreduce: break; case 528: -#line 6159 "Gmsh.y" +#line 6171 "Gmsh.y" { std::string exe = Msg::GetExecutableName(); (yyval.c) = (char *)Malloc(exe.size() + 1); @@ -12759,7 +12771,7 @@ yyreduce: break; case 529: -#line 6165 "Gmsh.y" +#line 6177 "Gmsh.y" { std::string action = Msg::GetOnelabAction(); (yyval.c) = (char *)Malloc(action.size() + 1); @@ -12768,7 +12780,7 @@ yyreduce: break; case 530: -#line 6171 "Gmsh.y" +#line 6183 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -12779,7 +12791,7 @@ yyreduce: break; case 531: -#line 6179 "Gmsh.y" +#line 6191 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12790,7 +12802,7 @@ yyreduce: break; case 532: -#line 6187 "Gmsh.y" +#line 6199 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12800,7 +12812,7 @@ yyreduce: break; case 533: -#line 6194 "Gmsh.y" +#line 6206 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12811,7 +12823,7 @@ yyreduce: break; case 534: -#line 6202 "Gmsh.y" +#line 6214 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -12829,7 +12841,7 @@ yyreduce: break; case 535: -#line 6217 "Gmsh.y" +#line 6229 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -12846,7 +12858,7 @@ yyreduce: break; case 536: -#line 6231 "Gmsh.y" +#line 6243 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -12863,7 +12875,7 @@ yyreduce: break; case 537: -#line 6245 "Gmsh.y" +#line 6257 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -12878,7 +12890,7 @@ yyreduce: break; case 538: -#line 6257 "Gmsh.y" +#line 6269 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -12897,7 +12909,7 @@ yyreduce: break; case 539: -#line 6273 "Gmsh.y" +#line 6285 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -12909,7 +12921,7 @@ yyreduce: break; case 540: -#line 6282 "Gmsh.y" +#line 6294 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -12921,7 +12933,7 @@ yyreduce: break; case 541: -#line 6291 "Gmsh.y" +#line 6303 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -12934,7 +12946,7 @@ yyreduce: break; case 542: -#line 6301 "Gmsh.y" +#line 6313 "Gmsh.y" { if((yyvsp[(3) - (8)].d)){ (yyval.c) = (yyvsp[(5) - (8)].c); @@ -12948,14 +12960,14 @@ yyreduce: break; case 543: -#line 6312 "Gmsh.y" +#line 6324 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 544: -#line 6316 "Gmsh.y" +#line 6328 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -12977,7 +12989,7 @@ yyreduce: break; case 545: -#line 6335 "Gmsh.y" +#line 6347 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -12987,7 +12999,7 @@ yyreduce: break; case 546: -#line 6342 "Gmsh.y" +#line 6354 "Gmsh.y" { std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -12996,7 +13008,7 @@ yyreduce: break; case 547: -#line 6348 "Gmsh.y" +#line 6360 "Gmsh.y" { std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13006,7 +13018,7 @@ yyreduce: break; case 548: -#line 6355 "Gmsh.y" +#line 6367 "Gmsh.y" { std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13016,12 +13028,12 @@ yyreduce: break; case 549: -#line 6362 "Gmsh.y" +#line 6374 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 550: -#line 6364 "Gmsh.y" +#line 6376 "Gmsh.y" { std::string val((yyvsp[(3) - (6)].c)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -13032,7 +13044,7 @@ yyreduce: break; case 551: -#line 6375 "Gmsh.y" +#line 6387 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); @@ -13040,12 +13052,12 @@ yyreduce: break; case 552: -#line 6380 "Gmsh.y" +#line 6392 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; case 553: -#line 6386 "Gmsh.y" +#line 6398 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13056,7 +13068,7 @@ yyreduce: break; case 554: -#line 6395 "Gmsh.y" +#line 6407 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13067,23 +13079,23 @@ yyreduce: break; case 555: -#line 6408 "Gmsh.y" +#line 6420 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 556: -#line 6411 "Gmsh.y" +#line 6423 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 557: -#line 6415 "Gmsh.y" +#line 6427 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 13087 "Gmsh.tab.cpp" +#line 13099 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -13297,7 +13309,7 @@ yyreturn: } -#line 6418 "Gmsh.y" +#line 6430 "Gmsh.y" void assignVariable(const std::string &name, int index, int assignType, diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 7c829701a00ef1091d682a6b722af2455ba8fcbc..250d4cd3f0fc6b371f02bca57d08ac824cbe5106 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1291,14 +1291,26 @@ Affectation : if(field){ FieldOption *option = field->options[$6]; if(option){ - std::list<int> vl = option->list(); - vl.clear(); - for(int i = 0; i < List_Nbr($9); i++){ - double id; - List_Read($9, i, &id); - vl.push_back((int)id); + if (option->getType() == FIELD_OPTION_LIST) { + std::list<int> vl = option->list(); + vl.clear(); + for(int i = 0; i < List_Nbr($9); i++){ + double id; + List_Read($9, i, &id); + vl.push_back((int)id); + } + option->list(vl); + } + else { + std::list<double> vl = option->listdouble(); + vl.clear(); + for(int i = 0; i < List_Nbr($9); i++){ + double id; + List_Read($9, i, &id); + vl.push_back(id); + } + option->listdouble(vl); } - option->list(vl); } else yymsg(0, "Unknown option '%s' in field %i of type '%s'", diff --git a/benchmarks/2d/BL3.geo b/benchmarks/2d/BL3.geo index 71c6a54732ef134310f3192cbb0948bff2bb1721..d145eceb2df52586f2673f09900d9a904accb0c1 100644 --- a/benchmarks/2d/BL3.geo +++ b/benchmarks/2d/BL3.geo @@ -1,6 +1,6 @@ -Mesh.CharacteristicLengthExtendFromBoundary = 0; -Mesh.CharacteristicLengthMin = 0.1; -Mesh.CharacteristicLengthMax = 0.1; +//Mesh.CharacteristicLengthExtendFromBoundary = 0; +//Mesh.CharacteristicLengthMin = 0.1; +//Mesh.CharacteristicLengthMax = 0.1; //+ Point(1) = {-1.7, -0.3, 0, .1}; //+ @@ -60,7 +60,7 @@ Field[1].hwall_n = 0.001; //+ Field[1].ratio = 1.4; //+ -Field[1].thickness = 0.38; +Field[1].thickness = .15; BoundaryLayer Field = 1; //+ Line Loop(7) = {1, 2, 3, 4};