A package to calculate ensemble averaged waves in heterogeneous materials. The focus is on wave propagation, scattering, and reflection, from particulate and porous materials.



A Julia package for calculating, processing and plotting waves travelling in heterogeneous materials. The focus is on ensemble averaged waves.

Documentation Build Status

At present, the package focuses on materails filled with randomly placed particles. You can calculate effective wavenumbers for 2D [1] and 3D [4] acoustics, wave transimission and wave reflection in 2D [1,2,3] and 3D [4], and scattering from an inhomogenious sphere [4]. See these notes for brief formulas on effective wavenumbers.

Together with MultipleScattering.jl, this package has been setup to easily extend to other dimensions, materials, and types of waves, such as elastic and electromagnetic waves.


  • STABLEdocumentation of the most recently tagged version.
  • DEVELdocumentation of the in-development version.

More examples

For more examples and details go to docs/src/examples/.

Acknowledgements and contributing

This library was originally written by Artur L Gower. Contributions are very welcome.


[1] Gower AL, Smith MJ, Parnell WJ, Abrahams ID. Reflection from a multi-species material and its transmitted effective wavenumber. Proc. R. Soc. A. 2018 Apr 1;474(2212):20170864.

[2] Gower, Artur L., William J. Parnell, and I. David Abrahams. "Multiple waves propagate in random particulate materials." SIAM Journal on Applied Mathematics 79.6 (2019): 2569-2592.

[3] Gower, Artur L., I. David Abrahams, and William J. Parnell. "A proof that multiple waves propagate in ensemble-averaged particulate materials." Proceedings of the Royal Society A 475.2229 (2019): 20190344.

[4] Gower, Artur Lewis, and Gerhard Kristensson. "Effective Waves for Random Three-dimensional Particulate Materials." arXiv preprint arXiv:2010.00934 (2020).

First Commit


Last Touched

12 days ago


351 commits

Used By: