diff options
author | Aaron LI <aly@aaronly.me> | 2017-10-20 10:22:24 +0800 |
---|---|---|
committer | Aaron LI <aly@aaronly.me> | 2017-10-20 10:22:24 +0800 |
commit | fd20ab688759f3dfc3f7796ac0b1118e21ee5b22 (patch) | |
tree | a75ffd2b7ae280afe65b71e998b0da22c7e7fde1 /fg21sim/extragalactic/clusters | |
parent | 283ca6c00e5ff6c74b529d0a460115516c16eec7 (diff) | |
download | fg21sim-fd20ab688759f3dfc3f7796ac0b1118e21ee5b22.tar.bz2 |
clusters/halo: Determine magnetic field by fraction of its energy density
* Rewrite "magnetic_field()" function to calculate the mean magnetic field
strength within ICM according its energy density fraction w.r.t. the ICM
thermal energy density.
* Remove config options "b_mean" and "b_index", which are replaced with the
option "eta_b", the assumed magnetic energy density fraction w.r.t. the
ICM thermal energy density.
Diffstat (limited to 'fg21sim/extragalactic/clusters')
-rw-r--r-- | fg21sim/extragalactic/clusters/halo.py | 4 | ||||
-rw-r--r-- | fg21sim/extragalactic/clusters/helper.py | 54 |
2 files changed, 26 insertions, 32 deletions
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index e34d91c..e6fe152 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -229,7 +229,7 @@ class RadioHalo: Unit: [uG] """ - return helper.magnetic_field(self.M_obs) + return helper.magnetic_field(mass=self.M_obs, z=self.z_obs) @property def kT_merger(self): @@ -716,6 +716,6 @@ class RadioHalo: """ z = COSMO.redshift(t) mass = self._mass(t) # [Msun] - B = helper.magnetic_field(mass) # [uG] + B = helper.magnetic_field(mass=mass, z=z) # [uG] loss = -4.32e-4 * gamma**2 * ((B/3.25)**2 + (1+z)**4) return loss diff --git a/fg21sim/extragalactic/clusters/helper.py b/fg21sim/extragalactic/clusters/helper.py index 6fd99fb..1c6e48e 100644 --- a/fg21sim/extragalactic/clusters/helper.py +++ b/fg21sim/extragalactic/clusters/helper.py @@ -210,6 +210,30 @@ def density_energy_thermal(mass, z=0.0): return e_th +def magnetic_field(mass, z=0.0): + """ + Calculate the mean magnetic field strength within the ICM, which is + also assumed to be uniform, according to the assumed fraction of the + the magnetic field energy density w.r.t. the ICM thermal energy density. + + NOTE + ---- + Magnetic field energy density: u_B = B^2 / (8π), + where "B" in units of [G], then "u_B" has unit of [erg/cm^3]. + + Returns + ------- + B : float + The mean magnetic field strength within the ICM. + Unit: [uG] + """ + key = "extragalactic/clusters/eta_b" + eta_b = CONFIGS.getn(key) + e_th = density_energy_thermal(mass=mass, z=z) + B = np.sqrt(8*np.pi * eta_b * e_th) * 1e6 # [G] -> [uG] + return B + + def density_energy_electron(spectrum, gamma): """ Calculate the energy density of relativistic electrons. @@ -295,36 +319,6 @@ def time_crossing(M_main, M_sub, z=0.0): return time -def magnetic_field(mass): - """ - Calculate the mean magnetic field strength according to the - scaling relation between magnetic field and cluster mass. - - Parameters - ---------- - mass : float - Cluster mass - Unit: [Msun] - - Returns - ------- - B : float - The mean magnetic field strength - Unit: [uG] - - References - ---------- - Ref.[cassano2012],Eq.(1) - """ - comp = "extragalactic/clusters" - b_mean = CONFIGS.getn(comp+"/b_mean") - b_index = CONFIGS.getn(comp+"/b_index") - - M_mean = 1.6e15 # [Msun] - B = b_mean * (mass/M_mean) ** b_index - return B - - def halo_rprofile(re, num_re=5, I0=1.0): """ Generate the radial profile of a halo. |