damar-wicaksono / uqtestfuns

A Python3 library of test functions from the uncertainty quantification community with a common interface for validation and benchmarking purposes.
https://uqtestfuns.readthedocs.io/en/latest/
MIT License
8 stars 0 forks source link

Add the Exponential Decay Diff. Equation with Piecewise Constant Coefficient Test Function #323

Open damar-wicaksono opened 8 months ago

damar-wicaksono commented 8 months ago

The test function taken from Feinberg and Langtangen (2015)[^ChaosPy] is the starting example of the package ChaosPy.

The test function is a solution to the following differential equation:

$$ \frac{du(x)}{dx} = - c(x) u(x), u(0) = u_0 $$

the coefficient $c$ is piecewise constant:

$$ c(x) = \begin{cases} c_0, & x < 0.5 \ c_1 , & 0.5 \leq x < 0.7 \ c_2, & x \geq 0.7
\end{cases} $$

Furthermore, the coefficient is uncertain in each of the domain:

$$ \begin{aligned} c_0 & \sim \mathcal{N}(0.5, 0.15) \ c_1 & \sim \mathcal{U}(0.5, 2.5) \ c_2 & \sim \mathcal{U}(0.03, 0.07). \end{aligned} $$

The initial condition of the differential equation is $u_0 = 0.3$.

The model is a prototypical model for scaled exponential decay processes with piecewise constant coefficient. For example, $u$ may be taken as a function of the porosity at a given depth in geological layers with $c_i$ as a scaled compaction constant in a given geological layer. In the test function provided, only three layers are considered and solved by 2nd-order Runge-Kutta method.

[^ChaosPy]: J. Feinberg and H. P. Langtangen, “Chaospy: An open source tool for designing methods of uncertainty quantification,” Journal of Computational Science, vol. 11, pp. 46–57, Nov. 2015, doi: 10.1016/j.jocs.2015.08.008.