Skip to content
Snippets Groups Projects
Commit dcab669f authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

new upstream release
parent 9abbecef
No related branches found
No related tags found
No related merge requests found
function gmesh = load_gmsh ( filename ) function gmesh = load_gmsh ( filename )
[fid,ierr] = mopen ( filename, 'r');
if ierr <> 0 then;
mclose(fid);
error('no such file: '+filename)
end
gmesh = []; gmesh = [];
gmesh.MIN = zeros(3,1); gmesh.MIN = zeros(3,1);
gmesh.MAX = zeros(3,1); gmesh.MAX = zeros(3,1);
fid = mopen ( filename, 'r');
while 1 while 1
endoffile = 0; endoffile = 0;
// while (1) while (1)
// tline = mgetl(fid,1); // jump over irrelevant text
// if meof(fid), endoffile=1,break, end
// if (tline == '$'), break, end
// end
tline = mgetl(fid,1); tline = mgetl(fid,1);
if meof(fid), endoffile=1,break, end if meof(fid), endoffile=1,break, end
if (tline == '$'), break, end if (part(tline,1) == '$'), break, end
end
if (endoffile == 1), break, end if (endoffile == 1), break, end
if (part(tline,1:4) == '$NOD' | part(tline,1:4) == '$Nod')
if tline == '$NOD'
disp('reading nodes') disp('reading nodes')
gmesh.nbNod = mfscanf (1, fid, '%d'); gmesh.nbNod = mfscanf (1, fid, '%d');
gmesh.POS = zeros (gmesh.nbNod, 3); gmesh.POS = zeros (gmesh.nbNod, 3);
...@@ -48,8 +47,7 @@ function gmesh = load_gmsh ( filename ) ...@@ -48,8 +47,7 @@ function gmesh = load_gmsh ( filename )
tline = mgetl(fid,2); // read 2 dummy lines tline = mgetl(fid,2); // read 2 dummy lines
disp('nodes have been read') disp('nodes have been read')
else elseif(part(tline,1:4)=='$ELM' | part(tline,1:4)=='$Ele')
if (tline == '$ELM')
disp('reading elements') disp('reading elements')
gmesh.nbElm = mfscanf (1,fid, '%d'); gmesh.nbElm = mfscanf (1,fid, '%d');
gmesh.ELE_INFOS = zeros (gmesh.nbElm,5); gmesh.ELE_INFOS = zeros (gmesh.nbElm,5);
...@@ -74,8 +72,30 @@ function gmesh = load_gmsh ( filename ) ...@@ -74,8 +72,30 @@ function gmesh = load_gmsh ( filename )
gmesh.QTRIANGLES=[]; gmesh.QTRIANGLES=[];
gmesh.QQUADS=[]; gmesh.QQUADS=[];
for (I=1:gmesh.nbElm) for (I=1:gmesh.nbElm)
if (part(tline,1:4)=='$Ele')
// file is in GMSH version 2.0 format
gmesh.ELE_INFOS(I,1:3) = mfscanf(3,fid,'%d')';
n_of_tags = gmesh.ELE_INFOS(I,3);
gmesh.ELE_INFOS(I,4+(1:n_of_tags)) = mfscanf(n_of_tags,fid,'%d')';
// the number of points
select gmesh.ELE_INFOS(I,2)
case 15 then, np=1;
case 1 then, np=2;
case 2 then, np=3;
case 3 then, np=4;
case 4 then, np=4;
case 5 then, np=8;
case 6 then, np=6;
case 7 then, np=5;
case 9 then, np=6;
case 10 then, np=9;
end
NODES_ELEM = mfscanf(np,fid,'%d')';
else
// version 1.0 format
gmesh.ELE_INFOS(I,:) = mfscanf(5,fid,'%d')'; gmesh.ELE_INFOS(I,:) = mfscanf(5,fid,'%d')';
NODES_ELEM = mfscanf(gmesh.ELE_INFOS(I,5),fid,'%d')'; NODES_ELEM = mfscanf(gmesh.ELE_INFOS(I,5),fid,'%d')';
end
select gmesh.ELE_INFOS(I,2) select gmesh.ELE_INFOS(I,2)
case 15 then // point case 15 then // point
gmesh.nbPoints = gmesh.nbPoints + 1; gmesh.nbPoints = gmesh.nbPoints + 1;
...@@ -112,10 +132,9 @@ function gmesh = load_gmsh ( filename ) ...@@ -112,10 +132,9 @@ function gmesh = load_gmsh ( filename )
warning('Unknown element type ' + string(gmesh.ELE_INFOS(I,2)) + ' !') warning('Unknown element type ' + string(gmesh.ELE_INFOS(I,2)) + ' !')
end end
end end
tline = mgetl(fid,1);
disp('elements have been read') disp('elements have been read')
end tline = mgetl(fid,1);
end end //
end end // while
mclose (fid); mclose (fid);
endfunction endfunction
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment