rbmatlab
1.16.09
Main Page
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Modules
Pages
grid
@triagrid
read_msh.m
1
function
[p, t] = read_msh(filename)
2
%
function
[p, t] = read_msh(filename)
3
%
4
% IM 2014-08-14
5
6
fid = fopen(filename,
'r'
);
7
8
% read number of nodes
9
C = textscan(fid,
'%d'
, 1,
'Headerlines'
, 4);
10
nNodes = C{1};
11
12
% read nodes coordinates
13
C = textscan(fid,
'%d%f%f%f'
, nNodes);
14
15
p = [C{2}(:), C{3}(:)]
';
16
17
% read elements
18
C = textscan(fid, '
%d
', 1, '
CommentStyle
', '
$
');
19
textscan(fid, '
%s
', 1, '
Delimiter
', '
\n
');
20
nElements = C{1};
21
t = [];
22
23
for i = 1:nElements
24
25
C = textscan(fid, '
%s
', 1, '
Delimiter
', '
\n
');
26
C = textscan(C{1}{1}, '
%f
');
27
if C{1}(2) == 2
28
29
t = [t, C{1}(C{1}(3) + (4:6))];
30
end
31
end
32
33
fclose(fid);
34
35
% make orientation consistent
36
X1 = p(1, t(2, :)) - p(1, t(1, :));
37
Y1 = p(2, t(2, :)) - p(2, t(1, :));
38
X2 = p(1, t(3, :)) - p(1, t(1, :));
39
Y2 = p(2, t(3, :)) - p(2, t(1, :));
40
41
reverse = X1.*Y2 - X2.* Y1 < 0;
42
43
if any(reverse)
44
t([2 3], reverse) = t([3 2], reverse);
45
end
46
47
end
Generated on Fri Sep 30 2016 10:51:19 for rbmatlab by
1.8.8