我目前正在从事这个项目,并且我有一个使用有限元方法的基本结构分析仪。本质上,我将每个块变成一组桁架,构建一个将每个桁架的力相互关联的刚度矩阵,并将其输入 Matlab。
下一个任务是让我加快速度,最好是使用一些 GPU 加速。由于 Matlab 尚不支持 GPU 中的备用矩阵计算,因此我正在研究其他可用的库。我正在考虑采用的一种方法是使用CULA Sparse的求解器来加快速度。但也有许多有限元软件包可能会做得更好,并节省我构建矩阵和检索结果的性能开销。
我想知道的是,这些有限元软件包中的哪一个适合我?这是一个很难的问题,所以这里有一些限定词,按重要性排序:
- 它是程序的一部分,因此库比完整的建模包更受欢迎。
- 建立并有据可查
- GPU 加速
- 使用方便
- 它应该快速计算相对较小的数据集的结果(大约在一秒钟内解决一个 10,000 个元素的系统)
- 学生的价格应该在300美元以下。
- Java 和 C 中的接口。
有人有推荐吗?还是继续我的 CULA 想法会更好?
编辑:杰德布朗要求我更详细地给出我正在做的计算。我不是土木工程师,但我与其中一位工程师谈到了制作外观和感觉都不错的结构分析系统的可能性。我已经有了一个原型。这是它的工作原理。
- 在像 Minecraft 这样的游戏设置中,子程序针对要测试的块 R 的某个连续区域。该程序在块区域之外创建一个桁架网格,并为网格中的每个节点分配一个权重(基于块的重量)。有与该区域接壤的基本节点。
- 从这个网格中,程序生成一个宽刚度矩阵T和一个权重向量w。从那里,它需要求解方程Tf = w,其中f,未知数,是一个向量,表示每个桁架和基础节点施加的力。换句话说,一行T决定了桁架和基础力如何相加以抵消节点的权重。
- 目前,我的程序通过使用共轭梯度求解器求解方程TT'u=b来解决这个问题,然后得到f = T'u。
- 一旦我对每个桁架施加了力,我就可以确定哪些块在应变下破裂。如果其中一个组成的桁架施加的力超过阈值,我没有使用详细的变形模型,而是只使用每个块。
因为我的结构分析系统是用于游戏而不是严肃的工程环境,所以速度比准确性重要得多。制作它的许多工作将包括调整变量,以便给游戏带来良好的感觉。