Sonoluminescence Explorer

Interactive STO Framework: Curvature Dislocation Dynamics

🎵 Acoustic Parameters

Frequency (Hz) 350.63
A4 Tuning (Hz) 417.0
Amplitude 1000

🌡️ Environmental Conditions

Temperature (°F) 77.87
Humidity (%) 100
Pressure (kPa) 101.325

🫧 Bubble Parameters

Bubble Radius (μm) 5.0
Compression Ratio 75
Number of Bubbles 1

⚡ STO Framework

Angular Threshold 2000
Coherence Limit 0.1
0.0
Cents Deviation
348.32
Sound Speed (m/s)
99.34
Wavelength (cm)
360
Angular Compression
0.85
Emission Efficiency
245
Predicted Photons
298.8
Temperature (K)
1847
Curvature Stress
warrow: false, font: { size: 16 } })) }; Plotly.newPlot('dislocation-timeline', [stressTrace, coherenceTrace, emissionTrace], layout, {responsive: true}); } function updateMetrics(metrics) { document.getElementById('cents-deviation').textContent = metrics.cents.toFixed(2); document.getElementById('sound-speed').textContent = metrics.soundSpeed.toFixed(2); document.getElementById('wavelength-cm').textContent = metrics.wavelengthCm.toFixed(2); document.getElementById('angular-compression').textContent = metrics.angularCompression.toFixed(0); document.getElementById('emission-efficiency').textContent = metrics.efficiency.toFixed(3); document.getElementById('photon-count').textContent = Math.round(metrics.photonCount); document.getElementById('temperature-k').textContent = metrics.temperatureK.toFixed(1); document.getElementById('curvature-stress').textContent = metrics.curvatureStress.toFixed(0); } // Event listeners for all sliders const sliders = [ 'frequency', 'a4-tuning', 'amplitude', 'temperature', 'humidity', 'pressure', 'bubble-radius', 'compression-ratio', 'num-bubbles', 'angular-threshold', 'coherence-limit' ]; sliders.forEach(sliderId => { const slider = document.getElementById(sliderId); const valueDisplay = document.getElementById(sliderId.replace('-', '-') + '-value'); slider.addEventListener('input', function() { valueDisplay.textContent = this.value; updatePlots(); }); }); // Preset buttons for optimal conditions function setOptimalConditions() { document.getElementById('frequency').value = 350.63; document.getElementById('freq-value').textContent = '350.63'; document.getElementById('a4-tuning').value = 417; document.getElementById('a4-value').textContent = '417.0'; document.getElementById('temperature').value = 77.87; document.getElementById('temp-value').textContent = '77.87'; document.getElementById('humidity').value = 100; document.getElementById('humidity-value').textContent = '100'; document.getElementById('amplitude').value = 1000; document.getElementById('amplitude-value').textContent = '1000'; updatePlots(); } function setSuboptimalConditions() { document.getElementById('frequency').value = 340; document.getElementById('freq-value').textContent = '340'; document.getElementById('temperature').value = 70; document.getElementById('temp-value').textContent = '70'; document.getElementById('humidity').value = 80; document.getElementById('humidity-value').textContent = '80'; updatePlots(); } // Add preset buttons to the interface const presetButtons = document.createElement('div'); presetButtons.innerHTML = `
`; document.querySelector('.controls-panel').insertAdjacentElement('afterend', presetButtons); function randomizeParameters() { document.getElementById('frequency').value = (300 + Math.random() * 100).toFixed(1); document.getElementById('freq-value').textContent = document.getElementById('frequency').value; document.getElementById('temperature').value = (65 + Math.random() * 25).toFixed(1); document.getElementById('temp-value').textContent = document.getElementById('temperature').value; document.getElementById('humidity').value = (70 + Math.random() * 30).toFixed(0); document.getElementById('humidity-value').textContent = document.getElementById('humidity').value; document.getElementById('amplitude').value = (500 + Math.random() * 1500).toFixed(0); document.getElementById('amplitude-value').textContent = document.getElementById('amplitude').value; document.getElementById('compression-ratio').value = (20 + Math.random() * 150).toFixed(0); document.getElementById('compression-value').textContent = document.getElementById('compression-ratio').value; updatePlots(); } // Educational tooltips const tooltips = { frequency: "F#4 frequency - optimal at 350.63 Hz for gravitational resonance", 'a4-tuning': "A4 reference tuning - optimal at 417 Hz for HTF alignment", temperature: "Ambient temperature - optimal at 77.87°F for sound speed matching", humidity: "Relative humidity - 100% optimal for acoustic coherence", amplitude: "Acoustic pressure amplitude - higher = more angular compression", 'bubble-radius': "Initial bubble radius - affects collapse dynamics", 'compression-ratio': "Max compression during collapse - determines stress levels", 'angular-threshold': "Critical angular stress for curvature dislocation", 'coherence-limit': "Minimum coherence before dislocation occurs" }; // Add tooltips to sliders Object.keys(tooltips).forEach(sliderId => { const slider = document.getElementById(sliderId); if (slider) { slider.title = tooltips[sliderId]; } }); // Real-time analysis panel const analysisPanel = document.createElement('div'); analysisPanel.innerHTML = `

🔬 Real-Time STO Analysis

HTF Resonance Status:

Calculating...

Curvature Predictions:

Calculating...
`; document.querySelector('.container').appendChild(analysisPanel); function updateAnalysis() { const frequency = parseFloat(document.getElementById('frequency').value); const temperature = parseFloat(document.getElementById('temperature').value); const humidity = parseFloat(document.getElementById('humidity').value); const amplitude = parseFloat(document.getElementById('amplitude').value); const compressionRatio = parseFloat(document.getElementById('compression-ratio').value); // HTF Resonance Analysis const tempK = tempFtoK(temperature); const soundSpeed = speedOfSound(tempK, humidity); const wavelength = soundSpeed / frequency; const cents = centsDeviation(frequency, f_gravitational); let htfStatus = ""; if (Math.abs(cents) < 5) { htfStatus = "🟢 Perfect HTF Resonance
"; htfStatus += `• Cents deviation: ${cents.toFixed(2)}¢
`; htfStatus += `• Wavelength match: ${((wavelength / lambda_temporal) * 100).toFixed(1)}%
`; htfStatus += "• Optimal for sonoluminescence"; } else if (Math.abs(cents) < 11.42) { htfStatus = "🟡 Good HTF Resonance
"; htfStatus += `• Cents deviation: ${cents.toFixed(2)}¢
`; htfStatus += `• Within critical ±11.42¢ window
`; htfStatus += "• Emission possible