본문 바로가기
기계공학 기타과목(4대역학 외)/구조최적설계

[최적설계] SIMP 방법 (Solid Isotropic Material with Penalization method)

by bigpicture 2024. 6. 8.
반응형

아래와 같은 물체가 있다고 합시다. 물체를 유한개의 요소로 나눈 상태입니다. 



우리는 부피를 줄이고 싶은 상황입니다. 전체 부피의 50%만 사용할 것입니다. 위 요소의 절반만을 사용하여 좌측이 고정되고 우측 하단이 힘을 받는 구조물은 여러가지로 만들어 볼 수 있습니다. 구조물을 한가지로 결정짓기 위해 아래와 같은 목적을 설정하겠습니다. 

목적 : compliance 를 최소화한다. 

compliance 는 아래와 같이 정의됩니다. 

$c=\sum_{e=1}^{N}\vec{u}_{e}^{T}k_{0}u_{e}$

전체 부피의 50%만 남기면서 compliance 는 최소화 하는 방향으로 최적화를 진행해야합니다. 전체 부피의 50%만을 남기려면 50%의 element 가 제거되야 합니다. element 를 어떤 방식으로 제거해야 할까요? element 를 제거하는 아이디어가 SIMP 입니다. 

각 element 의 밀도를 $\vec{x}$라고 놓겠습니다. $\vec{x}$는 $\vec{x}=\left \{ x_{1},x_{2},...,x_{N} \right \}$ 입니다. 각 밀도는 0~1 사이 값을 갖습니다. 밀도가 0이면 element가 사라지는 겁니다. 

각 element 의 강성은 초기 강성에 밀도를 곱하여 표현할 수 있습니다. 따라서 compliance 는 아래와 같이 변형할 수 있습니다. 

$c(\vec{x})=\sum_{e=1}^{N}(x_{e})\left \{ d_{e} \right \}\left [ k_{0} \right ]\left \{ d_{e} \right \}$

SIMP 방법에서는 여기서 한걸음 더 나아갑니다. 밀도에 p제곱을 하는 겁니다. 아래와 같습니다. 

$c(\vec{x})=\sum_{e=1}^{N}(x_{e})^p\left \{ d_{e} \right \}\left [ k_{0} \right ]\left \{ d_{e} \right \}$

어떤 element 의 강성은 아래와 같이 표현됩니다. e번 element 입니다. 

$E(e)=(x_{e})^{p}E_{0}$

 p를 도입하면 어떤 효과가 있을까요? p에 따른 영향은 아래와 같습니다. 



p가 1인 경우와 4인 경우를 비교해봅시다. 0.4라는 중간밀도가 나타났을 때, p=1인 경우 요소 물성은 $0.4E_{0}$가 됩니다. 반면 p=4인 경우에는 훨씬 작은 요소물성이 됩니다. p가 클 수록 중간 물성이 사라지고 극단적인 물성이 되는 경향이 나타납니다. 이는 최적화에서 더 좋은 결과를 얻습니다. 중간 물성은 실제 제작 시 구현하기 어렵기 때문입니다. 

그렇다면 p 값을 높게 하면 무조건 좋을까요? p가 너무 높으면 최적화 알고리즘의 안정성이 떨어지게 됩니다. 가장 좋은 p값은 3이라고 합니다. 

 

다시 최적화 문제로 돌아가 봅시다. 최적화의 목적은 compliance 를 최소화하는 것이었습니다. 수식으로 표현하면 아래와 같습니다. 

 

Minimize $c(\vec{x})=\sum_{e=1}^{N}(x_{e})^p\left \{ d_{e} \right \}\left [ k_{0} \right ]\left \{ d_{e} \right \}$

 

이때 만족해야하는 조건들이 있습니다. 사용된 부피가 전체 부피의 50%여야 합니다. 수식으로는 아래와 같이 나타냅니다. $V_{0}$가 초기 부피입니다. 

 

$\frac{V(\vec{x})}{V_{0}}=\frac{\sum_{e=1}^{N}x_{e}v_{e}}{V_{0}}=0.5$

 

또한 평형 조건이 성립해야합니다. 수식으로 표현하면 아래와 같습니다. global 을 변위와 하중을 뜻하기 때문에 대문자로 표기합니다. 

 

$\left [ K \right ]\left \{ D \right \}=\left \{ F \right \}$

 

밀도가 0이 되면 gradient 기반 최적화 수행 시 분모가 0이 되는 문제가 발생합니다. 이런 문제를 방지하기 위해 아래 조건을 추가합니다. 0 보다 큰 x의 최솟값을 설정하는 것입니다. 

 

$0<x_{min}<x<x_{max}$

 

정리하면 아래와 같습니다. 

 

$\begin{array}{ll}
\text{Minimize} & c(\mathbf{x}) = \sum_{e=1}^{N_e} (x_e)^p \mathbf{d}_e^T \mathbf{k}_e \mathbf{d}_e \\
\text{subject to} & \frac{V(\mathbf{x})}{V_{0}}=\frac{\sum_{e=1}^{N}x_{e}v_{e}}{V_{0}}=0.5 \\
& \left [ K \right ]\left \{ D \right \}=\left \{ F \right \} \\
& 0< \mathbf{x_{min}}\leq \mathbf{x} \leq 1
\end{array}$

 

반응형

댓글