Geometry nodes#
Geometry nodes are the backbone of a model. They determine what can move and what can not. If the model is an animal, then the geometry nodes are the joints and bones.
Frame#
The first and most important geometry node is the Frame
node, short for AxisFrame. The frame node represents something rigid such as a bone, a ship or a crane boom. Mathematically the frame node is a 3d reference frame with an origin and an orientation.
The frame node has six degrees of freedom which can be enabled or disabled individually. This defines if and how it can move. It may also be connected to an other frame node. In that case the position, orientation and degrees of freedom are defined relative to that other frame.
More info and examples: Modeling basics / geometry
Properties
The parent of an frame determines if the frame node is connected to another node. If a frame does not have a parent then it is defined relative to the global axis system.
The position of a frame determines the position of the origin of the axis system relative to its parent. The rotation of a frame determines the rotation.
Both position and rotation are 3d vectors. All components of the position and rotation vector can individually be set to “fixed” or “free”. If a component is “free” then the frame can move in this degree of freedom. When solving statics the solver will determine a value for this component such that the system is in equilibrium.
For example defining the position as (free, 0, 23) results in a frame at elevation 23 and y=0 that can slide in the xdirection. Defining both the position and rotation as (free, free, free) means a frame that is completely free to move.
3D rotations
Unlike in 2d, 3D rotations can suffer from many definition issues such as order of rotations and gimbal locks. DAVE uses a mathematically sound definition of rotation: the rotation vector.
The 3d rotation vector defines the rotation. The length of the vector is the rotation in degrees, the direction of the vector is the axis of rotation. Imagine the rotation vector as a hinge. The direction of the vector is the axis of the hinge (like in a door), the magnitude is the angle it makes. A rotation of (10,0,0) is a rotation of 10 degrees about the xaxis. A rotation of (5,0,5) is a rotation of 7.07 degrees about the (1,0,1) axis.
Some typical joints can be defined as follows: Balljoint: rotation = (free, free, free) Hingejoint about x : rotation = (free, 0 ,0) Hingejoint about y : rotation = (0, free ,0) Hingejoint about z : rotation = (0 ,0, free)
A rotation of (free, free, 0) defines a rotation vector located in the xy plane: A rotation about an horizontal axis.
For all these joints the nonfree component is zero. It is mathematically possible to allow a nonzero value for one of the other components but it is difficult to interpret what is means. Try to imagine what a rotation vector of (free, free ,10) is. One may think for a moment that this is a good way to define a vessel that can roll (x=free) and pitch (y=free) but has a fixed heading of 10 degrees. But is not. It is a rotation with a minimum of 10 degrees about and axis that is at least a little vertical and uhm…. Well, not very practical. Therefore the following limitation is applied: if one or two degrees of freedom of the rotation are free, then the other component is 0. This is enforced when solving.
So how to define a vessel that can roll and pitch but has a fixed, nonzero heading? Simple: break up the rotation is different parts. First make a frame with rotation = (0,0,10) which defines the heading. Then make a second frame with rotation = (free, free, 0) and connect that to the first one.
And this is how to make a hinge about an direction of (1,2,3) : First make a frame node with its rotation set to (1,2,3), then place a second axisframe node with (free, 0, 0) on top of it.
Stack axisframe nodes to define rotations about directions other than the principal ones
DAVE allows us to get/set the rotations and positions using either the local or global reference frames. Setting one will also update the other. In the end the local position and rotation are used in combination with the degrees of freedom.
There are a some readonly convenience properties to get the orientation of a frame using common definitions: heel, trim, heading, tilt. These are derived from the global rotation.
Property 
ReadOnly 
Documentation 

inertia 
The linear inertia of the axis in [mT] Aka: “Mass” 

inertia_position 
The position of the center of inertia. Aka: “cog” [m,m,m] (local axis) 

inertia_radii 
The radii of gyration of the inertia [m,m,m] (local axis) 

fixed 
Determines which of the six degrees of freedom are fixed, if any. (x,y,z,rx,ry,rz). 

x 
The xcomponent of the position vector (parent axis) [m] 

y 
The ycomponent of the position vector (parent axis) [m] 

z 
The zcomponent of the position vector (parent axis) [m] 

position 
Position of the axis (parent axis) [m,m,m] 

rx 
The xcomponent of the rotation vector [degrees] (parent axis) 

ry 
The ycomponent of the rotation vector [degrees] (parent axis) 

rz 
The zcomponent of the rotation vector [degrees], (parent axis) 

rotation 
Rotation of the axis about its origin (rx,ry,rz). 

parent 
Determines the parent of the axis. Should either be another axis or ‘None’ 

gx 
The xcomponent of the global position vector [m] (global axis ) 

gy 
The ycomponent of the global position vector [m] (global axis ) 

gz 
The zcomponent of the global position vector [m] (global axis ) 

global_position 
The global position of the origin of the axis system [m,m,m] (global axis) 

grx 
The xcomponent of the global rotation vector [degrees] (global axis) 

gry 
The ycomponent of the global rotation vector [degrees] (global axis) 

grz 
The zcomponent of the global rotation vector [degrees] (global axis) 

