# 車輛模擬與分析

# Ansys Mechanical分析教學

如果你真的想不開想要用Ansys，推薦你組一台好一點的電腦，記憶體至少64G，有預算可以直上128G。 
Ansys的好處是單件分析跑的速度比固態工作快很多，適合跑拓樸，可玩性比較好，但多很多前置作業，然後Ansys毛很多也一堆奇怪的Bug，很多材質的Properties都要自己建。
有不知道的地方想深入了解可以去這邊:
https://innovationspace.ansys.com/courses/learning-track/stress-analysis-using-ansys-mechanical/
    
## Ansys Mechanical 分析教學

### 第一步：將畫好的圖儲存成Step檔(組合件也可以！)

- 在Solidworks裡面用另存新檔:arrow_right:存成Step203或214都可以(個人習慣用214)
- 建議存檔前確認好自己的圖沒有奇怪的小曲面或藏有一些很小很小的實體，不然進Spaceclaim之後還要處理很煩

-----------------------------

### 第二步：打開Ansys Workbench

- 如果有確定要用的材料而且是之前有用過的，建議去NAS抓前人們的存檔，裡面通常會有很多建好的材料(千萬不要在NAS上打開，拜託抓下來再開)，抓存檔要抓.wbpj檔跟他的_files，例如要抓4130這個專案檔要把選起來的兩個東西都抓下來，_files抓下來要解壓縮![image](https://hackmd.io/_uploads/SJ6OOrGtWx.png)解壓縮完點進去要長這樣![image](https://hackmd.io/_uploads/BytMYBGFWl.png)

- 接著就打開Workbench，打開後會長這樣，如果有存檔可以直接把.wbpj檔拖到空白的地方，沒有存檔的話先從左邊找到Static Structural把它拖到畫面空白的地方![image](https://hackmd.io/_uploads/HJ91_SfK-e.png)

- 這邊建議可以先改一下預設設定，找到Tools:arrow_right:Options![image](https://hackmd.io/_uploads/ryh4ABztWe.png)

- 在Geometry Import裡面把Preferred Geometry Editor改成SpaceClaim(會這樣改是因為SpaceClaim最好上手，有其他習慣的Editor也可以用沒關係)![image](https://hackmd.io/_uploads/BkQbkUGYZl.png)

- 在Units可以把慣用單位改成自己習慣的![image](https://hackmd.io/_uploads/SkUygUMKbg.png)

- 小撇步：Workbench左下角有指示燈，紅燈代表它現在正在忙，綠燈代表可以進行下一步操作![image](https://hackmd.io/_uploads/By4tlLfF-g.png)![image](https://hackmd.io/_uploads/r1qAgLfY-g.png)

- 如果是用存檔，先看Engineering Data裡面有沒有你要的材質跟Properties，有的話可以直接把Geometry替代掉，怎麼確認看下面

--------------------------

### 第三步：建立材料(如果有存檔可以跳過)
- 對Engineering Data的地方點兩下，可以進到建立材質的地方![image](https://hackmd.io/_uploads/Bk9n5HMFbg.png)

- 要建立材料的話按下面的Click here to add a material，或是按分頁標籤下面的Engineering Data Sources，裡面會有一些基本的材質或是材質的模板可以修改![image](https://hackmd.io/_uploads/S1JGDXdYZl.png)

- 在Engineering Data Sources裡面是Ansys已經內建的材質跟模板，找到你要的材料或模板之後在中間方格材料名稱的右邊按加就會跑到這個Project的可用材質裡面 ![image](https://hackmd.io/_uploads/B1ez_X_K-x.png)

- 一般來說都可以從裡面找到可以用來修改的材質或模板，但如果想從頭開始建的話就按下面，按下去輸入完名稱後會有一個完全空白的材質，例如這邊我建立一個名為1的空白材質，左邊那排可以找到需要加入的物質特性![image](https://hackmd.io/_uploads/B13yiQdFZe.png)

- 這邊拿Ansys內建的Structural Steel舉例，這是一個建的很完整的材質，如果只做單純的應力分析不需要這麼多Properties，最少需要填完Density、Isotropic Elasticity、Tensile Yield Strength跟Tensile Ultimate Strength，要分析疲勞就需要Strain-Life Parameters跟S-N Curve，這些東西最好的方法是跟提供材質的廠商要，沒有的話就網路上找![image](https://hackmd.io/_uploads/SJhm2m_tbg.png)

- 裡面沒有反灰的每一格都要填完，有些Properties可以有不一樣的填法，可以自己按按看![image](https://hackmd.io/_uploads/Bksf4N_YZg.png)



- 建立材料一定要注意右邊C排的Unit，Ansys的好處是想要用什麼單位都可以自己選，改變單位之後它會依照現有的數值幫你做一遍換算。![image](https://hackmd.io/_uploads/SJNc2SMYZl.png)
 
- Ansys的很多操作做完之後都可以不用按儲存(在Workbench的存檔例除外)，例如這邊數值都輸入完按Enter之後可以直接把分頁關掉。

------------------------------

### 第四步：將圖檔匯入Ansys
- 對Geometry按右鍵，選Replace Geometry，可以用Browse找自己要的圖檔，最近開過的圖檔它會幫你放在Browse下面![image](https://hackmd.io/_uploads/HkpuZUMYbe.png)

- 選完之後Geometry會長這樣，點兩下就可以開啟預設的Editor，這邊建議就算確定圖不用修改也點兩下打開之後再關掉，Step檔有時候會把圓形曲面分割成半圓，開啟Editor他會幫你把半圓曲面合成一個圓形，之後選取會比較方便
![image](https://hackmd.io/_uploads/Hy84zLGKWx.png)

- 開啟Editor之後可以修圖檔一些瑕疵的地方，或是把圖檔割出一些分析需要的面之類的，甚至是你想要做簡單修改這邊也可以改圖，SpaceClaim改圖有時候還比Solidworks快。

- Spaceclaim的詳細教學可以看這邊https://youtu.be/aYS6czrbwOE?si=XLfLt-HNG38yLx5R

- 改完圖直接關閉Editor即可，或是之後還有更改的需求也可以開著，改完圖到Workbench對Model右鍵:arrow_right:update 就會更新Geometry![image](https://hackmd.io/_uploads/Bkjk9I7K-l.png)
如果已經開著Mechanical也可以對Mechanical內的Geometry右鍵:arrow_right:Update Geometry from Source也可以![image](https://hackmd.io/_uploads/SkIAKI7t-e.png)

---------------------------------

### 第五步：選材質、設定接觸條件(組合件)

- 取代完Geometry之後會長這樣，在這邊前面有問號代表有東西沒設定完，Geometry剛取代完是不會幫你套用材料的![image](https://hackmd.io/_uploads/B1YOfIOKbx.png)

- 選到你要套零件的材質後會看到下面Assignment有反黃的地方，點進去可以選材質![image](https://hackmd.io/_uploads/HJvrXIdYbe.png)

- 左下角的選項區還有一個Stiffness Behavior可以改，如果有需要零件是剛體的就可以改成Rigid，要注意剛體不能跟剛體連接，他會直接不讓你跑分析
![image](https://hackmd.io/_uploads/SJHIVLOFZg.png)

- 材質都套完之後就會打勾了，如果是單件分析這邊就可以跳到鋪網格，組合件分析請繼續往下看![image](https://hackmd.io/_uploads/rk3hmUuF-l.png)

- 接下來是設定零件間的互動關係，按進Connections裡面可以看到系統已經有自動跑好的Conctacts了，預設零件間都會是Bonded，如果你確定你的組合件零件間沒有相對運動的關係，也可以跳到鋪網格
![image](https://hackmd.io/_uploads/SkfzLLOY-e.png)

- 關於零件間互動關係這邊簡單講一下，想要知道更詳細可以看這邊: https://www.youtube.com/watch?v=ov7PAEwFZm8
互動基本上都是面與面在互動，這邊講的水平跟垂直是相對於兩個互動的平面
![image](https://hackmd.io/_uploads/B1H7iIdFbx.png)

| 互動種類      | 互動方式(水平) | 互動方式(垂直) |
| ------------ | ------------ | ------------ |
| Bonded       | 固定          | 固定         |
| No Speration | 滑動(無摩擦力) | 固定          |
| Frictionless | 滑動(無摩擦力) | 只有正向力，面與面可以分離|
| Rough        | 固定          | 同上
| Frictional   | 滑動(有摩擦力，可以設µ值) | 同上 |

- 如果你的Contacts裡面沒有東西，或是接觸情況有點混亂想要重新設定，也可以右鍵 :arrow_right:Create Automatic Connections
>[!Tip]
Delete Children可以把Contacts裡面的接觸都刪掉，方便重新設定

![image](https://hackmd.io/_uploads/HyMTs8_Ybl.png)

---------------------------------------------

### 第六步：鋪網格

- 鋪網格的重點在於網格品質，但有一點很殘酷的現實是網格越密品質往往會越好，所以重點會放在網格密度跟處理效能之間的平衡，以及網格密度會影響運算出來的結果，這點後面會實際演示。這邊我們先點進Mesh![image](https://hackmd.io/_uploads/By_Zew_Ybg.png)

- 一般來說可以先用Mesh裡面內建的網格控制處理，Physics Preference可以選鋪設的網格要以哪種分析為主，應力分析選Mechanical
![image](https://hackmd.io/_uploads/r1CCeD_Y-e.png)

- Element Size是我們最主要會動到的選項，可以直接決定每一個Element的大小，一般來說會取零件長度的1/10到1/50，視情況調小。

- Element Order主要控制網格的邊上有幾個Node，越多Node需要越強的運算能力![image](https://hackmd.io/_uploads/SyDT-Ddtbx.png)

![image](https://hackmd.io/_uploads/Sy44Xv_YZx.png)

- Sizing裡面可以決定網格生成的方式

  - Adaptive Sizing會自動把他認為需要將網格調細的地方調細
  - Resolution調整自動生成的密度
  - Defeaturing會把Geometry去特徵化，配合Defeature Size使用
  - Defeature Size決定遇到多小的特徵時會去特徵化，例如設定成2mm則2mm以下的特徵會被去特徵
  - Transition決定粗網格與細網格間的轉換速度，選Slow相鄰元素間的大小差異會比較小
  - Span Angle Center決定網格曲率大小，特徵簡單的話可以用Coarse就好
  
>[!Tip]
這邊建議隨便抓一個不要太大的圖玩玩看這些選項，相信會比文字敘述更清楚
  
- 接下來看到網格的品質，基本上網格越小品質越高算出來越精準，但要跟自己電腦的算力還有記憶體大小斟酌一下，下面的條狀圖就是網格的品質的分佈
![image](https://hackmd.io/_uploads/B1WPqOdK-l.png)
- 選右上角Metric Graph可以決定下面要顯示哪一種網格判斷基準，下面有每種基準的判斷標準，每個都要符合標準才是好的網格
![image](https://hackmd.io/_uploads/BJp_cuuYWx.png)

  - 基本上鋪網格的重點就是品質要好，需要運算的特徵(例如潛在的應力集中點)必須要跑出來
  - 然後要注意網格過細會出現應力歧異點，所以建議的分析流程會是：
  第一版圖跑分析:arrow_right:嘗試是否有應力歧異點(大略跑就好，每次網格的大小差可以取1mm):arrow_right:取應力尚未崎異的最大應力網格大小:arrow_right:改圖:arrow_right:分析(不用試應力歧異點):arrow_right:改到最後一版時再確認應力歧異點(每次網格差取0.5mm)


| 指標名稱 	| 適用領域	| 數值範圍與含義	| 建議標準 |
| -------- | ------- | -------------- | -------|
| Skewness (歪斜度)|通用 (特別是四面體) |0 (完美) 到 1 (極差)|優秀: < 0.25；極限: < 0.95 (超過 0.98 可能不收斂)
|Orthogonal Quality (正交品質)|	流體(CFD)| 1 (完美) 到 0 (極差)| 優秀: > 0.7 極限: > 0.1|
|Aspect Ratio (縱橫比)|結構 & 流體	|1 (完美) 到 無窮大|一般區域 < 5|；邊界層 (Inflation) 可接受較大值 (如 < 100)
|Jacobian Ratio (雅可比比率)| 結構 (FEA) |	1 (完美)；數值代表單元變形程度|建議多數單元在 1.0 到 10 之間 |
|Element Quality (單元品質)| 通用 | 0 (極差) 到 1 (完美) | 綜合幾何評分，通常建議平均值 > 0.7|
---------------------------

### 第七步：設定邊界條件
    看到這邊的恭喜，你已經完成80%的前置任務
- 接下來要決定你的零件怎麼受力，在Static Structural裡面有各種受力跟固定方式
![image](https://hackmd.io/_uploads/ry9OruOKbe.png)

- 這邊一樣講幾個常用的，其他想了解的可以去Youtube或Google自己找

- 固定方式 (Supports) — 限制自由度

| 類型 | 名稱 |	適用位置 | 特點與用途 |
| --- | --- | ------- | --------- |
| 全固定 |Fixed Support | 面、邊、點 | 限制所有位移與旋轉（全鎖死），最常用。|
| 位移 | Displacement | 面、邊、點	| 可手動控制 X, Y, Z 的移動量（設為 0 即為固定） |
| 無摩擦 |	Frictionless | 面 | 限制法線方向位移，允許切向滑動（常用於對稱面） |
| 圓柱支撐 | Cylindrical | 圓柱面 | 可單獨設定徑向、軸向、周向的自由度（如軸承座） |
| 彈性支撐 | Elastic Support | 面 | 模擬彈性墊片或地基，需輸入彈性係數（Stiffness） |
| 壓縮支撐 | Compression Only | 面 | 僅在受壓時提供阻力，受拉時分離（模擬放置在地面上） |

- 外部受力 (Loads) — 施加力或力矩

| 類型 | 名稱 | 適用位置 | 特點與用途 |
| --- | --- | ------- | -------- |
| 力 | Force | 面、邊、點 | 給定總力值與方向。若選多個面，力會被平均分配 |
| 壓力 | Pressure | 面 | 始終垂直於表面（法向），適合模擬流體或氣壓 |
| 遠端力 | Remote Force | 面、邊 | 模擬力源在幾何體外部，會自動計算對應的力矩 |
| 軸承負載 | Bearing Load | 圓柱面 | 模擬軸與孔的推擠，力呈半圓周分佈，比一般 Force 精確 |
| 力矩 | Moment | 面、邊 | 施加扭轉力。建議搭配遠端點（Remote Point）使用 |
| 螺栓預力 | Bolt Pretension | 圓柱面/截面 | 模擬螺栓鎖緊時的預拉伸狀態 |

- 全域/慣性負載 (Body Loads)

| 類型 | 名稱 | 作用範圍 | 特點與用途 |
| --- | --- | ------- | -------- |
| 標準重力 | Standard Earth Gravity | 整體模型 | 根據材料密度自動計算重力（注意座標軸方向） |
| 旋轉速度 | Rotational Velocity | 整體模型 | 模擬轉軸旋轉產生的離心力（需定義旋轉中心軸） |
| 加速度 | Acceleration | 整體模型 | 模擬線性加速（如煞車、起步）產生的慣性力 |
| 溫度 | Thermal Condition | 整體模型/零件 | 設定溫差以計算熱脹冷縮產生的熱應力 |

 ------

- 邊界條件設定完之後，就可以大膽的按下Solve，等他跑完
 ![image](https://hackmd.io/_uploads/Sk612ZCtZl.png)

- 跑的同時記得看著工作管理員的記憶體，第二排的已認可那邊如果吃超過你有的記憶體大小，那就代表開始用虛擬記憶體，虛擬記憶體基本上是拿SSD的壽命換記憶體，如果能不要用到最好不要
 ![image](https://hackmd.io/_uploads/Hks8h-0Fbe.png)

>[!Tip]
>如果不想要用虛擬記憶體可以去設定把他關掉，去設定:arrow_right:系統資訊:arrow_right:進階系統設定
>![image](https://hackmd.io/_uploads/BytgkzCt-e.png)
>效能的設定點進去，會看到虛擬記憶體，可以把他變更掉，但C槽的虛擬記憶體沒有辦法全關，可以把他設定成用其他槽多一點，就會盡量減少C槽耗損
>![image](https://hackmd.io/_uploads/Hk3zyfRFZg.png)
>C槽最小一定要給他800MB，就跟我下面設定的一樣，如果有其他槽可以給他用的就把他選成系統管理大小，但這邊還是建議趁記憶體便宜的時候多買一點
>![image](https://hackmd.io/_uploads/rkD3yMAK-l.png)