Follower pressure#
A follower pressure stays normal to the deformed mid-surface of the shell and acts on its deformed area, e.g. a gas pressure, as opposed to a dead pressure, which keeps the direction of the undeformed normal and the undeformed area. Its force vector depends on the displacements. Two functions of each kinematics give it:
update_fext_follower()adds the force vector \(\boldsymbol{F}_p(\boldsymbol{u})\) of one element to a global force vector;update_KCfollower()writes the load stiffness matrix \(\boldsymbol{K}_F = -\partial \boldsymbol{F}_p/\partial \boldsymbol{u}\) of one element in sparse arrays, at the positioninit_k_KCfollower, withKCfollower_SPARSE_SIZEentries, see Assembling a model.
The theory, from the area vector of the deformed mid-surface, and the
differences between the Donnell-type and the Sanders-type kinematics are
given in the Notes of these functions and of the modules
bfsccylinder.bfsccylinder and bfsccylinder.bfsccylinder_sanders.
Pressure at the integration points#
The pressure p is given to both functions at the integration points of
each element, as a C-contiguous array of shape (nint, nint), p[i,
j] at xi = points[i] and eta = points[j], as the stiffness arrays
A11, …, per unit area of the undeformed mid-surface and as a function
of the undeformed coordinates, e.g. np.full((nint, nint), p) for a
uniform pressure. The pressure is multiplied by the load factor before it
is given to the functions.
Sign#
A positive p pushes along \(+z\), outwards, the direction of a positive
\(w\), such that an external pressure is negative. At \(\boldsymbol{u} = \boldsymbol{0}\) the
force vector is the dead pressure load, \(\int_A p (\boldsymbol{S}^w)^\top dA\), the
consistent load vector of a dead pressure, for both truncations below.
Truncation of the area vector#
quadratic=0, the default, truncates the area vector to its terms of
order 0 and 1 in the displacement gradients, the truncation consistent with
the moderate rotations of the strains. \(\boldsymbol{F}_p\) is then affine in the
displacements and \(\boldsymbol{K}_F\) constant, computed once for a fixed
pressure. quadratic=1 adds the terms of order 2, e.g. to check that a
result does not depend on the truncation; \(\boldsymbol{K}_F\) then depends on
the displacements and is computed at each iteration.
reference=0 in update_fext_follower() leaves out the dead part,
giving \(\boldsymbol{F}_p(\boldsymbol{u}) - \boldsymbol{F}_p(\boldsymbol{0})\), which vanishes at \(\boldsymbol{u} = \boldsymbol{0}\).
Residual and tangent stiffness matrix#
With the pressure \(\lambda p_0\) of a load factor \(\lambda\), the residual of the nonlinear static analysis of Analyses and its Jacobian are
with \(\boldsymbol{F}_p\) and \(\boldsymbol{K}_F\) of the same p = lambda*p0 and
quadratic, see residual_and_tangent in Follower pressure.
A solver whose external force vector is fixed, \(\lambda \boldsymbol{F}_{ext}\), takes the
dead part \(\boldsymbol{F}_{ext} = \boldsymbol{F}_p(\boldsymbol{0})\) of p0 as external forces and the part
reference=0, \(\lambda(\boldsymbol{F}_p(\boldsymbol{u}) - \boldsymbol{F}_p(\boldsymbol{0}))\), with the internal
forces.
A linear buckling analysis under a follower pressure \(\lambda p_0\) adds the
load stiffness matrix \(\boldsymbol{K}_{F_{ref}}\) of p0 to \(\boldsymbol{K}_G\) of the linear static solution of
p0:
as in the validation tests of rings and cylinders, see
Follower pressure. Under a dead pressure \(\boldsymbol{K}_{F_{ref}}\) is left
out. With the Sanders-type kinematics and a dead pressure, a rigid rotation
\(v\) = constant of a ring left free gives a spurious buckling mode at a
vanishing load, which the follower load stiffness cancels, see the Notes of
bfsccylinder.bfsccylinder_sanders.
Unsymmetric load stiffness matrix#
\(\boldsymbol{K}_F\) is unsymmetric in general, a non-conservative load. For
the first-order area vector, quadratic=0, it is symmetric, and the
follower pressure conservative, if and only if the pressure is uniform
over the loaded region and, at each point of the contour of the loaded
region, \(w = 0\) or the in-plane displacement normal to the contour is
zero, e.g. a cylinder closed around the circumference with simply
supported or clamped ends, or symmetry planes. The matrix of one element,
free or partially restrained edges, a pressure on a patch whose edges lie
inside the shell or a varying pressure give an unsymmetric matrix; in the
assembled matrix, restricted to the unknown degrees of freedom, the
contributions of the edges shared by two elements cancel. The conditions are given in the Notes of
bfsccylinder.bfsccylinder. The matrix is written in full and must not
be symmetrized: the linear systems and the eigenvalue problems are solved
with the solvers of unsymmetric matrices, e.g. structsolve.lb with
symmetric=False in the validation tests.