xref: /libCEED/tests/t126-vector.c (revision 49aac155e7a09736f56fb3abac0f57dab29f7cbf)
15fb68f37SKaren (Ren) Stengel /// @file
25fb68f37SKaren (Ren) Stengel /// Test creation, copying, and destroying of a vector
35fb68f37SKaren (Ren) Stengel /// \test Test creation, copying, and destroying of a vector
45fb68f37SKaren (Ren) Stengel #include <ceed.h>
5*49aac155SJeremy L Thompson #include <stdio.h>
65fb68f37SKaren (Ren) Stengel 
main(int argc,char ** argv)75fb68f37SKaren (Ren) Stengel int main(int argc, char **argv) {
85fb68f37SKaren (Ren) Stengel   Ceed       ceed;
95fb68f37SKaren (Ren) Stengel   CeedVector x, x_copy;
105fb68f37SKaren (Ren) Stengel   CeedInt    len = 10;
115fb68f37SKaren (Ren) Stengel 
125fb68f37SKaren (Ren) Stengel   CeedInit(argv[1], &ceed);
135fb68f37SKaren (Ren) Stengel 
145fb68f37SKaren (Ren) Stengel   CeedVectorCreate(ceed, len, &x);
155fb68f37SKaren (Ren) Stengel   CeedVectorCreate(ceed, len, &x_copy);
165fb68f37SKaren (Ren) Stengel 
175fb68f37SKaren (Ren) Stengel   {
185fb68f37SKaren (Ren) Stengel     CeedScalar array[len], array_copy[len];
195fb68f37SKaren (Ren) Stengel 
205fb68f37SKaren (Ren) Stengel     for (CeedInt i = 0; i < len; i++) {
215fb68f37SKaren (Ren) Stengel       array[i]      = 10 + i;
225fb68f37SKaren (Ren) Stengel       array_copy[i] = i;
235fb68f37SKaren (Ren) Stengel     }
245fb68f37SKaren (Ren) Stengel 
255fb68f37SKaren (Ren) Stengel     CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array);
265fb68f37SKaren (Ren) Stengel     CeedVectorSetArray(x_copy, CEED_MEM_HOST, CEED_COPY_VALUES, array_copy);
275fb68f37SKaren (Ren) Stengel   }
285fb68f37SKaren (Ren) Stengel 
295fb68f37SKaren (Ren) Stengel   CeedVectorCopy(x, x_copy);
305fb68f37SKaren (Ren) Stengel 
315fb68f37SKaren (Ren) Stengel   {
325fb68f37SKaren (Ren) Stengel     const CeedScalar *read_array;
335fb68f37SKaren (Ren) Stengel     // Check that new array from x_copy is the same as the original input array a
345fb68f37SKaren (Ren) Stengel     CeedVectorGetArrayRead(x_copy, CEED_MEM_HOST, &read_array);
355fb68f37SKaren (Ren) Stengel     for (CeedInt i = 0; i < len; i++) {
365fb68f37SKaren (Ren) Stengel       if ((10 + i) != read_array[i]) printf("Error in copying values of CeedVector\n");
375fb68f37SKaren (Ren) Stengel     }
385fb68f37SKaren (Ren) Stengel     CeedVectorRestoreArrayRead(x_copy, &read_array);
395fb68f37SKaren (Ren) Stengel   }
405fb68f37SKaren (Ren) Stengel   CeedVectorDestroy(&x);
415fb68f37SKaren (Ren) Stengel   CeedVectorDestroy(&x_copy);
425fb68f37SKaren (Ren) Stengel   CeedDestroy(&ceed);
435fb68f37SKaren (Ren) Stengel   return 0;
445fb68f37SKaren (Ren) Stengel }
45