[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,
|
---|
| 14 | x=md.x;
|
---|
| 15 | y=md.y;
|
---|
| 16 | index=md.elements;
|
---|
| 17 | else
|
---|
| 18 | x=varargin{1};
|
---|
| 19 | y=varargin{2};
|
---|
| 20 | index=varargin{3};
|
---|
| 21 | end
|
---|
| 22 |
|
---|
| 23 | %call Bamg
|
---|
| 24 | [bamgmesh_out bamggeom_out]=BamgConvertMesh(index,x,y);
|
---|
| 25 |
|
---|
| 26 | % plug results onto model
|
---|
[9614] | 27 | md.private.bamg=struct();
|
---|
| 28 | md.private.bamg.mesh=bamgmesh(bamgmesh_out);
|
---|
| 29 | md.private.bamg.geometry=bamggeom(bamggeom_out);
|
---|
[3354] | 30 | md.x=bamgmesh_out.Vertices(:,1);
|
---|
| 31 | md.y=bamgmesh_out.Vertices(:,2);
|
---|
| 32 | md.elements=bamgmesh_out.Triangles(:,1:3);
|
---|
[5093] | 33 | md.edges=bamgmesh_out.IssmEdges;
|
---|
[9714] | 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:
|
---|
[9719] | 38 | md.mesh.dimension=2;
|
---|
[9725] | 39 | md.mesh.numberofelements=size(md.elements,1);
|
---|
| 40 | md.mesh.numberofvertices=length(md.x);
|
---|
[9732] | 41 | md.mesh.numberofedges=size(md.edges,1);
|
---|
[9725] | 42 | md.z=zeros(md.mesh.numberofvertices,1);
|
---|
[9729] | 43 | md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);
|
---|
[9725] | 44 | md.mask.vertexonwater=zeros(md.mesh.numberofvertices,1);
|
---|
[9729] | 45 | md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);
|
---|
| 46 | md.mesh.elementonbed=ones(md.mesh.numberofelements,1);
|
---|
| 47 | md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);
|
---|
[9725] | 48 | md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
|
---|