# 物理量・色・診断量・終了条件の読み方

この文書では、画面に現れる粒子、cell、色、カラーバー、診断量、進行状況、終了条件の意味を説明します。

## 1. 画面上の要素

### N-bodyシミュレーションの点

1点は、位置と速度を時間発展させる1個のN-body粒子です。複数粒子をphase-space binへまとめた点ではありません。

宇宙論では、1点は1個の暗黒物質素粒子ではなく、多数の暗黒物質を代表するequal-mass macro-particleです。表示はconfiguration space `(x,y,z)` またはその2次元射影であり、6次元phase-space densityではありません。

### SPHの点

1点は、連続流体をLagrange的に運ぶ1個の質量要素です。密度、圧力、音速、加速度は近傍粒子をsmoothing kernelで加重して評価します。

### moving meshのcell

1本の色付き矩形は1個の有限体積cellです。cell内の平均密度、速度、圧力などを保持し、cell faceを通るfluxでmass、momentum、energyを更新します。本アプリでは1次元問題を横長のstripとして表示します。

### projected density

`DISPLAY = projected density`は、画面上のpixel/binへ粒子質量を投影したsurface-density mapです。粒子色として表示する3次元局所密度とは別の量です。

## 2. 連続色とcategorical legend

### カラーバー

連続量には数値範囲と単位を持つカラーバーを表示します。

- speed：linear
- radial velocity：正負を持つdiverging scale
- mass：log scale
- density：log scale
- pressure：log scale
- temperature／internal energy：log scale
- Mach number：linearまたはlog-like表示
- velocity divergence：正負を持つdiverging scale

極端な少数要素で全体の色が潰れないよう、通常は描画要素の3–97 percentileを表示範囲に使い、それより外側を端色へclipします。したがって、カラーバー上端と診断欄の真のmaximumが一致しない場合があります。

点の大きさは質量を表しません。massはカラーバーで読みます。

### 成分ラベル

`component label`は連続量ではなく、初期条件または役割による分類です。カラーバーではなく凡例を表示します。

例：

- 銀河A／Bの円盤と中心核
- 中心星、未合体微惑星、合体成長体
- shock tubeの初期左／右領域
- Kelvin–Helmholtzの中央層／外側層
- supernova ejecta／ambient medium／compact remnant

これは必ずしも元素・化学speciesではありません。初期領域を追跡するpassive labelの場合があります。

## 3. 共通の速度量

### speed `|v|`

各要素の速度ベクトルの大きさです。方向は分かりません。回転、収縮、膨張を区別するには速度ベクトルまたは半径方向速度を併用します。

### radial velocity `v_r`

基準中心から外向きを正として、

```text
v_r = v · r_hat
```

を表示します。

- `v_r < 0`：中心へ向かう
- `v_r > 0`：外へ広がる
- `v_r ≈ 0`：主に接線運動、または静止

自己重力ガス雲の崩壊と超新星残骸の膨張を見分けるのに有効です。

### velocity divergence `div v`

局所速度場の発散です。

- `div v < 0`：収束流、圧縮
- `div v > 0`：発散流、膨張
- shock近傍：強い負の値が現れやすい

SPHではkernel近傍から推定するため、noiseと分解能に依存します。

### 速度ベクトル

間引いた粒子／cellに矢印を重ねます。矢印長は`vector scale`（矢印倍率）で変更できます。定量値はカラーバーやtooltipで確認し、矢印長だけで比較しないでください。

## 4. 質量・密度・圧力・温度

### mass

- N-body：その1粒子自身の質量
- SPH：その1質量要素の質量
- moving mesh：cell内のextensive mass

宇宙論のequal-mass runでは全粒子が同じ質量なので、mass色は一様になります。

### density

#### 宇宙論PM

CICでmeshへdepositしたconfiguration-space densityを粒子位置へ補間した `rho/rhobar` です。

- 1：宇宙平均密度
- 2：平均の2倍
- 0.5：平均の半分

phase-space densityでも、粒子固有密度でもありません。

#### SPH

- 2D：surface density `Sigma`
- 3D：volume density `rho`

2D値を3D体積密度として解釈しないでください。

#### moving mesh

cell massをcell volume（1Dではcell幅）で割ったcell-average densityです。

### pressure

