1!----------------------------------------------------------------------- 2 program test 3 implicit none 4 include 'ceed/fortran.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 ceedvectorgetarraywrite(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