专栏
标签
连续变量可以适用:=赋值吗
一般问题
发布于 2025-04-24 22:41:34
查看 19过去430天

我有两个实例a,b,如何做到当a达到某一条件时,才让b的时间开始流逝?
或者当a达到某一条件时,给b重新赋初值?

所属专栏:Modelica语言
产品信息:Sysplorer系统建模仿真环境
其他
采纳的回答
发布于 2025-04-25 09:07:24

您好,“:=”适用于 algorithm 中,equation 中只有“=”。
如果是要对b重新赋值,可参考以下代码,详细内容可以查看官网Modelica语言详解教程事件

  final parameter Real g = 9.8 "重力加速度";
  parameter Real coef = 0.9 "弹性系数";
  parameter Real h0 = 10 "初始高度";
  Real h "小球高度";
  Real v "小球速度";
  Boolean flying "是否运动";
initial equation 
  h = h0;
equation 
  flying = not (h <= 0 and v <= 0);
  der(v) = if flying then -g else 0;
  v = der(h);
  when h <= 0 then 
    reinit(v, -coef * v);
  end when;

全部回答 4

发布于 2025-04-24 23:19:46

reinit()函数

发布于 2025-04-24 23:59:37

delay()函数

发布于 2025-04-25 09:07:24

您好,“:=”适用于 algorithm 中,equation 中只有“=”。
如果是要对b重新赋值,可参考以下代码,详细内容可以查看官网Modelica语言详解教程事件

  final parameter Real g = 9.8 "重力加速度";
  parameter Real coef = 0.9 "弹性系数";
  parameter Real h0 = 10 "初始高度";
  Real h "小球高度";
  Real v "小球速度";
  Boolean flying "是否运动";
initial equation 
  h = h0;
equation 
  flying = not (h <= 0 and v <= 0);
  der(v) = if flying then -g else 0;
  v = der(h);
  when h <= 0 then 
    reinit(v, -coef * v);
  end when;

发布于 2025-04-25 13:27:46

很多情况下,reinit函数只允许用一次。新思路:if deltaT>time then
der(bianliang)=0

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天