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