在 Dymola 中编译大型数组

2023-11-29

请考虑以下小型 Modelica 模型和功能:

model VectorizeDemo
  parameter Integer na=5;
  final parameter Integer nb=2*na;
  final parameter Real a[na] = {2*i for i in 1:na};
  final parameter Real b[nb] = {3*i for i in 1:nb};
  Real c[na];
  Real d[na,nb];

protected 
  function myFun
    input Real A;
    input Real B;
    output Real C;
  algorithm 
    C:=tanh(A)*sin(B);
  end myFun;

equation 
  c = sin(a);
  //d = myFun(a,b);
  // inner loop first
  d = {myFun(a[i], b[j]) for j in 1:nb, i in 1:na};
end VectorizeDemo;

这将在 Dymola 中进行编译和模拟,但查看中的 C 代码dsmodel.c每个数组元素都被声明为一个新变量:

...
DeclareVariable("d[4, 10]", "", 38.0, 0.0,0.0,0.0,0,513)
DeclareVariable("d[5, 1]", "", 13.0, 0.0,0.0,0.0,0,513)
DeclareVariable("d[5, 2]", "", 16.0, 0.0,0.0,0.0,0,513)
DeclareVariable("d[5, 3]", "", 19.0, 0.0,0.0,0.0,0,513)
...

所以,如果我通过设置增加数组大小na=1000我将声明 1000*2000 个变量。显示的示例仍然可以编译,即使需要很长时间,但我的更复杂的用例因编译器而失败warning C4049: compiler limit, terminating line number emission或与C1002 compiler is out of heap space.

旁注:较大的示例也需要几分钟的时间来检查,并且在模拟之后,当在变量浏览器中展开变量时,GUI 将被阻塞很长时间。

是否有任何解决方法,例如重写我的代码或设置一些标志?暂时增加堆空间?我只需要运行该模型一次。任何对正在发生的事情的见解也将不胜感激。使用 Dymola 2020 和 VisualStudio 2017。


是的,至少在 Dymola 2020(可能还有更早的版本)中可以初步避免编译问题:

Real d[na,nb] annotation(__Dymola_HideArray=true);

但是,也可能存在其他可能性 - 并且该示例并未完全阐明它的用途。我特别指出“d”可以被评估并且根本不被使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Dymola 中编译大型数组 的相关文章

  • 在这种情况下 b 是标量对象吗?

    include
  • 未定义条件编译符号

    我无法让 Visual Studio 按照我的预期运行 我创建了 2 个配置文件 一个定义了符号 FOO 另一个定义了符号 BAR 我有这个代码 static class MyClass if FOO public static strin
  • 在 PHP 中创建关联数组

    我有一个多维数组 shop array array appn1 pub1 pub2 pub3 array appn2 pub1 array appn3 pub1 pub2 每个数组中的第一项是申请编号每个数组中的其余部分是出版号 我得到每个
  • 如何将两个不同的哈希数组中的值添加在一起?

    我有两个哈希数组 哈希值的键不同 player scores1 first name gt Bruce score gt 43 time gt 50 first name gt Clark score gt 45 minutes gt 20
  • 如何在 TypeScript 中禁用/抑制库中的错误?

    我打开了一些编译器开关来报告代码中的更多问题 例如严格的空检查 但我在使用的库中遇到了数十个错误 例如 default xxx node modules angular core src util decorators d ts 11 5
  • 将构造函数传递给 Array.map?

    我怎样才能做这样的事情 var a 1 2 3 4 a map Date constructor 此代码在 Google V8 上引发错误 SyntaxError Unexpected number 我也尝试过 a map Date con
  • 计算字符串中的唯一单词

    下面我尝试将字符串数组提供给一个函数 该函数将唯一单词添加到单词数组中 并且如果该单词已经在数组中 则增加计数数组中相应元素的计数 var words var counts calculate a b calculate a c funct
  • 如果一个多维数组中的子数组与另一个多维数组不同,则覆盖该子数组

    我坚持这个问题 真的不知道如何解决 我有两个多维数组 需要将第二个数组中的每个 entry id 与第一个数组进行匹配 然后需要检查第二个数组中的每个 file no 是否在数据库 第一个数组 中 并且 status 是否与第一个数组匹配
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • reinterpret_cast 到 C 样式数组是非法的 C++11 吗?

    为什么下面的代码不受欢迎 double d 4 0 1 2 3 reinterpret cast
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • C# Byte[] 转 BCD 和 BCD 转 INT

    我有一个由 CashRegister Machine 创建的 Hex 文件 我必须读入这个文件 文件使用下面详述的格式 它就像套接字数据包 代码数据 2字节PLU 代码数据 7 字节单价数据 5字节数量数据 5字节数据总量 5字节PLU 名
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • Angular 4 显示其中的数据

    我不喜欢从 API 返回到我的 Angular 4 应用程序的数据 这是 JSON 的示例 我不关心美元 但这是我正在处理的数据类型 最终目标是在页面上展示 Coin Price BTC 4 281 28 ETH 294 62 etc JS
  • 如何从列表创建多维数组?

    我在 MySQL 中有一个带有父 ID 的类别列表 如何从列表中创建 PHP 数组 ID Category Parent ID 1 Car NULL 2 Education NULL 3 Mathematics 2 4 Physics 2
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 将 int 复制到 byte[] 的最简单方法

    我有一个 byte 我正在迭代 int 列表 和其他数据 我想将 int 复制到我的 byteArray index 4 我该怎么做 BitConverter http msdn microsoft com en us library sy
  • Python:结构体和数组与 ctypes 中的类似功能

    Python 提供了以下三个处理 C 类型以及如何处理它们的模块 struct https docs python org 3 library struct html对于 C 结构体 array https docs python org
  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组

