不变式构造本构模型并计算Hessian 参考论文:Smith, B., F. D. Goes, and T. Kim (2019, February). Analytic eigensystems for isotropic
distortion energies. ACM Trans. Graph. 38(1).
本构模型能量密度对位置的二阶导需要计算能量密度对形变梯度的二阶导∂ 2 Ψ ∂ F 2 \frac{\partial^2\Psi}{\partial{\bf F}^2} ∂ F 2 ∂ 2 Ψ ,这个量是一个3 × 3 × 3 × 3 3\times3\times3\times3 3 × 3 × 3 × 3 的四维张量,所以请先确保你对张量的缩并有所了解。我的博客中给出了一个比较通俗的解释,通过一些平坦化的手段让物理模拟场景下的张量计算能够简化为矩阵和向量之间的计算,传送门:张量计算 。
什么是不变式(invariants)? 不变式和应变的感觉有一些像,就是一系列用来正确表征形变的物理量,那么什么东西不会带来形变呢?是平移和旋转,所以不变式就是能够在平移和旋转的时候保持不变的,由形变梯度构成的式子。
下面给出论文中所提出的三个不变式:
I 1 = tr ( S ) I 2 = tr ( S 2 ) I 3 = det ( F ) = det ( R S ) = det ( R ) det ( S ) = det ( S ) I_1=\operatorname*{tr}({\bf S}) \qquad I_2=\operatorname{tr}({\bf S}^2)\qquad I_3=\operatorname{det}(F)=\operatorname{det}({\bf RS})=\operatorname{det}({\bf R})\operatorname{det}({\bf S})=\operatorname{det}({\bf S}) I 1 = tr ( S ) I 2 = tr ( S 2 ) I 3 = det ( F ) = det ( RS ) = det ( R ) det ( S ) = det ( S ) 目前已知的大量本构模型的能量密度函数都可以用三个不变式进行构建,例如:
ARAP Ψ ARAP = ∣ ∣ F − R ∣ ∣ F 2 = ∣ ∣ F ∣ ∣ F 2 − 2 tr ( F T R ) + ∣ ∣ R ∣ ∣ F 2 \begin{aligned} \Psi_{\text{ARAP}}&=||{\bf F}-{\bf R}||^2_F\\ &=||{\bf F}||^2_F-2\operatorname{tr}({\bf F}^T{\bf R})+||{\bf R}||^2_F\\ \end{aligned} Ψ ARAP = ∣∣ F − R ∣ ∣ F 2 = ∣∣ F ∣ ∣ F 2 − 2 tr ( F T R ) + ∣∣ R ∣ ∣ F 2 因为有:
∣ ∣ F ∣ ∣ F 2 = ∑ i ∑ j F i j 2 = tr ( F T F ) = tr ( S T R T R S ) = tr ( S 2 ) ||{\bf F}||_F^2=\sum_i\sum_jF_{ij}^2=\operatorname{tr}({\bf F}^T{\bf F})=\operatorname{tr}({\bf S}^T{\bf R}^T{\bf R}{\bf S})=\operatorname{tr}({\bf S}^2) ∣∣ F ∣ ∣ F 2 = ∑ i ∑ j F ij 2 = tr ( F T F ) = tr ( S T R T R S ) = tr ( S 2 ) (S \bf S S 为对称阵)∣ ∣ R ∣ ∣ F 2 = tr ( R R T ) = tr ( I ) = 3 ||{\bf R}||_F^2=\operatorname{tr}({\bf RR}^T)=\operatorname{tr}({\bf I})=3 ∣∣ R ∣ ∣ F 2 = tr ( RR T ) = tr ( I ) = 3 所以:
Ψ ARAP = ∣ ∣ F ∣ ∣ F 2 − 2 tr ( F T R ) + ∣ ∣ R ∣ ∣ F 2 = tr ( S 2 ) − 2 tr ( S ) + 3 = I 2 − 2 I 1 + 3 \begin{aligned} \Psi_{\text{ARAP}}&=||{\bf F}||^2_F-2\operatorname{tr}({\bf F}^T{\bf R})+||{\bf R}||^2_F\\ &=\operatorname{tr}({\bf S}^2)-2\operatorname{tr}({\bf S})+3\\ &=I_2-2I_1+3 \end{aligned} Ψ ARAP = ∣∣ F ∣ ∣ F 2 − 2 tr ( F T R ) + ∣∣ R ∣ ∣ F 2 = tr ( S 2 ) − 2 tr ( S ) + 3 = I 2 − 2 I 1 + 3 Bonet and Wood (2008)-style Neo-Hookean Bonet, J. and R. D. Wood (2008). Nonlinear continuum mechanics for finite element analysis. Cambridge university press.
Ψ N H B W = μ 2 ( ∣ ∣ F ∣ ∣ F 2 − 3 ) − μ log ( J ) + λ 2 ( log ( J ) ) 2 \Psi_{NHBW}=\frac{\mu}{2}(||{\bf F}||_F^2-3)-\mu\operatorname{log}(J)+\frac{\lambda}{2}(\operatorname{log}(J))^2 Ψ N H B W = 2 μ ( ∣∣ F ∣ ∣ F 2 − 3 ) − μ log ( J ) + 2 λ ( log ( J ) ) 2 其中J J J 即为det ( F ) \operatorname{det}(F) det ( F ) ,从而有:
Ψ N H B W = μ 2 ( I 2 − 3 ) − μ log ( I 3 ) + λ 2 ( log ( I 3 ) ) 2 \Psi_{NHBW}=\frac{\mu}{2}(I_2-3)-\mu\operatorname{log}(I_3)+\frac{\lambda}{2}(\operatorname{log}(I_3))^2 Ψ N H B W = 2 μ ( I 2 − 3 ) − μ log ( I 3 ) + 2 λ ( log ( I 3 ) ) 2 其他能量的不变式表示请见本系列的其他文章。
不变式的梯度 我们用不变式来表示能量密度的主要目的就是为了简化能量密度的梯度和Hessian(相对形变梯度 ,本文中在没有注明的情况下所提到的梯度和Hessian,都是相对于形变梯度,而非位置!)的计算,对任意可以用不变式来表示的能量,他们的梯度具有这样一个通式:
根据The Matrix Cookbook ,∂ tr ( A X T ) ∂ X = A \frac{\partial \operatorname{tr}({\bf AX}^T)} {\partial {\bf X}}={\bf A} ∂ X ∂ tr ( AX T ) = A
∂ Ψ ∂ F = ∂ Ψ ∂ I 1 ∂ I 1 ∂ F + ∂ Ψ ∂ I 2 ∂ I 2 ∂ F + ∂ Ψ ∂ I 3 ∂ I 3 ∂ F \frac{\partial \Psi}{\partial {\bf F}}=\frac{\partial \Psi}{\partial I_1}\frac{\partial I_1}{\partial {\bf F}}+\frac{\partial \Psi}{\partial I_2}\frac{\partial I_2}{\partial {\bf F}}+\frac{\partial \Psi}{\partial I_3}\frac{\partial I_3}{\partial {\bf F}} ∂ F ∂ Ψ = ∂ I 1 ∂ Ψ ∂ F ∂ I 1 + ∂ I 2 ∂ Ψ ∂ F ∂ I 2 + ∂ I 3 ∂ Ψ ∂ F ∂ I 3 其中∂ Ψ ∂ I i \frac{\partial \Psi}{\partial I_i} ∂ I i ∂ Ψ 的计算非常简单,就是单纯的标量求导,高中知识就能算。接下来要计算的就是∂ I i ∂ F \frac{\partial I_i}{\partial {\bf F}} ∂ F ∂ I i ,接下来分别计算一下:
∂ I 1 ∂ F = tr ( S ) ∂ F = ∂ tr ( R F T ) ∂ F = R ∂ I 2 ∂ F = ∂ tr ( S 2 ) ∂ F = ∂ ∣ ∣ F ∣ ∣ F 2 ∂ F = 2 F \begin{aligned} \frac{\partial I_1}{\partial {\bf F}}=\frac{\operatorname*{tr}({\bf S})}{\partial {\bf F}}=\frac{\partial \operatorname{tr}({\bf RF}^T)}{\partial {\bf F}}={\bf R}\\ \frac{\partial I_2}{\partial {\bf F}}=\frac{\partial \operatorname{tr}({\bf S}^2)}{\partial {\bf F}}=\frac{\partial ||{\bf F}||_F^2}{\partial {\bf F}}=2{\bf F} \end{aligned} ∂ F ∂ I 1 = ∂ F tr ( S ) = ∂ F ∂ tr ( RF T ) = R ∂ F ∂ I 2 = ∂ F ∂ tr ( S 2 ) = ∂ F ∂ ∣∣ F ∣ ∣ F 2 = 2 F I 3 I_3 I 3 的梯度计算会稍微麻烦一些,这里给出结论(TODO 找到一个好一点的参考材料):
在三维空间中,形变梯度F \bf F F 可以表示为:
F = [ f 0 f 1 f 2 ] {\bf F}=\left[ \begin{array}{c|c|c} {\bf f}_0 & {\bf f}_1 & {\bf f}_2 \end{array} \right] F = [ f 0 f 1 f 2 ] 那么有:
∂ I 3 ∂ F = ∂ J ∂ F = [ f 1 × f 2 f 2 × f 0 f 0 × f 1 ] \frac{\partial I_3}{\partial {\bf F}}=\frac{\partial J}{\partial {\bf F}}= \left[ \begin{array}{c|c|c} {\bf f}_1\times{\bf f}_2 & {\bf f}_2\times{\bf f}_0 & {\bf f}_0\times{\bf f}_1 \end{array} \right] ∂ F ∂ I 3 = ∂ F ∂ J = [ f 1 × f 2 f 2 × f 0 f 0 × f 1 ] 不变式的Hessian 与梯度类似,使用不变式构造的能量密度的Hessian同样也具有一个计算通式,不同的是,此处的Hessian它是一个3 × 3 × 3 × 3 3\times3\times3\times3 3 × 3 × 3 × 3 的四维张量,我们需要将其“平坦化”为一个矩阵后,再使用下面这个公式去计算能量密度相对于位置 的Hessian :
∂ 2 Ψ ∂ x 2 = vec ( ∂ F ∂ x ) T vec ( ∂ 2 Ψ ∂ F 2 ) vec ( ∂ F ∂ x ) \frac{\partial^2\Psi}{\partial {\bf x}^2} = \text{vec}\left(\frac{\partial {\bf F}}{\partial {\bf x}}\right)^T\text{vec}\left(\frac{\partial^2 \Psi}{\partial {\bf F}^2}\right)\text{vec}\left(\frac{\partial {\bf F}}{\partial {\bf x}}\right) ∂ x 2 ∂ 2 Ψ = vec ( ∂ x ∂ F ) T vec ( ∂ F 2 ∂ 2 Ψ ) vec ( ∂ x ∂ F ) 中间那一项就是平坦化后的不变式的Hessian,其计算通式为:
vec ( ∂ 2 Ψ ∂ F 2 ) = ∂ 2 Ψ ∂ I 1 2 g 1 g 1 T + ∂ Ψ ∂ I 1 H 1 + ∂ 2 Ψ ∂ I 2 2 g 2 g 2 T + ∂ Ψ ∂ I 2 H 2 + ∂ 2 Ψ ∂ I 3 2 g 3 g 3 T + ∂ Ψ ∂ I 3 H 3 = ∑ i = 1 3 ∂ 2 Ψ ∂ I i 2 g i g i T + ∂ Ψ ∂ I i H i \begin{aligned} \operatorname{vec}\left(\frac{\partial^2 \Psi}{\partial {\bf F}^2}\right)&=\frac{\partial^2\Psi}{\partial I_1^2}{\bf g}_1{\bf g}_1^T+\frac{\partial \Psi}{\partial I_1}{\bf H}_1+\frac{\partial^2\Psi}{\partial I_2^2}{\bf g}_2{\bf g}_2^T+\frac{\partial \Psi}{\partial I_2}{\bf H}_2+\frac{\partial^2\Psi}{\partial I_3^2}{\bf g}_3{\bf g}_3^T+\frac{\partial \Psi}{\partial I_3}{\bf H}_3\\ &=\sum_{i=1}^3\frac{\partial^2\Psi}{\partial I_i^2}{\bf g}_i{\bf g}_i^T+\frac{\partial \Psi}{\partial I_i}{\bf H}_i \end{aligned} vec ( ∂ F 2 ∂ 2 Ψ ) = ∂ I 1 2 ∂ 2 Ψ g 1 g 1 T + ∂ I 1 ∂ Ψ H 1 + ∂ I 2 2 ∂ 2 Ψ g 2 g 2 T + ∂ I 2 ∂ Ψ H 2 + ∂ I 3 2 ∂ 2 Ψ g 3 g 3 T + ∂ I 3 ∂ Ψ H 3 = i = 1 ∑ 3 ∂ I i 2 ∂ 2 Ψ g i g i T + ∂ I i ∂ Ψ H i 其中g i = vec ( ∂ I i ∂ F ) {\bf g}_i=\operatorname{vec}\left(\frac{\partial I_i}{\partial {\bf F}}\right) g i = vec ( ∂ F ∂ I i ) ,H i = vec ( ∂ 2 I i ∂ F 2 ) {\bf H}_i=\operatorname{vec}\left(\frac{\partial^2 I_i}{\partial {\bf F}^2}\right) H i = vec ( ∂ F 2 ∂ 2 I i ) 。首先我们先来看看平坦化的I 2 , I 3 I_2,I_3 I 2 , I 3 的Hessian,I 1 I_1 I 1 的Hessian计算比较麻烦,所以最后再讲,首先是I 2 I_2 I 2 :
H 2 = vec ( ∂ 2 F ∂ F ) = 2 vec ( [ [ 1 0 0 0 0 0 0 0 0 ] [ 0 1 0 0 0 0 0 0 0 ] [ 0 0 1 0 0 0 0 0 0 ] [ 0 0 0 1 0 0 0 0 0 ] [ 0 0 0 0 1 0 0 0 0 ] [ 0 0 0 0 0 1 0 0 0 ] [ 0 0 0 0 0 0 1 0 0 ] [ 0 0 0 0 0 0 0 1 0 ] [ 0 0 0 0 0 0 0 0 1 ] ] ) = 2 vec ( [ [ d F 0 ] [ d F 1 ] [ d F 2 ] [ d F 3 ] [ d F 4 ] [ d F 5 ] [ d F 6 ] [ d F 7 ] [ d F 8 ] ] ) = 2 [ vec ( [ d F 0 ] ) vec ( [ d F 3 ] ) vec ( [ d F 6 ] ) ⋯ vec ( [ d F 0 ] ) vec ( [ d F 0 ] ) vec ( [ d F 0 ] ) ] = 2 [ 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 ] = 2 I 9 × 9 \begin{aligned} {\bf H}_2&=\operatorname{vec}\left(\frac{\partial 2{\bf F}}{\partial {\bf F}}\right)= 2\operatorname{vec}\left( \begin{bmatrix} \begin{bmatrix}1&0&0\\0&0&0\\0&0&0\end{bmatrix}&\begin{bmatrix}0&1&0\\0&0&0\\0&0&0\end{bmatrix}&\begin{bmatrix}0&0&1\\0&0&0\\0&0&0\end{bmatrix}\\\\ \begin{bmatrix}0&0&0\\1&0&0\\0&0&0\end{bmatrix}&\begin{bmatrix}0&0&0\\0&1&0\\0&0&0\end{bmatrix}&\begin{bmatrix}0&0&0\\0&0&1\\0&0&0\end{bmatrix}\\\\ \begin{bmatrix}0&0&0\\0&0&0\\1&0&0\end{bmatrix}&\begin{bmatrix}0&0&0\\0&0&0\\0&1&0\end{bmatrix}&\begin{bmatrix}0&0&0\\0&0&0\\0&0&1\end{bmatrix} \end{bmatrix} \right)\\ &=2\operatorname{vec}\left( \begin{bmatrix} [{\bf dF}_0]&[{\bf dF}_1]&[{\bf dF}_2]\\\\ [{\bf dF}_3]&[{\bf dF}_4]&[{\bf dF}_5]\\\\ [{\bf dF}_6]&[{\bf dF}_7]&[{\bf dF}_8] \end{bmatrix} \right)\\ &=2\begin{bmatrix} \operatorname{vec}\left([{\bf dF}_0]\right) & \operatorname{vec}\left([{\bf dF}_3]\right) & \operatorname{vec}\left([{\bf dF}_6]\right)& \cdots& \operatorname{vec}\left([{\bf dF}_0]\right)& \operatorname{vec}\left([{\bf dF}_0]\right)& \operatorname{vec}\left([{\bf dF}_0]\right) \end{bmatrix}\\ &=2\begin{bmatrix} 1&0&0&0&0&0&0&0&0\\ 0&1&0&0&0&0&0&0&0\\ 0&0&1&0&0&0&0&0&0\\ 0&0&0&1&0&0&0&0&0\\ 0&0&0&0&1&0&0&0&0\\ 0&0&0&0&0&1&0&0&0\\ 0&0&0&0&0&0&1&0&0\\ 0&0&0&0&0&0&0&1&0\\ 0&0&0&0&0&0&0&0&1\\ \end{bmatrix}=2{\bf I}_{9\times9} \end{aligned} H 2 = vec ( ∂ F ∂ 2 F ) = 2 vec ⎝ ⎛ ⎣ ⎡ ⎣ ⎡ 1 0 0 0 0 0 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 1 0 0 0 0 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 1 0 0 0 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 1 0 0 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 0 1 0 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 0 0 1 0 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 0 0 0 1 0 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 0 0 0 0 1 0 ⎦ ⎤ ⎣ ⎡ 0 0 0 0 0 0 0 0 1 ⎦ ⎤ ⎦ ⎤ ⎠ ⎞ = 2 vec ⎝ ⎛ ⎣ ⎡ [ dF 0 ] [ dF 3 ] [ dF 6 ] [ dF 1 ] [ dF 4 ] [ dF 7 ] [ dF 2 ] [ dF 5 ] [ dF 8 ] ⎦ ⎤ ⎠ ⎞ = 2 [ vec ( [ dF 0 ] ) vec ( [ dF 3 ] ) vec ( [ dF 6 ] ) ⋯ vec ( [ dF 0 ] ) vec ( [ dF 0 ] ) vec ( [ dF 0 ] ) ] = 2 ⎣ ⎡ 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 ⎦ ⎤ = 2 I 9 × 9 I 3 I_3 I 3 也直接给出结论:
首先我们定义一个^ \hat{\quad} ^ 算子,它能够将一个向量转化为这样的矩阵:
x ^ = [ 0 − x 2 x 1 x 2 0 − x 0 − x 1 x 0 0 ] \hat{\bf x}=\begin{bmatrix} 0&-x_2&x_1\\ x_2&0&-x_0\\ -x_1&x_0&0 \end{bmatrix} x ^ = ⎣ ⎡ 0 x 2 − x 1 − x 2 0 x 0 x 1 − x 0 0 ⎦ ⎤ 那么有:
H 3 = [ 0 3 × 3 − f ^ 2 f ^ 1 f ^ 2 0 3 × 3 − f ^ 0 − f ^ 1 f ^ 0 0 3 × 3 ] {\bf H}_3=\begin{bmatrix} {\bf 0}_{3\times3} & -\hat{\bf f}_2 & \hat{\bf f}_1\\ \hat{\bf f}_2 & {\bf 0}_{3\times3} & -\hat{\bf f}_0\\ -\hat{\bf f}_1 & \hat{\bf f}_0 & {\bf 0}_{3\times3} \end{bmatrix} H 3 = ⎣ ⎡ 0 3 × 3 f ^ 2 − f ^ 1 − f ^ 2 0 3 × 3 f ^ 0 f ^ 1 − f ^ 0 0 3 × 3 ⎦ ⎤ OK,接下来看看I 1 I_1 I 1 的Hessian,为什么说他很难计算呢?根据前文已经了解到了I 1 I_1 I 1 的梯度即极分解后得到的正交矩阵R {\bf R} R ,那么其Hessian显而易见,就是∂ R ∂ F \frac{\partial {\bf R}}{\partial {\bf F}} ∂ F ∂ R 。问题就是出在这里,我们并不知道这个正交矩阵相对形变梯度的偏导是什么。在本篇参考的论文中,通过构造旋转梯度∂ R ∂ F \frac{\partial {\bf R}}{\partial {\bf F}} ∂ F ∂ R 这个四维张量的特征值系统来解决这个问题。
旋转梯度的特征值系统表征 矩阵的特征值系统具备这样的特征:
A q 0 = λ 0 q 0 {\bf Aq}_0=\lambda_0{\bf q}_0 Aq 0 = λ 0 q 0 类似的,对于下面这个四维张量
A = [ [ a 0 a 1 a 2 a 3 ] [ a 4 a 5 a 6 a 7 ] [ a 8 a 9 a 10 a 11 ] [ a 12 a 13 a 14 a 15 ] ] {\bf A} = \begin{bmatrix} \begin{bmatrix} a_0 & a_1\\ a_2 & a_3 \end{bmatrix} & \begin{bmatrix} a_4 & a_5\\ a_6 & a_7 \end{bmatrix} \\ \\ \begin{bmatrix} a_8 & a_9\\ a_{10} & a_{11} \end{bmatrix} & \begin{bmatrix} a_{12} & a_{13}\\ a_{14} & a_{15} \end{bmatrix} \end{bmatrix} A = ⎣ ⎡ [ a 0 a 2 a 1 a 3 ] [ a 8 a 10 a 9 a 11 ] [ a 4 a 6 a 5 a 7 ] [ a 12 a 14 a 13 a 15 ] ⎦ ⎤ 也存在一个特征值λ 0 \lambda_0 λ 0 和特征矩阵Q 0 {\bf Q}_0 Q 0 使得:
A : Q 0 = λ 0 Q 0 {\bf A}:{\bf Q}_0=\lambda_0{\bf Q}_0 A : Q 0 = λ 0 Q 0 将这个过程平坦化:
( vec A ) T ( vec Q 0 ) = λ 0 vec Q 0 (\operatorname{vec}{\bf A})^T(\operatorname{vec}{\bf Q}_0)=\lambda_0\operatorname{vec}{\bf Q}_0 ( vec A ) T ( vec Q 0 ) = λ 0 vec Q 0 那我们要怎么找到四维张量∂ R ∂ F \frac{\partial {\bf R}}{\partial {\bf F}} ∂ F ∂ R 的特征值和特征矩阵呢?论文中发现,如果形变梯度的奇异值分解的结果为:
F = U Σ V T Σ = [ σ x 0 0 0 σ y 0 0 0 σ z ] {\bf F}={\bf U\Sigma V}^T\qquad {\bf \Sigma}=\begin{bmatrix} \sigma_x & 0 & 0\\ 0 & \sigma_y & 0\\ 0 & 0 & \sigma_z \end{bmatrix} F = UΣV T Σ = ⎣ ⎡ σ x 0 0 0 σ y 0 0 0 σ z ⎦ ⎤ 那么∂ R ∂ F \frac{\partial {\bf R}}{\partial {\bf F}} ∂ F ∂ R 的特征值系统为:
λ 0 = 2 σ x + σ y Q 0 = 1 2 U [ 0 − 1 0 1 0 0 0 0 0 ] V T λ 1 = 2 σ y + σ z Q 0 = 1 2 U [ 0 0 0 0 0 1 0 − 1 0 ] V T λ 2 = 2 σ x + σ z Q 0 = 1 2 U [ 0 0 1 0 0 0 − 1 0 0 ] V T λ 3...8 = 0 Q 3...8 = subspace orthogonal to Q 0 , 1 , 2 \begin{aligned} &\lambda_0=\frac{2}{\sigma_x+\sigma_y} \qquad {\bf Q}_0=\frac{1}{\sqrt{2}}{\bf U}\begin{bmatrix} 0 & -1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 0 \end{bmatrix}{\bf V}^T\\ &\lambda_1=\frac{2}{\sigma_y+\sigma_z} \qquad {\bf Q}_0=\frac{1}{\sqrt{2}}{\bf U}\begin{bmatrix} 0 & 0 & 0\\ 0 & 0 & 1\\ 0 & -1 & 0 \end{bmatrix}{\bf V}^T\\ &\lambda_2=\frac{2}{\sigma_x+\sigma_z} \qquad {\bf Q}_0=\frac{1}{\sqrt{2}}{\bf U}\begin{bmatrix} 0 & 0 & 1\\ 0 & 0 & 0\\ -1 & 0 & 0 \end{bmatrix}{\bf V}^T\\ &\lambda_{3...8}=0 \qquad {\bf Q}_{3...8}=\text{subspace orthogonal to }{\bf Q}_{0,1,2} \end{aligned} λ 0 = σ x + σ y 2 Q 0 = 2 1 U ⎣ ⎡ 0 1 0 − 1 0 0 0 0 0 ⎦ ⎤ V T λ 1 = σ y + σ z 2 Q 0 = 2 1 U ⎣ ⎡ 0 0 0 0 0 − 1 0 1 0 ⎦ ⎤ V T λ 2 = σ x + σ z 2 Q 0 = 2 1 U ⎣ ⎡ 0 0 − 1 0 0 0 1 0 0 ⎦ ⎤ V T λ 3...8 = 0 Q 3...8 = subspace orthogonal to Q 0 , 1 , 2 那么根据特征值系统的性质就可以得到:
vec ( ∂ R ∂ F ) = ∑ i = 0 2 λ i vec ( Q i ) vec ( Q i ) T \operatorname{vec}\left(\frac{\partial {\bf R}}{\partial {\bf F}}\right)= \sum_{i=0}^2\lambda_i\operatorname{vec}({\bf Q}_i)\operatorname{vec}({\bf Q}_i)^T vec ( ∂ F ∂ R ) = i = 0 ∑ 2 λ i vec ( Q i ) vec ( Q i ) T 基于上述内容,可以给出本构模型的计算通用方法如下:
g 1 = vec ( R ) H 1 = ∑ i = 0 2 λ i vec ( Q i ) vec ( Q i ) T g 2 = vec ( 2 F ) H 2 = 2 I 9 × 9 g 3 = [ f 1 × f 2 f 2 × f 0 f 0 × f 1 ] H 3 = [ 0 3 × 3 − f ^ 2 f ^ 1 f ^ 2 0 3 × 3 − f ^ 0 − f ^ 1 f ^ 0 0 3 × 3 ] \begin{aligned} &{\bf g}_1=\operatorname{vec}({\bf R}) &{\bf H}_1=\sum_{i=0}^2\lambda_i\operatorname{vec}({\bf Q}_i)\operatorname{vec}({\bf Q}_i)^T\\ &{\bf g}_2=\operatorname{vec}(2{\bf F}) &{\bf H}_2=2{\bf I}_{9\times9}\\ &{\bf g}_3=\left[ \begin{array}{c|c|c} {\bf f}_1\times{\bf f}_2 & {\bf f}_2\times{\bf f}_0 & {\bf f}_0\times{\bf f}_1 \end{array} \right] &{\bf H}_3=\begin{bmatrix} {\bf 0}_{3\times3} & -\hat{\bf f}_2 & \hat{\bf f}_1\\ \hat{\bf f}_2 & {\bf 0}_{3\times3} & -\hat{\bf f}_0\\ -\hat{\bf f}_1 & \hat{\bf f}_0 & {\bf 0}_{3\times3} \end{bmatrix} \end{aligned} g 1 = vec ( R ) g 2 = vec ( 2 F ) g 3 = [ f 1 × f 2 f 2 × f 0 f 0 × f 1 ] H 1 = i = 0 ∑ 2 λ i vec ( Q i ) vec ( Q i ) T H 2 = 2 I 9 × 9 H 3 = ⎣ ⎡ 0 3 × 3 f ^ 2 − f ^ 1 − f ^ 2 0 3 × 3 f ^ 0 f ^ 1 − f ^ 0 0 3 × 3 ⎦ ⎤ 使用不变式I 1 , I 2 I_1, I_2 I 1 , I 2 和I 3 I_3 I 3 来重写能量密度函数Ψ \Psi Ψ 计算能量密度函数相对不变量的标量导数:∂ Ψ ∂ I 1 \frac{\partial \Psi}{\partial I_1} ∂ I 1 ∂ Ψ ,∂ 2 Ψ ∂ I 1 2 \frac{\partial^2\Psi}{\partial I_1^2} ∂ I 1 2 ∂ 2 Ψ ,∂ Ψ ∂ I 2 \frac{\partial \Psi}{\partial I_2} ∂ I 2 ∂ Ψ ,∂ 2 Ψ ∂ I 2 2 \frac{\partial^2\Psi}{\partial I_2^2} ∂ I 2 2 ∂ 2 Ψ , ∂ Ψ ∂ I 3 \frac{\partial \Psi}{\partial I_3} ∂ I 3 ∂ Ψ 和 ∂ 2 Ψ ∂ I 3 2 \frac{\partial^2\Psi}{\partial I_3^2} ∂ I 3 2 ∂ 2 Ψ 使用下面两个通式来计算能量密度的和Hessian:
vec ( ∂ 2 Ψ ∂ F 2 ) = ∑ i = 1 3 ∂ 2 Ψ ∂ I i 2 g i g i T + ∂ Ψ ∂ I i H i \operatorname{vec}\left(\frac{\partial^2 \Psi}{\partial {\bf F}^2}\right)=\sum_{i=1}^3\frac{\partial^2\Psi}{\partial I_i^2}{\bf g}_i{\bf g}_i^T+\frac{\partial \Psi}{\partial I_i}{\bf H}_i vec ( ∂ F 2 ∂ 2 Ψ ) = ∑ i = 1 3 ∂ I i 2 ∂ 2 Ψ g i g i T + ∂ I i ∂ Ψ H i