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.