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
Example #2
0
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)