| MESH toolbox 0.1 Matlab/Octave mesh utils

- Main Page
- Related Pages
- Modules
- Files

- File List
- File Members

All Files Functions Groups Pages
BuildEdges.m
Go to the documentation of this file.
1 function [e2q,e2t,e2n,e2do,e2be]=BuildEdges(Th)
2 % e2q (nedx2) Edges to Nodes
3 % e2q(l,il) : indice dans le tableau Th.q du sommet il de l'arete l
4 % e2t (nedx2) Edges to Triangles
5 % e2t(l,1) : indice dans le tableau Th.me du 1er triangle adjacent
6 % a l'arete l
7 % e2t(l,2) : indice dans le tableau Th.me du 2eme triangle adjacent
8 % a l'arete l si arete interne sinon 0
9 % e2n (nedx2) : Edges to local number
10 % e2n(l,1) : numero local de l'arete dans le 1er triangle (voir e2t)
11 % e2n(l,2) : numero local de l'arete dans le 2eme triangle (voir e2t)
12 % s'il existe. 0 sinon.
13 % e2do (nedx1)
14 % e2do(l) : +1 si l'arete est dans le sens direct pour le 1er triangle (voir e2t)
15 % -1 sinon
16 % e2be (nbex3) : nbe number of boundary edges
17 % e2be(l,1) : numero de l'arete du bord
18 % e2be(l,2) : +1 si l'arete est dans le "bon" sens
19 % -1 sinon
20 % e2be(l,3) : label du bord
21 NumLocEdges=[ 1 2 ;2 3; 3 1]; % Numerotation locale des aretes
22 %
23 %NumLocEdges=[ 2 3 ;3 1; 1 2];
24
25 GlobalListEdges=[reshape(Th.me(NumLocEdges(:,1),:),3*Th.nme,1),reshape(Th.me(NumLocEdges(:,2),:),3*Th.nme,1)];
26
27 Edges2Elements=ones(3,1)*[1:Th.nme];
28 Edges2Elements=Edges2Elements(:);
29
30 Edges2LocalNum=[1; 2 ;3]*ones(1,Th.nme);
31 Edges2LocalNum=Edges2LocalNum(:);
32
33 [GlobalListEdgesSort,IS]=sort(GlobalListEdges,2);
34 PermutEdges=IS(:,2)-IS(:,1); % Contient 1 si arete dans le sens direct pour le triangle considéré
35 % Contient -1 sinon
36
37 [e2q,IG,IE]=unique(GlobalListEdgesSort,'rows','first');
38 e2t=Edges2Elements(IG,:);
39 e2n=Edges2LocalNum(IG,:);
40 e2do=PermutEdges(IG); %
41
42 [e2ql,IGl,IEf]=unique(GlobalListEdgesSort,'rows','last');
43 e2tl=Edges2Elements(IGl,:);
44 e2nl=Edges2LocalNum(IGl,:);
45 Id=find(IG==IGl);
46 e2tl(Id);
47 e2nl(Id);
48 e2t=[e2t e2tl];
49 e2n=[e2n e2nl];
50
51 if nargout==5
52 I=find(e2t(:,2)==0);
53 BE=Th.be';
54 [BE0,L]=sort(BE(:,2));
55 BE0=BE(L,:);
56 [BE1,J]=sort(BE0,2); % I(
57 %BE1=[BE1 Th.bel'];
58 [BE2a,K]=sort(BE1(:,1));
59 BE1=[BE1 Th.bel(L)'];
60 BE2=BE1(K,:);
61 JJ=J(K,1)-J(K,2);
62 TT=[BE2 JJ];
63 TTT=sortrows(TT,[1 2]);
64 % Ici on doit avoir
65 % e2q(I,:) == TTT(:,1:2)
66 %
67 e2be=[I TTT(:,4) TTT(:,3)];
68 %[BE(K,:), e2q(I,:) Th.bel(K)']
69 end