[petsc-users] Non-uniform Cartisian Grid

Zhenglun (Alan) Wei zhenglun.wei at gmail.com
Thu Feb 28 19:35:36 CST 2013


Dear Matt,
      Yes. if I only double the dx, then, the mesh has been changed are 
on z=0 plane and y = 0 plane. Similarly, if the dz is doubled, the mesh 
has been changed are only on x = 0 plane and y = 0 plane (see the 
picture attached).
      Moreover, if I double all direction (i.e. dx = dy = dz = 0.2), the 
mesh is shown in the picture 'doubleAll' in the attachment. It seems 
that the mesh generated by the 'DMDASetUniformCoordinate' is always there.

best,
Alan

On 2/28/2013 7:25 PM, Matthew Knepley wrote:
> On Thu, Feb 28, 2013 at 8:05 PM, Zhenglun (Alan) Wei 
> <zhenglun.wei at gmail.com <mailto:zhenglun.wei at gmail.com>> wrote:
>
>     Dear Matt,
>         Thanks for your reply on the 1st question and I'm sorry for
>     the confusion on the 2nd one.
>         In order to create a non-uniform Cartesian grid, I expected
>     that the way I was programming can let me freely control the grid
>     size. In the code attached in the previous E-mail, the
>     'DMDASetUniformCoordinate' generates a uniform coordinate with
>     100*48*48 grid number and 0.1*0.1*0.1 grid size. I was trying to
>     manually double the grid size in the y-direction for the whole
>     mesh with operations of DMDA in the 'SetNonUniformGrid()', which
>     follows the method that /src/ksp/ksp/examples/tutorials/ex49.c
>     used. However, as you can see in the figure attached in the
>     previous E-mail, only the mesh on z = 0 plane and x = 0 plane has
>     been changed to dy = 0.2; while I expected all mesh should have dy
>     = 0.2 after I call 'SetNonUniformGrid()'.
>         Any idea about this?
>
>
> Were you looking over all 3 directions?
>
>   Matt
>
>     thanks,
>     Alan
>
>     On 2/28/2013 6:31 PM, Matthew Knepley wrote:
>>     On Thu, Feb 28, 2013 at 7:19 PM, Zhenglun (Alan) Wei
>>     <zhenglun.wei at gmail.com <mailto:zhenglun.wei at gmail.com>> wrote:
>>
>>         Dear folks,
>>             Here are several questions following up my previous ones:
>>         1, I modified my code based on ex49.c. However, I found that
>>         if I don't call 'DMDASetUniformCoordinates' before calling
>>         'DMDAVecGetArray', then an error comes up:
>>         [0]PETSC ERROR: Null argument, when expecting valid pointer!
>>         [0]PETSC ERROR: Null Object: Parameter # 2!
>>             The code do works if I add a call for
>>         'DMDASetUniformCoordinates' in it. However, I feel it is a
>>         waste of calling 'DMDASetUniformCoordinates' since what
>>         follows this calling is to change the coordinate to a
>>         non-uniform gird. Does it have any way to bypass this call or
>>         you think it is fine to keep it here.
>>
>>
>>     If you do not call it, then you have to create the coordinate
>>     vector yourself. I would just call it.
>>
>>         2, Also, if I do by this way, the outputted mesh looks weird,
>>         as shown in the figure.
>>             I was trying to double the dy value manually in the
>>         SetNonUniformGrid(). However, the only mesh changed is just
>>         on the z=0 and x=0 plane. Here I attached my code. Do I need
>>         to do anything else except DMDAVecRestoreArray() after I
>>         modified the coordinate information?
>>
>>
>>     I do not understand what you want here.
>>
>>       Matt
>>
>>         thanks,
>>         Alan
>>
>>
>>         On 2/26/2013 8:46 PM, Barry Smith wrote:
>>
>>             On Feb 26, 2013, at 4:49 PM, "Zhenglun (Alan)
>>             Wei"<zhenglun.wei at gmail.com
>>             <mailto:zhenglun.wei at gmail.com>>  wrote:
>>
>>                 Dear folks,
>>                       I have one question for the ex49.
>>                       It do show a way to 'get' the 'coord' by the
>>                 'DMDAVecGetArray'. Should I just modified the
>>                 coordinate on the 'coord' in order to obtain a
>>                 non-uniform grid? and then, use DMDAVecRestoreArray
>>                 to link the modified 'coord' back to 'cda' so that
>>                 the 'coord' will be updated to the mesh I want?
>>
>>                 Yes, you can do this.
>>
>>
>>                 thanks,
>>                 Alan
>>
>>                 On 2/22/2013 3:20 PM, Matthew Knepley wrote:
>>
>>                     On Fri, Feb 22, 2013 at 3:57 PM, Zhenglun (Alan)
>>                     Wei<zhenglun.wei at gmail.com
>>                     <mailto:zhenglun.wei at gmail.com>>  wrote:
>>                     Dear all,
>>                     I hope you're having a nice day.
>>                     I wonder if anyone could point out a example for
>>                     me about the
>>                     DMDASetCoordinates(). I found this
>>                     (http://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/da/dacorn.c.html#DMDASetCoordinates)
>>                     online; however it does not really demonstrate
>>                     how to create the
>>                     'coordinate vector - c'.
>>                     Also, I found that in the petsc sub-folder:
>>                     /petsc-dev/src/dm/impls/patch has a patch.c,
>>                     which I suppose that it
>>                     does a local refinement for mesh. Does this a
>>                     mature model that we can
>>                     use or just a testing code?
>>
>>                     Look at KSP ex49. In the routine
>>                     DMDACoordViewGnuplot2d() it reads out the
>>                     coordinates.
>>                     You could just as easily set them in this fashion.
>>
>>                         Matt
>>                       thanks,
>>                     Alan
>>
>>                     On 11/7/2012 6:55 PM, Barry Smith wrote:
>>
>>                         On Nov 7, 2012, at 6:50 PM,
>>                         Alan<zhenglun.wei at gmail.com
>>                         <mailto:zhenglun.wei at gmail.com>>  wrote:
>>
>>                             Dear folks,
>>                             I hope you're having a nice day.
>>                             I'm testing the Poisson solver in
>>                             /src/ksp/ksp/examples/tutorials/ex45.
>>                             It uses the 'DMDACreate3d' to generate a
>>                             Cartisian structured grid and
>>                             solve it with uniform grid size. However,
>>                             I attempt to modify it to
>>                             obtain solution with a Cartsian
>>                             structured grid and non-uniform grid (It
>>                             is not unstructured local refined mesh).
>>                             Should I still use the
>>                             'DMDACreate3d' and implement different
>>                             grid size in 'ComputeMatrix' and
>>                             'ComputeRHS'? In other words, does
>>                             'DMDACreate3d' itself include any
>>                             mesh size information?
>>
>>                             You can use DMDASetCoordinates() and
>>                         DMDAGetCoordinates() (called
>>                         DMSetCoordinates() and DMGetCoordinates() in
>>                         petsc-dev) to keep track of the coordinates
>>                         but you are responsible for generating the
>>                         correctly scaled entries in the matrix etc.
>>
>>                             Barry
>>
>>                             thanks,
>>                             Alan
>>
>>
>>
>>                     -- 
>>                     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
>>
>>
>>
>>
>>
>>     -- 
>>     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
>
>
>
>
> -- 
> 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/20130228/d1305690/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: doubleZ.jpg
Type: image/jpeg
Size: 197567 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130228/d1305690/attachment-0002.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: doubleAll.jpg
Type: image/jpeg
Size: 302638 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130228/d1305690/attachment-0003.jpg>


More information about the petsc-users mailing list