From 5af4b8dd12893f6f546ec3d2bd24730c28674c43 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Sun, 12 Feb 2023 14:55:18 -0500 Subject: [PATCH] More attempts to improve convergence speed when nfrag gets big --- src/fraggle/fraggle_generate.f90 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/fraggle/fraggle_generate.f90 b/src/fraggle/fraggle_generate.f90 index 150eb06c9..7c0b922f7 100644 --- a/src/fraggle/fraggle_generate.f90 +++ b/src/fraggle/fraggle_generate.f90 @@ -651,11 +651,12 @@ module subroutine fraggle_generate_vel_vec(collider, nbody_system, param, lfailu ! Put any remaining residual into velocity shear angmtm: do j = 1, MAXANGMTM + if (j == MAXANGMTM) exit inner call collider_local%get_energy_and_momentum(nbody_system, param, phase="after") L_residual(:) = (collider_local%L_total(:,2) - collider_local%L_total(:,1)) dL_metric(:) = abs(L_residual(:)) / .mag.(collider_local%L_total(:,1)) / MOMENTUM_SUCCESS_METRIC - if (all(dL_metric(:) <= 1.0_DP)) exit angmtm + if (all(dL_metric(:) <= 1.0_DP)) exit angmtm do i = istart, fragments%nbody dL(:) = -L_residual(:) * fragments%mass(i) / sum(fragments%mass(istart:fragments%nbody)) @@ -696,7 +697,7 @@ module subroutine fraggle_generate_vel_vec(collider, nbody_system, param, lfailu ! Remove a constant amount of velocity from the bodies so we don't shift the center of mass and screw up the momentum ke_avail = 0.0_DP do i = fragments%nbody, 1, -1 - ke_avail = ke_avail + 0.5_DP * fragments%mass(i) * max(fragments%vmag(i) - vesc,0.0_DP)**2 + ke_avail = ke_avail + 0.5_DP * fragments%mass(i) * max(fragments%vmag(i) - vesc / try,0.0_DP)**2 end do ke_remove = min(E_residual, ke_avail)