On Sun, Dec 9, 2018 at 7:31 PM Tsung-Hsing Chen <barrydog...@gmail.com> wrote:
> Vertex-based is what I want. > Here I don't think I have created any PetscSection yet. > Do I need to create the PetscSection, > Yes. There is a manual chapter with this in it. > if I already have a mesh file from gmsh? > That is just topology and geometry. It says nothing about data layout. > or just I simply use DMPlexGetConeSection() to get vertex-based vector? > That is a Section which describes the layout of topology data. Thanks, Matt > Thanks, > Barry > > > Matthew Knepley <knep...@gmail.com> 於 2018年12月10日 週一 上午7:27寫道: > >> On Sun, Dec 9, 2018 at 5:47 PM Tsung-Hsing Chen via petsc-users < >> petsc-users@mcs.anl.gov> wrote: >> >>> Hi, >>> I want to output a VTK file containing Vec which associate with DMPLEX, >>> but I keep getting some errors. >>> >> >> The really easy way is to put >> >> ierr = VecViewFromOptions(x, NULL, "-myvec_view");CHKERRQ(ierr); >> >> in your code and then give >> >> -myvec_view vtk:sol.vtk >> >> on the command line. >> >> >>> I use PetscViewerVTKOpen() to create the vtk file. >>> Then I saw many examples just use DMCreateGlobalVector() to create the >>> Vec associate with DM. >>> However, almost all of them aren't DMPLEX but are DMDA. >>> I don't know whether it will cause some problems. >>> These is what I write: >>> >> >> 1) ALWAYS check return values. Your VecSetValue is failing. >> >> 2) VTK can only display two kinds of information, vertex-based and >> cell-based. DMDA only allows vertex based >> information in Vecs. Since DMPLEX allows any kind of distribution, >> when we output VTK we need to determine >> what kind of vector we have, vertex-based or cell-based. Here I >> cannot determine it, probably because your >> PetscSection is not setup correctly. How is data supposed to be laid >> out on the Plex? >> >> Thanks, >> >> Matt >> >> >>> PetscViewerCreate(PETSC_COMM_WORLD, &viewer); >>> PetscViewerVTKOpen(PETSC_COMM_WORLD, "vtk_output_test.vtk", >>> FILE_MODE_WRITE, &viewer); >>> DMCreateGlobalVector(dm, &x); >>> VecSetValue(); //Set value for x >>> VecView(x, viewer); >>> >>> Here is the error output: >>> [0]PETSC ERROR: --------------------- Error Message >>> -------------------------------------------------------------- >>> [0]PETSC ERROR: Argument out of range >>> [0]PETSC ERROR: Out of range index value 1 maximum 0 >>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html >>> for trouble shooting. >>> [0]PETSC ERROR: Petsc Release Version 3.10.2, unknown >>> [0]PETSC ERROR: ./test3 on a arch-linux2-c-debug named barry-PhysioMech >>> by barry Mon Dec 10 05:52:19 2018 >>> [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ >>> --with-fc=gfortran --download-mpich --download-fblaslapack --download-mumps >>> --download-scalapack --download-ctetgen >>> [0]PETSC ERROR: #3 VecSetValues_Seq() line 726 in >>> /home/barry/petsc/src/vec/vec/impls/seq/bvec2.c >>> [0]PETSC ERROR: #4 VecSetValues() line 856 in >>> /home/barry/petsc/src/vec/vec/interface/rvector.c >>> >>> [0]PETSC ERROR: --------------------- Error Message >>> -------------------------------------------------------------- >>> [0]PETSC ERROR: Invalid argument >>> [0]PETSC ERROR: Could not classify input Vec for VTK >>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html >>> for trouble shooting. >>> [0]PETSC ERROR: Petsc Release Version 3.10.2, unknown >>> [0]PETSC ERROR: ./test3 on a arch-linux2-c-debug named barry-PhysioMech >>> by barry Mon Dec 10 05:52:19 2018 >>> [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ >>> --with-fc=gfortran --download-mpich --download-fblaslapack --download-mumps >>> --download-scalapack --download-ctetgen >>> [0]PETSC ERROR: #17 DMPlexGetFieldType_Internal() line 134 in >>> /home/barry/petsc/src/dm/impls/plex/plex.c >>> [0]PETSC ERROR: #18 VecView_Plex_Local_VTK() line 294 in >>> /home/barry/petsc/src/dm/impls/plex/plex.c >>> [0]PETSC ERROR: #19 VecView_Plex_Local() line 335 in >>> /home/barry/petsc/src/dm/impls/plex/plex.c >>> [0]PETSC ERROR: #20 VecView_Plex() line 382 in >>> /home/barry/petsc/src/dm/impls/plex/plex.c >>> [0]PETSC ERROR: #21 VecView() line 590 in >>> /home/barry/petsc/src/vec/vec/interface/vector.c >>> >>> I think the first part of the error comes from VecSetValue(), but I >>> don't know how to fix it. >>> And I totally don't know what its mean in the second part of the error. >>> >>> Thank you, >>> Barry >>> >> >> >> -- >> What most experimenters take for granted before they begin their >> experiments is infinitely more interesting than any results to which their >> experiments lead. >> -- Norbert Wiener >> >> https://www.cse.buffalo.edu/~knepley/ >> <http://www.cse.buffalo.edu/~knepley/> >> > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>