xref: /petsc/src/sys/tests/ex14.c (revision aaa8cc7d2a5c3913edcbb923e20f154fe9c4aa65)
1 
2 static char help[] = "Tests PetscOptionsGetScalar(), PetscOptionsScalarArray() for complex numbers\n";
3 
4 #include <petscsys.h>
5 
6 int main(int argc, char **argv)
7 {
8   PetscInt    n, i;
9   PetscScalar a, array[10];
10   PetscReal   rarray[10];
11 
12   PetscFunctionBeginUser;
13   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
14   PetscCall(PetscOptionsGetScalar(NULL, NULL, "-a", &a, NULL));
15   PetscCall(PetscPrintf(PETSC_COMM_SELF, "Scalar a = %g + %gi\n", (double)PetscRealPart(a), (double)PetscImaginaryPart(a)));
16 
17   PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "test options", NULL);
18   n = 10; /* max num of input values */
19   PetscCall(PetscOptionsRealArray("-rarray", "Input a real array", "ex14.c", rarray, &n, NULL));
20   if (n) {
21     PetscCall(PetscPrintf(PETSC_COMM_SELF, "Real rarray of length %" PetscInt_FMT "\n", n));
22     for (i = 0; i < n; i++) PetscCall(PetscPrintf(PETSC_COMM_SELF, " %g,\n", (double)rarray[i]));
23   }
24 
25   n = 10; /* max num of input values */
26   PetscCall(PetscOptionsScalarArray("-array", "Input a scalar array", "ex14.c", array, &n, NULL));
27   if (n) {
28     PetscCall(PetscPrintf(PETSC_COMM_SELF, "Scalar rarray of length %" PetscInt_FMT "\n", n));
29     for (i = 0; i < n; i++) {
30       if (PetscImaginaryPart(array[i]) < 0.0) {
31         PetscCall(PetscPrintf(PETSC_COMM_SELF, " %g - %gi\n", (double)PetscRealPart(array[i]), (double)PetscAbsReal(PetscImaginaryPart(array[i]))));
32       } else {
33         PetscCall(PetscPrintf(PETSC_COMM_SELF, " %g + %gi\n", (double)PetscRealPart(array[i]), (double)PetscImaginaryPart(array[i])));
34       }
35     }
36   }
37   PetscOptionsEnd();
38   PetscCall(PetscFinalize());
39   return 0;
40 }
41 
42 /*TEST
43 
44    test:
45       requires: complex
46       args: -array 1.0,-2-3i,4.5+6.2i,4.5,6.8+4i,i,-i,-1.2i -rarray 1,2,3 -a 1.5+2.1i
47 
48 TEST*/
49