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

Reply via email to