NOMO.asia

서론

리커다인(Recurdyn)이나 다풀(DAFUL)같은 동역학 해석 프로그램에서 모달 바디(Modal FE body, Modal Flex body) 를 이용한 해석을 진행하다보면 정적 수정 모드(Static correction mode) 라는 옵션을 볼 수 있다. 매뉴얼을 찾아보면, 모달 바디로 고려할 바디의 특정 노드들에 구속 조건이나 외력이 연결되는 경우, 모드 해석 전 각 바디의 노드셋(Node Set)에 해당 옵션이 사용하도록 체크 되어있어야 한다고 적혀있다. 이렇게 체크하면 모드 해석의 결과에 옵션을 적용한 각 노드셋당 6개의 모드가 추가로 도출된다.


Reference: DAFUL Preprocessor Manual 6.2


왜 이 옵션을 사용하여야 하는지에 대한 근본적인 이유가 궁금해져서, 여러곳에서 주워들은 지식과 웹서핑을 통해 간단히 정리해보고자 한다. 잘못된 부분이 있을 수 있으니 수정이 필요한 부분이 있다면 댓글을 남겨주었으면 한다.



모달 바디에 대한 간단 설명

전부 설명하면 내용이 너무 길어지므로, Static correction mode 를 이해하는데 도움이 되는 부분만 간단히 설명하고자 한다.

Modal body는 어떠한 body를 변형이 가능한 유연체(Flexible body)로 고려하기 위하여 사용되는 body의 타입 중 하나이다. 해당 body 에 대하여 모드 해석(Mode Analysis or Body Eigenvalue Analysis) 를 먼저 진행하여 특정한 개수 만큼의 저차 모드를 도출한 뒤, 모드 중첩법을 통해 변형을 표현한다.


Modal body를 사용하면 구조물에 주요한 Global 변형을 발생시키는 소수의 저차 모드만으로 (일반적으로 20개 정도 구한다) 변형을 표현하게 된다. 즉 body 를 구성하는 모든 노드에 의한 자유도가 아니라 시스템의 고유한 변형 양상을 나타내는 모드 개수만큼의 자유도로 해당 바디의 변형을 표현할 수 있게 된다. 따라서 모드 개수만큼의 운동방정식이 세워지게 되므로, 모드 해석 시간과 해당 모드를 body에 적용하기 위한 추가적인 모델링 과정등이 필요로되기는 하지만 결과적으로 총 해석시간은 감소한다. 요약하면 물체의 변형을 저자유도로 표현하기 위한 대표적인 방법 중 하나이다.



모달 바디에 구속 조건이나 외력 등이 연결되는 경우 문제점

Modal Body의 특정 위치에 하중이 인가되거나 구속 조건이 연결되는 경우에는 국부적인(Local) 변형이 발생할 수 있다. 해당 Local 변형을 표현하기 위한 모드는 일반적으로 고차 모드이므로 저차 모드만으로는 표현이 어려울 수 있다. 따라서 저차모드만 사용하여 구조 동역학 해석을 진행하면 정확한 결과를 얻을 수 없게 된다.


만약 이러한 경우에도 모달 중첩법을 통해 정확한 해석 결과를 얻길 원한다면, 단순히 해당 위치에 로컬 변형을 표현할 수 있는 고차 모드까지 모두 고려하면 되지 않겠냐고 생각할 수도 있다. 이 경우 해당 고차 모드가 몇차 모드인지는 당연히 알 수 없으므로 모드 해석을 통해 많은 개수의 모드를 얻어야 하는데, 고차 모드까지 모두 사용하는경우 모드 해석 시간 자체도 길어지지만 해석을 통해 얻은 모든 모드를 사용한다면 자유도가 많아지므로 구조동역학 해석 시간이 길어지게 된다.


고차 모드까지 다 나오도록 모드 해석을 한 뒤, 각 모드 형상을 보고 특정 위치의 로컬 변형을 발생시킬 수 있는 고차 모드만을 고르고 나머지 고차 모드는 제외하여 자유도로 고려하지 않으면 실제 구조동역학 해석 시 자유도를 줄일 수 있겠지만 이와 같은 것은 사실상 불가능하다. 이유는 로컬 변형이 어느 특정한 하나의 고차 모드에서 나타나는 것이 아니라 여러 모드가 중첩되어 나타나는 것이기 때문이다.



정적 수정법(Static correction method)

모달 바디에 구속 조건이나 하중 등이 연결되는 경우, 고차 모드를 사용하지 않을 때 발생할 수 있는 결과 차이를 보상하기 위한 자유도(모드)를 추가할 수 있는데, 이러한 방법 중 하나가 바로 정적 수정법(Static correction method) 이다.


