0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「グリーンのひずみテンソル と コーシーのひずみテンソル の違いを教えて下さい。」をsympyでAI先生に教えてもらいました。

0
Last updated at Posted at 2026-06-16

・私は弱ったなあ。です。

(本日の)ChatGPT先生へ

グリーンのひずみテンソル と コーシーのひずみテンソル の違いを教えて下さい。

グリーンのひずみテンソル(Green-Lagrange strain tensor)とコーシーのひずみテンソル(通常は「微小ひずみテンソル(Cauchy infinitesimal strain tensor)」と呼ばれる)は、有限変形を扱うかどうかが最大の違いです。
(表示を省略)

上記をsympyで教えて下さい。

SymPyで両者の違いを見るには、まず変位場
...
を定義し、
...
からグリーンひずみを作ります。

1. コーシー(微小)ひずみテンソル

from sympy import *

# 記号
X, Y, Z = symbols('X Y Z')

# 変位
u = Function('u')(X, Y, Z)
v = Function('v')(X, Y, Z)
w = Function('w')(X, Y, Z)

# 変位ベクトル
U = Matrix([u, v, w])

# 変位勾配
GradU = Matrix([
    [diff(u,X), diff(u,Y), diff(u,Z)],
    [diff(v,X), diff(v,Y), diff(v,Z)],
    [diff(w,X), diff(w,Y), diff(w,Z)]
])

# 微小ひずみ(コーシーひずみ)
eps = simplify((GradU + GradU.T)/2)

print("Cauchy strain")
pprint(eps)

2. グリーンひずみテンソル

from sympy import *

X, Y, Z = symbols('X Y Z')

u = Function('u')(X,Y,Z)
v = Function('v')(X,Y,Z)
w = Function('w')(X,Y,Z)

GradU = Matrix([
    [diff(u,X), diff(u,Y), diff(u,Z)],
    [diff(v,X), diff(v,Y), diff(v,Z)],
    [diff(w,X), diff(w,Y), diff(w,Z)]
])

I = eye(3)

# 変形勾配
F = I + GradU

# 右コーシー・グリーン変形テンソル
C = simplify(F.T*F)

# グリーンひずみ
E = simplify((C-I)/2)

print("Green strain")
pprint(E)

3. 両者の関係をSymPyで確認

from sympy import *

X,Y,Z = symbols('X Y Z')

u = Function('u')(X,Y,Z)
v = Function('v')(X,Y,Z)
w = Function('w')(X,Y,Z)

GradU = Matrix([
    [diff(u,X), diff(u,Y), diff(u,Z)],
    [diff(v,X), diff(v,Y), diff(v,Z)],
    [diff(w,X), diff(w,Y), diff(w,Z)]
])

eps = (GradU + GradU.T)/2

E = ((eye(3)+GradU).T*(eye(3)+GradU)-eye(3))/2

difference = simplify(E - eps)

print("E - eps =")
pprint(difference)

4. 1次元の例

from sympy import *

X, a = symbols('X a')

u = a*X

# コーシーひずみ
eps = diff(u,X)

# グリーンひずみ
E = ( (1 + diff(u,X))**2 - 1 )/2

print("eps =")
pprint(expand(eps))

print("E =")
pprint(expand(E))

5. 剛体回転の例(重要)

from sympy import *

th = symbols('th')

F = Matrix([
    [cos(th), -sin(th)],
    [sin(th),  cos(th)]
])

E = simplify((F.T*F - eye(2))/2)

pprint(E)

つまり
回転だけならGreenひずみはゼロ
です。
これが有限変形理論でグリーンひずみテンソルが使われる大きな理由です。

いつもと違うおすすめです。

Qiita内

google検索で

wikipedia 内

sympy doc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?