<div dir="ltr"><div><div><div>Ok, I see what happened.<br></div>If you create a a vector with <span class="gmail-im">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. <br>But I think it would be better if these VecView operations could be copied from the original vec in </span><span class="gmail-im">VecGetSubVector?<br><br></span></div><span class="gmail-im">Thanks,<br></span></div><span class="gmail-im">Sander<br></span></div><div class="gmail_extra"><br><div class="gmail_quote">On 7 November 2016 at 09:08, leejearl <span dir="ltr"><<a href="mailto:leejearl@126.com" target="_blank">leejearl@126.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
Hi Sander:<br>
Thank your for your assistance, but it is still not works. The
code is now as follows:<span class=""><br>
Vec subX, X;<br>
DM subdm;<br>
IS subIS;<br>
PetscInt numSubFields = 2;<br>
PetscInt subFields[2];<br>
subFields[0] = 0; subFields[1] =1 ;<br>
ierr = DMCreateSubDM(dm, numSubFields, subFields,
&subIS, &subdm);CHKERRQ(ierr);<br>
ierr = DMGetGlobalVector(dm, &X);CHKERRQ(ierr);<br>
ierr = VecGetSubVector(X,subIS,&subX)<wbr>;CHKERRQ(ierr);<br></span>
ierr = VecSetDM(subX, dm);CHKERRQ(ierr);<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
ierr = PetscObjectSetName((PetscObjec<wbr>t) subX,
"sol.");CHKERRQ(ierr);<br>
ierr = PetscViewerSetType(*viewer,
PETSCVIEWERVTK);CHKERRQ(ierr);<br>
ierr = PetscViewerPushFormat(*viewer,
PETSC_VIEWER_VTK_VTU);CHKERRQ(<wbr>ierr);<br>
ierr = PetscViewerFileSetName(*viewer<wbr>,
"subsol.vtu");CHKERRQ(ierr);<br>
ierr = VecView(subX, viewer);CHKERRQ(ierr);<br>
ierr = PetscViewerDestroy(&viewer);CH<wbr>KERRQ(ierr);<br>
ierr = VecRestoreSubVector(X, subIS,
&subX);CHKERRQ(ierr);<br>
DMDestroy(&subdm);<br>
ierr = DMRestoreGlobalVector(dm, &X);CHKERRQ(ierr);<br>
</blockquote>
<br>
<br></span>
I have add "VecSetDm", but it has not output file. <br>
<br>
Thanks<span class="HOEnZb"><font color="#888888"><br>
leejearl</font></span><div><div class="h5"><br>
<div class="m_-2963057619777554633moz-cite-prefix">On 2016年11月07日 15:35, Sander Arens
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>Does it work if you put<br>
ierr = VecSetDM(subX, subdm);CHKERRQ(ierr);<br>
</div>
before the VecView?<br>
<br>
</div>
Thanks,<br>
</div>
Sander<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 7 November 2016 at 03:50, leejearl <span dir="ltr"><<a href="mailto:leejearl@126.com" target="_blank">leejearl@126.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, Barry:<br>
I must have some make some mistakes. I post the code as
follows:<br>
Vec subX, X;<br>
DM subdm;<br>
IS subIS;<br>
PetscInt numSubFields = 2;<br>
PetscInt subFields[2];<br>
subFields[0] = 0; subFields[1] =1 ;<br>
ierr = DMCreateSubDM(dm, numSubFields, subFields,
&subIS, &subdm);CHKERRQ(ierr);<br>
ierr = DMGetGlobalVector(dm, &X);CHKERRQ(ierr);<br>
ierr = VecGetSubVector(X,subIS,&subX)<wbr>;CHKERRQ(ierr);<br>
ierr = PetscObjectSetName((PetscObjec<wbr>t) subX,
"sol.");CHKERRQ(ierr);<br>
ierr = PetscViewerSetType(*viewer,
PETSCVIEWERVTK);CHKERRQ(ierr);<br>
ierr = PetscViewerPushFormat(*viewer,
PETSC_VIEWER_VTK_VTU);CHKERRQ(<wbr>ierr);<br>
ierr = PetscViewerFileSetName(*viewer<wbr>,
"subsol.vtu");CHKERRQ(ierr);<br>
ierr = VecView(subX, viewer);CHKERRQ(ierr);<br>
ierr = PetscViewerDestroy(&viewer);CH<wbr>KERRQ(ierr);<br>
ierr = VecRestoreSubVector(X, subIS,
&subX);CHKERRQ(ierr);<br>
DMDestroy(&subdm);<br>
ierr = DMRestoreGlobalVector(dm,
&X);CHKERRQ(ierr);<br>
<br>
There are three fields in dm, and I want to obtain the
vector of the two of them. But, I can not<br>
get the output file “subsol.vtu”. Can you help me with the
code?<br>
<br>
Thanks<span class="m_-2963057619777554633HOEnZb"><font color="#888888"><br>
leejearl</font></span>
<div class="m_-2963057619777554633HOEnZb">
<div class="m_-2963057619777554633h5"><br>
On 2016年11月06日 12:21, Barry Smith wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Nov 5, 2016, at 8:36 PM, leejearl <<a href="mailto:leejearl@126.com" target="_blank">leejearl@126.com</a>>
wrote:<br>
<br>
Hi Sander:<br>
Thank you for your advices, and it works. But
it is only available in th local vector.<br>
</blockquote>
This should work on the global vector. Please send
the full output of the error messages when used with a
global vector.<br>
<br>
Barry<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Is there any methods to reach this purposes in the
global vector?<br>
Thanks<br>
leejearl<br>
On 2016年11月05日 19:29, Sander Arens wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
You can first obtain an IS with<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateSubDM.html" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/petsc/p<wbr>etsc-current/docs/manualpages/<wbr>DM/DMCreateSubDM.html</a><br>
and with that you can obtain a subvector with<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecGetSubVector.html" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/petsc/p<wbr>etsc-current/docs/manualpages/<wbr>Vec/VecGetSubVector.html</a><br>
which you can then view the usual way.<br>
<br>
Thanks,<br>
Sander<br>
<br>
On 5 November 2016 at 12:17, leejearl <<a href="mailto:leejearl@126.com" target="_blank">leejearl@126.com</a>>
wrote:<br>
Hi, all:<br>
<br>
I meet a problems which I can not overcome.
The programe is like the code in<br>
<br>
"<a href="http://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/plex/examples/tutorials/ex1.c.html" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/petsc/<wbr>petsc-current/src/dm/impls/ple<wbr>x/examples/tutorials/ex1.c.htm<wbr>l</a>".<br>
<br>
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?<br>
<br>
Thanks!<br>
<br>
<br>
leejearl<br>
<br>
<br>
<br>
<br>
</blockquote>
</blockquote>
</blockquote>
<br>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div>