Hi,
I have recently started looking at using k-wave for simulating non-destructive testing problems which generally involves launching higher frequency signals into high impedance media surrounded by air (essentially vacuum) - e.g. steel surrounded by air at 5 MHz. I have noticed that actually modelling a normal stress on an air/steel interface with the elastic wave simulation option produces large responses and eventually NaNs. Increasing attenuation values doesn't seem to help, nor does adding random perturbations to the material parameters (to simulate grain scattering). I have managed to get something apparently convergent by using water as the surrounding medium instead, however, that doesn't really correspond to the physical situation. I have read http://www.k-wave.org/forum/topic/changing-cfl-or-reference-speed-to-make-simulation-stable#post-8568 which suggests that a large number of points per wavelength is the way to make things stable in such cases - is this due to the fact that one cannot sensibly define a grid to support waves in air with a grid with 5 - 10 points per wavelength in steel? It seems not as I still get the same runaway behaviour if I set the surrounding medium to have the same velocities as steel but with a very small density. Is there a kind of rule of thumb as to how to set the grid dimensions (relative to wavelength) in cases for which the surrounding medium is essentially vacuum? I know there is some work arounds regarding modifications to the solver code to implement free boundaries which I may consider looking into, however, first I would like to know if can I will still need to set a very fine grid to get convergent solutions as well? If so, I'd just as soon take the easier path of surrounding things with air and making the grid much finer.
Any insight on how to handle such simulations would be greatly appreciated!