Nodes

Nodes, support fixities, and model planarization.

Asap.FIXITIESConstant
FIXITIES

Map from support-condition symbols to 6-entry DOF fixity vectors, ordered (Tx, Ty, Tz, Rx, Ry, Rz) with true = free. Matches the legacy fixDict exactly, so existing model-building code keeps its meaning.

source
Asap.NodeType
Node{T<:Real}

A structural node: a point in 3D space carrying six degrees of freedom — three translations (along global X, Y, Z) and three rotations (about global X, Y, Z).

Every node exposes all six DOF slots regardless of what connects to it. Which slots actually participate in a solve is decided later by activity analysis: a DOF touched by no element stiffness (e.g. the rotations of a node connected only to truss elements) is excluded automatically. This is what lets truss and frame elements mix freely in one model — there is no separate truss node type.

A Node is pure definition data. Analysis results (displacements, reactions) live in the results object returned by the solve, accessed as displacement(results, node) / reaction(results, node) — never on the node itself.

Fields

  • position::SVector{3,T}: coordinates in the global system [length]
  • fixity::SVector{6,Bool}: support condition per DOF, ordered (Tx, Ty, Tz, Rx, Ry, Rz). true = free to move, false = fixed by a support (legacy convention preserved).
  • id::Symbol: user tag for group queries (e.g. :support, :topchord)
  • index::Int: position of this node in its model's node vector; assigned by process!, 0 until then. Internal bookkeeping — not user-set.

Constructors

Node(position, fixity::Symbol, id = :node)         # common support types
Node(position, fixity::AbstractVector{Bool}, id = :node)  # explicit DOFs
Node{T}(position, fixity, id)                       # explicit scalar type

position may be any 3-element vector; it is converted to an SVector{3,T}.

Available fixity symbols (see FIXITIES):

symbolmeaning
:freeall six DOFs free
:fixedfully clamped (all six fixed)
:pinnedtranslations fixed, rotations free
:xfixed/:yfixed/:zfixedone translation fixed, all else free
:xfree/:yfree/:zfreeone translation free, all else fixed

Examples

julia> Node([0.0, 0.0, 3.0], :pinned)

julia> Node([2.5, 0.0, 3.0], :free, :midspan)

julia> Node([5.0, 0.0, 0.0], [false, false, false, true, true, true])  # ≡ :pinned

See also fixnode!, planarize!.

source
Asap.fixnode!Method
fixnode!(node::Node, fixity::Symbol)

Replace a node's support condition with one of the standard types in FIXITIES (e.g. :pinned, :fixed, :zfixed).

source
Asap.planarize!Function
planarize!(nodes, plane = :XY)

Constrain nodes to behave as a 2D structure in the given global plane by fixing the out-of-plane DOFs: the translation normal to the plane and the two rotations whose axes lie in the plane (e.g. for :XY: Tz, Rx, Ry).

Operates on a vector of nodes or a single node.

source