Model ElementPtdsff defines a force between a point
and a deformable surface.
Description
The deformable surface is defined using the Reference_DeformSurface element. A
sphere of a specified radius is located at the
origin of the I Marker. When the distance between
the origin of the I Marker and the surface becomes
less than the sphere radius, a repulsive contact
force is generated.
Attribute Summary
Name |
Property |
Modifiable by
command? |
Designable? |
id |
Int () |
|
|
label |
Str () |
Yes |
|
dsurface |
Reference
("DeformableSurface") |
Yes |
Yes |
i |
Reference
("Marker") |
Yes |
Yes |
flip_normal |
Bool
(False) |
Yes |
|
radius |
Double () |
Yes |
FD Only |
radius_x |
Double () |
Yes |
FD Only |
radius_y |
Double () |
Yes |
FD Only |
radius_z |
Double () |
Yes |
FD Only |
force_model |
Enum ("UNDEFINED
LINEAR POISSON HERTZIAN USERSUB") |
Yes |
|
stiffness |
Double () |
|
FD Only |
damping |
Double () |
|
FD Only |
penalty |
Double () |
Yes |
FD Only |
restitution_coefficient |
Double
(0.0) |
Yes |
FD Only |
active |
Bool () |
Yes |
|
Usage
Four implementations of
PTDSFF are currently
available.
#1: Linear contact force model
Ptdsff (i=objMarker, dsurface=objDeformableSurface, force_model= "LINEAR", optional_attributes)
#2: Nonlinear contact force using the POISSON model
Ptdsff (i=objMarker, dsurface=objDeformableSurface, force_model= "POISSON", optional_attributes)
#3: Nonlinear contact force implemented in a compiled DLL
Ptdsff (i=objMarker, dsurface=objDeformableSurface, force_model= "USERSUB", function=userString, routine=string, optional_attributes)
#4: Nonlinear contact force implemented in a Python function
Ptdsff (i=objMarker, dsurface=objDeformableSurface, force_model= "USERSUB", function=userString, routine= functionPointer, optional_attributes)
Attributes
Linear contact force
- i
- Reference to an existing Marker object.
- Specifies a Marker used to
define a sphere geometry. The sphere is centered
at the origin of the Marker and
is attached to the parent body of the
Marker. The sphere geometry is
used for detecting contact with the deformable
surface.
- The i attribute is
mandatory.
- dsurface
- Reference to an existing DeformableSurface
object.
- Specifies the deformable surface to be used
for the contact.
- The dsurface attribute is
mandatory.
- force_model
- String
- Specifies the force model. Must be set to
"LINEAR" for a linear contact
model.
- The force_model attribute
is mandatory.
- stiffness
- Double
- Specifies the stiffness coefficient for the
LINEAR contact force model.
- The stiffness attribute is
optional.
- When not specified, it is set to zero.
- damping
- Double
- Specifies the damping coefficient for the
LINEAR contact force model.
- The damping attribute is
optional.
- When not specified, it is set to zero.
Nonlinear contact force using the POISSON model
- i
- Reference to an existing Marker object.
- Specifies a Marker used to
define a sphere geometry. The sphere is centered
at the origin of the Marker and
is attached to the parent body of the
Marker. The sphere geometry is
used for detecting contact with the deformable
surface.
- The i attribute is
mandatory.
- dsurface
- Reference to an existing DeformableSurface
object.
- Specifies the deformable surface to be used
for the contact.
- The dsurface attribute is
mandatory.
- force_model
- String
- Specifies the force model. Must be set to
"POISSON" for a Poisson contact model.
- The force_model attribute
is mandatory.
- penalty
- Double
- Specifies the penalty parameter for the
POISSON contact force model.
- The penalty attribute is
optional. When not specified,
penalty=0.
- penalty ≥ 0
- restitution_coef
- Double
- Specifies the restitution coefficient for the
POISSON contact force model.
- The restitution_coef
attribute is optional. When not specified,
restitution_coef =1.
- 0 ≤ restitution_coef ≤
1.
Nonlinear contact force implemented in a compiled DLL
- i
- Reference to an existing Marker object.
- Specifies a Marker used to
define a sphere geometry. The sphere is centered
at the origin of the Marker and
is attached to the parent body of the
Marker. The sphere geometry is
used for detecting contact with the deformable
surface.
- The i attribute is
mandatory.
- dsurface
- Reference to an existing DeformableSurface
object.
- Specifies the deformable surface to be used
for the contact.
- The dsurface attribute is
mandatory.
- force_model
- String
- Specifies the force model. Must be set to
"POISSON" for a Poisson contact model.
- The force_model attribute
is mandatory.
- function
- String defining a valid user function MotionSolve expression.
- The list of parameters that are passed from
the data file to the user-defined subroutine where the Ptdsff is
defined.
- The function attribute is
mandatory.
- routine
- String
- Specifies an alternative name for the user
subroutine. The name consists of two pieces of
information, separated by "∷". The first is the
pathname to the shared library containing the
function that computes the response of the
user-defined Ptdsff. The second
is the name of the function in the shared library
that does the computation.
- An example is:
routine="/staff/Altair/engine.dll∷myPtdsff".
- "/staff/Altair/ engine.dll is the
DLL
- "myPtdsff" is the function within this
DLL that performs the calculations
- The attribute routine is
optional.
- When not specified, routine
defaults to PTDSFSUB.
Nonlinear contact force implemented in a Python function
- i
- Reference to an existing Marker object.
- Specifies a Marker used to
define a sphere geometry. The sphere is centered
at the origin of the Marker and
is attached to the parent body of the
Marker. The sphere geometry is
used for detecting contact with the deformable
surface.
- The i attribute is
mandatory.
- dsurface
- Reference to an existing DeformableSurface
object.
- Specifies the deformable surface to be used
for the contact.
- The dsurface attribute is
mandatory.
- force_model
- String
- Specifies the force model. Must be set to
"POISSON" for a Poisson contact
model.
- The force_model attribute
is mandatory.
- function
- String defining a valid user function MotionSolve expression.
- The list of parameters that are passed from
the data file to the user defined subroutine where
the Variable is defined.
- The function attribute is
mandatory.
- routine
- Pointer to a callable function in Python.
- An example is:
routine=myPtdsff.
- myPtdsff is a Python function
or method that can be called from wherever the
model resides.
- The attribute routine is
optional.
- When not specified, routine
defaults to PTDSFSUB.
Optional attributes - Available to all variants
- id
- Integer
- Specifies the element identification number.
This number must be unique among all the
Ptdsff objects in the
model.
- This attribute is optional. MotionSolve will automatically
create an ID when one is not specified.
- Range of values: id >
0.
- label
- String
- Specifies the name of the
Ptdsff object.
- This attribute is optional. When not
specified, MotionSolve
will create a label for you.
- flip_normal
- Boolean
(True/False).
- Specifies whether the normals are to be
generated.
- True means that the element
normals are generated using the right hand rule.
Specifically, if one curls the fingers of the
right hand in the order N1, N2, and N3 of a
triangular element, then the thumb provides the
direction of the normal vector.
- False means the converse: The
normal vector points in the direction opposite to
the right hand thumb.
- This attribute is optional. When not
specified, flip_normal =
False.
- radius
- Double
- Specifies the radius of the spherical geometry
centered at marker I.
- This attribute is optional. When not
specified, radius=0.
- radius ≥ 0.
- radius_x
- Double
- Specifies the radius of the ellipsoid geometry centered at marker I, in the X
direction of its orientation.
- This attribute is optional. When not specified, radius_x=0.
radius_x ≥ 0.
- radius_y
- Double
- Specifies the radius of the ellipsoid geometry centered at marker I, in the Y
direction of its orientation.
- This attribute is optional. When not specified, radius_y=0.
radius_y ≥ 0.
- radius_z
- Double
- Specifies the radius of the ellipsoid geometry centered at marker I, in the Z
direction of its orientation.
- This attribute is optional. When not specified, radius_z=0.
radius_z ≥ 0.
- active
- Bool
- Select one from True or
False.
- True indicates that the
element is active in the model and it affects the
behavior of the system.
- False indicates that the
element is inactive in the model and it does not
affect the behavior of the system. It is almost as
if the entity was removed from the model, of
course with the exception that can be turned
"ON" when desirable.
- The attribute active is
optional. When not specified,
active defaults to
True.
Example
Express the XML example shown below using the Python
interface.
<Reference_DeformSurface
id = "1"
end_type = "NATURAL"
num_marker_row = "7"
num_marker_col = "7">
30101490 30101500 30101510 30101520 30101530 30101540 30101540
30101420 30109781 30113791 30117801 30121811 30125821 30101480
30101350 30108711 30112721 30116731 30120741 30124751 30101410
30101120 30102061 30103071 30104081 30105091 30106101 30101130
30101140 30110571 30114581 30118591 30122601 30126611 30101200
30101210 30111641 30115651 30119661 30123671 30127681 30101270
30101280 30101290 30101300 30101310 30101320 30101330 30101340
</Reference_DeformSurface
<Force_PTdSF
id = "1"
i_marker_id = "30107850"
radius = "10.0"
ref_dsurface_id = "1"
force_model = "LINEAR"
stiffness = "1000.0"
damping = "0.1"
/>
# Create the I Marker
imrkr = Marker (label="ptdsff-i", body=p3030)
# Define the deformable surface points
mkrMatrix = [[m30101490, m30101500, m30101510, m30101520, m30101530, m30101540, m30101540],
[m30101420, m30109781, m30113791, m30117801, m30121811, m30125821, m30101480],
[m30101350, m30108711, m30112721, m30116731, m30120741, m30124751, m30101410],
[m30101120, m30102061, m30103071, m30104081, m30105091, m30106101, m30101130],
[m30101140, m30110571, m30114581, m30118591, m30122601, m30126611, m30101200],
[m30101210, m30111641, m30115651, m30119661, m30123671, m30127681, m30101270],
[m30101280, m30101290, m30101300, m30101310, m30101320, m30101330, m30101340]]
# Create the deformable surface object
ds = Dsurface (markers=mkrmatrix))
# Create the Ptdsff object
ptdsff1 = Ptdsff (i=imrkr, dsurface=ds, radius=10, force_model="LINEAR", stiffness=1000, damping=0.1)
Comments
- See Properties for an
explanation about what properties are, why they are used, and how you can extend these.