RMPCDMD
test_common_0.f90
Go to the documentation of this file.
1 ! This file is part of RMPCDMD
2 ! Copyright (c) 2015-2016 Pierre de Buyl and contributors
3 ! License: BSD 3-clause (see file LICENSE)
4 
5 program test_common_0
6  use common
7  use tester
8  implicit none
9 
10  type(tester_t) :: test
11 
12  type(profile_t) :: p
13 
14  double precision :: x0, x1
15  double precision, allocatable :: x(:)
16  integer :: i
17  integer :: n
18  integer, parameter :: nloop = 100
19 
20  integer :: seed_size, clock
21  integer, allocatable :: seed(:)
22 
23  call random_seed(size = seed_size)
24  allocate(seed(seed_size))
25  clock = 71943989
26  seed = clock + 37 * [ (i - 1, i = 1, seed_size) ]
27  call random_seed(put = seed)
28  deallocate(seed)
29 
30 
31  x0 = 7.d0
32  x1 = 10.d0
33  n = 19
34 
35  call test% init(tolerance64=x1/sqrt(dble(nloop)))
36 
37  call p% init(x0, x1, n)
38 
39  allocate(x(size(p% data)))
40 
41  do i = 1, n
42  x(i) = flin( (dble(i)-0.5d0)/dble(n) )
43  end do
44 
45  call test% assert_positive(p% dx)
46  call test% assert_positive(p% count)
47 
48  do i = 1, nloop
49  call random_number(x0)
50  x0 = flin(x0)
51  call p% bin(x0, x0)
52  end do
53 
54  call test% assert_positive(p% count)
55  call test% assert_equal(sum(p% count), nloop)
56 
57  call p% norm()
58 
59  call test% assert_close(p% data, x)
60 
61  call p% reset()
62  do i = 1, n
63  x(i) = cos( flin((dble(i)-0.5d0)/dble(n)) )
64  end do
65 
66  do i = 1, nloop
67  call random_number(x0)
68  x0 = flin(x0)
69  x1 = cos(x0)
70  call p% bin(x0, x1)
71  end do
72 
73  call p% norm()
74 
75  write(*,*) p % data
76  write(*,*) x
77 
78  call test% assert_close(p% data, x)
79 
80  call test% print()
81 
82 contains
83 
84  double precision elemental function flin(x)
85  double precision, intent(in) :: x
86 
87  flin = 7.d0 + x * 3.d0
88 
89  end function flin
90 
91 end program test_common_0
double precision elemental function flin(x)
program test_common_0
Utility routines.
Definition: common.f90:12
Container for a profile, e.g. v(x)
Definition: common.f90:66