forked from pwcazenave/dhi-toolbox
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnodes2elems.m
46 lines (40 loc) · 1.05 KB
/
nodes2elems.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function elems = nodes2elems(nodes, tri)
% Transfer a field from nodes to element centres.
%
% elems = nodes2elems(nodes, tri)
%
% DESCRIPTION:
% Transfer values in nodes to the element centres described by the
% triangulation matrix tri.
%
% INPUT
% nodes = 1D or 2D array of nodal values
% tri = triangulation matrix
%
% OUTPUT:
% elems = element centre based field
%
% EXAMPLE USAGE
% elems = nodes2elems(nodes, tri)
%
% Author(s):
% Pierre Cazenave (University of Southampton) based on nodes2elems from
% fvcom-toolbox by Geoff Cowles (University of Massachusetts Dartmouth).
%
% Revision history
%
%==============================================================================
nelem = size(tri, 1);
if ndims(elems) == 1
elems = zeros(nelem, 1);
parfor i=1:nelem
elems(i) = mean(nodes(tri(i, :)));
end
elseif ndims(elems) == 2
elems = zeros(nelem, size(elems, 2));
parfor i=1:nelem
elems(i) = mean(nodes(tri(i, :), :), 1);
end
else
error('Unsupported number of dimensions (maximum of two)')
end