Actual source code: ex60.c
2: static char help[] = "Tests MatGetColumnVector().";
4: #include <petscmat.h>
6: int main(int argc, char **args)
7: {
8: Mat C;
9: PetscInt i, j, m = 3, n = 2, Ii, J, col = 0;
10: PetscMPIInt size, rank;
11: PetscScalar v;
12: Vec yy;
15: PetscInitialize(&argc, &args, (char *)0, help);
16: PetscOptionsGetInt(NULL, NULL, "-col", &col, NULL);
18: MPI_Comm_rank(PETSC_COMM_WORLD, &rank);
19: MPI_Comm_size(PETSC_COMM_WORLD, &size);
20: n = 2 * size;
22: /* create the matrix for the five point stencil, YET AGAIN*/
23: MatCreate(PETSC_COMM_WORLD, &C);
24: MatSetSizes(C, PETSC_DECIDE, PETSC_DECIDE, m * n, m * n);
25: MatSetFromOptions(C);
26: MatSeqAIJSetPreallocation(C, 5, NULL);
27: MatMPIAIJSetPreallocation(C, 5, NULL, 5, NULL);
28: MatSetUp(C);
30: for (i = 0; i < m; i++) {
31: for (j = 2 * rank; j < 2 * rank + 2; j++) {
32: v = -1.0;
33: Ii = j + n * i;
34: if (i > 0) {
35: J = Ii - n;
36: MatSetValues(C, 1, &Ii, 1, &J, &v, INSERT_VALUES);
37: }
38: if (i < m - 1) {
39: J = Ii + n;
40: MatSetValues(C, 1, &Ii, 1, &J, &v, INSERT_VALUES);
41: }
42: if (j > 0) {
43: J = Ii - 1;
44: MatSetValues(C, 1, &Ii, 1, &J, &v, INSERT_VALUES);
45: }
46: if (j < n - 1) {
47: J = Ii + 1;
48: MatSetValues(C, 1, &Ii, 1, &J, &v, INSERT_VALUES);
49: }
50: v = 4.0;
51: MatSetValues(C, 1, &Ii, 1, &Ii, &v, INSERT_VALUES);
52: }
53: }
54: MatAssemblyBegin(C, MAT_FINAL_ASSEMBLY);
55: MatAssemblyEnd(C, MAT_FINAL_ASSEMBLY);
56: MatView(C, PETSC_VIEWER_STDOUT_WORLD);
58: MatCreateVecs(C, NULL, &yy);
59: VecSetFromOptions(yy);
61: MatGetColumnVector(C, yy, col);
63: VecView(yy, PETSC_VIEWER_STDOUT_WORLD);
65: VecDestroy(&yy);
66: MatDestroy(&C);
67: PetscFinalize();
68: return 0;
69: }
71: /*TEST
73: test:
74: nsize: 3
75: args: -col 7
77: test:
78: suffix: dense
79: nsize: 3
80: args: -col 7 -mat_type dense -vec_type {{mpi standard}}
81: filter: grep -v type
83: test:
84: requires: cuda
85: suffix: dense_cuda
86: nsize: 3
87: output_file: output/ex60_dense.out
88: args: -col 7 -mat_type {{mpidense mpidensecuda}} -vec_type {{mpi standard cuda mpicuda}}
89: filter: grep -v type
91: TEST*/