问题标签 [finite-element-analysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - CGAL-Bindings (Python):来自点云的网格
我试图对一个病人的主动脉进行有限元分析,我有一个 3d 点云:
可视化:
为此,我需要获取以下数组:
elem = {由 4 个索引组成的四面体}
面 = {由 3 个索引组成的三角形}
但我的问题是:
如何使用 CGAL 绑定(对于 Python)获得点云的 3d 三角剖分,然后获得网格的四面体和三角形?
我已经尝试过,但生成的 3d 三角剖分的索引超出了 len(XYZ) 没有意义(结果最大索引 = 12000 与 len(XYZ) = 1949)。
如果有人已经使用 CGAL-bindings for python 可以帮助我如何将它用于这个 porpuse 或帮助我理解 CGAL Mesh Generation Examples 中的 C++ 代码,请
:(。http
://doc.cgal.org/最新/Mesh_3/index.html#Chapter_3D_Mesh_Generation
python - 如何将 ODE 系统与 FEM 系统相结合
我有一个动态模型设置为 ODE 的(刚性)系统。我目前用 CVODE(来自 Assimulo python 包中的 SUNDIALS 包)解决了这个问题,一切都很好。
我现在想为问题添加一个新的 3D 散热器(具有与温度相关的热参数)。我的想法是使用现有的 FEM 或 FVM 框架为我提供一个接口,让我可以轻松地(t, y)
将 3D 块提供给例程,并获得背残差y'
。原理是使用 FEM 系统中的方程,而不是求解器。CVODE 可以利用稀疏性,但预计组合系统的求解速度比 FEM 系统自身求解的速度要慢,这是为此量身定制的。
我的问题是(a)这种方法是否合理,以及(b)是否有一个 FEM 或 FVM 库可以轻松让我将其视为一个方程组,这样我就可以将它“附加”到我现有的一组ODE 方程。
如果不能让两个系统共享相同的时间轴,那么我将不得不以步进模式运行它们,在其中我运行一个模型一小段时间,更新另一个模型的边界条件,运行那个模型,更新第一个模型的 BC,依此类推。
我对出色的库 FiPy 有一些经验,我希望最终以上述方式使用该库。但我想了解其他系统在此类问题上的经验,以及我错过的其他方法。
编辑:我现在有一些似乎正在工作的示例代码,展示了如何使用 CVODE 解决 FiPy 网格扩散残差。但是,这只是一种方法(使用 FiPy),我的其他问题和疑虑仍然存在。欢迎任何建议。
这将产生一个显示完美匹配的图表:
finite-element-analysis - 如何在 ABAQUS CAE 中对这种几何进行建模?
我正在对具有球形颗粒和颗粒周围的球形界面的复合立方体块进行建模。我可以将两个球体简化为两个立方体。我正在尝试模拟复合材料中的颗粒夹杂物和界面相。我将矩阵作为立方体,将粒子作为矩阵立方体中心的小立方体。相间层将是矩阵立方体中心的另一个立方体,但比粒子立方体大一点。基质、相间、基质都有不同的性质。但问题是我不知道如何在立方体内建模立方体。当我组装三个部分时,它们可以在模拟过程中“分离”。我无法将所有 3 个立方体建模为一个单独的部分。如果我做布尔值,最里面的几何图形会被删除。重要的是,我还想为不同的部分制作不同的套装。
关于如何建模的任何建议?
numerical-methods - Freefem++: Solving poisson equation with numerical function
I am using Freefem++ to solve the poisson equation
Grad^2 u(x,y,z) = -f(x,y,z)
It works well when I have an analytical expression for f, but now I have an f numerically defined (i.e. a set of data defined on a mesh) and I am wondering if I can still use Freefem++.
I.e. typical code (for a 2D problem in this case), looks like the following
I am wondering if I can define f numerically, rather than analytically.
fortran - 结合两个 Fortran 子例程与 ABAQUS 一起使用
我在有限元软件 ABAQUS 中实现了两个小的用户定义子程序(它们在我的有限元模型中定义了多点约束 (MPC) 的两种特殊类型 (JTYPE=1,2))。这些子程序根据需要用 FORTRAN 66/77 编写,并由 ABAQUS 在运行时使用英特尔 FORTRAN 编译器进行编译。我已经验证它们可以正确编译和工作。
但是,我在我的模型中一次只能使用其中一个子例程。这是因为它们都必须使用以下名称和参数(以便 ABAQUS 知道何时调用它们以及如何使用它们):
然而,事实证明,我需要能够在给定的分析中同时使用这两种类型。由于为我的有限元模型中使用的许多 MPC 实例中的每一个指定的 JTYPE 是 1 或 2,因此理想的解决方案是组合我当前独立的子程序,并在这个新子程序中在两种类型之间切换。我想我可以使用IF(JTYPE .EQ. 1) THEN类型语法来做到这一点。
问题是每个 JTYPE 所需的代码块都不同,即使它们都是 SUBROUTINE MPC。对于我的第一个子程序(JTYPE=1),手册需要如下接口:
对于第二个子程序(JTYPE=2),手册需要如下接口:
重要的区别在于 A 和 JDOF 数组的维度对于每种类型都是不同的。
我曾希望通过在 IF 循环中声明这些变量来解决这个问题,如下所示:
但是,这会导致编译在运行时失败,ABAQUS 会出现以下错误:
作业 Job-1 出错:编译期间出现问题 - C:\Users\kbodjo\Documents\Abaqus Analyses\custom_MPC_3.for Job-1 由于错误而中止。
考虑到上述挑战,我如何才能实现将这两个 MPC 子例程结合起来的目标?
编辑这就是代码的修复方式,现在它可以工作了:
mesh - 薄壁物体表面网格的四面体化
我需要生成薄壁物体的四面体(体积)网格。想想瓶子或塑料碗等物体,它们大多是空心的。FEM 模拟需要体积网格。对象外表面的表面网格可从测量中获得,例如使用 octomap 或 KinectFusion。因此顶点间距是比较规则的。物体的内表面可以通过移动内部的所有点从外表面计算出来,因为壁厚是已知的。
到目前为止,我已经考虑了以下方法:
创建一个 3D Delaunay 三角剖分(这将破坏现有的曲面网格),然后移除所有不在两个原始曲面之间的四面体。对于此检查,可能需要创建 2 个表面的隐式表面表示。
创建一个 3D Delaunay 三角剖分并使用 Alphashapes 移除“内部”(在空心空间中)或“外部”(外表面)的四面体。
关闭外部和内部网格并将它们分别作为外壳和孔加载到 tetgen 中。
这些方法对我来说似乎有点不雅,而且它们仍然存在一些缺陷。我可能需要几个库/工具。对于 1 和 2,可能仍需要 tetgen 或其他 FEM 网格划分工具来创建条件良好的四面体。有没有人有更直接的解决方案?我想这应该也是3D打印中的一个常见问题。
关于工具/库,到目前为止,我已经研究过 PCL、meshlab 和 tetgen。他们似乎都只完成了部分工作。理想情况下,我只想使用开源库并避免使用需要手动干预的工具。
finite-element-analysis - 如何在 ABAQUS 中对弹性地基上的梁进行建模
我正在尝试在 Abaqus 中对弹性基础上的简单二维梁进行建模。如何在 ABAQUS 中做到这一点?有什么想法或帮助吗?
finite-element-analysis - 如何在 ABAQUS 中以一定角度施加力或线载荷
ABAQUS 中的一个问题(可能看起来很基础)。如何在ABAQUS中以一定角度施加集中力或线载荷?ABAQUS 只提供了为集中力指定 X、Y、Z 方向的分量的选项。所以解决力是唯一的选择吗?任何人都可以发表评论吗?
finite-element-analysis - Ansys 多物理场:空白输出文件
我在 Ansys Multiphysics V11 上有一个加热过程模型。
运行模拟后,我有一个脚本来绘制温度曲线:
我现在需要的是将生成的路径保存在文本文件中。我已经在网上寻找解决方案,并找到了以下代码来执行此操作,我将其附加在上述行之后:
Ansys 生成文件filename.extension
但它是空的。我试图将OUTPUT
命令放在脚本中的几个位置,但没有任何成功。
我怀疑我需要定义其他东西,但我不知道在哪里看,因为 Ansys 在线文档非常混乱,而且我在写这个问题之前打开的所有互联网页面都不是更好。
最后一点:Ansys V11 是该软件的旧版本,但我不想升级它并将旧模型适合新软件。
matlab - 在某个字符串之后读取 .txt 文件值(Matlab)
我正在尝试使用 matlab 从 FEA .txt 结果文件中获取节点的位移。我想搜索节点(例如 5151)然后读取位移,问题是节点在得到变形之前被提到了几次。我感兴趣的部分结果看起来像这样......
等等,所以我想要做的是搜索一个唯一的字符串“NODEOUTPU T”,然后搜索“5151”并将其位移导入一个数组。
示例输出 nodeDisp = 1.6791E-03 -4.3652E-03 2.4334E-03 -6.5533E-02 -8.9528E-03 -4.8933E-03