1c4762a1bSJed Brown 2c4762a1bSJed Brown static char help[] = "VecView() with a DMDA1d vector and draw viewer.\n\n"; 3c4762a1bSJed Brown 4c4762a1bSJed Brown #include <petscdm.h> 5c4762a1bSJed Brown #include <petscdmda.h> 6c4762a1bSJed Brown #include <petscao.h> 7c4762a1bSJed Brown 8c4762a1bSJed Brown PetscErrorCode apply(void *ctx,PetscInt n,const PetscScalar *x,PetscScalar *y) 9c4762a1bSJed Brown { 10c4762a1bSJed Brown PetscInt i; 11c4762a1bSJed Brown 12c4762a1bSJed Brown for (i=0; i<n; i++) {y[3*i] = x[i]; y[3*i+1] = x[i]*x[i]; y[3*i+2] = x[i]*x[i]*x[i];} 13c4762a1bSJed Brown return 0; 14c4762a1bSJed Brown } 15c4762a1bSJed Brown 16c4762a1bSJed Brown int main(int argc,char **argv) 17c4762a1bSJed Brown { 18c4762a1bSJed Brown PetscErrorCode ierr; 19c4762a1bSJed Brown DM da; 20c4762a1bSJed Brown Vec global; 21c4762a1bSJed Brown PF pf; 22c4762a1bSJed Brown 23c4762a1bSJed Brown ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr; 24*5f80ce2aSJacob Faibussowitsch CHKERRQ(DMDACreate1d(PETSC_COMM_WORLD,DM_BOUNDARY_NONE,10,3,1,NULL,&da)); 25*5f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(da)); 26*5f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetUp(da)); 27*5f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreateGlobalVector(da,&global)); 28*5f80ce2aSJacob Faibussowitsch CHKERRQ(PFCreate(PETSC_COMM_WORLD,1,3,&pf)); 29*5f80ce2aSJacob Faibussowitsch CHKERRQ(PFSet(pf,apply,NULL,NULL,NULL,NULL)); 30*5f80ce2aSJacob Faibussowitsch CHKERRQ(PFApplyVec(pf,NULL,global)); 31*5f80ce2aSJacob Faibussowitsch CHKERRQ(PFDestroy(&pf)); 32*5f80ce2aSJacob Faibussowitsch CHKERRQ(VecView(global,PETSC_VIEWER_DRAW_WORLD)); 33*5f80ce2aSJacob Faibussowitsch CHKERRQ(VecDestroy(&global)); 34*5f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&da)); 35c4762a1bSJed Brown ierr = PetscFinalize(); 36c4762a1bSJed Brown return ierr; 37c4762a1bSJed Brown } 38c4762a1bSJed Brown 39c4762a1bSJed Brown /*TEST 40c4762a1bSJed Brown 41c4762a1bSJed Brown test: 42c4762a1bSJed Brown nsize: 2 43c4762a1bSJed Brown requires: x 44c4762a1bSJed Brown 45c4762a1bSJed Brown TEST*/ 46