- 积分
- 0
- 注册时间
- 2010-8-11
- 仿真币
-
- 最后登录
- 1970-1-1
|
对照COMSOL_LibDoc_RF.CHM里的bandgap案例,里面是对n-Air和n-GaAs求解的,其中n-GaAs是色散的,与频率有关,我现在想把它写成常数,或者写成对mu和epsr求解,于频率是无关的
单个跑一条线似乎已经没问题了
但是要用script跑的话,显示
Error:failed to evaluate expression
Expression:nu_rfwe
Error:failed to evaluate variable
Expression:nu_rfwe
请问怎么改这个程序
源程序附带如下
[url=]%要扫描的 k-矢量因数[/url]
[url=]k = 0.02:0.02:0.5;[/url]
[url=]% 创建频带面的方向[/url]
[url=]dir0 = [ones(1,5) 0.75:-0.25:0 ; 0:0.25:1 ones(1,4)];[/url]
[url=]% 频带数[/url]
[url=]nbands = 5;[/url]
[url=]% 频率线性化点[/url]
[url=]freq0 = 4e14;[/url]
[url=]% 更新数值大小[/url]
[url=]fem.const{2*strmatch('k',fem.const(1:2:end),'exact')} = k(1);[/url]
[url=]% 清除频率变量[/url]
[url=]nu = [];[/url]
[url=]% 对所有方向的循环[/url]
[url=]for dir=dir0[/url]
[url=]% 更新方向[/url]
[url=]fem.const{2*strmatch('k1',fem.const(1:2:end), ...[/url]
[url=]'exact')} = dir(1);[/url]
[url=]fem.const{2*strmatch('k2',fem.const(1:2:end), ...[/url]
[url=]'exact')} = dir(2);[/url]
[url=]% 转到特征值分析[/url]
[url=]fem.appl{1}.prop.analysis = 'eigen';[/url]
[url=]fem = multiphysics(fem);[/url]
[url=]fem.xmesh = meshextend(fem);[/url]
[url=]% 求解特征值问题[/url]
[url=]init = asseminit(fem,'init','0');[/url]
[url=]fem.sol=femeig(fem, ...[/url]
[url=]'init',init, ...[/url]
[url=]'conjugate','on', ...[/url]
[url=]'solcomp',{'Ez'}, ...[/url]
[url=]'neigs',nbands, ...[/url]
[url=]'shift',-i*2*pi*freq0, ...[/url]
[url=]'eigref',sprintf('-i*2*pi*%g',freq0));[/url]
[url=]% 为所有频带存储解的初始值[/url]
[url=]sole = fem.sol;[/url]
[url=]% 转到时谐分析[/url]
[url=]fem.appl{1}.prop.analysis = 'harmonic';[/url]
[url=]fem = multiphysics(fem);[/url]
[url=]fem.xmesh = meshextend(fem);[/url]
[url=]%对所有频带的循环[/url]
[url=]for ind=1:length(sole.lambda)[/url]
[url=]%打印一些进程信息[/url]
[url=]disp(sprintf(['Direction = (%g,%g), ' ...[/url]
[url=]'Band number %i'],dir,ind));[/url]
[url=]init = asseminit(fem,'u',sole,'solnum',ind);[/url]
[url=]% 在使用特征值近似解方向扫描[/url]
[url=]fem.sol=femnlin(fem, ...[/url]
[url=]'init',init, ...[/url]
[url=]'conjugate','on', ...[/url]
[url=]'pname','k', ...[/url]
[url=]'plist',k, ...[/url]
[url=]'porder',0, ...[/url]
[url=]'pminstep',0.01, ...[/url]
[url=]'pmaxstep',0.01);[/url]
[url=]nu = cat(1,nu,postint(fem,'nu_rfwe','edim',0,'dl',1,...[/url]
[url=]'solnum','all'));[/url]
[url=]end[/url]
[url=]end[/url]
[url=]% 重新形成数据nu ,使频带在3:rd 维度[/url]
[url=]nu = reshape(nu,[nbands size(dir0,2) length(k)]);[/url]
[url=]nu = permute(nu,[2 3 1]);[/url]
[url=]% 保存数据为后面使用[/url]
[url=]save band_diagram_data k dir0 nu[/url]
[url=]% 创建画图栅格[/url]
[url=][K,DIRx] = meshgrid(k,dir0(1,);[/url]
[url=][K,DIRy] = meshgrid(k,dir0(2,:));[/url]
[url=]X = DIRx.*K;[/url]
[url=]Y = DIRy.*K;[/url]
[url=]% 绘出每个频带的表面图[/url]
[url=]figure(2);[/url]
[url=]hold on;[/url]
[url=]for ind=1:size(nu,3)[/url]
[url=]h = mesh(X,Y,real(nu(:,:,ind)));[/url]
[url=]% 设置透明度和颜色[/url]
[url=]set(h,'EdgeColor',[1 1 0.3],'FaceColor','interp',...[/url]
[url=]'ColorMap','hot(1024)','FaceAlpha',0.6);[/url]
[url=]end[/url]
[url=]% 在 (1,1) 方向的频带图[/url]
[url=]figure(3);[/url]
[url=]plot(k,permute(real(nu(5,:,:)),[3 2 1]));[/url]
[url=]xlabel('<b>k</b>, (1,1) direction');[/url]
[url=]ylabel('Frequency [Hz]');[/url] |
|