A backward stable numerical calculation of a function with condition number $\kappa$ will have a relative accuracy of $\kappa\epsilon_{\text{machine}}$. Standard formulations and software implementations of finite-strain elastic materials models make use of the deformation gradient $\boldsymbol F = I + \partial \boldsymbol u/\partial \boldsymbol X$ and Cauchy-Green tensors. These formulations are not numerically stable, leading to loss of several digits of accuracy when used in the small strain regime, and often precluding the use of single precision floating point arithmetic. We trace the source of this instability to specific points of numerical cancellation, interpretable as ill-conditioned steps. We show how to compute various strain measures in a stable way and how to transform common constitutive models to their stable representations, formulated in either initial or current configuration. The stable formulations all provide accuracy of order $\epsilon_{\text{machine}}$. In many cases, the stable formulations have elegant representations in terms of appropriate strain measures and offer geometric intuition that is lacking in their standard representation. We show that algorithmic differentiation can stably compute stresses so long as the strain energy is expressed stably, and give principles for stable computation that can be applied to inelastic materials.
翻译:对于条件数为$\kappa$的函数,其向后稳定的数值计算将具有$\kappa\epsilon_{\text{机器}}$的相对精度。有限应变弹性材料模型的标准公式和软件实现通常使用变形梯度$\boldsymbol F = I + \partial \boldsymbol u/\partial \boldsymbol X$和柯西-格林张量。这些公式在数值上并不稳定,导致在小应变状态下损失多位精度,且常常无法使用单精度浮点运算。我们将这种不稳定性的根源追溯到数值相消的具体位置,这可以解释为病态步骤。我们展示了如何以稳定方式计算各种应变度量,以及如何将常见的本构模型转换为其稳定表示形式,这些形式可在初始构型或当前构型中表述。所有稳定公式均能提供$\epsilon_{\text{机器}}$量级的精度。在许多情况下,稳定公式能通过恰当的应变度量获得优雅的表示,并提供其标准表示所缺乏的几何直观性。我们证明,只要应变能稳定表达,算法微分便能稳定计算应力,并给出了可应用于非弹性材料的稳定计算原则。