Model Element |
||||||||||||||||||||||||||||||||||||||||
Class NamePtdsff Description |
||||||||||||||||||||||||||||||||||||||||
Ptdsff defines a force between a point and a deformable surface. 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 |
||||||||||||||||||||||||||||||||||||||||
UsageFour 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) |
||||||||||||||||||||||||||||||||||||||||
Attribute Description |
||||||||||||||||||||||||||||||||||||||||
#1: 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. |
|||||||||||||||||||||||||||||||||||||||
#2: 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 |
|||||||||||||||||||||||||||||||||||||||
#3: 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”
The attribute routine is optional. When not specified, routine defaults to PTDSFSUB. |
|||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
#4: 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
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
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 |
|||||||||||||||||||||||||||||||||||||||
active |
Bool Select one from True or False.
The attribute active is optional. When not specified, active defaults to True |
|||||||||||||||||||||||||||||||||||||||
Comments
|
||||||||||||||||||||||||||||||||||||||||
Example
|
||||||||||||||||||||||||||||||||||||||||
# 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) |