From d374379f8fa99f0ce004616c24012a23c6f16e68 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 20 Feb 2023 10:56:54 -0500 Subject: [PATCH] Fixed bug that was causing the number of fragments to be computed incorrectly when it grew to be very large --- src/fraggle/fraggle_util.f90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fraggle/fraggle_util.f90 b/src/fraggle/fraggle_util.f90 index 1f1e51b72..a0dc08af5 100644 --- a/src/fraggle/fraggle_util.f90 +++ b/src/fraggle/fraggle_util.f90 @@ -134,14 +134,14 @@ module subroutine fraggle_util_set_mass_dist(self, param) beta = 2.85_DP ! From Leinhardt & Stewart (2012) Mslr = impactors%mass_dist(iMslr) - mfrag = Mslr - do while (mremaining > 0.0_DP) - mfrag = (nfrag)**(-3._DP / BETA) * impactors%mass_dist(iMslr) + nfragmax = ceiling(NFRAGMAX_UNSCALED / param%nfrag_reduction) + do i = 1, nfragmax + mfrag = (nfrag)**(-3._DP / BETA) * Mslr mfrag = max(mfrag, min_mfrag) mremaining = mremaining - mfrag nfrag = nfrag + 1 + if (mremaining < 0.0_DP) exit end do - nfragmax = ceiling(NFRAGMAX_UNSCALED / param%nfrag_reduction) nfrag = max(min(ceiling(nfrag / param%nfrag_reduction), nfragmax), NFRAGMIN) call self%setup_fragments(nfrag)