SWBPIPE · The open manual
Part III · The MethodIII–1

Part III

The Method in SWBPIPE

A. The 3D beam model

SWBPIPE solves the problem of Part II by the direct stiffness method. The centerline is divided into elements that meet at nodes. Every node has six degrees of freedom, three movements and three rotations, in the order ux, uy, uz, θx, θy, θz. The stiffness matrix relates twelve end movements to twelve end forces and moments. Assembly combines the element matrices into one system for the line. The solution gives the movements of the nodes.

The classical force method of Part II F solves the same problem by another method. The bend element below uses the same flexibility integrals.

This part separates beam theory from supported software at revision 8212c765ec. Model 0.5.0 is the current format; older model versions are refused for re-authoring. Pressure-free models omit pressure_contract and publish preview-physics-1 results. Exact-contract models declare 3.0.0/exact_pressure_v3 and their shear model. They publish ordinary pressure-1 or eligible captured pressure-source-1 results. The former pressure v2 contract and its result identities are retired. Model 0.5.0 also carries explicit load and reference states on the exact route. A mark headed Today describes current behavior and links to the status of this edition.

1.Axes.

Each element has its own axes. Local x runs from the first node to the second. Local y comes from the element’s reference direction, with its x component removed. Local z completes a right-handed set. For a round straight pipe, the reference direction selects the reporting axes for forces and moments. It does not change the stiffness.

The direction cosines transform the element stiffness to global axes:

Kglobal = TT Klocal T(1)

where T repeats the 3 × 3 direction-cosine matrix four times along its diagonal. The inclined member case checks this transformation.

Today

A reference direction must be entered on every pipe, although it does not change a round section’s stiffness.

2.Straight pipe.

A straight element carries axial force, torsion and bending about both local axes. Its section comes from the nominal outside diameter Do and nominal wall t, with Di = Do − 2t:

A = π(Do2 − Di2)/4,   I = π(Do4 − Di4)/64,   J = 2I(2)

J is the torsion constant, equal to the polar moment for a circular tube. Stiffness and weight use the nominal wall. Corrosion and other allowances reduce the section used for stress only, as the codes require (Part II K).

For bending in the local x–y plane, with the degrees of freedom ordered vi, θz,i, vj, θz,j, an element of length L has the stiffness

EI/L3  
126L−126L
6L4L2−6L2L2
−12−6L12−6L
6L2L2−6L4L2
(3)

Equation (3) is the Euler–Bernoulli bending block. In the x–z plane, movement-rotation terms change sign. A positive θy lowers the z coordinate ahead of it. The axial and torsional terms are EA/L and GJ/L.

Today

Exact-contract straight members select timoshenko_annulus_energy_v1 or euler_bernoulli. New authoring defaults to Timoshenko, using the energy-matched shear factor of the nominal annulus. An existing document keeps its selected formulation. Realized arcs and pressure-free members remain Euler–Bernoulli (Status).

On the exact route, nominal wall supplies stiffness and metal mass. Mill tolerance and corrosion allowance define the reduced stress section and pressure bore; stress rows identify nominal or reduced basis. Pressure-free models retain one wall-minus-mill-tolerance section (Status).

3.Bends.

The curved bend element uses a flexibility formulation, as in the classical methods. With one end fixed, unit-load moments and forces define the flexibility at the other end. The formulation integrates these terms around the arc of radius R. The flexibility factor k multiplies the bending terms (Part II E):

fab = R ∫ ( k MaMb/EI + k M′aM′b/EI + TaTb/GJ + NaNb/EA ) dφ(4)

Here, M is the in-plane bending moment. The out-of-plane bending moment is M′. The product mapping applies the same user-entered k in both planes. The element interface can accept separate factors.

The formulation evaluates the integrals in closed form and inverts the 6 × 6 flexibility matrix. Equilibrium transfers the result to a 12 × 12 stiffness matrix between the tangent points. Weight is applied along the arc. The expansion loop records a bending-only reference at k = 1, 5, 10 and 20.

Today

