PRIMER 22.1

Details of *BELT Cards

Details of *BELT Cards

The description "tree" file is misleading, although it is adopted for historical reasons, since there is no hierarchy as such. Rather the file contains extra information about belt geometry, fitting, meshing and contact, and it is organised as follows.

*BELT_START
<label>       <Title> 

<Solid set>   <Shell set>   <Tshell Set>   <Segm set>    <Part set>
<#rows>       <width>       <length>       <thickness>   <xoff_b>     <xoff_p>  <xoff_r>    <xoff_f>
<iter>        <conv_tol>    <tk_flag>      <tk_scale>    <pen_dist>   <overlap> <proj_dist> <curve_ang>

<friction>    <acute_angle><min_shell_tk>

<path order>  <drawn mode>  <offset mode>  <auto depen>  <depen iter> <radial method>       <depen mode>

<sep belt>    <sep factor>  <ramp #iter>   <slip radius> <slip angle> <slip distance>
Label I10 The label of this belt definition
Title A70 The title of this definition (optional)
Solid set I10 A set of solid elements defining "structure" The "structure" can be any combination of these sets, and defines the dummy and vehicle elements contacted by the seatbelt. Not all sets need to exist, but at least one is required to give a structure definition.
Shell set I10 A set of shell elements ditto
Tshell set I10 A set of thick shell elements ditto
Segm set I10

The set of segments that PRIMER creates from the three element sets above, used for contact between belt and structure during fitting.

From V12 onwards this reference to a segment set will not be written out here unless it has been referred to on a *BELT_CONTACT card. Likewise the set definition itself will not be written to the main deck unless it has been referred to by something other than *BELT_START. The reason for these changes is that the segment set is really volatile and gets recreated each time the belt is refitted, so writing it out serves no useful purpose.

In addition when a new dummy replaces an old one the segment set may reference nodes that no longer exist, and thus become more trouble than it is worth.

Part set I10 A set of parts This may also be used to define structure, with or instead of the element sets above.
#rows I10 The number of rows of 2D elements across the belt. This must lie in the range 0 (for all 1D belt elements) to 20. Default = 1
width E10.0 The overall belt width. Each 2D element wuill be <width> / <#rows> wide. Default = 50.0
length E10.0 The characteristic length of each belt element. Default = 25.0
thickness E10.0 The thickness of 2D belt elements. Default = 1.0
xoff_b E10.0 The offset of a database cross-section from a B-Post slipring
xoff_p E10.0 The offset of a database cross-section from a free (eg pelvis) slipring
xoff_r E10.0 The offset of a database cross-section from a retractor
xoff_f E10.0 The offset of a database cross-section from a fixed or end point.
iter I10 The number of fitting iterations between contact bucket resorts. Default = 25
conv_tol E10.0 The convergence tolerance at which fitting halts. Default = 1.0e-5
tk_flag I10 Thickness used during fitting: 0 (default) = use true thickness; 1 = use true thickness * factor; 2 = use neutral axis (no thickness)
tk_scale E10.0 Factor used when <tk_flag> = 1. Default = 1.0
pen_dist E10.0 Maximum penetration distance considered for contact into solid & thick shell elements. Default = 25.0, but also limited to shortest side length * 0.4.
overlap E10.0 Fraction by which facets are extended during contact checking to stop nodes "falling into gaps". Default = 0.05
proj_dist E10.0 Initial projection distance by which belt path is "thrown outwards" at start of fitting. Default = 35.0
curve_ang E10.0 Maximum permitted transverse belt curvature in degrees. Default = 0.0, meaning no limit, permitted values are 0 to 180 deg.

The following line was introduced in V12
friction E10.0 Transverse friction coefficient in the range 0.0 - 1.0, default 0.0.
acute_angle E10.0 Angle (in degrees) considered to be "acute" in belt. Default 90.0, but can be in range 0.0 - 180.0
If this field is zero then the default of 90.0 degrees is assumed.
min_shell_tk E10.0 Minimum thickness used for contact with shells. If defined actual contact thickness is max(true thickness, min thickness) ( Field added in V14 )

The following line was introduced in V13
path order
I10
The curvature of the meshing path. 0 = linear, 1 = mixed linear/spline, 2 = cubic spline
drawn mode
I10
How the fitting path is drawn. 0 = wireframe, 1 = wireframe with thickness, 2 = shaded with thickness
offset mode
I10
How fitting path is offset from basic path points. 0 = full offset distance, 1 = offset distance * 0.1, 2 = no offset
auto depen
I10
Whether or not to perform automatic depenetration of the belt path prior to fitting. 0 = no, 1 = yes.
depen #iter
I10
Maximum number of iterations of automatic initial depenetration, default = 4.
radial method
I10
How the fitting path twist is computed. 0 = from "Local" normals of nearby structure, 1 = from base path curvature.
depen mode I10 Method used to determine which of overlapping belt segments is "in front" for automatic initial depenetration. ( Added in V19 )
0 = automatic (default), 1 = earlier segment in front of later, 2 = later segment in front of earlier, 3 = no belt to belt initial depenetration

