# delaunaytriangulation function: How to associate triangles with edges?

2 views (last 30 days)

Show older comments

Hi, I'm trying to perform finite volume method (CFD) calculations based on Matlab's built in "delaunaytriangulation" function. The function lists each triangle as a set of vertices or points. Similarly, the function lists each edge/face a set of vertices or points.

But I need each triangle information as a set of faces/edges to be able to loop over all edges for flux.

I get from dt.ConnectivityList command:

dt.ConnectivityList output

Point id_1 Point id_2 Point id_3 (Triangle no 1)

Point id_4 Point id_5 Point id_6 (Triangle no 2)

.... (And so on)

dt.Edge output

Point id_1 Point id_2 (Edge no 1)

POint id_3 Point id_4 (Edge no 2)

... (And so on)

What I need

Edge id_1 Edge id_2 Edge id_3 (Triangle no 1)

Edge id_4 Edge id_5 Edge id_6 (Triangle no 2)

.... (And so on)

Thank you very much.

##### 0 Comments

### Answers (2)

KSSV
on 16 Oct 2017

##### 1 Comment

KSSV
on 17 Oct 2017

Precise Simulation
on 16 Oct 2017

Edited: Precise Simulation
on 17 Oct 2017

With the gridedge function included with the Matlab FEA Toolbox you can reconstruct and recover the grid edge numbering like this:

p = rand(10,2);

t = delaunay(p);

[e,ev] = gridedge(t',2);

help gridedge, e'

where e contains the edge numbering for each cell, and ev the vertices for each edge. Alternativley, the following code snippet should work with a different edge numbering:

p = rand(10,2);

t = delaunay(p);

e = []; e2c = [];

for i=1:3

e = [e; t(:,[i mod(i,3)+1])];

e2c = [e2c; [i*ones(size(t,1),1) [1:size(t,1)]']];

end

[~,~,ei] = unique(sort(e,2),'rows');

e = zeros(3,size(t,1));

e(e2c(:,1)+3*(e2c(:,2)-1)) = ei;

e'

##### 5 Comments

Precise Simulation
on 21 Oct 2017

The last lines reindexes e to give edge numbers. Try it on a small grid to see.

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!