Actual source code: ex33.c
1: /*$Id: ex33.c,v 1.20 2001/04/10 19:35:44 bsmith Exp $*/
3: static char help[] = "Writes a matrix using the PETSc sparse format. Input arguments are:n
4: -fout <file> : output file namenn";
6: #include "petscmat.h"
8: int main(int argc,char **args)
9: {
10: Mat A;
11: Vec b;
12: char fileout[128];
13: int i,j,m = 6,n = 6,N = 36,ierr,I,J;
14: PetscTruth flg;
15: Scalar val,v;
16: PetscViewer view;
18: PetscInitialize(&argc,&args,(char *)0,help);
20: PetscOptionsHasName(PETSC_NULL,"-use_mataij",&flg);
21: if (flg) {
22: MatCreateMPIAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,N,N,
23: PETSC_DEFAULT,PETSC_NULL,PETSC_DEFAULT,PETSC_NULL,&A);
24: #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
25: } else {
26: MatCreateMPIRowbs(PETSC_COMM_WORLD,PETSC_DECIDE,N,6,PETSC_NULL,&A);
27: #endif
28: }
30: for (i=0; i<m; i++) {
31: for (j=0; j<n; j++) {
32: v = -1.0; I = j + n*i;
33: if (i>0) {J = I - n; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
34: if (i<m-1) {J = I + n; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
35: if (j>0) {J = I - 1; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
36: if (j<n-1) {J = I + 1; MatSetValues(A,1,&I,1,&J,&v,INSERT_VALUES);}
37: v = 4.0; MatSetValues(A,1,&I,1,&I,&v,INSERT_VALUES);
38: }
39: }
40: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
41: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
43: VecCreateMPI(PETSC_COMM_WORLD,PETSC_DECIDE,N,&b);
44: for (i=0; i<N; i++) {
45: val = i + 1;
46: VecSetValues(b,1,&i,&val,INSERT_VALUES);
47: }
48: VecAssemblyBegin(b);
49: VecAssemblyEnd(b);
51: PetscOptionsGetString(PETSC_NULL,"-fout",fileout,127,PETSC_NULL);
52: PetscViewerBinaryOpen(PETSC_COMM_WORLD,fileout,PETSC_BINARY_CREATE,&view);
53: MatView(A,view);
54: VecView(b,view);
55: PetscViewerDestroy(view);
57: VecDestroy(b);
58: MatDestroy(A);
60: PetscFinalize();
61: return 0;
62: }