[petsc-users] A global vector reading from the binary file.
(Rebecca) Xuefei YUAN
xy2102 at columbia.edu
Fri Mar 12 11:04:59 CST 2010
Dear Barry,
Thanks so much for your kind reply.
I will look into this.
Cheers,
Rebecca
Quoting Barry Smith <bsmith at mcs.anl.gov>:
>
> DACreateGlobalVector() gives a vector that is "spread-out" across
> the processors. It is never going to contain the "entire vector" on
> each process. That is not what it is for. If you want to take parallel
> DA global vector and get each process to have the whole vector see
> http://www.mcs.anl.gov/petsc/petsc-2/documentation/faq.html#mpi-vec-to-seq-vec
> note in particular you first need to use the
> DAGlobalToNaturalBegin/End().
>
> Barry
>
> On Mar 12, 2010, at 9:33 AM, (Rebecca) Xuefei YUAN wrote:
>
>> Dear Barry,
>>
>> I was trying to read from a binary file and make the vector be
>> global at each processor, but if the following routine applies,
>>
>> ierr = DACreate2d(PETSC_COMM_WORLD,DA_NONPERIODIC,DA_STENCIL_BOX,
>> (info1.mx-1-parameters->abandonNumber),
>> (info1.my-1-parameters->abandonNumber), PETSC_DECIDE, PETSC_DECIDE,
>> 4, 1, PETSC_NULL, PETSC_NULL, &da2_4);CHKERRQ(ierr);
>> ierr = DACreateGlobalVector(da2_4,&FIELD);CHKERRQ(ierr);
>> sprintf(fileName,"solution");
>> ierr =
>> PetscViewerBinaryOpen(PETSC_COMM_WORLD,fileName,FILE_MODE_READ,&viewer);CHKERRQ(ierr);
>> ierr = VecLoadIntoVector(viewer,FIELD);CHKERRQ(ierr);
>> ierr = DAVecGetArray(da2_4,FIELD, &field);CHKERRQ(ierr);
>>
>> I expect to let field[][] in each processor are the same at each
>> grid point, i.e., for np=2,
>>
>> at the first processor, field[][] =
>>
>> 0 1 2 3 4 5
>> 6 7 8 9 10 11
>> 12 13 14 15 16 17
>> 18 19 20 21 22 23
>> 24 25 26 27 28 29
>>
>> and at the second processor, field[][] =
>>
>> 0 1 2 3 4 5
>> 6 7 8 9 10 11
>> 12 13 14 15 16 17
>> 18 19 20 21 22 23
>> 24 25 26 27 28 29
>>
>>
>> However, this routine gives me at the first processor, field[][] =
>> (xs=0,x=3,ys=0,y=5)
>>
>> 0 1 2 3 4 5
>> 3 4 5 6 7 8
>> 6 7 8 9 10 11
>> 9 10 11 12 13 14
>> 12 13 14 X X X
>>
>> and at the second processor, field[][] =
>> (xs=3,x=3,ys=0,y=5)
>>
>> X X X 15 16 17
>> 15 16 17 18 19 20
>> 18 19 20 21 22 23
>> 21 22 23 24 25 26
>> 24 25 26 27 28 29
>>
>> I know in each subdomain, the values are right, but how could I
>> have this array be exact the same as a 'global' one?
>>
>> Thanks very much!
>>
>> Rebecca
>>
--
(Rebecca) Xuefei YUAN
Department of Applied Physics and Applied Mathematics
Columbia University
Tel:917-399-8032
www.columbia.edu/~xy2102
More information about the petsc-users
mailing list