diff --git a/contrib/HighOrderMeshOptimizer/OptHomObjContribCADDist.h b/contrib/HighOrderMeshOptimizer/OptHomObjContribCADDist.h index 75e225fa953e60a1a0f243b1d5e7d97cfda843b1..aee3baed41b9dfe77e91acf13527713bd8e5ca1f 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomObjContribCADDist.h +++ b/contrib/HighOrderMeshOptimizer/OptHomObjContribCADDist.h @@ -30,7 +30,7 @@ protected: template<class FuncType> ObjContribCADDist<FuncType>::ObjContribCADDist(double weight, double geomTol) : - ObjContrib("MetricMin", FuncType::getNamePrefix()+"CADDist"), + ObjContrib("CADDist", FuncType::getNamePrefix()+"CADDist"), _mesh(0), _weight(weight), _geomTol(geomTol) { } diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp index 478b085c819217b3ebacf997682985c030f94b12..8cc3573451f308d0f85ed6afba3be70934b6cbeb 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp @@ -825,7 +825,7 @@ void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) minJacBarFunc.setTarget(p.BARRIER_MIN, 1.); ObjContribScaledJac<ObjContribFuncBarrierFixMinMovMax> minMaxJacBarFunc(1.); minMaxJacBarFunc.setTarget(p.BARRIER_MAX, 1.); - ObjContribCADDist<ObjContribFuncSimpleTargetMin> CADDistFunc(p.optCADWeight, p.discrTolerance); + ObjContribCADDist<ObjContribFuncSimpleTargetMax> CADDistFunc(p.optCADWeight, p.discrTolerance); CADDistFunc.setTarget(p.optCADDistMax); MeshOptParameters::PassParameters minJacPass; @@ -842,7 +842,7 @@ void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) minMaxJacPass.optIterMax = p.itMax; minMaxJacPass.contrib.push_back(&nodeDistFunc); minMaxJacPass.contrib.push_back(&minMaxJacBarFunc); - if (p.optCAD) minJacPass.contrib.push_back(&CADDistFunc); + if (p.optCAD) minMaxJacPass.contrib.push_back(&CADDistFunc); par.pass.push_back(minMaxJacPass); } diff --git a/contrib/MeshOptimizer/MeshOpt.cpp b/contrib/MeshOptimizer/MeshOpt.cpp index 6f29b5ab857bcc5693bf01eb4faab33497a86c64..6163d8f8f19dcac46a746b1b668ff9046776676c 100644 --- a/contrib/MeshOptimizer/MeshOpt.cpp +++ b/contrib/MeshOptimizer/MeshOpt.cpp @@ -68,7 +68,7 @@ MeshOpt::MeshOpt(const std::map<MElement*,GEntity*> &element2entity, const std::set<MElement*> &els, std::set<MVertex*> &toFix, const MeshOptParameters &par) : patch(element2entity, els, toFix, par.fixBndNodes), _verbose(0), - _iPass(0), _objFunc(), _iter(0), _intervDisplay(0), _initObj(0) + _iPass(0), _iter(0), _intervDisplay(0), _initObj(0) { _allObjFunc.resize(par.pass.size()); for (int iPass=0; iPass<par.pass.size(); iPass++) { @@ -76,6 +76,7 @@ MeshOpt::MeshOpt(const std::map<MElement*,GEntity*> &element2entity, for (int iC=0; iC<par.pass[iPass].contrib.size(); iC++) _allObjFunc[iPass][iC] = par.pass[iPass].contrib[iC]->copy(); } + _objFunc = &_allObjFunc[0]; } diff --git a/contrib/MeshOptimizer/MeshOptObjContribFunc.cpp b/contrib/MeshOptimizer/MeshOptObjContribFunc.cpp index 034eb2a1cfa605e6d3e3401c9961e9bdb307b96d..8be99a8567af2d97a16df53205f7f2fc493edd44 100644 --- a/contrib/MeshOptimizer/MeshOptObjContribFunc.cpp +++ b/contrib/MeshOptimizer/MeshOptObjContribFunc.cpp @@ -4,30 +4,30 @@ #include "MeshOptObjContribFunc.h" -const double ObjContribFuncSimpleTargetMin::STAGTHRESHOLD = 0.01; +const double ObjContribFuncSimpleTargetMax::STAGTHRESHOLD = 0.01; -ObjContribFuncSimpleTargetMin::ObjContribFuncSimpleTargetMin() : +ObjContribFuncSimpleTargetMax::ObjContribFuncSimpleTargetMax() : _target(0.), _init(0.) { } -void ObjContribFuncSimpleTargetMin::setTarget(double target) +void ObjContribFuncSimpleTargetMax::setTarget(double target) { _target = target; } -void ObjContribFuncSimpleTargetMin::updateParameters(double vMin, double vMax) +void ObjContribFuncSimpleTargetMax::updateParameters(double vMin, double vMax) { - _init = vMin; + _init = vMax; } -bool ObjContribFuncSimpleTargetMin::stagnated(double vMin, double vMax) +bool ObjContribFuncSimpleTargetMax::stagnated(double vMin, double vMax) { - return (fabs((vMin-_init)/_init) < STAGTHRESHOLD); + return (fabs((vMax-_init)/_init) < STAGTHRESHOLD); } diff --git a/contrib/MeshOptimizer/MeshOptObjContribFunc.h b/contrib/MeshOptimizer/MeshOptObjContribFunc.h index 118b9977036582c9b7a5682279e403a0ef3bd8a8..04c7aef64f5185f541b09f629c2aba6c60153188 100644 --- a/contrib/MeshOptimizer/MeshOptObjContribFunc.h +++ b/contrib/MeshOptimizer/MeshOptObjContribFunc.h @@ -19,17 +19,17 @@ protected: }; -class ObjContribFuncSimpleTargetMin : public ObjContribFuncSimple +class ObjContribFuncSimpleTargetMax : public ObjContribFuncSimple { public: - ObjContribFuncSimpleTargetMin(); + ObjContribFuncSimpleTargetMax(); void setTarget(double target); protected: static const double STAGTHRESHOLD; // Threshold to consider that measures stagnates double _target, _init; void updateParameters(double vMin, double vMax); - bool targetReached(double vMin, double vMax) { return (vMin >= _target); } + bool targetReached(double vMin, double vMax) { return (vMax <= _target); } bool stagnated(double vMin, double vMax); }; diff --git a/contrib/MeshOptimizer/MeshOptObjectiveFunction.cpp b/contrib/MeshOptimizer/MeshOptObjectiveFunction.cpp index 6e0a05039a4f97a92dcb3320384ddb7f4adb483a..45e339924fc07887d6c661557653eb6e475a409e 100644 --- a/contrib/MeshOptimizer/MeshOptObjectiveFunction.cpp +++ b/contrib/MeshOptimizer/MeshOptObjectiveFunction.cpp @@ -57,9 +57,9 @@ void ObjectiveFunction::updateResults() bool ObjectiveFunction::stagnated() { - bool stagnated = false; + bool stagnated = true; for (std::vector<ObjContrib*>::iterator it=begin(); it!=end(); it++) - stagnated |= (*it)->stagnated(); + stagnated &= (*it)->stagnated(); return stagnated; }