Sadly this type of situation is not as easy to handle as one would hope. 
What you suggest is possible, there are basically two different approaches

1) have both DA live on all processes 

2) Create a subcommunicator for DAtop and its complement for DAcavity. 

 In either case I would suggest using the "ghost" boundary conditions for the 
top of the DAcavity and the bottom of the DAtop and  use two  VecScatters to 
communicate from/to them and the regular parts of the domain. Then essentially 
ghost point updates are done with DAGlobalToLocal() on each DA and the 
VecScatters. For parts of DATop that are not above the DACavity you would just 
ignore the "extra" ghost locations. 

  I would start by figuring out how to do this and not yet worry about 
Jacobians etc. Just be able to go from global to local on the composite grid 
vector to the local vectors. Use a very small number of points and run starting 
on one process. I would use 1) not 2) since it is simpler to understand.

   Good luck,

    Barry


> On Dec 28, 2016, at 3:49 PM, Somdeb Bandopadhyay <[email protected]> wrote:
> 
> Hi all,
>   I am trying to modify a single block incompressible solver for flow over 
> open cavity. One way I could do it, is to set part of the domain as flagged 
> and apply velocity field=0 all over it. But it does not seem to be 
> appropriate way (I am wasting alot of grid, just to have a small cavity). So 
> I was wondering, is there any example to interact between two DMDA grids? I 
> am using petsc to solve the poisson equation so if I can just create two set 
> of grid (say DA_grid1 and DA_grid2) and have a interface between them, my 
> problem would be alot more easier.
> 
> Thanks a lot in advance.
> 
> Somdeb

Reply via email to