From 2df52aabf180b02ae5ba53be574b448f47d8222a Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 11 May 2013 12:02:48 +0000 Subject: [PATCH] fixes --- Common/OS.cpp | 8 +- Geo/GeoInterpolation.cpp | 18 +-- Geo/gmshLevelset.cpp | 239 +++++++++++++++------------------ Geo/gmshLevelset.h | 56 ++++---- Mesh/BDS.h | 58 ++++---- Post/PViewAsSimpleFunction.cpp | 2 +- Post/PViewAsSimpleFunction.h | 2 +- 7 files changed, 185 insertions(+), 198 deletions(-) diff --git a/Common/OS.cpp b/Common/OS.cpp index 6631d84e23..63d68f4b04 100644 --- a/Common/OS.cpp +++ b/Common/OS.cpp @@ -214,14 +214,14 @@ int SystemCall(const std::string &command, bool blocking) args = command.substr(pos, command.size() - pos); } else exe = command; - int s = exe.size(); - if(s > 3 && + int s = (int)exe.size(); + if(s > 3 && (exe[s-3] == '.') && (exe[s-2] == 'p' || exe[s-2] == 'P') && (exe[s-1] == 'y' || exe[s-1] == 'Y')){ - Msg::Info("Shell opening '%s' with arguments '%s'", + Msg::Info("Shell opening '%s' with arguments '%s'", exe.c_str(), args.c_str()); - ShellExecute(NULL, (char*)"open", (char*)exe.c_str(), + ShellExecute(NULL, (char*)"open", (char*)exe.c_str(), (char*)args.c_str(), NULL, 0); } else{ diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp index 96deac1a5f..7b662acb70 100644 --- a/Geo/GeoInterpolation.cpp +++ b/Geo/GeoInterpolation.cpp @@ -250,13 +250,13 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) Vertex V; if(derivee==1) { - switch (c->Typ) { - // case MSH_SEGM_BSPLN: - // case MSH_SEGM_BEZIER: - // V = InterpolateUBS(c, u, 1); - // V.u = u; - // break; - default : + // switch (c->Typ) { + // case MSH_SEGM_BSPLN: + // case MSH_SEGM_BEZIER: + // V = InterpolateUBS(c, u, 1); + // V.u = u; + // break; + // default : double eps1 = (u == 0) ? 0 : 1.e-5; double eps2 = (u == 1) ? 0 : 1.e-5; Vertex D[2]; @@ -266,8 +266,8 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.Y = (D[1].Pos.Y - D[0].Pos.Y) / (eps1 + eps2); V.Pos.Z = (D[1].Pos.Z - D[0].Pos.Z) / (eps1 + eps2); V.u = u; - break; - } + // break; + // } return V; } diff --git a/Geo/gmshLevelset.cpp b/Geo/gmshLevelset.cpp index 112a2589d3..657d563b95 100644 --- a/Geo/gmshLevelset.cpp +++ b/Geo/gmshLevelset.cpp @@ -80,7 +80,7 @@ int removeBadChildCells(cartesianBox<double> *parent) (j != J - 1 && !parent->activeCellExists(parent->getCellIndex(i, j + 1, k))) || (k != 0 && !parent->activeCellExists(parent->getCellIndex(i, j, k - 1))) || (k != K - 1 && !parent->activeCellExists(parent->getCellIndex(i, j, k + 1))))) - for(int ii = 0; ii < 8; ii++) child->eraseActiveCell(idx[ii]); + for(int ii = 0; ii < 8; ii++) child->eraseActiveCell(idx[ii]); } return removeBadChildCells(child); } @@ -120,29 +120,29 @@ void computeLevelset(GModel *gm, cartesianBox<double> &box) std::vector<double> dist, localdist; std::vector<SPoint3> dummy; for (GModel::fiter fit = gm->firstFace(); fit != gm->lastFace(); fit++){ - if((*fit)->geomType() == GEntity::DiscreteSurface){ + if((*fit)->geomType() == GEntity::DiscreteSurface){ for(unsigned int k = 0; k < (*fit)->getNumMeshElements(); k++){ - std::vector<double> iDistances; - std::vector<SPoint3> iClosePts; - std::vector<double> iDistancesE; - MElement *e = (*fit)->getMeshElement(k); - if(e->getType() == TYPE_TRI){ - MVertex *v1 = e->getVertex(0); - MVertex *v2 = e->getVertex(1); - MVertex *v3 = e->getVertex(2); - SPoint3 p1(v1->x(),v1->y(),v1->z()); - SPoint3 p2(v2->x(),v2->y(),v2->z()); - SPoint3 p3(v3->x(),v3->y(),v3->z()); - //sign plus if in the direction of the normal - signedDistancesPointsTriangle(localdist, dummy, nodes, p2, p1, p3); - } - if(dist.empty()) - dist = localdist; - else{ - for (unsigned int j = 0; j < localdist.size(); j++){ - dist[j] = (fabs(dist[j]) < fabs(localdist[j])) ? dist[j] : localdist[j]; - } - } + std::vector<double> iDistances; + std::vector<SPoint3> iClosePts; + std::vector<double> iDistancesE; + MElement *e = (*fit)->getMeshElement(k); + if(e->getType() == TYPE_TRI){ + MVertex *v1 = e->getVertex(0); + MVertex *v2 = e->getVertex(1); + MVertex *v3 = e->getVertex(2); + SPoint3 p1(v1->x(),v1->y(),v1->z()); + SPoint3 p2(v2->x(),v2->y(),v2->z()); + SPoint3 p3(v3->x(),v3->y(),v3->z()); + //sign plus if in the direction of the normal + signedDistancesPointsTriangle(localdist, dummy, nodes, p2, p1, p3); + } + if(dist.empty()) + dist = localdist; + else{ + for (unsigned int j = 0; j < localdist.size(); j++){ + dist[j] = (fabs(dist[j]) < fabs(localdist[j])) ? dist[j] : localdist[j]; + } + } } } else{ @@ -194,8 +194,8 @@ inline bool isPlanar(const double *pt1, const double *pt2, const double *pt3, return (n1[0] == n2[0] && n1[1] == n2[1] && n1[2] == n2[2]); } -inline double evalRadialFnDer (int p, int index, double dx, double dy, double dz, - double ep) +inline double evalRadialFnDer(int p, int index, double dx, double dy, double dz, + double ep) { double r2 = dx*dx+dy*dy+dz*dz; //r^2 switch (index) { @@ -224,9 +224,9 @@ inline void printNodes(fullMatrix<double> &myNodes, fullMatrix<double> &surf) for(int itv = 1; itv != myNodes.size1(); ++itv){ fprintf(xyz,"SP(%g,%g,%g){%g};\n", myNodes(itv,0), myNodes(itv,1), myNodes(itv,2), surf(itv,0)); - } - fprintf(xyz,"};\n"); - fclose(xyz); + } + fprintf(xyz,"};\n"); + fclose(xyz); } // extrude a list of the primitive levelsets with a "Level-order traversal sequence" @@ -314,30 +314,28 @@ gLevelset::gLevelset(const gLevelset &lv) tag_ = lv.tag_; } -gLevelsetSphere::gLevelsetSphere (const double &x, const double &y, const double &z, const double &R, int tag=1) +gLevelsetSphere::gLevelsetSphere(const double &x, const double &y, const double &z, + const double &R, int tag=1) : gLevelsetPrimitive(tag), xc(x), yc(y), zc(z), r(R) { -_hasDerivatives = true; + _hasDerivatives = true; } -void gLevelsetSphere::gradient (double x, double y, double z, - double & dfdx, double & dfdy, double & dfdz) const +void gLevelsetSphere::gradient(double x, double y, double z, + double & dfdx, double & dfdy, double & dfdz) const { - const double xx = x-xc, yy = y-yc, zz = z-zc, dist = sqrt(xx*xx+yy*yy+zz*zz); dfdx = xx/dist; dfdy = yy/dist; dfdz = zz/dist; - } -void gLevelsetSphere::hessian (double x, double y, double z, - double & dfdxx, double & dfdxy, double & dfdxz, - double & dfdyx, double & dfdyy, double & dfdyz, - double & dfdzx, double & dfdzy, double & dfdzz) const +void gLevelsetSphere::hessian(double x, double y, double z, + double & dfdxx, double & dfdxy, double & dfdxz, + double & dfdyx, double & dfdyy, double & dfdyz, + double & dfdzx, double & dfdzy, double & dfdzz) const { - const double xx = x-xc, yy = y-yc, zz = z-zc; const double distSq = xx*xx+yy*yy, fact = 1./(distSq*sqrt(distSq)); @@ -350,10 +348,8 @@ void gLevelsetSphere::hessian (double x, double y, double z, dfdzx = dfdxz; dfdzy = dfdyz; dfdzz = (xx*xx+yy*yy)*fact; - } - gLevelsetPlane::gLevelsetPlane(const std::vector<double> &pt, const std::vector<double> &norm, int tag) : gLevelsetPrimitive(tag) @@ -532,7 +528,7 @@ gLevelsetPoints::gLevelsetPoints(const gLevelsetPoints &lv) points = lv.points; } -double gLevelsetPoints::operator()(const double x, const double y, const double z) const +double gLevelsetPoints::operator()(double x, double y, double z) const { if(mapP.empty()) printf("Levelset Points : call computeLS() before calling operator()\n"); @@ -592,7 +588,7 @@ void gLevelsetQuadric::Ax(const double x[3], double res[3], double fact) for(int i = 0; i < 3; i++){ res[i] = 0.; for(int j = 0; j < 3; j++){ - res[i] += A[i][j] * x[j] * fact; + res[i] += A[i][j] * x[j] * fact; } } } @@ -673,9 +669,9 @@ void gLevelsetQuadric::computeRotationMatrix(const double dir1[3], { double norm = sqrt((dir1[1] * dir2[2] - dir1[2] * dir2[1]) * (dir1[1] * dir2[2] - dir1[2] * dir2[1]) - + (dir1[2] * dir2[0] - dir1[0] * dir2[2]) * + + (dir1[2] * dir2[0] - dir1[0] * dir2[2]) * (dir1[2] * dir2[0] - dir1[0] * dir2[2]) - + (dir1[0] * dir2[1] - dir1[1] * dir2[0]) * + + (dir1[0] * dir2[1] - dir1[1] * dir2[0]) * (dir1[0] * dir2[1] - dir1[1] * dir2[0])); double n[3] = {1., 0., 0.}; double ct = 1., st = 0.; @@ -707,7 +703,7 @@ void gLevelsetQuadric::init() C = 0.; } -double gLevelsetQuadric::operator()(const double x, const double y, const double z) const +double gLevelsetQuadric::operator()(double x, double y, double z) const { return(A[0][0] * x * x + 2. * A[0][1] * x * y + 2. * A[0][2] * x * z + A[1][1] * y * y + 2. * A[1][2] * y * z + A[2][2] * z * z + B[0] * x + B[1] * y + B[2] * z + C); @@ -729,7 +725,7 @@ gLevelsetShamrock::gLevelsetShamrock(double _xmid, double _ymid, double _zmid, } } -double gLevelsetShamrock::operator() (const double x, const double y, const double z) const +double gLevelsetShamrock::operator()(double x, double y, double z) const { // computing distance to pre-defined (sampled) iso-zero double dx,dy,xi,yi,d; @@ -785,7 +781,7 @@ gLevelsetPopcorn::gLevelsetPopcorn(double _xc, double _yc, double _zc, double _r zc = _zc; } -double gLevelsetPopcorn::operator() (const double x, const double y, const double z) const +double gLevelsetPopcorn::operator() (double x, double y, double z) const { double s2 = (sigma)*(sigma); double r = sqrt((x-xc)*(x-xc)+(y-yc)*(y-yc)+(z-zc)*(z-zc)); @@ -811,22 +807,22 @@ double gLevelsetPopcorn::operator() (const double x, const double y, const doubl gLevelsetMathEval::gLevelsetMathEval(std::string f, int tag) : gLevelsetPrimitive(tag) { - std::vector<std::string> expressions(1, f); - std::vector<std::string> variables(3); - variables[0] = "x"; - variables[1] = "y"; - variables[2] = "z"; - _expr = new mathEvaluator(expressions, variables); + std::vector<std::string> expressions(1, f); + std::vector<std::string> variables(3); + variables[0] = "x"; + variables[1] = "y"; + variables[2] = "z"; + _expr = new mathEvaluator(expressions, variables); } -double gLevelsetMathEval::operator() (const double x, const double y, const double z) const +double gLevelsetMathEval::operator() (double x, double y, double z) const { - std::vector<double> values(3), res(1); - values[0] = x; - values[1] = y; - values[2] = z; - if(_expr->eval(values, res)) return res[0]; - return 1.; + std::vector<double> values(3), res(1); + values[0] = x; + values[1] = y; + values[2] = z; + if(_expr->eval(values, res)) return res[0]; + return 1.; } gLevelsetMathEvalAll::gLevelsetMathEvalAll(std::vector<std::string> expressions, int tag) @@ -839,52 +835,50 @@ gLevelsetMathEvalAll::gLevelsetMathEvalAll(std::vector<std::string> expressions, variables[2] = "z"; _expr = new mathEvaluator(expressions, variables); } -double gLevelsetMathEvalAll::operator() (const double x, const double y, const double z) const + +double gLevelsetMathEvalAll::operator() (double x, double y, double z) const { - std::vector<double> values(3), res(13); - values[0] = x; - values[1] = y; - values[2] = z; - if(_expr->eval(values, res)) return res[0]; - return 1.; + std::vector<double> values(3), res(13); + values[0] = x; + values[1] = y; + values[2] = z; + if(_expr->eval(values, res)) return res[0]; + return 1.; } -void gLevelsetMathEvalAll::gradient (double x, double y, double z, - double & dfdx, double & dfdy, double & dfdz) const +void gLevelsetMathEvalAll::gradient(double x, double y, double z, + double & dfdx, double & dfdy, double & dfdz) const { - - std::vector<double> values(3), res(13); - values[0] = x; - values[1] = y; - values[2] = z; - if(_expr->eval(values, res)){ - dfdx = res[1]; - dfdy = res[2]; - dfdz = res[3]; - } - + std::vector<double> values(3), res(13); + values[0] = x; + values[1] = y; + values[2] = z; + if(_expr->eval(values, res)){ + dfdx = res[1]; + dfdy = res[2]; + dfdz = res[3]; + } } -void gLevelsetMathEvalAll::hessian (double x, double y, double z, - double & dfdxx, double & dfdxy, double & dfdxz, - double & dfdyx, double & dfdyy, double & dfdyz, - double & dfdzx, double & dfdzy, double & dfdzz) const -{ - - std::vector<double> values(3), res(13); - values[0] = x; - values[1] = y; - values[2] = z; - if(_expr->eval(values, res)){ - dfdxx = res[4]; - dfdxy = res[5]; - dfdxz = res[6]; - dfdyx = res[7]; - dfdyy = res[8]; - dfdyz = res[9]; - dfdzx = res[10]; - dfdzy = res[11]; - dfdzz = res[12]; - } +void gLevelsetMathEvalAll::hessian(double x, double y, double z, + double & dfdxx, double & dfdxy, double & dfdxz, + double & dfdyx, double & dfdyy, double & dfdyz, + double & dfdzx, double & dfdzy, double & dfdzz) const +{ + std::vector<double> values(3), res(13); + values[0] = x; + values[1] = y; + values[2] = z; + if(_expr->eval(values, res)){ + dfdxx = res[4]; + dfdxy = res[5]; + dfdxz = res[6]; + dfdyx = res[7]; + dfdyy = res[8]; + dfdyz = res[9]; + dfdzx = res[10]; + dfdzy = res[11]; + dfdzz = res[12]; + } } #if defined(HAVE_ANN) @@ -940,7 +934,7 @@ gLevelsetDistMesh::~gLevelsetDistMesh() } -double gLevelsetDistMesh::operator () (const double x, const double y, const double z) const +double gLevelsetDistMesh::operator () (double x, double y, double z) const { double point[3] = {x,y,z}; _kdtree->annkSearch(point, _nbClose, _index, _dist); @@ -963,7 +957,7 @@ double gLevelsetDistMesh::operator () (const double x, const double y, const dou SPoint3 p2(v2->x(), v2->y(), v2->z()); SPoint3 pt; if ((*it)->getDim() == 1){ - signedDistancePointLine(p1, p2,SPoint3(x,y,z),distance,pt); + signedDistancePointLine(p1, p2,SPoint3(x,y,z),distance,pt); } else if ((*it)->getDim() == 2){ MVertex *v3 = (*it)->getVertex(2); @@ -981,8 +975,6 @@ double gLevelsetDistMesh::operator () (const double x, const double y, const dou } #endif - - #if defined (HAVE_POST) gLevelsetPostView::gLevelsetPostView(int index, int tag) : gLevelsetPrimitive(tag), _viewIndex(index) @@ -997,7 +989,7 @@ gLevelsetPostView::gLevelsetPostView(int index, int tag) } } -double gLevelsetPostView::operator () (const double x, const double y, const double z) const +double gLevelsetPostView::operator () (double x, double y, double z) const { if(!_octree) return 1.; double val = 1.; @@ -1036,7 +1028,7 @@ gLevelsetEllipsoid::gLevelsetEllipsoid(const double *pt, const double *dir, cons translate(pt); } -gLevelsetEllipsoid::gLevelsetEllipsoid (const gLevelsetEllipsoid& lv) +gLevelsetEllipsoid::gLevelsetEllipsoid(const gLevelsetEllipsoid& lv) : gLevelsetQuadric(lv){} gLevelsetCone::gLevelsetCone(const double *pt, const double *dir, const double &angle, @@ -1051,7 +1043,7 @@ gLevelsetCone::gLevelsetCone(const double *pt, const double *dir, const double & translate(pt); } -gLevelsetCone::gLevelsetCone (const gLevelsetCone& lv) +gLevelsetCone::gLevelsetCone(const gLevelsetCone& lv) : gLevelsetQuadric(lv){} gLevelsetGeneralQuadric::gLevelsetGeneralQuadric(const double *pt, const double *dir, @@ -1071,7 +1063,7 @@ gLevelsetGeneralQuadric::gLevelsetGeneralQuadric(const double *pt, const double translate(pt); } -gLevelsetGeneralQuadric::gLevelsetGeneralQuadric (const gLevelsetGeneralQuadric& lv) +gLevelsetGeneralQuadric::gLevelsetGeneralQuadric(const gLevelsetGeneralQuadric& lv) : gLevelsetQuadric(lv){} gLevelsetTools::gLevelsetTools(const gLevelsetTools &lv) : gLevelset(lv) @@ -1234,7 +1226,6 @@ gLevelsetConrod::gLevelsetConrod(const double *pt, const double *dir1, gLevelsetConrod::gLevelsetConrod(const gLevelsetConrod &lv) : gLevelsetImproved(lv){} - // Level-set for NACA0012 airfoil, last coeff. modified for zero-thickness trailing edge // cf. http://en.wikipedia.org/wiki/NACA_airfoil gLevelsetNACA00::gLevelsetNACA00(double x0, double y0, double c, double t) @@ -1243,8 +1234,7 @@ gLevelsetNACA00::gLevelsetNACA00(double x0, double y0, double c, double t) _hasDerivatives = true; } - -void gLevelsetNACA00::getClosestBndPoint(const double x, const double y, const double z, +void gLevelsetNACA00::getClosestBndPoint(double x, double y, double z, double &xb, double &yb, double &curvRad, bool &in) const { @@ -1267,7 +1257,7 @@ void gLevelsetNACA00::getClosestBndPoint(const double x, const double y, const d double dyb, ddyb; for (int it=0; it<maxIter; it++) { const double xbr = xtb/_c, sxbr = sqrt(xbr), xbr32 = xbr*sxbr, - xbr2 = xbr*xbr, xbr3 = xbr2*xbr, xbr4 = xbr2*xbr2; + xbr2 = xbr*xbr, xbr3 = xbr2*xbr, xbr4 = xbr2*xbr2; ytb = fact*(0.2969*sxbr-0.1260*xbr-0.3516*xbr2+0.2843*xbr3-0.1036*xbr4); dyb = fact*(0.14845/sxbr-0.4144*xbr3+0.8529*xbr2-0.7032*xbr-0.126)/_c; ddyb = fact*(-0.074225/xbr32-1.2432*xbr2+1.7058*xbr-0.7032)/(_c*_c); @@ -1285,13 +1275,10 @@ void gLevelsetNACA00::getClosestBndPoint(const double x, const double y, const d const double norm = sqrt(1.+dyb*dyb); curvRad = norm*norm*norm/fabs(ddyb); } - } - -double gLevelsetNACA00::operator() (const double x, const double y, const double z) const +double gLevelsetNACA00::operator() (double x, double y, double z) const { - double xb, yb, curvRadb; bool in; @@ -1299,14 +1286,11 @@ double gLevelsetNACA00::operator() (const double x, const double y, const double const double xx = x-xb, yy = y-yb, distSq = xx*xx+yy*yy; return in ? -sqrt(distSq) : sqrt(distSq); - } - void gLevelsetNACA00::gradient (double x, double y, double z, - double & dfdx, double & dfdy, double & dfdz) const + double & dfdx, double & dfdy, double & dfdz) const { - double xb, yb, curvRadb; bool in; @@ -1317,17 +1301,13 @@ void gLevelsetNACA00::gradient (double x, double y, double z, dfdx = xx/dist; dfdy = yy/dist; dfdz = 0.; - } - void gLevelsetNACA00::hessian (double x, double y, double z, - double & dfdxx, double & dfdxy, double & dfdxz, - double & dfdyx, double & dfdyy, double & dfdyz, - double & dfdzx, double & dfdzy, double & dfdzz) const + double & dfdxx, double & dfdxy, double & dfdxz, + double & dfdyx, double & dfdyy, double & dfdyz, + double & dfdzx, double & dfdzy, double & dfdzz) const { - - double xb, yb, curvRadb; bool in; @@ -1346,5 +1326,4 @@ void gLevelsetNACA00::hessian (double x, double y, double z, dfdzx = 0.; dfdzy = 0.; dfdzz = 0.; - } diff --git a/Geo/gmshLevelset.h b/Geo/gmshLevelset.h index 54dfb89aae..604fb0f8de 100644 --- a/Geo/gmshLevelset.h +++ b/Geo/gmshLevelset.h @@ -61,10 +61,19 @@ public: gLevelset(const gLevelset &); virtual ~gLevelset(){} virtual gLevelset * clone() const{printf("Error virtual fct called gLevelset::clone()"); return 0;} - virtual double operator() (const double x, const double y, const double z) const = 0; - bool isInsideDomain (const double &x, const double &y, const double &z) const {return this->operator()(x,y,z) * insideDomain > 0.;} - bool isOutsideDomain (const double &x, const double &y, const double &z) const {return this->operator()(x,y,z) * insideDomain < 0.;} - bool isOnBorder (const double &x, const double &y, const double &z) const {return this->operator()(x,y,z) == 0.;} + virtual double operator() (double x, double y, double z) const = 0; + bool isInsideDomain(const double &x, const double &y, const double &z) const + { + return this->operator()(x,y,z) * insideDomain > 0.; + } + bool isOutsideDomain(const double &x, const double &y, const double &z) const + { + return this->operator()(x,y,z) * insideDomain < 0.; + } + bool isOnBorder(const double &x, const double &y, const double &z) const + { + return this->operator()(x,y,z) == 0.; + } virtual std::vector<gLevelset *> getChildren() const = 0; virtual double choose (double d1, double d2) const = 0; virtual int type() const = 0; @@ -114,7 +123,7 @@ public: } tag_ = tag; } - virtual double operator () (const double x, const double y, const double z) const = 0; + virtual double operator () (double x, double y, double z) const = 0; std::vector<gLevelset *> getChildren() const { std::vector<gLevelset *> p; return p; } double choose (double d1, double d2) const { printf("Cannot use function \"choose\" with a primitive!\n"); @@ -131,7 +140,8 @@ protected: double xc, yc, zc, r; public: gLevelsetSphere (const double &x, const double &y, const double &z, const double &R, int tag); - virtual double operator () (const double x, const double y, const double z) const{ + virtual double operator () (double x, double y, double z) const + { if(r >= 0.) return sqrt((xc - x) * (xc - x) + (yc - y) * (yc - y) + (zc - z) * (zc - z)) - r; return (- r - sqrt((xc - x) * (xc - x) + (yc - y) * (yc - y) + (zc - z) * (zc - z))); @@ -151,7 +161,8 @@ protected: double a, b, c, d; public: // define the plane _a*x+_b*y+_c*z+_d, with outward normal (a,b,c) - gLevelsetPlane (const double _a, const double _b, const double _c, const double _d, int tag=1) : gLevelsetPrimitive(tag), a(_a), b(_b), c(_c), d(_d) {} + gLevelsetPlane (const double _a, const double _b, const double _c, const double _d, int tag=1) + : gLevelsetPrimitive(tag), a(_a), b(_b), c(_c), d(_d) {} // define the plane passing through the point pt and with outward normal norm gLevelsetPlane (const std::vector<double> &pt, const std::vector<double> &norm, int tag=1); gLevelsetPlane (const double *pt, const double *norm, int tag=1); @@ -161,13 +172,10 @@ public: gLevelsetPlane(const gLevelsetPlane &lv); virtual gLevelset * clone() const{return new gLevelsetPlane(*this);} // return negative value inward and positive value outward - virtual double operator() (const double x, const double y, const double z) const - {return a * x + b * y + c * z + d;} + virtual double operator() (double x, double y, double z) const { return a * x + b * y + c * z + d; } int type() const {return PLANE;} }; - - class gLevelsetPoints : public gLevelsetPrimitive { protected: @@ -200,7 +208,7 @@ public: gLevelsetPoints(const gLevelsetPoints &lv); virtual gLevelset * clone() const{return new gLevelsetPoints(*this);} // return negative value inward and positive value outward - virtual double operator() (const double x, const double y, const double z) const; + virtual double operator() (double x, double y, double z) const; void computeLS(std::vector<MVertex*> &vert); int type() const {return LSPOINTS;} }; @@ -221,7 +229,7 @@ public: gLevelsetQuadric(int tag=1) : gLevelsetPrimitive(tag) {init(); } gLevelsetQuadric(const gLevelsetQuadric &); virtual ~gLevelsetQuadric() {} - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; virtual int type() const = 0; }; @@ -271,7 +279,7 @@ class gLevelsetPopcorn: public gLevelsetPrimitive public: gLevelsetPopcorn(double xc, double yc, double zc, double r0, double A, double sigma, int tag=1); ~gLevelsetPopcorn(){} - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; int type() const { return UNKNOWN; } }; @@ -287,7 +295,7 @@ class gLevelsetShamrock: public gLevelsetPrimitive public: gLevelsetShamrock(double xmid, double ymid, double zmid, double a, double b, int c=3, int tag=1); ~gLevelsetShamrock(){} - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; int type() const { return UNKNOWN; } }; @@ -297,7 +305,7 @@ class gLevelsetMathEval: public gLevelsetPrimitive public: gLevelsetMathEval(std::string f, int tag=1); ~gLevelsetMathEval(){ if (_expr) delete _expr; } - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; int type() const { return UNKNOWN; } }; @@ -307,7 +315,7 @@ class gLevelsetMathEvalAll: public gLevelsetPrimitive public: gLevelsetMathEvalAll(std::vector<std::string> f, int tag=1); ~gLevelsetMathEvalAll(){ if (_expr) delete _expr; } - double operator() (const double x, const double y, const double z) const; + double operator() (double x, double y, double z) const; void gradient (double x, double y, double z, double & dfdx, double & dfdy, double & dfdz) const; void hessian (double x, double y, double z, @@ -325,7 +333,7 @@ public: _f = f; } ~gLevelsetSimpleFunction(){} - double operator () (const double x, const double y, const double z) const + double operator () (double x, double y, double z) const { return (*_f)(x,y,z); } @@ -346,7 +354,7 @@ class gLevelsetDistMesh: public gLevelsetPrimitive ANNdistArray _dist; public : gLevelsetDistMesh(GModel *gm, std::string physical, int nbClose = 5); - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; ~gLevelsetDistMesh(); int type() const { return UNKNOWN; } }; @@ -360,7 +368,7 @@ class gLevelsetPostView : public gLevelsetPrimitive public: gLevelsetPostView(int index, int tag=1) ; ~gLevelsetPostView(){ if(_octree) delete _octree;} - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; int type() const { return UNKNOWN; } }; #endif @@ -383,7 +391,7 @@ public: delete children[i]; } } - double operator () (const double x, const double y, const double z) const { + double operator () (double x, double y, double z) const { double d = (*children[0])(x, y, z); for (int i = 1; i < (int)children.size(); i++){ double dt = (*children[i])(x, y, z); @@ -417,7 +425,7 @@ protected: gLevelset *ls; public: gLevelsetReverse (gLevelset *p) : ls(p){} - double operator () (const double x, const double y, const double z) const { + double operator () (double x, double y, double z) const { return -(*ls)(x, y, z); } std::vector<gLevelset *> getChildren() const {return ls->getChildren();} @@ -497,7 +505,7 @@ protected: public: gLevelsetImproved(){} gLevelsetImproved(const gLevelsetImproved &lv); - double operator() (const double x, const double y, const double z) const {return (*Ls)(x, y, z);} + double operator() (double x, double y, double z) const {return (*Ls)(x, y, z);} std::vector<gLevelset *> getChildren() const { return Ls->getChildren(); } double choose (double d1, double d2) const { return Ls->choose(d1, d2); } virtual int type() const = 0; @@ -635,7 +643,7 @@ class gLevelsetNACA00: public gLevelsetPrimitive public: gLevelsetNACA00(double x0, double y0, double c, double t); ~gLevelsetNACA00() {} - double operator () (const double x, const double y, const double z) const; + double operator () (double x, double y, double z) const; void gradient (double x, double y, double z, double & dfdx, double & dfdy, double & dfdz) const; void hessian (double x, double y, double z, diff --git a/Mesh/BDS.h b/Mesh/BDS.h index 6a3fd7a3fb..7741f8717a 100644 --- a/Mesh/BDS.h +++ b/Mesh/BDS.h @@ -127,7 +127,7 @@ public: static double t; }; -class BDS_Point +class BDS_Point { // the first size is the one dictated by the Background Mesh the // second one is dictated by charecteristic lengths at points and is @@ -181,9 +181,9 @@ class BDS_Edge { return _length; } - inline int numfaces() const + inline int numfaces() const { - return _faces.size(); + return (int)_faces.size(); } int numTriangles() const ; inline BDS_Point *commonvertex(const BDS_Edge *other) const @@ -223,19 +223,19 @@ class BDS_Edge } inline void del(BDS_Face *t) { - _faces.erase(std::remove_if(_faces.begin(),_faces.end(), - std::bind2nd(std::equal_to<BDS_Face*>(), t)), + _faces.erase(std::remove_if(_faces.begin(),_faces.end(), + std::bind2nd(std::equal_to<BDS_Face*>(), t)), _faces.end()); } - void oppositeof(BDS_Point * oface[2]) const; + void oppositeof(BDS_Point * oface[2]) const; void update() { - _length = sqrt((p1->X - p2->X) * (p1->X - p2->X) + - (p1->Y - p2->Y) * (p1->Y - p2->Y) + + _length = sqrt((p1->X - p2->X) * (p1->X - p2->X) + + (p1->Y - p2->Y) * (p1->Y - p2->Y) + (p1->Z - p2->Z) * (p1->Z - p2->Z)); } BDS_Edge(BDS_Point *A, BDS_Point *B) : deleted(false), g(0) - { + { if(*A < *B){ p1 = A; p2 = B; @@ -272,7 +272,7 @@ class BDS_Face inline BDS_Point *oppositeVertex (BDS_Edge *e) { if (e4){ - Msg::Fatal("oppositeVertex to edge %d %d cannot be applied to a quad", + Msg::Fatal("oppositeVertex to edge %d %d cannot be applied to a quad", e->p1->iD, e->p2->iD); return 0; } @@ -300,7 +300,7 @@ class BDS_Face } BDS_Face(BDS_Edge *A, BDS_Edge *B, BDS_Edge *C,BDS_Edge *D = 0) : deleted(false), e1(A), e2(B), e3(C), e4(D), g(0) - { + { e1->addface(this); e2->addface(this); e3->addface(this); @@ -354,11 +354,11 @@ class BDS_SwapEdgeTest { public: virtual bool operator() (BDS_Point *p1, BDS_Point *p2, - BDS_Point *q1, BDS_Point *q2) const = 0; + BDS_Point *q1, BDS_Point *q2) const = 0; virtual bool operator() (BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, BDS_Point *q1, BDS_Point *q2, BDS_Point *q3, BDS_Point *op1, BDS_Point *op2, BDS_Point *op3, - BDS_Point *oq1, BDS_Point *oq2, BDS_Point *oq3) const = 0; + BDS_Point *oq1, BDS_Point *oq2, BDS_Point *oq3) const = 0; virtual ~BDS_SwapEdgeTest(){} }; @@ -368,15 +368,15 @@ class BDS_SwapEdgeTestQuality : public BDS_SwapEdgeTest public: BDS_SwapEdgeTestQuality(bool a, bool b=true) : testQuality(a), testSmallTriangles(b) {} virtual bool operator() (BDS_Point *p1, BDS_Point *p2, - BDS_Point *q1, BDS_Point *q2) const ; + BDS_Point *q1, BDS_Point *q2) const ; virtual bool operator() (BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, BDS_Point *q1, BDS_Point *q2, BDS_Point *q3, BDS_Point *op1, BDS_Point *op2, BDS_Point *op3, - BDS_Point *oq1, BDS_Point *oq2, BDS_Point *oq3) const ; + BDS_Point *oq1, BDS_Point *oq2, BDS_Point *oq3) const ; virtual ~BDS_SwapEdgeTestQuality(){} }; -struct EdgeToRecover +struct EdgeToRecover { int p1,p2; GEdge *ge; @@ -392,7 +392,7 @@ struct EdgeToRecover } } bool operator < (const EdgeToRecover &other) const - { + { if(p1 < other.p1) return true; if(p1 > other.p1) return false; if(p2 < other.p2) return true; @@ -400,22 +400,22 @@ struct EdgeToRecover } }; -class BDS_Mesh -{ +class BDS_Mesh +{ public: int MAXPOINTNUMBER, SNAP_SUCCESS, SNAP_FAILURE; double Min[3], Max[3], LC; double scalingU, scalingV; BDS_Mesh(int _MAXX = 0) : MAXPOINTNUMBER(_MAXX),scalingU(1),scalingV(1){} - void load(GVertex *gv); // load in BDS all the meshes of the vertex - void load(GEdge *ge); // load in BDS all the meshes of the edge - void load(GFace *gf); // load in BDS all the meshes of the surface + void load(GVertex *gv); // load in BDS all the meshes of the vertex + void load(GEdge *ge); // load in BDS all the meshes of the edge + void load(GFace *gf); // load in BDS all the meshes of the surface virtual ~BDS_Mesh(); BDS_Mesh(const BDS_Mesh &other); - std::set<BDS_GeomEntity*, GeomLessThan> geom; - std::set<BDS_Point*, PointLessThan> points; - std::list<BDS_Edge*> edges; - std::list<BDS_Face*> triangles; + std::set<BDS_GeomEntity*, GeomLessThan> geom; + std::set<BDS_Point*, PointLessThan> points; + std::list<BDS_Edge*> edges; + std::list<BDS_Face*> triangles; // Points BDS_Point *add_point(int num, double x, double y, double z); BDS_Point *add_point(int num, double u, double v, GFace *gf); @@ -430,7 +430,7 @@ class BDS_Mesh BDS_Edge *find_edge(BDS_Point *p1, BDS_Point *p2, BDS_Face *t) const; // Triangles & Quadrangles BDS_Face *add_triangle(int p1, int p2, int p3); - BDS_Face *add_quadrangle(int p1, int p2, int p3, int p4); + BDS_Face *add_quadrangle(int p1, int p2, int p3, int p4); BDS_Face *add_triangle(BDS_Edge *e1, BDS_Edge *e2, BDS_Edge *e3); BDS_Face *add_quadrangle(BDS_Edge *e1, BDS_Edge *e2, BDS_Edge *e3, BDS_Edge *e4); void del_face(BDS_Face *t); @@ -457,8 +457,8 @@ class BDS_Mesh void cleanup(); }; -void normal_triangle(BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, double c[3]); -void swap_config(BDS_Edge *e, +void normal_triangle(BDS_Point *p1, BDS_Point *p2, BDS_Point *p3, double c[3]); +void swap_config(BDS_Edge *e, BDS_Point **p11, BDS_Point **p12, BDS_Point **p13, BDS_Point **p21, BDS_Point **p22, BDS_Point **p23, BDS_Point **p31, BDS_Point **p32, BDS_Point **p33, diff --git a/Post/PViewAsSimpleFunction.cpp b/Post/PViewAsSimpleFunction.cpp index fa42fbaa65..2eaef2468e 100644 --- a/Post/PViewAsSimpleFunction.cpp +++ b/Post/PViewAsSimpleFunction.cpp @@ -7,7 +7,7 @@ #include "PViewData.h" #include "PViewAsSimpleFunction.h" -double PViewEvaluator::operator() (const double x, const double y, const double z) const +double PViewEvaluator::operator() (double x, double y, double z) const { PViewData * pvd = _pv->getData(); double value; diff --git a/Post/PViewAsSimpleFunction.h b/Post/PViewAsSimpleFunction.h index 75b72b6617..17ba4ae145 100644 --- a/Post/PViewAsSimpleFunction.h +++ b/Post/PViewAsSimpleFunction.h @@ -15,7 +15,7 @@ class PViewEvaluator : public simpleFunction<double> { int _step; public: PViewEvaluator (PView *pv) : _pv(pv), _step(0) {} - double operator() (const double x, const double y, const double z) const; + double operator() (double x, double y, double z) const; void setStep (int s) { _step = s; } }; -- GitLab