[petsc-users] [Fwd: Re: saving views as images]
Barry Smith
bsmith at mcs.anl.gov
Tue Mar 10 11:35:14 CDT 2015
You must call
call(PetscDrawSetSave(draw, "matrix", PETSC_FALSE));
call(PetscDrawSetSaveFinalImage(draw, "matrix2"));
BEFORE you view the image. PetscDrawSetSave() sets the flag to save future images; generally you could this immediately after you've done the PetscViewerDrawOpen
Barry
You don't need the flush.
> On Mar 10, 2015, at 10:47 AM, Theler German Guillermo <gtheler at cites-gss.com> wrote:
>
>
> On Sat, 2015-03-07 at 15:51 -0600, Barry Smith wrote:
>> Did you follow the directions in the manual page for PetscDrawSetSave()?
>> "Requires that PETSc be configured with the option --with-afterimage to save the images and ffmpeg must be in your path to make the movie"
>
> Yes. For some reason configure does not find libAfterImage in Debian's
> default location, but it works if I provide both with-afterimage-lib and
> with-afterimage-include. Debian Jessie provides packages
> libafterimage-dev and libafterimage0, both marked as version 2.2.12-3.
>
> gtheler at blinky:~/libs/petsc-3.5.3$ ./configure
> --with-afterimage-lib=/usr/lib/x86_64-linux-gnu/libAfterImage.so
> --with-afterimage-include=/usr/include/libAfterImage
> ===============================================================================
> Configuring PETSc to compile on your
> system
> ===============================================================================
> TESTING: alternateConfigureLibrary from
> PETSc.packages.petsc4py(config/PETSc/packages/petsc4py.py:74)
> Compilers:
> C Compiler: mpicc -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0
> C++ Compiler: mpicxx -Wall -Wwrite-strings -Wno-strict-aliasing
> -Wno-unknown-pragmas -g -O0 -fPIC
> Fortran Compiler: mpif90 -fPIC -Wall -Wno-unused-variable
> -ffree-line-length-0 -Wno-unused-dummy-argument -g -O0
> Linkers:
> Shared linker: mpicc -shared -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0
> Dynamic linker: mpicc -shared -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0
> make:
> MPI:
> Includes: -I/usr/include/mpich
> BLAS/LAPACK: -llapack -lblas
> cmake:
> X:
> Library: -lX11
> pthread:
> Library: -lpthread
> ssl:
> Library: -lssl -lcrypto
> afterimage:
> Includes: -I/usr/include/libAfterImage
> Library: -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -lAfterImage
> valgrind:
> Arch:
> PETSc:
> PETSC_ARCH: arch-linux2-c-debug
> PETSC_DIR: /home/gtheler/libs/petsc-3.5.3
> Clanguage: C
> shared libraries: enabled
> Scalar type: real
> Precision: double
> Memory alignment: 16
> xxx=========================================================================xxx
> Configure stage complete. Now build PETSc libraries with (gnumake
> build):
> make PETSC_DIR=/home/gtheler/libs/petsc-3.5.3
> PETSC_ARCH=arch-linux2-c-debug all
> xxx=========================================================================xxx
> gtheler at blinky:~/libs/petsc-3.5.3$
>
>
> Now, consider the attached source file (based on
> mat/examples/tutorials/ex16.c). It does compile and gets linked to
> libAfterImage:
>
>
>
> gtheler at blinky:~/codigos/mat2img$ make
> mpicc -c -o mat2img.o mat2img.c -Wall
> -I/home/gtheler/libs/petsc-3.5.3/include
> -I/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/include
> -I/usr/include/libAfterImage -I/usr/include/mpich
> mpicc -o mat2img mat2img.o
> -Wl,-rpath,/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/lib
> -L/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/lib -lpetsc
> -llapack -lblas -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -lAfterImage -lX11 -lpthread -lssl -lcrypto
> -lm -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9
> -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -Wl,-rpath,/lib/x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -lmpichf90 -lgfortran -lm -lgfortran -lm
> -lquadmath -lm -lmpichcxx -lstdc++ -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9
> -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -ldl -lmpich -lopa -lmpl -lrt -lcr -lpthread
> -lgcc_s -ldl
> gtheler at blinky:~/codigos/mat2img$ ldd mat2img | grep After
> libAfterImage.so.0
> => /usr/lib/x86_64-linux-gnu/libAfterImage.so.0 (0x00007f95bc4b7000)
> libAfterBase.so.0 => /usr/lib/x86_64-linux-gnu/libAfterBase.so.0
> (0x00007f95b7ad4000)
> gtheler at blinky:~/codigos/mat2img$
>
>
> However, an empty directory called "test" is created when running the
> code:
>
> gtheler at blinky:~/codigos/mat2img$ ./mat2img -info
> [0] PetscInitialize(): PETSc successfully started: number of processors
> = 1
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscInitialize(): Running on machine: blinky
> [0] PetscCommDuplicate(): Duplicating a communicator 1140850688
> -2080374784 max tags = 536870911
> [0] PetscGetFileStat(): System call stat() succeeded on file matrix.bin
> [0] PetscTestOwnership(): System call access() succeeded on file
> matrix.bin
> [0] PetscFileRetrieve(): Found file matrix.bin
> [0] PetscGetFileStat(): System call stat() failed on file
> matrix.bin.info
> [0] PetscFileRetrieve(): Did not find file matrix.bin.info
> [0] PetscCommDuplicate(): Using internal PETSc communicator 1140850688
> -2080374784
> [0] MatAssemblyEnd_SeqAIJ(): Matrix size: 20 X 20; storage space: 0
> unneeded,58 used
> [0] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is
> 0
> [0] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 3
> [0] MatCheckCompressedRow(): Found the ratio (num_zerorows
> 0)/(num_localrows 20) < 0.6. Do not use CompressedRow routines.
> [0] Mat_CheckInode(): Found 20 nodes out of 20 rows. Not using Inode
> routines
> [0] PetscCommDuplicate(): Using internal PETSc communicator 1140850688
> -2080374784
> [0] PetscDrawSetUpColormap_Shared(): Successfully allocated colors
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscPOpen(): Running command :rm -fr matrix matrix.m4v
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscPOpen(): Running command :mkdir matrix
> [0] PetscFinalize(): PetscFinalize() called
> gtheler at blinky:~/codigos/mat2img$
>
>
>
> I cannot find out what I am missing.
>
>
>
>
>> So you have to install afterimage on your machine and then ./configure PETSc so it knows about it. If you have done all that and PETSc is being linked with the afterimage libraries then run your code with -info and send all the output; it may indicate why the images are not being saved.
>>
>> Barry
>>
>>
>>> On Mar 7, 2015, at 3:38 PM, Theler German Guillermo <gtheler at cites-gss.com> wrote:
>>>
>>> Hi
>>>
>>> Last week I asked how to dump a matrix structure into an image and Barry kindly pointed me out the PetscDrawSetSave function. But I cannot figure out how to use it. So far, I can show my matrix structure into an X window with something like
>>>
>>> PetscViewerDrawOpen(PETSC_COMM_WORLD, PETSC_NULL, "R", 100, 100, size, size, &viewer);
>>> MatView(milonga.R, viewer);
>>>
>>> I tried with this snippet of code but had no luck:
>>>
>>> PetscViewerDrawOpen(PETSC_COMM_WORLD, PETSC_NULL, "R", 100, 100, size, size, &viewer);
>>> MatView(milonga.R, viewer);
>>> PetscViewerDrawGetDraw(viewer, 0, &draw);
>>> PetscDrawFlush(draw);
>>> PetscDrawSetSave(draw, "test.gif", PETSC_FALSE);
>>> PetscDrawSetSaveFinalImage(draw, "test2.gif");
>>>
>>> The result is that test.gif and test2.gif are created but they are empty directories.
>>> What am I missing?
>>>
>>> --
>>> jeremy
>>>
>>> ________________________________
>>> Imprima este mensaje sólo si es absolutamente necesario.
>>> Para imprimir, en lo posible utilice el papel de ambos lados.
>>> El Grupo Sancor Seguros se compromete con el cuidado del medioambiente.
>>>
>>>
>>>
>>> ************AVISO DE CONFIDENCIALIDAD************
>>>
>>> El Grupo Sancor Seguros comunica que:
>>>
>>> Este mensaje y todos los archivos adjuntos a el son para uso exclusivo del destinatario y pueden contener información confidencial o propietaria, cuya divulgación es sancionada por ley. Si usted recibió este mensaje erróneamente, por favor notifíquenos respondiendo al remitente, borre el mensaje original y destruya las copias (impresas o grabadas en cualquier medio magnético) que pueda haber realizado del mismo. Todas las opiniones contenidas en este mail son propias del autor del mensaje. La publicación, uso, copia o impresión total o parcial de este mensaje o documentos adjuntos queda prohibida.
>>>
>>> Disposición DNDP 10-2008. El titular de los datos personales tiene la facultad de ejercer el derecho de acceso a los mismos en forma gratuita a intervalos no inferiores a seis meses, salvo que acredite un interés legítimo al efecto conforme lo establecido en el artículo 14, inciso 3 de la Ley 25.326. La DIRECCIÓN NACIONAL DE PROTECCIÓN DE DATOS PERSONALES, Organo de Control de la Ley 25.326, tiene la atribución de atender las denuncias y reclamos que se interpongan con relación al incumplimiento de las normas sobre la protección de datos personales.
>>
> <mat2img.c><makefile>
More information about the petsc-users
mailing list