Challenge

Week - 11 - Element quality check

Objective:

  • Create element quality check macro for 2D and 3D elements
  • Create a button for each criteria
  • On pressing the button the elements should be highlighted using temp nodes
  • Entry boxes next to the buttons will accept the quality criteria value

Problem Statement:

To create the tcl script for checking of the element quality criteria for both the 2D and 3D elements with user input next to command buttons.

Code:

set a .window
catch {destroy $a}
toplevel $a -class toplevel
wm title $a "ElementQuality"
wm geometry $a 360x440+100+200
label $a.21 -text "2D" -bg green -font {times 10 bold}; place $a.21 -x 60 -y 00 -width 50 -height 20

button $a.01 -text "Warpage" -command "Warpage" -bg grey -font {times 12 bold}; place $a.01 -x 10 -y 30 -width 100 -height 30

entry $a.02 -textvariable ::warpage ; place $a.02 -x 120 -y 30 -width 40 -height 30

button $a.03 -text "Aspect" -command "Aspect" -bg grey -font {times 12 bold}; place $a.03 -x 10 -y 70 -width 100 -height 30

entry $a.04 -textvariable ::aspect ; place $a.04 -x 120 -y 70 -width 40 -height 30

button $a.05 -text "Skew" -command "Skew" -bg grey -font {times 12 bold}; place $a.05 -x 10 -y 110 -width 100 -height 30

entry $a.06 -textvariable ::skew ; place $a.06 -x 120 -y 110 -width 40 -height 30

button $a.07 -text "MinLength" -command "MinLength" -bg grey -font {times 12 bold}; place $a.07 -x 10 -y 150 -width 100 -height 30

entry $a.08 -textvariable ::minlength ; place $a.08 -x 120 -y 150 -width 40 -height 30

button $a.09 -text "MaxLength" -command "MaxLength" -bg grey -font {times 12 bold}; place $a.09 -x 10 -y 190 -width 100 -height 30

entry $a.10 -textvariable ::maxlength ; place $a.10 -x 120 -y 190 -width 40 -height 30

button $a.11 -text "Jacobian" -command "Jacobian" -bg grey -font {times 12 bold}; place $a.11 -x 10 -y 230 -width 100 -height 30

entry $a.12 -textvariable ::jacobian ; place $a.12 -x 120 -y 230 -width 40 -height 30

button $a.13 -text "TriaMinAngle" -command "TriaMinAngle" -bg grey -font {times 11 bold}; place $a.13 -x 10 -y 270 -width 100 -height 30

entry $a.14 -textvariable ::triaminangle ; place $a.14 -x 120 -y 270 -width 40 -height 30

button $a.15 -text "TriaMaxAngle" -command "TriaMaxAngle" -bg grey -font {times 11 bold}; place $a.15 -x 10 -y 310 -width 100 -height 30

entry $a.16 -textvariable ::triamaxangle ; place $a.16 -x 120 -y 310 -width 40 -height 30

button $a.17 -text "QuadMinAngle" -command "QuadMinAngle" -bg grey -font {times 10 bold}; place $a.17 -x 10 -y 350 -width 100 -height 30

entry $a.18 -textvariable ::quadminangle ; place $a.18 -x 120 -y 350 -width 40 -height 30

button $a.19 -text "QuadMaxAngle" -command "QuadMaxAngle" -bg grey -font {times 10 bold}; place $a.19 -x 10 -y 390 -width 100 -height 30

entry $a.20 -textvariable ::quadmaxangle ; place $a.20 -x 120 -y 390 -width 40 -height 30


label $a.22 -text "3D" -bg green -font {times 10 bold}; place $a.22 -x 200 -y 00 -width 50 -height 20

button $a.23 -text "Warpage" -command "Warpage3D" -bg grey -font {times 12 bold}; place $a.23 -x 180 -y 30 -width 100 -height 30

entry $a.24 -textvariable ::warpage3d ; place $a.24 -x 290 -y 30 -width 40 -height 30

