def make_test_mesh(x,y,z=1): mesh=iMesh.Mesh() # Set the adjacency table such that all intermediate-topologies are generated mesh.adjTable = np.array([[7, 4, 4, 1],[1, 7, 5, 5],[1, 5, 7, 5],[1, 5, 5, 7]], dtype='int32') coords=utils.make_coords(x,y,z) verts=mesh.createVtx(coords) if z is 1: vert_arr=utils.make_quadrilateral_vertex_array(verts, x) ents,status=mesh.createEntArr(iMesh.Topology.quadrilateral, vert_arr) else: vert_arr=utils.make_hexahedron_vertex_array(verts, x, y, z) ents,status=mesh.createEntArr(iMesh.Topology.hexahedron, vert_arr) # Add data to the entities in each cell_dimension for i in range(4): ents=mesh.getEntities(type=i) if len(ents) > 0: tag=mesh.createTag('%s_data' % i,1,np.int32) m=np.prod([10]*(i+1)) dat=np.arange(m,m+len(ents),dtype=np.int32) # print 'start: %s, end: %s' % (m, m+100) # dat=rnd.uniform(m,m+100,len(ents)).astype(np.int32) print dat tag[ents]=dat return mesh
def make_2d(mesh, dims): print ">>>>>> make_2d" x,y=dims print "X-dim=%s, Y-dim=%s, Z-dim=%s" % (x,y,1) print "--> make_coords" t0=time.time() coords=utils.make_coords(x,y,1) print " %.1f ms" % ((time.time()-t0)*1000) print "--> createVtx" t0=time.time() verts=mesh.createVtx(coords) print " %.1f ms" % ((time.time()-t0)*1000) print "--> make_quadrilateral_vertex_array" t0=time.time() # vert_arr=utils.make_quadrilateral_vertex_array_orig(verts, x, y) # vert_arr=utils.make_quadrilateral_vertex_array_extend(verts, x) vert_arr=utils.make_quadrilateral_vertex_array(verts, x) print " %.1f ms" % ((time.time()-t0)*1000) print "--> createEntArr quadrilaterals" t0=time.time() quads,status=mesh.createEntArr(iMesh.Topology.quadrilateral,vert_arr) print " %.1f ms" % ((time.time()-t0)*1000) print "--> createEntSet(s)" set=mesh.createEntSet(ordered=False) set.add(quads) utils.print_mesh_types(mesh) print "<<<<<<\n"
y_cnt=len(y_coords) z=0 coords=[[x_coords[x],y_coords[y],z] for y in xrange(y_cnt) for x in xrange(x_cnt)] # Create the vertices #verts=mesh.createVtx(utils.make_coords(x_cnt, y_cnt, z)) # Geocoordinate stored in a field verts=mesh.createVtx(coords) # Geocoordinates stored in mesh s0_set=mesh.createEntSet(True) s0_set.add(verts) s0_tag=mesh.createTag('S0', 1, iMesh.EntitySet) s0_tag[mesh.rootSet]=s0_set # Create quadrilateral entities # Build the appropriate vertex-array from the vertices vert_arr = utils.make_quadrilateral_vertex_array(verts=verts, x_cnt=x_cnt) quads,status=mesh.createEntArr(iMesh.Topology.quadrilateral,vert_arr) # Create the Topology set s2_set=mesh.createEntSet(True) s2_set.add(quads) s2_tag=mesh.createTag('S2', 1, iMesh.EntitySet) s2_tag[mesh.rootSet]=s2_set ntopo=len(quads) s21_set=mesh.createEntSet(True) for e in mesh.getEntAdj(quads, type=1): s21_set.add(e) s21_tag=mesh.createTag('S21', 1, iMesh.EntitySet)