For the complete documentation index, see llms.txt. This page is also available as Markdown.

Nodal Mass [FEA]

A Nodal Mass object places a concentrated (lumped) mass at a single node so that it contributes to the global mass matrix. It represents inertia that exists on the real bridge but is not carried by any modelled element with self-weight — barriers, railings, utilities, signs, ballast, machinery, or a superstructure segment that has been condensed away.

Nodal Mass affects mass only. It adds nothing to the stiffness matrix, applies no static load, and produces no reactions in a static case. It is read by eigenvalue/modal, response-spectrum and time-history cases; a linear static case ignores it entirely.

All six values are entered as WEIGHTS, not masses. The solver divides every entry by the Gravity constant of the analysis case that consumes it (mass = value / Gravity). Enter the weight of the item in force units and let the program convert. Leaving Gravity blank or zero on the case is safe — it is treated as "unset" and falls back to standard gravity in the project's length unit — but an explicitly wrong Gravity scales every nodal mass in the model.

General

Analysis Case: The eigenvalue/RSA or time-history case this mass belongs to. This is a selection parameter, not a physical one: a case assembles the Nodal Mass objects whose Analysis Case points at it, or that are defined as its children in the object tree.

A mass created from this sheet is a project-level object, so for it the Analysis Case field is the only thing connecting it to a case — left empty, it participates in no case at all and is silently ignored, appearing in no nodal-mass count and changing no period. (A mass nested under a case in the tree, which the agent API and ParamML authoring can produce, is picked up through that parent relationship instead and will show an empty Analysis Case here while still being used.)

Set it as soon as you create the row. To apply the same physical mass to several cases, duplicate the row and point each copy at its own case.

Node: The joint the lumped mass is attached to. This is a connectivity parameter: it selects which six rows of the global mass matrix receive the contribution — it does not create a node or move one. The mass acts at the node's own location, so an eccentric item (a barrier whose centre of gravity sits outboard of the girder line) is only represented correctly if you either attach it to a node at that offset or supply the corresponding rotational terms below. Define together with the weights; a Nodal Mass with no Node is skipped silently during assembly. If the node is a slave of a rigid diaphragm, the in-plane translational contribution is redistributed onto the master joint through the diaphragm transform, so the mass still participates — it simply appears on the master's equations. Verify by displaying the node and confirming the mass marker sits at the intended joint.

Fx: Weight generating translational inertia along global X. Divided by Gravity to give the mass placed on the node's X translational DOF.

Engineering influence. Increasing Fx lowers the natural frequencies of every mode with X participation and raises that node's modal displacement amplitude; the effect on any individual mode depends on the mode shape, so a mass sitting near a nodal point of a given mode may change it very little. A value of zero means no mass in X — not "inherit from self-weight". Negative values are not physical; the solver takes the absolute value, so a sign error will not be reported as an error. Fx does not affect stiffness, static results, or member design. Results sensitive to it: periods, mode shapes, modal participation factors, and therefore all response-spectrum and time-history output. Unrealistically large values drive the structure toward a rigid-body mode and can make the eigen solver converge slowly or return spurious low-frequency modes.

Fy: Weight generating translational inertia along global Y. Same conversion and behaviour as Fx, on the Y translational DOF.

Fz: Weight generating translational inertia along global Z (vertical in the default orientation). Same conversion and behaviour as Fx.

For an ordinary object that simply has weight, set Fx = Fy = Fz to that weight — inertia is direction-independent for a point mass. Specifying them separately is for cases where you deliberately want directional mass, such as sloshing or entrained-fluid idealizations, or when you are matching a reference model that reported only one direction.

Mx: Weight-based rotational inertia about global X — that is, mass moment of inertia multiplied by Gravity, in force × length² units. Divided by Gravity to give the rotational mass on the node's Rx DOF.

Engineering influence. Rotational terms matter when the lumped item is physically extended rather than point-like, or is offset from the node: a barrier along the deck edge, a heavy cross-girder, or a condensed pier cap. Increasing Mx lowers the frequency of torsional and rocking modes about X while leaving pure translational modes largely unchanged. Zero means the item is treated as a point mass with no rotational inertia, which is conservative for frequency in some cases and unconservative in others — it is not automatically safe. These terms are only meaningful if the model actually has rotational DOFs at that joint: on a node whose rotations are fully restrained, or in a model built entirely from truss elements, Mx is ignored.

My: Weight-based rotational inertia about global Y. Same conversion and behaviour as Mx.

Mz: Weight-based rotational inertia about global Z. Same conversion and behaviour as Mx.

Verification

  • Run the eigenvalue case and read the System Mass (from Nodes) lines the solver reports for each global direction. They echo the total translational mass assembled from Nodal Mass objects, converted back to force units — compare against the sum of the weights you entered. (The assembled value also carries the analysis state's own scale factor, so treat this as an order-of-magnitude and proportionality check rather than an exact equality unless that scale is 1.)

  • Check the # of Nodal Mass column on the Eigenvalue & RSA case; it counts the objects that case actually picked up. A count lower than expected almost always means an empty Analysis Case field on one of the rows.

  • Compare periods before and after adding the mass. The fundamental period should lengthen; if it does not move at all, the mass is either not being read, sitting on a restrained DOF, or located at a nodal point of that mode.

  • Check modal participating mass ratios — added mass that participates will show up there.

  • For a simple case, hand-check against T = 2π√(m/k) using the tributary stiffness at the node.

  • Confirm against a benchmark model with a known lumped mass before trusting a large production model.

Common mistakes

  • Entering a mass instead of a weight. The value is divided by Gravity. Entering mass units understates the inertia by a factor of g, which shortens periods and typically reduces computed seismic demand — an unconservative error that no warning will catch.

  • Entering a Gravity value in the wrong length unit on the eigenvalue or time-history case — e.g. 32.2 (ft/s²) in a model whose internal length unit is inches, where 386.09 is expected. This scales every nodal mass by ~12 and is not flagged. Leaving it blank is safer than guessing.

  • Double-counting. Modelling a barrier as elements with self-weight and adding its weight as Nodal Mass. Nodal Mass supplements the structure's own mass; it does not replace it.

  • Leaving Analysis Case empty. This is the most common way a nodal mass silently does nothing: the case only collects masses that point at it. Confirm with the # of Nodal Mass column.

  • Setting only Fz. A vertical-only mass leaves the item weightless in the horizontal directions, which is usually wrong for seismic work — lateral periods come out too short.

  • Omitting rotational terms for an eccentric or extended item, then being surprised that torsional modes are too stiff.

  • Attaching the mass to a node that is fully restrained, where it can never participate.

Last updated