7.1 塑性変形(負荷変化)

トップページは<a href="https://qiita.com/Sagittarius_Chiron/items/fd806361ceca4864bc79">こちら</a>です。
1.0、2.0、4.0の記事の読了を前提として、操作についての記載を省略している場合があります。

記事中ではヤング率 E=70000[MPa]です。参考にさせていただいた元の例例題でもE=70000[MPa]です。しかし、Stepのデフォルト設定では時間がかかりそうだったため、実際の計算結果はE=7000[MPa]で行いました。

### 解析内容
<dl>
  <dt>使用ファイル</dt>
  <dd>pole.stp</dd>
  <dt>単位</dt>
  <dd>mm-ton</dd>
  <dt>材料物性値</dt>
  <dd>Aluminum(A6000)　　(注1)</dd>
  <dd>縦弾性係数：E=70000 [MPa]</dd>
  <dd>ポアソン比：ν=0.3</dd>
  <dd>弾塑性変形の「ひずみ-応力線図は下記です」</dd>
  <dd><img width="75%" alt="Fig7001.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/ff3019cf-6e4a-b4f1-bc32-0bb17f851dd5.png"></dd>
</dl>

<b>荷重状態</b>
　a)　fix(面)：Dx = Dy = Dz = 0 [mm]
　　　load(面)：Dx = Dy = 0　　Dz=-3[mm]
　b)　fix(面)：同じ
　　　load(面)：Dx = Dy = 0　　Dz= -3 のち Dz = 0 [mm]
　c)　fix(面)：同じ
　　　load(面)：Dx = Dy = 0　　Dz = -3 のち Dz = Unconstrained [mm]
　d)　fix(面)：同じ
　　　load(面)：Dx = Dy = 0　　p = 800 のち p = 0 [MPa]

元の例題にはc)はありません。d)を行うには、元の例題と同じくMPC(Multi-Point Constraint)を併用する必要があります。

<img width="50%" alt="Fig711.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/518f1522-2a75-fa82-17bc-b031b733d0e1.png">
<ul>
<li>(注1)<br>この値は元の例題での値です。ここでは PrePoMax の Material Library に登録済の近い値の材料を使います。</li></ul>

### 形状の読込
PrePoMaxの新規起動または新規作業開始をしてください。
unit system:<b>mm,ton,s,℃</b> に設定してください。

pole.stpをインポートしてください。
オブジェクト・ブラウザのGeometryタブのツリーにSolid_part-1が作成され、グラフィック・パネルには部品が表示されます。

### メッシュ作成
デフォルトのメッシュサイズのままで問題ありません。Solid_part-1にCreate Meshを実行してメッシュを生成してください。

### 材料物性値の設定

Material Library から材料物性値を呼び出してください。

　FE ModelタブのツリーのMaterialsの右クリックメニューのMaterial Library。
　メニューバーの場合はProperty→Material library。

　Aluminum：1060_Alloy

　FE ModelタブのツリーのMaterialsの下に 1060_Alloy が作成されます。

PrePoMaX(CalculiX)では、以下の図示のように塑性変形領域と弾性変形領域を別々に設定します。
<img width="75%" alt="Fig7002.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/5c8684c3-3dbd-c084-1313-0a3873f1fd15.png">

この例題での計算結果の最大応力は300[MPa]を超えますが、荷重の条件a)からc)までは(0.1985,300)の点までを設定します。定義されない「0.1985≦塑性ひずみ」の部分は300[MPa]と扱われます、すなわち水平に線が延長されたグラフとして扱われます。荷重の条件a)からc)はload(面)の変位を指定して圧縮するため問題ありません。しかし、線が水平というのは荷重が掛かればどこまでも圧縮されることになり、荷重の条件d)では問題が生じます。そのため、荷重の条件d)を計算する時は元の例題のように ( 1.9985,　3000 ) の点を追加します。

　ヤング率とポアソン比を修正してください。
　Young's modules = 70000 MPa
　Poisson'sratio = 0.3
<img width="50%" alt="Fig7003.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/1f6bd184-06dd-9cd8-c8f2-506077881307.png">

