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 DM da; 19c4762a1bSJed Brown Vec global; 20c4762a1bSJed Brown PF pf; 21c4762a1bSJed Brown 22*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc,&argv,(char*)0,help)); 235f80ce2aSJacob Faibussowitsch CHKERRQ(DMDACreate1d(PETSC_COMM_WORLD,DM_BOUNDARY_NONE,10,3,1,NULL,&da)); 245f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(da)); 255f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetUp(da)); 265f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreateGlobalVector(da,&global)); 275f80ce2aSJacob Faibussowitsch CHKERRQ(PFCreate(PETSC_COMM_WORLD,1,3,&pf)); 285f80ce2aSJacob Faibussowitsch CHKERRQ(PFSet(pf,apply,NULL,NULL,NULL,NULL)); 295f80ce2aSJacob Faibussowitsch CHKERRQ(PFApplyVec(pf,NULL,global)); 305f80ce2aSJacob Faibussowitsch CHKERRQ(PFDestroy(&pf)); 315f80ce2aSJacob Faibussowitsch CHKERRQ(VecView(global,PETSC_VIEWER_DRAW_WORLD)); 325f80ce2aSJacob Faibussowitsch CHKERRQ(VecDestroy(&global)); 335f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&da)); 34*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 35*b122ec5aSJacob Faibussowitsch return 0; 36c4762a1bSJed Brown } 37c4762a1bSJed Brown 38c4762a1bSJed Brown /*TEST 39c4762a1bSJed Brown 40c4762a1bSJed Brown test: 41c4762a1bSJed Brown nsize: 2 42c4762a1bSJed Brown requires: x 43c4762a1bSJed Brown 44c4762a1bSJed Brown TEST*/ 45