[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