[petsc-users] petscviewerduplicate?

Nachiket Gokhale gokhalen at gmail.com
Wed Mar 20 15:42:53 CDT 2013


On Wed, Mar 20, 2013 at 4:38 PM, Nachiket Gokhale <gokhalen at gmail.com> wrote:
> On Wed, Mar 20, 2013 at 4:22 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>
>>   Why not just use one file, if Matlab is going to read them, it saves you typing both when saving the matrices and when reading them in Matlab?
>
> Because I didn't realize I could store multiple matrices in one file.
> Is this true for binary as well?


Misunderstood what you said.  MatLoad can read only one matrix from a file

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatLoad.html

-Nachiket

>>
>>   If the matrices are not tiny you likely also want to use the binary viewer, it will be much faster and work in parallel.
>
> I am using the binary viewer. Matlab is there for debugging.
>
> -Nachiket
>
>>
>>    Barry
>>
>> On Mar 20, 2013, at 1:28 PM, Nachiket Gokhale <gokhalen at gmail.com> wrote:
>>
>>> I have this in my code:
>>>
>>> ierr = PetscViewerCreate(PETSC_COMM_WORLD,&RightViewer);CHKERRQ(ierr);
>>> ierr = PetscViewerSetType(RightViewer,PETSCVIEWERASCII);CHKERRQ(ierr);
>>> ierr = PetscViewerFileSetMode(RightViewer,FILE_MODE_WRITE);CHKERRQ(ierr);
>>> ierr = PetscViewerSetFormat(RightViewer,PETSC_VIEWER_ASCII_MATLAB);CHKERRQ(ierr);
>>>
>>> ierr = PetscViewerCreate(PETSC_COMM_WORLD,&LeftViewer);CHKERRQ(ierr);
>>> ierr = PetscViewerSetType(LeftViewer,PETSCVIEWERASCII);CHKERRQ(ierr);
>>> ierr = PetscViewerFileSetMode(LeftViewer,FILE_MODE_WRITE);CHKERRQ(ierr);
>>> ierr = PetscViewerSetFormat(LeftViewer,PETSC_VIEWER_ASCII_MATLAB);CHKERRQ(ierr);
>>>
>>> It would have been nice to create the LeftViewer from the RightViewer.
>>> That is what I am trying to do.
>>>
>>> At other places I use only one viewer to output left and right matrices:
>>>
>>> // projection matrices in ascii
>>>  ierr = PetscViewerCreate(PETSC_COMM_WORLD,&ProjMatViewer);CHKERRQ(ierr);
>>>  ierr = PetscViewerSetType(ProjMatViewer,PETSCVIEWERASCII);CHKERRQ(ierr);
>>>  ierr = PetscViewerFileSetMode(ProjMatViewer,FILE_MODE_WRITE);CHKERRQ(ierr);
>>>  ierr = PetscViewerSetFormat(ProjMatViewer,PETSC_VIEWER_ASCII_MATLAB);CHKERRQ(ierr);
>>>  // right
>>>  ierr = PetscViewerFileSetName(ProjMatViewer,projfileasciiright);CHKERRQ(ierr);
>>>  ierr = MatView(ProjMatRight,ProjMatViewer);CHKERRQ(ierr);
>>>  // left
>>>  ierr = PetscViewerFileSetName(ProjMatViewer,projfileasciileft);CHKERRQ(ierr);
>>>  ierr = MatView(ProjMatLeft,ProjMatViewer);CHKERRQ(ierr);
>>>  // destroy
>>>  ierr = PetscViewerDestroy(&ProjMatViewer);CHKERRQ(ierr);
>>>
>>> But I think switching the filename is inconvenient - I'd rather create
>>> a separate viewer Left and Right Matrices and have it copy the same
>>> parameters from an already created viewer.
>>>
>>> -Nachiket
>>>
>>> On Wed, Mar 20, 2013 at 2:16 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
>>>> What would it mean to duplicate a viewer? What are you actually trying to
>>>> do?
>>>>
>>>> On Mar 20, 2013 12:59 PM, "Nachiket Gokhale" <gokhalen at gmail.com> wrote:
>>>>>
>>>>> Not a show stopper, but would it be possible to add a
>>>>> PetscViewerDuplicate function? I don't see such a function here -
>>>>>
>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Viewer/index.html
>>>>>
>>>>> Cheers, -Nachiket
>>


More information about the petsc-users mailing list