<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 11, 2015 at 9:40 AM, Oliver Henrich <span dir="ltr"><<a href="mailto:ohenrich@epcc.ed.ac.uk" target="_blank">ohenrich@epcc.ed.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Dear Matt,<div><br></div><div>Thanks for your quick response.</div><div><br></div><div>The way I understand it is that I can only modify the halo of a vector, which is simply copied from the other side of the mesh, but matrices don’t actually have halo entries or the like. </div><div><br></div><div>I am not sure the solution to this problem is simply adding the difference dpsi at one boundary only and not subtracting it at the other side. This would mean that at one side you have periodicity plus the added difference, whereas at the other side you just have periodicity. Sounds like it leads to a kind of discontinuity. </div><div><br></div><div>It is also not possible to just add it at the end. It had to be added at every step during the iteration process.</div><div><br></div><div>Would it be possible to model the halo region explicitly by adding two additional points at the leftmost and rightmost boundary, but only on the processes with minimal and maximal Cartesian rank along this dimension where the jump occurs? Then I could modify the matrix and rhs and impose the constraint directly.</div></div></blockquote><div><br></div><div>I think you are missing my point. Perhaps we need an explicit example. Suppose we have a 1D DMDA,</div><div><br></div><div>   0 -- 1 -- 2 -- 3</div><div><br></div><div>and it is periodic. DMDA by definition has a collocated discretization, so all unknowns live on the vertices.</div><div>If the stencil is size 1, then at vertices 1 we have</div><div><br></div><div>  0 -- 1 -- 2</div><div><br></div><div>which is normal, and at vertex 0 we have</div><div><br></div><div>  3 -- 0 -- 1</div><div><br></div><div>Now this halo 3 should be dp away from 3 itself, since it the periodic image, so you use p(3) - dp. For the</div><div>stencil of 3 we have</div><div><br></div><div>  2 -- 3 -- 0</div><div><br></div><div>Now I have no idea how you make sense of 0 here. You could use p(0) + dp, or just some Neumann condition here.</div><div><br></div><div>I am not convinced this is sensible in higher dimensions since what you really want to fix is the average pressure</div><div>drop which is a much different thing. Thats an integral condition which you should handle by projection (I think).</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Best wishes and many thanks for your help,</div><div>Oliver   </div><div><br><div><div>On 11 Jun 2015, at 14:44, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 11, 2015 at 8:15 AM, Oliver Henrich <span dir="ltr"><<a href="mailto:ohenrich@epcc.ed.ac.uk" target="_blank">ohenrich@epcc.ed.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear PETSc-Team,<br>
<br>
I am trying to solve a Poisson equation with a mixed periodic-Dirichlet boundary condition. What I have in mind is e.g. a compressible flow with a total pressure difference imposed between the two sides of the system, but otherwise periodic, and periodic boundary conditions along the remaining two dimensions. Another example would be an electrostatic system with dielectric contrast in an external electric field / potential difference.<br>
<br>
For clarity, if x = 0  (N+1) is the left (right) halo site at the boundary and x = 1 (N) is the leftmost (rightmost) site in the physical domain:<br>
<br>
psi(x = 0)  =  psi(x = N) - dpsi<br>
psi(x = N+1) = psi(1) + dpsi<br>
<br>
I know it is possible to solve this with a double Poisson solve, which I try to avoid for performance reasons.<br>
<br>
It is also possible to solve this by modifying the matrix with a master-slave approach that imposes the constraint. This requires defining a transformation matrix that acts on the matrix, the solution vector and the righthand side of the problem.<br>
<br>
The core of the problem I have is that the pressure or potential difference should not be between the leftmost and rightmost site in the physical domain (a standard Dirichlet BC), but between the left- or rightmost site in the physical domain and the corresponding halo site at the opposite side of the system. It should be possible to do this if the entries of the transformation matrix that act on the halo sites can be accessed and modified.<br>
<br>
Is anything like this possible in PETSc?<br></blockquote><div><br></div><div>The way that periodicity works in PETSc right now for DMDA is that values are copied into the halo</div><div>region from the other part of the mesh. Thus, you can just choose to add your delta at the right boundary</div><div>and not at the left. The mechanics would be the same as now. Does that make sense?</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Best regards and many thanks,<br>
Oliver<br>
<br>
--<br>
Dr Oliver Henrich<br>
Edinburgh Parallel Computing Centre<br>
School of Physics and Astronomy<br>
University of Edinburgh<br>
King's Buildings, JCMB<br>
Edinburgh EH9 3FD<br>
United Kingdom<br>
<br>
Tel: <a href="tel:%2B44%20%280%29131%20650%205818" value="+441316505818" target="_blank">+44 (0)131 650 5818</a><br>
Fax: <a href="tel:%2B44%20%280%29131%20650%206555" value="+441316506555" target="_blank">+44 (0)131 650 6555</a><br>
<br>
--<br>
The University of Edinburgh is a charitable body, registered in<br>
Scotland, with registration number SC005336<br>
<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>
</blockquote></div><br><div>
<div><div>--<br>Dr Oliver Henrich<br>Edinburgh Parallel Computing Centre</div><div>School of Physics and Astronomy<br>University of Edinburgh<br>King's Buildings, JCMB<br>Edinburgh EH9 3FD<br>United Kingdom<br><br>Tel: <a href="tel:%2B44%20%280%29131%20650%205818" value="+441316505818" target="_blank">+44 (0)131 650 5818</a><br>Fax: <a href="tel:%2B44%20%280%29131%20650%206555" value="+441316506555" target="_blank">+44 (0)131 650 6555</a><br><br>--<br>The University of Edinburgh is a charitable body, registered in<br>Scotland, with registration number SC005336</div></div><div><br></div><br>

</div>
<br></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>