问题标签 [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.

0 投票
0 回答
491 浏览

3d - 对构造实体几何 (CSG) 进行网格划分

我有许多切割立方体的几何图元(100)。这可以使用 CSG 建模。现在我需要一个相对粗糙的四边形网格来进行有限元模拟。为了生成网格,我遇到了 netgen(见图)。但是 netgen 会给我提供超过 200 万个元素的网格,我正在使用的 FE 程序无法处理这些元素。有没有可靠的程序可以完成这项工作?我已经尝试只对表面进行网格化并以某种方式对其进行粗化,但没有任何成功。

0 投票
1 回答
54 浏览

c++ - 保护数组的元素?

我目前正在尝试优化我用 C++ 编写的程序。它是使用用户定义的边界条件对任意静电系统进行有限元方法模拟。

它有效,但为了保持边界条件(可以是任意形状)不变,我在每个循环开始时重写这些元素。

为了 - 可能 - 提高计算时间和代码简洁性,我想将这些元素设置一次并保护它们。到目前为止,我设法找到的只是如何初始化整个 const 数组,而不是单个受保护的元素。

这在 C++ 中是否可行,或者是否有任何库可以做到这一点?

0 投票
1 回答
413 浏览

matlab - 给定3D三角形面积的Voronoi单元格的平方面积变化求和?

我有一个形成表面(即三角剖分)的 3D 三角形列表。该结构是变形的三角形格子。我想知道晶格的 voronoi 镶嵌的变形六边形的面积相对于未变形晶格单元的其余区域(即相对于正六边形)的变化。事实上,我真的想要与这些三角形相关的六边形晶胞的面积平方变化的总和。

变形六边形面积

背景/数学细节:我用三角形格子来近似弯曲的弹性片。调整片材泊松比(弹性常数)的一种方法是在能量中添加“体积”应变能项。我正在尝试计算变形的弹性三角形晶格的“体积”应变能,定义为:U_volumetric = 1/2 T (e_v)^2,其中 e_v=deltaV/V 由面积的变化决定一个 voronoi 单元相对于其参考区域,这是一个已知常数。

参考:https ://www.researchgate.net/publication/265853755_Finite_element_implementation_of_a_non-local_particle_method_for_elasticity_and_fracture_analysis

想:

Sum[ (DeltaA/ A).^2 ]在所有六角形单元格上。

我的数据存储在变量中:

xyz = [ x1,y1,z1; x2,y2,z2; etc] %3D 中的顶点/粒子

TRI = [ vertex0, vertex1, vertex2; etc] %第一个三角形的粒子 所在vertex0的行在哪里。xyzvertex 0

NeighborList = [ p1n1, p1n2, p1n3, p1n4, p1n5,p1n6 ; p2n1...] % 其中 p1n1 是粒子 1 的第一个最近邻,作为 xyz 的行索引。例如,xyz(NL(1,1),:)返回xyz粒子 1 的第一个邻居的位置。

AreaTRI = [ areaTRI1; areaTRI2; etc]

我在 MATLAB 中写这个。

到目前为止,我将每个顶点的面积近似为三角形面积的 1/3,然后对 6 个最近邻三角形求和。但是 voronoi 单元面积不会完全等于 Sum_(i=0,1,...5) 1/3* areaTRI_i,所以这是一个不好的近似值。请参阅上面链接中的图像,我认为这更清楚了。

0 投票
1 回答
1084 浏览

matlab - 用隐式差分法求解热方程

我试图制作一个 Matlab 代码来使用隐式方法绘制热方程的离散解。

我得到的关于热方程的信息如下:

d^2u/d^2x=du/dt

初始条件(t=0):

如果 x>0,则 u=0

否则 u=1(当 t=0 时)

离散隐式差分法可以写成:

(I+delta t*A)[v(m+1)]=v(m),其中 I 是单位矩阵,delta t 是时间空间,m 是时间步数,v(m+1) 是下一个时间步的 v 值。A 是矩阵:A 在对角线上的值为 2,而在该对角线的正下方和正上方均为 -1。所有其他数字都为零。

不插入值,而是写入符号:

我收到的错误消息如下:

试图访问 v(2);索引超出范围,因为 numel(v)=1。

隐式错误(第 37 行)c(k)=v(k)-(m(k)*c(k-1));

有谁知道我应该写什么以使错误消息消失?Matlab 代码看起来没问题,还是我应该改变什么?大卫

0 投票
1 回答
748 浏览

matlab - 有限差分 - 波动方程 - 边界条件和设置

我正在研究一个项目,该项目与使用具有以下边界条件的 MATLAB 中的中心差近似以数值方式求解 2D (x, y, t) 波动方程有关:

阴谋

总装公式为:

FD公式

我了解一些边界条件(BC),例如

在 j=m 处,du/dy=0,

公元前,

但我不确定如何在 MATLAB 中实现这些边界条件。

一个朋友给了我这些方程式:

情商

这是我对 MATLAB 代码的尝试,
但我无法进一步取得进展:

0 投票
0 回答
90 浏览

algorithm - 在约束下找到节点的最佳位置 - 算法

在此处输入图像描述

我想将中心的节点移动到一个位置,以便所有三角形角度都接近 60 度。

我正在考虑计算每个三角形的角度标准偏差并尝试将其最小化。还有其他方法吗?

0 投票
1 回答
64 浏览

c++ - 将 DirichletBC 传递给 BoundaryCondition 向量

我正在使用 FEniCS 包来做一些 FEM。我正在尝试将 DirichletBC 实例推送到 type 的向量中const BoundaryCondition*。目前我有

即使这是在我见过的示例中完成的,我也会收到错误消息

查看 dolfin 库文件,我看到一个 SWIG 类型映射 .i 文件,它似乎允许这种行为,我是使用它,还是我错过了什么?

0 投票
0 回答
548 浏览

matlab - Abaqus 复合层应变提取

我正在尝试从 Abaqus 中的复合壳模型中提取层应变。我希望能够导出(到 .dat(最好)或任何类型的文本文件)每个元素中的每个层应变。

到目前为止,我已经设法找到一种方法,将每个元素中具有最大应变的层提取到 .rpt 文件中,但我想将每个元素的所有层导出到 .dat。

我这样做是作为参数研究的一部分,需要稍后在 Matlab 中发布过程。任何有关要包含在 .inp 文件中的关键字/选项的知识将不胜感激。提前致谢!

0 投票
5 回答
359 浏览

geometry - 带有两个嘴的凹六边形的标准网格?

我正在计划通过带有两个嘴的凹双对称六边形来可视化流动。

边 d1 的长度等于边 d2 的另一个长度的示例:

在此处输入图像描述

我最初在这里讨论的关于不规则六边形的命名。

有标准的网格工具,您可以在其中绘制自己的网格,但我想要一些标准库,这样我以后可以与其他人更好地合作进行流模拟。我没有在 MathCentral File Exchange 中找到任何 Hexagons 网格

是否有任何用于不规则六边形形状的标准网格库?我也对任何其他语言持开放态度,因为我可以阅读代码并将这些标准转换为 Matlab 库。

0 投票
1 回答
352 浏览

matlab - 关于在以下代码中使用 assempde

我试图理解这段代码。因此,我简要地记下了我的理解,如果有人能澄清我的疑问,我将不胜感激。

这将返回一个 'L' 形状的 2D 三角形网格。但是,如何更改 L 形的边界?我的意思是默认的 L 形在 x 和 y 轴上的范围在 -1 到 1 之间。此外,是否还有其他形状,例如'lshapeg'...比如正方形?

现在求解由 L 形膜定义的几何形状的泊松方程 –Δu = 1。在 ∂Ω 上使用 Dirichlet 边界条件 u = 0,并绘制结果。

现在在这里我无法理解 1、0、1 的意义。我尝试更改它们并观察图形结果,但无法理解边界条件是如何应用的。另外,lshapeb 和 lshapeg 有什么区别?