问题标签 [fluid-dynamics]

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 投票
1 回答
540 浏览

python - 用于非常嘈杂的数据的 Python 快速傅立叶变换

我有一个文件,其中包含来自流体模拟的速度大小数据和涡量大小数据。

我想知道这两个数据集的频率是多少。

我的代码:

我的数据包含 117 个探测器,每个探测器都有自己的 121 个速度幅度数据点。

我的目标是找到每个探针的主要频率,然后收集所有这些频率并将它们绘制在直方图中。

我的问题是关于它说这是魔法发生的部分。我相信 fft 已经正常工作了

如果我没记错的话,freq1 列表应该包含给定探头的所有频率。我已经目视检查了这个列表,不同频率的数量非常高(20+),所以信号可能非常嘈杂。

这部分理论上应该从一个探针中获取最大的信号,而不是放在“ans”列表中。但是我对如何无法正确识别正确的频率感到有些困惑。因为理论上应该有一个主频率。如何从所有噪声中的所有这些数据中正确估计“主”频率

作为参考,我正在模拟 Von Karmann 涡街,并且正在寻找涡流脱落的频率。https://en.wikipedia.org/wiki/K%C3%A1rm%C3%A1n_vortex_street

谁能帮我解决这个问题?

0 投票
1 回答
193 浏览

javascript - 在 box2d/matter.js 中查找运动的法线和切线分量

我正在尝试重新创建一个流体阻力模型,如 本文第 2.2.1 段所示在这部 youtube 电影中可以看到一个工作版本(我在哪里找到了这篇论文)。

在论文中,他们指出他们计算了软体边缘速度的法向力和切向力。我试图了解如何从边缘速度到这两个力分量。但是,我只能找到有关基于函数(例如this)计算组件的资源,并且我正在努力将其转换为我的物理环境。实现这种流体阻力模型的方法是什么?

这是一个展示我的环境的小提琴: https ://jsfiddle.net/Swendude/1nnckp5p/

其中大部分是 matte.js 样板文件,有趣的部分是函数:pulse()applyForcesOnEdge()

我正在使用matter.js,但我可以想象同样的问题可能适用于 box2d 环境。

0 投票
0 回答
319 浏览

webgl - WEBGL 流体模拟

我正在尝试使用http://meatfighter.com/fluiddynamics/GPU_Gems_Chapter_38.pdf作为资源使用 WebGL 进行流体模拟。我已经实现了一切,但我觉得有很多事情不能正常工作。我添加了边界,但似乎它们没有任何效果,这让我怀疑有多少压力和平流正在起作用。我展示了散度,我在移动物体的位置以及速度到达边缘(边界)时几乎没有得到什么,但我得到的压力是完全空的。我使用链接资源中描述的扩散着色器计算压力。

我知道我发布的代码由于其性质而有点令人困惑。如果有帮助,我可以提供任何图片/模拟链接。

- 编辑 -

经过更多调查,我认为问题与我的平流功能有关。或者至少是一个问题。我不确定如何解决它。

我遵循的一般过程不是发布我的所有代码,而是:平流速度扩散速度加速度计算散度计算压力减梯度

对于扩散速度和计算压力,我只进行 10 次迭代,因为我的计算机可以处理我的实现(一旦我开始工作,我会优化),但我觉得计算压力和减去梯度没有任何效果。

这是我正在使用的着色器:

0 投票
1 回答
676 浏览

fortran - MPI 中的多个通信器

这个问题的背景是一些计算领域,例如计算流体动力学(CFD)。我们经常在一些关键区域需要更精细的网格/网格,而背景网格可能更粗糙。例如,自适应细化网格可跟踪气象学中的冲击波和嵌套域。

使用笛卡尔拓扑,域分解如下图所示。在这种情况下,使用 4*2=8 个处理器。单个数字表示处理器的等级,(x,y) 表示其拓扑坐标。 图 1. 基本拓扑

假设网格在等级为 2、3、4、5(中间)的区域中进行了细化,在这种情况下,局部细化率定义为 R=D_coarse/D_fine=2。由于网格是细化的,所以时间推进也应该细化。这需要在细化区域中计算时间步长 t、t+1/2*dt、t+dt,而在全局区域中仅计算时间步长 t 和 t+dt。这需要一个较小的通信器,它只包括中间的秩以进行额外的计算。全局等级+坐标和对应的局部坐标(红色)草图如下所示:

局部细化及其秩和拓扑坐标

但是,我在执行此方案时遇到了一些错误,并且显示了 Fortran 中的代码段(不完整):

当我运行程序时,问题来自“**** 获得本地通信器的排名”步骤。我的想法是构建两个通信器:全局和本地通信器,本地通信器嵌入到全局通信器中。然后分别在全局和局部通信器中创建它们对应的拓扑关系。如果我的概念错误或某些语法错误,我不会。如果您能给我一些建议,非常感谢。

