<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 127.35pt 1.0in 127.3pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoPlainText>Barry,<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Thanks!  I have another question. The user manual says:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>                PETSc currently provides no container for multiple arrays sharing the same distributed array communication; note, however, that the dof parameter handles many cases of interest.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>In my application, each space location will have on the order of hundreds of values associated with it (which I believe translates to dof=O(100) – I don’t see the “degrees of freedom” explicitly defined anywhere). However, when communicating ghost values, not all of those degrees of freedom should be exchanged at once. I need to be able to exchange one at a time.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>It sounds like what I may want to do is use VecCreateGhost(), which would allow me to define exactly where the ghost points are, and then duplicate that vector using VecDuplicateVecs() for each DOF. I can then scatter the vectors individually as the need arises. Does that sound reasonable?<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Greg<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>>-----Original Message-----</p><p class=MsoPlainText>>From: Barry Smith [mailto:bsmith@mcs.anl.gov]</p><p class=MsoPlainText>>Sent: Friday, February 21, 2014 12:21 PM</p><p class=MsoPlainText>>To: Fischer, Greg A.</p><p class=MsoPlainText>>Cc: petsc-users@mcs.anl.gov</p><p class=MsoPlainText>>Subject: Re: [petsc-users] partial stencil in DMDA?</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>On Feb 21, 2014, at 11:02 AM, Fischer, Greg A. <<a href="mailto:fischega@westinghouse.com"><span style='color:windowtext;text-decoration:none'>fischega@westinghouse.com</span></a>></p><p class=MsoPlainText>>wrote:</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>> Hello,</p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> I’m interested in using PETSc to manage distributed arrays. Based on my</p><p class=MsoPlainText>>reading about the DMDA objects, I see that ghost points can be</p><p class=MsoPlainText>>communicated in box-type stencils or star-type stencils.</p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> For my application, assume that I have a 2D DMDA object with star-type</p><p class=MsoPlainText>>stencils. For a typical local calculation, I only need to access ghost values</p><p class=MsoPlainText>>from two of the four directions at a time. For example, I’d like access to ghost</p><p class=MsoPlainText>>values in the South and East directions, but not in the North or West</p><p class=MsoPlainText>>directions. Communicating North and West data would seem to be wasting</p><p class=MsoPlainText>>bandwidth. Is there any way to accomplish this?</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   Greg,</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>    There is not anything built in. Here is what I suggest:</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>1)  write your application code not worrying about the fact that the</p><p class=MsoPlainText>>DMGlobalToLocalBegin/End() is moving values you don’t need.</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>2) when your code is running correctly for your problem and giving useful</p><p class=MsoPlainText>>results if the communication times are impacting how long it takes to run you</p><p class=MsoPlainText>>can provide a custom communication pattern. It would involve little</p><p class=MsoPlainText>>additional coding essentially taking DMSetUp_DA_2D() which creates the list</p><p class=MsoPlainText>>of ghost points and removing the  unneeded ghost points.  But it would be</p><p class=MsoPlainText>>premature to do this optimization until you have a full working application</p><p class=MsoPlainText>>code.</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   Barry</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Thanks,</p><p class=MsoPlainText>>> Greg</p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p></div></body></html>