- ideal gas：`P = (gamma - 1) rho u`
- Tait liquid：rest density付近で大きなbulk modulusを持つ弱圧縮性近似
- moving mesh：cell primitive variableとしてRiemann problemへ渡す

Tait liquidではtensile instabilityを避けるため、負圧を0へclipします。

### specific internal energy `u`

単位質量あたりの熱エネルギーです。ideal-gas SPHではpressureとsound speedを決めます。

### temperature

内部エネルギーからの教育用換算またはcode unitでの温度指標です。化学組成、電離、放射輸送を含む精密温度ではありません。シナリオの説明に表示される単位とモデルの適用範囲を確認してください。

### Mach number

局所流速をsound speedで割った指標です。`max Mach`は高速・shock-like領域を探す補助量で、厳密なshock finderが推定したupstream Mach numberとは限りません。

## 5. 重力多体系計算のdiagnostics

### kinetic energy `K`

```text
K = sum_i 1/2 m_i |v_i|²
```

### potential energy `U`

isolated Direct／Barnes–Hut runで評価します。大粒子数では計算負荷を避けてN/Aにする場合があります。PM periodic runには同じ定義をそのまま使いません。

### relative energy error

```text
Delta E / |E0| = (E - E0) / |E0|
```

外力・物理的散逸のない孤立系では小さいことが望まれます。完全非弾性合体、cooling、膨張宇宙ではゼロ保存を要求しません。

### total momentum `|P|`

```text
P = sum_i m_i v_i
```

外力のない孤立系では初期値から大きく漂流しないことを確認します。

### angular momentum `|L|`

```text
L = sum_i r_i × m_i v_i
```

回転円盤や二体軌道で重要です。外力、境界、合体、中心の取り方に注意します。

### virial ratio `2K/|U|`

自己重力平衡の目安は1付近です。

- much less than 1：cold、重力優勢
- around 1：virial equilibriumに近い
- greater than 1：kinetic supportが強い、または非定常

衝突・崩壊中に常に1である必要はありません。

### center-of-mass drift

初期重心からの移動量です。open boundaryの孤立系で数値的なnet forceを確認します。periodic wrapをまたぐ単純な算術重心は意味が曖昧なので省略する場合があります。

## 6. 宇宙論diagnostics

### particle grid `n³`

宇宙論では1軸あたりの整数 `n` を指定し、総粒子数を

```text
Nparticle = n³
```

として表示します。入力範囲は `8 <= n <= 2048` ですが、入力上限は実行保証ではありません。開始前確認ではRAM、推定実行時間、JavaScript heap、単一TypedArrayの要素数を検査し、表現できない条件を解除不能な`BLOCKED`にします。

### PM mesh policy

FFT meshは2のべき乗です。

- **Speed**：`n`以下で最大の2のべき乗
- **Balanced**：`n`に最も近い2のべき乗
- **Resolution**：`n`以上で最小の2のべき乗

例：`n=40`

```text
Speed       32³ cells
Balanced    32³ cells
Resolution  64³ cells
```

粒子間隔は `L/n`、PM cell幅は `L/Nmesh` です。有効分解能はparticle samplingとforce meshの粗い側に制約されます。

### redshift `z`、scale factor `a`

```text
a = 1 / (1 + z)
```

初期赤方偏移からfinal redshiftまで進みます。

### peculiar velocity

一様Hubble flowを除いたcomoving peculiar motionです。表示単位はシナリオ内の換算に従います。

### density contrast

```text
delta = rho/rhobar - 1
```

### RMS density contrast

```text
RMS(delta) = sqrt(mean(delta²))
```

- much less than 1：線形領域に近い
- around 1：非線形成長が目立つ
- greater than 1：void／filament／nodeが強く発達

mesh、box、seed、CIC smoothingに依存します。同じ設定で比較してください。

### periodic boundary

描画するのはfundamental box 1個だけです。粒子が正のfaceを越えると反対faceへwrapします。隣接26 boxを描画していませんが、FFT重力場は周期的です。

## 7. SPH diagnostics

### average neighbor count

kernel support内の平均粒子数です。

- 少なすぎる：noise、pairing以外のsampling errorが増える
- 多すぎる：過度にsmoothされ、空間分解能が下がる

