为了理解EIT正问题利用有限元求解的方法,自己通过在网上查找程序,结合EIDORS软件包所建立的EIT模型,编写了求解节点电势的matlab程序,并且进行了验证。
1.利用EIDORE建立模型,建立模型后,能够得到模型划分的单元、节点坐标等信息。程序如下:
imdl= mk_common_model('b2c',16);%建立二维模型,该函数生成的是inv_model结构。
fmdl= imdl.fwd_model;%赋值正问题模型
fmdl.stimulation= mk_stim_patterns(16,1,[0 1],[0 1], {},1);%设置激励模式
img.fwd_model= fmdl;
img.elem_data=ones(size(fmdl.elems,1),1);
img.elem_data([22:26,36:40])=3; %对介质的电导率信息进行赋值
node_v= calc_all_node_voltages(img);%求解的节点电位值,方便验证
figure;
show_fem(fmdl,[1 1 2]);%显示模型
2.将第一步中所得到的的相关信息进行提取,写入txt文件,为有限元计算提供数据
程序如下:
fid=fopen('D:\matlabanzhuang\bin\FEM\data.txt','wt');%写入文件路径
%%%%存取单元的个数、节点的个数%%%%%
[m,n]=size(fmdl.elems); %m为单元数,q为节点个数
q=size(fmdl.nodes,1);
fprintf(fid,'%d %d\n',q,m);