Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
daminton committed Dec 22, 2022
1 parent cb8cf38 commit 989b60c
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 33 deletions.
6 changes: 5 additions & 1 deletion src/collision/collision_generate.f90
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,17 @@ module subroutine collision_generate_bounce(self, nbody_system, param, t)
class(base_parameters), intent(inout) :: param !! Current run configuration parameters
real(DP), intent(in) :: t !! The time of the collision
! Internals
integer(I4B) :: nfrag
integer(I4B) :: i,nfrag

select type(nbody_system)
class is (swiftest_nbody_system)
associate(impactors => nbody_system%collider%impactors, fragments => nbody_system%collider%fragments)
select case (impactors%regime)
case (COLLRESOLVE_REGIME_DISRUPTION, COLLRESOLVE_REGIME_SUPERCATASTROPHIC)
nfrag = size(impactors%id(:))
call self%setup_fragments(nfrag)


case (COLLRESOLVE_REGIME_HIT_AND_RUN)
call collision_generate_hitandrun(self, nbody_system, param, t)
case (COLLRESOLVE_REGIME_MERGE, COLLRESOLVE_REGIME_GRAZE_AND_MERGE)
Expand All @@ -189,6 +192,7 @@ module subroutine collision_generate_bounce(self, nbody_system, param, t)
return
end subroutine collision_generate_bounce


module subroutine collision_generate_simple(self, nbody_system, param, t)
implicit none
class(collision_simple), intent(inout) :: self !! Simple fragment system object
Expand Down
51 changes: 25 additions & 26 deletions src/collision/collision_io.f90
Original file line number Diff line number Diff line change
Expand Up @@ -45,40 +45,39 @@ module subroutine collision_io_collider_message(pl, collidx, collider_message)
end subroutine collision_io_collider_message


module subroutine collision_io_log_regime(self)
module subroutine collision_io_log_regime(impactors)
!! author: David A. Minton
!!
!! Writes a log of the results of the collisional regime determination
implicit none
! Arguments
class(collision_merge), intent(inout) :: self !! Collision system object
class(collision_impactors), intent(inout) :: impactors !! Collision system object
! Internals
character(STRMAX) :: errmsg

associate(fragments => self%fragments, impactors => self%impactors)
open(unit=LUN, file=COLLISION_LOG_OUT, status = 'OLD', position = 'APPEND', form = 'FORMATTED', err = 667, iomsg = errmsg)
write(LUN, *, err = 667, iomsg = errmsg)
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) " Collisional regime determination results"
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) "True number of impactors : ",impactors%ncoll
write(LUN, *) "Index list of true impactors : ",impactors%id(1:impactors%ncoll)
select case(impactors%regime)
case(COLLRESOLVE_REGIME_MERGE)
write(LUN, *) "Regime: Merge"
case(COLLRESOLVE_REGIME_DISRUPTION)
write(LUN, *) "Regime: Disruption"
case(COLLRESOLVE_REGIME_SUPERCATASTROPHIC)
write(LUN, *) "Regime: Supercatastrophic disruption"
case(COLLRESOLVE_REGIME_GRAZE_AND_MERGE)
write(LUN, *) "Regime: Graze and merge"
case(COLLRESOLVE_REGIME_HIT_AND_RUN)
write(LUN, *) "Regime: Hit and run"
end select
write(LUN, *) "Energy loss : ", impactors%Qloss
write(LUN, *) "--------------------------------------------------------------------"
close(LUN)
end associate
open(unit=LUN, file=COLLISION_LOG_OUT, status = 'OLD', position = 'APPEND', form = 'FORMATTED', err = 667, iomsg = errmsg)
write(LUN, *, err = 667, iomsg = errmsg)
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) " Collisional regime determination results"
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) "True number of impactors : ",impactors%ncoll
write(LUN, *) "Index list of true impactors : ",impactors%id(1:impactors%ncoll)
select case(impactors%regime)
case(COLLRESOLVE_REGIME_MERGE)
write(LUN, *) "Regime: Merge"
case(COLLRESOLVE_REGIME_DISRUPTION)
write(LUN, *) "Regime: Disruption"
case(COLLRESOLVE_REGIME_SUPERCATASTROPHIC)
write(LUN, *) "Regime: Supercatastrophic disruption"
case(COLLRESOLVE_REGIME_GRAZE_AND_MERGE)
write(LUN, *) "Regime: Graze and merge"
case(COLLRESOLVE_REGIME_HIT_AND_RUN)
write(LUN, *) "Regime: Hit and run"
end select
write(LUN, *) "Energy loss : ", impactors%Qloss
write(LUN, *) "--------------------------------------------------------------------"
close(LUN)

return
667 continue
write(*,*) "Error writing collision regime information to log file: " // trim(adjustl(errmsg))
Expand Down
4 changes: 2 additions & 2 deletions src/collision/collision_module.f90
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,9 @@ module subroutine collision_io_collider_message(pl, collidx, collider_message)
character(*), intent(inout) :: collider_message !! The message to print to the screen.
end subroutine collision_io_collider_message

module subroutine collision_io_log_regime(self)
module subroutine collision_io_log_regime(impactors)
implicit none
class(collision_merge), intent(inout) :: self !! Collision system object
class(collision_impactors), intent(inout) :: impactors !! Collision system object
end subroutine collision_io_log_regime

module subroutine collision_io_netcdf_dump(self, param)
Expand Down
9 changes: 5 additions & 4 deletions src/collision/collision_regime.f90
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,20 @@ module subroutine collision_regime_impactors(self, nbody_system, param)
select type(param)
class is (swiftest_parameters)

mtot = sum(impactors%mass(:))
impactors%rbcom(:) = (impactors%mass(1) * impactors%rb(:,1) + impactors%mass(2) * impactors%rb(:,2)) / mtot
impactors%vbcom(:) = (impactors%mass(1) * impactors%vb(:,1) + impactors%mass(2) * impactors%vb(:,2)) / mtot

select case(param%collision_model)
case("MERGE")
impactors%regime = COLLRESOLVE_REGIME_MERGE
mtot = sum(impactors%mass(:))
if (allocated(impactors%mass_dist)) deallocate(impactors%mass_dist)
allocate(impactors%mass_dist(1))
impactors%mass_dist(1) = mtot
impactors%rbcom(:) = (impactors%mass(1) * impactors%rb(:,1) + impactors%mass(2) * impactors%rb(:,2)) / mtot
impactors%vbcom(:) = (impactors%mass(1) * impactors%vb(:,1) + impactors%mass(2) * impactors%vb(:,2)) / mtot
case default
call collision_regime_LS12(impactors, nbody_system, param)
call collision_io_log_regime(self)
end select
!call fraggle_io_log_regime(impactors, fragments)
end select
end select
end associate
Expand Down

0 comments on commit 989b60c

Please sign in to comment.