From 8b05e840e80de29f5fcf917dd6b248440f30c1c3 Mon Sep 17 00:00:00 2001
From: Amaury Johnan <amjohnen@gmail.com>
Date: Thu, 10 Apr 2014 10:50:13 +0000
Subject: [PATCH] clean up

---
 Numeric/MetricBasis.cpp | 255 +---------------------------------------
 Numeric/MetricBasis.h   |   3 +-
 2 files changed, 3 insertions(+), 255 deletions(-)

diff --git a/Numeric/MetricBasis.cpp b/Numeric/MetricBasis.cpp
index 1f3b277870..1e2e22e192 100644
--- a/Numeric/MetricBasis.cpp
+++ b/Numeric/MetricBasis.cpp
@@ -10,14 +10,6 @@
 #include <cmath>
 #include <queue>
 #include "OS.h"
-#if defined(HAVE_SCIP)
-#include "scip/scip.h"
-#include "scip/scipdefplugins.h"
-#include "soplex/soplex.h"
-#include <sstream>
-#include "scip/cons.h"
-#include "scip/struct_scip.h"
-#endif
 
 namespace {
   double cubicCardanoRoot(double p, double q)
@@ -122,7 +114,6 @@ void MetricCoefficient::_fillInequalities(int metricOrder)
   Msg::Info("ncoeff %d", ncoeff);
   int countP3 = 0, countJ2 = 0;
   double tol = .99;
-  double tol2 = .001;
   for (int i = 0; i < ncoeff; i++) {
     for (int j = i; j < ncoeff; j++) {
       double A = 1, B = 1;
@@ -251,19 +242,15 @@ void MetricCoefficient::_fillInequalities(int metricOrder)
     }
   }
 
-  int ret = _lightenInequalities(tol, tol2, countJ2, countP3);
-  if (ret) {
-    Msg::Warning("Heavy Inequalities (error %d)", ret);
-  }
+  _lightenInequalities(tol, countJ2, countP3);
 
   Msg::Info("A : %d / %d", v.size(), ncoeff*(ncoeff+1)/2);
   Msg::Info("J2 : %d / %d", countJ2, njac*(njac+1)/2);
   Msg::Info("P3 : %d / %d", countP3, ncoeff*(ncoeff+1)*(ncoeff+2)/6);
 }
 
