Hi, thanks for the very quick reply.
One more question: is there a way to get the lx and ly from the first dm and use them (modified) for the second dm? DMDAGetInfo does not seem to provide this information. Thanks again for your help Gianluca On Wed, Nov 11, 2015 at 8:12 PM, Barry Smith <[email protected]> wrote: > > When you create the 2 DM you must be set the lx, ly arguments (the ones > you set to 0) in your code carefully to insure that the vectors for the 2 > DM you create have compatible layout to do the matrix vector product. > > You can run a very small problem with 2 processors and printing out the > vectors to see the layout to make sure you get it correct. > > The 2 DM don't have any magically way of knowing that you created > another DMDA and want it to be compatible automatically. > > Barry > > DMDACreate2d(PETSC_COMM_WORLD , DM_BOUNDARY_GHOSTED , DM_BOUNDARY_GHOSTED > , DMDA_STENCIL_BOX , > Mx , Nx , PETSC_DECIDE , PETSC_DECIDE , 1 , 0 , 0 , 0 , > &dax); > DMDACreate2d(PETSC_COMM_WORLD , DM_BOUNDARY_NONE , DM_BOUNDARY_NONE > , DMDA_STENCIL_BOX , > Mx-2*bs , Nx-2*bs , PETSC_DECIDE , PETSC_DECIDE , 1 , 0 , 0 , 0 , > &daf); > > > On Nov 11, 2015, at 10:05 PM, Gianluca Meneghello <[email protected]> > wrote: > > > > Hi, > > > > I am trying to do something apparently really simple but with no success. > > > > I need to perform a matrix-vector multiplication x = B f , where the > length of x is bigger than the length of f (or viceversa). Thus, B cannot > be created using DMCreateMatrix. > > > > Both x and f are obtained from different DMs, the smaller covering only > a subdomain of the larger. The application is to apply a control f to a > system, e.g. \dot{x} = A x + B f. > > > > The problem is, when running on more than one core, the vector x is not > organized as I would expect (everything works fine on a single core). > > > > I attach a short example where B is intended to map f to the interior of > x. > > > > mpirun -n 1 ./test -draw_pause -1 works fine while > > mpirun -n 2 ./test -draw_pause -1 shows the problem > > > > I have not found any example with non square matrices in the src folder, > any help is very welcome. > > > > Thanks for your time, > > > > Gianluca > > <test.cpp> > >
