ModelCoder中的超密时间模型

2022-01-18 10:29:42 digiproto
许多仿真模型中都有时间的概念,这就意味着模块间的通信和模块所执行的计算是在一个逻辑时间轴上的,这两个动作在执行时要么按顺序执行,也就是说某个动作在另外一个动作之前;要么两个同时执行(并发执行)。


ModelCoder中为了保证模型仿真的准确性,引入了时间概念一致性这一关键机制。这一机制在不涉及时间的模块与涉及时间的模块混合仿真时也必须起效。

图片关键词


我们将时间设计成层次化的结构,而模型的层次结构也是层次化时间管理的核心。通常,只有顶层模型的时间才能进行推进,非顶层模型则通过获取顶层模型的当前模型时间来获得当前的仿真时间。


在ModelCoder中使用了一种超密时间模型,超密时间的值是一个键值对(t,n),我们称之为时间戳,t是模型时间,n是索引。模型时间代表事件发生的时间,索引代表在相同模型时间上发生事件的顺序。即使n1≠n2,两个时间戳(t,n1)和(t,n2)也被当做是同一时刻。我们通过一个牛顿摆来做一个简单的说明。

图片关键词


上图所示,是一个在细线上悬挂5个钢球的牛顿摆模型,如果抬起第一个球并释放它,它会撞击第二个球,但第二个球不会动而第五个球会上升。考虑第二个球的动量P,将它看作一个时间函数。第二个球不会移动,因此它的动量必须处处为零。但是第一个球的动量是通过第二个球转移到第五个球,所以动量不可能总是零。我们令R代表实数,令p:R->R代表第二个球的动量函数,令T表示撞击发生的时间。则我们可以得到以下式子 :

图片关键词

对一些常量P和所有的t∈R。在时间τ的瞬间前后,球的动量都为零,但是时间τ上,球的动量和速度成正比,所以我们可以得到:

图片关键词

其中M是球的质量。因此,结合式1,得到式2:

图片关键词

物体的位移是它速度的积分:

图片关键词

其中x(0)是初始位移。在任意时刻t式2给出的函数的积分都为零,因此球不会移动,尽管那个瞬间球的动量不为零。


上述物理模型的主要工作是描述物理现象,但是有两个缺陷。首先,它违反了动量守恒定律的基本物理原理。在碰撞的瞬间,中间的三个球都会同时获得非零动量,所以看起来总动量是神奇地增加了。第二,该模型不能直接转换为一种离散的表示。


超密时间能解决这两个问题:


第二个球的动量可以明确的表示为一系列的样本,其中p(t,0)=0,p(t,1)=P,p(t,2)=0,t表示碰撞的时间,第三个球只有在超密时间(t,2)才有非零动量。在碰撞时,每个球最初动量为零,然后为非零,然后又变成零,所有状态瞬间完成。对于中间的三个球来说,有非零动量的事件是弱同时性的,但不是强同时性的。这样就解决了上述动量不守恒,模型不能转换成离散表示的问题

首页
产品
新闻
联系