frontistrによる 弾塑性解析の理論とプログラムの解説 時間積 … · 静解析...
TRANSCRIPT
2015年11月27日
第23回 FrontISTR研究会<FrontISTRによる接触解析および弾塑性解析
(理論、プログラミング、解析事例) の解説>
FrontISTRによる弾塑性解析の理論とプログラムの解説
(時間積分アルゴリズムを中心に)
東京大学新領域創成科学研究科
人間環境学専攻橋本 学
『FrontISTRに実装されている定式化を十分に理解し,解きたい問題に対してソースコードを自由にカスタマイズ(要素タイプを追加,材料の種類を追加,ユーザサブルーチンを追加) できるようになること』を最終目標とします
今回は,FrontISTRに実装されている弾塑性解析機能に焦点を当てます
第16回FrontISTR研究会 (「弾塑性解析」,2015年1月16日
開催) で説明しなかった時間積分アルゴリズムを中心に解説します
2
現バージョンのFrontISTRによる弾塑性解析の時間積分アルゴリズムの理論とプログラムを解説します・ Return Mappingと連続接線係数
次バージョンで修正予定の時間積分アルゴリズムの理論とプログラムを解説します・ コンシステント接線剛性係数
解析事例を紹介します
3
4
静解析
動解析
荷重増分解析不要
荷重増分解析要
直接時間積分
固有値解析
周波数応答解析
微小変形理論 (線形弾性体のみ)
微小変形理論
有限変形理論
微小変形理論 (線形弾性体のみ)
有限変形理論!SOLUTION,TYPE=DYNAMIC!DYNAMIC下のidx_respを1に設定
!SOLUTION,TYPE=EIGEN
!SOLUTION,TYPE=DYNAMIC!DYNAMIC下のidx_respを2に設定
!SOLUTION,TYPE=NLSTATIC
!SOLUTION,TYPE=STATIC
!DYNAMIC,TYPE=LINEAR
!DYNAMIC,TYPE=NONLINEAR
材料定義においてINIFINITEを追記例:!ELASTIC, INFINITE
構造解析
熱伝導解析定常解析
非定常解析!SOLUTION,TYPE=HEAT!HEATの下に記述無または0.0と記述
ひずみの2次以上の項がある
微小変形理論
(微小変位) 微小ひずみ
線形弾性体
弾塑性体
粘弾性体
クリープ材
有限変形理論
(有限変位)
微小ひずみ
線形弾性体
弾塑性体
粘弾性体
クリープ材
大ひずみ
弾塑性体
超弾性体
粘弾性体
クリープ材
5
0 0 T 0 0 T0
1 ( ) ( ) ( ) ( )2
t t t t t E u u u u 0 0 0 0( , , ...)t t t tf S E E E
変位こう配の2次項がある
有限変形理論 大ひずみ
ひずみ 応力
!ELASTIC
!ELASTICと!PLASTIC
!HYPERELASTIC
!ELASTICと!VISCOELASTIC
!ELASTIC
!ELASTICと!PLASTIC
!ELASTICと!CREEP
!ELASTICと!VISCOELASTIC
!ELASTICと!CREEP
青字はFrontISTRで解析可能な材料
6
x
ut
b
有界領域 [mN]
境界 [mN - 1]
物質点の位置ベクトル [m]
変位 [m]
トラクション [Pa]
t 時刻 [s]
ナブラ [1/m]
単位質量当たりの体積力 [N/kg]
次元 (3次元:N = 3)N
密度 [kg/m3]
0 0 T 0 0 T0
1 ( ) ( ) ( ) ( )2
t t t t t E u u u u
時刻 t の物理量
基準となる時刻が時刻0の意味
, , A B a b
,a b
,a b スカラー
ベクトル
2階のテンソル
: ij ijA BA B =i ia ba b =
n 外向き単位法線ベクトル [-]
7
目次
1.現バージョンのFrontISTRによる弾塑性解析の時間積分アルゴリズム・ 理論・ 現バージョンのプログラム
2.次バージョンで修正予定の時間積分アルゴリズム(コンシステント接線剛性の導入) ・ 理論・ 次バージョンで修正予定のプログラム
3.解析事例
8
目次
1.現バージョンのFrontISTRによる弾塑性解析の時間積分アルゴリズム・ 理論・ 現バージョンのプログラム
2.次バージョンで修正予定の時間積分アルゴリズム(コンシステント接線剛性の導入) ・ 理論・ 次バージョンで修正予定のプログラム
3.解析事例
Y0 : 初期降伏点Y : 後続降伏点
9
単軸方向引張試験
p e
Y0
Fig. Uniaxial stress-strain curve
O
初期降伏応力
YY
0Y
降伏応力
仮定● 比例限度と弾性限度は降伏応力に
一致させる (Y0点)● 後続降伏応力は除荷開始点の応力に
一致させる (Y点) ● 塑性変形は結晶のすべりによって
生じるから,塑性変形によって物体の体積は変化しない
Y0 → Y : 降伏応力の増加 (硬化)
10
微小ひずみを仮定した弾塑性構成則モデル
弾塑性ひずみ分解 (加算分解できると仮定)
速度形弾塑性構成則
降伏関数 (降伏する条件) 塑性流れ則 (塑性ひずみの発展) 硬化則 (降伏応力の発展)
多軸応力状態の降伏条件を単軸応力状態の降伏条件で近似します
e pt t t
塑性ひずみ (永久ひずみ) テンソル[-]
全ひずみテンソル [-]
弾性ひずみテンソル [-]
→ 塑性変形の情報から弾塑性係数を定める
e e
ep
:
:
t t
t t
C
C
・・・(1)
・・・(2)
11
速度形弾塑性構成則
e e( )
( )ijkl i j k l
ij kl ik jl il jk i j k l
C
C e e e e
e e e e
1e
2e3e
1x
2x3x
Fig. Cartesian coordinates
T1 ( )2
t t t t t u u
Lamé定数 [Pa]
e e
e p
ep
:
: ( )
:
t t
t t
t t
C
C
C
弾性定数 [Pa]
応力速度 [Pa/s] 弾性ひずみ速度 [1/s]
・・・(3)
・・・(4)
・・・(5)
全ひずみ速度
弾塑性係数 [Pa]
12
降伏関数 : 降伏する条件
降伏関数
( , ) 0t tF ・・・(6) 弾性域
pt O
弾性域の境界 (Y点)
( , ) 0t tF
p
p
( )
( )
t
t
O
O
弾性除荷
塑性負荷
( , ) 0t tF ・・・(7.a)
・・・(7.b)
・・・(8.a)
・・・(8.b)
p e
Y0
Fig. Uniaxial stress-strain curve
O
初期降伏応力
YY
0Y
降伏応力
0Y p Y p( ) ( )
(※) FrontISTRでは,3種類の降伏関数 (von Mises,Mohr-Coulomb, Drucker-Prager) を使用できます
13
塑性流れ則:塑性ひずみの発展 (1/2)
( , ) 0t t tF 相補性条件
p
p
( , ) 0 0 0
0 0 ( , ) 0
t t t t
t t t t
F
F
( , ) 00
( , ) 0
t t
t
t t t
F
F
・・・(11)
・・・(9)
p t t
tt
t
m
塑性流れ則
塑性ポテンシャル [-]
流れベクトル[-]
塑性乗数 [1/s]0t ・・・(10)
・・・(12)
14
塑性流れ則:塑性ひずみの発展 (2/2)塑性ポテンシャル と降伏関数 が一致すると仮定(関連流れ則)
p
tt t
t
F
tt F
・・・(13)
* *p
*
*
: :
:
0
tt t t t
t
tt t
t
t t
Fd d
F d
d F
垂直性の条件
・・・(14)
Y( , ) 0t tF
t
t
F
*td
pt
Fig. Yield surface
(※) FrontISTRには,関連流れ則のみが実装されています非関連流れ則は使用できません
降伏局面が塑性ひずみ速度と垂直になる
15
硬化則:降伏応力の発展
Bilinear stress-strain curve
Multilinearstress-strain curve
0Y
t
Y
p
0YY
t
p et t e
t
pt
Y0
Y
Fig. Uniaxial stress-strain curve
O
Y p( )t tH 硬化係数
(※) FrontISTRでは,4種類の硬化則 (Bilinear,Multilinear,Swift,Ramberg-Osgood) を使用できます
p
tt t
t
F
軸方向累積塑性ひずみY Y p( )t t ・・・(15)
・・・(16)0Y p Y p( ) ( )t t
16
連続接線係数 (1/2)
Y
Y
e p
e
:
: : ( )
: : ( ) 0
t tt t t
t t
t t t t t
t t t t t t
F FF
b
b
A C
A C A
Y
Y
Y p pY
p
Y
1( )
ttt
t t
tt t
t t
ttt
t t
Fb
F
F H
tt
t
F=
A
e
e
: :: :
t tt
t t tb
A C
A C A
e e: : : :t t t t t t tb A C A C A
・・・(17)
・・・(18)
・・・(19)
時間的に連続な弾塑性係数を求めます
(※) 現バージョンのFrontISTRでは,連続接線係数をDマトリックスとして使用しています
17
連続接線係数 (2/2)
e p
e
ee
e
ee
e
e ee
e
e ee
e
ep
: ( )
: ( )
: ::: :
: ::: :
: :: :: :
: : :: :
:
t t t
t t t
t tt t
t t t
t t tt
t t t
t tt t
t t t
t tt
t t t
t t
b
b
b
b
C
C A
A CC AA C A
A A CCA C A
C A A CCA C A
C A A CCA C A
C
e eep e
e
e e
ep
eY
: :: :
: :
: :
t tt
t t t
t t
t t
tt t tt
t t t t
b
F F
F F FH
C A A CC = CA C A
C CC
C
e
e
: :: :
t tt
t t tb
A C
A C A
・・・(20)
・・・(21)
・・・(22)
時間的に連続な弾塑性係数を求めます
18
連続接線係数:von Misesの降伏関数の場合 (1/2)
p
32 :32 :
tt t
t
tt
t t
tt
t t
F
Y Mises Y
2 Y
2 Y
( , )
3 ( )
3 ( )
t t t
t t
t t
F
J
I
22
1( ) (tr ) tr ( )2
1 tr ( )21 :21 :2
t t t t
t t
t t
t t
I
p p 11 p 22 p 33tr ( ) ( ) ( ) 0t t t t 非圧縮条件
p
p p2 :3
tt t
t
t
t t
F
0Y p Y p( ) ( )t t
関連流れ則
降伏応力
von Misesの降伏関数
偏差応力の第2不変量
・・・(23)
・・・(24)
・・・(25)
・・・(26)
・・・(27)
・・・(28)
19
連続接線係数:von Misesの降伏関数の場合 (2/2)
e eep e
e
e e
e
e
e
2
e
2
e
2
e
: :: :
3 : :2 : :
3 : :2 : :
3 2 22 : :
3 :22 :
6:3
63 :
63
t tt
t t t
t t
t t t t
t tt
t t t t
t t
t t t t
t tt
t t
t t
t t
t
t t
t t t
t
t
b
H
H
H
H
H
C A A CC = CA C A
C CC
C
C
C
C
C
e e
e e e e: :
t
・・・(29)
p
Y
( 1) (1)
ttt t
t t
t
t
Fb H
HH
p
32 :
tt
t
t
t
t
t t
F=
A
・・・(30)
・・・(31)
20
連続接線係数:Drucker-Pragerの降伏関数の場合 (1/3)
p
tt t
t
F
p
tt t
t
F
2
2
( )( , ) ( ) tr ( )3
( )( ) tr ( )3
t t t t t
t t t
F J c
I c
22
1( ) (tr ) tr ( )2
1 tr ( )21 :21 :2
t t t t
t t
t t
t t
I
p 0 p( ) ( )t tc c
p p 11 p 22 p 33tr ( ) ( ) ( ) 0t t t t
非圧縮条件
関連流れ則
Drucker-Pragerの降伏関数
降伏応力
偏差応力の第2不変量
・・・(32)
・・・(35)
・・・(36)
・・・(37)
・・・(38)
・・・(39)
6sin( )3 (3 sin )
6 cos( )3 (3 sin )
tc
: 内部摩擦角
: 粘着力
・・・(33)
・・・(34)
21
連続接線係数:Drucker-Pragerの降伏関数の場合 (2/3)(1) Drucker-Pragerの円錐の滑らかな面で降伏する場合
p
2
2
2
1 ( )32 :
1 ( )32 2 ( )
( )32 ( )
1 ( )32 ( )
tt t
t
tt
ki kj i jt t
tt
t
tt
t
t t
t
F
I
J
J
e e
I
I
I
(2) Drucker-Pragerの円錐の頂点で降伏する場合
p
( )
tt t
t
F
p p( )( ) tr( )
tt t t t
t
F
p p 11 p 22 p 33tr ( ) ( ) ( ) tr ( )t
t t t t t tt
F
・・・(40)
・・・(41)
・・・(42)
・・・(43)
22
連続接線係数:Drucker-Pragerの降伏関数の場合 (3/3)
e eep e
e
: :: :
t tt
t t tb
C A A CC = CA C A
・・・(44)
p p
p
1( )
( ( )) ( )( ) ( )
tt t t
t t
ttt
t t
t
t
Fb cc
F Hc
HH
p
2
1 ( )32 ( )
1 ( )2 3:
tt
t
t
t
t
t
t
t t
F=
J
A
I
I
・・・(45)
・・・(46)
(1) Drucker-Pragerの円錐の滑らかな面で降伏する場合
(※) 現バージョンのFrontISTRでは,Drucker-Pragerの円錐の滑らかな面で降伏する場合のみを考えています
23
時間積分アルゴリズム
No
1. 弾性予測子の計算
2. 降伏関数の符号判定
3. Return Mapping
Yes
p, ( ) 0F e e
p p
t t
t t
t t
e e p
e e
p p p
p
:
, ( ) 0
t t t t
t t t t
t t
t t t tF
C
e e
e e
p p
:
t
t
C
24
時間積分アルゴリズム:von Misesの降伏関数の場合 (1/3)
e e e e e e
e e
e e
p p
(tr tr tr , ):
( tr , 2 )
t t t
t
p p K
CI
1. 弾性予測子の計算
p Y p3, ( ) : ( )2
F
2. 降伏関数の符号判定
e e
e
p p
( , )
t t
t t
t t t t t t t t
t t
p p p
I
p, ( ) 0F 降伏関数 ならば
・・・(47a)
・・・(47b)
・・・(47c)
・・・(48)
・・・(49a)
・・・(49b)
・・・(49c)
e e p
e e e e e
e e
e
p p
p
3 3tr tr ,2 2: :
:
( , 2 )
3, ( ) :2
t t t t
t t t tt t t t
t t t t t t t t
t t t t
t t t t t t t t t t
t t
t t t t t t t
p p p
F
C
I
Y p( )
0
t t t
25
時間積分アルゴリズム:von Misesの降伏関数の場合 (2/3)
p, ( ) 0F 降伏関数 ならば
3. Return Mapping
・・・(50a)
・・・(50b)
・・・(50c)
・・・(50d)
26
時間積分アルゴリズム:von Misesの降伏関数の場合 (3/3)
2 Y p( ) 3 ( ) 3 ( )f x J x x
( ) ( 1) ( )m m mx x x
( 1)
( 1)( )
( 1)
( 1)
( )
( )3
m
mm
x xm
m
f xxdfdxf x
H
p
Y p
2 2
Y p
2 Y p2
2 Y p
, ( )
3 : ( )2
3 3 31 : 12 3 ( ) 3 ( )
( )
31 3 ( ) ( )3 ( )
3 ( ) 3 ( ) 0
t t t t
t t t t t t
F
J J
JJ
J
とおいて
Newton-Raphson法で計算
3 212 :
::
t t
t t t t
t t
t t t t
2
2
322 :
3 212 :
3 212 2 ( )
313 ( )
t tt t
t t t t
I
J
式 (50d) より
・・・(51)・・・(52)
・・・(53)
・・・(54)
・・・(55)
27
時間積分アルゴリズム: Drucker-Pragerの降伏関数の場合 (1/3)
e e e e e e
e e
e e
p p
(tr tr tr , ):
( tr , 2 )
t t t
t
p p K
CI
1. 弾性予測子の計算
p, ( )F
2. 降伏関数の符号判定
e e
e
p p
( , )
t t
t t
t t t t t t t t
t t
p p p
I
p, ( ) 0F 降伏関数 ならば
・・・(56a)
・・・(56b)
・・・(56c)
・・・(57a)
・・・(57b)
・・・(57c)
e e p
e p e e p e e
e e
e e
p p p
p
1 (tr ) tr tr tr ,3
:
( tr , 2 )
, ( ) 0
t t t t
t t t tt t t t
t t t t
t t t t
t t t t t t t t t t t t
t t
t t t t
F F
p p K
F
I
C
I
28
時間積分アルゴリズム:Drucker-Pragerの降伏関数の場合 (2/3)
p, ( ) 0F 降伏関数 ならば
3. Return Mapping
・・・(58a)
・・・(58b)
・・・(58c)
・・・(58d)
時間積分アルゴリズム:Drucker-Pragerの降伏関数の場合 (3/3)
33
e e e e
e e e
e
2
e e e
2
2
: ( tr , 2 )
: :
1 ( ):32 ( )
( ): :3( )
( )( )
t t t t t t t t t t t t
t t
t t
t t
t t
t t
t t
t t
t t
p K
J
J
KJ
C
C C
C I
C C I
I
(1) Drucker-Pragerの円錐の滑らかな面で降伏する場合
2
2
( )
( )
1( )
t t
t t
p p K
J
J
2
2
22
22
( )
1( )
::
2 ( )2 ( )
( )( )
t t t t
t t
t t
t t
t t
t t t t
t t
t t
t t
t t
J
J
II
JJ
e( ) ( )
( )
( )
3 ( )
(3 2 )
233
3
ijkl kl ij kl ik jl il jk kl
ij kl kl ik jl il jk kl
ij kk ik jk ik jk
ij ij ij
ij
ij
ij
C
K
・・・(59)
・・・(60)
・・・(61)
・・・(62)
時間積分アルゴリズム:Drucker-Pragerの降伏関数の場合 (5/6)
33
2 p
p p
p2
22
( )( , ) ( ) tr ( ) ( )3
1 : ( ) ( ( ) ) ( ) ( )2
11 : ( ) ( ( ) ) ( ( )) ( )2( )
1 ( ) ( ) (( )
t t t t t t t t t t
t t t t t
t
F J c
p K c
p K cJ
J p KJ
p
2 p
( ) ) ( ) ( ( ) )
( ) ( ) ( ( ) ) ( ) ( ( ) ) 0
t
t
c
J p K c
2 p( ) ( ) ( ) ( ( ) ) ( ) ( ( ) )tf x J x p K x c x とおいて
Newton-Raphson法で計算( ) ( 1) ( )m m mx x x
( 1)
( 1)( )
( 1)
( 1)
( )
( )( ) ( ) ( ) ( )
m
mm
x x
m
m
f xxdfdx
f xK H
・・・(63)
・・・(65)
(※) 現バージョンのFrontISTRでは,Drucker-Pragerの円錐の
滑らかな面で降伏する場合のみを考えています
・・・(64)
時間積分アルゴリズム:Drucker-Pragerの降伏関数の場合 (6/6)
33
(2) Drucker-Pragerの円錐の頂点で降伏する場合
p
e p
e p p
p p
p p p
p p p
( )( , ) tr ( ) ( )3
( ) tr ( ) ( )
( ) (tr tr ) ( ) ( )
( ) ( tr ) ( ) ( )
( ) ( tr ) ( ) ( )
( )( )( tr ) tr( )
t t t t t t t t
t t t t
t t
t t
t
t
F c
K c
K c
p K c
p K c
p K c
( ) 0
p( ) ( )( ) 0( ) ( )
tf x c x p K x
・・・(65)
とおいて
Newton-Raphson法で計算( ) ( 1) ( )m m mx x x
( 1)
( 1)( )
( 1)
( )
( )( ) ( )( ) ( )
m
mm
x x
m
f xxdfdx
f x
H K
・・・(67)
・・・(66)(※) 次バージョンのFrontISTRでは,Drucker-Pragerの円錐の
頂点で降伏する場合も実装する予定です
32
FrontISTRによる弾塑性解析のパラメータを確認するため,FrontISTRのユーザマニュアル (ファイル名「FrontISTR_user_manual_Ver36.pdf」) の該当箇所を見ます
FrontISTRソースコード「FrontISTR_V44.tar.gz」を解凍すると,ディレクトリ「FrontISTR_V44」ができますFrontISTRのユーザマニュアルはディレクトリ「FrontISTR_V44/doc」内にあります
FrontISTRのユーザマニュアルの124ページ~126ページに弾塑性解析のパラメータに関する記述があります
33
ユーザマニュアル該当箇所について (2/3)
SwiftRamberg-Osgood
マニュアルには記載があるが,実際には対応していない(YEALD=MOHR-COULOMBまたはYEALD=DRUCKER-PRAGER のときHARDEN=MULTILINEARは使用できない)
大文字が正しい YEALD=MOHR-COULOMBまたはYEALD=DRUCKER-PRAGER
34
ユーザマニュアル該当箇所について (3/3)
35
ソースプログラムFrontISTR_V44.tar.gzは,FrontISTR研究会のホームページ (http://www.multi.k.u-tokyo.ac.jp/FrontISTR/) からダウンロードできます
解凍
ファイルFrontISTR_V44.tar.gz
この講演では,ディレクトリfistr1を対象とします
ディレクトリFrontISTR_V44
36
ディレクトリsrc内のディレクトリはanalysis,common,lib,mainの四つ
静解析
熱伝導解析
動解析
解析共通
有限要素の幾何情報
材料情報
接触解析
ユーザ定義
37
有限要素の幾何情報を計算するプログラムBマトリックスの計算で使用
要素剛性マトリックスや応力・内力の計算で使用
材料情報を計算するプログラムDマトリックスの計算で使用
38
[main/fistr_main.f90] PROGRAM fstr_main ・・・ メインプログラムhecmw_init()hecmw_get_mesh()[main/fistr_main.f90] fstr_init() ・・・ 変数初期化・入力データ読み込み
hecmw_nullify_matrix ()hecmw_nullify_result_data ()[main/fistr_main.f90] fstr_init_file()hecmw_mat_con ()[main/fistr_main.f90] fstr_condition()
hecmw_ctrl_get_control_file ()[main/fistr_main.f90] fstr_nonlinear_static_analysis() ・・・ 非線形静解析用のルーチンへ
[analysis/static/fstr_solve_NLGEOM.f90] m_fstr_solve_NLGEOM::fstr_solve_nlgeom() ・・・ 時間増分 (BC分割) のループ
[analysis/static/fstr_solve_Nonlinear.f90] m_fstr_NonLinearMethod::fstr_Newton()
[analysis/static/fstr_solve_Nonlinear.f90] m_fstr_NonLinearMethod::fstr_Newton()
….….
[analysis/static/static_output.f90] m_static_output::fstr_static_Output() ・・・ 計算結果の出力[analysis/static/static_make_result.f90] m_static_make_result::fstr_write_static_result()
[main/fistr_main.f90] fstr_finalize() ・・・ 変数の削除hecmw_finalize ()
time increment step (substep) 1
time increment step (substep) 2
[ディレクトリ/ファイル名] モジュール名::サブルーチン名()を意味しています
39
[analysis/static/fstr_solve_Nonlinear.f90] m_fstr_NonLinearMethod::fstr_Newton() ・・・Newton-Raphson反復
hecmw_allreduce_I1()[analysis/static/fstr_ass_load.f90] m_fstr_ass_load::fstr_ass_load() ・・・ 外力ベクトルの計算[analysis/static/fstr_StfiffMatrix.f90] m_fstr_StiffMatrix::fstr_StiffMatrix() ・・・ 全体接線剛性マトリックスの計算
[analysis/static/fstr_AddBC.f90] m_fstr_AddBC::fstr_AddBC() ・・・ 境界条件の処理[lib/solve_LINEQ.f90] m_solve_LINEQ::solve_LINEQ() ・・・ 線形ソルバーによる求解hecmw_update_3_R()[analysis/static/fstr_Update.f90] m_fstr_Update::fstr_UpdateNewton() ・・・ 応力・内力ベクトルの計算
[analysis/static/fstr_Residual.f90] m_fstr_Residual::fstr_Update_NDForce() ・・・ 残差ベクトルの計算hecmw_allreduce_R1()[analysis/static/fstr_StfiffMatrix.f90] m_fstr_StiffMatrix::fstr_StiffMatrix()
….….
[analysis/static/fstr_Residual.f90] m_fstr_Residual::fstr_Update_NDForce()hecmw_allreduce_R1()[analysis/static/fstr_StfiffMatrix.f90] m_fstr_StiffMatrix::fstr_StiffMatrix()
….….
[ディレクトリ/ファイル名] モジュール名::サブルーチン名()を意味しています
Newton-Raphson iteration (iter) 1
Newton-Raphson iteration (iter) 2
[analysis/static/fstr_StfiffMatrix.f90] m_fstr_StiffMatrix::fstr_StiffMatrix() ・・・ 全体接線剛性マトリックスの計算
hecmw_mat_clear()[lib/static_LIB_C3D8.f90] m_static_LIB_C3D8::STF_C3D8Bbar() ・・・ 六面体1次ソリッド要素
[lib/element/element.f90] elementInfo::getNodalNaturalCoord()[lib/element/element.f90] elementInfo::getShapeDeriv() ・・・ 形状関数の微分値[lib/element/element.f90] elementInfo::getQuadPoint() ・・・ Gaussの積分点数[lib/element/element.f90] elementInfo::getShapeFunc() ・・・ 形状関数の値[lib/element/element.f90] elementInfo::getShapeDeriv() ・・・ 形状関数の微分値[lib/physics/calMatMatrix.f90] m_MatMatrix::MatlMatrix() ・・・ Dマトリックス
[lib/physics/Elastoplastic.f90] m_ElastoPlastic::calElastoPlastic() ・・・ 弾塑性体の場合[lib/physics/Elastoplastic.f90] m_ElastoPlastic::getYieldFunction() ・・・ 降伏関数[lib/physics/Elastoplastic.f90] m_ElastoPlastic::calKinematicHarden() ・・・ 移動硬化による寄与[lib/physics/ElasticLinear.f90] m_ElasticLinear::calElasticLinear() ・・・ 弾性成分[lib/physics/ElastoPlastic.f90] m_ElastoPlastic::calHardenCoeff() ・・・ 硬化係数
hecmw_mat_ass_elem() ・・・ 要素接線剛性マトリックスをassemble
40[ディレクトリ/ファイル名] モジュール名::サブルーチン名()を意味しています
[analysis/static/fstr_Update.f90] m_fstr_Update::fstr_UpdateNewton() ・・・ 応力・内力ベクトルの計算
[lib/static_LIB_C3D8.f90] m_static_LIB_C3D8::Update_C3D8Bbar() ・・・ 六面体一次ソリッド要素[lib/element/element.f90] elementInfo::getQuadPoint() ・・・ Gaussの積分点数[lib/physics/calMatMatrix.f90] m_MatMatrix::MatlMatrix() ・・・ Dマトリックス
[lib/physics/Elastoplastic.f90] m_ElastoPlastic::calElastoPlastic() ・・・ 弾塑性体の場合[lib/physics/Elastoplastic.f90] m_ElastoPlastic::getYieldFunction() ・・・ 降伏関数[lib/physics/Elastoplastic.f90] m_ElastoPlastic::calKinematicHarden() ・・・ 移動硬化による寄与[lib/physics/ElasticLinear.f90] m_ElasticLinear::calLinearElastic() ・・・ 弾性成分[lib/physics/ElastoPlastic.f90] m_ElastoPlastic::calHardenCoeff() ・・・ 硬化係数
[lib/physics/Elastoplastic.f90] m_ElastoPlastic::BackwardEuler() ・・・Return Mapping hecmw_update_3_R()
41
モジュール名:m_ElastoPlastic弾塑性体のDマトリックスやReturn Mappingを計算するモジュール
使用する他のモジュール・[lib/physics/material.f90] mMaterial
材料物性の情報を管理するモジュール・[lib/physics/ElasticLinear.f90] m_ElasticLinear
線形弾性体のDeマトリックスを計算するモジュール
メンバ変数・整数型 kreal
実数型の種別値
メンバ関数・サブルーチン calElastoPlasticMatrix()
弾塑性体のDマトリックス (連続接線係数) を計算するサブルーチン・関数 cal_equivalent_stress()
相当応力を計算する関数・関数 cal_mises_strain()
相当ひずみを計算する関数・関数 calHardenCoeff()
硬化係数を計算する関数・関数 calKinematicHarden()
移動硬化による硬化係数への寄与を計算する関数・関数 calCurrKinematic()
移動硬化における状態を計算する関数・関数 calCurrYield()
降伏応力を計算する関数・関数 calYieldFunc()
降伏関数を計算する関数・サブルーチン BackwardEuler()
Return Mappingの計算を行うサブルーチン・サブルーチン updateEPState()
累積塑性ひずみを更新するサブルーチン
42
サブルーチン名:calElastoPlasticMatrix()弾塑性体のDマトリックス (連続接線係数) を計算するサブルーチン
引数・構造体(tMaterial) matl
材料に関連するデータ・整数型 sectType
問題の種類 (3次元問題/平面ひずみ/平面応力問題/軸対称問題) ・実数型 stress(6)
応力成分・実数型 extval(:)
累積塑性ひずみ,背応力成分・整数型 istat
状態 (0: 弾性状態,1: 塑性状態)・実数型 D(:, :)
弾塑性体のDマトリックスの成分・実数型 temperature (省略可能)
温度
上位・サブルーチン [lib/physics/calMatMatrix.f90] m_MatMatrix::MatlMatrix()
下位・関数 [lib/physics/Elastoplastic.f90] m_ElastoPlastic::getYieldFunction()・サブルーチン [lib/user/uyield.f90] uElastoPlasticMatrix()・関数 [lib/physics/Elastoplastic.f90] m_ElastoPlastic::calKinematicHarden()・関数 [lib/physics/Elastoplastic.f90] m_ElastoPlastic::calHardenCoeff()・サブルーチン [lib/physics/ElasticLinear.f90] m_ElasticLinear::calElasticMatrix()
43
サブルーチン名:BackwardEuler()Return Mappingの計算を行うサブルーチン
引数・構造体(tMaterial) matl
材料に関連するデータ・実数型 stress(6)
応力成分・実数型 plstrain
現時刻tでの累積塑性ひずみ・整数型
状態 (0: 弾性状態,1: 塑性状態)・実数型 fstat(:)
累積塑性ひずみと背応力成分・実数型 temp (省略可能)
温度
上位・サブルーチン [lib/static_LIB_3d.f90] m_static_LIB_3d::UPDATE_C3()・サブルーチン [lib/static_LIB_C3D8.f90] m_static_LIB_C3D8::UPDATE_C3D8()
下位・サブルーチン [lib/user/uyield.f90] uBackwardEuler()・サブルーチン [lib/utilities/ttable.f90] m_table::fetch_TableData()・サブルーチン [lib/utilities/ttable.f90] m_table::eigen3()
44
モジュール名:m_ElasticLinear線形弾性体のDマトリックスを計算するモジュール
使用する他のモジュール・[lib/physics/material.f90] mMaterial
材料物性の情報を管理するモジュール
メンバ変数・整数型 kreal
実数型の種別値
メンバ関数・サブルーチン calElasticMatrix()
3次元問題,平面ひずみ問題,平面応力問題,軸対称問題のDマトリックスを計算するサブルーチン・サブルーチン calElasticMatrix_ortho()
直交異方性がある場合,3次元問題のDマトリックスを計算するサブルーチン・サブルーチン LinearElastic_Shell()
シェル要素を使用する場合,埋め込み座標系成分のDマトリックスを計算するサブルーチン
45
サブルーチン名:calElasticMatrix()3次元問題,平面ひずみ問題,平面応力問題,軸対称問題のDマトリックスを
計算するサブルーチン
引数・構造体(tMaterial) matl
材料に関連するデータ・整数型 sectType
問題の種類 (3次元問題/平面ひずみ/平面応力問題/軸対称問題) ・実数型 D(:, :)
Dマトリックスの成分・実数型 temp (省略可能)
温度
上位・サブルーチン [lib/physics/calMatMatrix.f90] m_MatMatrix::MatlMatrix()・サブルーチン [lib/physics/creep.f90] mCreep::iso_creep()・サブルーチン [lib/physics/Elastoplastic.f90] m_ElastoPlastic::calElastoPlasticMatrix()・サブルーチン [lib/physics/Viscoelastic.f90] mViscoElastic::calViscoelasticMatrix()
下位・サブルーチン [lib/utilities/ttalbe.f90] m_table::fetch_TableData()
46
モジュール名:m_static_LIB_3d3次元要素の場合,Bマトリックスおよび
要素剛性マトリックス を計算したり,Gauss積分点における応力とひずみを計算したりするモジュール
使用する他のモジュール・ [lib/element/element.f90] elementInfo
要素の情報を管理するモジュール・[lib/physics/mechgauss.f90] mMechGauss
Gauss積分点の情報を管理するモジュール・[lib/physics/calMatMatrix.f90] m_MatMatrix
各材料のDマトリックスを計算するサブルーチンを呼ぶモジュール・[lib/m_common_struct.f90] m_common_struct
有限要素解析における共通データを定義するモジュール・[lib/m_fstr.f90] m_fstr
FrontISTRにおける共通データを定義するモジュール
・[lib/physics/material.f90] [mMaterial]材料物性の情報を管理するモジュール
・[lib/utilities/utilities.f90] m_utilities補助的なサブルーチンや関数を集めたモジュール
・[lib/physics/Elastoplastic.f90] m_ElastoPlastic弾塑性体のDマトリックスを計算するモジュール
メンバ変数・整数型 kint
整数型の種別値・実数型 kreal
実数型の種別値
メンバ関数
47
モジュール名:m_static_LIB_3d3次元要素の場合,Bマトリックスおよび
要素剛性マトリックス を計算したり,Gauss積分点における応力とひずみを計算したりするモジュール
メンバ関数・サブルーチン GEOMAT_C3()
3次元要素の場合,接線係数を変換するサブルーチン・サブルーチン STF_C3()
3次元要素の場合,Gauss積分点における応力とひずみを計算するサブルーチン・サブルーチン DL_C3()
3次元要素の場合,分布荷重を計算するサブルーチン・サブルーチン TLOAD_C3()
3次元要素の場合,熱荷重を計算するサブルーチン・サブルーチン UPDATE_C3()
3次元要素の場合,Gauss積分点での応力やひずみ,節点での内力や反力を計算するサブルーチン
・サブルーチン UpdataST_C3()3次元要素の場合,Gauss積分点での応力やひずみを計算するサブルーチン
・サブルーチン NodalStress_C3()3次元要素の場合,Gauss積分点での応力やひずみから節点平均値を計算するサブルーチン
・サブルーチン ElementStress_C3()3次元要素の場合,Gauss積分点での応力やひずみから要素平均値を計算するサブルーチン
・関数 VOLUME_C3()3次元要素の場合,体積を計算するサブルーチン
48
サブルーチン名:UPDATE_C3 ()3次元要素の場合,Gauss積分点での応力やひずみ,節点での内力や反力を計算するサブルーチン
引数・整数型 etype
要素タイプ・整数型 nn
各要素の節点数・実数型 ecoord(3, nn)
各要素の節点座標・実数型 u(3, nn)
各要素の節点変位・実数型 ddu(3, nn)
各要素の節点変位増分 (m_fstr_Update::fstr_UpdateNewton()ではdu)・実数型 coords(3, 3)
材料の局所座標系を定義するのに必要な変数・実数型 qf(nn*3)
各要素の節点内力の寄与・構造体(tGaussStatus) gausses(:)
Gaussの積分点に関連するデータ・整数型 iter
Newton-Raphson反復数・実数型 tincr
時間増分・実数型 TT(nn) 省略可能
各要素の節点温度・実数型 T0(nn) 省略可能
各要素の節点参照温度・実数型 TN(nn) 省略可能
時刻tでの各要素の節点温度
上位
49
サブルーチン名:UPDATE_C3 ()3次元要素の場合,Gauss積分点での応力やひずみ,節点での内力や反力を計算するサブルーチン
上位・サブルーチン [analysis/static/fstr_Update.f90] m_fstr_Update::fstr_UpdateNewton()
下位・サブルーチン [lib/utilities/ttable.f90] m_table::fetch_TableData()・サブルーチン [lib/element/element.f90] elementInfo::getQuadPoint()・サブルーチン [lib/element/element.f90] elementInfo::getGlobalDeriv()・サブルーチン [lib/m_common_struct.f90] m_common_struct::set_localcoordsys()・サブルーチン [lib/element/element.f90] elementInfo::getShapeFunc()・サブルーチン [lib/physics/calMatMatrix.f90] m_MatMatrix::MatlMatrix()・サブルーチン [lib/utilities/utilities.f90] m_utilities::transformation()・サブルーチン [lib/physics/calMatMatrix.f90] m_MatMatrix::StressUpdate()・サブルーチン [lib/physics/Elastoplastic.f90] m_ElastoPlastic::BackwardEuler()
50
目次
1.現バージョンのFrontISTRによる弾塑性解析の時間積分アルゴリズム・ 理論・ 現バージョンのプログラム
2.次バージョンで修正予定の時間積分アルゴリズム(コンシステント接線剛性の導入) ・ 理論・ 次バージョンで修正予定のプログラム
3.解析事例
No
1. 弾性予測子の計算
2. 降伏関数の符号判定
3. Return Mapping
Yes
p, ( ) 0F e e
p p
t t
t t
t t
e e p
e e
p p p
p
:
, ( ) 0
t t t t
t t t t
t t
t t t tF
C
e e
e e
p p
:
t
t
C
51
コンシステント接線係数
ee
:t t
t td d
(※) 次バージョンのFrontISTRでは,コンシステント接線係数をDマトリックスとして使用できる
ように修正予定
時間積分アルゴリズムに整合した弾塑性係数が必要になります
・・・(40)
52
コンシステント接線係数:von Misesの降伏関数の場合 (1/3)
e e
2
e2
2
e e2
2
e e d e2
2
e d e2
:
313 ( )
31 23 ( )
623 ( )
6: :3 ( )
6 :3 ( )
t t t t
t t t t
t t
p
pJ
pJ
pJ
J
J
C
I
I
I
I
C I
C I
e e e
e e
e e
e e
e
d e
1 (tr )3
1 :3
1( ) :3
1( ) : :3
1( ) :3
:
ik jl kl
ik jl i j k l
ik jl i j k l
I
I I I I
I I
e e e e I I
e e e e I I
I
・・・(70)
・・・(71)
53
コンシステント接線係数:von Misesの降伏関数の場合 (2/3)
2 2 2
e d e e 2 e22 2
6 6 6: 3 ( )3 ( )3 ( ) 3 ( )
t t dd d d JJJ J
C I
2 22
22
2
ee
e e
ee
e e
1 13 ( ) 3 ( )2 3 ( )
1 1 3 ( )2 3 ( )3 1 :2 3 ( )3 1 :2 3 :
23 :2 :
32 :2 :
32 :2 :
d J JJ
IJ
dJ
d
d
d
d
2
2
ee
e e
ee
e e
3 ( ) 3 0
3 ( )
3
2 3 :3 2 :
2 3 :3 2 :
df d J H d
d Jd
H
dH
dH
p p
Y
p
dHd
式 (41) より
・・・(72)
・・・(73)
・・・(74)
54
コンシステント接線係数:von Misesの降伏関数の場合 (3/3)
2 2 2
e d e e 2 e22 2
2 2 2e e
e d e e e e e2 e e e e
e
6 6 6: 3 ( )3 ( )3 ( ) 3 ( )
6 6 2 3 6 3: : 2 :33 2 23 ( ) 3 : ::: 22
t t dd d d JJJ J
d d dHJ
C I
C I
C
2
d e2
2e
e eee e
e e
2e
e e2 e e
e e
2
e d e2
2 e
2 e
6 :3 ( )
6 2 3 :3 23 :2 :
26 32 :3 2 :4 :
2
6( ) : 1 :3 ( )
1633 ( ) :
dJ
dH
d
d dJ
HJ
I
I I I
ee
e e e
2 e ed e
2 2 e e e e
::
3 12 1 6 :33 ( ) 3 ( ) : :
d
dHJ J
I I I
d
1 (tr )3
1 :3
1( ) :3
1( ) : :3
1( ) :3
:
ik jl kl
ik jl i j k l
ik jl i j k l
I
I I I I
I I
e e e e I I
e e e e I I
I
式 (43) より
・・・(76)
・・・(75)
55
コンシステント接線係数:Drucker-Pragerの降伏関数の場合 (1/5)(1) Drucker-Pragerの円錐の滑らかな面で降伏する場合
2
ee e
1( )
11 :2
2 12 :
t t
J
3/2e e e e e e e
e e e e
3/2e e e e e e
e e e
2 1 ( : ) ( : )2 : 2 2 :
2 1 ( : ) ( : )2 : 2 2
t t dd d d
dd d
e
e
e e ee e
e e e e e e e e e e
e ee
e e e e e e
:
12 1 :2 : 2 : : : 2 :
2 12 : 2 : :
d d d
d
ee
e e e e
1:: 2 :
d d
・・・(77)
・・・(78)
56
コンシステント接線係数:Drucker-Pragerの降伏関数の場合 (2/5)
e
e
( )tr ( )( tr ( ) )
t t p p KK KK
e( tr ( ) )t td p K d d
p p
p p
2 p p
2e
p ( )
2e ( )
( , ) ( ) ( ) ( ) ( )
1 : ( ) ( tr ( ) ) ( )2
1 : ( ) ( tr ( ) ) ( )2 :
2
t
t
t t t t t t t
t t
dF d J d d p dc
dcd d K d d dd
d d K d d H d
p p
2e e ( )
e e
: ( ) tr ( ) ( ) ( ) 0:
td K d K H d
p p
e ee e
2( )
2 : ( ) tr:
( ) ( ) ( ) t
d K dd
K H
・・・(79)
・・・(80)
・・・(81)
・・・(82)
57
コンシステント接線係数:Drucker-Pragerの降伏関数の場合 (3/5)
p p
e ee e
2( )
e ee e
2 : ( ) tr:
( ) ( ) ( )
2 : ( ) tr:
t
d K dd
K H
A d K d
e e ee e e
e e e e e e e e e e
e e ee e
1( tr ( ) ) 2 1 :2 : 2 : : : 2 :
tr ( ) 2 : ( ) tr:
t t t t t td d p d
K d d d d d
K d A d K d
I
I
e e e ee e e e
e e e e e e e e e e e e
ee d e
e e
12 1 : 2 : ( ) tr2 : 2 : : : 2 : :
: ( ) 2 : : ( ) ::
d d A d K d
K d A d K
I
I I I e
e e e ed e d e d e e
e e e e e e e e e e e e
12 1 : : : 2 : : ( ) :2 : 2 : : : 2 : :
d
d d A d K d
I
I I I I
e e e
e e
e e
e e
e
d e
1 (tr )3
1 :3
1( ) :3
1( ) : :3
1( ) :3
:
ik jl kl
ik jl i j k l
ik jl i j k l
I
I I I I
I I
e e e e I I
e e e e I I
I
d e
e
1: (tr )3
I I
=
・・・(83)
・・・(84)
・・・(85)
・・・(86)
58
コンシステント接線係数:Drucker-Pragerの降伏関数の場合 (4/5)
e ed
e e e e e e e e
e ee
e e e e
e ed
e e
2 1 22 : 2 : : :
2 ( ) ( ) 1 ( ) ( ) :: :
2 2:
t td A
AK K K A d
A
I
I + I + I I
I
e e
e ee
e e e e
:
2 ( ) ( ) 1 ( ) ( ) :: :
AK K K A d
I + I + I I
・・・(87)
59
コンシステント接線係数:Drucker-Pragerの降伏関数の場合 (5/5)(2) Drucker-Pragerの円錐の頂点で降伏する場合
p p p
e
e p
e p
e p
e
( ) tr( )
tr(tr tr )
( : tr )
( : tr )
1 :( ) ( )( ) ( ) t
t t t t
t t
d d pK dK d d
K d K d
K d K d
KK dK H
II
I
I I
I I
I I
p p p( ) ( )tr tr 0( ) ( )
tdc dp K d
p p p
p p p
p p p
p( )p tr( )
e p
( ) ptr( )
e p
p e
( ) tr( )
( ) ( ) tr( ) ( )
: : 0
( ) ( ) tr( ) ( ): tr 0
tr :( ) ( )( ) ( )
t
t
t
dc dd
K d K d
H d
K d K d
Kd dK H
I I
I
I
・・・(88)
・・・(89)
60
目次
1.現バージョンのFrontISTRによる弾塑性解析の時間積分アルゴリズム・ 理論・ 現バージョンのプログラム
2.次バージョンで修正予定の時間積分アルゴリズム(コンシステント接線剛性の導入) ・ 理論・ 次バージョンで修正予定のプログラム
3.解析事例
61
• de Souza Neto, E.A., Peric, D. and Owen, D.J.R., 寺田賢二郎監訳, 非線形有限要素法-弾塑性解析の理論と実践, 森北出版, 2012.
• 久田俊明, 野口裕久,非線形有限要素法の基礎と応用,丸善, 1996.