diff options
author | Aaron LI <aly@aaronly.me> | 2019-02-21 23:05:56 +0800 |
---|---|---|
committer | Aaron LI <aly@aaronly.me> | 2019-02-22 00:23:58 +0800 |
commit | 8ff2d1feb15731a53d2f3ea0d7b4638962ad2771 (patch) | |
tree | 90d6a5691bf64414c0d3b36b8b161aed25d10dee | |
parent | 0dc424fb3f2ae117dd66c315ada85066cb959c89 (diff) | |
download | fg21sim-8ff2d1feb15731a53d2f3ea0d7b4638962ad2771.tar.bz2 |
clusters/halo: Support merger-disabled calculation
Change the 'is_end' parameter in tau_acceleration() method to
'has_merger', which describes whether or not the merger-induced
turbulence is enabled.
Update the fp_diffusion() method to properly calculate the acceleration
timescale (tau) in all supported situations (e.g., with merger disabled
to derive the fiducial results).
-rw-r--r-- | fg21sim/extragalactic/clusters/halo.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index db5980d..fbf1cb2 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -384,7 +384,7 @@ class RadioHalo1M: return np.sqrt(v2_turb) @lru_cache() - def tau_acceleration(self, t, is_end=False): + def tau_acceleration(self, t, has_merger=True): """ Calculate the electron acceleration timescale due to turbulent waves, which describes the turbulent acceleration efficiency. @@ -425,11 +425,12 @@ class RadioHalo1M: Parameters ---------- t : float - The beginning time or ending time (if ``is_end=True``) of the merger. + The beginning or ending time of the merger. Unit: [Gyr] - is_end : bool, optional - Whether the given time ``t`` is the ending time of the merger. - Default: False + has_merger : bool, optional + If ``False``, calculate the velocity dispersion of the base + turbulence, i.e., without a merger. + Default: True Returns ------- @@ -437,12 +438,12 @@ class RadioHalo1M: The acceleration timescale of the merger. Unit: [Gyr] """ - self._validate_time(t, include_end=is_end) + self._validate_time(t) - if is_end: - v_t = self.velocity_turb_base(t) # [km/s] - else: + if has_merger: v_t = self.velocity_turb(t) # [km/s] + else: + v_t = self.velocity_turb_base(t) # [km/s] if np.isclose(v_t, 0): return np.inf @@ -674,19 +675,22 @@ class RadioHalo1M: Diffusion coefficients Unit: [Gyr^-1] """ - tau_acc = tau_max = 10.0 # [Gyr] + tau_max = 10.0 # [Gyr] + if self._is_turb_active(t): tt = self._merger_time(t) - is_end = False + has_merger = True else: tt = self._merger_end_time(t) - is_end = True + has_merger = False + if self._merger_disabled: + has_merger = False - tau_acc = self.tau_acceleration(tt, is_end) - if tau_acc > tau_max: - tau_acc = tau_max + tau = self.tau_acceleration(tt, has_merger=has_merger) + if tau > tau_max: + tau = tau_max - return np.square(gamma) / (4 * tau_acc) # [Gyr^-1] + return np.square(gamma) / (4 * tau) # [Gyr^-1] def fp_advection(self, gamma, t): """ |