|
EIDORS: Electrical Impedance Tomography and Diffuse Optical Tomography Reconstruction Software |
|
EIDORS
(mirror) Main Documentation Tutorials − Image Reconst − Data Structures − Applications − FEM Modelling − GREIT − Old tutorials Download Contrib Data GREIT Browse Docs Browse SVN News Mailing list (archive) FAQ Developer
|
Using Netgen to create general (arbitrary) EIDORS ModelsEIDORS can use Netgen to create sophisticated 2D and 3D modelsHere are some examples of the varity of models which can be generated using the function: ng_mk_gen_models.
Shape 1
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1); \n', ...
'solid p1= plane(0,0,0;0,0.5,-1);\n' ...
'solid p2= plane(0,0,2;0.5,0, 1);\n' ...
'solid mainobj= p1 and p2 and cyl -maxh=0.3;\n'];
elec_pos = []; elec_shape = []; elec_obj = {};
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 2
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1); \n', ...
'solid mainobj= plane(0,0,0;0,0,-1)\n' ...
'and plane(0,0,1.5;0.2,0.2,1)\n' ...
'and cyl -maxh=0.3;\n'];
elec_pos = [ -1, 0, 1, 1, 0, 0;
0, -1,1.2, 0, 1, 0];
elec_shape=[0.1,0,0;0.2,0.3,0.02];
elec_obj = 'cyl';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 3
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1); \n', ...
'solid mainobj= orthobrick(-2,-2,0;2,2,2) and cyl -maxh=0.3;\n'];
th = linspace(0,2*pi,15)'; th(end) = [];
cs = [cos(th), sin(th)];
elec_pos = [ cs, th/2/pi + 0.5, cs, 0*th];
elec_shape=[0.1];
elec_obj = 'cyl';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 4
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1); \n', ...
'solid mainobj= orthobrick(-2,-2,0;2,2,2) and cyl -maxh=0.3;\n'];
th = linspace(0,2*pi,15)'; th(end) = [];
cs = [cos(th), sin(th)];
elec_pos = [ cs, th/2/pi + 0.5, cs, 0*th];
elec_shape=[0.1*th/2/pi + 0.05];
elec_obj = 'cyl';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 5
shape_str = ['solid cyl = cylinder (0,0,0; 1,0,0; 1); \n', ...
'solid mainobj= plane(0,0,0;-1,0,0)\n' ...
'and plane(2,0,0;1,0,0)\n' ...
'and plane(0,0,-0.5;0,0,-1)\n' ...
'and cyl -maxh=0.3;\n'];
elec_pos = [ 1, 0, 1, 0, 0, 1;
1.2, 1, 0, 0, 1, 0];
elec_shape=[0.1];
elec_obj = 'cyl';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 6
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1); \n', ...
'solid bottom = plane(0,0,0;0,0,-1);\n' ...
'solid top = plane(0,0,2;0,0,1);\n' ...
'solid mainobj= top and bottom and cyl -maxh=0.3;\n'];
elec_pos = [ 1, 0, 1, 1, 0, 0;
0, 1,1.2, 0, 1, 0;
0.8, 0, 0, 0, 0, -1];
elec_shape=[0.1];
elec_obj = {'cyl','cyl','bottom'};
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 7
shape_str = ['solid top = plane(0,0,0;0,0,1);\n' ...
'solid mainobj= top and orthobrick(-2,-2,-2;2,2,0);\n'];
elec_pos = [ 1, 0, 0, 0, 0, 1;
0, 0, 0, 0, 0, 1;
-1, 0, 0, 0, 0, 1];
elec_shape=[0.1];
elec_obj = 'top';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 8
shape_str = ['solid top = plane(0,0,0;0,0,1);\n' ...
'solid cyl = ellipticcylinder(0,0,0;2.5,0,0;0,1,0);\n' ...
'solid mainobj= top and cyl and orthobrick(-2,-2,-2;2,2,0);\n'];
elec_pos = [ 1, 0, 0, 0, 0, 1;
0, 0, 0, 0, 0, 1;
-1, 0, 0, 0, 0, 1;
1, -1,-1.2, 0, -1, 0;
0, -1,-1.0, 0, -1, 0;
-1, -1,-0.8, 0, -1, 0];
elec_shape=[0.1];
elec_obj = {'top','top','top','cyl','cyl','cyl'};
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
show_fem( fmdl );
Shape 9
shape_str = ['solid top = plane(0,0,0;0,0,1);\n' ...
'solid ball = sphere(-1.25,0,-1;0.5); tlo ball;\n' ...
'solid mainobj= top and orthobrick(-2,-1,-2;2,1,0) and not ball -maxh=0.5;\n'];
elec_pos = linspace( -1.5,1.5,5)';
elec_pos = [ elec_pos, elec_pos*[0,0,0,0], elec_pos*0+1];
elec_shape=[0.3];
elec_obj = 'top';
[fmdl,mat_idx] = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
img = mk_image( fmdl, 1);
img.elem_data(mat_idx{2}) = 1.1;
show_fem( img );
Shape 10
shape_str = ['solid top = plane(0,0,0;0,0,1);\n' ...
'solid mainobj= top and orthobrick(-3,-3,-2;3,3,0) -maxh=0.5;\n'];
[elec_pos_x,elec_pos_y] = meshgrid(linspace( -1.5,1.5,5),linspace(-2,2,7));
elec_pos = [ elec_pos_x(:), elec_pos_y(:), ones(size(elec_pos_x(:)))*[0,0,0,1] ];
elec_shape=[0.2];
elec_obj = 'top';
[fmdl,mat_idx] = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
Shape 11This shape could represent an elliptical fish or submarine generating electrical signals in a tank with electrodes on the tank boundary.
shape_str = ['solid cyl = cylinder (0,0,0; 0,0,1; 1.0); \n', ...
'solid tank = orthobrick(-2,-2,0;2,2,0.4) and cyl; \n', ...
'solid fish = ellipsoid(0.2,0.2,0.2;0.2,0,0;0,0.1,0;0,0,0.1); tlo fish;\n', ...
'solid mainobj= tank and not fish -maxh=0.3;\n'];
n_elec = 7;
th = linspace(0,2*pi,n_elec+1)'; th(end) = [];
cs = [cos(th), sin(th)];
elec_pos = [ cs, 0.2+0*th, cs, 0*th];
elec_shape=[0.05];
for i=1:n_elec; elec_obj{i} = 'cyl'; end
i=i+1;elec_pos(i,:) = [ 0 ,0.2,0.2,-1,0,0]; elec_obj{i} = 'fish';
i=i+1;elec_pos(i,:) = [ 0.4,0.2,0.2, 1,0,0]; elec_obj{i} = 'fish';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
Tank with 7 electrodes on the boundary an two electrodes on the inclusion. Shape 12
shape_str = ['solid top = ellipsoid(0,0,0; 0,0,1; 1,0,0; 0,1,0); \n' ...
'solid mainobj= top and orthobrick(-2,-2,0;2,2,2) -maxh=0.1;\n'];
deg2rad = pi/180;
th = (-70:20:70)'*deg2rad;
elec_pos = [0*th,sin(th),cos(th),0*th,sin(th),cos(th); ...
sin(th),0*th,cos(th),sin(th),0*th,cos(th)];
elec_shape=[0.05];
elec_obj = 'top';
fmdl = ng_mk_gen_models(shape_str, elec_pos, elec_shape, elec_obj);
Half sphere with top surface electrodes |
Last Modified: $Date: 2011-07-15 06:48:46 -0400 (Fri, 15 Jul 2011) $ by $Author: aadler $