hm_getmeshvolumesinfo

Returns the number of volumes and lists containing the element IDs and volume indices for each input element.

Syntax

hm_getmeshvolumesinfo mark_id mode

Type

HyperMesh Tcl Query

Description

This command returns the number of volumes and multiple lists containing the element IDs and volume indices for each input element.

Inputs

mark_id
The mark of elements to find volumes for. Valid values are 1 and 2.
mode
0: internal voids considered as "voids" and do not make a new volume
1: internal voids considered as new volumes

The output from this command is in the following format:

{n} {elem_id1 volume_i1 volume_j1} {elem_id2 volume_i2 volume_j2} ...
n –  number of identified volumes
{elem_id volume_i volume_j}
– list containing the ID of the shell element and a pair of volumes of corresponding element sides. The first volume (i) corresponds to the volume on the shell element side with normal pointing out. A volume of 0 represents free space (no volume).

If 0 volumes are detected, only {n} is returned.

Example

To orient all shell elements so that the normal points toward the inside of the volume with the smallest ID (or inside if there is only one volume):

*createmark elements 1 displayed
set volumes_list [hm_getmeshvolumesinfo 1 0]
set num_volumes [lindex $volumes_list 0]
set volumes_list [lreplace $volumes_list 0 0]
set reverse_list""
foreach elem $volumes_list{
    set elemid [lindex $elem 0] 
    set vol1 [lindex $elem 1]
    set vol2 [lindex $elem 2]
   if {$vol1 > $vol2} {
                lappend reverse_list $elemid
             }
}
if { [llength $reverse_list ] } {  
             *clearmark elements 2    
              eval *createmark elements 2 $reverse_list       
              eval *normalsreverse elements 2 1.e-10
              *clearmark elements 2}

Errors

If mark_id is invalid, you will get the following error:

hm_getmeshvolumesinfo: invalid markmask specified.

If mark_id is empty, you will get the following error:

hm_getmeshvolumesinfo: No valid elements specified.
Incorrect usage results in a Tcl error. To detect errors, you can use the catch command:
if { [ catch {command_name...} ] } {
   # Handle error
}

Version History

9.0