A bend with solver_consumption=curved_bend_macro_element replaces chord mechanics with a realized curved element. The element uses declared geometry, material and the user’s finite positive flexibility factor k. Missing or inconsistent geometry blocks the solve. The mechanics_geometry_only mode retains chord mechanics. A bend drawn on screen does not establish its solver mode (Status).

The program does not derive k from geometry. The v3 contract admits realized bends within the pressure restrictions in B 3. It refuses geometry-only bends with a realization message.

Arc end and station actions do not establish a governing arc stress maximum. The program withholds arc hoop and radial pressure stresses, arc maxima and an incomplete-coverage stress headline. The member-relative check in A 6 replaces the former geometric short-bend demotion rule. A bend too short relative to its neighbors can still trigger a named pivot-screen refusal.

4.Rigid elements, expansion joints and tees.

Rigid elements. In the engineering model, valves, flanges and other stiff components use elements much stiffer than the adjoining pipe. Their weight acts at their center of gravity.

Expansion joints replace the pipe over their length with the joint’s own axial, lateral, angular and torsional stiffness. A joint without tie rods transmits pressure thrust to the adjoining pipe and anchors. The thrust equals pressure times effective area. Tie rods carry the thrust across a tied joint.

Tees join the header and branch at a common node; the branch SIF is applied with the branch section modulus.

Today

Rigid component geometry and weight fields do not establish a rigid solver element or an applied component weight (Status).

The current joint is an objective connector on a v3 document. It replaces one straight span with an authored symmetric 6 × 6 work matrix, frame, end attachments and installed reference. Its law uses small movements and rotations and symmetric midpoint kinematics. Only untied hardware is admitted. The connector declares either an unpressurized law or constant_effective_area_reference_v1 with explicit effective area, pressure basis and source. A participating joint is an explicitly listed edge of one equal-bore region between coaxial straight members, with zero attachment offsets. Joint faces at region terminals or beside realized arcs are refused. Elastic actions, pressure force and effective axial force are published separately. Ties, finite rotation, pressure-dependent tangent laws, temperature laws and stops remain unsupported (Status).

The replaced span supplies no pipe member results, self-weight or eigenloads. An applied load primitive targeting that span is refused, including an explicit zero primitive. A resolved eigenstrain requires an exactly zero intended midpoint and enclosure radius. A stored load excluded from the case does not act.

Both legacy four-rate joints and previously app-authored joints require re-authoring on every route. The program does not convert them. An explicit annotation-only joint is analyzed as pipe and disclosed on a pressure-free result; exact pressure contracts refuse it. A tee still lacks a general flexible branch element (Status).

5.Assembly and solution.

Each element adds its stiffness to the model system, Ku = F. Elimination removes rigidly restrained degrees of freedom. Prescribed movements contribute to the reduced load. For a properly restrained model the reduced K is symmetric and positive definite. The sparse direct method reorders equations by reverse Cuthill–McKee and factors the matrix as LDLT.

A zero, negative or relatively small pivot can indicate an unconstrained mechanism. Numerical admission also requires the applicable integrity checks. A dense solve is available as a check.

No support is ever assumed. A model with no supports, or one missing a material, an orientation or a unit, is not solved, and the message names what is missing.

Today

The current structural path applies numerical integrity and formation gates. A successful factorization alone does not qualify the model or every recovered quantity. Earlier mechanisms could produce rotations of 109 radians or more (Status).

Model 0.5.0 supports explicit rigid boundary translations and rotations on its exact route. It refuses spring base motion and device preload/reference laws (Status). Published scope and desktop output availability remain separate.

6.What comes back.

In beam theory, solved movements give restraint reactions, R = Ku − F. Member recovery gives end actions and section forces at the quarter points and middle. The element stiffness acts on its end movements, less the equivalent loads applied at its nodes.

Today

The current linear recovery uses one intended system, re-formed at 128-bit precision from the authored binary64 inputs. Its residuals, correction solves and member recovery use the same stiffness contributions and load primitives. Every formed load summand must match its independently enumerated source binding.