추가되는 자유도(모드)는 일종의 정적 해석과 같은 과정을 통하여, 구속 조건 등이 연결될 특정 노드들에 단위 변형을 가했을 때의 구해진 반력과 노드 변위의 관계로부터 구한다(는듯 하다). 이후 얻은 결과를 정규 직교하도록(orthonormal) 변형하여 모달 해석 시 특정 위치의 로컬 변형을 나타내기 위한 모드로 사용할 수 있다.


요약하면, 모든 위치의 로컬 변형은 반영할 수 없지만 특정 위치의 로컬 변형은 반영할 수 있다. 그리고 이를 위해 추가되는 자유도는 많지 않다는 것이 핵심이다. 그리고 정적 수정 모드를 구하는 방법은, 나는 어떠한 시스템의 강성을 구하기 위한 퍼터베이션 방법처럼, 정적 해석을 통해 시스템의 특정 위치에 임의의 변위를 가했을 때의 반력으로부터 강성을 구하는 방법과 유사한 방법이라고 이해했다.



실제 해석으로 테스트 해보기

- 테스트 모델 제작



Automesh로 100x10x10 mm^3 짜리 테스트 모델을 만들었다.


- Body Eigenvalue 해석 1 : Normal and Static Correction Mode without RBE



DAFUL 에서 모드 해석(Body Eigenvalue Analysis)을 진행하는 과정에서 위와 같은 설정을 볼 수 있는데, Type of Mode Analysis 부분에 Normal Mode 를 구할 것인지 Static Correction Mode 를 구할 것인지 고르는 설정이 있다.



추가적인 모델링 없이 해석을 진행한 결과는 위와 같다(다른 결과와 비교하기 위해서 결과를 첨부하였다). 구속 조건이 연결될 것이라고 모델링을 진행한 것이 없으므로, Normal Mode 를 선택하든 Static Correction Mode 를 선택하든 동일한 해석 결과가 나온다.


- Body Eigenvalue 해석 2 : Normal and Static Correction Mode with RBE


구속 조건이 연결될 부분에 대하여 추가 모드(Static Correction Mode)를 얻길 원하는 경우, RBE(Rigid Body Element)로 선언해준 뒤 Use in Static Correction Mode 옵션을 사용해야 한다.


일부 노드들을 선택하여 NodeSet 을 만든 뒤, RBE로 선언해주면 해당 영역은 이름처럼 Rigid 영역으로 취급되어 변형하지 않는 영역이 된다. 일단 Static Correction Mode 를 구하기 전에 RBE를 정의하는 것이 모드에 어떤 영향을 미치는지 보기 위해서, Nodeset 을 만들고 RBE 로 만들어주기 위해 Treat RBE 를 체크하였지만 Use in Static Correction Mode 에는 체크하지 않은 것을 대상으로 해석을 진행하였다.




이 경우 모드 해석을 진행하면 Normal Mode 와 Static Correction Mode 두 경우에 아래와 같은 동일한 결과를 얻을 수 있다.



Use in Static Correction Mode 에 체크를 하지 않았기 때문에 해석 설정에서 Normal Mode 를 선택하든 Static Correction Mode 를 선택하든 Normal Mode 만 구해지게 된다. 처음 결과와 값이 약간 다르게 나왔는데, 이유는 RBE 로 만들어진 부분이 Rigid 영역으로 취급되어 변형하지 않기 때문이다.


참고로 Treat RBE를 체크하지 않고 Nodeset만 만든채로 해석하면 해당 영역이 모드 해석 시에 Rigid 영역으로 취급되지 않기 때문에, 처음에 얻은 결과, 아무것도 모델링 하지 않았을 때와 같은 결과가 나온다. 다만 Dynamic 해석을 진행할 때, RBE로 설정하지 않은 Nodeset 에 Constraints 또는 Forces 가 연결되면 해당 Nodeset은 Rigid 영역으로 취급되기는 한다. 하지만 예외가 있는데, Concentrated load 의 경우 Nodeset 영역을 Rigid 영역으로 만들지 않는다. 따라서 모드 해석 하는 시점에서는 해당 Nodeset 에 Concentrated load 가 달릴지, 아니면 다른 구속 조건이나 힘이 달릴지 알 수 없으므로 명시적으로 RBE 라고 선택하지 않으면 Rigid 영역으로 취급하지 않는 듯하다.


- Body Eigenvalue 해석 3 : Static Correction Mode with RBE (+Use in Static Correction Mode)



 


