xref: /libCEED/tests/t201-elemrestriction-f.f90 (revision 6c5df90db8677641a04ff505ccfa313a57dff4e5)
1!-----------------------------------------------------------------------
2      program test
3
4      include 'ceedf.h'
5
6      integer ceed,err
7      integer x,y
8      integer r
9
10      integer ne
11      parameter(ne=3)
12
13      real*8 a(2*ne)
14      real*8 yy(2*ne)
15      real*8 diff
16      integer*8 aoffset,yoffset
17
18      character arg*32
19
20      call getarg(1,arg)
21      call ceedinit(trim(arg)//char(0),ceed,err)
22
23      call ceedvectorcreate(ceed,2*ne,x,err)
24
25      do i=1,2*ne
26        a(i)=10+i-1
27      enddo
28
29      aoffset=0
30      call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,a,aoffset,err)
31
32      call ceedelemrestrictioncreateidentity(ceed,ne,2,2*ne,1,r,err)
33
34      call ceedvectorcreate(ceed,2*ne,y,err);
35      call ceedvectorsetvalue(y,0.d0,err);
36      call ceedelemrestrictionapply(r,ceed_notranspose,ceed_notranspose,x,y,&
37     & ceed_request_immediate,err)
38
39      call ceedvectorgetarrayread(y,ceed_mem_host,yy,yoffset,err)
40      do i=1,ne*2
41        diff=10+i-1-yy(yoffset+i)
42        if (abs(diff) > 1.0D-15) then
43! LCOV_EXCL_START
44          write(*,*) 'Error in restricted array y(',i,')=',yy(yoffset+i)
45! LCOV_EXCL_STOP
46        endif
47      enddo
48      call ceedvectorrestorearrayread(y,yy,yoffset,err)
49
50      call ceedvectordestroy(x,err)
51      call ceedvectordestroy(y,err)
52      call ceedelemrestrictiondestroy(r,err)
53      call ceeddestroy(ceed,err)
54
55      end
56!-----------------------------------------------------------------------
57