From 3748c60b5d80db25f713d3906a2c0106368a09ac Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Fri, 5 Jan 2018 15:48:58 +0800 Subject: clusters/halo: update turbulence acceleration calc. with _merger_time() --- fg21sim/extragalactic/clusters/halo.py | 48 ++++++++++++++-------------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'fg21sim/extragalactic') diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index 1f9e6b2..f9e9eb0 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -193,9 +193,7 @@ class RadioHalo: """ return self.age_merger - @property - @lru_cache() - def time_turbulence(self): + def time_turbulence(self, t=None): """ The time duration the merger-induced turbulence persists, which is used to approximate the effective turbulence acceleration @@ -203,16 +201,20 @@ class RadioHalo: Unit: [Gyr] """ - return helper.time_turbulence(self.M_main, self.M_sub, - z=self.z_merger, configs=self.configs) + t_merger = self._merger_time(t) + mass_main = self.mass_main(t=t_merger) + mass_sub = self.mass_sub(t=t_merger) + z_merger = COSMO.redshift(t_merger) + return helper.time_turbulence(mass_main, mass_sub, z=z_merger, + configs=self.configs) - @property - def mach_turbulence(self): + def mach_turbulence(self, t=None): """ The turbulence Mach number determined from its velocity dispersion. """ - cs = helper.speed_sound(self.kT_main()) # [km/s] - v_turb = self._velocity_turb() # [km/s] + t_merger = self._merger_time(t) + cs = helper.speed_sound(self.kT(t_merger)) # [km/s] + v_turb = self._velocity_turb(t_merger) # [km/s] return v_turb / cs @property @@ -272,7 +274,7 @@ class RadioHalo: return helper.kT_cluster(self.M_obs, z=self.z_obs, configs=self.configs) - def kT_main(self, t=None): + def kT(self, t=None): """ The ICM mean temperature of the main cluster at cosmic time ``t`` (default: ``self.age_begin``). @@ -285,7 +287,7 @@ class RadioHalo: z = COSMO.redshift(t) return helper.kT_cluster(mass=mass, z=z, configs=self.configs) - def tau_acceleration(self, t=None): + def tau_acceleration(self, t): """ Calculate the electron acceleration timescale due to turbulent waves, which describes the turbulent acceleration efficiency. @@ -308,19 +310,11 @@ class RadioHalo: τ_acc = p^2 / (4*D_pp) = (η_e * c_s^3 * L) / (16π * ζ * ^2) - NOTE - ---- - Considering that the turbulence acceleration is a 2nd-order Fermi - process, it has only an effective acceleration time ~<1 Gyr. - Therefore, only during the period that strong turbulence persists - in the ICM that the turbulence could effectively accelerate the - relativistic electrons. - Parameters ---------- t : float, optional The cosmic time when to determine the acceleration timescale. - Default: ``self.age_obs`` + Unit: [Gyr] Returns ------- @@ -334,15 +328,13 @@ class RadioHalo: * Ref.[pinzke2017],Eq.(37) * Ref.[miniati2015],Eq.(29) """ - if t is None: - t = self.age_begin - if t > self.age_begin + self.time_turbulence: - return np.inf - - R_vir = helper.radius_virial(mass=self.M_main, z=self.z_merger) + t_merger = self._merger_time(t) + z_merger = COSMO.redshift(t_merger) + mass_main = self.mass_main(t_merger) + R_vir = helper.radius_virial(mass=mass_main, z=z_merger) L = self.f_lturb * R_vir # [kpc] - cs = helper.speed_sound(self.kT_main()) # [km/s] - v_turb = self._velocity_turb() # [km/s] + cs = helper.speed_sound(self.kT(t_merger)) # [km/s] + v_turb = self._velocity_turb(t_merger) # [km/s] tau = (self.x_cr * cs**3 * L / (16*np.pi * self.zeta_ins * v_turb**4)) # [s kpc/km] tau *= AUC.s2Gyr * AUC.kpc2km # [Gyr] -- cgit v1.2.2