comsol 纳米球 散射 远场图 电场图纳米颗粒的光学散射是个挺有意思的话题尤其是金属或介电纳米球它们在可见光或近红外波段能激发表面等离子体共振或者米氏散射拍出来的电场分布图五彩斑斓远场散射图还能搞出些花瓣一样的辐射模式。今天就用COMSOL整一个纳米球的散射仿真顺便聊聊怎么导出和分析电场、远场数据。先搞个最简单的模型在空气中放一个直径100 nm的金纳米球用平面波从左向右照射。COMSOL里选“电磁波频域”模块几何建模画个球周围包一层足够大的空气球体作为完美匹配层PML。这里要注意的是网格划分得在纳米球表面加密尤其是金这种高折射率材料电场梯度变化剧烈网格粗糙了结果会翻车。边界条件设置的时候外层空气域用散射边界条件Scattering Boundary Condition避免反射干扰。光源用背景场Background Field定义入射平面波极化方向沿z轴。材料属性直接从COMSOL内置的“Gold (Johnson Christy)”库调取别手输参数容易输错。comsol 纳米球 散射 远场图 电场图跑完仿真后先看电场分布。COMSOL默认的切片图可能不够炫酷可以自己写代码导出数据再处理。比如用MATLAB读取.txt格式的电场数据data importdata(electric_field.txt); x data.data(:,1); y data.data(:,2); Ez data.data(:,5); scatter(x, y, 10, Ez, filled); colormap(jet); colorbar; axis equal; title(Ez Field on X-Y Plane);这段代码简单粗暴把导出的电场Ez分量按坐标(x,y)用散点图显示。重点在colormap(jet)——虽然有人说jet颜色不科学但架不住它好看啊如果想更专业可以换成parula但发朋友圈的话还是jet更吸睛。远场图的计算稍微复杂点。COMSOL的远场分析需要先定义一个远场域通常用“远场域”节点设置计算频率和方向角范围。导出远场辐射方向图的数据后可以用极坐标画图theta 0:0.01:2*pi; r load(farfield_r.txt); % 远场强度随角度变化的幅度 polarplot(theta, r, LineWidth, 2); title(Farfield Scattering Pattern);这里r是远场强度通常需要归一化处理。如果想看三维远场可以转成球坐标系数据用surf函数画立体辐射图。不过大部分时候二维极坐标够用了毕竟三维图容易让人眼花缭乱。最后吐槽一句COMSOL的远场计算偶尔会抽风尤其是PML没设好或者频率选到谐振点附近的时候。这时候可以检查下能量守恒电磁场功率是否合理或者换一个频点重新跑。仿真嘛翻车是日常能跑通就是胜利。代码示例仅为思路参考实际导出数据格式需根据COMSOL版本调整
用COMSOL玩转纳米球的散射仿真:从电场到远场
comsol 纳米球 散射 远场图 电场图纳米颗粒的光学散射是个挺有意思的话题尤其是金属或介电纳米球它们在可见光或近红外波段能激发表面等离子体共振或者米氏散射拍出来的电场分布图五彩斑斓远场散射图还能搞出些花瓣一样的辐射模式。今天就用COMSOL整一个纳米球的散射仿真顺便聊聊怎么导出和分析电场、远场数据。先搞个最简单的模型在空气中放一个直径100 nm的金纳米球用平面波从左向右照射。COMSOL里选“电磁波频域”模块几何建模画个球周围包一层足够大的空气球体作为完美匹配层PML。这里要注意的是网格划分得在纳米球表面加密尤其是金这种高折射率材料电场梯度变化剧烈网格粗糙了结果会翻车。边界条件设置的时候外层空气域用散射边界条件Scattering Boundary Condition避免反射干扰。光源用背景场Background Field定义入射平面波极化方向沿z轴。材料属性直接从COMSOL内置的“Gold (Johnson Christy)”库调取别手输参数容易输错。comsol 纳米球 散射 远场图 电场图跑完仿真后先看电场分布。COMSOL默认的切片图可能不够炫酷可以自己写代码导出数据再处理。比如用MATLAB读取.txt格式的电场数据data importdata(electric_field.txt); x data.data(:,1); y data.data(:,2); Ez data.data(:,5); scatter(x, y, 10, Ez, filled); colormap(jet); colorbar; axis equal; title(Ez Field on X-Y Plane);这段代码简单粗暴把导出的电场Ez分量按坐标(x,y)用散点图显示。重点在colormap(jet)——虽然有人说jet颜色不科学但架不住它好看啊如果想更专业可以换成parula但发朋友圈的话还是jet更吸睛。远场图的计算稍微复杂点。COMSOL的远场分析需要先定义一个远场域通常用“远场域”节点设置计算频率和方向角范围。导出远场辐射方向图的数据后可以用极坐标画图theta 0:0.01:2*pi; r load(farfield_r.txt); % 远场强度随角度变化的幅度 polarplot(theta, r, LineWidth, 2); title(Farfield Scattering Pattern);这里r是远场强度通常需要归一化处理。如果想看三维远场可以转成球坐标系数据用surf函数画立体辐射图。不过大部分时候二维极坐标够用了毕竟三维图容易让人眼花缭乱。最后吐槽一句COMSOL的远场计算偶尔会抽风尤其是PML没设好或者频率选到谐振点附近的时候。这时候可以检查下能量守恒电磁场功率是否合理或者换一个频点重新跑。仿真嘛翻车是日常能跑通就是胜利。代码示例仅为思路参考实际导出数据格式需根据COMSOL版本调整