diff --git a/Common/Makefile b/Common/Makefile index 4fae7e3e30b964ba60b9426308b6fbb53da4ab32..0047c00d092f3298471428470ffbbef3c932d8e4 100644 --- a/Common/Makefile +++ b/Common/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.123 2007-02-02 23:50:33 geuzaine Exp $ +# $Id: Makefile,v 1.124 2007-02-26 08:25:36 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -38,7 +38,7 @@ SRC = Context.cpp\ Visibility.cpp\ Trackball.cpp\ VertexArray.cpp\ - SmoothNormals.cpp\ + SmoothData.cpp\ License.cpp OBJ = ${SRC:.cpp=.o} @@ -68,33 +68,33 @@ Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Context.h \ DefaultOptions.h GmshDefines.h Options.h Views.h ColorTable.h \ - VertexArray.h SmoothNormals.h AdaptiveViews.h GmshMatrix.h Trackball.h + VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Trackball.h AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \ GmshMatrix.h ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h OS.h + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h OS.h Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Numeric/Numeric.h Views.h ColorTable.h \ - VertexArray.h SmoothNormals.h AdaptiveViews.h GmshMatrix.h Context.h \ + VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Context.h \ Options.h ViewsIO.o: ViewsIO.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Views.h \ - ColorTable.h VertexArray.h SmoothNormals.h AdaptiveViews.h GmshMatrix.h \ + ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h \ Context.h Octree.o: Octree.cpp Octree.h OctreeInternals.h OctreeInternals.o: OctreeInternals.cpp Message.h OctreeInternals.h OctreePost.o: OctreePost.cpp Octree.h OctreeInternals.h OctreePost.h \ - ../DataStr/List.h Views.h ColorTable.h VertexArray.h SmoothNormals.h \ + ../DataStr/List.h Views.h ColorTable.h VertexArray.h SmoothData.h \ ../Numeric/Numeric.h AdaptiveViews.h GmshMatrix.h Message.h \ ShapeFunctions.h Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h GmshUI.h GmshDefines.h \ ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Mesh/Generator.h \ Context.h Options.h ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h \ ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \ @@ -108,8 +108,8 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/ExtrudeParams.h Views.h ColorTable.h \ - VertexArray.h SmoothNormals.h AdaptiveViews.h GmshMatrix.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h Views.h \ + ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h \ ../Parser/OpenFile.h ../Parser/CreateFile.h ../Parser/Parser.h \ ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/MVertex.h \ @@ -122,7 +122,7 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/SBoundingBox3d.h ../Common/SmoothNormals.h OS.h + ../Geo/SBoundingBox3d.h OS.h OS.o: OS.cpp Message.h ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ @@ -137,20 +137,20 @@ Visibility.o: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \ - ../Geo/GRegion.h ../Geo/SBoundingBox3d.h ../Common/SmoothNormals.h \ - ../Parser/Parser.h ../DataStr/Tree.h ../DataStr/avl.h + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \ + ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ + ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ + ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \ + ../Geo/SBoundingBox3d.h ../Parser/Parser.h ../DataStr/Tree.h \ + ../DataStr/avl.h Trackball.o: Trackball.cpp Trackball.h VertexArray.o: VertexArray.cpp VertexArray.h Context.h ../DataStr/List.h \ ../Numeric/Numeric.h -SmoothNormals.o: SmoothNormals.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ +SmoothData.o: SmoothData.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ - ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h \ - SmoothNormals.h + ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h SmoothData.h License.o: License.cpp Gmsh.h Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h diff --git a/Common/SmoothNormals.cpp b/Common/SmoothData.cpp similarity index 60% rename from Common/SmoothNormals.cpp rename to Common/SmoothData.cpp index 987c8f472e09a67252af26fb45a464b4b7f8febd..3d9111532cd0eb9c9703f24ec87c5b438a22371e 100644 --- a/Common/SmoothNormals.cpp +++ b/Common/SmoothData.cpp @@ -1,4 +1,4 @@ -// $Id: SmoothNormals.cpp,v 1.8 2006-11-27 22:22:08 geuzaine Exp $ +// $Id: SmoothData.cpp,v 1.1 2007-02-26 08:25:36 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -21,7 +21,89 @@ #include "Gmsh.h" #include "Numeric.h" -#include "SmoothNormals.h" +#include "SmoothData.h" + +// Basic coordinate-based floting point value averager + +double xyzv::eps = 1.e-12; + +xyzv::xyzv(const xyzv &other) +{ + x = other.x; + y = other.y; + z = other.z; + nbvals = other.nbvals; + nboccurences = other.nboccurences; + if(other.vals && other.nbvals) { + vals = new double[other.nbvals]; + for(int i = 0; i < nbvals; i++) + vals[i] = other.vals[i]; + } +} + +xyzv &xyzv::operator = (const xyzv &other) +{ + if(this != &other) { + x = other.x; + y = other.y; + z = other.z; + nbvals = other.nbvals; + nboccurences = other.nboccurences; + if(other.vals && other.nbvals) { + vals = new double[other.nbvals]; + for(int i = 0; i < nbvals; i++) + vals[i] = other.vals[i]; + } + } + return *this; +} + +void xyzv::update(int n, double *v) +{ + if(!vals) { + vals = new double[n]; + for(int i = 0; i < n; i++) + vals[i] = 0.0; + nbvals = n; + nboccurences = 0; + } + else if(nbvals != n) { + throw n; + } + double x1 = (double)(nboccurences) / (double)(nboccurences + 1); + double x2 = 1. / (double)(nboccurences + 1); + for(int i = 0; i < nbvals; i++) + vals[i] = (x1 * vals[i] + x2 * v[i]); + nboccurences++; +} + +void smooth_data::add(double x, double y, double z, int n, double *vals) +{ + xyzv xyz(x, y, z); + std::set<xyzv, lessthanxyzv>::const_iterator it = c.find(xyz); + if(it == c.end()) { + xyz.update(n, vals); + c.insert(xyz); + } + else { + // we can do this because we know that it will not destroy the set + // ordering + xyzv *p = (xyzv *) & (*it); + p->update(n, vals); + } +} + +bool smooth_data::get(double x, double y, double z, int n, double *vals) +{ + std::set<xyzv, lessthanxyzv>::const_iterator it = c.find(xyzv(x, y, z)); + if(it == c.end()) + return false; + for(int k = 0; k < n; k++) + vals[k] = (*it).vals[k]; + return true; +} + +// Normal smoother float xyzn::eps = 1.e-6; @@ -81,19 +163,16 @@ void smooth_normals::add(double x, double y, double z, double nx, double ny, double nz) { xyzn xyz(x, y, z); - std::set<xyzn, lessthanxyzn>::const_iterator it = c.find(xyz); if(it == c.end()) { - xyz.update(float2char(nx), - float2char(ny), - float2char(nz), tol); + xyz.update(float2char(nx), float2char(ny), float2char(nz), tol); c.insert(xyz); } else { + // we can do this because we know that it will not destroy the set + // ordering xyzn *p = (xyzn *) & (*it); - p->update(float2char(nx), - float2char(ny), - float2char(nz), tol); + p->update(float2char(nx), float2char(ny), float2char(nz), tol); } } diff --git a/Common/SmoothNormals.h b/Common/SmoothData.h similarity index 58% rename from Common/SmoothNormals.h rename to Common/SmoothData.h index 671c0148e04022ba41e701013e395f4bf3315ec2..446eff2c794694367f698b2f947bb78536f10f93 100644 --- a/Common/SmoothNormals.h +++ b/Common/SmoothData.h @@ -1,5 +1,5 @@ -#ifndef _SMOOTH_NORMALS_H_ -#define _SMOOTH_NORMALS_H_ +#ifndef _SMOOTH_DATA_H_ +#define _SMOOTH_DATA_H_ // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -24,6 +24,52 @@ #include <vector> #include "Numeric.h" +// Basic coordinate-based floating point data averager + +struct xyzv { + double x, y, z, *vals; + int nbvals; + int nboccurences; + static double eps; + xyzv(double xx, double yy, double zz) + : x(xx), y(yy), z(zz), vals(0), nbvals(0), nboccurences(0) {} + ~xyzv(){ if(vals) delete [] vals; } + // these are needed for set<> operations since the default copy + // constructor won't allocate *vals + xyzv(const xyzv & other); + xyzv & operator = (const xyzv &other); + void update(int n, double *v); +}; + +struct lessthanxyzv { + bool operator () (const xyzv &p2, const xyzv &p1) const + { + if(p1.x - p2.x > xyzv::eps) + return true; + if(p1.x - p2.x < -xyzv::eps) + return false; + if(p1.y - p2.y > xyzv::eps) + return true; + if(p1.y - p2.y < -xyzv::eps) + return false; + if(p1.z - p2.z > xyzv::eps) + return true; + return false; + } +}; + +class smooth_data{ + private: + std::set<xyzv, lessthanxyzv> c; + public: + smooth_data() {} + void add(double x, double y, double z, int n, double *vals); + bool get(double x, double y, double z, int n, double *vals); +}; + +// Normal smoother with threshold (saves memory by storing normals as +// chars and coordinates as floats) + struct nnb { char nx, ny, nz; @@ -43,7 +89,7 @@ struct xyzn struct lessthanxyzn { - bool operator () (const xyzn & p2, const xyzn & p1)const + bool operator () (const xyzn &p2, const xyzn &p1) const { if(p1.x - p2.x > xyzn::eps) return true; diff --git a/Common/Views.cpp b/Common/Views.cpp index 2aae9d5448c8b1f4a70c8824d1e9a414eed7e17e..9eb9ec1b3b7434005574bc1071f13c49527e47fe 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.193 2007-01-28 13:56:19 geuzaine Exp $ +// $Id: Views.cpp,v 1.194 2007-02-26 08:25:36 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -29,7 +29,7 @@ #include "Context.h" #include "Options.h" #include "ColorTable.h" -#include "SmoothNormals.h" +#include "SmoothData.h" #if defined(HAVE_MATH_EVAL) #include "matheval.h" @@ -926,126 +926,35 @@ void Post_View::splitCurvedElements() // Smoothing -struct xyzv { - double x, y, z, *vals; - int nbvals; - int nboccurences; - static double eps; - xyzv(double xx, double yy, double zz) - : x(xx), y(yy), z(zz), vals(0), nbvals(0), nboccurences(0) {} - ~xyzv(){ if(vals) delete [] vals; } - // the following two are needed for set<> operations, since the - // default copy ctor won't allocate *vals - xyzv(const xyzv & other) - { - x = other.x; - y = other.y; - z = other.z; - nbvals = other.nbvals; - nboccurences = other.nboccurences; - if(other.vals && other.nbvals) { - vals = new double[other.nbvals]; - for(int i = 0; i < nbvals; i++) - vals[i] = other.vals[i]; - } - } - xyzv & operator =(const xyzv &other) - { - if(this != &other) { - x = other.x; - y = other.y; - z = other.z; - nbvals = other.nbvals; - nboccurences = other.nboccurences; - if(other.vals && other.nbvals) { - vals = new double[other.nbvals]; - for(int i = 0; i < nbvals; i++) - vals[i] = other.vals[i]; - } - } - return *this; - } - void update(int n, double *v) - { - if(!vals) { - vals = new double[n]; - for(int i = 0; i < n; i++) - vals[i] = 0.0; - nbvals = n; - nboccurences = 0; - } - else if(nbvals != n) { - throw n; - } - double x1 = (double)(nboccurences) / (double)(nboccurences + 1); - double x2 = 1. / (double)(nboccurences + 1); - for(int i = 0; i < nbvals; i++) - vals[i] = (x1 * vals[i] + x2 * v[i]); - nboccurences++; - } -}; - -struct lessthanxyzv { - bool operator () (const xyzv & p2, const xyzv & p1)const - { - if(p1.x - p2.x > xyzv::eps) - return true; - if(p1.x - p2.x < -xyzv::eps) - return false; - if(p1.y - p2.y > xyzv::eps) - return true; - if(p1.y - p2.y < -xyzv::eps) - return false; - if(p1.z - p2.z > xyzv::eps) - return true; - return false; - } -}; - -double xyzv::eps = 1.e-12; -typedef std::set < xyzv, lessthanxyzv > xyzv_cont; -typedef xyzv_cont::const_iterator xyzv_iter; - -void generate_connectivities(List_T * list, int nbList, int nbTimeStep, int nbVert, - xyzv_cont & connectivities) +void generate_connectivities(List_T *list, int nbList, + int nbTimeStep, int nbVert, smooth_data &data) { if(!nbList) return; double *vals = new double[nbTimeStep]; - int nb = List_Nbr(list)/nbList; + int nb = List_Nbr(list) / nbList; for(int i = 0; i < List_Nbr(list); i += nb) { double *x = (double *)List_Pointer_Fast(list, i); double *y = (double *)List_Pointer_Fast(list, i + nbVert); double *z = (double *)List_Pointer_Fast(list, i + 2 * nbVert); double *v = (double *)List_Pointer_Fast(list, i + 3 * nbVert); - for(int j = 0; j < nbVert; j++) { for(int k = 0; k < nbTimeStep; k++) vals[k] = v[j + k * nbVert]; - xyzv xyz(x[j], y[j], z[j]); - xyzv_iter it = connectivities.find(xyz); - if(it == connectivities.end()) { - xyz.update(nbTimeStep, vals); - connectivities.insert(xyz); - } - else { - // a little weird ... because we know that this will not - // destroy the set ordering - xyzv *xx = (xyzv *) & (*it); - xx->update(nbTimeStep, vals); - } + data.add(x[j], y[j], z[j], nbTimeStep, vals); } } - delete[]vals; + delete [] vals; } -void smooth_list(List_T * list, int nbList, +void smooth_list(List_T *list, int nbList, double *min, double *max, double *tsmin, double *tsmax, - int nbTimeStep, int nbVert, xyzv_cont & connectivities) + int nbTimeStep, int nbVert, smooth_data &data) { if(!nbList) return; + double *vals = new double[nbTimeStep]; int nb = List_Nbr(list)/nbList; for(int i = 0; i < List_Nbr(list); i += nb) { double *x = (double *)List_Pointer_Fast(list, i); @@ -1053,33 +962,27 @@ void smooth_list(List_T * list, int nbList, double *z = (double *)List_Pointer_Fast(list, i + 2 * nbVert); double *v = (double *)List_Pointer_Fast(list, i + 3 * nbVert); for(int j = 0; j < nbVert; j++) { - xyzv xyz(x[j], y[j], z[j]); - xyzv_iter it = connectivities.find(xyz); - if(it != connectivities.end()) { - for(int k = 0; k < nbTimeStep; k++) { - double dd = (*it).vals[k]; + if(data.get(x[j], y[j], z[j], nbTimeStep, vals)){ + for(int k = 0; k < nbTimeStep; k++) { + double dd = vals[k]; v[j + k * nbVert] = dd; - if(dd < *min) - *min = dd; - if(dd > *max) - *max = dd; - if(dd < tsmin[k]) - tsmin[k] = dd; - if(dd > tsmax[k]) - tsmax[k] = dd; + if(dd < *min) *min = dd; + if(dd > *max) *max = dd; + if(dd < tsmin[k]) tsmin[k] = dd; + if(dd > tsmax[k]) tsmax[k] = dd; } } } } + delete [] vals; } void Post_View::smooth() { double old_eps = xyzv::eps; xyzv::eps = CTX.lc * 1.e-8; - + if(NbSL || NbST || NbSQ || NbSS || NbSH || NbSI || NbSY) { - xyzv_cont con; Msg(INFO, "Smoothing scalar primitives in View[%d]", Index); Min = VAL_INF; Max = -VAL_INF; @@ -1087,20 +990,21 @@ void Post_View::smooth() TimeStepMin[k] = VAL_INF; TimeStepMax[k] = -VAL_INF; } - generate_connectivities(SL, NbSL, NbTimeStep, 2, con); - generate_connectivities(ST, NbST, NbTimeStep, 3, con); - generate_connectivities(SQ, NbSQ, NbTimeStep, 4, con); - generate_connectivities(SS, NbSS, NbTimeStep, 4, con); - generate_connectivities(SH, NbSH, NbTimeStep, 8, con); - generate_connectivities(SI, NbSI, NbTimeStep, 6, con); - generate_connectivities(SY, NbSY, NbTimeStep, 5, con); - smooth_list(SL, NbSL, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 2, con); - smooth_list(ST, NbST, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 3, con); - smooth_list(SQ, NbSQ, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, con); - smooth_list(SS, NbSS, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, con); - smooth_list(SH, NbSH, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 8, con); - smooth_list(SI, NbSI, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 6, con); - smooth_list(SY, NbSY, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 5, con); + smooth_data data; + generate_connectivities(SL, NbSL, NbTimeStep, 2, data); + generate_connectivities(ST, NbST, NbTimeStep, 3, data); + generate_connectivities(SQ, NbSQ, NbTimeStep, 4, data); + generate_connectivities(SS, NbSS, NbTimeStep, 4, data); + generate_connectivities(SH, NbSH, NbTimeStep, 8, data); + generate_connectivities(SI, NbSI, NbTimeStep, 6, data); + generate_connectivities(SY, NbSY, NbTimeStep, 5, data); + smooth_list(SL, NbSL, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 2, data); + smooth_list(ST, NbST, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 3, data); + smooth_list(SQ, NbSQ, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, data); + smooth_list(SS, NbSS, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, data); + smooth_list(SH, NbSH, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 8, data); + smooth_list(SI, NbSI, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 6, data); + smooth_list(SY, NbSY, &Min, &Max, TimeStepMin, TimeStepMax, NbTimeStep, 5, data); Changed = 1; } diff --git a/Common/Views.h b/Common/Views.h index 9d6a063e4fbcfd8da5b91bad150e9641bf37da1a..ab8fe517b9cbdc8990d664e74c36edaac844ba1e 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -24,7 +24,7 @@ #include "ColorTable.h" #include "List.h" #include "VertexArray.h" -#include "SmoothNormals.h" +#include "SmoothData.h" #include "AdaptiveViews.h" #define VIEW_NB_ELEMENT_TYPES (8*3) diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 97cdf592c0eb27d3f61981bc47b859504dad7ad4..8da066dec001a501de7957075559639d22ca59bc 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.514 2007-02-15 08:26:45 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.515 2007-02-26 08:25:37 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -3864,9 +3864,9 @@ void mesh_inspect_cb(CALLBACK_ARGS) void mesh_degree_cb(CALLBACK_ARGS) { if((long)data == 2) - Degre2(CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete); + Degre2(GMODEL, CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete); else - Degre1(); + Degre1(GMODEL); CTX.mesh.changed = ENT_LINE | ENT_SURFACE | ENT_VOLUME; Draw(); Msg(STATUS2N, " "); diff --git a/Fltk/Makefile b/Fltk/Makefile index c9f6b0604ae97e16b3b9e6ce530a86f33ac3d7a1..6eca5a2b38f001d96a72618f51645d3e18250fcc 100644 --- a/Fltk/Makefile +++ b/Fltk/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.122 2007-02-15 08:26:45 geuzaine Exp $ +# $Id: Makefile,v 1.123 2007-02-26 08:25:37 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -71,10 +71,10 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \ ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Mesh/Generator.h \ - ../Parser/CreateFile.h ../Graphics/Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Mesh/Generator.h ../Parser/CreateFile.h \ + ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ ../Common/Options.h ../Parser/Parser.h ../Parser/OpenFile.h \ ../Common/CommandLine.h Solvers.h ../Plugin/PluginManager.h \ @@ -101,11 +101,10 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \ ../Common/GmshDefines.h ../Numeric/Numeric.h ../Common/Context.h \ ../Common/Options.h ../Graphics/Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Popup_Button.h SpherePosition_Widget.h Callbacks.h Bitmaps.h \ - Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \ + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h GUI.h Opengl_Window.h \ + Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h Callbacks.h \ + Bitmaps.h Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \ ../Mesh/Generator.h Solvers.h ../Plugin/PluginManager.h \ ../Plugin/Plugin.h Shortcut_Window.h GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \ @@ -114,9 +113,8 @@ GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Common/GmshUI.h ../Common/GmshDefines.h File_Picker.h \ Shortcut_Window.h ../Parser/CreateFile.h ../Common/Options.h \ ../Common/Context.h ../Graphics/Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h GUI_Projection.o: GUI_Projection.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ @@ -128,16 +126,15 @@ GUI_Projection.o: GUI_Projection.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \ - ../Common/Context.h ../Geo/ExtrudeParams.h ../Geo/GFace.h \ - ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ - ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ - ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Common/Context.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ + ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ + ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Geo/projectionFace.h ../Geo/GFace.h \ - ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Options.h \ - Shortcut_Window.h + ../Geo/projectionFace.h ../Geo/GFace.h ../Graphics/Draw.h \ + ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Common/Options.h Shortcut_Window.h Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ @@ -145,35 +142,35 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \ ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \ ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/ExtrudeParams.h ../Geo/GeoStringInterface.h ../Geo/Geo.h \ - ../Geo/findLinks.h ../Mesh/Generator.h ../Mesh/SecondOrder.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \ + ../Geo/GeoStringInterface.h ../Geo/Geo.h ../Geo/findLinks.h \ + ../Mesh/Generator.h ../Mesh/SecondOrder.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \ + ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ + ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ + ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Common/Context.h ../Geo/ExtrudeParams.h \ + ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ + ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ + ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ - ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \ - ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ - ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ - ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ - ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ - ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ - ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Parser/CreateFile.h ../Parser/OpenFile.h ../Common/CommandLine.h \ - ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Popup_Button.h SpherePosition_Widget.h GUI_Extras.h Callbacks.h \ - ../Plugin/Plugin.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \ - ../Common/Visibility.h ../Common/GmshDefines.h Solvers.h ../Common/OS.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \ - ../Geo/GRegion.h ../Geo/SBoundingBox3d.h + ../Graphics/SelectBuffer.h ../Parser/CreateFile.h ../Parser/OpenFile.h \ + ../Common/CommandLine.h ../Common/Options.h GUI.h Opengl_Window.h \ + Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h GUI_Extras.h \ + Callbacks.h ../Plugin/Plugin.h ../Plugin/PluginManager.h \ + ../Plugin/Plugin.h ../Common/Visibility.h ../Common/GmshDefines.h \ + Solvers.h ../Common/OS.h Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Numeric/Numeric.h ../Common/Context.h \ ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \ ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ @@ -196,22 +193,23 @@ Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Graphics/Draw.h \ - ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \ - ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \ - ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h \ - ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ - ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \ - ../Geo/ExtrudeParams.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Popup_Button.h SpherePosition_Widget.h + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \ + ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ + ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ + ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ + ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h GUI.h \ + Opengl_Window.h Colorbar_Window.h Popup_Button.h \ + SpherePosition_Widget.h Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ @@ -224,6 +222,6 @@ Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \ Solvers.h GmshServer.h ../Parser/OpenFile.h ../Common/GmshUI.h GUI.h \ Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h Popup_Button.h \ SpherePosition_Widget.h ../Graphics/Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Common/Context.h diff --git a/Geo/ExtrudeParams.cpp b/Geo/ExtrudeParams.cpp index 543bd2916158301c1026d5ec868deeb7279b71b7..50c407b0f8ba680ef6f84814ef767f9755b36c73 100644 --- a/Geo/ExtrudeParams.cpp +++ b/Geo/ExtrudeParams.cpp @@ -1,4 +1,4 @@ -// $Id: ExtrudeParams.cpp,v 1.22 2006-11-27 22:22:11 geuzaine Exp $ +// $Id: ExtrudeParams.cpp,v 1.23 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -23,6 +23,8 @@ #include "Geo.h" #include "ExtrudeParams.h" +smooth_data* ExtrudeParams::normals = 0; + void Projette(double p[3], double mat[3][3]) { double X, Y, Z; @@ -79,6 +81,7 @@ void ExtrudeParams::Rotate(double matr[3][3]) void ExtrudeParams::Extrude(double t, double &x, double &y, double &z) { double dx, dy, dz, angle; + double n[3] = {0., 0., 0.}; switch (geo.Type) { case TRANSLATE: @@ -107,6 +110,12 @@ void ExtrudeParams::Extrude(double t, double &x, double &y, double &z) y += dy; z += dz; break; + case BOUNDARY_LAYER: + if(normals) normals->get(x, y, z, 3, n); + x += n[0] * t; + y += n[1] * t; + z += n[2] * t; + break; default: Msg(GERROR, "Unknown extrusion type"); break; diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h index 89c2d28de452808c2574cf7811f0826c22f9dcc0..4d21190d5b261b13a90681c0596b91b6ae02f235 100644 --- a/Geo/ExtrudeParams.h +++ b/Geo/ExtrudeParams.h @@ -21,6 +21,7 @@ // Please report all bugs and problems to <gmsh@geuz.org>. #include <vector> +#include "SmoothData.h" // geo.Mode #define EXTRUDED_ENTITY 1 @@ -30,9 +31,11 @@ #define TRANSLATE 1 #define ROTATE 2 #define TRANSLATE_ROTATE 3 +#define BOUNDARY_LAYER 4 class ExtrudeParams{ public : + static smooth_data *normals; ExtrudeParams(int Mode = EXTRUDED_ENTITY); void fill(int type, double T0, double T1, double T2, diff --git a/Geo/GEntity.h b/Geo/GEntity.h index 25e692e1edd5e972b17ddfc2e21c062ef49c0975..9dbf88b098414bc5c049b5f5592732aa4ab9a011 100644 --- a/Geo/GEntity.h +++ b/Geo/GEntity.h @@ -65,12 +65,14 @@ class GEntity { enum GeomType { Unknown, Point, + BoundaryLayerPoint, Line, Circle, Ellipse, BSpline, Bezier, ParametricCurve, + BoundaryLayerCurve, DiscreteCurve, Plane, Nurb, @@ -82,6 +84,7 @@ class GEntity { ParametricSurface, ProjectionSurface, BSplineSurface, + BoundaryLayerSurface, DiscreteSurface, Volume, DiscreteVolume @@ -93,12 +96,14 @@ class GEntity { char *name[] = { "Unknown", "Point", + "Boundary layer point", "Line", "Circle", "Ellipse", "BSpline", "Bezier", "Parametric curve", + "Boundary layer curve", "Discrete curve", "Plane", "Nurb", @@ -110,6 +115,7 @@ class GEntity { "Parametric surface", "Projection surface", "BSpline surface", + "Boundary layer surface", "Discrete surface", "Volume", "Discrete volume" @@ -172,6 +178,7 @@ class GEntity { // The tag of the entity int tag() const { return _tag; } + void setTag(int tag) { _tag = tag; } // The bounding box virtual SBoundingBox3d bounds() const { throw; } diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index cf916fe593df80c5e3408979576b93f1a4766c1e..c86cc02beaad857fd77a7b7d3877918ed5b38f63 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -1,4 +1,4 @@ -// $Id: GModel.cpp,v 1.33 2007-02-04 15:59:18 geuzaine Exp $ +// $Id: GModel.cpp,v 1.34 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -286,15 +286,18 @@ SBoundingBox3d GModel::bounds() return bb; } -int GModel::getMeshStatus() +int GModel::getMeshStatus(bool countDiscrete) { for(riter it = firstRegion(); it != lastRegion(); ++it) - if((*it)->tetrahedra.size() ||(*it)->hexahedra.size() || - (*it)->prisms.size() || (*it)->pyramids.size()) return 3; + if((countDiscrete || (*it)->geomType() != GEntity::DiscreteVolume) && + ((*it)->tetrahedra.size() ||(*it)->hexahedra.size() || + (*it)->prisms.size() || (*it)->pyramids.size())) return 3; for(fiter it = firstFace(); it != lastFace(); ++it) - if((*it)->triangles.size() || (*it)->quadrangles.size()) return 2; + if((countDiscrete || (*it)->geomType() != GEntity::DiscreteSurface) && + ((*it)->triangles.size() || (*it)->quadrangles.size())) return 2; for(eiter it = firstEdge(); it != lastEdge(); ++it) - if((*it)->lines.size()) return 1; + if((countDiscrete || (*it)->geomType() != GEntity::DiscreteCurve) && + (*it)->lines.size()) return 1; for(viter it = firstVertex(); it != lastVertex(); ++it) if((*it)->mesh_vertices.size()) return 0; return -1; diff --git a/Geo/GModel.h b/Geo/GModel.h index ac632e83ddfd672ed7b021a86fd6d93e2abb06bc..3cd1759f8ae8bbbd86195d6cffd811f3fe5c67e4 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -28,7 +28,7 @@ #include "GFace.h" #include "GRegion.h" #include "SBoundingBox3d.h" -#include "SmoothNormals.h" +#include "SmoothData.h" // OCC Internals have to be stored in the model class OCC_Internals; @@ -133,8 +133,8 @@ class GModel // The bounding box virtual SBoundingBox3d bounds(); - // Returns the mesh status for the entire model. - virtual int getMeshStatus(); + // Returns the mesh status for the entire model + virtual int getMeshStatus(bool countDiscrete=true); // Returns the total number of vertices in the mesh virtual int numVertices(); diff --git a/Geo/GModelIO_Fourier.cpp b/Geo/GModelIO_Fourier.cpp index 26f720134a744533a8dccbb790431825ef7cd215..09922a9d2214f122d4993dd4b6ac9fa07be127e6 100644 --- a/Geo/GModelIO_Fourier.cpp +++ b/Geo/GModelIO_Fourier.cpp @@ -1,5 +1,6 @@ #include "GModel.h" #include "fourierFace.h" +#include "gmshFace.h" #include "Message.h" #include "Context.h" #include "Views.h" @@ -115,12 +116,33 @@ public: } for(int i = 0; i < M - 1; i++){ for(int j = 0; j < N - 1; j++){ +#if 0 MQuadrangle *q = new MQuadrangle(gf->mesh_vertices[i * N + j], gf->mesh_vertices[(i + 1) * N + j], gf->mesh_vertices[(i + 1) * N + (j + 1)], gf->mesh_vertices[i * N + (j + 1)]); //if(FM->GetOrientation(gf->tag()) < 0) q->revert(); gf->quadrangles.push_back(q); +#else + MVertex *v1 = gf->mesh_vertices[i * N + j]; + MVertex *v2 = gf->mesh_vertices[(i + 1) * N + j]; + MVertex *v3 = gf->mesh_vertices[(i + 1) * N + (j + 1)]; + MVertex *v4 = gf->mesh_vertices[i * N + (j + 1)]; + + const double tol = 1.e-6; + //if(v1->distance(v2) > tol && v1->distance(v3) > tol && v2->distance(v3) > tol) + { + MTriangle *t = new MTriangle(v1, v2, v3); + t->revert(); + gf->triangles.push_back(t); + } + //if(v1->distance(v3) > tol && v1->distance(v4) > tol && v3->distance(v4) > tol) + { + MTriangle *t = new MTriangle(v1, v3, v4); + t->revert(); + gf->triangles.push_back(t); + } +#endif } } } @@ -815,6 +837,39 @@ SPoint2 fourierFace::parFromPoint(const SPoint3 &p) const return SPoint2(u, v); } +void cleanUpAndMergeAllFaces(GModel *m) +{ + GFace *newgf = new gmshFace(m, 1); + std::set<MVertex*, MVertexLessThanLexicographic> pos; + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){ + GFace *gf = *it; + pos.insert(gf->mesh_vertices.begin(), gf->mesh_vertices.end()); + gf->mesh_vertices.clear(); + } + std::set<MVertex*, MVertexLessThanLexicographic>::iterator itp; + for(itp = pos.begin(); itp != pos.end(); itp++) + newgf->mesh_vertices.push_back(*itp); + + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){ + GFace *gf = *it; + for(unsigned int i = 0; i < gf->triangles.size(); i++){ + std::vector<MVertex*> v(3); + for(int j = 0; j < 3; j++){ + itp = pos.find(gf->triangles[i]->getVertex(j)); + if(itp == pos.end()) + Msg(GERROR, "Could not find vertex"); + else + v[j] = *itp; + } + delete gf->triangles[i]; + if(v[0] != v[1] && v[0] != v[2] && v[1] != v[2]) + newgf->triangles.push_back(new MTriangle(v)); + } + m->remove(gf); + } + m->add(newgf); +} + int GModel::readFourier(const std::string &name) { FM = new model(name); @@ -829,6 +884,8 @@ int GModel::readFourier(const std::string &name) // mesh each face with quads std::for_each(firstFace(), lastFace(), meshCartesian()); + cleanUpAndMergeAllFaces(this); + return 1; // mesh each face using the standard gmsh algorithms diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index f5e1fa08e7e550121c290ff988ff8c29750326d5..5815c9103b5898f78ce3781761472ab131d8f181 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.82 2007-02-21 08:17:16 geuzaine Exp $ +// $Id: Geo.cpp,v 1.83 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -71,24 +71,18 @@ int compareVertex(const void *a, const void *b) int comparePosition(const void *a, const void *b) { + Vertex *q = *(Vertex **)a; + Vertex *w = *(Vertex **)b; + // Warning: tolerance! (before 1.61, it was set to 1.e-10 * CTX.lc) double eps = CTX.geom.tolerance * CTX.lc; - Vertex **q = (Vertex **) a; - Vertex **w = (Vertex **) b; - - if((*q)->Pos.X - (*w)->Pos.X > eps) - return 1; - if((*q)->Pos.X - (*w)->Pos.X < -eps) - return -1; - if((*q)->Pos.Y - (*w)->Pos.Y > eps) - return 1; - if((*q)->Pos.Y - (*w)->Pos.Y < -eps) - return -1; - if((*q)->Pos.Z - (*w)->Pos.Z > eps) - return 1; - if((*q)->Pos.Z - (*w)->Pos.Z < -eps) - return -1; + if(q->Pos.X - w->Pos.X > eps) return 1; + if(q->Pos.X - w->Pos.X < -eps) return -1; + if(q->Pos.Y - w->Pos.Y > eps) return 1; + if(q->Pos.Y - w->Pos.Y < -eps) return -1; + if(q->Pos.Z - w->Pos.Z > eps) return 1; + if(q->Pos.Z - w->Pos.Z < -eps) return -1; return 0; } @@ -465,7 +459,7 @@ void End_Surface(Surface * s) { // if all generatrices of a surface are on the same geometry, then // the surface is also on the geometry - if(s->Generatrices){ + if(List_Nbr(s->Generatrices)){ Curve *c; int NN = List_Nbr(s->Generatrices); List_Read (s->Generatrices, 0, &c); @@ -1797,7 +1791,7 @@ void SymmetryShapes(double A, double B, double C, double D, List_T * ListShapes) // Extrusion routines -void ProtudeXYZ(double &x, double &y, double &z, ExtrudeParams * e) +void ProtudeXYZ(double &x, double &y, double &z, ExtrudeParams *e) { double matrix[4][4]; double T[3]; @@ -1832,8 +1826,8 @@ int Extrude_ProtudePoint(int type, int ip, double T0, double T1, double T2, double A0, double A1, double A2, double X0, double X1, double X2, double alpha, - Curve ** pc, Curve ** prc, int final, - ExtrudeParams * e) + Curve **pc, Curve **prc, int final, + ExtrudeParams *e) { double matrix[4][4], T[3], Ax[3], d; Vertex V, *pv, *newp, *chapeau; @@ -1851,7 +1845,6 @@ int Extrude_ProtudePoint(int type, int ip, chapeau = DuplicateVertex(pv); switch (type) { - case TRANSLATE: T[0] = T0; T[1] = T1; @@ -1859,7 +1852,6 @@ int Extrude_ProtudePoint(int type, int ip, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - if(!comparePosition(&pv, &chapeau)) return pv->Num; c = Create_Curve(NEWLINE(), MSH_SEGM_LINE, 1, NULL, NULL, -1, -1, 0., 1.); @@ -1868,13 +1860,24 @@ int Extrude_ProtudePoint(int type, int ip, c->Extrude->fill(type, T0, T1, T2, A0, A1, A2, X0, X1, X2, alpha); if(e) c->Extrude->mesh = e->mesh; - List_Add(c->Control_Points, &pv); List_Add(c->Control_Points, &chapeau); c->beg = pv; c->end = chapeau; break; - + case BOUNDARY_LAYER: + chapeau->Typ = MSH_POINT_BND_LAYER; + c = Create_Curve(NEWLINE(), MSH_SEGM_BND_LAYER, 1, NULL, NULL, -1, -1, 0., 1.); + c->Control_Points = List_Create(2, 1, sizeof(Vertex *)); + c->Extrude = new ExtrudeParams; + c->Extrude->fill(type, T0, T1, T2, A0, A1, A2, X0, X1, X2, alpha); + if(e) + c->Extrude->mesh = e->mesh; + List_Add(c->Control_Points, &pv); + List_Add(c->Control_Points, &chapeau); + c->beg = pv; + c->end = chapeau; + break; case ROTATE: T[0] = -X0; T[1] = -X1; @@ -1882,21 +1885,18 @@ int Extrude_ProtudePoint(int type, int ip, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - if(!comparePosition(&pv, &chapeau)) return pv->Num; c = Create_Curve(NEWLINE(), MSH_SEGM_CIRC, 1, NULL, NULL, -1, -1, 0., 1.); @@ -1924,7 +1924,6 @@ int Extrude_ProtudePoint(int type, int ip, c->beg = pv; c->end = chapeau; break; - case TRANSLATE_ROTATE: d = CTX.geom.extrude_spline_points; d = d ? d : 1; @@ -1940,40 +1939,34 @@ int Extrude_ProtudePoint(int type, int ip, for(i = 0; i < CTX.geom.extrude_spline_points; i++) { if(i) chapeau = DuplicateVertex(chapeau); - T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha / d); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - T[0] = T0 / d; T[1] = T1 / d; T[2] = T2 / d; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToPoint(matrix, chapeau); - List_Add(c->Control_Points, &chapeau); } c->end = chapeau; break; - default: Msg(GERROR, "Unknown extrusion type"); return pv->Num; @@ -2038,6 +2031,13 @@ int Extrude_ProtudeCurve(int type, int ic, List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); break; + case BOUNDARY_LAYER: + chapeau->Typ = MSH_SEGM_BND_LAYER; + if(chapeau->beg) chapeau->beg->Typ = MSH_POINT_BND_LAYER; + if(chapeau->end) chapeau->end->Typ = MSH_POINT_BND_LAYER; + revpc = FindCurve(-chapeau->Num); + if(revpc) revpc->Typ = MSH_SEGM_BND_LAYER; + break; case ROTATE: T[0] = -X0; T[1] = -X1; @@ -2045,14 +2045,12 @@ int Extrude_ProtudeCurve(int type, int ic, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha); List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; @@ -2067,21 +2065,18 @@ int Extrude_ProtudeCurve(int type, int ic, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha); List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToCurve(matrix, chapeau); - T[0] = T0; T[1] = T1; T[2] = T2; @@ -2105,7 +2100,9 @@ int Extrude_ProtudeCurve(int type, int ic, return pc->Num; } - if(!CurveBeg || !CurveEnd) + if(type == BOUNDARY_LAYER) + s = Create_Surface(NEWSURFACE(), MSH_SURF_BND_LAYER); + else if(!CurveBeg || !CurveEnd) s = Create_Surface(NEWSURFACE(), MSH_SURF_TRIC); else s = Create_Surface(NEWSURFACE(), MSH_SURF_REGL); @@ -2240,6 +2237,17 @@ int Extrude_ProtudeSurface(int type, int is, List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); break; + case BOUNDARY_LAYER: + chapeau->Typ = MSH_SURF_BND_LAYER; + for(int i = 0; i < List_Nbr(chapeau->Generatrices); i++) { + List_Read(chapeau->Generatrices, i, &c); + c->Typ = MSH_SEGM_BND_LAYER; + c = FindCurve(-c->Num); + c->Typ = MSH_SEGM_BND_LAYER; + if(c->beg) c->beg->Typ = MSH_POINT_BND_LAYER; + if(c->end) c->end->Typ = MSH_POINT_BND_LAYER; + } + break; case ROTATE: T[0] = -X0; T[1] = -X1; @@ -2247,14 +2255,12 @@ int Extrude_ProtudeSurface(int type, int is, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha); List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; @@ -2269,21 +2275,18 @@ int Extrude_ProtudeSurface(int type, int is, SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); - Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix, Ax, alpha); List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); - T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix, T); List_Reset(ListOfTransformedPoints); ApplyTransformationToSurface(matrix, chapeau); - T[0] = T0; T[1] = T1; T[2] = T2; @@ -2296,7 +2299,8 @@ int Extrude_ProtudeSurface(int type, int is, return ps->Num; } - // FIXME: why do we do this? only for backward compatibility? + // this is done only for backward compatibility with the old + // numbering scheme Tree_Suppress(THEM->Surfaces, &chapeau); chapeau->Num = NEWSURFACE(); THEM->MaxSurfaceNum = chapeau->Num; @@ -2393,6 +2397,7 @@ void ExtrudeShapes(int type, List_T *in, case MSH_SURF_REGL: case MSH_SURF_TRIC: case MSH_SURF_PLAN: + case MSH_SURF_DISCRETE: TheShape.Num = Extrude_ProtudeSurface(type, O.Num, T0, T1, T2, A0, A1, A2, X0, X1, X2, alpha, &pv, e); @@ -2421,10 +2426,20 @@ void ExtrudeShapes(int type, List_T *in, // Duplicate removal +int compareTwoPoints(const void *a, const void *b) +{ + Vertex *q = *(Vertex **)a; + Vertex *w = *(Vertex **)b; + + if(q->Typ != w->Typ) return q->Typ - w->Typ; + + return comparePosition(a, b); +} + int compareTwoCurves(const void *a, const void *b) { - Curve *c1 = *(Curve **) a; - Curve *c2 = *(Curve **) b; + Curve *c1 = *(Curve **)a; + Curve *c2 = *(Curve **)b; int comp; if(c1->Typ != c2->Typ){ @@ -2471,6 +2486,19 @@ int compareTwoSurfaces(const void *a, const void *b) { Surface *s1 = *(Surface **) a; Surface *s2 = *(Surface **) b; + + // checking types is the "right thing" to do (see e.g. compareTwoCurves) + // but it would break backward compatibility (see e.g. tutorial/t2.geo), + // so let's just do it for boundary layer surfaces for now: + if(s1->Typ == MSH_SURF_BND_LAYER || s2->Typ == MSH_SURF_BND_LAYER){ + if(s1->Typ != s2->Typ) return s1->Typ - s2->Typ; + } + + // if both surfaces have no generatrices, stay on the safe side and + // assume they are different + if(!List_Nbr(s1->Generatrices) && !List_Nbr(s2->Generatrices)) + return 1; + return compare2Lists(s1->Generatrices, s2->Generatrices, compareAbsCurve); } @@ -2509,7 +2537,7 @@ void ReplaceDuplicatePoints() start = Tree_Nbr(THEM->Points); All = Tree2List(THEM->Points); - allNonDuplicatedPoints = Tree_Create(sizeof(Vertex *), comparePosition); + allNonDuplicatedPoints = Tree_Create(sizeof(Vertex *), compareTwoPoints); for(i = 0; i < List_Nbr(All); i++) { List_Read(All, i, &v); if(!Tree_Search(allNonDuplicatedPoints, &v)) { diff --git a/Geo/Geo.h b/Geo/Geo.h index 9ebe4417e24d6872609e6e41ad44f8ec85d036ee..75776b757dc1356eb9996ffbf077988080ee54c1 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -30,6 +30,7 @@ #include "ExtrudeParams.h" #define MSH_POINT 1 +#define MSH_POINT_BND_LAYER 20 #define MSH_POINT_DISCRETE 100 #define MSH_SEGM_LINE 2 @@ -40,6 +41,7 @@ #define MSH_SEGM_ELLI_INV 7 #define MSH_SEGM_LOOP 8 #define MSH_SEGM_BSPLN 15 +#define MSH_SEGM_BND_LAYER 16 #define MSH_SEGM_NURBS 17 #define MSH_SEGM_BEZIER 18 #define MSH_SEGM_PARAMETRIC 19 @@ -48,6 +50,7 @@ #define MSH_SURF_PLAN 9 #define MSH_SURF_REGL 10 #define MSH_SURF_TRIC 11 +#define MSH_SURF_BND_LAYER 12 #define MSH_SURF_LOOP 13 #define MSH_SURF_DISCRETE 102 @@ -68,19 +71,21 @@ struct Coord{ class Vertex { public : - // a model vertex is usually defined in the euclidian coordinates. - // Yet, it can be defined in the parametric coordinates of a surface - // this data structure stores local coodinates of the vertex in the - // gmshSurface it belongs to. - gmshSurface *geometry; - SPoint2 pntOnGeometry; int Num; + int Typ; char Visible; double lc, u, w; Coord Pos; + // a model vertex is usually defined in the euclidian coordinates + // (Pos). Yet, it can also be defined in the parametric coordinates + // of a surface: pntOnGeometry stores the local coodinates of the + // vertex in the gmshSurface it belongs to. + gmshSurface *geometry; + SPoint2 pntOnGeometry; Vertex(double X=0., double Y=0., double Z=0., double l=1., double W=1.) - : geometry(0), Num(0), Visible(1), lc(l), u(0.), w(W) + : Num(0), Visible(1), lc(l), u(0.), w(W), geometry(0) { + Typ = MSH_POINT; Pos.X = X; Pos.Y = Y; Pos.Z = Z; diff --git a/Geo/Makefile b/Geo/Makefile index eda6a6bcb32148b057ae97fcfe619cbe4fcaebba..86fa7e75a98be45d46680db178721a2c0c2cc72f 100644 --- a/Geo/Makefile +++ b/Geo/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.135 2007-02-15 08:26:45 geuzaine Exp $ +# $Id: Makefile,v 1.136 2007-02-26 08:25:38 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -74,191 +74,194 @@ GEntity.o: GEntity.cpp GEntity.h Range.h SPoint3.h SBoundingBox3d.h \ ../Common/GmshDefines.h MRep.h GEdge.h GVertex.h MVertex.h GPoint.h \ SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GFace.h GEdgeLoop.h GEdge.h SVector3.h MElement.h MEdge.h \ ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \ - ../DataStr/List.h ExtrudeParams.h Pair.h + ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h Pair.h GEdge.o: GEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h GEdgeLoop.o: GEdgeLoop.cpp GEdgeLoop.h GEdge.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h GVertex.h MVertex.h \ GPoint.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h ../Common/Message.h GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h ../Common/Message.h GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h gmshVertex.o: gmshVertex.cpp GFace.h GPoint.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h GEdgeLoop.h GEdge.h GVertex.h \ MVertex.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h Pair.h gmshVertex.h Geo.h gmshSurface.h \ - ../DataStr/Tree.h ../DataStr/avl.h GeoInterpolation.h \ + ExtrudeParams.h ../Common/SmoothData.h Pair.h gmshVertex.h Geo.h \ + gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h GeoInterpolation.h \ ../Common/Message.h gmshEdge.o: gmshEdge.cpp GFace.h GPoint.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h GEdgeLoop.h GEdge.h GVertex.h \ MVertex.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h Pair.h gmshEdge.h Geo.h gmshSurface.h ../DataStr/Tree.h \ - ../DataStr/avl.h gmshVertex.h GeoInterpolation.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h Pair.h gmshEdge.h Geo.h \ + gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \ + GeoInterpolation.h ../Common/Message.h gmshFace.o: gmshFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h gmshVertex.h Geo.h gmshSurface.h \ - ../DataStr/Tree.h ../DataStr/avl.h gmshEdge.h gmshFace.h \ - GeoInterpolation.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h gmshVertex.h Geo.h gmshSurface.h ../DataStr/Tree.h \ + ../DataStr/avl.h gmshEdge.h gmshFace.h GeoInterpolation.h \ + ../Common/Message.h gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \ SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h gmshFace.h Geo.h gmshSurface.h \ - ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h gmshRegion.h \ - ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h gmshFace.h Geo.h gmshSurface.h ../DataStr/Tree.h \ + ../DataStr/avl.h gmshVertex.h gmshRegion.h ../Common/Message.h gmshSurface.o: gmshSurface.cpp gmshSurface.h Pair.h Range.h SPoint2.h \ SPoint3.h SVector3.h SBoundingBox3d.h ../Common/Message.h OCCVertex.o: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h OCCEdge.o: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h ../Common/Message.h OCCEdge.h OCCVertex.h \ - OCCIncludes.h OCCFace.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h ../Common/Message.h OCCEdge.h OCCVertex.h OCCIncludes.h \ + OCCFace.h OCCFace.o: OCCFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h \ + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h \ ../Common/Message.h OCCRegion.o: OCCRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h \ - OCCRegion.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h OCCRegion.h \ + ../Common/Message.h projectionFace.o: projectionFace.cpp projectionFace.h GFace.h GPoint.h \ GEntity.h Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h \ GEdgeLoop.h GEdge.h GVertex.h MVertex.h SPoint2.h SVector3.h MElement.h \ MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \ - ../Common/Context.h ../DataStr/List.h ExtrudeParams.h Pair.h + ../Common/Context.h ../DataStr/List.h ExtrudeParams.h \ + ../Common/SmoothData.h Pair.h GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \ GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h gmshSurface.h ../Mesh/Attractors.h \ - ../Geo/SPoint3.h ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/Tree.h \ - ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \ - ../Common/Message.h ../Geo/GEdge.h MRep.h ../Common/VertexArray.h \ - ../Common/OS.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h gmshSurface.h ../Mesh/Attractors.h ../Geo/SPoint3.h \ + ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/Message.h \ + ../Geo/GEdge.h MRep.h ../Common/VertexArray.h ../Common/OS.h GModelIO_Geo.o: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \ SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h Geo.h gmshSurface.h ../DataStr/Tree.h \ - ../DataStr/avl.h ../Parser/OpenFile.h ../DataStr/Tools.h \ - ../DataStr/List.h ../DataStr/Tree.h ../Common/Message.h gmshVertex.h \ - gmshFace.h gmshEdge.h gmshRegion.h ../Parser/Parser.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h Geo.h gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \ + ../Parser/OpenFile.h ../DataStr/Tools.h ../DataStr/List.h \ + ../DataStr/Tree.h ../Common/Message.h gmshVertex.h gmshFace.h \ + gmshEdge.h gmshRegion.h ../Parser/Parser.h GModelIO_Mesh.o: GModelIO_Mesh.cpp ../Common/Message.h \ ../Common/GmshDefines.h GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h \ MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \ - ../Common/Context.h ../DataStr/List.h ExtrudeParams.h GFace.h \ - GEdgeLoop.h Pair.h GRegion.h ../Common/SmoothNormals.h gmshRegion.h \ - Geo.h gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshFace.h \ - gmshVertex.h gmshEdge.h + ../Common/Context.h ../DataStr/List.h ExtrudeParams.h \ + ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ + gmshRegion.h Geo.h gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \ + gmshFace.h gmshVertex.h gmshEdge.h GModelIO_Fourier.o: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \ Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h \ GPoint.h SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h \ ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \ - ../DataStr/List.h ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h fourierFace.h ../Common/Message.h \ - ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h + ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h GFace.h \ + GEdgeLoop.h Pair.h GRegion.h fourierFace.h gmshFace.h Geo.h \ + gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \ + ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h GModelIO_OCC.o: GModelIO_OCC.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \ SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h ../Common/Message.h OCCIncludes.h OCCVertex.h \ - OCCEdge.h OCCFace.h OCCRegion.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h ../Common/Message.h OCCIncludes.h OCCVertex.h OCCEdge.h \ + OCCFace.h OCCRegion.h GModelIO_CGNS.o: GModelIO_CGNS.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \ SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h ../Common/Message.h MNeighbour.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h ../Common/Message.h MNeighbour.h GModelIO_MED.o: GModelIO_MED.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \ SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \ MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \ - ../Common/SmoothNormals.h GModelIO_MED.h ../Common/Message.h + ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \ + GRegion.h GModelIO_MED.h ../Common/Message.h ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \ - SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h + SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h \ ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \ - SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h GModel.h \ - GVertex.h GEntity.h MVertex.h GPoint.h GEdge.h MElement.h MEdge.h \ - ../Common/Hash.h MFace.h ../Common/Context.h GFace.h GEdgeLoop.h \ - GRegion.h ../Common/SmoothNormals.h GeoInterpolation.h + SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \ + ../Common/SmoothData.h GModel.h GVertex.h GEntity.h MVertex.h GPoint.h \ + GEdge.h MElement.h MEdge.h ../Common/Hash.h MFace.h ../Common/Context.h \ + GFace.h GEdgeLoop.h GRegion.h GeoInterpolation.h GeoStringInterface.o: GeoStringInterface.cpp ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h ../Common/GmshDefines.h \ gmshSurface.h Pair.h Range.h SPoint2.h SPoint3.h SVector3.h \ - SBoundingBox3d.h ExtrudeParams.h GeoStringInterface.h \ - ../Parser/Parser.h ../Parser/OpenFile.h ../Common/Context.h GModel.h \ - GVertex.h GEntity.h MVertex.h GPoint.h GEdge.h MElement.h MEdge.h \ - ../Common/Hash.h MFace.h GFace.h GEdgeLoop.h GRegion.h \ - ../Common/SmoothNormals.h + SBoundingBox3d.h ExtrudeParams.h ../Common/SmoothData.h \ + GeoStringInterface.h ../Parser/Parser.h ../Parser/OpenFile.h \ + ../Common/Context.h GModel.h GVertex.h GEntity.h MVertex.h GPoint.h \ + GEdge.h MElement.h MEdge.h ../Common/Hash.h MFace.h GFace.h GEdgeLoop.h \ + GRegion.h GeoInterpolation.o: GeoInterpolation.cpp ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h \ Range.h SPoint2.h SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \ - GeoInterpolation.h GeoStringInterface.h ../Numeric/Numeric.h + ../Common/SmoothData.h ../Numeric/Numeric.h GeoInterpolation.h \ + GeoStringInterface.h findLinks.o: findLinks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ GModel.h GVertex.h GEntity.h Range.h SPoint3.h SBoundingBox3d.h \ ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h \ MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \ - ../Common/Context.h ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h \ - GRegion.h ../Common/SmoothNormals.h + ../Common/Context.h ExtrudeParams.h ../Common/SmoothData.h GFace.h \ + GEdgeLoop.h Pair.h GRegion.h MVertex.o: MVertex.cpp MVertex.h SPoint3.h MElement.o: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \ SPoint3.h MEdge.h SVector3.h ../Common/Hash.h MFace.h \ diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp index a495b7566efa2941f2516af59470eb2ac059748f..b3475419dc21514f3fddc3562b26a7fe8844d3bd 100644 --- a/Geo/gmshEdge.cpp +++ b/Geo/gmshEdge.cpp @@ -1,4 +1,4 @@ -// $Id: gmshEdge.cpp,v 1.28 2007-02-03 00:02:16 geuzaine Exp $ +// $Id: gmshEdge.cpp,v 1.29 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -112,6 +112,7 @@ GEntity::GeomType gmshEdge::geomType() const case MSH_SEGM_BEZIER: case MSH_SEGM_NURBS: case MSH_SEGM_SPLN: return Nurb; + case MSH_SEGM_BND_LAYER: return BoundaryLayerCurve; case MSH_SEGM_DISCRETE: return DiscreteCurve; default : return Unknown; } diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp index d0b1fb074db9cd2b725cb938eab71b5b7049a8b6..b03c7b8132604b6a576ffaefeba12c611e70b382 100644 --- a/Geo/gmshFace.cpp +++ b/Geo/gmshFace.cpp @@ -1,4 +1,4 @@ -// $Id: gmshFace.cpp,v 1.38 2007-02-21 08:17:16 geuzaine Exp $ +// $Id: gmshFace.cpp,v 1.39 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -230,6 +230,7 @@ GEntity::GeomType gmshFace::geomType() const case MSH_SURF_REGL: case MSH_SURF_TRIC: return RuledSurface; case MSH_SURF_DISCRETE: return DiscreteSurface; + case MSH_SURF_BND_LAYER: return BoundaryLayerSurface; default: return Unknown; } } diff --git a/Geo/gmshVertex.cpp b/Geo/gmshVertex.cpp index 76b39d67f84023e7937ee72e93e8c0119ae0cecc..5f137208bb9edee2eb40ecb09aa6a4dc88e4c42d 100644 --- a/Geo/gmshVertex.cpp +++ b/Geo/gmshVertex.cpp @@ -55,3 +55,11 @@ SPoint2 gmshVertex::reparamOnFace(GFace *face, int dir) const return GVertex::reparamOnFace(face,dir); } } + +GEntity::GeomType gmshVertex::geomType() const +{ + if(v && v->Typ == MSH_POINT_BND_LAYER) + return BoundaryLayerPoint; + else + return Point; +} diff --git a/Geo/gmshVertex.h b/Geo/gmshVertex.h index 45e833e1faef1a3e11592807d16911ecc7deb62f..42ecd6d71538b84739b7ece615b0439dc526cc28 100644 --- a/Geo/gmshVertex.h +++ b/Geo/gmshVertex.h @@ -59,6 +59,7 @@ class gmshVertex : public GVertex { { return v ? v->Pos.Z : mesh_vertices.size() ? mesh_vertices[0]->z() : 0.; } + virtual GeomType geomType() const; ModelType getNativeType() const { return GmshModel; } void * getNativePtr() const { return v; } virtual void setPrescribedMeshSizeAtVertex(double l) diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp index f61fe210018a86a2c46e19bda3c0d593581d7279..9af8287a10317241a9aee58a0d02960db980bdfd 100644 --- a/Graphics/Geom.cpp +++ b/Graphics/Geom.cpp @@ -1,4 +1,4 @@ -// $Id: Geom.cpp,v 1.129 2007-01-23 08:01:08 geuzaine Exp $ +// $Id: Geom.cpp,v 1.130 2007-02-26 08:25:38 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -35,6 +35,7 @@ class drawGVertex { void operator () (GVertex *v) { if(!v->getVisibility()) return; + if(v->geomType() == GEntity::BoundaryLayerPoint) return; if(CTX.render_mode == GMSH_SELECT) { glPushName(0); @@ -98,8 +99,9 @@ class drawGEdge { public : void operator () (GEdge *e) { - if(!e->getVisibility() || e->geomType() == GEntity::DiscreteCurve) - return; + if(!e->getVisibility()) return; + if(e->geomType() == GEntity::DiscreteCurve) return; + if(e->geomType() == GEntity::BoundaryLayerCurve) return; if(CTX.render_mode == GMSH_SELECT) { glPushName(1); @@ -383,8 +385,9 @@ class drawGFace { public : void operator () (GFace *f) { - if(!f->getVisibility() || f->geomType() == GEntity::DiscreteSurface) - return; + if(!f->getVisibility()) return; + if(f->geomType() == GEntity::DiscreteSurface) return; + if(f->geomType() == GEntity::BoundaryLayerSurface) return; if(CTX.render_mode == GMSH_SELECT) { glPushName(2); @@ -422,8 +425,8 @@ class drawGRegion { public : void operator () (GRegion *r) { - if(!r->getVisibility() || r->geomType() == GEntity::DiscreteVolume) - return; + if(!r->getVisibility()) return; + if(r->geomType() == GEntity::DiscreteVolume) return; if(CTX.render_mode == GMSH_SELECT) { glPushName(3); diff --git a/Graphics/Makefile b/Graphics/Makefile index b9eb25515dd8cab06fa8bbdcb051ca17b9a308f0..dabd58a1f6166647a7989fd0a8db9f85dcc1e9a1 100644 --- a/Graphics/Makefile +++ b/Graphics/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.110 2007-01-22 16:31:43 geuzaine Exp $ +# $Id: Makefile,v 1.111 2007-02-26 08:25:38 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -73,7 +73,7 @@ Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \ ../Common/GmshDefines.h Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ @@ -98,30 +98,28 @@ Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \ - ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ - ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ - ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \ - ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \ - ../Common/OS.h gl2ps.h + ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ + ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ + ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ + ../Geo/SBoundingBox3d.h Draw.h ../Common/Views.h ../Common/ColorTable.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/MRep.h \ + ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MElement.h ../Common/OS.h gl2ps.h Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h Draw.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ - gl2ps.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \ - ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ - ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \ - ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \ - ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \ - ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ - ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ - ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ @@ -131,105 +129,99 @@ Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \ ../Numeric/Numeric.h Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ gl2ps.h PostElement.o: PostElement.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h Draw.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Iso.h \ ../Common/Context.h SelectBuffer.o: SelectBuffer.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Common/GmshDefines.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ - SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ - ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ - ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ - ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ - ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \ - ../Geo/GRegion.h ../Geo/SBoundingBox3d.h ../Geo/MRep.h ../Geo/GEdge.h \ - ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h \ - ../Geo/MElement.h ../Common/OS.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Common/Context.h SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \ + ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ + ../Geo/SPoint3.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h \ + ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \ + ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ + ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \ + ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h \ + ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ + ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \ + ../Geo/ExtrudeParams.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h \ + ../Geo/GFace.h ../Geo/GRegion.h ../Geo/SBoundingBox3d.h ../Geo/MRep.h \ + ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MElement.h ../Common/OS.h Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h Draw.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Common/Context.h Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ + gl2ps.h ReadImg.o: ReadImg.cpp ReadImg.h ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ + gl2ps.h Graph2D.o: Graph2D.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/GmshUI.h ../Common/Context.h ../Numeric/Numeric.h Draw.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h gl2ps.h + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + gl2ps.h gl2ps.o: gl2ps.cpp gl2ps.h gl2gif.o: gl2gif.cpp gl2gif.h PixelBuffer.h ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h gl2jpeg.o: gl2jpeg.cpp gl2jpeg.h PixelBuffer.h ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h gl2png.o: gl2png.cpp gl2png.h PixelBuffer.h ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h gl2ppm.o: gl2ppm.cpp gl2ppm.h PixelBuffer.h ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h gl2yuv.o: gl2yuv.cpp gl2yuv.h PixelBuffer.h ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h tc.o: tc.cpp tc.h diff --git a/Mesh/BoundaryLayer.cpp b/Mesh/BoundaryLayer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9a0c2df98cb04c093bb5acc6c6163c69c7e3f8eb --- /dev/null +++ b/Mesh/BoundaryLayer.cpp @@ -0,0 +1,128 @@ +// $Id: BoundaryLayer.cpp,v 1.1 2007-02-26 08:25:39 geuzaine Exp $ +// +// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to <gmsh@geuz.org>. + +#include "BoundaryLayer.h" +#include "ExtrudeParams.h" +#include "meshGEdge.h" +#include "meshGFace.h" +#include "Message.h" + +template<class T> +static void addExtrudeNormals(std::vector<T*> &elements) +{ + for(unsigned int i = 0; i < elements.size(); i++){ + MElement *ele = elements[i]; + for(int j = 0; j < ele->getNumFaces(); j++){ + MFace fac = ele->getFace(j); + SVector3 n = fac.normal(); + if(n[0] || n[1] || n[2]){ + double nn[3] = {n[0], n[1], n[2]}; + for(int k = 0; k < fac.getNumVertices(); k++){ + MVertex *v = fac.getVertex(k); + SPoint3 p(v->x(), v->y(), v->z()); + ExtrudeParams::normals->add(p[0], p[1], p[2], 3, nn); + } + } + } + } +} + +int MeshBoundaryLayerFaces(GModel *m) +{ + bool haveBoundaryLayers = false; + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){ + GFace *gf = *it; + if(gf->geomType() == GEntity::BoundaryLayerSurface){ + haveBoundaryLayers = true; + break; + } + } + if(!haveBoundaryLayers) return 0; + + // make sure the surface mesh is oriented correctly (normally we do + // this only after the 3D mesh is done; but here it's critical since + // we use the normals for the extrusion) + std::for_each(m->firstFace(), m->lastFace(), orientMeshGFace()); + + // compute a smooth normal field on all the surfaces giving rise to + // boundary layers + if(ExtrudeParams::normals) delete ExtrudeParams::normals; + ExtrudeParams::normals = new smooth_data(); + ExtrudeParams *myep = 0; + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){ + GFace *gf = *it; + if(gf->geomType() == GEntity::BoundaryLayerSurface){ + ExtrudeParams *ep = myep = gf->meshAttributes.extrude; + if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == COPIED_ENTITY){ + GFace *from = gf->model()->faceByTag(std::abs(ep->geo.Source)); + if(!from){ + Msg(GERROR, "Unknown source face %d for boundary layer", ep->geo.Source); + continue; + } + addExtrudeNormals(from->triangles); + addExtrudeNormals(from->quadrangles); + } + } + } + if(!myep) return 0; + + // set the position of bounding points (FIXME: should check + // coherence of all extrude parameters) + for(GModel::viter it = m->firstVertex(); it != m->lastVertex(); it++){ + GVertex *gv = *it; + if(gv->geomType() == GEntity::BoundaryLayerPoint){ + double x = gv->x(); + double y = gv->y(); + double z = gv->z(); + myep->Extrude(myep->mesh.NbLayer - 1, myep->mesh.NbElmLayer[myep->mesh.NbLayer - 1], + x, y, z); + gv->mesh_vertices[0]->x() = x; + gv->mesh_vertices[0]->y() = y; + gv->mesh_vertices[0]->z() = z; + } + } + + // mesh the curves bounding the boundary layers by extrusion using + // the smooth normal field + for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); it++){ + GEdge *ge = *it; + if(ge->geomType() == GEntity::BoundaryLayerCurve){ + Msg(INFO, "Meshing curve %d", ge->tag()); + deMeshGEdge dem; + dem(ge); + MeshExtrudedCurve(ge); + } + } + + // mesh the surfaces bounding the boundary layers by extrusion using + // the smooth normal field + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){ + GFace *gf = *it; + if(gf->geomType() == GEntity::BoundaryLayerSurface){ + Msg(STATUS2, "Meshing surface %d (%s)", gf->tag(), gf->getTypeString().c_str()); + deMeshGFace dem; + dem(gf); + MeshExtrudedSurface(gf); + } + } + + return 1; +} diff --git a/Mesh/BoundaryLayer.h b/Mesh/BoundaryLayer.h new file mode 100644 index 0000000000000000000000000000000000000000..e7cce6b78b3563c0b37fbce9b83e9c1b288a9cf6 --- /dev/null +++ b/Mesh/BoundaryLayer.h @@ -0,0 +1,27 @@ +#ifndef _BOUNDARY_LAYER_H_ +#define _BOUNDARY_LAYER_H_ + +// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to <gmsh@geuz.org>. + +#include "GModel.h" + +int MeshBoundaryLayerFaces(GModel *m); + +#endif diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index bab07cc3d1cae83f6e084886861c60f208867f19..a9b31287a7406b8f629492538c3c91b86021b2e8 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -1,4 +1,4 @@ -// $Id: Generator.cpp,v 1.114 2007-02-04 15:59:18 geuzaine Exp $ +// $Id: Generator.cpp,v 1.115 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -29,6 +29,7 @@ #include "meshGFace.h" #include "meshGRegion.h" #include "BackgroundMesh.h" +#include "BoundaryLayer.h" #include "SecondOrder.h" extern Context_T CTX; @@ -217,7 +218,12 @@ void Mesh2D() Msg(STATUS1, "Meshing 2D..."); double t1 = Cpu(); - std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), meshGFace()); + std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), meshGFace()); + + // boundary layers are special: their definition (including vertices + // and curve meshes) relies on the surface mesh--and it is global + // since we use a smooth normal field + MeshBoundaryLayerFaces(GMODEL); double t2 = Cpu(); CTX.mesh_timer[1] = t2 - t1; @@ -233,12 +239,15 @@ void Mesh3D() // mesh the extruded volumes first std::for_each(GMODEL->firstRegion(), GMODEL->lastRegion(), meshGRegionExtruded()); + // then subdivide if necessary (unfortunately the subdivision is a // global operation, which can require changing the surface mesh!) SubdivideExtrudedMesh(GMODEL); + // then mesh all the non-delaunay regions std::vector<GRegion*> delaunay; std::for_each(GMODEL->firstRegion(), GMODEL->lastRegion(), meshGRegion(delaunay)); + // and finally mesh the delaunay regions (again, this is global) MeshDelaunayVolume(delaunay); @@ -268,10 +277,10 @@ void GenerateMesh(int ask) } CTX.threads_lock = 1; - int old = GMODEL->getMeshStatus(); + int old = GMODEL->getMeshStatus(false); // Change any high order elements back into first order ones - Degre1(); + Degre1(GMODEL); // 1D mesh if(ask == 1 || (ask > 1 && old < 1)) { @@ -294,14 +303,14 @@ void GenerateMesh(int ask) // Orient the surface mesh so that it matches the geometry if(GMODEL->getMeshStatus() >= 2) std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), orientMeshGFace()); - + // Optimize quality if(GMODEL->getMeshStatus() == 3 && CTX.mesh.optimize) OptimizeMesh(); // Create second order elements if(GMODEL->getMeshStatus() && CTX.mesh.order == 2) - Degre2(CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete); + Degre2(GMODEL, CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete); Msg(INFO, "%d vertices %d elements", GMODEL->numVertices(), GMODEL->numElements()); diff --git a/Mesh/Makefile b/Mesh/Makefile index 4a9d22c903cbfdd83d391cc471094a82eb1e9e2d..ca0239cdeb44da5ca90de717279f3e15d083b172 100644 --- a/Mesh/Makefile +++ b/Mesh/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.163 2007-02-02 23:50:34 geuzaine Exp $ +# $Id: Makefile,v 1.164 2007-02-26 08:25:39 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -44,6 +44,7 @@ SRC = Generator.cpp \ meshGRegionExtruded.cpp \ DivideAndConquer.cpp \ BackgroundMesh.cpp \ + BoundaryLayer.cpp \ BDS.cpp \ SecondOrder.cpp @@ -74,35 +75,35 @@ Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Numeric/Numeric.h ../Common/Context.h ../Common/Views.h \ - ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Common/OS.h ../Geo/GModel.h ../Geo/GVertex.h \ - ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ - ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ - ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ - ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ - ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/SBoundingBox3d.h meshGEdge.h meshGFace.h meshGRegion.h \ - BackgroundMesh.h SecondOrder.h + ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/OS.h \ + ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ + ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ + ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \ + ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ + ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \ + ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \ + ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \ + ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/ExtrudeParams.h \ + ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ + ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ + ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ + meshGEdge.h meshGFace.h meshGRegion.h BackgroundMesh.h BoundaryLayer.h \ + SecondOrder.h Attractors.o: Attractors.cpp Attractors.h ../Geo/SPoint3.h ../Geo/Geo.h \ ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \ - ../Geo/ExtrudeParams.h ../Common/Message.h ../Geo/GEdge.h \ - ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/GVertex.h ../Geo/GEntity.h \ - ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ - ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \ + ../Common/Message.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/Range.h \ + ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GVertex.h \ + ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h \ + ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ + ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ + ../Geo/SVector3.h ../Common/Context.h ../Geo/ExtrudeParams.h \ ../Geo/GeoInterpolation.h ../Geo/Geo.h meshGEdge.o: meshGEdge.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ @@ -115,28 +116,29 @@ meshGEdge.o: meshGEdge.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/MRep.h \ - ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/MVertex.h \ - ../Geo/MEdge.h ../Geo/MElement.h ../Common/VertexArray.h ../Common/OS.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \ + ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ + ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ + ../Geo/ExtrudeParams.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \ + ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \ + ../Geo/ExtrudeParams.h ../Geo/MVertex.h ../Geo/MEdge.h \ + ../Geo/MElement.h ../Common/VertexArray.h ../Common/OS.h \ BackgroundMesh.h meshGEdgeExtruded.o: meshGEdgeExtruded.cpp ../Geo/ExtrudeParams.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ - ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Common/Message.h + ../Common/Message.h meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \ ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \ ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ @@ -147,19 +149,20 @@ meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \ ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/MVertex.h \ ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \ - ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h \ - ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ - ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \ - ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h BDS.h \ - ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h Attractors.h ../Geo/Geo.h ../Geo/gmshSurface.h \ - ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \ - ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../DataStr/Tree.h \ - ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ + ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ + ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/MRep.h ../Geo/GEdge.h \ + ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \ + ../Geo/ExtrudeParams.h ../Geo/MVertex.h ../Geo/MEdge.h \ + ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \ + ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ + ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Attractors.h \ + ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \ + ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ + ../Geo/SBoundingBox3d.h ../DataStr/Tree.h ../DataStr/avl.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \ ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ @@ -169,25 +172,25 @@ meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ - ../Common/Message.h + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \ + ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ + ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ + ../Geo/ExtrudeParams.h ../Common/Message.h meshGFaceExtruded.o: meshGFaceExtruded.cpp ../Geo/ExtrudeParams.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ - ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Common/Message.h + ../Common/Message.h meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ @@ -198,12 +201,11 @@ meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ../Geo/ExtrudeParams.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \ + ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h BackgroundMesh.h meshGFaceDelaunayInsertion.h \ - ../Common/Message.h + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Common/Message.h meshGRegion.o: meshGRegion.cpp meshGRegion.h \ meshGRegionDelaunayInsertion.h ../Geo/MElement.h \ ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \ @@ -215,11 +217,11 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h \ ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \ ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \ ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ - ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ - ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Geo/gmshRegion.h ../Geo/Geo.h \ + ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ + ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ + ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ + ../Geo/SBoundingBox3d.h ../Geo/gmshRegion.h ../Geo/Geo.h \ ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \ ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \ ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \ @@ -227,7 +229,7 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h \ ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h \ ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \ ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../Common/VertexArray.h ../Common/SmoothData.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \ BackgroundMesh.h meshGRegionDelaunayInsertion.h ../Geo/MElement.h \ @@ -240,11 +242,11 @@ meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \ ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \ ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \ ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ - ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ - ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Common/Message.h + ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ + ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ + ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ + ../Geo/SBoundingBox3d.h ../Common/Message.h meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ @@ -255,25 +257,25 @@ meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ../Geo/ExtrudeParams.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Common/Message.h + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \ + ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ + ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \ + ../Geo/ExtrudeParams.h ../Common/Message.h meshGRegionExtruded.o: meshGRegionExtruded.cpp ../Geo/ExtrudeParams.h \ - ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \ - ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \ - ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h meshGFace.h meshGRegion.h ../Common/Message.h + meshGFace.h meshGRegion.h ../Common/Message.h DivideAndConquer.o: DivideAndConquer.cpp ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ @@ -282,17 +284,16 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h BackgroundMesh.h \ - ../Common/Context.h ../Common/OctreePost.h ../Common/Octree.h \ - ../Common/OctreeInternals.h ../Geo/GVertex.h ../Geo/GEntity.h \ - ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ - ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \ - ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \ - ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \ - ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ - ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ - ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h BackgroundMesh.h ../Common/Context.h \ + ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \ @@ -302,6 +303,21 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \ ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \ ../Geo/ExtrudeParams.h +BoundaryLayer.o: BoundaryLayer.cpp BoundaryLayer.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \ + ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ + ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ + ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ + meshGEdge.h meshGFace.h ../Common/Message.h BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h BDS.h \ ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ @@ -312,12 +328,13 @@ BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h BDS.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \ - ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ - ../Geo/ExtrudeParams.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Message.h -SecondOrder.o: SecondOrder.cpp ../Geo/GModel.h ../Geo/GVertex.h \ - ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ + ../Common/SmoothData.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \ + ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Common/Message.h +SecondOrder.o: SecondOrder.cpp SecondOrder.h ../Geo/GModel.h \ + ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ @@ -325,11 +342,11 @@ SecondOrder.o: SecondOrder.cpp ../Geo/GModel.h ../Geo/GVertex.h \ ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \ - ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ - ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ - ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ - ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/SBoundingBox3d.h ../Common/SmoothNormals.h ../Geo/MRep.h \ - ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h \ - ../Geo/MEdge.h ../Geo/MElement.h ../Common/VertexArray.h \ - ../Common/Message.h ../Common/OS.h + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \ + ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \ + ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \ + ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ + ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ + ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \ + ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \ + ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h diff --git a/Mesh/SecondOrder.cpp b/Mesh/SecondOrder.cpp index d9900ce7cecfbd4a7ef7bbcca98009e3efa78a01..7d9c3c3cf360fcbaea8fdb3036f65adf52d462b1 100644 --- a/Mesh/SecondOrder.cpp +++ b/Mesh/SecondOrder.cpp @@ -1,4 +1,4 @@ -// $Id: SecondOrder.cpp,v 1.52 2007-01-30 08:56:36 geuzaine Exp $ +// $Id: SecondOrder.cpp,v 1.53 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -19,16 +19,12 @@ // // Please report all bugs and problems to <gmsh@geuz.org>. -#include "GModel.h" -#include "GFace.h" -#include "GEdge.h" +#include "SecondOrder.h" #include "MElement.h" #include "MRep.h" #include "Message.h" #include "OS.h" -extern GModel *GMODEL; - bool reparamOnFace(MVertex *v, GFace *gf, SPoint2 ¶m) { if(v->onWhat()->dim() == 0){ @@ -413,18 +409,18 @@ void removeSecondOrderVertices(GEntity *e) e->mesh_vertices = v1; } -void Degre1() +void Degre1(GModel *m) { // replace all elements with first order elements and mark all // unused vertices with a -1 visibility flag - for(GModel::eiter it = GMODEL->firstEdge(); it != GMODEL->lastEdge(); ++it){ + for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it){ setFirstOrder(*it, (*it)->lines); } - for(GModel::fiter it = GMODEL->firstFace(); it != GMODEL->lastFace(); ++it){ + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){ setFirstOrder(*it, (*it)->triangles); setFirstOrder(*it, (*it)->quadrangles); } - for(GModel::riter it = GMODEL->firstRegion(); it != GMODEL->lastRegion(); ++it){ + for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it){ setFirstOrder(*it, (*it)->tetrahedra); setFirstOrder(*it, (*it)->hexahedra); setFirstOrder(*it, (*it)->prisms); @@ -432,15 +428,15 @@ void Degre1() } // remove all vertices with a -1 visibility flag - for(GModel::eiter it = GMODEL->firstEdge(); it != GMODEL->lastEdge(); ++it) + for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it) removeSecondOrderVertices(*it); - for(GModel::fiter it = GMODEL->firstFace(); it != GMODEL->lastFace(); ++it) + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) removeSecondOrderVertices(*it); - for(GModel::riter it = GMODEL->firstRegion(); it != GMODEL->lastRegion(); ++it) + for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) removeSecondOrderVertices(*it); } -void Degre2(bool linear, bool incomplete) +void Degre2(GModel *m, bool linear, bool incomplete) { // replace all the elements in the mesh with second order elements // by creating unique vertices on the edges/faces of the mesh: @@ -461,16 +457,16 @@ void Degre2(bool linear, bool incomplete) double t1 = Cpu(); // first, make sure to remove any existsing second order vertices/elements - Degre1(); + Degre1(m); // then create new second order vertices/elements std::map<std::pair<MVertex*,MVertex*>, MVertex* > edgeVertices; std::map<std::vector<MVertex*>, MVertex* > faceVertices; - for(GModel::eiter it = GMODEL->firstEdge(); it != GMODEL->lastEdge(); ++it) + for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it) setSecondOrder(*it, edgeVertices, linear); - for(GModel::fiter it = GMODEL->firstFace(); it != GMODEL->lastFace(); ++it) + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete); - for(GModel::riter it = GMODEL->firstRegion(); it != GMODEL->lastRegion(); ++it) + for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete); double t2 = Cpu(); diff --git a/Mesh/SecondOrder.h b/Mesh/SecondOrder.h index 13451ed7cacf6d75a8775ac4efa60f67ea88ff45..57c02268567ccd3f573afb384f5aa3f94138075d 100644 --- a/Mesh/SecondOrder.h +++ b/Mesh/SecondOrder.h @@ -20,7 +20,9 @@ // // Please report all bugs and problems to <gmsh@geuz.org>. -void Degre1(); -void Degre2(bool linear=true, bool incomplete=false); +#include "GModel.h" + +void Degre1(GModel *m); +void Degre2(GModel *m, bool linear=true, bool incomplete=false); #endif diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index cb6de829832f5db00bba54aa1004bd4a7205d163..60f2940fb9a21746e868b33e2d40aa4823ea65c4 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -1,4 +1,4 @@ -// $Id: meshGEdge.cpp,v 1.28 2007-02-02 17:16:47 remacle Exp $ +// $Id: meshGEdge.cpp,v 1.29 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -178,6 +178,8 @@ double Integration(GEdge *ge, double t1, double t2, void deMeshGEdge::operator() (GEdge *ge) { + if(ge->geomType() == GEntity::DiscreteCurve) return; + for (unsigned int i = 0; i < ge->mesh_vertices.size(); i++) delete ge->mesh_vertices[i]; ge->mesh_vertices.clear(); @@ -190,6 +192,7 @@ void deMeshGEdge::operator() (GEdge *ge) void meshGEdge::operator() (GEdge *ge) { if(ge->geomType() == GEntity::DiscreteCurve) return; + if(ge->geomType() == GEntity::BoundaryLayerCurve) return; // Send a messsage to the GMSH environment Msg(INFO, "Meshing curve %d", ge->tag()); diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index d2b58d61a690fe98f82f42229bdd4e8f020dfd9b..1065e4d63e6b02bff36e5564066cb541008a5e3b 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFace.cpp,v 1.59 2007-02-02 23:53:04 geuzaine Exp $ +// $Id: meshGFace.cpp,v 1.60 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -1401,10 +1401,10 @@ bool gmsh2DMeshGeneratorPeriodic ( GFace *gf ) return true; } - - -void deMeshGFace :: operator() (GFace *gf) +void deMeshGFace::operator() (GFace *gf) { + if(gf->geomType() == GEntity::DiscreteSurface) return; + for (unsigned int i=0;i<gf->mesh_vertices.size();i++) delete gf->mesh_vertices[i]; gf->mesh_vertices.clear(); for (unsigned int i=0;i<gf->triangles.size();i++) delete gf->triangles[i]; @@ -1414,12 +1414,13 @@ void deMeshGFace :: operator() (GFace *gf) if(gf->meshRep) gf->meshRep->destroy(); } -void meshGFace :: operator() (GFace *gf) +void meshGFace::operator() (GFace *gf) { if(gf->geomType() == GEntity::DiscreteSurface) return; + if(gf->geomType() == GEntity::BoundaryLayerSurface) return; if(gf->geomType() == GEntity::ProjectionSurface) return; - Msg(STATUS2, "Meshing surface %d (%s)", gf->tag(),gf->getTypeString().c_str()); + Msg(STATUS2, "Meshing surface %d (%s)", gf->tag(), gf->getTypeString().c_str()); // destroy the mesh if it exists deMeshGFace dem; @@ -1428,29 +1429,25 @@ void meshGFace :: operator() (GFace *gf) if(MeshTransfiniteSurface(gf)) return; if(MeshExtrudedSurface(gf)) return; - std::vector<MVertex*> points; - std::vector<int> indices; // compute loops on the fly (indices indicate start and end points // of a loop; loops are not yet oriented) Msg(DEBUG1, "Computing edge loops"); + std::vector<MVertex*> points; + std::vector<int> indices; computeEdgeLoops(gf, points, indices); + // temp fix until we create MEdgeLoops in gmshFace Msg(DEBUG1, "Generating the mesh"); - // temp fix until we create MEdgeLoops in gmshFace: - if(gf->getNativeType() == GEntity::GmshModel || - gf->edgeLoops.empty() ) - { - gmsh2DMeshGenerator ( gf ); - } - else - { - if (!gmsh2DMeshGeneratorPeriodic ( gf )) - Msg(GERROR, "Impossible to mesh face %d",gf->tag()); - } - + if(gf->getNativeType() == GEntity::GmshModel || gf->edgeLoops.empty()){ + gmsh2DMeshGenerator(gf); + } + else{ + if(!gmsh2DMeshGeneratorPeriodic(gf)) + Msg(GERROR, "Impossible to mesh face %d", gf->tag()); + } + Msg(DEBUG1, "type %d %d triangles generated, %d internal vertices", - gf->geomType(),gf->triangles.size(),gf->mesh_vertices.size()); - + gf->geomType(), gf->triangles.size(), gf->mesh_vertices.size()); } template<class T> diff --git a/Mesh/meshGFace.h b/Mesh/meshGFace.h index 3cb51edea00160107370a98a93c10dd9cf366170..7f3b16b0c838559b26644845b020ba17a51b6aa5 100644 --- a/Mesh/meshGFace.h +++ b/Mesh/meshGFace.h @@ -46,7 +46,7 @@ class deMeshGFace { // orientation class orientMeshGFace { public : - void operator () ( GFace * ); + void operator () (GFace *); }; // Compute edge loops of the face, all_mvertices are the vertices of diff --git a/Mesh/meshGFaceExtruded.cpp b/Mesh/meshGFaceExtruded.cpp index b04c979ad76c056c0bf6fde40514e86851a49bb3..b7d32decd22bfe4d87dd990c982e2b1292a57674 100644 --- a/Mesh/meshGFaceExtruded.cpp +++ b/Mesh/meshGFaceExtruded.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFaceExtruded.cpp,v 1.16 2007-01-22 16:31:44 geuzaine Exp $ +// $Id: meshGFaceExtruded.cpp,v 1.17 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -219,3 +219,4 @@ int MeshExtrudedSurface(GFace *gf, return 1; } + diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp index ac05211b002264a0785ff770c2828729c853d274..15fd98ea14f74b0502b141623d9c4842fd1aee54 100644 --- a/Mesh/meshGRegion.cpp +++ b/Mesh/meshGRegion.cpp @@ -1,4 +1,4 @@ -// $Id: meshGRegion.cpp,v 1.27 2007-01-30 08:56:36 geuzaine Exp $ +// $Id: meshGRegion.cpp,v 1.28 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -340,6 +340,8 @@ void TransferVolumeMesh(GRegion *gr, Ng_Mesh *ngmesh, void deMeshGRegion::operator() (GRegion *gr) { + if(gr->geomType() == GEntity::DiscreteVolume) return; + for(unsigned int i = 0; i < gr->mesh_vertices.size(); i++) delete gr->mesh_vertices[i]; gr->mesh_vertices.clear(); @@ -540,6 +542,10 @@ void optimizeMeshGRegion::operator() (GRegion *gr) { if(gr->geomType() == GEntity::DiscreteVolume) return; + // don't optimize extruded meshes + ExtrudeParams *ep = gr->meshAttributes.extrude; + if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == EXTRUDED_ENTITY) return; + #if !defined(HAVE_NETGEN) Msg(GERROR, "Netgen is not compiled in this version of Gmsh"); #else diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index d95e07afbef9b68a25c5ab32ecbb6a9966331eb9..faeff30f0ad571a014a40956df01884af9250720 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -121,7 +121,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.306 2007-02-16 08:54:04 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.307 2007-02-26 08:25:39 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -215,11 +215,11 @@ typedef union { -#define YYFINAL 1179 +#define YYFINAL 1183 #define YYFLAG -32768 #define YYNTBASE 137 -#define YYTRANSLATE(x) ((unsigned)(x) <= 370 ? yytranslate[x] : 203) +#define YYTRANSLATE(x) ((unsigned)(x) <= 370 ? yytranslate[x] : 204) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -279,224 +279,225 @@ static const short yyprhs[] = { 0, 743, 747, 752, 757, 761, 769, 777, 781, 789, 793, 796, 799, 815, 818, 825, 834, 843, 854, 856, 859, 861, 865, 870, 872, 878, 890, 904, 905, 913, 914, - 928, 929, 945, 954, 963, 972, 985, 998, 1011, 1026, - 1041, 1056, 1057, 1070, 1071, 1084, 1085, 1098, 1099, 1116, - 1117, 1134, 1135, 1152, 1153, 1172, 1173, 1192, 1193, 1212, - 1214, 1217, 1223, 1231, 1241, 1244, 1251, 1261, 1271, 1280, - 1290, 1299, 1308, 1315, 1320, 1331, 1342, 1353, 1364, 1367, - 1369, 1373, 1376, 1379, 1382, 1386, 1390, 1394, 1398, 1402, - 1406, 1410, 1414, 1418, 1422, 1426, 1430, 1434, 1438, 1444, - 1449, 1454, 1459, 1464, 1469, 1474, 1479, 1484, 1489, 1494, - 1501, 1506, 1511, 1516, 1521, 1526, 1531, 1538, 1545, 1552, - 1557, 1562, 1567, 1572, 1577, 1582, 1587, 1592, 1597, 1602, - 1607, 1614, 1619, 1624, 1629, 1634, 1639, 1644, 1651, 1658, - 1665, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684, 1686, - 1692, 1697, 1702, 1705, 1711, 1715, 1722, 1727, 1735, 1742, - 1744, 1747, 1750, 1754, 1758, 1770, 1780, 1788, 1796, 1798, - 1802, 1804, 1806, 1809, 1813, 1818, 1822, 1828, 1833, 1835, - 1837, 1839, 1843, 1848, 1855, 1863, 1865, 1867, 1871, 1875, - 1885, 1893, 1895, 1901, 1905, 1912, 1914, 1918, 1920, 1922, - 1929, 1934, 1939, 1944, 1951, 1958 + 928, 929, 945, 946, 953, 962, 971, 980, 993, 1006, + 1019, 1034, 1049, 1064, 1065, 1078, 1079, 1092, 1093, 1106, + 1107, 1124, 1125, 1142, 1143, 1160, 1161, 1180, 1181, 1200, + 1201, 1220, 1222, 1225, 1231, 1239, 1249, 1252, 1259, 1269, + 1279, 1288, 1298, 1307, 1316, 1323, 1328, 1339, 1350, 1361, + 1372, 1375, 1377, 1381, 1384, 1387, 1390, 1394, 1398, 1402, + 1406, 1410, 1414, 1418, 1422, 1426, 1430, 1434, 1438, 1442, + 1446, 1452, 1457, 1462, 1467, 1472, 1477, 1482, 1487, 1492, + 1497, 1502, 1509, 1514, 1519, 1524, 1529, 1534, 1539, 1546, + 1553, 1560, 1565, 1570, 1575, 1580, 1585, 1590, 1595, 1600, + 1605, 1610, 1615, 1622, 1627, 1632, 1637, 1642, 1647, 1652, + 1659, 1666, 1673, 1678, 1680, 1682, 1684, 1686, 1688, 1690, + 1692, 1694, 1700, 1705, 1710, 1713, 1719, 1723, 1730, 1735, + 1743, 1750, 1752, 1755, 1758, 1762, 1766, 1778, 1788, 1796, + 1804, 1806, 1810, 1812, 1814, 1817, 1821, 1826, 1830, 1836, + 1841, 1843, 1845, 1847, 1851, 1856, 1863, 1871, 1873, 1875, + 1879, 1883, 1893, 1901, 1903, 1909, 1913, 1920, 1922, 1926, + 1928, 1930, 1937, 1942, 1947, 1952, 1959, 1966 }; static const short yyrhs[] = { 138, 0, 1, 6, 0, 0, 138, 139, 0, 142, 0, 141, 0, 161, 0, 163, 0, 164, 0, 167, 0, - 168, 0, 169, 0, 170, 0, 173, 0, 188, 0, - 189, 0, 190, 0, 172, 0, 171, 0, 115, 0, + 168, 0, 169, 0, 170, 0, 173, 0, 189, 0, + 190, 0, 191, 0, 172, 0, 171, 0, 115, 0, 115, 115, 0, 33, 127, 5, 128, 6, 0, 33, - 127, 5, 128, 140, 202, 6, 0, 33, 127, 5, - 133, 198, 128, 6, 0, 33, 127, 5, 133, 198, - 128, 140, 202, 6, 0, 4, 5, 134, 143, 135, - 6, 0, 4, 5, 4, 193, 134, 143, 135, 6, + 127, 5, 128, 140, 203, 6, 0, 33, 127, 5, + 133, 199, 128, 6, 0, 33, 127, 5, 133, 199, + 128, 140, 203, 6, 0, 4, 5, 134, 143, 135, + 6, 0, 4, 5, 4, 194, 134, 143, 135, 6, 0, 0, 143, 146, 0, 143, 150, 0, 143, 153, 0, 143, 155, 0, 143, 156, 0, 143, 158, 0, - 191, 0, 144, 133, 191, 0, 191, 0, 145, 133, - 191, 0, 0, 0, 4, 147, 127, 144, 128, 148, - 134, 145, 135, 6, 0, 202, 0, 149, 133, 202, - 0, 0, 76, 127, 191, 133, 191, 133, 191, 128, - 151, 134, 149, 135, 6, 0, 202, 0, 152, 133, - 202, 0, 0, 77, 127, 191, 133, 191, 133, 191, - 133, 191, 128, 154, 134, 152, 135, 6, 0, 78, - 134, 195, 135, 134, 195, 135, 6, 0, 0, 79, - 157, 134, 145, 135, 6, 0, 80, 127, 191, 128, - 196, 6, 0, 7, 0, 104, 0, 105, 0, 106, - 0, 107, 0, 123, 0, 124, 0, 4, 159, 191, - 6, 0, 4, 129, 191, 130, 159, 191, 6, 0, - 4, 129, 134, 198, 135, 130, 159, 196, 6, 0, - 4, 129, 130, 7, 196, 6, 0, 4, 129, 130, - 104, 196, 6, 0, 4, 160, 6, 0, 4, 129, - 191, 130, 160, 6, 0, 4, 131, 4, 7, 202, - 6, 0, 4, 129, 191, 130, 131, 4, 7, 202, - 6, 0, 4, 131, 4, 159, 191, 6, 0, 4, - 129, 191, 130, 131, 4, 159, 191, 6, 0, 4, - 131, 4, 160, 6, 0, 4, 129, 191, 130, 131, + 192, 0, 144, 133, 192, 0, 192, 0, 145, 133, + 192, 0, 0, 0, 4, 147, 127, 144, 128, 148, + 134, 145, 135, 6, 0, 203, 0, 149, 133, 203, + 0, 0, 76, 127, 192, 133, 192, 133, 192, 128, + 151, 134, 149, 135, 6, 0, 203, 0, 152, 133, + 203, 0, 0, 77, 127, 192, 133, 192, 133, 192, + 133, 192, 128, 154, 134, 152, 135, 6, 0, 78, + 134, 196, 135, 134, 196, 135, 6, 0, 0, 79, + 157, 134, 145, 135, 6, 0, 80, 127, 192, 128, + 197, 6, 0, 7, 0, 104, 0, 105, 0, 106, + 0, 107, 0, 123, 0, 124, 0, 4, 159, 192, + 6, 0, 4, 129, 192, 130, 159, 192, 6, 0, + 4, 129, 134, 199, 135, 130, 159, 197, 6, 0, + 4, 129, 130, 7, 197, 6, 0, 4, 129, 130, + 104, 197, 6, 0, 4, 160, 6, 0, 4, 129, + 192, 130, 160, 6, 0, 4, 131, 4, 7, 203, + 6, 0, 4, 129, 192, 130, 131, 4, 7, 203, + 6, 0, 4, 131, 4, 159, 192, 6, 0, 4, + 129, 192, 130, 131, 4, 159, 192, 6, 0, 4, + 131, 4, 160, 6, 0, 4, 129, 192, 130, 131, 4, 160, 6, 0, 4, 131, 87, 131, 4, 7, - 199, 6, 0, 4, 129, 191, 130, 131, 87, 131, - 4, 7, 199, 6, 0, 4, 131, 88, 7, 200, - 6, 0, 4, 129, 191, 130, 131, 88, 7, 200, - 6, 0, 61, 127, 4, 128, 131, 4, 7, 191, - 6, 0, 61, 127, 4, 128, 131, 4, 7, 202, - 6, 0, 191, 0, 202, 0, 41, 127, 191, 128, - 7, 193, 6, 0, 41, 127, 191, 128, 90, 46, - 134, 191, 135, 7, 193, 6, 0, 57, 41, 127, - 162, 128, 7, 196, 6, 0, 72, 41, 196, 7, - 196, 6, 0, 72, 44, 196, 7, 196, 6, 0, - 49, 50, 196, 7, 191, 6, 0, 44, 127, 191, - 128, 7, 196, 6, 0, 47, 127, 191, 128, 7, - 196, 6, 0, 42, 127, 191, 128, 7, 196, 6, - 0, 42, 127, 191, 128, 7, 196, 53, 193, 6, - 0, 43, 127, 191, 128, 7, 196, 6, 0, 43, - 127, 191, 128, 7, 196, 53, 193, 6, 0, 51, - 127, 191, 128, 7, 134, 191, 133, 191, 133, 5, - 133, 5, 133, 5, 135, 6, 0, 82, 127, 191, - 128, 7, 196, 6, 0, 83, 127, 191, 128, 7, - 196, 6, 0, 84, 127, 191, 128, 7, 196, 86, - 196, 85, 191, 6, 0, 44, 68, 127, 191, 128, - 7, 196, 6, 0, 57, 44, 127, 162, 128, 7, - 196, 6, 0, 53, 46, 127, 191, 128, 7, 196, - 6, 0, 54, 46, 127, 191, 128, 7, 196, 6, - 0, 45, 127, 191, 128, 7, 196, 6, 0, 46, - 68, 127, 191, 128, 7, 196, 6, 0, 57, 46, - 127, 162, 128, 7, 196, 6, 0, 56, 48, 127, - 191, 128, 7, 196, 6, 0, 48, 127, 191, 128, - 7, 196, 6, 0, 57, 48, 127, 162, 128, 7, - 196, 6, 0, 63, 193, 134, 165, 135, 0, 62, - 134, 193, 133, 193, 133, 191, 135, 134, 165, 135, - 0, 64, 193, 134, 165, 135, 0, 65, 134, 193, - 133, 191, 135, 134, 165, 135, 0, 167, 0, 166, + 200, 6, 0, 4, 129, 192, 130, 131, 87, 131, + 4, 7, 200, 6, 0, 4, 131, 88, 7, 201, + 6, 0, 4, 129, 192, 130, 131, 88, 7, 201, + 6, 0, 61, 127, 4, 128, 131, 4, 7, 192, + 6, 0, 61, 127, 4, 128, 131, 4, 7, 203, + 6, 0, 192, 0, 203, 0, 41, 127, 192, 128, + 7, 194, 6, 0, 41, 127, 192, 128, 90, 46, + 134, 192, 135, 7, 194, 6, 0, 57, 41, 127, + 162, 128, 7, 197, 6, 0, 72, 41, 197, 7, + 197, 6, 0, 72, 44, 197, 7, 197, 6, 0, + 49, 50, 197, 7, 192, 6, 0, 44, 127, 192, + 128, 7, 197, 6, 0, 47, 127, 192, 128, 7, + 197, 6, 0, 42, 127, 192, 128, 7, 197, 6, + 0, 42, 127, 192, 128, 7, 197, 53, 194, 6, + 0, 43, 127, 192, 128, 7, 197, 6, 0, 43, + 127, 192, 128, 7, 197, 53, 194, 6, 0, 51, + 127, 192, 128, 7, 134, 192, 133, 192, 133, 5, + 133, 5, 133, 5, 135, 6, 0, 82, 127, 192, + 128, 7, 197, 6, 0, 83, 127, 192, 128, 7, + 197, 6, 0, 84, 127, 192, 128, 7, 197, 86, + 197, 85, 192, 6, 0, 44, 68, 127, 192, 128, + 7, 197, 6, 0, 57, 44, 127, 162, 128, 7, + 197, 6, 0, 53, 46, 127, 192, 128, 7, 197, + 6, 0, 54, 46, 127, 192, 128, 7, 197, 6, + 0, 45, 127, 192, 128, 7, 197, 6, 0, 46, + 68, 127, 192, 128, 7, 197, 6, 0, 57, 46, + 127, 162, 128, 7, 197, 6, 0, 56, 48, 127, + 192, 128, 7, 197, 6, 0, 48, 127, 192, 128, + 7, 197, 6, 0, 57, 48, 127, 162, 128, 7, + 197, 6, 0, 63, 194, 134, 165, 135, 0, 62, + 134, 194, 133, 194, 133, 192, 135, 134, 165, 135, + 0, 64, 194, 134, 165, 135, 0, 65, 134, 194, + 133, 192, 135, 134, 165, 135, 0, 167, 0, 166, 0, 164, 0, 0, 166, 163, 0, 166, 41, 134, - 198, 135, 6, 0, 166, 44, 134, 198, 135, 6, - 0, 166, 46, 134, 198, 135, 6, 0, 166, 48, - 134, 198, 135, 6, 0, 67, 134, 166, 135, 0, - 67, 4, 129, 191, 130, 6, 0, 74, 4, 129, - 191, 130, 6, 0, 75, 4, 129, 191, 130, 6, - 0, 70, 134, 166, 135, 0, 70, 4, 129, 191, + 199, 135, 6, 0, 166, 44, 134, 199, 135, 6, + 0, 166, 46, 134, 199, 135, 6, 0, 166, 48, + 134, 199, 135, 6, 0, 67, 134, 166, 135, 0, + 67, 4, 129, 192, 130, 6, 0, 74, 4, 129, + 192, 130, 6, 0, 75, 4, 129, 192, 130, 6, + 0, 70, 134, 166, 135, 0, 70, 4, 129, 192, 130, 6, 0, 70, 4, 6, 0, 70, 4, 4, - 6, 0, 87, 199, 134, 166, 135, 0, 98, 202, - 6, 0, 99, 202, 6, 0, 98, 134, 166, 135, - 0, 99, 134, 166, 135, 0, 4, 202, 6, 0, - 4, 4, 129, 191, 130, 202, 6, 0, 4, 4, - 4, 129, 191, 130, 6, 0, 4, 191, 6, 0, + 6, 0, 87, 200, 134, 166, 135, 0, 98, 203, + 6, 0, 99, 203, 6, 0, 98, 134, 166, 135, + 0, 99, 134, 166, 135, 0, 4, 203, 6, 0, + 4, 4, 129, 192, 130, 203, 6, 0, 4, 4, + 4, 129, 192, 130, 6, 0, 4, 192, 6, 0, 61, 127, 4, 128, 131, 4, 6, 0, 81, 4, 6, 0, 94, 6, 0, 38, 6, 0, 38, 134, - 191, 133, 191, 133, 191, 133, 191, 133, 191, 133, - 191, 135, 6, 0, 39, 6, 0, 89, 127, 191, - 8, 191, 128, 0, 89, 127, 191, 8, 191, 8, - 191, 128, 0, 89, 4, 90, 134, 191, 8, 191, - 135, 0, 89, 4, 90, 134, 191, 8, 191, 8, - 191, 135, 0, 91, 0, 97, 4, 0, 95, 0, - 96, 4, 6, 0, 92, 127, 191, 128, 0, 93, - 0, 66, 193, 134, 166, 135, 0, 66, 134, 193, - 133, 193, 133, 191, 135, 134, 166, 135, 0, 66, - 134, 193, 133, 193, 133, 193, 133, 191, 135, 134, - 166, 135, 0, 0, 66, 193, 134, 166, 174, 186, - 135, 0, 0, 66, 134, 193, 133, 193, 133, 191, - 135, 134, 166, 175, 186, 135, 0, 0, 66, 134, - 193, 133, 193, 133, 193, 133, 191, 135, 134, 166, - 176, 186, 135, 0, 66, 41, 134, 191, 133, 193, - 135, 6, 0, 66, 44, 134, 191, 133, 193, 135, - 6, 0, 66, 46, 134, 191, 133, 193, 135, 6, - 0, 66, 41, 134, 191, 133, 193, 133, 193, 133, - 191, 135, 6, 0, 66, 44, 134, 191, 133, 193, - 133, 193, 133, 191, 135, 6, 0, 66, 46, 134, - 191, 133, 193, 133, 193, 133, 191, 135, 6, 0, - 66, 41, 134, 191, 133, 193, 133, 193, 133, 193, - 133, 191, 135, 6, 0, 66, 44, 134, 191, 133, - 193, 133, 193, 133, 193, 133, 191, 135, 6, 0, - 66, 46, 134, 191, 133, 193, 133, 193, 133, 193, - 133, 191, 135, 6, 0, 0, 66, 41, 134, 191, - 133, 193, 135, 177, 134, 186, 135, 6, 0, 0, - 66, 44, 134, 191, 133, 193, 135, 178, 134, 186, - 135, 6, 0, 0, 66, 46, 134, 191, 133, 193, - 135, 179, 134, 186, 135, 6, 0, 0, 66, 41, - 134, 191, 133, 193, 133, 193, 133, 191, 135, 180, - 134, 186, 135, 6, 0, 0, 66, 44, 134, 191, - 133, 193, 133, 193, 133, 191, 135, 181, 134, 186, - 135, 6, 0, 0, 66, 46, 134, 191, 133, 193, - 133, 193, 133, 191, 135, 182, 134, 186, 135, 6, - 0, 0, 66, 41, 134, 191, 133, 193, 133, 193, - 133, 193, 133, 191, 135, 183, 134, 186, 135, 6, - 0, 0, 66, 44, 134, 191, 133, 193, 133, 193, - 133, 193, 133, 191, 135, 184, 134, 186, 135, 6, - 0, 0, 66, 46, 134, 191, 133, 193, 133, 193, - 133, 193, 133, 191, 135, 185, 134, 186, 135, 6, - 0, 187, 0, 186, 187, 0, 73, 134, 191, 135, - 6, 0, 73, 134, 196, 133, 196, 135, 6, 0, - 73, 134, 196, 133, 196, 133, 196, 135, 6, 0, - 69, 6, 0, 55, 44, 196, 7, 191, 6, 0, - 55, 44, 196, 7, 191, 58, 60, 191, 6, 0, - 55, 44, 196, 7, 191, 58, 59, 191, 6, 0, - 55, 46, 134, 191, 135, 7, 196, 6, 0, 55, - 46, 134, 191, 135, 7, 196, 4, 6, 0, 52, - 46, 134, 191, 135, 7, 196, 6, 0, 55, 48, - 134, 191, 135, 7, 196, 6, 0, 69, 46, 196, - 7, 191, 6, 0, 69, 46, 196, 6, 0, 41, - 134, 198, 135, 90, 46, 134, 191, 135, 6, 0, - 44, 134, 198, 135, 90, 46, 134, 191, 135, 6, - 0, 44, 134, 198, 135, 90, 48, 134, 191, 135, - 6, 0, 46, 134, 198, 135, 90, 48, 134, 191, - 135, 6, 0, 71, 6, 0, 192, 0, 127, 191, - 128, 0, 118, 191, 0, 117, 191, 0, 122, 191, - 0, 191, 118, 191, 0, 191, 117, 191, 0, 191, - 119, 191, 0, 191, 120, 191, 0, 191, 121, 191, - 0, 191, 126, 191, 0, 191, 113, 191, 0, 191, - 115, 191, 0, 191, 114, 191, 0, 191, 116, 191, - 0, 191, 111, 191, 0, 191, 112, 191, 0, 191, - 110, 191, 0, 191, 109, 191, 0, 191, 108, 191, - 8, 191, 0, 12, 127, 191, 128, 0, 13, 127, - 191, 128, 0, 14, 127, 191, 128, 0, 15, 127, - 191, 128, 0, 16, 127, 191, 128, 0, 17, 127, - 191, 128, 0, 18, 127, 191, 128, 0, 19, 127, - 191, 128, 0, 20, 127, 191, 128, 0, 22, 127, - 191, 128, 0, 23, 127, 191, 133, 191, 128, 0, - 24, 127, 191, 128, 0, 25, 127, 191, 128, 0, - 26, 127, 191, 128, 0, 27, 127, 191, 128, 0, - 28, 127, 191, 128, 0, 29, 127, 191, 128, 0, - 30, 127, 191, 133, 191, 128, 0, 31, 127, 191, - 133, 191, 128, 0, 32, 127, 191, 133, 191, 128, - 0, 21, 127, 191, 128, 0, 12, 129, 191, 130, - 0, 13, 129, 191, 130, 0, 14, 129, 191, 130, - 0, 15, 129, 191, 130, 0, 16, 129, 191, 130, - 0, 17, 129, 191, 130, 0, 18, 129, 191, 130, - 0, 19, 129, 191, 130, 0, 20, 129, 191, 130, - 0, 22, 129, 191, 130, 0, 23, 129, 191, 133, - 191, 130, 0, 24, 129, 191, 130, 0, 25, 129, - 191, 130, 0, 26, 129, 191, 130, 0, 27, 129, - 191, 130, 0, 28, 129, 191, 130, 0, 29, 129, - 191, 130, 0, 30, 129, 191, 133, 191, 130, 0, - 31, 129, 191, 133, 191, 130, 0, 32, 129, 191, - 133, 191, 130, 0, 21, 129, 191, 130, 0, 3, - 0, 9, 0, 10, 0, 11, 0, 101, 0, 102, - 0, 103, 0, 4, 0, 4, 136, 134, 191, 135, - 0, 4, 129, 191, 130, 0, 132, 4, 129, 130, - 0, 4, 160, 0, 4, 129, 191, 130, 160, 0, - 4, 131, 4, 0, 4, 129, 191, 130, 131, 4, - 0, 4, 131, 4, 160, 0, 4, 129, 191, 130, - 131, 4, 160, 0, 100, 127, 5, 133, 191, 128, - 0, 194, 0, 118, 193, 0, 117, 193, 0, 193, - 118, 193, 0, 193, 117, 193, 0, 134, 191, 133, - 191, 133, 191, 133, 191, 133, 191, 135, 0, 134, - 191, 133, 191, 133, 191, 133, 191, 135, 0, 134, - 191, 133, 191, 133, 191, 135, 0, 127, 191, 133, - 191, 133, 191, 128, 0, 196, 0, 195, 133, 196, - 0, 191, 0, 197, 0, 134, 135, 0, 134, 198, - 135, 0, 118, 134, 198, 135, 0, 191, 8, 191, - 0, 191, 8, 191, 8, 191, 0, 41, 134, 191, - 135, 0, 164, 0, 167, 0, 173, 0, 4, 129, - 130, 0, 118, 4, 129, 130, 0, 4, 129, 134, - 198, 135, 130, 0, 118, 4, 129, 134, 198, 135, - 130, 0, 191, 0, 197, 0, 198, 133, 191, 0, - 198, 133, 197, 0, 134, 191, 133, 191, 133, 191, - 133, 191, 135, 0, 134, 191, 133, 191, 133, 191, - 135, 0, 4, 0, 4, 131, 87, 131, 4, 0, - 134, 201, 135, 0, 4, 129, 191, 130, 131, 88, - 0, 199, 0, 201, 133, 199, 0, 5, 0, 40, - 0, 35, 127, 202, 133, 202, 128, 0, 36, 127, - 202, 128, 0, 37, 127, 202, 128, 0, 34, 127, - 202, 128, 0, 34, 127, 202, 133, 198, 128, 0, - 34, 127, 4, 131, 4, 128, 0, 34, 127, 4, - 129, 191, 130, 131, 4, 128, 0 + 192, 133, 192, 133, 192, 133, 192, 133, 192, 133, + 192, 135, 6, 0, 39, 6, 0, 89, 127, 192, + 8, 192, 128, 0, 89, 127, 192, 8, 192, 8, + 192, 128, 0, 89, 4, 90, 134, 192, 8, 192, + 135, 0, 89, 4, 90, 134, 192, 8, 192, 8, + 192, 135, 0, 91, 0, 97, 4, 0, 95, 0, + 96, 4, 6, 0, 92, 127, 192, 128, 0, 93, + 0, 66, 194, 134, 166, 135, 0, 66, 134, 194, + 133, 194, 133, 192, 135, 134, 166, 135, 0, 66, + 134, 194, 133, 194, 133, 194, 133, 192, 135, 134, + 166, 135, 0, 0, 66, 194, 134, 166, 174, 187, + 135, 0, 0, 66, 134, 194, 133, 194, 133, 192, + 135, 134, 166, 175, 187, 135, 0, 0, 66, 134, + 194, 133, 194, 133, 194, 133, 192, 135, 134, 166, + 176, 187, 135, 0, 0, 66, 134, 166, 177, 187, + 135, 0, 66, 41, 134, 192, 133, 194, 135, 6, + 0, 66, 44, 134, 192, 133, 194, 135, 6, 0, + 66, 46, 134, 192, 133, 194, 135, 6, 0, 66, + 41, 134, 192, 133, 194, 133, 194, 133, 192, 135, + 6, 0, 66, 44, 134, 192, 133, 194, 133, 194, + 133, 192, 135, 6, 0, 66, 46, 134, 192, 133, + 194, 133, 194, 133, 192, 135, 6, 0, 66, 41, + 134, 192, 133, 194, 133, 194, 133, 194, 133, 192, + 135, 6, 0, 66, 44, 134, 192, 133, 194, 133, + 194, 133, 194, 133, 192, 135, 6, 0, 66, 46, + 134, 192, 133, 194, 133, 194, 133, 194, 133, 192, + 135, 6, 0, 0, 66, 41, 134, 192, 133, 194, + 135, 178, 134, 187, 135, 6, 0, 0, 66, 44, + 134, 192, 133, 194, 135, 179, 134, 187, 135, 6, + 0, 0, 66, 46, 134, 192, 133, 194, 135, 180, + 134, 187, 135, 6, 0, 0, 66, 41, 134, 192, + 133, 194, 133, 194, 133, 192, 135, 181, 134, 187, + 135, 6, 0, 0, 66, 44, 134, 192, 133, 194, + 133, 194, 133, 192, 135, 182, 134, 187, 135, 6, + 0, 0, 66, 46, 134, 192, 133, 194, 133, 194, + 133, 192, 135, 183, 134, 187, 135, 6, 0, 0, + 66, 41, 134, 192, 133, 194, 133, 194, 133, 194, + 133, 192, 135, 184, 134, 187, 135, 6, 0, 0, + 66, 44, 134, 192, 133, 194, 133, 194, 133, 194, + 133, 192, 135, 185, 134, 187, 135, 6, 0, 0, + 66, 46, 134, 192, 133, 194, 133, 194, 133, 194, + 133, 192, 135, 186, 134, 187, 135, 6, 0, 188, + 0, 187, 188, 0, 73, 134, 192, 135, 6, 0, + 73, 134, 197, 133, 197, 135, 6, 0, 73, 134, + 197, 133, 197, 133, 197, 135, 6, 0, 69, 6, + 0, 55, 44, 197, 7, 192, 6, 0, 55, 44, + 197, 7, 192, 58, 60, 192, 6, 0, 55, 44, + 197, 7, 192, 58, 59, 192, 6, 0, 55, 46, + 134, 192, 135, 7, 197, 6, 0, 55, 46, 134, + 192, 135, 7, 197, 4, 6, 0, 52, 46, 134, + 192, 135, 7, 197, 6, 0, 55, 48, 134, 192, + 135, 7, 197, 6, 0, 69, 46, 197, 7, 192, + 6, 0, 69, 46, 197, 6, 0, 41, 134, 199, + 135, 90, 46, 134, 192, 135, 6, 0, 44, 134, + 199, 135, 90, 46, 134, 192, 135, 6, 0, 44, + 134, 199, 135, 90, 48, 134, 192, 135, 6, 0, + 46, 134, 199, 135, 90, 48, 134, 192, 135, 6, + 0, 71, 6, 0, 193, 0, 127, 192, 128, 0, + 118, 192, 0, 117, 192, 0, 122, 192, 0, 192, + 118, 192, 0, 192, 117, 192, 0, 192, 119, 192, + 0, 192, 120, 192, 0, 192, 121, 192, 0, 192, + 126, 192, 0, 192, 113, 192, 0, 192, 115, 192, + 0, 192, 114, 192, 0, 192, 116, 192, 0, 192, + 111, 192, 0, 192, 112, 192, 0, 192, 110, 192, + 0, 192, 109, 192, 0, 192, 108, 192, 8, 192, + 0, 12, 127, 192, 128, 0, 13, 127, 192, 128, + 0, 14, 127, 192, 128, 0, 15, 127, 192, 128, + 0, 16, 127, 192, 128, 0, 17, 127, 192, 128, + 0, 18, 127, 192, 128, 0, 19, 127, 192, 128, + 0, 20, 127, 192, 128, 0, 22, 127, 192, 128, + 0, 23, 127, 192, 133, 192, 128, 0, 24, 127, + 192, 128, 0, 25, 127, 192, 128, 0, 26, 127, + 192, 128, 0, 27, 127, 192, 128, 0, 28, 127, + 192, 128, 0, 29, 127, 192, 128, 0, 30, 127, + 192, 133, 192, 128, 0, 31, 127, 192, 133, 192, + 128, 0, 32, 127, 192, 133, 192, 128, 0, 21, + 127, 192, 128, 0, 12, 129, 192, 130, 0, 13, + 129, 192, 130, 0, 14, 129, 192, 130, 0, 15, + 129, 192, 130, 0, 16, 129, 192, 130, 0, 17, + 129, 192, 130, 0, 18, 129, 192, 130, 0, 19, + 129, 192, 130, 0, 20, 129, 192, 130, 0, 22, + 129, 192, 130, 0, 23, 129, 192, 133, 192, 130, + 0, 24, 129, 192, 130, 0, 25, 129, 192, 130, + 0, 26, 129, 192, 130, 0, 27, 129, 192, 130, + 0, 28, 129, 192, 130, 0, 29, 129, 192, 130, + 0, 30, 129, 192, 133, 192, 130, 0, 31, 129, + 192, 133, 192, 130, 0, 32, 129, 192, 133, 192, + 130, 0, 21, 129, 192, 130, 0, 3, 0, 9, + 0, 10, 0, 11, 0, 101, 0, 102, 0, 103, + 0, 4, 0, 4, 136, 134, 192, 135, 0, 4, + 129, 192, 130, 0, 132, 4, 129, 130, 0, 4, + 160, 0, 4, 129, 192, 130, 160, 0, 4, 131, + 4, 0, 4, 129, 192, 130, 131, 4, 0, 4, + 131, 4, 160, 0, 4, 129, 192, 130, 131, 4, + 160, 0, 100, 127, 5, 133, 192, 128, 0, 195, + 0, 118, 194, 0, 117, 194, 0, 194, 118, 194, + 0, 194, 117, 194, 0, 134, 192, 133, 192, 133, + 192, 133, 192, 133, 192, 135, 0, 134, 192, 133, + 192, 133, 192, 133, 192, 135, 0, 134, 192, 133, + 192, 133, 192, 135, 0, 127, 192, 133, 192, 133, + 192, 128, 0, 197, 0, 196, 133, 197, 0, 192, + 0, 198, 0, 134, 135, 0, 134, 199, 135, 0, + 118, 134, 199, 135, 0, 192, 8, 192, 0, 192, + 8, 192, 8, 192, 0, 41, 134, 192, 135, 0, + 164, 0, 167, 0, 173, 0, 4, 129, 130, 0, + 118, 4, 129, 130, 0, 4, 129, 134, 199, 135, + 130, 0, 118, 4, 129, 134, 199, 135, 130, 0, + 192, 0, 198, 0, 199, 133, 192, 0, 199, 133, + 198, 0, 134, 192, 133, 192, 133, 192, 133, 192, + 135, 0, 134, 192, 133, 192, 133, 192, 135, 0, + 4, 0, 4, 131, 87, 131, 4, 0, 134, 202, + 135, 0, 4, 129, 192, 130, 131, 88, 0, 200, + 0, 202, 133, 200, 0, 5, 0, 40, 0, 35, + 127, 203, 133, 203, 128, 0, 36, 127, 203, 128, + 0, 37, 127, 203, 128, 0, 34, 127, 203, 128, + 0, 34, 127, 203, 133, 199, 128, 0, 34, 127, + 4, 131, 4, 128, 0, 34, 127, 4, 129, 192, + 130, 131, 4, 128, 0 }; #endif @@ -519,24 +520,24 @@ static const short yyrline[] = { 0, 1803, 1809, 1818, 1831, 1882, 1897, 1908, 1928, 1938, 1960, 1964, 1969, 1974, 1984, 2001, 2017, 2043, 2070, 2102, 2109, 2114, 2120, 2124, 2132, 2141, 2149, 2157, 2162, 2170, 2175, - 2183, 2188, 2198, 2205, 2212, 2219, 2226, 2233, 2240, 2247, - 2254, 2261, 2266, 2273, 2278, 2285, 2290, 2297, 2302, 2309, - 2314, 2321, 2326, 2333, 2338, 2345, 2350, 2357, 2362, 2372, - 2376, 2381, 2391, 2413, 2437, 2445, 2464, 2482, 2500, 2529, - 2564, 2569, 2596, 2610, 2628, 2635, 2641, 2644, 2652, 2662, - 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2678, 2679, - 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, + 2183, 2188, 2196, 2201, 2210, 2217, 2224, 2231, 2238, 2245, + 2252, 2259, 2266, 2273, 2278, 2285, 2290, 2297, 2302, 2309, + 2314, 2321, 2326, 2333, 2338, 2345, 2350, 2357, 2362, 2369, + 2374, 2384, 2388, 2393, 2403, 2425, 2449, 2457, 2476, 2494, + 2512, 2541, 2576, 2581, 2608, 2622, 2640, 2647, 2653, 2656, + 2664, 2674, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, - 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, - 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, - 2731, 2736, 2741, 2742, 2743, 2744, 2745, 2746, 2750, 2766, - 2781, 2801, 2815, 2828, 2851, 2869, 2887, 2905, 2923, 2930, - 2935, 2939, 2943, 2947, 2953, 2958, 2962, 2966, 2972, 2978, - 2985, 2991, 2995, 3000, 3004, 3015, 3022, 3033, 3053, 3063, - 3073, 3083, 3100, 3119, 3143, 3171, 3177, 3181, 3185, 3197, - 3202, 3214, 3221, 3242, 3247, 3261, 3267, 3273, 3278, 3286, - 3294, 3308, 3322, 3326, 3345, 3367 + 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, + 2720, 2721, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, + 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, + 2741, 2742, 2743, 2748, 2753, 2754, 2755, 2756, 2757, 2758, + 2762, 2778, 2793, 2813, 2827, 2840, 2863, 2881, 2899, 2917, + 2935, 2942, 2947, 2951, 2955, 2959, 2965, 2970, 2974, 2978, + 2984, 2990, 2997, 3003, 3007, 3012, 3016, 3027, 3034, 3045, + 3065, 3075, 3085, 3095, 3112, 3131, 3155, 3183, 3189, 3193, + 3197, 3209, 3214, 3226, 3233, 3254, 3259, 3273, 3279, 3285, + 3290, 3298, 3306, 3320, 3334, 3338, 3357, 3379 }; #endif @@ -566,7 +567,7 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "Time","@5","Grain","NumericAffectation","NumericIncrement","Affectation","PhysicalId", "Shape","Transform","MultipleShape","ListOfShapes","Duplicata","Delete","Colorify", "Visibility","Command","Loop","Extrude","@6","@7","@8","@9","@10","@11","@12", -"@13","@14","@15","@16","@17","ExtrudeParameters","ExtrudeParameter","Transfinite", +"@13","@14","@15","@16","@17","@18","ExtrudeParameters","ExtrudeParameter","Transfinite", "Embedding","Coherence","FExpr","FExpr_Single","VExpr","VExpr_Single","RecursiveListOfListOfDouble", "ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor", "RecursiveListOfColor","StringExpr", NULL @@ -590,24 +591,24 @@ static const short yyr1[] = { 0, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 174, 173, 175, 173, - 176, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 177, 173, 178, 173, 179, 173, 180, 173, 181, + 176, 173, 177, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 178, 173, 179, 173, 180, 173, 181, 173, 182, 173, 183, 173, 184, 173, 185, 173, 186, - 186, 187, 187, 187, 187, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 189, 189, 189, 189, 190, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 173, 187, 187, 188, 188, 188, 188, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, - 193, 193, 193, 193, 194, 194, 194, 194, 195, 195, - 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 198, 198, 198, 198, 199, - 199, 199, 199, 200, 200, 201, 201, 202, 202, 202, - 202, 202, 202, 202, 202, 202 + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 194, 194, 194, 194, 194, 195, 195, 195, 195, + 196, 196, 197, 197, 197, 197, 197, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, + 199, 200, 200, 200, 200, 201, 201, 202, 202, 203, + 203, 203, 203, 203, 203, 203, 203, 203 }; static const short yyr2[] = { 0, @@ -627,24 +628,24 @@ static const short yyr2[] = { 0, 3, 4, 4, 3, 7, 7, 3, 7, 3, 2, 2, 15, 2, 6, 8, 8, 10, 1, 2, 1, 3, 4, 1, 5, 11, 13, 0, 7, 0, 13, - 0, 15, 8, 8, 8, 12, 12, 12, 14, 14, - 14, 0, 12, 0, 12, 0, 12, 0, 16, 0, - 16, 0, 16, 0, 18, 0, 18, 0, 18, 1, - 2, 5, 7, 9, 2, 6, 9, 9, 8, 9, - 8, 8, 6, 4, 10, 10, 10, 10, 2, 1, - 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, - 4, 4, 4, 4, 4, 4, 6, 6, 6, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 6, 4, 4, 4, 4, 4, 4, 6, 6, 6, - 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 4, 4, 2, 5, 3, 6, 4, 7, 6, 1, - 2, 2, 3, 3, 11, 9, 7, 7, 1, 3, - 1, 1, 2, 3, 4, 3, 5, 4, 1, 1, - 1, 3, 4, 6, 7, 1, 1, 3, 3, 9, - 7, 1, 5, 3, 6, 1, 3, 1, 1, 6, - 4, 4, 4, 6, 6, 9 + 0, 15, 0, 6, 8, 8, 8, 12, 12, 12, + 14, 14, 14, 0, 12, 0, 12, 0, 12, 0, + 16, 0, 16, 0, 16, 0, 18, 0, 18, 0, + 18, 1, 2, 5, 7, 9, 2, 6, 9, 9, + 8, 9, 8, 8, 6, 4, 10, 10, 10, 10, + 2, 1, 3, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 6, 4, 4, 4, 4, 4, 4, 6, 6, + 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 6, 4, 4, 4, 4, 4, 4, 6, + 6, 6, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 4, 4, 2, 5, 3, 6, 4, 7, + 6, 1, 2, 2, 3, 3, 11, 9, 7, 7, + 1, 3, 1, 1, 2, 3, 4, 3, 5, 4, + 1, 1, 1, 3, 4, 6, 7, 1, 1, 3, + 3, 9, 7, 1, 5, 3, 6, 1, 3, 1, + 1, 6, 4, 4, 4, 6, 6, 9 }; static const short yydefact[] = { 0, @@ -654,1296 +655,1296 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 153, 0, 150, 0, 0, 0, 0, 4, 6, 5, 7, 8, 9, 10, 11, 12, - 13, 19, 18, 14, 15, 16, 17, 272, 279, 328, - 54, 273, 274, 275, 0, 0, 0, 0, 0, 0, + 13, 19, 18, 14, 15, 16, 17, 274, 281, 330, + 54, 275, 276, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 0, 276, 277, 278, 55, 56, 57, 58, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, + 0, 278, 279, 280, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, - 210, 0, 0, 141, 0, 143, 0, 0, 0, 0, + 212, 0, 0, 141, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, - 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, - 115, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 322, 0, 0, 0, 0, 0, 140, 0, 149, 328, - 115, 0, 115, 0, 0, 0, 0, 0, 283, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, + 0, 0, 0, 0, 115, 0, 0, 115, 0, 0, + 115, 211, 0, 0, 0, 0, 0, 0, 0, 0, + 324, 0, 0, 0, 0, 0, 140, 0, 149, 330, + 115, 0, 115, 0, 0, 0, 0, 0, 285, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 213, - 212, 214, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 281, 215, + 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, - 0, 0, 279, 0, 0, 309, 310, 311, 316, 317, + 0, 0, 281, 0, 0, 311, 312, 313, 318, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 301, 0, 302, 0, 0, 0, 0, + 0, 0, 0, 303, 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 292, 291, 0, 0, 0, 0, 115, 115, 0, 0, - 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 139, 0, - 0, 0, 0, 0, 115, 0, 0, 0, 151, 0, - 130, 0, 131, 0, 0, 285, 0, 0, 0, 0, + 294, 293, 0, 0, 0, 0, 115, 115, 0, 0, + 0, 0, 0, 0, 0, 163, 0, 115, 0, 0, + 0, 0, 127, 0, 0, 0, 0, 0, 0, 139, + 0, 0, 0, 0, 0, 115, 0, 0, 0, 151, + 0, 130, 0, 131, 0, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 61, - 0, 228, 227, 225, 226, 221, 223, 222, 224, 216, - 215, 217, 218, 219, 220, 0, 0, 0, 0, 0, - 0, 279, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, - 0, 0, 0, 0, 0, 0, 0, 294, 293, 114, - 0, 113, 112, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 0, 0, 0, 0, 121, 116, 204, 0, - 128, 0, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 132, 133, 0, 281, - 287, 0, 28, 39, 0, 0, 0, 51, 0, 0, - 29, 30, 31, 32, 33, 34, 230, 251, 231, 252, - 232, 253, 233, 254, 234, 255, 235, 256, 236, 257, - 237, 258, 238, 259, 250, 271, 239, 260, 0, 0, - 241, 262, 242, 263, 243, 264, 244, 265, 245, 266, - 246, 267, 0, 0, 0, 0, 0, 0, 0, 0, - 333, 0, 0, 331, 332, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, - 282, 0, 22, 20, 0, 0, 0, 0, 0, 312, - 0, 0, 0, 306, 318, 319, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 61, 0, 230, 229, 227, 228, 223, 225, 224, 226, + 218, 217, 219, 220, 221, 222, 0, 0, 0, 0, + 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 81, 0, 0, 0, 0, 0, 0, 0, 296, 295, + 114, 0, 113, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 0, 157, 0, 121, + 206, 0, 128, 0, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 132, 133, + 0, 283, 289, 0, 28, 39, 0, 0, 0, 51, + 0, 0, 29, 30, 31, 32, 33, 34, 232, 253, + 233, 254, 234, 255, 235, 256, 236, 257, 237, 258, + 238, 259, 239, 260, 240, 261, 252, 273, 241, 262, + 0, 0, 243, 264, 244, 265, 245, 266, 246, 267, + 247, 268, 248, 269, 0, 0, 0, 0, 0, 0, + 0, 0, 335, 0, 0, 333, 334, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 0, 284, 0, 22, 20, 0, 0, 0, 0, + 0, 314, 0, 0, 0, 308, 320, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 110, 0, 0, - 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, + 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 284, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 192, 0, 154, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, + 0, 0, 286, 0, 282, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 283, 64, 65, 0, + 0, 0, 0, 0, 67, 68, 70, 0, 0, 328, + 0, 76, 231, 21, 0, 0, 0, 0, 0, 0, + 310, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 307, 87, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 281, 64, 65, 0, 0, 0, 0, 0, 67, 68, - 70, 0, 0, 326, 0, 76, 229, 21, 0, 0, - 0, 0, 0, 0, 308, 313, 0, 0, 0, 0, + 0, 0, 0, 197, 0, 164, 193, 0, 0, 122, + 205, 126, 85, 86, 123, 124, 0, 0, 0, 325, + 0, 0, 0, 144, 136, 288, 135, 0, 0, 0, + 0, 0, 301, 0, 0, 242, 263, 249, 270, 250, + 271, 251, 272, 0, 337, 336, 332, 291, 0, 54, + 0, 0, 0, 0, 62, 0, 0, 0, 326, 23, + 24, 0, 0, 82, 0, 0, 0, 309, 0, 90, + 0, 92, 0, 0, 88, 0, 0, 102, 0, 0, + 89, 106, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, + 115, 0, 174, 0, 176, 0, 178, 0, 0, 0, + 0, 303, 0, 0, 0, 158, 95, 96, 0, 0, + 0, 0, 290, 27, 0, 35, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 73, 0, 0, + 74, 0, 329, 0, 0, 0, 316, 0, 0, 0, + 0, 98, 0, 0, 103, 0, 0, 203, 100, 101, + 0, 0, 0, 201, 204, 105, 84, 99, 104, 107, + 0, 0, 0, 300, 0, 299, 0, 0, 165, 0, + 0, 166, 0, 0, 167, 0, 117, 118, 119, 120, + 0, 0, 0, 0, 0, 0, 323, 0, 146, 145, + 40, 0, 0, 0, 302, 0, 0, 0, 0, 0, + 63, 69, 71, 0, 77, 0, 25, 0, 0, 317, + 0, 91, 93, 0, 0, 0, 0, 200, 199, 202, + 78, 79, 115, 0, 111, 0, 0, 0, 0, 0, + 0, 194, 0, 115, 0, 0, 0, 0, 0, 36, + 0, 0, 0, 38, 52, 53, 338, 0, 327, 0, + 0, 207, 208, 209, 210, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 305, 87, 0, 0, 0, 0, 196, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 122, 0, - 0, 0, 0, 203, 126, 85, 86, 123, 124, 0, - 0, 0, 323, 0, 0, 0, 144, 136, 286, 135, - 0, 0, 0, 0, 0, 299, 0, 0, 240, 261, - 247, 268, 248, 269, 249, 270, 0, 335, 334, 330, - 289, 0, 54, 0, 0, 0, 0, 62, 0, 0, - 0, 324, 23, 24, 0, 0, 82, 0, 0, 0, - 307, 0, 90, 0, 92, 0, 0, 88, 0, 0, - 102, 0, 0, 89, 106, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 0, 0, 0, 115, 0, 172, 0, 174, 0, 176, - 0, 0, 195, 0, 158, 191, 0, 0, 0, 0, - 95, 96, 0, 0, 0, 0, 288, 27, 0, 35, - 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 73, 0, 0, 74, 0, 327, 0, 0, 0, - 314, 0, 0, 0, 0, 98, 0, 0, 103, 0, - 0, 201, 100, 101, 0, 0, 0, 199, 202, 105, - 84, 99, 104, 107, 0, 0, 0, 298, 0, 297, - 0, 0, 163, 0, 0, 164, 0, 0, 165, 0, - 0, 0, 301, 0, 117, 118, 119, 120, 0, 0, - 321, 0, 146, 145, 40, 0, 0, 0, 300, 0, - 0, 0, 0, 0, 63, 69, 71, 0, 77, 0, - 25, 0, 0, 315, 0, 91, 93, 0, 0, 0, - 0, 198, 197, 200, 78, 79, 115, 0, 111, 0, - 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 0, 0, 38, 52, 53, - 336, 0, 325, 0, 0, 205, 206, 207, 208, 0, - 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 159, 0, 192, 0, 0, 320, 147, 0, - 0, 0, 0, 75, 0, 0, 0, 109, 0, 178, - 0, 0, 180, 0, 0, 182, 0, 0, 155, 0, - 115, 0, 0, 97, 0, 44, 0, 50, 0, 83, - 0, 295, 166, 0, 0, 173, 167, 0, 0, 175, - 168, 0, 0, 177, 0, 161, 0, 193, 0, 0, - 0, 0, 0, 0, 184, 0, 186, 0, 188, 160, - 156, 0, 0, 41, 0, 48, 0, 0, 0, 169, - 0, 0, 170, 0, 0, 171, 0, 0, 194, 0, - 42, 0, 142, 0, 0, 0, 0, 0, 0, 0, - 162, 0, 0, 0, 0, 179, 0, 181, 0, 183, - 0, 43, 45, 0, 46, 94, 0, 0, 0, 0, - 0, 185, 187, 189, 47, 49, 0, 0, 0 + 159, 0, 0, 322, 147, 0, 0, 0, 0, 75, + 0, 0, 0, 109, 0, 180, 0, 0, 182, 0, + 0, 184, 0, 0, 0, 195, 155, 0, 115, 97, + 0, 44, 0, 50, 0, 83, 0, 297, 168, 0, + 0, 175, 169, 0, 0, 177, 170, 0, 0, 179, + 0, 0, 161, 0, 0, 0, 0, 0, 0, 186, + 0, 188, 0, 190, 196, 160, 156, 0, 41, 0, + 48, 0, 0, 0, 171, 0, 0, 172, 0, 0, + 173, 0, 0, 0, 42, 0, 142, 0, 0, 0, + 0, 0, 0, 0, 162, 0, 0, 0, 0, 181, + 0, 183, 0, 185, 0, 43, 45, 0, 46, 94, + 0, 0, 0, 0, 0, 187, 189, 191, 47, 49, + 0, 0, 0 }; -static const short yydefgoto[] = { 1177, - 2, 52, 615, 53, 54, 369, 899, 905, 541, 691, - 1023, 1140, 542, 1110, 1164, 543, 1142, 544, 545, 695, - 546, 118, 199, 55, 478, 508, 286, 491, 492, 287, - 59, 60, 61, 62, 63, 288, 665, 1080, 1122, 954, - 957, 960, 1094, 1098, 1102, 1131, 1134, 1137, 777, 778, - 65, 66, 67, 304, 121, 321, 159, 805, 806, 306, - 291, 183, 610, 725, 480 +static const short yydefgoto[] = { 1181, + 2, 52, 617, 53, 54, 370, 905, 911, 543, 697, + 1029, 1144, 544, 1115, 1168, 545, 1146, 546, 547, 701, + 548, 118, 199, 55, 479, 505, 286, 492, 493, 287, + 59, 60, 61, 62, 63, 288, 675, 1088, 1128, 506, + 960, 963, 966, 1100, 1104, 1108, 1136, 1139, 1142, 671, + 672, 65, 66, 67, 304, 121, 321, 159, 812, 813, + 306, 291, 183, 612, 731, 481 }; -static const short yypact[] = { 2404, - 42, 2473,-32768, 1769, -76, -1, 51, -90, -39, -29, - -28, -26, -62, -13, 13, 76, 18, 86, 122, 143, - 396, 81, 558, 87, 256, 98, 98, 268, 299, 5, - 171, 21, 422, 1, 430, 437, 450, 338, 345, 370, - 26, 7,-32768, 378,-32768, 503,-32768, 508, 523, 19, - 31,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 12, 27, --32768,-32768,-32768,-32768, 119, 120, 169, 220, 240, 326, - 389, 394, 461, 464, 476, 483, 496, 500, 501, 512, - 516, 519, 541, 545, 546, 414, 418, 432, 440,-32768, - 444,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1966, 1966, - 1966,-32768,-32768, 1966, 1382, 25, 590, 1966, 594, 1123, --32768, 603, 617,-32768, 1966,-32768, 1966, 1899, 1966, 1966, - 488, 1966, 1899, 1966, 511, 1899, 1966, 1966, 1315, 1966, - 513, 515, 535, 1315, 547, 561, 578, 581, 638, 650, - 657, 735, 98, 98, 98, 1966, 1966, 221,-32768, 287, - 98, 661, 662, 665, 1608, 346, 671,-32768, 1315, 22, --32768,-32768, 1315, 1315, 685, 696, 814, 1966, 1966, 1966, - 701, 1966, 706, 751, 1966, 1966,-32768, 839,-32768,-32768, --32768, 840,-32768, 841, 719, 1966, 845, 717,-32768, 98, --32768, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1966, 441, 502, 502, 502, 847, -6, 727, - 727, 727, 4897, 15, 1899, 4184, 325, 723, 849, 728, - 1156,-32768,-32768, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,-32768, 65, - 3430, 4918, 490, 725, 2091,-32768,-32768,-32768, 2208,-32768, - 276, 4939, 4960, 1966, 4981, 543, 5002, 1966, 544, 5023, - 5044, 1734, 1188, 2208, 853,-32768, 5065, 1966, 1966, 1966, - 854, 1966, 1966, 1966, 2024, 2024, 2024, 2024, 734, -55, --32768,-32768, 3456, 3482, 98, 98, 635, 635, 177, 1966, - 1966, 1966, 1608, 1608, 1966, 281,-32768, 1966, 610, 196, - 857,-32768, 1966, 2532, 858, 860, 1966, 1966,-32768, 5086, - 5107, 5128, 777, 3508,-32768, 736, 2236, 5149,-32768, 2549, --32768, 2593,-32768, 1966, 4207, 181, 1966, 376, 3, 5170, - 4230, 5191, 4253, 5212, 4276, 5233, 4299, 5254, 4322, 5275, - 4345, 5296, 4368, 5317, 4391, 5338, 4414, 5359, 4437, 5380, - 4460, 3534, 3560, 5401, 4483, 5422, 4506, 5443, 4529, 5464, - 4552, 5485, 4575, 5506, 4598, 3586, 3612, 3638, 3664, 3690, - 3716, 582, 259, 738, 740, 741, 744, 1966,-32768, 1315, - 1315, 601, 114, 502, 1966, 867, 871, 30, 748,-32768, - 2255, 692, 1309, 570, 570, 443, 443, 443, 443, 103, - 103, 727, 727, 727, 727, 32, 1899, 1966, 20, 1441, - 1966, 583, 1966, 1899, 789, 874, 875, 5527, 876, 794, - 878, 5548, 797, 881, 882, 1899,-32768, 602, 1966, 884, - 2670, 5569, 5590, 1966, 2760, 2788, 5611, 764, 5842,-32768, - 765, 766, 767, 768, 98, 1966, 1966,-32768,-32768,-32768, - 761, 1098,-32768, 769, 1966, 3742, 3768, 3794, 3404, 98, - 2615, 4621, 10, -27, -25, 60,-32768,-32768,-32768, 1966, --32768, 4644,-32768, 1315, 1315, 4667, 4690, 895, 896, 898, - 775, 1966, 2659, 1966, 1966,-32768,-32768,-32768, 4713, 68, --32768, 2816,-32768,-32768, 780, 783, 779,-32768, 788, 911, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +static const short yypact[] = { 2365, + 59, 2434,-32768, 1756, -45, 1, 73, -63, -41, -27, + -60, -16, -18, -2, 29, 91, 87, 104, 124, 179, + -8, 188, 328, 207, 210, 301, 301, 221, 407, 6, + 313, 10, 371, 85, 390, 413, 439, 334, 337, 341, + 11, 24,-32768, 374,-32768, 444,-32768, 483, 489, 8, + 21,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 7, 12, +-32768,-32768,-32768,-32768, 182, 211, 225, 296, 309, 315, + 365, 377, 383, 392, 393, 402, 420, 432, 455, 481, + 482, 495, 498, 502, 514, 387, 403, 424, 425,-32768, + 428,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1953, 1953, + 1953,-32768,-32768, 1953, 1369, 18, 494, 1953, 563, 849, +-32768, 572, 561,-32768, 1953,-32768, 1953, 1886, 1953, 1953, + 452, 1953, 1886, 1953, 456, 1886, 1953, 1953, 1302, 1953, + 496, 460, 466, 1302, 506, 510, 470, 499, 527, 537, + 538, 586, 301, 301, 301, 1953, 1953, -93,-32768, 105, + 301, 535, 536, 544, 1595, 214, 565,-32768, 1302, 23, +-32768,-32768, 1302, 1302, 573, 578, 705, 1953, 1953, 1953, + 601, 1953, 583, 658, 1953, 1953,-32768, 735,-32768,-32768, +-32768, 736,-32768, 747, 625, 1953, 754, 640,-32768, 301, +-32768, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 1953, 1953, 503, 528, 528, 528, 770, 492, 653, + 653, 653, 4874, 30, 1886, 4161, 303, 678, 776, 660, + 878,-32768,-32768, 1953, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,-32768, -13, + 3407, 4895, 543, 714, 2078,-32768,-32768,-32768, 2152,-32768, + 342, 4916, 4937, 1953, 4958, 512, 4979, 1953, 515, 5000, + 5021, 1721, 1164, 2152, 809,-32768, 5042, 1953, 1953, 1953, + 812, 1953, 1953, 1953, 2011, 2011, 2011, 2011, 703, 50, +-32768,-32768, 3433, 3459, 301, 301, 634, 634, 287, 1953, + 1953, 1953, 1595, 1595, 1953, 2703, 323,-32768, 1953, 999, + 196, 833,-32768, 1953, 2493, 846, 847, 1953, 1953,-32768, + 5063, 5084, 5105, 769, 3485,-32768, 724, 2174, 5126,-32768, + 2510,-32768, 2554,-32768, 1953, 4184, 261, 1953, 345, 14, + 5147, 4207, 5168, 4230, 5189, 4253, 5210, 4276, 5231, 4299, + 5252, 4322, 5273, 4345, 5294, 4368, 5315, 4391, 5336, 4414, + 5357, 4437, 3511, 3537, 5378, 4460, 5399, 4483, 5420, 4506, + 5441, 4529, 5462, 4552, 5483, 4575, 3563, 3589, 3615, 3641, + 3667, 3693, 520, 20, 727, 731, 733, 730, 1953,-32768, + 1302, 1302, 554, 114, 528, 1953, 858, 862, 13, 737, +-32768, 2193, 1158, 1045, 992, 992, 726, 726, 726, 726, + 486, 486, 653, 653, 653, 653, 54, 1886, 1953, 28, + 1428, 1953, 689, 1953, 1886, 778, 863, 864, 5504, 865, + 779, 867, 5525, 785, 869, 870, 1886,-32768, 557, 1953, + 871, 1236, 5546, 5567, 1953, 2737, 2765, 5588, 752, 5819, +-32768, 757, 758, 760, 751, 301, 1953, 1953,-32768,-32768, +-32768, 755, 2703,-32768, 756, 1953, 3719, 3745, 3771, 3381, + -59, -17, 55, -51,-32768, 39, 301, 2576, 4598,-32768, +-32768, 1953,-32768, 4621,-32768, 1302, 1302, 4644, 4667, 885, + 887, 888, 765, 1953, 2620, 1953, 1953,-32768,-32768,-32768, + 4690, 67,-32768, 2793,-32768,-32768, 771, 772, 766,-32768, + 774, 896,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1966, 1966, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 917, --32768, 1899, 502,-32768,-32768, 1966, 4736, 916, 918, 795, - 28, 1966, 920, 921, 1413,-32768, 922, 799, 26, 924, --32768, 1966,-32768, 816, 502, 285, 3820, 98, 887,-32768, - 1899, 2844, 1573, 2281, 2208,-32768, 888, 1315, 1315, 928, - 1315, 720, 1315, 929, 889, 1315, 1315, 637,-32768, 1534, - 804, 932, 933, 934, 643, 938, 939, 940, 941, 944, - 945, 946, 950, 367, 3846, 3872,-32768,-32768, 2872, 98, - 98, 98, 373,-32768, 101, 949, 1899, 1899, 1899, 1899, - 1706, 951, 952, 953, 957, 958, 1315, 1315, 1315, 961, - 3898,-32768, 2303, 872, 960, 964,-32768, 963,-32768, 14, - 829, 1966, 1966, 1315, 836, 1966,-32768, 5632, 4759, 5653, - 4782, 5674, 4805, 5695, 4828, 4851, 843, 291, 844, 5716, - 176,-32768,-32768, 104, 364, 842, 967, 1833,-32768,-32768, --32768, 26, 1966,-32768, 640,-32768, 5842,-32768, 969, 52, - 1966, 54, 861, 641,-32768,-32768, 1899, 1966, 862, 43, - 44, 1315, 970, 865, 868, 971, 1315, 869, 972, 988, --32768,-32768, 1966, 1315, 1315, 1315,-32768, 683, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 742, 1966, 1966, 1966, 870, - -48, 219, 290, 1608, 995, 877, -61,-32768,-32768, 645, - 648, 654, 655,-32768,-32768,-32768,-32768,-32768,-32768, 999, - 1000, 926,-32768, 1966, 1966, 1966,-32768,-32768, 181,-32768, - 1002, 1966, 3924, 3950, 658,-32768, 1966, 5737,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 883,-32768,-32768,-32768, --32768, 1315, 502, 1966, 1007, 1011, 30,-32768, 1010, 4874, - 26,-32768,-32768,-32768, 502, 3976,-32768, 1966, 891, 659, - 5842, 1966,-32768, 98,-32768, 98, 1013,-32768, 1966, 1966, --32768, 1016, 1966,-32768,-32768, 4002, 1017, 1020, 1021, 1966, - 1966, 817, 1022, 1025, 1026, 1027, 1028, 1029,-32768, 2024, - 2900, 5758, 983, 635, 98, 1030, 98, 1034, 98, 1035, - 2928, 386,-32768, 1315,-32768,-32768, 1043, 1044, 1045, 1046, --32768,-32768, 1315, 2704, 466, 5779,-32768,-32768, 334, 5842, - 1966, 1966, 1315, 919, 691, 5842, 1315, 1050, 1049, 1051, - 2051,-32768, 1052, 1055,-32768, 886,-32768, 1057, 1966, 2956, --32768, 935, 2984, 78, 83,-32768, 3012, 3040,-32768, 3068, - 1966,-32768,-32768,-32768, 2122, 2141, 1058,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 2167, 1060, 936,-32768, 1966,-32768, - 937, 407,-32768, 942, 411,-32768, 943, 413,-32768, 947, - 954, 1966, 612, 956,-32768,-32768,-32768,-32768, 982, 1966, --32768, 1966,-32768,-32768,-32768, 1966, 4028, 4054,-32768, 1315, - 1966, 1063, 1065, 955,-32768,-32768,-32768, 26,-32768, 987, --32768, 4080, 1071,-32768, 1073,-32768,-32768, 1074, 1078, 1079, - 4106,-32768,-32768,-32768,-32768,-32768, 635, 2732,-32768, 1608, - 101, 1608, 101, 1608, 101,-32768, 3096, 1080, 1315, 1966, - 3124, 3152, 973, 5842, 1966, 1966, 694, 5842,-32768,-32768, --32768, 1081,-32768, 1966, 98,-32768,-32768,-32768,-32768, 1101, - 975, 1966,-32768, 3180, 415, 77, 3208, 433, 166, 3236, - 435, 224, 2676, 977,-32768, 695, 2189,-32768,-32768, 1966, - 5800, 4132, 1106,-32768, 4158, 89, 980,-32768, 3264, 1108, - 1966, 1109, 1111, 1966, 1114, 1117, 1966, 1118,-32768, 101, --32768, 1315, 1121,-32768, 700,-32768, 1966,-32768, 1966,-32768, - 1125,-32768,-32768, 997, 3292,-32768,-32768, 998, 3320,-32768, --32768, 1004, 3348,-32768, 233, 2720, 1001,-32768, 1127, 1019, - 5821, 3376, 1023, 101, 1128, 101, 1152, 101, 1154,-32768, --32768, 101, 1157,-32768, 502,-32768, 1158, 1160, 262,-32768, - 1037, 275,-32768, 1038, 301,-32768, 1039, 303,-32768, 703, --32768, 1040,-32768, 1033, 1163, 101, 1169, 101, 1171, 101, --32768, 502, 1172, 502, 1173,-32768, 304,-32768, 315,-32768, - 316,-32768,-32768, 704,-32768,-32768, 1177, 1178, 1179, 502, - 1181,-32768,-32768,-32768,-32768,-32768, 1189, 1193,-32768 + 1953, 1953,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 1953, 1953, 1953, 1953, 1953, 1953, + 1953, 899,-32768, 1886, 528,-32768,-32768, 1953, 4713, 900, + 901, 780, 26, 1953, 903, 905, 1098,-32768, 906, 783, + 11, 908,-32768, 1953,-32768, 802, 528, 68, 3797, 301, + 872,-32768, 1886, 2821, 1560, 2223, 2152,-32768, 873, 1302, + 1302, 913, 1302, 607, 1302, 914, 874, 1302, 1302, 560, +-32768, 1132, 789, 917, 919, 920, 685, 921, 922, 941, + 942, 943, 944, 946, 967, 348, 3823, 3849,-32768,-32768, + 2849, 301, 301, 301, 1886, 1886, 1886, 1886, 966, 842, + -7,-32768, 399,-32768, 39, 971, 1400, 972, 973, 974, + 975, 976, 1302, 1302, 1302, 979, 3875,-32768, 2242, 826, + 978, 996,-32768, 995,-32768, 19, 875, 1953, 1953, 1302, + 876, 1953,-32768, 5609, 4736, 5630, 4759, 5651, 4782, 5672, + 4805, 4828, 877, 83, 879, 5693, 176,-32768,-32768, 102, + 366, 880, 1001, 1521,-32768,-32768,-32768, 11, 1953,-32768, + 577,-32768, 5819,-32768, 1000, 57, 1953, 15, 882, 600, +-32768,-32768, 1886, 1953, 883, 25, 27, 1302, 1003, 884, + 886, 1006, 1302, 889, 1008, 1013,-32768,-32768, 1953, 1302, + 1302, 1302,-32768, 339, 1302, 1302, 1302, 1302, 1302, 1302, + 1302, 405, 1953, 1953, 1953, 891, -48, 77, 82, 604, + 605, 616, 624,-32768, 1302,-32768,-32768, 1595, 4,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1015, 1021, 945,-32768, + 1953, 1953, 1953,-32768,-32768, 261,-32768, 1022, 1953, 3901, + 3927, 647,-32768, 1953, 5714,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 898,-32768,-32768,-32768,-32768, 1302, 528, + 1953, 1026, 1029, 13,-32768, 1028, 4851, 11,-32768,-32768, +-32768, 528, 3953,-32768, 1953, 907, 651, 5819, 1953,-32768, + 301,-32768, 301, 1030,-32768, 1953, 1953,-32768, 1032, 1953, +-32768,-32768, 3979, 1033, 1043, 1048, 1953, 1953, 784, 1052, + 1053, 1054, 1055, 1056, 1057,-32768, 2011, 2877, 5735, 2262, + 634, 301, 1059, 301, 1061, 301, 1063, 1064, 1066, 1067, + 1069, 610, 918, 2905, 409,-32768,-32768,-32768, 1302, 2680, + 652, 5756,-32768,-32768, 96, 5819, 1953, 1953, 1302, 950, + 675, 5819, 1302, 1072, 1071, 1079, 1693,-32768, 1080, 1083, +-32768, 947,-32768, 1084, 1953, 2933,-32768, 956, 2961, 43, + 47,-32768, 2989, 3017,-32768, 3045, 1953,-32768,-32768,-32768, + 1820, 2038, 1085,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 2109, 1086, 959,-32768, 1953,-32768, 960, 440,-32768, 963, + 453,-32768, 964, 459,-32768, 965,-32768,-32768,-32768,-32768, + 1088, 1302, 968, 1953, 1016, 1953,-32768, 1953,-32768,-32768, +-32768, 1953, 4005, 4031,-32768, 1302, 1953, 1094, 1097, 987, +-32768,-32768,-32768, 11,-32768, 1031,-32768, 4057, 1109,-32768, + 1111,-32768,-32768, 1115, 1117, 1118, 4083,-32768,-32768,-32768, +-32768,-32768, 634, 2709,-32768, 1595, 39, 1595, 39, 1595, + 39,-32768, 682,-32768, 3073, 1953, 3101, 3129, 993, 5819, + 1953, 1953, 694, 5819,-32768,-32768,-32768, 1123,-32768, 1953, + 301,-32768,-32768,-32768,-32768, 1125, 997, 1953,-32768, 3157, + 463, 162, 3185, 471, 232, 3213, 484, 233, 1302, 1127, + 2637, 1002, 2128,-32768,-32768, 1953, 5777, 4109, 1129,-32768, + 4135, 75, 1004,-32768, 3241, 1133, 1953, 1134, 1136, 1953, + 1138, 1139, 1953, 1140, 1012,-32768,-32768, 39,-32768,-32768, + 697,-32768, 1953,-32768, 1953,-32768, 1143,-32768,-32768, 1035, + 3269,-32768,-32768, 1038, 3297,-32768,-32768, 1065, 3325,-32768, + 1144, 235, 2681, 1191, 1068, 5798, 3353, 1070, 39, 1192, + 39, 1194, 39, 1195,-32768,-32768,-32768, 39,-32768, 528, +-32768, 1198, 1215, 266,-32768, 1087, 280,-32768, 1089, 302, +-32768, 1091, 317, 702,-32768, 1099,-32768, 1014, 1216, 39, + 1226, 39, 1228, 39,-32768, 528, 1229, 528, 1230,-32768, + 320,-32768, 322,-32768, 360,-32768,-32768, 707,-32768,-32768, + 1231, 1248, 1249, 528, 1250,-32768,-32768,-32768,-32768,-32768, + 1257, 1259,-32768 }; static const short yypgoto[] = {-32768, --32768,-32768, 458,-32768,-32768, 663,-32768, 134,-32768,-32768, +-32768,-32768, 524,-32768,-32768, 728,-32768, 195,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -254, 35,-32768, -241, 1219, 0, -327, -158, 2, --32768,-32768,-32768,-32768,-32768, 1220,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -994, -646, --32768,-32768,-32768, 48,-32768, 282,-32768, 215, 283, -113, - -72, -595, 397,-32768, -4 +-32768, -237, 35,-32768, -69, 1260, 0, -325, -159, 2, +-32768,-32768,-32768,-32768,-32768, 1278,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -674, + -652,-32768,-32768,-32768, 48,-32768, 269,-32768, 297, -85, + -9, 38, -606, 454,-32768, -4 }; -#define YYLAST 5968 +#define YYLAST 5945 static const short yytable[] = { 122, - 494, 57, 425, 58, 124, 135, 534, 775, 167, 339, - 184, 776, 344, 724, 290, 195, 1046, 534, 1049, 290, - 1052, 420, 290, 190, 170, 341, 618, 342, 257, 181, - 200, 715, 360, 608, 362, 190, 127, 613, 119, 131, - 131, 173, 135, 128, 174, 192, 194, 3, 843, 845, - 123, 120, 96, 97, 98, 99, 126, 834, 100, 837, - 296, 325, 326, 299, 96, 97, 98, 99, 325, 326, - 100, 136, 190, 885, 481, 482, 483, 485, 535, 536, - 537, 538, 539, 996, 875, 1105, 876, 129, 997, 535, - 536, 537, 538, 539, 1090, 844, 846, 130, 132, 132, - 134, 96, 97, 98, 99, 133, 668, 100, 669, 619, - 71, 258, 259, 137, 716, 717, 112, 113, 421, 1129, - 71, 1132, 418, 1135, 197, 139, 829, 1138, 147, 198, - 886, 141, 125, 185, 112, 113, 127, 540, 168, 138, - 196, 290, 197, 667, 140, 775, 614, 198, 801, 776, - 343, 1157, 191, 1159, 171, 1161, 250, 251, 252, 182, - 201, 253, 256, 609, 193, 261, 614, 142, 602, 775, - 325, 326, 281, 776, 282, 289, 292, 293, 501, 295, - 289, 297, 422, 289, 300, 301, 138, 307, 143, 290, - 112, 113, 446, 670, 325, 326, 523, 447, 686, 325, - 326, 509, 510, 323, 324, 325, 326, 105, 106, 107, - 108, 1072, 324, 152, 154, 155, 169, 105, 106, 107, - 108, 275, 276, 277, 156, 350, 351, 352, 278, 354, - 468, 157, 357, 358, 775, 917, 112, 113, 776, 413, - 414, 415, 416, 365, 601, 202, 204, 203, 205, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 426, 775, 325, 326, 206, 776, 207, 112, 113, - 1075, 775, 289, 112, 113, 776, 686, 158, 160, 495, - 166, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 490, 490, 493, 493, - 775, 424, 251, 290, 776, 325, 326, 325, 326, 162, - 626, 458, 163, 775, 164, 462, 208, 776, 209, 251, - 289, 877, 290, 878, 327, 471, 472, 473, 1078, 475, - 476, 477, 479, 479, 479, 479, 210, 1120, 211, 775, - 823, 775, 775, 776, 616, 776, 776, 496, 497, 498, - 250, 251, 499, 775, 775, 502, 591, 776, 776, 153, - 512, 592, 1032, 638, 516, 517, 1145, 325, 326, 886, - 531, 161, 886, 325, 326, 886, 325, 326, 454, 1147, - 455, 529, 730, 500, 532, 154, 155, 454, 819, 604, - 328, 305, 879, 454, 880, 156, 311, 172, 105, 106, - 107, 108, 165, 175, 320, 1149, 322, 1151, 1167, 144, - 176, 145, 329, 146, 412, 190, 336, 112, 113, 1168, - 1169, 340, 212, 177, 213, 345, 346, 603, 886, 822, - 824, 975, 325, 326, 178, 597, 976, 105, 106, 107, - 108, 179, 605, 972, 96, 97, 98, 99, 290, 337, - 100, 368, 886, 325, 326, 886, 112, 113, 886, 325, - 326, 886, 325, 326, 289, 617, 180, 597, 622, 767, - 624, 625, 325, 326, 186, 774, 190, 290, 187, 533, - 886, 188, 886, 289, 886, 214, 640, 215, 962, 708, - 216, 645, 217, 325, 326, 688, 189, 325, 326, 325, - 326, 325, 326, 655, 656, 96, 97, 98, 99, 1010, - 244, 100, 659, 1012, 245, 1014, 951, 1071, 734, 325, - 326, 325, 326, 290, 290, 290, 290, 671, 246, 273, - 274, 275, 276, 277, 687, 1074, 247, 1077, 278, 681, - 248, 683, 684, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 218, 709, 219, - 220, 278, 221, 260, 780, 781, 782, 783, 148, 262, - 973, 149, 222, 150, 223, 151, 488, 489, 279, 224, - 729, 225, 112, 113, 294, 322, 698, 699, 450, 453, - 197, 280, 226, 290, 227, 198, 228, 230, 229, 231, - 700, 701, 702, 703, 704, 705, 706, 298, 232, 289, - 233, 309, 234, 710, 235, 236, 308, 237, 757, 718, - 503, 9, 10, 504, 12, 505, 14, 506, 16, 727, - 17, 310, 19, 20, 840, 22, 23, 238, 289, 239, - 597, 240, 242, 241, 243, 454, 454, 460, 463, 1041, - 312, 34, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 38, 39, 40, 313, 278, 25, 26, 27, 28, - 758, 30, 598, 599, 314, 112, 113, 315, 35, 36, - 589, 623, 590, 197, 289, 289, 289, 289, 198, 264, + 789, 57, 495, 58, 730, 336, 124, 131, 340, 167, + 195, 345, 190, 170, 181, 200, 610, 536, 787, 426, + 844, 257, 536, 325, 326, 190, 342, 184, 343, 721, + 850, 361, 852, 363, 620, 144, 421, 145, 119, 146, + 327, 96, 97, 98, 99, 192, 194, 100, 1002, 135, + 131, 120, 1003, 305, 96, 97, 98, 99, 311, 615, + 100, 669, 841, 127, 3, 670, 132, 127, 325, 326, + 128, 190, 669, 133, 665, 138, 670, 851, 126, 853, + 1096, 123, 668, 341, 882, 129, 883, 346, 347, 537, + 538, 539, 540, 541, 537, 538, 539, 540, 541, 130, + 96, 97, 98, 99, 258, 259, 100, 669, 71, 132, + 134, 670, 722, 723, 447, 136, 666, 621, 290, 448, + 71, 836, 135, 290, 137, 173, 290, 786, 174, 112, + 113, 325, 326, 422, 125, 196, 787, 197, 896, 168, + 139, 191, 198, 171, 182, 201, 611, 593, 542, 141, + 185, 344, 594, 808, 193, 138, 250, 251, 252, 325, + 326, 253, 256, 325, 326, 261, 325, 326, 616, 142, + 296, 616, 281, 299, 282, 289, 292, 293, 508, 295, + 289, 297, 486, 289, 300, 301, 604, 307, 667, 112, + 113, 325, 326, 325, 326, 736, 525, 692, 325, 326, + 455, 511, 512, 323, 324, 105, 106, 107, 108, 884, + 826, 885, 324, 140, 886, 455, 887, 105, 106, 107, + 108, 325, 326, 981, 143, 351, 352, 353, 982, 355, + 669, 923, 358, 359, 670, 147, 112, 113, 328, 414, + 415, 416, 417, 366, 603, 290, 482, 483, 484, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 427, 423, 290, 158, 160, 1078, 166, 112, 113, + 669, 669, 289, 669, 670, 670, 692, 670, 202, 425, + 203, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 491, 491, 494, 494, + 325, 326, 251, 152, 669, 600, 601, 204, 670, 205, + 469, 459, 1052, 153, 1055, 463, 1058, 338, 669, 251, + 289, 206, 670, 207, 161, 472, 473, 474, 169, 476, + 477, 478, 480, 480, 480, 480, 1081, 1084, 148, 1126, + 669, 149, 830, 150, 670, 151, 172, 497, 498, 499, + 250, 251, 500, 112, 113, 669, 509, 1038, 669, 670, + 669, 514, 670, 175, 670, 518, 519, 867, 868, 787, + 1149, 533, 787, 325, 326, 787, 105, 106, 107, 108, + 876, 877, 531, 1112, 1151, 534, 176, 154, 155, 496, + 606, 320, 208, 322, 209, 112, 113, 156, 669, 329, + 679, 680, 670, 337, 157, 210, 1153, 211, 290, 325, + 326, 212, 177, 213, 1134, 628, 1137, 162, 1140, 187, + 163, 1155, 164, 1143, 1171, 507, 1172, 290, 605, 787, + 178, 325, 326, 179, 325, 326, 599, 180, 369, 105, + 106, 107, 108, 607, 455, 1161, 456, 1163, 535, 1165, + 773, 787, 829, 831, 787, 618, 188, 787, 112, 113, + 787, 214, 189, 215, 1173, 289, 619, 260, 599, 624, + 186, 626, 627, 216, 640, 217, 413, 190, 787, 218, + 787, 219, 787, 244, 289, 325, 326, 642, 220, 222, + 221, 223, 647, 154, 155, 325, 326, 694, 224, 245, + 225, 788, 190, 156, 657, 658, 96, 97, 98, 99, + 165, 974, 100, 661, 746, 747, 226, 749, 227, 752, + 246, 247, 755, 756, 248, 957, 325, 326, 228, 677, + 229, 96, 97, 98, 99, 280, 693, 100, 262, 325, + 326, 687, 1016, 689, 690, 325, 326, 279, 294, 325, + 326, 230, 298, 231, 290, 1018, 309, 325, 326, 319, + 715, 1020, 310, 489, 490, 1077, 314, 797, 798, 799, + 325, 326, 322, 1080, 275, 276, 277, 232, 234, 233, + 235, 278, 735, 290, 112, 113, 1083, 454, 704, 705, + 419, 236, 197, 237, 238, 315, 239, 198, 240, 308, + 241, 714, 706, 707, 708, 709, 710, 711, 712, 312, + 242, 289, 243, 313, 455, 716, 461, 455, 591, 464, + 592, 724, 750, 316, 751, 290, 290, 290, 290, 978, + 740, 733, 854, 317, 318, 112, 113, 859, 330, 331, + 289, 451, 599, 197, 864, 865, 866, 332, 198, 869, + 870, 871, 872, 873, 874, 875, 455, 1047, 602, 455, + 763, 641, 455, 339, 757, 25, 26, 27, 28, 893, + 30, 348, 780, 781, 782, 783, 349, 35, 36, 838, + 350, 839, 289, 289, 289, 289, 356, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 354, 455, 290, 846, 278, 455, 455, 888, 889, + 360, 362, 764, 915, 971, 810, 811, 357, 455, 815, + 890, 693, 364, 365, 656, 832, 455, 367, 891, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 454, 454, 600, 639, 278, 319, 803, - 804, 860, 861, 808, 507, 687, 1018, 869, 870, 825, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 316, 744, 654, 745, 278, 454, - 830, 751, 831, 454, 832, 839, 317, 454, 836, 887, - 454, 663, 888, 318, 289, 841, 454, 454, 889, 890, - 903, 454, 904, 922, 330, 331, 673, 674, 332, 338, - 856, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 347, 871, 872, 873, 278, 910, 349, - 937, 881, 938, 981, 348, 982, 903, 1082, 1063, 1083, - 918, 353, 981, 897, 1109, 1152, 1170, 1153, 1171, 355, - 356, 894, 895, 896, 359, 361, 363, 364, 366, 900, - 367, 417, 278, 427, 906, 428, 429, 1053, 451, 469, - 474, 484, 511, 521, 514, 946, 515, 594, 595, 524, - 593, 911, 606, 490, 607, 493, 596, 611, 627, 796, - 628, 629, 631, 632, 633, 920, 635, 636, 637, 923, - 641, 649, 650, 651, 652, 657, 927, 928, 653, 732, - 930, 677, 678, 658, 679, 680, 692, 935, 936, 693, - 740, 741, 694, 743, 696, 746, 697, 945, 749, 750, - 707, 712, 1106, 713, 714, 719, 720, 723, 722, 726, - 728, 963, 733, 739, 742, 747, 748, 753, 754, 755, - 756, 771, 772, 773, 759, 760, 761, 762, 977, 978, - 763, 764, 765, 766, 779, 802, 785, 786, 787, 790, - 791, 792, 788, 789, 793, 798, 992, 799, 800, 807, - 818, 820, 826, 827, 833, 848, 851, 854, 1001, 264, + 275, 276, 277, 368, 418, 673, 837, 278, 278, 909, + 847, 910, 429, 455, 843, 928, 979, 943, 430, 944, + 289, 848, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 863, 987, 428, 988, + 278, 112, 113, 975, 1059, 470, 1060, 625, 475, 197, + 878, 879, 880, 985, 198, 916, 909, 989, 1069, 987, + 485, 1114, 892, 803, 1156, 894, 1157, 924, 513, 1174, + 903, 1175, 273, 274, 275, 276, 277, 452, 900, 901, + 902, 278, 516, 517, 263, 523, 906, 526, 596, 595, + 597, 912, 598, 608, 1061, 609, 613, 629, 634, 630, + 631, 633, 952, 635, 637, 638, 639, 643, 917, 651, + 491, 655, 494, 431, 652, 653, 1023, 654, 738, 659, + 660, 683, 926, 684, 685, 686, 929, 698, 699, 700, + 702, 703, 713, 933, 934, 718, 719, 936, 725, 720, + 726, 729, 728, 732, 941, 942, 734, 739, 745, 748, + 753, 754, 759, 760, 951, 761, 762, 765, 766, 1113, + 777, 778, 779, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 767, 768, 769, + 770, 278, 771, 804, 983, 984, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 772, 784, 998, 1085, 278, 785, 790, 792, 793, 794, + 795, 796, 800, 805, 1007, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 806, + 807, 809, 1014, 278, 825, 840, 827, 834, 855, 814, + 833, 858, 491, 861, 494, 845, 849, 856, 862, 857, + 897, 1025, 860, 1027, 881, 1028, 898, 904, 914, 1030, + 899, 918, 919, 921, 1034, 932, 927, 935, 938, 501, + 9, 10, 502, 12, 503, 14, 504, 16, 939, 17, + 972, 19, 20, 940, 22, 23, 895, 945, 946, 947, + 948, 949, 950, 1050, 959, 1053, 962, 1056, 965, 967, + 34, 968, 969, 1063, 970, 990, 991, 996, 1067, 1068, + 38, 39, 40, 986, 992, 1000, 994, 1071, 995, 997, + 1010, 1012, 1013, 1022, 1015, 1075, 1017, 1019, 1021, 1035, + 1026, 1024, 1036, 727, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 912, 1037, 1041, 1042, 278, 1039, 930, + 1043, 931, 1044, 1045, 1101, 1145, 1066, 1105, 1070, 1073, + 1109, 1074, 1086, 510, 1094, 1089, 1097, 758, 1099, 1102, + 1116, 1103, 1117, 1106, 1107, 1110, 1111, 1118, 1159, 1125, + 958, 1166, 961, 1169, 964, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 68, 283, 1119, 1179, + 278, 1121, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 1129, 1135, 1123, 1138, + 1141, 1130, 1133, 1147, 284, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 1148, + 1150, 1160, 1152, 278, 1154, 25, 26, 27, 28, 29, + 30, 1162, 1158, 1164, 1167, 1170, 1176, 35, 36, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 855, 838, 842, 1008, 278, 849, 797, - 883, 850, 853, 874, 891, 892, 490, 898, 493, 1017, - 884, 893, 912, 908, 913, 915, 990, 1021, 926, 1022, - 921, 929, 932, 1024, 847, 933, 934, 939, 1028, 852, - 940, 941, 942, 943, 944, 953, 857, 858, 859, 956, - 959, 862, 863, 864, 865, 866, 867, 868, 965, 966, - 967, 968, 980, 984, 985, 882, 986, 1044, 988, 1047, - 989, 1050, 991, 1004, 994, 1006, 1020, 1057, 1029, 1007, - 1030, 1009, 1061, 1062, 1033, 1011, 1013, 1035, 1036, 1037, - 1015, 1065, 1031, 1038, 1039, 1055, 1064, 1016, 1019, 1069, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 909, 1067, 1060, 906, 278, 1068, - 1081, 1088, 1091, 1093, 1096, 949, 1097, 950, 1095, 1100, - 1141, 1099, 1101, 1104, 1103, 924, 1108, 925, 263, 1113, - 1114, 1116, 1124, 1130, 1111, 1123, 1112, 1118, 503, 9, - 10, 504, 12, 505, 14, 506, 16, 1162, 17, 1165, - 19, 20, 1125, 22, 23, 1128, 952, 1133, 955, 1136, - 958, 430, 1139, 1143, 1144, 1175, 964, 1155, 1156, 34, - 1146, 1148, 1150, 1154, 1158, 969, 1160, 1163, 1166, 38, - 39, 40, 1172, 1173, 1174, 979, 1176, 835, 1178, 983, - 68, 283, 1179, 1085, 1027, 690, 72, 73, 74, 75, + 275, 276, 277, 1177, 1178, 1180, 1182, 278, 1183, 842, + 1091, 56, 696, 101, 102, 103, 104, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 64, + 109, 285, 1033, 278, 1051, 111, 1054, 920, 1057, 0, + 114, 0, 0, 0, 0, 117, 0, 0, 468, 0, + 0, 0, 0, 0, 68, 283, 0, 0, 0, 1072, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 278, 0, 25, 26, 27, 28, 29, 30, 0, + 644, 68, 249, 0, 0, 35, 36, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 101, 102, 103, 104, 791, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 109, 302, + 0, 0, 0, 111, 0, 0, 0, 0, 114, 0, + 68, 249, 0, 117, 0, 303, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 56, 64, 0, 914, 0, 0, 0, 0, 284, 0, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 0, 0, 0, 0, 278, 25, - 26, 27, 28, 29, 30, 0, 0, 0, 0, 0, - 0, 35, 36, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 101, 102, 103, - 104, 1045, 0, 1048, 0, 1051, 0, 0, 0, 0, - 0, 1056, 0, 0, 109, 285, 0, 0, 0, 111, - 0, 0, 0, 0, 114, 0, 1066, 68, 283, 117, - 0, 0, 467, 72, 73, 74, 75, 76, 77, 78, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, + 111, 0, 0, 0, 0, 114, 0, 0, 254, 0, + 117, 0, 255, 0, 0, 0, 0, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 278, 835, 101, 102, 103, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 110, 0, 0, 0, 111, + 0, 0, 0, 0, 114, 0, 0, 622, 0, 117, + 0, 623, 68, 249, 0, 0, 0, 0, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 0, 0, 0, 0, 0, 68, 249, 0, + 0, 0, 0, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 0, 0, 0, - 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 26, 27, 28, - 29, 30, 0, 0, 68, 249, 0, 0, 35, 36, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 101, 102, 103, 104, 721, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 109, 302, 0, 278, 0, 111, 0, 0, 0, - 0, 114, 0, 68, 249, 0, 117, 0, 303, 72, + 89, 90, 91, 92, 93, 94, 95, 0, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, + 0, 111, 0, 0, 0, 0, 114, 0, 0, 742, + 0, 117, 0, 743, 101, 102, 103, 104, 993, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 333, 334, 0, 0, 0, 111, 0, 0, 0, + 0, 335, 0, 68, 453, 0, 117, 0, 157, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 103, 104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 0, 0, 111, 0, 0, 0, 0, 114, 0, - 0, 254, 0, 117, 0, 255, 0, 0, 0, 0, + 93, 94, 95, 0, 0, 0, 0, 0, 68, 69, + 70, 0, 71, 0, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 0, 96, + 97, 98, 99, 0, 0, 100, 0, 0, 0, 0, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 0, 0, 0, 0, 278, 752, - 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 101, 102, 103, 104, 0, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, 111, 0, 0, 0, 0, 114, 0, 0, - 620, 0, 117, 0, 621, 68, 249, 0, 0, 0, - 0, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 0, 0, 117, 0, 467, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 109, 110, 0, 0, 0, 111, 112, 113, + 0, 0, 114, 0, 115, 0, 116, 117, 68, 283, + 0, 0, 0, 0, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 278, 0, 25, 26, 27, + 28, 29, 30, 0, 0, 68, 249, 0, 0, 35, + 36, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, - 68, 249, 0, 0, 0, 0, 72, 73, 74, 75, + 91, 92, 93, 94, 95, 101, 102, 103, 104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 109, 285, 0, 0, 0, 111, 0, 0, + 0, 0, 114, 68, 249, 190, 0, 117, 0, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 1009, 96, 97, 98, 99, 0, 0, + 100, 0, 101, 102, 103, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, + 110, 0, 0, 0, 111, 0, 0, 0, 0, 114, + 68, 453, 0, 0, 117, 0, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 101, 102, 103, 104, 1011, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 109, 110, 0, + 0, 0, 111, 1090, 0, 0, 0, 114, 0, 0, + 0, 0, 117, 0, 0, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 454, + 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, + 104, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 110, 0, 0, 0, 111, + 614, 0, 0, 0, 114, 0, 0, 0, 0, 117, + 0, 0, 0, 0, 0, 0, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 744, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 802, + 0, 0, 0, 278, 0, 0, 0, 0, 0, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 103, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, - 110, 0, 0, 0, 111, 0, 0, 0, 0, 114, - 0, 0, 736, 0, 117, 0, 737, 101, 102, 103, - 104, 784, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 333, 334, 0, 0, 0, 111, - 0, 0, 0, 0, 335, 0, 68, 452, 0, 117, - 0, 157, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, - 0, 68, 69, 70, 0, 71, 0, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 0, 96, 97, 98, 99, 0, 0, 100, 0, - 0, 0, 0, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 101, 102, 103, 104, 0, 828, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 0, 0, 111, 0, 0, 0, 0, - 114, 0, 0, 0, 0, 117, 0, 466, 101, 102, - 103, 104, 105, 106, 107, 108, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, - 111, 112, 113, 0, 0, 114, 0, 115, 0, 116, - 117, 68, 283, 0, 0, 0, 0, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 284, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 25, 26, 27, 28, 29, 30, 0, 0, 68, 249, - 0, 0, 35, 36, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 101, 102, - 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 109, 285, 0, 0, 0, - 111, 0, 0, 0, 0, 114, 68, 249, 190, 0, - 117, 0, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 987, 96, 97, 98, - 99, 0, 0, 100, 0, 101, 102, 103, 104, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 0, 0, 111, 0, 0, - 0, 0, 114, 68, 452, 0, 0, 117, 0, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 101, 102, 103, 104, 1002, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 0, 0, 111, 1003, 0, 0, 0, - 114, 0, 0, 0, 0, 117, 0, 0, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 1005, 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 103, 104, 1084, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 109, 110, 0, - 0, 0, 111, 0, 0, 453, 0, 114, 0, 0, - 0, 0, 117, 0, 0, 0, 0, 0, 0, 264, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 525, 0, 0, 0, 278, 264, 265, + 275, 276, 277, 0, -3, 1, 0, 278, -3, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, + 0, 0, 0, 0, 955, 0, 956, -3, 0, 0, + 0, 0, -3, -3, 0, -3, -3, -3, -3, -3, + -3, -3, -3, -3, 0, -3, -3, -3, -3, -3, + -3, -3, 0, 0, 0, -3, -3, -3, -3, -3, + -3, -3, 0, -3, -3, -3, -3, 4, -3, -3, + 0, 0, 0, 0, 0, -3, -3, -3, -3, 0, + 0, -3, 0, -3, 0, -3, -3, -3, -3, -3, + -3, -3, -3, -3, 0, 0, 5, 0, 0, 0, + 0, 6, 7, 0, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 0, 17, 18, 19, 20, 21, 22, + 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, + 30, 0, 31, 32, 33, 34, 0, 35, 36, 0, + 0, 0, 0, 0, 37, 38, 39, 40, 0, 0, + 41, 0, 42, 0, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 501, 9, 10, 502, 12, 503, 14, + 504, 16, 0, 17, 0, 19, 20, 0, 22, 23, + 501, 9, 10, 502, 12, 503, 14, 504, 16, 0, + 17, 0, 19, 20, 34, 22, 23, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 40, 0, 0, 0, + 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 39, 40, 501, 9, 10, 502, 12, 503, + 14, 504, 16, 0, 17, 0, 19, 20, 0, 22, + 23, 0, 0, 0, 0, 0, 501, 9, 10, 502, + 12, 503, 14, 504, 16, 34, 17, 515, 19, 20, + 0, 22, 23, 0, 0, 38, 39, 40, 0, 0, + 0, 0, 0, 0, 529, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, + 501, 9, 10, 502, 12, 503, 14, 504, 16, 0, + 17, 0, 19, 20, 0, 22, 23, 501, 9, 10, + 502, 12, 503, 14, 504, 16, 0, 17, 530, 19, + 20, 34, 22, 23, 0, 0, 0, 0, 0, 0, + 0, 38, 39, 40, 0, 0, 0, 0, 34, 0, + 674, 0, 0, 0, 0, 0, 0, 0, 38, 39, + 40, 501, 9, 10, 502, 12, 503, 14, 504, 16, + 0, 17, 0, 19, 20, 0, 22, 23, 0, 0, + 0, 0, 0, 501, 9, 10, 502, 12, 503, 14, + 504, 16, 34, 17, 688, 19, 20, 0, 22, 23, + 0, 0, 38, 39, 40, 0, 0, 0, 0, 0, + 0, 1087, 0, 0, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 40, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, + 0, 0, 976, 0, 977, 1127, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 1048, 0, 1049, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 648, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 649, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 695, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 612, 0, 0, 0, 278, 0, 0, 0, - 0, 0, 0, 0, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 738, 0, - 0, 0, 278, 0, 0, 0, 264, 265, 266, 267, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 741, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 795, 0, 0, 0, 278, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 776, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 953, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 0, 0, 0, 0, 0, 0, 264, 265, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 973, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 999, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, -3, 1, 0, 278, -3, 0, 0, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 1001, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 1004, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 1005, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 1006, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, - 0, -3, -3, 0, -3, -3, -3, -3, -3, -3, - -3, -3, -3, 0, -3, -3, -3, -3, -3, -3, - -3, 0, 0, 0, -3, -3, -3, -3, -3, -3, - -3, 0, -3, -3, -3, -3, 4, -3, -3, 0, - 0, 0, 0, 0, -3, -3, -3, -3, 0, 0, - -3, 0, -3, 0, -3, -3, -3, -3, -3, -3, - -3, -3, -3, 0, 0, 5, 0, 0, 0, 0, - 6, 7, 0, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, - 0, 31, 32, 33, 34, 0, 35, 36, 0, 0, - 0, 0, 0, 37, 38, 39, 40, 0, 0, 41, - 0, 42, 0, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 503, 9, 10, 504, 12, 505, 14, 506, - 16, 0, 17, 0, 19, 20, 0, 22, 23, 503, - 9, 10, 504, 12, 505, 14, 506, 16, 0, 17, - 0, 19, 20, 34, 22, 23, 0, 0, 0, 0, - 0, 0, 0, 38, 39, 40, 0, 0, 0, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 39, 40, 503, 9, 10, 504, 12, 505, 14, - 506, 16, 0, 17, 0, 19, 20, 0, 22, 23, - 0, 0, 0, 0, 0, 503, 9, 10, 504, 12, - 505, 14, 506, 16, 34, 17, 513, 19, 20, 0, - 22, 23, 0, 0, 38, 39, 40, 0, 0, 0, - 0, 0, 0, 527, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 39, 40, 503, - 9, 10, 504, 12, 505, 14, 506, 16, 0, 17, - 0, 19, 20, 0, 22, 23, 503, 9, 10, 504, - 12, 505, 14, 506, 16, 0, 17, 528, 19, 20, - 34, 22, 23, 0, 0, 0, 0, 0, 0, 0, - 38, 39, 40, 0, 0, 0, 0, 34, 0, 664, - 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, - 503, 9, 10, 504, 12, 505, 14, 506, 16, 0, - 17, 0, 19, 20, 0, 22, 23, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 34, 0, 682, 0, 278, 0, 0, 0, 0, - 0, 38, 39, 40, 642, 0, 0, 0, 0, 0, - 1079, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 970, 0, 971, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 1121, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 1042, 0, 1043, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 646, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 647, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 689, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 735, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 770, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 947, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 961, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 993, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 995, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 998, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 999, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 1000, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 1054, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 1058, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 1059, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 1070, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 1073, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 1076, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 1092, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 1115, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 1117, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 1119, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 1127, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 419, 0, 0, 0, 0, 486, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 448, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 486, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 487, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 522, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 569, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 570, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 583, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 584, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 585, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 586, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 587, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 588, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 660, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 661, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 662, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 731, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 768, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 769, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 794, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 901, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 902, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 919, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 931, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 1025, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 1026, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 1034, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 1040, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 1087, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 1089, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 0, 0, 0, 0, 0, 0, 0, 1062, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 1065, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 1076, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 1079, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 1082, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 1098, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 1120, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 1122, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 1124, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 1132, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 420, 0, + 0, 0, 0, 487, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 449, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 487, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 488, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 524, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 571, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 572, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 585, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 586, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 587, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 588, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 589, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 590, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 662, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 663, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 664, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 737, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 774, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 775, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 801, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 907, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 908, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 925, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 937, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 1031, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 1032, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 1040, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 1046, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 1093, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 1095, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, + 424, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 423, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 532, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 0, 0, 530, 264, 265, 266, + 0, 0, 278, 0, 0, 0, 550, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 548, + 277, 0, 0, 0, 0, 278, 0, 0, 0, 552, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 0, 0, 550, 264, 265, 266, 267, 268, 269, 270, + 0, 0, 554, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 552, 264, 265, 266, 267, + 0, 278, 0, 0, 0, 556, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 0, 0, 554, 264, + 0, 0, 0, 0, 278, 0, 0, 0, 558, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 556, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 560, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 0, 0, 558, 264, 265, 266, 267, 268, + 278, 0, 0, 0, 562, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 560, 264, 265, + 0, 0, 0, 278, 0, 0, 0, 564, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, - 562, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 566, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 564, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 568, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 0, 0, 566, 264, 265, 266, + 0, 0, 278, 0, 0, 0, 570, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 568, + 277, 0, 0, 0, 0, 278, 0, 0, 0, 574, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 0, 0, 572, 264, 265, 266, 267, 268, 269, 270, + 0, 0, 576, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 574, 264, 265, 266, 267, + 0, 278, 0, 0, 0, 578, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 0, 0, 576, 264, + 0, 0, 0, 0, 278, 0, 0, 0, 580, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 578, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 582, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 0, 0, 580, 264, 265, 266, 267, 268, + 278, 0, 0, 0, 584, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 582, 264, 265, + 0, 0, 0, 278, 0, 0, 0, 676, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, - 666, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 678, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 672, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 681, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 0, 0, 675, 264, 265, 266, + 0, 0, 278, 0, 0, 0, 682, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 0, 0, 676, + 277, 0, 0, 0, 0, 278, 0, 0, 0, 691, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 0, 0, 685, 264, 265, 266, 267, 268, 269, 270, + 0, 0, 717, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 0, 0, 711, 264, 265, 266, 267, + 0, 278, 0, 0, 0, 817, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 0, 0, 810, 264, + 0, 0, 0, 0, 278, 0, 0, 0, 819, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, - 0, 812, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 821, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 0, 0, 814, 264, 265, 266, 267, 268, + 278, 0, 0, 0, 823, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 0, 0, 816, 264, 265, + 0, 0, 0, 278, 0, 0, 0, 824, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, 0, 0, - 817, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 922, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 0, 0, 916, 264, 265, 266, 267, 268, 269, + 0, 420, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 278, 0, 450, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 278, 0, 457, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 419, 264, 265, 266, 267, 268, + 0, 0, 278, 0, 458, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 449, 264, 265, 266, 267, + 0, 0, 0, 278, 0, 460, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 456, 264, 265, 266, + 0, 0, 0, 0, 278, 0, 462, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 457, 264, 265, + 277, 0, 0, 0, 0, 278, 0, 465, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, 0, 0, 0, 278, 0, 459, 264, + 276, 277, 0, 0, 0, 0, 278, 0, 466, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 461, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 471, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 464, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 520, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 465, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 521, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 470, 264, 265, 266, 267, 268, 269, 270, + 278, 0, 522, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 518, 264, 265, 266, 267, 268, 269, + 0, 278, 0, 528, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 519, 264, 265, 266, 267, 268, + 0, 0, 278, 0, 549, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 520, 264, 265, 266, 267, + 0, 0, 0, 278, 0, 551, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 526, 264, 265, 266, + 0, 0, 0, 0, 278, 0, 553, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 547, 264, 265, + 277, 0, 0, 0, 0, 278, 0, 555, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, 0, 0, 0, 278, 0, 549, 264, + 276, 277, 0, 0, 0, 0, 278, 0, 557, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 551, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 559, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 553, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 561, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 555, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 563, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 557, 264, 265, 266, 267, 268, 269, 270, + 278, 0, 565, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 559, 264, 265, 266, 267, 268, 269, + 0, 278, 0, 567, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 561, 264, 265, 266, 267, 268, + 0, 0, 278, 0, 569, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 563, 264, 265, 266, 267, + 0, 0, 0, 278, 0, 573, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 565, 264, 265, 266, + 0, 0, 0, 0, 278, 0, 575, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 567, 264, 265, + 277, 0, 0, 0, 0, 278, 0, 577, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, 0, 0, 0, 278, 0, 571, 264, + 276, 277, 0, 0, 0, 0, 278, 0, 579, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 573, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 581, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 575, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 583, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 577, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 632, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 579, 264, 265, 266, 267, 268, 269, 270, + 278, 0, 636, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 581, 264, 265, 266, 267, 268, 269, + 0, 278, 0, 645, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 630, 264, 265, 266, 267, 268, + 0, 0, 278, 0, 646, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 634, 264, 265, 266, 267, + 0, 0, 0, 278, 0, 650, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 643, 264, 265, 266, + 0, 0, 0, 0, 278, 0, 816, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 644, 264, 265, + 277, 0, 0, 0, 0, 278, 0, 818, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, 0, 0, 0, 278, 0, 648, 264, + 276, 277, 0, 0, 0, 0, 278, 0, 820, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278, 0, 809, + 275, 276, 277, 0, 0, 0, 0, 278, 0, 822, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, 0, - 811, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 828, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, 278, - 0, 813, 264, 265, 266, 267, 268, 269, 270, 271, + 0, 913, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, - 278, 0, 815, 264, 265, 266, 267, 268, 269, 270, + 278, 0, 954, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, - 0, 278, 0, 821, 264, 265, 266, 267, 268, 269, + 0, 278, 0, 980, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 278, 0, 907, 264, 265, 266, 267, 268, + 0, 0, 278, 0, 1092, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, - 0, 0, 0, 278, 0, 948, 264, 265, 266, 267, + 0, 0, 0, 278, 0, 1131, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 0, 0, 0, 0, 278, 0, 974, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 0, 0, 0, 0, 278, 0, 1086, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 0, 0, 0, 0, 278, 0, 1126, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 0, 0, 0, 0, 278 + 0, 0, 0, 0, 278 }; static const short yycheck[] = { 4, - 328, 2, 257, 2, 6, 68, 4, 69, 4, 168, - 4, 73, 171, 609, 128, 4, 1011, 4, 1013, 133, - 1015, 7, 136, 5, 4, 4, 7, 6, 4, 4, - 4, 4, 191, 4, 193, 5, 127, 6, 4, 68, - 68, 41, 68, 134, 44, 50, 51, 6, 6, 6, - 127, 4, 34, 35, 36, 37, 6, 6, 40, 6, - 133, 117, 118, 136, 34, 35, 36, 37, 117, 118, - 40, 134, 5, 135, 316, 317, 318, 133, 76, 77, - 78, 79, 80, 6, 133, 1080, 135, 127, 6, 76, - 77, 78, 79, 80, 6, 53, 53, 127, 127, 127, - 127, 34, 35, 36, 37, 134, 134, 40, 134, 90, - 7, 87, 88, 127, 87, 88, 123, 124, 104, 1114, - 7, 1116, 129, 1118, 131, 50, 722, 1122, 48, 136, - 777, 46, 134, 127, 123, 124, 127, 135, 134, 127, - 129, 255, 131, 134, 127, 69, 115, 136, 135, 73, - 129, 1146, 134, 1148, 134, 1150, 109, 110, 111, 134, - 134, 114, 115, 134, 134, 118, 115, 46, 423, 69, - 117, 118, 125, 73, 127, 128, 129, 130, 337, 132, - 133, 134, 255, 136, 137, 138, 127, 140, 46, 303, - 123, 124, 128, 134, 117, 118, 355, 133, 131, 117, - 118, 6, 7, 156, 157, 117, 118, 104, 105, 106, - 107, 135, 165, 127, 117, 118, 46, 104, 105, 106, - 107, 119, 120, 121, 127, 178, 179, 180, 126, 182, - 303, 134, 185, 186, 69, 831, 123, 124, 73, 244, - 245, 246, 247, 196, 131, 127, 127, 129, 129, 202, + 675, 2, 328, 2, 611, 165, 6, 68, 168, 4, + 4, 171, 5, 4, 4, 4, 4, 4, 671, 257, + 6, 4, 4, 117, 118, 5, 4, 4, 6, 4, + 6, 191, 6, 193, 7, 44, 7, 46, 4, 48, + 134, 34, 35, 36, 37, 50, 51, 40, 6, 68, + 68, 4, 6, 139, 34, 35, 36, 37, 144, 6, + 40, 69, 6, 127, 6, 73, 127, 127, 117, 118, + 134, 5, 69, 134, 134, 127, 73, 53, 6, 53, + 6, 127, 134, 169, 133, 127, 135, 173, 174, 76, + 77, 78, 79, 80, 76, 77, 78, 79, 80, 127, + 34, 35, 36, 37, 87, 88, 40, 69, 7, 127, + 127, 73, 87, 88, 128, 134, 134, 90, 128, 133, + 7, 728, 68, 133, 127, 41, 136, 135, 44, 123, + 124, 117, 118, 104, 134, 129, 789, 131, 135, 134, + 50, 134, 136, 134, 134, 134, 134, 128, 135, 46, + 127, 129, 133, 135, 134, 127, 109, 110, 111, 117, + 118, 114, 115, 117, 118, 118, 117, 118, 115, 46, + 133, 115, 125, 136, 127, 128, 129, 130, 338, 132, + 133, 134, 133, 136, 137, 138, 424, 140, 134, 123, + 124, 117, 118, 117, 118, 128, 356, 131, 117, 118, + 133, 6, 7, 156, 157, 104, 105, 106, 107, 133, + 128, 135, 165, 127, 133, 133, 135, 104, 105, 106, + 107, 117, 118, 128, 46, 178, 179, 180, 133, 182, + 69, 838, 185, 186, 73, 48, 123, 124, 134, 244, + 245, 246, 247, 196, 131, 255, 316, 317, 318, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 257, 69, 117, 118, 127, 73, 129, 123, 124, - 135, 69, 255, 123, 124, 73, 131, 26, 27, 133, - 29, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 243, 257, 255, 303, 26, 27, 135, 29, 123, 124, + 69, 69, 255, 69, 73, 73, 131, 73, 127, 7, + 129, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 327, 328, 327, 328, - 69, 7, 285, 447, 73, 117, 118, 117, 118, 41, - 454, 294, 44, 69, 46, 298, 127, 73, 129, 302, - 303, 133, 466, 135, 134, 308, 309, 310, 135, 312, - 313, 314, 315, 316, 317, 318, 127, 135, 129, 69, - 7, 69, 69, 73, 447, 73, 73, 330, 331, 332, - 333, 334, 335, 69, 69, 338, 128, 73, 73, 134, - 343, 133, 988, 466, 347, 348, 135, 117, 118, 1046, - 366, 134, 1049, 117, 118, 1052, 117, 118, 133, 135, - 135, 364, 128, 133, 367, 117, 118, 133, 128, 424, - 134, 139, 133, 133, 135, 127, 144, 6, 104, 105, - 106, 107, 134, 4, 153, 135, 155, 135, 135, 44, - 4, 46, 161, 48, 4, 5, 165, 123, 124, 135, - 135, 169, 127, 4, 129, 173, 174, 423, 1105, 714, - 715, 128, 117, 118, 127, 418, 133, 104, 105, 106, - 107, 127, 425, 8, 34, 35, 36, 37, 592, 134, - 40, 200, 1129, 117, 118, 1132, 123, 124, 1135, 117, - 118, 1138, 117, 118, 447, 448, 127, 450, 451, 133, - 453, 454, 117, 118, 127, 133, 5, 621, 6, 134, - 1157, 4, 1159, 466, 1161, 127, 469, 129, 133, 592, - 127, 474, 129, 117, 118, 530, 4, 117, 118, 117, - 118, 117, 118, 486, 487, 34, 35, 36, 37, 133, - 127, 40, 495, 133, 127, 133, 874, 133, 621, 117, - 118, 117, 118, 667, 668, 669, 670, 510, 127, 117, - 118, 119, 120, 121, 530, 133, 127, 133, 126, 522, - 127, 524, 525, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 127, 593, 129, - 127, 126, 129, 4, 667, 668, 669, 670, 41, 6, - 135, 44, 127, 46, 129, 48, 325, 326, 6, 127, - 615, 129, 123, 124, 127, 334, 569, 570, 129, 8, - 131, 5, 127, 737, 129, 136, 127, 127, 129, 129, - 583, 584, 585, 586, 587, 588, 589, 127, 127, 592, - 129, 127, 127, 596, 129, 127, 134, 129, 6, 602, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 612, - 51, 127, 53, 54, 737, 56, 57, 127, 621, 129, - 623, 127, 127, 129, 129, 133, 133, 135, 135, 1007, - 134, 72, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 82, 83, 84, 134, 126, 62, 63, 64, 65, - 58, 67, 420, 421, 127, 123, 124, 127, 74, 75, - 129, 129, 131, 131, 667, 668, 669, 670, 136, 108, + 117, 118, 285, 127, 69, 421, 422, 127, 73, 129, + 303, 294, 1017, 134, 1019, 298, 1021, 134, 69, 302, + 303, 127, 73, 129, 134, 308, 309, 310, 46, 312, + 313, 314, 315, 316, 317, 318, 135, 135, 41, 135, + 69, 44, 7, 46, 73, 48, 6, 330, 331, 332, + 333, 334, 335, 123, 124, 69, 339, 994, 69, 73, + 69, 344, 73, 4, 73, 348, 349, 59, 60, 1052, + 135, 367, 1055, 117, 118, 1058, 104, 105, 106, 107, + 6, 7, 365, 1088, 135, 368, 4, 117, 118, 133, + 425, 153, 127, 155, 129, 123, 124, 127, 69, 161, + 516, 517, 73, 165, 134, 127, 135, 129, 448, 117, + 118, 127, 4, 129, 1119, 455, 1121, 41, 1123, 6, + 44, 135, 46, 1128, 135, 133, 135, 467, 424, 1112, + 127, 117, 118, 127, 117, 118, 419, 127, 200, 104, + 105, 106, 107, 426, 133, 1150, 135, 1152, 134, 1154, + 133, 1134, 720, 721, 1137, 448, 4, 1140, 123, 124, + 1143, 127, 4, 129, 135, 448, 449, 4, 451, 452, + 127, 454, 455, 127, 467, 129, 4, 5, 1161, 127, + 1163, 129, 1165, 127, 467, 117, 118, 470, 127, 127, + 129, 129, 475, 117, 118, 117, 118, 532, 127, 127, + 129, 133, 5, 127, 487, 488, 34, 35, 36, 37, + 134, 133, 40, 496, 630, 631, 127, 633, 129, 635, + 127, 127, 638, 639, 127, 881, 117, 118, 127, 512, + 129, 34, 35, 36, 37, 5, 532, 40, 6, 117, + 118, 524, 133, 526, 527, 117, 118, 6, 127, 117, + 118, 127, 127, 129, 594, 133, 127, 117, 118, 4, + 595, 133, 127, 325, 326, 133, 127, 683, 684, 685, + 117, 118, 334, 133, 119, 120, 121, 127, 127, 129, + 129, 126, 617, 623, 123, 124, 133, 8, 571, 572, + 129, 127, 131, 129, 127, 127, 129, 136, 127, 134, + 129, 594, 585, 586, 587, 588, 589, 590, 591, 134, + 127, 594, 129, 134, 133, 598, 135, 133, 129, 135, + 131, 604, 46, 127, 48, 665, 666, 667, 668, 8, + 623, 614, 748, 127, 127, 123, 124, 753, 134, 134, + 623, 129, 625, 131, 760, 761, 762, 134, 136, 765, + 766, 767, 768, 769, 770, 771, 133, 1013, 135, 133, + 6, 135, 133, 129, 135, 62, 63, 64, 65, 785, + 67, 129, 665, 666, 667, 668, 129, 74, 75, 133, + 6, 135, 665, 666, 667, 668, 134, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 131, 133, 743, 135, 126, 133, 133, 135, 135, + 6, 6, 58, 829, 135, 698, 699, 90, 133, 702, + 135, 717, 6, 129, 486, 721, 133, 4, 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 133, 133, 135, 135, 126, 4, 692, - 693, 59, 60, 696, 135, 711, 135, 6, 7, 715, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 127, 46, 485, 48, 126, 133, - 723, 135, 133, 133, 135, 135, 127, 133, 731, 135, - 133, 500, 135, 127, 737, 738, 133, 133, 135, 135, - 133, 133, 135, 135, 134, 134, 514, 515, 134, 129, - 753, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 129, 767, 768, 769, 126, 823, 6, - 4, 774, 6, 133, 129, 135, 133, 133, 135, 135, - 835, 131, 133, 799, 135, 133, 133, 135, 135, 134, - 90, 794, 795, 796, 6, 6, 6, 129, 4, 802, - 134, 5, 126, 131, 807, 7, 129, 1016, 134, 7, - 7, 128, 6, 87, 7, 870, 7, 128, 128, 134, - 133, 824, 6, 874, 4, 874, 133, 130, 90, 8, - 7, 7, 7, 90, 7, 838, 90, 7, 7, 842, - 7, 128, 128, 128, 128, 135, 849, 850, 131, 618, - 853, 7, 7, 135, 7, 131, 127, 860, 861, 127, - 628, 629, 134, 631, 127, 633, 6, 870, 636, 637, - 4, 6, 1081, 6, 130, 6, 6, 129, 7, 6, - 115, 884, 46, 46, 7, 7, 48, 134, 7, 7, - 7, 660, 661, 662, 7, 7, 7, 7, 901, 902, - 7, 7, 7, 4, 6, 127, 6, 6, 6, 677, - 678, 679, 6, 6, 4, 6, 919, 4, 6, 134, - 128, 128, 131, 7, 6, 6, 6, 6, 931, 108, + 119, 120, 121, 134, 5, 507, 729, 126, 126, 133, + 743, 135, 7, 133, 737, 135, 135, 4, 129, 6, + 743, 744, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 759, 133, 131, 135, + 126, 123, 124, 899, 133, 7, 135, 129, 7, 131, + 773, 774, 775, 909, 136, 830, 133, 913, 135, 133, + 128, 135, 785, 8, 133, 788, 135, 842, 6, 133, + 806, 135, 117, 118, 119, 120, 121, 134, 801, 802, + 803, 126, 7, 7, 6, 87, 809, 134, 128, 133, + 128, 814, 133, 6, 1024, 4, 130, 90, 90, 7, + 7, 7, 877, 7, 90, 7, 7, 7, 831, 128, + 881, 131, 881, 6, 128, 128, 972, 128, 620, 135, + 135, 7, 845, 7, 7, 131, 849, 127, 127, 134, + 127, 6, 4, 856, 857, 6, 6, 860, 6, 130, + 6, 129, 7, 6, 867, 868, 115, 46, 46, 7, + 7, 48, 134, 7, 877, 7, 7, 7, 7, 1089, + 662, 663, 664, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 7, 7, 7, + 7, 126, 7, 128, 907, 908, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 4, 6, 925, 1059, 126, 134, 6, 6, 6, 6, + 6, 6, 4, 6, 937, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 4, + 6, 127, 955, 126, 128, 6, 128, 7, 6, 134, + 131, 6, 1013, 6, 1013, 134, 134, 134, 6, 134, + 6, 974, 134, 976, 134, 978, 6, 6, 131, 982, + 86, 6, 4, 6, 987, 6, 130, 6, 6, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 6, 51, + 133, 53, 54, 6, 56, 57, 788, 6, 6, 6, + 6, 6, 6, 1016, 6, 1018, 6, 1020, 6, 6, + 72, 6, 6, 1026, 6, 4, 6, 131, 1031, 1032, + 82, 83, 84, 134, 6, 130, 7, 1040, 6, 6, + 6, 6, 134, 6, 135, 1048, 134, 134, 134, 6, + 85, 134, 6, 6, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 1066, 128, 7, 6, 126, 88, 851, + 6, 853, 6, 6, 1077, 1130, 134, 1080, 6, 5, + 1083, 135, 6, 135, 6, 134, 133, 6, 6, 6, + 1093, 6, 1095, 6, 6, 6, 135, 5, 135, 6, + 882, 1156, 884, 1158, 886, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 3, 4, 134, 1174, + 126, 134, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 6, 6, 134, 6, + 6, 134, 133, 6, 41, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 5, + 134, 6, 134, 126, 134, 62, 63, 64, 65, 66, + 67, 6, 134, 6, 6, 6, 6, 74, 75, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 6, 134, 134, 949, 126, 134, 128, - 6, 134, 134, 134, 6, 6, 1007, 6, 1007, 962, - 134, 86, 6, 131, 4, 6, 131, 970, 6, 972, - 130, 6, 6, 976, 742, 6, 6, 6, 981, 747, - 6, 6, 6, 6, 6, 6, 754, 755, 756, 6, - 6, 759, 760, 761, 762, 763, 764, 765, 6, 6, - 6, 6, 134, 4, 6, 774, 6, 1010, 7, 1012, - 6, 1014, 6, 6, 130, 6, 85, 1020, 6, 134, - 6, 135, 1025, 1026, 88, 134, 134, 7, 6, 6, - 134, 1034, 128, 6, 6, 6, 6, 134, 133, 1042, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 822, 5, 134, 1060, 126, 135, - 134, 6, 133, 6, 6, 133, 6, 135, 1071, 6, - 1125, 1074, 6, 6, 1077, 844, 6, 846, 6, 5, - 134, 134, 6, 6, 1087, 135, 1089, 134, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 1152, 51, 1154, - 53, 54, 134, 56, 57, 133, 875, 6, 877, 6, - 879, 6, 6, 6, 5, 1170, 884, 135, 6, 72, - 134, 134, 134, 134, 6, 893, 6, 6, 6, 82, - 83, 84, 6, 6, 6, 903, 6, 730, 0, 907, - 3, 4, 0, 1060, 980, 533, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 2, 2, -1, 827, -1, -1, -1, -1, 41, -1, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, 126, 62, - 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, - -1, 74, 75, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 1010, -1, 1012, -1, 1014, -1, -1, -1, -1, - -1, 1019, -1, -1, 117, 118, -1, -1, -1, 122, - -1, -1, -1, -1, 127, -1, 1035, 3, 4, 132, - -1, -1, 135, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, - -1, -1, -1, -1, 1082, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 62, 63, 64, 65, - 66, 67, -1, -1, 3, 4, -1, -1, 74, 75, + 119, 120, 121, 6, 6, 6, 0, 126, 0, 736, + 1066, 2, 535, 100, 101, 102, 103, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 2, + 117, 118, 986, 126, 1016, 122, 1018, 834, 1020, -1, + 127, -1, -1, -1, -1, 132, -1, -1, 135, -1, + -1, -1, -1, -1, 3, 4, -1, -1, -1, 1041, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 100, 101, 102, 103, 6, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - -1, 117, 118, -1, 126, -1, 122, -1, -1, -1, - -1, 127, -1, 3, 4, -1, 132, -1, 134, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, 103, -1, -1, -1, -1, -1, + 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, + -1, -1, 41, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, + -1, 126, -1, 62, 63, 64, 65, 66, 67, -1, + 135, 3, 4, -1, -1, 74, 75, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 100, 101, 102, 103, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, 122, -1, -1, -1, -1, 127, -1, - -1, 130, -1, 132, -1, 134, -1, -1, -1, -1, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, 126, 6, - 100, 101, 102, 103, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, - -1, -1, 122, -1, -1, -1, -1, 127, -1, -1, - 130, -1, 132, -1, 134, 3, 4, -1, -1, -1, - -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, - 3, 4, -1, -1, -1, -1, 9, 10, 11, 12, + 3, 4, -1, 132, -1, 134, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, - 118, -1, -1, -1, 122, -1, -1, -1, -1, 127, - -1, -1, 130, -1, 132, -1, 134, 100, 101, 102, - 103, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, + 102, 103, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, + 122, -1, -1, -1, -1, 127, -1, -1, 130, -1, + 132, -1, 134, -1, -1, -1, -1, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, -1, -1, -1, -1, 126, 6, 100, 101, 102, + 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, 122, - -1, -1, -1, -1, 127, -1, 3, 4, -1, 132, - -1, 134, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 7, -1, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, 35, 36, 37, -1, -1, 40, -1, - -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, 100, 101, 102, 103, -1, 6, -1, + -1, -1, -1, -1, 127, -1, -1, 130, -1, 132, + -1, 134, 3, 4, -1, -1, -1, -1, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, -1, -1, -1, 3, 4, -1, + -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, + 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 117, 118, -1, -1, + -1, 122, -1, -1, -1, -1, 127, -1, -1, 130, + -1, 132, -1, 134, 100, 101, 102, 103, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 117, 118, -1, -1, -1, 122, -1, -1, -1, -1, - 127, -1, -1, -1, -1, 132, -1, 134, 100, 101, - 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, - 122, 123, 124, -1, -1, 127, -1, 129, -1, 131, - 132, 3, 4, -1, -1, -1, -1, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 117, 118, -1, -1, -1, 122, -1, -1, -1, + -1, 127, -1, 3, 4, -1, 132, -1, 134, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, -1, -1, -1, -1, 3, 4, + 5, -1, 7, -1, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + 35, 36, 37, -1, -1, 40, -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, - 62, 63, 64, 65, 66, 67, -1, -1, 3, 4, - -1, -1, 74, 75, 9, 10, 11, 12, 13, 14, + 100, 101, 102, 103, -1, 6, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, + -1, -1, 122, -1, -1, -1, -1, 127, -1, -1, + -1, -1, 132, -1, 134, 100, 101, 102, 103, 104, + 105, 106, 107, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 117, 118, -1, -1, -1, 122, 123, 124, + -1, -1, 127, -1, 129, -1, 131, 132, 3, 4, + -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 100, 101, - 102, 103, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, - 122, -1, -1, -1, -1, 127, 3, 4, 5, -1, - 132, -1, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 6, 34, 35, 36, - 37, -1, -1, 40, -1, 100, 101, 102, 103, -1, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, -1, 41, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, -1, -1, -1, -1, 126, -1, 62, 63, 64, + 65, 66, 67, -1, -1, 3, 4, -1, -1, 74, + 75, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 100, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, 122, -1, -1, - -1, -1, 127, 3, 4, -1, -1, 132, -1, 9, + -1, -1, 127, 3, 4, 5, -1, 132, -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 100, 101, 102, 103, 6, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 117, 118, -1, -1, -1, 122, 6, -1, -1, -1, - 127, -1, -1, -1, -1, 132, -1, -1, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 6, -1, -1, -1, 126, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 30, 31, 32, 6, 34, 35, 36, 37, -1, -1, + 40, -1, 100, 101, 102, 103, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, + 118, -1, -1, -1, 122, -1, -1, -1, -1, 127, + 3, 4, -1, -1, 132, -1, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 100, 101, 102, 103, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 118, -1, - -1, -1, 122, -1, -1, 8, -1, 127, -1, -1, - -1, -1, 132, -1, -1, -1, -1, -1, -1, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 8, -1, -1, -1, 126, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 8, -1, -1, -1, 126, -1, -1, -1, - -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 8, -1, - -1, -1, 126, -1, -1, -1, 108, 109, 110, 111, + -1, -1, 122, 6, -1, -1, -1, 127, -1, -1, + -1, -1, 132, -1, -1, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 8, + -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, + 103, 8, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 117, 118, -1, -1, -1, 122, + 8, -1, -1, -1, 127, -1, -1, -1, -1, 132, + -1, -1, -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 8, -1, -1, -1, 126, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, -1, 0, 1, -1, 126, 4, -1, -1, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 8, + -1, -1, -1, 126, -1, -1, -1, -1, -1, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, + -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, - -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, -1, 0, 1, -1, 126, 4, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, + -1, -1, -1, -1, 133, -1, 135, 33, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, + 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, + 56, 57, -1, -1, -1, 61, 62, 63, 64, 65, + 66, 67, -1, 69, 70, 71, 72, 4, 74, 75, + -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, + -1, 87, -1, 89, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 99, -1, -1, 33, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1, 61, 62, 63, 64, 65, 66, - 67, -1, 69, 70, 71, 72, 4, 74, 75, -1, + 67, -1, 69, 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, -1, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, -1, -1, 33, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, -1, 51, 52, 53, 54, 55, 56, 57, - -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, - -1, 69, 70, 71, 72, -1, 74, 75, -1, -1, - -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, - -1, 89, -1, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 41, 42, 43, 44, 45, 46, 47, 48, - 49, -1, 51, -1, 53, 54, -1, 56, 57, 41, - 42, 43, 44, 45, 46, 47, 48, 49, -1, 51, - -1, 53, 54, 72, 56, 57, -1, -1, -1, -1, - -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, - 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 82, 83, 84, 41, 42, 43, 44, 45, 46, 47, + 97, 98, 99, 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, 51, -1, 53, 54, -1, 56, 57, - -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 72, 51, 135, 53, 54, -1, - 56, 57, -1, -1, 82, 83, 84, -1, -1, -1, - -1, -1, -1, 135, -1, -1, 72, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, 83, 84, 41, - 42, 43, 44, 45, 46, 47, 48, 49, -1, 51, - -1, 53, 54, -1, 56, 57, 41, 42, 43, 44, - 45, 46, 47, 48, 49, -1, 51, 135, 53, 54, - 72, 56, 57, -1, -1, -1, -1, -1, -1, -1, - 82, 83, 84, -1, -1, -1, -1, 72, -1, 135, + 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, + 51, -1, 53, 54, 72, 56, 57, -1, -1, -1, + -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, + -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, 83, 84, 41, 42, 43, 44, 45, 46, + 47, 48, 49, -1, 51, -1, 53, 54, -1, 56, + 57, -1, -1, -1, -1, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 72, 51, 135, 53, 54, + -1, 56, 57, -1, -1, 82, 83, 84, -1, -1, + -1, -1, -1, -1, 135, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, - 51, -1, 53, 54, -1, 56, 57, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 72, -1, 135, -1, 126, -1, -1, -1, -1, - -1, 82, 83, 84, 135, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, -1, 135, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, 135, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, -1, 135, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, 135, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, 135, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 135, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, 135, 108, 109, 110, + 51, -1, 53, 54, -1, 56, 57, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, 51, 135, 53, + 54, 72, 56, 57, -1, -1, -1, -1, -1, -1, + -1, 82, 83, 84, -1, -1, -1, -1, 72, -1, + 135, -1, -1, -1, -1, -1, -1, -1, 82, 83, + 84, 41, 42, 43, 44, 45, 46, 47, 48, 49, + -1, 51, -1, 53, 54, -1, 56, 57, -1, -1, + -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 72, 51, 135, 53, 54, -1, 56, 57, + -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, + -1, 135, -1, -1, 72, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 82, 83, 84, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, 135, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, 135, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 135, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, 135, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, 135, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, 135, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 135, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, 135, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, 135, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, 135, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 135, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, 135, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, 135, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, 135, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - 135, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, 128, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, 133, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - 133, 108, 109, 110, 111, 112, 113, 114, 115, 116, + -1, -1, 133, -1, 135, 135, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, -1, 135, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, 135, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 135, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, 135, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, 135, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, 135, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 135, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, 135, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, 135, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, 135, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 135, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, 135, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, 135, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, 135, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 135, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, 135, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, 135, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, 135, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 135, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, 128, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, 133, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 133, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, -1, -1, -1, -1, -1, 133, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, + 130, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, 130, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, @@ -2014,7 +2015,11 @@ static const short yycheck[] = { 4, 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, 130, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, - -1, -1, -1, 130, 108, 109, 110, 111, 112, 113, + -1, 128, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, + 126, -1, 128, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, + -1, 126, -1, 128, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, 128, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, @@ -2104,13 +2109,7 @@ static const short yycheck[] = { 4, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, 128, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - -1, -1, -1, -1, 126, -1, 128, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, -1, -1, 126, -1, 128, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, -1, -1, -1, -1, 126, -1, 128, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, -1, -1, -1, 126 + -1, -1, -1, -1, 126 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -4878,100 +4877,100 @@ case 162: ; break;} case 163: -#line 2199 "Gmsh.y" +#line 2197 "Gmsh.y" { - yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, - yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., - NULL, yyval.l); + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 164: -#line 2206 "Gmsh.y" +#line 2202 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, - yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., - NULL, yyval.l); + ExtrudeShapes(BOUNDARY_LAYER, yyvsp[-3].l, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + &extr, yyval.l); + List_Delete(yyvsp[-3].l); ; break;} case 165: -#line 2213 "Gmsh.y" +#line 2211 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, + ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., NULL, yyval.l); ; break;} case 166: -#line 2220 "Gmsh.y" +#line 2218 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-8].d, - 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, + yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., NULL, yyval.l); ; break;} case 167: -#line 2227 "Gmsh.y" +#line 2225 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, - 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, + yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., NULL, yyval.l); ; break;} case 168: -#line 2234 "Gmsh.y" +#line 2232 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-8].d, 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, NULL, yyval.l); ; break;} case 169: -#line 2241 "Gmsh.y" +#line 2239 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-10].d, - yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, + 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, NULL, yyval.l); ; break;} case 170: -#line 2248 "Gmsh.y" +#line 2246 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-10].d, - yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, NULL, yyval.l); ; break;} case 171: -#line 2255 "Gmsh.y" +#line 2253 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-10].d, + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, NULL, yyval.l); ; break;} case 172: -#line 2262 "Gmsh.y" +#line 2260 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-10].d, + yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 173: #line 2267 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., - &extr, yyval.l); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-10].d, + yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 174: @@ -4985,7 +4984,7 @@ case 175: #line 2279 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, + ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., &extr, yyval.l); ; @@ -5001,7 +5000,7 @@ case 177: #line 2291 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., &extr, yyval.l); ; @@ -5017,8 +5016,8 @@ case 179: #line 2303 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-12].d, - 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., &extr, yyval.l); ; break;} @@ -5033,7 +5032,7 @@ case 181: #line 2315 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-12].d, + ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-12].d, 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, &extr, yyval.l); ; @@ -5049,7 +5048,7 @@ case 183: #line 2327 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-12].d, + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-12].d, 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, &extr, yyval.l); ; @@ -5065,8 +5064,8 @@ case 185: #line 2339 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-14].d, - yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-12].d, + 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, &extr, yyval.l); ; break;} @@ -5081,7 +5080,7 @@ case 187: #line 2351 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-14].d, + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, &extr, yyval.l); ; @@ -5097,23 +5096,39 @@ case 189: #line 2363 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); - ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-14].d, + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, &extr, yyval.l); ; break;} case 190: -#line 2374 "Gmsh.y" +#line 2370 "Gmsh.y" { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 191: -#line 2377 "Gmsh.y" +#line 2375 "Gmsh.y" { + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-14].d, + yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); ; break;} case 192: -#line 2383 "Gmsh.y" +#line 2386 "Gmsh.y" +{ + ; + break;} +case 193: +#line 2389 "Gmsh.y" +{ + ; + break;} +case 194: +#line 2395 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = 1; @@ -5123,8 +5138,8 @@ case 192: extr.mesh.hLayer.push_back(1.); ; break;} -case 193: -#line 2392 "Gmsh.y" +case 195: +#line 2404 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5147,8 +5162,8 @@ case 193: List_Delete(yyvsp[-2].l); ; break;} -case 194: -#line 2414 "Gmsh.y" +case 196: +#line 2426 "Gmsh.y" { yymsg(WARNING, "Explicit region numbers in layers are deprecated"); double d; @@ -5173,14 +5188,14 @@ case 194: List_Delete(yyvsp[-2].l); ; break;} -case 195: -#line 2438 "Gmsh.y" +case 197: +#line 2450 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 196: -#line 2447 "Gmsh.y" +case 198: +#line 2459 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5199,8 +5214,8 @@ case 196: List_Delete(yyvsp[-3].l); ; break;} -case 197: -#line 2465 "Gmsh.y" +case 199: +#line 2477 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5219,8 +5234,8 @@ case 197: List_Delete(yyvsp[-6].l); ; break;} -case 198: -#line 2483 "Gmsh.y" +case 200: +#line 2495 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5239,8 +5254,8 @@ case 198: List_Delete(yyvsp[-6].l); ; break;} -case 199: -#line 2501 "Gmsh.y" +case 201: +#line 2513 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d); if(!s) @@ -5270,8 +5285,8 @@ case 199: List_Delete(yyvsp[-1].l); ; break;} -case 200: -#line 2530 "Gmsh.y" +case 202: +#line 2542 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-5].d); if(!s) @@ -5307,15 +5322,15 @@ case 200: Free(yyvsp[-1].c); ; break;} -case 201: -#line 2565 "Gmsh.y" +case 203: +#line 2577 "Gmsh.y" { yymsg(WARNING, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete(yyvsp[-1].l); ; break;} -case 202: -#line 2570 "Gmsh.y" +case 204: +#line 2582 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d); if(!v) @@ -5343,8 +5358,8 @@ case 202: List_Delete(yyvsp[-1].l); ; break;} -case 203: -#line 2597 "Gmsh.y" +case 205: +#line 2609 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5359,8 +5374,8 @@ case 203: List_Delete(yyvsp[-3].l); ; break;} -case 204: -#line 2611 "Gmsh.y" +case 206: +#line 2623 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -5374,72 +5389,72 @@ case 204: List_Delete(yyvsp[-1].l); ; break;} -case 205: -#line 2630 "Gmsh.y" +case 207: +#line 2642 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-2].d); if(s) setSurfaceEmbeddedPoints(s, yyvsp[-7].l); ; break;} -case 206: -#line 2636 "Gmsh.y" +case 208: +#line 2648 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-2].d); if(s) setSurfaceEmbeddedCurves(s, yyvsp[-7].l); ; break;} -case 207: -#line 2642 "Gmsh.y" +case 209: +#line 2654 "Gmsh.y" { ; break;} -case 208: -#line 2645 "Gmsh.y" +case 210: +#line 2657 "Gmsh.y" { ; break;} -case 209: -#line 2654 "Gmsh.y" +case 211: +#line 2666 "Gmsh.y" { ReplaceAllDuplicates(); ; break;} -case 210: -#line 2663 "Gmsh.y" +case 212: +#line 2675 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 211: -#line 2664 "Gmsh.y" +case 213: +#line 2676 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} -case 212: -#line 2665 "Gmsh.y" +case 214: +#line 2677 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} -case 213: -#line 2666 "Gmsh.y" +case 215: +#line 2678 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 214: -#line 2667 "Gmsh.y" +case 216: +#line 2679 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} -case 215: -#line 2668 "Gmsh.y" +case 217: +#line 2680 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} -case 216: -#line 2669 "Gmsh.y" +case 218: +#line 2681 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} -case 217: -#line 2670 "Gmsh.y" +case 219: +#line 2682 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} -case 218: -#line 2672 "Gmsh.y" +case 220: +#line 2684 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5447,248 +5462,248 @@ case 218: yyval.d = yyvsp[-2].d / yyvsp[0].d; ; break;} -case 219: -#line 2678 "Gmsh.y" +case 221: +#line 2690 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} -case 220: -#line 2679 "Gmsh.y" +case 222: +#line 2691 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} -case 221: -#line 2680 "Gmsh.y" +case 223: +#line 2692 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} -case 222: -#line 2681 "Gmsh.y" +case 224: +#line 2693 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} -case 223: -#line 2682 "Gmsh.y" +case 225: +#line 2694 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} -case 224: -#line 2683 "Gmsh.y" +case 226: +#line 2695 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} -case 225: -#line 2684 "Gmsh.y" +case 227: +#line 2696 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} -case 226: -#line 2685 "Gmsh.y" +case 228: +#line 2697 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} -case 227: -#line 2686 "Gmsh.y" +case 229: +#line 2698 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} -case 228: -#line 2687 "Gmsh.y" +case 230: +#line 2699 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} -case 229: -#line 2688 "Gmsh.y" +case 231: +#line 2700 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} -case 230: -#line 2689 "Gmsh.y" +case 232: +#line 2701 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 231: -#line 2690 "Gmsh.y" +case 233: +#line 2702 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 232: -#line 2691 "Gmsh.y" +case 234: +#line 2703 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 233: -#line 2692 "Gmsh.y" +case 235: +#line 2704 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 234: -#line 2693 "Gmsh.y" +case 236: +#line 2705 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 235: -#line 2694 "Gmsh.y" +case 237: +#line 2706 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 236: -#line 2695 "Gmsh.y" +case 238: +#line 2707 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 237: -#line 2696 "Gmsh.y" +case 239: +#line 2708 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 238: -#line 2697 "Gmsh.y" +case 240: +#line 2709 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 239: -#line 2698 "Gmsh.y" +case 241: +#line 2710 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 240: -#line 2699 "Gmsh.y" +case 242: +#line 2711 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 241: -#line 2700 "Gmsh.y" +case 243: +#line 2712 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 242: -#line 2701 "Gmsh.y" +case 244: +#line 2713 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; - break;} -case 243: -#line 2702 "Gmsh.y" + break;} +case 245: +#line 2714 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 244: -#line 2703 "Gmsh.y" +case 246: +#line 2715 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 245: -#line 2704 "Gmsh.y" +case 247: +#line 2716 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 246: -#line 2705 "Gmsh.y" +case 248: +#line 2717 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 247: -#line 2706 "Gmsh.y" +case 249: +#line 2718 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 248: -#line 2707 "Gmsh.y" +case 250: +#line 2719 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 249: -#line 2708 "Gmsh.y" +case 251: +#line 2720 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 250: -#line 2709 "Gmsh.y" +case 252: +#line 2721 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 251: -#line 2711 "Gmsh.y" +case 253: +#line 2723 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 252: -#line 2712 "Gmsh.y" +case 254: +#line 2724 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 253: -#line 2713 "Gmsh.y" +case 255: +#line 2725 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 254: -#line 2714 "Gmsh.y" +case 256: +#line 2726 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 255: -#line 2715 "Gmsh.y" +case 257: +#line 2727 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 256: -#line 2716 "Gmsh.y" +case 258: +#line 2728 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 257: -#line 2717 "Gmsh.y" +case 259: +#line 2729 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 258: -#line 2718 "Gmsh.y" +case 260: +#line 2730 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 259: -#line 2719 "Gmsh.y" +case 261: +#line 2731 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 260: -#line 2720 "Gmsh.y" +case 262: +#line 2732 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 261: -#line 2721 "Gmsh.y" +case 263: +#line 2733 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 262: -#line 2722 "Gmsh.y" +case 264: +#line 2734 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 263: -#line 2723 "Gmsh.y" +case 265: +#line 2735 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 264: -#line 2724 "Gmsh.y" +case 266: +#line 2736 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 265: -#line 2725 "Gmsh.y" +case 267: +#line 2737 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 266: -#line 2726 "Gmsh.y" +case 268: +#line 2738 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 267: -#line 2727 "Gmsh.y" +case 269: +#line 2739 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 268: -#line 2728 "Gmsh.y" +case 270: +#line 2740 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 269: -#line 2729 "Gmsh.y" +case 271: +#line 2741 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 270: -#line 2730 "Gmsh.y" +case 272: +#line 2742 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 271: -#line 2731 "Gmsh.y" +case 273: +#line 2743 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 272: -#line 2740 "Gmsh.y" +case 274: +#line 2752 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 273: -#line 2741 "Gmsh.y" +case 275: +#line 2753 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 274: -#line 2742 "Gmsh.y" +case 276: +#line 2754 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} -case 275: -#line 2743 "Gmsh.y" +case 277: +#line 2755 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} -case 276: -#line 2744 "Gmsh.y" +case 278: +#line 2756 "Gmsh.y" { yyval.d = Get_GmshMajorVersion(); ; break;} -case 277: -#line 2745 "Gmsh.y" +case 279: +#line 2757 "Gmsh.y" { yyval.d = Get_GmshMinorVersion(); ; break;} -case 278: -#line 2746 "Gmsh.y" +case 280: +#line 2758 "Gmsh.y" { yyval.d = Get_GmshPatchVersion(); ; break;} -case 279: -#line 2751 "Gmsh.y" +case 281: +#line 2763 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -5702,8 +5717,8 @@ case 279: Free(yyvsp[0].c); ; break;} -case 280: -#line 2767 "Gmsh.y" +case 282: +#line 2779 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", yyvsp[-4].c, (int)yyvsp[-1].d) ; @@ -5719,8 +5734,8 @@ case 280: Free(yyvsp[-4].c); ; break;} -case 281: -#line 2782 "Gmsh.y" +case 283: +#line 2794 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -5741,8 +5756,8 @@ case 281: Free(yyvsp[-3].c); ; break;} -case 282: -#line 2802 "Gmsh.y" +case 284: +#line 2814 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -5757,8 +5772,8 @@ case 282: Free(yyvsp[-2].c); ; break;} -case 283: -#line 2816 "Gmsh.y" +case 285: +#line 2828 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -5772,8 +5787,8 @@ case 283: Free(yyvsp[-1].c); ; break;} -case 284: -#line 2829 "Gmsh.y" +case 286: +#line 2841 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -5794,8 +5809,8 @@ case 284: Free(yyvsp[-4].c); ; break;} -case 285: -#line 2852 "Gmsh.y" +case 287: +#line 2864 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5814,8 +5829,8 @@ case 285: Free(yyvsp[-2].c); Free(yyvsp[0].c); ; break;} -case 286: -#line 2870 "Gmsh.y" +case 288: +#line 2882 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5834,8 +5849,8 @@ case 286: Free(yyvsp[-5].c); Free(yyvsp[0].c); ; break;} -case 287: -#line 2888 "Gmsh.y" +case 289: +#line 2900 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5854,8 +5869,8 @@ case 287: Free(yyvsp[-3].c); Free(yyvsp[-1].c); ; break;} -case 288: -#line 2906 "Gmsh.y" +case 290: +#line 2918 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5874,108 +5889,108 @@ case 288: Free(yyvsp[-6].c); Free(yyvsp[-1].c); ; break;} -case 289: -#line 2924 "Gmsh.y" +case 291: +#line 2936 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); Free(yyvsp[-3].c); ; break;} -case 290: -#line 2932 "Gmsh.y" +case 292: +#line 2944 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} -case 291: -#line 2936 "Gmsh.y" +case 293: +#line 2948 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} -case 292: -#line 2940 "Gmsh.y" +case 294: +#line 2952 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 293: -#line 2944 "Gmsh.y" +case 295: +#line 2956 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} -case 294: -#line 2948 "Gmsh.y" +case 296: +#line 2960 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} -case 295: -#line 2955 "Gmsh.y" +case 297: +#line 2967 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} -case 296: -#line 2959 "Gmsh.y" +case 298: +#line 2971 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} -case 297: -#line 2963 "Gmsh.y" +case 299: +#line 2975 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 298: -#line 2967 "Gmsh.y" +case 300: +#line 2979 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 299: -#line 2974 "Gmsh.y" +case 301: +#line 2986 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 300: -#line 2979 "Gmsh.y" +case 302: +#line 2991 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 301: -#line 2987 "Gmsh.y" +case 303: +#line 2999 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 302: -#line 2992 "Gmsh.y" +case 304: +#line 3004 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 303: -#line 2996 "Gmsh.y" +case 305: +#line 3008 "Gmsh.y" { // creates an empty list yyval.l = List_Create(2, 1, sizeof(double)); ; break;} -case 304: -#line 3001 "Gmsh.y" +case 306: +#line 3013 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 305: -#line 3005 "Gmsh.y" +case 307: +#line 3017 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -5985,16 +6000,16 @@ case 305: } ; break;} -case 306: -#line 3017 "Gmsh.y" +case 308: +#line 3029 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) List_Add(yyval.l, &d); ; break;} -case 307: -#line 3023 "Gmsh.y" +case 309: +#line 3035 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){ @@ -6006,8 +6021,8 @@ case 307: List_Add(yyval.l, &d); ; break;} -case 308: -#line 3034 "Gmsh.y" +case 310: +#line 3046 "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 @@ -6028,8 +6043,8 @@ case 308: } ; break;} -case 309: -#line 3054 "Gmsh.y" +case 311: +#line 3066 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6040,8 +6055,8 @@ case 309: List_Delete(yyvsp[0].l); ; break;} -case 310: -#line 3064 "Gmsh.y" +case 312: +#line 3076 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6052,8 +6067,8 @@ case 310: List_Delete(yyvsp[0].l); ; break;} -case 311: -#line 3074 "Gmsh.y" +case 313: +#line 3086 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6064,8 +6079,8 @@ case 311: List_Delete(yyvsp[0].l); ; break;} -case 312: -#line 3084 "Gmsh.y" +case 314: +#line 3096 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6083,8 +6098,8 @@ case 312: Free(yyvsp[-2].c); ; break;} -case 313: -#line 3101 "Gmsh.y" +case 315: +#line 3113 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6104,8 +6119,8 @@ case 313: Free(yyvsp[-2].c); ; break;} -case 314: -#line 3120 "Gmsh.y" +case 316: +#line 3132 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6130,8 +6145,8 @@ case 314: List_Delete(yyvsp[-2].l); ; break;} -case 315: -#line 3144 "Gmsh.y" +case 317: +#line 3156 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6158,27 +6173,27 @@ case 315: List_Delete(yyvsp[-2].l); ; break;} -case 316: -#line 3173 "Gmsh.y" +case 318: +#line 3185 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 317: -#line 3178 "Gmsh.y" +case 319: +#line 3190 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 318: -#line 3182 "Gmsh.y" +case 320: +#line 3194 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 319: -#line 3186 "Gmsh.y" +case 321: +#line 3198 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -6188,20 +6203,20 @@ case 319: List_Delete(yyvsp[0].l); ; break;} -case 320: -#line 3199 "Gmsh.y" +case 322: +#line 3211 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 321: -#line 3203 "Gmsh.y" +case 323: +#line 3215 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 322: -#line 3215 "Gmsh.y" +case 324: +#line 3227 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); @@ -6209,8 +6224,8 @@ case 322: Free(yyvsp[0].c); ; break;} -case 323: -#line 3222 "Gmsh.y" +case 325: +#line 3234 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6230,14 +6245,14 @@ case 323: Free(yyvsp[-4].c); Free(yyvsp[0].c); ; break;} -case 324: -#line 3244 "Gmsh.y" +case 326: +#line 3256 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 325: -#line 3248 "Gmsh.y" +case 327: +#line 3260 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -6250,27 +6265,27 @@ case 325: Free(yyvsp[-5].c); ; break;} -case 326: -#line 3263 "Gmsh.y" +case 328: +#line 3275 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 327: -#line 3268 "Gmsh.y" +case 329: +#line 3280 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 328: -#line 3275 "Gmsh.y" +case 330: +#line 3287 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 329: -#line 3279 "Gmsh.y" +case 331: +#line 3291 "Gmsh.y" { yyval.c = (char *)Malloc(32*sizeof(char)); time_t now; @@ -6279,8 +6294,8 @@ case 329: yyval.c[strlen(yyval.c) - 1] = '\0'; ; break;} -case 330: -#line 3287 "Gmsh.y" +case 332: +#line 3299 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -6289,8 +6304,8 @@ case 330: Free(yyvsp[-1].c); ; break;} -case 331: -#line 3295 "Gmsh.y" +case 333: +#line 3307 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6305,8 +6320,8 @@ case 331: Free(yyvsp[-1].c); ; break;} -case 332: -#line 3309 "Gmsh.y" +case 334: +#line 3321 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6321,14 +6336,14 @@ case 332: Free(yyvsp[-1].c); ; break;} -case 333: -#line 3323 "Gmsh.y" +case 335: +#line 3335 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 334: -#line 3327 "Gmsh.y" +case 336: +#line 3339 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -6348,8 +6363,8 @@ case 334: List_Delete(yyvsp[-1].l); ; break;} -case 335: -#line 3346 "Gmsh.y" +case 337: +#line 3358 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6372,8 +6387,8 @@ case 335: } ; break;} -case 336: -#line 3368 "Gmsh.y" +case 338: +#line 3380 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6618,7 +6633,7 @@ yyerrhandle: } return 1; } -#line 3391 "Gmsh.y" +#line 3403 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 04a2d6220330bc5123b283b37e04aae171d57036..a53c91b4b505203a2ccbdf6cfa912f51110a1bdb 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.263 2007-02-16 08:54:06 geuzaine Exp $ +// $Id: Gmsh.y,v 1.264 2007-02-26 08:25:42 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -2193,6 +2193,18 @@ Extrude : &extr, $$); List_Delete($12); } + | tExtrude '{' ListOfShapes + { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + } + ExtrudeParameters '}' + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShapes(BOUNDARY_LAYER, $3, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + &extr, $$); + List_Delete($3); + } // Deprecated extrude commands (for backward compatibility) | tExtrude tPoint '{' FExpr ',' VExpr '}' tEND diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 185a444d1cf76f81d9e97b72470400864d48294f..d2e998250a99f17bc53a9e97fb5885511b729d53 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.305 2007-02-16 08:54:06 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.306 2007-02-26 08:25:43 geuzaine Exp $ */ #define FLEX_SCANNER @@ -720,7 +720,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.305 2007-02-16 08:54:06 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.306 2007-02-26 08:25:43 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // diff --git a/Parser/Makefile b/Parser/Makefile index 5240134c28212749fcac0ea09a20708e943614ee..73bd9a10b972b51835a8db788bf9a105bd2eee90 100644 --- a/Parser/Makefile +++ b/Parser/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.115 2007-02-12 08:36:13 geuzaine Exp $ +# $Id: Makefile,v 1.116 2007-02-26 08:25:46 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -79,18 +79,18 @@ depend: Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \ ../Common/Options.h ../Common/Message.h ../Common/Views.h \ ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Parallel/ParUtil.h \ - ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ - ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \ - ../DataStr/Tree.h ../Common/Context.h ../Geo/GModel.h ../Geo/GVertex.h \ - ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \ - ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ - ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ - ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \ - ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \ - ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Parallel/ParUtil.h ../Common/Gmsh.h \ + ../Common/Message.h ../DataStr/Malloc.h ../DataStr/Tree.h \ + ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ + ../Common/Context.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \ + ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ + ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \ + ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \ + ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \ + ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ + ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ @@ -109,33 +109,32 @@ Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \ ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \ ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/ExtrudeParams.h Gmsh.tab.hpp + ../Geo/ExtrudeParams.h ../Common/SmoothData.h Gmsh.tab.hpp OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \ - ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \ + ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ + ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \ ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ - ../Geo/SBoundingBox3d.h ../Common/SmoothNormals.h Parser.h OpenFile.h \ - ../Common/CommandLine.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Graphics/ReadImg.h \ - ../Common/OS.h ../Common/GmshUI.h ../Graphics/Draw.h \ - ../Graphics/SelectBuffer.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \ - ../Fltk/Colorbar_Window.h ../Fltk/Popup_Button.h \ - ../Fltk/SpherePosition_Widget.h + ../Geo/SBoundingBox3d.h Parser.h OpenFile.h ../Common/CommandLine.h \ + ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Graphics/ReadImg.h ../Common/OS.h ../Common/GmshUI.h \ + ../Graphics/Draw.h ../Graphics/SelectBuffer.h ../Fltk/GUI.h \ + ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \ + ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ @@ -143,24 +142,24 @@ CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \ ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \ - ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \ - ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \ - ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \ - ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \ - ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \ - ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \ - ../Geo/SVector3.h ../Numeric/Numeric.h ../Geo/ExtrudeParams.h \ - ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \ - ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \ - ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \ - ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \ - ../Common/SmoothNormals.h ../Common/GmshUI.h ../Graphics/gl2ps.h \ + ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \ + ../Numeric/Numeric.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \ + ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \ + ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \ + ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \ + ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \ + ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \ + ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \ + ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \ + ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \ + ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \ + ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \ + ../Geo/SBoundingBox3d.h ../Common/GmshUI.h ../Graphics/gl2ps.h \ ../Graphics/gl2gif.h ../Graphics/PixelBuffer.h ../Graphics/Draw.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \ - ../Common/GmshMatrix.h ../Graphics/gl2jpeg.h ../Graphics/PixelBuffer.h \ - ../Graphics/gl2png.h ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \ + ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ + ../Graphics/gl2jpeg.h ../Graphics/PixelBuffer.h ../Graphics/gl2png.h \ + ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \ ../Graphics/PixelBuffer.h ../Graphics/gl2yuv.h \ ../Graphics/PixelBuffer.h FunctionManager.o: FunctionManager.cpp FunctionManager.h diff --git a/Plugin/Makefile b/Plugin/Makefile index fa8efcce75d158ecbe02583df9542e4e479f3840..57d010576e5c68d8cf8ef4c0e18892148c7be1e3 100644 --- a/Plugin/Makefile +++ b/Plugin/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.118 2007-02-01 15:09:44 geuzaine Exp $ +# $Id: Makefile,v 1.119 2007-02-26 08:25:46 geuzaine Exp $ # # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle # @@ -71,7 +71,7 @@ depend: # DO NOT DELETE THIS LINE Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h PluginManager.h \ CutMap.h Levelset.h CutGrid.h StreamLines.h CutPlane.h CutParametric.h \ CutSphere.h Skin.h ../DataStr/Tree.h ../DataStr/avl.h Extract.h \ @@ -83,7 +83,7 @@ Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ Probe.h ../Common/Context.h Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ DecomposeInSimplex.h ../DataStr/Tools.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../Graphics/Iso.h \ @@ -91,70 +91,70 @@ Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \ CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \ ../Common/Options.h ../Common/Message.h ../Common/Views.h \ ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ - ../Common/GmshUI.h ../Graphics/Draw.h + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \ + ../Graphics/Draw.h CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \ ../Common/Options.h ../Common/Message.h ../Common/Views.h \ ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ - ../Common/GmshUI.h ../Graphics/Draw.h + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \ + ../Graphics/Draw.h CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ../Common/Context.h Smooth.o: Smooth.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Smooth.h \ ../Common/Context.h CutParametric.o: CutParametric.cpp ../Common/OctreePost.h \ ../Common/Octree.h ../Common/OctreeInternals.h CutParametric.h Plugin.h \ ../Common/Options.h ../Common/Message.h ../Common/Views.h \ ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \ - ../Common/SmoothNormals.h ../Numeric/Numeric.h \ - ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \ - ../Common/GmshUI.h ../Graphics/Draw.h + ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \ + ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \ + ../Graphics/Draw.h Lambda2.o: Lambda2.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Lambda2.h \ ../Common/Context.h ../Common/ShapeFunctions.h Eigenvectors.o: Eigenvectors.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ Eigenvectors.h ../Common/Context.h ../DataStr/Malloc.h \ ../Numeric/EigSolve.h Eigenvalues.o: Eigenvalues.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ Eigenvalues.h ../Common/Context.h ../DataStr/Malloc.h StreamLines.o: StreamLines.cpp ../Common/OctreePost.h ../Common/Octree.h \ ../Common/OctreeInternals.h StreamLines.h Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h CutGrid.o: CutGrid.cpp ../Common/OctreePost.h ../Common/Octree.h \ ../Common/OctreeInternals.h CutGrid.h Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h Transform.o: Transform.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ Transform.h ../Common/Context.h Triangulate.o: Triangulate.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \ Plugin.h ../Common/Options.h ../Common/Views.h ../Common/ColorTable.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Triangulate.h \ ../Common/Context.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/gmshFace.h \ ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \ @@ -173,28 +173,28 @@ Triangulate.o: Triangulate.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/GVertex.h ../Geo/Range.h Warp.o: Warp.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Warp.h \ ../Common/Context.h Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Skin.h \ ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \ ../DataStr/Malloc.h Extract.o: Extract.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Extract.h \ ../Common/Context.h ../DataStr/Malloc.h ExtractElements.o: ExtractElements.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ExtractElements.h ../Common/Context.h ../DataStr/Malloc.h ExtractEdges.o: ExtractEdges.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ExtractEdges.h ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \ ../DataStr/Malloc.h ../Mesh/BDS.h ../Geo/GFace.h ../Geo/GPoint.h \ @@ -210,39 +210,39 @@ ExtractEdges.o: ExtractEdges.cpp Plugin.h ../Common/Options.h \ ../Geo/ExtrudeParams.h DecomposeInSimplex.o: DecomposeInSimplex.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ DecomposeInSimplex.h ../DataStr/Tree.h ../DataStr/avl.h \ ../Common/Context.h ../DataStr/Malloc.h Evaluate.o: Evaluate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Evaluate.h \ ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \ ../Common/Context.h Integrate.o: Integrate.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ Integrate.h ../Common/Context.h ../Common/ShapeFunctions.h Gradient.o: Gradient.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Gradient.h \ ../Common/Context.h ../Common/ShapeFunctions.h Curl.o: Curl.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Curl.h \ ../Common/Context.h ../Common/ShapeFunctions.h Divergence.o: Divergence.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ Divergence.h ../Common/Context.h ../Common/ShapeFunctions.h Annotate.o: Annotate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Annotate.h \ ../Common/Context.h ../Common/GmshUI.h ../Fltk/GUI.h \ ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \ @@ -250,22 +250,22 @@ Annotate.o: Annotate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Graphics/Draw.h Remove.o: Remove.cpp Plugin.h ../Common/Options.h ../Common/Message.h \ ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \ - ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \ + ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \ ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Remove.h \ ../Common/Context.h Probe.o: Probe.cpp Probe.h Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \ ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h HarmonicToTime.o: HarmonicToTime.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ HarmonicToTime.h ../Common/Context.h ModulusPhase.o: ModulusPhase.cpp Plugin.h ../Common/Options.h \ ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \ - ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \ + ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \ ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \ ModulusPhase.h ../Common/Context.h diff --git a/Plugin/Warp.cpp b/Plugin/Warp.cpp index 2e579a8b2397f7d1db913eac6332f0f947037ca1..dfa361640e47465bc483a4f2b955068987984c50 100644 --- a/Plugin/Warp.cpp +++ b/Plugin/Warp.cpp @@ -1,4 +1,4 @@ -// $Id: Warp.cpp,v 1.5 2006-11-27 22:22:32 geuzaine Exp $ +// $Id: Warp.cpp,v 1.6 2007-02-26 08:25:46 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -25,7 +25,7 @@ #include "Views.h" #include "Context.h" #include "Numeric.h" -#include "SmoothNormals.h" +#include "SmoothData.h" extern Context_T CTX; diff --git a/benchmarks/2d/function.geo b/benchmarks/2d/function.geo index 54ce6fe371ebc182eabebc44a88473947e50c5e3..0d1f9f4cbdd0122fac6dcf1f7d39435985db5f2a 100644 --- a/benchmarks/2d/function.geo +++ b/benchmarks/2d/function.geo @@ -52,8 +52,6 @@ loop5 = theloop; Plane Surface(newreg) = {loop5,loop4,loop3,loop2,loop1}; Line(10000) = {6,11}; -Attractor Line {10000} = {1,.03,1}; - -Mesh.Algorithm = 2 ; // This is the new 2D anisotropic algorithm +Attractor Line {10000} = {0.5,0.05,5,5,100}; diff --git a/benchmarks/2d/fx79.geo b/benchmarks/2d/fx79.geo new file mode 100644 index 0000000000000000000000000000000000000000..9a3963cf07e54f72b8f49cc748389d7a12dc4926 --- /dev/null +++ b/benchmarks/2d/fx79.geo @@ -0,0 +1,302 @@ +//Gmesh input File created by Gmeshgen.pl +//Inputfile was: fx79.new + +lc_box = 0.; +//FX 79-W-151 A + +Point(1) = {1.00617363919509, -0.050512514502615, 0, 0.00456204959960413}; +Point(2) = {1.00165723435172, -0.0511562410284263, 0, 0.00589667334996958}; +Point(3) = {0.994444903091042, -0.0517453063693019, 0, 0.00695270466127643}; +Point(4) = {0.987802724878602, -0.0523449275670149, 0, 0.00781006110462724}; +Point(5) = {0.978901753380908, -0.0532940848945938, 0, 0.01038725609613}; +Point(6) = {0.967152889489861, -0.0546175153528345, 0, 0.0130971474744754}; +Point(7) = {0.952846092714635, -0.0559854851094759, 0, 0.0151324908112227}; +Point(8) = {0.937003511472759, -0.0572602635036876, 0, 0.0166652491572883}; +Point(9) = {0.919622131099139, -0.058648282974513, 0, 0.018365619899588}; +Point(10) = {0.9003831929919, -0.060112675035187, 0, 0.0201345328810872}; +Point(11) = {0.879463184679618, -0.0616243004194157, 0, 0.0217698614519213}; +Point(12) = {0.856952646375697, -0.063194085614974, 0, 0.0233105073748239}; +Point(13) = {0.832949931018259, -0.0647923045420384, 0, 0.0247464848158542}; +Point(14) = {0.807566124142478, -0.0664383828690749, 0, 0.0260813026098437}; +Point(15) = {0.780893170548586, -0.0681136104159457, 0, 0.0273196336388469}; +Point(16) = {0.753032096552583, -0.0698279792267318, 0, 0.0284561096908369}; +Point(17) = {0.724085588967674, -0.0715631596438602, 0, 0.0294753743716627}; +Point(18) = {0.694183627667583, -0.0732990723239944, 0, 0.030372720135173}; +Point(19) = {0.663438362655617, -0.0750160503592312, 0, 0.0311360020340592}; +Point(20) = {0.632003617631884, -0.0766826861642702, 0, 0.0317410356210839}; +Point(21) = {0.600041696702843, -0.0783078758813485, 0, 0.0322178826763649}; +Point(22) = {0.567647871388409, -0.0798929481531925, 0, 0.0325674864793903}; +Point(23) = {0.534981015892058, -0.0814179425652384, 0, 0.032784892731434}; +Point(24) = {0.5021463377705, -0.0828839110998825, 0, 0.0328795803728962}; +Point(25) = {0.469282466748472, -0.0842406827974891, 0, 0.0328279129585575}; +Point(26) = {0.436542155432508, -0.0854875118031408, 0, 0.0326396687955573}; +Point(27) = {0.404045580730026, -0.0865945347365429, 0, 0.0323011753420278}; +Point(28) = {0.371972764524435, -0.0875508759654124, 0, 0.0318068895575232}; +Point(29) = {0.340456198307875, -0.0883561636609631, 0, 0.0311825288137988}; +Point(30) = {0.309625029437813, -0.0890206863143952, 0, 0.0304437205056048}; +Point(31) = {0.2795801664247, -0.0895348133341898, 0, 0.0296024016783327}; +Point(32) = {0.250426436189937, -0.0898781814886931, 0, 0.0286489999876588}; +Point(33) = {0.22228430578873, -0.090029944786437, 0, 0.0275928775151386}; +Point(34) = {0.195240755169614, -0.0899685617129009, 0, 0.0264437230765299}; +Point(35) = {0.169398287503204, -0.0896413183645262, 0, 0.0252006769254343}; +Point(36) = {0.144847876136587, -0.0890443253994118, 0, 0.0239049808202747}; +Point(37) = {0.121612248521966, -0.0881290648955573, 0, 0.0226250177778736}; +Point(38) = {0.0996517949675359, -0.0868352611728824, 0, 0.0214545259879573}; +Point(39) = {0.0788165845166658, -0.0850117128433833, 0, 0.0204420797299119}; +Point(40) = {0.0590069000314231, -0.0824185870431043, 0, 0.0194402875450237}; +Point(41) = {0.0404235154991374, -0.07887401207289, 0, 0.0182887135322985}; +Point(42) = {0.0233260188228607, -0.0743698053435937, 0, 0.0171337006713823}; +Point(43) = {0.00764674335584091, -0.0688771124208716, 0, 0.0164129222556413}; +Point(44) = {-0.0070924385384326, -0.0620307000422324, 0, 0.0163278037515129}; +Point(45) = {-0.0209748000307029, -0.0531546458343633, 0, 0.0172474872453871}; +Point(46) = {-0.034255730593759, -0.0407690249004144, 0, 0.0216934911607246}; +Point(47) = {-0.0469306104549718, -0.0183879068417406, 0, 0.021851747129617}; +Point(48) = {-0.05, 0.00000, 0, 0.0180688410124145}; +Point(49) = {-0.0471836952806479, 0.0177488889514486, 0, 0.0198804625921837}; +Point(50) = {-0.0374036583288223, 0.0377129069155351, 0, 0.0189685918923241}; +Point(51) = {-0.0273884132570324, 0.050112089088575, 0, 0.0156550224352199}; +Point(52) = {-0.0163386613759948, 0.0608772073186624, 0, 0.0158914743141713}; +Point(53) = {-0.00362253538650892, 0.0712151427196309, 0, 0.0169710501991986}; +Point(54) = {0.0108237924265827, 0.0812307643266579, 0, 0.0181740655037653}; +Point(55) = {0.0269220603558963, 0.0909182972557362, 0, 0.0194404178707935}; +Point(56) = {0.0447070863427307, 0.100300158164853, 0, 0.0207729685596819}; +Point(57) = {0.0641533073272547, 0.10935465101899, 0, 0.0221284527964365}; +Point(58) = {0.0852561082259123, 0.118032910826911, 0, 0.0234897863214629}; +Point(59) = {0.107986176315194, 0.126259083632896, 0, 0.0248047510762615}; +Point(60) = {0.132246158261103, 0.133940075926685, 0, 0.0260695266247325}; +Point(61) = {0.157993821830426, 0.141014295043562, 0, 0.027318844023494}; +Point(62) = {0.185209088723227, 0.14736411972817, 0, 0.0285471765408241}; +Point(63) = {0.21384878784108, 0.15284594436902, 0, 0.0297055217496057}; +Point(64) = {0.243793004161789, 0.157243236163996, 0, 0.0306769875792258}; +Point(65) = {0.27473353595332, 0.160419432010324, 0, 0.0314195933738048}; +Point(66) = {0.306420259672539, 0.162399810442738, 0, 0.0320414317396908}; +Point(67) = {0.338753091362607, 0.163267223595795, 0, 0.032614136750213}; +Point(68) = {0.371645101780606, 0.163068866362746, 0, 0.0331276823434321}; +Point(69) = {0.404993409397787, 0.16185526878505, 0, 0.0335598679185385}; +Point(70) = {0.438677438696783, 0.15964472466078, 0, 0.0338595551365455}; +Point(71) = {0.472501916638331, 0.156518664402816, 0, 0.0340233402697617}; +Point(72) = {0.506354772414623, 0.15256452457236, 0, 0.0340514534218912}; +Point(73) = {0.540052963746546, 0.147866384058501, 0, 0.0339184239670291}; +Point(74) = {0.573454876397506, 0.142593868469835, 0, 0.0336727786192166}; +Point(75) = {0.606488807717522, 0.136834488681042, 0, 0.0333169769680977}; +Point(76) = {0.639016639296883, 0.130688446902461, 0, 0.0328394206680481}; +Point(77) = {0.670945507569959, 0.124223222155235, 0, 0.0322071196284741}; +Point(78) = {0.702071472787017, 0.117524777483076, 0, 0.0313904325229361}; +Point(79) = {0.732265061194123, 0.110756620533397, 0, 0.0304385000832155}; +Point(80) = {0.761424215056791, 0.103987379863097, 0, 0.0293620357988487}; +Point(81) = {0.789437020766208, 0.0973445504582977, 0, 0.0281483256012299}; +Point(82) = {0.816173544580009, 0.0908792200620603, 0, 0.0267800238750393}; +Point(83) = {0.841486414670495, 0.0847136633482379, 0, 0.0252766251031232}; +Point(84) = {0.86529455020835, 0.0789310857944918, 0, 0.0236602264229706}; +Point(85) = {0.887482031723118, 0.0735948293494144, 0, 0.0219474012376518}; +Point(86) = {0.907997620604271, 0.0687722737031624, 0, 0.0201492501471799}; +Point(87) = {0.926732568608878, 0.0644644142354061, 0, 0.0182288848507191}; +Point(88) = {0.943558353346318, 0.0607346584814801, 0, 0.0162031331076611}; +Point(89) = {0.958404970323222, 0.057606932214755, 0, 0.0140856703524853}; +Point(90) = {0.971158958627949, 0.055092759403764, 0, 0.0118756487437321}; +Point(91) = {0.981742138254301, 0.0531909696589077, 0, 0.00943699954001213}; +Point(92) = {0.989763512620446, 0.0519149595338826, 0, 0.00709162511586322}; +Point(93) = {0.995783284796803, 0.0511882737489522, 0, 0.00457246821355165}; +Point(94) = {0.998846480732691, 0.0508521554467141, 0, 0.0025930747723635}; +Point(95) = {1.00095326359672, 0.0507790472729257, 0, 0.0132172862861438}; +Point(96) = {1.0251152939317, 0.0478964693681358, 0, 0.0186384868667792}; +Point(97) = {1.02570238569503, 0.0229033638535843, 0, 0.0387500000000005}; +Point(98) = {1.02623653276368, 0.000616300054223318, 0, 0.0552065398013811}; +Point(99) = {1.02693527839802, -0.0295821577269702, 0, 0.0387500000000005}; +Point(100) = {1.02752237016135, -0.0545752632415217, 0, 0.0151032703232118}; +Point(101) = {10, 10, 0, 2.5+lc_box}; +Point(102) = {10, -10, 0, 2.5+lc_box}; +Point(103) = {-10, -10, 0, 2.5+lc_box}; +Point(104) = {-10, 10, 0, 2.5+lc_box}; +//Additional stearing triangles +pos_mv1 = 0.; +y_pos_mov1 = 0; + +lc_tri1 = 0.13; +Point(105) = {2.6+pos_mv1, 0.32+y_pos_mov1, 0, lc_tri1}; +Point(106) = {2.47+pos_mv1, 0.32+y_pos_mov1, 0, lc_tri1}; +Point(107) = {2.6+pos_mv1, 0.45+y_pos_mov1, 0, lc_tri1}; +pos_mv2 = 0.; +y_pos_mov2 = 0; + +lc_tri2 = 0.13; +Point(108) = {2.6+pos_mv2, -0.32+y_pos_mov2, 0, lc_tri2}; +Point(109) = {2.47+pos_mv2, -0.32+y_pos_mov2, 0, lc_tri2}; +Point(110) = {2.6+pos_mv2, -0.45+y_pos_mov2, 0, lc_tri2}; +pos_mv3 = 0.; +y_pos_mov3 = 0; + +lc_tri3 = 0.13; +Point(111) = {-2.6+pos_mv3, 0.32+y_pos_mov3, 0, lc_tri3}; +Point(112) = {-2.73+pos_mv3, 0.32+y_pos_mov3, 0, lc_tri3}; +Point(113) = {-2.6+pos_mv3, 0.45+y_pos_mov3, 0, lc_tri3}; + +//wake quadrilaterals area +wakeq = 0.; +Point(114) = {4+wakeq, -5, 0, 0.6}; +Point(115) = {4.7612534562212+wakeq, -5, 0, 0.761253456221198}; +Point(116) = {6.00626728110599+wakeq, -5, 0, 1.24501382488479}; +Point(117) = {10, -5, 0, 1}; +Point(118) = {10, -4, 0, 1}; +Point(119) = {10, -3, 0, 1}; +Point(120) = {10, -2, 0, 1}; +Point(121) = {10, -1, 0, 1}; +Point(122) = {10, 0, 0, 1}; +Point(123) = {10, 1, 0, 1}; +Point(124) = {10, 2, 0, 1}; +Point(125) = {6.00626728110599+wakeq, 2, 0, 1.24501382488479}; +Point(126) = {4.7612534562212+wakeq, 2, 0, 0.761253456221198}; +Point(127) = {4+wakeq, 2, 0, 0.6}; +Point(128) = {4+wakeq, 1, 0, 1}; +Point(129) = {4+wakeq, 0, 0, 1}; +Point(130) = {4+wakeq, -1, 0, 1}; +Point(131) = {4+wakeq, -2, 0, 1}; +Point(132) = {4+wakeq, -3, 0, 1}; +Point(133) = {4+wakeq, -4, 0, 1}; + +//now the list of lines +Line(1) = {1,2}; +Line(2) = {2,3}; +Line(3) = {3,4}; +Line(4) = {4,5}; +Line(5) = {5,6}; +Line(6) = {6,7}; +Line(7) = {7,8}; +Line(8) = {8,9}; +Line(9) = {9,10}; +Line(10) = {10,11}; +Line(11) = {11,12}; +Line(12) = {12,13}; +Line(13) = {13,14}; +Line(14) = {14,15}; +Line(15) = {15,16}; +Line(16) = {16,17}; +Line(17) = {17,18}; +Line(18) = {18,19}; +Line(19) = {19,20}; +Line(20) = {20,21}; +Line(21) = {21,22}; +Line(22) = {22,23}; +Line(23) = {23,24}; +Line(24) = {24,25}; +Line(25) = {25,26}; +Line(26) = {26,27}; +Line(27) = {27,28}; +Line(28) = {28,29}; +Line(29) = {29,30}; +Line(30) = {30,31}; +Line(31) = {31,32}; +Line(32) = {32,33}; +Line(33) = {33,34}; +Line(34) = {34,35}; +Line(35) = {35,36}; +Line(36) = {36,37}; +Line(37) = {37,38}; +Line(38) = {38,39}; +Line(39) = {39,40}; +Line(40) = {40,41}; +Line(41) = {41,42}; +Line(42) = {42,43}; +Line(43) = {43,44}; +Line(44) = {44,45}; +Line(45) = {45,46}; +Line(46) = {46,47}; +Line(47) = {47,48}; +Line(48) = {48,49}; +Line(49) = {49,50}; +Line(50) = {50,51}; +Line(51) = {51,52}; +Line(52) = {52,53}; +Line(53) = {53,54}; +Line(54) = {54,55}; +Line(55) = {55,56}; +Line(56) = {56,57}; +Line(57) = {57,58}; +Line(58) = {58,59}; +Line(59) = {59,60}; +Line(60) = {60,61}; +Line(61) = {61,62}; +Line(62) = {62,63}; +Line(63) = {63,64}; +Line(64) = {64,65}; +Line(65) = {65,66}; +Line(66) = {66,67}; +Line(67) = {67,68}; +Line(68) = {68,69}; +Line(69) = {69,70}; +Line(70) = {70,71}; +Line(71) = {71,72}; +Line(72) = {72,73}; +Line(73) = {73,74}; +Line(74) = {74,75}; +Line(75) = {75,76}; +Line(76) = {76,77}; +Line(77) = {77,78}; +Line(78) = {78,79}; +Line(79) = {79,80}; +Line(80) = {80,81}; +Line(81) = {81,82}; +Line(82) = {82,83}; +Line(83) = {83,84}; +Line(84) = {84,85}; +Line(85) = {85,86}; +Line(86) = {86,87}; +Line(87) = {87,88}; +Line(88) = {88,89}; +Line(89) = {89,90}; +Line(90) = {90,91}; +Line(91) = {91,92}; +Line(92) = {92,93}; +Line(93) = {93,94}; +Line(94) = {94,95}; +Line(95) = {95,96}; +Line(96) = {96,97}; +Line(97) = {97,98}; +Line(98) = {98,99}; +Line(99) = {99,100}; +Line(100) = {100,1}; +//Line(101) = {101,102}; // overlaps! +Line(102) = {102,103}; +Line(103) = {103,104}; +Line(104) = {104,101}; +Line(105) = {105,106}; +Line(106) = {106,107}; +Line(107) = {107,105}; +Line(108) = {108,109}; +Line(109) = {109,110}; +Line(110) = {110,108}; +Line(111) = {111,112}; +Line(112) = {112,113}; +Line(113) = {113,111}; +Line(114) = {114,115}; +Line(115) = {115,116}; +Line(116) = {116,117}; +Line(117) = {117,118}; +Line(118) = {118,119}; +Line(119) = {119,120}; +Line(120) = {120,121}; +Line(121) = {121,122}; +Line(122) = {122,123}; +Line(123) = {123,124}; +Line(124) = {124,125}; +Line(125) = {125,126}; +Line(126) = {126,127}; +Line(127) = {127,128}; +Line(128) = {128,129}; +Line(129) = {129,130}; +Line(130) = {130,131}; +Line(131) = {131,132}; +Line(132) = {132,133}; +Line(133) = {133,114}; + + +Line(134) = {101,124}; +Line(135) = {117,102}; + + +Line Loop(136) = {104,134,124,125,126,127,128,129,130,131,132,133,114,115,116,135,102,103}; +Line Loop(137) = {105,106,107}; +Line Loop(138) = {108,109,110}; +Line Loop(139) = {73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72}; +Line Loop(140) = {113,111,112}; +Plane Surface(141) = {136,137,138,139,140}; diff --git a/benchmarks/3d/plate_conductor.geo b/benchmarks/3d/plate_conductor.geo deleted file mode 100644 index 512c8155b45793ebbcde5f8c510a6b76cc672e4c..0000000000000000000000000000000000000000 --- a/benchmarks/3d/plate_conductor.geo +++ /dev/null @@ -1,111 +0,0 @@ -cm = 1e-02; -cl = 0.005; - - -//box -Point(1) = {0, 0, 0, cl}; -Point(2) = {0, 0, 10*cm, cl}; -Point(3) = {10*cm, 0, 10*cm, cl}; -Point(4) = {10*cm, 0, 0, cl}; -Point(5) = {0, 2*cm, 0, cl}; -Point(6) = {0, 2*cm, 10*cm, cl}; -Point(7) = {10*cm, 2*cm, 10*cm, cl}; -Point(8) = {10*cm, 2*cm, 0, cl}; - -//outer conductor -Point(14) = {6.25*cm, 0, 5*cm, cl}; -Point(15) = {6.25*cm, 0, 4.6*cm, cl}; -Point(16) = {5.85*cm, 0, 5*cm, cl}; -Point(17) = {6.25*cm, 0, 5.4*cm, cl}; -Point(18) = {6.65*cm, 0, 5*cm, cl}; - -//inner conductor -Point(19) = {6.25*cm, 1*cm, 5*cm, cl}; -Point(20) = {6.25*cm, 1*cm, 4.9*cm, cl}; -Point(21) = {6.15*cm, 1*cm, 5*cm, cl}; -Point(22) = {6.25*cm, 1*cm, 5.1*cm, cl}; -Point(23) = {6.35*cm, 1*cm, 5*cm, cl}; - -//box -Line(1) = {1,2}; -Line(2) = {2,3}; -Line(3) = {3,4}; -Line(4) = {4,1}; -Line(5) = {1,5}; -Line(6) = {2,6}; -Line(7) = {3,7}; -Line(8) = {4,8}; -Line(9) = {5,6}; -Line(10) = {6,7}; -Line(11) = {7,8}; -Line(12) = {8,5}; - -//outer conductor -Circle(17) = {15,14,16}; -Circle(18) = {16,14,17}; -Circle(19) = {17,14,18}; -Circle(20) = {18,14,15}; - -//inner conductor -Circle(21) = {20,19,21}; -Circle(22) = {21,19,22}; -Circle(23) = {22,19,23}; -Circle(24) = {23,19,20}; - -//Side Walls -Line Loop(25) = {9,-6,-1,5}; Plane Surface(1) = {25};//CW -Line Loop(26) = {-10,-6,2,7}; Plane Surface(2) = {26}; -Line Loop(27) = {-11,-7,3,8}; Plane Surface(3) = {27}; -Line Loop(28) = {12,-5,-4,8}; Plane Surface(4) = {28};//CW - -Line Loop(31) = {21,22,23,24}; Plane Surface(7) = {31}; - -//upper inner conductor volume -innerCond[] = Extrude {0,-1*cm,0} { Surface{7}; Recombine;}; - -//middle inner conductor plate -Line Loop(33) = {33,34,35,36}; - -//Bottom -Line Loop(30) = {1,2,3,4}; Plane Surface(6) = {30,33}; - -//middle inner conductor + upper outer conductor -Line Loop(29) = {17,18,19,20}; Plane Surface(10) = {29,33}; - -//extrudes outside the box -outterCond[] = Extrude {0,-1*cm,0} { Surface{10}; Recombine;}; - -//top -LL1 = newll; Line Loop(LL1) = {9,10,11,12}; -S1 = news; Plane Surface(S1) = {LL1}; - -SL1 = newsl; Surface Loop(SL1) = {S1,-1,2,3,-4,-6,40,44,48,52,7}; -Volume(4) = {SL1}; - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/extrude/sphere_boundary_layer.geo b/benchmarks/extrude/sphere_boundary_layer.geo new file mode 100644 index 0000000000000000000000000000000000000000..1f52d6249e4ae14dd7706253d38063fc94e69818 --- /dev/null +++ b/benchmarks/extrude/sphere_boundary_layer.geo @@ -0,0 +1,44 @@ +lc = .2; +Point(1) = {0.0,0.0,0.0,lc}; +Point(2) = {1,0.0,0.0,lc}; +Point(3) = {0,1,0.0,lc}; +Circle(1) = {2,1,3}; +Point(4) = {-1,0,0.0,lc}; +Point(5) = {0,-1,0.0,lc}; +Circle(2) = {3,1,4}; +Circle(3) = {4,1,5}; +Circle(4) = {5,1,2}; +Point(6) = {0,0,-1,lc}; +Point(7) = {0,0,1,lc}; +Circle(5) = {3,1,6}; +Circle(6) = {6,1,5}; +Circle(7) = {5,1,7}; +Circle(8) = {7,1,3}; +Circle(9) = {2,1,7}; +Circle(10) = {7,1,4}; +Circle(11) = {4,1,6}; +Circle(12) = {6,1,2}; +Line Loop(13) = {2,8,-10}; +Ruled Surface(14) = {13}; +Line Loop(15) = {10,3,7}; +Ruled Surface(16) = {15}; +Line Loop(17) = {-8,-9,1}; +Ruled Surface(18) = {17}; +Line Loop(19) = {-11,-2,5}; +Ruled Surface(20) = {19}; +Line Loop(21) = {-5,-12,-1}; +Ruled Surface(22) = {21}; +Line Loop(23) = {-3,11,6}; +Ruled Surface(24) = {23}; +Line Loop(25) = {-7,4,9}; +Ruled Surface(26) = {25}; +Line Loop(27) = {-4,12,-6}; +Ruled Surface(28) = {27}; +Surface Loop(29) = {28,26,16,14,20,24,22,18}; +Volume(30) = {29}; + +Extrude { + Surface{14:28:2}; Layers{10, 0.1}; // Recombine; +} + +Mesh.Algorithm3D = 4; diff --git a/benchmarks/extrude/t1_boundary_layer.geo b/benchmarks/extrude/t1_boundary_layer.geo new file mode 100644 index 0000000000000000000000000000000000000000..6121adb6aa4eace865791c7ec677c281fbbcdf35 --- /dev/null +++ b/benchmarks/extrude/t1_boundary_layer.geo @@ -0,0 +1,91 @@ +/********************************************************************* + * + * Gmsh tutorial 1 + * + * Variables, elementary entities (points, lines, surfaces), physical + * entities (points, lines, surfaces) + * + *********************************************************************/ + +// The simplest construction in Gmsh's scripting language is the +// `affectation'. The following command defines a new variable `lc': + +lc = 0.009; + +// This variable can then be used in the definition of Gmsh's simplest +// `elementary entity', a `Point'. A Point is defined by a list of +// four numbers: three coordinates (X, Y and Z), and a characteristic +// length (lc) that sets the target element size at the point: + +Point(1) = {0, 0, 0, lc}; + +// The distribution of the mesh element sizes is then obtained by +// interpolation of these characteristic lengths throughout the +// geometry. Another method to specify characteristic lengths is to +// use a background mesh (see `t7.geo' and `bgmesh.pos'). + +// We can then define some additional points as well as our first +// curve. Curves are Gmsh's second type of elementery entities, and, +// amongst curves, straight lines are the simplest. A straight line is +// defined by a list of point numbers. In the commands below, for +// example, the line 1 starts at point 1 and ends at point 2: + +Point(2) = {.1, 0, 0, lc} ; +Point(3) = {.1, .3, 0, lc} ; +Point(4) = {0, .3, 0, lc} ; + +Line(1) = {1,2} ; +Line(2) = {3,2} ; +Line(3) = {3,4} ; +Line(4) = {4,1} ; + +// The third elementary entity is the surface. In order to define a +// simple rectangular surface from the four lines defined above, a +// line loop has first to be defined. A line loop is a list of +// connected lines, a sign being associated with each line (depending +// on the orientation of the line): + +Line Loop(5) = {4,1,-2,3} ; + +// We can then define the surface as a list of line loops (only one +// here, since there are no holes--see `t4.geo'): + +Plane Surface(6) = {5} ; + +// At this level, Gmsh knows everything to display the rectangular +// surface 6 and to mesh it. An optional step is needed if we want to +// associate specific region numbers to the various elements in the +// mesh (e.g. to the line segments discretizing lines 1 to 4 or to the +// triangles discretizing surface 6). This is achieved by the +// definition of `physical entities'. Physical entities will group +// elements belonging to several elementary entities by giving them a +// common number (a region number), and specifying their orientation. + +// We can for example group the points 1 and 2 into the physical +// entity 1: + +Physical Point(1) = {1,2} ; + +// Consequently, two punctual elements will be saved in the output +// mesh file, both with the region number 1. The mechanism is +// identical for line or surface elements: + +MyLine = 99; +Physical Line(MyLine) = {1,2,4} ; + +Physical Surface("My fancy surface label") = {6} ; + +// All the line elements created during the meshing of lines 1, 2 and +// 4 will be saved in the output mesh file with the region number 99; +// and all the triangular elements resulting from the discretization +// of surface 6 will be given an automatic region number (100, +// associated with the label "My fancy surface label"). + +// Note that if no physical entities are defined, then all the +// elements in the mesh will be saved "as is", with their default +// orientation. + +Extrude { + Surface{6}; Layers{5, 0.1}; Recombine; + +} diff --git a/doc/VERSIONS b/doc/VERSIONS index 88f328c6178dd18b401ce50448f2c595dc53e72e..00f59b186fada15c69ffe08885db5620f434fe62 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,6 +1,6 @@ -$Id: VERSIONS,v 1.379 2007-02-21 08:17:16 geuzaine Exp $ +$Id: VERSIONS,v 1.380 2007-02-26 08:25:46 geuzaine Exp $ -since 2.0: volumes can now be defined from external CAD surfaces; +new since 2.0: volumes can now be defined from external CAD surfaces; Delaunay/Tetgen algorithm is now used by default when available; fixed various bugs. diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index 2b3996fc31a1ada0ba4d4d5eabd94a12845121f6..17efb0a233868548a366bf83677a881ea5018577 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: gmsh.texi,v 1.229 2007-02-13 07:51:48 geuzaine Exp $ +@c $Id: gmsh.texi,v 1.230 2007-02-26 08:25:46 geuzaine Exp $ @c @c Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle @c @@ -2038,6 +2038,9 @@ Extrudes both the geometry and the mesh using a combined translation and rotation (@pxref{Extrusions}). The @var{layers} option is defined as above. +@item Extrude @{ Surface @{ @var{expression-list} @}; @var{layers} @} +Extrudes a boundary layer along the normals of the specified surfaces. + @item Transfinite Line @{ @var{expression-list} @} = @var{expression} < Using Progression | Bump @var{expression} >; Selects the lines in @var{expression-list} to be meshed with the 1D transfinite algorithm. The @var{expression} on the right hand side gives the