diff options
author | Aaron LI <aly@aaronly.me> | 2018-10-30 21:30:30 +0800 |
---|---|---|
committer | Aaron LI <aly@aaronly.me> | 2018-10-30 22:04:27 +0800 |
commit | 00fccbb7e2491741f82e6603a37fe1a12af74c95 (patch) | |
tree | d40f6544629739fd31c881f7ea0f358cfab48750 /fg21sim | |
parent | 802985804b795d97aacb7b701fd0aba02cff31f8 (diff) | |
download | fg21sim-00fccbb7e2491741f82e6603a37fe1a12af74c95.tar.bz2 |
clusters/halo: Update calculations of injection and halo radius
Diffstat (limited to 'fg21sim')
-rw-r--r-- | fg21sim/configs/config.spec | 9 | ||||
-rw-r--r-- | fg21sim/extragalactic/clusters/halo.py | 14 | ||||
-rw-r--r-- | fg21sim/extragalactic/clusters/helper.py | 35 |
3 files changed, 17 insertions, 41 deletions
diff --git a/fg21sim/configs/config.spec b/fg21sim/configs/config.spec index 5f9a512..0d7e7aa 100644 --- a/fg21sim/configs/config.spec +++ b/fg21sim/configs/config.spec @@ -386,11 +386,10 @@ stream = option("stderr", "stdout", "", default="stderr") # timescale, therefore more efficient acceleration. f_acc = float(default=1.0, min=0.1, max=10) - # The turbulence is generally injected at the cluster center during - # a merger. This option parameterize the turbulence injection scale - # to be a fraction of the virial radius of the cluster, which is also - # used to determine the radio halo size. - f_lturb = float(default=0.33, min=0.1, max=1.0) + # The factor that is multiplied to the stripping radius to approximate + # the turbulence injection radius, from which the radio halo size is + # estimated. + f_lturb = float(default=1.0, min=0.5, max=10) # An efficiency factor describing the effectiveness of plasma # instabilities (e.g., due to spatial or temporal intermittency). diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index eac9501..baa1a36 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -234,7 +234,7 @@ class RadioHalo: The estimated radius for the simulated radio halo. Unit: [kpc] """ - return helper.radius_halo(self.M_obs, self.z_obs, configs=self.configs) + return self.injection_radius @property def angular_radius(self): @@ -363,6 +363,18 @@ class RadioHalo: return tau @property + @lru_cache + def injection_radius(self): + """ + The radius of the turbulence injection regions, and then the + injection scale: L_turb ~= 2*R_turb. + Unit: [kpc] + """ + rs = helper.radius_stripping(self.M_main, self.M_sub, self.z_merger, + configs=self.configs) # [kpc] + return self.f_lturb * rs + + @property @lru_cache() def injection_rate(self): """ diff --git a/fg21sim/extragalactic/clusters/helper.py b/fg21sim/extragalactic/clusters/helper.py index ecbb866..96800e4 100644 --- a/fg21sim/extragalactic/clusters/helper.py +++ b/fg21sim/extragalactic/clusters/helper.py @@ -129,41 +129,6 @@ def radius_virial(mass, z=0.0): return R_vir * AUC.cm2kpc # [kpc] -def radius_halo(mass, z=0.0, configs=CONFIGS): - """ - Estimate the radius of (giant) radio halo. - - NOTE - ---- - The halo radius is estimated to be the same as the turbulence - injection scale, i.e.: - R_halo ≅ L_turb ≅ R_vir / 3 - where R_vir the virial radius of the merged (observed) cluster. - - Reference: [vazza2011],Sec.(3.6) - - Parameters - ---------- - mass : float, `~numpy.ndarray` - Cluster virial mass. - Unit: [Msun] - z : float, `~numpy.ndarray`, optional - Redshift - Default: 0.0 (i.e., present day) - - Returns - ------- - R_halo : float, `~numpy.ndarray` - Radius of the (simulated/predicted) giant radio halo - Unit: [kpc] - """ - # Turbulence injection scale factor - key = "extragalactic/halos/f_lturb" - f_lturb = configs.getn(key) - R_halo = f_lturb * radius_virial(mass=mass, z=z) # [kpc] - return R_halo - - def radius_stripping(M_main, M_sub, z, configs=CONFIGS): """ Calculate the stripping radius of the in-falling sub-cluster, which |