Technical Support

{{ post.title }} 글 편집 글 편집 (이전 에디터) 작성자 {{ post.author.name }} 작성일

Version {{ post.target_version }} Product
{{ product.name }}
Tutorial/Manual {{ post.manual_title }} Attached File {{ post.file.upload_filename }}

RecurDyn 접촉 요소 (Contact) 초보 탈출 4탄 - 접촉 알고리즘의 기본 원리 에 이어지는 글입니다.


이전 글에서 이야기한 내용은 아래와 같이 요약할 수 있습니다.

1. RecurDyn은 Penalty Method를 사용하여 접촉을 계산한다.

2. Penalty Method는 접촉하는 두 바디가 서로 겹쳐지는 것을 허용한다.

3. 서로 겹쳐진 정도를 penetration이라고 한다.

4. 접촉력은 (개념적으로) f = kδ 와 같이 계산된다. (마치 스프링처럼)

5. 적절한 크기의 K (Stiffness)를 사용하는 것이 중요

  • K (Stiffness)가 너무 작으면, penetration이 커져서 정확도가 떨어짐
  • K (Stiffness)가 너무 크면, 솔버의 해석 안정성이 떨어짐


이와 관련된 몇 가지 예외 상황을 다루어 보겠습니다.
상황 1)

아래의 경우, 파란 상자가 대단히 무겁다고 가정해 봅시다. (약 100Kg 짜리라서 1000N이 작용한다고 하지요)

K가 10N/mm일 경우, 1000N의 접촉력이 발생하려면 δ = 100mm이어야 합니다.

하지만 빨간 상자의 높이가 10mm일 경우, δ는 100mm가 될 수 없죠. 따라서 이 모델에서 파란 상자는 빨간 상자를 뚫고 아래로 떨어지게 됩니다.


example to show how to decide the stiffness in multibody dynamics contact











해결방법 1)

시뮬레이션을 해보면, 두 바디 간의 penetration이 과도한 경우가 발견이 되는데, 이 때는 대부분 외력이 지나치게 크게 작용하거나, K가 너무 작게 설정되어 있기 때문이라는 점, 기억해 주시기 바랍니다.

Penetration의 양을 더 줄이고 싶다면, K를 키우면 됩니다.

따라서 접촉하는 두 바디에 가해지는 힘의 크기를 대략 예측할 수 있다면, 시뮬레이션에 필요한 최소한의 K를 짐작할 수 있습니다. 만일 K = 100,000N/mm로 설정하면 δ=0.01mm일 때, 평형이 이루어 지겠지요.


상황 2)

수치해석은 이산화된 시간(discrete time)을 사용하여 계산을 하게 됩니다. 따라서 time step이 클 경우, 아래와 같이 두 바디 간에 접촉이 발생하지 않았다가, 바로 그 다음 스텝에서 과도한 penetration이 발생할 수 있습니다.

아래의 모델에서 t0의 경우, δ = 0이기에 파란 윗 상자에는 중력만이 작용하며, 결과적으로 윗 상자는 아래로 내려가게 됩니다.

만일 t1에서 갑자기 δ = 15가 발생할 경우, 아래에서 위로 가해지는 힘(접촉력)이 150이 되면서, 상자에는 윗방향으로 120의 힘 (150 - 30)이 작용합니다. 이로 인해, 윗 상자가 마치 하늘로 튕겨 올라가는 듯한 현상이 발생할 수 있습니다. (갑자기 아래에서 위로 큰 힘이 작용했기 때문에)

basics about multibody dynamics contact algorithm    


해결방법 2)

이 때는 penetration이 갑작스레 커지지 않도록, time step을 충분히 작게 해주면 됩니다. 그렇게 하기 위해서는 솔버 파라미터 중 maxImum time step 을 작게 해주면 됩니다.

좀 더 숙련된 사용자를 위한 파라미터로는 Contact parameter 페이지에 있는 Maximum Stepsize Factor 가 있습니다. 이 파라미터는 접촉이 예상되는 경우, time step을 주어진 값만큼 더 쪼개서 사용하게 됩니다.

예를 들면, 아래 우측의 다이얼로그에서는 Maximum Stepsize Factor = 10 으로 설정되어 있습니다.

이 경우, 접촉이 발생할 것으로 예상되면, time step을 1/10만큼 더 잘게 사용함으로써, 갑작스러운 접촉으로 인해 순간적으로 과도한 penetration이 발생하는 것을 방지합니다.

RecurDyn Contact parameter - max time step and max stepsize factor


상황3)

상황2와 거의 동일합니다. 다만 바디가 튕겨 나가지 않고, 아래로 빠져 버릴 수도 있습니다.

이는 RecurDyn에서 사용하는 Maximum Penetration이라는 파라미터 때문일 수 있습니다. 이 파라미터는 일정값 이상의 penetration이 발생할 경우, 접촉이 발생하지 않은 것으로 간주하게끔 하는 파라미터입니다.

즉, maximum penetration = 5 일 경우, t1에서 δ = 15이기에, 접촉이 발생하지 않은 것으로 처리되어 (15 > 5 이므로), 접촉력이 발생하지 않습니다.

결과적으로 아래 방향의 30이라는 힘만 박스에 작용하고, 박스는 아래로 떨어져 버릴 수 있습니다.

RecurDyn Contact parameter - Multi Body Dynamics max penetration


해결 방법 3)

이에 대한 해결방법은 상황2와 마찬가지로 step size를 작게 함으로써 갑자기 과도한 penetration이 발생하지 않도록 하면 됩니다.


* maximum penetration을 키워도 해결이 될 수 있겠지만, 대부분의 경우, 이 파라미터는 기본값을 그대로 쓰고, step size를 조절하는 것이 좋습니다. (penetration값은 작은 편이 더 정확한 결과라 할 수 있기때문이죠)


**Maximum penetration에 대해 더 알고 싶은 분은 이 글 을 참조해주세요.


접촉에 대해서 좀 더 자세히 알고 싶은 분은 아래의 팁들을 추가로 참고하시기 바랍니다.