You can do this in the style of VecLoad_Binary_DA()
first you take your sequential vector and make it parallel in the "natural" ordering for 3d arrays DMDACreateNaturalVector(da,&natural); VecScatterCreateToZero(natural,&scatter,&veczero); /* veczero is of full size on process 0 and has zero entries on all other processes*/ /* fill up veczero */ VecScatterBegin(scatter,veczero,natural,INSERT_VALUES,SCATTER_REVERSE); VecScatterEnd(scatter,veczero,natural,INSERT_VALUES,SCATTER_REVERSE); and then move it into the PETSc DMDA parallel ordering vector with ierr = DMCreateGlobalVector(da,&xin);CHKERRQ(ierr); ierr = DMDANaturalToGlobalBegin(da,natural,INSERT_VALUES,xin);CHKERRQ(ierr); ierr = DMDANaturalToGlobalEnd(da,natural,INSERT_VALUES,xin);CHKERRQ(ierr); > On Feb 15, 2017, at 7:16 PM, Manuel Valera <[email protected]> wrote: > > Hello, > > My question this time is just if there is a way to distribute a 3D array whos > located at Zero rank over the processors, if possible using the DMDAs, i'm > trying not to do a lot of initialization I/O in parallel. > > Thanks for your time, > > Manuel
