OptFEM2D  0.1
Matlab optimized FEM2D
 All Files Functions Groups Pages
GetMeshOpt.m
Go to the documentation of this file.
1 %> @file GetMeshOpt.m
2 %>
3 %>
4 %> @brief Initialization of the Mesh structure from a FreeFEM++ mesh file <br/>
5 %> Optimized version <br/>
6 %> Mesh=GetMesh(cFileName)
7 %>
8 %> @param cFileName : Name of the FreeFem mesh file
9 %>
10 %> @return Mesh: Mesh structure
11 %>
12 %>
13 %> @date
14 %> January 14th 2004
15 %>
16 %>
17 %> @author
18 %> Cuvelier F., cuvelier@math.univ-paris13.fr
19 %> \f$a=\frac{10}{12}\f$
20 %>
21 function Mesh=GetMeshOpt(cFileName)
22  [fid,message]=fopen(cFileName,'r');
23  if ( fid == -1 )
24  error([message,' : ',cFileName]);
25  end
26  if isOctave()
27  [n]=fscanf(fid,'%d %d %d',3);
28 
29  R=fscanf(fid,'%f %f %d',[3,n(1)]);
30  q=R([1 2],:);
31  ql=R(3,:);
32  R=fscanf(fid,'%d %d %d %d',[4,n(2)]);
33 
34  me=R([1:3],:);
35  mel=R(4,:);
36  R=fscanf(fid,'%d %d %d',[3,n(3)]);
37 
38  be=R([1 2],:);
39  bel=R(3,:);
40  else % Matlab
41  n=textscan(fid,'%d %d %d',1); % n(1) -> number of vertices
42  % n(2) -> number of triangles
43  % n(3) -> number of boundary edges
44 
45  R=textscan(fid,'%f %f %d',n{1});
46  q=[R{1},R{2}]';
47  ql=R{3}';
48  R=textscan(fid,'%d %d %d %d',n{2});
49  me=[R{1},R{2},R{3}]';
50  mel=R{4}';
51 
52  R=textscan(fid,'%d %d %d',n{3});
53  be=[R{1},R{2}]';
54  bel=R{3}';
55  end
56  fclose(fid);
57 
58  Mesh=struct('q',q,'me',me,'ql',ql,'mel',mel,'be',be,'bel',bel, ...
59  'nq',size(q,2), ...
60  'nme',size(me,2), ...
61  'nbe',size(be,2), ...
62  'areas',ComputeAreaOpt(q,me),...
63  'lbe',EdgeLength(be,q));
64 %*****