%RUN_EXPORT_COMSOL 一键从 COMSOL mph 导出 z=0.5 切面到 data/comsol_z050.txt % % 用法:在 MATLAB 里打开本文件,点“运行”(F5),不要只输入 export_comsol_slice。 % % 需要: % 1) 本机已安装 COMSOL + LiveLink for MATLAB(有 mphload 命令) % 2) 有 SBC.mph 模型文件(算例已求解) clear; clc; thisDir = fileparts(mfilename('fullpath')); projDir = fileparts(thisDir); outFile = fullfile(thisDir, 'data', 'comsol_z050.txt'); zCut = 0.5; gridN = 121; %% 1. 检查 LiveLink if exist('mphload', 'file') ~= 2 error(['未找到 COMSOL LiveLink(mphload 命令不存在)。\n\n' ... '方法二需要 LiveLink。若没有,请用 COMSOL 界面手动导出:\n' ... ' Results → Cut Plane (z=0.5) → Export → 保存为\n' ... ' %s\n\n' ... '详见 compare/README.md'], outFile); end %% 2. 查找 SBC.mph candidates = { fullfile(projDir, '..', '三维matlab代码', 'matlab 3D一阶散射问题', 'SBC.mph') fullfile(projDir, 'SBC.mph') fullfile(thisDir, 'SBC.mph') 'SBC.mph' }; mphPath = ''; for k = 1:numel(candidates) if isfile(candidates{k}) mphPath = candidates{k}; break; end end if isempty(mphPath) fprintf('自动搜索未找到 SBC.mph,请手动选择...\n'); [fname, fpath] = uigetfile('*.mph', '选择 COMSOL 模型文件 SBC.mph'); if isequal(fname, 0) error(['未选择 mph 文件。\n' ... '项目目录里目前只有 SBC.mph.lock,没有模型本体。\n' ... '请从 COMSOL 另存 SBC.mph,或改用 GUI 手动导出 comsol_z050.txt。']); end mphPath = fullfile(fpath, fname); end fprintf('COMSOL 模型: %s\n', mphPath); fprintf('输出文件: %s\n', outFile); %% 3. 导出 export_comsol_slice(mphPath, outFile, zCut, gridN, gridN); fprintf('\n导出成功!接下来运行:\n compare_normE_zslice\n');