The following line was introduced in V13
sep belt
I10
Whether or not to perform self-contact between adjacent segments of belt. 0 = no, 1 = yes
sep factor
E10.0
Initial factor on true separation distance. Default = 1.0 (ie true thickness)
ramp #iter
I10
Number of fitting iterations over which a separation factor > 1.0 ramps linearly down to 1.0. Default = 500
slip radius
E10.0
These three attributes are all properties of "radiused", ie explicitly meshed, sliprings if these are used in preference to explicit slipring elements. The radius of the slipring.
slip angle
E10.0
The angle (in degrees) subtended by elements around the slipring.
slip distance
E10.0
The distance each side of the slipring over which finely meshed elements extend.

*BELT_MESH 
<node_set>    <nsbo_set>    <elem_set>   <cline_len> <np>        <ns>      <ref_geom>
<sbelt_f>     <sbelt_l>     <retr_f>     <retr_l>    <slip_f>    <slip_l><xsec_f><xsec_l>
<nrb_set_f>   <nrb_set_l>
<pid_1d>      <slen_1d>
<pid_sh>      <t1_sh>       <t2_sh>      <t3_sh>     <t4_sh>     <psi_sh> 

<pid_2d>      <t1_2d>       <t2_2d>      <t3_2d>     <t4_2d>     <psi_2d>
(If <np> on line 1 is defined the line above is repeated <np> times, otherwise it appears once if the belt
definition contains 2d belt element data, otherwise not at all.)
<base p1> <base p2> <fit p1> <fit p2> <mode> <#belt 1> <#belt 2>
(The line above appears exactly <ns> times. In decks prior to V13 neither <
ns> nor these lines are written.)
node_set I10 Set of all nodes in seatbelt These sets are only created if the option to generate a contact for the belt is used. They define the contact between the belt and the structure, the latter being defined via segment set <segm set> on the *BELT_START card.
nsbo_set I10 Set of nodes on 1D seatbelt elements only
elem_set I10 Set of shell or 2D seatbelt elements
cline_len E10.0 Centreline length Optional : This is not an input property, but rather the centreline length of the belt when last meshed in PRIMER. This data field is new in V12, and may be omitted or set to zero if no length is known, or if this card comes from an earlier keyword file.
np I10 Number of 2d belt element property cards New in V13 : the number of lines of 2d seatbelt property data that will be written below. This field is not written in earlier decks, and if it is omitted exactly one line of 2d seatbelt property data is output at the end of this keyword if the belt contains 2d seatbelt element property data, otherwise not at all.
ns I10 Number of "segments" of belt path and their meshing details. New in V13 : the number of "segments", ie stretches of belt path between fixed ends or acute points or sliprings. This variable defines how many lines of detailed segment meshing data will be written at the end of this keyword.
ref_geom I10 *AIRBAG_REFERENCE_
GEOMETRY id
New in V18 : if *AIRBAG_REFERENCE_GEOMETRY has been used to write out the "undeformed" shape of the belt a reference definition with an explicit _ID is used for each belt. It is assumed that the belt "owns" this definition, meaning that it is will be deleted and recreated during remeshing, so it should not be modified manually or used for other purposes.
sbelt_f I10 First 1D seatbelt element id Since there is no *SET_SEATBELT card in Ansys LS-DYNA the seatbelt fitter stores the first and last 1D belt element ids, assumes that elements are contiguous in this range and that it "owns" all these elements.
sbelt_l I10 Last 1D seatbelt element id
retr_f I10 First retractor id Likewise it assumes that the list of retractors is contiguous between first and last, and that it owns all of these. This is true for both 1D and 2D slipring and retractor elements.
retr_l I10 Last retractor id
slip_f I10 First slipring id Likewise it assumes that the list of sliprings is contiguous between first and last, and that it owns all of these.
slip_l I10 Last slipring id
xsec_f I10 First cross-section id *DATABASE_CROSS_SECTION definitions are new in PRIMER release 11 and can be added to any path point. These are the first and last definitions which must have explicit labels using the _ID suffix. Cross-sections can be added to all belt mesh types: 1d belt, 2d belt and shell.
xsec_l I10 Last cross-section id
nrb_set_f I10 First nodal rigid body set id There is no *SET_NODAL_RIGID_BODY card, so it is assumed that this list is contiguous, as above, and that the belt "owns" all these definitions. Belt fitting in PRIMER pre-dates the optional Nodal RB labels in Ansys LS-DYNA, so set ids are used instead for backwards compatibility.
nrb_set_l I10 Last nodal rigid body set id
pid_1d I10 The part ID for any 1D seatbelt elements Only need to be defined if the belt contains 1D belt elements
slen_1d E10.0 The initial slack length for any 1D seatbelt elements
pid_sh I10 The part id of any shell elements Only need to be defined if the belt contains any conventional shell elements
t1_sh to t4_sh 4E10.0 Optional thicknesses at the 4 nodes of these elements
psi_sh E10.0 Optional orthotropic element angle for these elements

