*decimate_mesh

Performs mesh decimation on selected components.

Syntax

*decimate_mesh comps_mark_id nodes_mark_id failed_comps_mark_id size_or_factor feature_angle options

Type

HyperMesh Tcl Modify

Description

Performs mesh decimation on selected components. The decimation is performed either based on the element size, or based on a decimation factor.

Inputs

comps_mark_id
The ID of the mark containing the input components. This must also include any 1D multi-leg rigid elements that will be processed by the update_rigids option. Valid values are 1 and 2.
nodes_mark_id
The ID of the mark containing any nodes to be treated as sacred/fixed. These nodes must belong to the initial mesh. These nodes will be maintained during decimation. Valid values are 1 and 2.
failed_comps_mark_id
The ID of the mark to store any failed components. Valid values are 1 and 2.
size_or_factor
If Bit10 is set to 0 in the options flag, this is the element size to use for decimation. This must be larger than the initial mesh size. The coefficient for the decimation is found by dividing the average triangle’s area for the input mesh to the equilateral tria’s area for the output size.
If Bit10 is set to 1 in the options flag, this is the decimation factor.
feature_angle
This specifies the maximum angle between the normals of two connected elements. This value is ignored for shell elements. For 3D elements, the appropriate free faces of shell elements are created and meshed with the given feature angle. This value is also used to construct the connected edges for the failed components. Then these components are decimated in a second attempt.
If this value is less than 1.0, the default value of 85.0 degrees is used.
update_rigids
0 – Do not delete the free legs of any rigidlink/RBE3 elements that are part of the input components.
1 – After decimation, delete the free legs of any rigidlink/RBE3 elements that are part of the input components.
options
Flags that specify various additional options/behaviors. Bit values are used and the value is calculated as (Bit0 + 2*Bit1 + 4*Bit2 + 8*Bit3 + 16*Bit4 + 1024*Bit10).
Bit0
1D handling before coarsening.
  • 0 – Do not utilize this option.
  • 1 – All selected 1D element paths not sharing sacred nodes must be deleted before mesh coarsening. 1D elements paths comprising sacred nodes are preserved. Unselected 1D elements are ignored. Preserved 1D elements which are not free should be attached to the shell mesh after coarsening.
Bit1
1D free element handling after coarsening.
  • 0 – Do not utilize this option.
  • 1 – Selected 1D elements that appear free (are not attached to the shell or solid mesh) after mesh coarsening must be deleted after meshing. 1D elements sharing sacred nodes must be preserved.
Bit2
1D element free leg handling after coarsening.
  • 0 – Do not utilize this option.
  • 1 – Selected 1D multi-leg elements having free legs after mesh coarsening (are not attached to shell or solid mesh) must be updated by deleting the free legs.
Bit3
1D elements convert to plot elements.
  • 0 – Do not utilize this option.
  • 1 – Selected 1D elements remaining after meshing should be converted to plot elements after coarsening.
Bit4
2D elements convert to plot elements.
  • 0 – Do not utilize this option.
  • 1 – Selected 2D elements should be converted to plot elements after coarsening. This flag is utilized only for the OptiStruct user profile.
Bit10
Element size versus decimation factor.
  • 0 – Perform decimation based on element size.
  • 1 – Perform decimation based on a decimation factor.

Examples

Create a decimated mesh with element size 30 using all components. Keep node IDs 16 and 27 as anchor nodes. If the model has rigidlink/RBE3, delete any free legs in the input components:
*createmark components 1 "all"
*createmark nodes 1 16 27
*decimate_mesh 1 1 2 30 45
Create a decimated mesh of all displayed components with deformation factor of 0.5:
*createmark components 1 "displayed"
*createmark nodes 1 ""
*decimate_mesh 1 1 2 0.5 45 1025

Errors

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

Version History

11.0