Dear K-Wave experts:
As a quick overview driving the following questions, we stimulated a certain brain area using a 0.5 Mhz single element focused transducer. The stimulation was pulsed, lasting for 500 ms. Another group simulated this setup using k-wave in this paper: Numerical evaluation of the skull for human neuromodulation with transcranial focused ultrasound
Jerel K Mueller, Leo Ai, Priya Bansal and Wynn Legon.
The basis of our questions stems from trying to essentially replicate the simulations they did in K-wave. We have thus far written a substantial amount of code trying to do it, but still have several questions from the experts. So, first, thanks for taking the time to help.
I am currently trying to simulate the pressure field produced by an ultrasound transducer when the ultrasound signal is passed through a human skull immersed in water. The transducer has the following specifications:
Focal length = 36 mm Diameter of aperture of transducer = 30 mm Radius of curvature of transducer = 30 mm Center frequency = 0.5 MHz
The skull is immersed in water and the transducer is placed above the skull with a thin layer of water between the skull and transducer i.e. the transducer isn’t placed directly on the skull. I am trying to record the pressure field at and around the focus which is on the other side of the skull as compared to the transducer. The transducer is driven by an input signal with the following specifications:
Acoustic frequency = 0.5 MHz Pulse duration = 360 μs Pulse repetition frequency = 1.0 kHz
Stimulus duration = 0.5 s Number of pulses = 500
The acoustic properties of the medium are:
Water sound speed = 1482 m/s Bone sound speed = 3100 m/s Water density = 1000 kg/m3 Bone density = 2200 kg/m3 Skull porosity = 1 − CT value (in HU)/1000
Skull sound speed = water sound speed*skull porosity + bone sound speed*(1 - skull porosity)
Skull density = water density*skull porosity + bone density*(1 - skull porosity)
I would be happy to post our code if that helps, or if you have code available (for example, from your paper: "Accurate simulation of transcranial ultrasound propogation for ultrasonic neuromodulation and stimulation). That paper of yours and the Legon one mentioned above described exactly what we are trying to do simulate.
1. The first problem we encounter is that MATLAB usually crashes while executing the code, which seems to be a memory issue. We have access to a HPC and a gpu-cluster. Do you have code available to run the rather large simulations on a GPU cluster? I believe the cluster is 8 Tesla V100 gpus. We also have access to more traditional multi-node clusters with 128+ cores. Alternatively, is there a simple way to split up the calculations on a local computer using parallel processing and recombine the sensor data afterwards?
2. A rather naive question (due to lack of electronics knowledge): Question is about replicating our physical setup.. the transducer was connected to a 40 watt linear amp with a 50dB gain, which was excited with a pulsed 2volt signal. Would this be properly implemented by changing the input signal to the transducer simply as an amplitude gain? Is there a straightforward way to set this up using the input? This is identical to the setup used in this paper: Transcranial focused ultrasound modulates the activity of primary somatosensory cortex in humans: Legon et al., Nature Neuroscience (2014).
3. Since we are trying to simulate a single-element spherically focused transducer having a focal length of 30 mm, would the radius of curvature also be 30 mm in the code?
4. Finally, is it better to set the source using source.p0 or source.p_mask for these types of simulation? Since what we are doing is a close approximation to the "Simulating Transducer Field Patterns Example", I assume using source.p_mask and source.p is better. Then, I believe this relates to my question 2 in how to make sure these values are being properly set.
Thanks for taking the time to help out.
Justin Fine