When prior integrity checks pass and the member bound is available, recovery uses two displacement corrections. Member actions, stress components and support actions are rounded once from that corrected recovery. Displayed nodal movements and rotations retain the original binary64 solution. Reconstructing member actions from those displayed movements can therefore give different values.

The error bound is conditional. It assumes the inverse norm of the prepared scaled matrix is at most 1,024 times its Hager estimate. Hager’s estimate alone is a lower bound, so it does not prove that assumption. The arc re-formation also retains an unproved distance premise of 2−120κtip relative to the real-number element. The bound qualifies recovery against the intended re-formed system; it does not certify the physical model.

The member-relative check judges axial, shear, torsional and bending groups at ends, endpoint cuts and stations. Pipe-wall axial rows are judged separately. The check compares each group’s bound with 10−9 times its published norm. Its floor uses the larger of the published norm and certified upper magnitude. The comparison applies when that magnitude reaches 2−34 of the coupled body scale and the scale reaches 2−988. An excessive or unavailable bound makes the case Sensitive. The former resolution conjunct and geometric short-bend demotion rule no longer apply.

Missing load closure, a failed correction check or missing member-bound inputs prevents a Passed result. After nonlinear iteration converges, a separate confirmation checks the final support state and member recovery. Confirmed cases can publish checked member and support rows. An unestablished state or missing bound keeps Sensitive with a named reason; convergence alone is insufficient. A case demoted before certified recovery keeps its prior action and component-stress rows.

Current arc end actions use the endpoint tangent frame and node-on-element convention on both ordinary routes. Section cuts have their own signed section convention. Historical cases may retain chord-frame end rows; their metadata and source pin govern their interpretation (Status).

Current support results require six signed components and both force and moment magnitudes. Force and moment families have separate bounds, including their scalar magnitudes. Ambiguous coincident rigid attribution is withheld. Historical precision-1 records retain force norms without moments; they remain readable but are not current or eligible for rules, reports or export (Status).

Checked by: cantilever, branch assembly, loads to resultants, intermediate points, one linear static path, torsion.

Part III · The MethodIII–2

B. Loads

Loads are applied at the nodes. A distributed load becomes consistent (equivalent) nodal loads. A uniform load w over a straight element of length L gives wL/2 and wL2/12 at each end. The forces the element actually carries then come from the solution, as in A 6.

1.Weight.

Weight is the mass per length of pipe, contents and insulation times a gravity you enter, with its sign and axis. There is no default gravity and no default density. On a bend it is applied along the arc. Each rigid component adds its weight at its center of gravity.

2.Thermal expansion.

For a uniform straight member, thermal load uses the mean expansion coefficient over its temperature change, or thermal strain directly (Part II A). The equivalent axial nodal load is

F = EAαΔT(5)

pushing outward at the two ends of the straight member. The solution gives the element force. With both ends fixed, the compressive force is EAαΔT. With free thermal growth, the force is zero.

A realized curved macro-element uses the free uniform thermal expansion field, u_free. Its equivalent load is K_macro*u_free. Its recovered elastic action uses K_macro*(d-u_free). It does not apply the straight member’s axial end-pair as the complete arc load.

3.Pressure.

Pressure is treated in the usual way for beam models of piping. In a continuous line, the pipe wall carries the closed-end pressure force. Unbalanced points can transmit thrust to the system: untied expansion joints, open ends and slip joints. There it acts as a thrust equal to the pressure times the effective area. Thin-wall longitudinal pressure stress enters the combined wall stress in this teaching model (E 1).

Pressure also lengthens a closed pipe slightly (the Bourdon effect). With the hoop stress σH and the longitudinal pressure stress σL = σH/2, the axial strain is

εp = (σL − νσH)/E = pD(1 − 2ν)/(4tE)(6)

about a fifth of σH/E for steel. It is small, and programs usually make it optional. In a heated, pressurized pipe fixed at both ends, temperature causes wall compression. Pressure causes wall tension of about νσH. The effects act in opposite senses. On the anchors both push, and the pressure’s share is (1 − 2ν)pAi, about 40 % of the closed-end force.

