diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 992865cb394e2c0cbd2e4a253506daec0cd654ef..646af460e7604e0fb0dd161268a990e2911f9073 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -1084,7 +1084,7 @@ StringXNumber MeshOptions_Number[] = { { F|O, "RadiusSup" , opt_mesh_radius_sup , 0.0 , "Only display elements whose longest edge is smaller than RadiusSup" }, { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-9 , - "Random factor used in the 2D meshing algorithm (use larger values if lc * rand approaches machine accuracy)" }, + "Random factor used in the 2D meshing algorithm (should be increased if RandomFactor * size(triangle)/size(model) approaches machine accuracy)" }, { F|O, "RefineSteps" , opt_mesh_refine_steps , 10 , "Number of refinement steps in the MeshAdapt-based 2D algorithms" }, { F|O, "ReverseAllNormals" , opt_mesh_reverse_all_normals , 0. , diff --git a/Numeric/FunctionSpace.cpp b/Numeric/FunctionSpace.cpp index eb18b8e322155b3630a2f00238836f2d5d291cff..461bfca03ba7184e48795ba6ccb6e18ed9c7c378 100644 --- a/Numeric/FunctionSpace.cpp +++ b/Numeric/FunctionSpace.cpp @@ -537,21 +537,9 @@ gmshMatrix<double> generateLagrangeMonomialCoefficients(const gmshMatrix<double> } } - double det = Vandermonde.determinant(); - - if (det == 0.){ - Msg::Fatal("Vandermonde matrix has zero determinant!?"); - return gmshMatrix<double>(1, 1); - } gmshMatrix<double> coefficient(ndofs, ndofs); - for (int i = 0; i < ndofs; i++) { - for (int j = 0; j < ndofs; j++) { - int f = (i + j) % 2 == 0 ? 1 : -1; - gmshMatrix<double> cofactor = Vandermonde.cofactor(i, j); - coefficient(i, j) = f * cofactor.determinant() / det; - } - } - return coefficient; + Vandermonde.invert(coefficient); + return coefficient.transpose(); } std::map<int, gmshFunctionSpace> gmshFunctionSpaces::fs;