2020 API Programmer's Guide

Colors

HyperMesh now has support for RGB colors, instead of just the limted 64 color pallete. The following items should be noted:
  • All entities that support color now also have a color_rgb data name.
  • *createentity/*createentitysameas/*setvalue - The color data name treats values 1-64 as legacy colors, and all other values as RGB. The color_rgb data name treats all values as RGB.
  • hm_getvalue - The color data name continues to return values 1-64 only, and gives the "closest" match to an assigned RGB color. The color_rgb data name returns the actual RGB color value.
  • All other commands that take color as input continue to only accept values 1-64 as they always have.

Command Files

There have been several changes to the command file behavior on Windows:
  • Command files are now locked to a single HyperMesh session. The command files remain open and cannot be externally modified while their session is active.
  • The default command file is now named command1.tcl, and additional command files are named command2.tcl, command3.tcl, etc...
  • Each HyperMesh session started within the same working directory will use/reuse the first available and unlocked command file name. Subsequent concurrent sessions use the next available command file. For example:
    • Starting session 1 will use command1.tcl
    • Starting session 2 will use command2.tcl
    • Closing session 1 unlocks command1.tcl
    • Starting session 3 will reuse command1.tcl
    • Starting session 4 will use command3.tcl
    • Closing session 2 will unlock command2.tcl
    • Starting session 5 will use command2.tcl
  • The environment variables HM_COMMANDFILE_DIR and HM_COMMANDFILE_MODE are still applicable and their behavior is not changed.
  • Linux is not changed and follows legacy behaviors.

Compilers

HyperWorks 2020 has been upgraded to use new compilers. This means that users compiling custom FE Input and Result Readers, or ExtAPI programs, need to be aware of the new compiler support:
  • Windows: Visual Studio 2019 (16.3.7)
  • Linux: GCC version 8.3.1 (Red Hat 7.4) (GCC)

Connector Auto Components

New connector realization components are no longer created in the current part. To facilitate the new modularity of the subsystem entity, connector realization components are now created in the model root, or within an appropriate subsystem.

Due to the dynamic nature of the realization component creation, a realization that used to create a single global component may now create multiple components (in different subsystems). If the realization components are created within a subsystem, the component name has the string _SS[subsystem ID] appended to the end to keep it unique. Scripts can use the hm_ce_generatenamefromsubsystem API to determine if the _SS[subsystem ID] string was added or not for a given connector. Any existing script logic assuming the connector realization component is organized to the current part (or new realized elements are organized into the current component) may need to be revisited and/or reworked.

Contactsurfs to Sets

Keywords previously mapped to the contactsurfs entity have been migrated to the sets entity (of type segment) for the following profiles:

  • Abaqus (including SURFACE groups remapping to sets)
  • EXODUS
  • LS-DYNA
  • Nastran
  • OptiStruct
  • Radioss

Relevant contactsurfs data names are now accessible through new sets data names. Below are a few examples.

To create a new set segment, use the same cardimage as before:
//LsDyna
*createentity sets cardimage=setSegment
//Radioss
*createentity sets cardimage=surfSeg
//OS
*createentity sets cardimage=SURF
A generic set segment can be created as:
*createentity sets support=1
The support data name can also be queried to distinguish between set segments (1) and standard/legacy sets (-1).
To update various data names:
*setvalue sets id=$id elements=$list_of_element_ids
*setvalue sets id=$id faces=$faces
*setvalue sets id=$id facesmax=$facesmax
*setvalue sets id=$id facecode=$facecode
*setvalue sets id=$id facetype=$facetype
*setvalue sets id=$id reversecode=$reversecode
*setvalue sets id=$id node1=$node1
*setvalue sets id=$id node2=$node2
*setvalue sets id=$id node3=$node3
*setvalue sets id=$id node4=$node4
*setvalue sets id=$id node5=$node5
*setvalue sets id=$id node6=$node6
*setvalue sets id=$id node7=$node7
*setvalue sets id=$id node8=$node8
A number of new APIs have been added that are specific to the new sets behaviors. While the legacy APIs continue to work, it is recommended for scripters to update to the new set-based versions where applicable:
Legacy Contactsurfs Commands New Sets Commands
*addfacestocontactsurf *segmentsetaddfaces
*addfacestocontactsurfusingfacenumber *segmentsetaddfacesusingfacenumber
*addshellstocontactsurf *segmentsetaddshells
*adjustcontactsurfacenormal *segmentsetadjustnormal
*contactsurfcreatewithfaces *segmentsetcreatewithfaces
*contactsurfcreatewithfacesusingfacenumber *segmentsetcreateusingfacenumber
*contactsurfcreatewithshells *segmentsetcreatewithshells
*removeelemsfromcontactsurf *segmentsetremoveelems
*removeelemsfromcontactsurfusingnodes *segmentsetremoveelemsusingnodes
*reversecontactsurfnormals *segmentsetreversenormals
  *segmentsetaddmixedfaces
  *segmentsetcreatewithmixedfaces

Many legacy APIs that operate on contactsurfs have been updated so that they continue to work as before, by internally redirecting to operate on sets. A major exception is the Abaqus interface, which is detailed later in this section. There are also a few exceptions to legacy APIs that require either script updates or attention from users:

  • *createentitypanel contactsurfs
    This now posts the panel for selecting sets, so users must select a relevant set segment.
  • If a user creates a contactsurf in a profile where the migration is not yet supported, and then switches to a supported profile and continues to work with legacy scripts, the results may be unexpected.
  • Any hard-coded contactsurf IDs used in scripts may not give consistent/correct results since contactsurfs are redirected to sets.
  • When creating, renumbering or renaming a contactsurf and a hard-coded name or ID is then subsequently used to access that contactsurf, this might not work as expected. For example:
    *createentity contactsurfs cardimage=setSegment
    *setvalue contactsurfs id=1 id=500
    Should be updated as:
    *createentity contactsurfs cardimage=setSegment
    *setvalue contactsurfs id=[hm_latestentityid contactsurfs] id=500
  • Clearing a mark of contactsurfs will also clear all the sets from the mark:
    *createmark contactsurfs 1 all
    *createmark sets 1 all
    *clearmark contactsurfs 1
    This will clear both contactsurfs and sets from the mark. A possible solution for this is to separate the logic for contactsurfs and sets:
    *createmark contactsurfs 1 all
    ...
    *clearmark contactsurfs 1
    *createmark sets 1 all
    ...
    *clearmark sets 1
  • *entitybundleregister - Does not attempt to automatically treat contactsurfs as sets and scripts need to be updated to account for this.
  • *EntityDeleteEmpty - Does not attempt to automatically treat contactsurfs as sets and scripts need to be updated to account for this.
  • *EntityDeleteUnused - Does not attempt to automatically treat contactsurfs as sets and scripts need to be updated to account for this.
  • *EntityPreviewEmpty - Does not attempt to automatically treat contactsurfs as sets and scripts need to be updated to account for this.
  • *EntityPreviewUnused - Does not attempt to automatically treat contactsurfs as sets and scripts need to be updated to account for this.
  • ID pools have been added for sets for the below profiles and keywords. If a script attempts to renumber one of these entities as a contactsurf via *renumber, it will not work. Instead, the script needs to be updated to use *renumbersolverid on the set.
    OptiStruct Pool Names OptiStruct Keywords
    BORE_SETS_ID_POOL
    • BORE
    MB_SETS_ID_POOL
    • MBDCRV
    • MBDSRF
    • MBPCRV
    PANEL_SETS_ID_POOL
    • ERPPNL
    • PANEL
    • PANELG
    PRETENS_SETS_ID_POOL
    • PRETENS
    RADSND_SETS_ID_POOL
    • RADSND
    ROTORG_SETS_ID_POOL
    • ROTORG
    SE_SETS_ID_POOL
    • CSUPER
    • CSUPEXT
    • SEBSET1
    • SECSET1
    • SESET
    • SEQSET1
    • SEUSET1
    SETS_ID_POOL
    • ELIST
    • SET (case control set)
    • SET1
    • SET3
    • SET_DESVAR
    • SET_ELEM
    • SET_FREQ
    • SET_GRID
    • SET_GRIDC
    • SET_MODE
    • SET_PLOTEL
    • SET_PLY
    • SET_RIGID
    • SET_TIME
    • SURF
    Nastran (MSC) Pool Names Nastran (MSC) Keywords
    AELIST_SETS_ID_POOL
    • AELIST
    CONTACT_SETS_ID_POOL
    • BSURF
    • BCPROP
    PANEL_SETS_ID_POOL
    • AECOMP
    • AECOMPL
    • BCBODY1_UNSUPPORTED
    • ERPPNL
    • PANEL
    PRETENS_SETS_ID_POOL
    • BOLT
    ROTORG_SETS_ID_POOL
    • ROTORG
    SE_SETS_ID_POOL
    • CSUPER
    • CSUPEXT
    • SEBSET1
    • SEBNDRY
    • SECSET1
    • SESET
    • SEQSET1
    • SEUSET1
    SETS_ID_POOL
    • ELIST
    • SET
    • SET (case control set)
    • SET1
    • SET3
    • SET_FREQ
    Nastran (NX) Pool Names Nastran (NX) Keywords
    CONTACT_SETS_ID_POOL
    • BCPROP
    PANEL_SETS_ID_POOL
    • AECOMP
    • AECOMPL
    • PANEL
    PRETENS_SETS_ID_POOL
    • BOLT
    ROTORG_SETS_ID_POOL
    • ROTORG
    SE_SETS_ID_POOL
    • CSUPER
    • CSUPEXT
    • SEBSET1
    • SEBNDRY
    • SECSET1
    • SESET
    • SEQSET1
    • SEUSET1
    SETS_ID_POOL
    • SET
    • SET1
    • SET_FREQ
As noted earlier, Abaqus scripts must be migrated and will no longer work as expected. The contactsurf APIs will still work, but they will create and define set segments. Here are some examples to help with the migration:
  • ANALYTICAL_RIGID_SURFACE
    • Before - Created as a group:
      *createentity groups cardimage=ANALYTICAL_RIGID_SURFACE
      or:
      *interfacecreate "name" 3 3 11
      *createmark groups 2 "name"
      *dictionaryload groups 2 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "ANALYTICAL_RIGID_SURFACE"
    • After - Create as a set with a box (see new boxes data names):
      *createentity sets name=set1 includeid=0 cardimage=ANALYTICAL_RIGID_SURFACE
      *setvalue sets name=set1 style=0
      *createentity boxes config=502 name=box2
      *setvalue boxes name=box2 segment_datalines=1
      *setvalue sets name=set1 ids={boxes 2}
  • Clearance
    • Before - This was a separate card image pointing to the main and secondary.
    • After - This is now part of CONTACT_PAIR and not a separate card image. Based on the small sliding attribute (323), the user also needs to define the clearance attribute (2121).
  • Contact Pair/Tie
    • Before - Main and secondary surfaces were attributes on the group entity. Main and secondary attributes could be multiple data lines.
      *attributeupdateentity groups $nGid 149 2 2 0 groups $nsid
      *attributeupdateentity groups $nGid 150 2 2 0 groups $nmid
      *attributeupdateentityidarray groups 1 2025 2 2 0 groups 1 $nsid
      *attributeupdateentityidarray groups 1 2026 2 2 0 groups 1 $nmid
    • After - Main and secondary surfaces are set data names. Multiple data lines are not supported through attributes, but can be achieved through contactgroups. Attributes 149 and 150 are now obsolete. Instead, update the main and secondary by following API’s (same for attributes 2025 and 2026):
      *setvalue groups id=$nGid masterentityids={sets $nmid}
      *setvalue groups id=$nGid slaveentityids={sets $nsid}
  • CUTTING_SURFACE
    • Before - Created as a group:
      *createentity groups cardimage=CUTTING_SURFACE
      or:
      *interfacecreate "name" 1 12 11
      *createmark groups 2 " name"
      *dictionaryload groups 2 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "CUTTING_SURFACE"
    • After - Create as a set with a crosssection (see new crosssections data names):
      *createentity sets type=80 name=set1
      *setvalue sets name=set1 cardimage=CUTTING_SURFACE
      *createentity crosssections config=501 id=1
      *setvalue sets name=set1 ids={crosssections 1}
  • SURFACE_COMBINE_CROP
    • Before - Created as a group:
      *createentity groups cardimage=SURFACE_COMBINE_CROP
      or:
      *interfacecreate "name" 1 14 11
      *createmark groups 2 "name"
      *dictionaryload groups 2 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "SURFACE_COMBINE_CROP"
    • After - Create as a set with a box (see new boxes data names):
      *createentity sets type=74 includeid=0 name=set1
      *setvalue sets name=set1 cardimage=SURFACE_CROP
      *createentity boxes config=501 id=1
      *setvalue sets name=set1 ids={boxes 1}
  • SURFACE_COMBINE_DIFFERENCE/INTERSECTION/UNION
    • Before - Created as a group:
      *createentity groups cardimage=SURFACE_COMBINE_CROP
      or:
      *interfacecreate "name" 1 14 11
      *createmark groups 2 "name"
      *dictionaryload groups 2 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "SURFACE_COMBINE_CROP"
    • After - Create as a set:
      *createentity sets type=10 includeid=0 name=set1
      *setvalue sets name=set1 cardimage=SURFACE_COMBINE
      DIFFERENCE:
      *setvalue sets name=set1 STATUS=2 3042="DIFFERENCE"
      *setvalue sets name=set1 STATUS=2 3043= {sets 0}
      *setvalue sets name=set1 STATUS=2 3044= {sets 0}
      INTERSECTION:
      *setvalue sets name=set1 STATUS=2 3042="INTERSECTION"
      *setvalue sets name=set1 STATUS=2 3043= {sets 0}
      *setvalue sets name=set1 STATUS=2 3044= {sets 0}
      UNION:
      *setvalue sets name=set1 STATUS=2 3042="UNION"
      *setvalue sets name=set1 ids= {sets 0}
  • SURFACE_ELEMENT
    • Before - Created as a group:
      *createentity groups cardimage=SURFACE_ELEMENT
      or:
      *interfacecreate "group1" 3 2 11
      *createmark groups 1 "$str_groupName"
      *dictionaryload groups 1 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "SURFACE_ELEMENT"
    • After - Create as a set:
      *createentity sets cardimage=SURFACE_ELEMENT
    • Before - Added shells to the group:
      *createmark elements 1 1-25
      *interfaceadd "group1" 0 elements 1 0
    • After - Add shells to the set segment:
      *createmark elements 1 1-25
      *segmentsetaddshells "set1" 1 0
    • Before - Added solid faces to the group:
      *createmark elements 1 18 17 26 25 19 20 27 28
      *createmark nodes 1 16 20 24 25
      *interfaceaddsolidface "group1" 0 1 1 30
    • After - Add solid faces to the set segment:
      *createmark elements 1 18 17 26 25 19 20 27 28
      *createmark nodes 1 16 20 24 25
      *segmentsetaddfaces "set1" 1 1 30 1 1
    • Before - The surface definition was a contactsurf, and the contactsurf was assigned to a group.
    • After - Use the legacy APIs to create the contactsurf which will create the set segment, or use the new APIs to create the set directly. It is no longer needed to assign to a group.
    • Before - Added components/sets to the group:
      *interfacecreate group1 1 $nctType 11
      *interfacedefinition "group1" 0 "comp"
      *attributeupdatestring groups 1 708 2 2 0 "S5"
      or:
      *createentity groups cardimage=surface_element
      *setvalue groups id=1 slaveentityids={sets 0} 
      *setvalue groups id=1 708="S1"
    • After - Add sets of components/sets to the set segment:
      *createentity sets cardimage=surface_element
      *setvalue sets id=1 support =-1
      *setvalue sets id=1 ids={comps 4}
      *setvalue sets id=1 708="S1"
      or
      *createentity sets cardimage=surface_element
      *setvalue sets id=1 support =-1
      *setvalue sets id=1 ids={sets 4}
      *setvalue sets id=1 708="S1"
  • SURFACE_NODE
    • Before - Created as a group:
      *createentity groups cardimage=SURFACE_NODE
      or:
      *interfacecreate "3" 4 1 4
      *createmark groups 2 "3"
      *dictionaryload groups 2 "[file join [hm_info -appinfo ALTAIR_HOME] templates feoutput abaqus "standard.3d"]" "SURFACE_NODE"
    • After - Create as a set:
      *createentity sets cardimage=SURFACE_NODE
    • Before - Added nodes to the group:
      *createmark nodes 1 28-53
      *interfaceadd "3" 0 nodes 1 0
    • After - Add nodes to the set segment:
      *setvalue sets id=3 ids= {nodes 28-53}
    • Before - Added components/sets to the group:
      *setvalue groups id=2 slaveentityids={comps/sets 0} or
      *interfacedefinition "3" 0 "comp"
      *createmark components 2 "component1"
      *interfacecomponent "3" 0 2
    • After - Add components/sets to the set segment:
      *setvalue sets id=1 ids= {comps/sets 4}

Elements to Retractors

The PAM-CRASH keyword RETRA has been mapped from the element entity to the retractor entity. See the retractors data names documentation for more details.

Scripts that created or queried the element entity for this keyword must be updated to use the retractor entity. Note that solver ID pools are no longer required with this new entity type as well. Below are a few examples.

To create a RETRA keyword, create a retractor entity with config 401:
*createentity retractor config=401
To update the values of different data names like forcevalue:
*setvalue retractor id=$id forcevalue=$value

Elements to Sliprings

The PAM-CRASH keyword SLIPR has been mapped from the element entity to the slipring entity. See the sliprings data names documentation for more details.

Scripts that created or queried the element entity for this keyword must be updated to use the slipring entity. Note that solver ID pools are no longer required with this new entity type as well. Below are a few examples.

To create a SLIPR keyword, create a slipring entity with config 401:
*createentity slipring config=401
To update the values of different data names like toleranceslipring:
*setvalue slipring id=$id toleranceslipring=$value

Engineering Loads

The main objective of engineering loads is to provide a simplified common workflow for managing loads while retaining all the capabilities of classic loads. Engineering loads support ID and ID pooling, allowing multiple loads to share the same solver ID. Engineering loads can resolve multiple ID conflicts arising from within a subsystem for different keywords, or the same keyword across multiple subsystems or multiple duplicates.

Regions for engineering loads are defined through the set entity. The set can be a regular classical set defined on nodes or elements. Surface loads that require the region to be defined on FE segments (the edge or face of an element), are defined using a segment set. Regions defined this way can be associated to loads at a later time, and can also be reused across multiple loads. Some Radioss loads, such as defense cards or gravity loads, do not require a region to be defined at all. Engineering loads, by virtue of separating regions from load data, are not in danger of needing redefinition at the time of remeshing. The set keeps track of the support entities. Upon remeshing, when FE entities are created or deleted, it does not affect the original integrity of the loads.

Classic load support is still available as a convenience, but is not recommended, There is an absorption mechanism to convert classic loads to engineering loads. Since the keywords were previously mapped to load collectors, legacy models will contail load collectors. With the introduction of engineering loads, use of load collectors are discouraged, and they cannot coexist with engineering loads. As a convenience, on loading a legacy models with load collectors, they are auto-absorbed into engineering loads. All of the original data is preserved in its exact state after absorption. The user can then directly interact with these engineering loads and harness all its features with no restrictions. The *absorbloads command may be used when performing this operation manually. Realization support via the *realizefieldloads command is available for creating classic loads from engineering loads, although this is not the exact opposite of absorption.

Engineering loads are supported for creation through the *createentity command. They can be created without having to define support entities. Only the correct engineering_type value needs to be specified. For example:
*createentity load engineering_type=value1 name1=value1? ?name2=value2? … ?nameN=valueN?

Advanced segregation allows spawning of new engineering loads from existing engineering loads based on value distribution or topology. Users can set up one single load with distributed values and run *absorbentities to get multiple meaningful and manageable loads of the same magnitude.

Load plotting via hm_plotloads allows visualization of distributed load values on FE regions. Plotting types, such as vector and contour, facilitate different views of the load. Load values can also be plotted at a specific time step for curve-based time dependent loads.

Installer hwdesktop Folder

The installer now places all HW Desktop files underneath a new hwdesktop folder (e.g. C:\Program Files\Altair\2020\hwdesktop\...). Any scripts that are coded to look for directories relative to ALTAIR_HOME will need to be updated. It is recommended to use hm_info to construct paths.

Properties to Frictions

The LS-DYNA keywords *DEFINE_FRICTION and *DEFINE_FRICTION_ORIENTATION and the Radioss keyword /FRICTION have been mapped from the property entity to the new friction entity. See the frictions data names documentation for more details.

Scripts that created or queried the property entity for these keywords must be updated to use the friction entity. Note that solver ID pools are no longer required with this new entity type as well. Below are a few examples.

To create a *DEFINE_FRICTION keyword, create a friction entity with config 101:
*createentity friction config=101
To create a /FRICTION keyword, create a damping entity with config 201:
*createentity friction config=201
To update the values of different data names like fs_d:
*setvalue friction id=$id fs_d=$value

New Commands

Modified Commands

The following commands have modified behavior that potentially require script updates:

  • Data Names
    • freebodygroups - Added new data name systemdef. The resolve data name has been removed and replaced by the systemdef data name. The behavior of the system data name is now dependent on the systemdef data name.
  • As part of the contactsurfs to sets migration, many legacy APIs that operate on contactsurfs have been updated so that they continue to work as before, by internally redirecting to operate on sets. A major exception is the Abaqus interface. There are also a few exceptions to legacy APIs that require either script updates or attention from users. See the Contactsurfs to Sets section above for full details.
The following commands have new options or enhanced capabilities. Existing scripts are not affected and only need to be updated if usage of the new functionality is desired:
  • Collision
  • Comparison
  • Data Names
    • As described above, all entities that support color now also have a color_rgb data name.
    • accelerometers - Added new data names curve_id and igrav_gt.
    • beamsects
      • standard - Added new data names beamsect_dim10, beamsect_dim11, beamsect_dim12 and beamsect_dim13.
    • boxes - Added new data names ars_fr, ars_maxratio, ars_scalethick, ars_trim_value, ars_types, crop_orient_a_x, crop_orient_a_y, crop_orient_a_z, crop_orient_b_x, crop_orient_b_y, crop_orient_b_z, gen_pointa, gen_pointb, gen_pointc, global_a_x, global_a_y, global_a_z, global_b_x, global_b_y, global_b_z, global_c_x, global_c_y, global_c_z, no_offset, no_thickness, orienta_pointa, orienta_pointb, orientation, region_type, segment_datalines, segment_p1_x, segment_p1_y, segment_p2_x, segment_p2_y, segment_start_x, segment_start_y, segment_table, segment_types and surface.
    • mechanismconstraints - Added new data names couplerid, distance, distance_node_1, distance_node_2, factor1, factor2, factor3, joint1, joint1_axis, joint2, joint2_axis, joint3 and joint3_axis. Added new config values 17 and 18.
    • contactgroups - Added new data names adjust, adjust_value, coupled_slave_nodes, coupled_slave_nodes_opt, constraint_ratio, constraint_ratio_value, cpset, cpset_name, cyclic_symmetry, extension_zone, extension_zone_value, geometric_correction, hcrit, hcrit_value, ls_id, mech_constraint, mech_constraint_opt, minimum_distance, minimum_distance_opt, no_rotation, no_thickness, num_group_entities, op, op_opt, pick_chk_nset, pick_nset, position_tol_dist_value, property_id, small_sliding, smooth, smooth_value, supplementary_constraints, supplementary_constraints_opt, surface_interaction_group, surface_interaction_prop, Surface_type, tie_options, tied, tracking, tracking_opt, type_opt, weight and weight_value. Added new config values 501 and 502.
    • contactsurfs - Added new data name nodes.
    • crosssections - Added new data names cs_controlpoint, cs_parentbelt, CSNode_N1, CSNode_N2, CSsetId, Definition and setIdMax.
    • designpointmethods - Added new data names designmargin, dkifoam, hashin, hoffman, larc, maxfiberstress, maxshearstress, maxstrain, maxstress, outofplaneshear, puckcf, puckf, resultlevel, tableid, tsaihill, tsaiwu, vonmises, wrinklingfoam, wrinklinghoneycomb and yamadasun. Added new category values panel_composite and panel_metallic.
    • designpoints Added new data names activesuppressed, name, outputsuppressed, panellength, panelradius, panelwidth and position.
    • designpointsets - Added new config values 30 and 31.
    • failures - Added new data names alpha, Alpha_Exp_Avg_Filter, C_max, C_min, Cr_core, cri, Factor_Loosemetal, Factor_Marginal, I_marg, Irate, mmxfm, mode, shape, Type, type, v1, v2, v3, w1, w2 and w3. Added new config values 301 and 302.
    • freebodygroups - Added new data name orientationvector.
    • freebodysections - Added new data name elemidlist.
    • groups - Added new data name parentcgid.
    • includefiles - Added new data name dirty_flag_for_export.
    • loads
      • accelerations - New support for engineering loads. Added new data names compx, compy, compz, crash_dir_flag, crash_dofstring, displayname, distribution, distribution_table_count, engineering_type, field, local_comp1, local_comp2, local_comp3, local_vector, local_vectorx, local_vectory, local_vectorz, location, location_unit_node, orient, orientx, orienty, orientz, os_comp_dir, os_tid, rad_dir, rad_sensor_id, rad_tstart, rad_tstop and resultant_magnitude.
      • constraints - New support for engineering loads. Added new data names constraint_flag, constraint_dof_flag, displayname, distribution, dof1, dof2, dof3, dof4, dof5, dof6, displayname, distribution, engineering_type, expanded_form_flag, location, nas_sname, os_d0, os_delay_flag, os_dphase_flag, os_eid, os_enforced_deform, os_g2, os_intrp_type, os_sname, os_spc_f_flag, os_v0, rad_dir, rad_icoor, rad_node_pos, rad_sensor_id, rad_sphbcs_ilev, rad_sphbcs_type, rad_spring_part, rad_system_input_type, rad_tstart, rad_tstop and spc.
      • fluxes - New support for engineering loads. Added new data names displayname, distribution, distribution_table_count, engineering_type, field, location_unit_element, location_unit_facet, location, location_unit_node, nas_cntrlnd, os_enforced_deform, rad_sensor_id, rad_tstart, rad_tstop and resultant_magnitude.
      • forces - New support for engineering loads. Added new data names compx, compy, compz, crash_dir_flag, crash_dofstring, displayname, distribution, distribution_table_count, engineering_type, expanded_form_flag, field, follower_load, local_comp1, local_comp2, local_comp3, local_vector, local_vectorx, local_vectory, local_vectorz, location, location_unit_node, orient, orientx, orienty, orientz, os_eid, os_g1, os_g2, os_g4, os_intrp_type, rad_dir, rad_sensor_id and resultant_magnitude.
      • moments - New support for engineering loads. Added new data names compx, compy, compz, crash_dir_flag, crash_dofstring, displayname, distribution, distribution_table_count, engineering_type, expanded_form_flag, field, local_comp1, local_comp2, local_comp3, local_vector, local_vectorx, local_vectory, local_vectorz, location, location_unit_node, orient, orientx, orienty, orientz, os_eid, os_g1, os_g2, os_intrp_type, rad_dir, rad_ivar_flag, rad_sensor_id and resultant_magnitude.
      • pressures - New support for engineering loads. Added new data names beam_load_distribution_flag, compx, compy, compz, corner1, corner2, displayname, distribution, distribution_table_count, engineering_type, field, local_comp1, local_comp2, local_comp3, local_vector, local_vectorx, local_vectory, local_vectorz, location, location_unit_element, location_unit_facet, nas_pload4_ldir, nas_pload4_sorl, orient, orientx, orienty, orientz, os_pload_type, os_ploadsf_z0, os_ploadsf_z1, os_scale, os_theta, p2, p3, p4, rad_ascalex_pc, rad_ascalex_vel, rad_det_fct_id_target, rad_det_hn, rad_det_iopt, rad_det_iopt_legacy, rad_det_k0, rad_det_ks, rad_det_locationA, rad_det_locationB, rad_det_materialid, rad_det_nc, rad_det_node1, rad_det_node2, rad_det_rd, rad_det_s_target, rad_det_time, rad_det_vcp, rad_dir, rad_dir_vel, rad_ebcs_c, rad_ebcs_fscale_en, rad_ebcs_lc, rad_ebcs_fscale_pr, rad_ebcs_fscale_rho, rad_ebcs_r1, rad_ebcs_r2, rad_ebcs_rho, rad_ftc_en, rad_fct_pc, rad_ftc_pr, rad_ftc_rho, rad_fct_vel, rad_frameid_vel, rad_fscaley_pc, rad_fscaley_vel, rad_sensor_id, x1 and x2.
      • temperatures - New support for engineering loads. Added new data names displayname, distribution, distribution_table_count, engineering_type, expanded_form_flag, field, location, location_unit_element, location_unit_node, nas_tempbc_type, os_t1, os_t2, os_tempp1_flag, os_tprime, rad_sensor_id, rad_tstart, rad_tstop and resultant_magnitude.
      • velocities - New support for engineering loads. Added new data names compx, compy, compz, displayname, distribution, distribution_table_count, engineering_type, field, local_comp1, local_comp2, local_comp3, local_vector, local_vectorx, local_vectory, local_vectorz, location, location_unit_node, orient, orientx, orienty, orientz, rad_dir, rad_dmin, rad_ebcs_c, rad_ebcs_fscale_en, rad_ebcs_fscale_pr, rad_ebcs_fscale_rho, rad_ebcs_fscale_vx, rad_ebcs_fscale_vy, rad_ebcs_fscale_vz, rad_ebcs_lc, rad_ebcs_r1, rad_ebcs_r2, rad_ebcs_rho, rad_fct_l_id, rad_fct_en, rad_fct_pr, rad_fct_rho, rad_fct_vx, rad_fct_vy, rad_fct_vz, rad_icoor, rad_inivel_type, rad_node_id, rad_sensor_id, rad_spring_part, rad_system_input_type, rad_t0, rad_rotational_velocity, rad_tstart, rad_tstop and resultant_magnitude.
    • loadsteps - Added new data names contactgroups_ids and contactgroups_idsmax.
    • mechanisms - Added new data names mcon_label and move_xsec.
    • modules - Added new data names HW_CID_OFFSET, instance_id and transformation_id.
    • optidscreens - Added new data name autobuck.
    • panels - Added new data names length, radius and width.
    • parameters - Added new data names discrete_dv, discrete_dv_count and dvmode.
    • plots - Added new data name depth.
    • pretensioners - Added new data names pretensionercpoint and pretensionerparent.
    • retractors - Added new config value 401. Added new data names entityselection, filmspoolcurveid, flagtodisableelements, forcevalue, lengthfractionpullin, lengthfractionpullout, loadlimitcurveid, loadlimiter, loadlimitflag, loadsensorid, pretensionercurveid, retractorcpoint, retractorparent, signedsensors1 and signedsensors2.
    • sets - Added new data names color, elements, facecode, faces, facesmax, facetype, node1, node2, node3, node4, node5, node6, node7, node8, nodes, reversecode and support.
    • sliprings - Added new config value 401. Added new data names fractionoflength, frictionid, lockingflag, rimfriction, seatbeltelem1id_type, seatbeltelem2id_type, slipringcpoint, slipringparent and toleranceslipring.
    • structuralproperties - Added new data names length, material, radius, se_ip_activate, se_ip_adult, se_ip_angle, se_ip_areacheck, se_ip_cog, se_ip_comment, se_ip_energy, se_ip_gap, se_ip_groundzcord, se_ip_horizontallyprojected, se_ip_mass, se_ip_positiontype, se_ip_testtype, se_ip_velocity, se_ip_zheight and width. Added new config values 80, 81, 82, 400 and 401.
    • transformations - Added new data names format, match_plane1_a, match_plane1_b, match_plane1_c, match_plane2_a, match_plane2_b, match_plane2_c, reflect_plane1_a, reflect_plane1_b, reflect_plane1_c, reflect_plane2_a, reflect_plane2_b, reflect_plane2_c, rotation_angle_theta, rotation_angle_x, rotation_angle_y, rotation_angle_z, rotation_node1, rotation_node2, rotation_node3, rotation_node4, translation_basenode, translation_targetnode, translation_vector, translation_vector_x, translation_vector_y and translation_vector_z. Added new config values 201, 202, 203 and 204.
  • General/Core
    • hm_entityinfo - Added new options configs, configids, configcolors and dimension.
    • hm_getincrementalname - Added new option separator.
    • hm_getlist - Added new option model_name.
    • hm_getmark - Added new option model_name.
    • hm_getmarkall - Added new option model_name.
    • hm_getvalue - Added new options locationunit and modelname.
    • hm_info - Added new -appinfo option FILEVERSION.
    • hm_markclear - Added new option model_name.
    • hm_markclearall - Added new option model_name.
    • hm_wadlinesgetgridpoints - Added new options grid_spacing and vertical_spacing. Added new protocol_method value 4.
    • hm_wadlinessetoptions - Added new options blerl_height, blerl_offset, blerl_selen, brrl_offset, groundz_cord, headform_adult_impact_angle, headform_child_impact_angle, headform_forward_impact_angle, impactor_mass, impactor_mass_nominal, init_velocity, leg_offset, srl_left_offset, srl_right_offset, upper_legform_max_energy, upper_legform_min_energy, upperlegbumper_lowerlimit and upperlegbumper_upperlimit. Added new protocol_method value 4.
    • *appendmark/hm_appendmark - Added new methods "by list", "by list id", "by list name" and "by opposite". Added new option "by model".
    • *clearlist - Added new option "by model".
    • *clearmark - Added new option "by model".
    • *clearmarkall - Added new option "by model".
    • *createautoddp - Added new autoddptype values 30 and 31.
    • *createlist - Added new option "by model".
    • *createmark/hm_createmark - Added new methods "by list", "by list id" and "by list name". Added new option "by model".
    • *exportbom - Added new option subsystem.
    • *findmark - Added new function Bit2 value.
    • *importbom - Added new option subsystem.
    • *removemodel - Added new option make_current.
    • *setoption - Added new options edge_density_visible, graph_plot, highlight, legeng_ranged_discrete_button, morph_color, nearby_output_entities, nearby_radius, nearby_search_method, nearby_selected_operation, nodelod, quick_topo_selection, realize_loads, retain_element_values, show_newly_created_entities and snap_mesh_node. Added new element_color_mode values 8, 17, 18, 19, 20, 21 and 23.
    • *setvalue - Added new option locationunit.
  • Geometry
  • Meshing
    • hm_getelementcheckmethod - Value 5 (Nastran) is now supported for return for check_name aspect_2d.
    • hm_getelementchecksettings - Value 5 (Nastran) is now supported for return for aspect_2d.
    • *batchmesh_mc - This command is now supported for global history. Bit0 is deprecated and all values allow reject. Bit4 is deprecated and all values do not allow intermediate rollback. Bit5 is deprecated and all values do not generate intermediate models or log files.
    • *createelements1d - Added new options elemconfig, proximitytoleranceand useproximity. Added new useshell value 3.
    • *element_smooth_nodes - Added new Method value AutoDecideWithQI_Params_locked.
    • *elementchecksettings - Value 5 (Nastran) is now supported for aspect_2d.
    • *hm_batchmesh2 - This command is now supported for global history. batchtempfilesmode is deprecated and all values do not create temp files. save_model is deprecated and all values do not save a backup model, but will allow undo/redo.
    • *line_mesh_decimator - Added new options FeatureAngle and PerChainMinEdgeCount.
    • *midsurfmesh - This command is now supported for global history. save_model is deprecated and all values do not save a backup model, but will allow undo/redo.
    • *repair_midmesh_line_imprinter - Added new options GuideSurfaceMark, ProjectionDirection and ProjectionType.
    • *setelementcheckmethod - Value 5 (Nastran) is now supported for check_name aspect_2d.
    • *tetmesh - Added new parameter min_height to the tet string.

Deprecated Commands

While still continuing to work as before, the following are all deprecated by *createentity and may be removed in a future release:
  • *createseatbelt
  • *createseatbeltlinewithmesh
  • *createseatbeltmesh
  • *createseatbeltsurfaceandlinesUsingOrientNode
  • *seatbeltnodecreate
While still continuing to work as before, the following are all deprecated by *setvalue and may be removed in a future release:
  • *change_distance_between_faces
  • *ReassignSeatbeltRodNodes
  • *updateseatbelt