当前位置: 首页 > 知识库问答 >
问题:

如何将这些相关索引组织成可以在Rust中有效查找的内容?

单修德
2023-03-14

在一种称为有限元法的算法中,一个连续区域被离散为具有一致几何结构的重复部分,在这些部分上,基于它们之间连续性的假设形成链接方程。

我选择了一个任意的元素,在这个例子中,我试着把元素分割成一个任意的形状。下面是我所说的网格类型的一个例子:

有一系列相关指数:

  • 元素索引(蓝绿色数字),线性,行主要,范围0... ROWS*2
  • 节点索引(棕色数字),线性,行主要,范围0... ROWS*COLS
  • 本地元素顶点索引(薰衣草数字),按元素逆时针方向,范围0...2
  • 空间中实际点的坐标(与元素的结构以及网格的结构一起存储)

为了进入算法的下一步,我需要迭代每个节点,计算一些由局部元素索引索引的值的总和,并将它们存储在另一个矩阵中。例如,如果我在节点8上,我的元素查找/访问函数通常是V(el_索引,开始顶点,结束顶点),我的输出矩阵是S(开始节点,结束节点)

  1. S(8,8)=V(el_14vert_1vert_1)V(el_15vert_1vert_1)V(el_04vert_0vert_0)V(el_03vert_0vert_0)V(el_2vert_2vert_2)V(el_13vert_2vert_2)
  2. S(8,9)=V(el_15,vert_1,vert_2)V(el_4,vert_0,vert_2)

等等,对于来自节点8的所有连接(蓝绿色线)。(连接是对称的,所以一旦我计算S(7,8),我就不需要计算S(8,7)。)

问题是,网格(以及其他所有内容)在运行时都是参数化的,所以哪个节点索引邻接方向对应于哪个元素索引是动态确定的。我需要告诉程序,“给我元素索引,vert_x的节点索引是我当前的节点索引。”这条指令告诉程序在V()中访问哪个元素。

有没有一种方法可以让我以简单而透明的方式将这些指数联系起来?

  1. 我试着计算一些简单的算术函数,将节点矩阵的行步长模化,但结果很混乱,很难调试,并且需要详细的边界检查

共有1个答案

柯乐童
2023-03-14

我认为这是一个可能的解决方法,但我希望有更好的方法:

根据这个问题,将一个HashMap嵌套在另一个中,节点索引作为第一个键,元素索引作为第二个键/第一个值,元素本身作为第二个值。

因此,迭代可以如下所示:

>

从矩阵左上角开始的节点索引编号(通常在此编程域中):

| Element (index ordinal) | Vertex |
|-------------------------|--------|
| 0 (min)                 | 1      |
| 1                       | 2      |
| 2                       | 1      |
| 3                       | 2      |
| 4                       | 0      |
| 5                       | 0      |

从左下角开始,节点索引编号以图片开头:

| Element (index ordinal) | Vertex |
|-------------------------|--------|
| 0 (min)                 | 2      |
| 1                       | 0      |
| 2                       | 0      |
| 3                       | 2      |
| 4                       | 1      |
| 5                       | 1      |

由于您可以像这样硬编码元素的相对顺序,因此使用HashMap可能更好

这种方法提出了如何将节点索引与元素索引动态关联的问题。您如何知道要将哪些元素插入到HashMap?实现这一点的一种方法是以相同的顺序记录元素顶点在元素结构中对应的节点。

在这一点上,您可以在迭代矩阵时计算一个类似于相邻_元素的列表,并使用上面的模式来确定要访问什么(遗憾的是,使用边界检查)。

 类似资料:
  • 问题内容: 我对即将要做的索引编制感到有些困惑。 首先,我使用4列索引,如下所示: 索引名称-advanced_query 索引中将使用列-标题,类别1,类别2,类别3 索引代码 好的,这就是它的工作方式(据我了解): 标题 查询将使用索引。 cat_1 查询将使用索引。 cat_2 查询将使用索引。 cat_3 的查询将 不 使用索引。因此,我将为其创建一个不同的索引。 查询 标题cat_1 将

  • 我有一个排序的值数组和一个值,如下所示: 我可以找到在保持排序顺序的同时将插入到中的值的索引: 代码很好而且紧凑,但我有一种直觉,在幕后这是非常低效的:因为不知道数组已排序,所以它必须检查所有值。 有没有更好的方法找到这个指数值? 注意:我对实际合并到不感兴趣,我只想要索引值。

  • 假设我有一个10x10单元格的板。每个单元格的索引从1到100(基于1的索引)。该板是一个单元格列表:。 任务。给定一个单元格的索引,找出覆盖它的所有单元格。 例如: 给定索引: 返回:,顺序不受关注。 我的解决方案是: 如果给定的单元格位于黑板中心的某个位置,我的方法似乎会返回正确的结果。但是如果给定的单元格在角或边,那就错了。例如,如果给定的单元格=5,那么该方法将包括索引为4的单元格,尽管它

  • 排名不分先后,大部分信息来自互联网,不保证信息准确性,如有修改意见,欢迎联系。 国际 企业 IBM: 贡献区块链平台代码到 HyperLedger 项目,推动区块链产业发展,跟多家银行和企业进行区块链项目合作。 DTCC:贡献区块链代码到 HyperLedger 项目。 Circle:基于区块链的支付应用公司,已获得 6000 万美元 D 轮投资,投资者包括 IDG、百度、中金甲子、广大投资等,目

  • 我有一个ArrayList,从ArrayList的末尾(即使用add(object)方法)以串行方式(即逐个)填充Integer类型的对象。每次我这样做,ArrayList中的其他对象都会左移一个索引。 在我的代码中,我想在ArrayList中找到一个随机对象的索引。我想避免使用indexOf方法,因为我有一个非常大的ArrayList,循环将花费大量时间。有什么解决办法吗?如何在某些数据结构中保

  • 问题内容: 我有一个非聚集索引要删除(它是聚集索引的副本)。但是,外键约束正在使用它。我希望能够确定哪个约束正在使用索引,因此我可以对其进行更新以使用主键索引。 当我尝试删除它时: 我收到一个错误: 不允许在索引’dbo.MyTable.idx_duplicate’上使用显式的DROP INDEX。它被用于FOREIGN KEY约束实施。 我尝试通过以下查询找到罪魁祸首,但没有运气: 问题答案: