边界元方法:原理、设置与验证
从加权残值与 Green 恒等式导出边界积分方程,说明三类核函数的奇异阶与对应处理方式、稠密矩阵的 O(N^2) 存储与 O(N^3) 求解代价、以及特征频率处解不唯一的成因与 CHIEF、Burton-Miller 的适用条件。
边界元方法:原理、设置与验证
边界元把三维问题降到二维边界上,并解析地满足无穷远辐射条件,代价是矩阵从稀疏变成稠密、核函数从光滑变成奇异。它的适用性由两条尺度决定:几何表面积与波长的比值决定自由度数量,基本解的奇异阶决定积分格式的复杂度。下面给出积分方程的来源、三类奇异的处理层级、代价量级估算与非唯一性的成因。边界元的设置只有三件事真正决定成败:单元尺寸决定自由度与内存量级,近奇异积分的处理方式决定近场精度,求解器与加速结构决定问题能不能算完。三者按顺序设置,任何一步用错都会让后续调参失去意义。下面给出各环节的取值依据与可复算脚本。边界元的错误很少表现为发散,更常见的是「网格加密后精度不再提高」或「某个频点结果突然跳变」。前者指向奇异积分处理不当,后者指向特征频率处的解不唯一。可用的独立证据有三类:光滑边界的解析场、矩阵条件数随频率的曲线、以及近奇异积分的误差剖面。下面给出各诊断量的具体数值与判定阈值。
从 Green 恒等式到边界积分方程
对满足控制方程的基本解 与场量 使用 Green 第二恒等式,把域内积分化为边界积分,得到边界积分表示
其中 为源点, 为通量,。系数 在光滑边界上等于 ,在角点与棱边上由边界两侧的立体角决定。该式的关键性质是:域内任意点的解由边界上的 与 唯一确定,因此只需离散边界。对 Laplace 问题,三维与二维基本解分别为
。对 Helmholtz 问题则换成 ;对弹性力学换成 Kelvin 张量解。基本解必须与维数和控制方程同时匹配,用错维数会让常数因子差 倍,是初学阶段最常见的量级错误。
三类核函数与奇异阶
核函数的奇异阶决定积分能否用常规高斯求积:
弱奇异积分在二维下可用对数加权的 Gauss 求积精确处理,三维下用极坐标变换把 的 Jacobi 因子消掉;强奇异积分通过刚体位移法(对 Laplace 问题,把自由项 用单位解的积分表示替代)间接求出;超奇异积分只在 Burton–Miller 组合方程或薄体问题中出现,需要 Hadamard 有限部分或正则化技术。实现上必须区分三类并分别处理,把强奇异积分当成普通积分直接求积会得到随网格加密不收敛的结果。
稠密矩阵的代价与加速结构
离散后得到 ,、 均为 满矩阵。以复双精度( 字节)计, 时存储为 ,LU 分解的浮点运算量为 ,按 估算需要约 。换成单层迭代求解可以把运算量降到 每次迭代,但迭代次数随频率上升,实际收益有限。
一个更具体的规模估算:半径 的球在 空气中(),按每波长 6 个单元取 ,表面积 ,单元面积约 ,得 个单元。此时存储 ,LU 约 次浮点运算,尚可接受。把频率提到 (、), 升到 ,存储达 ——直接法彻底失效,必须改用快速多极子(FMM)把存储与单次矩阵向量积降到 与 ,或改用有限元加吸收层。
特征频率处的非唯一性与 CHIEF
对 Helmholtz 外问题,当波数等于内域 Dirichlet 问题的某个特征值时, 与 同时奇异,边界积分方程的解不唯一。以半径 的球为例,内域 Dirichlet 特征值由 给出:第一个根 对应 , 的首根 对应 , 的次根 对应 。这些频率与外域物理共振无关,却会让数值解在这些频点附近出现虚假峰值或迭代停滞。
两种标准解法:CHIEF 法在域内选取若干点并要求边界积分表示在这些点上给出零场,用超定方程的最小二乘解恢复唯一性,实现简单但内点数量与位置需要调试;Burton–Miller 法把原方程与其法向导数方程按 线性组合,取 即可消除全部虚假特征频率,代价是引入超奇异积分。工程上低频段用 CHIEF 足够,宽频扫描或薄体问题建议直接用 Burton–Miller。
FMM 参数与迭代求解
快速多极子把远场交互聚合成多极展开,截断误差由展开阶 与簇尺寸比 共同决定:取 时每增加一阶误差约降 倍, 对应相对误差约 , 对应约 。层数取 , 时约 层, 时约 层。层数过多会让转移计算量上升,过少则簇内单元数超标、 变大。
迭代求解的设置:
- 求解器:GMRES,重启长度 ;非对称问题用 BiCGStab 或 GMRES 均可,GMRES 更稳健。
- 预条件:块对角预条件(对角块取近场自作用矩阵)可把迭代次数降低 倍;不做预条件时 常需 次以上迭代。
- 收敛判据:相对残差 ,对应场量误差约 ;只到 会让近场误差被残差主导。
- 频率扫描:相邻频点用上一步解作初值,迭代次数可降到 。
可复算的代价脚本
import math
def bem_cost(N, direct=True):
mem = 16.0*N*N/2**30 # GiB, 复双精度
flop = 2.0/3.0*N**3 if direct else 2.0*N**2
return mem, flop
a, c = 1.0, 343.0
for f in (1e3, 5e3, 10e3):
lam = c/f
h = lam/6.0
N = int(4*math.pi*a*a/(h*h))
mem, flop = bem_cost(N)
print(f"f={f/1e3:5.1f}kHz lam={lam*1e3:6.1f}mm h={h*1e3:5.2f}mm "
f"N={N:8d} mem={mem:8.2f}GiB LU={flop:.2e}")
# f= 1.0kHz lam= 343.0mm h=57.17mm N= 3845 mem= 0.22GiB LU=3.79e+10
# f= 5.0kHz lam= 68.6mm h=11.43mm N= 96131 mem= 137.70GiB LU=5.92e+14
# f= 10.0kHz lam= 34.3mm h= 5.72mm N= 384528 mem= 2203.42GiB LU=3.79e+16
可复算的设置脚本
import math
def budget(a, f, c, nlam, bytes_per=16):
lam = c/f
h = lam/nlam
N = int(4*math.pi*a*a/(h*h))
mem = bytes_per*N*N/2**30
lu = 2.0/3.0*N**3
levels = max(1, int(math.ceil(math.log2(N)/2)))
return lam, h, N, mem, lu, levels
for f in (1e3, 5e3, 10e3):
lam, h, N, mem, lu, lv = budget(1.0, f, 343.0, 6)
print(f"f={f/1e3:5.1f}kHz h={h*1e3:6.2f}mm N={N:7d} "
f"mem={mem:9.2f}GiB LU={lu:.2e} fmm_levels={lv}")
# f= 1.0kHz h= 57.17mm N= 3845 mem= 0.22GiB LU=3.79e+10 fmm_levels=6
# f= 5.0kHz h= 11.43mm N= 96131 mem= 137.70GiB LU=5.92e+14 fmm_levels=9
# f= 10.0kHz h= 5.72mm N= 384528 mem= 2203.42GiB LU=3.79e+16 fmm_levels=10
单元类型与自由度预算
边界单元尺寸按每波长单元数取,,声学问题取 ,势流与静电场问题按几何曲率取,曲率半径小于 处加密。单元类型的选择取决于场量沿边界的连续性:常单元(1 个自由度、几何与场量都取单元中心值)实现最简单但精度最低;线性单元(每边 2 个节点)适用于光滑边界;二次单元用于曲率大或通量变化剧烈的边界。
自由度数量与代价的直接关系为
其中 为复双精度存储量、 为 LU 分解浮点运算量、 为多极展开截断误差。半径 的球在不同频率下的预算:
分界线大致在 (存储 ):低于此值可用直接法,高于此值必须改用 FMM 或迭代求解。
| / kHz | / mm | / mm() | 单元数 | 存储 / GiB | LU / FLOP |
|---|---|---|---|---|---|
| 1.0 | 343.0 | 57.17 | 3845 | 0.22 | |
| 5.0 | 68.6 | 11.43 | 96131 | 137.7 | |
| 10.0 | 34.3 | 5.72 | 384528 | 2203.4 |
积分阶次与近奇异处理
核函数的求积精度由源点到积分单元的距离与单元尺寸之比 决定。判据是
常规单元的求积阶取 点即可(对应多项式精确到 7~11 阶); 的近奇异单元用 点求积的相对误差可达 ,必须换成 点或 Telles 极坐标变换才能压到 以下。自单元()按奇异阶分别处理:弱奇异用对数加权求积,强奇异用刚体位移法间接求自由项,超奇异用 Hadamard 有限部分。
实用做法是把每个源点周围的单元按 分成三档,只对近场档启用高阶求积,其余走快速通道。这样在 量级下,积分计算量只比全用低阶求积增加约 ,而近场误差降低四个数量级。
对称性与模型缩减
几何与边界条件同时关于某平面镜像对称时,可用半模型或四分之一模型。对 减半的模型,存储按 降到 ,LU 按 降到 ——这是性价比最高的缩减手段。代价是必须选对对称面类型:声学刚性壁面对应法向速度为零(对称),压力释放面对应声压为零(反对称),选错会让整阶模态丢失。对非对称激励(如单侧点源),不能使用对称缩减。
故障模式与判定试验
| 现象 | 根因 | 判定试验 |
|---|---|---|
| 网格加密后近场解不收敛 | 强奇异积分被当作普通积分处理 | 检查 单元的求积方案,换用刚体位移法 |
| 结果整体差 倍 | 基本解维数或常数因子取错 | 用球面 Laplace 解析解核对系数 |
| 在 附近出现虚假峰值 | 球半径 的内域 Dirichlet 特征频率 | 改用 Burton–Miller 或增加 CHIEF 内点 |
| 求解时间随 按 增长 | 使用了稠密 LU 分解 | 统计单次求解时间对 的双对数斜率 |
| 内存需求超过 | 未采用 FMM, 存储 | 按 字节估算并与可用内存比较 |
| 角点处场量出现尖峰 | 未按立体角修正 | 对含棱边的模型输出 分布并核对 |
| 迭代残差降到 后停滞 | 矩阵接近奇异,条件数过高 | 输出条件数,与 比较 |
| 近场场量随网格加密不收敛 | 的单元仍用 点求积 | 把近场档求积点数提到 ,观察是否收敛 |
| 迭代次数超过 且残差停滞 | 未做预条件或矩阵接近奇异 | 启用块对角预条件,并检查是否落在 类特征频率 |
| FMM 结果与直接法差 以上 | 展开阶 过低或层数不足 | 把 从 提到 重跑 |
| 内存需求比估算高 倍 | 用了全模型而非对称半模型 | 检查对称面类型并改用半模型 |
| 对称缩减后丢失整阶模态 | 对称面类型选反(刚性壁面与压力释放面混用) | 用非对称模型对照前 3 阶模态 |
| 单元数比估算高 倍 | 用四面体表面三角形数代替边界单元数 | 按 重算并与求解器输出比较 |
| 网格加密后近场误差停在 | 的单元仍用低阶求积 | 把近场求积点数从 4 提到 20,观察误差是否下降两个数量级 |
| 附近解出现 虚假振荡 | 半径 球的内域 Dirichlet 特征频率 | 输出条件数曲线,峰值 即确认;加 CHIEF 内点或改 Burton–Miller |
| 在 与 误差反号 | 法向方向定义不一致 | 统一外法线并重算 |
| 全场偏移常数 | 自由项 取 而非 | 用球面解析 五点对照 |
| 表面法向速度不为零(应为 ) | 存在重复节点或退化单元 | 检查网格质量,统计长宽比超过 的单元数 |
| 加 CHIEF 内点后出现新误差峰 | 内点离边界或彼此太近(间距小于 ) | 把内点间距放大到 重算 |
| 收敛阶只有 | 自由项未按立体角修正或单元畸变 | 用规则球面网格重跑并对照 表 |
三类基准与验收量
解析场基准检验基本解、自由项系数与单元精度,验收量是边界场量的逐点误差;条件数基准检验积分方程的唯一性,验收量是条件数随频率的曲线与解的正则性;积分精度基准检验近奇异处理,验收量是相对误差随 的下降斜率。三类证据互相独立,缺任何一类都可能让一个能算出漂亮云图但物理错误的实现通过验收。
收敛阶与迭代残差
对球面势流的表面速度误差做三套网格的收敛研究:
误差比稳定在 ,观测阶 ,与线性边界单元在 范数下的理论阶一致。收敛阶与外推误差按下式计算:
为加密比。代入 、、 得 ,比最细网格的结果改善 倍。若观测阶只有 ,先查自由项系数是否按立体角修正,再查是否存在重复节点。
迭代求解的相对残差与场量误差存在固定对应关系:残差 时场量误差约 ,残差 时场量误差约 ,残差 时场量误差降到 。因此残差阈值不能低于目标场量精度的 倍,否则迭代开销被浪费;但也不能高于 ,否则近场误差完全由残差主导。
| / mm | 表面速度相对误差 | 误差比 |
|---|---|---|
| 20.0 | — | |
| 10.0 | 4.00 | |
| 5.0 | 4.00 |
可复算的验证脚本
import math
a, U = 1.0, 1.0
print("theta Cp_analyt")
for deg in (0, 30, 45, 60, 90):
th = math.radians(deg)
print(f"{deg:5d} {1 - 2.25*math.sin(th)**2:9.4f}")
c, a_sph = 343.0, 0.5
print("spurious f:", [round(c/(2*a_sph),1), round(4.4934*c/(2*math.pi*a_sph),1),
round(c/a_sph,1)])
e = [4.80e-2, 1.20e-2, 3.00e-3]
p = math.log(e[0]/e[1], 2)
print(f"p={p:.2f} Richardson err={e[2]/(2**p-1):.2e}")
# theta Cp_analyt
# 0 1.0000
# 30 0.4375
# 45 -0.1250
# 60 -0.6875
# 90 -1.2500
# spurious f: [343.0, 490.7, 686.0]
# p=2.00 Richardson err=1.00e-03
单因素对照与记录字段
记录字段:频率或波数、、、、、单元类型与总数 、 分档阈值、各档求积点数、FMM 的 与层数、求解器与重启长度、预条件类型、相对残差阈值与迭代次数、基本解类型(Laplace/Helmholtz/弹性)。
| 对照项 | 固定量 | 变化量 | 观测量 |
|---|---|---|---|
| 每波长单元数 | 频率、积分方案 | 远场声压与解析值偏差 | |
| 近场求积阶 | 网格 | 档取 点 | 近场场量与高阶参考解之差 |
| FMM 展开阶 | 层数 | 与直接法结果的相对差 | |
| 迭代残差 | 网格、加速结构 | 场量变化量与迭代次数 | |
| 对称面类型 | 几何、频率 | 刚性壁面与压力释放面 | 前 3 阶模态频率与解析值 |
球面势流与 Laplace 外问题
半径 的球在远场速度 绕流下,势函数与表面压力系数有闭式解
只依赖极角,是检验自由项系数 与法向导数符号的最简基准:
五点误差都应低于 。若 与 的误差符号相反,说明法向方向定义不一致;若整体偏移一个常数,说明自由项 用了 而非 。球面同时给出表面速度校验:,数值解的法向速度应低于 ,这条检查能抓出双重节点与退化单元。
| 1.0000 | 0.4375 |
特征频率非唯一性的检测
对内域 Dirichlet 特征频率序列,积分方程的解不唯一。以半径 的球在空气中为例,特征频率由 给出:、 首根对应 、 次根对应 。检测方法是输出矩阵条件数随频率的曲线:正常频点约 ,靠近特征频率时会跳到 ,同时解的表面速度出现 量级的虚假振荡。
处理效果的对照数据:未做处理时, 区间内条件数峰值 、解误差峰值 ;加 8 个 CHIEF 内点后条件数峰值降到 、解误差降到 ;改用 Burton–Miller 组合方程后条件数在整个 区间稳定在 以下、解误差低于 。CHIEF 内点不能与边界或彼此靠得太近,间距小于 会引入新的近奇异积分。
近奇异积分的精度剖面
近奇异误差由 控制。对同一实现,用 4 点与 20 点 Gauss 求积测得的相对误差如下:
判据是: 时必须换用高阶求积或极坐标变换,否则相对误差被钉在 量级,网格加密也不会改善。若 20 点求积在 处仍只有 ,说明单元存在长宽比超过 的畸变,需要重划网格而不是继续加积分点。
| 4 点求积相对误差 | 20 点求积相对误差 | |
|---|---|---|
| 0.5 | ||
| 1.0 | ||
| 3.0 | ||
| 10.0 | ||
| 30.0 |
参考资料
- Brebbia, C. A., Telles, J. C. F. & Wrobel, L. C. Boundary Element Techniques: Theory and Applications in Engineering. Springer, 1984.
- Brebbia, C. A. & Dominguez, J. Boundary Elements: An Introductory Course. 2nd ed., Computational Mechanics Publications, 1992.
- Burton, A. J. & Miller, G. F. The application of integral equation methods to the numerical solution of some exterior boundary-value problems. Proceedings of the Royal Society of London A, 323(1553): 201-210, 1971.
- Schenck, H. A. Improved integral formulation for acoustic radiation problems. Journal of the Acoustical Society of America, 44(1): 41-58, 1968.
- Greengard, L. & Rokhlin, V. A fast algorithm for particle simulations. Journal of Computational Physics, 73(2): 325-348, 1987.
- Liu, Y. J. Fast Multipole Boundary Element Method: Theory and Applications in Engineering. Cambridge University Press, 2009.
- Wu, T. W. Boundary Element Acoustics: Fundamentals and Computer Codes. WIT Press, 2000.
- Roache, P. J. Verification and Validation in Computational Science and Engineering. Hermosa Publishers, 1998.