[petsc-users] how to output components of a section
Sander Arens
Sander.Arens at ugent.be
Mon Nov 7 04:17:00 CST 2016
Ok, I see what happened.
If you create a a vector with DMGetGlobalVector, the VecView function is
overloaded with some DM-specific VecView function (e.g. VecView_Plex), but
this doesn't happen with the vec that you get from VecGetSubVector. So one
way to solve this would be to create a global vector from your subdm and do
the scatters yourself.
But I think it would be better if these VecView operations could be copied
from the original vec in VecGetSubVector?
Thanks,
Sander
On 7 November 2016 at 09:08, leejearl <leejearl at 126.com> wrote:
> Hi Sander:
> Thank your for your assistance, but it is still not works. The code is
> now as follows:
> Vec subX, X;
> DM subdm;
> IS subIS;
> PetscInt numSubFields = 2;
> PetscInt subFields[2];
> subFields[0] = 0; subFields[1] =1 ;
> ierr = DMCreateSubDM(dm, numSubFields, subFields, &subIS,
> &subdm);CHKERRQ(ierr);
> ierr = DMGetGlobalVector(dm, &X);CHKERRQ(ierr);
> ierr = VecGetSubVector(X,subIS,&subX);CHKERRQ(ierr);
> ierr = VecSetDM(subX, dm);CHKERRQ(ierr);
>
>> ierr = PetscObjectSetName((PetscObject) subX,
>> "sol.");CHKERRQ(ierr);
>> ierr = PetscViewerSetType(*viewer, PETSCVIEWERVTK);CHKERRQ(ierr);
>> ierr = PetscViewerPushFormat(*viewer,
>> PETSC_VIEWER_VTK_VTU);CHKERRQ(ierr);
>> ierr = PetscViewerFileSetName(*viewer,
>> "subsol.vtu");CHKERRQ(ierr);
>> ierr = VecView(subX, viewer);CHKERRQ(ierr);
>> ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
>> ierr = VecRestoreSubVector(X, subIS, &subX);CHKERRQ(ierr);
>> DMDestroy(&subdm);
>> ierr = DMRestoreGlobalVector(dm, &X);CHKERRQ(ierr);
>>
>
>
> I have add "VecSetDm", but it has not output file.
>
> Thanks
> leejearl
>
> On 2016年11月07日 15:35, Sander Arens wrote:
>
> Does it work if you put
> ierr = VecSetDM(subX, subdm);CHKERRQ(ierr);
> before the VecView?
>
> Thanks,
> Sander
>
> On 7 November 2016 at 03:50, leejearl <leejearl at 126.com> wrote:
>
>> Hi, Barry:
>> I must have some make some mistakes. I post the code as follows:
>> Vec subX, X;
>> DM subdm;
>> IS subIS;
>> PetscInt numSubFields = 2;
>> PetscInt subFields[2];
>> subFields[0] = 0; subFields[1] =1 ;
>> ierr = DMCreateSubDM(dm, numSubFields, subFields, &subIS,
>> &subdm);CHKERRQ(ierr);
>> ierr = DMGetGlobalVector(dm, &X);CHKERRQ(ierr);
>> ierr = VecGetSubVector(X,subIS,&subX);CHKERRQ(ierr);
>> ierr = PetscObjectSetName((PetscObject) subX,
>> "sol.");CHKERRQ(ierr);
>> ierr = PetscViewerSetType(*viewer, PETSCVIEWERVTK);CHKERRQ(ierr);
>> ierr = PetscViewerPushFormat(*viewer,
>> PETSC_VIEWER_VTK_VTU);CHKERRQ(ierr);
>> ierr = PetscViewerFileSetName(*viewer,
>> "subsol.vtu");CHKERRQ(ierr);
>> ierr = VecView(subX, viewer);CHKERRQ(ierr);
>> ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
>> ierr = VecRestoreSubVector(X, subIS, &subX);CHKERRQ(ierr);
>> DMDestroy(&subdm);
>> ierr = DMRestoreGlobalVector(dm, &X);CHKERRQ(ierr);
>>
>> There are three fields in dm, and I want to obtain the vector of the two
>> of them. But, I can not
>> get the output file “subsol.vtu”. Can you help me with the code?
>>
>> Thanks
>> leejearl
>>
>> On 2016年11月06日 12:21, Barry Smith wrote:
>>
>>> On Nov 5, 2016, at 8:36 PM, leejearl <leejearl at 126.com> wrote:
>>>>
>>>> Hi Sander:
>>>> Thank you for your advices, and it works. But it is only available
>>>> in th local vector.
>>>>
>>> This should work on the global vector. Please send the full output of
>>> the error messages when used with a global vector.
>>>
>>> Barry
>>>
>>> Is there any methods to reach this purposes in the global vector?
>>>> Thanks
>>>> leejearl
>>>> On 2016年11月05日 19:29, Sander Arens wrote:
>>>>
>>>>> You can first obtain an IS with
>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/
>>>>> DM/DMCreateSubDM.html
>>>>> and with that you can obtain a subvector with
>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/
>>>>> Vec/VecGetSubVector.html
>>>>> which you can then view the usual way.
>>>>>
>>>>> Thanks,
>>>>> Sander
>>>>>
>>>>> On 5 November 2016 at 12:17, leejearl <leejearl at 126.com> wrote:
>>>>> Hi, all:
>>>>>
>>>>> I meet a problems which I can not overcome. The programe is like
>>>>> the code in
>>>>>
>>>>> "http://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/ple
>>>>> x/examples/tutorials/ex1.c.html".
>>>>>
>>>>> The code create a section which has three fields: u,v,w. How can I
>>>>> output the fields u and v without together with w?
>>>>>
>>>>> Thanks!
>>>>>
>>>>>
>>>>> leejearl
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161107/1e266af1/attachment-0001.html>
More information about the petsc-users
mailing list