[petsc-users] petsc4py, plotting DA and writing to file

Barry Smith bsmith at mcs.anl.gov
Mon Sep 27 11:33:03 CDT 2010


  Lisandro

    In C he could do VecView(vec,PETSC_VIEWER_DRAW_WORLD); can he not do the equivalent in Python? What syntax would he use? Perhaps the 2d bratu python example could demonstrate this since it is simple and there is no monkeying with copying to one process etc.

   Barry

On Sep 27, 2010, at 11:27 AM, Lisandro Dalcin wrote:

> On 27 September 2010 13:12, Amal Alghamdi <amal.ghamdi at kaust.edu.sa> wrote:
>> Dear All,
>> I'm using the DA structure in petsc4py. I'd like to know please what is the
>> right way to:
>> plot the DA vector (the global vector).
>> write the global vector to a file.
>> Is that each process writes or draws its own part? or I should communicate
>> all the data to one process? or none of these?!!
>> Thank you very much
>> Amal
> 
> Use a PETSc.Viewer().createBinary() to save the global vector. Each
> process will save its own part.
> 
> In order to plot it, I think you should use numpy.fromfile() to load
> the data, and then plot the array.
> 
> Other way would be to use a PETSc.Scatter.toZero() to get the data at
> process 0, and then plot it
> 
> scatter, seqvec = PETSc.Scatter.toZero(globalvec)
> im = PETSc.InsertMode.INSERT_VALUES
> sm = PETSc.ScatterMode.FORWARD
> scatter.scatter(globalvec, seqvec, im, sm)
> if globalvec.comm.rank == 0:
>    plot(seqvec.array)
> 
> 
> -- 
> Lisandro Dalcin
> ---------------
> CIMEC (INTEC/CONICET-UNL)
> Predio CONICET-Santa Fe
> Colectora RN 168 Km 472, Paraje El Pozo
> Tel: +54-342-4511594 (ext 1011)
> Tel/Fax: +54-342-4511169



More information about the petsc-users mailing list