Libraryには塑性(Plastic)の値が入っていないため、以下のようにして追加してください。

　FE ModelタブのツリーのMaterialsの1060_Alloy の右クリックメニューのEdit。
　メニューバーの場合はProperty→Material → Edit。
　1)～3)　Plasticを追加してください。
　4)　Yeild stress と Plactic strain の組の表形式で入力してください。
　　　105　0.0
　　　200　0.0485
　　　300　0.1985
<img width="50%" alt="Fig701.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/7439df2d-8d94-be96-7236-6ee5a8008ab9.png">
　「OK」を左クリックしてください。
<br><dd><b>ここで修正した値は Material Library には反映されません。保存した*pmxファイルには記憶されています。</b></dd>

<br>セクションの設定をしてください。

　FE ModelタブのツリーのSectionsの右クリックメニューのCreate。
　メニューバーの場合はProperty→Section→Create。

　<b>Type</b> = Solid section
　<b>Properties</b>
　Name = Solid_selection-1 (デフォルトのまま)
　Material =  1060_Alloy
　Region type = Part name
　Part = Solid_part-1
<img width="50%" alt="Fig551.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/75ecd8bc-b0f3-62fa-f845-1de1fe0573a0.png">
　「OK」を左クリック

### 面の命名
面に名前を付けてください。

　FE ModelタブのツリーのMeshのSurfaces の右クリックメニューのCreate。
　メニューバーの場合はModel→Surfce→Create

1) <b>Properties</b>
　 Name = fix
　 Surface type = Element
　 Region type = Selection
2) Surfaces, edges and vertices
3) 面を選択してください。
4) 「Ok-New」または「OK」を左クリックしてください。

同様にして、残りのload(面)も設定をしてください。

ツリーのSurfacesの下に fix、load が表示されます

### 解析設定
解析ステップを新規作成してください。

　FE ModelタブのツリーのStepsの右クリックメニューのCreate。
　メニューバーの場合はStep→Step→Createです。

　<b>Type</b> = Static step
　<b>Data</b>
　Name = Step-1 (デフォルトのまま)
　Solver = Default (デフォルトのまま)
　Nlgeom = <font color="Red">On</font>　　(注2)
　Incrementation = Default (デフォルトのまま)　　(注3)

<ul>
<li>(注2)<br>　塑性変形を計算するときは“幾何学非線形計算”が必要になります。そのため、Nlgeom オプションを On としています。しかし、マニュアルの記載によると材料物性に塑性の項目があると“幾何学非線形計算”が成されるため、このオプションはデフォルトのOffでも構いません。Onにすると同じステップ内の全て“幾何学非線形計算”になるため、不必要な部分までは対象にならないようにOffのほうが良いかもしれません。今回の例題では、どちらでも同じです。</li>
<li>(注3)<br>　ひずみ-応力の線図で線の傾きが変わる付近は精密に、線の傾きが一定のところは効率的に計算したいですね。問題は計算進行中のどのタイミングで傾きが変わる場所に至るかが前もって予測できないことです。Defaultを選択したときは自動的に行ってくれます。選択肢の Automatic も自動で行いますが、Automatic のデフォルト設定が Default です。元の例題は自動的に行わない設定です。元の例題と同じことをしたい場合は、Direct を選択してください。</li>
</ul>

BCs(Boundary Conditions；境界条件)を作成してください。

　FE ModelタブのツリーのStep-1/BCsの右クリックメニューのCreate。
　メニューバーの場合はStep→BC→Createです。

≪固定面≫
　<b>Type</b> = Fixed
　<b>Properties</b>
　Name = Fixed-1 (デフォルトのまま)
　Region type = Surface name
　Surfaces = fix

≪荷重面≫
　<b>Type</b> = Displacement/Rotation
　<b>Properties</b>
　Name = Displacement_rotation-1 (デフォルトのまま)
　Region type = Surface name
　Surfaces = load
　U1 = 0 mm
　U2 = 0 mm
　U3 = -3 mm
　UR1 = Unconstrained
　UR2 = Unconstrained
　UR3 = Unconstrained
　Color = Lime (デフォルトのまま)

