第一章 介绍

1.1 Modelica概述

Modelica是一门物理系统建模语言,旨在支持有效的模型库开发和模型互换。它是一门建立在非因果建模思想上的、采用数学方程和面向对象的构造来方便建模知识重用的现代语言。

1.2 本规范的范围

Modelica语言的语义由一套将任意Modelica类翻译为扁平Modelica结构的规则来说明。类还必须有其他的属性以便它的扁Modelica结构能够被进一步转换为一套微分、代数和离散方程(即扁平混合DAE)。这些类被称作仿真模型。

扁平Modelica结构不仅定义仿真模型也定义其他的东西,包括函数(能用于提供具体算法),包(用作结构化机制),以及偏模型(Partial Model)(用作基模型)。这使得仿真模型在编译之前其正确性就可被验证。

Modelica的设计方便模型符号转换,特别是主要通过将扁平Modelica结构中的每一个Modelica语言构造映射到连续或者瞬态方程的方式。许多Modelica模型是更高阶的系统,尤其是在相关的Modelica标准库中,且只有在进行了符号指标约简后才能被合理地仿真,也就是说方程已分化,合适的变量已选为状态,因此方程的结果系统能够转换到状态空间形式(至少局部在数值上),即指标为0的混合微分代数方程(Hybrid DAE)。Modelica规范没有定义如何对一个模型进行仿真,但是它定义了仿真结果应尽可能满足的一套方程。

翻译(或者扁平化)的关键问题是:

  • 继承的基类的展开
  • 基类、局部类和组件的参数化
  • 从连接方程子句生成连接方程

扁平混合DAE的构成包括:

  • 变量声明:用恰当的基本类型、前缀和属性声明的变量,例如“parameter Real v=5”。
  • 方程:来自方程段的方程。
  • 函数调用:一个调用被视作一组方程,其中包括其所有的输入变量和所有结果变量(方程数=基本结果变量数)。
  • 算法段:每一个算法段都被视为一组方程,其中包括出现在算法段的变量(方程数=不同的赋值变量数)。
  • When子句:每一个When子句都被视作一组按条件计算的方程,也称作瞬态方程,它们是出现在该子句中的变量的函数(方程数=不同的赋值变量数)。

因此,扁平混合DAE被视作一组方程,其中一些方程仅仅有条件地计算(例如,瞬态方程仅仅是在相应的条件变为True的时候才计算)。

一个Modelica类也可能包含注解,即正规的注释,它说明了类的图示、文档文本和版本信息。

1.3 一些定义

Modelica语义规范必须结合Modelica文法来理解。非规范性文本,即示例和注释,包含在【】内;注释用斜体字表示。其他术语在附录A中的词汇表中解释。几个重要术语是:

术语 定义
组件(Component) 按Modelia文法,由生成子句component_clause定义的元素(主要是一个变量或者一个类的实例)
元素(Element) 类中声明的类定义,扩展子句和组件子句(主要是类引用或声明中的组件)。
扁平化(Flattening) Modelica模型到相应的混合DAE模型描述的翻译,包括展开继承基类,基类、局部类和组件的参数设定,以及从连接方程子句生成连接方程(主要是从模型中将模型的层级结构连同其相应的变量声明和函数定义映射到一组微分、代数和离散方程)。

1.4 记号法和语法

本规范使用下列语法元符号(扩展的巴科斯范式):

[ ] 可选的

{ } 重复0或者多次

粗体表示Modelica语言关键词。关键词是保留词,而且不允许用作标识符,作为段头每部分头关键字的initial和作为函数声明关键字的der是个例外,但是可以调用函数initial()和der(…)的。

完整的词法和语法规范参见附录B。

results matching ""

    No results matching ""