각각의 RBE에 Use in Static Correction Mode 를 체크하고 Static Correction Mode 를 얻으면 아래와 같은 결과를 얻으며, RBE 하나당 6개의 모드가 추가로 도출된다.



Static Correction Mode 로 구해진 모드 중 마지막 것을 확인해보면 아래 그림과 같다.





참고로 Static correction mode 를 얻기 위해서는 RBE가 두 개 이상 존재해야한다. 만약 RBE가 하나만 있는 경우, 아래와 같은 메시지가 찍힌다.



왜 RBE가 꼭 두 개 이상 존재해야 할까? 이유는 앞에서 Static Correction Mode를 구할 때 구속 조건이 연결될 부분을 단위 길이만큼 변형시킨 결과로부터 모드 형상을 구한다고 하였다. 그리고 그 구속 조건이 연결될 부분은 RBE를 의미한다. 그런데 RBE가 하나뿐이고 그 RBE를 단순히 단위 길이만큼 변형하면, 나머지 노드은 해당 RBE를 따라 Rigid Motion을 하게 될 것이다.


따라서 Static Correction Mode를 구할 때는 단위 변형하는 RBE를 제외한 나머지 RBE는 자유도를 구속하여 고정한 상태로 모드형상을 구하게 된다고 한다.

(A constraint mode shape is the static deflection induced in the structure by applying a unit displacement to one interface DOF while all of the other interface DOF are held? fixed. - Matthew Castanier, Yung-Chang Tan, Christophe Pierre, Characteristic Constraint Modes for Component Mode Synthesis, https://hal.archives-ouvertes.fr/hal-01537673/document)


Use in Static Correction Mode 옵션 없이 Treat RBE 만 쓰는 경우는 어떤 경우?

어떠한 영역을 강체로는 취급하고 싶지만, 해당 영역에 큰 하중이 인가될 일이 없어 Static Correction Mode 를 굳이 구할 필요가 없는 경우에 사용된다.

예를 들어보면, 하나의 Mesh file 안에 Part 가 두 개로 분리되어 있고 Node가 공유되어 있지 않은 경우, Part 결합의 목적으로 RBE 를 사용할 수 있다. 해당 RBE 영역에 별도로 하중을 가하거나 구속 조건을 연결할 일이 없다면, 추가적인 모드를 구할 필요는 없다.

또는 어떠한 영역이 매우 Stiff 해서 강체 처럼 동작할 경우에 해당 영역의 노드들을 RBE로 정의하여 변형하지 않게 하는데 쓰인다.



그 외에는?

위와 같은 방식과 유사하게 구속 조건에 의한 모드를 도출하여 추가 자유도로 고려하는 방법을 부분구조합성법(Component Mode Synthesis, CMS) 라고도 부르는 듯하다(모드 중첩법과 CMS를 명확히 구분하기도 한다). 위와 같은 과정으로 구해지는 모드는 정적 구속 모드(Static constraint mode) 또는 구속 모드(Constraint mode) 라고도 불린다.


리커다인의 개발사인 펑션베이의 홈페이지에서 Static correction mode에 대한 간단한 수식적인 설명을 볼 수 있지만, 충분하지는 않다.

http://www.functionbay.co.kr/documentation/onlinehelp/default.htm#!Documents/staticcorrectionmode.htm


ADAMS 에서는 구속 모드(Constraint Mode) 라는 용어를 사용하며, Craig-Bampton Method 를 사용한다고 Adams Flex Help 문서에 명시되어 있다. 해당 문서는 MSC Software 홈페이지의 Docs > Adams Docs 에서 다운로드 받을 수 있으며, 2018년 4월 기준으로는 아래의 링크에서 찾으면 된다. 수식적인 전개도 포함되어 있으니 나중에 공부할 때 보면 좋을 듯하다.

https://simcompanion.mscsoftware.com/infocenter/index?page=content&cat=1VMO50&channel=DOCUMENTATION


1968년에 발표된 Craig-Bampton Method 에 대한 논문은 MSC korea 공식 블로그에서 다운로드 받을 수 있다.

https://blog.naver.com/mscsoftware/220298878831


해당 모드를 도출하기 위한 관련 수식은 지금 간단히 봐서는 이해가 안 되고, 직접 손으로 풀어보던지 코드를 해보아야 이해가 될 것 같아서 본 포스트에는 싣지 않았다. 일단 Constraint Mode를 구하는 것 보다는, Lanczos method 등으로 원하는 개수만큼의 저차 Normal mode 를 구하는 것도 아직 제대로 코드해본적이 없기 때문에, 해당 방법을 공부하는게 먼저일 것 같다.