Modelica MSL CombiTimeTable - 如何在编译时仅设置 table 的大小?
Modelica MSL CombiTimeTable - how to only set size of table at time of compilation?
我已声明使用 MSL CombiTimeTable 并替换我自己的代码以获得类似的功能。有没有办法在编译时仅指定 table 的大小,然后再给出 table 值?
以下声明代码有效
CombiTimeTable pump(
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=[0,0; 1001,1; 1002,2; 1003,3; 1004,4; 1005,5]);
但我想避免提供 table 虚拟值。此块的 MSL 文档并未表明这是可能的,但这里可能有一些方法可以做到这一点?
我通常将 Modelica 代码编译成 FMU,并在 Python 脚本中设置参数。可以从文件中读取 CombiTimeTable 信息,但为简单起见,我想在 Python 脚本中包含 FMU 的所有参数。
视情况而定。你可以试试:
CombiTimeTable pump(
nout=1,
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=table);
parameter Real table[6,2];
它使用了未指定的 table 合适的尺寸。
但是,工具可能需要特殊设置(Dymola 似乎需要 Advanced.IssueErrorForUnassignedParameter=false
)- and/or 无论如何都会生成默认值,例如 0。
是否可以选择从文件中指定 table 数据,即 tableFromFile=true?这样你就不需要以显式方式关心 table 行的数量,因为它都在 Modelica 外部函数代码中处理。
我已声明使用 MSL CombiTimeTable 并替换我自己的代码以获得类似的功能。有没有办法在编译时仅指定 table 的大小,然后再给出 table 值?
以下声明代码有效
CombiTimeTable pump(
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=[0,0; 1001,1; 1002,2; 1003,3; 1004,4; 1005,5]);
但我想避免提供 table 虚拟值。此块的 MSL 文档并未表明这是可能的,但这里可能有一些方法可以做到这一点?
我通常将 Modelica 代码编译成 FMU,并在 Python 脚本中设置参数。可以从文件中读取 CombiTimeTable 信息,但为简单起见,我想在 Python 脚本中包含 FMU 的所有参数。
视情况而定。你可以试试:
CombiTimeTable pump(
nout=1,
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=table);
parameter Real table[6,2];
它使用了未指定的 table 合适的尺寸。
但是,工具可能需要特殊设置(Dymola 似乎需要 Advanced.IssueErrorForUnassignedParameter=false
)- and/or 无论如何都会生成默认值,例如 0。
是否可以选择从文件中指定 table 数据,即 tableFromFile=true?这样你就不需要以显式方式关心 table 行的数量,因为它都在 Modelica 外部函数代码中处理。