[petsc-users] DMDACoor3d and VecView
Jed Brown
jedbrown at mcs.anl.gov
Thu May 23 21:31:44 CDT 2013
Roc Wang <pengxwang at hotmail.com> writes:
> Thanks, I followed the src/dm/examples/tests/ex14.c and ex13.c. There is still
> error. Please take a look at the followings:
> //The portion of writing vector in Solver program
> /* write da, solution Vec Coordinate Da and Vec cda in binary format */
> ierr = PetscLogEventRegister("Generate Vector",VEC_CLASSID,&VECTOR_WRITE);
> CHKERRQ(ierr);
> ierr = PetscLogEventBegin(VECTOR_WRITE,0,0,0,0);CHKERRQ(ierr);
> ierr = PetscPrintf(PETSC_COMM_WORLD,"writing vector in binary to vector.bin
> ...\n");CHKERRQ(ierr);
> ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,"vector.bin",FILE_MODE_WRITE,&
> viewer);CHKERRQ(ierr);
> ierr = DMView(da,viewer);CHKERRQ(ierr);
> ierr = VecView(x,viewer);CHKERRQ(ierr);
> ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
> ierr = PetscLogEventEnd(VECTOR_WRITE,0,0,0,0);CHKERRQ(ierr);
> //The portion of reading vector in the post-processing program
> /* Read new vector in binary format */
> DM da;
> Vec uu;
> ierr = PetscLogEventRegister("Read Vector",VEC_CLASSID,&VECTOR_READ);CHKERRQ
> (ierr);
> ierr = PetscLogEventBegin(VECTOR_READ,0,0,0,0);CHKERRQ(ierr);
> ierr = PetscPrintf(PETSC_COMM_WORLD,"reading vector in binary from vector.bin
> ...\n");CHKERRQ(ierr);
> ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,"vector.bin",FILE_MODE_READ,&
> viewer);CHKERRQ(ierr);
> //ierr = DMCreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr); //NOTE A
> ierr = DMLoad(da,viewer);CHKERRQ(ierr);
> ierr = DMCreateGlobalVector(da,&uu);CHKERRQ(ierr);
> ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
> ierr = PetscLogEventEnd(VECTOR_READ,0,0,0,0);CHKERRQ(ierr);
> If the line of ierr = DMCreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr); //NOTE A
> is commented out, the error is like:
> [2]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [2]PETSC ERROR: Invalid argument!
> [2]PETSC ERROR: Wrong type of object: Parameter # 1!
> [2]PETSC ERROR:
> ------------------------------------------------------------------------
1. ALWAYS paste the entire error message.
2. This is a memory error.
> If with ierr = DMCreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr); //NOTE A, the
> error is like:
> [0]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [0]PETSC ERROR: Arguments are incompatible!
> [0]PETSC ERROR: Cannot change block size 3 to 1!
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
Use VecSetOptionsPrefix(gc,"coord_") in both the code that writes and
the code that reads, before VecView and VecLoad respectively.
The simple PETSc binary format cannot distinguish the options unless you
set different prefixes.
More information about the petsc-users
mailing list