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)]))
THEN
36 error stop
"check_real_rank1_allocated: reallocating changed the initial values"
39 IF (.NOT. all(real_arr(11:20) == 0.))
THEN
40 error stop
"check_real_rank1_allocated: reallocation failed to initialise new values with 0."
45 print *,
"check_real_rank1_allocated: OK"
51 SUBROUTINE check_real_rank1_unallocated()
52 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: real_arr
58 IF (.NOT. all(real_arr(1:20) == 0.))
THEN
59 error stop
"check_real_rank1_unallocated: reallocation failed to initialise new values with 0."
64 print *,
"check_real_rank1_unallocated: OK"
65 END SUBROUTINE check_real_rank1_unallocated
70 SUBROUTINE check_real_rank2_allocated()
72 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: real_arr
74 ALLOCATE (real_arr(5, 2))
75 real_arr = reshape([(idx, idx=1, 10)], [5, 2])
79 IF (.NOT. (all(real_arr(1:5, 1) == [(idx, idx=1, 5)]) .AND. all(real_arr(1:5, 2) == [(idx, idx=6, 10)])))
THEN
80 error stop
"check_real_rank2_allocated: reallocating changed the initial values"
83 IF (.NOT. (all(real_arr(6:10, 1:2) == 0.) .AND. all(real_arr(1:10, 3:5) == 0.)))
THEN
84 error stop
"check_real_rank2_allocated: reallocation failed to initialise new values with 0."
89 print *,
"check_real_rank1_allocated: OK"
90 END SUBROUTINE check_real_rank2_allocated
95 SUBROUTINE check_real_rank2_unallocated()
96 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: real_arr
102 IF (.NOT. all(real_arr(1:10, 1:5) == 0.))
THEN
103 error stop
"check_real_rank2_unallocated: reallocation failed to initialise new values with 0."
106 DEALLOCATE (real_arr)
108 print *,
"check_real_rank2_unallocated: OK"
109 END SUBROUTINE check_real_rank2_unallocated
114 SUBROUTINE check_string_rank1_allocated()
115 CHARACTER(LEN=12),
DIMENSION(:),
POINTER :: str_arr
118 ALLOCATE (str_arr(10))
119 str_arr = [(
"hello, there", idx=1, 10)]
123 IF (.NOT. all(str_arr(1:10) == [(
"hello, there", idx=1, 10)]))
THEN
124 error stop
"check_string_rank1_allocated: reallocating changed the initial values"
127 IF (.NOT. all(str_arr(11:20) ==
""))
THEN
128 error stop
"check_string_rank1_allocated: reallocation failed to initialise new values with ''."
133 print *,
"check_string_rank1_allocated: OK"
134 END SUBROUTINE check_string_rank1_allocated
139 SUBROUTINE check_string_rank1_unallocated()
140 CHARACTER(LEN=12),
DIMENSION(:),
POINTER :: str_arr
146 IF (.NOT. all(str_arr(1:20) ==
""))
THEN
147 error stop
"check_string_rank1_allocated: reallocation failed to initialise new values with ''."
152 print *,
"check_string_rank1_unallocated: OK"
153 END SUBROUTINE check_string_rank1_unallocated
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.