PetscErrorCode OutputVTK(const Obj<ALE::Mesh>& mesh, Options *options) { PetscViewer viewer; PetscErrorCode ierr; PetscFunctionBegin; if (options->outputVTK) { ALE::LogStage stage = ALE::LogStageRegister("VTKOutput"); ALE::LogStagePush(stage); ierr = PetscPrintf(mesh->comm(), "Creating VTK mesh files\n"); CHKERRQ(ierr); ierr = PetscViewerCreate(mesh->comm(), &viewer); CHKERRQ(ierr); ierr = PetscViewerSetType(viewer, PETSC_VIEWER_ASCII); CHKERRQ(ierr); ierr = PetscViewerSetFormat(viewer, PETSC_VIEWER_ASCII_VTK); CHKERRQ(ierr); ierr = PetscViewerFileSetName(viewer, "testMesh.vtk"); CHKERRQ(ierr); ierr = VTKViewer::writeHeader(viewer); CHKERRQ(ierr); ierr = VTKViewer::writeHierarchyVertices(mesh, viewer, options->zScale); CHKERRQ(ierr); ierr = VTKViewer::writeHierarchyElements(mesh, viewer); CHKERRQ(ierr); ierr = PetscViewerDestroy(viewer); CHKERRQ(ierr); const ALE::Mesh::topology_type::sheaf_type& patches = mesh->getTopology()->getPatches(); #if 0 for(ALE::Mesh::topology_type::sheaf_type::iterator p_iter = patches.begin(); p_iter != patches.end(); ++p_iter) { ostringstream filename; filename << "coarseMesh." << *p_iter << ".vtk"; ierr = PetscViewerCreate(mesh->comm(), &viewer); CHKERRQ(ierr); ierr = PetscViewerSetType(viewer, PETSC_VIEWER_ASCII); CHKERRQ(ierr); ierr = PetscViewerSetFormat(viewer, PETSC_VIEWER_ASCII_VTK); CHKERRQ(ierr); ierr = PetscViewerFileSetName(viewer, filename.str().c_str()); CHKERRQ(ierr); ierr = VTKViewer::writeHeader(viewer); CHKERRQ(ierr); ierr = VTKViewer::writeVertices(mesh, *p_iter, viewer); CHKERRQ(ierr); ierr = VTKViewer::writeElements(mesh, *p_iter, viewer); CHKERRQ(ierr); //ierr = FieldView_Sieve(mesh, "spacing", viewer);CHKERRQ(ierr); ierr = PetscViewerDestroy(viewer); CHKERRQ(ierr); } #endif } PetscFunctionReturn(0); }
int main(int argc, char *argv[]) { MPI_Comm comm; Options options; PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscInitialize(&argc, &argv, (char *) 0, NULL); CHKERRQ(ierr); comm = PETSC_COMM_WORLD; try { Obj<ALE::Mesh> mesh; ierr = ProcessOptions(comm, &options); CHKERRQ(ierr); ierr = CreateMesh(comm, mesh, &options); CHKERRQ(ierr); ierr = ALE::Coarsener::CreateSpacingFunction(mesh, 2); CHKERRQ(ierr); ierr = ALE::Coarsener::CreateCoarsenedHierarchyNew(mesh, 2, options.levels, options.coarseFactor); CHKERRQ(ierr); Obj<ALE::Mesh::sieve_type> sieve = new ALE::Mesh::sieve_type(mesh->comm(), 0); mesh->getTopology()->setPatch(options.levels+1, sieve); mesh->getTopology()->stratify(); ierr = OutputVTK(mesh, &options); CHKERRQ(ierr); } catch (ALE::Exception e) { std::cout << e << std::endl; } ierr = PetscFinalize(); CHKERRQ(ierr); PetscFunctionReturn(0); }
int main(int argc, char *argv[]) { MPI_Comm comm; Options options; PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscInitialize(&argc, &argv, (char *) 0, NULL);CHKERRQ(ierr); comm = PETSC_COMM_WORLD; try { ierr = ProcessOptions(comm, &options);CHKERRQ(ierr); Obj<ALE::Mesh> mesh; Mesh mesh_set[options.levels]; for (int i = 0; i < options.levels; i++) { ierr = MeshCreate(comm, &mesh_set[i]);CHKERRQ(ierr); }; ierr = CreateMesh(comm, mesh, &options);CHKERRQ(ierr); MeshSetMesh(mesh_set[0], mesh); ierr = MeshIDBoundary(mesh_set[0]); mesh->markBoundaryCells("marker"); ierr = PetscPrintf(mesh->comm(), "%d boundary vertices, %d boundary cells\n", mesh->getLabelStratum("marker", 1)->size(), mesh->getLabelStratum("marker", 2)->size()); ierr = MeshSpacingFunction(mesh_set[0]); //ierr = MeshIDBoundary(mesh_set[0]); // mesh->createLabel("marker"); // mesh->markBoundaryCells("marker", 1, 2, false); MeshCreateHierarchyLabel_Link(mesh_set[0], options.coarseFactor, options.levels, &mesh_set[1],NULL,options.curvatureCutoff ); Obj<ALE::Mesh> ale_meshes[options.levels]; for (int i = 0; i < options.levels; i++) { MeshGetMesh(mesh_set[i], ale_meshes[i]); } Hierarchy_qualityInfo(ale_meshes, options.levels); //ierr = MeshCoarsenMesh(m, pow(options.coarseFactor, 2), &n); //ierr = MeshGetMesh(n, mesh); //ierr = MeshLocateInMesh(m, n); // Obj<ALE::Mesh::sieve_type> sieve = new ALE::Mesh::sieve_type(mesh->comm(), 0); // mesh->getTopology()->setPatch(options.levels, sieve); // mesh->getTopology()->stratify(); char vtkfilename[128]; for (int i = 0; i < options.levels; i++) { sprintf(vtkfilename, "testMesh%d.vtk", i); ierr = OutputVTK(ale_meshes[i], &options, vtkfilename);CHKERRQ(ierr); } } catch (ALE::Exception e) { std::cout << e << std::endl; } ierr = PetscFinalize();CHKERRQ(ierr); PetscFunctionReturn(0); }