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

Commit

Permalink
More cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
daminton committed Dec 17, 2022
1 parent 265483b commit f903e34
Show file tree
Hide file tree
Showing 7 changed files with 254 additions and 247 deletions.
165 changes: 91 additions & 74 deletions src/fraggle/fraggle_generate.f90

Large diffs are not rendered by default.

52 changes: 26 additions & 26 deletions src/fraggle/fraggle_io.f90
Original file line number Diff line number Diff line change
Expand Up @@ -12,40 +12,40 @@

contains

module subroutine fraggle_io_log_regime(impactors, fragments)
module subroutine fraggle_io_log_regime(collision_system)
!! author: David A. Minton
!!
!! Writes a log of the results of the collisional regime determination
implicit none
! Arguments
class(collision_impactors), intent(in) :: impactors !! Fraggle collider system object
class(fraggle_fragments), intent(in) :: fragments !! Fraggle fragment object
class(fraggle_system), intent(inout) :: collision_system !! Fraggle collision system object
! Internals
character(STRMAX) :: errmsg

open(unit=LUN, file=FRAGGLE_LOG_OUT, status = 'OLD', position = 'APPEND', form = 'FORMATTED', err = 667, iomsg = errmsg)
write(LUN, *, err = 667, iomsg = errmsg)
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) " Fraggle collisional regime determination results"
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) "True number of impactors : ",impactors%ncoll
write(LUN, *) "Index list of true impactors : ",impactors%idx(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)

associate(fragments => collision_system%fragments, impactors => collision_system%impactors)
open(unit=LUN, file=FRAGGLE_LOG_OUT, status = 'OLD', position = 'APPEND', form = 'FORMATTED', err = 667, iomsg = errmsg)
write(LUN, *, err = 667, iomsg = errmsg)
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) " Fraggle collisional regime determination results"
write(LUN, *) "--------------------------------------------------------------------"
write(LUN, *) "True number of impactors : ",impactors%ncoll
write(LUN, *) "Index list of true impactors : ",impactors%idx(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
return
667 continue
write(*,*) "Error writing Fraggle regime information to log file: " // trim(adjustl(errmsg))
Expand Down
14 changes: 7 additions & 7 deletions src/fraggle/fraggle_regime.f90
Original file line number Diff line number Diff line change
Expand Up @@ -62,22 +62,22 @@ module subroutine encounter_regime_impactors(self, fragments, system, param)
x1_si(:), x2_si(:), v1_si(:), v2_si(:), density_si(jtarg), density_si(jproj), &
min_mfrag_si, impactors%regime, mlr, mslr, impactors%Qloss)

fragments%mass_dist(1) = min(max(mlr, 0.0_DP), mtot)
fragments%mass_dist(2) = min(max(mslr, 0.0_DP), mtot)
fragments%mass_dist(3) = min(max(mtot - mlr - mslr, 0.0_DP), mtot)
impactors%mass_dist(1) = min(max(mlr, 0.0_DP), mtot)
impactors%mass_dist(2) = min(max(mslr, 0.0_DP), mtot)
impactors%mass_dist(3) = min(max(mtot - mlr - mslr, 0.0_DP), mtot)

! Find the center of mass of the collisional system
fragments%mtot = sum(impactors%mass(:))
fragments%rbcom(:) = (impactors%mass(1) * impactors%rb(:,1) + impactors%mass(2) * impactors%rb(:,2)) / fragments%mtot
fragments%vbcom(:) = (impactors%mass(1) * impactors%vb(:,1) + impactors%mass(2) * impactors%vb(:,2)) / fragments%mtot
impactors%rbcom(:) = (impactors%mass(1) * impactors%rb(:,1) + impactors%mass(2) * impactors%rb(:,2)) / fragments%mtot
impactors%vbcom(:) = (impactors%mass(1) * impactors%vb(:,1) + impactors%mass(2) * impactors%vb(:,2)) / fragments%mtot

! Find the point of impact between the two bodies
runit(:) = impactors%rb(:,2) - impactors%rb(:,1)
runit(:) = runit(:) / (.mag. runit(:))
fragments%rbimp(:) = impactors%rb(:,1) + impactors%radius(1) * runit(:)
impactors%rbimp(:) = impactors%rb(:,1) + impactors%radius(1) * runit(:)

! Convert quantities back to the system units and save them into the fragment system
fragments%mass_dist(:) = (fragments%mass_dist(:) / param%MU2KG)
impactors%mass_dist(:) = (impactors%mass_dist(:) / param%MU2KG)
impactors%Qloss = impactors%Qloss * (param%TU2S / param%DU2M)**2 / param%MU2KG

call fraggle_io_log_regime(impactors, fragments)
Expand Down
Loading

0 comments on commit f903e34

Please sign in to comment.