Actual source code: ex33.c
1: /*$Id: ex33.c,v 1.23 2001/09/11 16:32:50 bsmith Exp $*/
3: static char help[] = "Writes a matrix using the PETSc sparse format. Input arguments are:\n\
4: -fout <file> : output file name\n\n";
6: #include petscmat.h
10: int main(int argc,char **args)
11: {
12: Mat A;
13: Vec b;
14: char fileout[128];
15: int i,j,m = 6,n = 6,N = 36,ierr,I,J;
16: PetscScalar val,v;
17: PetscViewer view;
19: PetscInitialize(&argc,&args,(char *)0,help);
21: MatCreate(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,N,N,&A);
22: MatSetFromOptions(A);
23: for (i=0; i<m; i++) {
24: for (j=0; j<n; j++) {
25: v = -1.0; I = j + n*i;
26: if (i>0) {J = I - n; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
27: if (i<m-1) {J = I + n; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
28: if (j>0) {J = I - 1; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
29: if (j<n-1) {J = I + 1; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
30: v = 4.0; MatSetValues(A,1,&I,1,&I,&v,INSERT_VALUES);
31: }
32: }
33: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
34: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
36: VecCreate(PETSC_COMM_WORLD,&b);
37: VecSetSizes(b,PETSC_DECIDE,N);
38: VecSetFromOptions(b);
39: for (i=0; i<N; i++) {
40: val = i + 1;
41: VecSetValues(b,1,&i,&val,INSERT_VALUES);
42: }
43: VecAssemblyBegin(b);
44: VecAssemblyEnd(b);
46: PetscOptionsGetString(PETSC_NULL,"-fout",fileout,127,PETSC_NULL);
47: PetscViewerBinaryOpen(PETSC_COMM_WORLD,fileout,PETSC_BINARY_CREATE,&view);
48: MatView(A,view);
49: VecView(b,view);
50: PetscViewerDestroy(view);
52: VecDestroy(b);
53: MatDestroy(A);
55: PetscFinalize();
56: return 0;
57: }