Notation
The notation is used to explain:
typical symbols in equations and formulas (e.g., \(q\))
common types used as parameters in items (e.g.,
PInt
)typical annotation of equations (or parts of it) and symbols (e.g.,
ODE2
)
Common types
Common types are especially used in the definition of items.
These types indicate how they need to be set (e.g., a Vector3D
is set as a list of 3 floats or as a numpy array with 3 floats),
and they usually include some range or size check (e.g., PReal
is checked for being positive and non-zero):
float
\(\ldots\) a single-precision floating point number (note: in Python, ‘float
‘ is used also for double precision numbers; in EXUDYN, internally floats are single precision numbers especially for graphics objects and OpenGL)Real
\(\ldots\) a double-precision floating point number (note: in Python this is also of type ‘float
‘)UReal
\(\ldots\) same asReal
, but may not be negativePReal
\(\ldots\) same asReal
, but must be positive, non-zero (e.g., step size may never be zero)Index
\(\ldots\) deprecated, represents unsined integer,UInt
Int
\(\ldots\) a (signed) integer number, which converts to ‘int
‘ in Python, ‘int
‘ in C++UInt
\(\ldots\) an unsigned integer number, which converts to ‘int
‘ in PythonPInt
\(\ldots\) an positive integer number (> 0), which converts to ‘int
‘ in PythonNodeIndex, MarkerIndex, ...
\(\ldots\) a special (non-negative) integer type to represent indices of nodes, markers, …; specifically, an unintentional conversion from one index type to the other is not possible (e.g., to convertNodeIndex
toMarkerIndex
); see Section Item indexString
\(\ldots\) a stringArrayIndex
\(\ldots\) a list of integer numbers (either list or in some casesnumpy
arrays may be allowed)ArrayNodeIndex
\(\ldots\) a list of node indicesBool
\(\ldots\) a boolean parameter: eitherTrue
orFalse
(’bool
‘ in Python)VObjectMassPoint
,VObjectRigidBody
,VObjectGround
, etc. \(\ldots\) represents the visualization object of the underlying object; ‘V’ is put in front of object nameBodyGraphicsData
\(\ldots\) see Section GraphicsDataVector2D
\(\ldots\) a list ornumpy
array of 2 real numbersVector3D
\(\ldots\) a list ornumpy
array of 3 real numbersVector'X'D
\(\ldots\) a list ornumpy
array of ‘X’ real numbersFloat4
\(\ldots\) a list of 4 float numbersVector
\(\ldots\) a list ornumpy
array of real numbers (length given by according object)NumpyVector
\(\ldots\) a 1Dnumpy
array with real numbers (size given by according object); similar as Vector, but not accepting listMatrix3D
\(\ldots\) a list of lists ornumpy
array with \(3 \times 3\) real numbersMatrix6D
\(\ldots\) a list of lists ornumpy
array with \(6 \times 6\) real numbersNumpyMatrix
\(\ldots\) a 2Dnumpy
array (matrix) with real numbers (size given by according object)NumpyMatrixI
\(\ldots\) a 2Dnumpy
array (matrix) with integer numbers (size given by according object)MatrixContainer
\(\ldots\) a versatile representation for dense and sparse matrices, see Section MatrixContainerPyFunctionGraphicsData
\(\ldots\) a user function providing GraphicsData, see the user function description of the according objectPyFunctionMbsScalar...
\(\ldots\) a user function for the according object; the name is chosen according to the interface (arguments containing scalars, vectors, etc.) and is only used internally for code generation; see the according user function description
States and coordinate attributes
The following subscripts are used to define configurations of a quantity, e.g., for a vector of displacement coordinates \({\mathbf{q}}\):
\({\mathbf{q}}\cConfig \ldots\) \({\mathbf{q}}\) in any configuration
\({\mathbf{q}}\cRef \ldots\) \({\mathbf{q}}\) in reference configuration, e.g., reference coordinates: \({\mathbf{c}}\cRef\)
\({\mathbf{q}}\cIni \ldots\) \({\mathbf{q}}\) in initial configuration, e.g., initial displacements: \({\mathbf{u}}\cIni\)
\({\mathbf{q}}\cCur \ldots\) \({\mathbf{q}}\) in current configuration
\({\mathbf{q}}\cVis \ldots\) \({\mathbf{q}}\) in visualization configuration
\({\mathbf{q}}\cSOS \ldots\) \({\mathbf{q}}\) in start of step configuration
As written in the introduction, the coordinates are attributed to certain types of equations and therefore, the following attributes are used (usually as subscript, e.g., \({\mathbf{q}}_{ODE2}\)):
Time is usually defined as ‘time’ or \(t\). The cross product or vector product ‘\(\times\)‘ is often replaced by the skew symmetric matrix using the tilde ‘\(\tilde{\;\;}\)‘ symbol,
in which \(\tilde{\;\;}\) transforms a vector \({\mathbf{a}}\) into a skew-symmetric matrix \(\tilde {\mathbf{a}}\). If the components of \({\mathbf{a}}\) are defined as \({\mathbf{a}} = \vrRow{a_0}{a_1}{a_2}\tp\), then the skew-symmetric matrix reads
The inverse operation is denoted as \(\vec\), resulting in \(\vec(\tilde {\mathbf{a}}) = {\mathbf{a}}\).
For the length of a vector we often use the abbreviation
A vector \({\mathbf{a}}=[x,\, y,\, z]\tp\) can be transformed into a diagonal matrix, e.g.,
Symbols in item equations
The following tables contains the common notation General coordinates are:
python name (or description)
|
symbol
|
description
|
---|---|---|
displacement coordinates (ODE2)
|
\({\mathbf{q}} = [q_0,\, \ldots,\, q_n]\tp\)
|
vector of \(n\) displacement based coordinates in any configuration; used for second order differential equations
|
rotation coordinates (ODE2)
|
\(\tpsi = [\psi_0,\, \ldots,\, \psi_\eta]\tp\)
|
vector of \(\eta\) rotation based coordinates in any configuration; these coordinates are added to reference rotation parameters to provide the current rotation parameters; used for second order differential equations
|
coordinates (ODE1)
|
\({\mathbf{y}} = [y_0,\, \ldots,\, y_n]\tp\)
|
vector of \(n\) coordinates for first order ordinary differential equations (ODE1) in any configuration
|
algebraic coordinates
|
\({\mathbf{z}} = [z_0,\, \ldots,\, z_m]\tp\)
|
vector of \(m\) algebraic coordinates if not Lagrange multipliers in any configuration
|
Lagrange multipliers
|
\(\tlambda = [\lambda_0,\, \ldots,\, \lambda_m]\tp\)
|
vector of \(m\) Lagrange multipliers (=algebraic coordinates) in any configuration
|
data coordinates
|
\({\mathbf{x}} = [x_0,\, \ldots,\, x_l]\tp\)
|
vector of \(l\) data coordinates in any configuration
|
The following parameters represent possible OutputVariable (list is not complete):
python name
|
symbol
|
description
|
---|---|---|
Coordinate
|
\({\mathbf{c}} = [c_0,\, \ldots,\, c_n]\tp\)
|
|
Coordinate_t
|
\(\dot {\mathbf{c}} = [c_0,\, \ldots,\, c_n]\tp\)
|
time derivative of coordinate vector
|
Displacement
|
\(\LU{0}{{\mathbf{u}}} = [u_0,\, u_1,\, u_2]\tp\)
|
global displacement vector with 3 displacement coordinates \(u_i\) in any configuration; in 1D or 2D objects, some of there coordinates may be zero
|
Rotation
|
\([\varphi_0,\,\varphi_1,\,\varphi_2]\tp\cConfig\)
|
vector with 3 components of the Euler angles in xyz-sequence (\(\LU{0b}{\Rot}\cConfig=:\Rot_0(\varphi_0) \cdot \Rot_1(\varphi_1) \cdot \Rot_2(\varphi_2)\)), recomputed from rotation matrix
|
Rotation (alt.)
|
\(\ttheta = [\theta_0,\, \ldots,\, \theta_n]\tp\)
|
vector of rotation parameters (e.g., Euler parameters, Tait Bryan angles, …) with \(n\) coordinates \(\theta_i\) in any configuration
|
Identity matrix
|
\({\mathbf{I}} = \mr{1}{0}{0} {0}{\ddots}{0} {0}{0}{1}\)
|
the identity matrix, very often \({\mathbf{I}} = \mathbf{I}_{3 \times 3}\), the \(3 \times 3\) identity matrix
|
Identity transformation
|
\(\LU{0b}{\mathbf{I}_{3 \times 3}} = \mathbf{I}_{3 \times 3}\)
|
converts body-fixed into global coordinates, e.g., \(\LU{0}{{\mathbf{x}}} = \LU{0b}{\mathbf{I}_{3 \times 3}} \LU{b}{{\mathbf{x}}}\), thus resulting in \(\LU{0}{{\mathbf{x}}} = \LU{b}{{\mathbf{x}}}\) in this case
|
RotationMatrix
|
\(\LU{0b}{\Rot} = \mr{A_{00}}{A_{01}}{A_{02}} {A_{10}}{A_{11}}{A_{12}} {A_{20}}{A_{21}}{A_{22}}\)
|
a 3D rotation matrix, which transforms local (e.g., body \(b\)) to global coordinates (0): \(\LU{0}{{\mathbf{x}}} = \LU{0b}{\Rot} \LU{b}{{\mathbf{x}}}\)
|
RotationMatrixX
|
\(\LU{01}{\Rot_0(\theta_0)} = \mr{1}{0}{0} {0}{\cos(\theta_0)}{-\sin(\theta_0)} {0}{\sin(\theta_0)}{\cos(\theta_0)}\)
|
rotation matrix for rotation around \(X\) axis (axis 0), transforming a vector from frame 1 to frame 0
|
RotationMatrixY
|
\(\LU{01}{\Rot_1(\theta_1)} = \mr{\cos(\theta_1)}{0}{\sin(\theta_1)} {0}{1}{0} {-\sin(\theta_1)}{0}{\cos(\theta_1)}\)
|
rotation matrix for rotation around \(Y\) axis (axis 1), transforming a vector from frame 1 to frame 0
|
RotationMatrixZ
|
\(\LU{01}{\Rot_2(\theta_2)} = \mr{\cos(\theta_2)}{-\sin(\theta_2)}{0} {\sin(\theta_2)}{\cos(\theta_2)}{0} {0}{0}{1}\)
|
rotation matrix for rotation around \(Z\) axis (axis 2), transforming a vector from frame 1 to frame 0
|
Position
|
\(\LU{0}{{\mathbf{p}}} = [p_0,\, p_1,\, p_2]\tp\)
|
global position vector with 3 position coordinates \(p_i\) in any configuration
|
Velocity
|
\(\LU{0}{{\mathbf{v}}} = \LU{0}{\dot {\mathbf{u}}} = [v_0,\, v_1,\, v_2]\tp\)
|
global velocity vector with 3 displacement coordinates \(v_i\) in any configuration
|
AngularVelocity
|
\(\LU{0}{\tomega} = [\omega_0,\, \ldots,\, \omega_2]\tp\)
|
global angular velocity vector with \(3\) coordinates \(\omega_i\) in any configuration
|
Acceleration
|
\(\LU{0}{{\mathbf{a}}} = \LU{0}{\ddot {\mathbf{u}}} = [a_0,\, a_1,\, a_2]\tp\)
|
global acceleration vector with 3 displacement coordinates \(a_i\) in any configuration
|
AngularAcceleration
|
\(\LU{0}{\talpha} = \LU{0}{\dot \tomega} = [\alpha_0,\, \ldots,\, \alpha_2]\tp\)
|
global angular acceleration vector with \(3\) coordinates \(\alpha_i\) in any configuration
|
VelocityLocal
|
\(\LU{b}{{\mathbf{v}}} = [v_0,\, v_1,\, v_2]\tp\)
|
local (body-fixed) velocity vector with 3 displacement coordinates \(v_i\) in any configuration
|
AngularVelocityLocal
|
\(\LU{b}{\tomega} = [\omega_0,\, \ldots,\, \omega_2]\tp\)
|
local (body-fixed) angular velocity vector with \(3\) coordinates \(\omega_i\) in any configuration
|
Force
|
\(\LU{0}{{\mathbf{f}}} = [f_0,\, \ldots,\, f_2]\tp\)
|
vector of \(3\) force components in global coordinates
|
Torque
|
\(\LU{0}{\ttau} = [\tau_0,\, \ldots,\, \tau_2]\tp\)
|
vector of \(3\) torque components in global coordinates
|
The following table collects some typical input parameters for nodes, objects and markers:
python name
|
symbol
|
description
|
---|---|---|
referenceCoordinates
|
\({\mathbf{c}}\cRef = [c_0,\, \ldots,\, c_n]\cRef\tp = [c_{\mathrm{Ref},0},\, \ldots,\, c_{\mathrm{Ref},n}]\cRef\tp\)
|
\(n\) coordinates of reference configuration (can usually be set at initialization of nodes)
|
initialCoordinates
|
\({\mathbf{c}}\cIni\)
|
initial coordinates with generalized or mixed displacement/rotation quantities (can usually be set at initialization of nodes)
|
reference point
|
\(\pRefG = [r_0,\, r_1,\, r_2]\tp\)
|
reference point of body, e.g., for rigid bodies or FFRF bodies, in any configuration; NOTE: for ANCF elements, \(\pRefG\) is used for the position vector to the beam centerline
|
localPosition
|
\(\pLocB = [\LUR{b}{b}{0},\, \LUR{b}{b}{1},\, \LUR{b}{b}{2}]\tp\)
|
local (body-fixed) position vector with 3 position coordinates \(b_i\) in any configuration, measured relative to reference point; NOTE: for rigid bodies, \(\LU{0}{{\mathbf{p}}} = \pRefG + \LU{0b}{\Rot} \pLocB\); localPosition is used for definition of body-fixed local position of markers, sensors, COM, etc.
|