modelica.co.kr

Modelica 한국어 자료실

예제로 배우는 Modelica의 개념, 문법, 물리 모델링 예제를 한곳에서 살펴보세요.

전체 문서 92주제 37이미지·도표 378

모델리카 정보

안녕하세요. 백영진, 하현수 입니다.

모델리카를 사용하는 사람이 많아졌으면 좋겠다는 생각으로 시작합니다. : D

처음 모델리카 언어를 배우기 시작할 때, 한글로 된 책이 있다면 진입장벽을 낮추는 데에 도움이 될 것 같아 아래 소개하는 책을 번역하고 있습니다. 번역이 많이 부족하지만 처음 공부하기에 원서 내용이 정말 좋습니다.

예제로 배우는 모델리카

“Michael M. Tiller. Ph.D”의 “Modelica by Example”이라는 모델리카 책 한 권을 한글로 변경하고 있습니다. 두 사람이 공동 작업으로 진행하고 있는데, 많은 분들의 도움이 필요한 상황입니다.

혹시 관심 있으시거나 함께하고 싶으신 분은 메일 주세요!

(Modelica.co.kr 대표 메일 : mail@modelica.co.kr)

전체 문서

확장된 커넥터(Expandable Connectors)

정의(Definition) 이 장의 온도 제어(Thermal Control) 예제에서 본 것처럼 아키텍처를 구축할 때 모든 중요한 구성을 다루는 인터페이스를 정의하기 어려울 수 있습니다. 이 경우 한 가지 옵션은 확장 가능한 커넥터를 사용하는 것입니다. 확장 가능한 커넥터는 expandable 한정자가 정의 앞에 추가된다…

설정 관리(Configuration Management)

replaceable 모델리카의 구성 관리 기능을 실제로 활성화하는 것은 replaceable 키워드입니다. 나중에 자료형이 변경(또는 “재선언”)될 수 있는 모델의 구성 요소를 식별하는 데 사용합니다. replaceable 에 대해 생각할 수 있는 한 가지 방법은 모델 개발자가 시작하기에 “공백”인 모델의 “슬롯”을 정…

인터페이스와 구현(Interfaces and Implementations)

컨셉 정의(Conceptual Definitions) 이 장에서 제시한 두 가지 예제에서 인터페이스 정의를 아키텍처 정의 프로세스의 일부로 사용했습니다. “인터페이스”라는 용어는 모델리카 자체에서 나온 것이 아니라 컴퓨터 언어에서 흔히 사용하는 용어입니다. 모델리카에서 인터페이스를 외부에서 볼 수 있는 모델의 모든 세부…

온도 제어(Thermal Control)

이 장에서는 플랜트, 컨트롤러, 센서 및 액추에이터를 포함하는 또 다른 시스템을 살펴 보겠습니다. 적용 분야는 3개의 구역을 가진 집의 열 제어입니다. 플랜트는 집 자체가 될 것이고 센서는 온도 센서가 될 것이며 액추에이터는 집 안의 보일러가 될 것입니다. 이러한 모델을 사용하여 몇 가지 제어 방법을 살펴보겠습니다. 또한…

아키텍처 드리븐 접근방법(Architecture Driven Approach)

지금까지 이 섹션에서는 플랫 접근 방식으로 시작하여 모델리카의 아키텍처 기능을 사용하도록 점진적으로 조정했습니다. 이제는, 먼저 시스템의 구조를 정의한 다음 특정 하위 시스템 구현을 추가하는 구조적 접근 방식을 사용하여 위에서 아래로 시스템을 구축해 보겠습니다. 인터페이스(Interfaces) 가지고 있는 하위 시스템과…

센서 비교(Sensor Comparison)

아키텍처에 대한 공부를 시작하기 위해, 이전 책 [Tiller2001]에서 제시한 예와 유사한 예제를 살펴보겠습니다. 이 예제에서는 여러 가지 다른 센서 모델을 사용하여 제어 시스템의 성능을 고려할 것입니다. 평형 시스템(Flat System) 시스템 설계도는 다음과 같이 구성되어 있습니다. 보라색 박스 안의 모든 구성…

아키텍처(Architectures)

이 책의 초반부에서는 방정식을 작성하고 이를 시뮬레이션으로 변환하는 방법을 살펴보았습니다. 이 과정 자체가 매우 흥미로웠는데, 그 이유는 결과적으로 생성된 선형 및 비선형 방정식 시스템을 어떻게 풀지, 또는 결과적인 미분 방정식을 어떻게 적분할지에 대해 걱정할 필요가 없었기 때문입니다. 그러나 개별 방정식으로 복잡한 시스…

전파(Propagation)

하위 시스템 모델을 구축할 때 하위 시스템이 파라미터를 포함하는 것이 매우 일반적이며, 이 파라미터는 해당 구성 요소로 전파되거나 종속됩니다. 예를 들어, 기본 회전 구성요소(Basic Rotational Components) 에 대한 논의에서 사용된 다음 시스템 모델을 살펴 보겠습니다. d 와 같은 구성 요소 파라미터의…

수정(Modifications)

이전에는 변수에 적용된 수정의 예를 보았으며, 경우에 따라 이러한 속성(Attributes) 사항은 내장 자료형의 속성에도 적용됩니다. 예 를 들어서 아래와 같은 경우를 보겠습니다. 다른 경우에는 특정 인스턴스에 대한 파라미터 값을 변경하기 위해 model 인스턴스에 적용했습니다. 그러나 그러한 수정이 단순히 한 수준보다…