-int MetricCoefficient::_lightenInequalities(double tol, double tol2, int &countj, int &countp)
+void MetricCoefficient::_lightenInequalities(double tol, int &countj, int &countp)
 {
-#ifndef BEFORE
   std::map<int, std::vector<IneqData> >::iterator it, itbeg[3], itend[3];
 
   int cnt[3] = {0,0,0};
@@ -293,206 +280,6 @@ int MetricCoefficient::_lightenInequalities(double tol, double tol2, int &countj
   }
   countj -= cnt[0];
   countp -= cnt[1];
-  return 0;
-
-#else
-  std::map<int, std::vector<IneqData> >::iterator itJ, itP;
-  itJ = _ineqJ2.begin();
-  itP = _ineqP3.begin();
-
-  while (itJ != _ineqJ2.end() && itP != _ineqP3.end()) {
-    double verif = 0;
-    for (unsigned int i = 0; i < itJ->second.size(); ++i) {
-      verif += itJ->second[i].val;
-    }
-    if (verif < 1. - 1e-7 || verif > 1. + 1e-7) Msg::Warning("verif J %g", verif);
-    verif = 0;
-    for (unsigned int i = 0; i < itP->second.size(); ++i) {
-      verif += itP->second[i].val;
-    }
-    if (verif < 1.-1e-7 || verif > 1.+1e-7) Msg::Warning("verif P %g", verif);
-    // TODO : remove
-
-    std::sort(itJ->second.begin(), itJ->second.end(), gterIneq());
-    std::sort(itP->second.begin(), itP->second.end(), gterIneq());
-
-    bool print = false;
-    if (true || itJ->second.back().val < tol && itP->second.back().val < tol) {
-      print = true;
-      Msg::Info(" ");
-      //Msg::Info("sizes %d %d", itJ->second.size(), itP->second.size());
-      Msg::Info("JJ-before-JJJJJJJJJJJJJJJJJJJ");
-      for (unsigned int i = 0; i < itJ->second.size(); ++i) {
-        Msg::Info("%g", itJ->second[i].val / tol);
-      }
-      Msg::Info("PP-before-PPPPPPPPPPPPPPPPPPP");
-      for (unsigned int i = 0; i < itP->second.size(); ++i) {
-        Msg::Info("%g", itP->second[i].val / tol);
-      }
-    }
-
-#if defined(HAVE_SCIP)
-    SCIP* scip;
-    SCIP_CALL(SCIPcreate(&scip));
-    SCIP_CALL(SCIPincludeDefaultPlugins(scip));
-    //SCIP_CALL(SCIPsetMessagehdlr(NULL, NULL));
-    SCIP_CALL(SCIPcreateProb(scip, "inequalities", NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL));
-    SCIP_CALL(SCIPsetObjsense(scip, SCIP_OBJSENSE_MAXIMIZE));
-
-    int nj = itJ->second.size();
-    int np = itP->second.size();
-
-    SCIP_VAR** varj = new SCIP_VAR*[nj];
-    SCIP_VAR** varp = new SCIP_VAR*[np];
-    double* cj = new double[nj];
-    double* cp = new double[np];
-
-    for (int i = 0; i < nj; ++i) {
-      std::ostringstream namebuf;
-      namebuf.str("");
-      namebuf << "j" << i;
-
-      SCIP_CALL(SCIPcreateVar(scip, &varj[i], namebuf.str().c_str(), .0, 1.,
-                              1., SCIP_VARTYPE_BINARY, TRUE, FALSE,
-                              NULL, NULL, NULL, NULL, NULL));
-      SCIP_CALL(SCIPaddVar(scip, varj[i]));
-      cj[i] = itJ->second[i].val;
-    }
-    for (int i = 0; i < np; ++i) {
-      std::ostringstream namebuf;
-      namebuf.str("");
-      namebuf << "p" << i;
-
-      SCIP_CALL(SCIPcreateVar(scip, &varp[i], namebuf.str().c_str(), .0, 1.,
-                              1., SCIP_VARTYPE_BINARY, TRUE, FALSE,
-                              NULL, NULL, NULL, NULL, NULL));
-      SCIP_CALL(SCIPaddVar(scip, varp[i]));
-      cp[i] = itP->second[i].val;
-    }
-
-    SCIP_CONS* cons[3];
-      for (int i = 0; i < nj; ++i) {
-        Msg::Info("+cj%d (%g)", i, cj[i]);
-      }
-
-        Msg::Info("<= tol %g", tol);
-    SCIP_CALL(SCIPcreateConsLinear(scip, &cons[0], "bound J",
-                                   nj, varj, cj, .0, tol, TRUE,
-                                   TRUE, TRUE, TRUE, TRUE, FALSE,
-                                   FALSE, FALSE, FALSE, FALSE));
-    SCIPconsPrint(cons[0], scip->set, NULL, NULL);
-    SCIP_CALL(SCIPcreateConsLinear(scip, &cons[1], "bound P",
-                                   np, varp, cp, .0, tol, TRUE,
-                                   TRUE, TRUE, TRUE, TRUE, FALSE,
-                                   FALSE, FALSE, FALSE, FALSE));
-    SCIP_CALL(SCIPcreateConsLinear(scip, &cons[2], "difference",
-                                   nj, varj, cj, -tol2, tol2, TRUE,
-                                   TRUE, TRUE, TRUE, TRUE, FALSE,
-                                   FALSE, FALSE, FALSE, FALSE));
-    for (int i = 0; i < np; ++i) {
-      //SCIP_CALL(SCIPaddCoefLinear(scip, cons[2], varp[i], -cp[i]));
-    }
-
-    SCIP_CALL(SCIPsolve(scip));
-    SCIPconsPrint(cons[0], scip->set, NULL, NULL);
-    SCIP_SOL* sol = SCIPgetBestSol(scip);
-    if (!sol) {
-      Msg::Error("Scip did not find a solution");
-    }
-    else {
-      int ind = 0;
-      for (int i = 0; i < nj; ++i) {
-        Msg::Info("j%d = %g", i, SCIPgetSolVal(scip, sol, varj[i]));
-        if (SCIPgetSolVal(scip, sol, varj[i]) > .5) {
-          itJ->second[ind] = itJ->second.back();
-          itJ->second.pop_back();
-        }
-        else ++ind;
-      }
-      ind = 0;
-      for (int i = 0; i < np; ++i) {
-        if (SCIPgetSolVal(scip, sol, varp[i]) > .5) {
-          itP->second[ind] = itP->second.back();
-          itP->second.pop_back();
-        }
-        else ++ind;
-      }
-    }
-
-    for (int i = 0; i < nj; ++i)
-      SCIP_CALL(SCIPreleaseVar(scip, &varj[i]));
-    for (int i = 0; i < np; ++i)
-      SCIP_CALL(SCIPreleaseVar(scip, &varp[i]));
-    //SCIP_CALL(SCIPreleaseCons(scip, &cons[0]));
-    //SCIP_CALL(SCIPreleaseCons(scip, &cons[1]));
-    //SCIP_CALL(SCIPreleaseCons(scip, &cons[2]));
-    SCIP_CALL(SCIPfree(&scip));
-    delete[] varj;
-    delete[] varp;
-    delete[] cj;
-    delete[] cp;
-
-#else
-
-    double rmvedJ = 0, rmvedP = 0;
-    bool changed = true;
-
-    while (changed) {
-      changed = false;
-      double potentialJ = rmvedJ, potentialP = rmvedP;
-      int j = itJ->second.size();
-      int p = itP->second.size();
-      bool found = false;
-
-      while (j > 1 && !found && potentialJ <= tol) {
-        double tmp = itP->second[p-1].val;
-        //if (potentialP - potentialJ > -tol2) found = true;
-        while (potentialP + tmp <= tol && potentialP + tmp - potentialJ <= tol2) {
-          potentialP += tmp;
-          --p;
-          if (p < 1) Msg::Fatal("me");
-          tmp = itP->second[p-1].val;
-          if (potentialP - potentialJ >= -tol2) found = true;
-        }
-        if (!found) {
-          potentialJ += itJ->second[j-1].val;
-          --j;
-          if (j < 1) Msg::Fatal("ma");
-          potentialP = rmvedP;
-          p = itP->second.size();
-        }
-      }
-      if (found) {
-        rmvedJ = potentialJ, rmvedP = potentialP;
-        //countJ2 -= itJ->second.size() - j;
-        //countP3 -= itP->second.size() - p; // TODO
-        itJ->second.erase(itJ->second.begin() + j, itJ->second.end());
-        //Msg::Info("%d %d", p, itP->second.size());
-        itP->second.erase(itP->second.begin() + p, itP->second.end());
-        changed = true;
-      }
-    }
-#endif
-
-
-    if (print) {
-      //Msg::Info("sizes %d %d", itJ->second.size(), itP->second.size());
-      Msg::Info("JJ-after-JJJJJJJJJJJJJJJJJJJ");
-      for (unsigned int i = 0; i < itJ->second.size(); ++i) {
-        Msg::Info("%g", itJ->second[i].val / tol);
-      }
-      Msg::Info("PP-after-PPPPPPPPPPPPPPPPPPP");
-      for (unsigned int i = 0; i < itP->second.size(); ++i) {
-        Msg::Info("%g", itP->second[i].val / tol);
-      }
-    }
-
-    ++itJ;
-    ++itP;
-  }
-  return 0;
-#endif
 }
 
 void MetricCoefficient::getCoefficients(fullMatrix<double> &coeff, bool bezier)
