static void _tree_write (VsgPRTree3d *tree, gchar *prefix) { gchar fn[1024]; FILE *f; gint np = vsg_prtree3d_point_count (tree); gint nn = 0; gint i; g_sprintf (fn, "%s%03d.vtp", prefix, rk); f = fopen (fn, "w"); vsg_prtree3d_traverse (tree, G_PRE_ORDER, (VsgPRTree3dFunc) _traverse_count_local_nodes, &nn); fprintf (f, "<?xml version=\"1.0\" ?>\n" \ "<VTKFile type=\"PolyData\" version=\"0.1\">\n" \ "<PolyData>\n" \ "<Piece NumberOfPoints=\"%d\" NumberOfVerts=\"%d\" " \ "NumberOfLines=\"%d\" NumberOfStrips=\"0\" " \ "NumberOfPolys=\"0\">\n", np + 6*nn, np, 3*nn); fprintf (f, "<Points>\n"); fprintf (f, "<DataArray type=\"Float64\" NumberOfComponents=\"3\" " \ "format=\"ascii\">\n"); vsg_prtree3d_traverse (tree, G_PRE_ORDER, (VsgPRTree3dFunc) _traverse_fg_write, f); vsg_prtree3d_traverse (tree, G_PRE_ORDER, (VsgPRTree3dFunc) _traverse_bg_write, f); fprintf (f, "</DataArray>\n</Points>\n"); fprintf (f, "<Verts>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n"); for (i=0; i<np; i++) fprintf (f, "%d ", i); fprintf (f, "\n</DataArray>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\" >"); for (i=0; i<np; i++) fprintf (f, "%d ", i+1); fprintf (f, "\n</DataArray>\n</Verts>\n"); fprintf (f, "<Lines>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n"); for (i=0; i<3*nn; i++) fprintf (f, "%d %d ", np + 2*i, np + 2*i+1); fprintf (f, "\n</DataArray>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\" >"); for (i=0; i<3*nn; i++) fprintf (f, "%d ", 2*(i+1)); fprintf (f, "\n</DataArray>\n</Lines>\n"); fprintf (f, "\n</Piece>\n"); fprintf (f, "</PolyData>\n</VTKFile>\n"); fclose (f); }
static void _tree_write (VsgPRTree3d *tree) { gchar fn[1024]; FILE *f; gint np = vsg_prtree3d_point_count (tree); gint i; g_sprintf (fn, "prtree3parallel-%03d.vtp", rk); f = fopen (fn, "w"); fprintf (f, "<?xml version=\"1.0\" ?>\n" \ "<VTKFile type=\"PolyData\" version=\"0.1\">\n" \ "<PolyData>\n" \ "<Piece NumberOfPoints=\"%d\" NumberOfVerts=\"%d\" " \ "NumberOfLines=\"0\" NumberOfStrips=\"0\" " \ "NumberOfPolys=\"0\">\n", np, np); /* vsg_prtree3d_traverse (tree, G_PRE_ORDER, */ /* (VsgPRTree3dFunc) _traverse_bg_write, */ /* f); */ fprintf (f, "<Points>\n"); fprintf (f, "<DataArray type=\"Float64\" NumberOfComponents=\"3\" " \ "format=\"ascii\">\n"); vsg_prtree3d_traverse (tree, G_PRE_ORDER, (VsgPRTree3dFunc) _traverse_fg_write, f); fprintf (f, "</DataArray>\n</Points>\n"); fprintf (f, "<Verts>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n"); for (i=0; i<np; i++) fprintf (f, "%d ", i); fprintf (f, "\n</DataArray>\n"); fprintf (f, "<DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\" >"); for (i=0; i<np; i++) fprintf (f, "%d ", i+1); fprintf (f, "\n</DataArray>\n</Verts>\n"); fprintf (f, "\n</Piece>\n</PolyData>\n</VTKFile>\n"); fclose (f); }
/** * aran_solver3d_point_count: * @solver: an #AranSolver3d. * * Counts the number of points (particles) in the associated #VsgPRTree3d. * * Returns: point count. */ guint aran_solver3d_point_count (const AranSolver3d *solver) { g_return_val_if_fail (solver != NULL, 0); return vsg_prtree3d_point_count (solver->prtree); }