# Vtorque

Model ElementTorque defined in a MotionSolve expression

Vtorque

## Description

They may be a function of any system state and time.

## Attribute Summary

Name Property Modifiable by command? Designable?
id Int ()
label Str ()
i Reference (Marker) Yes Yes
jfloat Reference (Marker) Yes Yes
rm Reference (Marker) Yes Yes
tx Function () Yes Yes
ty Function () Yes Yes
tz Function () Yes Yes
function Function ("VTOSUB") Yes
routine Routine ()
active Bool () Yes

## Usage

Vtorque is available as follows:
#1. Torque defined in a MotionSolve expression
Vtorque (i=objMarker, j=objMarker, fx=expressionString, fy=expressionString, fz=expressionString, optional_attributes)
#2. Torque defined in a compiled DLL
Vtorque (i=objMarker, j=objMarker, function=userString, routine=string,optional_attributes)
#3. Torque y
Vtorque (i=objMarker, j=objMarker, function=userString, routine=functionPointer,optional_attributes)

## Attributes

Torque defined in a MotionSolve expression.
i
Reference to an existing Marker object.
Specifies the marker at which the torque is applied. This is designated as the point of application of the force.
j
Reference to an existing floating Marker object.
Specifies the marker at which the reaction torque is applied. This is designated as the point of reaction of the force.
tx
String defining a valid MotionSolve expression.
Specifies the MotionSolve expression that defines the torque acting about the x-axis of the reference coordinate system (see rm below). Any valid run-time MotionSolve expression can be provided as input.
ty
String defining a valid MotionSolve expression.
Specifies the MotionSolve expression that defines the torque acting about the y-axis of the reference coordinate system (see rm below). Any valid run-time MotionSolve expression can be provided as input.
tz
String defining a valid MotionSolve expression.
Specifies the MotionSolve expression that defines the torque acting about the z-axis of the reference coordinate system (see rm below). Any valid run-time MotionSolve expression can be provided as input.
Torque defined in a MotionSolve expression
i
Reference to an existing Marker object.
Specifies the marker at which the torque is applied. This is designated as the point of application of the torque.
j
Reference to an existing floating Marker object.
Specifies the marker at which the reaction torque is applied. This is designated as the point of reaction of the torque.
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 Vtorque is defined.
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 Vforce. The second is the name of the function in the shared library that does the computation.
An example is: routine="/staff/Altair/engine.dllmyVtorque"
• "/staff/Altair/ engine.dll is the DLL.
• "myVtorque" is the function within this DLL that performs the calculations.
When not specified, routine defaults to VTOSUB.
Torque or torque magnitude defined in a Python function
i
Reference to an existing Marker object.
Specifies the marker at which the torque is applied. This is designated as the point of application of the torque.
The i attribute is mandatory.
j
Reference to an existing floating Marker object.
Specifies the marker at which the reaction torque is applied. This is designated as the point of reaction of the torque.
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 Vtorque is defined.
routine
Pointer to a callable function in Python.
An example is: routine=myVtorque
• myVtorque is a Python function or method that can be called from wherever the model resides.
When not specified, routine defaults to VTOSUB.
Optional attributes - Available to all variants
id
Integer
Specifies the element identification number. This number must be unique among all the Vtorque 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 Vtorque object.
This attribute is optional. When not specified, MotionSolve will create a label for you.
rm
Reference to an existing Marker object.
Specifies the marker in whose coordinate system the torque components are computed. rm can be on any body, including Ground.
The rm attribute is optional.
When not specified, rm defaults to the global coordinate system.

## Example

Vtorque defined via expressions.
vto1 = Vtorque (label="nonlinear bushing", i=m1801, jfloat=m1901, rm=m1903,
fx="-1e3*AX(1801,1903) - 2*(WX(1801,1903,1903))**3",
fy="-1e3*AY(1801,1903) - 2*(WY(1801,1903,1903))**3",
fz="-1e3*AZ(1801,1903) - 2*(WZ(1801,1903,1903))**3")
Vtorque in previous example defined in a Python function.
# Define the user subroutine first
def myVtosub (id, time, par, npar, dflag, iflag):
i = par[0]
j = par[1]
k = par[2]
c = par[3]

# Get the state of the bushing
ax = AX(i,j)
ay = AY(i,j)
az = AZ(i,j)

wx = WX(i,j,j)
wy = WY(i,j,j)
wz = WZ(i,j,j)

# Compute force
tx = -k*ax - c*(wx**3)
ty = -k*ay - c*(wy**3)
tz = -k*az - c*(wz**3)

return [tx, ty, tz]

# Refer to the user subroutine in the bushing statementvto1 = Vtorque (label="nonlinear bushing", i=m1801, jfloat=m1901, rm=m1903,
function="user(1801,1903,1000.0,2.0)", routine=myVtosub )