xref: /libCEED/tests/t230-elemrestriction.c (revision f90d6ea7419f62473d52d38b43c6c9a31b3d935a)
1*0930e4e7SJeremy L Thompson /// @file
2*0930e4e7SJeremy L Thompson /// Test creation and view of an element restriction at points
3*0930e4e7SJeremy L Thompson /// \test Test creation and view of an element restriction at points
4*0930e4e7SJeremy L Thompson #include <ceed.h>
5*0930e4e7SJeremy L Thompson 
main(int argc,char ** argv)6*0930e4e7SJeremy L Thompson int main(int argc, char **argv) {
7*0930e4e7SJeremy L Thompson   Ceed                ceed;
8*0930e4e7SJeremy L Thompson   CeedInt             num_elem = 3, num_points = num_elem * 2;
9*0930e4e7SJeremy L Thompson   CeedInt             ind[(num_elem + 1) + num_points];
10*0930e4e7SJeremy L Thompson   CeedElemRestriction elem_restriction;
11*0930e4e7SJeremy L Thompson 
12*0930e4e7SJeremy L Thompson   CeedInit(argv[1], &ceed);
13*0930e4e7SJeremy L Thompson 
14*0930e4e7SJeremy L Thompson   {
15*0930e4e7SJeremy L Thompson     CeedInt offset      = num_elem + 1;
16*0930e4e7SJeremy L Thompson     CeedInt point_index = num_elem;
17*0930e4e7SJeremy L Thompson 
18*0930e4e7SJeremy L Thompson     for (CeedInt i = 0; i < num_elem; i++) {
19*0930e4e7SJeremy L Thompson       CeedInt num_points_in_elem = (i + 1) % num_elem + 1;
20*0930e4e7SJeremy L Thompson 
21*0930e4e7SJeremy L Thompson       ind[i] = offset;
22*0930e4e7SJeremy L Thompson       for (CeedInt j = 0; j < num_points_in_elem; j++) {
23*0930e4e7SJeremy L Thompson         ind[offset + j] = point_index;
24*0930e4e7SJeremy L Thompson         point_index     = (point_index + 1) % num_points;
25*0930e4e7SJeremy L Thompson       }
26*0930e4e7SJeremy L Thompson       offset += num_points_in_elem;
27*0930e4e7SJeremy L Thompson     }
28*0930e4e7SJeremy L Thompson     ind[num_elem] = offset;
29*0930e4e7SJeremy L Thompson   }
30*0930e4e7SJeremy L Thompson   CeedElemRestrictionCreateAtPoints(ceed, num_elem, num_points, 1, num_points, CEED_MEM_HOST, CEED_USE_POINTER, ind, &elem_restriction);
31*0930e4e7SJeremy L Thompson 
32*0930e4e7SJeremy L Thompson   CeedElemRestrictionView(elem_restriction, stdout);
33*0930e4e7SJeremy L Thompson 
34*0930e4e7SJeremy L Thompson   CeedElemRestrictionDestroy(&elem_restriction);
35*0930e4e7SJeremy L Thompson   CeedDestroy(&ceed);
36*0930e4e7SJeremy L Thompson   return 0;
37*0930e4e7SJeremy L Thompson }
38