See example input and output files for these elements in test/level01/quality.
Characteristic | Equilateral | Sliver | Cap | Needle | Wedge |
---|---|---|---|---|---|
Picture | |||||
Coordinates | 0 0 0 0 1 1 1 0 1 1 1 0 |
1 0 0.1 -1 0 0.1 0 1 -0.1 0 -1 -0.1 |
1 0 0 1 1 0 0 0 0 0.75 0.25 0.1 |
.1 -.1 0 .1 .1 0 -.1 0 0 0 0 1 |
1 0 0 -1 0 0 0 1 0.1 0 1 -0.1 |
Aspect Ratio | 1.0 | 0.2927 | 0.07447 | 0.3429 | 0.2617 |
Min Dihedral Angle | 7.05288E+01 | 1.59424E+01 | 1.57931E+01 | 5.33585E+01 | 1.14212E+01 |
Max Dihedral Angle | 7.05288E+01 | 1.57380E+02 | 1.49549E+02 | 8.74394E+01 | 90.0 |
Max Solid Angle | 3.15863E+01 | 9.26487E+00 | 2.60111E+02 | 5.56182E+01 | 8.19307E+01 |
Min/Max Edge Length Ratio | 1.0 | 7.14143E-01 | 2.59807E-01 | 1.98030E-01 | 0.1 |
*--* ex_id_tet_types
*--* Header Begin
*--* LAGriT Example Identify Sliver, Cap, Needle, Wedge
* Carl Gable
* gable -at- lanl -dot- gov
*
*
*--* Create a random point distribution
*--* Connect them into a tet mesh
*--*
*--*----------------------------------------------------
*--* Header End
*--* ex_id_tet_types
*--*
cmo / create / cmo1 / / / tet
surface / outer / reflect / box / 0,0,0 / 1,1,1
region / r1 / le outer /
mregion / m1 / le outer /
createpts / random / xyz / 0.1 / 0,0,0 / 1,1,1
setpts
connect
dump / gmv / output_tets.gmv
*
* Compute the various tet quality measures
*
* Minimum Dihedral Angle, (degree)
cmo / addatt / cmo1 / ang_mind / ang_mind
* Minimum Dihedral Angle, (radian)
cmo / addatt / cmo1 / ang_minr / ang_minr
* Maximum Dihedral Angle, (degree)
cmo / addatt / cmo1 / ang_maxd / ang_maxd
* Maximum Dihedral Angle, (radian)
cmo / addatt / cmo1 / ang_maxr / ang_maxr
* Minimum Solid Angle, (degree)
cmo / addatt / cmo1 / ang_mind_solid / s_mind
* Minimum Solid Angle, (radian)
cmo / addatt / cmo1 / ang_minr_solid / s_minr
* Maximum Solid Angle, (degree)
cmo / addatt / cmo1 / ang_maxd_solid / s_maxd
* Maximum Solid Angle, (radian)
cmo / addatt / cmo1 / ang_maxr_solid / s_maxr
* Aspect Ratio
quality / aspect / y
* ( minimum edge lenght ) / ( maximum edge length )
quality / edge_ratio / y
* Edge lenght minimum
quality / edge_min / y
* Edge length maximum
quality / edge_max / y
*
* Identify Slivers
*
* Define adjustable parameters to determine cut-off values.
*
define / MIN_DIHEDRAL / 10.0
define / MAX_DIHEDRAL / 170.0
define / MAX_SOLID_ANG_BIG / 170.0
define / MAX_SOLID_ANG_SMALL / 10.0
define / EDGE_RATIO / 0.1
*
eltset / e_dih_small / ang_mind / le / MIN_DIHEDRAL
eltset / e_dih_big / ang_maxd / ge / MAX_DIHEDRAL
eltset / e_solid_big / s_maxd / le / MAX_SOLID_ANG_SMALL
eltset / e_tmp / inter / e_dih_small e_dih_big
eltset / e_sliver / inter / &
e_tmp e_solid_big
*
* Identify Cap elements
*
eltset / e_cap / s_maxd / ge / MAX_SOLID_ANG_BIG
*
* Identify Needle elements
*
eltset / e_edge_ratio / eratio / le / EDGE_RATIO
eltset / e_dih_small / ang_mind / le / MIN_DIHEDRAL
eltset / e_needle / not / e_edge_ratio e_dih_small
*
* Identify Wedge elements
*
eltset / e_wedge / inter / e_edge_ratio e_dih_small
*
* Set up some attributes to tag the elements.
*
cmo/addatt/cmo1/if_sliv/vint/scalar/nelements/-def-/-def-/-def-/1
cmo/addatt/cmo1/if_cap/vint/scalar/nelements/-def-/-def-/-def-/1
cmo/addatt/cmo1/if_ned/vint/scalar/nelements/-def-/-def-/-def-/1
cmo/addatt/cmo1/if_wed/vint/scalar/nelements/-def-/-def-/-def-/1
cmo/setatt/cmo1/if_sliv/eltset get e_sliver/ 2
cmo/setatt/cmo1/if_cap /eltset get e_cap / 2
cmo/setatt/cmo1/if_ned /eltset get e_needle/ 2
cmo/setatt/cmo1/if_wed /eltset get e_wedge / 2
dump / gmv / tet_types.gmv / cmo1
* begin compare here
cmo / status
cmo / printatt / / -all- / minmax
quality
finish