1 | import numpy as np
|
---|
2 | from collections import OrderedDict
|
---|
3 | from BamgConvertMesh import BamgConvertMesh
|
---|
4 | from mesh2d import mesh2d
|
---|
5 | from bamgmesh import bamgmesh
|
---|
6 | from bamggeom import bamggeom
|
---|
7 |
|
---|
8 | def meshconvert(md,*args):
|
---|
9 | """
|
---|
10 | CONVERTMESH - convert mesh to bamg mesh
|
---|
11 |
|
---|
12 | Usage:
|
---|
13 | md=meshconvert(md);
|
---|
14 | md=meshconvert(md,index,x,y);
|
---|
15 | """
|
---|
16 |
|
---|
17 | if not len(args)==0 and not len(args)==3:
|
---|
18 | raise TypeError("meshconvert error message: bad usage")
|
---|
19 |
|
---|
20 | if not len(args):
|
---|
21 | index = md.mesh.elements
|
---|
22 | x = md.mesh.x
|
---|
23 | y = md.mesh.y
|
---|
24 | else:
|
---|
25 | index = args[0]
|
---|
26 | x = args[1]
|
---|
27 | y = args[2]
|
---|
28 |
|
---|
29 | #call Bamg
|
---|
30 | bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
|
---|
31 |
|
---|
32 | # plug results onto model
|
---|
33 | md.private.bamg = OrderedDict()
|
---|
34 | md.private.bamg['mesh'] = bamgmesh(bamgmesh_out)
|
---|
35 | md.private.bamg['geometry'] = bamggeom(bamggeom_out)
|
---|
36 | md.mesh = mesh2d()
|
---|
37 | md.mesh.x = bamgmesh_out['Vertices'][:,0].copy()
|
---|
38 | md.mesh.y = bamgmesh_out['Vertices'][:,1].copy()
|
---|
39 | md.mesh.elements = bamgmesh_out['Triangles'][:,0:3].astype(int)
|
---|
40 | md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
|
---|
41 | md.mesh.segments = bamgmesh_out['IssmSegments'][:,0:3].astype(int)
|
---|
42 | md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:,3].astype(int)
|
---|
43 |
|
---|
44 | #Fill in rest of fields:
|
---|
45 | md.mesh.numberofelements = np.size(md.mesh.elements,axis=0)
|
---|
46 | md.mesh.numberofvertices = np.size(md.mesh.x)
|
---|
47 | md.mesh.numberofedges = np.size(md.mesh.edges,axis=0)
|
---|
48 | md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices,bool)
|
---|
49 | md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
|
---|
50 |
|
---|
51 | return md
|
---|
52 |
|
---|