xref: /libCEED/tests/t109-vector-f.f90 (revision d99fa3c5cd91a1690aedf0679cbf290d44fec74c)
1!-----------------------------------------------------------------------
2      program test
3      implicit none
4      include 'ceedf.h'
5
6      integer ceed,err
7      integer i,x,n
8      real*8 a(10)
9      real*8 b(10)
10      real*8 c(10)
11      real*8 diff
12      integer*8 aoffset,boffset,coffset
13      character arg*32
14
15      call getarg(1,arg)
16
17      call ceedinit(trim(arg)//char(0),ceed,err)
18
19      n=10
20
21      call ceedvectorcreate(ceed,n,x,err)
22
23      do i=1,10
24        a(i)=0
25      enddo
26      a(3)=-3.14
27
28      aoffset=0
29      call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,a,aoffset,err)
30
31! Taking array should return a
32      call ceedvectortakearray(x,ceed_mem_host,c,coffset,err)
33      diff=c(coffset+3)+3.14
34      if (abs(diff)>1.0D-15) then
35! LCOV_EXCL_START
36        write(*,*) 'Error taking array c(3)=',c(3)
37! LCOV_EXCL_STOP
38      endif
39
40! Getting array should not modify a
41      call ceedvectorgetarray(x,ceed_mem_host,b,boffset,err)
42      b(boffset+5) = -3.14
43      call ceedvectorrestorearray(x,b,boffset,err)
44      diff=a(5)+3.14
45      if (abs(diff)<1.0D-15) then
46! LCOV_EXCL_START
47        write(*,*) 'Error protecting array a(3)=',a(3)
48! LCOV_EXCL_STOP
49      endif
50
51      call ceedvectordestroy(x,err)
52      call ceeddestroy(ceed,err)
53
54      end
55!-----------------------------------------------------------------------
56