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 position init_k_KCfollower, with KCfollower_SPARSE_SIZE entries, 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

\[\boldsymbol{R}(\boldsymbol{u}) = \boldsymbol{F}_{int}(\boldsymbol{u}) - \boldsymbol{F}_p(\boldsymbol{u}), \qquad \boldsymbol{K}_T = \boldsymbol{K}_{C0} + \boldsymbol{K}_{CNL}(\boldsymbol{u}) + \boldsymbol{K}_{GNL}(\boldsymbol{u}) + \boldsymbol{K}_G(\boldsymbol{u}) + \boldsymbol{K}_F\]

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:

\[(\boldsymbol{K}_{C0} + \lambda (\boldsymbol{K}_G + \boldsymbol{K}_{F_{ref}}))\boldsymbol{\phi} = \boldsymbol{0}\]

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.