fronts.inverse(o, samples)

Extract D from samples of a solution.

Given a function \(\theta\) of r and t, and scalars \(\theta_i\), \(\theta_b\) and \(o_b\), finds a positive function D of the values of \(\theta\) such that:

\[\begin{split}\begin{cases} \dfrac{\partial\theta}{\partial t} = \dfrac{\partial}{\partial r}\left(D(\theta)\dfrac{\partial\theta} {\partial r}\right) & r>r_b(t),t>0\\ \theta(r, 0) = \theta_i & r>0 \\ \theta(r_b(t), t) = \theta_b & t>0 \\ r_b(t) = o_b\sqrt t \end{cases}\end{split}\]

\(\theta\) is taken as its values on a discrete set of points expressed in terms of the Boltzmann variable. Problems in radial coordinates are not supported.

  • o (numpy.array_like, shape (n,)) – Points where \(\theta\) is known, expressed in terms of the Boltzmann variable. Must be strictly increasing.

  • samples (numpy.array_like, shape (n,)) – Values of \(\theta\) at o. Must be monotonic (either non-increasing or non-decreasing) and samples[-1] must be the initial value \(\theta_i\).



Function to evaluate \(D\) and its derivatives:

  • D(theta) evaluates and returns \(D\) at theta

  • D(theta, 1) returns both the value of \(D\) and its first derivative at theta

  • D(theta, 2) returns the value of \(D\), its first derivative, and its second derivative at theta

In all cases, the argument theta may be a single float or a NumPy array.

\(D\) is guaranteed to be continuous; however, its derivatives are not.

Return type


See also



An o function of \(\theta\) is constructed by interpolating the input data with a PCHIP monotonic cubic spline. The returned D uses the spline to evaluate the expressions that result from solving the Boltzmann-transformed equation for \(D\).