System Preprocessors
testmat16.c
Go to the documentation of this file.
00001     /*
00002      * create a matrix with a singleton row & column
00003      */
00004     ierr = MatCreateSeqAIJ(MPI_COMM_SELF,n,n,3,0,&A); CHKERRQ(ierr);
00005     ierr = VecCreateSeq(MPI_COMM_SELF,n,&rhs); CHKERRQ(ierr);
00006     for (i=0; i<n; i++) {
00007       if (i>0) {
00008         int ii=i-1;
00009         if ( (i!=n/3 && i!=2*n/3) && (ii!=n/3 && ii!=2*n/3) ) {
00010           ierr = MatSetValues(A,1,&i,1,&ii,&mone,INSERT_VALUES); CHKERRQ(ierr);
00011           ierr = MatSetValues(A,1,&ii,1,&i,&mone,INSERT_VALUES); CHKERRQ(ierr);
00012         }
00013       }
00014       if (i!=n/3 && i!=2*n/3) {
00015         ierr = MatSetValues(A,1,&i,1,&i,&two,INSERT_VALUES); CHKERRQ(ierr);
00016       } else {
00017         ierr = MatSetValues(A,1,&i,1,&i,&one,INSERT_VALUES); CHKERRQ(ierr);
00018       }
00019       ierr = VecSetValues(rhs,1,&i,&one,INSERT_VALUES); CHKERRQ(ierr);
00020     }
00021     ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
00022     ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
00023 
00024     ierr = VecAssemblyBegin(rhs); CHKERRQ(ierr);
00025     ierr = VecAssemblyEnd(rhs); CHKERRQ(ierr);
00026     ierr = VecDuplicate(rhs,&sol); CHKERRQ(ierr);