@@ -1170,44 +957,6 @@ double MetricCoefficient::_maxq(const fullMatrix<double> &coeff) const
   return ans;
 }
 
-void MetricCoefficient::_minMaxA(
-    const fullMatrix<double> &coeff, double &min, double &max) const
-{
-  int i = _inequations(0, 0);
-  int j = _inequations(0, 1);
-
-  // TODO : si coeff(0, m) < 0
-
-  min = max = 0;
-  for (int l = 1; l < 7; ++l) {
-    min += coeff(i, l) * coeff(j, l);
-  }
-  min /= coeff(i, 0) * coeff(j, 0);
-  // TODO : si coeff(0, i|j) == 0
-  max = min;
-
-  for (int k = 1; k < _inequations.size1(); ++k) {
-    double tmp = 0;
-    i = _inequations(k, 0);
-    j = _inequations(k, 1);
-    for (int l = 1; l < 7; ++l) {
-      tmp += coeff(i, l) * coeff(j, l);
-    }
-    tmp /= coeff(i, 0) * coeff(j, 0);
-    min = std::min(tmp, min);
-    max = std::max(tmp, max);
-  }
-
-  if (min < 0)
-    Msg::Fatal("minA ne devrait pas etre negatif");
-
-  min = std::sqrt(min);
-  max = std::sqrt(max);
-  double tmp = min;
-  min = 1./max;
-  max = 1./tmp;
-}
-
 void MetricCoefficient::_minMaxA2(
     const fullMatrix<double> &coeff, double &min, double &max) const
 {
diff --git a/Numeric/MetricBasis.h b/Numeric/MetricBasis.h
index 2ea5729fdb..56f9229dc9 100644
--- a/Numeric/MetricBasis.h
+++ b/Numeric/MetricBasis.h
@@ -72,7 +72,7 @@ private:
  private:
   void _computeBezCoeff();
   void _fillInequalities(int order);
-  int _lightenInequalities(double, double, int&, int&); //TODO change
+  void _lightenInequalities(double, int&, int&); //TODO change
   void _interpolateBezierPyramid(const double *uvw, double *minmaxQ);
   void _computeRmin1(fullMatrix<double>&, fullVector<double>&,
                     double &RminLag, double &RminBez, int) const;
@@ -83,7 +83,6 @@ private:
   double _minq(const fullMatrix<double>&) const;
   double _maxp(const fullMatrix<double>&) const;
   double _maxq(const fullMatrix<double>&) const;
-  void _minMaxA(const fullMatrix<double>&, double &min, double &max) const;
   void _minMaxA2(const fullMatrix<double>&, double &min, double &max) const;
   void _minMaxJacobianSqr(const fullVector<double>&, double &min, double &max) const;
   void _minJ2P3(const fullMatrix<double>&, const fullVector<double>&, double &min) const;
-- 
GitLab