aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron LI <aly@aaronly.me>2017-12-31 16:34:55 +0800
committerAaron LI <aly@aaronly.me>2017-12-31 16:34:55 +0800
commit46c36b299dbe29d2872ae1ae6d98f1bde320bad0 (patch)
treecd2c58cb516f559421e7ba1b7c55516c17fafaa8
parentea793b05168a31460a36bb22cab98108e35c05d0 (diff)
downloadfg21sim-46c36b299dbe29d2872ae1ae6d98f1bde320bad0.tar.bz2
clusters/halo: calc turbulence velocity dispersion based on merger
Also update the description of option "extragalactic/halos/eta_turb" and change its default value to 0.1
-rw-r--r--fg21sim/configs/20-extragalactic.conf.spec12
-rw-r--r--fg21sim/extragalactic/clusters/halo.py38
2 files changed, 41 insertions, 9 deletions
diff --git a/fg21sim/configs/20-extragalactic.conf.spec b/fg21sim/configs/20-extragalactic.conf.spec
index 44fb1ca..52f66da 100644
--- a/fg21sim/configs/20-extragalactic.conf.spec
+++ b/fg21sim/configs/20-extragalactic.conf.spec
@@ -167,17 +167,11 @@
# used to determine the radio halo size.
f_lturb = float(default=0.33, min=0.1, max=1.0)
- # The fraction of cluster thermal energy originating from turbulent
- # dissipation, which describes the turbulence intensity in the ICM,
- # and determines its Mach number.
- # NOTE: Currently, this parameter only determines the turbulence Mach
- # number, which affects only the turbulent acceleration efficiency,
- # which is also controlled by the above ``f_acc`` parameter.
- # So we can just *fix* this parameter to its default value.
- eta_turb = float(default=0.2, min=0.1, max=1.0)
-
# Ratio of the total energy injected into cosmic-ray electrons during
# the cluster life to its total thermal energy.
+ # The fraction of merger energy transferred into the turbulence.
+ eta_turb = float(default=0.1, min=0.1, max=0.5)
+
eta_e = float(default=0.001, min=0.001, max=0.1)
# Electron injection, which is assumed to have a constant injection
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py
index 03e891c..47f8078 100644
--- a/fg21sim/extragalactic/clusters/halo.py
+++ b/fg21sim/extragalactic/clusters/halo.py
@@ -813,6 +813,44 @@ class RadioHalo:
mass = rate * (t - t_merger) + self.M_main
return mass
+ def _velocity_turb(self, t):
+ """
+ Calculate the turbulence velocity dispersion (i.e., turbulence
+ Mach number).
+
+ NOTE
+ ----
+ During the merger, a fraction of the merger kinetic energy is
+ transferred into the turbulence within the assumed regions
+ (radius <= L, the injection scale). Then estimate the turbulence
+ velocity dispersion from its energy.
+
+ Merger energy:
+ E_m ≅ 0.5 * f_gas * M_sub * v^2
+ ≅ 0.5 * f_gas * M_sub * (G*M_main / R_vir)
+ Turbulence energy:
+ E_turb ≅ η_turb * E_m
+ ≅ 0.5 * M_turb * <v_turb^2>
+ = 0.5 * f_gas * M_main(<L) * <v_turb^2>
+ = 0.5 * f_gas * f_mass(L/R_vir) * M_main * <v_turb^2>
+ => Velocity dispersion:
+ <v_turb^2> ≅ (η_turb/f_mass) * (G*M_sub/R_vir)
+
+ Returns
+ -------
+ v_turb : float
+ The turbulence velocity dispersion
+ Unit: [km/s]
+ """
+ mass = self.M_main + self.M_sub
+ z = COSMO.redshift(t)
+ R_vir = helper.radius_virial(mass=mass, z=z) * AUC.kpc2cm # [cm]
+ v2 = np.sqrt(AC.G * self.M_sub*AUC.Msun2g / R_vir) # [cm/s]
+ v2 *= AUC.cm2km # [km/s]
+ fmass = helper.fmass_nfw(self.f_lturb)
+ v_turb = v2 * np.sqrt(self.eta_turb / fmass)
+ return v_turb
+
def _magnetic_field(self, t):
"""
Calculate the mean magnetic field strength of the main cluster mass