diff --git a/CHANGELOG.md b/CHANGELOG.md index 936a9e4..d92a775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] - -## [0.2.0] - 2023-12-18 ### Fixed - Fixed arguments error in helmholtz notebook @@ -99,8 +97,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Pml for 1D and 3D simulations. - Plotting functions of `jwave.utils` now work with both `Field`s and arrays. -[Unreleased]: https://github.com/ucl-bug/jwave/compare/0.2.0...master -[0.2.0]: https://github.com/ucl-bug/jwave/compare/0.1.5...0.2.0 +[Unreleased]: https://github.com/ucl-bug/jwave/compare/0.1.5...master [0.1.5]: https://github.com/ucl-bug/jwave/compare/0.1.4...0.1.5 [0.1.4]: https://github.com/ucl-bug/jwave/compare/0.1.3...0.1.4 [0.1.3]: https://github.com/ucl-bug/jwave/compare/0.1.2...0.1.3 @@ -111,4 +108,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), [0.0.3]: https://github.com/ucl-bug/jwave/compare/0.0.2...0.0.3 [0.0.2]: https://github.com/ucl-bug/jwave/compare/0.0.1...0.0.2 [0.0.1]: https://github.com/ucl-bug/jwave/releases/tag/0.0.1 - diff --git a/jwave/__init__.py b/jwave/__init__.py index 2c2d8f0..72fdd6c 100755 --- a/jwave/__init__.py +++ b/jwave/__init__.py @@ -14,9 +14,53 @@ # License along with j-Wave. If not, see . # nopycln: file -from jaxdf.discretization import * +from jaxdf import ( + operator, + Continuous, + Domain, + FiniteDifferences, + FourierSeries, + Field, + Linear, + OnGrid +) + +from .acoustics import ( + angular_spectrum, + born_iteration, + born_series, + db2neper, + helmholtz_solver_verbose, + helmholtz_solver, + helmholtz, + homogeneous_helmholtz_green, + laplacian_with_pml, + mass_conservation_rhs, + momentum_conservation_rhs, + pml, + pressure_from_density, + rayleigh_integral, + scale_source_helmholtz, + scattering_potential, + simulate_wave_propagation, + spectral, + wave_propagation_symplectic_step, + wavevector, + TimeWavePropagationSettings, +) +from .geometry import ( + BLISensors, + DistributedTransducer, + Medium, + Sensors, + Sources, + TimeAxis, + TimeHarmonicSource, +) from jwave import acoustics as ac from jwave import geometry as geometry +from jwave import logger as logger +from jwave import phantoms as phantoms from jwave import signal_processing as signal_processing from jwave import utils as utils diff --git a/jwave/acoustics/__init__.py b/jwave/acoustics/__init__.py index 60d9fd6..736873e 100644 --- a/jwave/acoustics/__init__.py +++ b/jwave/acoustics/__init__.py @@ -14,6 +14,31 @@ # License along with j-Wave. If not, see . # nopycln: file -from .operators import * -from .time_harmonic import * -from .time_varying import * +from .conversion import db2neper +from .operators import ( + helmholtz, + laplacian_with_pml, + scale_source_helmholtz, + wavevector, +) +from .time_harmonic import ( + angular_spectrum, + born_iteration, + born_series, + helmholtz_solver, + helmholtz_solver_verbose, + homogeneous_helmholtz_green, + rayleigh_integral, + scattering_potential +) +from .time_varying import ( + mass_conservation_rhs, + momentum_conservation_rhs, + pressure_from_density, + simulate_wave_propagation, + wave_propagation_symplectic_step, + TimeWavePropagationSettings, +) + +from . import spectral +from . import pml \ No newline at end of file diff --git a/jwave/acoustics/time_harmonic.py b/jwave/acoustics/time_harmonic.py index 47845c2..ca567e0 100644 --- a/jwave/acoustics/time_harmonic.py +++ b/jwave/acoustics/time_harmonic.py @@ -342,7 +342,7 @@ def body_fun(carry): out_field = _cbs_unnorm_units(out_field, _conversion) - return out_field, None + return out_field @operator @@ -377,7 +377,7 @@ def born_iteration(field: Field, G = homogeneous_helmholtz_green(V1 + src, k0=k0, epsilon=epsilon) V2 = scattering_potential(field - G, k_sq, k0=k0, epsilon=epsilon) - return field - (1j / epsilon) * V2, params + return field - (1j / epsilon) * V2 @operator @@ -401,7 +401,7 @@ def scattering_potential(field: Field, k = k_sq - k0**2 - 1j * epsilon out = field * k - return out, params + return out @operator @@ -430,7 +430,7 @@ def homogeneous_helmholtz_green(field: FourierSeries, u_fft = jnp.fft.fftn(u) Gu_fft = g_fourier * u_fft Gu = jnp.fft.ifftn(Gu_fft) - return field.replace_params(Gu), params + return field.replace_params(Gu) @operator @@ -500,7 +500,7 @@ def direc_exp_term(x, y, z): # Weights of the Rayleigh integral weights = jax.vmap(jax.vmap(direc_exp_term, in_axes=(0, 0, 0)), in_axes=(0, 0, 0))(R[..., 0], R[..., 1], R[..., 2]) - return jnp.sum(weights * pressure.on_grid) * area, None + return jnp.sum(weights * pressure.on_grid) * area @operator @@ -560,7 +560,7 @@ def helm_func(u): )[0] elif method == "bicgstab": out = bicgstab(helm_func, source, guess, tol=tol, maxiter=maxiter)[0] - return -1j * omega * out, None + return -1j * omega * out def helmholtz_solver_verbose( diff --git a/jwave/acoustics/time_varying.py b/jwave/acoustics/time_varying.py index 3477f10..e008b8c 100755 --- a/jwave/acoustics/time_varying.py +++ b/jwave/acoustics/time_varying.py @@ -82,8 +82,6 @@ def __init__( self.smooth_initial = smooth_initial -default_time_wave_prop_settings = TimeWavePropagationSettings() - def _shift_rho(rho0, direction, dx): if isinstance(rho0, OnGrid): @@ -382,7 +380,7 @@ def simulate_wave_propagation( medium: Medium[OnGrid], time_axis: TimeAxis, *, - settings: TimeWavePropagationSettings = default_time_wave_prop_settings, + settings: TimeWavePropagationSettings = TimeWavePropagationSettings(), sources=None, sensors=None, u0=None, @@ -533,7 +531,7 @@ def simulate_wave_propagation( medium: Medium[FourierSeries], time_axis: TimeAxis, *, - settings: TimeWavePropagationSettings = default_time_wave_prop_settings, + settings: TimeWavePropagationSettings = TimeWavePropagationSettings(), sources=None, sensors=None, u0=None, diff --git a/pyproject.toml b/pyproject.toml index f8dfe1f..a8a0d65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "jwave" -version = "0.2.0" +version = "0.1.5" description = "Fast and differentiable acoustic simulations in JAX." authors = [ "Antonio Stanziola ", @@ -108,9 +108,12 @@ split_before_logical_operator = true [tool.pytest.ini_options] addopts = """\ - --doctest-modules \ + --doctest-modules\ """ +[tool.pytest_env] +CUDA_VISIBLE_DEVICES = "" + [tool.coverage.report] exclude_lines = [ 'if TYPE_CHECKING:',