void VertexMeshWriter<ELEMENT_DIM, SPACE_DIM>::MakeVtkMesh(VertexMesh<ELEMENT_DIM, SPACE_DIM>& rMesh) { #ifdef CHASTE_VTK // Make the Vtk mesh vtkPoints* p_pts = vtkPoints::New(VTK_DOUBLE); p_pts->GetData()->SetName("Vertex positions"); for (unsigned node_num=0; node_num<rMesh.GetNumNodes(); node_num++) { c_vector<double, SPACE_DIM> position = rMesh.GetNode(node_num)->rGetLocation(); if (SPACE_DIM==2) { p_pts->InsertPoint(node_num, position[0], position[1], 0.0); } else { p_pts->InsertPoint(node_num, position[0], position[1], position[2]); } } mpVtkUnstructedMesh->SetPoints(p_pts); p_pts->Delete(); // Reference counted for (typename VertexMesh<ELEMENT_DIM,SPACE_DIM>::VertexElementIterator iter = rMesh.GetElementIteratorBegin(); iter != rMesh.GetElementIteratorEnd(); ++iter) { vtkCell* p_cell; if (SPACE_DIM == 2) { p_cell = vtkPolygon::New(); } else { p_cell = vtkConvexPointSet::New(); } vtkIdList* p_cell_id_list = p_cell->GetPointIds(); p_cell_id_list->SetNumberOfIds(iter->GetNumNodes()); for (unsigned j=0; j<iter->GetNumNodes(); ++j) { p_cell_id_list->SetId(j, iter->GetNodeGlobalIndex(j)); } mpVtkUnstructedMesh->InsertNextCell(p_cell->GetCellType(), p_cell_id_list); p_cell->Delete(); // Reference counted } #endif //CHASTE_VTK }