液体力#
液体力学的精确模拟超出了 MuJoCo 的范围,并且对于我们旨在支持的应用来说速度太慢。尽管如此,我们提供了两种唯象模型,足以模拟飞行和游泳等行为。这些模型是无状态的,即没有为周围流体分配额外的状态,但它们能够捕捉刚体在流体介质中运动的显著特征。
通过将密度 (density) 和 粘度 (viscosity) 属性设置为正值来启用这两种模型。这些参数对应于介质的密度 \(\rho\) 和粘度 \(\beta\)。
提示
如 数值积分 部分所述,隐式积分在存在与速度相关的力时显著提高了仿真稳定性。下面描述的两种液体力模型都具有此特性,因此在使用液体力时建议使用 implicit
或 implicitfast
积分器。这两种模型所需的解析导数已完全实现。
惯性模型#
在此模型中,为了液体力学目的,每个物体的形状被假定为等效惯性箱体,该箱体也可以被可视化。对于质量为 \(\mathcal{M}\) 和惯性矩阵为 \(\mathcal{I}\) 的物体,等效惯性箱体的半尺寸(即半宽、半深和半高)为
设 \(\mathbf{v}\) 和 \(\boldsymbol{\omega}\) 分别表示物体在局部坐标系(与等效惯性箱体对齐)中的线速度和角速度。流体作用在固体上的力 \(\mathbf{f}_{\text{inertia}}\) 和扭矩 \(\mathbf{g}_{\text{inertia}}\) 是以下各项的总和
此处的下标 \(D\) 和 \(V\) 分别表示二次阻力和粘性阻力。
二次阻力项取决于流体的密度 \(\rho\),与物体速度的平方成比例,并且在高雷诺数下是液体力的有效近似。扭矩是通过对由旋转产生的力在表面积上积分而获得的。力和扭矩的第 \(i\) 个分量可以写成
粘性阻力项取决于流体粘度 \(\beta\),与物体速度呈线性关系,并近似低雷诺数下的液体力。注意,粘度可以独立于密度使用,以使仿真更阻尼。我们在低雷诺数下使用半径为 \(r_{eq} = (r_x + r_y + r_z) / 3\) 的等效球体的公式。局部物体坐标系中产生的 3D 力和扭矩为
通过指定非零的 风 (wind) 也可以影响这些力,风是在液体力学计算中从物体线速度中减去的 3D 向量。
椭球体模型#

