From 8bb2301483fa5fef09067a950a862ca5c2681689 Mon Sep 17 00:00:00 2001 From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be> Date: Thu, 21 Feb 2008 09:46:17 +0000 Subject: [PATCH] *** empty log message *** --- Common/GmshMatrix.h | 141 ++- Geo/GEdge.cpp | 18 +- Geo/GEdge.h | 1 + Geo/GFace.cpp | 28 +- Geo/GFace.h | 5 + Geo/MElement.cpp | 363 +----- Geo/Makefile | 2181 ++++++++++++++++++++++++++++++++++- Mesh/BDS.cpp | 54 +- Mesh/BackgroundMesh.cpp | 8 +- Mesh/HighOrder.cpp | 736 +++++++----- Mesh/meshGFaceBDS.cpp | 91 +- Mesh/qualityMeasures.cpp | 14 +- Mesh/qualityMeasures.h | 4 +- Numeric/FunctionSpace.cpp | 559 +++++++++ Numeric/FunctionSpace.h | 109 ++ Numeric/GaussLegendre1D.h | 101 ++ Numeric/Makefile | 3 +- benchmarks/2d/naca12_2d.geo | 2 +- 18 files changed, 3737 insertions(+), 681 deletions(-) create mode 100644 Numeric/FunctionSpace.cpp create mode 100644 Numeric/FunctionSpace.h create mode 100644 Numeric/GaussLegendre1D.h diff --git a/Common/GmshMatrix.h b/Common/GmshMatrix.h index d813a57a4b..eaa6384001 100644 --- a/Common/GmshMatrix.h +++ b/Common/GmshMatrix.h @@ -108,6 +108,18 @@ public: { throw; } + Gmsh_Matrix cofactor(int i,int j) const + { + throw; + } + inline void invert () + { + throw; + } + double determinant() const { + throw; + } + }; #ifdef HAVE_GSL @@ -142,28 +154,60 @@ public: { return *gsl_vector_ptr (data,i); } + inline double norm(){ + return gsl_blas_dnrm2(data); + } + inline void scale (const double & y) + { + if (y == 0.0) gsl_vector_set_zero( data ); + else gsl_vector_scale ( data, y ); + } }; class GSL_Matrix { private: + gsl_matrix_view view; int r,c; public: - inline int size1() const {return r;} - inline int size2() const {return c;} + inline size_t size1() const {return data->size1;} + inline size_t size2() const {return data->size2;} gsl_matrix *data; - ~GSL_Matrix() {gsl_matrix_free (data);} - GSL_Matrix(int R,int C) - : r(R),c(C) - { - data = gsl_matrix_calloc (r, c); - } - GSL_Matrix(const GSL_Matrix&other) - : r(other.r),c(other.c) + GSL_Matrix(gsl_matrix_view _data) + : view(_data),data(&view.matrix) + {} + + GSL_Matrix(size_t R, size_t C) + { data = gsl_matrix_calloc (R, C); } + + GSL_Matrix() : data(0) + {} + + GSL_Matrix(const GSL_Matrix&other): + data(0) + { + if(data)gsl_matrix_free (data); + data = gsl_matrix_calloc (other.data->size1, other.data->size2); + gsl_matrix_memcpy (data, other.data); + } + virtual ~GSL_Matrix() {if(data && data->owner == 1)gsl_matrix_free (data);} + + GSL_Matrix & operator = (const GSL_Matrix&other) + { + if (&other != this) + { + if(data)gsl_matrix_free (data); + data = gsl_matrix_calloc (other.data->size1, other.data->size2); + gsl_matrix_memcpy (data, other.data); + } + return *this; + } + + void memcpy (const GSL_Matrix&other) { - data = gsl_matrix_calloc (r, c); gsl_matrix_memcpy (data, other.data); } + inline double operator () (int i, int j) const { return gsl_matrix_get (data,i,j); @@ -176,6 +220,10 @@ public: { gsl_blas_dgemm (CblasNoTrans,CblasNoTrans, 1.0, data, x.data, 1.0, b.data); } + inline void set_all (const double & m ) + { + gsl_matrix_set_all (data, m); + } inline void least_squares (const GSL_Vector & rhs, GSL_Vector & result) { assert (r > c); @@ -198,10 +246,81 @@ public: gsl_linalg_LU_solve ( data , p, rhs.data, result.data ) ; gsl_permutation_free (p); } + inline void invert () + { + int s; + gsl_permutation * p = gsl_permutation_alloc (size1()); + gsl_linalg_LU_decomp ( data, p, &s); + gsl_matrix *data_inv = gsl_matrix_calloc (size1(), size2()); + gsl_linalg_LU_invert ( data , p, data_inv ) ; + gsl_matrix_memcpy (data, data_inv); + gsl_matrix_free (data_inv); + gsl_permutation_free (p); + } + inline bool invertSecure (double& det) + { + int s; + gsl_permutation * p = gsl_permutation_alloc (size1()); + gsl_linalg_LU_decomp ( data, p, &s); + det = gsl_linalg_LU_det(data,s); + gsl_matrix *data_inv = gsl_matrix_calloc (size1(), size2()); + gsl_linalg_LU_invert ( data , p, data_inv ) ; + gsl_matrix_memcpy (data, data_inv); + gsl_matrix_free (data_inv); + gsl_permutation_free (p); + + return (det != 0.); + } + double determinant() const + { + GSL_Matrix copy = *this; + double det; + copy.invertSecure(det); + return det; + } + GSL_Matrix cofactor(int i,int j) const + { + int ni = size1(); + int nj = size2(); + GSL_Matrix cof(ni-1,nj-1); + if (i>0) { + if (j>0) GSL_Matrix(cof.touchSubmatrix(0,i,0, j )).memcpy(GSL_Matrix(seeSubmatrix(0,i,0 , j))); + if (j<nj-1) GSL_Matrix(cof.touchSubmatrix(0,i,j,nj-j-1)).memcpy(GSL_Matrix(seeSubmatrix(0,i,j+1,nj-j-1))); + } + + if (i<ni-1) { + if (j<nj-1) GSL_Matrix(cof.touchSubmatrix(i,ni-i-1,j,nj-j-1)).memcpy(GSL_Matrix(seeSubmatrix(i+1,ni-i-1,j+1,nj-j-1))); + if (j>0) GSL_Matrix(cof.touchSubmatrix(i,ni-i-1,0, j)).memcpy(GSL_Matrix(seeSubmatrix(i+1,ni-i-1,0 , j))); + } + return cof; + } + inline void mult (const GSL_Vector & x, GSL_Vector & b ) { gsl_blas_dgemv (CblasNoTrans, 1.0, data, x.data, 1.0, b.data); } + inline gsl_matrix_view touchSubmatrix(int i0,int ni,int j0,int nj) + { + return gsl_matrix_submatrix (data,i0,j0,ni,nj); + } + inline const gsl_matrix_view seeSubmatrix(int i0,int ni,int j0,int nj) const + { + return gsl_matrix_submatrix (data,i0,j0,ni,nj); + } + inline void scale (const double & m ) + { + if (m == 0.0) gsl_matrix_set_zero ( data ); + else gsl_matrix_scale (data, m); + } + inline void add (const double & a ) + { + gsl_matrix_add_constant (data, a); + } + inline void add (const GSL_Matrix & m ) + { + gsl_matrix_add (data, m.data); + } + }; typedef GSL_Matrix Double_Matrix; typedef GSL_Vector Double_Vector; diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index af59f8be2f..7f035b612e 100644 --- a/Geo/GEdge.cpp +++ b/Geo/GEdge.cpp @@ -1,4 +1,4 @@ -// $Id: GEdge.cpp,v 1.38 2008-02-17 09:30:25 geuzaine Exp $ +// $Id: GEdge.cpp,v 1.39 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -25,6 +25,7 @@ #include "GFace.h" #include "MElement.h" #include "GmshDefines.h" +#include "GaussLegendre1D.h" #if defined(HAVE_GMSH_EMBEDDED) # include "GmshEmbedded.h" @@ -170,3 +171,18 @@ double GEdge::curvature(double par) const SVector3 d = one_over_D * (n2 - n1); return norm(d); } + + +double GEdge::length (const double &u0, const double &u1, const int nbQuadPoints){ + double *t=0,*w=0; + gmshGaussLegendre1D (nbQuadPoints , &t, &w); + double L = 0.0; + const double rapJ = (u1-u0)*.5; + for (int i=0;i<nbQuadPoints;i++){ + const double ui = u0 * 0.5 * (1.-t[i]) + u1 * 0.5 * (1.+t[i]); + SVector3 der = firstDer(ui); + const double d = norm(der); + L += d * w[i] * rapJ; + } + return L; +} diff --git a/Geo/GEdge.h b/Geo/GEdge.h index 0d6fd8c977..b52403652c 100644 --- a/Geo/GEdge.h +++ b/Geo/GEdge.h @@ -102,6 +102,7 @@ class GEdge : public GEntity { // the length of the model edge inline double length() const { return _length; } inline void setLength(const double l) { _length = l; } + double length (const double &u0, const double &u1, const int nbQuadPoints = 4); // one can impose the mesh size at an edge virtual double prescribedMeshSizeAtVertex() const { return meshAttributes.meshSize; } diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp index 64b004f87f..dea69e09e5 100644 --- a/Geo/GFace.cpp +++ b/Geo/GFace.cpp @@ -1,4 +1,4 @@ -// $Id: GFace.cpp,v 1.51 2008-02-17 09:30:28 geuzaine Exp $ +// $Id: GFace.cpp,v 1.52 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -23,6 +23,7 @@ #include "GFace.h" #include "GEdge.h" #include "MElement.h" +#include "GaussLegendre1D.h" #if defined(HAVE_GMSH_EMBEDDED) # include "GmshEmbedded.h" @@ -687,3 +688,28 @@ bool GFace::buildSTLTriangulation() return true; #endif } +// by default we assume that straight lines are geodesics +SPoint2 GFace::geodesic(const SPoint2 &pt1 , const SPoint2 &pt2 , double t){ + return pt1 + (pt2-pt1) * t; +} +// length of a curve drawn on a surface +// S = (X(u,v), Y(u,v), Z(u,v) ); +// u = u(t) , v = v(t) +// C = C ( u(t), v(t) ) +// dC/dt = dC/du du/dt + dC/dv dv/dt +double GFace::length(const SPoint2 &pt1 , const SPoint2 &pt2, int nbQuadPoints){ + double *t=0,*w=0; + double L = 0.0; + gmshGaussLegendre1D (nbQuadPoints , &t, &w); + for (int i=0;i<nbQuadPoints;i++){ + const double ti = 0.5 * (1.+t[i]); + SPoint2 pi = geodesic (pt1, pt2, ti); + Pair<SVector3,SVector3> der2 = firstDer(pi); + SVector3 der = der2.left() * (pt2.x()-pt1.x()) + der2.right() * (pt2.y()-pt1.y()); + const double d = norm(der); + L += d * w[i] ; + } + return L; + + +} diff --git a/Geo/GFace.h b/Geo/GFace.h index 995bc29437..fb416da9d1 100644 --- a/Geo/GFace.h +++ b/Geo/GFace.h @@ -100,6 +100,11 @@ class GFace : public GEntity // Return the point on the face corresponding to the given parameter. virtual GPoint point(double par1, double par2) const = 0; virtual GPoint point(const SPoint2 &pt) const { return point(pt.x(), pt.y()); } + // computes, in parametric space, the interpolation from pt1 to pt2 alon the geodesic + // of the surface + virtual SPoint2 geodesic ( const SPoint2 &pt1 , const SPoint2 &pt2 , double t); + // computes the length of a geodesic between two points in parametric space + virtual double length ( const SPoint2 &pt1 , const SPoint2 &pt2, int n=4); // If the mapping is a conforming mapping, i.e. a mapping that // conserves angles, this function returns the eigenvalue of the diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp index f91823770e..589d788d35 100644 --- a/Geo/MElement.cpp +++ b/Geo/MElement.cpp @@ -1,4 +1,4 @@ -// $Id: MElement.cpp,v 1.52 2008-02-17 08:47:58 geuzaine Exp $ +// $Id: MElement.cpp,v 1.53 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -23,6 +23,8 @@ #include "MElement.h" #include "GEntity.h" #include "GFace.h" +#include "FunctionSpace.h" +#include "GmshMatrix.h" #if defined(HAVE_GMSH_EMBEDDED) # include "GmshEmbedded.h" @@ -641,301 +643,32 @@ void MTriangle::circumcenterXY(double *res) const circumcenterXY(p1, p2, p3, res); } -int P1[3][2] = { - {0,0}, - {1,0}, - {0,1} -}; - -int P2[6][2] = { - {0,0}, - {1,0}, - {0,1}, - {2,0}, - {0,2}, - {1,1} -}; - -int P3[9][2] = { - {0,0}, - {1,0}, - {0,1}, - {2,0}, - {0,2}, - {3,0}, - {0,3}, - {2,1}, - {1,2} -}; - -int P4[12][2] = { - {0,0}, - {1,0}, - {0,1}, - {2,0}, - {0,2}, - {3,0}, - {0,3}, - {4,0}, - {0,4}, - {3,1}, - {1,3}, - {2,2} -}; - -int P5[15][2] = { - {0,0}, - {1,0}, - {0,1}, - {2,0}, - {0,2}, - {3,0}, - {0,3}, - {4,0}, - {0,4}, - {5,0}, - {0,5}, - {4,1}, - {3,2}, - {2,3}, - {1,4} -}; - -double coef1[3][3]={ - { 1.00000000, -1.00000000, -1.00000000}, - { 0.00000000, 1.00000000, 0.00000000}, - { 0.00000000, 0.00000000, 1.00000000} -}; - -double coef2[6][6]={ - { 1.00000000, -3.00000000, -3.00000000, 2.00000000, 2.00000000, 4.00000000}, - { 0.00000000, -1.00000000, 0.00000000, 2.00000000, -0.00000000, -0.00000000}, - { 0.00000000, 0.00000000, -1.00000000, -0.00000000, 2.00000000, -0.00000000}, - { 0.00000000, 4.00000000, 0.00000000, -4.00000000, -0.00000000, -4.00000000}, - { 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, 4.00000000}, - { 0.00000000, 0.00000000, 4.00000000, -0.00000000, -4.00000000, -4.00000000} -}; - -double coef3[9][9]={ - { 1.00000000, -5.50000000, -5.50000000, 9.00000000, 9.00000000, -4.50000000, - -4.50000000, 4.50000000, 4.50000000}, - { 0.00000000, 1.00000000, 0.00000000, -4.50000000, -0.00000000, 4.50000000, - -0.00000000, -0.00000000, -0.00000000}, - { 0.00000000, 0.00000000, 1.00000000, -0.00000000, -4.50000000, -0.00000000, - 4.50000000, -0.00000000, -0.00000000}, - { 0.00000000, 9.00000000, 0.00000000, -22.50000000, -0.00000000, 13.50000000, - 0.00000000, 4.50000000, -9.00000000}, - { 0.00000000, -4.50000000, -0.00000000, 18.00000000, 0.00000000, -13.50000000, - -0.00000000, -9.00000000, 4.50000000}, - { 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, -0.00000000, - 0.00000000, 9.00000000, -4.50000000}, - { 0.00000000, 0.00000000, -0.00000000, -0.00000000, 0.00000000, -0.00000000, - -0.00000000, -4.50000000, 9.00000000}, - { 0.00000000, 0.00000000, -4.50000000, -0.00000000, 18.00000000, -0.00000000, - -13.50000000, 4.50000000, -9.00000000}, - { 0.00000000, 0.00000000, 9.00000000, -0.00000000, -22.50000000, -0.00000000, - 13.50000000, -9.00000000, 4.50000000} -}; - -double coef4[12][12]={ -{ 1.00000000, -8.33333333, -8.33333333, 23.33333333, 23.33333333, -26.66666667, - -26.66666667, 10.66666667, 10.66666667, 9.33333333, 9.33333333, -2.66666667}, -{ 0.00000000, -1.00000000, 0.00000000, 7.33333333, -0.00000000, -16.00000000, - 0.00000000, 10.66666667, -0.00000000, -0.00000000, -0.00000000, -0.00000000}, -{ 0.00000000, 0.00000000, -1.00000000, -0.00000000, 7.33333333, -0.00000000, - -16.00000000, -0.00000000, 10.66666667, -0.00000000, -0.00000000, -0.00000000}, -{ 0.00000000, 16.00000000, -0.00000000, -69.33333333, 0.00000000, 96.00000000, - -0.00000000, -42.66666667, 0.00000000, -5.33333333, -16.00000000, 21.33333333}, -{ 0.00000000, -12.00000000, 0.00000000, 76.00000000, -0.00000000, -128.00000000, - 0.00000000, 64.00000000, -0.00000000, 12.00000000, 12.00000000, -40.00000000}, -{ 0.00000000, 5.33333333, -0.00000000, -37.33333333, 0.00000000, 74.66666667, - -0.00000000, -42.66666667, 0.00000000, -16.00000000, -5.33333333, 21.33333333}, -{ 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, -0.00000000, - 0.00000000, -0.00000000, -0.00000000, 16.00000000, 5.33333333, -21.33333333}, -{ 0.00000000, 0.00000000, -0.00000000, -0.00000000, 0.00000000, -0.00000000, - -0.00000000, -0.00000000, 0.00000000, -12.00000000, -12.00000000, 40.00000000}, -{ 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, -0.00000000, - 0.00000000, -0.00000000, -0.00000000, 5.33333333, 16.00000000, -21.33333333}, -{ 0.00000000, 0.00000000, 5.33333333, -0.00000000, -37.33333333, -0.00000000, - 74.66666667, -0.00000000, -42.66666667, -5.33333333, -16.00000000, 21.33333333}, -{ 0.00000000, 0.00000000, -12.00000000, -0.00000000, 76.00000000, -0.00000000, - -128.00000000, -0.00000000, 64.00000000, 12.00000000, 12.00000000, -40.00000000}, -{ 0.00000000, 0.00000000, 16.00000000, -0.00000000, -69.33333333, -0.00000000, - 96.00000000, -0.00000000, -42.66666667, -16.00000000, -5.33333333, 21.33333333} -}; -double coef5[15][15]={ -{ 1.00000000, -11.41666667, -11.41666667, 46.87500000, 46.87500000, -88.54166667, - -88.54166667, 78.12500000, 78.12500000, -26.04166667, -26.04166667, 10.41666667, - 5.20833333, 5.20833333, 10.41666667}, -{ 0.00000000, 1.00000000, -0.00000000, -10.41666667, 0.00000000, 36.45833333, - -0.00000000, -52.08333333, 0.00000000, 26.04166667, 0.00000000, -0.00000000, - 0.00000000, -0.00000000, 0.00000000}, -{ 0.00000000, 0.00000000, 1.00000000, -0.00000000, -10.41666667, -0.00000000, - 36.45833333, -0.00000000, -52.08333333, 0.00000000, 26.04166667, -0.00000000, - 0.00000000, -0.00000000, 0.00000000}, -{ 0.00000000, 25.00000000, -0.00000000, -160.41666667, 0.00000000, 369.79166667, - -0.00000000, -364.58333333, 0.00000000, 130.20833333, -0.00000000, 6.25000000, - -38.54166667, 60.41666667, -25.00000000}, -{ 0.00000000, -25.00000000, 0.00000000, 222.91666667, -0.00000000, -614.58333333, - 0.00000000, 677.08333333, -0.00000000, -260.41666667, 0.00000000, -16.66666667, - 95.83333333, -122.91666667, 25.00000000}, -{ 0.00000000, 16.66666667, -0.00000000, -162.50000000, 0.00000000, 510.41666667, - -0.00000000, -625.00000000, 0.00000000, 260.41666667, -0.00000000, 25.00000000, - -122.91666667, 95.83333333, -16.66666667}, -{ 0.00000000, -6.25000000, 0.00000000, 63.54166667, -0.00000000, -213.54166667, - 0.00000000, 286.45833333, -0.00000000, -130.20833333, 0.00000000, -25.00000000, - 60.41666667, -38.54166667, 6.25000000}, -{ 0.00000000, 0.00000000, -0.00000000, -0.00000000, 0.00000000, -0.00000000, - -0.00000000, -0.00000000, 0.00000000, 0.00000000, -0.00000000, 25.00000000, - -60.41666667, 38.54166667, -6.25000000}, -{ 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, -0.00000000, - 0.00000000, -0.00000000, -0.00000000, 0.00000000, 0.00000000, -25.00000000, - 122.91666667, -95.83333333, 16.66666667}, -{ 0.00000000, 0.00000000, -0.00000000, -0.00000000, 0.00000000, -0.00000000, - -0.00000000, -0.00000000, 0.00000000, 0.00000000, -0.00000000, 16.66666667, - -95.83333333, 122.91666667, -25.00000000}, -{ 0.00000000, 0.00000000, 0.00000000, -0.00000000, -0.00000000, -0.00000000, - 0.00000000, -0.00000000, -0.00000000, 0.00000000, 0.00000000, -6.25000000, - 38.54166667, -60.41666667, 25.00000000}, -{ 0.00000000, 0.00000000, -6.25000000, -0.00000000, 63.54166667, -0.00000000, - -213.54166667, -0.00000000, 286.45833333, 0.00000000, -130.20833333, 6.25000000, - -38.54166667, 60.41666667, -25.00000000}, -{ 0.00000000, 0.00000000, 16.66666667, -0.00000000, -162.50000000, -0.00000000, - 510.41666667, -0.00000000, -625.00000000, 0.00000000, 260.41666667, -16.66666667, - 95.83333333, -122.91666667, 25.00000000}, -{ 0.00000000, 0.00000000, -25.00000000, -0.00000000, 222.91666667, -0.00000000, - -614.58333333, -0.00000000, 677.08333333, 0.00000000, -260.41666667, 25.00000000, - -122.91666667, 95.83333333, -16.66666667}, -{ 0.00000000, 0.00000000, 25.00000000, -0.00000000, -160.41666667, -0.00000000, - 369.79166667, -0.00000000, -364.58333333, 0.00000000, 130.20833333, -25.00000000, - 60.41666667, -38.54166667, 6.25000000} -}; - -void GeomShapeFunctionP1(double u, double v, double *sf) -{ - for (int i = 0; i < 3; i++){ - sf[i] = 0; - for(int j = 0; j < 3; j++){ - sf[i] += coef1[i][j] * pow(u,P1[j][0]) * pow(v, P1[j][1]); - } - } -} - - -void GradGeomShapeFunctionP1(double u, double v, double grads[6][2]) -{ - for (int i = 0; i < 3; i++){ - grads[i][0] = 0; - grads[i][1] = 0; - for(int j = 0; j < 3; j++){ - if(P1[j][0] > 0) grads[i][0] += coef1[i][j] * P1[j][0] * pow(u,P1[j][0] - 1) * pow(v, P1[j][1]); - if(P1[j][1] > 0) grads[i][1] += coef1[i][j] * P1[j][1] * pow(u,P1[j][0]) * pow(v, P1[j][1] - 1); - } - } -} - -void GeomShapeFunctionP2(double u, double v, double *sf) -{ - for (int i = 0; i < 6; i++){ - sf[i] = 0; - for(int j = 0; j < 6; j++){ - sf[i] += coef2[i][j] * pow(u,P2[j][0]) * pow(v, P2[j][1]); - } - } -} - -void GradGeomShapeFunctionP2(double u, double v, double grads[6][2]) -{ - for(int i = 0; i < 6; i++){ - grads[i][0] = 0; - grads[i][1] = 0; - for (int j = 0; j < 6; j++){ - if(P2[j][0] > 0) grads[i][0] += coef2[i][j] * P2[j][0] * pow(u, P2[j][0] - 1) * pow(v, P2[j][1]); - if(P2[j][1] > 0) grads[i][1] += coef2[i][j] * P2[j][1] * pow(u, P2[j][0]) * pow(v, P2[j][1] - 1); - } - } -} - -void GeomShapeFunctionP3(double u, double v, double *sf) -{ - for (int i = 0; i < 9; i++){ - sf[i] = 0; - for(int j = 0; j < 9; j++){ - sf[i] += coef3[i][j] * pow(u,P3[j][0]) * pow(v, P3[j][1]); - } - } -} - -void GradGeomShapeFunctionP3 (double u, double v, double grads[9][2]) -{ - for(int i = 0; i < 9; i++){ - grads[i][0] = 0; - grads[i][1] = 0; - for(int j = 0; j < 9; j++){ - if(P3[j][0] > 0) grads[i][0] += coef3[i][j] * P3[j][0] * pow(u, P3[j][0] - 1) * pow(v, P3[j][1]); - if(P3[j][1] > 0) grads[i][1] += coef3[i][j] * P3[j][1] * pow(u, P3[j][0]) * pow(v, P3[j][1] - 1); - } - } -} -void GeomShapeFunctionP4(double u, double v, double *sf) -{ - for (int i = 0; i < 12; i++){ - sf[i] = 0; - for(int j = 0; j < 12; j++){ - sf[i] += coef4[i][j] * pow(u,P4[j][0]) * pow(v, P4[j][1]); - } - } -} - - -void GradGeomShapeFunctionP4(double u, double v, double grads[12][2]) -{ - for(int i = 0; i < 12; i++){ - grads[i][0] = 0; - grads[i][1] = 0; - for(int j = 0; j < 12; j++){ - if(P4[j][0] > 0) grads[i][0] += coef4[i][j] * P4[j][0] * pow(u, P4[j][0] - 1) * pow(v, P4[j][1]); - if(P4[j][1] > 0) grads[i][1] += coef4[i][j] * P4[j][1] * pow(u, P4[j][0]) * pow(v, P4[j][1] - 1); - } - } -} - -void GeomShapeFunctionP5(double u, double v, double *sf) +void MTriangle::jac(int ord, MVertex *vs[], double uu, double vv, double j[2][3]) { - for (int i = 0; i < 15; i++){ - sf[i] = 0; - for(int j = 0; j < 15; j++){ - sf[i] += coef5[i][j] * pow(u,P5[j][0]) * pow(v, P5[j][1]); + double grads[256][2]; + int nf = getNumFaceVertices(); + + if (!nf){ + switch(ord){ + case 1: gmshFunctionSpaces::find(MSH_TRI_3).df(uu,vv,grads); break; + case 2: gmshFunctionSpaces::find(MSH_TRI_6).df(uu,vv,grads); break; + case 3: gmshFunctionSpaces::find(MSH_TRI_9).df(uu,vv,grads); break; + case 4: gmshFunctionSpaces::find(MSH_TRI_12).df(uu,vv,grads); break; + case 5: gmshFunctionSpaces::find(MSH_TRI_15I).df(uu,vv,grads); break; + default: throw; } } -} - -void GradGeomShapeFunctionP5(double u, double v, double grads[15][2]) -{ - for(int i = 0; i < 15; i++){ - grads[i][0] = 0; - grads[i][1] = 0; - for (int j = 0; j < 15; j++){ - if(P5[j][0] > 0) grads[i][0] += coef5[i][j] * P5[j][0] * pow(u, P5[j][0] - 1) * pow(v, P5[j][1]); - if(P5[j][1] > 0) grads[i][1] += coef5[i][j] * P5[j][1] * pow(u, P5[j][0]) * pow(v, P5[j][1] - 1); + else{ + switch(ord){ + case 1: gmshFunctionSpaces::find(MSH_TRI_3).df(uu,vv,grads); break; + case 2: gmshFunctionSpaces::find(MSH_TRI_6).df(uu,vv,grads); break; + case 3: gmshFunctionSpaces::find(MSH_TRI_10).df(uu,vv,grads); break; + case 4: gmshFunctionSpaces::find(MSH_TRI_15).df(uu,vv,grads); break; + case 5: gmshFunctionSpaces::find(MSH_TRI_21).df(uu,vv,grads); break; + default: throw; } } -} - -void MTriangle::jac(int ord, MVertex *vs[], double uu, double vv, double j[2][3]) -{ - double grads[256][2]; - - - switch(ord){ - case 1: GradGeomShapeFunctionP1(uu, vv, grads); break; - case 2: GradGeomShapeFunctionP2(uu, vv, grads); break; - case 3: GradGeomShapeFunctionP3(uu, vv, grads); break; - case 4: GradGeomShapeFunctionP4(uu, vv, grads); break; - case 5: GradGeomShapeFunctionP5(uu, vv, grads); break; - default: throw; - } j[0][0] = 0 ; for(int i = 0; i < 3; i++) j[0][0] += grads [i][0] * _v[i] -> x(); j[1][0] = 0 ; for(int i = 0; i < 3; i++) j[1][0] += grads [i][1] * _v[i] -> x(); j[0][1] = 0 ; for(int i = 0; i < 3; i++) j[0][1] += grads [i][0] * _v[i] -> y(); @@ -943,36 +676,49 @@ void MTriangle::jac(int ord, MVertex *vs[], double uu, double vv, double j[2][3] j[0][2] = 0 ; for(int i = 0; i < 3; i++) j[0][2] += grads [i][0] * _v[i] -> z(); j[1][2] = 0 ; for(int i = 0; i < 3; i++) j[1][2] += grads [i][1] * _v[i] -> z(); + if (ord == 1)return; - for(int i = 3; i < 3 * ord; i++) j[0][0] += grads[i][0] * vs[i - 3] -> x(); - for(int i = 3; i < 3 * ord; i++) j[1][0] += grads[i][1] * vs[i - 3] -> x(); - for(int i = 3; i < 3 * ord; i++) j[0][1] += grads[i][0] * vs[i - 3] -> y(); - for(int i = 3; i < 3 * ord; i++) j[1][1] += grads[i][1] * vs[i - 3] -> y(); - for(int i = 3; i < 3 * ord; i++) j[0][2] += grads[i][0] * vs[i - 3] -> z(); - for(int i = 3; i < 3 * ord; i++) j[1][2] += grads[i][1] * vs[i - 3] -> z(); - + for(int i = 3; i < 3 * ord + nf; i++) j[0][0] += grads[i][0] * vs[i - 3] -> x(); + for(int i = 3; i < 3 * ord + nf; i++) j[1][0] += grads[i][1] * vs[i - 3] -> x(); + for(int i = 3; i < 3 * ord + nf; i++) j[0][1] += grads[i][0] * vs[i - 3] -> y(); + for(int i = 3; i < 3 * ord + nf; i++) j[1][1] += grads[i][1] * vs[i - 3] -> y(); + for(int i = 3; i < 3 * ord + nf; i++) j[0][2] += grads[i][0] * vs[i - 3] -> z(); + for(int i = 3; i < 3 * ord + nf; i++) j[1][2] += grads[i][1] * vs[i - 3] -> z(); } void MTriangle::pnt(int ord, MVertex *vs[], double uu, double vv, SPoint3 &p) { double sf[256]; - - switch(ord){ - case 1: GeomShapeFunctionP1(uu, vv, sf); break; - case 2: GeomShapeFunctionP2(uu, vv, sf); break; - case 3: GeomShapeFunctionP3(uu, vv, sf); break; - case 4: GeomShapeFunctionP4(uu, vv, sf); break; - case 5: GeomShapeFunctionP5(uu, vv, sf); break; - default: throw; + int nf = getNumFaceVertices(); + + if (!nf){ + switch(ord){ + case 1: gmshFunctionSpaces::find(MSH_TRI_3).f(uu,vv,sf); break; + case 2: gmshFunctionSpaces::find(MSH_TRI_6).f(uu,vv,sf); break; + case 3: gmshFunctionSpaces::find(MSH_TRI_9).f(uu,vv,sf); break; + case 4: gmshFunctionSpaces::find(MSH_TRI_12).f(uu,vv,sf); break; + case 5: gmshFunctionSpaces::find(MSH_TRI_15I).f(uu,vv,sf); break; + default: throw; + } + } + else{ + switch(ord){ + case 1: gmshFunctionSpaces::find(MSH_TRI_3).f(uu,vv,sf); break; + case 2: gmshFunctionSpaces::find(MSH_TRI_6).f(uu,vv,sf); break; + case 3: gmshFunctionSpaces::find(MSH_TRI_10).f(uu,vv,sf); break; + case 4: gmshFunctionSpaces::find(MSH_TRI_15).f(uu,vv,sf); break; + case 5: gmshFunctionSpaces::find(MSH_TRI_21).f(uu,vv,sf); break; + default: throw; + } } double x = 0 ; for(int i = 0; i < 3; i++) x += sf[i] * _v[i] -> x(); double y = 0 ; for(int i = 0; i < 3; i++) y += sf[i] * _v[i] -> y(); double z = 0 ; for(int i = 0; i < 3; i++) z += sf[i] * _v[i] -> z(); - for(int i = 3; i < 3 * ord; i++) x += sf[i] * vs[i - 3] -> x(); - for(int i = 3; i < 3 * ord; i++) y += sf[i] * vs[i - 3] -> y(); - for(int i = 3; i < 3 * ord; i++) z += sf[i] * vs[i - 3] -> z(); + for(int i = 3; i < 3 * ord + nf; i++) x += sf[i] * vs[i - 3] -> x(); + for(int i = 3; i < 3 * ord + nf; i++) y += sf[i] * vs[i - 3] -> y(); + for(int i = 3; i < 3 * ord + nf; i++) z += sf[i] * vs[i - 3] -> z(); p = SPoint3(x,y,z); @@ -1072,3 +818,4 @@ void MTriangleN::getEdgeRep (int num, double *x, double *y, double *z, SVector3 z[0] = pnt1.z();z[1] = pnt2.z(); } } + diff --git a/Geo/Makefile b/Geo/Makefile index 51c629aa6d..8c2e429b9a 100644 --- a/Geo/Makefile +++ b/Geo/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.184 2008-02-17 08:47:58 geuzaine Exp $ +# $Id: Makefile,v 1.185 2008-02-21 09:45:15 remacle Exp $ # # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle # @@ -82,16 +82,53 @@ GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \ GEdge.o: GEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \ - MVertex.h MEdge.h MFace.h ../Common/Message.h + MVertex.h MEdge.h MFace.h ../Numeric/GaussLegendre1D.h \ + ../Common/Message.h GEdgeLoop.o: GEdgeLoop.cpp GEdgeLoop.h GEdge.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h GVertex.h GPoint.h SPoint2.h SVector3.h \ ../Common/Message.h GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \ - MVertex.h MEdge.h MFace.h ../Common/Message.h ../Numeric/Numeric.h \ - ../Numeric/NumericEmbedded.h ../Common/VertexArray.h ../Geo/SVector3.h \ - ../Common/Context.h ../DataStr/List.h + MVertex.h MEdge.h MFace.h ../Numeric/GaussLegendre1D.h \ + ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \ + ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \ + ../DataStr/List.h /sw//include/gsl/gsl_vector.h \ + /sw//include/gsl/gsl_vector_complex_long_double.h \ + /sw//include/gsl/gsl_types.h /sw//include/gsl/gsl_errno.h \ + /sw//include/gsl/gsl_complex.h /sw//include/gsl/gsl_check_range.h \ + /sw//include/gsl/gsl_vector_long_double.h \ + /sw//include/gsl/gsl_block_long_double.h \ + /sw//include/gsl/gsl_vector_complex.h \ + /sw//include/gsl/gsl_block_complex_long_double.h \ + /sw//include/gsl/gsl_vector_complex_double.h \ + /sw//include/gsl/gsl_vector_double.h \ + /sw//include/gsl/gsl_block_double.h \ + /sw//include/gsl/gsl_block_complex_double.h \ + /sw//include/gsl/gsl_vector_complex_float.h \ + /sw//include/gsl/gsl_vector_float.h /sw//include/gsl/gsl_block_float.h \ + /sw//include/gsl/gsl_block_complex_float.h \ + /sw//include/gsl/gsl_vector_ulong.h /sw//include/gsl/gsl_block_ulong.h \ + /sw//include/gsl/gsl_vector_long.h /sw//include/gsl/gsl_block_long.h \ + /sw//include/gsl/gsl_vector_uint.h /sw//include/gsl/gsl_block_uint.h \ + /sw//include/gsl/gsl_vector_int.h /sw//include/gsl/gsl_block_int.h \ + /sw//include/gsl/gsl_vector_ushort.h \ + /sw//include/gsl/gsl_block_ushort.h /sw//include/gsl/gsl_vector_short.h \ + /sw//include/gsl/gsl_block_short.h /sw//include/gsl/gsl_vector_uchar.h \ + /sw//include/gsl/gsl_block_uchar.h /sw//include/gsl/gsl_vector_char.h \ + /sw//include/gsl/gsl_block_char.h /sw//include/gsl/gsl_linalg.h \ + /sw//include/gsl/gsl_mode.h /sw//include/gsl/gsl_permutation.h \ + /sw//include/gsl/gsl_matrix.h \ + /sw//include/gsl/gsl_matrix_complex_long_double.h \ + /sw//include/gsl/gsl_matrix_complex_double.h \ + /sw//include/gsl/gsl_matrix_complex_float.h \ + /sw//include/gsl/gsl_matrix_long_double.h \ + /sw//include/gsl/gsl_matrix_double.h \ + /sw//include/gsl/gsl_matrix_float.h /sw//include/gsl/gsl_matrix_ulong.h \ + /sw//include/gsl/gsl_matrix_long.h /sw//include/gsl/gsl_matrix_uint.h \ + /sw//include/gsl/gsl_matrix_int.h /sw//include/gsl/gsl_matrix_ushort.h \ + /sw//include/gsl/gsl_matrix_short.h /sw//include/gsl/gsl_matrix_uchar.h \ + /sw//include/gsl/gsl_matrix_char.h GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \ @@ -124,25 +161,1688 @@ gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \ ../Common/Message.h gmshSurface.o: gmshSurface.cpp gmshSurface.h Pair.h Range.h SPoint2.h \ SPoint3.h SVector3.h SBoundingBox3d.h ../Numeric/Numeric.h \ - ../Numeric/NumericEmbedded.h ../Common/Message.h + ../Numeric/NumericEmbedded.h ../Common/Message.h \ + ../contrib/MathEval/matheval.h OCCVertex.o: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ - GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h MVertex.h \ - OCCEdge.h OCCFace.h + GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h \ + /usr/local/opencascade/inc/config.h \ + /usr/local/opencascade/inc/BRep_Tool.hxx \ + /usr/local/opencascade/inc/Standard_Boolean.hxx \ + /usr/local/opencascade/inc/Standard_TypeDef.hxx \ + /usr/local/opencascade/inc/Standard_Macro.hxx \ + /usr/local/opencascade/inc/Standard_Stream.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \ + /usr/local/opencascade/inc/Standard.hxx \ + /usr/local/opencascade/inc/Standard_Address.hxx \ + /usr/local/opencascade/inc/Standard_Integer.hxx \ + /usr/local/opencascade/inc/Standard_values.h \ + /usr/local/opencascade/inc/Standard_OStream.hxx \ + /usr/local/opencascade/inc/Standard_CString.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \ + /usr/local/opencascade/inc/Standard_Real.hxx \ + /usr/local/opencascade/inc/Standard_Character.hxx \ + /usr/local/opencascade/inc/Standard_ctype.hxx \ + /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \ + /usr/local/opencascade/inc/Standard_ExtString.hxx \ + /usr/local/opencascade/inc/Standard_Storable.hxx \ + /usr/local/opencascade/inc/Standard_Transient_proto.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \ + /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \ + /usr/local/opencascade/inc/GeomAbs_Shape.hxx \ + /usr/local/opencascade/inc/Geom_Curve.hxx \ + /usr/local/opencascade/inc/Geom_Geometry.hxx \ + /usr/local/opencascade/inc/MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_Type.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Type.hxx \ + /usr/local/opencascade/inc/Standard_KindOfType.hxx \ + /usr/local/opencascade/inc/Standard_Type.lxx \ + /usr/local/opencascade/inc/Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Geom_Surface.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPS.hxx \ + /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.hxx \ + /usr/local/opencascade/inc/gp_Pnt.hxx \ + /usr/local/opencascade/inc/gp_XYZ.hxx \ + /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \ + /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \ + /usr/local/opencascade/inc/gp_Mat.lxx \ + /usr/local/opencascade/inc/Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_SStream.hxx \ + /usr/local/opencascade/inc/Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_Failure.lxx \ + /usr/local/opencascade/inc/Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/gp_Pnt.lxx \ + /usr/local/opencascade/inc/gp_Trsf.hxx \ + /usr/local/opencascade/inc/gp_TrsfForm.hxx \ + /usr/local/opencascade/inc/gp_Trsf.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.lxx \ + /usr/local/opencascade/inc/gp_XY.hxx \ + /usr/local/opencascade/inc/gp_XY.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.lxx \ + /usr/local/opencascade/inc/gp_Pnt2d.hxx \ + /usr/local/opencascade/inc/gp_Pnt2d.lxx \ + /usr/local/opencascade/inc/gp_Vec2d.hxx \ + /usr/local/opencascade/inc/gp_Vec2d.lxx \ + /usr/local/opencascade/inc/gp_Dir2d.hxx \ + /usr/local/opencascade/inc/gp_Dir2d.lxx \ + /usr/local/opencascade/inc/gp_Ax2d.hxx \ + /usr/local/opencascade/inc/gp_Ax2d.lxx \ + /usr/local/opencascade/inc/gp_Vec.hxx \ + /usr/local/opencascade/inc/gp_Vec.lxx \ + /usr/local/opencascade/inc/gp_Dir.hxx \ + /usr/local/opencascade/inc/gp_Dir.lxx \ + /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.lxx \ + /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \ + /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \ + /usr/local/opencascade/inc/TCollection_Sequence.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \ + /usr/local/opencascade/inc/math_FunctionSet.hxx \ + /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/Quantity_Parameter.hxx \ + /usr/local/opencascade/inc/Quantity_Length.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \ + /usr/local/opencascade/inc/Extrema_POnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_Point.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \ + /usr/local/opencascade/inc/math_Function.hxx \ + /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \ + /usr/local/opencascade/inc/BRepTools.hxx \ + /usr/local/opencascade/inc/Standard_IStream.hxx \ + /usr/local/opencascade/inc/TopExp.hxx \ + /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.hxx \ + /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \ + /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \ + /usr/local/opencascade/inc/TCollection_SList.lxx \ + /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.lxx \ + /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \ + /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \ + /usr/local/opencascade/inc/TopAbs_Orientation.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \ + /usr/local/opencascade/inc/TCollection_List.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.lxx \ + /usr/local/opencascade/inc/TopAbs.hxx \ + /usr/local/opencascade/inc/TopAbs_State.hxx \ + /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepLib_Command.hxx \ + /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.hxx \ + /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.lxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \ + /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/TopoDS_Face.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/LProp_Status.hxx \ + /usr/local/opencascade/inc/Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \ + /usr/local/opencascade/inc/TCollection_Array1.lxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \ + /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.lxx \ + /usr/local/opencascade/inc/Poly_Triangulation.lxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \ + /usr/local/opencascade/inc/GProp_GProps.hxx \ + /usr/local/opencascade/inc/BRepGProp.hxx \ + /usr/local/opencascade/inc/TopoDS.hxx \ + /usr/local/opencascade/inc/TopoDS.lxx \ + /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/TopoDS_Solid.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.hxx \ + /usr/local/opencascade/inc/TopExp_Stack.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.lxx \ + /usr/local/opencascade/inc/BRep_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Wire.hxx \ + /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \ + /usr/local/opencascade/inc/TopoDS_Edge.hxx \ + /usr/local/opencascade/inc/TopoDS_Vertex.hxx \ + /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.hxx \ + /usr/local/opencascade/inc/XSControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \ + /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \ + /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \ + /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.lxx \ + /usr/local/opencascade/inc/STEPControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \ + /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \ + /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \ + /usr/local/opencascade/inc/Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.lxx \ + /usr/local/opencascade/inc/Interface_ParamType.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \ + /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \ + /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueType.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \ + /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtCC.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \ + /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \ + /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \ + /usr/local/opencascade/inc/Message_Gravity.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.lxx \ + /usr/local/opencascade/inc/Precision.hxx \ + /usr/local/opencascade/inc/Precision.lxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \ + /usr/local/opencascade/inc/ShapeExtend_Status.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.lxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.lxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Compound.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.lxx \ + /usr/local/opencascade/inc/ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/ShapeFix_Face.lxx \ + /usr/local/opencascade/inc/ShapeExtend.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.lxx \ + /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \ + /usr/local/opencascade/inc/BRepMesh.hxx \ + /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Bnd_Box.hxx \ + /usr/local/opencascade/inc/Bnd_Box.lxx \ + /usr/local/opencascade/inc/BRepBndLib.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis.hxx \ + /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/IGESControl_Writer.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \ + /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \ + /usr/local/opencascade/inc/Interface_GeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/STEPControl_Writer.hxx \ + /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \ + /usr/local/opencascade/inc/StlAPI_Writer.hxx \ + /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \ + /usr/local/opencascade/inc/BOP_Operation.hxx \ + /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \ + /usr/local/opencascade/inc/BOP_PBuilder.hxx \ + /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \ + /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \ + /usr/local/opencascade/inc/BRepLib.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/ShapeFix.hxx \ + /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.hxx \ + /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/TCollection_ListIterator.lxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.lxx \ + /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \ + /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.lxx \ + /usr/local/opencascade/inc/gp_Ax2.hxx \ + /usr/local/opencascade/inc/gp_Ax1.hxx \ + /usr/local/opencascade/inc/gp_Ax1.lxx \ + /usr/local/opencascade/inc/gp_Ax2.lxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \ + /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx MVertex.h OCCEdge.h \ + OCCFace.h OCCEdge.o: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h OCCEdge.h OCCVertex.h \ - OCCIncludes.h MVertex.h OCCFace.h ../Common/Context.h ../DataStr/List.h + OCCIncludes.h /usr/local/opencascade/inc/config.h \ + /usr/local/opencascade/inc/BRep_Tool.hxx \ + /usr/local/opencascade/inc/Standard_Boolean.hxx \ + /usr/local/opencascade/inc/Standard_TypeDef.hxx \ + /usr/local/opencascade/inc/Standard_Macro.hxx \ + /usr/local/opencascade/inc/Standard_Stream.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \ + /usr/local/opencascade/inc/Standard.hxx \ + /usr/local/opencascade/inc/Standard_Address.hxx \ + /usr/local/opencascade/inc/Standard_Integer.hxx \ + /usr/local/opencascade/inc/Standard_values.h \ + /usr/local/opencascade/inc/Standard_OStream.hxx \ + /usr/local/opencascade/inc/Standard_CString.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \ + /usr/local/opencascade/inc/Standard_Real.hxx \ + /usr/local/opencascade/inc/Standard_Character.hxx \ + /usr/local/opencascade/inc/Standard_ctype.hxx \ + /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \ + /usr/local/opencascade/inc/Standard_ExtString.hxx \ + /usr/local/opencascade/inc/Standard_Storable.hxx \ + /usr/local/opencascade/inc/Standard_Transient_proto.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \ + /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \ + /usr/local/opencascade/inc/GeomAbs_Shape.hxx \ + /usr/local/opencascade/inc/Geom_Curve.hxx \ + /usr/local/opencascade/inc/Geom_Geometry.hxx \ + /usr/local/opencascade/inc/MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_Type.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Type.hxx \ + /usr/local/opencascade/inc/Standard_KindOfType.hxx \ + /usr/local/opencascade/inc/Standard_Type.lxx \ + /usr/local/opencascade/inc/Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Geom_Surface.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPS.hxx \ + /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.hxx \ + /usr/local/opencascade/inc/gp_Pnt.hxx \ + /usr/local/opencascade/inc/gp_XYZ.hxx \ + /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \ + /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \ + /usr/local/opencascade/inc/gp_Mat.lxx \ + /usr/local/opencascade/inc/Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_SStream.hxx \ + /usr/local/opencascade/inc/Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_Failure.lxx \ + /usr/local/opencascade/inc/Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/gp_Pnt.lxx \ + /usr/local/opencascade/inc/gp_Trsf.hxx \ + /usr/local/opencascade/inc/gp_TrsfForm.hxx \ + /usr/local/opencascade/inc/gp_Trsf.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.lxx \ + /usr/local/opencascade/inc/gp_XY.hxx \ + /usr/local/opencascade/inc/gp_XY.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.lxx \ + /usr/local/opencascade/inc/gp_Pnt2d.hxx \ + /usr/local/opencascade/inc/gp_Pnt2d.lxx \ + /usr/local/opencascade/inc/gp_Vec2d.hxx \ + /usr/local/opencascade/inc/gp_Vec2d.lxx \ + /usr/local/opencascade/inc/gp_Dir2d.hxx \ + /usr/local/opencascade/inc/gp_Dir2d.lxx \ + /usr/local/opencascade/inc/gp_Ax2d.hxx \ + /usr/local/opencascade/inc/gp_Ax2d.lxx \ + /usr/local/opencascade/inc/gp_Vec.hxx \ + /usr/local/opencascade/inc/gp_Vec.lxx \ + /usr/local/opencascade/inc/gp_Dir.hxx \ + /usr/local/opencascade/inc/gp_Dir.lxx \ + /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.lxx \ + /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \ + /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \ + /usr/local/opencascade/inc/TCollection_Sequence.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \ + /usr/local/opencascade/inc/math_FunctionSet.hxx \ + /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/Quantity_Parameter.hxx \ + /usr/local/opencascade/inc/Quantity_Length.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \ + /usr/local/opencascade/inc/Extrema_POnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_Point.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \ + /usr/local/opencascade/inc/math_Function.hxx \ + /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \ + /usr/local/opencascade/inc/BRepTools.hxx \ + /usr/local/opencascade/inc/Standard_IStream.hxx \ + /usr/local/opencascade/inc/TopExp.hxx \ + /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.hxx \ + /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \ + /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \ + /usr/local/opencascade/inc/TCollection_SList.lxx \ + /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.lxx \ + /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \ + /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \ + /usr/local/opencascade/inc/TopAbs_Orientation.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \ + /usr/local/opencascade/inc/TCollection_List.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.lxx \ + /usr/local/opencascade/inc/TopAbs.hxx \ + /usr/local/opencascade/inc/TopAbs_State.hxx \ + /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepLib_Command.hxx \ + /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.hxx \ + /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.lxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \ + /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/TopoDS_Face.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/LProp_Status.hxx \ + /usr/local/opencascade/inc/Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \ + /usr/local/opencascade/inc/TCollection_Array1.lxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \ + /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.lxx \ + /usr/local/opencascade/inc/Poly_Triangulation.lxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \ + /usr/local/opencascade/inc/GProp_GProps.hxx \ + /usr/local/opencascade/inc/BRepGProp.hxx \ + /usr/local/opencascade/inc/TopoDS.hxx \ + /usr/local/opencascade/inc/TopoDS.lxx \ + /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/TopoDS_Solid.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.hxx \ + /usr/local/opencascade/inc/TopExp_Stack.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.lxx \ + /usr/local/opencascade/inc/BRep_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Wire.hxx \ + /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \ + /usr/local/opencascade/inc/TopoDS_Edge.hxx \ + /usr/local/opencascade/inc/TopoDS_Vertex.hxx \ + /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.hxx \ + /usr/local/opencascade/inc/XSControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \ + /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \ + /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \ + /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.lxx \ + /usr/local/opencascade/inc/STEPControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \ + /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \ + /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \ + /usr/local/opencascade/inc/Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.lxx \ + /usr/local/opencascade/inc/Interface_ParamType.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \ + /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \ + /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueType.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \ + /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtCC.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \ + /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \ + /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \ + /usr/local/opencascade/inc/Message_Gravity.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.lxx \ + /usr/local/opencascade/inc/Precision.hxx \ + /usr/local/opencascade/inc/Precision.lxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \ + /usr/local/opencascade/inc/ShapeExtend_Status.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.lxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.lxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Compound.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.lxx \ + /usr/local/opencascade/inc/ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/ShapeFix_Face.lxx \ + /usr/local/opencascade/inc/ShapeExtend.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.lxx \ + /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \ + /usr/local/opencascade/inc/BRepMesh.hxx \ + /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Bnd_Box.hxx \ + /usr/local/opencascade/inc/Bnd_Box.lxx \ + /usr/local/opencascade/inc/BRepBndLib.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis.hxx \ + /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/IGESControl_Writer.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \ + /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \ + /usr/local/opencascade/inc/Interface_GeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/STEPControl_Writer.hxx \ + /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \ + /usr/local/opencascade/inc/StlAPI_Writer.hxx \ + /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \ + /usr/local/opencascade/inc/BOP_Operation.hxx \ + /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \ + /usr/local/opencascade/inc/BOP_PBuilder.hxx \ + /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \ + /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \ + /usr/local/opencascade/inc/BRepLib.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/ShapeFix.hxx \ + /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.hxx \ + /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/TCollection_ListIterator.lxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.lxx \ + /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \ + /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.lxx \ + /usr/local/opencascade/inc/gp_Ax2.hxx \ + /usr/local/opencascade/inc/gp_Ax1.hxx \ + /usr/local/opencascade/inc/gp_Ax1.lxx \ + /usr/local/opencascade/inc/gp_Ax2.lxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \ + /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx MVertex.h OCCFace.h \ + ../Common/Context.h ../DataStr/List.h \ + /usr/local/opencascade/inc/Geom2dLProp_CLProps2d.hxx \ + /usr/local/opencascade/inc/Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfReal.hxx \ + /usr/local/opencascade/inc/Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Geom_OffsetCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_OffsetCurve.hxx \ + /usr/local/opencascade/inc/Geom_Ellipse.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Ellipse.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Conic.hxx \ + /usr/local/opencascade/inc/Geom_Conic.hxx \ + /usr/local/opencascade/inc/Geom_Parabola.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Parabola.hxx \ + /usr/local/opencascade/inc/Geom_Hyperbola.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Hyperbola.hxx \ + /usr/local/opencascade/inc/Geom_TrimmedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_TrimmedCurve.hxx \ + /usr/local/opencascade/inc/Geom_Circle.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Circle.hxx \ + /usr/local/opencascade/inc/Geom_Line.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Line.hxx OCCFace.o: OCCFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ - GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h MVertex.h \ - OCCEdge.h OCCFace.h ../Common/Message.h ../Numeric/Numeric.h \ + GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h \ + /usr/local/opencascade/inc/config.h \ + /usr/local/opencascade/inc/BRep_Tool.hxx \ + /usr/local/opencascade/inc/Standard_Boolean.hxx \ + /usr/local/opencascade/inc/Standard_TypeDef.hxx \ + /usr/local/opencascade/inc/Standard_Macro.hxx \ + /usr/local/opencascade/inc/Standard_Stream.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \ + /usr/local/opencascade/inc/Standard.hxx \ + /usr/local/opencascade/inc/Standard_Address.hxx \ + /usr/local/opencascade/inc/Standard_Integer.hxx \ + /usr/local/opencascade/inc/Standard_values.h \ + /usr/local/opencascade/inc/Standard_OStream.hxx \ + /usr/local/opencascade/inc/Standard_CString.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \ + /usr/local/opencascade/inc/Standard_Real.hxx \ + /usr/local/opencascade/inc/Standard_Character.hxx \ + /usr/local/opencascade/inc/Standard_ctype.hxx \ + /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \ + /usr/local/opencascade/inc/Standard_ExtString.hxx \ + /usr/local/opencascade/inc/Standard_Storable.hxx \ + /usr/local/opencascade/inc/Standard_Transient_proto.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \ + /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \ + /usr/local/opencascade/inc/GeomAbs_Shape.hxx \ + /usr/local/opencascade/inc/Geom_Curve.hxx \ + /usr/local/opencascade/inc/Geom_Geometry.hxx \ + /usr/local/opencascade/inc/MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_Type.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Type.hxx \ + /usr/local/opencascade/inc/Standard_KindOfType.hxx \ + /usr/local/opencascade/inc/Standard_Type.lxx \ + /usr/local/opencascade/inc/Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Geom_Surface.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPS.hxx \ + /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.hxx \ + /usr/local/opencascade/inc/gp_Pnt.hxx \ + /usr/local/opencascade/inc/gp_XYZ.hxx \ + /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \ + /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \ + /usr/local/opencascade/inc/gp_Mat.lxx \ + /usr/local/opencascade/inc/Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_SStream.hxx \ + /usr/local/opencascade/inc/Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_Failure.lxx \ + /usr/local/opencascade/inc/Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/gp_Pnt.lxx \ + /usr/local/opencascade/inc/gp_Trsf.hxx \ + /usr/local/opencascade/inc/gp_TrsfForm.hxx \ + /usr/local/opencascade/inc/gp_Trsf.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.lxx \ + /usr/local/opencascade/inc/gp_XY.hxx \ + /usr/local/opencascade/inc/gp_XY.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.lxx \ + /usr/local/opencascade/inc/gp_Pnt2d.hxx \ + /usr/local/opencascade/inc/gp_Pnt2d.lxx \ + /usr/local/opencascade/inc/gp_Vec2d.hxx \ + /usr/local/opencascade/inc/gp_Vec2d.lxx \ + /usr/local/opencascade/inc/gp_Dir2d.hxx \ + /usr/local/opencascade/inc/gp_Dir2d.lxx \ + /usr/local/opencascade/inc/gp_Ax2d.hxx \ + /usr/local/opencascade/inc/gp_Ax2d.lxx \ + /usr/local/opencascade/inc/gp_Vec.hxx \ + /usr/local/opencascade/inc/gp_Vec.lxx \ + /usr/local/opencascade/inc/gp_Dir.hxx \ + /usr/local/opencascade/inc/gp_Dir.lxx \ + /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.lxx \ + /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \ + /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \ + /usr/local/opencascade/inc/TCollection_Sequence.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \ + /usr/local/opencascade/inc/math_FunctionSet.hxx \ + /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/Quantity_Parameter.hxx \ + /usr/local/opencascade/inc/Quantity_Length.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \ + /usr/local/opencascade/inc/Extrema_POnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_Point.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \ + /usr/local/opencascade/inc/math_Function.hxx \ + /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \ + /usr/local/opencascade/inc/BRepTools.hxx \ + /usr/local/opencascade/inc/Standard_IStream.hxx \ + /usr/local/opencascade/inc/TopExp.hxx \ + /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.hxx \ + /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \ + /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \ + /usr/local/opencascade/inc/TCollection_SList.lxx \ + /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.lxx \ + /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \ + /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \ + /usr/local/opencascade/inc/TopAbs_Orientation.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \ + /usr/local/opencascade/inc/TCollection_List.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.lxx \ + /usr/local/opencascade/inc/TopAbs.hxx \ + /usr/local/opencascade/inc/TopAbs_State.hxx \ + /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepLib_Command.hxx \ + /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.hxx \ + /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.lxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \ + /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/TopoDS_Face.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/LProp_Status.hxx \ + /usr/local/opencascade/inc/Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \ + /usr/local/opencascade/inc/TCollection_Array1.lxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \ + /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.lxx \ + /usr/local/opencascade/inc/Poly_Triangulation.lxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \ + /usr/local/opencascade/inc/GProp_GProps.hxx \ + /usr/local/opencascade/inc/BRepGProp.hxx \ + /usr/local/opencascade/inc/TopoDS.hxx \ + /usr/local/opencascade/inc/TopoDS.lxx \ + /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/TopoDS_Solid.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.hxx \ + /usr/local/opencascade/inc/TopExp_Stack.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.lxx \ + /usr/local/opencascade/inc/BRep_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Wire.hxx \ + /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \ + /usr/local/opencascade/inc/TopoDS_Edge.hxx \ + /usr/local/opencascade/inc/TopoDS_Vertex.hxx \ + /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.hxx \ + /usr/local/opencascade/inc/XSControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \ + /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \ + /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \ + /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.lxx \ + /usr/local/opencascade/inc/STEPControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \ + /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \ + /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \ + /usr/local/opencascade/inc/Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.lxx \ + /usr/local/opencascade/inc/Interface_ParamType.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \ + /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \ + /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueType.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \ + /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtCC.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \ + /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \ + /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \ + /usr/local/opencascade/inc/Message_Gravity.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.lxx \ + /usr/local/opencascade/inc/Precision.hxx \ + /usr/local/opencascade/inc/Precision.lxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \ + /usr/local/opencascade/inc/ShapeExtend_Status.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.lxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.lxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Compound.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.lxx \ + /usr/local/opencascade/inc/ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/ShapeFix_Face.lxx \ + /usr/local/opencascade/inc/ShapeExtend.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.lxx \ + /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \ + /usr/local/opencascade/inc/BRepMesh.hxx \ + /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Bnd_Box.hxx \ + /usr/local/opencascade/inc/Bnd_Box.lxx \ + /usr/local/opencascade/inc/BRepBndLib.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis.hxx \ + /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/IGESControl_Writer.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \ + /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \ + /usr/local/opencascade/inc/Interface_GeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/STEPControl_Writer.hxx \ + /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \ + /usr/local/opencascade/inc/StlAPI_Writer.hxx \ + /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \ + /usr/local/opencascade/inc/BOP_Operation.hxx \ + /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \ + /usr/local/opencascade/inc/BOP_PBuilder.hxx \ + /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \ + /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \ + /usr/local/opencascade/inc/BRepLib.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/ShapeFix.hxx \ + /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.hxx \ + /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/TCollection_ListIterator.lxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.lxx \ + /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \ + /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.lxx \ + /usr/local/opencascade/inc/gp_Ax2.hxx \ + /usr/local/opencascade/inc/gp_Ax1.hxx \ + /usr/local/opencascade/inc/gp_Ax1.lxx \ + /usr/local/opencascade/inc/gp_Ax2.lxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \ + /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx MVertex.h OCCEdge.h \ + OCCFace.h ../Common/Message.h ../Numeric/Numeric.h \ ../Numeric/NumericEmbedded.h ../Common/VertexArray.h ../Geo/SVector3.h \ - ../Common/Context.h ../DataStr/List.h + ../Common/Context.h ../DataStr/List.h \ + /usr/local/opencascade/inc/Geom_CylindricalSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_CylindricalSurface.hxx \ + /usr/local/opencascade/inc/Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/gp_Ax3.hxx \ + /usr/local/opencascade/inc/gp_Ax3.lxx \ + /usr/local/opencascade/inc/Geom_ConicalSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ConicalSurface.hxx \ + /usr/local/opencascade/inc/Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/GeomAbs_BSplKnotDistribution.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray2OfReal.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfReal.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfInteger.hxx \ + /usr/local/opencascade/inc/Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Geom_SphericalSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_SphericalSurface.hxx \ + /usr/local/opencascade/inc/Geom_ToroidalSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ToroidalSurface.hxx \ + /usr/local/opencascade/inc/Geom_SurfaceOfRevolution.hxx \ + /usr/local/opencascade/inc/Handle_Geom_SurfaceOfRevolution.hxx \ + /usr/local/opencascade/inc/Handle_Geom_SweptSurface.hxx \ + /usr/local/opencascade/inc/Geom_SweptSurface.hxx \ + /usr/local/opencascade/inc/Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Geom_Plane.hxx \ + /usr/local/opencascade/inc/gp_Pln.hxx \ + /usr/local/opencascade/inc/gp_Pln.lxx \ + /usr/local/opencascade/inc/gp_Lin.hxx \ + /usr/local/opencascade/inc/gp_Lin.lxx \ + /usr/local/opencascade/inc/BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfVertexInteger.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfVertexInteger.hxx \ + /usr/local/opencascade/inc/MeshShape_DataMapOfShapeListOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_MeshShape_DataMapNodeOfDataMapOfShapeListOfTransient.hxx \ + /usr/local/opencascade/inc/MeshShape_DataMapOfIntegerPnt.hxx \ + /usr/local/opencascade/inc/Handle_MeshShape_DataMapNodeOfDataMapOfIntegerPnt.hxx \ + /usr/local/opencascade/inc/BRepMesh_IndexedMapOfVertex.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_IndexedMapNodeOfIndexedMapOfVertex.hxx \ + /usr/local/opencascade/inc/TColStd_IndexedMapOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_IndexedMapNodeOfIndexedMapOfInteger.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfIntegerListOfXY.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfIntegerListOfXY.hxx \ + /usr/local/opencascade/inc/BRepMesh_Status.hxx \ + /usr/local/opencascade/inc/TColStd_IndexedMapOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_IndexedMapNodeOfIndexedMapOfReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepAdaptor_HSurface.hxx \ + /usr/local/opencascade/inc/BRepMesh_FastDiscret.lxx OCCRegion.o: OCCRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \ - GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h MVertex.h \ - OCCEdge.h OCCFace.h OCCRegion.h ../Common/Message.h + GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h \ + /usr/local/opencascade/inc/config.h \ + /usr/local/opencascade/inc/BRep_Tool.hxx \ + /usr/local/opencascade/inc/Standard_Boolean.hxx \ + /usr/local/opencascade/inc/Standard_TypeDef.hxx \ + /usr/local/opencascade/inc/Standard_Macro.hxx \ + /usr/local/opencascade/inc/Standard_Stream.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \ + /usr/local/opencascade/inc/Standard.hxx \ + /usr/local/opencascade/inc/Standard_Address.hxx \ + /usr/local/opencascade/inc/Standard_Integer.hxx \ + /usr/local/opencascade/inc/Standard_values.h \ + /usr/local/opencascade/inc/Standard_OStream.hxx \ + /usr/local/opencascade/inc/Standard_CString.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \ + /usr/local/opencascade/inc/Standard_Real.hxx \ + /usr/local/opencascade/inc/Standard_Character.hxx \ + /usr/local/opencascade/inc/Standard_ctype.hxx \ + /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \ + /usr/local/opencascade/inc/Standard_ExtString.hxx \ + /usr/local/opencascade/inc/Standard_Storable.hxx \ + /usr/local/opencascade/inc/Standard_Transient_proto.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \ + /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \ + /usr/local/opencascade/inc/GeomAbs_Shape.hxx \ + /usr/local/opencascade/inc/Geom_Curve.hxx \ + /usr/local/opencascade/inc/Geom_Geometry.hxx \ + /usr/local/opencascade/inc/MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_Type.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Type.hxx \ + /usr/local/opencascade/inc/Standard_KindOfType.hxx \ + /usr/local/opencascade/inc/Standard_Type.lxx \ + /usr/local/opencascade/inc/Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Geom_Surface.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPS.hxx \ + /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.hxx \ + /usr/local/opencascade/inc/gp_Pnt.hxx \ + /usr/local/opencascade/inc/gp_XYZ.hxx \ + /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \ + /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \ + /usr/local/opencascade/inc/gp_Mat.lxx \ + /usr/local/opencascade/inc/Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_SStream.hxx \ + /usr/local/opencascade/inc/Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_Failure.lxx \ + /usr/local/opencascade/inc/Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/gp_Pnt.lxx \ + /usr/local/opencascade/inc/gp_Trsf.hxx \ + /usr/local/opencascade/inc/gp_TrsfForm.hxx \ + /usr/local/opencascade/inc/gp_Trsf.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.lxx \ + /usr/local/opencascade/inc/gp_XY.hxx \ + /usr/local/opencascade/inc/gp_XY.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.lxx \ + /usr/local/opencascade/inc/gp_Pnt2d.hxx \ + /usr/local/opencascade/inc/gp_Pnt2d.lxx \ + /usr/local/opencascade/inc/gp_Vec2d.hxx \ + /usr/local/opencascade/inc/gp_Vec2d.lxx \ + /usr/local/opencascade/inc/gp_Dir2d.hxx \ + /usr/local/opencascade/inc/gp_Dir2d.lxx \ + /usr/local/opencascade/inc/gp_Ax2d.hxx \ + /usr/local/opencascade/inc/gp_Ax2d.lxx \ + /usr/local/opencascade/inc/gp_Vec.hxx \ + /usr/local/opencascade/inc/gp_Vec.lxx \ + /usr/local/opencascade/inc/gp_Dir.hxx \ + /usr/local/opencascade/inc/gp_Dir.lxx \ + /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.lxx \ + /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \ + /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \ + /usr/local/opencascade/inc/TCollection_Sequence.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \ + /usr/local/opencascade/inc/math_FunctionSet.hxx \ + /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/Quantity_Parameter.hxx \ + /usr/local/opencascade/inc/Quantity_Length.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \ + /usr/local/opencascade/inc/Extrema_POnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_Point.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \ + /usr/local/opencascade/inc/math_Function.hxx \ + /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \ + /usr/local/opencascade/inc/BRepTools.hxx \ + /usr/local/opencascade/inc/Standard_IStream.hxx \ + /usr/local/opencascade/inc/TopExp.hxx \ + /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.hxx \ + /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \ + /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \ + /usr/local/opencascade/inc/TCollection_SList.lxx \ + /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.lxx \ + /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \ + /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \ + /usr/local/opencascade/inc/TopAbs_Orientation.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \ + /usr/local/opencascade/inc/TCollection_List.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.lxx \ + /usr/local/opencascade/inc/TopAbs.hxx \ + /usr/local/opencascade/inc/TopAbs_State.hxx \ + /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepLib_Command.hxx \ + /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.hxx \ + /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.lxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \ + /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/TopoDS_Face.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/LProp_Status.hxx \ + /usr/local/opencascade/inc/Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \ + /usr/local/opencascade/inc/TCollection_Array1.lxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \ + /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.lxx \ + /usr/local/opencascade/inc/Poly_Triangulation.lxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \ + /usr/local/opencascade/inc/GProp_GProps.hxx \ + /usr/local/opencascade/inc/BRepGProp.hxx \ + /usr/local/opencascade/inc/TopoDS.hxx \ + /usr/local/opencascade/inc/TopoDS.lxx \ + /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/TopoDS_Solid.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.hxx \ + /usr/local/opencascade/inc/TopExp_Stack.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.lxx \ + /usr/local/opencascade/inc/BRep_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Wire.hxx \ + /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \ + /usr/local/opencascade/inc/TopoDS_Edge.hxx \ + /usr/local/opencascade/inc/TopoDS_Vertex.hxx \ + /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.hxx \ + /usr/local/opencascade/inc/XSControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \ + /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \ + /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \ + /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.lxx \ + /usr/local/opencascade/inc/STEPControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \ + /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \ + /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \ + /usr/local/opencascade/inc/Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.lxx \ + /usr/local/opencascade/inc/Interface_ParamType.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \ + /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \ + /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueType.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \ + /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtCC.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \ + /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \ + /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \ + /usr/local/opencascade/inc/Message_Gravity.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.lxx \ + /usr/local/opencascade/inc/Precision.hxx \ + /usr/local/opencascade/inc/Precision.lxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \ + /usr/local/opencascade/inc/ShapeExtend_Status.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.lxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.lxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Compound.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.lxx \ + /usr/local/opencascade/inc/ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/ShapeFix_Face.lxx \ + /usr/local/opencascade/inc/ShapeExtend.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.lxx \ + /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \ + /usr/local/opencascade/inc/BRepMesh.hxx \ + /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Bnd_Box.hxx \ + /usr/local/opencascade/inc/Bnd_Box.lxx \ + /usr/local/opencascade/inc/BRepBndLib.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis.hxx \ + /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/IGESControl_Writer.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \ + /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \ + /usr/local/opencascade/inc/Interface_GeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/STEPControl_Writer.hxx \ + /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \ + /usr/local/opencascade/inc/StlAPI_Writer.hxx \ + /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \ + /usr/local/opencascade/inc/BOP_Operation.hxx \ + /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \ + /usr/local/opencascade/inc/BOP_PBuilder.hxx \ + /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \ + /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \ + /usr/local/opencascade/inc/BRepLib.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/ShapeFix.hxx \ + /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.hxx \ + /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/TCollection_ListIterator.lxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.lxx \ + /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \ + /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.lxx \ + /usr/local/opencascade/inc/gp_Ax2.hxx \ + /usr/local/opencascade/inc/gp_Ax1.hxx \ + /usr/local/opencascade/inc/gp_Ax1.lxx \ + /usr/local/opencascade/inc/gp_Ax2.lxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \ + /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx MVertex.h OCCEdge.h \ + OCCFace.h OCCRegion.h ../Common/Message.h fourierEdge.o: fourierEdge.cpp fourierEdge.h GEdge.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h GVertex.h GPoint.h SPoint2.h SVector3.h \ GModel.h GFace.h GEdgeLoop.h Pair.h GRegion.h fourierVertex.h MVertex.h \ @@ -162,12 +1862,12 @@ GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \ MVertex.h MEdge.h MFace.h ../Common/Message.h gmshSurface.h \ ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Mesh/Field.h \ ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \ - ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/Geo.h \ - ../Geo/gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \ - ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \ - ../Common/SmoothData.h ../Geo/GEdge.h ../Post/OctreePost.h \ - ../Common/Octree.h ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h \ - ../Common/Context.h + ../Post/PViewOptions.h ../Post/ColorTable.h \ + ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h ../Geo/gmshSurface.h \ + ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \ + ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GEdge.h \ + ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \ + ../Mesh/BackgroundMesh.h ../Common/Context.h GModelIO_Geo.o: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \ SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h \ GFace.h GEdgeLoop.h Pair.h GRegion.h Geo.h ../Common/GmshDefines.h \ @@ -187,8 +1887,407 @@ GModelIO_Mesh.o: GModelIO_Mesh.cpp GModel.h GVertex.h GEntity.h Range.h \ GModelIO_OCC.o: GModelIO_OCC.cpp GModelIO_OCC.h GModel.h GVertex.h \ GEntity.h Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \ SVector3.h GFace.h GEdgeLoop.h Pair.h GRegion.h OCCIncludes.h \ - ../Common/Message.h ../Common/Context.h ../DataStr/List.h OCCVertex.h \ - MVertex.h OCCEdge.h OCCFace.h OCCRegion.h + /usr/local/opencascade/inc/config.h \ + /usr/local/opencascade/inc/BRep_Tool.hxx \ + /usr/local/opencascade/inc/Standard_Boolean.hxx \ + /usr/local/opencascade/inc/Standard_TypeDef.hxx \ + /usr/local/opencascade/inc/Standard_Macro.hxx \ + /usr/local/opencascade/inc/Standard_Stream.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \ + /usr/local/opencascade/inc/Standard.hxx \ + /usr/local/opencascade/inc/Standard_Address.hxx \ + /usr/local/opencascade/inc/Standard_Integer.hxx \ + /usr/local/opencascade/inc/Standard_values.h \ + /usr/local/opencascade/inc/Standard_OStream.hxx \ + /usr/local/opencascade/inc/Standard_CString.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \ + /usr/local/opencascade/inc/Standard_Real.hxx \ + /usr/local/opencascade/inc/Standard_Character.hxx \ + /usr/local/opencascade/inc/Standard_ctype.hxx \ + /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \ + /usr/local/opencascade/inc/Standard_ExtString.hxx \ + /usr/local/opencascade/inc/Standard_Storable.hxx \ + /usr/local/opencascade/inc/Standard_Transient_proto.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \ + /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \ + /usr/local/opencascade/inc/GeomAbs_Shape.hxx \ + /usr/local/opencascade/inc/Geom_Curve.hxx \ + /usr/local/opencascade/inc/Geom_Geometry.hxx \ + /usr/local/opencascade/inc/MMgt_TShared.hxx \ + /usr/local/opencascade/inc/Standard_Transient.hxx \ + /usr/local/opencascade/inc/Standard_Type.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Type.hxx \ + /usr/local/opencascade/inc/Standard_KindOfType.hxx \ + /usr/local/opencascade/inc/Standard_Type.lxx \ + /usr/local/opencascade/inc/Geom2d_Curve.hxx \ + /usr/local/opencascade/inc/Geom2d_Geometry.hxx \ + /usr/local/opencascade/inc/Geom_Surface.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPS.hxx \ + /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.hxx \ + /usr/local/opencascade/inc/gp_Pnt.hxx \ + /usr/local/opencascade/inc/gp_XYZ.hxx \ + /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \ + /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \ + /usr/local/opencascade/inc/gp_Mat.lxx \ + /usr/local/opencascade/inc/Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \ + /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_SStream.hxx \ + /usr/local/opencascade/inc/Standard_RangeError.hxx \ + /usr/local/opencascade/inc/Standard_DomainError.hxx \ + /usr/local/opencascade/inc/Standard_Failure.hxx \ + /usr/local/opencascade/inc/Standard_Failure.lxx \ + /usr/local/opencascade/inc/Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \ + /usr/local/opencascade/inc/gp_Pnt.lxx \ + /usr/local/opencascade/inc/gp_Trsf.hxx \ + /usr/local/opencascade/inc/gp_TrsfForm.hxx \ + /usr/local/opencascade/inc/gp_Trsf.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.hxx \ + /usr/local/opencascade/inc/gp_Mat2d.lxx \ + /usr/local/opencascade/inc/gp_XY.hxx \ + /usr/local/opencascade/inc/gp_XY.lxx \ + /usr/local/opencascade/inc/gp_Trsf2d.lxx \ + /usr/local/opencascade/inc/gp_Pnt2d.hxx \ + /usr/local/opencascade/inc/gp_Pnt2d.lxx \ + /usr/local/opencascade/inc/gp_Vec2d.hxx \ + /usr/local/opencascade/inc/gp_Vec2d.lxx \ + /usr/local/opencascade/inc/gp_Dir2d.hxx \ + /usr/local/opencascade/inc/gp_Dir2d.lxx \ + /usr/local/opencascade/inc/gp_Ax2d.hxx \ + /usr/local/opencascade/inc/gp_Ax2d.lxx \ + /usr/local/opencascade/inc/gp_Vec.hxx \ + /usr/local/opencascade/inc/gp_Vec.lxx \ + /usr/local/opencascade/inc/gp_Dir.hxx \ + /usr/local/opencascade/inc/gp_Dir.lxx \ + /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \ + /usr/local/opencascade/inc/Extrema_POnSurf.lxx \ + /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \ + /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \ + /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \ + /usr/local/opencascade/inc/TCollection_Sequence.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \ + /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \ + /usr/local/opencascade/inc/math_FunctionSet.hxx \ + /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/Quantity_Parameter.hxx \ + /usr/local/opencascade/inc/Quantity_Length.hxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \ + /usr/local/opencascade/inc/Extrema_POnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_Point.lxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \ + /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \ + /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \ + /usr/local/opencascade/inc/math_Function.hxx \ + /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \ + /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \ + /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \ + /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \ + /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \ + /usr/local/opencascade/inc/BRepTools.hxx \ + /usr/local/opencascade/inc/Standard_IStream.hxx \ + /usr/local/opencascade/inc/TopExp.hxx \ + /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.hxx \ + /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \ + /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \ + /usr/local/opencascade/inc/TCollection_SList.lxx \ + /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \ + /usr/local/opencascade/inc/TopLoc_Location.lxx \ + /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \ + /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \ + /usr/local/opencascade/inc/TopAbs_Orientation.hxx \ + /usr/local/opencascade/inc/TopoDS_Shape.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.hxx \ + /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \ + /usr/local/opencascade/inc/TCollection_List.lxx \ + /usr/local/opencascade/inc/TopoDS_TShape.lxx \ + /usr/local/opencascade/inc/TopAbs.hxx \ + /usr/local/opencascade/inc/TopAbs_State.hxx \ + /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepLib_Command.hxx \ + /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \ + /usr/local/opencascade/inc/BRepLib_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \ + /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.hxx \ + /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \ + /usr/local/opencascade/inc/TCollection_BasicMap.lxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \ + /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \ + /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \ + /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \ + /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \ + /usr/local/opencascade/inc/TopoDS_Face.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \ + /usr/local/opencascade/inc/LProp_Status.hxx \ + /usr/local/opencascade/inc/Poly_Triangulation.hxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \ + /usr/local/opencascade/inc/TCollection_Array1.lxx \ + /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \ + /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.hxx \ + /usr/local/opencascade/inc/Poly_Triangle.lxx \ + /usr/local/opencascade/inc/Poly_Triangulation.lxx \ + /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \ + /usr/local/opencascade/inc/GProp_GProps.hxx \ + /usr/local/opencascade/inc/BRepGProp.hxx \ + /usr/local/opencascade/inc/TopoDS.hxx \ + /usr/local/opencascade/inc/TopoDS.lxx \ + /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \ + /usr/local/opencascade/inc/TopoDS_Solid.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.hxx \ + /usr/local/opencascade/inc/TopExp_Stack.hxx \ + /usr/local/opencascade/inc/TopExp_Explorer.lxx \ + /usr/local/opencascade/inc/BRep_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \ + /usr/local/opencascade/inc/TopoDS_Builder.hxx \ + /usr/local/opencascade/inc/TopoDS_Wire.hxx \ + /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \ + /usr/local/opencascade/inc/TopoDS_Edge.hxx \ + /usr/local/opencascade/inc/TopoDS_Vertex.hxx \ + /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \ + /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \ + /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.hxx \ + /usr/local/opencascade/inc/XSControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \ + /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \ + /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \ + /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \ + /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \ + /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \ + /usr/local/opencascade/inc/IGESControl_Reader.lxx \ + /usr/local/opencascade/inc/STEPControl_Reader.hxx \ + /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \ + /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \ + /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \ + /usr/local/opencascade/inc/Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Static.hxx \ + /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.hxx \ + /usr/local/opencascade/inc/TCollection_AsciiString.lxx \ + /usr/local/opencascade/inc/Interface_ParamType.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \ + /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Interface_TypedValue.hxx \ + /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \ + /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueType.hxx \ + /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \ + /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \ + /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \ + /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \ + /usr/local/opencascade/inc/Extrema_ExtCC.hxx \ + /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \ + /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \ + /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \ + /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \ + /usr/local/opencascade/inc/Message_Gravity.hxx \ + /usr/local/opencascade/inc/ShapeFix_Root.lxx \ + /usr/local/opencascade/inc/Precision.hxx \ + /usr/local/opencascade/inc/Precision.lxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \ + /usr/local/opencascade/inc/ShapeExtend_Status.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shape.lxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.hxx \ + /usr/local/opencascade/inc/ShapeFix_Solid.lxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Shell.hxx \ + /usr/local/opencascade/inc/TopoDS_Compound.hxx \ + /usr/local/opencascade/inc/ShapeFix_Shell.lxx \ + /usr/local/opencascade/inc/ShapeFix_Face.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \ + /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/ShapeFix_Face.lxx \ + /usr/local/opencascade/inc/ShapeExtend.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wire.lxx \ + /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \ + /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \ + /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \ + /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \ + /usr/local/opencascade/inc/BRepMesh.hxx \ + /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \ + /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \ + /usr/local/opencascade/inc/Bnd_Box.hxx \ + /usr/local/opencascade/inc/Bnd_Box.lxx \ + /usr/local/opencascade/inc/BRepBndLib.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis.hxx \ + /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \ + /usr/local/opencascade/inc/BRepTools_ReShape.hxx \ + /usr/local/opencascade/inc/IGESControl_Writer.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \ + /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \ + /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \ + /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \ + /usr/local/opencascade/inc/Interface_GeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \ + /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \ + /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \ + /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \ + /usr/local/opencascade/inc/STEPControl_Writer.hxx \ + /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \ + /usr/local/opencascade/inc/StlAPI_Writer.hxx \ + /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \ + /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \ + /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \ + /usr/local/opencascade/inc/BOP_Operation.hxx \ + /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \ + /usr/local/opencascade/inc/BOP_PBuilder.hxx \ + /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \ + /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \ + /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \ + /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \ + /usr/local/opencascade/inc/BRepLib.hxx \ + /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \ + /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \ + /usr/local/opencascade/inc/ShapeFix.hxx \ + /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.hxx \ + /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/TCollection_ListIterator.lxx \ + /usr/local/opencascade/inc/TopoDS_Iterator.lxx \ + /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \ + /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \ + /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.hxx \ + /usr/local/opencascade/inc/BRepPrim_Builder.lxx \ + /usr/local/opencascade/inc/gp_Ax2.hxx \ + /usr/local/opencascade/inc/gp_Ax1.hxx \ + /usr/local/opencascade/inc/gp_Ax1.lxx \ + /usr/local/opencascade/inc/gp_Ax2.lxx \ + /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \ + /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \ + /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx ../Common/Message.h \ + ../Common/Context.h ../DataStr/List.h OCCVertex.h MVertex.h OCCEdge.h \ + OCCFace.h OCCRegion.h GModelIO_Fourier.o: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \ Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \ SVector3.h GFace.h GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h \ @@ -244,5 +2343,43 @@ MFace.o: MFace.cpp MFace.h MVertex.h SPoint3.h SVector3.h \ MElement.o: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \ SPoint3.h MEdge.h SVector3.h MFace.h GEntity.h Range.h SBoundingBox3d.h \ GFace.h GPoint.h GEdgeLoop.h GEdge.h GVertex.h SPoint2.h Pair.h \ + ../Numeric/FunctionSpace.h ../Common/GmshMatrix.h \ + /sw//include/gsl/gsl_linalg.h /sw//include/gsl/gsl_mode.h \ + /sw//include/gsl/gsl_permutation.h /sw//include/gsl/gsl_types.h \ + /sw//include/gsl/gsl_errno.h /sw//include/gsl/gsl_check_range.h \ + /sw//include/gsl/gsl_vector.h \ + /sw//include/gsl/gsl_vector_complex_long_double.h \ + /sw//include/gsl/gsl_complex.h \ + /sw//include/gsl/gsl_vector_long_double.h \ + /sw//include/gsl/gsl_block_long_double.h \ + /sw//include/gsl/gsl_vector_complex.h \ + /sw//include/gsl/gsl_block_complex_long_double.h \ + /sw//include/gsl/gsl_vector_complex_double.h \ + /sw//include/gsl/gsl_vector_double.h \ + /sw//include/gsl/gsl_block_double.h \ + /sw//include/gsl/gsl_block_complex_double.h \ + /sw//include/gsl/gsl_vector_complex_float.h \ + /sw//include/gsl/gsl_vector_float.h /sw//include/gsl/gsl_block_float.h \ + /sw//include/gsl/gsl_block_complex_float.h \ + /sw//include/gsl/gsl_vector_ulong.h /sw//include/gsl/gsl_block_ulong.h \ + /sw//include/gsl/gsl_vector_long.h /sw//include/gsl/gsl_block_long.h \ + /sw//include/gsl/gsl_vector_uint.h /sw//include/gsl/gsl_block_uint.h \ + /sw//include/gsl/gsl_vector_int.h /sw//include/gsl/gsl_block_int.h \ + /sw//include/gsl/gsl_vector_ushort.h \ + /sw//include/gsl/gsl_block_ushort.h /sw//include/gsl/gsl_vector_short.h \ + /sw//include/gsl/gsl_block_short.h /sw//include/gsl/gsl_vector_uchar.h \ + /sw//include/gsl/gsl_block_uchar.h /sw//include/gsl/gsl_vector_char.h \ + /sw//include/gsl/gsl_block_char.h /sw//include/gsl/gsl_matrix.h \ + /sw//include/gsl/gsl_matrix_complex_long_double.h \ + /sw//include/gsl/gsl_matrix_complex_double.h \ + /sw//include/gsl/gsl_matrix_complex_float.h \ + /sw//include/gsl/gsl_matrix_long_double.h \ + /sw//include/gsl/gsl_matrix_double.h \ + /sw//include/gsl/gsl_matrix_float.h /sw//include/gsl/gsl_matrix_ulong.h \ + /sw//include/gsl/gsl_matrix_long.h /sw//include/gsl/gsl_matrix_uint.h \ + /sw//include/gsl/gsl_matrix_int.h /sw//include/gsl/gsl_matrix_ushort.h \ + /sw//include/gsl/gsl_matrix_short.h /sw//include/gsl/gsl_matrix_uchar.h \ + /sw//include/gsl/gsl_matrix_char.h /sw//include/gsl/gsl_blas.h \ + /sw//include/gsl/gsl_blas_types.h /sw//include/gsl/gsl_cblas.h \ ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Message.h \ ../Common/Context.h ../DataStr/List.h ../Mesh/qualityMeasures.h diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp index 3aba6a4072..6817bdca97 100644 --- a/Mesh/BDS.cpp +++ b/Mesh/BDS.cpp @@ -1,4 +1,4 @@ -// $Id: BDS.cpp,v 1.100 2008-02-17 08:48:00 geuzaine Exp $ +// $Id: BDS.cpp,v 1.101 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -25,6 +25,7 @@ #include "BDS.h" #include "Message.h" #include "GFace.h" +#include "meshGFaceDelaunayInsertion.h" #include "qualityMeasures.h" bool test_move_point_parametric_triangle(BDS_Point *p, double u, double v, BDS_Face *t); @@ -1247,28 +1248,39 @@ bool BDS_Mesh::smooth_point_centroid(BDS_Point *p, GFace *gf, bool test_quality) double U = 0; double V = 0; double LC = 0; + double oldU=p->u; + double oldV=p->v; std::list<BDS_Face*> ts; p->getTriangles(ts); - std::list<BDS_Face*>::iterator it = ts.begin(); - std::list<BDS_Face*>::iterator ite = ts.end(); + std::list < BDS_Edge * >::iterator ited = p->edges.begin(); + std::list < BDS_Edge * >::iterator itede = p->edges.end(); double sTot = 0; - while(it != ite) { - BDS_Face *t = *it; - BDS_Point *n[4]; - t->getNodes(n); - // double S = fabs(surface_triangle(n[0], n[1], n[2])); - double S = 1; - sTot += S; - U += (n[0]->u + n[1]->u + n[2]->u) *S; - V += (n[0]->v + n[1]->v + n[2]->v) *S; - LC += (n[0]->lc() + n[1]->lc() + n[2]->lc()) *S; - ++it; + while(ited != itede) { + BDS_Edge *e = *ited; + BDS_Point *n = e->othervertex(p); +// double uv[2] = {(n->u + p->u)/2.0,(n->v + p->v)/2.0}; +// double metric[3]; +// buildMetric ( gf ,uv,metric); +// double du[2] = {n->u - p->u,n->v - p->v}; +// double ldu = sqrt(DSQR(du[0])+DSQR(du[1])); +// du[0]/=ldu; +// du[1]/=ldu; +// double fact = 1./sqrt (metric[0] * du[0] * du[0] + +// 2 * metric[1] * du[0] * du[1] + +// metric[2] * du[1] * du[1]); + double fact = 1.0; + + sTot += fact; + U += n->u * fact; + V += n->v * fact; + LC += n->lc() * fact; + ++ited; } - U /= (3.*sTot); - V /= (3.*sTot); - LC /= (3.*sTot); + U /= (sTot); + V /= (sTot); + LC /= (sTot); GPoint gp = gf->point(U * scalingU, V * scalingV); @@ -1276,11 +1288,9 @@ bool BDS_Mesh::smooth_point_centroid(BDS_Point *p, GFace *gf, bool test_quality) const double oldY = p->Y; const double oldZ = p->Z; - double oldU = p->u; - double oldV = p->v; - - it = ts.begin(); - double s1 = 0, s2 = 0; + std::list<BDS_Face*>::iterator it = ts.begin(); + std::list<BDS_Face*>::iterator ite = ts.end(); + double s1=0,s2=0; double newWorst = 1.0; double oldWorst = 1.0; diff --git a/Mesh/BackgroundMesh.cpp b/Mesh/BackgroundMesh.cpp index 184964f0c0..1e90129e24 100644 --- a/Mesh/BackgroundMesh.cpp +++ b/Mesh/BackgroundMesh.cpp @@ -1,4 +1,4 @@ -// $Id: BackgroundMesh.cpp,v 1.36 2008-02-17 08:48:00 geuzaine Exp $ +// $Id: BackgroundMesh.cpp,v 1.37 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -111,9 +111,9 @@ double LC_MVertex_CURV(GEntity *ge, double U, double V) { double Crv = 0; switch(ge->dim()){ - case 0: - // Crv = max_edge_curvature ( (const GVertex *)ge); - // Crv = std::max(max_surf_curvature ( (const GVertex *)ge),Crv); + case 0: + //Crv = max_edge_curvature ( (const GVertex *)ge); + // Crv = std::max(max_surf_curvature ( (const GVertex *)ge),Crv); Crv = max_surf_curvature ( (const GVertex *)ge); // printf("point %d coucou %g\n",ge->tag(),Crv); break; diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index 2bcd4fabdc..163b139193 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -1,4 +1,4 @@ -// $Id: HighOrder.cpp,v 1.19 2008-02-17 08:48:00 geuzaine Exp $ +// $Id: HighOrder.cpp,v 1.20 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -26,126 +26,11 @@ #include "OS.h" #include "Numeric.h" #include "Context.h" +#include "GmshMatrix.h" +#include "FunctionSpace.h" extern Context_T CTX; -void computeMidPoints(const double *p1, - const double *p2, - const double *t1, - const double *t2, - double *p3){ - // computes the mid point p3 of the second order parametric polynomial curve according to extreme points p1,p2 and tangents t1,t2 - // The tangent directions given in t1 and t2 are the outgoing normals !!! to the curve p1-p2 - double x0 = p1[0]; - double y0 = p1[1]; - double x1 = p2[0]; - double y1 = p2[1]; - double t0x = -t1[0]; - double t0y = -t1[1]; - double t1x = t2[0]; - double t1y = t2[1]; - - //computation of the rotation parameters - double delta_x = x1-x0; - double delta_y = y1-y0; - double L = sqrt(delta_x*delta_x+delta_y*delta_y); - double theta = atan2(delta_y,delta_x); - // double theta = atan(delta_y/delta_x); - // if (delta_x<0) - // theta += M_PI; - double costheta = cos(theta); - double sintheta = sin(theta); - double theta0 = atan2(t0y,t0x)-theta; - double theta1 = atan2(t1y,t1x)-theta; - double tan0 = tan(theta0); - double tan1 = tan(theta1); - delta_x = L; - delta_y = 0; - - - // printf("theta0 = %g theta1 = %g\n",theta0,theta1); - - // computes the 6 coefficients: solving the linear system - // x(t) = a1 t^2 * b1 t + c1 - // y(t) = a2 t^2 * b2 t + c2 - // for t in [0,1] - // with : - // x(t), y(t) on pts 0 and 1 (4 conditions) - // and dy/dx = dy/dt*dt/dx on those 2 pts (2 conditions) - - if (tan0 == tan1) - { - p3[0] = 0.5 * (p1[0]+p2[0]); - p3[1] = 0.5 * (p1[1]+p2[1]); - } - else - { - double b1 = 2*(delta_y-delta_x*tan1)/(tan0-tan1); - double a1 = delta_x-b1; - double b2 = tan0 * b1; - double a2 = delta_y - b2; - double c1 = 0;// in general : x0... - double c2 = 0;// in general : y0... but axis have changed... - - // back to the initial axis - double ax = costheta*a1 - sintheta*a2; - double bx = costheta*b1 - sintheta*b2; - double cx = x0;//costheta*c1 - sintheta*c2 + x0; - double ay = sintheta*a1 + costheta*a2; - double by = sintheta*b1 + costheta*b2; - double cy = y0;//sintheta*c1 + costheta*c2 + y0; - - // computes the mid point (x,y) - double t=0.5; - double tsquare=t*t; - p3[0] = ax*tsquare + bx*t + cx; - p3[1] = ay*tsquare + by*t + cy; - } - return; -} - -void Hermite2D_C1(SPoint3 &p1, SPoint3 &p2, SPoint3 &t1, SPoint3 &t2, - SPoint3 &one_third, SPoint3 &two_third) -{ - double L = sqrt((p1.x()-p2.x())*(p1.x()-p2.x()) + (p1.y()-p2.y()) * (p1.y()-p2.y())); - SVector3 p1p2 (p2,p1); - double theta = atan2(p2.x()-p1.x(),p2.y()-p1.y()); - double theta1 = atan2(t1.x(),t1.y()); - double theta2 = atan2(t2.x(),t2.y()); - double rot[2][2] = - {{cos(theta),-sin(theta)}, - {sin(theta),cos(theta)}}; - - double ts[2] = {1./3.,2./3.}; - SPoint3 *pt[2] = {&one_third,&two_third}; - for (int i=0 ; i < 2; i++){ - const double t = ts[i]; - double H2 = L*t*(t-1)*(t-1); - double H4 = -L*(1-t)*t*t; - double x3 = t * L; - double y3 = H2 * theta1 + H4 * theta2; - // pt[i]->x() = p1.x() + x3 * rot[0][0] + y3 * rot[0][1]; - // pt[i]->y() = p1.y() + x3 * rot[1][0] + y3 * rot[1][1]; - } - - - - // SVector3 tt1 (t1.x(),t1.y(),0); - // SVector3 tt2 (t2.x(),t2.y(),0); - // const double cost1 = p1p2 * tt1; - // const double cost2 = p1p2 * tt2; - // const double ts[2] = { 1./3.,2./3.}; - // for (int i=0 ; i < 2; i++){ - // const double t = ts[i]; - // const double H1 = (2*t+1)*(t-1)*(t-1); - // const double H2 = L*t*(t-1)*(t-1); - // const double H3 = t*t*(-2*t+3); - // const double H4 = -L*(1-t)*t*t; - // if (i == 0)one_third = p1*H1 + t1*H2 + p2*H3 + t2*H4; - // else two_third = p1*H1 + t1*H2 + p2*H3 + t2*H4; - // } -} - // for each pair of vertices (an edge), we build a list of vertices // that are the high order representation of the edge. The ordering of // vertices in the list is supposed to be (by construction) consistent @@ -188,6 +73,191 @@ bool reparamOnFace(MVertex *v, GFace *gf, SPoint2 ¶m) return true; } + +/* + The aim here is to build a polynomial representation + that consist in polynomial segments of equal length +*/ + +static double mylength ( GEdge *ge , int i, double *u){ + // printf("from %22.15E to %22.15E (curve %d)\n",u[i],u[i+1],ge->tag()); + return ge->length ( u[i] , u[i+1], 6 ); +} + +static void myresid ( int N , GEdge *ge , double *u, Double_Vector &r ){ + double L[100]; + for (int i=0;i<N-1;i++)L[i] = mylength(ge,i,u); + for (int i=0;i<N-2;i++)r(i) = L[i+1]-L[i]; + // printf("%22.15E %22.15E %22.15E\n",L[0],L[1],r(0)); +} + +bool computeEquidistantParameters ( GEdge *ge , double u0, double uN , int N, double *u){ +#define NR_PRECISION 1.e-6 +#define NR_MAX_ITER 50 + + const double eps = (uN-u0)*1.e-5; + + // newton algorithm + // N is the total number of points (3 for quadratic, 4 for cubic ...) + // u[0] = u0; + // u[N-1] = uN; + // dist ( ge(u[i]), ge(u[i+1]) ) = dist ( ge(u[i+1]), ge(u[i+2]) ) , i = 0,...,N-2 + + // initialize as equidistant in parameter space + u[0] = u0; + double du = (uN-u0)/(N-1); + for (int i=1 ; i < N ; i++){ + u[i] = u[i-1] + du; + } + // create the tangent matrix + + const int M = N-2; + Double_Matrix J(M,M); + Double_Vector DU(M); + Double_Vector R(M); + Double_Vector Rp(M); + + int iter = 1 ; + + double L[100]; + + // printf("M = %d u = %12.5E %12.5E %12.5E\n",M,u[0],u[1],u[2]); + + while (iter < NR_MAX_ITER){ + + iter++ ; + + myresid ( N, ge, u , R); + + for (int i=0;i<M;i++){ + u[i+1] += eps; + myresid ( N, ge, u, Rp); + for (int j=0;j<M;j++){ + J(i,j) = ( Rp(j) - R(j)) / eps; + } + u[i+1] -= eps; + } + + // printf("J(0,0) = %12.5E\n",J(0,0)); + if (M == 1) + DU(0) = R(0)/J(0,0); + else + J.lu_solve(R,DU); + + for (int i=0;i<M;i++){ + u[i+1] -= DU(i); + } + if (u[1] < u0)break; + if (u[N-1] > uN)break; + + double newt_norm = DU.norm(); + // printf("iter %d u = %12.5E %12.5E %12.5E res %12.5E du %12.5E\n",iter,u[0],u[1],u[2],R(0),DU(0)); + + if (newt_norm < NR_PRECISION)return true; + } + // FAILED, use equidistant in param space + for (int i=1 ; i < N ; i++){ + u[i] = u[i-1] + du; + } + return false; +} + +static double mylength ( GFace *gf , int i, double *u, double *v){ + return gf->length ( SPoint2(u[i],v[i]) , SPoint2(u[i+1],v[i+1]), 4 ); +} + +static void myresid ( int N , GFace *gf , double *u, double *v, Double_Vector &r ){ + double L[100]; + for (int i=0;i<N-1;i++)L[i] = mylength(gf,i,u,v); + for (int i=0;i<N-2;i++)r(i) = L[i+1]-L[i]; + // printf("%22.15E %22.15E %22.15E\n",L[0],L[1],r(0)); +} + +bool computeEquidistantParameters ( GFace *gf , double u0, double uN , double v0, double vN, int N, double *u, double *v){ +#define NR_PRECISION 1.e-6 +#define NR_MAX_ITER 50 + + const double eps = 1.e-4; + + double t[100]; + + // initialize the points by equal subdivision of geodesics + u[0] = u0; + v[0] = v0; + t[0] = 0; + for (int i=1 ; i < N ; i++){ + t[i] = (double)i/(N-1); + SPoint2 p = gf->geodesic ( SPoint2(u0,v0), SPoint2(uN,vN), t[i] ); + u[i] = p.x(); + v[i] = p.y(); + } + u[N] = uN; + v[N] = vN; + t[N] = 1.0; + + // create the tangent matrix + + const int M = N-2; + Double_Matrix J(M,M); + Double_Vector DU(M); + Double_Vector R(M); + Double_Vector Rp(M); + + int iter = 1 ; + + double L[100]; + + // printf("M = %d u = %12.5E %12.5E %12.5E\n",M,u[0],u[1],u[2]); + + while (iter < NR_MAX_ITER){ + + iter++ ; + + myresid ( N, gf, u , v, R); + + for (int i=0;i<M;i++){ + t[i+1] += eps; + double tempu = u[i+1]; + double tempv = v[i+1]; + SPoint2 p = gf->geodesic ( SPoint2(u0,v0), SPoint2(uN,vN), t[i+1] ); + u[i+1] = p.x(); + v[i+1] = p.y(); + myresid ( N, gf, u, v, Rp); + for (int j=0;j<M;j++){ + J(i,j) = ( Rp(j) - R(j)) / eps; + } + t[i+1] -= eps; + u[i+1] = tempu; + v[i+1] = tempv; + } + + // printf("J(0,0) = %12.5E\n",J(0,0)); + if (M == 1) + DU(0) = R(0)/J(0,0); + else + J.lu_solve(R,DU); + + for (int i=0;i<M;i++){ + t[i+1] -= DU(i); + SPoint2 p = gf->geodesic ( SPoint2(u0,v0), SPoint2(uN,vN), t[i+1] ); + u[i+1] = p.x(); + v[i+1] = p.y(); + } + double newt_norm = DU.norm(); + // printf("iter %d u = %12.5E %12.5E %12.5E res %12.5E du %12.5E\n",iter,u[0],u[1],u[2],R(0),DU(0)); + + if (newt_norm < NR_PRECISION)return true; + } + // FAILED, use equidistant in param space + for (int i=1 ; i < N ; i++){ + t[i] = (double)i/(N-1); + SPoint2 p = gf->geodesic ( SPoint2(u0,v0), SPoint2(uN,vN), t[i] ); + u[i] = p.x(); + v[i] = p.y(); + } + return false; +} + bool reparamOnEdge(MVertex *v, GEdge *ge, double ¶m) { param = 1.e6; @@ -206,8 +276,6 @@ bool reparamOnEdge(MVertex *v, GEdge *ge, double ¶m) void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve, edgeContainer &edgeVertices, bool linear, int nPts = 1) { - bool c1 = CTX.mesh.c1_continuity; - for(int i = 0; i < ele->getNumEdges(); i++){ MEdge edge = ele->getEdge(i); std::pair<MVertex*, MVertex*> p(edge.getMinVertex(), edge.getMaxVertex()); @@ -221,51 +289,40 @@ void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve, MVertex *v0 = edge.getVertex(0), *v1 = edge.getVertex(1); double u0 = 0., u1 = 0.; bool reparamOK = true; - if(c1 || (!linear && - ge->geomType() != GEntity::DiscreteCurve && - ge->geomType() != GEntity::BoundaryLayerCurve)){ + if(!linear && ge->geomType() != GEntity::DiscreteCurve && + ge->geomType() != GEntity::BoundaryLayerCurve){ reparamOK &= reparamOnEdge(v0, ge, u0); reparamOK &= reparamOnEdge(v1, ge, u1); } - if(nPts == 1 && c1){ - SVector3 tv1 = ge->firstDer(u0); - SVector3 tv2 = ge->firstDer(u1); - double t1[2] = {-tv1.x(),-tv1.y()}; - double t2[2] = { tv2.x(), tv2.y()}; - double p1[2] = { v0->x(), v0->y()}; - double p2[2] = { v1->x(), v1->y()}; - double p3[2]; - computeMidPoints(p1,p2,t1,t2,p3); - MVertex *hv = new MVertex(p3[0],p3[1],0); - ge->mesh_vertices.push_back(hv); - ve.push_back(hv); - edgeVertices[p].push_back(hv); - } - else{ - std::vector<MVertex*> temp; - for(int j = 0; j < nPts; j++){ - const double t = (double)(j + 1)/(nPts + 1); - double uc = (1. - t) * u0 + t * u1; - MVertex *v; - if(!reparamOK || linear || ge->geomType() == GEntity::DiscreteCurve || - uc < u0 || uc > u1){ // need to treat periodic curves properly! - SPoint3 pc = edge.interpolate(t); - v = new MVertex(pc.x(), pc.y(), pc.z(), ge); - v->setParameter (0,t); - } - else { - GPoint pc = ge->point(uc); - v = new MEdgeVertex(pc.x(), pc.y(), pc.z(), ge, uc); - } - temp.push_back(v); - ge->mesh_vertices.push_back(v); - ve.push_back(v); + std::vector<MVertex*> temp; + + double US[100]; + if(reparamOK && !linear && ge->geomType() != GEntity::DiscreteCurve){ + computeEquidistantParameters ( ge , u0, u1 , nPts+2, US); + } + + for(int j = 0; j < nPts; j++){ + const double t = (double)(j + 1)/(nPts + 1); + double uc = (1. - t) * u0 + t * u1; + MVertex *v; + if(!reparamOK || linear || ge->geomType() == GEntity::DiscreteCurve || + uc < u0 || uc > u1){ // need to treat periodic curves properly! + SPoint3 pc = edge.interpolate(t); + v = new MVertex(pc.x(), pc.y(), pc.z(), ge); + v->setParameter (0,t); } - if(edge.getVertex(0) == edge.getMinVertex()) - edgeVertices[p].insert(edgeVertices[p].end(), temp.begin(), temp.end()); - else - edgeVertices[p].insert(edgeVertices[p].end(), temp.rbegin(), temp.rend()); + else { + GPoint pc = ge->point(US[j+1]); + v = new MEdgeVertex(pc.x(), pc.y(), pc.z(), ge, US[j+1]); + } + temp.push_back(v); + ge->mesh_vertices.push_back(v); + ve.push_back(v); } + if(edge.getVertex(0) == edge.getMinVertex()) + edgeVertices[p].insert(edgeVertices[p].end(), temp.begin(), temp.end()); + else + edgeVertices[p].insert(edgeVertices[p].end(), temp.rbegin(), temp.rend()); } } } @@ -293,6 +350,12 @@ void getEdgeVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &ve, reparamOK &= reparamOnFace(v1, gf, p1); } std::vector<MVertex*> temp; + + double US[100],VS[100]; + if(reparamOK && !linear && gf->geomType() != GEntity::DiscreteCurve){ + computeEquidistantParameters (gf , p0[0], p1[0], p0[1], p1[1], nPts+2, US,VS); + } + for(int j = 0; j < nPts; j++){ const double t = (double)(j + 1) / (nPts + 1); MVertex *v; @@ -303,8 +366,8 @@ void getEdgeVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &ve, else{ double uc = (1. - t) * p0[0] + t * p1[0]; double vc = (1. - t) * p0[1] + t * p1[1]; - GPoint pc = gf->point(uc, vc); - v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc); + GPoint pc = gf->point(US[j+1], VS[j+1]); + v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, US[j+1], VS[j+1]); } temp.push_back(v); gf->mesh_vertices.push_back(v); @@ -351,6 +414,25 @@ void getEdgeVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &ve, void getFaceVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &vf, faceContainer &faceVertices, bool linear, int nPts = 1) { + Double_Matrix points; + int start; + switch (nPts){ + case 2 : + points= gmshFunctionSpaces::find(MSH_TRI_10).points; + start = 9; + break; + case 3 : + points= gmshFunctionSpaces::find(MSH_TRI_15).points; + start = 12; + break; + case 4 : + points= gmshFunctionSpaces::find(MSH_TRI_21).points; + start = 15; + break; + default : + throw; + } + for(int i = 0; i < ele->getNumFaces(); i++){ MFace face = ele->getFace(i); std::vector<MVertex*> p; @@ -364,34 +446,36 @@ void getFaceVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &vf, if(!linear && gf->geomType() != GEntity::DiscreteSurface && gf->geomType() != GEntity::BoundaryLayerSurface){ - reparamOK &= reparamOnFace(p[0], gf, p0); - reparamOK &= reparamOnFace(p[1], gf, p1); - reparamOK &= reparamOnFace(p[2], gf, p2); + reparamOK &= reparamOnFace(ele->getVertex(0), gf, p0); + reparamOK &= reparamOnFace(ele->getVertex(1), gf, p1); + reparamOK &= reparamOnFace(ele->getVertex(2), gf, p2); if(face.getNumVertices() == 4) - reparamOK &= reparamOnFace(p[3], gf, p3); + reparamOK &= reparamOnFace(ele->getVertex(3), gf, p3); } if(face.getNumVertices() == 3){ // triangles - for(int j = 0; j < nPts; j++){ - for(int k = 0 ; k < nPts - j - 1; k++){ - MVertex *v; - double t1 = (double)(j + 1) / (nPts + 1); - double t2 = (double)(k + 1) / (nPts + 1); - if(!reparamOK || linear || gf->geomType() == GEntity::DiscreteSurface){ - SPoint3 pc = face.interpolate(t1, t2); - v = new MVertex(pc.x(), pc.y(), pc.z(), gf); - } - else{ - double uc = (1. - t1 - t2) * p0[0] + t1 * p1[0] + t2 * p2[0]; - double vc = (1. - t1 - t2) * p0[1] + t1 * p1[1] + t2 * p2[1]; - GPoint pc = gf->point(uc, vc); - v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc); - v->setParameter (0,uc); - v->setParameter (1,vc); - } - faceVertices[p].push_back(v); - gf->mesh_vertices.push_back(v); - vf.push_back(v); + // for(int j = 0; j < nPts; j++){ + // for(int k = 0 ; k < nPts - j - 1; k++){ + for(int k = start ; k < points.size1() ; k++){ + MVertex *v; + // double t1 = (double)(j + 1) / (nPts + 1); + // double t2 = (double)(k + 1) / (nPts + 1); + const double t1 = points(k,0); + const double t2 = points(k,1); + if(!reparamOK || linear || gf->geomType() == GEntity::DiscreteSurface){ + SPoint3 pc = face.interpolate(t1, t2); + v = new MVertex(pc.x(), pc.y(), pc.z(), gf); } + else{ + double uc = (1. - t1 - t2) * p0[0] + t1 * p1[0] + t2 * p2[0]; + double vc = (1. - t1 - t2) * p0[1] + t1 * p1[1] + t2 * p2[1]; + GPoint pc = gf->point(uc, vc); + v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc); + v->setParameter (0,uc); + v->setParameter (1,vc); + } + faceVertices[p].push_back(v); + gf->mesh_vertices.push_back(v); + vf.push_back(v); } } else if(face.getNumVertices() == 4){ // quadrangles @@ -718,16 +802,18 @@ FILE *MYFILE = 0; void getMinMaxJac (MTriangle *t, double &minJ, double &maxJ) { double mat[2][3]; - int n = 10; + int n = 3; t->jac(1,0,0,0,mat); double v1[3] = {mat[0][0],mat[0][1],mat[0][2]}; double v2[3] = {mat[1][0],mat[1][1],mat[1][2]}; double normal1[3],normal[3]; prodve(v1,v2,normal1); - norme(normal1); - double sign = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; - double invsign = 1./(sign); + // norme(normal1); + double nn = sqrt(DSQR(normal1[0]) + DSQR(normal1[1]) + DSQR(normal1[2])) ; + + // double sign = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; + // double invsign = 1./(sign); for(int i = 0; i < n; i++){ for(int k = 0; k < n - i; k++){ @@ -738,13 +824,13 @@ void getMinMaxJac (MTriangle *t, double &minJ, double &maxJ) double v1b[3] = {mat[0][0],mat[0][1],mat[0][2]}; double v2b[3] = {mat[1][0],mat[1][1],mat[1][2]}; prodve(v1b,v2b,normal); - //double sign; prosca(normal1,normal,&sign); - //double det = norm3(normal) * (sign>0?1.:-1.); - double det = invsign*(mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]) * (sign>0?1.:-1.); + double sign; prosca(normal1,normal,&sign); + double det = norm3(normal) * (sign>0?1.:-1.) / nn; + //double det = invsign*(mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]) * (sign>0?1.:-1.); // double det2 = 1./det1; // double det = std::max(det1,det2); // if(MYFILE)fprintf(MYFILE,"SP(%g,%g,%g){%g};\n",pt.x(),pt.y(),pt.z(),det); - minJ = std::min(det, minJ); + minJ = std::min(1./det,std::min(det, minJ)); maxJ = std::max(det, maxJ); } } @@ -841,9 +927,55 @@ void deriv_smoothing_objective_function_HighOrderN(double *uv, double *dF, doubl } } +void optimizeNodeLocations ( GFace *gf, smoothVertexDataHON &vdN , double eps = .2){ + + if(!vdN.v.size())return; + double uv[20]; + for (unsigned int i = 0; i < vdN.v.size(); i++){ + if (!vdN.v[i]->getParameter (0,uv[2*i]))throw; + if (!vdN.v[i]->getParameter (1,uv[2*i+1]))throw; + } + + double F = -smooth_obj_HighOrderN(uv, &vdN); + if (F < eps){ + double val; + minimize_N ( 2*vdN.v.size(), + smooth_obj_HighOrderN, + deriv_smoothing_objective_function_HighOrderN, + &vdN, 1, uv,val); + double Fafter = -smooth_obj_HighOrderN(uv, &vdN); + printf("%12.5E %12.5E\n",F,Fafter); + if (F < Fafter){ + for (unsigned int i = 0; i < vdN.v.size(); i++){ + vdN.v[i]->setParameter ( 0,uv[2*i]); + vdN.v[i]->setParameter ( 1,uv[2*i+1]); + GPoint gp = gf->point(uv[2*i],uv[2*i+1]); + vdN.v[i]->x() = gp.x(); + vdN.v[i]->y() = gp.y(); + vdN.v[i]->z() = gp.z(); + } + } + } +} + +void optimizeHighOrderMeshInternalNodes(GFace *gf){ + + for(unsigned int i = 0; i < gf->triangles.size(); i++){ + MTriangle *t = gf->triangles[i]; + smoothVertexDataHON vdN; + int start = t->getNumVertices() - t->getNumFaceVertices(); + for (int j=start;j<t->getNumVertices();j++) + vdN.v.push_back(t->getVertex(j)); + vdN.gf = gf; + vdN.ts.push_back(t); + optimizeNodeLocations ( gf, vdN , .9); + } + +} -bool optimizeHighOrderMesh(GModel *modl, GFace *gf, edgeContainer &edgeVertices){ + +bool optimizeHighOrderMesh(GFace *gf, edgeContainer &edgeVertices){ v2t_cont adjv; buildVertexToTriangle ( gf->triangles , adjv ); @@ -858,7 +990,44 @@ bool optimizeHighOrderMesh(GModel *modl, GFace *gf, edgeContainer &edgeVertices) e2t[p].push_back(t); } } + /* + v2t_cont :: iterator it = adjv.begin(); + while (it != adjv.end()){ + MVertex *ver= it->first; + GEntity *ge = ver->onWhat(); + if (ge->dim() == 2){ + double initu,initv; + ver->getParameter ( 0,initu); + ver->getParameter ( 1,initv); + + smoothVertexDataHON vdN; + vdN.ts = it->second; + for (int i=0;i<vdN.ts.size();i++){ + MTriangle *t = vdN.ts[i]; + } + + vdN.v = e; + vdN.gf = gf; + double val; + double F = -smooth_obj_HighOrder(initu,initv, &vd); + if (F < .2){ + minimize_2 ( smooth_obj_HighOrder, deriv_smoothing_objective_function_HighOrder, &vd, 1, initu,initv,val); + double Fafter = -smooth_obj_HighOrder(initu,initv, &vd); + if (F < Fafter){ + success = true; + ver->setParameter(0,initu); + ver->setParameter(1,initv); + GPoint gp = gf->point(initu,initv); + ver->x() = gp.x(); + ver->y() = gp.y(); + ver->z() = gp.z(); + } + } + } + ++it; + } + */ bool success = false; for(edge2tris::iterator it = e2t.begin(); it != e2t.end(); ++it){ @@ -875,110 +1044,18 @@ bool optimizeHighOrderMesh(GModel *modl, GFace *gf, edgeContainer &edgeVertices) else e = edgeVertices[std::make_pair<MVertex*, MVertex*> (n4, n2)]; - if (e.size() == 1){ - double initu,initv; - e[0]->getParameter ( 0,initu); - e[0]->getParameter ( 1,initv); - smoothVertexDataHO vd; - vd.v = e[0]; - vd.gf = gf; - vd.ts.push_back(t1); - vd.ts.push_back(t2); - double val; - minimize_2 ( smooth_obj_HighOrder, deriv_smoothing_objective_function_HighOrder, &vd, 1, initu,initv,val); - vd.v->setParameter(0,initu); - vd.v->setParameter(1,initv); - GPoint gp = gf->point(initu,initv); - vd.v->x() = gp.x(); - vd.v->y() = gp.y(); - vd.v->z() = gp.z(); - } - else if (e.size() < 5){ - double uv[20]; - for (unsigned int i = 0; i < e.size(); i++){ - if (!e[i]->getParameter (0,uv[2*i]))throw; - if (!e[i]->getParameter (1,uv[2*i+1]))throw; - } + if (e.size() < 5){ smoothVertexDataHON vdN; vdN.v = e; vdN.gf = gf; vdN.ts.clear(); vdN.ts.push_back(t1); - vdN.ts.push_back(t2); - double val; - double F = -smooth_obj_HighOrderN(uv, &vdN); - // printf("F = %12.5E %p %p\n",F,t1,t2); - if (F < .2){ - minimize_N ( 2*e.size(), smooth_obj_HighOrderN, deriv_smoothing_objective_function_HighOrderN, &vdN, 1, uv,val); - double Fafter = -smooth_obj_HighOrderN(uv, &vdN); - if (F < Fafter){ - // printf("found a pattern with f = %22.15E -> %22.15E (%22.15E) %d points\n",F,Fafter,val,e.size()); - success = true; -// checkHighOrderTriangles(modl); -// double minJ=1.e22,maxJ=-1.e22; -// getMinMaxJac (t1, minJ, maxJ); -// printf("AVANT 1 minJ %22.15E maxJ %22.15E\n",minJ,maxJ); -// minJ=1.e22;maxJ=-1.e22; -// getMinMaxJac (t2, minJ, maxJ); -// printf("AVANT 2 minJ %22.15E maxJ %22.15E\n",minJ,maxJ); -// checkHighOrderTriangles(modl); - - for (unsigned int i = 0; i < vdN.v.size(); i++){ - vdN.v[i]->setParameter ( 0,uv[2*i]); - vdN.v[i]->setParameter ( 1,uv[2*i+1]); - GPoint gp = gf->point(uv[2*i],uv[2*i+1]); - vdN.v[i]->x() = gp.x(); - vdN.v[i]->y() = gp.y(); - vdN.v[i]->z() = gp.z(); - } -// minJ=1.e22;maxJ=-1.e22; -// getMinMaxJac (t1, minJ, maxJ); -// printf("APRES 1 minJ %22.15E maxJ %22.15E\n",minJ,maxJ); -// minJ=1.e22;maxJ=-1.e22; -// getMinMaxJac (t2, minJ, maxJ); -// printf("APRES 2 minJ %22.15E maxJ %22.15E\n",minJ,maxJ); -// checkHighOrderTriangles(modl); -// return true; - } - } + vdN.ts.push_back(t2); + optimizeNodeLocations ( gf, vdN ); } } } - while (1){ - v2t_cont :: iterator it = adjv.begin(); - while (it != adjv.end()){ - MVertex *ver= it->first; - GEntity *ge = ver->onWhat(); - if (ge->dim() == 2){ - double initu,initv; - ver->getParameter ( 0,initu); - ver->getParameter ( 1,initv); - smoothVertexDataHO vd; - vd.v = ver; - vd.gf = gf; - vd.ts = it->second; - double val; - - double F = -smooth_obj_HighOrder(initu,initv, &vd); - if (F < .2){ - minimize_2 ( smooth_obj_HighOrder, deriv_smoothing_objective_function_HighOrder, &vd, 1, initu,initv,val); - double Fafter = -smooth_obj_HighOrder(initu,initv, &vd); - if (F < Fafter){ - success = true; - ver->setParameter(0,initu); - ver->setParameter(1,initv); - GPoint gp = gf->point(initu,initv); - ver->x() = gp.x(); - ver->y() = gp.y(); - ver->z() = gp.z(); - } - } - } - ++it; - } - break; - } return success; } @@ -1034,7 +1111,6 @@ bool smoothInternalEdges(GFace *gf, edgeContainer &edgeVertices) if((!straightLine(e1, n1, n2) || !straightLine(e2, n2, n3) || !straightLine(e3, n3, n4) || !straightLine(e4, n4, n1))){ - double Unew[NBST][10],Vnew[NBST][10]; double Xold[10],Yold[10],Zold[10]; @@ -1152,6 +1228,65 @@ void checkHighOrderTriangles(GModel *m) else Msg(WARNING, "Jacobian Range (%12.5E,%12.5E)",minJGlob, maxJGlob); } +void printJacobians(GModel *m, const char *nm) +{ + const int n = 22; + double D[n][n]; + double X[n][n]; + double Y[n][n]; + double Z[n][n]; + + FILE *f = fopen(nm,"w"); + fprintf(f,"View \"\"{\n"); + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){ + double minJ = 1.e22; + double maxJ = -1.e22; + for(unsigned int i = 0; i < (*it)->triangles.size(); i++){ + MTriangle *t = (*it)->triangles[i]; + double mat[2][3]; + t->jac(1,0,0,0,mat); + double dj0 = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; + + for(int i = 0; i < n; i++){ + for(int k = 0; k < n - i; k++){ + SPoint3 pt; + t->jac((double)i / (n - 1), (double)k / (n - 1), mat); + t->pnt((double)i / (n - 1), (double)k / (n - 1), pt); + const double det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; + D[i][k] = std::min(det/dj0,dj0/det); + X[i][k] = pt.x(); + Y[i][k] = pt.y(); + Z[i][k] = pt.z(); + } + } + for(int i = 0; i < n -1; i++){ + for(int k = 0; k < n - i -1; k++){ + fprintf(f,"ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%22.15E,%22.15E,%22.15E};\n", + X[i][k],Y[i][k],Z[i][k], + X[i+1][k],Y[i+1][k],Z[i+1][k], + X[i][k+1],Y[i][k+1],Z[i][k+1], + D[i][k], + D[i+1][k], + D[i][k+1]); + if (i != n-2 && k != n - i -2) + fprintf(f,"ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%22.15E,%22.15E,%22.15E};\n", + X[i+1][k],Y[i+1][k],Z[i+1][k], + X[i+1][k+1],Y[i+1][k+1],Z[i+1][k+1], + X[i][k+1],Y[i][k+1],Z[i][k+1], + D[i+1][k], + D[i+1][k+1], + D[i][k+1]); + } + } + } + + + + } + fprintf(f,"};\n"); + fclose(f); +} + void SetOrderN(GModel *m, int order, bool linear, bool incomplete) { // replace all the elements in the mesh with second order elements @@ -1187,23 +1322,26 @@ void SetOrderN(GModel *m, int order, bool linear, bool incomplete) for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) setHighOrder(*it, edgeVertices, faceVertices, linear, incomplete, nPts); + printJacobians(m,"detjIni.pos"); + if(CTX.mesh.smooth_internal_edges){ checkHighOrderTriangles(m); - for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){ - Msg(INFO, "Smoothing internal Edges in Surface %d",(*it)->tag()); - for (int i = 0; i < 10; i++) { - if (!smoothInternalEdges(*it, edgeVertices))break; + for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){ + Msg(INFO, "Smoothing internal Edges in Surface %d",(*it)->tag()); + for (int i = 0; i < 10; i++) { + if (!smoothInternalEdges(*it, edgeVertices))break; checkHighOrderTriangles(m); - } - } + } + optimizeHighOrderMeshInternalNodes(*it); + } for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){ for (int i=0;i<CTX.mesh.nb_smoothing;i++){ - if(!optimizeHighOrderMesh(m,*it, edgeVertices))break; + if(!optimizeHighOrderMesh(*it, edgeVertices))break; checkHighOrderTriangles(m); } } } - + printJacobians(m,"detjOpt.pos"); // MYFILE = fopen("jacs.pos","w"); // fprintf(MYFILE,"View \"\"{\n"); checkHighOrderTriangles(m); diff --git a/Mesh/meshGFaceBDS.cpp b/Mesh/meshGFaceBDS.cpp index 94e1c15022..708b5fc2bb 100644 --- a/Mesh/meshGFaceBDS.cpp +++ b/Mesh/meshGFaceBDS.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFaceBDS.cpp,v 1.5 2008-02-17 08:48:01 geuzaine Exp $ +// $Id: meshGFaceBDS.cpp,v 1.6 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -399,7 +399,7 @@ void gmshDelaunayizeBDS ( GFace *gf, BDS_Mesh &m, int &nb_swap ) } } -void splitEdgePass ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split) +void splitEdgePassUnsorted ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split) { int NN1 = m.edges.size(); int NN2 = 0; @@ -410,8 +410,8 @@ void splitEdgePass ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split) double lone = NewGetLc ( *it,gf,m.scalingU,m.scalingV); if ((*it)->numfaces() == 2 && (lone > MAXE_)){ - const double coord = 0.5; - //const double coord = computeEdgeMiddleCoord((*it)->p1,(*it)->p2,gf,m.scalingU,m.scalingV); + //const double coord = 0.5; + const double coord = computeEdgeMiddleCoord((*it)->p1,(*it)->p2,gf,m.scalingU,m.scalingV); BDS_Point *mid ; mid = m.add_point(++m.MAXPOINTNUMBER, coord * (*it)->p1->u + (1 - coord) * (*it)->p2->u, @@ -430,11 +430,84 @@ void splitEdgePass ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split) } } +void splitEdgePass ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split) +{ + std::list<BDS_Edge*>::iterator it = m.edges.begin(); + std::vector<std::pair<double, BDS_Edge*> > edges; + + while (it != m.edges.end()){ + if(!(*it)->deleted && (*it)->numfaces() == 2){ + double lone = NewGetLc(*it, gf,m.scalingU,m.scalingV); + if(lone > MAXE_){ + edges.push_back (std::make_pair (-lone, *it) ); + } + } + ++it; + } + + std::sort(edges.begin(),edges.end()); + + for (int i=0;i<edges.size();++i){ + BDS_Edge *e = edges[i].second; + if (!e->deleted){ + const double coord = 0.5; + //const double coord = computeEdgeMiddleCoord(e->p1,e->p2,gf,m.scalingU,m.scalingV); + BDS_Point *mid ; + mid = m.add_point(++m.MAXPOINTNUMBER, + coord * e->p1->u + (1 - coord) * e->p2->u, + coord * e->p1->v + (1 - coord) * e->p2->v,gf); + + mid->lcBGM() = BGM_MeshSize(gf, + (coord * e->p1->u + (1 - coord) * e->p2->u)*m.scalingU, + (coord * e->p1->v + (1 - coord) * e->p2->v)*m.scalingV, + mid->X,mid->Y,mid->Z); + mid->lc() = 0.5 * ( e->p1->lc() + e->p2->lc() ); + if(!m.split_edge ( e, mid )) m.del_point(mid); + else nb_split++; + } + } +} + + void collapseEdgePass(GFace *gf, BDS_Mesh &m, double MINE_, int MAXNP, int &nb_collaps) +{ + std::list<BDS_Edge*>::iterator it = m.edges.begin(); + std::vector<std::pair<double, BDS_Edge*> > edges; + + while (it != m.edges.end()){ + if(!(*it)->deleted && (*it)->numfaces() == 2){ + double lone = NewGetLc(*it, gf,m.scalingU,m.scalingV); + if(lone < MINE_){ + edges.push_back (std::make_pair (lone, *it) ); + } + } + ++it; + } + + std::sort(edges.begin(),edges.end()); + + for (int i=0;i<edges.size();i++){ + BDS_Edge *e = edges[i].second; + // printf("%12.5E\n",edges[i].first); + if(!e->deleted){ + bool res = false; + if(e->p1->iD > MAXNP) + res = m.collapse_edge_parametric(e,e->p1); + else if(e->p2->iD > MAXNP) + res = m.collapse_edge_parametric(e,e->p2); + if(res) + nb_collaps++; + } + } +} + + +void collapseEdgePassUnSorted(GFace *gf, BDS_Mesh &m, double MINE_, int MAXNP, int &nb_collaps) { int NN1 = m.edges.size(); int NN2 = 0; std::list<BDS_Edge*>::iterator it = m.edges.begin(); + while (1){ if(NN2++ >= NN1) break; @@ -454,8 +527,10 @@ void collapseEdgePass(GFace *gf, BDS_Mesh &m, double MINE_, int MAXNP, int &nb_c } } + void smoothVertexPass(GFace *gf, BDS_Mesh &m, int &nb_smooth, bool q) { + // return; std::set<BDS_Point*,PointLessThan>::iterator itp = m.points.begin(); while(itp != m.points.end()){ if(m.smooth_point_centroid(*itp, gf,q)) @@ -543,7 +618,7 @@ void gmshRefineMeshBDS (GFace *gf, double t3 = Cpu(); collapseEdgePass ( gf, m, minE , MAXNP, nb_collaps); double t4 = Cpu(); - // swapEdgePass ( gf, m, nb_swap); + // swapEdgePass ( gf, m, nb_swap); double t5 = Cpu(); smoothVertexPass ( gf, m, nb_smooth,false); double t6 = Cpu(); @@ -764,10 +839,10 @@ void gmshCollapseSmallEdges (GModel &gm){ } BDS_Mesh *pm = gmsh2BDS (faces); outputScalarField(pm->triangles,"all.pos",0); - for (GModel::eiter eit = gm.firstEdge(); eit != gm.lastEdge(); eit++){ - } - + } + + delete pm; } diff --git a/Mesh/qualityMeasures.cpp b/Mesh/qualityMeasures.cpp index 52645af783..68aacd7806 100644 --- a/Mesh/qualityMeasures.cpp +++ b/Mesh/qualityMeasures.cpp @@ -1,4 +1,4 @@ -// $Id: qualityMeasures.cpp,v 1.7 2008-02-17 08:48:01 geuzaine Exp $ +// $Id: qualityMeasures.cpp,v 1.8 2008-02-21 09:45:15 remacle Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -79,6 +79,18 @@ double qmTriangle(const double &xa, const double &ya, const double &za, else quality = 2 * (2*sina*sinb*sinc/(sina + sinb + sinc) ); } break; + // condition number + case QMTRI_COND: + { + double a [3] = {xc-xa,yc-ya,zc-za}; + double b [3] = {xb-xa,yb-ya,zb-za}; + double c [3] ; prodve(a,b,c); norme(c); + double A[3][3] = { a[0] , b[0] , c[0] , + a[1] , b[1] , c[1] , + a[2] , b[2] , c[2] }; + quality = -1; + } + break; default: throw; } diff --git a/Mesh/qualityMeasures.h b/Mesh/qualityMeasures.h index 71c56d093e..1443288a4d 100644 --- a/Mesh/qualityMeasures.h +++ b/Mesh/qualityMeasures.h @@ -25,8 +25,8 @@ class BDS_Face; class MVertex; class MTriangle; class MTetrahedron; -enum gmshQualityMeasure4Triangle {QMTRI_RHO}; -enum gmshQualityMeasure4Tet {QMTET_1,QMTET_2,QMTET_3,QMTET_ONE}; +enum gmshQualityMeasure4Triangle {QMTRI_RHO,QMTRI_COND}; +enum gmshQualityMeasure4Tet {QMTET_1,QMTET_2,QMTET_3,QMTET_ONE,QMTET_COND}; double qmTriangle(MTriangle *f, const gmshQualityMeasure4Triangle &cr); double qmTriangle(BDS_Face *f, const gmshQualityMeasure4Triangle &cr); diff --git a/Numeric/FunctionSpace.cpp b/Numeric/FunctionSpace.cpp new file mode 100644 index 0000000000..9dc7527aa6 --- /dev/null +++ b/Numeric/FunctionSpace.cpp @@ -0,0 +1,559 @@ +#include <cmath> +#include "FunctionSpace.h" +#include "GmshDefines.h" + +Double_Matrix generatePascalTriangle(int order) { + + Double_Matrix monomials((order+1)*(order+2)/2,2); + int index = 0; + for (int i=0;i<=order;i++) { + for (int j=0;j<=i;j++) { + monomials(index,0) = i - j; + monomials(index,1) = j; + index++; + } + } + return monomials; +} + +// ----------------------------------------------------------------------------- +/*! generate the exterior hull of the Pascal triangle for Serendipity element */ +// ----------------------------------------------------------------------------- + +Double_Matrix generatePascalSerendipityTriangle(int order) { + + Double_Matrix monomials(3 * order,2); + + monomials(0,0) = 0; + monomials(0,1) = 0; + + int index = 1; + for (int i=1;i<=order;i++) { + if (i==order) { + for (int j=0;j<=i;j++) { + monomials(index,0) = i - j; + monomials(index,1) = j; + index++; + } + } + else { + monomials(index,0) = i; + monomials(index,1) = 0; + index++; + + monomials(index,0) = 0; + monomials(index,1) = i; + index++; + } + } + return monomials; +} + + +// ----------------------------------------------------------------------------- +/*!\brief generate the monomials subspace of all monomials of order exactly == p */ +// ----------------------------------------------------------------------------- + +Double_Matrix generateMonomialSubspace(int dim,int p) { + + Double_Matrix monomials; + + switch (dim) { + case 1: + monomials = Double_Matrix(1,1); + monomials(0,0) = p; + break; + case 2: + monomials = Double_Matrix(p+1,2); + for (int k=0;k<=p;k++) { + monomials(k,0) = p - k; + monomials(k,1) = k; + } + break; + case 3: + monomials = Double_Matrix((p+1)*(p+2)/2,3); + int index = 0; + for (int i=0;i<=p;i++) { + for (int k=0;k<=p-i;k++) { + monomials(index,0) = p - i - k; + monomials(index,1) = k; + monomials(index,2) = i; + index++; + } + } + break; + } + return monomials; +} + + +// ----------------------------------------------------------------------------- +/*!\brief generate external hull of the Pascal tetrahedron */ +// ----------------------------------------------------------------------------- + +Double_Matrix generatePascalSerendipityTetrahedron(int order) { + + int nbMonomials = 4 + 6 * std::max(0,order-1) + 4 * std::max(0,(order-2)*(order-1)/2); + Double_Matrix monomials(nbMonomials,3); + + // order 0 + + monomials.set_all(0); + + monomials(0,0) = 0; + monomials(0,1) = 0; + monomials(0,2) = 0; + + int index = 1; + for (int p=1;p<order;p++) { + for (int i=0;i<3;i++) { + int j = (i+1)%3; + int k = (i+2)%3; + for (int ii=0;ii<p;ii++) { + monomials(index,i) = p - ii; + monomials(index,j) = ii; + monomials(index,k) = 0; + index++; + } + } + } + Double_Matrix monomialsMaxOrder = generateMonomialSubspace(3,order); + int nbMaxOrder = monomialsMaxOrder.size1(); + + Double_Matrix(monomials.touchSubmatrix(index,nbMaxOrder,0,3)).memcpy(monomialsMaxOrder); + return monomials; +} + +// ----------------------------------------------------------------------------- +/*!\brief generate Pascal tetrahedron */ +// ----------------------------------------------------------------------------- + + +Double_Matrix generatePascalTetrahedron(int order) { + + int nbMonomials = (order+1)*(order+2)*(order+3) / 6; + + Double_Matrix monomials(nbMonomials,3); + + int index = 0; + for (int p=0;p<=order;p++) { + Double_Matrix monOrder = generateMonomialSubspace(3,p); + int nb = monOrder.size1(); + Double_Matrix(monomials.touchSubmatrix(index,nb,0,3)).memcpy(monOrder); + index += nb; + } + + return monomials; +} + + + +int nbdoftriangle(int order) {return (order+1)*(order+2)/2;} +int nbdoftriangleserendip(int order) {return 3 * order;} + +void nodepositionface0(int order, double *u, double *v, double *w){ + + int ndofT = nbdoftriangle(order); + if (order ==0) {u[0]=0.;v[0]=0.; return;} + + u[0]= 0.; v[0]= 0.; w[0] = 0.; + u[1]= order; v[1]= 0; w[1] = 0.; + u[2]= 0.; v[2]= order; w[2] = 0.; + // edges + for (int k=0; k< (order-1); k++){ + u[3+k] = k+1; v[3+k]=0.; w[3+k] = 0.; + u[3+order-1+k] = order -1 -k ; v [3+order-1+k] = k+1; w[3+order-1+k] = 0.; + u[3+2*(order-1)+k] = 0. ; v [3+2*(order-1)+k] = order -1 -k; w [3+2*(order-1)+k] = 0.; + } + if (order >2){ + int nbdoftemp = nbdoftriangle(order-3); + nodepositionface0(order-3,&u[3+3*(order-1)], &v[3+3*(order-1)], &w[3+3*(order-1)]); + for (int k=0; k< nbdoftemp; k++){ + u[3+k+3*(order-1)] = u[3+k+3*(order-1)]*(order-3)+1.; + v[3+k+3*(order-1)] = v[3+k+3*(order-1)]*(order-3)+1.; + w[3+k+3*(order-1)] = w[3+k+3*(order-1)]*(order-3); + } + } + for (int k=0; k< ndofT; k++){ + u[k] = u[k]/order; + v[k] = v[k]/order; + w[k] = w[k]/order; + } + return; +}; + + +// ----------------------------------------------------------------------------- +void nodepositionface1(int order, double *u, double *v, double *w){ + int ndofT = nbdoftriangle(order); + if (order ==0) {u[0]=0.;v[0]=0.; return;} + + u[0]= 0.; v[0]= 0.; w[0] = 0.; + u[1]= order; v[1]= 0; w[1] = 0.; + u[2]= 0.; v[2]= 0.; w[2] = order; + // edges + for (int k=0; k< (order-1); k++){ + u[3+k] = k+1; v[3+k]=0.; w[3+k] = 0.; + u[3+order-1+k] = order -1 -k; v[3+order-1+k] = 0.; w[3+order-1+k] = k+1; + u[3+2*(order-1)+k] = 0. ; v[3+2*(order-1)+k] = 0.; w[3+2*(order-1)+k] = order -1 -k; + } + if (order >2){ + int nbdoftemp = nbdoftriangle(order-3); + nodepositionface1(order-3,&u[3+3*(order-1)], &v[3+3*(order-1)], &w[3+3*(order-1)]); + for (int k=0; k< nbdoftemp; k++){ + u[3+k+3*(order-1)] = u[3+k+3*(order-1)]*(order-3)+1.; + v[3+k+3*(order-1)] = v[3+k+3*(order-1)]*(order-3); + w[3+k+3*(order-1)] = w[3+k+3*(order-1)]*(order-3)+1.; + } + } + for (int k=0; k< ndofT; k++){ + u[k] = u[k]/order; + v[k] = v[k]/order; + w[k] = w[k]/order; + } + return; +}; + +// ----------------------------------------------------------------------------- +void nodepositionface2(int order, double *u, double *v, double *w){ + int ndofT = nbdoftriangle(order); + if (order ==0) {u[0]=0.;v[0]=0.; return;} + + u[0]= order; v[0]= 0.; w[0] = 0.; + u[1]= 0.; v[1]= order; w[1] = 0.; + u[2]= 0.; v[2]= 0.; w[2] = order; + // edges + for (int k=0; k< (order-1); k++){ + u[3+k] = order -1 -k; v[3+k]= k+1; w[3+k] = 0.; + u[3+order-1+k] = 0.; v[3+order-1+k] = order -1 -k; w[3+order-1+k] = k+1; + u[3+2*(order-1)+k] = k+1; v[3+2*(order-1)+k] = 0.; w[3+2*(order-1)+k] = order -1 -k; + } + if (order >2){ + int nbdoftemp = nbdoftriangle(order-3); + nodepositionface2(order-3,&u[3+3*(order-1)], &v[3+3*(order-1)], &w[3+3*(order-1)]); + for (int k=0; k< nbdoftemp; k++){ + u[3+k+3*(order-1)] = u[3+k+3*(order-1)]*(order-3)+1.; + v[3+k+3*(order-1)] = v[3+k+3*(order-1)]*(order-3)+1.; + w[3+k+3*(order-1)] = w[3+k+3*(order-1)]*(order-3)+1.; + } + } + for (int k=0; k< ndofT; k++){ + u[k] = u[k]/order; + v[k] = v[k]/order; + w[k] = w[k]/order; + } + return; +}; + +// ----------------------------------------------------------------------------- +void nodepositionface3(int order, double *u, double *v, double *w){ + int ndofT = nbdoftriangle(order); + if (order ==0) {u[0]=0.;v[0]=0.; return;} + + u[0]= 0.; v[0]= 0.; w[0] = 0.; + u[1]= 0.; v[1]= order; w[1] = 0.; + u[2]= 0.; v[2]= 0.; w[2] = order; + // edges + for (int k=0; k< (order-1); k++){ + u[3+k] = 0.; v[3+k]= k+1; w[3+k] = 0.; + u[3+order-1+k] = 0.; v[3+order-1+k] = order -1 -k; w[3+order-1+k] = k+1; + u[3+2*(order-1)+k] = 0.; v[3+2*(order-1)+k] = 0.; w[3+2*(order-1)+k] = order -1 -k; + } + if (order >2){ + int nbdoftemp = nbdoftriangle(order-3); + nodepositionface3(order-3,&u[3+3*(order-1)], &v[3+3*(order-1)], &w[3+3*(order-1)]); + for (int k=0; k< nbdoftemp; k++){ + u[3+k+3*(order-1)] = u[3+k+3*(order-1)]*(order-3); + v[3+k+3*(order-1)] = v[3+k+3*(order-1)]*(order-3)+1.; + w[3+k+3*(order-1)] = w[3+k+3*(order-1)]*(order-3)+1.; + } + } + for (int k=0; k< ndofT; k++){ + u[k] = u[k]/order; + v[k] = v[k]/order; + w[k] = w[k]/order; + } + return; +} + +// ----------------------------------------------------------------------------- +Double_Matrix gmshGeneratePointsTetrahedron(int order,bool serendip) { + + int nbPoints = (serendip ? + 4 + 6 * std::max(0,order-1) + 4 * std::max(0,(order-2)*(order-1)/2): + (order+1)*(order+2)*(order+3)/6); + + Double_Matrix point(nbPoints,3); + + double overOrder = 1./order; + + point(0,0)= 0.; + point(0,1)= 0.; + point(0,2)= 0.; + + if (order > 0) { + + + point(1,0)= order; + point(1,1)= 0; + point(1,2)= 0; + + point(2,0)= 0.; + point(2,1)= order; + point(2,2)= 0.; + + point(3,0)= 0.; + point(3,1)= 0.; + point(3,2)= order; + + if (order > 1) { + for (int k=0; k< (order-1); k++) { + point(4+k,0) = k+1; + point(4+order-1+k,0) = order-1-k; + point(4+2*(order-1)+k,0) = 0.; + point(4+3*(order-1)+k,0) = 0.; + point(4+4*(order-1)+k,0) = order-1-k; + point(4+5*(order-1)+k,0) = 0.; + + point(4+k,1) = 0.; + point(4+order-1+k,1) = k+1; + point(4+2*(order-1)+k,1) = order-1-k; + point(4+3*(order-1)+k,1) = 0.; + point(4+4*(order-1)+k,1) = 0.; + point(4+5*(order-1)+k,1) = order-1-k; + + point(4+k,2) = 0.; + point(4+order-1+k,2) = 0.; + point(4+2*(order-1)+k,2) = 0.; + point(4+3*(order-1)+k,2) = k+1; + point(4+4*(order-1)+k,2) = k+1; + point(4+5*(order-1)+k,2) = k+1; + } + + if (order > 2) { + int ns = 4+6*(order-1); + int nbdofface = nbdoftriangle(order-3); + + double *u = new double[nbdofface]; + double *v = new double[nbdofface]; + double *w = new double[nbdofface]; + + nodepositionface0(order-3, u,v,w); + + for (int i=0; i < nbdofface; i++){ + point(ns+i,0) = u[i]*(order-3) + 1.; + point(ns+i,1) = v[i]*(order-3) + 1.; + point(ns+i,2) = w[i]*(order-3); + } + + ns = ns + nbdofface; + + nodepositionface1(order-3, u,v,w); + + for (int i=0; i < nbdofface; i++){ + point(ns+i,0) = u[i]*(order-3) + 1.; + point(ns+i,1) = v[i]*(order-3) ; + point(ns+i,2) = w[i]*(order-3) + 1.; + } + + ns = ns + nbdofface; + + nodepositionface2(order-3, u,v,w); + + for (int i=0; i < nbdofface; i++){ + point(ns+i,0) = u[i]*(order-3) + 1.; + point(ns+i,1) = v[i]*(order-3) + 1.; + point(ns+i,2) = w[i]*(order-3) + 1.; + } + + ns =ns +nbdofface; + + nodepositionface3(order-3, u,v,w); + + for (int i=0; i < nbdofface; i++){ + point(ns+i,0) = u[i]*(order-3); + point(ns+i,1) = v[i]*(order-3) + 1.; + point(ns+i,2) = w[i]*(order-3) + 1.; + } + + ns =ns + nbdofface; + + delete [] u; + delete [] v; + delete [] w; + + + if (!serendip && order > 3) { + + Double_Matrix interior = gmshGeneratePointsTetrahedron (order-4,false); // tetrahedron order - 4 + for (size_t k=0; k< interior.size1() ; k++) { + point(ns+k,0) = 1.+interior(k,0)*(order-4); + point(ns+k,1) = 1.+interior(k,1)*(order-4); + point(ns+k,2) = 1.+interior(k,2)*(order-4); + } + } + } + } + } + + point.scale(overOrder); + return point; +} + + +Double_Matrix gmshGeneratePointsTriangle(int order,bool serendip) { + + int nbPoints = serendip ? 3 * order : (order+1)*(order+2)/2; + Double_Matrix point(nbPoints,2); + + point(0,0) = 0; + point(0,1) = 0; + + double dd = 1./order; + + if (order > 0) { + + point(1,0) = 1; + point(1,1) = 0; + point(2,0) = 0; + point(2,1) = 1; + + int index = 3; + + if (order > 1) { + + double ksi = 0; + double eta = 0; + + for (int i=0;i<order-1;i++,index++) { + ksi += dd; + point(index,0) = ksi; + point(index,1) = eta; + } + + ksi = 1.; + + for (int i=0;i<order-1;i++,index++) { + ksi -= dd; + eta += dd; + point(index,0) = ksi; + point(index,1) = eta; + } + + eta = 1.; + ksi = 0.; + + for (int i=0;i<order-1;i++,index++) { + eta -= dd; + point(index,0) = ksi; + point(index,1) = eta; + } + + if (order > 2 && !serendip) { + Double_Matrix inner = gmshGeneratePointsTriangle(order - 3, serendip); + inner.scale(1.-3.*dd); + inner.add(dd); + Double_Matrix(point.touchSubmatrix(index,nbPoints - index,0,2)).memcpy(inner); + } + } + } + return point; +} + +Double_Matrix generateLagrangeMonomialCoefficients(const Double_Matrix& monomial,const Double_Matrix& point) { + + if (monomial.size1() != point.size1()) throw; + if (monomial.size2() != point.size2()) throw; + + int ndofs = monomial.size1(); + int dim = monomial.size2(); + + Double_Matrix Vandermonde(ndofs,ndofs); + + for (int i=0;i<ndofs;i++) { + for (int j=0;j<ndofs;j++) { + double dd = 1.; + for (int k=0;k<dim;k++) dd *= pow(point(i,k),monomial(j,k)); + Vandermonde(i,j) = dd; + } + } + + // check for independence + + double det = Vandermonde.determinant(); + + if (det == 0.0)throw; + + Double_Matrix coefficient(ndofs,ndofs); + + for (int i=0;i<ndofs;i++) { + for (int j=0;j<ndofs;j++) { + int f = (i+j)%2 == 0 ? 1 : -1; + Double_Matrix cofactor = Vandermonde.cofactor(i,j); + coefficient(i,j) = f * cofactor.determinant()/det; + } + } + + Vandermonde.set_all(0.); + + for (int i=0;i<ndofs;i++) { + for (int j=0;j<ndofs;j++) { + double dd = 1.; + for (int k=0;k<dim;k++) dd *= pow(point(i,k),monomial(j,k)); + + for (int k=0;k<ndofs;k++) { + Vandermonde(i,k) += coefficient(k,j)*dd; + } + } + } + return coefficient; +} + +std::map<int,gmshFunctionSpace> gmshFunctionSpaces::fs ; + +const gmshFunctionSpace & gmshFunctionSpaces::find (int tag) { + std::map<int,gmshFunctionSpace>::const_iterator it = fs.find(tag); + if (it != fs.end())return it->second; + + gmshFunctionSpace F; + + switch ( tag ){ + case MSH_TRI_3 : + F.monomials = generatePascalTriangle (1); + F.points = gmshGeneratePointsTriangle(1, false); + break; + case MSH_TRI_6 : + F.monomials = generatePascalTriangle (2); + F.points = gmshGeneratePointsTriangle(2, false); + break; + case MSH_TRI_9 : + F.monomials = generatePascalSerendipityTriangle (3); + F.points = gmshGeneratePointsTriangle(3, true); + break; + case MSH_TRI_10 : + F.monomials = generatePascalTriangle (3); + F.points = gmshGeneratePointsTriangle(3, false); + break; + case MSH_TRI_12 : + F.monomials = generatePascalSerendipityTriangle (4); + F.points = gmshGeneratePointsTriangle(4, true); + break; + case MSH_TRI_15 : + F.monomials = generatePascalTriangle (4); + F.points = gmshGeneratePointsTriangle(4, false); + break; + case MSH_TRI_15I : + F.monomials = generatePascalSerendipityTriangle (5); + F.points = gmshGeneratePointsTriangle(5, true); + break; + case MSH_TRI_21 : + F.monomials = generatePascalTriangle (5); + F.points = gmshGeneratePointsTriangle(5, false); + break; + default : + throw; + } + F.coefficients = generateLagrangeMonomialCoefficients ( F.monomials, F.points ); + fs.insert(std::make_pair(tag,F)); + return fs[tag]; +} diff --git a/Numeric/FunctionSpace.h b/Numeric/FunctionSpace.h new file mode 100644 index 0000000000..aebad28901 --- /dev/null +++ b/Numeric/FunctionSpace.h @@ -0,0 +1,109 @@ +#ifndef _GMSH_FCTSP_H_ +#define _GMSH_FCTSP_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 <map> +#include "GmshMatrix.h" +struct gmshFunctionSpace +{ + Double_Matrix points; + Double_Matrix monomials; + Double_Matrix coefficients; + inline void computePows ( double uu, double vv , double p[][2]) const{ + for(int j = 0; j < coefficients.size2(); j++){ + p[j][0] = pow(uu,monomials(j,0)); + p[j][1] = pow(vv,monomials(j,1)); + } + } + + inline void f ( double u, double v, double w, double *sf) const{ + for (int i = 0; i < coefficients.size1(); i++){ + sf[i] = 0; + for(int j = 0; j < coefficients.size2(); j++){ + sf[i] += coefficients(i,j) * + pow(u,monomials(j,0)) * + pow(v,monomials(j,1)) * + pow(w,monomials(j,2)); + } + } + } + inline void f ( double u, double v, double *sf) const{ + double p[256][2]; + computePows ( u, v , p); + for (int i = 0; i < coefficients.size1(); i++){ + sf[i] = 0; + for(int j = 0; j < coefficients.size2(); j++){ + sf[i] += coefficients(i,j) * p[j][0] * p[j][1] ; + } + } + } + inline void df ( double u, double v, double w, double grads[][3]) const{ + for (int i = 0; i < coefficients.size1(); i++){ + grads[i][0] = 0; + grads[i][1] = 0; + grads[i][2] = 0; + for(int j = 0; j < coefficients.size2(); j++){ + if ((monomials)(j,0) > 0) + grads[i][0] += (coefficients)(i,j) * + pow(u,(monomials)(j,0)-1) * (monomials)(j,0) * + pow(v,(monomials)(j,1)) * + pow(w,(monomials)(j,2)); + if ((monomials)(j,1) > 0) + grads[i][1] += (coefficients)(i,j) * + pow(u,(monomials)(j,0)) * + pow(v,(monomials)(j,1)-1) * (monomials)(j,1) * + pow(w,(monomials)(j,2)); + if ((monomials)(j,2) > 0) + grads[i][2] += (coefficients)(i,j) * + pow(u,(monomials)(j,0)) * + pow(v,(monomials)(j,1)) * + pow(w,(monomials)(j,2)-1) * (monomials)(j,2) ; + } + } + } + inline void df ( double u, double v, double grads[][2]) const{ + + double p[256][2]; + computePows ( u, v , p); + + for (int i = 0; i < coefficients.size1(); i++){ + grads[i][0] = 0; + grads[i][1] = 0; + for(int j = 0; j < coefficients.size2(); j++){ + if ((monomials)(j,0) > 0) + grads[i][0] += (coefficients)(i,j) * + pow(u,(monomials)(j,0)-1) * (monomials)(j,0) * p[j][1]; + if ((monomials)(j,1) > 0) + grads[i][1] += (coefficients)(i,j) * p[j][0] * + pow(v,(monomials)(j,1)-1) * (monomials)(j,1); + } + } + } +}; + +class gmshFunctionSpaces +{ + static std::map<int,gmshFunctionSpace> fs; + public : + static const gmshFunctionSpace & find ( int ); +}; + + +#endif diff --git a/Numeric/GaussLegendre1D.h b/Numeric/GaussLegendre1D.h new file mode 100644 index 0000000000..3d1de52547 --- /dev/null +++ b/Numeric/GaussLegendre1D.h @@ -0,0 +1,101 @@ +#ifndef _GMSH_GL1D_ +#define _GMSH_GL1D_ +// 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>. + + /* 1 point rule points */ + static double _GL_pt1[1]={ + 0.000000000000000e+00}; + + /* 1 point rule weights */ + static double _GL_wt1[1]={ + 2.000000000000000e+00}; + + /* 2 point rule points */ + static double _GL_pt2[2]={ + -5.773502691896257e-01, 5.773502691896257e-01}; + + /* 2 point rule weights */ + static double _GL_wt2[2]={ + 1.000000000000000e+00, 1.000000000000000e+00}; + + /* 3 point rule points */ + static double _GL_pt3[3]={ + -7.745966692414834e-01, 0.000000000000000e+00, 7.745966692414834e-01}; + + /* 3 point rule weights */ + static double _GL_wt3[3]={ + 5.555555555555552e-01, 8.888888888888888e-01, 5.555555555555552e-01}; + + /* 4 point rule points */ + static double _GL_pt4[4]={ + -8.611363115940526e-01,-3.399810435848563e-01, 3.399810435848563e-01, 8.611363115940526e-01}; + + /* 4 point rule weights */ + static double _GL_wt4[4]={ + 3.478548451374537e-01, 6.521451548625464e-01, 6.521451548625464e-01, 3.478548451374537e-01}; + + /* 5 point rule points */ + static double _GL_pt5[5]={ + -9.061798459386640e-01,-5.384693101056831e-01, 0.000000000000000e+00, 5.384693101056831e-01, 9.061798459386640e-01}; + + /* 5 point rule weights */ + static double _GL_wt5[5]={ + 2.369268850561890e-01, 4.786286704993665e-01, 5.688888888888889e-01, 4.786286704993665e-01, 2.369268850561890e-01}; + + /* 6 point rule points */ + static double _GL_pt6[6]={ + -9.324695142031521e-01,-6.612093864662646e-01,-2.386191860831969e-01, 2.386191860831969e-01, 6.612093864662646e-01, 9.324695142031521e-01}; + + /* 6 point rule weights */ + static double _GL_wt6[6]={ + 1.713244923791705e-01, 3.607615730481386e-01, 4.679139345726913e-01, 4.679139345726913e-01, 3.607615730481386e-01, 1.713244923791705e-01}; + +inline void gmshGaussLegendre1D (int nbQuadPoints , double **t, double **w){ + switch (nbQuadPoints){ + case 1: + *t = _GL_pt1; + *w = _GL_wt1; + break; + case 2: + *t = _GL_pt2; + *w = _GL_wt2; + break; + case 3: + *t = _GL_pt3; + *w = _GL_wt3; + break; + case 4: + *t = _GL_pt4; + *w = _GL_wt4; + break; + case 5: + *t = _GL_pt5; + *w = _GL_wt5; + break; + case 6: + *t = _GL_pt6; + *w = _GL_wt6; + break; + default : + throw; + } +} + +#endif diff --git a/Numeric/Makefile b/Numeric/Makefile index 4d4b83c17e..ab2bc83a86 100644 --- a/Numeric/Makefile +++ b/Numeric/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.47 2008-02-17 08:48:02 geuzaine Exp $ +# $Id: Makefile,v 1.48 2008-02-21 09:45:16 remacle Exp $ # # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle # @@ -30,6 +30,7 @@ CFLAGS = ${OPTIM} ${FLAGS} ${INC} ${SYSINCLUDE} SRC = Numeric.cpp\ NumericEmbedded.cpp\ EigSolve.cpp\ + FunctionSpace.cpp\ predicates.cpp\ gsl_newt.cpp\ gsl_min.cpp\ diff --git a/benchmarks/2d/naca12_2d.geo b/benchmarks/2d/naca12_2d.geo index dade16bbc5..b2bb3e960d 100644 --- a/benchmarks/2d/naca12_2d.geo +++ b/benchmarks/2d/naca12_2d.geo @@ -1,5 +1,5 @@ lc = 0.2; -lc2 = 1; +lc2 = 1.5; lc3 = 0.2; Point(1) = {1.000000e+00,0.000000e+00,0.000000e+00,lc}; Point(2) = {9.997533e-01,0.000000e+00,-3.498543e-05,lc}; -- GitLab