xref: /libCEED/tests/t124-vector.c (revision edf0491998c1d524f2f70fdd683669b8904cb3b6)
1 /// @file
2 /// Test CeedVectorGetArrayWrite to modify array
3 /// \test Test CeedVectorGetArrayWrite to modify array
4 #include <ceed.h>
5 #include <stdio.h>
6 
7 int main(int argc, char **argv) {
8   Ceed          ceed;
9   CeedVector    x;
10   const CeedInt len = 10;
11 
12   CeedInit(argv[1], &ceed);
13 
14   CeedVectorCreate(ceed, len, &x);
15   {
16     CeedScalar *writable_array;
17 
18     CeedVectorGetArrayWrite(x, CEED_MEM_HOST, &writable_array);
19     for (CeedInt i = 0; i < len; i++) writable_array[i] = 3 * i;
20     CeedVectorRestoreArray(x, &writable_array);
21   }
22   {
23     const CeedScalar *read_array;
24 
25     CeedVectorGetArrayRead(x, CEED_MEM_HOST, (const CeedScalar **)&read_array);
26     for (CeedInt i = 0; i < len; i++) {
27       if (read_array[i] != (CeedScalar)(3 * i)) printf("Error writing array[%" CeedInt_FMT "] = %f\n", i, read_array[i]);
28     }
29     CeedVectorRestoreArrayRead(x, (const CeedScalar **)&read_array);
30   }
31 
32   CeedVectorDestroy(&x);
33   CeedDestroy(&ceed);
34   return 0;
35 }
36