Results
StaticResult is the numerical source of truth after a linear-static solve.
It stores a frozen snapshot of the problem and solution at the time the
analysis was performed.
Creating a result
The most common form is:
result = model.solve()
The equivalent explicit analysis call is:
from nusa import LinearStaticAnalysis
result = LinearStaticAnalysis().solve(model)
Both forms return nusa.result.StaticResult.
Primary arrays
The result exposes defensive copies of the main solved vectors:
applied_loadsExternal nodal loads specified in the model.
prescribed_displacementsPrescribed displacement vector. Free DOFs are represented by
nan.displacementsSolved generalized displacement vector.
nodal_forcesGeneralized nodal force vector obtained from
K @ u.reactionsConstraint reactions, evaluated from the difference between the force required by the solved state and the applied load.
element_resultsCanonical result dictionaries in element order.
Example:
print(result.displacements)
print(result.reactions)
print(result.element_results)
Object-based queries
For most user code, object-based accessors are easier to read than indexing the global arrays manually:
result.applied_load(node)
result.prescribed_displacement(node)
result.displacement(node)
result.nodal_force(node)
result.reaction(node)
result.element_result(element)
The returned dictionaries use the DOF names associated with the model family.
For example, a truss node returns ux/uy displacements and fx/fy
forces, while a beam node returns uy/ur displacements and fy/m
actions.
Element results
Each element family exposes a canonical result schema:
Element |
Result keys |
|---|---|
Spring |
|
Bar |
|
Truss |
|
Beam |
|
LinearTriangle |
|
Example:
values = result.element_result(element)
print(values["axial_force"])
Snapshot semantics
A result does not change if the model is later modified:
result1 = model.solve()
model.add_force(node, (20.0,))
result2 = model.solve()
result1 still represents the first analysis, while result2 represents
the modified problem.
The result also stores frozen geometry, labels, connectivity, DOF metadata, and model name. This allows reporting and visualization to remain stable even when the original model objects are later edited.
Post-processing delegates
StaticResult provides convenience methods that delegate to NuSA’s
post-processing functions:
result.element_field("stress_xx")
result.nodal_field("stress_xx")
result.nodal_field("von_mises_stress")
See Post-processing for recovery policies and derived fields.
Reporting and visualization delegates
A result can also be used directly for solved reporting and visualization:
result.simple_report()
result.plot_deformed_shape()
result.plot_nodal_field("stress_xx")
result.plot_element_field("stress_xx")
Beam results additionally expose:
result.plot_shear_diagram()
result.plot_moment_diagram()
API reference
Result objects for NuSA finite-element analyses.
- class nusa.result.StaticResult(*, model_name, node_objects, node_labels, node_coordinates, element_objects, element_labels, element_types, connectivity, displacement_dofs, force_dofs, applied_loads, prescribed_displacements, displacements, nodal_forces, reactions, element_results)[source]
Bases:
objectStable snapshot of one completed linear-static analysis.
Instances are produced by
nusa.solve()ornusa.LinearStaticAnalysis. Public array properties return copies so callers cannot mutate the stored result.- Attributes:
applied_loadsApplied nodal-load vector captured for this analysis.
connectivityElement connectivity as frozen result-node indices.
displacement_dofsDisplacement component names in per-node order.
displacementsComplete solved global displacement vector.
element_labelsElement labels in frozen result order.
element_resultsCanonical element results in frozen result order.
element_typesElement type names in frozen result order.
force_dofsGeneralized force component names in per-node order.
model_nameModel name captured at solve time.
nodal_forcesSolved generalized nodal-force vector K @ u.
node_coordinatesNode coordinates in frozen result order.
node_labelsNode labels in frozen result order.
prescribed_displacementsPrescribed-displacement vector captured for this analysis.
reactionsSupport-reaction vector for prescribed degrees of freedom.
Methods
applied_load(node)Return applied load components for one result node.
displacement(node)Return solved displacement components for one result node.
element_field(name)Return one scalar element field in result order.
element_result(element)Return canonical primary results for one element.
nodal_field(name[, recovery])Return one scalar nodal field, recovering element values if needed.
nodal_force(node)Return solved generalized nodal-force components for one node.
plot_deformed_shape([scale, ax])Plot the frozen deformed geometry.
plot_element_field(field[, ax])Plot a scalar element field.
plot_moment_diagram([ax])Plot beam bending moments from frozen element results.
plot_nodal_field(field[, ax, recovery])Plot a scalar nodal field.
plot_shear_diagram([ax])Plot beam shear forces from frozen element results.
prescribed_displacement(node)Return prescribed displacement components for one result node.
reaction(node)Return support-reaction components for one node.
simple_report([report_type, fname])Generate a compact text report from this result snapshot.
- property applied_loads
Applied nodal-load vector captured for this analysis.
- property connectivity
Element connectivity as frozen result-node indices.
- property displacement_dofs
Displacement component names in per-node order.
- property displacements
Complete solved global displacement vector.
- property element_labels
Element labels in frozen result order.
- property element_results
Canonical element results in frozen result order.
- property element_types
Element type names in frozen result order.
- property force_dofs
Generalized force component names in per-node order.
- property model_name
Model name captured at solve time.
- nodal_field(name, recovery='average')[source]
Return one scalar nodal field, recovering element values if needed.
- property nodal_forces
Solved generalized nodal-force vector K @ u.
- property node_coordinates
Node coordinates in frozen result order.
- property node_labels
Node labels in frozen result order.
- prescribed_displacement(node)[source]
Return prescribed displacement components for one result node.
- property prescribed_displacements
Prescribed-displacement vector captured for this analysis.
- property reactions
Support-reaction vector for prescribed degrees of freedom.