diff options
Diffstat (limited to 'fg21sim/extragalactic/clusters/solver.py')
| -rw-r--r-- | fg21sim/extragalactic/clusters/solver.py | 15 | 
1 files changed, 11 insertions, 4 deletions
| diff --git a/fg21sim/extragalactic/clusters/solver.py b/fg21sim/extragalactic/clusters/solver.py index dea7f3f..d7660b0 100644 --- a/fg21sim/extragalactic/clusters/solver.py +++ b/fg21sim/extragalactic/clusters/solver.py @@ -104,6 +104,13 @@ class FokkerPlanckSolver:      NOTE      ---- +    All above functions should accept two parameters: ``(x, t)``, +    where ``x`` is an 1D float `~numpy.ndarray` representing the adopted +    logarithmic grid points along the spatial/energy axis, ``t`` is the +    time of each solving step. + +    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 @@ -281,9 +288,9 @@ class FokkerPlanckSolver:          dx_phalf = self.dx_phalf          dx_mhalf = self.dx_mhalf          dt = self.tstep -        B = np.array([self.f_advection(x_, tc) for x_ in x]) -        C = np.array([self.f_diffusion(x_, tc) for x_ in x]) -        Q = np.array([self.f_injection(x_, tc) for x_ in x]) +        B = self.f_advection(x, tc) +        C = self.f_diffusion(x, tc) +        Q = self.f_injection(x, tc)          #          B_phalf = self.X_phalf(B)          B_mhalf = self.X_mhalf(B) @@ -307,7 +314,7 @@ class FokkerPlanckSolver:          b[-1] = 1 + (dt/dx[-1]) * (C_mhalf[-1]/dx_mhalf[-1])*Wplus_mhalf[-1]          # Escape from the system          if self.f_escape is not None: -            T = np.array([self.f_escape(x_, tc) for x_ in x]) +            T = self.f_escape(x, tc)              b += dt / T          # Right-hand side          r = dt * Q + uc | 
