[petsc-users] explanations on DM_BOUNDARY_PERIODIC

Matthew Knepley knepley at gmail.com
Fri Apr 28 06:35:42 CDT 2017


On Fri, Apr 28, 2017 at 2:36 AM, neok m4700 <neok.m4700 at gmail.com> wrote:

> Hello Barry,
>
> Thank you for answering.
>
> I quote the DMDA webpage:
> "The vectors can be thought of as either cell centered or vertex centered
> on the mesh. But some variables cannot be cell centered and others vertex
> centered."
>
> So If I use this, then when creating the DMDA the overall size will be the
> number of nodes, with nodal coordinates, and by setting DMDA_Q0 interp
> together with DM_BOUNDARY_PERIODIC I should be able to recover the solution
> at cell centers ?
>
> I that possible in PETSc or should I stick to the nodal representation of
> my problem ?
>

With periodic problems, you must think of the input sizes as being vertices.

  Matt


> thanks.
>
> 2017-04-27 20:03 GMT+02:00 Barry Smith <bsmith at mcs.anl.gov>:
>
>>
>> > On Apr 27, 2017, at 12:43 PM, neok m4700 <neok.m4700 at gmail.com> wrote:
>> >
>> > Hi Matthew,
>> >
>> > Thank you for the clarification, however, it is unclear why there is an
>> additional unknown in the case of periodic bcs.
>> >
>> > Please see attached to this email what I'd like to achieve, the number
>> of unknowns does not change when switching to the periodic case for e.g. a
>> laplace operator.
>>
>>    So here you are thinking in terms of cell-centered discretizations.
>> You are correct in that case that the number of "unknowns" is the same for
>> both Dirichlet or periodic boundary conditions.
>>
>>    DMDA was originally written in support of vertex centered coordinates,
>> then this was extended somewhat with DMDASetInterpolationType() where
>> DMDA_Q1 represents piecewise linear vertex centered while DMDA_Q0
>> represents piecewise constatant cell-centered.
>>
>>     If you look at the source code for DMDASetUniformCoordinates() it is
>> written in the context of vertex centered where the coordinates are stored
>> for each vertex
>>
>>    if (bx == DM_BOUNDARY_PERIODIC) hx = (xmax-xmin)/M;
>>     else hx = (xmax-xmin)/(M-1);
>>     ierr = VecGetArray(xcoor,&coors);CHKERRQ(ierr);
>>     for (i=0; i<isize; i++) {
>>       coors[i] = xmin + hx*(i+istart);
>>     }
>>
>> Note that in the periodic case say domain [0,1) vertex centered with 3
>> grid points (in the global problem) the coordinates for the vertices are 0,
>> 1/3, 2/3 If you are using cell-centered and have 3 cells, the coordinates
>> of the vertices are again 0, 1/3, 2/3
>>
>> Note that in the cell centered case we are storing in each location of
>> the vector the coordinates of a vertex, not the coordinates of the cell
>> center so it is a likely "wonky".
>>
>>    There is no contradiction between what you are saying and what we are
>> saying.
>>
>>    Barry
>>
>> >
>> > And in the case of dirichlet or neumann bcs, the extremum cell add
>> information to the RHS, they do not appear in the matrix formulation.
>> >
>> > Hope I was clear enough,
>> > thanks
>> >
>> >
>> > 2017-04-27 16:15 GMT+02:00 Matthew Knepley <knepley at gmail.com>:
>> > On Thu, Apr 27, 2017 at 3:46 AM, neok m4700 <neok.m4700 at gmail.com>
>> wrote:
>> > Hi,
>> >
>> > I am trying to change my problem to using periodic boundary conditions.
>> >
>> > However, when I use DMDASetUniformCoordinates on the DA, the spacing
>> changes.
>> >
>> > This is due to an additional point e.g. in dm/impls/da/gr1.c
>> >
>> > else if (dim == 2) {
>> >     if (bx == DM_BOUNDARY_PERIODIC) hx = (xmax-xmin)/(M);
>> >     else hx = (xmax-xmin)/(M-1);
>> >     if (by == DM_BOUNDARY_PERIODIC) hy = (ymax-ymin)/(N);
>> >     else hy = (ymax-ymin)/(N-1);
>> >
>> > I don't understand the logic here, since xmin an xmax refer to the
>> physical domain, how does changing to a periodic BC change the
>> discretization ?
>> >
>> > Could someone clarify or point to a reference ?
>> >
>> > Just do a 1D example with 3 vertices. With a normal domain, you have 2
>> cells
>> >
>> >   1-----2-----3
>> >
>> > so each cell is 1/2 of the domain. In a periodic domain, the last
>> vertex is connected to the first, so we have 3 cells
>> >
>> >   1-----2-----3-----1
>> >
>> > and each is 1/3 of the domain.
>> >
>> >    Matt
>> >
>> > Thanks
>> >
>> >
>> >
>> > --
>> > What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> > -- Norbert Wiener
>> >
>> > <1D.pdf>
>>
>>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170428/b1955800/attachment.html>


More information about the petsc-users mailing list