All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.5 - 2024-10-22
- Switch to
uv
for project management.
1.2.4 - 2024-09-22
- Test with Python 3.13.
1.2.3 - 2024-06-24
- Drop
autograd
test dependency.
1.2.2 - 2024-04-04
- Fix sorptivity and ode functions not being properly exported.
1.2.1 - 2024-02-19
- Fix examples/HF135/inverse1.py failure in some environments.
1.2.0 - 2023-10-30
- Add
sorptivity()
function that can compute the sorptivity from samples.
1.1.2 - 2023-10-10
- Work around a SciPy bug that can cause
solve()
to fail with an unexpectedValueError
(scipy/scipy#17066).
1.1.1 - 2023-10-09
- Add
oi
property to theSolution
class.
1.1.0 - 2023-10-09
- Add new
sorptivity()
methods to theSolution
andBaseSolution
classes.
- Update packaging.
1.0.3 - 2023-08-11
- Publish Docker images.
1.0.2 - 2023-07-18
- Update packaging and dependencies.
1.0.1 - 2023-02-24
- Add new references to the documentation.
1.0.0 - 2023-02-23
- Add preferred citation (via CITATION.cff) to the repository.
0.9.12 - 2022-12-30
- Add
letxs()
andletd()
diffusivity models based on the LET correlations to thefronts.D
module.
0.9.11 - 2022-12-01
- Fix plotting errors in example cases with newer versions of Matplotlib.
- Drop support for Python versions older than 3.7 (including Python 2.7).
- Drop support for SciPy versions older than 1.4.0.
- Remove optional dependencies needed to publish the package, including the install option
[publish]
. The project now uses GitHub Actions to automatically build and upload releases to PyPI.
0.9.10 - 2020-10-30
- Fix possible NumPy warning (emitted before the expected
ValueError
is raised) whensolve()
is invoked with aD
that is not valid. - Revert "saturation" to "water content" in examples/HF135 case.
0.9.9 - 2020-10-21
- Add an automated test suite for validation of the software. Tests are executed automatically on Travis CI whenever changes are pushed to GitHub. Install with new option
[test]
(or[dev]
) and usepytest
to run the tests locally.
- Check that
D
is well behaved at the expected extrema of the solution when invokingsolve()
. Ifsolve()
determines that the problem cannot be solved, the function will now raise aValueError
immediately without performing any iterations. - Improve error message when attempting to use the 'explicit' method of
solve()
andsolve_flowrate()
with SciPy older than 1.4.0. - Improve reference documentation.
- Fix examples/1INFILTR case with NumPy versions lower than 1.16.
- Fix examples/HF135/inverse2.py failure in some environments.
- Fix problem statement in 'Usage' section of README file.
0.9.8 - 2020-06-11
- Add new solver
solve_flowrate()
to solve radial problems (cylindrical or polar) with a fixed-flowrate boundary condition. - Add new automatic mode to
solve()
. Removes the need for users to tune thed_dob_bracket
(formerlydS_dob_bracket
) parameter until the function succeeds. In practice,solve()
can now be expected to return the solution to a problem upon the first call with no parameter tuning required. The newsolve_flowrate()
also works in a similar manner. - Allow expressions of D to be passed directly to the solvers (e.g.:
solve(D="c**2", ...)
). Removes the need for users to provide the derivatives of custom functions. This functionality uses SymPy, which is now installed by default. - Add optional explicit integration method to
solve()
andsolve_flowrate()
. Using it requires SciPy 1.4.0 or later (Python 3 only). - Add Brooks and Corey moisture diffusivity model to the
fronts.D
module. - Add new properties
b
,d_dob
,i
andob
, and methodsd_drb()
,d_dtb()
andfluxb()
to theSolution
class. - Add optional
d_dob_hint
parameter tosolve()
. Allows users to pass an optional hint to the new automatic mode, which may accelerate convergence in some scenarios. - Add execution time to the verbose output of solvers. Measures total CPU time in Python 3, or wall-clock time in Python 2.7.
- Add
catch_errors
option toode()
that converts D domain errors to invalid values for easier compatibility with SciPy code. - Add
'polar'
as a valid value for theradial
parameter ofode()
and solvers. - Add
from_expr()
to thefronts.D
module, which transforms expressions into callable D functions. - Add
__version__
attribute to the main package, which stores the current version as a string. - Support extra options during install: e.g.,
$ pip install fronts[examples]
also installs Matplotlib, which is required to run the examples. Other options:[doc]
,[publish]
, and[dev]
(the latter installs all extras).
- Drop the letter
S
from the names of function parameters and methods. For more generality, the library now does not name the solution field in user-facing code. As a consequence of this,Solution
objects are now callable. - Update
solve()
to employ the new automatic mode by default.d_dob_bracket
(formerlydS_dob_bracket
) is still available but now defaults toNone
, which triggers the new behavior. - Change default tolerance (
itol
, formerlySi_tol
) insolve()
to 1e-3. - Replace use of
S
in documentation with the Greek letter theta. - Update examples with the new function signatures and method names.
- Update examples to use the new features of
solve()
. - Update examples/HF135/radial.py to use the new solver
solve_flowrate()
. - Update examples/exact case to use an expression for D.
- Update verbose output of
solve()
. Ambiguously named column "Evaluations" replaced with "Calls to D"; now counts all invocations ofD
. - Improve error messages in Python 3 by suppressing internal exceptions from the exception context.
- Improve README file and reference documentation.
- Fix floating point warnings that sometimes appeared during calls to
solve()
andsolve_from_guess()
. - Remove unnecessary restriction on the
l
parameter ofD.van_genuchten()
. - Fix list of examples in README file.
- Fix examples/exact case in Python 2.7.
- Fix encoding error when installed in editable mode in Python 2.7.
0.9.7 - 2020-02-11
- Fix a problem related to the encoding of README.md that prevented installation with some versions of pip.
0.9.6 - 2020-02-10
- Add optional intrinsic permeability, kinematic viscosity, and gravitational acceleration parameters to
D.van_genuchten()
andD.richards()
, which can be used in place of the hydraulic conductivity parameter. - Update examples/HF135 to use intrinsic permeability.
- Add new radial example to examples/HF135.
- Add scripts to plot the diffusivities in all example cases.
- Add units of measurement to examples/1INFILTR and examples/HF135.
- Add mention of porousMultiphaseFoam software version used to validate examples/HF135.
- Add this changelog file to the project.
- Rename
SemiInfiniteSolution
class to justSolution
(and the oldSolution
class toBaseSolution
). - Update Hydrus-1D validation data for examples/1INFILTR.
- Change "water content" to "saturation" in examples/HF135 [Note: fixed in 0.9.10].
- Improve example plots.
- Rename "API documentation" to "reference documentation".
- Improve README.md file and reference documentation.
- Remove examples/powerlaw/radial example. Replaced by new radial example in examples/HF135.
0.9.5 - 2019-12-26
- Rename parameter of
D.constant()
function toD0
. - Improve documentation.
- Fix
D.constant
, which was previously broken due to a bug. - Fix use of the terms "saturation" and "water content" throughout the project [Note: fixed in examples/HF135 in 0.9.10].
0.9.4 - 2019-10-09
- Improve README file and reference documentation.
0.9.3 - 2019-09-27
- Add links to the online reference documentation for functionality listed in the README file.
- Add GSaM logo to README file.
- Make parameter max_nodes in function
solve_from_guess()
default to 1000. - Make functions raise
TypeError
instead ofValueError
on illegal combinations of arguments.
- Fix typo in name of examples/1INFILTR.
- Fix wrong name used in mention of examples/refine.py in the README file.
0.9.2 - 2019-09-16
First public pre-release version.