Python3之彈性力學——應力張量1


題目

已知某點的應力張量為:

\[\left[ \begin{array}{ccc} \sigma_{x} &\tau_{xy} &\tau_{xz}\\ \tau_{yx} &\sigma_{y} &\tau_{yz}\\ \tau_{zx} &\tau_{zy} &\sigma_{z} \end{array} \right] = \left[ \begin{array}{ccc} 0 &1 &2\\ 1 & \sigma_{y} & 1\\ 2 &1 &0 \end{array} \right] \]

並已知經過該點的某一平面上的應力矢量為零矢量,求 \(\sigma_y\) 和主應力?

分析

由題意,存在某個微分面(單位法向量為 \(\boldsymbol{n}\)),其上的應力矢量 \(\boldsymbol{T}=\boldsymbol{0}\),即

\[\boldsymbol{T}=\boldsymbol{\sigma}\cdot\boldsymbol{n}= \left[\begin{array}{ccc} 0 & 1 & 2\\ 1 & \sigma_{y} & 1\\ 2 & 1 & 0 \end{array} \right] \left[ \begin{array}{c} n_1\\ n_2\\ n_3 \end{array} \right] = \left[ \begin{array}{c} 0\\ 0\\ 0 \end{array} \right] \]

行列式必須為零

線性方程組存在非零解,必然行列式為零,即

\[\left|\begin{array}{ccc} 0 & 1 & 2\\ 1 & \sigma_{y} & 1\\ 2 & 1 & 0 \end{array} \right| = 0 + 2 + 2 -4\sigma_y - 0 - 0 = 0 \]

求得 \(\sigma_y = 1\)

應力張量

於是,應力張量為

\[\left[ \begin{array}{ccc} \sigma_{x} & \tau_{xy} & \tau_{xz}\\ \tau_{yx} & \sigma_{y} & \tau_{yz}\\ \tau_{zx} & \tau_{zy} & \sigma_{z} \end{array} \right] = \left[ \begin{array}{ccc} 0 & 1 & 2\\ 1 & 1 & 1\\ 2 & 1 & 0 \end{array} \right] \]

特征值問題

求主應力,即為求應力張量的特征值。

\[\left|\,\boldsymbol{\sigma}-\sigma\boldsymbol{I} \,\right| = 0 \]

\[\left| \begin{array}{ccc} -\sigma & 1 & 2\\ 1 & 1-\sigma & 1\\ 2 & 1 & -\sigma \end{array} \right| = (1-\sigma)\sigma^2 + 2 + 2 - 4(1-\sigma) + \sigma + \sigma = 0 \]

整理得

\[-\sigma^3 + \sigma^2 + 6\sigma = -\sigma(\sigma-3)(\sigma+2) = 0 \]

主應力

得到三個主應力分別為

\[\left\{ \begin{array}{rcr} \sigma_1 & = & 3\\ \sigma_2 & = & 0\\ \sigma_3 & = & -2 \end{array} \right. \]

Python3代碼求解

符號運算求特征值

  • 調用 Python 下的 sympy 模塊
from sympy import init_printing, Matrix
init_printing(use_unicode=True)

Matrix對象表示應力矩陣

# 生成矩陣對象
sigma = Matrix([[0, 1, 2], [1, 1, 1], [2, 1, 0]])
sigma

\[\left[\begin{matrix}0 & 1 & 2\\1 & 1 & 1\\2 & 1 & 0\end{matrix}\right] \]

求特征值

  • 前已求得三個主應力分別為

\[\left\{ \begin{array}{rcr} \sigma_1 & = & 3\\ \sigma_2 & = & 0\\ \sigma_3 & = & -2 \end{array} \right. \]

  • 調用 Matrix 對象的 eigenvals 方法
sigma.eigenvals() # 求特征值

\[\left \{ -2 : 1, \quad 0 : 1, \quad 3 : 1\right \} \]

  • 冒號后的數字表示一重特征值

求特征矢量

  • 調用 Matrix 對象的 eigenvects 方法
sigma.eigenvects()

\[\left [ \left ( -2, \quad 1, \quad \left [ \left[\begin{matrix}-1\\0\\1\end{matrix}\right]\right ]\right ), \quad \left ( 0, \quad 1, \quad \left [ \left[\begin{matrix}1\\-2\\1\end{matrix}\right]\right ]\right ), \quad \left ( 3, \quad 1, \quad \left [ \left[\begin{matrix}1\\1\\1\end{matrix}\right]\right ]\right )\right ] \]

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM