xref: /petsc/src/sys/tests/ex10.c (revision 40badf4fbc550ac1f60bd080eaff6de6d55b946d)
1 
2 static char help[] = "Tests PetscArraymove()/PetscMemmove()\n";
3 
4 #include <petscsys.h>
5 
6 int main(int argc,char **argv)
7 {
8   PetscInt       i,*a,*b;
9   PetscErrorCode ierr;
10 
11   ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
12 
13   CHKERRQ(PetscMalloc1(10,&a));
14   CHKERRQ(PetscMalloc1(20,&b));
15 
16   /*
17       Nonoverlapping regions
18   */
19   for (i=0; i<20; i++) b[i] = i;
20   CHKERRQ(PetscArraymove(a,b,10));
21   CHKERRQ(PetscIntView(10,a,NULL));
22 
23   CHKERRQ(PetscFree(a));
24 
25   /*
26      |        |                |       |
27      b        a               b+15    b+20
28                               a+10    a+15
29   */
30   a    = b + 5;
31   CHKERRQ(PetscArraymove(a,b,15));
32   CHKERRQ(PetscIntView(15,a,NULL));
33   CHKERRQ(PetscFree(b));
34 
35   /*
36      |       |                    |       |
37      a       b                   a+20   a+25
38                                         b+20
39   */
40   CHKERRQ(PetscMalloc1(25,&a));
41   b    = a + 5;
42   for (i=0; i<20; i++) b[i] = i;
43   CHKERRQ(PetscArraymove(a,b,20));
44   CHKERRQ(PetscIntView(20,a,NULL));
45   CHKERRQ(PetscFree(a));
46 
47   ierr = PetscFinalize();
48   return ierr;
49 }
50 
51 /*TEST
52 
53    test:
54 
55 TEST*/
56