There are multiple approaches to performing P-Delta analyses, with the two primary approaches being:
Fenix utilizes the second approach (updating the force vector) for reasons which will be explained below. But first, we will examine the two approaches in more detail.
This approach solves the equation $F=Kx$, where $K=K_B+K_G$, with $K_g$ being the geometric stiffness matrix. The global, assembled geometric stiffness matrix is produced in a similar manner to the standard stiffness matrix. Every element has its own local geometric stiffness matrix, all of which are computed and later assembled into a single, global, assembled matrix.
The primary downside to using this approach, from a computational perspective, is that the geometric stiffness matrices are a function of the axial force (or stress) in any individual element. Thus, the entire linear system must first be solved without P-Delta effects, after which the resulting axial forces & stresses can be used to generate the local element geometric stiffness matrices. Once these are generated, the global stiffness matrix must be assembled and preconditioned again. This is a computationally intensive and time consuming process. Generally speaking, the linear system of equations can be solved dozens of times (after the stiffness matrix has been preconditioned) in the same time that it takes to assemble and precondition the stiffness matrix once.
Another downside to this approach is that, because of the issues described above, most commercial software employing this approach make the assumption that the axial force/stress in elements comes from a single load combination (i.e. 1.2D + 0.5L). This reduces the number of times the stiffness matrix must be assembled and preconditioned by limiting the geometric stiffness matrix to one load case. However, it may not be accurate for lateral load combinations whose axial force differs significantly from the base axial load combination. Additionally, utilizing a single, gravity load combination does not account for axial forces/stresses that are a function of lateral overturning.
For these reasons, Fenix uses approach #2, described below.
With this method, instead of modifying the stiffness matrix (which requires re-assembly and preconditioning), we instead modify the force vector with additional loads that are a result of P-Delta effects on frames and shells. This approach is iterative, as the additional loads added to the force vector lead to further increases in P-Delta effects. Thus, the software continues to solve the linear system of equations multiple times, updating the force vector between each iteration. Iterations stop when either convergence is reached (defined by a threshold in Model Definitions) or the maximum number of iterations is reached (also defined in Model Definitions).
The benefit to this method is that the stiffness matrix remains constant, eliminating the need for additional costly assembly and preconditioning. By only modifying the force vector, the linear system can be re-solved each time using the original, pre-conditioned stiffness matrix. Even for large systems, this process is generally very fast.