Add a load
add_loadAdd ONE load of any kind to an existing load case. Choose kind: "nodal_force" (force at a node), "nodal_moment" (moment at a node — direction is the moment AXIS, right-hand rule), "distributed" (line load along a member; covers uniform, TRAPEZOIDAL/TRIANGULAR via end_magnitude, and PARTIAL via start_frac/end_frac), "member_point_force" / "member_point_moment" (at a fractional position along a member, in global or local axes), "surface" (pressure over a convex planar polygon, distributed onto the coplanar members inside it), "plate_pressure" (pressure on a meshed plate surface). SIGN: direction_x/y/z is a GLOBAL vector — gravity is direction_y = -1. The direction is normalised for you and the whole load stays in magnitude (the raw engine multiplies component-wise, so an unnormalised [0,-2,0] would silently double the load). Distributed intensity is per unit of MEMBER length, not of horizontal projection. Units are the model's own (default N, m) EXCEPT plate_pressure, which must always be in SI pascals. Free.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| axes | No | member_point_* only: "global" (default) or "local" (member frame, local x along the member). | |
| kind | Yes | nodal_force | nodal_moment | distributed | member_point_force | member_point_moment | surface | plate_pressure | |
| node | No | Target node id — required for nodal_force / nodal_moment. | |
| model | No | Stringified FERS model JSON | |
| member | No | Target member id — required for distributed / member_point_force / member_point_moment. | |
| polygon | No | surface only. >= 3 vertices, planar and CONVEX, e.g. [[0,0,0],[6,0,0],[6,0,4],[0,0,4]]. Only members lying exactly in that plane receive load. | |
| end_frac | No | distributed only. Where it ends, 0..1 (default 1). | |
| position | No | Fraction along the member, 0 = start node, 1 = end node. Required for member_point_*. Clamped to [0,1] (the engine does not range-check it). | |
| magnitude | No | Load size, always positive — put the sense in direction_x/y/z. Force / force*length / force per length / force per area depending on kind. | |
| model_ref | No | Handle from stash_model, used INSTEAD of `model`. Avoids sending the whole document on every step; the tool returns the same handle back. | |
| projected | No | plate_pressure only. false (default) = pressure on the true area; true = on the projected area (snow-style). | |
| start_frac | No | distributed only. Where the line load starts, 0..1 (default 0). Use 0.25/0.75 for a partial UDL over the middle half. | |
| surface_id | No | plate_pressure only: id of a model.plate_surfaces[] entry. Prefer this. | |
| direction_x | No | X component of the direction (or moment axis). Default 0. | |
| direction_y | No | Y component. Gravity is -1 in these Y-up models. Default 0. | |
| direction_z | No | Z component. Default 0. At least one component must be non-zero. | |
| load_case_id | No | id of the load case to append to (from add_load_case) | |
| end_magnitude | No | distributed only. Intensity at end_frac. Omit for uniform; set it different from magnitude for a TRAPEZOID; magnitude 0 + end_magnitude w gives a TRIANGLE. There is no separate shape field — the shape IS these numbers. | |
| distribution_dx | No | surface only, optional: X of the span direction the load is carried in. | |
| distribution_dy | No | surface only, optional: Y of the span direction. | |
| distribution_dz | No | surface only, optional: Z of the span direction. | |
| plate_element_id | No | plate_pressure only: one generated element. Element ids change whenever the mesh changes — prefer surface_id. |