> On Jun 26, 2023, at 5:12 PM, Srikanth Sathyanarayana 
> <srikanth.sathyanaray...@mpcdf.mpg.de> wrote:
> 
> Dear Barry and Mark,
> 
> Thank you very much for your response.
> 
>>>    The allocation for what?
> What I mean is that, we don’t want additional memory allocations through DMDA 
> Vectors. I am not sure if it is even possible, basically we would want to map 
> our existing vectors through VecCreateMPIWithArray for example and implement 
> a way for it to interact with the DMDA structure so it can assist ghost 
> updates for each block.

 So long as the vectors are the same size as those that DMDA would give you 
then they work just like you got them with DMDA.

> Further, figure out a way to also perform some kind of interpolation between 
> the block boundaries before the ghost exchange.
> 
>> I think you have an application that has a Cartesian, or a least fine, grid 
>> and you "have to implement a block structured grid approach".
>> Is this block structured solver well developed?
>> We have support for block structured (quad-tree) grids you might want to 
>> use. This is a common approach for block structured grids.
> We would like to develop a multi-block block-structured grid library mainly 
> to reduce the number of grid points used. We want to use PETSc mainly as some 
> kind of a distributed data container to simplify the process of performing 
> interpolations between the blocks and help with the ghost exchanges. 
> Currently, we are not looking into any grid refinement techniques.  

   I suggest exploring if there are other libraries that provide multi-block 
block-structured grid that you might use, possible in conjunction with the 
PETSc solvers. Providing a general multi-block block-structured grid library is 
a big complicated enterprise and PETSc does not provide such a thing. Certain 
parts can be hacked with DMDA and DMCOMPOSITE but not properly as a properly 
designed library would.


> 
> Thanks,
> Srikanth
> 
> 
>> On 26 Jun 2023, at 21:32, Mark Adams <mfad...@lbl.gov> wrote:
>> 
>> Let me backup a bit.
>> I think you have an application that has a Cartesian, or a least fine, grid 
>> and you "have to implement a block structured grid approach".
>> Is this block structured solver well developed?
>> We have support for block structured (quad-tree) grids you might want to 
>> use. This is a common approach for block structured grids.
>> 
>> Thanks,
>> Mark
>> 
>> 
>> 
>> On Mon, Jun 26, 2023 at 12:08 PM Barry Smith <bsm...@petsc.dev 
>> <mailto:bsm...@petsc.dev>> wrote:
>>> 
>>> 
>>> > On Jun 26, 2023, at 11:44 AM, Srikanth Sathyanarayana <s...@mpcdf.mpg.de 
>>> > <mailto:s...@mpcdf.mpg.de>> wrote:
>>> > 
>>> > Dear PETSc developers,
>>> > 
>>> > 
>>> > I am currently working on a Gyrokinetic code where I essentially have to 
>>> > implement a block structured grid approach in one of the subdomains of 
>>> > the phase space coordinates. I have attached one such example in the x - 
>>> > v_parallel subdomains where I go from a full grid to a grid based on 4 
>>> > blocks (divided along x direction) which is still Cartesian but 
>>> > misaligned across blocks (the grid is a very coarse representation). So 
>>> > the idea is to basically create a library for the existing solver and try 
>>> > to implement the block structured grid approach which mainly involves 
>>> > some sort of interpolation between the blocks to align the points.
>>> > 
>>> > 
>>> > I came up with an idea to implement this using DMDA. I looked into the 
>>> > old threads where you have suggested using DMComposite in order to tackle 
>>> > such problems although a clear path for the interpolation between the 
>>> > DM's was not clarified. Nonetheless, my main questions were:
>>> > 
>>> > 1. Do you still suggest using DMComposite to approach this problem.
>>> 
>>>   Unfortunately, that is all we have for combining DM's. You can use 
>>> unstructured, or structured or unstructed with quad-tree-type refinement 
>>> but we don't have a "
>>> canned" approach for combining a bunch of structured grids together 
>>> efficiently and cleanly (lots of issues come up in trying to design such a 
>>> thing in a distributed memory environment since some blocks may need to 
>>> live on different number of MPI ranks)
>>> > 
>>> > 2. Is there a way to use DMDA where the user provides the allocation? My 
>>> > main problem is that I am not allowed to change the solvers data structure
>>> 
>>>    The allocation for what?
>>> > 
>>> > 3. I looked into VecCreateMPIWithArray for the user provided allocation, 
>>> > however I am not very sure if this Vector can be used with the DMDA 
>>> > operations.
>>> 
>>>    Yes, you can use these variants to create vectors that you use with 
>>> DMDA; so long as they have the correct dimensions. 
>>> > 
>>> > 
>>> > Overall, I request you to please let me know what you think of this 
>>> > approach (using DMDA) and I would be grateful if you could suggest me any 
>>> > alternatives.
>>> > 
>>> > 
>>> > Thanks and regards,
>>> > 
>>> > Srikanth
>>> > <Screenshot from 2023-06-26 17-24-32.png>
>>> 
> 

Reply via email to