Skip to content
Snippets Groups Projects
Commit bec8701a authored by Amaury Johnen's avatar Amaury Johnen
Browse files

fix bugs

parent 474f53e8
No related branches found
No related tags found
No related merge requests found
...@@ -144,7 +144,7 @@ static void GetQualityMeasure(std::vector<T*> &ele, ...@@ -144,7 +144,7 @@ static void GetQualityMeasure(std::vector<T*> &ele,
if(s > (2*j-100) / 100. && s <= (2*j-98) / 100.) quality[0][j]++; if(s > (2*j-100) / 100. && s <= (2*j-98) / 100.) quality[0][j]++;
if(g > j / 100. && g <= (j + 1) / 100.) quality[1][j]++; if(g > j / 100. && g <= (j + 1) / 100.) quality[1][j]++;
if(r > j / 100. && r <= (j + 1) / 100.) quality[2][j]++; if(r > j / 100. && r <= (j + 1) / 100.) quality[2][j]++;
if(e > (2*j-100) / 100. && e <= (2*j-98) / 100.) quality[4][j]++; if(e > (2*j-100) / 100. && e <= (2*j-98) / 100.) quality[3][j]++;
} }
} }
} }
......
...@@ -20,7 +20,7 @@ static const double cTri = 2/std::sqrt(3); ...@@ -20,7 +20,7 @@ static const double cTri = 2/std::sqrt(3);
static const double cTet = std::sqrt(2); static const double cTet = std::sqrt(2);
static const double cPyr = std::sqrt(2); static const double cPyr = std::sqrt(2);
static void computeCoeffLengthVectors_(const fullMatrix<double> &mat, static inline void computeCoeffLengthVectors_(const fullMatrix<double> &mat,
fullMatrix<double> &coeff, fullMatrix<double> &coeff,
int type, int numCoeff = -1) int type, int numCoeff = -1)
{ {
...@@ -106,7 +106,7 @@ static void computeCoeffLengthVectors_(const fullMatrix<double> &mat, ...@@ -106,7 +106,7 @@ static void computeCoeffLengthVectors_(const fullMatrix<double> &mat,
} }
} }
static void computeIGE_(const fullVector<double> &det, static inline void computeIGE_(const fullVector<double> &det,
const fullMatrix<double> &v, const fullMatrix<double> &v,
fullVector<double> &ige, fullVector<double> &ige,
int type) int type)
...@@ -124,18 +124,21 @@ static void computeIGE_(const fullVector<double> &det, ...@@ -124,18 +124,21 @@ static void computeIGE_(const fullVector<double> &det,
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ige(i) = det(i)/v(i, 0)/v(i, 1)/v(i, 2); ige(i) = det(i)/v(i, 0)/v(i, 1)/v(i, 2);
} }
break;
case TYPE_TRI: case TYPE_TRI:
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ige(i) = cTri * det(i) * (1/v(i,0)/v(i,1) + ige(i) = cTri * det(i) * (1/v(i,0)/v(i,1) +
1/v(i,0)/v(i,2) + 1/v(i,0)/v(i,2) +
1/v(i,1)/v(i,2)) / 3; 1/v(i,1)/v(i,2)) / 3;
} }
break;
case TYPE_PRI: case TYPE_PRI:
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ige(i) = cTri * det(i) * (1/v(i,0)/v(i,1)/v(i,2) + ige(i) = cTri * det(i) * (1/v(i,0)/v(i,1)/v(i,2) +
1/v(i,0)/v(i,3)/v(i,2) + 1/v(i,0)/v(i,3)/v(i,2) +
1/v(i,1)/v(i,3)/v(i,2)) / 3; 1/v(i,1)/v(i,3)/v(i,2)) / 3;
} }
break;
case TYPE_TET: case TYPE_TET:
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ige(i) = cTet * det(i) * (1/v(i,0)/v(i,5)/v(i,1) + ige(i) = cTet * det(i) * (1/v(i,0)/v(i,5)/v(i,1) +
...@@ -151,6 +154,7 @@ static void computeIGE_(const fullVector<double> &det, ...@@ -151,6 +154,7 @@ static void computeIGE_(const fullVector<double> &det,
1/v(i,2)/v(i,3)/v(i,4) + 1/v(i,2)/v(i,3)/v(i,4) +
1/v(i,2)/v(i,3)/v(i,5))/ 12; 1/v(i,2)/v(i,3)/v(i,5))/ 12;
} }
break;
case TYPE_PYR: case TYPE_PYR:
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ige(i) = cPyr * det(i) * (1/v(i,0)/v(i,1)/v(i,2) + ige(i) = cPyr * det(i) * (1/v(i,0)/v(i,1)/v(i,2) +
...@@ -162,7 +166,56 @@ static void computeIGE_(const fullVector<double> &det, ...@@ -162,7 +166,56 @@ static void computeIGE_(const fullVector<double> &det,
1/v(i,4)/v(i,5)/v(i,2) + 1/v(i,4)/v(i,5)/v(i,2) +
1/v(i,4)/v(i,5)/v(i,3) ) / 8; 1/v(i,4)/v(i,5)/v(i,3) ) / 8;
} }
break;
} }
// for (int i = 0; i < sz; i++) {
// double sJ;
// switch (type) {
// case TYPE_QUA:
// ige(i) = det(i) / v(i, 0) / v(i, 1);
// break;
// case TYPE_HEX:
// ige(i) = det(i) / v(i, 0) / v(i, 1) / v(i, 2);
// break;
// case TYPE_TRI:
// ige(i) = cTri * det(i) * (1 / v(i, 0) / v(i, 1) +
// 1 / v(i, 0) / v(i, 2) +
// 1 / v(i, 1) / v(i, 2)) / 3;
// break;
// case TYPE_TET:
// ige(i) = cTet * det(i) * (1 / v(i, 0) / v(i, 5) / v(i, 1) +
// 1 / v(i, 0) / v(i, 5) / v(i, 2) +
// 1 / v(i, 0) / v(i, 5) / v(i, 3) +
// 1 / v(i, 0) / v(i, 5) / v(i, 4) +
// 1 / v(i, 1) / v(i, 4) / v(i, 0) +
// 1 / v(i, 1) / v(i, 4) / v(i, 2) +
// 1 / v(i, 1) / v(i, 4) / v(i, 3) +
// 1 / v(i, 1) / v(i, 4) / v(i, 5) +
// 1 / v(i, 2) / v(i, 3) / v(i, 0) +
// 1 / v(i, 2) / v(i, 3) / v(i, 1) +
// 1 / v(i, 2) / v(i, 3) / v(i, 4) +
// 1 / v(i, 2) / v(i, 3) / v(i, 5)) / 12;
// break;
// case TYPE_PRI:
// ige(i) = cTri * det(i) * (1 / v(i, 0) / v(i, 1) / v(i, 2) +
// 1 / v(i, 0) / v(i, 3) / v(i, 2) +
// 1 / v(i, 1) / v(i, 3) / v(i, 2)) / 3;
// break;
// case TYPE_PYR:
// ige(i) = cPyr * det(i) * (1 / v(i, 0) / v(i, 1) / v(i, 2) +
// 1 / v(i, 0) / v(i, 1) / v(i, 3) +
// 1 / v(i, 0) / v(i, 1) / v(i, 4) +
// 1 / v(i, 0) / v(i, 1) / v(i, 5) +
// 1 / v(i, 2) / v(i, 3) / v(i, 4) +
// 1 / v(i, 2) / v(i, 3) / v(i, 5) +
// 1 / v(i, 4) / v(i, 5) / v(i, 2) +
// 1 / v(i, 4) / v(i, 5) / v(i, 3)) / 8;
// break;
// default:
// Msg::Error("Unkown type for IGE computation");
// return;
// }
// }
} }
namespace jacobianBasedQuality { namespace jacobianBasedQuality {
...@@ -727,7 +780,7 @@ double _CoeffDataIGE::_computeLowerBound() const ...@@ -727,7 +780,7 @@ double _CoeffDataIGE::_computeLowerBound() const
} }
fullMatrix<double> v; fullMatrix<double> v;
_getCoeffLengthVectors(v, false); computeCoeffLengthVectors_(_coeffsJacMat, v, _type);
fullVector<double> prox[6]; fullVector<double> prox[6];
for (int i = 0; i < v.size2(); ++i) { for (int i = 0; i < v.size2(); ++i) {
......
...@@ -32,7 +32,7 @@ class _CoeffData ...@@ -32,7 +32,7 @@ class _CoeffData
protected: protected:
double _minL, _maxL; //Extremum of Jac at corners double _minL, _maxL; //Extremum of Jac at corners
double _minB, _maxB; //Extremum of bezier coefficients double _minB, _maxB; //Extremum of bezier coefficients
int _depth; const int _depth;
public: public:
_CoeffData(int depth) : _minL(0), _maxL(0), _minB(0), _maxB(0), _CoeffData(int depth) : _minL(0), _maxL(0), _minB(0), _maxB(0),
...@@ -78,7 +78,7 @@ private: ...@@ -78,7 +78,7 @@ private:
const fullVector<double> _coeffsJacDet; const fullVector<double> _coeffsJacDet;
const fullMatrix<double> _coeffsJacMat; const fullMatrix<double> _coeffsJacMat;
const bezierBasis *_bfsDet, *_bfsMat; const bezierBasis *_bfsDet, *_bfsMat;
int _type; const int _type;
public: public:
_CoeffDataIGE(fullVector<double> &det, _CoeffDataIGE(fullVector<double> &det,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment