Go to the documentation of this file.
   23 #include "libmesh/libmesh_common.h" 
   24 #include "libmesh/elem_quality.h" 
   25 #include "libmesh/enum_elem_type.h" 
   26 #include "libmesh/enum_elem_quality.h" 
   50       its_name = 
"Aspect Ratio";
 
   66       its_name = 
"Maximum Angle";
 
   70       its_name = 
"Minimum Angle";
 
   74       its_name = 
"Condition Number";
 
   78       its_name = 
"Distortion";
 
   94       its_name = 
"Diagonal";
 
  102       its_name = 
"AR Gamma";
 
  110       its_name = 
"Jacobian";
 
  114       its_name = 
"Unknown";
 
  133   std::ostringstream desc;
 
  139       desc << 
"Max edge length ratio\n" 
  140            << 
"at element center.\n" 
  142            << 
"Suggested ranges:\n" 
  143            << 
"Hexes: (1 -> 4)\n" 
  144            << 
"Quads: (1 -> 4)";
 
  148       desc << 
"Maximum |cos A|, where A\n" 
  149            << 
"is the angle between edges\n" 
  150            << 
"at element center.\n" 
  152            << 
"Suggested ranges:\n" 
  153            << 
"Hexes: (0 -> 0.5)\n" 
  154            << 
"Quads: (0 -> 0.5)";
 
  158       desc << 
"LIBMESH_DIM / K(Js)\n" 
  160            << 
"LIBMESH_DIM   = element dimension.\n" 
  161            << 
"K(Js) = Condition number of \n" 
  162            << 
"        Jacobian skew matrix.\n" 
  164            << 
"Suggested ranges:\n" 
  165            << 
"Hexes(LIBMESH_DIM=3): (0.3 -> 1)\n" 
  166            << 
"Quads(LIBMESH_DIM=2): (0.3 -> 1)";
 
  170       desc << 
"LIBMESH_DIM / K(Jw)\n" 
  172            << 
"LIBMESH_DIM   = element dimension.\n" 
  173            << 
"K(Jw) = Condition number of \n" 
  174            << 
"        weighted Jacobian\n" 
  177            << 
"Suggested ranges:\n" 
  178            << 
"Hexes(LIBMESH_DIM=3): (0.3 -> 1)\n" 
  179            << 
"Tets(LIBMESH_DIM=3): (0.2 -> 1)\n" 
  180            << 
"Quads(LIBMESH_DIM=2): (0.3 -> 1).";
 
  184       desc << 
"Largest included angle.\n" 
  186            << 
"Suggested ranges:\n" 
  187            << 
"Quads: (90 -> 135)\n" 
  188            << 
"Triangles: (60 -> 90)";
 
  192       desc << 
"Smallest included angle.\n" 
  194            << 
"Suggested ranges:\n" 
  195            << 
"Quads: (45 -> 90)\n" 
  196            << 
"Triangles: (30 -> 60)";
 
  200       desc << 
"Condition number of the\n" 
  201            << 
"Jacobian matrix.\n" 
  203            << 
"Suggested ranges:\n" 
  204            << 
"Quads: (1 -> 4)\n" 
  205            << 
"Hexes: (1 -> 8)\n" 
  206            << 
"Tris: (1 -> 1.3)\n" 
  211       desc << 
"min |J| * A / <A>\n" 
  213            << 
"|J| = norm of Jacobian matrix\n" 
  214            << 
" A  = actual area\n" 
  215            << 
"<A> = reference area\n" 
  217            << 
"Suggested ranges:\n" 
  218            << 
"Quads: (0.6 -> 1), <A>=4\n" 
  219            << 
"Hexes: (0.6 -> 1), <A>=8\n" 
  220            << 
"Tris: (0.6 -> 1), <A>=1/2\n" 
  221            << 
"Tets: (0.6 -> 1), <A>=1/6";
 
  225       desc << 
"Maximum ratio of lengths\n" 
  226            << 
"derived from opposite edges.\n" 
  228            << 
"Suggested ranges:\n" 
  229            << 
"Quads: (0.7 -> 1)\n" 
  230            << 
"Hexes: (0.4 -> 1)";
 
  236            << 
"D = minimum dihedral angle\n" 
  237            << 
"    formed by diagonals.\n" 
  239            << 
"Suggested ranges:\n" 
  240            << 
"Quads: (0.9 -> 1)";
 
  244       desc << 
"Sqrt(3) * L_min / L_max\n" 
  246            << 
"L_min = minimum edge length.\n" 
  247            << 
"L_max = maximum edge length.\n" 
  249            << 
"Suggested ranges:\n" 
  250            << 
"Quads: (0.25 -> 1)\n" 
  251            << 
"Hexes: (0.25 -> 1)";
 
  255       desc << 
"D_min / D_max\n" 
  257            << 
"D_min = minimum diagonal.\n" 
  258            << 
"D_max = maximum diagonal.\n" 
  260            << 
"Suggested ranges:\n" 
  261            << 
"Hexes: (0.65 -> 1)";
 
  265       desc << 
"CR / (3 * IR)\n" 
  267            << 
"CR = circumsphere radius\n" 
  268            << 
"IR = inscribed sphere radius\n" 
  270            << 
"Suggested ranges:\n" 
  275       desc << 
"S^(3/2) / 8.479670 * V\n" 
  277            << 
"S = sum(si*si/6)\n" 
  278            << 
"si = edge length\n" 
  281            << 
"Suggested ranges:\n" 
  286       desc << 
"min (|J|, |1/J|)\n" 
  288            << 
"|J| = norm of Jacobian matrix.\n" 
  290            << 
"Suggested ranges:\n" 
  291            << 
"Quads: (0.3 -> 1)\n" 
  292            << 
"Hexes: (0.5 -> 1)\n" 
  293            << 
"Tris: (0.25 -> 1)\n" 
  294            << 
"Tets: (0.2 -> 1)";
 
  298       desc << 
"Minimum Jacobian divided by\n" 
  299            << 
"the lengths of the LIBMESH_DIM\n" 
  300            << 
"largest edge vectors.\n" 
  302            << 
"LIBMESH_DIM = element dimension.\n" 
  304            << 
"Suggested ranges:\n" 
  305            << 
"Quads: (0.5 -> 1)\n" 
  306            << 
"Hexes: (0.5 -> 1)\n" 
  307            << 
"Tris: (0.5 -> 1.155)\n" 
  308            << 
"Tets: (0.5 -> 1.414)";
 
  326   std::vector<ElemQuality> v;
 
  426 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 
  460       libmesh_error_msg(
"Undefined element type!");
 
  
std::string describe(const ElemQuality q)
This function returns a string containing a short description of q.
 
The libMesh namespace provides an interface to certain functionality in the library.
 
ElemQuality
Defines an enum for element quality metrics.
 
std::vector< ElemQuality > valid(const ElemType t)
Returns all valid quality metrics for element type t.
 
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
 
ElemType
Defines an enum for geometric element types.