tilt_x 
Readonly 
Tilt percentage. This is the zcomponent of the unit y vector [%]. 
heel 
Readonly 
Heel in degrees. SB down is positive [deg]. 
tilt_y 
Readonly 
Tilt percentage. This is the zcomponent of the unit x vector [%]. 
trim 
Readonly 
Trim in degrees. Bowdown is positive [deg]. 
heading 
Readonly 
Direction (0..360) [deg] of the local xaxis relative to the global x axis. Measured about the global z axis 
heading_compass 
Readonly 
The heading (0..360)[deg] assuming that the global yaxis is North and global xaxis is East and rotation accoring compass definition 
global_rotation 
Rotation [deg,deg,deg] (global axis) 

global_transform 
Readonly 
Readonly: The global transform of the axis system [matrix] 
connection_force 
Readonly 
The forces and moments that this axis applies on its parent at the origin of this axis system. [kN, kN, kN, kNm, kNm, kNm] (Parent axis) 
connection_force_x 
Readonly 
The xcomponent of the connectionforce vector [kN] (Parent axis) 
connection_force_y 
Readonly 
The ycomponent of the connectionforce vector [kN] (Parent axis) 
connection_force_z 
Readonly 
The zcomponent of the connectionforce vector [kN] (Parent axis) 
connection_moment_x 
Readonly 
The mxcomponent of the connectionforce vector [kNm] (Parent axis) 
connection_moment_y 
Readonly 
The mycomponent of the connectionforce vector [kNm] (Parent axis) 
connection_moment_z 
Readonly 
The mxcomponent of the connectionforce vector [kNm] (Parent axis) 
applied_force 
Readonly 
The force and moment that is applied on origin of this axis [kN, kN, kN, kNm, kNm, kNm] (Global axis) 
ux 
Readonly 
The unit x axis [m,m,m] (Global axis) 
uy 
Readonly 
The unit y axis [m,m,m] (Global axis) 
uz 
Readonly 
The unit z axis [m,m,m] (Global axis) 
equilibrium_error 
Readonly 
The unresolved force and moment that on this axis. Should be zero when in equilibrium (appliedforce minus connection force, Parent axis) 
Circles and points#
Points and circles are helpers. They define locations (points) or circular geometry (circles) that can be used by other nodes such as cables.
Point#
Points are locations or attachment points. They can be located on a frame, but can also be defined globally. In that case they fixed in space.
Property 
ReadOnly 
Documentation 

x 
x component of local position [m] (parent axis) 

y 
y component of local position [m] (parent axis) 

z 
z component of local position [m] (parent axis) 

position 
Local position [m,m,m] (parent axis) 

applied_force_and_moment_global 
Readonly 
Applied force and moment on this point [kN, kN, kN, kNm, kNm, kNm] (Global axis) 
gx 
x component of position [m] (global axis) 

gy 
y component of position [m] (global axis) 

gz 
z component of position [m] (global axis) 

global_position 
Global position [m,m,m] (global axis) 
Circle#
A circle is a disk or hole. A circle is located on a point. It has a diameter/radius and a direction.
Property 
ReadOnly 
Documentation 

axis 
Direction of the sheave axis (x,y,z) in parent axis system. 

radius 
Radius of the circle [m] 

global_position 
Readonly 
Returns the global position of the center of the sheave. 
GeometricContact#
Geometric contact can be used to model contact bewteen circlular objects (bars) or circular holes. Examples are a shackle pin in a padeye hole (pinhole connection) or a shackle pin against the bow of another shackle (barbar connection).
This is a rigid and unbreakable connection constructed by a clever combination of frames. This means that it is not a connection with a stiffness (the contact is infinitely stiff). It also means that a geometric contact creates a parentchild relation between the two connected frames.
A GeometricContact can be used to construct geometric connections between circular members:
 steel bars and holes, such as a shackle pin in a padeye (pinhole)
 steel bars and steel bars, such as a shackleshackle connection
Situation before creation of geometric contact:
Axis1
Point1
Circle1
Axis2
Point2
Circle2
Create a geometric contact with Circle1 and parent and Circle2 as child
Axis1
Point1 : observed, referenced as parent_circle_parent
Circle1 : observed, referenced as parent_circle
_axis_on_parent : managed
_pin_hole_connection : managed
_connection_axial_rotation : managed
_axis_on_child : managed
Axis2 : managed , referenced as child_circle_parent_parent
Point2 : observed , referenced as child_circle_parent
Circle2 : observed , referenced as child_circle
Property 
ReadOnly 
Documentation 

child 
The Circle that is connected to the GeometricContact [Node] 

parent 
The Circle that the GeometricConnection is connected to [Node] 

swivel 
Swivel angle between parent and child objects [degrees] 

swivel_fixed 
Allow parent and child to swivel relative to eachother [boolean] 

rotation_on_parent 
Angle between the line connecting the centers of the circles and the axis system of the parent node [degrees] 

fixed_to_parent 
Allow rotation around parent [boolean] 

child_rotation 
Angle between the line connecting the centers of the circles and the axis system of the child node [degrees] 

child_fixed 
Allow rotation of child relative to connection, see also: child_rotation [boolean] 

inside 
Type of connection: True means child circle is inside parent circle, False means the child circle is outside but the circumferences contact [boolean] 