From V13 onwards the following line is repeated < np > times. In earlier decks where < np > is not output the following line appears exactly once if the belt contains 2d belt elements, otherwise not at all.
pid_2d I10 The part id of any 2D seatbelt elements Only need to be defined if the belt contains any 2D seatbelt shell elements
t1_2d to t4_2d 4E10.0 Optional thicknesses at the 4 nodes of these elements
psi_2d E10.0 Optional orthotropic element angle for these elements

The following line is only written from V13 onwards. It is repeated < ns > times, once for each belt meshing segment.

base pt 1 I10 The point number in the basic belt path at end #1 of this segment

This information is repeated for each of < ns > meshing segments and is used when the belt is remeshed either manually or automatically.

Prior to V13, when this information was not written, the belt fitter "crawled up" any existing belt to extract this information - not always with 100% reliability!

base pt 2 I10 The point number in the basic belt path at end #2 of this segment
fit pt 1 I10 The point in the belt fitting path at end #1 of this segment
fit pt 2 I10 The point in the belt fitting path at end #2 of this segment
mode I10

In "old style" the meshing mode for this segment. 0 = 1d belt elements only, 1 = 2d belt elements only, 2 = shell elements only, 3 = mixed shells and 1d belt elements, 4 = mixed shells and 2d belt elements. I old style only the bottom byte, ie mask 0xf, will ever be populated.

In "new style" , V14 onwards, meshing also the mode, but now a bitwise OR of the following:

0x0010 always present to designate "new style", the bottom byte will always be zero.

Span If 1d belt If 2d belt If shell
E1 0x00100 0x00200 0x00400
CE 0x01000 0x02000 0x04000
E2 0x10000 0x20000 0x40000

For a given row only a single column's entry may be used. For example the code 0x12410 means end 1 is shells, centre is 2d belts, end 2 is 1s belts.

#belt 1 I10

In an "old style" mixed mode segment (ie mode = 3 or 4) the number of 1d or 2d belt elements at end #1.

In "new style"meshing the number of elements of any type in span E1, or zero if the span is of a single element type.

#belt 2 I10

In an "old style" mixed mode segment (ie mode = 3 or 4) the number of 1d or 2d belt elements at end #2.

In "new style"meshing the number of elements of any type in span E2, or zero if the span is of a single element type.


*BELT_CONTACT
<no_su_cont>   <su_su_cont>
no_su_contact I10 Label of Nodes to Surface contact used when contact between nodes on 1D belt elements and dummy structure is defined. This card is only used if the option to create a contact between belt and dummy "structure" has been used.
su_su_contact I10 Label of Surface to Surface contact used when contact between belt shells / 2D belt elements and dummy structure is defined.


