[petsc-users] DMDACoor3d and VecView
Roc Wang
pengxwang at hotmail.com
Thu May 23 22:23:37 CDT 2013
Thanks a lot. It works. Following is the code that reads:
ierr = DMCreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr); ierr = DMLoad(da,viewer);CHKERRQ(ierr); ierr = DMCreateGlobalVector(da,&uu);CHKERRQ(ierr); ierr = VecSetOptionsPrefix(uu,"solution_");CHKERRQ(ierr); ierr = VecLoad(uu,viewer);CHKERRQ(ierr);
ierr = DMCreate(PETSC_COMM_WORLD,&cda);CHKERRQ(ierr); ierr = DMLoad(cda,viewer);CHKERRQ(ierr); ierr = DMCreateGlobalVector(cda,&gc);CHKERRQ(ierr); ierr = VecSetOptionsPrefix(gc,"coord_");CHKERRQ(ierr); ierr = VecLoad(gc,viewer);CHKERRQ(ierr);
> From: jedbrown at mcs.anl.gov
> To: pengxwang at hotmail.com; petsc-users at mcs.anl.gov
> Subject: RE: [petsc-users] DMDACoor3d and VecView
> Date: Thu, 23 May 2013 21:31:44 -0500
>
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130523/a9a57567/attachment.html>
More information about the petsc-users
mailing list