[3354] | 1 | function md=meshconvert(md,varargin)
|
---|
| 2 | %CONVERTMESH - convert mesh to bamg mesh
|
---|
| 3 | %
|
---|
| 4 | % Usage:
|
---|
| 5 | % md=meshconvert(md);
|
---|
| 6 | % md=meshconvert(md,index,x,y);
|
---|
| 7 |
|
---|
| 8 | if nargin~=1 & nargin~=4,
|
---|
| 9 | help meshconvert
|
---|
| 10 | error('meshconvert error message: bad usage');
|
---|
| 11 | end
|
---|
| 12 |
|
---|
| 13 | if nargin==1,
|
---|
[16281] | 14 | index = md.mesh.elements;
|
---|
| 15 | x = md.mesh.x;
|
---|
| 16 | y = md.mesh.y;
|
---|
[3354] | 17 | else
|
---|
[16281] | 18 | index = varargin{1};
|
---|
| 19 | x = varargin{2};
|
---|
| 20 | y = varargin{3};
|
---|
[3354] | 21 | end
|
---|
| 22 |
|
---|
| 23 | %call Bamg
|
---|
| 24 | [bamgmesh_out bamggeom_out]=BamgConvertMesh(index,x,y);
|
---|
| 25 |
|
---|
| 26 | % plug results onto model
|
---|
[16281] | 27 | md.private.bamg = struct();
|
---|
| 28 | md.private.bamg.mesh = bamgmesh(bamgmesh_out);
|
---|
| 29 | md.private.bamg.geometry = bamggeom(bamggeom_out);
|
---|
| 30 | md.mesh.x = bamgmesh_out.Vertices(:,1);
|
---|
| 31 | md.mesh.y = bamgmesh_out.Vertices(:,2);
|
---|
| 32 | md.mesh.elements = bamgmesh_out.Triangles(:,1:3);
|
---|
| 33 | md.mesh.edges = bamgmesh_out.IssmEdges;
|
---|
| 34 | md.mesh.segments = bamgmesh_out.IssmSegments(:,1:3);
|
---|
| 35 | md.mesh.segmentmarkers = bamgmesh_out.IssmSegments(:,4);
|
---|
[3354] | 36 |
|
---|
| 37 | %Fill in rest of fields:
|
---|
[16281] | 38 | md.mesh.numberofelements = size(md.mesh.elements,1);
|
---|
| 39 | md.mesh.numberofvertices = length(md.mesh.x);
|
---|
| 40 | md.mesh.numberofedges = size(md.mesh.edges,1);
|
---|
| 41 | md.mesh.vertexonboundary = zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2)) = 1;
|
---|
[26861] | 42 | md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
|
---|
| 43 | md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
|
---|