|
EIDORS: Electrical Impedance Tomography and Diffuse Optical Tomography Reconstruction Software |
|
EIDORS
(mirror) Main Documentation Examples Tutorials − Image Reconst − Data Structures − Application Examples − FEM Modelling Download Contrib Data GREIT Browse SVN News FAQ Developer
|
Build Double Plane Models with NetgenCheck Netgen is installed.If necessary, get netgen from: netgen. Setup parameters and call netgenCall netgen to create a 30cm high by 30cm diamter tank model with 2×16 electrodes (2 rings).
% Build model
% $Id: build_double_plane01.m 1535 2008-07-26 15:36:27Z aadler $
% Choose Parameters
electrodes_per_plane= 16;
number_of_planes= 2;
refine_electrodes= 10;
tank_radius= 15;
tank_height= 30;
electrode_width = 0.5;
electrode_height= 0.5;
rect_or_circ_electrode= 'C';
fname ='tank_mdl';
first_plane_starts= tank_height/(number_of_planes+1);
height_between_centres = first_plane_starts;
[fmdl,centres] = create_tank_mesh_ng( ...
tank_radius, tank_height, ...
rect_or_circ_electrode, ...
log2(electrodes_per_plane), ...
number_of_planes, ...
first_plane_starts, ...
height_between_centres, ...
electrode_width, electrode_height, ...
fname, refine_electrodes );
% The msz file was created here can be reused later
msz_file= [fname, '.msz'];
stim_pat= mk_stim_patterns(electrodes_per_plane, number_of_planes, ...
'{ad}','{ad}',{'meas_current'});
% control mesh refinement: options are '-veryfine'; '-fine'; '';
for finemodels= 0:2
if finemodels==0; finelevel= '';
elseif finemodels==1; finelevel= '-fine';
elseif finemodels==2; finelevel= '-veryfine';
end
if ~isempty(finelevel);
call_netgen([fname,'.geo'],[fname,'.vol'],msz_file, finelevel);
end
[fmdl,mat_idxs]= ng_mk_fwd_model( [fname,'.vol'], centres, [], stim_pat);
if finemodels==0; ng_mdl_16x2_coarse= fmdl;
elseif finemodels==1; ng_mdl_16x2_fine = fmdl;
elseif finemodels==2; ng_mdl_16x2_vfine = fmdl;
end
subplot(311);
show_fem( fmdl); view(0,14);
subplot(312);
show_fem( fmdl); view(0,0);
crop_model(gca, inline('y>0','x','y','z'))
subplot(313);
show_fem( fmdl); view(0,0);
crop_model(gca, inline('y>-10','x','y','z'))
set(gca,'Xlim',[-2,2],'Zlim',[-2,2]+first_plane_starts);
set(gcf,'paperposition',[1 3 16 12]); % increase size of image
print('-r100','-dpng', ...
sprintf('build_double_plane01%c.png',97+finemodels));
end
save ng_mdl_16x2_coarse.mat ng_mdl_16x2_coarse
save ng_mdl_16x2_fine.mat ng_mdl_16x2_fine
save ng_mdl_16x2_vfine.mat ng_mdl_16x2_vfine
The calculated models are saved
here [data_conbrib 16x2 models]
Figure: Tank model generated by netgen of a double plane with different levels of refinement flag to netgen. Left: refinement = '-coarse' (default) Middle: refinement = '-fine' Right: refinement = '-veryfine' Setup parameters and call netgen |
Last Modified: $Date: 2008-07-26 11:36:27 -0400 (Sat, 26 Jul 2008) $ by $Author: aadler $