[petsc-users] A global vector reading from the binary file.
(Rebecca) Xuefei YUAN
xy2102 at columbia.edu
Fri Mar 12 09:33:58 CST 2010
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
More information about the petsc-users
mailing list