1c4762a1bSJed Brown static char help[] = "Tests MatShift for SeqAIJ matrices with some missing diagonal entries\n\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #include <petscmat.h> 4c4762a1bSJed Brown 5*9371c9d4SSatish Balay int main(int argc, char **argv) { 6c4762a1bSJed Brown Mat A; 7c4762a1bSJed Brown PetscInt coli[4], row; 8c4762a1bSJed Brown PetscScalar vali[4]; 9c4762a1bSJed Brown PetscMPIInt size; 10c4762a1bSJed Brown 11327415f7SBarry Smith PetscFunctionBeginUser; 129566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, (char *)0, help)); 139566063dSJacob Faibussowitsch PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size)); 14be096a46SBarry Smith PetscCheck(size == 1, PETSC_COMM_WORLD, PETSC_ERR_WRONG_MPI_SIZE, "This is a uniprocessor example only!"); 15c4762a1bSJed Brown 169566063dSJacob Faibussowitsch PetscCall(MatCreate(PETSC_COMM_SELF, &A)); 179566063dSJacob Faibussowitsch PetscCall(MatSetSizes(A, 4, 4, 4, 4)); 189566063dSJacob Faibussowitsch PetscCall(MatSetType(A, MATSEQAIJ)); 199566063dSJacob Faibussowitsch PetscCall(MatSeqAIJSetPreallocation(A, 4, NULL)); 20c4762a1bSJed Brown 21*9371c9d4SSatish Balay row = 0; 22*9371c9d4SSatish Balay coli[0] = 1; 23*9371c9d4SSatish Balay coli[1] = 3; 24*9371c9d4SSatish Balay vali[0] = 1.0; 25*9371c9d4SSatish Balay vali[1] = 2.0; 269566063dSJacob Faibussowitsch PetscCall(MatSetValues(A, 1, &row, 2, coli, vali, ADD_VALUES)); 27c4762a1bSJed Brown 28*9371c9d4SSatish Balay row = 1; 29*9371c9d4SSatish Balay coli[0] = 0; 30*9371c9d4SSatish Balay coli[1] = 1; 31*9371c9d4SSatish Balay coli[2] = 2; 32*9371c9d4SSatish Balay coli[3] = 3; 33*9371c9d4SSatish Balay vali[0] = 3.0; 34*9371c9d4SSatish Balay vali[1] = 4.0; 35*9371c9d4SSatish Balay vali[2] = 5.0; 36*9371c9d4SSatish Balay vali[3] = 6.0; 379566063dSJacob Faibussowitsch PetscCall(MatSetValues(A, 1, &row, 4, coli, vali, ADD_VALUES)); 38c4762a1bSJed Brown 39*9371c9d4SSatish Balay row = 2; 40*9371c9d4SSatish Balay coli[0] = 0; 41*9371c9d4SSatish Balay coli[1] = 3; 42*9371c9d4SSatish Balay vali[0] = 7.0; 43*9371c9d4SSatish Balay vali[1] = 8.0; 449566063dSJacob Faibussowitsch PetscCall(MatSetValues(A, 1, &row, 2, coli, vali, ADD_VALUES)); 45c4762a1bSJed Brown 469566063dSJacob Faibussowitsch PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY)); 479566063dSJacob Faibussowitsch PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY)); 489566063dSJacob Faibussowitsch PetscCall(MatView(A, PETSC_VIEWER_STDOUT_WORLD)); 49c4762a1bSJed Brown 509566063dSJacob Faibussowitsch PetscCall(MatShift(A, 0.0)); 519566063dSJacob Faibussowitsch PetscCall(MatView(A, PETSC_VIEWER_STDOUT_WORLD)); 52c4762a1bSJed Brown 539566063dSJacob Faibussowitsch PetscCall(MatDestroy(&A)); 549566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 55b122ec5aSJacob Faibussowitsch return 0; 56c4762a1bSJed Brown } 57c4762a1bSJed Brown 58c4762a1bSJed Brown /*TEST 59c4762a1bSJed Brown 60c4762a1bSJed Brown test: 61c4762a1bSJed Brown 62c4762a1bSJed Brown TEST*/ 63