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