model bounceball
parameter Real h0= 10"小球初始高度";
parameter Real g= 9.8"重力加速度";
parameter Real e=0.7"能量损耗剩余比例";
Real h"小球高度";
Real v(start = 0)"小球速度";
Boolean flying"小球飞行状态";
initial equation //初始化状态方程
h = h0;
v = 0;
equation
der(h) = v;
der(v) = if flying then -g else 0;//如果飞行中没有触地,受重力,加速度g方向向下,触地后重力支持力平衡
flying = not ( h <= 0 and v <= 0);//判断是否在下落过程中
when h <= 0 then
reinit( v, -e * pre(v));//触地后触发反弹事件
end when;
end bounceball;