diff --git a/ImageIterator.py b/ImageIterator.py index f1e93843018db6b7e34615bffd19c26c75f54175..f88cc8ddefb35457c47a2d0b410addc1e67962c9 100644 --- a/ImageIterator.py +++ b/ImageIterator.py @@ -101,82 +101,13 @@ class ImageIterator(): #self.printer.print_var("k_frame_old",k_frame_old,-1) if (self.initialize_U_from_file): - print k_frame - - # xdmf_filename = self.initialize_U_from_file+"_"+str(k_frame).zfill(2)+".xmf" - # print xdmf_filename - # xdmf_file = dolfin.XDMFFile(xdmf_filename) - # xdmf_file.read(self.problem.mesh) #can not read type of cell - - # xdmf_filename = self.initialize_U_from_file+"_"+str(k_frame).zfill(2)+".h5" - # print xdmf_filename - # xdmf_file = dolfin.HDF5File(dolfin.mpi_comm_world(),xdmf_filename, 'r') - # xdmf_file.read(self.problem.mesh, "grid",True) #unknown cell type - - # xdmf_filename = self.initialize_U_from_file+".vtu" - # print xdmf_filename - # xdmf_file = dolfin.XDMFFile(xdmf_filename) - # xdmf_file.read(self.problem.mesh) #can not read vtu file - - # xdmf_filename = self.initialize_U_from_file+"_"+str(k_frame).zfill(2)+".xmf" - # print xdmf_filename - # xdmf_file = dolfin.XDMFFile(xdmf_filename) - # mesh = dolfin.MeshValueCollectionDouble() - # xdmf_file.read(mesh,'U') #can not read type of cell - - # mesh_test = dolfin.MeshValueCollection() - # xdmf_file.read(self.problem.U, "U") - # xdmf_file.read(mesh_test, "U") - - - # xdmf_filename = self.initialize_U_from_file+"_"+str(k_frame).zfill(2)+".h5" - # print xdmf_filename - # mesh_test = dolfin.Mesh() - # xdmf_file = dolfin.HDF5File(mesh_test.mpi_comm(),xdmf_filename, 'r') - # xdmf_file.read(self.problem.U, "U", False) - filename = self.initialize_U_from_file+"_"+str(k_frame).zfill(2)+".vtu" ugrid = myvtk.readUGrid(filename) vtk_u = ugrid.GetPointData().GetArray("U") - - # print 'get cells', ugrid.GetCells() - # print 'node 0', ugrid.GetCell(0) - # print 'node 1', ugrid.GetCell(1) - - print 'vtk nb cells = ', ugrid.GetNumberOfCells() - print 'dolfin nb cells = ', self.problem.mesh.num_cells() - print 'vtk nb points = ', ugrid.GetNumberOfPoints() - print 'dolfin nb points = ', self.problem.mesh.num_vertices() - assert ugrid.GetNumberOfCells() == self.problem.mesh.num_cells() - assert ugrid.GetNumberOfPoints() == self.problem.mesh.num_vertices() - - dofmap = self.problem.U_fs.dofmap() - n_cells = self.problem.mesh.num_cells() - nodes_per_element = dofmap.num_element_dofs(0) - np_connectivity = np.zeros([n_cells, nodes_per_element], dtype=np.int) - for i in range(n_cells): - np_connectivity[i,:] = dofmap.cell_dofs(i) - PERM_DOLFIN_TO_VTK = [0, 1, 2, 3] - np_connectivity = np_connectivity[:, PERM_DOLFIN_TO_VTK] - np_connectivity = np.hstack((np.ones([n_cells, 1], dtype=np.int)*nodes_per_element, - np_connectivity)).flatten() - vtk_connectivity = ns.numpy_to_vtkIdTypeArray(np_connectivity) - vtk_cells = vtk.vtkCellArray() - vtk_cells.SetCells(n_cells, vtk_connectivity) - print 'vtk cells', vtk_cells - vtk_grid = vtk.vtkUnstructuredGrid() - vtk_grid.SetCells(vtk.VTK_QUADRATIC_TETRA, vtk_cells) - print 'get cells', vtk_grid.GetCells() - # print 'node 0', vtk_grid.GetCell(0) - print 'node 1', vtk_grid.GetCell(1) - - # assert vtk_grid.GetCells() == ugrid.GetCells() - # assert vtk_grid.GetCell(0) == ugrid.GetCell(0) - - - - self.problem.U = ns.vtk_to_numpy(vtk_u) - + np_U = ns.vtk_to_numpy(vtk_u) + np_U_float = np_U.astype(float) + np_U_float_reshape = np.reshape(np_U_float, np_U_float.size) + self.problem.U.vector()[:] = np_U_float_reshape[dolfin.dof_to_vertex_map(self.problem.U_fs)] elif (self.initialize_DU_with_DUold): self.problem.U.vector().axpy(1., self.problem.DUold.vector())