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 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