diff --git a/src/encounter/encounter.f90 b/src/encounter/encounter.f90 index c688a3238..66a803ace 100644 --- a/src/encounter/encounter.f90 +++ b/src/encounter/encounter.f90 @@ -217,7 +217,7 @@ module pure subroutine encounter_check_one(xr, yr, zr, vxr, vyr, vzr, renc, dt, logical, intent(out) :: lencounter !! Flag indicating that an encounter has occurred logical, intent(out) :: lvdotr !! Logical flag indicating the direction of the v .dot. r vector ! Internals - real(DP) :: r2crit, r2min, r2, v2, vdotr + real(DP) :: r2crit, r2min, r2, v2, vdotr, tmin r2 = xr**2 + yr**2 + zr**2 r2crit = renc**2 @@ -229,8 +229,9 @@ module pure subroutine encounter_check_one(xr, yr, zr, vxr, vyr, vzr, renc, dt, if (.not.lvdotr) return v2 = vxr**2 + vyr**2 + vzr**2 + tmin = -vdotr / v2 - if (-vdotr < v2 * dt) then + if (tmin < dt) then r2min = r2 - vdotr**2 / v2 else r2min = r2 + 2 * vdotr * dt + v2 * dt**2 @@ -240,4 +241,5 @@ module pure subroutine encounter_check_one(xr, yr, zr, vxr, vyr, vzr, renc, dt, return end subroutine encounter_check_one + end submodule s_encounter diff --git a/src/symba/symba_util.f90 b/src/symba/symba_util.f90 index 9a9eb8802..62a9c0e1d 100644 --- a/src/symba/symba_util.f90 +++ b/src/symba/symba_util.f90 @@ -290,6 +290,10 @@ module subroutine symba_util_flatten_eucl_plpl(self, param) associate(pl => self, nplpl => self%nplpl, nplplm => self%nplplm) npl = int(self%nbody, kind=I8B) + select type(param) + class is (symba_parameters) + pl%lmtiny(1:npl) = pl%Gmass(1:npl) < param%GMTINY + end select nplm = count(.not. pl%lmtiny(1:npl)) pl%nplm = int(nplm, kind=I4B) nplpl = (npl * (npl - 1) / 2) ! number of entries in a strict lower triangle, npl x npl, minus first column