Cylindrical shells, e.g. the main component of rocket ships, buckle catastrophically when subjected to excessive loads. However, in real applications, their buckling loads vary significantly from one structure to the next, even when manufactured and tested with the exact same procedure. Determining exactly how large of a load a shell can sustain before failure is crucial to the safe and reliable applications of shells in engineering contexts.
Unfortunately, the buckling properties of shells are incredible sensitivity to non-uniformities in their radii and thickness, known as geometric imperfections, that inevitably and randomly occur during any manufacturing process. This imperfection sensitivity is so pronounced that developing experimental methods for predicting any individual real shell's buckling properties remains a domain of active research. A necessary prerequisite for developing reliable predictive methods is having a qualitative and a quantitative understanding of the effect of imperfections. The equations describing the dynamics of cylindrical shells---the von-Karman-Donnell equations---have been minimally investigated when accounting for realistic imperfection. In part, this is because they are a system of non-linear partial different equations, sensitive to boundary conditions, that cannot be solved analytically for generic imperfections.
The software in this repository determines numerical solutions to the von Karman-Donnell equations for imperfect cylindrical shells with realistic boundary conditions. It was used to analyze the properties of shells with real geometric imperfections characterized experimentally. The results of the numerical and experimental results, as well as the qualitative understanding developed therefrom, can be found in our paper.
In the formulation used by the von Karman-Donnell equations, the physical parameters are fully defined by the displacements of points along the shell's middle surface.
Variables are indexed by an
The strain in the axial direction,
where I have chosen the sign convention that outwards radial deformations are positive.
The stress in the axial direction,
The von-Karman Donnell equations are the set of partial differential equations which must be satisfied in order for the deformations to represent an equilibrium solution.
Typically, they are presented for a perfect shell with
where all the variables in the above equations are functions of both
When there are no radial geometric imperfections, i.e.
Our boundary conditions are chosen such that the end of the shell maintains complete contact with the parallel loading plates at points held fixed by friction.
The friction requirement implies that the radial and circumferential displacements are zero at the end of the cylinder.
The contact requirement implies that the axial displacement at the ends are constant in the circumferential direction, and that the end of the shell remains normal to the loading plate.
The load on the shell is introduced by the value chosen for the end displacement,
The equations are solved on a discretized two-dimensional rectangular grid with uniformed spacing in both the
The discretization generates a non-linear system of equations whose solution approximates the shell's equilibrium deformations. I numerically compute the solution using a modified Newton-Raphson method, where the Jacobian is calculated analytically. The Jacobian of the shell for the equilibrium deformations at a given end displacement, or load, is used to calculate the shell's eigenmodes with the smallest eigenvalues. Specifically, they are calculated using standard numerical techniques from a representation of the Jacobian's inverse in the basis of its Krylov subspace.
The buckling load is determined by taking advantage of the fact that, when the structure is unstable, the Newton-Raphson method fails to converge.
I slowly and incrementally increase the load, introduced by increasing
The code is written in python 3 and uses Intel's Parallel Direct Sparse Solver Interface (PARDISO) to solve sparse matrices whenever required. Scripting is achieved throught he use of jupyter notebooks. Analytical computation of the Jacobian is sped up through the use of Cython.