From f3e821da9ab5a9beb5724e39fe17ef534dbd777f Mon Sep 17 00:00:00 2001 From: David Minton Date: Tue, 13 Apr 2021 16:51:53 -0400 Subject: [PATCH] Attempt to vectorize encounter check inner loop --- src/rmvs/rmvs_encounter_check.f90 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/rmvs/rmvs_encounter_check.f90 b/src/rmvs/rmvs_encounter_check.f90 index 030d181c9..3a0efc8d1 100644 --- a/src/rmvs/rmvs_encounter_check.f90 +++ b/src/rmvs/rmvs_encounter_check.f90 @@ -23,24 +23,25 @@ module function rmvs_encounter_check_tp(self, cb, pl, dt, rts) result(lencounter real(DP), dimension(pl%nbody) :: r2crit logical :: lflag - associate(tp => self, ntp => self%nbody, npl => pl%nbody, rhill => pl%rhill, & - xht => self%xh, vht => self%vh, xbeg => self%xbeg, vbeg => self%vbeg) + associate(tp => self, ntp => self%nbody, npl => pl%nbody, rhill => pl%rhill, xht => self%xh, vht => self%vh, & + xbeg => self%xbeg, vbeg => self%vbeg, status => tp%status, plencP => tp%plencP, nenc => pl%nenc) r2crit(:) = (rts * rhill(:))**2 - tp%plencP(:) = 0 + plencP(:) = 0 do j = 1, npl + !$omp simd private(xr,vr,r2,v2,vdotr,lflag) do i = 1, ntp - if ((tp%status(i) /= ACTIVE).or.(tp%plencP(i) /=0)) cycle + if ((status(i) /= ACTIVE).or.(plencP(i) /= 0)) cycle xr(:) = xht(:, i) - xbeg(:, j) vr(:) = vht(:, i) - vbeg(:, j) r2 = dot_product(xr(:), xr(:)) v2 = dot_product(vr(:), vr(:)) vdotr = dot_product(vr(:), xr(:)) lflag = rmvs_chk_ind(r2, v2, vdotr, dt, r2crit(j)) - if (lflag) tp%plencP(i) = j + if (lflag) plencP(i) = j end do - pl%nenc(j) = count(tp%plencP(:) == j) + nenc(j) = count(plencP(:) == j) end do - lencounter = any(pl%nenc(:) > 0) + lencounter = any(nenc(:) > 0) end associate return end function rmvs_encounter_check_tp