15 CALL check_real_rank1_unallocated()
17 CALL check_real_rank2_allocated()
18 CALL check_real_rank2_unallocated()
20 CALL check_string_rank1_allocated()
21 CALL check_string_rank1_unallocated()
28 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: real_arr
30 ALLOCATE (real_arr(10))
31 real_arr = [(idx, idx=1, 10)]
35 IF (.NOT. all(real_arr(1:10) == [(idx, idx=1, 10)])) &
36 error stop
"check_real_rank1_allocated: reallocating changed the initial values"
38 IF (.NOT. all(real_arr(11:20) == 0.)) &
39 error stop
"check_real_rank1_allocated: reallocation failed to initialise new values with 0."
43 print *,
"check_real_rank1_allocated: OK"
49 SUBROUTINE check_real_rank1_unallocated()
50 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: real_arr
56 IF (.NOT. all(real_arr(1:20) == 0.)) &
57 error stop
"check_real_rank1_unallocated: reallocation failed to initialise new values with 0."
61 print *,
"check_real_rank1_unallocated: OK"
67 SUBROUTINE check_real_rank2_allocated()
69 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: real_arr
71 ALLOCATE (real_arr(5, 2))
72 real_arr = reshape([(idx, idx=1, 10)], [5, 2])
76 IF (.NOT. (all(real_arr(1:5, 1) == [(idx, idx=1, 5)]) .AND. all(real_arr(1:5, 2) == [(idx, idx=6, 10)]))) &
77 error stop
"check_real_rank2_allocated: reallocating changed the initial values"
79 IF (.NOT. (all(real_arr(6:10, 1:2) == 0.) .AND. all(real_arr(1:10, 3:5) == 0.))) &
80 error stop
"check_real_rank2_allocated: reallocation failed to initialise new values with 0."
84 print *,
"check_real_rank1_allocated: OK"
90 SUBROUTINE check_real_rank2_unallocated()
91 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: real_arr
97 IF (.NOT. all(real_arr(1:10, 1:5) == 0.)) &
98 error stop
"check_real_rank2_unallocated: reallocation failed to initialise new values with 0."
100 DEALLOCATE (real_arr)
102 print *,
"check_real_rank2_unallocated: OK"
108 SUBROUTINE check_string_rank1_allocated()
109 CHARACTER(LEN=12),
DIMENSION(:),
POINTER :: str_arr
112 ALLOCATE (str_arr(10))
113 str_arr = [(
"hello, there", idx=1, 10)]
117 IF (.NOT. all(str_arr(1:10) == [(
"hello, there", idx=1, 10)])) &
118 error stop
"check_string_rank1_allocated: reallocating changed the initial values"
120 IF (.NOT. all(str_arr(11:20) ==
"")) &
121 error stop
"check_string_rank1_allocated: reallocation failed to initialise new values with ''."
125 print *,
"check_string_rank1_allocated: OK"
131 SUBROUTINE check_string_rank1_unallocated()
132 CHARACTER(LEN=12),
DIMENSION(:),
POINTER :: str_arr
138 IF (.NOT. all(str_arr(1:20) ==
"")) &
139 error stop
"check_string_rank1_allocated: reallocation failed to initialise new values with ''."
143 print *,
"check_string_rank1_unallocated: OK"
program memory_utilities_test
subroutine check_real_rank1_allocated()
Check that an allocated r1 array can be extended.
Defines the basic variable types.
integer, parameter, public dp
Utility routines for the memory handling.