99 assert(SPACE_DIM == 2);
102 vtkPoints* p_pts = vtkPoints::New(VTK_DOUBLE);
103 p_pts->GetData()->SetName(
"Vertex positions");
108 for (
unsigned node_num = 0; node_num < rMesh.
GetNumNodes(); node_num++)
110 c_vector<double, 2> position;
111 position = rMesh.
GetNode(node_num)->rGetLocation();
112 p_pts->InsertPoint(node_num, position[0], position[1], 0.0);
125 cell_offset_dist[0] = n_vertices;
126 for (
unsigned i = 1; i < num_elements; ++i)
127 cell_offset_dist[i] = cell_offset_dist[i - 1] + rMesh.
GetElement(i - 1)->GetNumNodes();
129 const double alpha = 0.8;
133 const unsigned num_elem_nodes = elem->GetNumNodes();
135 for (
unsigned elem_node_num = 0; elem_node_num < num_elem_nodes; elem_node_num++)
137 c_vector<double, SPACE_DIM> node_position(2);
138 node_position = elem->GetNode(elem_node_num)->rGetLocation();
139 const double new_x = (node_position[0] - elem_centroid[0]) * alpha + elem_centroid[0];
140 const double new_y = (node_position[1] - elem_centroid[1]) * alpha + elem_centroid[1];
141 p_pts->InsertPoint(cell_offset_dist[elem->GetIndex()] + elem_node_num,
145 mpVtkUnstructedMesh->SetPoints(p_pts);
147 unsigned total_num_edges = 0;
151 for (
unsigned edge_index = 0; edge_index < elem->GetNumEdges(); ++edge_index)
154 p_cell = vtkQuad::New();
155 const unsigned num_trap_nodes = p_cell->GetNumberOfEdges();
156 assert(num_trap_nodes == 4);
157 vtkIdList* p_cell_id_list = p_cell->GetPointIds();
158 p_cell_id_list->SetNumberOfIds(num_trap_nodes);
159 auto p_edge = elem->GetEdge(edge_index);
160 assert(p_edge->GetNumNodes() == 2);
163 std::array<unsigned, 2> base_ids = { { p_edge->GetNode(0)->GetIndex(), p_edge->GetNode(1)->GetIndex() } };
164 std::array<unsigned, 2> top_ids = { { elem->GetNodeLocalIndex(base_ids[0])
165 + cell_offset_dist[elem->GetIndex()],
166 elem->GetNodeLocalIndex(base_ids[1]) + cell_offset_dist[elem->GetIndex()] } };
169 p_cell_id_list->SetId(0, base_ids[0]);
170 p_cell_id_list->SetId(1, base_ids[1]);
171 p_cell_id_list->SetId(2, top_ids[1]);
172 p_cell_id_list->SetId(3, top_ids[0]);
173 mpVtkUnstructedMesh->InsertNextCell(p_cell->GetCellType(), p_cell_id_list);
180 p_cell = vtkPolygon::New();
181 const unsigned num_elem_nodes = elem->GetNumNodes();
182 vtkIdList* p_cell_id_list = p_cell->GetPointIds();
183 p_cell_id_list->SetNumberOfIds(num_elem_nodes);
184 for (
unsigned j = 0; j < num_elem_nodes; ++j)
186 p_cell_id_list->SetId(j, cell_offset_dist[elem->GetIndex()] + j);
189 mpVtkUnstructedMesh->InsertNextCell(p_cell->GetCellType(), p_cell_id_list);
195 assert(total_num_edges + num_elements == mpVtkUnstructedMesh->GetNumberOfCells());