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

オープン
#52 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
react, typescript

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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).
主要言語
TypeScript
スター
0
フォーク
0
平均マージ
52分
マージ済み PR(30日)
44

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

danielw-sudo/agentuto のほかの issue

danielw-sudo/agentuto の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。