[petsc-users] VecView DMDA and HDF5 - Unable to write out files properly

Matthew Knepley knepley at gmail.com
Thu Oct 14 09:27:46 CDT 2021


On Thu, Oct 14, 2021 at 9:21 AM Matteo Semplice <
matteo.semplice at uninsubria.it> wrote:

>
> Il 14/10/21 14:37, Matthew Knepley ha scritto:
>
> On Wed, Oct 13, 2021 at 6:30 PM Abhishek G.S. <gsabhishek1ags at gmail.com>
> wrote:
>
>> Hi,
>> I need some help with getting the file output working right.
>>
>> I am using a DMDACreate3D to initialize my DM. This is my write function
>>
>> void write(){
>> PetscViewer viewer;
>>
>> PetscViewerHDF5Open(PETSC_COMM_WORLD,filename.c_str(),FILE_MODE_WRITE,&viewer);
>> DMDAVecRestoreArray(dm,global_vector,global_array)
>> VecView(global_vec, viewer);
>> DMDAVecGetArray(dm,global_vector,global_array);
>> PetscViewerDestroy(&viewer);
>> }
>>
>> 1) I have 2 PDE's to solve. Still, I went ahead creating a single DM with
>> dof=1 and creating two vectors using the DMCreateGlobalVector(). I want to
>> write the file out periodically.  Should I perform DMDAVecRestoreArray and
>> DMDAVecGetArray every time is write out the global_vector? (I know that it
>> is just indexing the pointers and there is no copying of values. But I am
>> not sure)
>>
>
> I don't think you need the Get/RestoreArray() calls here.
>
>
>> 2) I am writing out to HDF5 format. I see that the vecview is supposed to
>> reorder the global_vector based on the DM. However, when I read the H5
>> files, I get an error on ViSIT and my output image becomes a 1D image
>> rather than a 2D/3D. What might be the reason for this ?.
>> Error Msg : "In domain 0, your zonal variable "avtGhostZones" has 25600
>> values, but it should have 160.  Some values were removed to ensure VisIt
>> runs smoothly"
>> I was using a 160x160x1 DM
>>
>
> I do not believe we support HDF5 <--> Visit/Paraview for DMDA. The
> VecView() is just writing out the vector as a linear array without mesh
> details. For
> interfacing with the visualization, I think we use .vtu files. You should
> be able to get this effect using
>
>   VecViewFromOptions(global_vec, NULL, "-vec_view");
>
> in your code, and then
>
>   -vec_view vtk:sol.vtu
>
> on the command line.
>
> Hi.
>
> If you want to stick with HDF5, you can also write a XDMF file with the
> grid information and open that in Paraview.
>
> I am attaching some routines that I have written to do that in a solver
> that deals with a time dependent PDE system with 2 variables; with them I
> end up with a single XDMF file that Paraview can load and which contains
> references to all timesteps in my simulations, with each timestep being
> contained in an HDF5 file on its own. The idea is to call writeDomain at
> the beginning of the simulation, writeHDF5 for each timestep that I want to
> save and writeSimulationXDMF at the end. (Warning: 3D is in use, while 2D
> ia almost untested...)
>
> It's not the optimal solution since (1) all timesteps could be in the same
> HDF5 and (2) in each HDF5 i write the vectors separately and it would be
> better to dump the entire data in one go and interpret them as a
> Nx*Ny*Nz*Nvariables data from the XDMF. Nevertheless they might be a
> starting point for you if you wan to try this approach.
>
> You can have HDF5 put the vectors in a single array with a time dimension
now. Then you just alter the xdmf to point into that array. I do this
with the unstructured code.

  Thanks,

     Matt

> Matteo
>
>
>
>> 3) I tried using the "petsc_gen_xdmf.py" to generate the xdmf files for
>> use in Paraview. Here the key ["viz/geometry"] is missing. The keys present
>> in the output H5 file are just the two vectors I am writing and has no info
>> about mesh. Isn't this supposed to come automatically since the vector is
>> attached to the DM? How do I sort this out?
>>
>
> This support is for unstructured grids, DMPlex and DMForest.
>
>
>> 4) Can I have multiple vectors attached to the DM by
>> DMCreateGlobalVector() even though I created the DMDA using dof=1.
>>
>
> Yes.
>
>   Thanks,
>
>      Matt
>
>
>> thanks,
>> Abhishek
>>
>
>
> --
> 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/
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Cmatteo.semplice%40uninsubria.it%7Cf27a34f639784d0231c708d98f0f7279%7C9252ed8bdffc401c86ca6237da9991fa%7C0%7C0%7C637698118789688898%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Xb8nyv7BIl6zSBbbLFkQzluIF8s%2BOLwUQeVfjtr3q4k%3D&reserved=0>
>
> --
> ---
> Professore Associato in Analisi Numerica
> Dipartimento di Scienza e Alta Tecnologia
> Università degli Studi dell'Insubria
> Via Valleggio, 11 - Como
>
>

-- 
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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211014/fbc181e7/attachment.html>


More information about the petsc-users mailing list