openmodelica中流体库的奇怪问题

openmodelica中流体库的奇怪问题,modelica,openmodelica,Modelica,Openmodelica,我编写了一个简单的代码来试验在标准库的流体包中使用PrescriptedPump机器。我正在使用OpenModelica 1.13.2。 我想从一个水箱泵一些水到另一个水箱,使用规定的泵驱动,恒定值为10000 代码如下: model PompaPilotata package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater; inner Modelica.Fluid.System system ; Modeli

我编写了一个简单的代码来试验在标准库的流体包中使用PrescriptedPump机器。我正在使用OpenModelica 1.13.2。 我想从一个水箱泵一些水到另一个水箱,使用规定的泵驱动,恒定值为10000

代码如下:

model PompaPilotata

  package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater;

  inner Modelica.Fluid.System system ;
  Modelica.Fluid.Vessels.OpenTank bacinella1(redeclare package Medium = Medium,
    T_ambient = system.T_ambient, T_start = system.T_ambient, crossArea = 4, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial,
    height = 10, level_start = 2, massDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, nPorts = 1, p_ambient = system.p_ambient,
    use_HeatTransfer = false, use_T_start = true, use_portsData = false)  ;

  Modelica.Fluid.Vessels.OpenTank bacinella2(redeclare package Medium = Medium,
    T_ambient = system.T_ambient, T_start = system.T_ambient, crossArea = 4, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial,
    height = 10, level_start = 2, massDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, nPorts = 1, p_ambient = system.p_ambient,
    use_HeatTransfer = false, use_T_start = true, use_portsData = false)  ;

  Modelica.Fluid.Machines.PrescribedPump Pompa(redeclare package Medium = Medium,
    medium(h(stateSelect = StateSelect.default), p(stateSelect = StateSelect.default)),N_nominal = 100, V = 0.1, allowFlowReversal = false,
    checkValve = true, energyDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, m_flow_start = 0.0000001,
    massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, nParallel = 1, use_HeatTransfer = false, use_N_in = true) ;

  Modelica.Blocks.Sources.Constant Costante(k = 10000);

  Modelica.Fluid.Pipes.StaticPipe tubo1(redeclare package Medium = Medium,allowFlowReversal = true,
    diameter = 0.1, height_ab = 0, isCircular = true, length = 5, nParallel = 1) ;

  Modelica.Fluid.Pipes.StaticPipe tubo2(redeclare package Medium = Medium,allowFlowReversal = true,
    diameter = 0.1, height_ab = 0, isCircular = true, length = 5, nParallel = 1);

equation
  connect(tubo2.port_b, bacinella2.ports[1]);
  connect(Pompa.port_b, tubo2.port_a);
  connect(tubo1.port_b, Pompa.port_a);
  connect(bacinella1.ports[1], tubo1.port_a);
  connect(Costante.y, Pompa.N_in);
end PompaPilotata;

我从编译器获得以下错误消息:

在C:/OpenModelica1.13.264位/include/omc/C/util/modelica_string.h:38:0中包含的文件中, 来自C:/openmodelica 1.13.264位/include/omc/C/openmodelica_func.h:52, 根据PompaPilotata_模型h:6, 摘自PompaPilotata_06inz.c:2: PompaPilotata_06inz.c:在函数“PompaPilotata_eqFunction_237”中: C:/OpenModelica1.13.264位/include/omc/C/meta/meta\u modelica\u数据。h:231:21:错误:“omc\u modelica\u流体\u机器\u规定泵$Pompa\u流量特性”参数2的类型不兼容 #定义mmc_mk_实际mmc_mk_rcon ^ C:/OpenModelica1.13.264位/include/omc/C/meta/meta\u modelica\u数据。h:225:45:注意:在宏“mmc\u unbox\u real”的定义中 #定义mmc\u unbox\u real(X)mmc\u prim\u get\u real(X) ^ PompaPilotata_06inz.c:3005:139:注:在宏“mmc_mk_real”的扩展中 data->simulationInfo->realParameter[7]=mmc_unbox_real(omc_Modelica_Fluid_Machines_规定的泵$Pompa_流量特性(threadData,mmc_mk_real(data->simulationInfo->realParameter[5]); ^ 在PompaPilotata_model.h:23:0中包含的文件中, 摘自PompaPilotata_06inz.c:2: PompaPilotata_functions.h:223:15:注意:应为'modelica_real{aka double}',但参数的类型为'void*' modelica_real omc_modelica_Fluid_Machines_规定了泵的流量特性(threadData_t threadData,modelica_real_V_flow); ^ :目标“PompaPilotata_06inz.o”的配方失败 \tools\msys\mingw64\bin\mingw32 make:[PompaPilotata_06inz.o]错误1 \tools\msys\mingw64\bin\mingw32 make::等待未完成的作业。。。。 编译过程失败。已退出,代码为2

有人可以告诉我这是什么意思以及如何修复它?
谢谢

该模型在Dymola eiter中不起作用,但它给出了以下提示:

Function Pompa.flowCharacteristic_Unique7 is neither external nor has an algorithm. It should have been redeclared.
因此,重新定义flowCharacteristic的函数应该会有所帮助。从
Modelica.Fluid.Examples.PumpingSystem
复制此部分,并将
V_flow_nominal
的值减少1000倍(这是一个粗略的猜测),得出:


实际添加了第二行。

请注意,该模型与OpenModelica的-d=newInst(来自夜间构建)配合良好。但您可能想重新声明函数,如下面Markus的回答所示)。
  Modelica.Fluid.Machines.PrescribedPump Pompa(redeclare package Medium = Medium,
    redeclare function flowCharacteristic = Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticFlow (V_flow_nominal={0.001,0.0025,0.005}, head_nominal={100,60,0}),
    medium(h(stateSelect = StateSelect.default), p(stateSelect = StateSelect.default)),N_nominal = 100, V = 0.1, allowFlowReversal = false,
    checkValve = true, energyDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, m_flow_start = 0.0000001,
    massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, nParallel = 1, use_HeatTransfer = false, use_N_in = true);