구성요소의 배열(Arrays of Component)

이 장의 여러 예제에서는 구성 요소 배열을 사용했습니다. 공간적으로 분산된 열 전달(Spatially Distributed Heat Transfer) 및 진자의 하모닉 운동(Harmonic Motion of Pendulums) 둘 다에서 다루 었던것 처럼, 구성요소 배열은 사용자가 파라미터를 사용하여 구성요소의 수를 “스…

하위 시스템 인터페이스(Subsystem Interface)

이 장에서는 구성 요소 모델을 재사용 가능한 하위 시스템으로 구성하는 방법에 중점을 두었는데, 수많은 예제에서 보았듯이 나타나는 공통 패턴이 있습니다. 이 패턴을 더 잘 이해하기 위해 하위 시스템 모델의 다양한 측면을 검토해 보겠습니다. 파라미터(Parameters) 일반적으로 하위 시스템의 파라미터는 public 이어야…

진자의 하모닉 운동(Harmonic Motion of Pendulums)

이 섹션에서는 이전에 다루었던 진자와 관련하여 추가된 흥미로운 실험 [Berg] 을 다시 해보겠습니다. 서로 다른 고유 진동수를 가진 일련의 진자를 만든 다음, 모두 같은 위치에서 시작하면 진자가 서로 다른 진동수로 진동한다는 것을 알 수 있습니다. 그러나 시스템에서 에너지가 사라지게 되면 결국 초기 위치에서 모두 “재결…

공간적으로 분산된 열 전달(Spatially Distributed Heat Transfer)

재사용 가능한 하위 시스템을 만드는 약간 변형된 다음 예제를 소개합니다. 이 섹션에서는 이 장의 이전 예제에서와 같이 재사용 가능한 하위 시스템 모델을 만드는 방법을 보여줄 뿐만 아니라 해당 하위 시스템 모델은 해당 배열의 크기를 사용할 수 있는 구성 요소 인스턴스의 배열을 사용하여 결과의 공간 해상도를 제어하는 것을 보…

DC 전원 공급장치(DC Power Supply)

이 섹션에서는 모델리카에서 DC 전원 공급 장치 모델을 구현하는 방법을 살펴보겠습니다. 재사용 가능한 하위 시스템 모델을 사용하기 위해 플랫 시스템 모델을 리팩토링하는 방법을 다시 한 번 보여드리겠습니다. 수평적 전원 공급 모델(Flat Power Supply Model) 이 경우 플랫 시스템 모델은 여기에 표시된 DC…

이주가 있는 로트카-볼테라(Lotka-Volterra with Migration)

이 섹션에서는 이미 수행한 작업을 기반으로 재사용 가능한 구성 요소 모델을 구축하는 방법을 이해하기 위해 Lotka-Volterra 모델을 다시 한 번 다시 살펴보겠습니다. 그 다음 단계로 개별 지역에 대한 재사용 가능한 모델(각각 일반적인 인구 역학이 있음)을 만든 다음 이러한 지리적 지역을 마이그레이션(이주) 모델과…

기어 어셈블리(Gear Assembly)

이 섹션에서는 간단한 기어를 어떻게 모델링하는지 자세히 살펴보겠습니다. 각 기어 요소의 관성, 톱니 사이의 백래시, 그리고 두 회전 샤프트 간의 운동학적 관계 등을 고려할 것입니다. 먼저 이러한 어셈블리의 “플랫” 모델을 어떻게 생성하는지 예를 통해 보여드리고, 이후 이 플랫 모델을 다양한 응용 프로그램에서 사용할 수 있…

구성요소 모델 주석(Component Model Annotations)

