Trouble with DA, multiple degrees of freedom

Barry Smith bsmith at mcs.anl.gov
Tue Feb 5 15:39:02 CST 2008


   VecStrideScale() is the easiest way to do this.

    Barry

On Feb 5, 2008, at 1:50 PM, Pearl Flath wrote:

> Dear All,
> I have a code where the velocity  (three components) and pressure  
> are all stored in a distributed array with 4 degrees of freedom per  
> node. I'd like to take one component of the velocity and multiply it  
> by -1, but I am having trouble figuring out how to access that. I  
> believe it must involve DAVecGetArrayDOF or DAVecGetArray, but I  
> haven't managed to get either to work. I've attached a code fragment  
> where it loads the velocity. Could someone suggest how to do this or  
> point me to where I can find additional discussion of this? I've  
> read the users manual on DA already.
> Sincerely,
> Pearl Flath
> ICES, UT Austin
> ---------------------------------
> DACreate3d(PETSC_COMM_WORLD,DA_NONPERIODIC,DA_STENCIL_BOX,m,n,p,
>               PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,
>               4,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&daV);
>
>   DACreateGlobalVector(daV, &vel);
>
>   // Set the velocity file to read from
>   PetscTruth flg ;
>   PetscViewer view_u;
>   char velocityfile[1024] ;
>   PetscOptionsGetString(0,"-velocityfile",velocityfile,1023,&flg);
>
>   PetscViewerBinaryOpen(PETSC_COMM_WORLD, velocityfile,
>                         FILE_MODE_READ, &view_u);
>   VecLoadIntoVector(view_u, vel);
>   PetscViewerDestroy(view_u);
>
>




More information about the petsc-users mailing list