xref: /libCEED/tests/t108-vector-f.f90 (revision 874019bc89a44b0eae6b48d78442abcb0851055b)
1547d9b97Sjeremylt!-----------------------------------------------------------------------
2547d9b97Sjeremylt      program test
31f9a83abSJed Brown      implicit none
4*ec3da8bcSJed Brown      include 'ceed/fortran.h'
5547d9b97Sjeremylt
6547d9b97Sjeremylt      integer ceed,err
71f9a83abSJed Brown      integer x,i,n
8547d9b97Sjeremylt      real*8 a(10)
9547d9b97Sjeremylt      real*8 norm,diff
10547d9b97Sjeremylt      integer*8 aoffset
11547d9b97Sjeremylt      character arg*32
12547d9b97Sjeremylt
13547d9b97Sjeremylt      call getarg(1,arg)
14547d9b97Sjeremylt
15547d9b97Sjeremylt      call ceedinit(trim(arg)//char(0),ceed,err)
16547d9b97Sjeremylt
17547d9b97Sjeremylt      n=10
18547d9b97Sjeremylt
19547d9b97Sjeremylt      call ceedvectorcreate(ceed,n,x,err)
20547d9b97Sjeremylt
21547d9b97Sjeremylt      do i=1,10
22547d9b97Sjeremylt        if (mod(i,2) == 0) then
23547d9b97Sjeremylt          a(i)=i-1
24547d9b97Sjeremylt        else
25547d9b97Sjeremylt          a(i)=-(i-1)
26547d9b97Sjeremylt        endif
27547d9b97Sjeremylt      enddo
28547d9b97Sjeremylt      aoffset=0
29547d9b97Sjeremylt      call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,a,aoffset,err)
30547d9b97Sjeremylt
31547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_1,norm,err)
32547d9b97Sjeremylt      diff = norm - 45.
33547d9b97Sjeremylt      if (abs(diff)>1.0D-14) then
34547d9b97Sjeremylt! LCOV_EXCL_START
35547d9b97Sjeremylt        write(*,*) 'Error L1 norm ',norm,' != 45.'
36547d9b97Sjeremylt! LCOV_EXCL_STOP
37547d9b97Sjeremylt      endif
38547d9b97Sjeremylt
39547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_2,norm,err)
40547d9b97Sjeremylt      diff = norm - sqrt(285.)
41547d9b97Sjeremylt      if (abs(diff)>1.0D-6) then
42547d9b97Sjeremylt! LCOV_EXCL_START
43547d9b97Sjeremylt        write(*,*) 'Error L2 norm ',norm,' != sqrt(285.)'
44547d9b97Sjeremylt! LCOV_EXCL_STOP
45547d9b97Sjeremylt      endif
46547d9b97Sjeremylt
47547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_max,norm,err)
48547d9b97Sjeremylt      diff = norm - 9.
49547d9b97Sjeremylt      if (abs(diff)>1.0D-14) then
50547d9b97Sjeremylt! LCOV_EXCL_START
51547d9b97Sjeremylt        write(*,*) 'Error Max norm ',norm,' != 9.'
52547d9b97Sjeremylt! LCOV_EXCL_STOP
53547d9b97Sjeremylt      endif
54547d9b97Sjeremylt
55547d9b97Sjeremylt      call ceedvectordestroy(x,err)
56547d9b97Sjeremylt      call ceeddestroy(ceed,err)
57547d9b97Sjeremylt
58547d9b97Sjeremylt      end
59547d9b97Sjeremylt!-----------------------------------------------------------------------
60