aboutsummaryrefslogtreecommitdiffstats
path: root/fg21sim/extragalactic
diff options
context:
space:
mode:
Diffstat (limited to 'fg21sim/extragalactic')
-rw-r--r--fg21sim/extragalactic/clusters/halo.py17
-rw-r--r--fg21sim/extragalactic/clusters/solver.py7
2 files changed, 22 insertions, 2 deletions
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py
index 8fdc78c..75789b6 100644
--- a/fg21sim/extragalactic/clusters/halo.py
+++ b/fg21sim/extragalactic/clusters/halo.py
@@ -243,6 +243,12 @@ class RadioHalo:
"""
Diffusion term/coefficient for the Fokker-Planck equation.
+ NOTE
+ ----
+ The diffusion coefficients cannot be zero or negative, which
+ may cause unstable or wrong results. So constrain ``tau_acc``
+ be a sufficient large but finite number.
+
Parameters
----------
gamma : float
@@ -322,7 +328,12 @@ class RadioHalo:
A reference value of the acceleration time due to TTD
(transit-time damping) resonance is ~0.1 Gyr (Ref.[brunetti2011],
Eq.(27) below); the formula derived by [cassano2005] (Eq.(40))
- has a dependence on eta_turb.
+ has a dependence on ``eta_turb``.
+
+ NOTE
+ ----
+ A zero diffusion coefficient may lead to unstable/wrong results,
+ so constrain this acceleration timescale be finite.
Returns
-------
@@ -332,9 +343,11 @@ class RadioHalo:
"""
# The reference/typical acceleration timescale
tau_ref = 0.1 # [Gyr]
+ # The maximum timescale to avoid unstable results
+ tau_max = 100.0 # [Gyr]
if t > self.age_merger + self.time_crossing:
- tau = np.inf
+ tau = tau_max
else:
tau = tau_ref / self.eta_turb
return tau
diff --git a/fg21sim/extragalactic/clusters/solver.py b/fg21sim/extragalactic/clusters/solver.py
index 6c0e653..dea7f3f 100644
--- a/fg21sim/extragalactic/clusters/solver.py
+++ b/fg21sim/extragalactic/clusters/solver.py
@@ -102,6 +102,13 @@ class FokkerPlanckSolver:
by extrapolating an power law to avoid unphysical accumulations.
This fix is ignored if this parameter is not specified.
+ NOTE
+ ----
+ The diffusion coefficients (i.e., calculated by ``f_diffusion()``)
+ should be *positive* (i.e., C(x) > 0), otherwise unstable or wrong
+ results may occur, due to the current numerical scheme/algorithm
+ adopted.
+
References
----------
[1] Park & Petrosian 1996, ApJS, 103, 255