图中所示的可飞行果蝇 (Drosophila Melanogaster) 模型在Vaxenburg et al. [VSM+24]中有详细描述。#
在本节中,我们基于对几何形状的椭球体近似,描述并推导了一个无状态模型,用于模拟周围流体作用在运动刚体上的力。与上一节基于惯性的模型相比,该模型提供了对不同类型液体力的更精细控制。该模型的激励用例是昆虫飞行,参见右图。
概述#
通过将 fluidshape 属性设置为 ellipsoid
来为每个几何体激活该模型,这也会禁用父物体的基于惯性的模型。fluidcoef 属性中的 5 个数字对应于以下语义
索引 |
描述 |
符号 |
默认值 |
---|---|---|---|
0 |
钝体阻力系数 |
\(C_{D, \text{blunt}}\) |
0.5 |
1 |
细长体阻力系数 |
\(C_{D, \text{slender}}\) |
0.25 |
2 |
角阻力系数 |
\(C_{D, \text{angular}}\) |
1.5 |
3 |
库塔升力系数 |
\(C_K\) |
1.0 |
4 |
马格努斯升力系数 |
\(C_M\) |
1.0 |
该模型的元素是将 Andersen 等人 [APW05b] 推广到 3 维。流体作用在固体上的力 \(\mathbf{f}_{\text{ellipsoid}}\) 和扭矩 \(\mathbf{g}_{\text{ellipsoid}}\) 是以下各项的总和
其中下标 \(A\)、\(D\)、\(M\)、\(K\) 和 \(V\) 分别表示附加质量、粘性阻力、马格努斯升力、库塔升力和粘性阻力。\(D\)、\(M\) 和 \(K\) 项分别按上述 \(C_D\)、\(C_M\) 和 \(C_K\) 系数缩放,粘性阻力随流体粘度 \(\beta\) 缩放,而附加质量项无法缩放。
符号#
我们描述物体在密度为 \(\rho\) 的无粘、不可压缩静止流体中的运动。模型中,任意形状的物体被描述为半轴为 \(\mathbf{r} = \{r_x, r_y, r_z\}\) 的等效椭球体。问题在一个与椭球体侧面平行并随之移动的参考系中描述。物体具有速度 \(\mathbf{v} = \{v_x, v_y, v_z\}\) 和角速度 \(\boldsymbol{\omega} = \{\omega_x, \omega_y, \omega_z\}\)。我们还将使用
雷诺数是流体内惯性力与粘性力之比,定义为 \(Re=u~l/\beta\),其中 \(\beta\) 是流体的运动粘度,\(u\) 是流动的特征速度(或者,通过坐标系变换,是物体的速度),\(l\) 是流动或物体的特征尺寸。
我们将使用 \(\Gamma\) 表示环量,它是速度场沿闭合曲线的线积分 \(\Gamma = \oint \mathbf{v} \cdot \textrm{d} \mathbf{l}\),并且根据斯托克斯定理,\(\Gamma = \int_S \nabla \times \mathbf{v} \cdot \textrm{d}\mathbf{s}\)。在流体动力学符号中,符号 \(\boldsymbol{\omega}\) 通常用于表示涡量,定义为 \(\nabla \times \mathbf{v}\),而不是角速度。对于刚体运动,涡量是角速度的两倍。
最后,我们使用下标 \(i, j, k\) 来表示对称应用于 \(x, y, z\) 的方程组。例如 \(a_i = b_j + b_k\) 是以下 3 个方程的简写
椭球体投影#
我们给出以下结果。
引理
给定一个半轴为 \((r_x, r_y, r_z)\) 且与坐标轴 \((x, y, z)\) 对齐的椭球体,以及一个单位向量 \(\mathbf{u} = (u_x, u_y, u_z)\),该椭球体投影到与 \(\mathbf{u}\) 垂直的平面上的面积为
附加质量#
对于在流体中运动的物体,附加质量或虚拟质量衡量了由于物体的运动而移动的流体的惯性。它可以从势流理论中导出(也就是说,即使是无粘流体也存在附加质量)。
参照Lamb [Lam32] 的第五章,由于流体从静止开始运动而施加在运动物体上的力 \(\mathbf{f}_{V}\) 和扭矩 \(\mathbf{g}_{V}\) 可以写成
其中 \(\mathcal{T}\) 是仅考虑流体的动能。这些力通常被称为附加质量力或虚拟质量力,因为它们是由于被加速物体移动或偏转流体的惯性所致。事实上,对于具有恒定线速度的物体,这些力会减小到零。我们将物体视为具有三个对称平面,因为在此假设下,动能大大简化,可以写成
为了方便,我们引入附加质量向量 \(\mathbf{m}_A = \{m_{A, x}, m_{A, y}, m_{A, z}\}\) 和附加转动惯量向量 \(\mathbf{I}_A = \{I_{A, x}, I_{A, y}, I_{A, z}\}\)。这些量中的每一个都应该估计由于物体沿相应方向的运动而移动的流体的惯性,并且可以从势流理论中为一些简单的几何形状推导出来。
对于具有三个对称平面的物体,我们可以用紧凑的形式写出由附加惯性产生的力和扭矩
这里 \(\circ\) 表示按元素乘积, \(\dot{\mathbf{v}}\) 是线加速度, \(\dot{\boldsymbol{\omega}}\) 是角加速度。 \(\mathbf{m}_A \circ \mathbf{v}\) 和 \(\mathbf{I}_A \circ \boldsymbol{\omega}\) 分别是虚拟线动量和虚拟角动量。
对于半轴为 \(\mathbf{r} = \{r_x, r_y, r_z\}\) 体积为 \(V = 4 \pi r_x r_y r_z / 3\) 的椭球体,虚拟惯性系数由Tuckerman [Tuc25] 推导。令
应该注意,这些系数是无量纲的(即如果所有半轴都乘以同一个标量,系数保持不变)。椭球体的虚拟质量是
虚拟转动惯量是
粘性阻力#
阻力作用于抵抗物体相对于周围流体的运动。我们发现粘性力也有助于降低包含流体动力学项的运动方程的刚度。因此,我们选择偏向保守的一面,并选择了可能高估耗散的粘性项近似值。
尽管最终是由粘性耗散引起,但在高雷诺数下,阻力与粘度无关,并与速度的平方成比例。它可以写成
其中 \(C_D\) 是阻力系数, \(A_D\) 是参考表面积(例如,衡量垂直于流动的平面上的投影面积), \(I_D\) 是参考转动惯量。
即使对于简单的形状,术语 \(C_D\)、\(A_D\) 和 \(I_D\) 也需要根据具体问题的物理和动力学尺度进行调整 [DHD15]。例如,阻力系数 \(C_D\) 通常随雷诺数的增加而减小,并且单个参考面积 \(A_D\) 可能不足以解释高度不规则或细长体的表面阻力。例如,实验拟合来自从下落的扑克牌 [APW05a, APW05b, WBD04] 到粒子输运 [BB16, Lot08] 的问题。参见右侧 cards.xml 模型的屏幕截图。
我们基于两个表面 \(A^\text{proj}_\mathbf{v}\) 和 \(A_\text{max}\) 推导了 \(\mathbf{f}_\text{D}\) 的公式。第一个表面 \(A^\text{proj}_\mathbf{v}\) 是物体在垂直于速度 \(\mathbf{v}\) 的平面上的圆柱投影。第二个表面是最大投影面积 \(A_\text{max} = 4 \pi r_{max} r_{min}\)。
\(A^\text{proj}_\mathbf{v}\) 的公式和推导在上面的 引理 中给出。
我们为角阻力提出了一个类似的模型。对于每个笛卡尔轴,我们考虑物体围绕该轴旋转时获得的最大扫掠椭球体的转动惯量。由此产生的转动惯量对角项是
给定这个参考转动惯量,角阻力扭矩计算为
这里 \(\mathbf{I}_\text{max}\) 是一个向量,其每个分量等于 \(\mathbf{I}_D\) 的最大分量。
最后,粘性阻力项,也称为线性阻力,在雷诺数约为或低于 \(O(10)\) 时能很好地近似流体作用力。这些力是根据等效球体的斯托克斯定律计算的 [Lam32, Sto50]
这里, \(r_D = (r_x + r_y + r_z)/3\) 是等效球体的半径, \(\beta\) 是介质的运动粘度(例如,常温空气约为 \(1.48~\times 10^{-5}~m^2/s\),水约为 \(0.89 \times 10^{-4}~m^2/s\))。举一个定量的例子,如果 \(u\cdot l \lesssim 2 \times 10^{-4}~m^2/s\),斯托克斯定律对于室温空气是精确的,其中 \(u\) 是速度, \(l\) 是物体的特征长度。
粘性升力#
库塔-儒可夫斯基定理计算了一个在均匀流中以速度 u 平移的二维物体的升力 \(L\) 为 \(L = \rho u \Gamma\)。这里, \(\Gamma\) 是物体周围的环量。在接下来的小节中,我们定义了两种环量的来源以及由此产生的升力。
马格努斯力#

