COMSOL 硬件效率测试报告
此脚本用于测试批量计算测试不同硬件下COMSOL的计算效率,并生成效率数据图示
Contents
系统环境信息
system_info = cpuinfo(); disp(system_info); % 设定循环测试次数 num_test = 3; sol_time = zeros(2,num_test); % 设置COMSOL安装目录的路径: comsol_dir = uigetdir("C:\Program Files\COMSOL\COMSOL61","请选择COMSOL安装目录,默认为“C:\Program Files\COMSOL\COMSOL61”");
CPUName: 'AMD Ryzen 9 7950X 16-Core Processor' Clock: '4501 MHz' Cache: 16777216 TotalMemory: '127.1469 GB' NumCPUs: 1 TotalCores: 16 OSType: 'Windows' OSVersion: 'Microsoft Windows 11 专业版' Hostname: 'CHYN-7950X-128G'
计算各个案例文件:
%继续批量化计算,并记录时间:
1、传热:碳纤维编织结构的各向异性传热
<http://cn.comsol.com/model/anisotropic-heat-transfer-through-woven-carbon-fibers-16709>
此模型和演示说明了如何在传热仿真中对纤维的各向异性属性进行建模。由于纤维取向不易明确定义,因此使用“曲线坐标”接口来定义纤维取向。 纤维在纤维方向上的热导率较高,在垂直方向上热导率较低。
mph = strcat(comsol_dir,'\Multiphysics\applications\Heat_Transfer_Module\Tutorials,_Conduction\carbon_fibers_infinite_elements.mph'); model=mphopen(mph); for i=1:num_test tic; model.sol('sol1').runAll; sol_time(1,i)=toc; tic; model.sol('sol2').runAll; sol_time(2,i)=toc; end figure(1); bar_plot_fun(sol_time(1,:),"Cal Time Cost:碳纤维编织结构的各向异性传热-sol1 曲线坐标计算"); figure(2); bar_plot_fun(sol_time(2,:),"Cal Time Cost:碳纤维编织结构的各向异性传热-sol2 热传导计算");
2、流体:毛细管填充(相场法)
<http://cn.comsol.com/model/capillary-filling-1878>
本例研究一个放置在装满水的蓄水池顶部的垂直细圆柱体。由于空气/水界面处的壁附着力和表面张力,水通过通道上升。
在 MEMS 装置中,表面张力和壁附着力通常用于通过微通道输送流体,或者通过微量吸管测量、输送和放置少量流体。多孔介质中的多相流动和固体壁上的液滴是壁附着力和表面张力强烈影响流动动力学的另一个示例。
为了对壁面上的黏附力进行正确建模,边界条件的处理非常重要。如果将壁上的速度固定为零,界面将无法沿壁移动。这就需要您允许非零滑移速度,并增加壁上的摩擦力。利用这样的边界条件,可以明确地设置接触角,即流体界面与壁之间的夹角。
模型计算压力场、速度场以及水面的形状和位置,其中采用水平集方法或相场法来跟踪空气/水界面,并介绍如何增加摩擦力和指定通道壁的接触角。在整个仿真过程中,毛细力控制重力,因此界面在整个仿真过程中向上移动。
mph = strcat(comsol_dir,'\Multiphysics\applications\CFD_Module\Multiphase_Flow\capillary_filling_pf.mph'); model=mphopen(mph); for i=1:num_test tic; model.sol('sol1').runAll; sol_time(3,i)=toc; bar_plot_fun(sol_time(3,:),"Cal Time Cost:毛细管填充(相场法)"); end
3、结构&电磁:带屏蔽线圈的交流接触器
<http://cn.comsol.com/model/ac-contactor-with-shading-coil-102771>
交流接触器是一种特殊类型的磁性开关装置,由交流电供电的初级线圈激活。与直流开关不同的是,这种装置可能会在交流电流过零时出现重新开启的趋势。通过增加一个支持相对于馈电线圈的延迟感应电流的屏蔽线圈,使它可以始终具有非零拉力,从而提供更稳定的闭合。
mph = strcat(comsol_dir,'\Multiphysics\applications\Structural_Mechanics_Module\Magnetomechanics\contactor_shading_coil.mph'); model=mphopen(mph); for i=1:num_test tic; model.sol('sol1').runAll; sol_time(4,i)=toc; bar_plot_fun(sol_time(4,:),"Cal Time Cost:带屏蔽线圈的交流接触器"); end
测试结果汇总
各项测试平均时间
bar_plot_fun(mean(sol_time,2),{"系统环境配置",... strcat('CPU: ',system_info.CPUName), ... strcat('内存: ',system_info.TotalMemory), ... strcat('系统: ',system_info.OSVersion) }); ylabel("各项测试平均耗时 s"); xlabel('测试项目');
各项测试最短时间
bar_plot_fun(min(sol_time,[],2),{"系统环境配置",... strcat('CPU: ',system_info.CPUName), ... strcat('内存: ',system_info.TotalMemory), ... strcat('系统: ',system_info.OSVersion) }); ylabel("各项测试最短耗时 s"); xlabel('测试项目');
本次测试整体耗时
disp(strcat('整个测试耗时:',num2str(sum(sum(sol_time))/60),' 分钟')); save('html\data.mat','system_info','sol_time')
整个测试耗时:17.0632 分钟