错误信息是

0 投票
2 回答
370 浏览

javascript - 为什么我的水会爆炸?

我正在尝试实现用于在 JavaScript 中模拟流体的Clavet 方法,所以调试是一场噩梦,这就是我在这里问的原因,希望经历过同样事情的人能告诉我我做错了什么。

到目前为止,我的工作正常:

粒子基本上起作用

但是我有两个问题:

1)由于在这种方法中,所有东西都有点“偏移”半步,我不确定如何正确地将粒子从墙上反弹。现在,我获取粒子的位置和之前的位置,并将它们围绕交叉的墙壁翻转,然后通过反弹因子围绕交叉点进行缩放。

我的反思方法

我的逻辑告诉我这应该有效。算法的下一步是更新粒子速度,所以我也反映了之前的位置。但在实践中,这给了我一个我不明白的结果:

反射力太大

这显示了粒子上的“力”。墙壁反射了太多的力量,这让一切都保持在永恒的运动中。

本文中的公式 4.58 显然显示了一种防止这种情况的方法,但我无法让它发挥作用。

论文中还有一些我没有得到的东西,比如“我们只想反映碰撞中省略的速度”的意思。为什么?有人可以把这些东西给我吗?

2)即使不涉及墙壁,模拟也会周期性地“爆炸”。这种情况在更高的压力下发生得更多:

爆炸模拟

JavaScript,所以有但我已经检查了代码,没有除以零或我可以想象发生 NaN 的情况。

我在报纸上看到过一些关于 sim 不稳定的讨论,我想知道是不是这样。这部文学作品中的大部分内容都超出了我的理解范围。

据我所知(我认为),消除不稳定性的方法之一是粘度,但我添加了它,但它对爆炸没有帮助:

粘度不能防止爆炸

我可以发布代码,但在开始工作的第一阶段,现在有点难以阅读。

最后一个问题:我如何弄清楚如何从这种方法中的伪常数转换为物理单位?

编辑:我发现 sim 偶尔会冻结,似乎它确实在某处产生了 NaN,但 Chrome 捕捉到它为时已晚。

0 投票
0 回答
144 浏览

c# - Unity 中奇怪的流体模拟振荡

我正在尝试使用GPU 上的快速水力侵蚀模拟和可视化论文作为模拟水的模板来实现流体表面模拟。但是,我得到这样的工件:

波伪影

我的更新功能的代码如下,我已经关注了关于这个主题的另一篇文章,但更改没有帮助。

可能是因为使用 this 而不是 ref 吗?我与下面写的水面互动的方式。

即只是在各个方向的某个点改变通量。

我尝试过的一些解决方案是改变高度,但这不起作用或仅限制小的变化,但它只是建立起来。边界条件是所有边界上的零通量,并且高度将与最近点相同。

0 投票
1 回答
591 浏览

matlab - 势流,在matlab中定义theta

我已经为圆柱周围的潜在流动制作了这个 matlab 脚本,我想添加一个点源。见图中点源的定义。matlab怎么定义theta?并绘制它的流线 Psi?

在此处输入图像描述

0 投票
0 回答
1237 浏览

matlab - 在 Matlab 中使用牛顿求解 Colebrook 方程

我制作了这个脚本:

这部分用于创建 de 变量 Re 和 Ru 所以,我可以替换使用另一个。接下来,创建表达式,以便 MATLAB 可以推导它。

这是 Newton-Rapson 的脚本,它适用于其他表达式。

当我运行脚本时,迭代永远不会结束,继续无穷大。为数据获得的摩擦系数为 0.016

0 投票
1 回答
1648 浏览

python - plotting streamlines with python

I am trying to plot streamlines and velocity potential for basic potential flows (uniform, source/sink, vortex, etc.)

I am just starting out with python and so I'm a little confused. I am following this guide..

I can plot the streamlines for the flow around a cylinder using this function

and it works. But when I change the return statement to

for uniform flow I get the following error

I checked the type for the return object and it is <class 'sympy.core.mul.Mul'> with the first return statement and <class 'sympy.core.symbol.Symbol'> with the second one. Maybe this is related to why it doesn't work but I'm not sure how?

I plot the streamlines with the following

Can someone please help me understand why this doesn't work and how I can get it to work? Thank you!

0 投票
1 回答
63 浏览

matlab - 关于符号 MATLAB

以下代码有什么问题?

当我运行上述命令时,它会出现在命令窗口中。

但是如果我在第一个构造之后重写(重新定义)符号变量if,它运行良好。此外,如果我取消第一个if构造,它就会运行。