Model.hm_collisiongetconfig#

Model.hm_collisiongetconfig(options)#

Converts keywords into a numerical value for the configuration of the collision detection module. The returned value is used for the config argument to Model.hm_collisioninit() or Model.collisioncheck2_temp().

Parameters:

options (hwStringList) –

A list with available keywords that this function can take. The following inputs are applicable to Model.hm_collisioninit() or Model.collisioncheck2_temp():

  • intersect_planar

If listed, consider coplanar facets which are partially/fully overlapping, within a given tolerance defined by Model.hm_collisoininit(), as intersected.

If not listed, do not consider these planar intersections (default for opcode engine). This is ignored by the collirad engine.

  • penetrat_min_overlap

If listed, consider only penetrations between two facets if they have an overlap greater than a given tolerance defined by Model.hm_collisioninit() (not compatible with the collirad engine).

If not listed, such penetrations are even reported if a node of one of the facets penetrates exactly onto the edge of the other facet (default).

This is ignored if any of the options edge_penetration, midside_nodes or split_quads are used in Model.hm_collisionentitycreate().

The following inputs are applicable to Model.hm_collisioninit() only:

  • collirad

If listed, switches to the collirad collision detection engine, which is mainly based on Radioss algorithms, and provides an automatic fix.

If not listed, the default opcode collision detection engine is used, which supports some additional options, but does not support an automatic fix.

The following inputs are applicable to Model.collisioncheck2_temp() only:

  • constant_gap

If listed, the thickness argument of Model.collisioncheck2_temp() is used as a constant/uniform thickness. This is equivalent to passing thickness_type 0 to Model.hm_collisionentitycreate().

If not listed, the thickness argument of Model.collisioncheck2_temp() is used as a multiplier for the element thickness when using the collirad engine, or ignored when using the opcode engine.

  • edge2edge

If listed, edge-to-edge penetrations are considered. This is equivalent to the edge_penetration flag in Model.hm_collisionentitycreate().

If not listed, only node-to-surface penetrations are considered.

  • flat_boundary_shell_edge

If listed, configures the collirad penetration check to flatten the secondary nodes and main edges along shell external boundaries.

This is ignored for the opcode engine.

  • intersections

If listed, intersections are checked.

  • intersections_no_edge_on_face

If listed, configures the collirad intersection check to not report facet edges lying flush on facet faces as intersections.

This is ignored for the opcode engine.

  • neighborhood

If listed, configures the collirad penetration check to ignore penetrations of neighboring elements due to thicknesses being greater than element sizes. This corresponds to using the Iremgap 2 option in Radioss contact interfaces.

This is also equivalent to adding 100 to thickness_type for Model.hm_collisionentitycreate().

If not listed, such undesired penetrations may be reported, but the check is faster.

This is ignored for the opcode engine.

  • penetrations

If listed, penetrations are checked.

  • restrict_segment_gaps_to_element_sizes

If listed, configures the collirad penetration check to restrict main and secondary thicknesses to the minimum of element sizes.

This is equivalent to adding 1000 to the thickness_type argument for Model.hm_collisionentitycreate(). This option overrides the option thick_reduction if both are listed. This is ignored for the opcode engine.

  • self

If listed, include self checks in Model.collisioncheck2_temp(). This is equivalent to the self_check flag in Model.hm_collisioncheck().

If not listed, self checks are not included (not compatible with the collirad engine).

  • thick_reduction

If listed, configures the collirad penetration check to restrict the thicknesses of the elements to 40% of their size each. This also avoids undesired penetrations of neighboring elements due to thicknesses being greater than element sizes. This corresponds to the behavior of some Radioss contacts.

This is equivalent to adding 200 to the thickness_type argument for Model.hm_collisionentitycreate().

Ignored for the opcode engine.

Returns:

Example#

Configure the collision detection for planar intersections#
import hm
import hm.entities as ent

model = hm.Model()

_, result = model.hm_collisiongetconfig(options=["intersect_planar"])
config = result.config

model.hm_collisioninit(config=config)