[4751] | 1 | MODULE test_arrays_mod |
---|
| 2 | USE obs_fbm |
---|
| 3 | |
---|
| 4 | INTERFACE test_arrays |
---|
| 5 | MODULE PROCEDURE test_real_arrays |
---|
| 6 | MODULE PROCEDURE test_real_arrays_2D |
---|
| 7 | MODULE PROCEDURE test_real_arrays_3D |
---|
| 8 | MODULE PROCEDURE test_integer_arrays |
---|
| 9 | END INTERFACE test_arrays |
---|
| 10 | |
---|
| 11 | CONTAINS |
---|
| 12 | |
---|
| 13 | LOGICAL FUNCTION test_real_arrays(array_in,array_out) |
---|
| 14 | IMPLICIT NONE |
---|
| 15 | INTEGER :: i |
---|
| 16 | REAL(KIND=fbdp) :: array_in(:), array_out(:) |
---|
| 17 | |
---|
| 18 | test_real_arrays=.TRUE. |
---|
| 19 | DO i=1,SIZE(array_in) |
---|
| 20 | IF (array_in(i) /= array_out(i)) THEN |
---|
| 21 | test_real_arrays=.FALSE. |
---|
| 22 | END IF |
---|
| 23 | END DO |
---|
| 24 | |
---|
| 25 | IF (SIZE(array_in) /= SIZE(array_out)) THEN |
---|
| 26 | test_real_arrays=.FALSE. |
---|
| 27 | END IF |
---|
| 28 | |
---|
| 29 | END FUNCTION test_real_arrays |
---|
| 30 | |
---|
| 31 | |
---|
| 32 | LOGICAL FUNCTION test_real_arrays_2D(array_in,array_out) |
---|
| 33 | IMPLICIT NONE |
---|
| 34 | INTEGER :: i, j |
---|
| 35 | REAL(KIND=fbdp) :: array_in(:,:), array_out(:,:) |
---|
| 36 | |
---|
| 37 | test_real_arrays_2D=.TRUE. |
---|
| 38 | DO j=1,SIZE(array_in,2) |
---|
| 39 | DO i=1,SIZE(array_in,1) |
---|
| 40 | IF (array_in(i,j) /= array_out(i,j)) THEN |
---|
| 41 | test_real_arrays_2D=.FALSE. |
---|
| 42 | END IF |
---|
| 43 | END DO |
---|
| 44 | END DO |
---|
| 45 | |
---|
| 46 | IF (SIZE(array_in) /= SIZE(array_out)) THEN |
---|
| 47 | test_real_arrays_2D=.FALSE. |
---|
| 48 | END IF |
---|
| 49 | |
---|
| 50 | END FUNCTION test_real_arrays_2D |
---|
| 51 | |
---|
| 52 | |
---|
| 53 | LOGICAL FUNCTION test_real_arrays_3D(array_in,array_out) |
---|
| 54 | IMPLICIT NONE |
---|
| 55 | INTEGER :: i, j, k |
---|
| 56 | REAL(KIND=fbdp) :: array_in(:,:,:), array_out(:,:,:) |
---|
| 57 | |
---|
| 58 | test_real_arrays_3D=.TRUE. |
---|
| 59 | DO k=1,SIZE(array_in,3) |
---|
| 60 | DO j=1,SIZE(array_in,2) |
---|
| 61 | DO i=1,SIZE(array_in,1) |
---|
| 62 | IF (array_in(i,j,k) /= array_out(i,j,k)) THEN |
---|
| 63 | test_real_arrays_3D=.FALSE. |
---|
| 64 | END IF |
---|
| 65 | END DO |
---|
| 66 | END DO |
---|
| 67 | END DO |
---|
| 68 | |
---|
| 69 | IF (SIZE(array_in) /= SIZE(array_out)) THEN |
---|
| 70 | test_real_arrays_3D=.FALSE. |
---|
| 71 | END IF |
---|
| 72 | |
---|
| 73 | END FUNCTION test_real_arrays_3D |
---|
| 74 | |
---|
| 75 | |
---|
| 76 | LOGICAL FUNCTION test_integer_arrays(array_in,array_out) |
---|
| 77 | IMPLICIT NONE |
---|
| 78 | INTEGER :: i |
---|
| 79 | INTEGER :: array_in(:), array_out(:) |
---|
| 80 | |
---|
| 81 | test_integer_arrays=.TRUE. |
---|
| 82 | DO i=1,SIZE(array_in) |
---|
| 83 | IF (array_in(i) /= array_out(i)) THEN |
---|
| 84 | test_integer_arrays=.FALSE. |
---|
| 85 | END IF |
---|
| 86 | END DO |
---|
| 87 | |
---|
| 88 | IF (SIZE(array_in) /= SIZE(array_out)) THEN |
---|
| 89 | test_integer_arrays=.FALSE. |
---|
| 90 | END IF |
---|
| 91 | |
---|
| 92 | END FUNCTION test_integer_arrays |
---|
| 93 | |
---|
| 94 | END MODULE test_arrays_mod |
---|