问题描述

如何模拟在特定时间大小发生改变的载荷?

我正在求解一个瞬态模型,其中的载荷发生瞬时变化,但求解器似乎忽略了载荷的这些变化。如何使求解器正确识别载荷变化时间?

解决方法

背景

许多瞬态问题都通过只包含时间一阶导数的偏微分方程进行建模。这类方程的常见示例包括传热方程和化学物质传递方程,不过,任何抛物型偏微分方程都具有相似的特性:解的瞬态特性在于对载荷变化的响应呈指数衰减。软件的默认行为是假设解和外加载荷随时间平滑变化。但是,如果外加载荷瞬间发生变化,则应使用事件接口,以便软件能够准确高效地处理这些变化。

另一方面,如果模型涉及二阶时间导数,比如瞬态电磁波公式、瞬态压力声学公式以及瞬态结构问题,那么解场将呈波型,知识库 1244:求解载荷呈阶跃变化的波型问题对此进行了说明。

解决办法

首先,将事件接口添加到模型中。此接口位于“物理场”列表中:数学 > 常微分和微分代数方程接口 > 事件

对于模拟不断变化的载荷,事件接口可以提供四种不同类型的特征:离散状态指示器状态显式事件隐式事件。事件被触发时,默认情况下,它将根据之前的解和新载荷对所有变量进行一致初始化。如果您希望一些(或所有)离散状态、全局变量或场变量发生突变,可以选择将其重新初始化为不同的值。

周期性脉冲载荷和显式事件

举例来说,在对脉冲载荷进行建模时,如果您知道载荷变化的时间,则应使用显式事件特征。该特征通常与离散状态特征结合使用,后者用于修改边界条件。您还可以指定事件周期,对定期重复的载荷变化进行建模。如果已施加重复的脉冲载荷,可以使用两个显式事件:一个在打开时间触发,另一个在关闭时间触发。

比如一个脉冲热载荷,持续一秒后关闭,该循环每三秒重复一次。这需要在热载荷打开时触发一个显式事件,关闭时触发另一个事件。这些事件应该每三秒重复一次,并应修改热载荷。热载荷的修改可以通过离散状态特征完成,如下面的屏幕截图所示。您可以通过本页底部的链接下载实现这些特征的样本文件。

离散状态接口

离散状态接口定义一个可在事件触发时发生变化的状态变量。

修改热载荷

离散状态可用于修改热载荷。

触发事件

显式事件重新初始化离散状态以打开载荷。

修改热载荷

显式事件重新初始化离散状态以关闭载荷。

不含事件的周期性脉冲载荷

如果载荷的脉冲速度相对于仿真时间跨度来说非常快,可以考虑将这个脉冲载荷近似为循环平均恒定载荷。

例如,如果您要模拟 10W 载荷引起的加热,该载荷持续 100 毫秒,关闭 400 毫秒,并且总仿真时间比脉冲周期长许多倍,那么很可能您不需要显式模拟每个脉冲引起的温度升降。而是用每个周期的载荷总持续时间(100 毫秒)除以总周期时间(本例中为 500 毫秒),得到 2W 循环平均热载荷。这种方法的求解速度要快得多,特别适用于快脉冲,如果您不需要准确捕捉每个脉冲引起的温升,则这种方法尤其适用。

随时间变化的循环平均恒定热载荷(黑线)可以很好地近似快速脉冲载荷(红线)的影响。

条件式脉冲载荷和隐式事件

当模型中某个未知时间发生的条件(例如在 bang-bang 或恒温控制情况下)使载荷发生隐式变化时,应使用隐式事件特征。该特征必须与指示器状态特征结合使用,后者定义指示器变量。指示器状态变量用于在指示器状态变量更改符号时,以及隐式事件条件从 false 变为 true 时触发隐式事件。

例如,假设一个模型最初为 20°C,随后被加热至平均温度超过 95°C。在这个时间点,应关闭加热器。如果平均温度降至 90°C 以下,则应重新打开加热器。如上例所示,离散状态用于控制热载荷,但在这种情况下,初始值设置非常重要。在本例中,其初始设置必须为 1,表示加热器处于打开状态,并将由触发的隐式事件修改。

离散状态接口

离散状态最初设置为 1。

为了监视模型中域的平均温度,可以使用平均组件耦合算子(如知识库 913:计算时间和空间积分中所述)以及用于存储平均温度的变量,如下面的屏幕截图所示。

定义变量

定义组件耦合算子和变量。

本例中被监视的解变量是平均温度变量,在指示器状态特征中用于定义两个可以触发隐式事件的指示器状态。第一个指示器状态定义 TooHot = AverageTemp-95[degC] ,第二个定义 TooCold = AverageTemp-90[degC]。请记住,仅当指示器状态更改符号时,才可能触发隐式事件。

定义指示器状态

定义两个指示器状态。

这两个指示器状态在两个不同的隐式事件特征中使用,第一个触发条件为 TooHot>0 ,当平均温度高于 95°C 时,状态从 false 变为 true。触发此事件时,ONOFF 离散状态设为零,关闭热载荷。第二个条件在 TooCold<0 条件下触发,当平均温度降至 90°C 以下时,状态从 false 变为 true,并将 ONOFF 设为 1,重新打开载荷。

隐式事件接口

两个隐式事件用于实现恒温控制。

求解器触发“隐式事件”的精度由“事件容差”控制,如下面的屏幕截图所示。如果您观察到事件条件过高或过低,请减小该值,例如将其改为 0.001 。您可以通过下方链接下载实现这些特征的样本文件。

指定事件容差

更改事件容差的位置。

使用事件时的求解器选项

默认情况下,软件仅在“瞬态研究步骤”设置中指定的时步保存结果。您可能还希望在触发任何显式或隐式事件前后立即存储解。这可以通过修改“瞬态求解器”设置来完成。在“输出”栏中,启用在事件前/后存储解,如下面的屏幕截图所示。

存储解

启用在事件前后存储解的求解器设置。

另请参见:

知识库 1255:减少模型中存储的数据量

知识库 1254:控制瞬态求解器的时间步长

知识库 1240:手动设置变量的缩放比例

知识库 1127:提高非线性瞬态模型的收敛性