我的Modelica模型的模拟在一开始就被中止了,原因如下:
The arguments u_min and u_max provided in the function call
solveOneNonlinearEquation(f,u_min,u_max)
do not bracket the root of the single non-linear equation 0=f(u)
fa and fb must have opposite sign which is not the case
在模拟开始时计算的fa值和fb值确实是相同的。我查找了Modelica试图调用的函数
我试图理解离散信号的Modelica语义。给定一个阶跃信号,该信号在t= 0.5处具有无限斜率,瞬间从0.0过渡到1.0。然后假设您还有一个when语句,如下代码所示:
model test_discrete
Modelica.Blocks.Interfaces.RealOutput q(start = -1.0);
Modelica.Blocks.Sources.Step step(
height=1,
offset=0,
startTime=0.5)
algorithm
when time >= 0.5 and time <= 0.5 t
我有一个关于Modelica活塞压力行为的问题。我模拟了一个简单的测试案例,看看活塞内部的压力是如何表现的。当活塞压缩流体时,压力不会沿整个压缩行程增加。活塞仅在一定的压缩行程内压缩流体。但根据实际情况,活塞内流体在上死点时应具有最高的压力。在每个压缩行程中,我得到了不同的压力增量。你知道为什么在我的模型中不是这样吗?提前感谢!
model Hochdruckreiniger4
//Declaration(s)
Real V_max = 0.000003;
Real V_tod = 0.000002;
Real N = 2800;
rep
我有一个问题困扰了我很长一段时间。如您所知,当我们在Modelica中使用if条件时,这意味着如果表达式为true,那么Modelica将执行相应的等式。但是,当我测试以下代码时,我感到困惑:
model Model134
Real a(start = 0);
equation
if not sample(0, 2) then
a = 1;
else
a = 3;
end if;
end Model134;
我认为a会每2s改变一次(启动time=0),但是当我模拟这个模型时,它不会改变,而且a总是等于1。
有人知道根本原因吗?
下面是我的模型中出现的一些可扩展连接器使用的最小工作示例:
model TestExpandableConnector
expandable connector ControlBus
extends Modelica.Icons.SignalBus;
Real signal1;
Real signal2;
end ControlBus;
ControlBus controlBus;
// example models to connect signals to
Modelica.Blocks.Math.Gain gain1;
Modelica
编辑28-04-2021
我试着在OpenModelica建立一个RLC链。当我在"equation"中输入几个函数时,会出现一个错误(请参阅注释),我声明了上面的一些变量,但是这些错误并没有消失。
有RLC链
有公式
model Lab5
extends Modelica.Icons.Example;
type Voltage=Real(unit="V");
type Current=Real(unit="A");
type Resistance=Real(unit="
我想通过抽水系统(Pompa)从一个水源(Pozzetto)中抽取水来填充一个开放的水箱(bacinella2)。这个问题很简单,但我不能在openmodelica中实现。
我试图消除泵,直接连接两个管道tubo1和tubo2,并且系统工作,这就是为什么我认为bug在泵对象中。
model Pompaggio
Modelica.Fluid.Machines.ControlledPump Pompa(
redeclare package Medium = Modelica.Media.Water.StandardWater,
//N_nominal=1500,
use
欢迎大家,
2020年新年快乐
我正在64位windows 7系统上使用Openmodelica 1.14发行版。
我在OMSimulator中的“时间”声明遇到了一些麻烦。在寻找解决方案时,我遇到了一个。我仍然可以在Openmodelica的当前版本中看到报告的问题。
我正在包括有关的文件,票# 2664。
model SimpleTest "just a simple model - Compilation etc."
Modelica.Blocks.Interfaces.IntegerInput u annotation(Placement(visible = tru
如何实现恒功率负载?
考虑一下下面的电路。这包含一个恒定的功率负载,它表示电力消耗者(在本例中)持续减少了10W。如何创建一个以消耗10W的方式调整自身的model?
我天真的做法如下:
model ConstantPowerLoad
extends Modelica.Electrical.Analog.Interfaces.OnePin;
parameter Modelica.Units.SI.Power P "The constant power value";
equation
v * p.i = P;
end ConstantPowerLoad;
我想在医学环境中使用Modelica模型中的非SI单元。我正在使用Dymola的Modelica。作为一名工程师,我更喜欢SI单元。但我的模型参数来源于医学出版物,我希望避免转换错误。医疗单位也简化了与医生的沟通。
例如,用"mmHg“(毫米水银)代替"Pa”来表示压力。压力变量在模型中定义如下:
type Pressure_mmHg = Real (final quantity="Pressure", final unit="mmHg")
将仿真模型转换为模型中的每个非SI变量(总共有300次警告)将产生以下警告:
Could not deco
在我正在从事的建模项目中,我很难找到另一个未知的来源。我收到一个错误,说我有34个未知数和33个方程式。我决定看一下Dymola中的扁平代码,虽然我可以数出正确的变量数,但我无法找到一种方法来达到33个方程。下面是扁平的代码:
model HeatStorage
parameter Modelica.SIunits.Diameter D = 18.667 "Diameter";
parameter Modelica.SIunits.Height H = 20 "Height";
parameter Boolean enable_losses = fa
刚开始使用Modelica时,在理解它的工作原理时遇到了问题。
在模型的下面的“方法”中,在第二行中使用了qInflow和qOutflow来计算der(h),但它们还没有收到值!(它们不是在方法的“data”中定义的)?代码的执行顺序是什么。
equation
assert(minV >= 0, "minV must be greater or equal to zero");
der(h)=(qInflow - qOutflow)/area;
qInflow=if time > 150 then 3*flowLevel else flowLevel;
qO
我想知道如何处理Dymola中的大矩阵。我有一个Modelica代码,它需要读取大型txt文件中的值,并将其存储到矩阵中。下面是显示1000x1000矩阵的示例代码。我希望Modelica从存储w2值(TXT文件(~13 MB):)的txt文件中读取该值。txt文件已经具有Modelica语言中的矩阵格式。然而,有太多的元素,我不能只是手动复制的值到Dymola。如果我那样做,迪莫拉就会停止反应。
model Unnamed
Real[1000, 1000] w2;
end Unnamed;
非常感谢!
我已经用Modelica建立了非线性电感的模型,但是这个电路不能用梯形积分来求解,感谢有人能帮我解决这个电路。
model NonlinearInductor
import Modelica.SIunits.MagneticFlux;
extends Modelica.Electrical.Analog.Interfaces.OnePort;
parameter Real T[:,2]=[-1.0015,-1200;-0.0015,-200;0,0;0.0015,200;1.0015,1200]