HyperWorks Solvers

Field

Field

Previous topic Next topic No expanding text in this topic  

Field

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

Model Element

Class Name

Field

Description

Field defines a force and torque acting between two markers, I and J.  The force and torque can only be a function of time and the relative displacement between the I and J markers.  The six components (three forces and three moments) are defined in the coordinate system of the J marker.  Both linear and non-linear relationships are supported.  A nonlinear Field is defined in a user-defined subroutine called FIESUB.

Attribute Summary

Name

Property

Modifiable by command?

id    

Int ()

 

label

String ()

i      

Reference (Marker)

j      

Reference (Marker)

cratio

Double (None)

cmatrix

Double ([], count=36)

kmatrix

Double ([], count=36)

force  

Double ([0,0,0,0,0,0], count=6)

length

Double ([0,0,0,0,0,0], count=6)

function

Function ("FIESUB")

routine

Routine ()

 

active

Bool ()

Usage

Field is available in 3 flavors.

#1: Linear Field

Field (i=objMarker, j= objMarker, optional_attributes)

 

#2: Nonlinear Field defined in a compiled DLL

Field (i=objMarker, j= objMarker, function= userString, routine=string, optional_attributes)

 

#3: Nonlinear Field defined in a Python function

Field (i=objMarker, j= objMarker, function= userString, routine=functionPointer, optional_attributes)

 

Attribute Description

Linear Field

i

Reference to an existing Marker object

Specifies the ID of the marker at which the force and moment is applied.  This is designated as the point of application of the force.

The i attribute is mandatory.

j

Reference to an existing Marker object

Specifies the ID of the marker at which the reaction force and moment is applied.  This is designated as the point of reaction of the force.

The j attribute is mandatory.

kmatrix

6x6 matrix

kmatrix defines a 6x6 stiffness matrix that is used to calculate the spring force when a linear FIELD is to be defined.  The matrix need not be symmetric.  It must, however, be positive semi-definite.  In other words, {x}T[K]{x} ≥ 0 for any deformation x.

The kmatrix attribute is optional.

When not specified it default to a 6x6 zero matrix.

cmatrix

6x6 matrix

cmatrix defines a 6x6 damping matrix that is used to calculate the damping force for a linear FIELD.  The matrix need not be symmetric. However, it must be positive semi-definite.  In other words, {y}T[C]{y} ≥ 0 for any arbitrary velocity y.

The cmatrix attribute is optional.

When not specified it default to a 6x6 zero matrix.

cmatrix and cratio are mutually exclusive. Use one or the other but not both.

cratio

 

Double

Defines a damping scale factor.  The damping matrix is calculated as C = cratio * kmatrix.

A value of cratio = 0.01 is normally used.

The cratio attribute is optional.  When not specified it default to zero.

cratio and cmatrix are mutually exclusive. Only one of the two methods for specifying damping can be used at any one time.

Cratio ≥ 0.0

cmatrix and cratio are exclusive. Use one or the other but not both.

length

List of 6 doubles

These define the free length of the Field element.  In other words, the displacement from J to I, as measured in the J coordinate system, when no external forces are acting on the element.  Rotations are measured in terms of AX(I,J), AY(I,J), and AZ(I,J).  They are assumed to be small angles (< 10 degrees).

The length attribute is optional.  When not specified, it defaults to a zero valued array of length six.

 

force

List of 6 doubles

These define the three translational preload forces and three rotational preload torques in the Field element. The forces and torques are measured in the J coordinate system and they represent the forces and torques acting at I when there is no deformation.

The force attribute is optional.  When not specified, it defaults to a zero valued array of length six.

Nonlinear Field defined in a compiled DLL

i

Reference to an existing Marker object

Specifies the ID of the marker at which the force and moment is applied.  This is designated as the point of application of the force.

The i attribute is mandatory.

j

Reference to an existing Marker object

Specifies the ID of the marker at which the reaction force and moment is applied.  This is designated as the point of reaction of the force.

The j attribute is mandatory.

function

String

The list of parameters that are passed from the data file to the user defined subroutine.

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 Field. The second is the name of the function in the shared library that does the computation.

An example is: routine=”/staff/altair/myfield.dllmyfiesub”.

”/staff/altair/myfield.dll is the dll
“myfiesub” is the function within this DLL that performs the calculations

The attribute routine is optional.

When function is specified, but routine is not, routine defaults to FIESUB.

Nonlinear Field defined in a Python function

i

Reference to an existing Marker object

Specifies the ID of the marker at which the force and moment is applied.  This is designated as the point of application of the force.

The i attribute is mandatory.

j

Reference to an existing Marker object

Specifies the ID of the marker at which the reaction force and moment is applied.  This is designated as the point of reaction of the force.

The j attribute is mandatory.

function

String

The list of parameters that are passed from the data file to the user defined subroutine.

The function attribute is mandatory

routine

Pointer to a callable function in Python

An example is: routine=myField

myfield 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 FIESUB.

Optional attributes – Available to all variants

id

Integer

Specifies the element identification number.  This number must be unique among all the Field 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 Field object.

This attribute is optional. When not specified, MotionSolve will create a label for you.

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

Comments

1.See Properties, for an explanation about what properties are, why they are used and how you can extend these.
2.For a more detailed explanation about Field, see the Comments in the XML syntax section.

Example

The first example in the XML syntax section is redone with the Python API.

1.Model the structural stiffness of a truss as shown below, with a FORCE_FIELD.

The FORCE_FIELD statement to model this element is:

<FORCE_FIELD

  ID            = "1"

  I_MARKER_ID   = "100"

  J_MARKER_ID   = "200"

  PRELOAD_Z     = "1000"

  CRATIO        = "0.001"

  K11 = "1.03e4"    K22 = "5.98e3"    K33 = "5.98e3"

  K44 = "8.0e3"     K55 = "8.0e2"     K66 = "7.0e2"

  K26 = "-5.98e3"   K62 = "-5.98e3"

  K35 = "1.02e3"    K53 = "1.02e3"

/>

The same entity may be defined in the Python API as:

kmat   = [0.0]*36

rows   = [0, 1, 2, 3, 4, 5, 1, 5, 2, 4]

cols   = [0, 1, 2, 3, 4, 5, 5, 1, 4, 2]

values = [1.03e4, 5.98e3, 5.98e3, 8.0e3, 8.0e2, 7.0e2, -5.98e3, -5.98e3, 1.02e3, 1.02e3]

 

for row, col, value in zip(rows, cols, values): kmat[row*6+col]=value

 

f0     = [0.0]*6

f0[2]  = 1e3

 

# Define the truss object

truss = Field (i=mkr100, j=mkr200, cratio=0.001, kmatrix=kmat, force=f0,

              label=”Truss modeled as a Field”)