이 장의 예제에 나타난 몇 가지 주석은 이전에 설명했습니다. 예를 들어 그래픽 주석(Graphical Annotations) 및 다이어그램(Diagrams) 에 대한 논의에서 다루었는데, 여기서는 아직 설명되지 않은 주석을 살펴보고 그 목적에 대해 논의해 보겠습니다. 기본 구성요소 이름(defaultComponentNam…

시스템 모델(System Models)

다음 장에서는 하위 시스템(Subsystems) 에 대한 심도 있는 논의를 하겠지만, 지금은 앞서 다룬 하위 시스템과 관련된 몇 가지 주제에 대해서만 먼저 논의 해보겠습니다. 연결(Connections) 이 장에서 구성 요소와 하위 시스템 모델 사이에서 본 한 가지 차이점은 하위 시스템 모델에는 connect 문이 포함된…

구성요소 모델(Component Models)

이 섹션에서는 구성 요소 모델이 이전에 만든 모델과 어떻게 다른지 요약합니다. 이 토론은 두 부분으로 나뉩니다. 첫 번째 부분은 비인과적 모델링과 그것이 보존 방정식을 자동으로 생성하고 실행하는 도식 기반, 구성 요소 지향 모델링을 위한 프레임워크를 제공하는 방법에 초점을 맞출 것입니다. 이 장의 주제인 두 번째 부분에서…

화학적 구성요소(Chemical Components)

구성 요소 지향 모델링의 마지막 예를 살펴 보기위해 벡터와 배열(Vectors and Arrays) 장에서 논의한 화학 시스템(Chemical System) 으로 돌아가겠습니다. 그러나 이번에는 다양한 효과에 대한 구성 요소 모델을 만들고, 모델리카의 연결이 자동으로 종 보존을 보장하는 방법을 보여줍니다. 종(Specie…

블록 다이어그램 구성요소(Block Diagram Components)

지금까지 이 장의 초점은 비인과적 모델링이었습니다. 그러나 모델리카는 인과 관계의 형식도 지원합니다. 비인과적 모델링을 강조하는 주된 이유는 그것이 물리적 시스템의 모델링에 매우 적합하기 때문입니다. 물리적 시스템의 모델을 수학적으로가 아니라 도식적으로 조립할 수 있으며 적절한 기록을 보장하기 위해 보존 방정식을 자동으로…

속도 측정 재검토(Speed Measurement Revisited)

속도 측정(Speed Measurement) 에서 다루었던 내용을 다시 생각해 보겠습니다. 이때는 재사용 가능한 구성 요소를 구축한다는 아이디어를 도입하기 전이 였습니다. 그 결과 다양한 속도 측정 기술과 관련된 방정식을 추가하는 것이 어색했습니다. 이 섹션에서는 해당 주제와 여기에서 논의된 모든 다양한 속도 추정 기술을…

로드카-볼테라 방정식 재검토(Lotka-Volterra Equations Revisited)

이 섹션에서는 첫 번째 장에서 논의한 로트카-볼테라 방정식(Lotka-Volterra Systems) 를 다시 다루지만, 이번에는 개별 구성 요소로 시스템 모델을 생성합니다. 첫 번째 장서 보여준 기능을 다시 생성하고, 모델에서 고려하는 부분을 확장하고 이러한 구성 요소 모델을 다른 역학을 보여주는 새로운 시스템 모델로…

고도화된 회전 구성요소(Advanced Rotational Components)

이전 기본 회전 구성요소(Basic Rotational Components) 섹션에서 회전 구성 요소에 대해 논의하고 기본 구성 요소에서 시스템 모델을 구축하는 방법을 보여주었습니다. 이 섹션에서는 백래시를 모델링할 때 사용할 이벤트 처리를 통합하는 방법을 보여줍니다. 또한 파라미터 값을 사용하여 구성 요소의 인터페이스에…

기본 회전 구성요소(Basic Rotational Components)

이 섹션에서는 1차원 회전 시스템을 모델링하기 위한 기본 구성 요소를 만드는 방법을 다루겠습니다. 이전에 다룬 것 처럼, 회전 커넥터를 바탕으로 기본 회전 구성 요소에 대한 인터페이스를 정의하고 시스템의 방정식 기반으로 동작을 복제하는 시스템 모델로 회전 구성 요소를 조립할 수 있는 방법을 보여주겠습니다. 구성요소 모델(…

전기 구성요소(Electrical Components)

이전 열 전달 도메인섹션에서 구성 요소 모델을 생성하는 방법에 대해 설명했습니다. 이제 몇 가지 기본 전기 구성 요소를 구성한 다음, 이를 사용하여 앞서 다룬 전기분야 예제(An Electrical Example) 에서 본 시스템과 같은 종류를 시뮬레이션하는 방법에 대해 살펴보겠습니다. 이 섹션에서는 기본 전기 부품 모델…

열 전달 구성 요소(Heat Transfer Components)

열 전달 영역에서 일부 구성 요소 모델을 만들어가면서 “구성 요소 모델”에 대한 논의를 시작하겠습니다. 이러한 모델을 사용하면 이전에 본 모델을 다시 만들어 볼 수 있지만, 이번에는 구성 요소 모델을 사용하여 각각에 대한 다양한 효과를 나타내겠습니다. 구성 요소 모델을 만드는 데 시간을 투자하면 기본 물리적 동작을 쉽게…

컴포넌트(Components)

대부분의 사람들이 모델리카를 생각할 때, 구성 요소 지향 접근 방식을 떠올립니다. 따라서 이러한 구성 요소 모델을 구축하는 방법은 이 책에서 다루어야 할 가장 중요한 주제일 것입니다. 지금까지 우리는 주로 수학적 동작(연속 및 이산)을 설명하는 방법에 초점을 맞췄습니다. 이제는 이러한 행동을 재사용 가능한 구성 요소 모델…

그래픽 주석(Graphical Annotations)

커넥터(Connectors) 를 지금 다루고 있지만, 여기서는 일반적인 모델 정의와 관련된 그래픽 주석을 다루겠습니다. 따라서 여기에 제시된 정보는 모델리카와 관련한 여러 부분에서 유용한 참고 자료가 될 것입니다. 그래픽 레이어(Graphical Layers) 모델리카 엔터티의 모양을 설명할 때 선택할 수 있는 두 가지…

커넥터 정의(Connector Definitions)

문법(Syntax) 이미 여러 번 보았듯이 모델리카 정의는 상당히 구문에서의 유사성을 보이고 있습니다. 이것은 connector 정의에서도 마찬가지입니다. 커넥터 정의의 일반 적인 구문은 다음과 같습니다. model 이나 function 과 달리 connector 는 어떤 동작도 포함할 수 없습니다. 따라서 connect…

그래픽 커넥터(Graphical Connectors)

문자 vs. 그래픽(Text vs. Graphics) 지금까지 모델리카를 순전히 텍스트 언어로 논의했습니다만, 현실적으로 봤을때 모델리카 모델이 주로 그래픽 방식으로 구성 됩니다. 지금부터 다루는 것들을 보면 복잡한 모델리카 모델을 시각화하는 방식에서 그래픽 적인 요소는 점점 더 큰 역할을 한다는 것을 알 수 있습니다.…

블록 커넥터(Block Connectors)

지금까지 제시된 커넥터는 모두 비인과적이었습니다. 즉, 통과 및 교차 변수의 쌍으로 구성됩니다. 이러한 커넥터는 물리적 상호 작용(구성 요소 간에 보존된 양이 교환되는 상호 작용)을 모델링하기 위한 기본적인 구조입니다. 그러나 모델리카에서 표현할 수 있는 다른 자료형의 상호 작용 및 모델링 형식이 있습니다. 블록 커넥터는…

유체 커넥터(Fluid Connectors)

모델리카가 널리 사용된 영역 중 하나는 다양한 자료형을 사용하는 유체 시스템 모델링입니다. 이전 섹션 간단한 영역(Simple Domains) 에서 다양한 커넥터를 만드는 방법을 살펴보았습니다. 그러나 유체 시스템에서 모델리카를 그토록 매력적으로 만드는 것은 여러 보존된 양을 동시에 포함하는 더 복잡한 커넥터를 만들 수…

간단한 영역(Simple Domains)

이 섹션에서는 비교적 간단한 엔지니어링 영역에 대해 설명합니다. 여기서 예를 드는 것들은 connector 가 하나의 통과 변수와 하나의 교차 변수만으로 구성된 것 인데, 개념적으로 이는 하나의 보존된 수량만 해당 커넥터와 관련됨을 의미합니다. 다음 표는 네 가지 엔지니어링 영역에 대해서 보여주고 있으며, 각 영역에서 해…

모델리카 표준 라이브러리(Modelica Standard Library)

모델리카에서 일반적으로 필요한 자료형, 모델, 기능 등 을 가져오고 단순히 참조하여 (반복하는 대신) 나중에 재사용할 수 있도록 하는것이 패키지의 장점입니다. 그러나 사용자가 필요한 일반적인 기능을 각자 자체 패키지로 반복 해서 생성하는 경우에 대한 문제가 있습니다. 이러한 이유로 모델리카 연합은 모델리카 표준 라이브러리…

가져오기(Importing)

이전에 살펴본 것처럼 기본적으로 가져오기에는 세 가지 형식이 있는데, 다른 곳에서 정의된 이름을 참조하는 모든 정의에 대해 import 문은 “별칭(alias)”을 만듭니다. 첫 번째 형식은 다음과 같이 정규화된 이름으로 정의를 가져오는 경우 입니다. 이러한 가져오기의 결과는 Temperature 이름에 대한 참조가 정규…

룩업 규칙(Lookup Rules)

컨텐츠 구성(Organizing Content) 에 대한 내용을 다룰 때의 다음 예제를 기억해 보겠습니다. 패키지 내용 참조(Referencing Package Contents) 에 대해 논의할 때 제시된 예제는 참조하는 모든 자료형에 대해 정규화된 이름을 사용했습니다. 그러나 위의 예제는 그렇지 않습니다. LotkaVo…

패키지 정의(Package Definitions)

기본 문법(Basic Syntax) 이 장에서 배운 것처럼 package 는 정의(다른 패키지의 정의 포함)를 구성할 수 있게 해주는 모델리카 엔터티입니다. package 의 구문 정의는 다음과 같으며, 다른 모델리카 정의와 공통점이 많습니다. 패키지 정의에는 encapsulated 한정자가 붙을 수 있습니다. (이부분은…

물리적 자료형 가져오기(Importing Physical Types)

이전 섹션에서 다른 패키지에 정의된 자료형을 참조하는 방법을 배웠습니다. 이렇게 하면 개발자가 로컬 모델에서 항목을 지속적으로 정의하지 않아도 되며, 패키지에 정의를 배치한 다음 해당 패키지를 참조할 수 있습니다. 그러나 정규화되어 있는 이름이 긴 참조는 반복해서 입력하기에 지루할 수 있습니다. 이러한 이유로 모델리카에는…

패키지 내용 참조(Referencing Package Contents)

이제 컨텐츠 구성(Organizing Content) 을 다루었으므로 다양한 패키지에서 해당 콘텐츠에 액세스하는 방법에 대해 설명하겠습니다. 다음 예를 살펴보겠습니다. 이전 섹션에서 배웠듯이 첫 번째 줄은 RLC 모델이 ModelicaByExample.PackageExamples 패키지에 포함되어 있음을 알려줍니다. 이전…

컨텐츠 구성(Organizing Content)

콘텐츠를 패키지로 구성하는 방법을 간단히 보여 주는 것으로 시작하겠습니다. 이를 위해 고전 로트카-볼테라(Classic Lotka-Volterra) 모델을 다시 살펴보겠습니다. 이전 모델에서 모든 변수는 Real 자료형을 가졌었는데, 다양한 수량에 대한 자료형을 포함하도록 해당 모델을 개선해 보겠습니다. 이러한 자료형을…

패키지(Packages)

지금까지 제대로 정리하는 방법에 대한 실질적인 논의 없이 모든 모델을 제시했습니다. 물리적 자료형 가져오기에 대한 논의에서 NewtonCoolingWithTypes의 예처럼 모든 것을 하나의 모델 내에 유지하는 것이 어색한 경우도 있습니다. 동일한 정보가 여러 모델에서 반복되는 경우가 많고, 이로 인해 해당 모델을 유지하…

함수 주석(Function Annotations)

이미 일반적인 주석에 대해 논의했지만, 함수와 함께 특히 많이 사용하는 여러 표준 주석을 다루어 보겠습니다. 이러한 주석의 의미는 모델리카 사양에 공식적으로 모두 정의되어 있습니다. 하지만, 이 섹션에서는 함수에 대한 주석의 세 가지 일반적인 범주에 대해 이야기를 하고 주석이 필요한 이유와 사용 방법에 대해 설명하고자 합…

외부 함수(External Functions)

외부(external) 보간(Interpolation) 관련 예제인 InterpolateExternalVector 함수에서 보았듯이 모델리카로 작성되지 않은 함수를 호출하는 것이 가능합니다. 일반적으로 이러한 함수는 C 또는 Fortran으로 작성 됩니다. 모델리카는 외부에서 구현된 함수를 algorithm 섹션에 포함하…

제어 흐름(Control Flow)

경우에 따라 함수는 단순히 고정된 단계별 계산의 집합으로 볼 수 있습니다. 그러나 다른 경우에는 어떤 종류의 반복문 또는 반복이 필요한데, 이 섹션에서는 함수 정의 내에서 허용하는 다양한 제어 구조를 다루 겠습니다. 분기(Branching) 이미 if 문 그리고 if 표현식과 관련된 사용 사례를 보았던것 처럼 내부 함수에…

함수 정의(Function Definitions)

이미 살펴본 것처럼 수학적 동작을 설명하는 데 유용한 많은 함수가 모델리카에는 포함되어 있지만, 필연적으로 특정 목적을 위해 새로운 기능을 생성했습니다. 이러한 함수를 정의하는 것은 문법적으로 모델의 정의(Model Definition) 와 유사합니다. 기본 문법(Basic Syntax) 기본 모델리카 함수에는 하나 이상…

비선형성(Non-Linearities)

다음 예제는 함수와 관련된 비선형 방정식 시스템을 풀 때 발생하는 문제를 해결하는 방법을 보여줍니다. 다음과 같은 간단한 수학적 관계를 포함하는 가벼운 모델부터 시작하겠습니다. $$y=2t^2+3t+1$$ where \(t\) is time. This model can be implemented in Modelica as…

software-in-the-Loop 제어기(Software-in-the-Loop Controller)

이전 보간(Interpolation) 예제에서 외부 C 함수를 사용하여 데이터를 관리하고 보간할 수 있음을 확인했으며, 이 섹션에서는 임베디드 컨트롤러용 C 코드를 모델리카 모델에 통합하는 방법을 살펴보겠습니다. (외부) 제어를 위한 동작 방법(strategies)을 통합하여 물리적 시스템의 수학적 모델을 모델리카로 구현…

보간(Interpolation)

이 장에서는 간단한 1차원 보간 방식을 구현하는 다양한 방법을 예로 들어 보겠습니다. 모델리카 만으로 작성된 방식으로 시작한 다음 모델리카와 C를 결합한 대체 방법으로 구현한 것을 살펴 보겠습니다. 그런 다음 각 접근 방식의 장점과 단점에 대해 설명합니다. 모델리카로 구현(Modelica Implementation) 함수…

다항식 해석(Polynomial Evaluation)

첫 번째 예제는 함수를 사용하여 다항식을 해석하는 데 중점을 둘 것입니다. 이 예제를 통해 함수 정의 및 사용의 기본 사항을 이해하겠습니다. 선분 계산하기(Computing a Line) 수치적 배경(Mathematical Background) 임의 순서의 다항식까지 들어가기 전에 먼저 함수를 사용하여 선(line)에서의…

함수(Functions)

이전 예제(특히 배열 함수(Array Functions) 에 대한 논의)에서 모델리카의 많은 내장 함수를 사용했습니다. 모델리카에는 많은 일반적인 계산을 위한 광범위한 함수 세트가 포함되어 있지만, 여전히 사용자는 자신의 함수를 정의할 수 있는 기능이 필요합니다. 그래서 함수 정의 프로세스를 이 섹션에서 다루겠습니다. 이…

반복문(Looping)

for 배열의 주요 용도 중 하나는 루프를 사용하여 코드를 단순화하는 것입니다. 몇 가지 기본 루프 구성을 소개하고 배열 기능과 함께 사용하는 방법을 보여줌으로써 배열에 대한 이 장에서의 소개를 마무리하겠습니다. 일반적으로 for 키워드는 반복문을 나타내는 데 사용되지만, for 가 사용될 수 있는 많은 다른 맥락이 있습…

배열 인덱싱(Array Indexing)

이 장에서 배열이 인덱싱되는 방법을 보여주는 많은 예제를 보았기 때문에, 배열을 인덱싱하는 방법을 논의하는 별도의 섹션이 필요하지 않은 것 같습니다. 일반적으로 각 첨자에 대해 정수 값을 사용하여 배열의 요소를 참조하는 것은 흔하지만, 어레이를 인덱싱하는 다른 방법이 충분히 있으므로 이에 대해 이야기하는 데 시간을 할애할…

배열 함수(Array Functions)

모델리카에는 배열과 관련된 많은 함수가 있습니다. 이 섹션에서는 함수의 다양한 범주를 살펴보고 사용 방법을 설명합니다. 배열 구성 함수(Array Construction Functions) 이미 앞에서 배열 구조(Array Construction) 에 대해 이야기했습니다. 벡터와 행렬을 구축하는 데 사용할 수 있는 다양한…

배열 구조(Array Construction)

이제 변수가 배열임을 선언하는 방법을 알았으므로 다음 단계는 해당 배열의 모든 요소를 채우는 것입니다. 모델리카에서 배열을 구성하는 방법에는 여러 가지가 있습니다. 리터럴(Literals) 벡터(Vectors) 배열을 구성하는 가장 간단한 방법은 각 개별 요소를 열거하는 것입니다. 예를 들어, 벡터를 나타내는 x 라는 변…

배열 선언(Array Declarations)

문법(Syntax) 배열을 선언하는 구문은 매우 간단합니다. 구문은 배열의 각 차원 크기를 지정하기 위해 변수 이름 뒤에 첨자가 와야 한다는 점을 제외하면 일반 변수 선언과 동일합니다. 배열 선언의 일반적인 형식은 다음과 같습니다. 여기서 VariableType 은 Real 또는 Integer 와 같은 모델리카 자료형이고…

화학 시스템(Chemical System)

이 섹션에서는 화학 시스템의 동작을 설명하는 몇 가지 다른 방법을 다루어 보겠습니다. 배열 기능을 사용하지 않고 모델을 만들고, 벡터를 사용하여 동일한 동작을 구현하겠습니다. 그리고, 마지막으로 열거형을 사용하여 동일한 모델을 다시 구현하겠습니다. 모든 예제에서 다음과 같은 반응 시스템 에 대한 모델을 구축할 것입니다.…

1차원 열전달(One-Dimensional Heat Transfer)

상태 공간(State Space) 에 대한 이전의 논의에서 행렬과 벡터를 소개할때의 초점은 주로 배열의 수학적 측면에 있었습니다. 이 섹션에서는 배열을 사용하여 물리적인 변수의 1차원 공간 분포를 나타내는 방법을 좀 더 살펴보겠습니다. 더불어, 배열과 관련된 모델리카의 여러 기능을 다루면서, 동작을 간결하게 표현할 수 있…

상태 공간(State Space)

ABCD 서식(ABCD Form) 상미분 방정식(Ordinary Differential Equations) 에서 다음 형식으로 미분 방정식을 표현할 수 있음을 다루었습니다. $$\begin{aligned}\dot{\overrightarrow{x}}(t)&=\overrightarrow{f}(\overrightarrow{x}…

When

when 을 사용하여 반응하고자 하는 조건과 그에 대한 반응으로 무엇을 하고 싶은지 표현할 수 있습니다. 이 섹션에서는 when 문 이 가지고 있는 핵심 아이디어를 살펴 보겠습니다. when 문은 다음과 같은 일반적인 형식을 갖습니다. if 와 when 비교(if vs. when) 히스테리시스(Hysteresis) 에 대…

If

매우 직관적인 내용이지만 if 문과 if 표현식에 대한 구문을 간략하게 검토할 필요가 있습니다. 설명하기 가장 간단한 if 표현식부터 살펴 보겠습니다. if 표현식의 형식은 다음과 같습니다. 여기서 cexpr 은 조건식(Boolean 값으로 판단함)이고 expr1 은 cexpr 이 true 로 판단되는 경우에 표현식이 가…

이벤트(Events)

기본 방정식(Basic Equations) 에 대한 첫 번째 장에서 연속 동작을 설명하는 방법에 대한 예를 보았습니다. 그 장에서 소개된 방정식은 항상 문제를 해결 할 수(applied) 있었고, 그 방정식에 대한 해는 항상 연속적이었습니다. 이 장에서는 이산 동작을 설명하기 위해 모델리카의 다양한 방법에 대해 논의했습니…

동기 시스템(Synchronous Systems)

모델리카 버전 3.3에서는 비결정적 이산 동작에 대한 문제를 해결하기 위해 새로운 기능이 도입되었습니다 [Elmqvist]. 이 섹션에서는 이러한 문제가 버전 3.3 이전에 어떻게 나타났는지에 대한 몇 가지 예를 제시하고 새로운 기능이 이전의 문제를 해결하는 데 어떻게 도움이 되는지 보여줍니다. 다음 모델을 살펴 보겠습니…

히스테리시스(Hysteresis)

이 섹션에서는 특정 유형의 모델링에 대해 이해해야 할 중요한 개념인 히스테리시스를 주제로 설명 하겠습니다. 이전에 논의 하였던 상태 이벤트 핸들링(State Event Handling) 에 대한 논의에서 채터링이 발생한 경우가 있었습니다. 이 경우 채터링은 순전히 수치적인 노이즈에 대한 응답이었고, 갑작스러운 동작의 변화…

속도 측정(Speed Measurement)

베이스라인 시스템(Baseline System) 연속 동작과 불연속 동작 간의 상호 작용을 모델링해야 하는 많은 응용 프로그램이 있습니다. 이 섹션에서는 회전 샤프트의 속도를 측정하는 데 사용하는 기술을 살펴보겠습니다. 이전에 기본 방정식에 대해 논의한 기계 예제 를 재사용할 것입니다. 모델에 extends 절을 추가하여…

RLC 회로의 스위치 동작(Switched RLC Circuit)

시간 이벤트를 포함하는 이 장의 앞부분 에서 제시한 열 전달 모델과 같은 형태의 다른 모델을 제시합니다. 첫번째 장에서 보인 하나의 예시 에 제시된 것과 같은 RLC 회로의 컨텍스트에서 스위치의 동작을 시뮬레이션할 수 있는 방법을 보여 주겠습니다. 지금까지 제시된 예제와 비교해 보면 이 모델의 어떤 것도 특별히 놀랄만한…

상태 이벤트 핸들링(State Event Handling)

이미 시간 이벤트 및 상태 이벤트 를 모두 소개하면서, 상태 이벤트와 관련된 몇 가지 중요한 까다로운 문제를 살펴 보았습니다. 놀랍게도 이러한 까다로운 문제들은 간단한 모델에서도 발생할 수 있습니다. 기본 부식 모델(Basic Decay Model) 다음과 같은 매우 자명한(trivial) 모델을 살펴 보겠습니다. 이 모…

튕기는 공(Bouncing Ball)

튕기는 공 모델링(Modeling a Bouncing Ball) 이전 예제 에서 이벤트가 시간과 어떻게 관련되는지 일부 확인했습니다. 이러한 소위 “시간 이벤트”는 이벤트의 한 유형일 뿐입니다. 이 섹션에서는 다른 유형의 이벤트인 상태 이벤트를 살펴보겠습니다. 상태 이벤트는 해의 궤적에 따라 달라지는 이벤트입니다. 이러한…

냉각에 대한 재논의(Cooling Revisited)

주변 조건 변경(Changing Ambient Conditions) 이번에는 시간 이벤트(time event)를 보여주는 간단한 예제부터 시작할 것입니다. 앞서 물리적 자료형(Physical Types) 섹션에서 소개한 열(thermal) 모델을 다시 살펴볼 것입니다. 그러나 이번 모델에는 시스템에 교란을 유발할 것입니다…

이산 동작(Discrete Behavior)

지금까지 모두 연속적인 성격의 예제를 다루었는데, 이는 시스템에 갑작스러운 교란이 발생하지 않았음을 의미합니다. 이 장에서는 “이산 동작”이라고 부르는 것을 어떻게 표현하는 지에 초점을 맞출 것입니다. 이러한 동작을 설명하기 위한 여러 엔지니어링 사례가 있으며, 다양한 예제를 통해 이를 살펴보겠습니다. 일반적으로 이산 동…

레코드 정의(Record Definitions)

앞에서 model 정의라는 내용을 소개했습니다. 아직 까지는 본 것이 없겠지만, 모델리카에는 record 자료형도 포함되어 있습니다. record 는 model 과 마찬가지로 변수를 가질 수 있지만 방정식을 포함할 수는 없습니다. 레코드는 주로 데이터를 함께 그룹화하는 데 사용합니다. 그러나 곧 보게 되겠지만 주석(Ann…

초기화(Initialization)

개요(Overview) 이전의 정상상태 초기화(Steady State Initialization) 논의에서 이미 다루었듯이, 거동은 모델에 포함된 방정식과 모델의 상태 변수에 주어진 초기 조건으로 표현됩니다. 모델리카에서 초기 조건은 일반 방정식(방정식 섹션에 있음)과 초기 방정식(초기 방정식 섹션에 있음)을 결합하여 계…

방정식(Equations)

아마도 방정식은 모델리카에 있어서 가장 중요한 수학적 요소 중 하나일 수 있습니다. 하지만, 가장 간단하게 설명할 수 있는 부분이기도 합니다. 기본 방정식(Basic Equations) 방정식을 설명하는 복잡한 의미론은 실제로 없습니다. 모든 방정식은 등호로 구분된 왼쪽 식과 오른쪽 식으로 구성됩니다. 즉, 아래와 같이…

변수(Variables)

이전 섹션에서 본 것처럼 모델 정의에는 일반적으로 변수 선언이 포함됩니다. 변수 선언의 기본 구문은 단순히 변수의 “자료형”(내장 자료형(Built-In Types) 섹션에서 곧 설명할 예정임) 뒤에 변수 이름을 선언 하는 것입니다. 예를 들면 아래와 같이 정의 합니다. 동일한 자료형을 공유하는 변수는 다음 구문을 사용하…

모델의 정의(Model Definition)

model에 대한 정의는 모델리카에서 가장 일반적인 유형의 정의입니다. 이 책의 뒷부분에서(심지어 이 장에서도) model 정의와 동일한 구문을 사용하지만 정의에 포함될 수 있는 항목이 제한되는 다른 유형의 정의(예: record 정의)를 소개할 것입니다. 모델 정의의 문법(Syntax of a Model Definiti…

로트카-볼테라 방정식(Lotka-Volterra Systems)

지금까지 열, 전기 및 기계 관련 예시를 살펴보았는데, 사실상 이것들은 모두 공학적 예시였습니다. 그러나 모델리카는 공학적인 분야에만 엄격하게 제한되어 사용하지 않았습니다. 이 점을 보완해서 보여주기 위해 이 섹션에서는 포식자와 피식자 종 간의 관계에 기반한 공통 생태계 역학 모델을 제시하겠습니다. 사용할 방정식은 [Lo…

기계 분야 예제(A Mechanical Example)

이 예제는 기계 시스템에 더 친숙한 경우 지금까지 다룬 개념 중 일부를 보강하는 데 도움이 될 수 있습니다. 다음 그림에 표시된 시스템이 모델링을 하려는 대상입니다. 도식적인 형태로 표현하면 이 모델이 가지고 있는 의도를 전달하는 것이 쉬워 질 수 있습니다. 적절한 그래픽 표현이 사용된다고 가정하면 전문가는 시스템의 구성…

전기분야 예제(An Electrical Example)

이제 엔지니어링 컨텍스트로 돌아가 보겠습니다. 전기 시스템에 더 익숙한 독자를 위해 다음 회로를 살펴 보겠습니다. Low-Pass RLC Filter \( V, i_L, i_R \) 및 \( i_C \) 에 대해 풀고 싶다고 가정합니다. 각 전류\( i_L, i_R \) 및 \( i_C \)의 각 전류를 풀기 위해 각각…

물리적인 이해(Getting Physical)

이전 섹션은 수학적 동작을 표현하는 것에 대해서 언급하며 시작했지만 물리적 동작에 대한 연결을 보여주지는 않았습니다. 이 섹션에서는, 물리적 동작을 모델링하여 표현하는 모델을 구축하는 방법을 살펴보겠습니다. 그 과정에서 이러한 모델을 물리적 및 엔지니어링 도메인에 연결할 뿐만 아니라 실수를 방지하는데 도움을 줄 수 있는…

주석(Annotations)

annotation 을 사용하여 시뮬레이션 시작 및 중지 시간에 대한 정보를 포함한 실험 조건에 대한 내용을 추가할 수 있습니다. annotation 은 모델의 동작과 관련되지 않은 정보를 포함하는 방법입니다. 실험 조건의 경우에는 특정 모델을 시뮬레이션하는 방법에 대한 정보를 추가 하는 용도로 사용하긴 했지만, 주석은…

간단한 1차 시스템(Simple First Order System)

아주 간단한 미분 방정식을 생각해 보겠습니다. $$\dot{x} = (1-x)$$ 방정식을 살펴보면 변수가 \( x \) 하나만 있는 것을 알 수 있습니다. 모델리카로 이 방정식을 표현하면 다음과 같습니다. 위 코드는 모델 정의의 시작을 나타내는 키워드 model로 시작합니다. model 키워드 다음에는 FirstOrde…

기본 방정식(Basic Equations)

서문(Preface)에서 언급했듯이, 모델리카에 대한 우리의 탐구는 기본적인 동작을 나타내는 방법을 이해하는 것에서 시작합니다. 이 장에서는 우선 기본적인 방정식의 작성법을 보여주는 것에 중점을 둘 것입니다. 예제(Examples) 리뷰(Review) 이 장의 첫 번째 부분에서는 예제를 통해 언어의 기능을 소개했습니다.…

헌정사(Dedication)

이 책은 킥스타터 프로젝트로 시작했습니다. 크리에이티브 커먼즈 라이선스 하에 책을 쓰고 자유롭게 이용할 수 있게 하자는 아이디어는 주로 Cory Doctorow와 Lawrence Lessig의 글에서 영감을 얻었습니다. 나눔에 대한 그들의 메시지는 저에게 매우 강하게 와닿았습니다. 저는 모델리카에 대한 지식을 활용하여 이…

소개(Introduction)

만약 어떤 이유에서인지 모델리카에 대해 전혀 알지 못한 채 이 책을 접하게 되었다면, 아마도 당신은 몇 가지 질문을 가질 수 있습니다. 이 질문들이 당신을 흥미롭게 하고 모델리카를 더 깊이 파고들게 하기를 바라며 이 질문들을 풀어보려 합니다. 모델리카란 무엇인가?(What is Modelica?) 모델리카는 수학적 행동(…

감사의 말(Acknowledgments)

이 책은 너무나 많은 강연과 책, 토론과 회의 등의 정점이기 때문에, 책에 영향을 미친 모든 사람에게 완전하게 감사의 표현을 하는 것(provide a full accounting)은 불가능합니다. 분명 제가 여기에서 언급하지 못한 사람들이 있고, 자신이 간과되었다고 생각하는 분들께 미리 사과드립니다. 기술 부분(Tech…

서문(Preface)

이 책은 조금 독특한 구성으로 만들어졌습니다. 하이퍼링크를 많이 사용했기 때문에 HTML 버전의 책을 읽게 될 대부분의 독자는 자신이 필요한 내용을 쉽게 탐색할 수 있습니다. 이러한 형태의 연결(하이퍼링크)은 eBook 버전 책의 수준이 높아지겠지만, 인쇄된 책으로는 잘 옮겨지지 않을 것입니다. 그렇지만 지원할 수 있는…

Modelica by Example

예제로 배우는 모델리카 저자 : Michael M. Tiller. Ph.D 저자 홈페이지 : https://mbe.modelica.university/ 옮긴 사람 : 백영진(Baek Youngjin, mail@modelica.co.kr) 하현수(Ha HyeonSu, iloveyou934671@gmail.com) ** 오역…

모델리카 정보

안녕하세요. 백영진, 하현수 입니다. 모델리카를 사용하는 사람이 많아졌으면 좋겠다는 생각으로 시작합니다. : D 처음 모델리카 언어를 배우기 시작할 때, 한글로 된 책이 있다면 진입장벽을 낮추는 데에 도움이 될 것 같아 아래 소개하는 책을 번역하고 있습니다. 번역이 많이 부족하지만 처음 공부하기에 원서 내용이 정말 좋습니…