diff --git a/generic3g/tests/Test_FixedLevelsVerticalGrid.pf b/generic3g/tests/Test_FixedLevelsVerticalGrid.pf index 36ab5d58590f..2230f79c8217 100644 --- a/generic3g/tests/Test_FixedLevelsVerticalGrid.pf +++ b/generic3g/tests/Test_FixedLevelsVerticalGrid.pf @@ -30,5 +30,20 @@ contains end subroutine test_equals + @test + subroutine test_not_equals() + type(FixedLevelsVerticalGrid) :: vgrid1, vgrid2, vgrid3 + + real, parameter :: levels1(*) = [1.,5.,7.] + real, parameter :: levels2(*) = [.01,4.] + + vgrid1 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='Pa', levels=levels1) + vgrid2 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='mb', levels=levels1) + vgrid3 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='Pa', levels=levels2) + @assert_that(vgrid1 /= vgrid2, is(.true.)) + @assert_that(vgrid1 /= vgrid3, is(.true.)) + + end subroutine test_not_equals + end module Test_FixedLevelsVerticalGrid diff --git a/generic3g/vertical/FixedLevelsVerticalGrid.F90 b/generic3g/vertical/FixedLevelsVerticalGrid.F90 index 1727b2dc19a0..f0dac26777bf 100644 --- a/generic3g/vertical/FixedLevelsVerticalGrid.F90 +++ b/generic3g/vertical/FixedLevelsVerticalGrid.F90 @@ -91,17 +91,19 @@ logical function can_connect_to(this, src, rc) _UNUSED_DUMMY(src) end function can_connect_to - logical function equal_FixedLevelsVerticalGrid(a, b) result(equal) + impure elemental logical function equal_FixedLevelsVerticalGrid(a, b) result(equal) type(FixedLevelsVerticalGrid), intent(in) :: a, b equal = a%standard_name == b%standard_name if (.not. equal) return equal = a%units == b%units if (.not. equal) return + equal = size(a%levels) == size(b%levels) + if (.not. equal) return equal = all(a%levels == b%levels) end function equal_FixedLevelsVerticalGrid - logical function not_equal_FixedLevelsVerticalGrid(a, b) result(not_equal) + impure elemental logical function not_equal_FixedLevelsVerticalGrid(a, b) result(not_equal) type(FixedLevelsVerticalGrid), intent(in) :: a, b not_equal = .not. (a==b)