button $a.27 -text "Aspect" -command "Aspect" -bg grey -font {times 12 bold}; place $a.27 -x 180 -y 70 -width 100 -height 30

entry $a.28 -textvariable ::aspect3d ; place $a.28 -x 290 -y 70 -width 40 -height 30

button $a.29 -text "TetCollapse" -command "TetCollapse" -bg grey -font {times 12 bold}; place $a.29 -x 180 -y 110 -width 100 -height 30

entry $a.30 -textvariable ::tetcollapse ; place $a.30 -x 290 -y 110 -width 40 -height 30

button $a.31 -text "MinLength" -command "MinLength" -bg grey -font {times 12 bold}; place $a.31 -x 180 -y 150 -width 100 -height 30

entry $a.32 -textvariable ::minlength3d ; place $a.32 -x 290 -y 150 -width 40 -height 30

button $a.33 -text "MaxLength" -command "MaxLength" -bg grey -font {times 12 bold}; place $a.33 -x 180 -y 190 -width 100 -height 30

entry $a.34 -textvariable ::maxlength3d ; place $a.34 -x 290 -y 190 -width 40 -height 30

button $a.25 -text "Jacobian" -command "Jacobian" -bg grey -font {times 12 bold}; place $a.25 -x 180 -y 230 -width 100 -height 30

entry $a.26 -textvariable ::jacobian3d ; place $a.26 -x 290 -y 230 -width 40 -height 30


