source: issm/trunk/src/m/model/mesh/rifts/meshplug.m@ 8298

Last change on this file since 8298 was 8298, checked in by seroussi, 14 years ago

changed grid to node in matlab

File size: 2.2 KB
Line 
1function [elements,x,y,z,numberofelements,numberofnodes,elconv,nodeconv,elconv2,nodeconv2]=meshplug(elements,x,y,z,elements2,x2,y2,z2,extractednodes,extractedelements,domain);
2%MESHPLUG - embed mesh into another one
3% See also meshaddrifts
4
5
6%initialize elconv,nodeconv conversion tables from md mesh to new md mesh
7elconv=1:size(elements,1); elconv=elconv';
8nodeconv=1:size(x,1); nodeconv=nodeconv';
9
10%take away old elements in area of interest:
11elements(extractedelements,:)=[];
12element_offset=size(elements,1);
13
14%update elconv after having extracted the area of interest elements
15temp_elconv=elconv; temp_elconv(extractedelements)=[];
16temp_elconvnum=1:length(temp_elconv);
17elconv(temp_elconv)=temp_elconvnum;
18elconv(extractedelements)=NaN;
19
20%initialize elconv2 and nodeconv2, conversion tables from md2 mesh to new md mesh
21elconv2=1:size(elements2,1);elconv2=elconv2'+element_offset;
22nodeconv2=(size(x,1)+1):(size(x,1)+size(x2,1)); nodeconv2=nodeconv2';
23
24extractednodes_minusborder=extractednodes;
25extractednodes_minusborder(domain)=[];
26
27x(extractednodes_minusborder)=NaN;
28y(extractednodes_minusborder)=NaN;
29
30%now, plug md2 mesh:
31
32%first, offset all ids of md2 mesh
33elements2=elements2+length(x);
34
35%NaN border nodes in second mesh
36x2(1:length(domain))=NaN;
37y2(1:length(domain))=NaN;
38
39%redirect border nodes in elements2 to elements
40for i=1:length(domain),
41 pos=find(elements2==(i+length(x)));
42 elements2(pos)=extractednodes(domain(i));
43end
44
45%same deal for nodeconv2:
46for i=1:length(domain),
47 nodeconv2(i)=extractednodes(domain(i));
48end
49
50
51%plug elements
52elements=[elements;elements2];
53
54
55%now, increase number of nodes
56x=[x; x2];
57y=[y; y2];
58z=[z; z2];
59
60%now, get rid of NaN in x:
61while ~isempty(find(isnan(x))),
62
63 pos=find(isnan(x));
64 node=pos(1);
65
66 %collapse node
67 x(node)=[];
68 y(node)=[];
69 z(node)=[];
70
71 %renumber all nodes > node in elements
72 pos=find(elements>node);
73 elements(pos)=elements(pos)-1;
74
75 %same deal for nodeconv2:
76 pos=find(nodeconv2>node);
77 nodeconv2(pos)=nodeconv2(pos)-1;
78
79end
80
81numberofnodes=length(x);
82numberofelements=length(elements);
83
84%finish nodeconv:
85temp_nodeconv=nodeconv; temp_nodeconv(extractednodes_minusborder)=[];
86temp_nodeconvnum=1:length(temp_nodeconv);
87nodeconv(temp_nodeconv)=temp_nodeconvnum;
88nodeconv(extractednodes_minusborder)=NaN;
89
Note: See TracBrowser for help on using the repository browser.