[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
|
---|
| 27 | md.bamg=struct();
|
---|
| 28 | md.bamg.mesh=bamgmesh(bamgmesh_out);
|
---|
| 29 | md.bamg.geometry=bamggeom(bamggeom_out);
|
---|
| 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;
|
---|
| 34 | md.segments=bamgmesh_out.IssmSegments(:,1:3);
|
---|
| 35 | md.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
|
---|
[3354] | 36 |
|
---|
| 37 | %Fill in rest of fields:
|
---|
[3994] | 38 | md.dim=2;
|
---|
[3354] | 39 | md.numberofelements=size(md.elements,1);
|
---|
[8298] | 40 | md.numberofnodes=length(md.x);
|
---|
| 41 | md.z=zeros(md.numberofnodes,1);
|
---|
| 42 | md.nodeonbed=ones(md.numberofnodes,1);
|
---|
| 43 | md.nodeonwater=zeros(md.numberofnodes,1);
|
---|
| 44 | md.nodeonsurface=ones(md.numberofnodes,1);
|
---|
[3354] | 45 | md.elementonbed=ones(md.numberofelements,1);
|
---|
| 46 | md.elementonsurface=ones(md.numberofelements,1);
|
---|
[8298] | 47 | md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
|
---|