1 /// @file
2 /// Test copying into vector with borrowed pointer
3 /// \test Test copying into vector with borrowed pointer
4 #include <ceed.h>
5 #include <stdio.h>
6
main(int argc,char ** argv)7 int main(int argc, char **argv) {
8 Ceed ceed;
9 CeedVector x, x_copy;
10 CeedInt len = 10;
11 CeedScalar array_borrowed[len];
12
13 CeedInit(argv[1], &ceed);
14
15 CeedVectorCreate(ceed, len, &x);
16 CeedVectorCreate(ceed, len, &x_copy);
17
18 {
19 CeedScalar array[len];
20
21 for (CeedInt i = 0; i < len; i++) {
22 array[i] = i;
23 array_borrowed[i] = 10 + i;
24 }
25
26 CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array);
27 CeedVectorSetArray(x_copy, CEED_MEM_HOST, CEED_USE_POINTER, array_borrowed);
28 }
29
30 // Copy to device if preferred
31 {
32 CeedMemType mem_type = CEED_MEM_HOST;
33
34 CeedGetPreferredMemType(ceed, &mem_type);
35 if (mem_type == CEED_MEM_DEVICE) CeedVectorSyncArray(x, CEED_MEM_DEVICE);
36 }
37
38 // Copy and sync borrowed array
39 CeedVectorCopy(x, x_copy);
40 CeedVectorSyncArray(x_copy, CEED_MEM_HOST);
41
42 // Check that borrowed array is the same as the original input array a
43 for (CeedInt i = 0; i < len; i++) {
44 if (array_borrowed[i] != i) printf("Error in copying values of CeedVector\n");
45 }
46
47 CeedVectorDestroy(&x);
48 CeedVectorDestroy(&x_copy);
49 CeedDestroy(&ceed);
50 return 0;
51 }
52