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 write(*,*) 'Error in restricted array y(',i,')=',yy(yoffset+i) 44 endif 45 enddo 46 call ceedvectorrestorearrayread(y,yy,yoffset,err) 47 48 call ceedvectordestroy(x,err) 49 call ceedvectordestroy(y,err) 50 call ceedelemrestrictiondestroy(r,err) 51 call ceeddestroy(ceed,err) 52 53 end 54!----------------------------------------------------------------------- 55