diff options
author | Aaron LI <aly@aaronly.me> | 2017-10-06 13:25:00 +0800 |
---|---|---|
committer | Aaron LI <aly@aaronly.me> | 2017-10-06 13:25:00 +0800 |
commit | bb36d88c19cff5004ca605aa58f5965fb5418030 (patch) | |
tree | b51603ae44fe47434ead523d533d433270bd2ead | |
parent | e436a5ac9c7ea6f3fd01ac62c14662cfc6a5a9cf (diff) | |
download | fg21sim-bb36d88c19cff5004ca605aa58f5965fb5418030.tar.bz2 |
clusters/solver.py: Adjust parameter tc,uc orders
-rw-r--r-- | fg21sim/extragalactic/clusters/solver.py | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/fg21sim/extragalactic/clusters/solver.py b/fg21sim/extragalactic/clusters/solver.py index 0fb220d..9117bfb 100644 --- a/fg21sim/extragalactic/clusters/solver.py +++ b/fg21sim/extragalactic/clusters/solver.py @@ -271,7 +271,7 @@ class FokkerPlanckSolver: Wminus = W * np.exp(-ww/2) return Wminus - def tridiagonal_coefs(self, tc, uc, tstep=None): + def tridiagonal_coefs(self, uc, tc, tstep): """ Calculate the coefficients for the tridiagonal system of linear equations corresponding to the original Fokker-Planck equation. @@ -287,10 +287,7 @@ class FokkerPlanckSolver: References: Ref.[park1996],Eqs.(16,18,34) """ - if tstep is None: - dt = self.tstep - else: - dt = tstep + dt = tstep x = self.x dx = self.dx dx_phalf = self.dx_phalf @@ -367,13 +364,13 @@ class FokkerPlanckSolver: """ pass - def solve_step(self, tc, uc, tstep=None): + def solve_step(self, uc, tc, tstep=None): """ Solve the Fokker-Planck equation by a single step. """ if tstep is None: tstep = self.tstep - a, b, c, r = self.tridiagonal_coefs(tc=tc, uc=uc, tstep=tstep) + a, b, c, r = self.tridiagonal_coefs(uc=uc, tc=tc, tstep=tstep) TDM_a = -a[1:] # Also drop the first element TDM_b = b TDM_c = -c[:-1] # Also drop the last element @@ -381,7 +378,7 @@ class FokkerPlanckSolver: t2 = tc + tstep u2 = TDMAsolver(TDM_a, TDM_b, TDM_c, TDM_rhs) u2 = self.fix_boundary(u2) - return (t2, u2) + return (u2, t2) def solve(self, u0, tstart, tstop): """ @@ -399,9 +396,9 @@ class FokkerPlanckSolver: while tc+tstep < tstop: i += 1 logger.debug("[%d/%d] t=%.3f ..." % (i, nstep, tc)) - tc, uc = self.solve_step(tc, uc, tstep=tstep) + uc, tc = self.solve_step(uc=uc, tc=tc, tstep=tstep) # Last step tstep = tstop - tc logger.debug("Last step: t=%.3f (tstep=%.3f) ..." % (tc, tstep)) - tc, uc = self.solve_step(tc, uc, tstep=tstep) + uc, __ = self.solve_step(uc=uc, tc=tc, tstep=tstep) return uc |