18980d4a7Sjeremylt!----------------------------------------------------------------------- 28980d4a7Sjeremylt program test 31f9a83abSJed Brown implicit none 4*ec3da8bcSJed Brown include 'ceed/fortran.h' 58980d4a7Sjeremylt 68980d4a7Sjeremylt integer ceed,err 78980d4a7Sjeremylt integer x,y 81f9a83abSJed Brown integer i,r 98980d4a7Sjeremylt 108980d4a7Sjeremylt integer ne 118980d4a7Sjeremylt parameter(ne=8) 128980d4a7Sjeremylt integer blksize 138980d4a7Sjeremylt parameter(blksize=5) 148980d4a7Sjeremylt 158980d4a7Sjeremylt integer*4 ind(2*ne) 168980d4a7Sjeremylt real*8 a(ne+1) 178980d4a7Sjeremylt integer*8 aoffset 188980d4a7Sjeremylt 198980d4a7Sjeremylt character arg*32 208980d4a7Sjeremylt 218980d4a7Sjeremylt call getarg(1,arg) 228980d4a7Sjeremylt call ceedinit(trim(arg)//char(0),ceed,err) 238980d4a7Sjeremylt 248980d4a7Sjeremylt call ceedvectorcreate(ceed,ne+1,x,err) 258980d4a7Sjeremylt 268980d4a7Sjeremylt do i=1,ne+1 278980d4a7Sjeremylt a(i)=10+i-1 288980d4a7Sjeremylt enddo 298980d4a7Sjeremylt 30c8b9fe72Sjeremylt aoffset=0 31c8b9fe72Sjeremylt call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,a,aoffset,err) 328980d4a7Sjeremylt 338980d4a7Sjeremylt do i=1,ne 348980d4a7Sjeremylt ind(2*i-1)=i-1 358980d4a7Sjeremylt ind(2*i )=i 368980d4a7Sjeremylt enddo 378980d4a7Sjeremylt 38d979a051Sjeremylt call ceedelemrestrictioncreateblocked(ceed,ne,2,blksize,1,1,ne+1,& 398980d4a7Sjeremylt & ceed_mem_host,ceed_use_pointer,ind,r,err) 408980d4a7Sjeremylt 418980d4a7Sjeremylt call ceedvectorcreate(ceed,2*blksize*2,y,err); 428980d4a7Sjeremylt call ceedvectorsetvalue(y,0.d0,err); 438980d4a7Sjeremylt 448980d4a7Sjeremylt! No Transpose 45a8d32208Sjeremylt call ceedelemrestrictionapply(r,ceed_notranspose,x,y,& 468980d4a7Sjeremylt & ceed_request_immediate,err) 478980d4a7Sjeremylt call ceedvectorview(y,err) 488980d4a7Sjeremylt 498980d4a7Sjeremylt! Transpose 508980d4a7Sjeremylt call ceedvectorgetarray(x,ceed_mem_host,a,aoffset,err) 518980d4a7Sjeremylt do i=1,ne+1 528980d4a7Sjeremylt a(aoffset+i)=0.0 538980d4a7Sjeremylt enddo 548980d4a7Sjeremylt call ceedvectorrestorearray(x,a,aoffset,err) 558980d4a7Sjeremylt 56a8d32208Sjeremylt call ceedelemrestrictionapply(r,ceed_transpose,y,x,& 578980d4a7Sjeremylt & ceed_request_immediate,err) 588980d4a7Sjeremylt 598980d4a7Sjeremylt call ceedvectorview(x,err) 608980d4a7Sjeremylt 618980d4a7Sjeremylt call ceedvectordestroy(x,err) 628980d4a7Sjeremylt call ceedvectordestroy(y,err) 638980d4a7Sjeremylt call ceedelemrestrictiondestroy(r,err) 648980d4a7Sjeremylt call ceeddestroy(ceed,err) 658980d4a7Sjeremylt 668980d4a7Sjeremylt end 678980d4a7Sjeremylt!----------------------------------------------------------------------- 68