Today

All legacy pressure contracts and pressure primitives are refused, including zero-pressure declarations. A pressure-free document has no pressure contract. The retired pAi treatment omitted the Poisson term and longitudinal stress. Its anchor loads could be about two and a half times too large (Status).

The current v3 contract requires explicit case pressure regions, terminal ownership and closure-transfer paths. Members must be homogeneous and isotropic, with declared E and ν; the program derives G. Pressure is uniform internal differential within each equal-bore region, with zero external pressure increment. The pressure-bore area uses the reduced wall; the free-strain metal area uses the nominal section.

The v3 contract admits signed differential pressure and realized curved bends with the user’s k. Direction changes occur at realized bends. An end-tangent mismatch no larger than 10−3 rad uses an explicit kink remainder. Larger bend-end mismatches and straight-to-straight kinks are refused.

The pressure strain is (1 − 2ν)pAi/(EAs). Each bend owns its free-strain load and end-cap transfer along its end tangents. Recovery keeps elastic axial action Nel separate from wall action Nw = Nel + pAi. The thin-wall equations here do not define the source-annulus pressure implementation.

The contract refuses nonlinear and constant-effort supports, combinations and equivalent-static generation. It admits the bounded untied-joint pressure law in A 4; other component families remain refused. The program does not model hydrostatic head, steady-flow momentum, transient pressure loads, pressure-induced bend opening, pressure stiffening of k or SIFs, or ovalization. Negative differential pressure does not establish external-pressure stability or collapse assessment.

Captured v3 cases can publish pressure-source-1 on the supported source-recovery subset: straight Euler–Bernoulli members, zero mill tolerance and corrosion allowance, empty pressure regions, linear restraints or springs and supported nodal or load/reference-state inputs. Timoshenko, bends, connectors and actual pressure inventories are declined by name. An ordinary fallback keeps its own numerical standing (Status). Desktop and Python product paths use the Rust reader for both exact identities. Current AnalysisRun and Python stress-neutral paths accept those identities under their own checks. Every desktop output surface still refuses both with PRESSURE-1-OUTPUT-NOT-YET-AVAILABLE. Reading or solving a pressure result does not establish output availability.

Recorded product comparisons of 12 October: pressure through a realized bend, separately supported closures and a restrained bend with pressure, heat and weight.

4.Imposed movements and cold spring.

Equipment growth at a nozzle, anchor movement and settlement can be represented by prescribed movements. Each load case assigns these movements to restrained degrees of freedom. Cold spring is a prescribed closing of a gap left at the cut (Part II G).

Today

Model 0.5.0 declares installation, material, thermal and fit reference states. Its exact route composes thermal and fit strain once as lambda_fit*lambda_thermal-1. Rigid support translations and rotations are absolute prescribed boundary values, with reactions from the unreduced equations.

Spring base motions, device preload/reference laws, inactive or locked supports, and per-case mass states are refused. The route represents independent equilibrium, not installation or contact history. Fit reference strain does not provide a general cut-and-close joint model (Status).

5.Wind and seismic.

Both are equivalent static loads. Wind on a span is w = q·Cd·D. It uses wind pressure q, drag coefficient Cd and exposed diameter, including insulation. The engineering model uses the wind component normal to the pipe.

Static seismic load is w = m′·a·g. It uses mass per length and seismic coefficient a in g. The engineering model applies each direction and sense, with the selected combination rule.

Today

The program applies wind along the entered global axis on declared exposed spans or span fractions. It supplies no height profile or projection perpendicular to the pipe. Straight members accept disjoint exposed fractions; overlaps and whole-span plus partial declarations are refused. Realized arcs accept whole-span uniform loads only. These are consistent distributed beam loads, not point-force approximations or shell-pressure loads. Seismic load acts in one sense per case (Status).

6.Material at temperature.

