Translated from the author's Korean original. Read the original (한국어)
[Paper Review] When a Microbubble Burns Like a Star — Keller–Miksis and the Secondary Bjerknes Force
The spherical polytropic pressure is the collapse number only until a jet breaks the sphere.
When a Microbubble Burns Like a Star — Keller–Miksis and the Secondary Bjerknes Force#
A 5 μm air bubble meets an ultrasound wave, swells, and is then crushed to a tenth of its size. In that collapse the gas inside reaches thousands of degrees. Sonoluminescence, the star-like flash in a cup of water, comes from that short interval. An ultrasonic cleaner and a lithotripter use the same collapse.
Keller–Miksis is the equation that pushes the radius. Following Nagy and Hegedűs (2025), one bubble is integrated, then the secondary Bjerknes force between two bubbles.
Paper: D. Nagy, F. Hegedűs, "Assessing the accuracy of the coupled-spherical-bubble approach for bubble pairs in an acoustic field", Ultrasonics Sonochemistry 123 (2025) 107651. DOI: 10.1016/j.ultsonch.2025.107651
Push the amplitude slider toward 1.2 bar and the radius swells once, hard; the model toggle only changes the height of the rebound after collapse.
The Rayleigh–Plesset rebound is the taller one. On Keller–Miksis the gap shrinks. The liquid sound speed written in the code is 1481 m/s.
The Equation Governing a Single Bubble#
Treat the bubble as a sphere and the only unknown is the radius . Integrate momentum in an incompressible liquid and Rayleigh–Plesset falls out.
is the liquid density. Dots are time derivatives. The left side is the inertia of liquid pushed out radially. The right side is the pressure difference on the wall.
Liquid pressure at the wall, , has three terms.
is the gas pressure inside, surface tension, liquid viscosity. The second term pulls the bubble shut. The third resists the wall motion.
A polytropic closure shuts the gas.
is the equilibrium radius, the ambient pressure, the exponent. The code uses 1.4. Halve the radius and the factor is , about 18. That rebound throws the collapse back out.
Driving rides on the far-field pressure.
With the code defaults Pa and Pa, the floor of is Pa. In the half-cycle where absolute pressure goes negative, a polytropic air law does not stand in for a vapor cavity. The cavitation number defined from vapor pressure is the scale for that interval. The bubble swells while pressure is low and is crushed while pressure is high.
The Liquid Compresses Too — the Keller–Miksis Correction#
The weak spot in Rayleigh–Plesset is the incompressible liquid. When the wall speed at collapse approaches the speed of sound, that assumption breaks. Keller–Miksis keeps a finite wall sound speed through first order.
When is small the parentheses collapse to 1 and Rayleigh–Plesset returns. As the wall speed grows, those terms radiate collapse energy as sound and hold the amplitude down. Nagy and Hegedűs grade the models by wall Mach number. Rayleigh–Plesset is order zero, Keller–Miksis order one, Gilmore order two.
The rebound gap on the toggle above is that sound. m/s is the water sound speed in the code.
Integrating the Collapse Directly#
Drop the state to and integrate with fourth-order Runge–Kutta. The collapse is sharp enough that the step is a nanosecond.
import numpy as np
P0, RHO, SIGMA, MU, C, KAPPA = 1.0e5, 998.0, 0.0725, 1.0e-3, 1481.0, 1.4
def bubble_rhs(y, t, RE, pA, f):
R, V = y
w = 2 * np.pi * f
pG0 = P0 + 2 * SIGMA / RE
pG = pG0 * (RE / R) ** (3 * KAPPA)
pL = pG - 2 * SIGMA / R - 4 * MU * V / R
pInf = P0 - pA * np.sin(w * t)
# d/dt(pL - pInf), with the R-ddot term isolated to the left side
dP = (-3 * KAPPA * pG * V / R + 2 * SIGMA * V / R**2
+ 4 * MU * V**2 / R**2 + pA * w * np.cos(w * t))
num = (-1.5 * (1 - V / (3 * C)) * V**2
+ (1 + V / C) * (pL - pInf) / RHO
+ R * dP / (RHO * C))
den = (1 - V / C) * R + 4 * MU / (RHO * C)
return np.array([V, num / den])
def integrate_km(RE=5e-6, pA=1.2e5, f=60e3, dt=5e-10, steps=200000):
y = np.array([RE, 0.0])
t, Rlog = 0.0, []
for _ in range(steps):
k1 = bubble_rhs(y, t, RE, pA, f)
k2 = bubble_rhs(y + 0.5 * dt * k1, t + 0.5 * dt, RE, pA, f)
k3 = bubble_rhs(y + 0.5 * dt * k2, t + 0.5 * dt, RE, pA, f)
k4 = bubble_rhs(y + dt * k3, t + dt, RE, pA, f)
y = y + dt / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
y[0] = max(y[0], 0.1 * RE) # guard against singular collapse
t += dt
Rlog.append(y[0])
return np.array(Rlog)
R = integrate_km()
print(f"R_max / R_E = {R.max() / 5e-6:.2f}")
print(f"R_min / R_E = {R.min() / 5e-6:.2f}")
# R_max / R_E = 3.71
# R_min / R_E = 0.10The comments record and . The bubble reaches 3.7 equilibrium radii, then a tenth. At maximum radius the factor runs the other way. is about 250, so the gas pressure falls to about 1/250 of , near 500 Pa. The bubble is almost empty, and the collapse is the outside pressure falling into that empty volume.
Put the code constants into that 0.10 and the pressure closes. With and m, Pa. Then Pa, about 1.29 atmospheres. At minimum radius the volume ratio is . Gas pressure is Pa, about 20,000 atm. Surface tension at that same radius, , is ten times larger than at equilibrium, Pa, and still a trace next to 20,000 atm. The rebound is the gas, not the film.
The temperature ratio on the same exponent is . "Thousands of degrees" matches a room-temperature start times that factor. "A few thousand atmospheres" does not match the pressure formula. The formula sits near 20,000 atm.
The integration window is written in the call. s and 200,000 steps cover s. At 60 kHz the period is s, so the window is exactly six cycles.
Bubbles Push and Pull on Each Other#
The paper is about a pair. A vibrating bubble radiates a pressure wave. Under an incompressible assumption the pressure from bubble at distance scales with the volume acceleration.
That pressure adds to the neighbor's and couples the two radius equations. The time average is the secondary Bjerknes force.
is volume, the center distance. In phase, they attract. Out of phase, they repel. Phase follows the drive frequency against each bubble's Minnaert frequency.
With the code values , Pa, and , . At μm, Hz, about 650 kHz. A 60 kHz drive is about an eleventh of that resonance. Opposite phase opens when the other bubble's lies below 60 kHz, which means a radius above about 54 μm. Put 60 kHz between a 5 μm bubble and that larger one, and the small bubble is below resonance while the large one is above it.
Spread the two radius sliders and place the drive between their Minnaert frequencies, and the arrow flips from attraction to repulsion.
Similar radii stay in phase at any frequency here. Green is attraction, red is repulsion. Only a partner above about 54 μm lets 60 kHz fall between the two resonances.
Where the Spherical Model Breaks Down#
Keller–Miksis and Gilmore both assume a sphere. Nagy and Hegedűs set that assumption against direct numerical simulation with ALPACA.
For an isolated bubble in a mild collapse the spherical model is surprisingly close. The collapse pressure still tracks even when the bubble is not a perfect sphere.
When the wall Mach number nears 1, Gilmore stays closer to the DNS than Keller–Miksis does. It pushes liquid compressibility through an equation of state.
When a pair collapses hard at short range, a jet forms, liquid punching through one side. The sphere breaks, and a spherical model overstates the internal pressure. That case belongs to DNS.
The spherical model is cheap, and it is usually enough for a cloud's void fraction or a sonoreactor. When a bubble hits a wall or a neighbor and jets, that limit comes before the number.
A jet, and the 20,000 atm was the sphere's number#
The 20,000 atm from and is the polytropic value while the bubble stays a sphere. Once a jet punches the wall, that sphere is already gone. The pressure is an overestimate, and a close pair's collapse is a DNS problem.
On the same 5 μm bubble, Pa, 0.29 of an atmosphere. Even while the acoustic correction holds, it is still open whether this film pressure tightens an explicit step harder than Keller–Miksis does. The time window opened by implicit surface tension is where that question sits.
Related
Share if you found it helpful.