问题标签 [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.
simulation - 如何在 Modelica 中对液压缸的机械停止建模?
我想知道如何最有效地模拟机械停止。
我在 OpenModelica 中使用受控液压缸进行液压模拟。对于液压缸,我使用sweptVolume
Modelica 标准库中的模型。
这个模型让我烦恼的是,如果活塞到达气缸底部,就没有机械停止。
我尝试了几个想法,但没有好的结果。我试图通过 if 表达式将活塞的位移重置为零,如果它触及底部。但这并不是一个好的选择,因为体积是使用活塞的位移计算的。
然后,如果活塞撞到挡块,我尝试引入一个等于施加在活塞上的力的力。此选项也不起作用,因为在这种情况下无法计算气缸内的压力。
第三次尝试是使用MSL模型MassWithStopAndFriction
链接到模型的平移法兰sweptVolume
,但是这个模型对我来说似乎坏了。
现在我指望你们作为一个有能力的社区为我带来更多的想法来测试。
numerical-methods - 没有得到更精细的网格/网格的结果
一个特定的方案(在这种情况下是 MAC)是否有可能为一个网格大小提供准确的结果,但对于更精细的网格大小或更精细的网格,是否可能不准确/没有结果?如果是,那么如何或为什么?
fluid-dynamics - 为什么我在两个解决方案之间得到不同的结果图?
> 嗨,
我正在使用示例问题来学习 comsol。我想让我的案例问题(左)3D 情节与教程情节(右)相同。我的问题是,我得到的不是右图(显示树脂红色从左边缘移动到右边缘),而是不合格的左图。您是否知道是否可以选择获得正确的情节,或者关于为什么我获得左侧情节而不是右侧情节的建议?
先感谢您!
帕诺斯·迪马克
c++ - 流体模拟“爆炸”
以下流体模拟是Stam 的一篇论文的翻译。真正可怕的事情发生了。每次程序以低运行时DIFF=0.01
,值从小开始,然后迅速扩大,或“爆炸”。我已经仔细检查了数学例程。由于代码以 one 开头0.5
,因此在数学上它是乘以并添加一堆零,因此最终结果应该接近零密度和其他向量。
代码很长,所以我把它分成块并删除了额外的代码。减去所有开头和 SDL 代码,只有大约 120 行。我花了几个小时尝试更改无济于事,因此非常感谢您的帮助。
DIFF
经过一些实验,我相信设置太低时可能会出现一些浮点错误。当值从0.01
增加到0.02
时,值不会爆炸。不过,我不认为这是全部问题。
需要明确的是,1201ProgramAlarm 和 vidstige 的当前答案并不能解决问题。
粗体部分是重要部分,其余部分是为了完整性。
开始的东西,跳过
数学例程漫反射例程除以1+4*a
. 这是否意味着密度必须<= 1?
密度和速度求解器
我考虑了浮点数不一致,但编译后-ffloat-store
问题仍然存在。
fortran - Secant method solving for pipe diameter
I am trying to write a program to solve for pipe diameter for a pump system I've designed. I've done this on paper and understand the mechanics of the equations. I would appreciate any guidance.
EDIT: I have updated the code with some suggestions from users, still seeing quick divergence. The guesses in there are way too high. If I figure this out I will update it to working.
fortran - 割线法,否定答案
我正在尝试编写一个程序来解决我设计的泵系统的管道直径。我已经在纸上和 excel 中完成了这项工作,并了解了方程式的机制。我将不胜感激任何指导。
此时我正在编译但在第一次迭代时得到否定答案,我现在的猜测是它与我最初的猜测、传递给函数的变量或割线计算代码本身有关。phead、pump 和 hf 的三项检查都是正确的。
c++ - 流体模拟边界和平流
这种流体模拟基于Stam 的一篇论文。在第 7 页,他描述了平流背后的基本思想:
从两个网格开始:一个包含上一个时间步的密度值,另一个包含新值。对于后者的每个网格单元,我们通过速度场向后跟踪单元的中心位置。然后,我们从先前密度值的网格中线性插值,并将该值分配给当前网格单元。
建议代码。两个密度网格分别是d
和d0
,u
和v
是速度分量,dt
是时间步长,N
(全局)是网格大小,b
可以忽略:
这种方法简洁且效果很好,但是实现对象边界对我来说很棘手,因为值是向后跟踪和插值的。我目前的解决方案是,如果旁边有一个空白空间(或多个空间),则简单地将密度推出边界,但这是不准确的,会导致密度增加,尤其是在角落和具有对角线速度的区域。仅在视觉上准确。我现在正在寻找“正确性”。
我的边界代码的相关部分:
bound
是具有行和列的布尔0
向量N+1
。bound
通过将单元格坐标设置为,在主循环之前设置边界对象1
。
该论文含糊地说“然后我们只需在set_bnd()
例程中添加一些代码,以根据其直接邻居的值填充被占用单元格的值”,这就是我正在做的事情。我正在寻找一种更准确地实现边界的方法,即具有非流体固体边界,并可能最终支持多种流体的边界。视觉质量比物理正确性重要得多。
c++ - 流体模拟不可压缩流体
在基于Stam 的论文的流体模拟中,流体被建模为密度网格。密度“通常取零到一之间的值”,但可以更大。边界的实现基本上如本文所述:
实现内部边界的一种简单方法是分配一个布尔网格,该网格指示哪些单元格被对象占用。然后我们只需在 set_bnd() 例程中添加一些代码,以根据其直接邻居的值填充被占用单元格的值。
密度法适用于空气、火或烟等可压缩流体。有没有一种方法可以改变边界例程,使密度(仅限于一种流体)限制为一个值,例如 1?这将代表一个完全充满水颗粒的细胞。大于 1 的密度必须被推到相邻的单元格。Stam 列出了扩展的想法,但不包括如何:
另一个扩展是使用这个解算器作为动画水流的基础。在这种情况下,有两种密度不同的流体:水和空气。空气通常不建模,求解器更难实现,原因如下:水流体的域随时间变化,必须以某种方式进行跟踪,并且必须在界面处应用正确的边界条件。可以使用像 Foster 和 Metaxas [Foster96] 所做的那样简单地穿过流体的粒子来跟踪水域,也可以使用粒子和水平集的组合来跟踪 [Foster01,Enright02]。
python - Pygame中更有效的风洞模拟,使用numpy
我是一名航空学生,正在为我们的 Python 编程课程做一个学校项目。任务是只使用 Pygame 和 numpy 创建一个程序。我决定创建一个风洞模拟来模拟二维机翼上的气流。我想知道是否有从编程角度进行计算的更有效方法。我将解释程序:
(稳定的)流场使用涡流面板方法建模。基本上,我使用的是一个 Nx 乘以 Ny 个点的网格,其中在每个点上都给出了一个速度 (u,v) 向量。然后使用 Pygame 我将这些网格点映射为圆圈,使它们类似于一个影响区域。网格点是下图中的灰色圆圈:
我创建 N 个粒子并通过如下迭代确定它们的速度:
创建粒子列表。
创建一个网格列表。
对于网格列表中的每个网格点:
对于粒子列表中的每个粒子:
如果粒子 A 在网格点 n (xn,yn) 的影响区域内:
粒子 A 的速度 = 网格点 n 处的速度。
在 Pygame 中可视化所有内容。
这种基本方式是我能想到的在 Pygame 中可视化流程的唯一方式。模拟效果很好,但是如果我增加网格点的数量(增加流场的精度),性能就会下降。我的问题是,是否有一种更有效的方法可以仅使用 pygame 和 numpy 来做到这一点?
我在这里附上了代码:
该代码需要另一个脚本来计算流场本身。它还从文本文件中读取数据点以获取机翼的几何形状。我没有提供这两个文件,但如果需要,我可以添加它们。先感谢您。
matlab - 使用matlab模拟微流体装置中液滴的运动
我想知道,如何使用 matlab 模拟微流体设备中的液滴运动。
我会尽量缩小范围,这是一种水滴在油流中移动的情况,这是一种潜在的流动(无粘、不可压缩和无旋),在这篇论文的基础上,我已经管理了为 $\dot{x}$ 和 $\dot{y}$ 得出他们的方程(1)(第 3 页),我希望以某种电影格式在 matlab 中显示液滴的运动
我只有流体动力学的基本知识,而且我从来没有使用过 matlab,而不仅仅是实现数学方法,所以我将不胜感激任何形式的帮助,如果需要有关问题的更多细节来帮助我理解该怎么做,请让我知道
我在physics.stackexchange 网站上发帖,我被建议在这里发帖,因为它与编程有关。