xref: /petsc/src/sys/tests/ex10.c (revision 70a7d78aacfbd24b2e31399a3d8e056944bb7de3)
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   ierr = PetscMalloc1(10,&a);CHKERRQ(ierr);
14   ierr = PetscMalloc1(20,&b);CHKERRQ(ierr);
15 
16   /*
17       Nonoverlapping regions
18   */
19   for (i=0; i<20; i++) b[i] = i;
20   ierr = PetscArraymove(a,b,10);CHKERRQ(ierr);
21   ierr = PetscIntView(10,a,NULL);CHKERRQ(ierr);
22 
23   ierr = PetscFree(a);CHKERRQ(ierr);
24 
25   /*
26      |        |                |       |
27      b        a               b+15    b+20
28                               a+10    a+15
29   */
30   a    = b + 5;
31   ierr = PetscArraymove(a,b,15);CHKERRQ(ierr);
32   ierr = PetscIntView(15,a,NULL);CHKERRQ(ierr);
33   ierr = PetscFree(b);CHKERRQ(ierr);
34 
35   /*
36      |       |                    |       |
37      a       b                   a+20   a+25
38                                         b+20
39   */
40   ierr = PetscMalloc1(25,&a);CHKERRQ(ierr);
41   b    = a + 5;
42   for (i=0; i<20; i++) b[i] = i;
43   ierr = PetscArraymove(a,b,20);CHKERRQ(ierr);
44   ierr = PetscIntView(20,a,NULL);CHKERRQ(ierr);
45   ierr = PetscFree(a);CHKERRQ(ierr);
46 
47   ierr = PetscFinalize();
48   return ierr;
49 }
50 
51 /*TEST
52 
53    test:
54 
55 TEST*/
56