=============== Version History =============== .. automodule:: petbox.dca :noindex: 2.0.0 ----- * **Breaking:** Minimum dependency versions raised * Require ``numpy >= 2.1`` (was ``>= 1.21.1``) * Require ``scipy >= 1.13`` (was ``>= 1.7.1``) * Require ``Python >= 3.10`` (was ``>= 3.7``) * ``ParamDesc.naive_gen`` type changed from ``RandomState`` to ``Generator`` * Deprecation fixes * Replace ``np.bool_`` with ``bool`` in dtype specification * Migrate ``numpy.random.RandomState`` to ``numpy.random.Generator`` 1.3.0 ----- * Performance * Vectorize ``_integrate_with`` using ``cumulative_trapezoid`` on a log-spaced grid — eliminates per-interval Python loop (~3x faster, comparable accuracy) * Vectorize ``bourdet()`` using ``searchsorted`` — eliminates per-point Python helper calls * Bug Fix * Fix ``bourdet()`` producing ``NaN`` at right-edge points when smoothing window exceeds array boundary * Fix ``bourdet()`` incorrect backward-difference at right edge (``_get_R_der`` selected point ``i`` itself, causing division by zero) * Numerical stability * Replace ``np.log(1 + x)`` with ``np.log1p(x)`` in ``_qcheck`` and ``_Ncheck`` for small decline rates * Replace ``np.log(1 + D*b)`` with ``log1p(D*b)`` in ``secant_from_nominal`` * Use ``np.expm1`` for ``t^(1-m) - 1`` in Duong model for precision near ``t=1`` 1.2.0 ----- * Build system * Migrate from ``setup.py`` / ``setup.cfg`` to ``pyproject.toml`` * Replace ``flake8`` with ``ruff`` * Version now single-sourced in ``pyproject.toml``, resolved at runtime via ``importlib.metadata`` * Bug Fix * Fix overflow in ``MultisegmentHyperbolic._Ncheck`` when decline rate is near-zero (subnormal), causing ``cum(0)`` to return ``NaN`` * Other changes * Fix ``mypy`` strict-mode type errors in ``bourdet.py`` and ``base.py`` * Update CI and test scripts to use ``ruff`` 1.1.0 ----- * Bug Fix * Fix bug in sign in ``MultisegmentHyperbolic.secant_from_nominal`` * Other changes * Add `mpmath` to handle precision requires of THM transient functions (only required to use the functions) * Adjust default degree of THM transient function quadrature integration from 50 to 10 (`scipy` default is 5) * Update package versions for docs and builds * Address various floating point errors, suppress `numpy` warnings for those which are mostly unavoidable * Add test/doc_exapmles.py and update figures (not sure what happened to the old file) * Adjust range of values in tests to avoid numerical errors in `numpy` and `scipy` functions... these were near-epsilon impractical values anyway 1.0.8 ----- * New functions * Added ``WaterPhase.wgr`` method * Other changes * Adjust yield model rate function to return consistent units if primary phase is oil or gas * Update to `numpy v1.20` typing 1.0.7 ----- * Allow disabling of parameter checks by passing an interable of booleans, each indicating a check to each model parameter. * Explicitly handle floating point overflow errors rather than relying on `numpy`. 1.0.6 ----- * New functions * Added ``WaterPhase`` class * Added ``WaterPhase.wor`` method * Added ``PrimaryPhase.add_water`` method * Other changes * A ``yield`` model may inherit both ``SecondaryPhase`` and ``WaterPhase``, with the respective methods removed upon attachment to a ``PrimaryPhase``. 1.0.5 ----- * New functions * Bourdet algorithm * Other changes * Update docstrings * Add bourdet data derivatives to detailed use examples 1.0.4 ----- * Fix typos in docs 1.0.3 ----- * Add documentation * Genericize numerical integration * Various refactoring 0.0.1 - 1.0.2 ------------- * Internal releases