2. COMSOL界面与声学模块入门
COMSOL Multiphysics 的建模流程与多数 CAE 软件不同:它不把“前处理—求解—后处理”拆成独立模块,而是把几何、材料、物理场、网格、求解、结果全部组织在一棵模型开发器(Model Builder)树里。理解这棵树的结构,是后续所有声学结构耦合仿真的前提。本节围绕模型开发器、物理场接口选择、声学模块调用方式、材料库与几何建模基础操作展开,目标是让你能独立搭起一个可求解的声学模型骨架。
一、模型开发器:一棵自上而下的建模树
打开 COMSOL 后,新建模型时选择“模型向导”,随后进入主界面。左侧的模型开发器按固定顺序排列节点,其典型层级为:
- 全局定义:参数(Parameters)、变量、函数、材料库引用等,用于集中管理可复用的数值。
- 组件 1:包含几何、材料、物理场接口、网格、求解器与结果,是建模的主体容器。
- 几何:定义仿真域的空间形状。
- 材料:为域指定密度、声速、弹性模量等属性。
- 物理场接口:选择并配置控制方程,如压力声学、固体力学、声-结构相互作用。
- 网格:离散化几何,决定求解精度与规模。
- 研究:定义求解类型(频域、瞬态、特征频率等)并执行计算。
- 结果:查看声压、位移、声压级等派生量。
这棵树的顺序不是装饰,而是依赖顺序:几何必须先于材料,材料必须先于物理场,物理场必须先于网格与求解。节点右侧的“设置”窗口随选中节点变化,右键节点可添加子特征。一个常见误区是跳过“全局定义”直接写死数值,导致后续改参数时需逐处修改;建议把频率、尺寸、材料参数统一放入参数表。
二、物理场接口的选择逻辑
声学仿真中,物理场接口的选择取决于声波传播介质与是否涉及固体振动。COMSOL 的声学模块主要提供以下接口:
| 接口 | 适用介质 | 典型场景 |
|---|---|---|
| 压力声学,频域 | 流体(空气、水) | 管道声传播、消声器、房间声学 |
| 压力声学,瞬态 | 流体 | 脉冲声、爆炸波、时域响应 |
| 声-结构相互作用,频域 | 流体 + 固体 | 扬声器、水听器、壳体声辐射 |
| 热黏性声学 | 流体(含边界层损耗) | 微穿孔板、小型换能器 |
选择原则可归纳为:若只有流体且关心稳态频率响应,选“压力声学,频域”;若固体振动会显著影响声场,必须选“声-结构相互作用”,它内部同时包含压力声学与固体力学两个物理场,并自动在流固边界上耦合。若声波波长与结构尺寸相当且结构为薄壁,还需考虑壳接口。
三、声学模块的调用方式
在“模型向导”中选择“声学”分支,或在已有模型中通过“添加物理场”按钮调用。以“声-结构相互作用,频域”为例,添加后模型树中会出现两个耦合的物理场节点,并自动生成“声-结构边界”多物理场耦合节点。此时需注意:
- 流体域需指定“压力声学”域特征,固体域需指定“线弹性材料”或“固体力学”域特征。
- 流固交界面由软件自动识别,也可手动指定“声-结构边界”节点。
- 外部边界需设置“平面波辐射”或“阻抗”条件,否则默认刚性壁面会全反射。
四、材料库与几何建模基础操作
材料可从内置材料库直接调用,如“Air”给出密度 1.2 kg/m³、声速 343 m/s;“Water, liquid”给出密度 1000 kg/m³、声速 1500 m/s;“Structural steel”给出弹性模量 200 GPa、泊松比 0.30、密度 7850 kg/m³。这些数值是材料库默认值,实际使用时可根据工况修改。材料属性可指定到域、边界或全局,声学中通常按域指定。
几何建模常用操作包括:
- 基本体:长方体、圆柱、球、锥体,用于构建规则域。
- 布尔运算:并集、差集、交集,用于挖孔、合并域。
- 变换:平移、旋转、镜像、阵列,用于重复结构。
- 工作平面:在二维平面上绘制草图后拉伸成三维,适合复杂截面。
- 虚拟操作:忽略边、忽略顶点,用于简化网格。
以“圆柱形水听器”为例:先建一个半径 20 mm、高 40 mm 的圆柱作为流体域,再建一个半径 10 mm 的同心圆柱作为压电或弹性固体域,用差集得到环形流体域。几何完成后建议执行“形成联合体”,确保各域共形,避免网格不连续。
五、一个最小可运行示例
下面给出一个二维管道声传播的配置骨架,用于验证接口调用是否正确。几何为 0.5 m × 0.05 m 矩形,材料为 Air,物理场选“压力声学,频域”,左端设“平面波辐射”入射压力 1 Pa,右端设“阻抗”条件模拟开口,频率扫描 100–2000 Hz,步长 50 Hz。网格用自由三角形,最大单元尺寸取 0.01 m(约对应 2000 Hz 时波长的 1/17)。求解后查看“声压级”云图,若左端到右端声压级逐渐衰减且无异常驻波,说明边界条件与网格基本合理。
参数设置示例:
L = 0.5 [m] // 管道长度
H = 0.05 [m] // 管道高度
f0 = 100 [Hz] // 起始频率
f1 = 2000 [Hz] // 终止频率
df = 50 [Hz] // 频率步长
c_air = 343 [m/s] // 空气声速
rho_air = 1.2 [kg/m^3]