*BELT_PATH
<npts>
<bits>       <x1>           <y1>           <z1>     (<nid>)
(Optional row 1 of further data depending on <bits>)
(Optional row 2 of further data depending on <bits>)
(Optional row 3 of further data depending on <bits>)
(Optional row 4 of further data depending on projection, curl and other attributes) (Optional row 5 of further data depending on transverse stiffness
 : : : :
<bits>       <xn>           <yn>           <zn>     (<nid>)
(Optional row 1 of further data depending on <bits>)
(Optional row 2 of further data depending on <bits>) (Optional row 3 of further data depending on <bits>)
(Optional row 4 of further data depending on projection, curl and other attributes)
(Optional row 5 of further data depending on transverse stiffness

Users wishing to write software to read or skip these cards should use the following logic.
The notation 0x... means a hexadecimal value, "&" means a bitwise AND..

For (each belt path point)
{
    Always read line 1, and from that line read <bits> as a decimal integer

    if(bits & 0x8800)    read optional rows 1 and 2
    if(bits & 0x60000)   read optional row 3
    if(bits & 0x1010000) read optional row 4
    if(bits & 0x4000000) read optional row 5
}

npts I10 Number of points in the basic "line" belt path

There then follow <npts> cards of the following data:
bits I10 Bitwise encoded integer containing information about the attributes of this point This encoding is internal to PRIMER
X, Y, Z 3E20.0 X,Y,Z coordinates of point <n>

Either or both of [X,Y,Z] and <nid> may be defined. However if both are defined and the coordinates differ then the rules used to locate the path point depend on the version of PRIMER:

  • V13 and earlier: if the node and path point coordinate are within 5mm the path point is moved to the node. If outside 5mm the node is ignored and removed from the path, and the coordinate is used verbatim.

  • V14 onwards : the rules are more flexible and depend on the "belt_path_match_method" and "belt_path_match_tol" preferences. For backwards compatibility the default behaviour is the same as V13, but see " Action on node/point coordinate mismatch " in section 6 (tools) on seatbelt fitting for an explanation of the new rules.
nid I10 Optional : Node at point <n>

Optional row #1 I10
Always 0

These two rows of data are only written if the twist at this belt point has been controlled during belt fitting. Row #1 defines the twist on side A, and row #2 on side B.

Twist vectors are written in bit-packed form and are not user-definable.

From V11 onwards if both "twist nodes" 1 and 2 have been defined the vector between them will supersede any encoded orientation vectors. At fixed end and intermediate points this N1N2 vector will define the belt orientation precisely, at other points it will define the plane in which the belt's transverse vector lies. This provides an alternative way for users to define belt twist.

The 3rd row of optional orientation vectors is added in V18

3E20.0 Encoded orientation vectors
I10 Optional : orientation "twist" node N1 (V11 onwards)
Optional row #2 I10 Always 1
3E20.0 Encoded orientation vectors
I10 Optional : orientation "twist" node N2 (V11 onwards)

Optional row #3 I10 Always 2 This row is only written in the "along the path" twist of the belt has been set explicitly at this point.
3E20.0 Encoded orientation vectors

Optional
row #4
E10.0 Optional : Point-specific projection distance (V14 onwards) This row of data may be written from V14 onwards. It is only required if a non-default projection distance, curl angle or non-standard element length have been specified for this path point.
I20 Optional : Encoded curl angle and non-standard element length at point (V18 onwards)
I20 Optional : Encoded local friction coefficient at point (V18 onwards)

Optional row #5
I10
Optional: Part id of stiffening transverse beams
This row is only written if transverse beams have been used to stiffen the belt in transverse bending.
The format of the *BELT_PATH row entries is complex, involving internal bit fields designating retractor, slipring, etc. It may also contain path twist normal information that is similarly bit-packed into data words. These formats are internal to PRIMER and may change in subsequent releases.

It is strongly recommended that you do not attempt to edit these values.  There is an algorithm given at the top of this table which will allow you to decode how many lines to expect for each path point when reading these cards.

*BELT_PARAMETER

<length parameter> <per segm params>

This card is new in V12 and is entirely optional. If omitted no parameter value will be updated.

length_parameter A10

The name of a *PARAMETER (with no leading "&") that will be updated with the total belt length whenever the belt is remeshed.

per segm params I10

Added in V13: if this value is 1 then additional parameters will be created for each meshing segment of the belt giving the length of that segment only. The syntax used is the name of the length_parameter defined above with " _s n " added where n is the segment number.

For example if the length parameter is blen , and the belt has three meshing segments, parameters blen_s1 , blen_s2 and blen_s3 will be added.

The following card is only written from V20 onwards, if not all fields are null at the time of writing. 

*BELT_SLIPRING

<slip_count>

<slip_type>    <part_set>    <pivot_centre>    <left_no>    <right_no>    <control_flag>    <rot_axis_flag>
<rot_vec_x>    <rot_vec_y>   <rot_vec_z>
(The line above is written only if <rot_axis_flag> is set to 0.)
<rot_no_1>    <rot_no_2>

(The line above is written only if <rot_axis_flag> is set to 1.)
slip_count
I10
Number of slipring definitions
Restricted to 1 in v20 as only a single slipring definition can be used per model.

slip_type I10 Type of slipring
Restricted to 1 in v20 as only shoulder sliprings are supported. 
part_set I10 Set of parts forming the slipring
pivot_centre I10 Node defining centre of rotation (typically the centre of the slipring pivot)
left_no I10 Node at the left lower corner of the slipring slot
right_no I10 Node at the right lower corner of the slipring slot
control_flag I10 Control flag for automatically pulling the slipring into position during the fitting
rot_axis_flag I10 Mode in which the vector of rotation is defined
Defines which of the following two lines will be written at the end of this card.
 
rot_vec_x 3E10.0
X,Y,Z coordinates of rotation vector 
Only need to be defined if rot_axis_flag = 0.
rot_vec_y
rot_vec_z

rot_no_1I10
Node defining tip of rotation vector
Only need to be defined if rot_axis_flag = 1.
rot_no_2I10
Node defining head of rotation vector

*BELT_END

No data fields

Users should not attempt to edit this file by hand unless they are very certain about what they are they doing.

Deleting this file from an input deck will not affect its behaviour during analysis, but will cause PRIMER to lose the ability to remesh the belt.