问题标签 [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.
3d - 对构造实体几何 (CSG) 进行网格划分
我有许多切割立方体的几何图元(100)。这可以使用 CSG 建模。现在我需要一个相对粗糙的四边形网格来进行有限元模拟。为了生成网格,我遇到了 netgen(见图)。但是 netgen 会给我提供超过 200 万个元素的网格,我正在使用的 FE 程序无法处理这些元素。有没有可靠的程序可以完成这项工作?我已经尝试只对表面进行网格化并以某种方式对其进行粗化,但没有任何成功。
c++ - 保护数组的元素?
我目前正在尝试优化我用 C++ 编写的程序。它是使用用户定义的边界条件对任意静电系统进行有限元方法模拟。
它有效,但为了保持边界条件(可以是任意形状)不变,我在每个循环开始时重写这些元素。
为了 - 可能 - 提高计算时间和代码简洁性,我想将这些元素设置一次并保护它们。到目前为止,我设法找到的只是如何初始化整个 const 数组,而不是单个受保护的元素。
这在 C++ 中是否可行,或者是否有任何库可以做到这一点?
matlab - 给定3D三角形面积的Voronoi单元格的平方面积变化求和?
我有一个形成表面(即三角剖分)的 3D 三角形列表。该结构是变形的三角形格子。我想知道晶格的 voronoi 镶嵌的变形六边形的面积相对于未变形晶格单元的其余区域(即相对于正六边形)的变化。事实上,我真的想要与这些三角形相关的六边形晶胞的面积平方变化的总和。
背景/数学细节:我用三角形格子来近似弯曲的弹性片。调整片材泊松比(弹性常数)的一种方法是在能量中添加“体积”应变能项。我正在尝试计算变形的弹性三角形晶格的“体积”应变能,定义为:U_volumetric = 1/2 T (e_v)^2,其中 e_v=deltaV/V 由面积的变化决定一个 voronoi 单元相对于其参考区域,这是一个已知常数。
想:
Sum[ (DeltaA/ A).^2 ]
在所有六角形单元格上。
我的数据存储在变量中:
xyz = [ x1,y1,z1; x2,y2,z2; etc] %
3D 中的顶点/粒子
TRI = [ vertex0, vertex1, vertex2; etc] %
第一个三角形的粒子
所在vertex0
的行在哪里。xyz
vertex 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,所以这是一个不好的近似值。请参阅上面链接中的图像,我认为这更清楚了。
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 代码看起来没问题,还是我应该改变什么?大卫
matlab - 有限差分 - 波动方程 - 边界条件和设置
我正在研究一个项目,该项目与使用具有以下边界条件的 MATLAB 中的中心差近似以数值方式求解 2D (x, y, t) 波动方程有关:
总装公式为:
我了解一些边界条件(BC),例如
在 j=m 处,du/dy=0,
,
但我不确定如何在 MATLAB 中实现这些边界条件。
一个朋友给了我这些方程式:
这是我对 MATLAB 代码的尝试,
但我无法进一步取得进展:
algorithm - 在约束下找到节点的最佳位置 - 算法
我想将中心的节点移动到一个位置,以便所有三角形角度都接近 60 度。
我正在考虑计算每个三角形的角度标准偏差并尝试将其最小化。还有其他方法吗?
c++ - 将 DirichletBC 传递给 BoundaryCondition 向量
我正在使用 FEniCS 包来做一些 FEM。我正在尝试将 DirichletBC 实例推送到 type 的向量中const BoundaryCondition*
。目前我有
即使这是在我见过的示例中完成的,我也会收到错误消息
查看 dolfin 库文件,我看到一个 SWIG 类型映射 .i 文件,它似乎允许这种行为,我是使用它,还是我错过了什么?
matlab - Abaqus 复合层应变提取
我正在尝试从 Abaqus 中的复合壳模型中提取层应变。我希望能够导出(到 .dat(最好)或任何类型的文本文件)每个元素中的每个层应变。
到目前为止,我已经设法找到一种方法,将每个元素中具有最大应变的层提取到 .rpt 文件中,但我想将每个元素的所有层导出到 .dat。
我这样做是作为参数研究的一部分,需要稍后在 Matlab 中发布过程。任何有关要包含在 .inp 文件中的关键字/选项的知识将不胜感激。提前致谢!
matlab - 关于在以下代码中使用 assempde
我试图理解这段代码。因此,我简要地记下了我的理解,如果有人能澄清我的疑问,我将不胜感激。
这将返回一个 'L' 形状的 2D 三角形网格。但是,如何更改 L 形的边界?我的意思是默认的 L 形在 x 和 y 轴上的范围在 -1 到 1 之间。此外,是否还有其他形状,例如'lshapeg'
...比如正方形?
现在求解由 L 形膜定义的几何形状的泊松方程 –Δu = 1。在 ∂Ω 上使用 Dirichlet 边界条件 u = 0,并绘制结果。
现在在这里我无法理解 1、0、1 的意义。我尝试更改它们并观察图形结果,但无法理解边界条件是如何应用的。另外,lshapeb 和 lshapeg 有什么区别?