Elastic modulus, shear modulus and expansion coefficient can be entered at several temperatures. A load case takes its properties at one of them, or at a temperature between two, interpolated linearly:

y = y1 + (T − T1)(y2 − y1)/(T2 − T1)(7)

It never extrapolates. For code work the displacement stress range is computed with the reference (installed) modulus, and hot reactions are scaled from it (Part II D).

Today

The ordinary route uses a selected material basis for each case. It withholds combinations whose cases use different modulus bases. Model 0.5.0 declares each member’s actual, selected and installation temperatures, expansion definition and selected E/ν, with derived G.

These declarations do not create code stress categories or automatic cold-modulus stress ranges (Status).

Checked by: restrained thermal growth, partial-span load, weight, seismic and wind loads, properties at temperature.

Part III · The MethodIII–3

C. Supports

Supports are described in Part II H and I as the practitioner uses them. In this engineering description, each support acts on one node, rigidly or through a stiffness. Its type defines directions relative to the pipe, or the user specifies a direction.

SupportHow it acts in the model
AnchorHolds all six degrees of freedom, rigidly or with the stiffnesses you give.
Rest (+Y)Holds the pipe from moving down; lets it lift off. Nonlinear.
GuideHolds movement across the pipe axis, with or without clearance on each side.
Line stop, limit stopHolds movement along the pipe axis, in one or both senses, with or without clearance.
Skewed restraintHolds movement along a direction you give.
Variable spring hangerA spring of the hanger’s rate, preloaded with its cold (installed) load.
Constant support hangerA constant upward force equal to its load, in the cases that carry weight.
Rod hangerHolds the pipe up in tension; goes slack if the pipe rises. Nonlinear.
FrictionAt a rest or guide, resists sliding in the support plane up to μN, where N is that support’s own reaction.
Today

Current restraints act along the global axes that you list. The type does not imply directions. Skewed restraints and two-sided gaps remain unavailable (Status).

Springs carry no preload (Status). Constant-effort force acts in every case (Status). Friction is a separate support per global axis (Status). The program’s screens call a rest a one-way or lift-off support.

1.Nonlinear supports.

Whether a rest, a gap, a rod hanger or a friction support acts depends on the answer. The program assumes a state for each nonlinear support and solves the corresponding linear system. It compares each support state with the result. A rest releases if its reaction would pull the pipe. A released rest re-engages if the pipe would pass through it. A gap closes when movement reaches its clearance.

A friction support slides when tangential force would exceed μN. The sliding force is μN against the motion. Supports that disagree change state, and the program solves the system again. Iteration seeks unchanged states and balanced forces.

With rests and gaps alone this settles in a few passes for most lines. Friction makes the answer depend on the order of loading, and the iteration is not guaranteed to converge. When it does not, the result is reported as not converged, never as solved.

Today

Converged nonlinear iteration is followed by a separate support-state and member-bound confirmation. Cases that pass can publish checked member and support rows; an unavailable confirmation keeps Sensitive with its reason. The iteration stops after four passes. The earlier reviewed rack examples exceeded this limit (Status).

Checked by: mixed supports, spring boundary, rest re-engaging, gap, friction, and the other cases of Part VI D.

Part III · The MethodIII–4

D. Load cases and combinations

A load case is a set of loads with the material properties it is solved at. Each is solved on its own, as a linear solve or, with nonlinear supports, as an iteration on their states. Combinations are then formed from the results:

CombinationWhat it does
AlgebraicA factored sum or difference of cases, for example the expansion case as operating minus sustained. It combines movements, forces and moments, never stresses.
EnvelopeThe maximum, minimum or largest absolute value of each result across cases. An envelope is not a range.

A displacement stress range uses differences of section forces and moments between two states. Stress is then computed from those differences (E 2). The usual set of cases for a code check is set out in Part II C.

For the student

Adding results that were solved separately is exact only when the system is linear. A rest that lifts off, a gap that closes or a shoe that slides in one case may act differently when the loads come together. If rests lift off when hot, the sustained case therefore uses the supports’ operating state. Alternatively, the combined loading is solved as its own case.

