From 565ed44ccb1c2139526792ac8c7229a82aa9eb81 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 30 Aug 2021 20:15:10 -0400 Subject: [PATCH] Fixed problem where the discard flag was not being reset by bodies sometimes after a collision, causing new bodies to get discarded. --- src/io/io.f90 | 2 +- src/symba/symba_util.f90 | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/io/io.f90 b/src/io/io.f90 index bbbf25cd1..c00939516 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -895,7 +895,7 @@ module subroutine io_param_writer(self, unit, iotype, v_list, iostat, iomsg) write(param_name, Afmt) "DU2M"; write(param_value, Rfmt) param%DU2M; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "RHILL_PRESENT"; write(param_value, Lfmt) param%lrhill_present; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "EXTRA_FORCE"; write(param_value, Lfmt) param%lextra_force; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) - write(param_name, Afmt) "DISCARD_OUT"; write(param_value, Afmt) trim(adjustl(param%discard_out)); write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) + if (param%discard_out /= "") write(param_name, Afmt) "DISCARD_OUT"; write(param_value, Afmt) trim(adjustl(param%discard_out)); write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) if (param%discard_out /= "") write(param_name, Afmt) "BIG_DISCARD"; write(param_value, Lfmt) param%lbig_discard; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "CHK_CLOSE"; write(param_value, Lfmt) param%lclose; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "ENERGY"; write(param_value, Lfmt) param%lenergy; write(unit, Afmt, err = 667, iomsg = iomsg) adjustl(param_name), adjustl(param_value) diff --git a/src/symba/symba_util.f90 b/src/symba/symba_util.f90 index db8ff94ab..ccb9b37ec 100644 --- a/src/symba/symba_util.f90 +++ b/src/symba/symba_util.f90 @@ -453,16 +453,11 @@ module subroutine symba_util_rearray_pl(self, system, param) end if ! Reset all of the status flags for this body - where(pl%status(1:npl) /= INACTIVE) - pl%status(1:npl) = ACTIVE - pl%info(1:npl)%status = "ACTIVE" - pl%ldiscard(1:npl) = .false. - pl%lcollision(1:npl) = .false. - pl%lmask(1:npl) = .true. - elsewhere - pl%ldiscard(1:npl) = .true. - pl%lmask(1:npl) = .false. - end where + pl%status(1:npl) = ACTIVE + pl%info(1:npl)%status = "ACTIVE" + pl%ldiscard(1:npl) = .false. + pl%lcollision(1:npl) = .false. + pl%lmask(1:npl) = .true. select type(param) class is (symba_parameters)