Open jondea opened 6 years ago
Much of the inner machinery has now been made more abstract, making it easier to add a new kind of wave, including vectorial waves.
Below is a list of functions and types that need to be implemented. For clarity I will imagine we are trying to implement Electromagnetism:
Electromagnetism{T,Dim} <: PhysicalMedium{Dim,2}
outgoing_basis_function
for outgoing waves regular_basis_function
for regular spherical wavesoutgoing_translation_matrix
to translate outgoing waves from one origin to another (addition translation theorem)basisorder_to_basislength
and basislength_to_basisorder
t_matrix(p::Particle{3,Electromagnetism{T,3},Sphere{T,3}}
After this, some small detail in internal working of the functions run
and field
may need adjusting, but this should be very minor.
Currently the machinery should work for acoustics, which is a scalar equation. But we have not yet tested for any physics with a FieldDim > 1. Without a test case it is hard to see what to do. The outer types and structure should be fine, but I expect the inner machinery will break. We also need to be careful that when we generalise the machinery fully that we don't make it slower.