最近在用comsol模拟一些简单的cloak模型,它的图形导出功能总是令人不尽满意,为此折腾了一两天,发现下面这种方法或许得到比较比较满意的图形。
1.comsol结果中我们通常需要的是电场或磁场的表面图,这种图形相对来讲比较容易绘制,在很多软件中都可以实现。在默认情况下comsol使用rainbow类型的colortable,而以前使用的origin 8.0只提供有限的几种颜色。值得庆幸的是,在新版的origin 9.0中增加了许多colortable模板,其中就包括rainbow。尽管和comsol中不太一致,但丝毫不影响最终结果的表现。
2.比较难解决的是streamline的绘制问题。在comsol中可以直接添加streamline,并且有多种方式,比如均匀分布或按强度分布,目前还没发现其他软件有这样的功能。目前摸索到这样一种折中的方法,先用matlab生成streamline所需的数据,然后用导出的数据在origin中作图。在Matlab中可以使用stream2命令来生成所需的数据,然后对其进行插值等一些小的数据,就可以直接在origin中实现。不过这种方法需要在matlab中手动给出streamline的起点,这就要求事先对图形的物理结果有一定的了解。如果不想这么麻烦的话,也可以使用箭头矢量图quiver来代替,在origin中可以直接绘制这样的图。
下面是一个简单的程序,仅供参考
clear all
clc
a=load(‘b.dat’);
x0=a(:,1);
y0=a(:,2);
u0=a(:,3);
v0=a(:,4);
[x y]=meshgrid(-1.5:0.01:1.5,-1:0.01:1);
Pu=TriScatteredInterp(x0,y0,u0);
Pv=TriScatteredInterp(x0,y0,v0);
u=Pu(x,y);
v=Pv(x,y);
sx=-1.5*ones(16,1);
sy=linspace(-0.8,0.8,16);
% subplot(2,1,1)
% streamline(x,y,u,v,sx,sy)
% axis([-1 1 -0.5 0.5])
st=stream2(x,y,u,v,sx,sy);
% subplot(2,1,2)
% for ii=1:length(st)
% xy=st{ii};
% plot(xy(:,1),xy(:,2))
% hold on
% end
% axis([-1 1 -0.5 0.5])
x=(-1:0.01:1)’;
y=[];
for ii=1:length(st)
ii
xy=st{ii};
if length(xy(:,1))>2
y=[y interp1(xy(:,1),xy(:,2),x)];
end
end
z=[x y];
save ‘C:\Users\lrj\Desktop\a.dat’ z -ascii
plot(x,y,’b')
文章来源:
http://blog.sciencenet.cn/blog-412191-670310.html原文链接:
http://tezhengku.com/topic/?p=642
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。