function compare_solid(solid_info, npts_loc_new, ids_loc_new, pts_loc_new, label) result(passed)
use modmpi, only : myid
use modibm, only : solid_info_type
use decomp_2d, only : zstart, zend
type(solid_info_type), intent(in) :: solid_info
integer, intent(in) :: npts_loc_new
integer, intent(in) :: ids_loc_new(:), pts_loc_new(:,:)
character(len=*), intent(in) :: label
logical :: passed
integer :: m
passed = .true.
if (npts_loc_new /= solid_info%nsolptsrank) then
write(*, '(A,I0,A,A,A)') 'FAIL on rank ', myid, ': ', trim(label), ' count mismatch'
passed = .false.
return
end if
do m = 1, solid_info%nsolptsrank
if (ids_loc_new(m) /= solid_info%solptsrank(m)) then
write(*, '(A,I0,A,A,A)') 'FAIL on rank ', myid, ': ', trim(label), ' index mismatch'
passed = .false.
return
end if
if (pts_loc_new(m,1) /= solid_info%solpts_loc(m,1) .or. &
pts_loc_new(m,2) /= solid_info%solpts_loc(m,2) .or. &
pts_loc_new(m,3) /= solid_info%solpts_loc(m,3)) then
write(*, '(A,I0,A,A,A)') 'FAIL on rank ', myid, ': ', trim(label), ' coordinate mismatch'
passed = .false.
return
end if
end do
end function compare_solid