相当塑性ひずみが出力されるようにします。これを行わないと計算結果を確認する際に相当塑性ひずみが表示できません。
結果の表示のツリーでは、PE/PEです。
　FE ModelタブのツリーのStep-1/Field utputs/EF-outputs-1 の右クリックメニューのEdit。
　メニューバーの場合はStep→Field utputs→Editで、表示される画面からEF-output-1を選んでください。

　1)　Variables to output の行の▼のアイコンを左クリックしてください。　
　2)　PEEQをチェックオンしてください。
　3)　確認してください。
　4)　「OK」を左クリックしてください。
<img width="80%" alt="Fig7004.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/f62eb903-ebf6-05a1-91f4-9e8922b8b5c5.png">

≪ファイル保存≫
いったんファイルを保存してください。名前は任意ですが、ここでは07_10フォルダーの07_10_a.pmxファイルとしました。

### ソルバー計算
ソルバー計算を実施してください。

### 結果の表示
計算のステップを最終段階にしてください。最後の数字は計算条件によって変わります。
<img width="75%" alt="Fig712.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/5b8cb901-1f8d-5bb7-d06e-4ec15618f760.png">

　メニューバーで、Tools → Settings を左クリックしてください。
　<b>Data</b>
　　　Post-processing
　<b>Deformation</b>
　　　Deformation scale factor = True scale
　<b>Data</b>
　　　Legend
　<b>Color spectrum value</b>
　　　Min/max limit type = Automatic

表示例を示します。
<img width="75%" alt="Fig713.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/19eead0d-f6d7-8203-ecbc-61c8e90933a3.png">
<img width="75%" alt="Fig714.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/a004b34a-c9d9-f2f6-3603-422f2d290b3a.png">
<img width="75%" alt="Fig715.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/3445e382-30d1-cb35-f137-b837ea8237ed.png">

ファイルを上書き保存してください。

### 除荷サイクル(b)

別名でファイルを保存してください。名前は任意ですが、ここでは07_10フォルダーの07_10_b.pmxファイルとしました。

解析ステップを追加作成してください。

　FE ModelタブのツリーのStepsの右クリックメニューのCreate。
　メニューバーの場合はStep→Step→Createです

　<b>Type</b> = Static step
　<b>Data</b>
　Name = Step-2 (デフォルトのまま)
　Solver = Default (デフォルトのまま)
　Nlgeom = <font color="Red">On</font>
　Incrementation = Default (デフォルトのまま)

下の図のように、Step-1の次にStep-2が追加されます。Step-1の境界条件はStep-2に引き継がれます。
<img width="30%" alt="Fig716.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/4082776b-1285-0cac-a381-28d15ab33d8f.png">

<b>Step-2</b> の <b>Displacement_rotation-1</b>
　Surfaces = load
　U1 = 0 mm
　U2 = 0 mm
　U3 = 0 mm に変える
　UR1 = Unconstrained
　UR2 = Unconstrained
　UR3 = Unconstrained

ソルバー計算を実施してください。

結果を表示します。
Step1の 1,0 ～ 1,19 のところは先ほどと同じです。Step-2は 2,1 ～ 2,22 です。
3mm圧縮したのちに3mm引っ張って、元に戻しました。弾性変形ならば応力は零になりますが、塑性変形の範囲まで圧縮しているため塑性ひずみが残っています。
<img width="75%" alt="Fig717.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/3fac4780-4f91-91e8-5bf4-7c020c7a1476.png">

ファイルを上書き保存してください。

### 除荷サイクル(c)

別名でファイルを保存してください。名前は任意ですが、ここでは07_10フォルダーの07_10_c.pmxファイルとしました。

<b>Step-2</b> の <b>Displacement_rotation-1</b>
　Surfaces = load
　U1 = 0 mm
　U2 = 0 mm
　U3 = Unconstrained に変える
　UR1 = Unconstrained
　UR2 = Unconstrained
　UR3 = Unconstrained

