pyudv.attenuation.inversion.explicit_inversion#

explicit_inversion(MSV, r, Xi, alpha_w, psi, C0, r0, delta_r=None, n_interp=1000, kind='cubic')[source]#

Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, \(\langle V^{2} \rangle\)) data:

\[C(r) = \frac{f}{B - 4\xi\displaystyle\int^{r}f},\]

where

\[f(r) = \langle V^{2} \rangle \left(\frac{r\psi_{(r)}}{K_{\rm s} K_{\rm t}}\right) e^{4r\alpha_{\rm w}} = Ce^{-4\alpha_{\rm s}}.\]
Parameters:
  • MSV (np.ndarray) – Input array containing \(\langle V^{2} \rangle\) data. If 1D, must be the same size as r. If 2D, its last dimension must match the size of r.

  • r (np.ndarray) – Radial distance to the probe array. Must be 1D, and match the last dimension of MSV.

  • Xi (float) – sediment asborption coefficient.

  • alpha_w (float) – water absorption coefficient.

  • psi (np.ndarray) – Near-field function. Must be 1D, and match the last dimension of MSV.

  • C0 (float | np.ndarray) – Reference concentration. Can be a float, or a 1D array matching the first dimension of MSV.

  • r0 (float) – Reference distance corresponding to C0.

  • delta_r (float, optional) – If not None, the reference concentration is then interpreted as an average between \(r-\delta r\) and \(r+\delta r\) (by default None).

  • n_interp (int, optional) – Number of point used in the interpolation of the input signal, by default 1000. It is advise to vary this parameter to find its lowest value above which the result becomes independant of it.

  • kind (str, optional) – Interpolation method used, by default “cubic”. Refer to the documentation of interp1d.

Return type:

tuple[ndarray, ndarray]

Returns:

  • C (np.ndarray) – Inferred concentration.

  • f (np.ndarray) – Integrated array during the procedure. Returned to check the order of magnitudes over wich the integration is performed, and check possible numerical precision errors.