<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: +44 (0)131 650 5818<br>
Fax: +44 (0)131 650 6555<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 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>