Today

The ordinary route withholds combinations for nonlinear supports, constant-effort double counting and mixed modulus bases. A withheld combination is not a solved state (Status). Solve each combined nonlinear loading as its own load case.

The screens use result-state subtraction and range envelope labels. Neither label establishes a code displacement stress range. Exact-pressure and model 0.5.0 load/reference-state combinations remain unsupported (Status).

Part III · The MethodIII–5

E. Stress recovery

Stresses are recovered from the section forces at each end and intermediate point, by open mechanics:

ComponentFormula
Axialσa = N/A
Bending, peak on the circumferenceσb = √(My2 + Mz2)/Z,   Z = 2I/Do
Torsional shearτ = T/(2Z)
Hoop, from pressureσH = p r/t,   r = (Do − t)/2
Longitudinal, from pressureσlp = σH/2

The teaching pressure stresses use the mean radius of a thin wall. The codes use their own forms, such as pDo/4t for the longitudinal stress, so the validating program will differ slightly.

1.Peak longitudinal stress.

For a quick reading at each point, the peak longitudinal stress on the circumference is

σmax = |σa + σlp| + √(My2 + Mz2)/Z(8)

with torsion reported beside it. It is a mechanics value, not a code stress. With in-plane and out-of-plane SIFs entered for a bend or branch, the intensified bending term is √((iiMi)2 + (ioMo)2)/Z. SIFs apply to the moments, never to the pressure stress.

Today

Ordinary preview-physics-1 replaces the retired absolute-sum summary. It publishes circular normal-stress extrema for supported straight members; torsional shear remains a separate component. Arc maxima and incomplete-coverage headlines are withheld (Status).

Qualified linear stress components derive from the corrected member actions in A 6. Their numerical judgment follows the resultant group they scale. A maximum bounds supplied polynomial coefficient enclosures; its solution error remains separate. The published maximum is the global enclosure midpoint. Its station identifies an approximate witness, rather than the exact maximizing location.

The user-SIF row is equal-factor intensified bending, i*hypot(My,Mz)/Z, with the member section modulus. It is not a code stress and is never combined. A realized curved-bend component supplies no measure on its arc or straight neighbors (Status).

Historic precision-1 records keep the former SIF×k summary and the stress sum that could be up to 41 % high. Their readability does not make those quantities current. The current exact contract includes its supported pressure terms and publishes stress components on both named section bases. The old single stress headline is withheld in favor of per-basis coverage. All legacy pressure contracts and primitives are refused, including zero declarations (Status).

2.Ranges.

The range between two states is recovered from the difference of their forces and moments: the moment range first, then the stress. Differencing two summary values, or two intensified values, gives the wrong answer whenever the moments turn between the states.

Today

The recorded component range |b-a| describes a component difference, not a code range. The ordinary route does not combine intensified bending rows. Nonlinear, constant-effort and mixed-modulus combination guards still apply (case, Status).

3.What it does not compute.

SWBPIPE computes movements, loads, forces, moments and the stress components above. It does not supply code stress rules, allowables or code acceptance. User-authored formula rules can evaluate declared inputs, including intervals. Nonfinite intermediate arithmetic blocks the formula evaluation. A formula gate does not establish standards approval or professional acceptance. That check is made in the program you validate in (Part V).

Checked by: axial, bending, torsion, pressure, range, end forces to stress.

The full theory

Native captured inputs can reach retained-source recovery on eligible routes. That recovery has its own source evidence and numerical standing. It is separate from the corrected ordinary recovery in A 6. Captured v3 source recovery covers the narrower subset in B 3; it does not activate the retained-precision desktop caller. No result establishes a general machine-size, memory-ceiling or complete numerical-accuracy claim.

This part distinguishes theory, current routes and unfinished work. The SWBPIPE theory develops the derivations, from element stiffness to nonlinear iteration, alongside the source in docs/theory. Part VII is intended to publish that theory chapter by chapter.

Contents · Part II · Part IV · The program: swbpipe.com · MIT licence