1 static char help[] = "Tests using MatShift() to create a constant diagonal matrix\n\n"; 2 3 #include <petscmat.h> 4 5 int main(int argc,char **argv) 6 { 7 Mat A,F; 8 MatFactorInfo info; 9 PetscErrorCode ierr; 10 PetscInt m = 10; 11 IS perm; 12 PetscMPIInt size; 13 PetscBool issbaij; 14 15 ierr = PetscInitialize(&argc,&argv,(char*) 0,help);if (ierr) return ierr; 16 ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr); 17 18 ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); 19 ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,m,m);CHKERRQ(ierr); 20 ierr = MatSetFromOptions(A);CHKERRQ(ierr); 21 ierr = MatSetUp(A);CHKERRQ(ierr); 22 ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); 23 ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); 24 25 ierr = MatShift(A,1.0);CHKERRQ(ierr); 26 27 ierr = PetscObjectTypeCompare((PetscObject)A,MATSEQSBAIJ,&issbaij);CHKERRQ(ierr); 28 if (size == 1 && !issbaij) { 29 ierr = MatGetFactor(A,MATSOLVERPETSC,MAT_FACTOR_LU,&F);CHKERRQ(ierr); 30 ierr = MatFactorInfoInitialize(&info);CHKERRQ(ierr); 31 ierr = ISCreateStride(PETSC_COMM_SELF,m,0,1,&perm);CHKERRQ(ierr); 32 ierr = MatLUFactorSymbolic(F,A,perm,perm,&info);CHKERRQ(ierr); 33 ierr = MatLUFactorNumeric(F,A,&info);CHKERRQ(ierr); 34 ierr = MatDestroy(&F);CHKERRQ(ierr); 35 ierr = ISDestroy(&perm);CHKERRQ(ierr); 36 } 37 ierr = MatDestroy(&A);CHKERRQ(ierr); 38 ierr = PetscFinalize(); 39 return ierr; 40 } 41 42 /*TEST 43 44 test: 45 requires: define(PETSC_USE_INFO) 46 args: -info 47 filter: grep malloc | sort -b 48 49 test: 50 suffix: 2 51 nsize: 2 52 requires: define(PETSC_USE_INFO) 53 args: -info ex182info 54 filter: grep -h malloc "ex182info.0" | sort -b 55 56 test: 57 suffix: 3 58 requires: define(PETSC_USE_INFO) 59 args: -info -mat_type baij 60 filter: grep malloc | sort -b 61 62 test: 63 suffix: 4 64 nsize: 2 65 requires: define(PETSC_USE_INFO) 66 args: -info ex182info -mat_type baij 67 filter: grep -h malloc "ex182info.1" | sort -b 68 69 test: 70 suffix: 5 71 requires: define(PETSC_USE_INFO) 72 args: -info -mat_type sbaij 73 filter: grep malloc | sort -b 74 75 test: 76 suffix: 6 77 nsize: 2 78 requires: define(PETSC_USE_INFO) 79 args: -info ex182info -mat_type sbaij 80 filter: grep -h malloc "ex182info.0" | sort -b 81 82 test: 83 suffix: 7 84 nsize: 1 85 requires: define(PETSC_USE_INFO) 86 args: -info ex182info 87 filter: grep -h malloc "ex182info.0" | grep -v Running | sort -b 88 89 test: 90 suffix: 8 91 nsize: 2 92 requires: define(PETSC_USE_INFO) 93 args: -info ex182info:mat 94 filter: grep -h malloc "ex182info.1" | sort -b 95 96 test: 97 suffix: 9 98 nsize: 1 99 requires: define(PETSC_USE_INFO) 100 args: -info ex182info:sys 101 filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName -ve PetscDetermineInitialFPTrap -ve libpetscbamg "ex182info.0" | sort -b 102 103 test: 104 suffix: 10 105 nsize: 1 106 requires: define(PETSC_USE_INFO) 107 args: -info :~sys 108 filter: grep -h malloc | sort -b 109 110 test: 111 suffix: 11 112 nsize: 2 113 requires: define(PETSC_USE_INFO) 114 args: -info :~sys,mat 115 filter: sort -b 116 117 test: 118 suffix: 12 119 nsize: 2 120 requires: define(PETSC_USE_INFO) 121 args: -info ex182info:sys,mat 122 filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName -ve PetscDetermineInitialFPTrap -ve libpetscbamg "ex182info.1" | sort -b 123 124 test: 125 suffix: 13 126 nsize: 2 127 requires: define(PETSC_USE_INFO) 128 args: -info ex182info:mat:~self 129 filter: grep -h "ex182info.1" | sort -b 130 131 test: 132 suffix: 14 133 nsize: 2 134 requires: define(PETSC_USE_INFO) 135 args: -info ex182info::~self 136 filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName -ve PetscDetermineInitialFPTrap "ex182info.1" | sort -b 137 138 test: 139 suffix: 15 140 nsize: 2 141 requires: define(PETSC_USE_INFO) 142 args: -info ex182info::self 143 filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName -ve PetscDetermineInitialFPTrap -ve libpetscbamg "ex182info.1" | sort -b 144 145 TEST*/ 146