[petsc-users] how to output components of a section

leejearl leejearl at 126.com
Mon Nov 7 02:08:32 CST 2016


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 
> <mailto: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
>             <mailto: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
>                 <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
>                 <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 <mailto: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/plex/examples/tutorials/ex1.c.html
>                 <http://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/plex/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/a75e176e/attachment.html>


More information about the petsc-users mailing list