pycba.load.LoadIC#
- class LoadIC(i_span, kappa, EI=None)[source]#
Bases:
LoadImposed-curvature (initial-strain) member load.
Applies a free (stress-free) curvature field \(\kappa_\text{imp}(x)\) along the member. Unlike a transverse load, an imposed curvature induces no internal forces on a statically-determinate (simply-supported) span – it produces only a free deflected shape. On a restrained or continuous structure, however, the restraint of this free curvature generates real bending moments and reactions, exactly as for differential settlement or a temperature gradient.
This is the mechanism by which PyBridge (and other downstream time-dependent prestressed-concrete tools) apply creep, shrinkage and thermal curvatures to a continuous beam: the time-dependent sectional analysis yields a free curvature distribution which is imposed here, and PyCBA returns the resulting restraint moments and reactions.
The curvature field is described by a polynomial in the local member coordinate
x(measured from the i-end):\[\kappa_\text{imp}(x) = \kappa_0 + \kappa_1 x + \kappa_2 x^2 + \dots\]Constant (\(\kappa_0\) only) and linear (\(\kappa_0, \kappa_1\)) fields are the common cases; arbitrary polynomial order is supported.
The fixed-end forces are derived by the same force-method (flexibility) integration used for the non-prismatic element. See the Imposed-curvature (initial-strain) loads section of the Theoretical Basis in the documentation for the derivation.
Note
The fixed-end moments scale with the flexural rigidity (e.g. \(M = EI\kappa\) for a uniform curvature on a fixed-fixed prismatic member). The rigidity is supplied to the load by the
Beamwhen the loads are parsed; it therefore need not be specified by the user.Creates an imposed-curvature load for the member.
- Parameters:
i_span (
int) – The member index to which the load is applied.kappa (float or array_like of float) – The imposed-curvature polynomial coefficients in increasing powers of
x:[k0, k1, k2, ...]=>kappa(x) = k0 + k1*x + k2*x^2 + .... A scalar is interpreted as a uniform curvaturekappa(x) = k0.EI (float or pycba.section.SectionEI, optional) – The flexural rigidity of the member. Normally left
Noneand populated by the owningBeam; only required to evaluate the fixed-end forces (get_cnl()).
Methods
Heaviside step function: values less than zero are clipped to zero; values greater than zero are clipped to unity; zeros are retained.
Macaulay bracket: clipping values less than zero to zero.
Consistent Nodal Loads (fixed-fixed) for the imposed curvature.
Simply-supported member results from the free (imposed) curvature.
Returns the Released End Forces for a span of length L of element eType: converts the Consistent Nodal Loads of the applied loading to the correct nodal loading depending on the element type.
Evaluate the imposed-curvature field \(\kappa_\text{imp}(x)\).
- kappa_imp(x)[source]#
Evaluate the imposed-curvature field \(\kappa_\text{imp}(x)\).
- Parameters:
x (
ndarray) – Position(s) along the member (local coordinate from the i-end).- Returns:
The imposed curvature at
x.- Return type:
ndarray
- get_cnl(L, eType)[source]#
Consistent Nodal Loads (fixed-fixed) for the imposed curvature.
- Parameters:
L (
float) – The length of the membereType (
int) – The member element type
- Returns:
Consistent Nodal Loads for this load type
- Return type:
LoadCNL
- get_mbr_results(x, L)[source]#
Simply-supported member results from the free (imposed) curvature.
The imposed curvature produces no internal moment or shear on a simple span (
M = V = 0); it generates only a deflected shape found by integrating the curvature twice subject toD(0) = D(L) = 0:\[\theta(x) = \theta_0 + \int_0^x \kappa_\text{imp}(s)\,ds, \qquad D(x) = \int_0^x \theta(s)\,ds\]with the constant \(\theta_0\) chosen so that
D(L) = 0.- Parameters:
x (
ndarray) – Vector of points along the length of the memberL (
float) – The length of the member
- Returns:
res – A populated
pycba.types.MemberResultsobject- Return type:
MemberResults
- H(v, value=0.0)#
Heaviside step function: values less than zero are clipped to zero; values greater than zero are clipped to unity; zeros are retained.
- Parameters:
v (
ndarray) – The vector to which the Heaviside function will be appliedvalue (
float) – The value of the Heaviside function at zero, usually 0, but sometimes 0.5 (average of adjacent values) or 1.0.
- Return type:
ndarray
- MB(v)#
Macaulay bracket: clipping values less than zero to zero.
- Parameters:
v (
ndarray) – The vector to which the Macaulay Bracket will be applied- Return type:
ndarray
- get_ref(L, eType)#
Returns the Released End Forces for a span of length L of element eType: converts the Consistent Nodal Loads of the applied loading to the correct nodal loading depending on the element type.
- Parameters:
L (
float) – The length of the membereType (
int) – The member element type
- Returns:
Released End Forces for this load type: the nodal loads to be applied in the analysis, consistent with the element type.
- Return type:
LoadCNL