xref: /libCEED/tests/t126-vector.c (revision 5fb68f377259d3910de46d787b7c5d1587fd01e1)
1*5fb68f37SKaren (Ren) Stengel /// @file
2*5fb68f37SKaren (Ren) Stengel /// Test creation, copying, and destroying of a vector
3*5fb68f37SKaren (Ren) Stengel /// \test Test creation, copying, and destroying of a vector
4*5fb68f37SKaren (Ren) Stengel #include <ceed.h>
5*5fb68f37SKaren (Ren) Stengel 
6*5fb68f37SKaren (Ren) Stengel int main(int argc, char **argv) {
7*5fb68f37SKaren (Ren) Stengel   Ceed       ceed;
8*5fb68f37SKaren (Ren) Stengel   CeedVector x, x_copy;
9*5fb68f37SKaren (Ren) Stengel   CeedInt    len = 10;
10*5fb68f37SKaren (Ren) Stengel 
11*5fb68f37SKaren (Ren) Stengel   CeedInit(argv[1], &ceed);
12*5fb68f37SKaren (Ren) Stengel 
13*5fb68f37SKaren (Ren) Stengel   CeedVectorCreate(ceed, len, &x);
14*5fb68f37SKaren (Ren) Stengel   CeedVectorCreate(ceed, len, &x_copy);
15*5fb68f37SKaren (Ren) Stengel 
16*5fb68f37SKaren (Ren) Stengel   {
17*5fb68f37SKaren (Ren) Stengel     CeedScalar array[len], array_copy[len];
18*5fb68f37SKaren (Ren) Stengel 
19*5fb68f37SKaren (Ren) Stengel     for (CeedInt i = 0; i < len; i++) {
20*5fb68f37SKaren (Ren) Stengel       array[i]      = 10 + i;
21*5fb68f37SKaren (Ren) Stengel       array_copy[i] = i;
22*5fb68f37SKaren (Ren) Stengel     }
23*5fb68f37SKaren (Ren) Stengel 
24*5fb68f37SKaren (Ren) Stengel     CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array);
25*5fb68f37SKaren (Ren) Stengel     CeedVectorSetArray(x_copy, CEED_MEM_HOST, CEED_COPY_VALUES, array_copy);
26*5fb68f37SKaren (Ren) Stengel   }
27*5fb68f37SKaren (Ren) Stengel 
28*5fb68f37SKaren (Ren) Stengel   CeedVectorCopy(x, x_copy);
29*5fb68f37SKaren (Ren) Stengel 
30*5fb68f37SKaren (Ren) Stengel   {
31*5fb68f37SKaren (Ren) Stengel     const CeedScalar *read_array;
32*5fb68f37SKaren (Ren) Stengel     // Check that new array from x_copy is the same as the original input array a
33*5fb68f37SKaren (Ren) Stengel     CeedVectorGetArrayRead(x_copy, CEED_MEM_HOST, &read_array);
34*5fb68f37SKaren (Ren) Stengel     for (CeedInt i = 0; i < len; i++) {
35*5fb68f37SKaren (Ren) Stengel       if ((10 + i) != read_array[i]) printf("Error in copying values of CeedVector\n");
36*5fb68f37SKaren (Ren) Stengel     }
37*5fb68f37SKaren (Ren) Stengel     CeedVectorRestoreArrayRead(x_copy, &read_array);
38*5fb68f37SKaren (Ren) Stengel   }
39*5fb68f37SKaren (Ren) Stengel   CeedVectorDestroy(&x);
40*5fb68f37SKaren (Ren) Stengel   CeedVectorDestroy(&x_copy);
41*5fb68f37SKaren (Ren) Stengel   CeedDestroy(&ceed);
42*5fb68f37SKaren (Ren) Stengel   return 0;
43*5fb68f37SKaren (Ren) Stengel }
44