Actual source code: ex171.c
2: static char help[] = "Tests MatDiagonalSet() on MatLoad() matrix \n\n";
4: #include <petscmat.h>
6: int main(int argc,char **args)
7: {
8: Mat A;
9: Vec x;
10: PetscViewer fd; /* viewer */
11: char file[PETSC_MAX_PATH_LEN]; /* input file name */
12: PetscReal norm;
13: PetscBool flg;
15: PetscInitialize(&argc,&args,(char*)0,help);
16: /* Determine file from which we read the matrix A */
17: PetscOptionsGetString(NULL,NULL,"-f",file,sizeof(file),&flg);
20: /* Load matrix A */
21: PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&fd);
22: MatCreate(PETSC_COMM_WORLD,&A);
23: MatLoad(A,fd);
24: PetscViewerDestroy(&fd);
25: MatCreateVecs(A,&x,NULL);
26: MatGetDiagonal(A,x);
27: VecScale(x,-1.0);
28: MatDiagonalSet(A,x,ADD_VALUES);
29: MatGetDiagonal(A,x);
30: VecNorm(x,NORM_2,&norm);
31: PetscPrintf(PETSC_COMM_WORLD,"Norm %g\n",(double)norm);
33: /* Free data structures */
34: MatDestroy(&A);
35: VecDestroy(&x);
36: PetscFinalize();
37: return 0;
38: }
40: /*TEST
42: test:
43: nsize: 4
44: requires: datafilespath !complex double !defined(PETSC_USE_64BIT_INDICES)
45: args: -f ${wPETSC_DIR}/share/petsc/datafiles/matrices/ns-real-int32-float64 -malloc_dump
47: TEST*/