绕旋转圆柱体的流体烟流可视化 (WikiMedia Commons, CC BY-SA 4.0)。由于粘度,旋转的圆柱体使来流向上偏转,并受到向下的力(红色箭头)。#
马格努斯效应描述了旋转物体在流体中运动时的现象。通过粘性效应,旋转物体会在周围流体中诱导旋转。这种旋转会使流体绕过物体的轨迹发生偏转(即导致线加速度),而物体会受到一个相等且相反的反作用力。对于圆柱体,单位长度圆柱体的马格努斯力可以计算为 \(F_\text{M} / L = \rho v \Gamma\),其中 \(\Gamma\) 是由旋转引起的流体环量, \(v\) 是物体的速度。我们对于任意物体估计这个力为
其中 \(V\) 是物体的体积, \(C_M\) 是力的系数,通常设为 1。
举个例子很有意义。为了减少变量,假设物体只沿一个方向旋转,例如 \(\boldsymbol{\omega} = \{0, 0, \omega_z\}\),并沿另外两个方向平移,例如 \(\mathbf{v} = \{v_x, v_y, 0\}\)。附加质量力与马格努斯效应力沿,例如, \(x\) 方向的合力是
注意这两个项的符号相反。
库塔条件#
驻点是流场中速度为零的位置。对于在流体中运动的物体(在二维情况下,在随物体运动的参考系中),存在两个驻点:一个在前端,流线在此分离并流向物体的两侧;另一个在后端,流线在此重新汇合。一个带有尖锐尾缘(后端边缘)的运动物体会在周围流体中产生足够强的环量,以将后驻点保持在尾缘。这就是库塔条件,一个流体动力学现象,可以在带有尖角的固体物体上观察到,例如细长体或翼型的后缘。
库塔条件示意图。蓝色线条是流线,两个品红色点是驻点。连接两个驻点的分离流线用绿色标记。分离流线和物体划定了一个区域,据说该区域流体“分离”并在内部再循环。这种环量在平板上产生了向上的力。#
对于上面图中所示的二维流场,由于库塔条件产生的环量可以估计为: \(\Gamma_\text{K} = C_K ~ r_x ~ \| \mathbf{v}\| ~ \sin(2\alpha)\),其中 \(C_K\) 是升力系数, \(\alpha\) 是速度向量与其在表面上投影之间的夹角。单位长度的升力可以根据库塔-儒可夫斯基定理计算为 \(\mathbf{f}_K / L = \rho \Gamma_\text{K} \times \mathbf{v}\)。
为了将升力方程扩展到三维运动,我们考虑物体横截面的法向量 \(\mathbf{n}_{s, \mathbf{v}} = \{\frac{r_y r_z}{r_x}v_x, \frac{r_z r_x}{r_y}v_y, \frac{r_x r_x}{r_z}v_z\}\),该横截面产生了物体在垂直于速度的平面上的投影 \(A^\text{proj}_\mathbf{v}\)(如上面的 引理 中所示),以及相应的单位向量 \(\hat{\mathbf{n}}_{s, \mathbf{v}}\)。我们使用这个方向将 \(\mathbf{v}\) 分解为 \(\mathbf{v}_\parallel ~+~ \mathbf{v}_\perp\),其中 \(\mathbf{v}_\perp = \left(\mathbf{v} \cdot \hat{\mathbf{n}}_{s, \mathbf{v}}\right) \hat{\mathbf{n}}_{s, \mathbf{v}}\)。我们写出升力为
这里, \(\hat{\mathbf{v}}\) 是沿 \(\mathbf{v}\) 方向的单位法向量。注意, \(\hat{\mathbf{n}}_{s, \mathbf{v}}\) 的方向仅在物体半轴不相等的平面上与 \(\hat{\mathbf{v}}\) 不同。因此,例如,对于球形物体, \(\hat{\mathbf{n}}_{s, \mathbf{v}} \equiv \hat{\mathbf{v}}\),并且根据定义 \(\mathbf{f}_\text{K} = 0\)。
让我们用一个例子来阐述这个关系。假设一个物体具有 \(r_x = r_y\) 和 \(r_z \ll r_x\)。注意向量 \(\hat{\mathbf{n}}_{s, \mathbf{v}} \times \hat{\mathbf{v}}\) 给出了由固体物体偏转流体引起的环量方向。沿 \(z\) 方向,环量将正比于 \(\frac{r_y r_z}{r_x}v_x v_y - \frac{r_z r_x}{r_y}v_x v_y = 0\)(由于 \(r_x = r_y\))。因此,在固体形状钝圆的平面上,运动不会产生环量。
现在,为了简化,令 \(v_x = 0\)。在这种情况下,沿 \(y\) 方向的环量也为零,它正比于 \(\frac{r_y r_z}{r_x}v_x v_z - \frac{r_y r_x}{r_y}v_x v_z\)。唯一的非零环量分量将沿 \(x\) 方向,并正比于 \(\left(\frac{r_x r_z}{r_y} - \frac{r_x r_y}{r_z}\right) v_y v_z \approx \frac{r_x^2}{r_z} v_y v_z\)。
我们将有 \(\mathbf{v}_\parallel = \{v_x, 0, v_z\}\),环量 \(\Gamma \propto \{r_z v_y v_z, ~ 0,~ - r_x v_x v_y \} / \|\mathbf{v}\|\)。运动在固体形状钝圆的平面上不会产生环量,而在另外两个平面上,环量为 \(\Gamma \propto r_\Gamma ~ \|\mathbf{v}\|~ \sin(2 \alpha) ~ = ~2 r_\Gamma ~\|\mathbf{v}\| ~\sin(\alpha)~\cos(\alpha)\),其中 \(\alpha\) 是速度与其在平面上(例如,垂直于 \(x\) 的平面上)物体投影之间的夹角(例如,在垂直于 \(x\) 的平面上,我们有 \(\sin(\alpha) = v_y/\|\mathbf{v}\|\) 和 \(\cos(\alpha) = v_z/\|\mathbf{v}\|\)),而 \(r_\Gamma\) 是平面上的升力表面(例如,对于垂直于 \(x\) 的平面,是 \(r_z\))。此外,环量的方向由叉积给出(因为固体边界将输入流速“旋转”到其在物体上的投影方向)。
致谢#
本节中模型的设计和实现是 Guido Novati 的工作。
参考文献#
- APW05a
A Andersen, U Pesavento, and Z Jane Wang. Unsteady aerodynamics of fluttering and tumbling plates. Journal of Fluid Mechanics, 541:65–90, 2005.
- APW05b(1,2)
Anders Andersen, Umberto Pesavento, and Z Jane Wang. Analysis of transitions between fluttering, tumbling and steady descent of falling cards. Journal of Fluid Mechanics, 541:91–104, 2005.
- BB16
Gholamhossein Bagheri and Costanza Bonadonna. On the drag of freely falling non-spherical particles. Powder Technology, 301:526–544, 2016.
- DHD15
Zhipeng Duan, Boshu He, and Yuanyuan Duan. Sphere drag and heat transfer. Scientific reports, 5(1):1–7, 2015.
- Lam32(1,2)
Horace Lamb. Hydrodynamics. Sixth edition. Cambridge University Press, 1932.
- Lot08
E Loth. Drag of non-spherical solid particles of regular and irregular shape. Powder Technology, 182(3):342–353, 2008.
- Sto50
GG Stokes. On the effect of internal friction of fluids on the motion of pendulums. Trans. Camb. phi1. S0c, 9(8):106, 1850.
- Tuc25
LB Tuckerman. Inertia factors of ellipsoids for use in airship design. US Government Printing Office, 1925.
- VSM+24
Roman Vaxenburg, Igor Siwanowicz, Josh Merel, Alice A Robie, Carmen Morrow, Guido Novati, Zinovia Stefanidi, Gwyneth M Card, Michael B Reiser, Matthew M Botvinick, Kristin M Branson, Yuval Tassa, and Srinivas C Turaga. Whole-body simulation of realistic fruit fly locomotion with deep reinforcement learning. bioRxiv, 2024. doi:10.1101/2024.03.11.584515.
- WBD04
Z Jane Wang, James M Birch, and Michael H Dickinson. Unsteady forces and flows in low reynolds number hovering flight: two-dimensional computations vs robotic wing experiments. Journal of Experimental Biology, 207(3):449–460, 2004.