跳到主要内容
Sandbox Physics

复分析 · 流体几何

Schwarz–Christoffel 流动映射器

保角映射保住了角度,为什么还会改变角点附近的流速? 保角映射在每个小区域上,各个方向都按同一比例伸缩、旋转,局部角度就保住了。长度乘上这个比例,流速则要除以它:哪里被压缩,哪里就流得快。绕过凸出的尖角时,理想流速在角尖趋于无穷;在凹进去的角里,流速降到零。

两个平面并排显示:直壁上方的简单流动,经映射变成台阶、斜坡或多边形凸起上方的流动。移动两边联动的探针,检查角度是否保持不变,再把角点处的加速和壁面误差、数值积分误差放在一起比较。

交互模型Schwarz–Christoffel 流动映射器
原像探针 ζp\zeta_p−0.80+0.55i-0.80+0.55i
局部尺度 ∣f′(ζp)∣|f'(\zeta_p)|11
实际速度 ∣W′/f′∣|W'/f'|11
壁面法向比例 ∣vn∣/∣v∣|v_n|/|v|00
角度误差 ∣cos⁡θ∣|\cos\theta|00
路径积分残差 εf\varepsilon_f00
台阶闭式解误差00

物理教程

Schwarz–Christoffel:藏在复导数里的多边形

背景先看一面直壁上方的稳态流动,流体沿壁面滑移。保角映射把实轴折成多边形壁面的一段段直边,所有流线和等势线都跟着同一个映射走,实际速度由链式法则算出。

为什么值得理解弯曲的网格只是表面。壁面形状能预言理想流体在哪里加速、在哪里停住、在哪里趋向奇点;两边联动的探针让你把这些预言量出来。

先抓重点

核心问题
为什么映射可以保留局部直角,却让速度成倍变化?
一句话直觉
在每一点附近,复导数把一小块区域转一个角度再缩放。长度乘以 ∣f′∣|f'|,实际速度却要除以这个导数。角度保住了,大小和速度并没有保住。

核心数学模型

Schwarz–Christoffel 导数

f′(ζ)=C∏j(ζ−aj)αj−1,z=f(ζ)f'(\zeta)=C\prod_j(\zeta-a_j)^{\alpha_j-1},\qquad z=f(\zeta)

每个原像顶点都在实轴上,指数等于流体一侧的内角除以圆周率再减一。把导数积分,就得到一段段直壁。归一化时,在上半平面取一个锚点,把映射固定在那里。

双角点台阶族

f′(ζ)=(ζ+a)p(ζ−a)−p,θ±=π(1±p)f'(\zeta)=(\zeta+a)^p(\zeta-a)^{-p},\qquad \theta_{\pm}=\pi(1\pm p)

改变间距和指数,就得到一族台阶和斜坡;指数为零时,映射就是恒等映射。这里输入的是原像顶点。想把实际顶点放到任意位置,还得另解一个非线性参数问题。

复势、速度与镜像涡

W(ζ)=Uζ+Γ2πi[log⁡(ζ−ζv)−log⁡(ζ−ζv‾)],u−iv=W′(ζ)f′(ζ)W(\zeta)=U\zeta+\frac{\Gamma}{2\pi i}\left[\log(\zeta-\zeta_v)-\log(\zeta-\overline{\zeta_v})\right],\qquad u-iv=\frac{W'(\zeta)}{f'(\zeta)}

反号镜像涡让实轴成为一条流线。实际速度要除以映射的导数,不能把原像速度直接画到弯网格上。点涡由外部固定在原处;它周围空出的小圆盘只是不显示,并不是有限大小的涡核。

角点附近的幂律与示踪时间

∣f′∣∼∣ζ−aj∣αj−1,∣v∣∼∣ζ−aj∣1−αj,ζ˙=W′(ζ)‾∣f′(ζ)∣2|f'|\sim|\zeta-a_j|^{\alpha_j-1},\quad |v|\sim|\zeta-a_j|^{1-\alpha_j},\quad \dot\zeta=\frac{\overline{W'(\zeta)}}{|f'(\zeta)|^2}

这些指数用的是原像平面里的距离,并假定复势导数在那里有限且不为零。换成实际平面中到角点的距离,指数就不一样。示踪方程里必须带上度量因子的平方,示踪粒子才会按实际速度走出实际轨迹。

直角台阶的闭式解

F(ζ)=ζ−aζ+a+alog⁡ ⁣(ζ+ζ−aζ+aa)F(\zeta)=\sqrt{\zeta-a}\sqrt{\zeta+a}+a\log\!\left(\frac{\zeta+\sqrt{\zeta-a}\sqrt{\zeta+a}}{a}\right)

转角比例为二分之一时,这个初等原函数可以独立检验数值积分。两个主值平方根相乘,选出的正是上半平面那一支。比较之前,先减去它在锚点处的值。

常见难点

角点加速不等于湍流

容易误解角点变成暖色,说明模型已经算出了分离或湍流尾迹。

正确理解这是沿壁面滑移的理想流动。壁面凸向流体的角点上,速度可能趋于无穷。真实的黏性、圆角、分离和边界层要用别的方程描述。颜色到顶不再变,数学上的奇点却还在。

每个小误差只检验一件事

容易误解只要有一个误差很小,就说明哪里都准,角点也不例外。

正确理解壁面检查在离壁面不远、避开角点的位置取样;角度检查用局部中心差分;路径残差看积分是否与路径无关。只有直角台阶有闭式解可以对照。等值线分辨率只改变画图时的插值,不改变积分容差。

动手实验

  1. 01

    恢复直壁极限

    选择直角台阶,把转角比例调到零,用方向键移动探针。

    你会看到: 除了取景不同,两个平面完全一样。局部尺度回到一,实际速度等于背景来流,壁面法向比例仍然很小。
  2. 02

    比较两个角点

    回到直角台阶,把探针依次移到两个珊瑚色角点的正上方,比较局部尺度、速度和形变曲线。

    你会看到: 一个角点把长度压短,流动加快;另一个把长度拉长,流动变慢。探针的两臂仍然互相垂直。
  3. 03

    把点涡放到壁面附近

    选择“壁面附近点涡”,翻转环流,改变涡的高度。暂停示踪或单步推进,再和“多边形凸起”比较。

    你会看到: 流线的方向和形状都变了,反号镜像仍让流体穿不过壁面。点涡固定不动;示踪粒子离开显示窗口后会重新放入。
  4. 04

    科学依据与灵感来源

    模型依据:Driscoll,Algorithm 756: A MATLAB Toolbox for Schwarz–Christoffel Mapping,ACM TOMS 22(1996),DOI 10.1145/229473.229475;Driscoll 与 Trefethen,Schwarz–Christoffel Mapping(Cambridge,2002)。

    你会看到: 灵感来自 bugman123.com/FluidMotion/ 的 Schwarz–Christoffel Flow 条目。实现与图形均为原创,没有复制旧媒体或代码。

概念灵感:FluidMotion。模拟和图形都是原创,模型的适用范围见上文。

反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策