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,
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(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);
static const double cTet = 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,
int type, int numCoeff = -1)
{
......@@ -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,
fullVector<double> &ige,
int type)
......@@ -124,18 +124,21 @@ static void computeIGE_(const fullVector<double> &det,
for (int i = 0; i < sz; i++) {
ige(i) = det(i)/v(i, 0)/v(i, 1)/v(i, 2);
}
break;
case TYPE_TRI:
for (int i = 0; i < sz; i++) {
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_PRI:
for (int i = 0; i < sz; i++) {
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_TET:
for (int i = 0; i < sz; i++) {
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,
1/v(i,2)/v(i,3)/v(i,4) +
1/v(i,2)/v(i,3)/v(i,5))/ 12;
}
break;
case TYPE_PYR:
for (int i = 0; i < sz; i++) {
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,
1/v(i,4)/v(i,5)/v(i,2) +
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 {
......@@ -727,7 +780,7 @@ double _CoeffDataIGE::_computeLowerBound() const
}
fullMatrix<double> v;
_getCoeffLengthVectors(v, false);
computeCoeffLengthVectors_(_coeffsJacMat, v, _type);
fullVector<double> prox[6];
for (int i = 0; i < v.size2(); ++i) {
......
......@@ -32,7 +32,7 @@ class _CoeffData
protected:
double _minL, _maxL; //Extremum of Jac at corners
double _minB, _maxB; //Extremum of bezier coefficients
int _depth;
const int _depth;
public:
_CoeffData(int depth) : _minL(0), _maxL(0), _minB(0), _maxB(0),
......@@ -78,7 +78,7 @@ private:
const fullVector<double> _coeffsJacDet;
const fullMatrix<double> _coeffsJacMat;
const bezierBasis *_bfsDet, *_bfsMat;
int _type;
const int _type;
public:
_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