xref: /libCEED/tests/t108-vector-f.f90 (revision 547d9b97859fb07c9c2b832a30615e0bf91eaab3)
1*547d9b97Sjeremylt!-----------------------------------------------------------------------
2*547d9b97Sjeremylt      program test
3*547d9b97Sjeremylt
4*547d9b97Sjeremylt      include 'ceedf.h'
5*547d9b97Sjeremylt
6*547d9b97Sjeremylt      integer ceed,err
7*547d9b97Sjeremylt      integer x,n
8*547d9b97Sjeremylt      real*8 a(10)
9*547d9b97Sjeremylt      real*8 norm,diff
10*547d9b97Sjeremylt      integer*8 aoffset
11*547d9b97Sjeremylt      character arg*32
12*547d9b97Sjeremylt
13*547d9b97Sjeremylt      call getarg(1,arg)
14*547d9b97Sjeremylt
15*547d9b97Sjeremylt      call ceedinit(trim(arg)//char(0),ceed,err)
16*547d9b97Sjeremylt
17*547d9b97Sjeremylt      n=10
18*547d9b97Sjeremylt
19*547d9b97Sjeremylt      call ceedvectorcreate(ceed,n,x,err)
20*547d9b97Sjeremylt
21*547d9b97Sjeremylt      do i=1,10
22*547d9b97Sjeremylt        if (mod(i,2) == 0) then
23*547d9b97Sjeremylt          a(i)=i-1
24*547d9b97Sjeremylt        else
25*547d9b97Sjeremylt          a(i)=-(i-1)
26*547d9b97Sjeremylt        endif
27*547d9b97Sjeremylt      enddo
28*547d9b97Sjeremylt      aoffset=0
29*547d9b97Sjeremylt      call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,a,aoffset,err)
30*547d9b97Sjeremylt
31*547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_1,norm,err)
32*547d9b97Sjeremylt      diff = norm - 45.
33*547d9b97Sjeremylt      if (abs(diff)>1.0D-14) then
34*547d9b97Sjeremylt! LCOV_EXCL_START
35*547d9b97Sjeremylt        write(*,*) 'Error L1 norm ',norm,' != 45.'
36*547d9b97Sjeremylt! LCOV_EXCL_STOP
37*547d9b97Sjeremylt      endif
38*547d9b97Sjeremylt
39*547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_2,norm,err)
40*547d9b97Sjeremylt      diff = norm - sqrt(285.)
41*547d9b97Sjeremylt      if (abs(diff)>1.0D-6) then
42*547d9b97Sjeremylt! LCOV_EXCL_START
43*547d9b97Sjeremylt        write(*,*) 'Error L2 norm ',norm,' != sqrt(285.)'
44*547d9b97Sjeremylt! LCOV_EXCL_STOP
45*547d9b97Sjeremylt      endif
46*547d9b97Sjeremylt
47*547d9b97Sjeremylt      call ceedvectornorm(x,ceed_norm_max,norm,err)
48*547d9b97Sjeremylt      diff = norm - 9.
49*547d9b97Sjeremylt      if (abs(diff)>1.0D-14) then
50*547d9b97Sjeremylt! LCOV_EXCL_START
51*547d9b97Sjeremylt        write(*,*) 'Error Max norm ',norm,' != 9.'
52*547d9b97Sjeremylt! LCOV_EXCL_STOP
53*547d9b97Sjeremylt      endif
54*547d9b97Sjeremylt
55*547d9b97Sjeremylt      call ceedvectordestroy(x,err)
56*547d9b97Sjeremylt      call ceeddestroy(ceed,err)
57*547d9b97Sjeremylt
58*547d9b97Sjeremylt      end
59*547d9b97Sjeremylt!-----------------------------------------------------------------------
60