A package to calculate ensemble averaged waves in heterogeneous materials. The focus is on wave propagation, scattering, and reflection, from particulate and porous materials.
direction::SVector{Dim,Complex{T}}# the effective direction where sum(direction.^2) == 1
eigenvectors::Array{Complex{T}}# the effective ampliudes
end
Each effective wave type should have only enough information for fully describe the value of this wave at some point in space.
The necessary fields are the eigenvectors, basis_order, wavenumber, and ω. Extra fields should be used sparring and only when necessary. This is certainly not the case for:
There are several functions that return the coefficients of a wave basis as a final result. For example, scattering coefficients from a sphere, or the reflection coefficient from a halfspace. Instead, these functions should return a canonical wave which is the scattered wave. This would questions like: what phase should the reflected wave have? What kind of basis should these coefficients have (may potential have azimuth symmetry).
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!
At present, the subtypes of SetupSymmetry are used only to distinguish what methods to run. They are chosen by analysing the symmetry between the types Source and Material. The code would however be more elegant and easier to generalise if subtypes, such as WithoutSymmetry, had the fields Material, Source, basis_order, basis_field_order. At present several of these are carried with kws, which leads to more hidden behaviour, and some complications with dispatching to different WaveModes.