[Physics]: Lab Notebook & telemetry workflow gaps in quantum-tunneling, rc-rl-circuits, and maxwell-boltzmann

Aperta
#52 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
react, typescript

Direzione di ricerca

Start with the referenced entry points: src/simulations/sandboxGuides.ts, src/ui/components/LiveTelemetryCard.tsx, src/simulations/physics/rc-rl-circuits/TransientRenderer2D.ts, and the virtual instrument components. Reproduce the described notebook recording, sparkline scaling, RL trace and labels, and guide or overlay issues in the browser. The issue is done when the listed workflows and displays behave consistently with their stated values and instructions.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

physics-review

Found during the independent browser and learner-workflow review in #49 (Items 4 & 6).

1. quantum-tunneling lab protocol Step 3 cannot be completed in the in-app Lab Notebook

The quantum-tunneling lab protocol (src/simulations/sandboxGuides.ts lines 148–150) instructs the learner:

  1. Set particle energy $E = 3$ below barrier height $V_0 = 9$, and wavepacket width $\sigma = 1.2$.
  2. Sweep barrier width $d$ from $0.5$ to $1.5$. Each change restarts the run: record $T$ when the card says settled.
  3. Fit $\ln T$ against $d$: the slope comes out near $-6.1$...

When attempting this in the browser using the Record button and Lab Notebook:

  • TelemetryRecorder.lastRecordedSimTime blocks recording after d changes: Changing barrierWidth ($d$) calls QuantumEngine.reset(), which resets this.time = 0 inside the engine without resetting TelemetryRecorder.lastRecordedSimTime. In TelemetryRecorder.sample(), if (point.t - this.lastRecordedSimTime >= this.sampleInterval) then sees a negative point.t - lastRecordedSimTime on the next width until this.time exceeds the maximum t reached on the previous width. If the learner recorded at $d = 0.5$ up to $t = 4.6\text{ s}$ and then tries to record at $d = 0.7$ during its settled window ($t = 4.265\text{–}4.55\text{ s}$), zero samples are recorded. Conversely, clicking the transport Reset button calls recorder.reset(), which erases all previously recorded widths.
  • Continuous 50 Hz recording buffers un-settled in-flight points: Turning Record on during a run buffers transmission_T every $20\text{ ms}$, including pre-settled samples ($T \approx 0$), and settled is not included in QuantumEngine.getTelemetrySnapshot(). There is no button to log a single settled $(d, T)$ data point per width into the Lab Notebook.
2. quantum-tunneling Live Telemetry Card sparkline is $100\times$ too small (0.06 % vs 6.2%)
  • In src/ui/components/LiveTelemetryCard.tsx:
    • Line 258 computes const tPercent = Math.min(100, Math.max(0, (state.transmission ?? 0) * 100)); and displays 6.2% in the Transmission T box.
    • Line 52 pushes raw state.transmission (0.0625, a fraction in $[0, 1]$) into history, and lines 297–302 pass data={history} with unit="%" to TelemetrySparkline.
    • As a result, at the default settled state ($t = 3.32\text{ s}$), the card simultaneously displays Transmission T: 6.2% and Transmission T(t): 0.06 % right below it.
3. rc-rl-circuits oscilloscope trace overflow, hardcoded schematic labels, and multi-cycle fit trap
  • Oscilloscope trace draws outside the screen and off the canvas in RL mode: In src/simulations/physics/rc-rl-circuits/TransientRenderer2D.ts line 321, mapY(v) maps $0\text{ V}$ to scrT + 0.85 * scrH and $+15\text{ V}$ to scrT + 0.15 * scrH without ctx.clip(). During the discharging half-cycle in RL mode ($V_{\text{in}} = 0\text{ V}$), the inductor back-EMF is $V_L = -I R = -12\text{ V}$, which maps to scrT + 1.41 * scrH — drawing the cyan trace straight through the bottom of the oscilloscope bezel, through the bottom text banner, and off the bottom of the canvas.
  • Hardcoded & clipped schematic/scope labels: TransientRenderer2D.ts lines 156, 179, 196 hardcode 'R (100Ω)', 'C (100μF)', and 'L (100mH)' regardless of the slider settings (and clip 'C (100μF)' / 'L (100mH)' at the right border of the schematic box, plus 'CH2: V_out(t) [Relaxation]' at the right border of the oscilloscope bezel). Line 353 also hardcodes const v63 = 12.0 * 0.632; // 7.58 V (63.2% (1-1/e) = 7.6V), even when $V_0 \ne 12\text{ V}$ or in RL mode where $V_L(t)$ decays through $V_0 / e \approx 36.8%$ ($4.4\text{ V}$).
  • Sample-rate claim & multi-cycle recording in RL mode: sandboxGuides.ts line 417 says "The clock samples every 5 ms, so choose a τ of 10 ms or more: for RL use L = 500 mH and R = 10 Ω (τ = 50 ms)", whereas TelemetryRecorder samples at $50\text{ Hz}$ (every $20\text{–}25\text{ ms}$, giving 10 samples in $200\text{ ms}$). If the learner records within the first charging half-cycle ($t \le 0.20\text{ s} < 0.25\text{ s}$ at default $f = 2\text{ Hz}$), Exponential Regression on v_component vs t recovers y = 12.0000 · e^(-20.0000x) ($R^2 = 1.0000$, $\tau = 1/20 = 50\text{ ms}$). However, if recording continues past $t = 0.50\text{ s}$ into the second square-wave cycle, fitting v_component against cumulative t fits across multiple periodic pulses and yields y = 1.8787 · e^(-1.5133x) ($R^2 = 0.0712$).
4. Minor guide & overlay issues
  • maxwell-boltzmann Lab Protocol Step 2 (sandboxGuides.ts line 126): Instructs the learner to "compare P · A with N k_B T in the Lab Notebook", whereas the Lab Notebook plots single telemetry channels (empirical_pressure $P$ vs ideal_pressure $N k_B T / A$, not the products $P \cdot A$ and $N k_B T$).
  • docs/USER_GUIDE.md line 174: States "Monitor the live norm readout confirming $\int |\psi|^2 dx \equiv 1.000000$ to 12 decimal places", whereas the readout shows 6 decimal places (1.000000) and Dirichlet boundary reflections change the discrete norm at $\sim 10^{-8}$.
  • VirtualCaliper and VirtualPhotogate (src/ui/components/VirtualCaliper.tsx, VirtualPhotogate.tsx): When both are opened, VirtualPhotogate (fixed top-24 left-6, non-draggable) overlaps VirtualCaliper (left: 200px, top: 150px) and covers the top sliders of the left parameter dock; VirtualCaliper also uses a hardcoded scale of 35 px/m (Measured Distance: 4.00 m at 140px) across all 2D and 3D sandboxes regardless of camera zoom or sandbox units (mm, AU, reduced).
Lingua principale
TypeScript
Stelle
0
Fork
0
Merge medio
52m
PR unite (30g)
44

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di danielw-sudo/agentuto

Tutte le issue di danielw-sudo/agentuto

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.