# AN INTRODUCTION TO SOME NONLINEAR PROBLEMS Solution methods for nonlinear equations are discussed. Selected problems are described and given a finite element formulation. Emphasis is given to nonlinearities arising from material properties and changes in geometry. # 17.1 INTRODUCTION In structural mechanics, a problem is nonlinear if the stiffness matrix or the load vector depends on the displacements. Nonlinearity in structures can be classed as material nonlinearity (associated with changes in material properties, as in plasticity) or as geometric nonlinearity (associated with changes in configuration, as in large deflections of a slender elastic beam). In heat transfer, nonlinearity may arise from temperature-dependent conductivity (which makes the coefficient matrix depend on temperature) and from radiation (which makes the radiative heat flux a nonlinear function of temperature). In general, for a time-independent problem symbolized as $[K]\{D\} = \{R\}$ , in linear analysis both $[K]$ and $\{R\}$ are regarded as independent of $\{D\}$ , whereas in nonlinear analysis $[K]$ and/or $\{R\}$ are regarded as functions of $\{D\}$ . The classifications “linear” and “nonlinear” are artificial in that physical reality presents various problems, some of which can be satisfactorily approximated by linear equations. We are fortunate that linear approximations are quite good for many problems of stress analysis and heat conduction. Nonlinear approximations are more difficult to formulate, and solving the resulting equations may cost 10 to 100 times as much as a linear approximation having the same number of d.o.f. Many physical situations present nonlinearities too large to be ignored. Stress–strain relations may be nonlinear in either a time-dependent or a time-independent way. A change in configuration may cause loads to alter their distribution and magnitude or cause gaps to open or close. Mating parts may stick or slip. Welding and casting processes cause the material to change in conductivity, modulus, and phase. The generation and shedding of vortices in fluid flow past a structure produces oscillatory loads on the structure. Pre-buckling rotations alter the effective stiffness of a shell and change its buckling load. Thus we see that nonlinear effects may vary in type and may be mild or severe. An analyst must understand the physical problem and must be acquainted with various solution strategies. A single strategy will not always work well, and may not work at all for some problems. Several attempts may be needed in order to obtain a satisfactory result. Nevertheless, nonlinear analyses are undertaken more often than in the past. In part, this is because computing costs have declined and capable software has become available. In addition, more demands are placed on structures: they must function at higher temperatures and pressures, offer earthquake resistance, and provide crashworthiness. Forming and extrusion processes must be analyzed in an attempt to reduce production costs. Plastics, elastomers, and composites are used with increasing frequency as structural materials; they display material nonlinearity well below the limits of their useful strengths [17.1]. A comprehensive discussion of nonlinearity, even in structural mechanics alone, would require at least one complete volume. The following introductory treatment contains a sampling of nonlinear problems and presents some of the basic procedures for solving the associated equations. # 17.2 SOME SOLUTION METHODS A representative time-independent nonlinear problem can be stated as $[K]\{D\} = \{R\}$ , where $\{R\}$ is known and $[K]$ is a function of $\{D\}$ that can be computed for a given $\{D\}$ . We are required to compute $\{D\}$ —for example, to compute the displacement state associated with known loads. In what follows we introduce some of the available computational methods. For simplicity, a one-dimensional problem is chosen as the principal example. Consider a nonlinear spring, Fig. 17.2-1. The source of the nonlinearity is unimportant in the present discussion. We imagine that the spring stiffness k is composed of a constant term $k_{0}$ and a term $k_{N}$ that depends on deformation. Displacement u is caused by load P and is given by the equation $$ (k _ {0} + k _ {N}) u = P \quad \text { where } \quad k _ {N} = f (u) \tag {17.2-1} $$ We ask for the value of u when P is given. In order to mimic a realistic problem, we assume that $k_{N}$ is known in terms of u, and therefore that P can be calculated in terms of u, but that an explicit solution for u in terms of P is not available. Instead, iterative methods are needed to determine u, as follows. Direct Substitution. Let a load $P_{A}$ be applied to a softening spring (for which $k_{N} < 0$ ). For the first iteration, assume that $k_{N} = 0$ . Therefore, as the first approximation of displacement $u_{A}$ produced by $P_{A}$ , we compute $u_{1} = P_{A}/k_{0}$ . Using $u_{1}$ we compute the new stiffness approximation $k_{0} + k_{N1} = k_{0} + f(u_{1})$ , and then the new displacement approximation $u_{2}$ . Thus we generate the sequence of approximations ![](images/page-522_5d5884bc23b4695b0f15b51d05ce29cdd4f3ec99e12b9c6642dc4b88f70c2108.jpg)
text_image k = k₀ + kₙ, where k₀ = constant kₙ = function of u (a)
![](images/page-522_9e574971f940910e52f692de3f112c84fbe849f416854ec40e869b93efafcfc8.jpg)
line | u | Hardening (k_N > 0) | Softening (k_N < 0) | | ---- | ------------------- | ------------------- | | Low | 0 | 0 | | Mid | ~0.5 | ~0.2 | | High | >0.5 | ~0.3 |
Figure 17.2-1. (a) A nonlinear spring. (b) When u > 0, there is hardening if $k_{N} > 0$ and softening if $k_{N} < 0$ . When u = 0, we assume that $k_{N} = 0$ . $$ u _ {1} = k _ {0} ^ {- 1} P _ {A}, u _ {2} = \left(k _ {0} + k _ {N 1}\right) ^ {- 1} P _ {A}, \dots , u _ {i + 1} = \left(k _ {0} + k _ {N i}\right) ^ {- 1} P _ {A} \tag {17.2-2} $$ These calculations are interpreted graphically in Fig. 17.2-2a. We see that the approximate stiffnesses $k_{0} + k_{Ni}$ can be regarded as secants of the actual curve, each emanating from P = u = 0. After several iterations, the secant stiffness is $k_{0} + k_{N} \approx P_{A}/u_{A}$ , and the correct solution $u = u_{A}$ is closely approximated. In an alternative form of direct substitution, nonlinear terms $k_{Nu}$ are taken to the right-hand side. Thus, instead of Eq. 17.2-2, we have the sequence $$ u _ {1} = k _ {0} ^ {- 1} P _ {A}, u _ {2} = k _ {0} ^ {- 1} (P _ {A} - k _ {N 1} u _ {1}), \dots , u _ {i + 1} = k _ {0} ^ {- 1} (P _ {A} - k _ {N i} u _ {i}) \tag {17.2-3} $$ (Equations 17.2-2 and 17.2-3 will not yield the same values of $u_{2}, u_{3}$ , etc., but upon convergence both will yield the result $u_{\infty} = u_{A}$ .) Equation 17.2-3 is interpreted graphically in Fig. 17.2-2b. The effective loads applied in the second and third iterations in Fig. 17.2-2b are $$ P _ {A} - k _ {N 1} u _ {1} = P _ {A} + \left(k _ {0} u _ {1} - \left[ k _ {0} + k _ {N 1} \right] u _ {1}\right) = P _ {A} + \left(P _ {a} - P _ {1}\right) \tag {17.2-4a} $$ $$ P _ {A} - k _ {N 2} u _ {2} = P _ {A} + \left(k _ {0} u _ {2} - \left[ k _ {0} + k _ {N 2} \right] u _ {2}\right) = P _ {A} + \left(P _ {I} - P _ {2}\right) \tag {17.2-4b} $$ It may be helpful to note that $P_{a} - P_{1} = P_{I} - P_{A}$ and $P_{I} - P_{2} = P_{II} - P_{A}$ . The sequence of pseudoloads $P_{a} - P_{1}, P_{I} - P_{2}, \ldots$ , must converge if Eq. 17.2-3 is to converge to $u = u_{A}$ . Failure to converge is more likely with hardening structures than with softening structures. If convergence difficulties arise, underrelaxation may help. Thus, rather than updating a calculated value $u_{i+1}$ to its full value, we update instead to $$ u _ {i + 1} = u _ {i} + \beta (\Delta u _ {i + 1}) \tag {17.2-5a} $$ or, changing the form by the substitution $\Delta u_{i+1} = u_{i+1} - u_i$ , we have $$ u _ {i + 1} = \beta u _ {i + 1} + (1 - \beta) u _ {i} \tag {17.2-5b} $$ ![](images/page-523_ee1a25c1621a82296fbde07e4f96ccb44daa56e71633b7b573d502e73a3253bf.jpg)
line | Point | u | P | |-------|------|------| | a | u1 | P_A | | b | u2 | P_A | | A | uA | P_A | | 1 | u1 | P1 | | 2 | u2 | P1 |
![](images/page-523_77732b8598057932909bf557e4f6c9ae2602d6d8da493530fb24a59d73d20c44.jpg) Figure 17.2-2. Graphical interpretations of direct substitution. (a) According to Eq. 17.2-2. (b) According to Eq. 17.2-3. Lines aI and 1b are parallel. where “=” means “is replaced by,” as in Fortran, and $\beta$ is a number in the range $0 < \beta < 1$ . Note that for a multi-d.o.f. structure, k is a stiffness matrix rather than a scalar. Thus Eq. 17.2-2 requires that a new matrix $[K_{0} + K_{N}]$ be formed and reduced in each iteration, whereas Eq. 17.2-3 requires but one formation and reduction of $[K_{0}]$ . However, Eq. 17.2-3 will require more iterative cycles than Eq. 17.2-2 in order to reach a prescribed accuracy. Newton-Raphson (N-R). Imagine that we have applied load $P_A$ and somehow determined the corresponding displacement $u_A$ . That is, from Eq. 17.2-1, $$ (k _ {0} + k _ {N A}) u _ {A} = P _ {A} \quad \text { where } \quad k _ {N A} = f (u _ {A}) \tag {17.2-6} $$ The load is now increased to a value $P_B$ and the corresponding displacement $u_B$ is sought. A truncated Taylor series expansion of $P = f(u)$ about $u_A$ is $$ f (u _ {A} + \Delta u _ {1}) = f (u _ {A}) + \left(\frac {d P}{d u}\right) _ {A} \Delta u _ {1} \tag {17.2-7} $$ where $$ \frac {d P}{d u} = \frac {d}{d u} \left(k _ {0} u + k _ {N} u\right) = k _ {0} + \frac {d}{d u} \left(k _ {N} u\right) = k _ {t} \tag {17.2-8} $$ and $k_{t}$ is called the tangent stiffness. We seek $\Delta u_{1}$ for which $f(u_{A} + \Delta u_{1}) = P_{B}$ . Thus, with $f(u_{A}) = P_{A}$ and $k_{t}$ evaluated at $A$ , Eq. 17.2-7 becomes $$ P _ {B} = P _ {A} + (k _ {t}) _ {A} \Delta u _ {1} \quad \text { or } \quad (k _ {t}) _ {A} \Delta u _ {1} = P _ {B} - P _ {A} \tag {17.2-9} $$ where $P_{B} - P_{A}$ can be interpreted as a load imbalance—that is, as the difference between the applied load $P_{B}$ and the force $P_{A} = (k_{0} + k_{NA})u_{A}$ in the spring when its stretch is $u_{A}$ . The solution process is depicted in Fig. 17.2-3. After computing ![](images/page-524_d110b71c339bf70bebfad1c9fafb9c47ef57014d721f81b12a4116fd13646ae9.jpg)
line | Point | Pressure (P) | Pressure (P_A) | Pressure (P_B) | Pressure (P_B - P_A) | Pressure (P_B) | Pressure (P_A) | Pressure (P_B - P_A) | Pressure (P_B) | Pressure (P_B - P_A) | Pressure (Δu₁) | Pressure (Δu₂) | |-------|--------------|----------------|----------------|----------------------|----------------|----------------|----------------------|----------------|----------------------|----------------|----------------| | 1 | ~0.8 | ~0.6 | ~0.9 | ~0.7 | ~0.7 | ~0.6 | ~0.5 | ~0.8 | ~0.6 | ~0.8 | ~0.6 | | 2 | ~0.9 | ~0.7 | ~0.95 | ~0.8 | ~0.8 | ~0.7 | ~0.6 | ~0.9 | ~0.7 | ~0.9 | ~0.7 | | 3 | ~0.95 | ~0.75 | ~0.98 | ~0.85 | ~0.85 | ~0.75 | ~0.65 | ~0.95 | ~0.75 | ~0.95 | ~0.75 | | 4 | ~0.98 | ~0.8 | ~0.99 | ~0.9 | ~0.9 | ~0.8 | ~0.7 | ~0.98 | ~0.8 | ~0.98 | ~0.8 | | 5 | ~0.99 | ~0.85 | ~0.995 | ~0.95 | ~0.95 | ~0.85 | ~0.75 | ~0.99 | ~0.85 | ~0.99 | ~0.85 | | 6 | ~0.995 | ~0.9 | ~0.998 | ~0.98 | ~0.98 | ~0.9 | ~0.8 | ~0.995 | ~0.9 | ~0.995 | ~0.9 | | 7 | ~0.998 | ~0.95 | ~0.999 | ~0.99 | ~0.99 | ~0.95 | ~0.85 | ~0.998 | ~0.95 | ~0.998 | ~0.95 | | 8 | ~0.999 | ~0.98 | ~0.9995 | ~0.995 | ~0.995 | ~0.98 | ~0.9 | ~0.999 | ~0.98 | ~0.999 | ~0.98 | | 9 | ~0.9995 | ~0.99 | ~0.9998 | ~0.998 | ~0.998 | ~0.99 | ~0.95 | ~0.9995 | ~0.99 | ~0.9995 | ~0.99 | | 10 | ~0.9998 | ~0.995 | ~0.9999 | ~0.999 | ~0.999 | ~0.995 | ~0.98 | ~0.9998 | ~0.995 | ~0.9998 | ~0.995 |
Figure 17.2-3. N-R solution for $u_{B}$ caused by $P_{B}$ , starting from point A. ![](images/page-524_4921cadfb469f05f44b02533d793c05ad65b80d1090db3148ca8455a29b5b065.jpg)
line | Point | u | P | Label | |-------|------|------|-------| | A | u_A | P_A | A | | b | u_1 | P_B | a | | b | u_2 | P_B | b | | 1 | u_1 | P_A | 1 | | 2 | u_2 | P_B | 2 |
Figure 17.2-4. Modified N–R solution for $u_{B}$ caused by $P_{B}$ , starting from point A. $\Delta u_{1}$ , we update the displacement estimate to $u_{1}=u_{A}+\Delta u_{1}$ . For the next iteration, we obtain a new tangent stiffness $(k_{t})_{1}$ by use of Eq. 17.2-8 with $u=u_{1}$ , and obtain a new load imbalance $P_{B}-P_{1}$ , where $P_{1}$ comes from Eq. 17.2-1 with $u=u_{1}$ . The updated displacement estimate is $u_{2}=u_{1}+\Delta u_{2}$ , where $\Delta u_{2}$ is obtained by solving $(k_{t})_{1}\Delta u_{2}=P_{B}-P_{1}$ . Remarks. Methods discussed in this section extend directly to multiple d.o.f., where $k = k_{0} + k_{N}$ becomes $[K] = [K_{0} + K_{N}]$ , P becomes $\{R\}$ , and u becomes $\{D\}$ . In one dimension, if the stiffness can be stated as $k = k_{0} + k_{N}$ , the tangent stiffness $k_{t}$ is easily obtained (Eq. 17.2-8). Such a simple expression is not available if there are multiple d.o.f. However, in practice, the physics of the problem usually allows us to calculate the tangent-stiffness matrix $[K_{t}]$ . Neither $[K]$ nor $[K_{t}]$ need be symmetric in a nonlinear problem, but in some situations symmetry prevails or can be achieved by manipulation. In a multi-d.o.f. context, N-R iteration involves repeated solution of the equations $[K_{t}]_{i}\{\Delta D\}_{i+1} = \{\Delta R\}_{i+1}$ , where tangent-stiffness matrix $[K_{t}]$ and load imbalance $\{\Delta R\}$ are updated after each cycle. The solution process seeks to reduce the load imbalance, and consequently $\{\Delta D\}$ , to zero. Modified Newton–Raphson. This method differs from the N–R method only in that the tangent stiffness either is not updated or is updated infrequently. Thus, in multi-d.o.f. problems, we avoid the expensive repetitions of forming and reducing the tangent-stiffness matrix $[K_{r}]$ . However, more iterative cycles are needed in order to reach a prescribed accuracy. The process is depicted one-dimensionally in Fig. 17.2-4. If $[K_{i}]$ is referred to the initial configuration, the modified N–R method becomes almost identical to the direct substitution method of Eq. 17.2-3. The only difference is that modified N–R computes $u_{i+1}$ by adding $\Delta u_{i+1}$ to $u_{i}$ , and Eq. 17.2-3 computes $u_{i+1}$ directly. Incremental Methods. The foregoing discussion is concerned with locating a single point on the curve of P versus u. If the entire curve is required, one can approximate it as a series of points by applying an iterative process repeatedly: for example, in Fig. 17.2-3, after convergence under load $P_{B}$ , increase the load to $P_{C}$ and again iterate until convergence, then increase the load to $P_{D}$ , and so on. If instead the load is increased in each computational cycle, the solution method may be called incremental rather than iterative. The simplest incremental method is Euler's method of solving a first-order differential equation. To explain Euler's method we write Eq. 17.2-1 as $P = f(u)$ , define $k_{t} = dP/du$ , and consider load increments $\Delta P$ . Starting from P = 0 at u = 0, we compute successively $$ u _ {1} = 0 + \left(k _ {t}\right) _ {0} ^ {- 1} \Delta P _ {1} \quad \text { where } \quad \left(k _ {t}\right) _ {0} = k _ {t} \text { at } u = 0 \tag {17.2-10a} $$ $$ u _ {2} = u _ {1} + \left(k _ {t}\right) _ {1} ^ {- 1} \Delta P _ {2} \quad \text { where } \quad \left(k _ {t}\right) _ {1} = k _ {t} \text { at } u = u _ {1} \tag {17.2-10b} $$ $$ u _ {3} = u _ {2} + \left(k _ {t}\right) _ {2} ^ {- 1} \Delta P _ {3} \quad \text { where } \quad \left(k _ {t}\right) _ {2} = k _ {t} \text { at } u = u _ {2} \tag {17.2-10c} $$ and in general $u_{i+1} = u_i + (k_i)_{i}^{-1} \Delta P_{i+1}$ . The process is depicted in Fig. 17.2-5. A disadvantage of the foregoing method is apparent in Fig. 17.2-5: the approximate solution drifts further from the exact solution with every step. Progressive ![](images/page-526_17509a02ac40305af033a3b7cf84f0e3ad79e26ab3b863b95fabf4a13b18525c.jpg)
line | Point | u | P1 | P2 | P3 | |-------|------|------|------|------| | 1 | u1 | (k1)0| | | | 2 | u2 | | | (k1)2| | 3 | u3 | | | |
Figure 17.2-5. Purely incremental solution of the equation $P = f(u)$ . ![](images/page-526_3a9be1f303af0ad18868ff8ea1bf165149c31fdcb46f84ff65c119260d53b9ee.jpg) Figure 17.2-6. Incremental solution of $P = f(u)$ with load corrections $(P_{i} - P_{iR})$ . drift can be eliminated by introducing the load imbalance as a corrective term. Load imbalance has the same meaning in the present context as in the N-R method. With this corrective term we obtain $$ u _ {i + 1} = u _ {i} + (k _ {t}) _ {i} ^ {- 1} \left[ \Delta P _ {i + 1} + (P _ {i} - P _ {i R}) \right] \tag {17.2-11} $$ where $P_{i}$ is the externally applied load at step i ( $P_{i} = \Sigma \Delta P_{i}$ summed through step i), and $P_{iR}$ is the resisting load of the spring, $P_{iR} = (k_{0} + k_{Ni})u_{i}$ from Eq. 17.2-1. This method has been called “incremental with one-step N–R correction.” It is depicted in Fig. 17.2-6. Computed points 1, 2, . . . , do not lie on the curve, but they do not progressively drift away from the curve as in Fig. 17.2-5. Quasi-Newton Methods. Inverse-Broyden. In Fig. 17.2-7, displacements $u_{1}$ and $u_{2}$ are computed by two cycles of modified N–R iteration. Then a secant to the curve is established through points 1 and 2, and a step is taken along the secant. The next step, not shown, would be along a secant through points 2 and 3. With more iterations, leading to convergence, the secant stiffness approaches the exact tangent stiffness at A. Steps in secant directions are not quite as profitable as steps in tangent directions, as in the N–R method, but secant-stiffness steps are much cheaper and are more stable than tangent-stiffness steps. One expression of the quasi-Newton concept is the inverse-Broyden method. ![](images/page-526_c230d59fc0a8d0c6c70299cf0e0b6a442174622f76db0b37fdfa4edd207986e4.jpg)
line | Point | u | P | |-------|------|------| | a | u1 | k0 | | b | u2 | k0 | | c | u3 | 3 | | 1 | u1 | 1 | | 2 | u2 | 2 | | 3 | u3 | 3 | | A | uA | 3 |
Figure 17.2-7. Two modified N-R iterations, followed by a secant step along a line through points 1 and 2. The label “inverse” means that the inverse of the stiffness matrix is updated, not the stiffness matrix itself. A complete explanation is beyond the scope of this text. References include $[17.2–17.6]$ . In outline, the method operates as follows. Imagine that a given load $\{R\}_{A}$ has been applied; we now wish to determine the corresponding $\{D\}$ by iteration. We write $$ \{\mathbf {D} \} _ {i + 1} = \{\mathbf {D} \} _ {i} + \{\Delta \mathbf {D} \} _ {i + 1} \quad \text { where } \quad \{\Delta \mathbf {D} \} _ {i + 1} = [ \mathbf {K} ] _ {i} ^ {- 1} \{\Delta \mathbf {R} \} _ {i + 1} \tag {17.2-12} $$ where $\{\Delta R\}_{i+1}$ is the load imbalance (as in Eq. 17.2-9) and $[K]_{i}$ can be regarded as a secant-stiffness matrix. After several iterations i, both $\{\Delta R\}_{i+1}$ and $\{\Delta D\}_{i+1}$ become small, and $\{D\}_{i+1}$ is a good approximation of $\{D\}$ under loads $\{R\}_{A}$ . The second of Eqs. 17.2-12 is expanded as follows, $$ [ \mathbf {K} ] _ {i} ^ {- 1} \{\Delta \mathbf {R} \} _ {i + 1} = [ \mathbf {K} ] _ {I} ^ {- 1} \{\Delta \mathbf {R} \} _ {i + 1} + \sum_ {k = 1} ^ {i} [ \mathbf {p} ] _ {k} ^ {T} [ \mathbf {v} ] _ {k} \{\Delta \mathbf {R} \} _ {i + 1} \tag {17.2-13} $$ where $[K]_{i}^{-1}$ is an estimate of $[K]^{-1}$ at the outset of iteration at a given load level. Thus, in each iteration, $[K]_{i}^{-1}$ is improved by the addition of one more rank 1 matrix $[p]^{T}[v]$ . Update matrices $[p]^{T}[v]$ are in general unsymmetric, but with continued updating and eventual convergence, a symmetric $[K]_{i}^{-1}$ may be approached. The computational efficiency of the procedure, which may make it the method of choice, arises as follows. Neither $[K]_{i}$ nor $[K]_{i}^{-1}$ is ever written out as a square matrix. Matrix $[K]_{I}$ is forward-reduced, to act as $[K]_{I}^{-1}$ , only once. Thereafter, as i increases, only imbalances $\{\Delta R\}_{i+1}$ are treated, by forward-reduction and back-substitution. Also, each product $\left[p\right]_{k}^{T}\left[v\right]_{k}\{\Delta R\}_{i+1}$ requires one vector-times-vector multiplication and one vector-times-scalar multiplication. Thus the procedure is “vectorizable” on vector-processing computers. In nonstructural problems, the negative of $[K]$ may be called the Jacobian and $\{\Delta R\}$ called the residual. $^{1}$ In some problems, nothing may be known about $[K]_{I}$ . Then a unit matrix might be assumed, $[K]_{I} = [I]$ . However, the better the estimate of $[K]_{I}$ , the faster the convergence. Similarly, starting with a good estimate of the solution $\{D\}$ will reduce the residual and speed convergence. If more than roughly 30 to 60 iterations are used, depending on the machine precision, the method may fail because successive updates $[p]^{T}[v]$ become linearly dependent. Then one can discard the updates and start afresh with a new $[K]_{I}$ , even if it is again $[K]_{I} = [I]$ . A fresh start is also recommended when starting to iterate with a new $\{R\}$ . As a termination criterion, Eq. 17.2-16 below is recommended. A Fortran version of the algorithm appears in Fig. 17.2-8. If $[K_{i}]$ is known to be symmetric and positive definite, one may apply the “BFGS method,” which is a powerful quasi-Newton method related to the inverse-Broyden-method [17.4, 17.5]. Termination. The efficiency of a nonlinear solution method can be measured by its “order of termination.” Let $e_{i}$ represent a measure of the error after the ith iterative cycle. If $e_{i}$ is sufficiently small, it is often possible to bound $e_{i+1}$ . Practical possibilities include the following, illustrated here for a single d.o.f. $^{1}$ The Jacobian is the negative of the tangent stiffness because of our choice of sign in writing the residual as external force minus internal force and our desire that tangent stiffness reduce to conventional stiffness in the linear case. Other conventions are possible. ```txt SUBROUTINE INVBDN (K,A,Q,U,DU,NEQ,MBAND,V,DV,NBRY,ROI,IER) C Subroutine to carry out ONE inverse-Broyden iteration. C K = current iteration number, A = initial estimate of Jacobian (e.g. C stiffness) matrix, Q = current residual, U = current solution, DU = C increment to update U, NEQ = number of unknowns, MBAND = semiband- C width of A, V and DV = saved Broyden vectors, NBRY = number of Broy- C den vectors allowed = number of iterations allowed, ROI = saved con- C stant, IER = 132 if error detected in current iteration. IMPLICIT DOUBLE PRECISION (A-H,O-Z) C--- In DIMENSION line, Q(1), U(1), etc. act as Q(NEQ), U(NEQ), etc. DIMENSION A(NEQ,1),Q(1),U(1),DU(1),V(NBRY,1),DV(NBRY,1),ROI(1) DATA EPS /1.D-12/ IER = 0 C--- Calling program has computed residual Q and REDUCED form of A. C--- Call SOLVER to do only reduction and back-substitution of Q. CALL SOLVER (A,Q,NEQ,MBAND,2) IF (K .GT. 1) GO TO 150 DO 100 I=1,NEQ 100 DU(I) = Q(I) GO TO 500 C--- Update U using the K-1 Broyden vectors already established. 150 KMI = K - 1 DO 400 I=1,KMI CK = 0.D0 DO 200 J=1,NEQ 200 CK = CK + DV(I,J)*Q(J) CONS = CK*ROI(I) DO 300 J=1,NEQ 300 Q(J) = Q(J) + CONS*(DV(I,J)-V(I,J)) 400 CONTINUE C--- Establish the Kth Broyden vectors. Use them to further update U. 500 DENO = 0.D0 DO 600 J=1,NEQ V(K,J) = Q(J) + DU(J) DV(K,J) = DU(J) 600 DENO = DENO + DU(J)*V(K,J) C--- If DENO < EPS, we may have a singular Jacobian, or may have con- C--- verged but not recognized it due to faulty termination criterion. IF (DABS(DENO) .GE. EPS) GO TO 650 IER = 132 RETURN 650 CK = 0.D0 ROI(K) = 1.D0/DENO DO 700 J=1,NEQ 700 CK = CK + DU(J)*Q(J) CONS = ROI(K)*CK - 1.D0 DO 800 J=1,NEQ DU(J) = Q(J)*CONS 800 U(J) = U(J) + DU(J) RETURN END ``` Figure 17.2-8. Fortran coding of the inverse-Broyden algorithm. Subroutine SOLVER appears in Appendix B as Fig. B.2-3 (note that SOLVER is for a band-symmetric matrix). The best equation solver available should be used and can easily be substituted. $$ \text { linear: } \quad | e _ {i + 1} | \leq C _ {1} | e _ {i} | \tag {17.2-14a} $$ $$ \text { superlinear: } \quad | e _ {i + 1} | \leq C _ {2} | e _ {i} | | e _ {i - 1} | = C _ {3} | e _ {i} | ^ {1. 6} \tag {17.2-14b} $$ $$ \text { quadratic: } \quad | e _ {i + 1} | \leq C _ {4} e _ {i} ^ {2} \tag {17.2-14c} $$ where $C_{1}$ through $C_{4}$ are constants. Of the methods we have discussed, only N–R exhibits quadratic termination. The inverse-Broyden method exhibits a generalized superlinear termination. Note that both N–R and inverse-Broyden methods will fail if $P = f(u)$ exhibits zero slope at the intended solution $u_{A}$ (i.e., if $f'(u_{A}) = 0$ , which is a “limit point”). A termination criterion for an iterative process can be of various forms. One that is usually good is as follows. We define [17.4] $$ \mathrm{CNORM} = \left(\sum \Delta D _ {j} ^ {2}\right) ^ {1 / 2} \left(\sum D _ {j} ^ {2}\right) ^ {- 1 / 2} \tag {17.2-15a} $$ $$ \mathrm{RNORM} = \left(\sum \Delta R _ {j} ^ {2}\right) ^ {1 / 2} \left(\sum R _ {j} ^ {2}\right) ^ {- 1 / 2} \tag {17.2-15b} $$ where, in structural problems, $\Delta D_{j}$ , $D_{j}$ , $\Delta R_{j}$ , and $R_{j}$ mean respectively displacement increment, displacement, load increment, and load. Summations span all terms (NEQ in Fig. 17.2-8). Thus CNORM and RNORM are ratios of Euclidean norms. In a nonstructural problem, $(\Sigma R_{j}^{2})^{1/2}$ might become the product of a modulus and the square of a characteristic length, or the product of viscosity, the reciprocal of a characteristic time, and the square of a characteristic length. We terminate when $$ \max (\text { CNORM }, \text { RNORM }) \leq t o l \tag {17.2-16} $$ where tol is chosen to balance accuracy requirements against machine precision. Possible choices are $tol = 10^{-5}$ in 64-bit arithmetic and $tol = 10^{-3}$ in 32-bit arithmetic. For the inverse-Broyden method at least, it is recommended that both CNORM and RNORM be less than tol, as Eq. 17.2-16 requires. In the rare case that $\{D\} = \{0\}$ is a possible solution or iterate, the denominator of CNORM becomes very small. Then one can safely set the denominator to unity. Concluding Remarks. Hardening structures are usually more difficult to analyze than softening structures. Iterative processes are more likely to converge slowly or fail to converge (Fig. 17.2-9). There is no need to maintain strict separation between solution methods. For example, we could adopt a modified N-R strategy, but occasionally update the tangent-stiffness matrix. Often such an update is most effective when done immediately after one iteration at a new load level using the old stiffness. Apparently this approach would work well in Fig. 17.2-9b. Underrelaxation would also help in this example. Two-dimensional sketches in the present section, for P versus u, are representative of multi-d.o.f. problems if the structure carries a single load $R_{i} = P$ and ![](images/page-529_e4b3d1b0e19a7a8c9050d638ba7a679d1cc01c2fbcd4f7c97527e289eeb428a9.jpg)
text_image P (a) (b_t)a B (b_t)a P_B P_A 0 0 u
{a} ![](images/page-529_23ff9d80cada8d55b09192f920a8ce440c601552d2c3fdfecf1906e50cf38c12.jpg)
text_image P k₀ P_B B A k₀ P_A 0 0 u
(b) Figure 17.2-9. Hardening P versus u curves, attacked by (a) N–R, and (b) modified N–R methods. ![](images/page-530_765989edc6af69de682c7cab4fe24299da5499dd144bb7c3fc177cb319781a07.jpg)
text_image P u u₁ P₁
{a} ![](images/page-530_78e86874dd38e780507a8509935bbe75b1fe6a9b6aac3a79740e80b828d1482a.jpg)
line | Point | u | P | |-------|-------|-------| | A | 0 | 0 | | B | u_B | 0 |
(b) Figure 17.2-10. (a) Shallow arch under load P. (b) Load versus displacement plot, showing limit point at A. $D_{i} = u$ is its displacement. In effect, the structure then acts as a single nonlinear spring in resisting $R_{i}$ . If there is more than one d.o.f., a two-dimensional sketch provides an incomplete and possibly misleading representation. One can provide displacement increments rather than load increments—that is, use “displacement control” rather than “load control.” However, in a typical problem one does not know in advance how the $D_{i}$ in $\{D\}$ will be related, so the appropriate increments $\Delta D_{i}$ are unknown. In Fig. 17.2-10, displacement control yields the entire curve of P versus u. Under load control, the physical structure will experience a sudden “snap” from A to B when the limit point at A is reached. Computational methods of traversing limit points have been devised [17.7, 17.8]. Another way to traverse limit points is called viscous relaxation. In Fig. 17.2-10, imagine that displacement $u_{1}$ corresponding to load $P_{1}$ is required, but that the entire curve for $0 < u < u_{1}$ is not required. One can imagine that the structure is immersed in a viscous fluid. When load $P_{1}$ is applied, the structure moves slowly and without snapping. When motion ceases, the static displacement $u_{1}$ is achieved. Computationally, we solve a dynamic problem using step-by-step integration in time, including the nonlinear stiffness matrix and a damping matrix but omitting the mass matrix [17.9,17.10]. The method is most useful when there are strong geometric nonlinearities. # 17.3 ONE-DIMENSIONAL # ELASTIC-PLASTIC ANALYSIS Plastic Action. A material is called nonlinear if stresses $\{\sigma\}$ and strains $\{\epsilon\}$ are related by a strain-dependent matrix rather than a matrix of constants. Thus the computational difficulty is that equilibrium equations must be written using material properties that depend on strains, but strains are not known in advance. Plastic flow is often a cause of material nonlinearity. In the present section we use the case of uniaxial stress to introduce the formulation and solution of elastic-plastic problems. Imagine that yielding has already occurred; then a strain increment $d\epsilon$ takes place (Fig. 17.3-1a). This strain increment can be regarded as composed of an elastic contribution $d\epsilon^{e}$ and a plastic contribution $d\epsilon^{p}$ , so that $d\epsilon = d\epsilon^{e} + d\epsilon^{p}$ . The corresponding stress increment $d\sigma$ can be written in various ways,