[21759] | 1 | import numpy as np
|
---|
[13270] | 2 | from collections import OrderedDict
|
---|
[17497] | 3 | from BamgConvertMesh import BamgConvertMesh
|
---|
[17558] | 4 | from mesh2d import mesh2d
|
---|
[17497] | 5 | from bamgmesh import bamgmesh
|
---|
| 6 | from bamggeom import bamggeom
|
---|
[13270] | 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):
|
---|
[16281] | 21 | index = md.mesh.elements
|
---|
| 22 | x = md.mesh.x
|
---|
| 23 | y = md.mesh.y
|
---|
[13270] | 24 | else:
|
---|
[16281] | 25 | index = args[0]
|
---|
| 26 | x = args[1]
|
---|
| 27 | y = args[2]
|
---|
[13270] | 28 |
|
---|
| 29 | #call Bamg
|
---|
[13991] | 30 | bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
|
---|
[13270] | 31 |
|
---|
| 32 | # plug results onto model
|
---|
[16281] | 33 | md.private.bamg = OrderedDict()
|
---|
| 34 | md.private.bamg['mesh'] = bamgmesh(bamgmesh_out)
|
---|
| 35 | md.private.bamg['geometry'] = bamggeom(bamggeom_out)
|
---|
[17558] | 36 | md.mesh = mesh2d()
|
---|
[16281] | 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)
|
---|
[13270] | 43 |
|
---|
| 44 | #Fill in rest of fields:
|
---|
[21759] | 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)
|
---|
[16281] | 49 | md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
|
---|
[13270] | 50 |
|
---|
| 51 | return md
|
---|
| 52 |
|
---|