Found an issue with the book? Report it on Github.
모델리카에서 일반적으로 필요한 자료형, 모델, 기능 등 을 가져오고 단순히 참조하여 (반복하는 대신) 나중에 재사용할 수 있도록 하는것이 패키지의 장점입니다.그러나 사용자가 필요한 일반적인 기능을 각자 자체 패키지로 반복 해서 생성하는 경우에 대한 문제가 있습니다.이러한 이유로 모델리카 연합은 모델리카 표준 라이브러리(Modelica Standard Library)라는 패키지를 유지 관리합니다. 이 라이브러리에는 과학자와 엔지니어에게 일반적으로 유용한 정의가 포함되어 있습니다.
이 섹션에서는 독자가 이 라이브러리에서 무엇을 찾고 활용할 수 있는지 알 수 있도록, 모델리카 표준 라이브러리에 대한 개요를 설명 하겠습니다.전체를 둘러 보기위한 것이 아니고, 모델리카 표준 라이브러리가 지속적으로 업데이트되고 개선되기 때문에 라이브러리의 최신 버전이 반영되지 않을 수 있습니다.그러나 기본 사항을 다루고 유용한 정의를 찾는 방법에 대한 이해를 제공하기를 위해 살펴 보는 것 입니다.
모델리카 표준 라이브러리에는 몇 가지 일반적인 물리 및 기계 상수에 대한 정의가 포함되어 있습니다.상수 관련 라이브러리는 이 패키지의 소스 코드를 직접 여기에 표현할 수 있을 만큼 작은 규모 입니다.다음은 모델리카 표준 라이브러리 버전 3.2.2의 Modelica.Constants
패키지(몇 가지 외형적 변경 포함)를 나타냅니다.
within Modelica;
package Constants
"Library of mathematical constants and constants of nature (e.g., pi, eps, R, sigma)"
import SI = Modelica.SIunits;
import NonSI = Modelica.SIunits.Conversions.NonSIunits;
// Mathematical constants
final constant Real e=Modelica.Math.exp(1.0);
final constant Real pi=2*Modelica.Math.asin(1.0); // 3.14159265358979;
final constant Real D2R=pi/180 "Degree to Radian";
final constant Real R2D=180/pi "Radian to Degree";
final constant Real gamma=0.57721566490153286060
"see http://en.wikipedia.org/wiki/Euler_constant";
// Machine dependent constants
final constant Real eps=ModelicaServices.Machine.eps
"Biggest number such that 1.0 + eps = 1.0";
final constant Real small=ModelicaServices.Machine.small
"Smallest number such that small and -small are representable on the machine";
final constant Real inf=ModelicaServices.Machine.inf
"Biggest Real number such that inf and -inf are representable on the machine";
final constant Integer Integer_inf=ModelicaServices.Machine.Integer_inf
"Biggest Integer number such that Integer_inf and -Integer_inf are representable on the machine";
// Constants of nature
// (name, value, description from http://physics.nist.gov/cuu/Constants/)
final constant SI.Velocity c=299792458 "Speed of light in vacuum";
final constant SI.Acceleration g_n=9.80665
"Standard acceleration of gravity on earth";
final constant Real G(final unit="m3/(kg.s2)") = 6.67408e-11
"Newtonian constant of gravitation";
final constant SI.FaradayConstant F = 9.648533289e4 "Faraday constant, C/mol";
final constant Real h(final unit="J.s") = 6.626070040e-34 "Planck constant";
final constant Real k(final unit="J/K") = 1.38064852e-23 "Boltzmann constant";
final constant Real R(final unit="J/(mol.K)") = 8.3144598 "Molar gas constant";
final constant Real sigma(final unit="W/(m2.K4)") = 5.670367e-8
"Stefan-Boltzmann constant";
final constant Real N_A(final unit="1/mol") = 6.022140857e23
"Avogadro constant";
final constant Real mue_0(final unit="N/A2") = 4*pi*1.e-7 "Magnetic constant";
final constant Real epsilon_0(final unit="F/m") = 1/(mue_0*c*c)
"Electric constant";
final constant NonSI.Temperature_degC T_zero=-273.15
"Absolute zero temperature";
Noteworthy definitions are those for pi
, e
, g_n
and
eps
.
여기서 주목할 만한 정의는 pi
, e
, g_n
및 eps
에 대한 정의입니다.처음 두 pi
와 e
는 각각 와 를 나타내는 수학 상수입니다. 이러한 상수를 사용할 수 있으면 이러한 상수에 대한 고유한 숫자 값을 (비합리적으로) 사용자가 제공할 필요가 없을 뿐만 아니라,모델리카 표준 라이브러리에 정의된 버전을 사용하여 가능한 가장 높은 정밀도를 가진 값을 얻을 수 있습니다.
다음 상수인 g_n
은 지구상의 중력 상수를 나타내는 물리 상수입니다(위치 에너지와 같은 것을 계산하기 위한 것, 즉, ).
마지막으로 eps
는 어떤 컴퓨팅 플랫폼이 사용되든 "작은 숫자"를 나타내는 기계 상수입니다.
앞에서 설명한 것처럼 단위를 사용하면, 구체적인 단위를 파라미터 및 변수와 연결하여 코드를 더 쉽게 이해할 수 있을 뿐만 아니라 모델리카 컴파일러에서 단위의 일관성 검사를 수행할 수도 있습니다. 이러한 이유로 가능할 때마다 물리적 자료형을 파라미터 및 변수와 연관시키는 것이 매우 유용합니다.
Modelica.SIunits
패키지는 드물게 사용하는 물리적 단위도 포함하여 매우 광범위하게 구성되어 있습니다. ISO 31-1992
사양을 완벽하게 준수하기 위해 많은 것을 내포하고 있습니다.다음은 SIunits
패키지에서 일반적인 물리 단위가 정의되는 방법의 예 입니다.
type Length = Real (final quantity="Length", final unit="m");
type Radius = Length(min=0);
...
type Velocity = Real (final quantity="Velocity", final unit="m/s");
type AngularVelocity = Real(final quantity="AngularVelocity",
final unit="rad/s");
...
type Mass = Real(quantity="Mass", final unit="kg", min=0);
type Density = Real(final quantity="Density", final unit="kg/m3",
displayUnit="g/cm3", min=0.0);
type MomentOfInertia = Real(final quantity="MomentOfInertia",
final unit="kg.m2");
...
type Pressure = Real(final quantity="Pressure", final unit="Pa",
displayUnit="bar");
...
type ThermodynamicTemperature = Real(
final quantity="ThermodynamicTemperature",
final unit="K",
min = 0.0,
start = 288.15,
nominal = 300,
displayUnit="degC")
"Absolute temperature (use type TemperatureDifference for relative temperatures)";
type Temperature = ThermodynamicTemperature;
type TemperatureDifference = Real(final quantity="ThermodynamicTemperature",
final unit="K");
"모델리카 표준 라이브러리" 내부에는 다양한 도메인별 라이브러리가 포함되어 있습니다. 이 섹션에서는 이러한 도메인에 대한 개요를 살펴보고, 각 모델의 구성 방식에 대해 설명합니다.
모델리카 표준 라이브러리에는 인과 관계의 블록 다이어그램을 구축하기 위한 모델에 대한 모음이 포함되어 있습니다. 이 모델은 Modelica.Blocks
패키지에 있으며, 여기서 찾을 수 있는 구성 요소의 예제는 다음과 같습니다.:
입력 커넥터(
Real
,Integer
및Boolean
)출력 커넥터(
Real
,Integer
및Boolean
)게인 블록, 합산 블록 , 외적(product) 블록
적분 및 미분 블록
Deadband 및 히스테리시스 블록
논리 및 관계 연산 블록
Mux 및 demux 블록
Blocks
패키지에는 신호에 대한 작업을 수행하기 위한 다양한 블록이 포함되어 있습니다.이러한 블록은 일반적으로 제어 시스템 및 전략의 기능을 설명하는 데 사용합니다.
Modelica.Electrical
패키지에는 특별히 아날로그, 디지털 및 다상 전기 시스템과 관련된 모델과 기본 전기기기(electrical machines) 라이브러리도 포함합니다.이 라이브러리는 다음과 같은 구성 요소가 있습니다.:
저항기, 커패시터, 인덕터
전압 및 전류 액추에이터
전압 및 전류 센서
트랜지스터 및 기타 반도체 관련 모델
다이오드 및 스위치
논리 게이트
스타 및 델타 연결(다상)
동기 및 비동기 기계
모터 모델(DC , 영구 자석, 기타)
Spice3 모델
Modelica.Mechanics
라이브러리에는 세 가지 주요 라이브러리가 포함되어 있습니다.
Translational
)¶병진 라이브러리에는 1차원 변환 동작을 모델링하는 구성 요소 모델이 포함되어 있습니다. 이 라이브러리에는 다음과 같은 구성 요소가 포함되어 있습니다.
스프링, 댐퍼 및 백래시
질량
센서 및 액추에이터
마찰
Rotational
)¶회전 라이브러리에는 1차원 회전 동작을 모델링하는 구성 요소 모델이 포함되어 있습니다. 이 라이브러리에는 다음과 같은 구성 요소가 포함되어 있습니다.
스프링, 댐퍼 및 백래시
관성
클러치 및 브레이크
기어
센서 및 액추에이터
MultiBody
)¶다물체 라이브러리에는 3차원 기계 시스템을 모델링하는 구성 요소 모델이 포함되어 있습니다. 이 라이브러리에는 다음과 같은 구성 요소가 포함되어 있습니다.
바디(관련 관성 텐서 및 3D CAD 형상 포함)
조인트(예: 각기둥, 회전, 범용)
센서 및 액추에이터
모델리카 표준 라이브러리에는 유체 시스템 모델링과 관련된 두 가지 패키지가 있습니다.첫 번째는 다음과 같은 다양한 물질(media)에 대한 속성 모델 라이브러리인 Modelica.Media
입니다.
이상 기체(NASA 글렌 계수 데이터 기준)
공기(건조, 기준, 습윤)
물(단순, 염, 2상)
일반 비압축성 유체
R134a(테트라플루오로에탄) 냉
이러한 속성 모델은 다양한 순수 유체 및 혼합물에 대한 엔탈피, 밀도 및 비열비와 같은 유체 속성을 계산하는 기능을 제공합니다.
중간 모델 외에도 모델리카 표준 라이브러리에는 유체 장치를 표현하는 구성 요소 라이브러리인 Modelica.Fluid
라이브러리도 포함되어 있습니다.예를 들면 다음과 같습니다.
체적, 탱크 및 접합부
파이프
펌프
밸브
압력 손실
열 교환기
소스 및 주변 조건
Modelica.Magnetic
라이브러리에는 두 개의 하위 패키지가 포함되어 있습니다. 첫 번째는 자기 구성 요소의 집중 네트워크 모델을 구성하는 데 사용하는 FluxTubes
패키지입니다.여기에는 센서 및 액추에이터뿐만 아니라 기본 원통형 및 프리즘 형상의 자기 특성을 나타내는 구성 요소가 포함됩니다. 다른 하나는 회전하는 전기 기계의 전기장을 모델링하는 데 사용하는 FundamentalWave
라이브러리입니다.
Modelica.Thermal
패키지에는 두 개의 하위 패키지가 있습니다.
HeatTransfer
)¶HeatTransfer
는 덩어리로된 고체의 열 전달을 모델링하기 위한 것입니다. 이 라이브러리의 모델은 다음과 같은 구성 요소를 사용하여 집중 열 네트워크 모델을 구축하는 데 사용할 수 있습니다.
집중 열용량
전도
대류
복사
주변 조건
센서
FluidHeatFlow
)¶일반적으로 Modelica.Fluid
및 Modelica.Media
라이브러리를 사용하여 복잡한 매체 및 여러 단계로 된 광범위한 문제를 처리할 수 있게 하기 위한 열 유체 시스템을 모델링합니다.그러나 특정 경우에 대한 간단한 문제의 경우 FluidHeatFlow
라이브러리를 사용하여 열 유체 시스템의 간단한 흐름 네트워크를 구축할 수 있습니다.
유틸리티
라이브러리는 다른 라이브러리 및 모델 개발자를 지원하기 위한 기능을 제공합니다.여기에는 모델링의 비수학적 측면을 처리하기 위한 여러 하위 패키지가 포함되어 있습니다.
Files
¶Modelica.Utilities.Files
라이브러리는 컴퓨터 파일 시스템에 액세스하고 조작하기 위한 기능을 제공합니다.다음 기능은 Files
패키지에서 제공합니다:
list
- 파일 또는 디렉토리의 내용 나열
copy
- 파일 또는 디렉토리 복사
move
- 파일 또는 디렉토리 이동
remove
- 파일 또는 디렉토리 제거
createDirectory
- 디렉토리 생성
exist
- 주어진 파일 또는 디렉토리가 이미 존재하는지 테스트
fullPathName
- 명명된 파일 또는 디렉토리의 전체 경로 결정
splitPathName
- 경로에서 파일 이름의 분리
temporaryFileName
- 이미 존재하지 않는 임시 파일의 이름을 반환합니다.
loadResource
- Convert a Modelica URL into an absolute file system path (for use with functions that don't accept Modelica URLs).
Streams
¶Streams
패키지는 터미널 또는 파일에서 데이터를 읽고 쓰는 데 사용합니다.여기에는 다음과 같은 기능이 포함됩니다.
readFile
- 파일에서 데이터를 읽고 파일의 행을 나타내는 문자열 벡터를 반환합니다.
readLine
- 파일에서 한 줄의 텍스트를 읽습니다.
countLines
- 파일의 줄 수를 반환합니다.
error
- 오류 메시지를 인쇄하는 데 사용합니다.
close
- 파일을 닫습니다.
Strings
¶Strings
패키지에는 문자열에서 작동하는 함수가 포함되어 있습니다. 이 라이브러리의 일반적인 기능은 다음과 같습니다.
문자열의 길이 찾기
문자열 구성 및 추출
문자열 비교
문자열 구문 분석 및 검색
System
¶System
패키지는 기본 운영 체제와 상호 작용하는 데 사용합니다. 여기에는 다음과 같은 기능이 포함됩니다.
getWorkingDirectory
- 현재 작업 디렉토리를 가져옵니다.
setWorkingDirectory
- 현재 작업 디렉토리를 설정합니다.
getEnvironmentVariable
- 환경 변수의 값을 가져옵니다.
setEnvironmentVariable
- 환경 변수의 값을 설정합니다.
command
- 실행할 운영 체제에 명령을 전달합니다.
exit
- 실행을 종료합니다.