问题标签 [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 回答
996 浏览

python - 如何在 Python 中为极地使用 quiver?

首先,是的,我已经阅读了有关此问题的先前线程和文档,例如How to make a quiver plot in polar coordinates。这对我没有帮助。让我向您展示我正在使用的内容,然后是一些代码。在此处输入图像描述 这是一个会聚的运河,它显示了一个速度/矢量场。显然我只有一个径向分量,但它会随着角度 theta 而变化。当我们向下(流)向 alpha 时,这种箭头模式会重复。所以它应该很容易绘制,对吧。这是径向速度分量的方程:

在此处输入图像描述 现在,在我展示我的代码之前,我已经为多个 theta 存储了 f(theta) 的值。这个函数 f 必须进行数值求解,我将其存储为向量 u[0]。这就是我现在在我的代码中所做的:

变量 dr 的第五个表达式是拼命尝试将网格网格中所有固定长度的 r 与 u[0] 相乘,但它们的维度不同,因此它不起作用。所以我被困住了。

我的问题是如何获得汇流管的矢量场?我真的不能把最后的部分放在一起,我要操纵网格吗?

迄今为止在 MATLAB 中的结果: 在此处输入图像描述

编辑上面的代码取自我文本开头的链接。我对 dr 和 dt 做了一些修改,除此之外什么都没有。

0 投票
1 回答
77 浏览

numerical-methods - 乘风破浪双曲 PDE 的数值方案,lorena barba 课程,需要帮助

我是一名 Python 初学者,正在尝试了解计算机科学,我一直在通过学习我已经熟悉的概念/主题来学习如何使用它,例如计算流体力学和有限元分析。我获得了机械工程学位,因此没有多少CS背景。

我正在学习 Lorena Barba 在 jupyter notebook viewer 上的系列,实用数值方法,我正在寻求一些帮助,希望有人熟悉 CFD 和 FEA 的一般主题。

如果您单击下面的链接并转到以下输出行,您会在下面找到我的内容。对在定义的函数内操作的这段代码真的很困惑。

反正。如果有人在那里,对如何解决学习 python 有任何建议,帮助

在[9]

http://nbviewer.jupyter.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/03_wave/03_02_convectionSchemes.ipynb

0 投票
0 回答
54 浏览

matlab - 对于matlab上具有3个变量的一阶和二阶普通非线性微分方程,我应该使用什么求解器?

在流体动力学问题中,我被要求绘制在空气中落下的水滴相对于时间的相对关系。相对速度是 x、y 和 z 方向上的速度的一个组成部分,我尝试在 matlab 文档中寻找可能的解决方案,但所有示例都是针对较少数量的变量。 https://www.mathworks.com/help/matlab/math/differential-equations.html?searchHighlight=differential%20equations&s_tid=doc_srchtitle

0 投票
1 回答
51 浏览

neural-network - NN可以通过速度而不是求解泊松方程来预测压力吗?

在基于 Chorin 投影法的不可压缩 CFD 代码中,速度分为 2 个部分:

$\Delta u=\Delta u^*+\Delta u' $,在哪里$\Delta u^*=\nu \nabla^2 v+f$。在经典方法中,压力#p#将通过泊松方程求解,然后$u'$将通过其梯度计算。

在我的代码中,使用一个简单的 NN 模型通过 $u^*$ 来预测压力,它的工作原理大致相同。然而,$\nabla \cdot \Delta u$在整个流动区域内应该为零的速度散度不能保持为零。

我认为这一定是我简单的NN模型的问题,我只是想知道NN可以直接用条件预测速度$\nabla \cdot \Delta u = 0$吗?

0 投票
1 回答
1361 浏览

python - Python 热分布图

我一直在尝试模拟空间中的流量分布,但无法弄清楚如何在 python 中使用 matplotlib、seaborn、plotly 等正确地做到这一点。

我有 3 个变量

X:0~0.4(网孔142个)

Y:0~0.45(网孔17767片)

T:值从 300 开尔文开始并沿房间分布(142x17767)

为了解释更多,我有一个 142x17767 的矩形区域,我想在每个点上绘制热分布。我已经从 matplotlib 尝试了 seaborn 的热图和 hist2d,但是这些方法需要 x 和 y 维度具有相同的长度。

0 投票
1 回答
241 浏览

c++ - MULES 是修正输运方程的正确选择吗?[开放泡沫]

我想解决以下修改后的传输方程来计算灵敏度:

https://latex.codecogs.com/gif.latex?%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%20t%7D%20%28%5Cdelta%20%5Calpha%29%20+%20%5Cnabla% 20%5Ccdot%20%28%5Cvec%7Bu%7D%20%5C%20%5Cdelta%20%5Calpha%29%20+%20%5Cnabla%20%5Ccdot%20%28%5Cdelta%20%5Cvec%7Bu %7D%20%5C%20%5Calpha%29

在 interFoam 中,我在求解后立即实现了以下代码alphaEqn.H(以及初始字段dAlphadU、计算dPhi和其他修改):

它有效,但我不确定是否MULES::explicitSolve是解决这个等式的正确方法。经过几个时间步骤后,溶液会严重涂抹。你会推荐什么?

0 投票
1 回答
176 浏览

modelica - 方程的实例化

我正在尝试对泵系统进行建模。该系统由一个控制器、两个 ON/OFF 阀和一个用作腔室的扫过容积组成。控制器负责阀门的状态以及填充和泵送。将所有组件连接在一起时,我开始收到错误消息,例如“无法在组件之间实例化方程式”,例如在扫描体积和第一个阀门之间。我试图从整个系统中删除阀门并将活塞直接连接到源,但随后我在活塞位移及其输入之间收到错误消息“无法实例化方程..”。

我不明白我的问题在哪里。是模型本身无法将它们连接在一起还是我错过了其他东西?

我显然不是模型专家,但我当然掌握了基础知识。

为了让事情更清楚,这是我的模型的链接:

https://www.dropbox.com/s/g9dr40jame3lk2n/pumpsystem.zip?dl=0

任何帮助,将不胜感激。

0 投票
1 回答
105 浏览

java - JScience:创建一个定义为多个变量组合的单元

几个月前我发现了 JScience,它对我的​​项目有很大的帮助,尽管我正在为一件事而苦苦挣扎。

我正在尝试创建一个PressureHead(又名水柱)单元,可以直接使用给定值进行转换,也可以使用给定值Length间接进行转换。PressureVolumetricDensity

寻找压力:Density × Gravity × Head = Pressure

这是来自Wikipedia的示例转换:

1 cmH 2 O (4°C) = 999.9720 kg/m 3 × 9.80665 m/s 2 × 1 cm = 98.063754138 Pa

1 cmH 2 O 可以直接换算成1 cm。

假设我知道以 Pa 为单位的压力,并想找到以 mH 2 O 为单位的压头,这是我在项目中最常进行的转换。我还需要知道流体的密度。压力和密度是可变输入。重力也必须是已知的公式,但出于我的目的,它可以固定为标准重力。

查找压头:Pressure / (Density × Gravity) = Head

为简单起见,我只是重新利用了上述示例中的值,将压力乘以 100 得到 1 mH 2 O 而不是 1 cmH 2 O。

9806.3754138 Pa / (999.9720 kg/m 3 × 9.80665 m/s 2 ) = 1 mH 2 O

看起来 JScience 可能足够灵活以允许这样的单元,但我还没有看到任何示例来帮助我创建它。最坏的情况,我可能会满足于使用 util 方法在它们之间进行转换。

编辑

我希望看到的一些理想用法示例:

单位之间的转换PressureHead很容易。我可以像这样定义其他单位:

对于上面的理想用法,我需要子类化Amount和重载to()and doubleValue()。我怀疑是否有更合适的方式进行转换(尽管不是很漂亮),它涉及子类UnitConverter化和/或DerivedUnit基于 - 的类之一。

我的一部分想放弃,走捷径(和丑陋)的 util 方法,这样我就可以继续做更重要的事情,另一部分想找到一个让我更喜欢 JScience 的解决方案。

0 投票
1 回答
99 浏览

glsl - 格子玻尔兹曼 WebGL 翻译结果到处都是 NaN

我从这个博客中遇到了格子玻尔兹曼流体求解器的实现,该博客介绍了它的实现。我决定用 webgl 把它翻译成 ShaderToy。着色器玩具的局限性迫使我使用多个纹理帧,而不是计算平衡所需的每个步骤。

我的算法基本上是这样的:

  • 从纹理 B、C 和 D 计算纹理 A 中每个单元的体积速度和密度,这些纹理 B、C 和 D 包含 9 个方向分量(B 中的每个 vec4 中的 NW、N、NE、W,每个 vec4 中的 E、SW、S、SE C,在 D 中的每个 vec4 中居中)。

  • 计算完这些分量后,重新计算每个纹理帧 B、C、D 的每个必要单元的流/平流,并从 A 中获取密度和速度分量来计算平衡。

  • 将每个方向的最终值设置为new_direction - (new_direction - new_direction_equilibrium), ie(north_west - (north_west - north_west_eq))`。这与参考代码没有任何不同。

另外我环绕坐标,所以没有边界条件以避免处理边界逻辑,并且用户单击以在晶格中引起干扰,这将“不移动”方向值设置为一个数字。

然而,在我的代码中,我最终得到了很多 NaN(这里用白色着色,红色代表密度),我不知道为什么。我在代码中的位置放置了安全卫士,以避免零密度导致问题,但这似乎没有任何作用。

在此处输入图像描述

在此处输入图像描述

强文本

您可以在 shadertoy 上进行测试,但我的代码如下:

|

|

|

|

|

我做错了什么导致所有这些Nans?有没有办法阻止他们?

0 投票
3 回答
1494 浏览

python - 基于给定的散点几何量化二维表面的粗糙度

如何设计一个简单的代码来根据给定的几何散点自动量化二维粗糙表面?例如,要使用数字,r=0 表示光滑表面,r=1 表示非常粗糙的表面,当 0 < r < 1 时,表面介于光滑和粗糙之间。

为了更明确地说明这个问题,下图用于显示几个二维粗糙表面的草图。点是具有给定坐标的散点。因此,可以连接每两个相邻的点,并且可以计算每个段的法线向量(用箭头标记)。我想设计一个类似的功能

其中xy是每个散点的坐标序列。例如,在情况 (a) 中,x=[0,1,2,3,4,5,6], y=[0,1,0,1,0,1,0]; 在情况 (b), x=[0,1,2,3,4,5], y=[0,0,0,0,0,0]. 当我们调用函数roughness(x, y)时,我们将得到 r=1(非常粗糙)对于 case (a) 和 r=0 (smooth) 对于 case (b)。对于情况(d),可能 r=0.5(中)。问题被细化为我们需要在函数中放置哪些适当的组件roughness

一些初步的想法:

表面的粗糙度是一个局部概念,我们只在特定区域范围内考虑,即只考虑感兴趣位置周围的几个局部点。使用局部法线向量的平均值?这可能会失败:(a)和(b)具有相同的平均值,(0,1),但(a)是粗糙表面,(b)是光滑表面。使用局部法线向量的方差?这也可能失败:(c)和(d)具有相同的方差,但(c)比(d)更粗糙。

2D 粗糙表面草图