Wall Reflection
sub_J01_fm_reflection.f90 只有 sub_J01_reflect_velocity 一个过程。
跟踪过程已经确定碰到哪个壁面;本过程只修改粒子速度,再交回同一条轨迹继续计算。
1. 碰壁前后应满足什么条件
设 \(\boldsymbol n_f\) 是从气体指向壁外的单位法向。 碰壁前有 \(\boldsymbol v\cdot\boldsymbol n_f>0\), 反射后必须有 \(\boldsymbol v'\cdot\boldsymbol n_f<0\)。 当前壁面不吸附粒子,碰壁后仍只有一条、权重不变的历史; 壁面可以改变运动方向,也可以在热漫反射时改变粒子能量。
输入 \(d\in[0,1]\) 对应 diffuse_fraction。
每次碰壁独立抽一个均匀随机数:小于 \(d\) 时漫反射,否则镜面反射。
这是选择一次反射事件,不是把同一粒子的两个速度向量按比例相加。
2. 镜面反射保留切向速度
将速度分解为法向和切向分量,镜面反射为
因此径向壁只翻转 \(v_r\),轴向壁只翻转 \(v_z\)。 切向分量和速率保持不变,轨迹在同一气体侧继续。
3. 热漫反射为什么使用不同的法向分布
壁温为 \(T_{\mathrm w}\),定义 \(\sigma_{\mathrm w}=\sqrt{k_{\mathrm B}T_{\mathrm w}/M}\), 其中 \(M\) 是粒子质量,\(k_{\mathrm B}\) 是 Boltzmann 常数。 用 \(c>0\) 表示返回气体的法向速率,\(v_t\) 表示切向速度。 壁面热分布本身按速度呈高斯形,但离开壁面的粒子统计要乘穿面的速率 \(c\)。 归一化后的联合概率密度是
它分成两个独立分布。切向是零均值正态;法向累计概率为
抽取相互独立的随机变量 \(\xi\sim U(0,1)\) 和 \(Z\sim N(0,1)\),分别用于法向和切向速度。 \(\xi\) 是均匀随机数,\(Z\) 是标准正态随机数。 反解得到 \(c=\sigma_{\mathrm w}\sqrt{-2\ln(1-\xi)}\)。 由于 \(1-\xi\) 也服从均匀分布,代码等价地使用
这就是法向 Rayleigh 分布与切向正态分布。不能把法向速率简单改为正态随机数的绝对值; 后者缺少穿面速率加权,表示的是不同的物理模型。
4. 把法向、切向速度写回坐标分量
碰到的面 |
外法向 |
漫反射后的 \(v_r'\) |
漫反射后的 \(v_z'\) |
|---|---|---|---|
径向低端 |
\((-1,0)\) |
\(c\) |
\(v_t\) |
径向高端 |
\((1,0)\) |
\(-c\) |
\(v_t\) |
轴向低端 |
\((0,-1)\) |
\(v_t\) |
\(c\) |
轴向高端 |
\((0,1)\) |
\(v_t\) |
\(-c\) |
每一行都保证法向分量返回气体。切向正态分量可正可负, 所以漫反射还可能改变粒子沿另一个坐标方向的运动趋势。
5. 过程输入与输出
sub_J01_reflect_velocity:
输入并原地修改
ur,uz,单位 m/s;输出为反射后粒子速度。输入
face,必须为四个合法面常量之一。输入
diffuse_fraction,必须在 \([0,1]\)。输入
sigma_wall,是正的速度标准差(m/s),不是温度(K); 完整调用过程根据质量和壁温计算它。不修改位置、不记录穿面、不改变历史权重,也不返回
ierr。 单独调用时必须满足面编号、速度方向和参数的前置条件。
轨迹过程负责碰壁后的微小向内定位,再计算下一段飞行。 在两面交会的角点,反射导致的切向改向会影响后续碰面处理,下一页按执行顺序说明。 若新增吸附模型,不能只让速度归零;还需要规定历史结束方式及粒子损失统计。
sub_J01_reflect_velocity modifies ur and uz after the tracker identifies a wall face.
It neither moves the particle nor changes history weight.
With outward normal n, an incident velocity has v·n>0 and the reflected velocity must have v′·n<0. A Bernoulli choice selects diffuse reflection with probability d and specular reflection otherwise.
For diffuse reflection, the inward normal speed is flux weighted and the tangential velocity is normal:
The two random variables are independent: \(\xi\sim U(0,1)\) and \(Z\sim N(0,1)\). \(\sigma_{\mathrm w}=\sqrt{k_{\mathrm B}T_{\mathrm w}/M}\) uses particle mass M and the Boltzmann constant kB.
The four faces map (c,vt) to (+c,vt), (-c,vt), (vt,+c), (vt,-c). Inputs are face, diffuse_fraction and sigma_wall in m/s; ur/uz are inout velocities. The routine has no ierr and requires valid inputs. Position offsets and corner sequencing belong to the tracker. Absorption would additionally require history-termination and loss accounting.