proc Warpage {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestwarpage elements 1 $::warpage 2 2 0 "2D Warpage"
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc Warpage3D {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestwarpage elements 1 $::warpage3d 2 4 0 "3D Warpage"
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}
proc Aspect {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestaspect elements 1 $::aspect 2 2 0 " 2D Aspect Ratio "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc Aspect {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestaspect elements 1 $::aspect3d 2 4 0 " 3D Aspect Ratio "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc Skew {} {
*clearmarkall 1
*clearmarkall 2
*createmark elements 1 "displayed"
*elementtestskew elements 1 $::skew 2 2 0 " 2D Skew "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc TetCollapse {} {
*clearmarkall 1
*clearmarkall 2
*createmark elements 1 "displayed"
*elementtesttetracollapse elements 1 $::tetcollapse 2 0 " 3D Tetra Collapse "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}
proc MinLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::minlength 2 1 2 0 " 2D Length < "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc MaxLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::maxlength 2 0 2 0 " 2D Length > "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc MinLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::minlength3d 2 1 4 0 " 3D Length < "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc MaxLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::maxlength3d 2 0 4 0 " 3D Length > "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}


proc Jacobian {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestjacobian elements 1 $::jacobian 2 2 0 " 2D Jacobian "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc Jacobian {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestjacobian elements 1 $::jacobian3d 2 4 0 " 3D Jacobian "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc TriaMinAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::triaminangle 1 2 1 2 0 " 2D Tria Min Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc TriaMaxAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::triamaxangle 1 2 0 2 0 " 2D Tria Max Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc QuadMinAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::quadminangle 0 2 1 2 0 " 2D Quad Min Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

proc QuadMaxAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::quadmaxangle 0 2 0 2 0 " 2D Quad Max Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

Explanation:

set a .window
catch {destroy $a}
toplevel $a -class toplevel
wm title $a "ElementQuality"
wm geometry $a 360x440+100+200
label $a.21 -text "2D" -bg green -font {times 10 bold}; place $a.21 -x 60 -y 00 -width 50 -height 20

button $a.01 -text "Warpage" -command "Warpage" -bg grey -font {times 12 bold}; place $a.01 -x 10 -y 30 -width 100 -height 30

entry $a.02 -textvariable ::warpage ; place $a.02 -x 120 -y 30 -width 40 -height 30

button $a.03 -text "Aspect" -command "Aspect" -bg grey -font {times 12 bold}; place $a.03 -x 10 -y 70 -width 100 -height 30

entry $a.04 -textvariable ::aspect ; place $a.04 -x 120 -y 70 -width 40 -height 30

button $a.05 -text "Skew" -command "Skew" -bg grey -font {times 12 bold}; place $a.05 -x 10 -y 110 -width 100 -height 30

entry $a.06 -textvariable ::skew ; place $a.06 -x 120 -y 110 -width 40 -height 30

button $a.07 -text "MinLength" -command "MinLength" -bg grey -font {times 12 bold}; place $a.07 -x 10 -y 150 -width 100 -height 30

entry $a.08 -textvariable ::minlength ; place $a.08 -x 120 -y 150 -width 40 -height 30

button $a.09 -text "MaxLength" -command "MaxLength" -bg grey -font {times 12 bold}; place $a.09 -x 10 -y 190 -width 100 -height 30

entry $a.10 -textvariable ::maxlength ; place $a.10 -x 120 -y 190 -width 40 -height 30

button $a.11 -text "Jacobian" -command "Jacobian" -bg grey -font {times 12 bold}; place $a.11 -x 10 -y 230 -width 100 -height 30

entry $a.12 -textvariable ::jacobian ; place $a.12 -x 120 -y 230 -width 40 -height 30

button $a.13 -text "TriaMinAngle" -command "TriaMinAngle" -bg grey -font {times 11 bold}; place $a.13 -x 10 -y 270 -width 100 -height 30

entry $a.14 -textvariable ::triaminangle ; place $a.14 -x 120 -y 270 -width 40 -height 30

button $a.15 -text "TriaMaxAngle" -command "TriaMaxAngle" -bg grey -font {times 11 bold}; place $a.15 -x 10 -y 310 -width 100 -height 30

entry $a.16 -textvariable ::triamaxangle ; place $a.16 -x 120 -y 310 -width 40 -height 30

button $a.17 -text "QuadMinAngle" -command "QuadMinAngle" -bg grey -font {times 10 bold}; place $a.17 -x 10 -y 350 -width 100 -height 30

entry $a.18 -textvariable ::quadminangle ; place $a.18 -x 120 -y 350 -width 40 -height 30

button $a.19 -text "QuadMaxAngle" -command "QuadMaxAngle" -bg grey -font {times 10 bold}; place $a.19 -x 10 -y 390 -width 100 -height 30

entry $a.20 -textvariable ::quadmaxangle ; place $a.20 -x 120 -y 390 -width 40 -height 30


label $a.22 -text "3D" -bg green -font {times 10 bold}; place $a.22 -x 200 -y 00 -width 50 -height 20

button $a.23 -text "Warpage" -command "Warpage3D" -bg grey -font {times 12 bold}; place $a.23 -x 180 -y 30 -width 100 -height 30

entry $a.24 -textvariable ::warpage3d ; place $a.24 -x 290 -y 30 -width 40 -height 30

button $a.27 -text "Aspect" -command "Aspect" -bg grey -font {times 12 bold}; place $a.27 -x 180 -y 70 -width 100 -height 30

entry $a.28 -textvariable ::aspect3d ; place $a.28 -x 290 -y 70 -width 40 -height 30

button $a.29 -text "TetCollapse" -command "TetCollapse" -bg grey -font {times 12 bold}; place $a.29 -x 180 -y 110 -width 100 -height 30

entry $a.30 -textvariable ::tetcollapse ; place $a.30 -x 290 -y 110 -width 40 -height 30

button $a.31 -text "MinLength" -command "MinLength" -bg grey -font {times 12 bold}; place $a.31 -x 180 -y 150 -width 100 -height 30

entry $a.32 -textvariable ::minlength3d ; place $a.32 -x 290 -y 150 -width 40 -height 30

button $a.33 -text "MaxLength" -command "MaxLength" -bg grey -font {times 12 bold}; place $a.33 -x 180 -y 190 -width 100 -height 30

entry $a.34 -textvariable ::maxlength3d ; place $a.34 -x 290 -y 190 -width 40 -height 30

button $a.25 -text "Jacobian" -command "Jacobian" -bg grey -font {times 12 bold}; place $a.25 -x 180 -y 230 -width 100 -height 30

entry $a.26 -textvariable ::jacobian3d ; place $a.26 -x 290 -y 230 -width 40 -height 30


proc Warpage {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestwarpage elements 1 $::warpage 2 2 0 "2D Warpage"
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# Clearing the saved list
# clearing the node list -- temporary nodes
# saving the displayed elements
# checking the warpage of elements in 2d elements
# saving the failed elements
# reversing the elements
# creating nodes on the displayed elements
# unmasking the elements

proc Warpage3D {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestwarpage elements 1 $::warpage3d 2 4 0 "3D Warpage"
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# Clearing the saved list
# clearing the node list -- temporary nodes
# saving the displayed elements
# checking the warpage of elements in 3d elements
# saving the failed elements
# reversing the elements
# creating nodes on the displayed elements
# unmasking the elements
proc Aspect {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestaspect elements 1 $::aspect 2 2 0 " 2D Aspect Ratio "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# Clearing the saved list
# clearing the node list -- temporary nodes
# saving the displayed elements
# checking the aspect of elements in 2d elements
# saving the failed elements
# reversing the elements
# creating nodes on the displayed elements
# unmasking the elements
proc Aspect {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestaspect elements 1 $::aspect3d 2 4 0 " 3D Aspect Ratio "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# Clearing the saved list
# clearing the node list -- temporary nodes
# saving the displayed elements
# checking the aspect of elements in 3d elements
# saving the failed elements
# reversing the elements
# creating nodes on the displayed elements
# unmasking the elements
proc Skew {} {
*clearmarkall 1
*clearmarkall 2
*createmark elements 1 "displayed"
*elementtestskew elements 1 $::skew 2 2 0 " 2D Skew "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# Clearing the saved list
# clearing the node list -- temporary nodes
# saving the displayed elements
# checking the skew of elements in 2d elements
# saving the failed elements
# reversing the elements
# creating nodes on the displayed elements
# unmasking the elements
proc TetCollapse {} {
*clearmarkall 1
*clearmarkall 2
*createmark elements 1 "displayed"
*elementtesttetracollapse elements 1 $::tetcollapse 2 0 " 3D Tetra Collapse "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the tet collapse of the 3D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc MinLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::minlength 2 1 2 0 " 2D Length < "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the min length angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc MaxLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::maxlength 2 0 2 0 " 2D Length > "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}


# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the max length angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc MinLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::minlength3d 2 1 4 0 " 3D Length < "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the min length angle of the 3D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc MaxLength {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestlength elements 1 $::maxlength3d 2 0 4 0 " 3D Length > "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the max length angle of the 3D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements


proc Jacobian {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestjacobian elements 1 $::jacobian 2 2 0 " 2D Jacobian "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the jacobian of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc Jacobian {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestjacobian elements 1 $::jacobian3d 2 4 0 " 3D Jacobian "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}


# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the jacobian of the 3D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc TriaMinAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::triaminangle 1 2 1 2 0 " 2D Tria Min Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}


# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the mintria angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc TriaMaxAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::triamaxangle 1 2 0 2 0 " 2D Tria Max Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}

# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the maxtria angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements


proc QuadMinAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::quadminangle 0 2 1 2 0 " 2D Quad Min Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}
# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the minquad angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

proc QuadMaxAngle {} {
*clearmarkall 1
*clearmarkall 2
*nodecleartempmark
*createmark elements 1 "displayed"
*elementtestinterangle elements 1 $::quadmaxangle 0 2 0 2 0 " 2D Quad Max Angle "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*unmaskall2
}
# For clearing the previously saved list
# clearing of the node list such as temporary nodes
# saving the displayed elements from the visible screen
# checking the maxquad angle of the 2D elements
# saved the failed elements
# reversing of the elements
# creating nodes on the displayed elements
# unmasking all the elements

Conclusion:

Thus, i created the element quality check macro for 2D and 3D elements for each criteria.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.