### smoothing length `h`

kernelの空間scaleです。adaptive optionはglobalな目標近傍数へ調整する教育用実装で、完全なparticle-wise adaptive SPHではありません。

### half-mass radius `R50`

基準中心から、総質量の50%を含む半径です。自己重力雲の収縮を「見た目のzoom」と区別できます。

### `t/t_ff`

free-fall timeに対する経過時刻です。初期平均密度に基づく比較scaleであり、非一様化後の各領域の局所free-fall timeではありません。

### inward-flow fraction

質量または粒子のうち `v_r < 0` の割合です。collapseの方向性を見る補助量です。

### orbital progress

diskの基準半径におけるreference orbit数です。粒子ごとに軌道周期が異なるため、全粒子が同じ回転角を持つ意味ではありません。

### Toomre-Q proxy

self-gravitating diskの局所安定性を示す教育用指標です。概念的には

```text
Q ~ pressure/dispersion support / self-gravity
```

を表します。`Q`が1付近以下なら不安定化しやすい目安ですが、有限厚さ、cooling、resolution、kernelの影響を受けます。

### shock radius proxy

supernova remnantやblast waveで、圧力・速度・密度変化からshock-like shellの代表半径を推定します。高精度shock finderではありません。

### mixing proxy

component labelが近傍で混ざった度合いです。物理的分子拡散やmetal diffusion係数そのものではありません。

## 8. moving-mesh diagnostics

### cell width

隣接face間隔です。moving meshでは流れに追随して不均一になります。極端に小さいcellはCFL time stepを制限します。

### contact width

advected contact discontinuityが何cellに広がったかを表します。fixed meshのadvection diffusionとmoving meshの比較に使います。

### mesh motion

- fixed：face velocity `w=0`
- moving：fluid velocityに近いface velocity

moving meshでもcellを越えるfluxは一般に0ではありません。

### conservation errors

finite-volume法はcell face fluxを隣接cell間で等符号反対向きに加えるため、boundary条件と数値丸めの範囲でmass、momentum、energyを保存します。reflecting boundaryでは外部壁からのmomentum impulseに注意します。

## 9. シナリオ固有の終了条件

### 二体・三体・星団・cold collapse

```text
t >= t_end
または maxSteps
```

「平衡した瞬間」を自動判定しません。

### 銀河衝突

```text
t >= t_end
または maxSteps
```

中心核の接触や最初の近点では停止しません。画面にはcurrent separation、minimum separation、approaching／recedingを表示します。

### 微惑星リング

基準円軌道周期

```text
Tref = 2*pi / sqrt(G Mstar / rref³)
```

に対して指定orbit数で停止します。全粒子が1個になるまで待ちません。

### 宇宙論

```text
z <= z_final
または maxSteps
```

### SPH gas/liquid

```text
t >= t_end
または maxSteps
```

shockが特定位置へ達した瞬間、雲がsinkを作った瞬間、液体frontが壁へ達した瞬間の自動event stopではありません。シナリオ固有の診断量を見て必要な時刻を記録します。

### moving mesh

```text
t >= t_end
または maxSteps
```

contactが1周したか、shockがどこまで進んだかは進行状況に表示します。

## 10. resource diagnostics

### estimated peak memory

次の領域を合計したメモリ見積りです。

- authoritative state
- ソルバーの作業領域
- Worker copy／partial result
- FFT or tree data
- render frame
- history
- safety margin

OS resident memoryの実測ではありません。

### CPU logical slots

browserが公開するlogical processorsとrequested compute Workersの比です。物理core数、CPU affinity、正確なCPU使用率ではありません。

### estimated ms/step／total runtime

ソルバーの計算量と端末情報からの事前推定です。実行後の実測batch時間を優先してください。tab background化、thermal throttling、他アプリで変動します。

### risk levels

Memory、CPU、Runtimeを別々に判定し、その最大をOverallにします。小メモリでもFFT stepが長ければRuntime HIGHになり得ます。

## 11. レポート図で必ず示すもの

- シナリオとソルバー
- particle／cell count
- time、redshift、orbit countのいずれか
- color channel、color barまたはlegend
- projection direction
- seed
- 比較で変更したパラメータ
- relevant diagnosticと単位
- scientific limitationを少なくとも1点