ソルバー計算を実施してください。

結果を表示します。
Step-1で塑性変形するまで圧縮しているため、除荷をしても元の高さまで戻りません。
<img width="78%" alt="Fig718.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/da15b102-0b1b-8181-6b4c-dc95a9e99f95.png">
ファイルを上書き保存してください。

### 除荷サイクル(d)

別名でファイルを保存してください。名前は任意ですが、ここでは07_10フォルダーの07_10_d.pmxファイルとしました。

荷重部(load面)を変位から圧力に変更します。

<b>Step-1</b> の <b>Displacement_rotation-1</b>
　Surfaces = load
　U1 = 0 mm
　U2 = 0 mm
　U3 = Unconstrained に変える
　UR1 = Unconstrained
　UR2 = Unconstrained
　UR3 = Unconstrained

※　Step-2 の Displacement_rotation-1 と同じ内容になりました。

圧力荷重を新規作成してください。
　FE ModelタブのツリーのStep-1/Loadsの右クリックメニューのCreate。
　メニューバーの場合はStep→Load→Create。

　<b>Type</b> = Pressure
　<b>Properties</b>
　Name = Pressure-1 (デフォルトのまま)
　Region type = Surface name
　Surfaces = load
　Pressure = 800 MPa

load面にMPCを設定します。
先ず、<b>ノードセット</b>を新規作成(Create)してください。
　FE ModelタブのツリーのMesh/Node sets の右クリックメニューのCreate。
　メニューバーの場合はModel → Node set → Create。

　<b>Date</b>
　Name = Node_set-1 (デフォルトのまま)

　load(面)を選択すると面に含まれるノードが選択されます。
　「OK」を左クリックしてください。
<img width="75%" alt="Fig719.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/3c8f2e63-0533-fe49-0ffd-66995af1a8e9.png">

次に、<b>CalculiX の Keyword修正 </b>を行います。
　メニューバーから、Model → Edit CalculiX Keywords

1)　CalculiX keyword tree のSteps を選択状態にしてください。
2)　「Add keyword」を左クリックしてください。
3)　新しく作成された User keyword　を上に移動してください。
4)　User keyword をこの位置にしてください。
<img width="70%" alt="Fig71901.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/8ead44d2-6bab-ed36-4fc8-27381cd1cb78.png">
5)　Edit selected keyword の欄に、以下の２行を入力してください。
　　　*MPC
　　　Plane, Node_set-1
6)　入力した内容が、Read-only CalculiX input file の欄に反映されます。
7)　「OK」を左クリックしてください。
<img width="70%" alt="Fig71902.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/4d68272e-b5e8-625f-c5f6-dd22a31ed631.png">

最初のほうに記載したように、材料物性値に、( 1.9985, 3000 ) を追加してください。
![Fig720.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/a7e0e460-6228-764b-18c5-4569881b663c.png)

ソルバー計算を実施してください。

結果を表示します。
Step-1で塑性変形するまで圧縮しているため、除荷をしても元の高さまで戻りません。
<img width="75%" alt="Fig721.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/888272/32af36d6-1b8f-eab8-1ad4-aa37bde943c6.png">


ファイルを上書き保存してください。

##### ２段階計算のバグについて
この記事を書いたあとに、２段階計算で一部の条件が引き継がれないというPrePoMaxの<b>“仕様(笑)”</b>が判りました。
発見に至った経緯は「5.0 線形熱応力」の最後に記載してあります。Initial Condition で設定した条件がソルバー計算の最初で初期化され、２段階計算のときは前のステップの境界条件をリセットされます。特に、前のステップの境界条件がリセットされるというは、非定常計算をする時には完全にダメです。
この記事では、２段階計算をしていますが、第２ステップが除荷サイクルですので、“仕様(笑)”でリセットされても結果的に問題ありません。しかし、本来ならば第１ステップで圧縮して第２ステップでは圧縮後の位置から戻していきたいのですが、“仕様(笑)”のせいで急激に除荷される計算になっています。(2022/02/04 22:55)