MODELICA 기술 소개
Introduction to Modelica Technology
Modelica 기술 소개
Modelica는 단순한 수치해석 언어가 아니라,
복잡한 물리 시스템(기계, 전기, 열, 유체 등)의 모델링과 시뮬레이션을 위한 객체지향 방정식 기반 모델링 언어입니다.
특히 여러 분야의 시스템을 통합적으로 모델링 할 수 있는 멀티도메인 모델링에 적합하게 설계되었습니다.
Modelica 언어의 특징
선언적 언어
모델링을 구현하는 데 있어, 변수와 방정식 간의 관계를 수식(등식) 형태로 기술합니다.
해석 알고리즘을 사용자가 고민할 필요가 없다는 장점이 있습니다.
객체지향적 구조
클래스, 상속, 구성 등 객체지향 개념을 활용해 모델을 재사용하고 확장하기 쉬우며,
다른 상용 S/W (Amesim 등…)와 같이 Drag&Drop를 이용한 모델링이 가능합니다.
또한, 사용자가 원하는 별도의 독립 모델 개발 및 생성이 가능하며,
Connector를 통한 상호 연결을 이용한 통합 해석이 가능합니다.
멀티도메인 모델링
기계, 전기, 유압, 열, 제어 시스템 등을 하나의 모델에서 통합하여 다룰 수 있습니다
방정식 기반 시스템 모델 개발 및 사용자 환경에서 해석 Solver를 내장하여 지원
단순한 미분방정식(ODE) 뿐 아니라
대수-미분방정식(DAE), 이벤트 처리, 비선형 시스템도 다룰 수 있습니다.
Modelica에 대한 보다 자세한 설명은 시뮬레이션랩 대표가 Dassault Systems에 기고한 기고문[링크]을 참조하시면 됩니다
Understanding modeling techniques
모델링 기법 이해
Modelica는 모델링을 위해서 만들어진 언어이므로,
사용자가 해석하고자 하는 대상에 대해서 방정식만을 기술함으로써 쉽게 모델링 및 해석이 가능합니다.
모델링의 관점에서 예를 들면, 마찰이 없는 진자의 운동은 2개의 주요 방정식으로 표현이 가능한데,
Modelica에서는 equation 부분에 2개의 미분 방정식을 기술만 하면 바로 해석을 수행할 수 있다는 것입니다.
즉, 사용자는 ① Modelica 문법을 이해하고 이와 같은 ② 공학 지식에 기반한 편리한 기술 방식을 이용하면,
진자의 운동을 빠르고 쉽게 해석할 수 있다는 것입니다
공학에서 다루는 해석은 모두 대수/미분 방정식으로 구성이 되는데,
Modelica에서는 하기와 같이 대수/미분 방정식을 기술하는 것으로 모델링이 완료가 됩니다
Extensibility of Modelica
Modelica의 확장성
Modelica는 모델링 언어라서, 이를 바로 해석할 수는 없습니다.
그래서, 모델링후에 해석을 수행하면 Modelica 언어를 C언어로 내부적으로 자동 변환을 하며,
이 변환된 C언어 코드에 Compile 단계에서 Solver 라이브러리가 상호 링크되면서 해석이 진행됩니다.
C언어는 상당히 넓은 범위에서 사용이 되므로, Modelica가 C언어로 변환이 된다는 것은
다른 C언어 기반의 모듈과 상호 연결할 수 있다는 우수한 확장성을 갖게 됩니다.
수치해석 Solver와 사용자가 보유한 C언어 코드, Python, Matlab, AI 해석 모델들과의 상호 링크가 가능하게 되어 그 응용 분야를 확대할 수 있습니다.
시뮬레이션랩은 이와 관련된 다양한 확장 해석 기술력을 보유하고 있으며, 기업과의 과제에서 적용하고 있습니다.
Modelica Excellence
Modelica의 우수성
Modelica는 Connector라는 연결 Port가 존재하는데, 다양한 구성품을 상호 연결 시에 내부적으로 방정식들이 생성되는 기능을 제공합니다. 이를 통해 각 모델의 객체화를 구현할 수 있으며, 이는 사용자가 다양한 모델을 개발하여 연결할 수 있다는 장점이 있습니다.
보통의 모델링이나 함수 사용 시에는 입력이 주어지고 출력을 계산하는 인과 방식이지만, Modelica에선 입력값으로 출력값을,
출력값으로 입력값을 계산할 수 있는 비인과 방식을 사용하며, 이는 모델 개발에 상당한 유용성을 제공합니다.
Shorten model development period
모델 개발 기간 단축
Modelica 언어를 이용하는 경우에
사용자는 모델링과 방정식 구현에만 집중을 하고, Solver에 대한 구현을 하지 않으므로, 많은 개발 기간이 단축됩니다.
In-house code를 Modelica로 전환하는 경우에, Modelica의 표준 문법에 따라 모델링을 하므로,
기업 내부적으로 해석의 표준화가 가능하고, 상호 협업 및 업무 전달 및 교육이 용이하다는 장점이 있습니다
Convenience of applying formulas
수식 적용의 편리성
아래 그림의 상단에 위치한 대수관련 수식을 Modelica 코드로 표현하면 그림 왼쪽의 Modelica 수식과 같으며,
복잡해 보이는 수식도 Modelica에서 수식에 맞게 그대로 표현을 해주면 되는데, 어려운 표기법을 쓰는 것이 아닙니다.
또한, 추가로 미분 방정식이 있다면 이를 추가하여 사용자가 원하는 수치해석 모델을 구현할 수 있습니다.
하지만, 사용자에게 입력창만 제공하는 Black Box 형태의 S/W에서는 이런 기능이 상당히 제한적입니다.
복잡한 수식을 Modelica 코드로 변경한 예시
수식 적용의 예시로, 다음과 같이 복잡해 보이는 2차원 Transient 평판 열전도 해석 모델을 생성하는데 있어 Modelica는 단위 Cell에 대한 열전도 기본 수식 적용 및 Connector를 이용한 객체 모델을 구성하고 상호 연결을 통해서, 수식이 2차원 공간 미분으로 복잡해 보이나 쉽게 모델링을 할 수 있으며 해석이 가능합니다.
이런 모델을 직접 C/Fortran 언어 코딩을 하는 경우에, 차분화에 대한 전개 및 코딩과 Solver에 대한 알고리즘 적용등 많은 수고와 노력이 필요합니다.
하지만, Modelica에서는 원리적인 이해를 바탕으로 쉽게 모델링 가능하며, 해외에서 잘 사용하는 이유도 이런 장점 때문입니다.
2차원 Transient 평판 열전도 수식 및 개념도
2차 미분 방정식에 대한 2차원 Transient 해석 결과로 평판 주위의 온도 조건에 따라 평판내로 전달되는 에너지를 풀 수 있으며,
시간에 따른 온도의 변화를 해석하였습니다.
해석 결과를 Plot하는 것은 Python을 사용하여 구현하였습니다.
이상과 같이 Modelica는 제대로 배우면, 대수/미분 방정식을 이용한 모델링에 대한 구현이 편리하며 다양한 응용이 가능합니다.
2차원 Transient 평판 열전도 해석 결과 : 시간 변화에 따른 2차원 평판내의 온도 분포도 해석
2차원 Transient 평판 열전도 해석 결과 :
시간 변화에 따른 2차원 평판내의 온도 분포도 해석
Creating a convenient GUI
편리한 GUI 생성
Modelica에서는 다양한 입력창을 쉽게 생성할 수 있습니다.
다음 이미지는 Spring 모델에 대한 예시 코드입니다.
변수에 parameter 속성만 주면, 하기 그림의 오른쪽과 같이 새로운 입력 데이터 GUI가 쉽게 생성이 됩니다.
사용자는 모델 사용 시에 생성된 GUI에서 변수들의 값을 변경하면서, 다양한 해석을 쉽게 할 수 있습니다.
이는 해석 모델을 제 3자에게 배포 시에 Modelica를 몰라도 변수 변경이 직관적으로 가능하며, 쉽게 해석할 수 있다는 장점이 있습니다.
변수에 parameter 속성 추가로 입력 데이터 GUI가 자동 생성되는 예시
GUI 환경에서 치수변경에 따른 해석 결과 예시
Areas of Application
적용 분야
1) 열교환기 세부 해석 모델
단상 열전달 및 압력 손실 / 2상 열전달 및 압력 손실 해석
- FVM의 Staggered 기법을 적용하여 질량 보존, 에너지 보존, 운동량 보존 방정식을 해석
- 필요 시에, 이런 부분을 변경하여 빠르게 계산을 수행하게도 할 수 있음
다양한 상관식 모델 적용 가능
제어 적용 가능
2) 열유체 시스템 해석
3) 전기/전력 시스템 해석
저항, 인덕터, 커패시터, 전압원, 전류원
다이오드, 스위치, 트랜지스터 등 반도체 부품
DC/AC 모터, 발전기
전기 회로망 해석 및 전력 소비 계산
4) 자기장 시스템 해석
자기 회로 (Flux path)
철심, 공극, 자석 등 모델링
자기저항, 자속 밀도 해석
전자기 변환기, 솔레노이드, 변압기 등 설계
5) 강체 동역학 해석
3D 강체 운동: 위치, 회전, 속도, 가속도 계산
동역학적 수식을 원리에 따라 이해하고 적용
(시뮬레이션랩은 이런 구현 원리를 연구)
링크, 조인트(관절), 구속조건, 중력 등 포함
애니메이션 지원 (방정식과 시각화 동시 제공)
외력, 모멘트, 제어기 등 통합 가능
6) 제어 연동 해석
신호 기반 모델링
제어 시스템은 신호 흐름 기반(block diagram style)으로 구성
Simulink와 유사하지만 더 유연하고 구조적
다물리 모델과 통합 용이
제어기 + 전기/기계/유체 시스템을 한 모델에서 시뮬레이션 가능
실제 하드웨어 동작을 반영한 물리 기반 시뮬레이션 + 제어기 성능 분석
이산 & 연속 제어 가능
연속 시간 제어기 : PI, PID, 전달함수, 상태공간 등
이산 제어기 : 샘플링 시간, 히스테리시스, 지연 등 포함
Example of applying object modeling
객체 모델링 적용 예시
Modelica를 활용하면, 물리적 거동에 대한 지배방정식을 이용하여 각 구성품에 대한 객체 모델 생성이 가능하며, 연결을 통한 복합 해석이 가능합니다.
다음은 이에 대한 설명용으로 시뮬레이션랩이 간단히 만든 압축기의 세부 모델링에 대한 예시 및 활용 방법입니다
Integrated simulation and methodology
통합 해석 및 방법론
Dymola/Modelica 기반으로 다양한 시스템에 대한 창의적 연계 해석을 수행할 수 있습니다.
External Object의 Class 개념을 이용하여 다른 S/W 및 Python과 AI 모델과의 연동 해석이 가능
다른 회사(부서)와 또는 대학교 연구실과 FMU 모델을 상호 교환하며 연구 협업을 하는 경우 보안에 문제가 있을 수 있음
이에 대한 대비책으로 기술 보안을 위해서 특정 사람이 특정기간만 사용하도록 제한을 할 수 있는 보안/암호화된 FMU가 필요
시뮬레이션랩은 이 기술을 개발 및 보유하고 있음 (Dymola/Amesim에서 보안/암호화된 FMU 생성 가능)
3D CFD S/W인 Fluent/StarCCM+/OpenFoam 모델을 직접 연결하거나, ROM 모델인 FMU를 이용한 간접 연동 해석 가능
Modelica는 Source 코드기반의 장점이 있어, 특정 해석 모델에 대해서 별도로 Customized된 라이브러리 생성 및 C++ 코드를 이용한 시뮬레이션랩의 “Modelica Code 자동 생성 라이브러리 및 기술” 을 사용하면, Customization 절차를 걸쳐 자동화 해석 구현이 보다 쉽게 가능
Excel을 활용한 “FMI/FMU 해석 자동화” 구현을 통해 해석 및 다양하고 많은 FMU 모델들을 패키지화 하고 대량 배포가 가능함
Tool내에서 이 기능을 자체 지원함
Excel을 활용한 “Dymola/OpenModelica 해석 자동화”를 통해
해석 전문가 및 Dymola / Modelica 지식이 없는 비전문가 모두 쉽게 해석을 수행할 수 있음