随机推荐

  • AngularJS 表中的键盘导航

    我正在尝试将 Windows Delphi VCL 中制作的特殊表格 网格表单移植到 Angular 应用程序 可以在此处测试 Angular 应用程序的简化版本 jsFiddle 演示 用户可以添加任意数量的行 如 jsFiddle 中所
  • 使用递归辅助函数检查素数

    我正在尝试使用递归检查一个数字是否为素数 我被要求使用递归辅助函数 但我不确定应该如何实现它 我想我知道这个算法 但我从未尝试过在 Racket 中使用递归辅助函数 这是我目前的想法 看看 n 是否能被整除i 2 Set i i 1 If
  • 2D/3D CUDA 块如何划分为扭曲?

    如果我使用一个网格来启动我的内核 该网格的块具有尺寸 dim3 block dims 16 16 网格块现在如何分割成扭曲 这样一个块的前两行是否形成一个扭曲 或者前两列 或者这是任意排序的 假设 GPU 计算能力为 2 0 线程在块内按顺
  • 在 PHP 中使用 CURL 的 POST 给出无效请求错误

    我正在使用下面的使用curl的谷歌帐户发布方法 但它给了我invalid request错误 POST o oauth2 token HTTP 1 1 Host accounts google com Content Type applic
  • ES6 将一些函数导入为对象

    动作 js export const setX gt export const setY gt export const setT gt 一些组件 js import setX setY setT from actions export c
  • 触摸事件延迟

    我们在 AppStore 有一个应用程序半身像 A 幽灵我们有一个问题 当您点击屏幕时 我们使用 CALayer 来查找动画期间所有视图的位置 如果您点击其中一个 我们就会开始一个骰子序列 但是 存在明显的延迟 似乎触摸已被缓冲 并且我们收
  • Firestore限制

    Firestore 提供 50000 个文档读取操作作为其免费捆绑包的一部分 但是 在我的应用程序中 客户端正在获取包含价格数据的集合 价格数据是随着时间的推移而创建的 因此 从特定时间戳开始 客户端最多可以读取 1000 个文档 每个文档
  • 如何从 MVC 中的 Javascript 代码将值传递到控制器

    实际上我有一个这样的场景 我通过 Javascript 获取 GridView 中检查记录的值 现在我需要将这些值发送到控制器以删除这些记录
  • 从 UIDatePicker 中删除“今天”条目

    在 iOS SDK 中使用 UIDatePicker 时 当前日期始终有一个 今天 条目 这在大多数情况下很有用 但在我需要它的地方 它却相当令人困惑 有没有办法 a 禁用 今天 条目 改为使用常规日期 并且有所有条目看起来都一样 甚至更好
  • 以编程方式检查进程是否正在后台运行

    2个问题 1 是否有任何Linux Posix API可以知道进程是否已被调用为后台进程 linux gt myprogram 代码可以吗myprogram检测到它已被调用在后台运行 通过 2 是否有任何Linux Posix API可以使
  • 尝试渲染到多个纹理以实现延迟渲染。但所有纹理都是平等的

    所以我试图在opengl中实现延迟渲染 为此 我创建了一个 FBO 它渲染 3 个纹理 一个用于位置 一个用于正常 一个用于材质信息 但是由于我尚未完成 因此第三个纹理只是片段的最终颜色 最后一个深度缓冲区用于稍后实现阴影 然后 该纹理被传
  • 从 Silverlight 重定向到另一个页面

    在 Silverlight 页面中 我想重定向到同一网站中的另一个 aspx 页面 并使用 POST 方法发送一些附加标头信息 有什么想法如何实施吗 任何样品表示赞赏 我使用的是 VSTS2008 Net 3 5 Silverlight 2
  • AWS Elastic Beanstalk 给出“无法将主机名“db”翻译为地址”错误

    我一直在尝试部署由 Django Postgresql 和 Nginx 组成的 docker 当我这样做时效果很好 sudo docker compose up However when deploy it on AWS EB it giv
  • 条件运算符中的“错误:需要左值作为赋值的左操作数”

    我是 C 新手 今天我学会了 运算符是 if else 语句的短类型 但是 当我执行这段代码时 int b int x b 3 lt 2 x 12 x 34 我收到错误 错误 需要左值作为赋值的左操作数 我不明白为什么会这样 我的想法是 程
  • 无法使用 golang 解码 XML,始终为空结构

    我正在尝试使用 golang 解码 XML 但以下代码给出了一个空结构 有人可以帮忙吗 当我运行以下代码时 我总是得到 packet 附源码 package main import fmt encoding xml io ioutil ty
  • Android - 构建支持附加组件的应用程序

    在 NET 上 我可以使用 反射 在运行时加载 DLL 库 这允许我为我的应用程序构建一些附加组件 在Android上 有什么方法可以执行类似的操作吗 我想制作一个附加组件 安装后可以从我的 Android 应用程序调用 我的第一个想法是建
  • android:如何使用触摸和拖动创建不同的“屏幕”和它们之间的导航?

    我可以创建与主屏幕上相同类型的导航吗 也就是说 我想要可以使用触摸和拖动在不同的屏幕之间导航 我还没有看到任何相关内容 所以是时候问一下了 哦 我正在谈论 Android 的应用程序 没有任何内置内容 但您可以使用 ViewFlipper
  • 为什么当我打开 H2 控制台时,从 Java 添加的表不可见?

    我在Java中使用H2嵌入式数据库 在创建数据库并添加一些表和数据后 它被保存为我计算机目录中的文件 但是每当我使用 H2 控制台打开此文件时 它根本不显示任何表格 为什么桌子不在那里 我在我的 java 代码中使用这个 URL jdbc
  • Java QueryDsl代码生成不生成Q类

    我正在制作一个 Spring 项目 其中我使用 QueryDsl 作为实体 我从几个月前开始接手这个项目 其中我已经有 1 个生成的类 QUser 现在我创建了一个名为 Permission 的新实体 并修改了 User 实体 当我构建项目
  • 在 Dymola 中编译大型数组

    请考虑以下小型 Modelica 模型和功能 model VectorizeDemo parameter Integer na 5 final parameter Integer nb 2 na final parameter Real a