# Nephele Weather-Sensing Mathematical Model Sheet

**Version:** 2026-07-14
**Scope:** LEO/GNSS-to-ground geometry, atmospheric propagation, complex RF reception, multilayer weather attribution, and 3-D/4-D reconstruction.

This is the governing-math reference for the Nephele weather-sensing goal. It connects the current interactive digital twin to the phase-accurate scientific model required for calibrated field measurements.

## 0. Scientific interpretation and status labels

Nephele presently combines public catalog orbits, public numerical-weather-model fields, explicit RF assumptions, and synthetic tomographic observations. It is a physically informed simulator, **not yet a live atmospheric retrieval instrument**.

- **[Implemented]** Equation is evaluated in the current application.
- **[Approximation]** Useful engineering or visualization model, but not a calibrated observable.
- **[Scientific target]** Required for phase-accurate field measurements or defensible retrievals.
- **[Measured input required]** Cannot be inferred from public orbit/weather catalogs alone.

The end-to-end chain is

$$
\boxed{
\text{orbit + clocks + attitude + 4-D atmosphere}
\rightarrow \text{ray geometry}
\rightarrow H(f,t)
\rightarrow I/Q[n]
\rightarrow \{A,\phi,f_D,\tau\}
\rightarrow \hat{\mathbf x}(x,y,z,t)
}
$$

where the recovered atmospheric state may include water vapor, liquid water, ice, rain, and wind, together with posterior uncertainty.

### Quick equation index

| Quantity | Core equation |
|---|---|
| Pair geometry | $R=\|\mathbf r_s-\mathbf r_g\|$, $\dot R=\hat{\boldsymbol\rho}^{T}(\mathbf v_s-\mathbf v_g)$ |
| Free-space loss | $L_{FS}=20\log_{10}(4\pi R/\lambda)$ |
| Received power | $P_r=P_tG_tG_r(\lambda/4\pi R)^2\,10^{-A_{atm}/10}$ |
| Propagation phase | $\phi=-2\pi f(R+\Delta L_\phi)/c$ |
| Geometric Doppler | $f_{D,geom}=-(f/c)\dot R$ |
| Medium Doppler | $f_{D,medium}=-(f/c)d\Delta L_{\phi,medium}/dt$ |
| Neutral refractivity | $N=77.6P/T-5.6e/T+3.75\times10^5e/T^2$ |
| Cloud attenuation | $A_{cloud}=\int K_l(f,T)M\,ds$ |
| Cloud phase | $\Delta\phi_{cloud}=-(2\pi/\lambda)\int(n'_{eff}-n'_{clear})ds$ |
| Rain attenuation | $A_R=\int kR_r^\alpha ds$ |
| Ionosphere | $\Delta L_{g,\phi}=\pm40.3\,TEC/f^2$ |
| One-link samples | $y_i=\int_{\Gamma_i}x(\mathbf r,t_i)ds+\epsilon_i$ |
| 3-D tomography | $\mathbf y=\mathbf A\mathbf x+\boldsymbol\epsilon$ |
| MAP reconstruction | $\hat{\mathbf x}=\arg\min\|\mathbf y-\mathbf h(\mathbf x)\|_{\mathbf R^{-1}}^2+\text{priors}$ |
| Posterior covariance | $\mathbf C_{post}\approx(\mathbf J^T\mathbf R^{-1}\mathbf J+\mathbf B^{-1})^{-1}$ |

---

## 1. Symbols, units, and sign convention

Nephele should use SI units internally except where an ITU recommendation explicitly uses GHz, km, hPa, mm/h, or g/m$^3$.

| Symbol | Meaning | Unit |
|---|---|---:|
| $c$ | Speed of light in vacuum, $299\,792\,458$ | m/s |
| $f$, $f_c$ | RF frequency, carrier frequency | Hz |
| $f_{\mathrm{GHz}}$ | Frequency divided by $10^9$ | GHz |
| $\lambda=c/f$ | Wavelength | m |
| $k_0=2\pi/\lambda$ | Vacuum wavenumber | rad/m |
| $t_{tx},t_{rx}$ | Transmit and receive time | s |
| $\mathbf r_s,\mathbf v_s$ | Satellite position and velocity | m, m/s |
| $\mathbf r_g,\mathbf v_g$ | Ground antenna position and velocity | m, m/s |
| $R$ | Geometric slant range | m |
| $\dot R$ | One-way range rate; positive when separating | m/s |
| $E,Az$ | Ground look elevation and azimuth | rad or deg |
| $P,T,e$ | Total pressure, temperature, water-vapor partial pressure | hPa, K, hPa |
| $N$ | Neutral radio refractivity, $(n-1)10^6$ | N-units |
| $M$ or $\rho_l$ | Cloud liquid-water content (LWC) | g/m$^3$ |
| $LWP$ | Vertically integrated liquid water | kg/m$^2$ |
| $R_r$ | Rain rate | mm/h |
| $N_e$, TEC | Electron density and slant total electron content | e$^-$/m$^3$, e$^-$/m$^2$ |
| $A$ | Power attenuation | dB |
| $\phi$ | Unwrapped carrier phase | rad |
| $f_D$ | Frequency offset/Doppler | Hz |
| $\mathbf A$ | Ray-to-voxel path matrix | usually km |
| $\mathbf x$ | Atmospheric voxel state | state-dependent |
| $\mathbf y$ | Link observations | state-dependent |

### Phasor convention

Use

$$
x_{RF}(t)=\Re\{x_{bb}(t)e^{j2\pi f_ct}\},
\qquad \tilde n=n'-j\kappa,\;\kappa\ge0,
$$

with propagation factor $e^{-jk_0\tilde n L}$. Then positive excess path produces negative phase and positive $\kappa$ produces attenuation:

$$
e^{-jk_0(n'-j\kappa)L}
=e^{-jk_0n'L}e^{-k_0\kappa L}.
$$

For a loss $A$ stated in power dB,

$$
\frac{P_{out}}{P_{in}}=10^{-A/10},
\qquad
\left|\frac{E_{out}}{E_{in}}\right|=10^{-A/20}.
$$

Do not mix field-amplitude and power ratios.

---

## 2. Orbit, Earth, station, and line-of-sight geometry

### 2.1 Catalog-orbit propagation

**[Implemented]** For a catalog OMM/TLE record,

$$
(\mathbf r_{TEME}(t),\mathbf v_{TEME}(t))
=\operatorname{SGP4}(\text{mean elements},t).
$$

Nephele uses `satellite.js`, converts the propagated state to Earth-fixed coordinates, and interpolates between orbit anchor samples spaced by 5 s. The globe can animate every display frame, but this does **not** mean that a satellite is newly observed every frame. Catalog elements are a propagated estimate and are not phase-grade ephemerides.

**[Scientific target]** Use precise orbit, clock, attitude, antenna phase-center, and Earth-orientation products. Solve light time rather than using same-epoch Euclidean positions:

$$
t_{tx}=t_{rx}-\tau,
\qquad
\tau=\frac{1}{c}
\left\|\mathbf r_{rx}(t_{rx})-\mathbf r_{tx}(t_{tx})\right\|
+\Delta\tau_{media}+\Delta\tau_{rel}.
$$

Iterate until $t_{tx}$ and $\tau$ converge. Earth rotation/Sagnac and relativistic terms must use one consistent reference-frame convention.

### 2.2 WGS-84 geodetic coordinates to ECEF

For geodetic latitude $\varphi$, longitude $\ell$, and ellipsoidal height $h$,

$$
a=6\,378\,137\ \mathrm{m},\qquad
f_E=\frac{1}{298.257223563},\qquad
e_E^2=f_E(2-f_E),
$$

$$
N_\varphi=\frac{a}{\sqrt{1-e_E^2\sin^2\varphi}},
$$

$$
\mathbf r_{ECEF}=
\begin{bmatrix}
(N_\varphi+h)\cos\varphi\cos\ell\\
(N_\varphi+h)\cos\varphi\sin\ell\\
(N_\varphi(1-e_E^2)+h)\sin\varphi
\end{bmatrix}.
$$

A nominally fixed ground station has $\mathbf v_g=0$ in ECEF, but in an inertial frame

$$
\mathbf v_g^{ECI}=\boldsymbol\omega_E\times\mathbf r_g^{ECI}
$$

before loading, tides, and tectonic velocity are added.

### 2.3 Range, range rate, elevation, and azimuth

In a common frame,

$$
\boldsymbol\rho=\mathbf r_s-\mathbf r_g,
\qquad
R=\|\boldsymbol\rho\|,
\qquad
\hat{\boldsymbol\rho}=\frac{\boldsymbol\rho}{R},
$$

$$
\dot R=\hat{\boldsymbol\rho}^{T}(\mathbf v_s-\mathbf v_g).
$$

**[Implemented]** The current twin estimates $\dot R$ by a centered finite difference of Earth-fixed range.

The ECEF-to-local-ENU rotation at the station is

$$
\begin{bmatrix}E_a\\N_a\\U_a\end{bmatrix}
=
\begin{bmatrix}
-\sin\ell&\cos\ell&0\\
-\sin\varphi\cos\ell&-\sin\varphi\sin\ell&\cos\varphi\\
\cos\varphi\cos\ell&\cos\varphi\sin\ell&\sin\varphi
\end{bmatrix}
\boldsymbol\rho.
$$

$$
Az=\operatorname{atan2}(E_a,N_a),
\qquad
E=\operatorname{atan2}\!\left(U_a,\sqrt{E_a^2+N_a^2}\right).
$$

The geometric line of sight is above the ideal horizon when $E>0$. A practical station also needs a terrain/building horizon mask and a link-budget threshold.

### 2.4 Satellite and ground antenna orientation

Let $\hat{\mathbf b}_t$ and $\hat{\mathbf b}_r$ be transmitter and receiver boresights. For the propagation directions $\hat{\mathbf u}_t$ and $\hat{\mathbf u}_r$,

$$
\theta_t=\cos^{-1}(\hat{\mathbf b}_t^T\hat{\mathbf u}_t),
\qquad
\theta_r=\cos^{-1}(\hat{\mathbf b}_r^T\hat{\mathbf u}_r).
$$

**[Approximation, implemented]** Nephele uses the smooth reference pattern

$$
G_{dBi}(\theta)=G_{0,dBi}
-\min\left[30,\ 12\left(\frac{\theta}{\theta_{BW}}\right)^2\right].
$$

This is 3 dB down at half the stated full beamwidth and has a 30 dB floor. Replace it with measured, frequency-dependent, polarized patterns when available.

For polarization vectors $\mathbf e_t$ and $\mathbf e_r$,

$$
\eta_{pol}=|\mathbf e_r^H\mathbf e_t|^2,
\qquad
L_{pol,dB}=-10\log_{10}\eta_{pol}.
$$

The simple linear-polarization case is $\eta_{pol}=\cos^2\psi$.

### 2.5 Ray/shell and ray/voxel intersections

For a straight ray

$$
\mathbf r(s)=\mathbf r_0+s\hat{\mathbf u},\qquad 0\le s\le R,
$$

the crossing of a spherical height shell $r_h=R_E+h$ satisfies

$$
s^2+2(\mathbf r_0^T\hat{\mathbf u})s
+\|\mathbf r_0\|^2-r_h^2=0.
$$

The physical root inside $[0,R]$ gives the shell pierce point. Intersections with the lower and upper shells give each layer's slant length $L_k$.

For a locally horizontal slab and elevation $E$,

$$
L_k\simeq\frac{\Delta h_k}{\sin E}.
$$

**[Implemented]** The selected-link gas, rain, and cloud models use the exact
straight-ray distance between spherical height shells. The 3-D array operator
clips each straight local-ENU ray against every crossed voxel and stores exact
intersection lengths in sparse CSR form. The LOCAL_ENU approximation is
separate from the intersection algorithm: production inversion quantifies
corner curvature and rejects domains above its declared 500 m tangent-plane
tolerance; the coarse browser OSSE allows at most 1,100 m and displays the
actual sag.

### 2.6 Refracted ray

**[Scientific target]** In a spatially varying refractive index, the geometric-optics ray obeys

$$
\frac{d}{ds}\left(n(\mathbf r)\frac{d\mathbf r}{ds}\right)=\nabla n(\mathbf r).
$$

At low elevation, use a bent-ray shooting solution through the 3-D refractivity field. Straight rays become increasingly biased near strong boundary-layer gradients, ducting, terrain, and multipath.

---

## 3. Unified complex RF channel

### 3.1 Direct one-way channel

For one direct path, the complex baseband voltage transfer is

$$
h_0(f,t)=
\frac{\lambda}{4\pi R}
\sqrt{G_t(\theta_t,f)G_r(\theta_r,f)\eta_{pol}}
\;10^{-A_{atm}(f,t)/20}
\exp\left[-jk_0\left(R+\Delta L_\phi\right)\right]
e^{j\phi_{hw}}.
$$

Therefore

$$
P_r=P_t|h_0|^2,
$$

or in dB,

$$
P_{r,dBW}=P_{t,dBW}+G_{t,dBi}+G_{r,dBi}
-L_{FS}-A_{gas}-A_{cloud}-A_{rain}
-L_{pol}-L_{point}-L_{misc}.
$$

The free-space path loss is

$$
L_{FS}=20\log_{10}\left(\frac{4\pi R}{\lambda}\right),
$$

equivalently, for $f$ in GHz and $R$ in km,

$$
L_{FS,dB}=92.45+20\log_{10}f_{GHz}+20\log_{10}R_{km}.
$$

### 3.2 Multipath and wideband channel

For resolved paths $p$,

$$
H(f,t)=\sum_p a_p(f,t)
\exp[-j2\pi f\tau_p(t)+j\phi_p(f,t)].
$$

The channel impulse response is

$$
h(\tau,t)=\mathcal F_f^{-1}\{H(f,t)\}.
$$

A single scalar phase is insufficient for a wideband OFDM signal near dispersive gas lines or in the ionosphere. Evaluate $H(f,t)$ on the actual pilot/subcarrier frequencies.

### 3.3 Atmospheric amplitude and phase along one ray

Write the total power attenuation and excess phase path as

$$
A_{atm}=\int_\Gamma
\left(\gamma_{gas}+\gamma_{cloud}+\gamma_{rain}+\gamma_{ice}\right)ds,
$$

$$
\Delta L_\phi
=\int_\Gamma\left[n_\phi'(f,\mathbf r,t)-1\right]ds
+\Delta L_{iono,\phi}.
$$

The unwrapped propagation phase is

$$
\phi_{prop}(f,t)=-\frac{2\pi f}{c}
\left[R(t)+\Delta L_\phi(f,t)\right].
$$

For phase/group index $n_\phi$ and group index $n_g$,

$$
n_g=n_\phi+\omega\frac{\partial n_\phi}{\partial\omega},
\qquad
\tau_g=\frac{1}{c}\int_\Gamma n_g\,ds.
$$

Phase delay and group delay are not interchangeable in dispersive media.

---

## 4. Neutral atmosphere: humidity, refractivity, gas, and bending

### 4.1 Relative humidity to vapor pressure

Let $t_C$ be temperature in degrees Celsius and $RH$ in percent. Nephele implements the ITU-R P.453 phase-specific saturation-vapor-pressure form

$$
e_s=EF\;a_s
\exp\left[\left(b_s-\frac{t_C}{d_s}\right)
\frac{t_C}{t_C+c_s}\right],
\qquad
e=\frac{RH}{100}e_s,
$$

$$
EF=1+10^{-4}\left(q_0+q_P P+q_Tt_C^2\right).
$$

| Phase | Valid $t_C$ | $a_s$ | $b_s$ | $c_s$ | $d_s$ | $q_0$ | $q_P$ | $q_T$ |
|---|---:|---:|---:|---:|---:|---:|---:|---:|
| Water | $-40$ to $50^\circ$C | 6.1121 | 18.678 | 257.14 | 234.5 | 7.2 | 0.032 | $5.9\times10^{-6}$ |
| Ice | $-80$ to $0^\circ$C | 6.1115 | 23.036 | 279.82 | 333.7 | 2.2 | 0.0383 | $6.4\times10^{-6}$ |

Pressure and $e_s$ are in hPa.

### 4.2 Neutral radio refractivity

**[Implemented]** ITU-R P.453-14 gives

$$
N=\frac{77.6P}{T}-\frac{5.6e}{T}
+\frac{3.75\times10^5e}{T^2},
\qquad
n=1+10^{-6}N.
$$

The neutral excess path is

$$
\Delta L_{neutral}=10^{-6}\int_\Gamma N(\mathbf r,t)\,ds.
$$

Nephele requests up to 44 public NOAA weather-model pressure surfaces from 1000 to 10 hPa and derives $N$ only where the returned thermodynamic inputs are valid. The usable count and ceiling depend on model and location. These are model samples, not direct soundings or independent observed degrees of freedom.

### 4.3 Gaseous absorption and dispersion

**[Implemented in the offline research estimator]** The ITU-R P.676-13
line-by-line oxygen and water-vapor attenuation model gives

$$
\gamma_{gas}=0.1820 f_{GHz}
\left[N''_{O_2}(f,P,T)+N''_{H_2O}(f,P,T,e)\right]
\quad\mathrm{dB/km},
$$

$$
A_{gas}=\int_\Gamma\gamma_{gas}\,ds.
$$

[`satrf/src/satrf/spectroscopy.py`](../satrf/src/satrf/spectroscopy.py) implements
the complete P.676-13 oxygen/water-vapor line tables, line strengths, widths,
continua, and attenuation equations. Its numerical output was independently
checked against ITU-Rpy 0.4.0. The nonlinear joint estimator combines this
attenuation with P.453 neutral delay and P.840-9 liquid absorption.

**[Implemented in the additive high-fidelity Python path]** The piecewise WGS-84
ray and frozen-ray array inverse use the real dispersive part of P.676 under one
phase/group convention, with P.453/P.840, curved-ray bending, attenuation,
antenna/hardware outputs, and explicit rank/DOFS abstention. It accepts either
calibrated medium-only quantities or raw resolved carrier phase, group ToF, and
RSSI after full-covariance whitening and exact cross-link clock/gain nullspace
projection. The latter is differential-only: wrapped phase, unresolved integer
ambiguity, static-state Doppler assimilation, absolute nuisance recovery, and
atmospheric emission/brightness temperature remain scientific targets. See
[`HIGH_FIDELITY_REFRACTION.md`](HIGH_FIDELITY_REFRACTION.md).

**[Implemented in the interactive path]** `lib/atmospheric-propagation.ts`
evaluates the complete P.676-13 oxygen and water-vapour line tables and
continua for every supplied pressure-level state. It converts total pressure,
temperature, and relative humidity with P.453-14, then integrates gas loss and
neutral excess path over caller-supplied spherical-shell segment lengths.
Repository float64 golden vectors cover scalar kernels and complete column
integrals. The public NWP column requests 44 pressure surfaces but retains only
the usable fields returned by the explicit HRRR or GFS model, so the UI labels
its actual ceiling and never treats the requested layer count as independent
observational resolution.

---

## 5. Liquid cloud, multiple cloud layers, rain, ice, and sky noise

### 5.1 ITU liquid-cloud attenuation

For small liquid droplets under the Rayleigh approximation, ITU-R P.840-9 gives

$$
\gamma_{cloud}(f,T,\mathbf r)=K_l(f,T)M(\mathbf r)
\quad\mathrm{dB/km},
$$

$$
A_{cloud}=\int_{\Gamma\cap cloud}\gamma_{cloud}\,ds.
$$

Here $M$ is LWC in g/m$^3$ and $K_l$ has units $(\mathrm{dB/km})/(\mathrm{g/m^3})$. The small-droplet model is specified for liquid cloud/fog over 1--200 GHz; it is not an ice-cloud model.

### 5.2 Double-Debye water coefficient used by Nephele

**[Implemented]** With $f$ in GHz, $233\le T\le303$ K, and

$$
\theta=\frac{300}{T}-1,
$$

$$
\epsilon_0=77.66+103.3\theta,
\quad \epsilon_1=0.0671\epsilon_0,
\quad \epsilon_2=3.52,
$$

$$
f_p=20.2-146\theta+316\theta^2,
\qquad f_s=39.8f_p,
$$

$$
\epsilon''=
\frac{f(\epsilon_0-\epsilon_1)}{f_p[1+(f/f_p)^2]}
+\frac{f(\epsilon_1-\epsilon_2)}{f_s[1+(f/f_s)^2]},
$$

$$
\epsilon'=\frac{\epsilon_0-\epsilon_1}{1+(f/f_p)^2}
+\frac{\epsilon_1-\epsilon_2}{1+(f/f_s)^2}+\epsilon_2,
$$

$$
\eta=\frac{2+\epsilon'}{\epsilon''},
\qquad
K_l=\frac{0.819f}{\epsilon''(1+\eta^2)}.
$$

For layer $k$,

$$
A_{cloud,k}=K_l(f,T_k)M_kL_k,
\qquad
A_{cloud}=\sum_k A_{cloud,k}.
$$

### 5.3 Cloud carrier-phase model

P.840 standardizes attenuation; it does not alone provide a complete coherent cloud phase observable. A consistent dilute-droplet extension uses complex Maxwell-Garnett mixing.

Let the liquid volume fraction be

$$
v=\frac{M}{\rho_w},
\qquad \rho_w\simeq10^6\ \mathrm{g/m^3},
$$

and

$$
q=\frac{\tilde\epsilon_w-\epsilon_{air}}
{\tilde\epsilon_w+2\epsilon_{air}}.
$$

Then

$$
\tilde\epsilon_{eff}
=\epsilon_{air}\left(1+\frac{3vq}{1-vq}\right),
\qquad
\tilde n_{eff}=\sqrt{\tilde\epsilon_{eff}}.
$$

The complex cloud-only field ratio is

$$
\frac{E_{after}}{E_{before}}
=\exp\left[-k_0\int\left(\kappa_{eff}-\kappa_{clear}\right)ds\right]
\exp\left[-jk_0\int\left(n'_{eff}-n'_{clear}\right)ds\right].
$$

Thus layer $k$ contributes

$$
\Delta L_{cloud,k}=\int_{\Gamma_k}
(n'_{eff,k}-n'_{clear,k})ds,
$$

$$
\Delta\phi_{cloud,k}=-\frac{2\pi}{\lambda}\Delta L_{cloud,k},
\qquad
\Delta\phi_{cloud}=\sum_k\Delta\phi_{cloud,k}.
$$

**[Approximation, implemented]** The current display uses the real, first-order dilute form

$$
\epsilon_{eff,k}\approx1+
\frac{3v_k(\epsilon'_w-1)}{\epsilon'_w+2},
$$

$$
\Delta L_{cloud,k}\approx
(\sqrt{\epsilon_{eff,k}}-1)L_k.
$$

It wraps displayed phase into $[-180^\circ,180^\circ)$, although inversion must retain unwrapped phase and cycle-slip flags.

### 5.4 Current public-weather cloud-layer construction

**[Approximation, implemented]** The public pressure-level feed supplies cloud cover, temperature, height, and wind but not LWC on those levels. Nephele therefore creates no more than four scenario slabs from levels whose cover $C_k\ge12\%$.

Layer boundaries are midpoints between adjacent pressure-level heights, with thickness clipped to 0.25--3 km. Scenario LWC is

$$
M_k=\operatorname{clip}\left[
M_0\left(0.25+0.75\frac{C_k}{100}\right)
\exp\left(-\frac{\max(0,z_k-1.5)}{7}\right),
0.005,1.2\right]\ \mathrm{g/m^3}.
$$

This creates separately inspectable layers but does not make their water contents observed. A field system should ingest cloud liquid/ice mixing ratios, radar/radiometer constraints, or retrieve them from calibrated RF observables.

### 5.5 Rain attenuation

ITU-R P.838-3 gives

$$
\gamma_R=kR_r^\alpha\quad\mathrm{dB/km},
\qquad
A_R=\int_\Gamma\gamma_R\,ds.
$$

For horizontal/vertical coefficients $k_H,k_V,\alpha_H,\alpha_V$, path elevation $E$, and polarization tilt $\tau$,

$$
k=\frac{k_H+k_V+(k_H-k_V)\cos^2E\cos2\tau}{2},
$$

$$
\alpha=
\frac{k_H\alpha_H+k_V\alpha_V
+(k_H\alpha_H-k_V\alpha_V)\cos^2E\cos2\tau}{2k}.
$$

**[Implemented]** Nephele evaluates the P.838-3 coefficient fits. For an
instantaneous grid rain rate, it forms a declared scenario column from the
instantaneous pressure-level 0 °C isotherm plus 0.36 km and integrates
$A_R=\gamma_RL_R$ through that curved-Earth column. That instantaneous height
is not labeled P.839 climatology. P.839 rain-height and P.618 effective-path
attribution are available only when the caller explicitly supplies both a
climatological rain height and the $R_{0.01}$ rate. Missing rain rate,
unbracketed freezing level, unresolved station MSL height, or below-horizon
geometry returns unavailable rather than dry weather.

P.838 does not define a complete coherent rain phase, particle-size distribution, depolarization, or Doppler spectrum. **[Scientific target]** Use a complex forward-scattering model driven by drop-size distribution, temperature, shape, canting, and polarization; its extinction must be checked against P.838.

### 5.6 Ice, snow, hail, and mixed phase

**[Scientific target]** Ice response depends on ice-water content, particle size distribution, habit, density, orientation, aggregation, melting, and frequency. Use documented scattering databases or T-matrix/discrete-dipole models. Do not apply the liquid P.840 coefficient to ice. Until constrained, ice/mixed-phase layers must carry an explicit model-error term.

Polarimetric differential phase is

$$
\Phi_{DP}=\phi_H-\phi_V
=2\int_\Gamma K_{DP}(\mathbf r)\,ds,
$$

under the common weather-radar convention for one-way specific differential phase $K_{DP}$. The exact factor and sign must match the adopted PRO/radar convention. Differential phase can suppress common geometry/clock terms and is substantially more diagnostic of oriented nonspherical hydrometeors than a single scalar carrier phase.

### 5.7 Atmospheric emission and sky noise

Attenuating atmosphere is also emissive. A useful equivalent-sky approximation is

$$
T_{sky}=T_{mr}(1-10^{-A/10})+2.7\,10^{-A/10}\ \mathrm{K}.
$$

The receiver should propagate this through system noise temperature/G/T rather than showing attenuation alone.

---

## 6. Phase and Doppler decomposition

### 6.1 Total received phase

The tracked carrier phase can be written

$$
\begin{aligned}
\phi_{rx}(t)={}&phi_{tx,clock}(t_{tx})-\phi_{rx,clock}(t_{rx})\\
&-\frac{2\pi f_c}{c}
\left[R+\Delta L_{neutral}+\Delta L_{cloud}
+\Delta L_{rain,\phi}+\Delta L_{iono,\phi}\right]\\
&+\phi_{antenna}+\phi_{cable}+\phi_{multipath}+\phi_{PLL}+2\pi N_{amb}.
\end{aligned}
$$

$N_{amb}$ is the integer-cycle ambiguity. Absolute cloud phase is not recoverable until clocks, geometry, hardware, ambiguity, and non-cloud media are estimated or differenced.

### 6.2 One-way geometric Doppler

The instantaneous residual frequency is

$$
f_D=\frac{1}{2\pi}\frac{d\phi_{rx}}{dt}.
$$

The first-order geometric term is

$$
f_{D,geom}=-\frac{f_c}{c}\dot R.
$$

**[Implemented]** Nephele evaluates this term for every selected satellite/station pair.

### 6.3 Neutral/cloud excess Doppler

For any phase excess path,

$$
f_{D,medium}=-\frac{f_c}{c}\frac{d\Delta L_{\phi,medium}}{dt}.
$$

For a moving ray parameterized by $\mathbf x(\xi,t)$,

$$
I(t)=\int_0^1q(\mathbf x(\xi,t),t)
\left\|\frac{\partial\mathbf x}{\partial\xi}\right\|d\xi,
$$

$$
\frac{dI}{dt}=\int_0^1
\left(\frac{\partial q}{\partial t}
+\nabla q\cdot\frac{\partial\mathbf x}{\partial t}\right)J\,d\xi
+\int_0^1q\frac{\partial J}{\partial t}d\xi,
\quad J=\left\|\frac{\partial\mathbf x}{\partial\xi}\right\|.
$$

This separates medium evolution/advection from the rapidly moving LEO ray footprint.

**[Approximation, implemented]** The displayed cloud-motion scenario uses

$$
v_{\parallel,k}=v_k\cos(Az_{toward,k}-Az_{ray}),
$$

$$
\frac{d\Delta L_k}{dt}
\approx \Delta L_k\,g_\phi\,v_{\parallel,k},
\qquad g_\phi=8\times10^{-4}\ \mathrm{m^{-1}},
$$

$$
f_{D,cloud,k}=-\frac{f_c}{c}
\frac{d\Delta L_k}{dt}.
$$

This is an exploratory frozen-flow phase-screen sensitivity, **not a retrieved wind product**.

### 6.4 Moving-scatterer Doppler

Let $\hat{\mathbf k}_{in}$ point from transmitter to scatterer and $\hat{\mathbf k}_{out}$ from scatterer to receiver. A moving hydrometeor/scatterer contributes approximately

$$
f_{D,scat}=\frac{1}{\lambda}
\mathbf v_{scat}^{T}(\hat{\mathbf k}_{out}-\hat{\mathbf k}_{in}).
$$

Its magnitude approaches $2|v_r|/\lambda$ for monostatic backscatter and approaches zero for direct forward propagation. Therefore direct transparent-cloud Doppler is not equivalent to weather-radar Doppler.

**[Implemented simulation]** The array mode now places a synthetic rain-scattering cell inside the dominant modeled cloud layer and generates a delay-gated bistatic Doppler observation for every usable satellite--station pair. A weighted least-squares inverse estimates the local east, north, and upward hydrometeor-velocity components from the scattering vectors only. The truth generator combines scenario horizontal wind, vertical air motion, and terminal fall speed; those truth values are withheld from the inverse and used solely to report vector error. Rank-deficient geometries and fewer than four informative observations are rejected. This is a proof-of-concept observing-system simulation, not a claim that an unmodified communications receiver exposes range-resolved precipitation echoes.

### 6.5 Ionospheric phase and Doppler

For slant TEC,

$$
TEC=\int_\Gamma N_e\,ds,
$$

the first-order group and carrier-phase paths are

$$
\Delta L_{iono,g}=+\frac{40.3\,TEC}{f^2},
\qquad
\Delta L_{iono,\phi}=-\frac{40.3\,TEC}{f^2}.
$$

Thus

$$
f_{D,iono}=+\frac{40.3}{cf}\frac{dTEC}{dt}.
$$

Dual/multi-frequency observations separate the leading $f^{-2}$ ionosphere from approximately nondispersive neutral delay away from absorption lines.

### 6.6 Error propagation from orbit knowledge

Range and range-rate errors directly contaminate weather phase and Doppler:

$$
\sigma_\phi\simeq\frac{2\pi}{\lambda}\sigma_R,
\qquad
\sigma_{f_D}\simeq\frac{f_c}{c}\sigma_{\dot R}.
$$

At 12 GHz, a 1 m/s range-rate error is about 40 Hz. A 1 Hz geometric-Doppler residual requires roughly 2.5 cm/s range-rate knowledge before clock, oscillator, and hardware errors are considered.

---

## 7. RF-to-digital receiver emulation

### 7.1 RF, downconversion, and complex samples

For transmitted complex waveform $x(t)$,

$$
r_{RF}(t)=\Re\{[h(t)*x(t)]e^{j2\pi f_ct}\}+n_{RF}(t).
$$

Mixing with local oscillator $f_{LO}$ and low-pass filtering gives

$$
z(t)=\operatorname{LPF}\{2r_{RF}(t)e^{-j2\pi f_{LO}t}\}
\approx h(t)*x(t)e^{j2\pi\Delta f t}+w(t),
$$

$$
z[n]=z(n/f_s)+q[n],
$$

where $\Delta f=f_c+f_D-f_{LO}$ and $q[n]$ is quantization error.

The receiver should first wipe off predicted geometric Doppler, then estimate residual carrier/phase on known pilots:

$$
z_{wipe}[n]=z[n]
\exp\left[-j2\pi\sum_{m\le n}\frac{\hat f_{D,geom}[m]}{f_s}\right].
$$

### 7.2 Noise, SNR, $C/N_0$, and quantization

At approximately 290 K,

$$
N_{dBm}\approx-174+10\log_{10}B+NF.
$$

$$
SNR_{dB}=P_{r,dBm}-N_{dBm},
\qquad
\frac{C}{N_0}_{dBHz}=P_{r,dBW}-10\log_{10}(k_BT_{sys}).
$$

For an ideal $b$-bit ADC driven near full scale,

$$
SNR_{q,dB}\approx6.02b+1.76.
$$

**[Implemented]** Nephele combines thermal and quantization SNR as

$$
SNR_{eff,lin}=
\left(SNR_{thermal,lin}^{-1}+SNR_{q,lin}^{-1}\right)^{-1}.
$$

For bit rate $R_b$,

$$
\left(\frac{E_b}{N_0}\right)_{dB}
=SNR_{eff,dB}+10\log_{10}\frac{B}{R_b}.
$$

### 7.3 QPSK decode model

**[Approximation, implemented]** Nephele assumes Gray-coded coherent QPSK with $R_b=2R_s$ and

$$
P_b\approx Q\left(\sqrt{2E_b/N_0}\right)
=\frac12\operatorname{erfc}\left(\sqrt{E_b/N_0}\right).
$$

The demonstration decoder declares lock if line of sight exists,

$$
E_b/N_0\ge4\ \mathrm{dB},
\qquad
|f_{res}|<0.05R_s.
$$

Its output bytes are synthetic. A real system needs the actual waveform, pilots, coding, AGC state, sample clock, phase-noise model, beam/handover metadata, and raw calibrated I/Q.

---

## 8. What one moving satellite-to-ground link can retrieve

At observation time $t_i$, a direct link generally measures a path integral:

$$
y_i=\int_{\Gamma_i}x(\mathbf r,t_i)ds+\epsilon_i
\simeq\sum_j\ell_{ij}x_j+\epsilon_i.
$$

For horizontally uniform layers with thicknesses $\Delta h_j$,

$$
\ell_{ij}=\frac{\Delta h_j}{\sin E_i},
$$

so every matrix row is a scalar multiple of the same thickness vector:

$$
\mathbf a_i=\frac{1}{\sin E_i}
[\Delta h_1,\ldots,\Delta h_K].
$$

Therefore $\operatorname{rank}(\mathbf A)=1$ in the ideal plane-parallel case. A single direct channel can robustly constrain a total column or total attenuation, but it cannot uniquely separate multiple vertical layers merely by taking many closely related samples.

The moving LEO nevertheless provides useful samples

$$
t_i=t_0+i\Delta t,
\qquad
\{A_i,\phi_i,f_{D,i},Az_i,E_i\},
$$

which can show changing integrated weather along the pass. A 2-D along-track curtain becomes possible if the cloud field is horizontally structured and a frozen-flow/advection prior is credible. Unique 3-D vertical attribution still requires crossing rays, frequency/polarization diversity, external priors, or occultation geometry.

The sample interval should satisfy both receiver dynamics and atmospheric evolution. If the highest residual fluctuation of interest is $f_{max}$,

$$
\Delta t\le\frac{1}{2f_{max}},
$$

while a tomography window $T_w$ should keep evolution error below the measurement error:

$$
\|\mathbf x(t+T_w)-\mathcal M_{T_w}\mathbf x(t)\|
\lesssim\sigma_{model}.
$$

More display samples do not create more independent atmospheric information if the rows of the observation Jacobian remain collinear.

---

## 9. Multiple satellites, stations, layers, and 3-D/4-D tomography

### 9.1 Linear ray-to-voxel model

For ray $m$ and voxel $v$, let $A_{mv}=\ell_{mv}$ be the in-voxel path length. Then

$$
\mathbf y=\mathbf A\mathbf x+\boldsymbol\epsilon.
$$

For slant water vapor (SWV), $x_v$ is water-vapor density. For cloud attenuation at one frequency,

$$
y_m^{cloud}(f)=\sum_v
\ell_{mv}K_l(f,T_v)M_v+b_m+\epsilon_m.
$$

For several physical mechanisms,

$$
\begin{aligned}
y_m^{A}(f)={}&\sum_v\ell_{mv}\big[
\gamma_{gas,v}(f)+K_l(f,T_v)M_v\\
&+k(f,pol)R_{r,v}^{\alpha(f,pol)}
+\gamma_{ice,v}(f)\big]+b_m^A+\epsilon_m^A,
\end{aligned}
$$

$$
y_m^{\phi}(f)=-\frac{2\pi f}{c}
\sum_v\ell_{mv}\Delta n'_{v}(f)
+b_m^\phi+\epsilon_m^\phi,
$$

$$
y_m^{D}(f)=\frac{1}{2\pi}\frac{d y_m^\phi}{dt}
+b_m^D+\epsilon_m^D.
$$

This joint multi-frequency/polarization problem is nonlinear when rain microphysics, ice, clocks, and wind are unknown.

### 9.2 Multilayer contribution accounting

For known layer geometry, every ray's modeled contributions can be kept separate:

$$
A_{tot,m}=\sum_k A_{m,k},
\qquad
\Delta\phi_{tot,m}=\sum_k\Delta\phi_{m,k},
\qquad
f_{D,tot,m}=\sum_k f_{D,m,k}.
$$

This answers “how much did each modeled layer contribute?” It does **not** prove that the measured total uniquely determines each term. Measured layer separation requires an adequately ranked Jacobian

$$
\mathbf J=\frac{\partial\mathbf h(\mathbf x)}{\partial\mathbf x},
$$

with independent elevation, azimuth, time, frequency, polarization, and/or external constraints.

### 9.3 Current synthetic cloud truth

**[Implemented, synthetic]** Nephele constructs an advected multilayer LWC field for testing. For voxel $v$ and layer $k$,

$$
M_v=\operatorname{clip}\left[
\sum_k M_k\frac{\Delta z_{vk}}{\Delta z_v}
\left(0.12+0.88e^{-r_{vk}^2/2\sigma_k^2}\right)
\left(0.2+0.8\frac{C_k}{100}\right),0,1.5\right].
$$

Each Gaussian center is translated using the layer wind. The synthetic observation is

$$
\mathbf y=\mathbf A\mathbf x_{truth}
$$

with a deterministic grid-relative perturbation. The browser OSSE offsets paths
by as much as 20% of the smallest horizontal cell and 15% of a vertical cell,
plus a declared 2% gain bias. The inversion never receives $\mathbf x_{truth}$ directly.

### 9.4 ART

For ray row $\mathbf a_i^T$, non-negative algebraic reconstruction is

$$
\mathbf x^{(q+1)}=Pi_+\left[
\mathbf x^{(q)}+lambda
\frac{y_i-\mathbf a_i^T\mathbf x^{(q)}}
{\|\mathbf a_i\|_2^2}\mathbf a_i\right].
$$

**[Implemented]** Nephele uses $\lambda=0.72$, then applies either neighbor smoothing or a smoothed total-variation step.

### 9.5 SIRT

Define

$$
r_i=\frac{y_i-\sum_jA_{ij}x_j}{\sum_j|A_{ij}|},
\qquad
c_j=\sum_i|A_{ij}|.
$$

**[Implemented]** The update is

$$
x_j\leftarrow\Pi_+\left[x_j+
0.92\frac{\sum_iA_{ij}r_i}{c_j}\right].
$$

### 9.6 MART

**[Implemented]** For row prediction $\hat y_i=\mathbf a_i^T\mathbf x$ and $s_i=\sum_jA_{ij}$,

$$
x_j\leftarrow\max\left(10^{-8},
x_j\left[\operatorname{clip}\left(\frac{y_i}{\hat y_i},0.1,10\right)\right]^{0.42A_{ij}/s_i}\right).
$$

### 9.7 MAP/regularized scientific inversion

**[Implemented offline research estimator; reduced form shown]** Estimate the
atmospheric and nuisance state by

$$
\hat{\mathbf x}=\arg\min_{\mathbf x\ge0,\boldsymbol\beta}
\left\|\mathbf y-\mathbf h(\mathbf x,\boldsymbol\beta)\right\|_{\mathbf R^{-1}}^2
+\left\|\mathbf x-\mathbf x_b\right\|_{\mathbf B^{-1}}^2
+\lambda_s\|\mathbf L_s\mathbf x\|_2^2
+\lambda_{TV}\operatorname{TV}(\mathbf x)
+\lambda_t\|\mathbf x_{t+1}-\mathcal M(\mathbf x_t)\|_2^2.
$$

$\boldsymbol\beta$ contains satellite/station clocks, EIRP and gain offsets,
beam state, wet-antenna loss, multipath, and other nuisance parameters. The
implemented OSSE instantiates clock/path, receiver-gain, and beam/handover
states. Wet-antenna and sparse multipath terms remain model-discrepancy stresses,
not estimated state blocks.

### 9.8 4-D advection/evolution

An atmospheric scalar $x$ may evolve as

$$
\frac{\partial x}{\partial t}
+\mathbf u\cdot\nabla x
=\nabla\cdot(D\nabla x)+S-L.
$$

The simplest frozen-flow model is

$$
x(\mathbf r,t+\Delta t)
\approx x(\mathbf r-\mathbf u\Delta t,t).
$$

**[Implemented in both paths, with different roles]** The browser uses
horizontal semi-Lagrangian back-tracing and bilinear interpolation as a prior to
each independent display solve. The offline research estimator places the same
operator inside one weak-constraint six-epoch optimization. Formation,
dissipation, vertical motion, turbulence, phase changes, and precipitation are
model error, not captured by pure translation.

### 9.9 Implemented nonlinear joint thermodynamic, multi-epoch inverse

The original [`joint_4d.py`](../satrf/src/satrf/joint_4d.py) wet-refractivity/
liquid-water inverse remains a precursor and regression benchmark. The active
research estimator is
[`thermodynamic_4d.py`](../satrf/src/satrf/thermodynamic_4d.py). At epoch $t$ it
estimates $4\times4\times4$ trilinear control fields for temperature $T$,
relative humidity $H$, and cloud liquid $M$, mapped to a $5\times5\times4$
reporting grid. A deterministic ISA-like dry-pressure profile $p_d(z)$ is a
declared structural model, not a measured or historical weather input.

P.453 closes RH, vapor density, and refractivity through

$$
e=\frac{H}{100}e_s(T,p_d+e),\qquad
\rho_v=216.7\frac{e}{T},\qquad
N=77.6\frac{p_d}{T}+72\frac eT+3.75\times10^5\frac e{T^2}.
$$

The first equation is solved by a fixed-point iteration because the P.453
enhancement factor uses total pressure while P.676 separates dry and vapor
pressure. Each frequency has

$$
\gamma_f=0.1820f\left(N''_{O_2}+N''_{H_2O}\right)+K_l(f,T)M,
$$

using exact P.676-13 and P.840-9 coefficients. With ray-length vector
$\mathbf a_{it}$ in km and line-of-sight unit vector $\hat{\mathbf l}_{it}$,

$$
\begin{aligned}
y^L_{it}&=10^{-3}\mathbf a_{it}^T\mathbf B\mathbf N_t
 +c^r_{r(i)t}+c^s_{s(i)t}
 +\hat{\mathbf l}_{it}^T\delta\mathbf r^s_{s(i)t}+\epsilon^L_{it},\\
y^A_{ift}&=\mathbf a_{it}^T\mathbf B\boldsymbol\gamma_{ft}
 +g^r_{r(i)t}+g^b_{b(i)}+\epsilon^A_{ift}.
\end{aligned}
$$

The signed nuisance state therefore contains receiver/satellite path-equivalent
clocks, three-axis satellite orbit error, receiver gain, and beam/handover gain.
Bounds enforce $0\le H\le100$, $M\ge0$, and temperature within 15 K of the
structural profile. A physically scaled sparse Gauss--Newton solve minimizes the
nonlinear RF likelihood plus absolute-profile, spatial, semi-Lagrangian dynamic,
and nuisance random-walk penalties. It receives no prior weather measurement.

Six epochs, 768 paths, and one delay plus six attenuation channels at
12/22.235/30/40/50/54 GHz produce 5,376 observations. On untouched seeds
904--905, mean RMSE is 0.620 deg C, 2.829 RH percentage points, and 0.406 mm PWV;
liquid RMSE is 0.0062 g/m3. A no-RF standard profile gives 1.307 deg C, 5.814
points, and 3.499 mm. The likelihood Jacobian is full column rank on seed 904
(1,152/1,152) but has condition number $2.04\times10^7$: bounds and
regularization are essential, and output voxels are not independently resolved.

A staged post-freeze audit adds unchanged base-model seeds 917--924 and
925--928. Across all 14 base trials (including 904--905), temperature/RH/PWV
RMSE is $0.679\pm0.103$ deg C, $3.203\pm0.432$ points, and
$0.433\pm0.056$ mm; 13/14 trials pass all three gates. Seed 921 is the single
failure at 4.039 RH points. A subsequent physics-only E-optimal screen selected
175 GHz under a 40 dB/10-km loss constraint, but paired untouched seeds
925--928 reject it: PWV improves from 0.423 to 0.212 mm while temperature/RH
degrade from 0.636/3.003 to 0.883/4.642, all-gate passes fall from 4/4 to 1/4,
and mean solve time rises from 44 to 130 s. The active model therefore retains
the six-band design. Local Jacobian rank and singular values are necessary
diagnostics, not sufficient model-selection criteria for the global nonlinear
weak-constraint inverse.

The seed-906 ablation gives 2.613 deg C/15.385 points/2.438 mm without nuisance
estimation, 0.671/3.533/0.368 for joint static, 0.629/3.300/0.388 for joint 4D,
and 0.503/3.250/0.388 for an oracle-calibrated dynamic solve. Temporal coupling
improves temperature, RH, and liquid over joint static, but not PWV on this one
ablation seed.

**[Implemented robust cycle]** For a same-link group $G_l$ containing delay and
all six attenuation bands, the standardized residual magnitude and group-Huber
weight are

$$
q_l=\sqrt{\frac{1}{|G_l|}\sum_{i\in G_l}r_i^2},
\qquad
w_l=\max\left(w_{min},\min\left[1,\frac{\delta}{q_l}\right]\right).
$$

All rows in $G_l$ receive $\sqrt{w_l}$. The frozen cycle uses $\delta=1.5$ and
$w_{min}=0.05$; robust serving requires weighted reduced $\chi^2\le3$, at most
10% flagged links, and at least 75% effective weight. Under 5% coherent bursts,
the Gaussian solve fails at 1.364 deg C/6.602 points/0.700 mm, while robust
weighting recovers 0.591/3.224/0.373, with 94.7% flag precision and 100% recall.
Thirty-percent link loss, doubled nuisance, wrong wind, and the combined robust
stress also remain below the three requested gates. See the frozen
[`thermodynamic_4d_robustness.json`](../data/satrf/reports/thermodynamic_4d_robustness.json).

### 9.10 Posterior uncertainty, resolution, and observability

For a locally linear model with prior covariance $\mathbf B$ and observation covariance $\mathbf R$,

$$
\mathbf C_{post}\approx
(\mathbf J^T\mathbf R^{-1}\mathbf J+\mathbf B^{-1})^{-1}.
$$

The averaging/resolution matrix is

$$
\mathbf K=\mathbf C_{post}\mathbf J^T\mathbf R^{-1}\mathbf J,
$$

and degrees of freedom for signal are

$$
DFS=\operatorname{tr}(\mathbf K).
$$

Use singular values, condition number, vertical/horizontal averaging kernels, posterior correlation length, and $DFS$ to report actual resolving power. Voxel size alone is not resolution.

A network-design objective can maximize incremental information,

$$
\Delta\mathcal I=\frac12\log\det
\left(\mathbf I+\mathbf B^{1/2}\mathbf J^T
\mathbf R^{-1}\mathbf J\mathbf B^{1/2}\right),
$$

subject to active beams, elevation masks, link margin, receiver availability, calibration, and latency.

**[Diagnostic, implemented in the browser OSSE]** Relative ray-path exposure is

$$
s_v=\sum_m|A_{mv}|,
\qquad c_v=s_v/\max_v s_v,
$$

The browser uses this quantity only for opacity and coverage; it is never
called confidence. Its OSSE display-error proxy is explicitly not a posterior
standard deviation and is never shown with sigma notation. The production
iterative inverse reports exact path exposure, a Fisher-information diagonal,
effective rank, and a condition-number diagnostic, but does not manufacture a
posterior covariance.
The thermodynamic estimator forms the full atmospheric--nuisance Laplace
covariance, including cross-correlations, and propagates it to voxel $T$/RH/$M$
and column PWV. Raw 95% coverage on seeds 915--916 is
66.3%/81.8%/84.0%/74.3%; split-conformal multipliers fitted only on seeds
913--914 raise marginal coverage to 96.8%/94.9%/98.5%/96.7%. These are
synthetic marginal intervals, not simultaneous-field or field-calibrated
coverage, and they do not relabel the browser proxy as posterior uncertainty.

### 9.11 Reconstruction metrics

The normalized measurement residual is

$$
r_{norm}=100
\frac{\|\mathbf y-\mathbf A\hat{\mathbf x}\|_2}
{\|\mathbf y\|_2}\ \%.
$$

For synthetic truth,

$$
NRMSE=100
\frac{\|\hat{\mathbf x}-\mathbf x_{truth}\|_2}
{\|\mathbf x_{truth}\|_2}\ \%.
$$

The browser OSSE groups observations by station and withholds complete station
groups for its validation residual. Hidden-truth measurements are synthesized
with independently perturbed endpoints, path geometry, and gain. Geometry
offsets scale with the grid (20% of the smallest horizontal cell and 15% of a
vertical cell), so the stress cannot collapse into a negligible sub-cell nudge
when resolution changes. Measurements are then inverted
with the nominal operator. This removes the former same-operator/every-fifth-ray
inverse crime, but remains synthetic evidence. The offline estimator instead
freezes disjoint validation, test, and robustness seed sets. Real evaluation
must withhold storms, stations, terminal versions, seasons, and independent
instruments.

---

## 10. Satellite/ground arrays and 3-D reconstruction

### 10.1 Spatial steering vector

For array element position $\mathbf p_m$ relative to the array reference and propagation direction $\hat{\mathbf u}$,

$$
a_m(\hat{\mathbf u},f)=g_m(f,\hat{\mathbf u})
\exp[-jk_0\mathbf p_m^T\hat{\mathbf u}].
$$

For weights $\mathbf w$,

$$
y_b(t)=\mathbf w^H\mathbf y(t),
\qquad
G_b(\hat{\mathbf u})=|\mathbf w^H\mathbf a(\hat{\mathbf u})|^2.
$$

The interferometric phase on baseline $\mathbf b=\mathbf p_2-\mathbf p_1$ is

$$
\Delta\phi_b=-\frac{2\pi}{\lambda}\mathbf b^T\hat{\mathbf u}
+\Delta\phi_{hw}+2\pi n.
$$

Calibrated arrays improve direction-of-arrival, multipath rejection, polarization, and phase precision.

### 10.2 MIMO/bistatic channel

For transmitter element $n$, receiver element $m$, and paths $p$,

$$
H_{mn}(f,t)=\sum_p\alpha_p(f,t)
e^{-j2\pi f\tau_p(t)}
a_{r,m}(\hat{\mathbf u}_{r,p})
a_{t,n}^*(\hat{\mathbf u}_{t,p}).
$$

Multiple satellite/ground pairs create the crossing line integrals needed for tomography. Element arrays add angular information to each endpoint, but they do not by themselves localize a transparent medium along one direct ray.

### 10.3 Fundamental resolution scales

For aperture diameter $D$,

$$
\Delta\theta\sim\frac{\lambda}{D}.
$$

For a one-way wideband channel, delay-path resolution is approximately

$$
\Delta L\sim\frac{c}{B}.
$$

For monostatic radar range, the round-trip factor gives

$$
\Delta R\sim\frac{c}{2B}.
$$

Direct communication links normally identify the integrated direct path; they do not range-resolve every transparent cloud layer unless the layers create resolvable scattered/multipath components. Tomographic localization comes from intersecting rays and priors.

---

## 11. Calibration and identifiable observables

### 11.1 Amplitude calibration

For link $m=(s,g,b)$ containing satellite, ground station, and beam state,

$$
P_{obs,m}=P_{weather,m}
+b_s^{EIRP}+b_g^{gain}+b_b^{beam}
+b_g^{wet\ antenna}+\epsilon_m
$$

in dB. A useful weather residual is

$$
\Delta A_m=A_{obs,m}-A_{clear,pred,m},
$$

but only after EIRP, antenna scan loss, polarization, AGC, coding/power control, obstruction, and handover states are removed or jointly estimated.

### 11.2 Phase and Doppler residuals

$$
\Delta\phi_m=\operatorname{unwrap}
(\phi_{obs}-\phi_{geom}-\phi_{clock}-\phi_{hardware}
-\phi_{iono}-\phi_{clear\ neutral}),
$$

$$
\Delta f_m=f_{obs}-f_{geom}-f_{clock}-f_{hardware}-f_{iono}.
$$

Never interpolate through a carrier cycle slip, PLL loss, or undocumented beam/satellite handover.

### 11.3 Differencing

Simultaneous common-view receivers $a,b$ can suppress transmitter clock:

$$
\Delta\phi_{ab}=\phi_{s,a}-\phi_{s,b}.
$$

Double differences between satellites $s_1,s_2$ and receivers $a,b$ suppress common transmitter and receiver terms:

$$
\nabla\Delta\phi
=(\phi_{s_1,a}-\phi_{s_1,b})
-(\phi_{s_2,a}-\phi_{s_2,b}).
$$

The remaining weather signal is also differenced, so the geometry of the reference paths must be modeled.

### 11.4 Minimum real-data record

**[Measured input required]** A defensible sample should contain at least

$$
\{t,\text{satellite ID},\text{station ID},f,\text{beam ID},
\text{direction},I/Q,AGC,EIRP,\text{attitude},\text{orbit/clock},
T_{sys},\text{calibration flags}\}.
$$

Public catalog positions, public ground-station maps, throughput tests, and weather APIs do not provide this complete record.

---

## 12. Validation ladder and pass/fail quantities

### 12.1 Equation tests

1. Vacuum Friis amplitude and $-kR$ phase versus analytic range.
2. Finite-difference phase rate versus $-f\dot R/c$ Doppler.
3. P.453 refractivity and saturation-vapor-pressure reference cases.
4. P.676 gas attenuation/dispersion and layer integration.
5. P.838 rain and P.840 liquid-cloud attenuation reference cases.
6. P.531 dual-frequency TEC group delay and carrier phase.
7. Bistatic Doppler: zero in the forward limit and $2v_r/\lambda$ magnitude in monostatic backscatter.
8. Complex-material passivity and one fixed phasor sign convention.

### 12.2 Component measurements

- Clear-sky calibrated beacon passes for orbit/clock/hardware residuals.
- Co-located microwave radiometer, ceilometer/cloud radar, disdrometer, rain gauge, GNSS meteorology, and Doppler weather radar.
- Antenna pattern, radome wetting, cable delay, receiver linearity, AGC-off raw-I/Q, and clock stability.

### 12.3 End-to-end metrics

Report at least amplitude error (dB), unwrapped phase/path error (rad or mm), Doppler error (Hz), cycle-slip rate, timing error, calibration drift, LWC/LWP/rain/TEC retrieval error, posterior uncertainty calibration, spatial averaging kernels, and latency.

The decisive scientific comparison is the incremental posterior/forecast value of LEO observations relative to strong GNSS + NWP + radar/radiometer baselines.

---

## 13. Current Nephele implementation map

| Capability | Current math/status | Source |
|---|---|---|
| Orbit propagation | OMM/TLE + SGP4; 5 s anchor samples with visual interpolation | [`workers/orbit.worker.ts`](../workers/orbit.worker.ts), [`components/EarthScene.tsx`](../components/EarthScene.tsx) |
| Pair geometry | ECEF range, finite-difference range rate, azimuth/elevation, off-nadir angle | [`components/EarthScene.tsx`](../components/EarthScene.tsx) |
| Public weather cadence | Browser refresh target 5 min; source fields retain their own model valid time and resolution | [`components/WeatherTwin.tsx`](../components/WeatherTwin.tsx), [`app/api/weather/route.ts`](../app/api/weather/route.ts) |
| Link budget | Friis/FSPL, reference gains, pointing, polarization, gas/cloud/rain loss | [`lib/signal.ts`](../lib/signal.ts) |
| Neutral atmosphere | P.453 vapor pressure and refractivity on up to 44 usable NOAA pressure levels from a requested 1000-to-10 hPa stack | [`lib/atmosphere.ts`](../lib/atmosphere.ts) |
| Cloud layers | Up to four pressure-level slabs; LWC is a labeled scenario derived from public cover + UI state | [`lib/cloud-layers.ts`](../lib/cloud-layers.ts) |
| Cloud attenuation | P.840-9 double-Debye $K_lM L$ | [`lib/signal.ts`](../lib/signal.ts) |
| Cloud phase | Default-off dilute effective-permittivity scenario; wrapped only when explicitly enabled | [`lib/signal.ts`](../lib/signal.ts) |
| Cloud Doppler | Exploratory frozen-flow phase-gradient projection, not wind retrieval; missing temperature/wind quality abstains | [`lib/signal.ts`](../lib/signal.ts) |
| Rain | P.838 coefficients; instantaneous NWP-height scenario separated from explicit P.839 climatology/P.618 $R_{0.01}$ | [`lib/rain-propagation.ts`](../lib/rain-propagation.ts) |
| Rain velocity | Synthetic delay-gated bistatic Doppler with 3-D ENU weighted least-squares inversion, geometry rejection, uncertainty and truth error | [`lib/rain-velocity.ts`](../lib/rain-velocity.ts), [`components/EarthScene.tsx`](../components/EarthScene.tsx) |
| RF-to-digital | Generic reference QPSK chain; GNSS is a receive-only BPSK(1)/C/A-code reference with BER/lock/payload claims disabled | [`lib/signal.ts`](../lib/signal.ts) |
| 3-D rays | Exact local-ENU ray/voxel intersections in bounded sparse CSR; curvature quantified | [`lib/tomography.ts`](../lib/tomography.ts) |
| Reconstruction | Production external `Observation[]` boundary with a required bounded analysis epoch/window plus separate perturbed-operator OSSE; uncertainty-weighted ART, SIRT, MART, TV-ART; grouped holdout and advected prior | [`lib/tomography-observations.ts`](../lib/tomography-observations.ts), [`lib/tomography-osse.ts`](../lib/tomography-osse.ts) |
| Diagnostics | Relative path exposure, Fisher diagonal, conditioning/effective rank, and standardized residuals; no posterior covariance claim | [`lib/tomography.ts`](../lib/tomography.ts) |
| Linear joint 4-D precursor | Six-epoch wet-refractivity/liquid state plus signed path/gain/beam nuisance; retained as a regression baseline | [`satrf/src/satrf/joint_4d.py`](../satrf/src/satrf/joint_4d.py) |
| Nonlinear thermodynamic joint 4-D inverse | P.453 RH/vapor/refractivity + P.676-13 gas + P.840-9 liquid; $T$/RH/L and receiver/satellite clock, 3-D orbit, receiver gain, and beam gain in one bounded sparse solve | [`satrf/src/satrf/thermodynamic_4d.py`](../satrf/src/satrf/thermodynamic_4d.py), [`satrf/src/satrf/spectroscopy.py`](../satrf/src/satrf/spectroscopy.py) |
| Joint 4-D uncertainty | Full joint Laplace covariance plus split-conformal marginal calibration on disjoint seeds; not simultaneous-field or field-calibrated coverage | [`satrf/src/satrf/thermodynamic_4d.py`](../satrf/src/satrf/thermodynamic_4d.py), [`data/satrf/reports`](../data/satrf/reports) |
| Robust joint 4-D cycle | Seven-row same-link group-Huber IRLS with flagged-link/effective-weight budgets and frozen burst/link-loss/nuisance/wind cases | [`satrf/src/satrf/thermodynamic_4d.py`](../satrf/src/satrf/thermodynamic_4d.py), [`data/satrf/reports/thermodynamic_4d_robustness.json`](../data/satrf/reports/thermodynamic_4d_robustness.json) |
| Post-freeze frequency audit | Physics-only E-optimal 175 GHz proposal rejected by paired untouched end-to-end tests; frozen six-band model retained | [`satrf/src/satrf/thermodynamic_4d.py`](../satrf/src/satrf/thermodynamic_4d.py), [`data/satrf/reports/thermodynamic_frequency_augmentation_925_928.json`](../data/satrf/reports/thermodynamic_frequency_augmentation_925_928.json) |
| Real coherent RF ingest | Not connected | **Required next** |
| Precise orbit/clock/attitude | Not connected; catalog orbit is not phase grade | **Required next** |
| P.676-13 gas attenuation | Exact interactive and offline line-by-line implementations with cross-language golden vectors | [`lib/atmospheric-propagation.ts`](../lib/atmospheric-propagation.ts), [`satrf/src/satrf/spectroscopy.py`](../satrf/src/satrf/spectroscopy.py) |
| 3-D dispersive refraction | Additive vertical-cell-piecewise WGS-84 eikonal solver with real P.676 gas and P.840 liquid phase/group terms, per-band rays, explicit atmosphere/vacuum interface, first-order scalar plasma, antenna/hardware and moving-link adapters, sparse array stencils, and bounded calibrated-medium inverse with rank/DOFS abstention | [`satrf/src/satrf/simulator/piecewise_ray.py`](../satrf/src/satrf/simulator/piecewise_ray.py), [`satrf/src/satrf/simulator/array_weather_inverse.py`](../satrf/src/satrf/simulator/array_weather_inverse.py), [`HIGH_FIDELITY_REFRACTION.md`](HIGH_FIDELITY_REFRACTION.md) |
| Lower-troposphere wave optics | Scalar range-height plus bounded cross-range $u(r,y,z)$ split-step solvers; WGS-84 corridor sampling, hash-sealed two-slice material streaming, coherent medium/vacuum transfer, finite-band delay response, extinction, and explicit applicability/boundary gates. The current synthetic sharp-duct case fails vertical refinement and is not inverse truth. | [`satrf/src/satrf/simulator/wave_optics.py`](../satrf/src/satrf/simulator/wave_optics.py), [`satrf/src/satrf/simulator/cross_range_wave_optics.py`](../satrf/src/satrf/simulator/cross_range_wave_optics.py), [`satrf/src/satrf/simulator/streaming_wave_optics.py`](../satrf/src/satrf/simulator/streaming_wave_optics.py), [`HIGH_FIDELITY_REFRACTION.md`](HIGH_FIDELITY_REFRACTION.md) |
| Magneto-ionic P.531, vector/polarimetric PE, physical terrain/impedance, and ice/DSD scattering | Not yet in the joint research operator | **Required next** |

---

## 14. Primary standards and research basis

### Official propagation standards

1. [ITU-R P.525-5, *Calculation of free-space attenuation*](https://www.itu.int/rec/R-REC-P.525/en) (in force, 2024).
2. [ITU-R P.453-14, *The radio refractive index: its formula and refractivity data*](https://www.itu.int/rec/R-REC-P.453/en) (in force, 2019).
3. [ITU-R P.676-13, *Attenuation by atmospheric gases and related effects*](https://www.itu.int/rec/R-REC-P.676/en) (in force, 2022).
4. [ITU-R P.838-3, *Specific attenuation model for rain*](https://www.itu.int/rec/R-REC-P.838/en) (in force, 2005).
5. [ITU-R P.840-9, *Attenuation due to clouds and fog*](https://www.itu.int/rec/R-REC-P.840/en) (in force, 2023).
6. [ITU-R P.618-14, *Propagation data and prediction methods for Earth-space systems*](https://www.itu.int/rec/R-REC-P.618/en) (in force, 2023). P.618 is primarily a link-design/statistical framework; do not double-count it on top of an instantaneous 3-D extinction integral.
7. [ITU-R P.531-16, *Ionospheric propagation data and prediction methods*](https://www.itu.int/rec/R-REC-P.531/en) (in force, 2025).

### Orbit and coordinate model

8. Vallado, Crawford, Hujsak, and Kelso, [*Revisiting Spacetrack Report #3*](https://celestrak.org/publications/AIAA/2006-6753/), AIAA 2006-6753. This is the SGP4 implementation/validation basis, not a guarantee that public TLEs are carrier-phase accurate.

### LEO/GNSS weather retrieval and tomography

9. Shen et al., [*Retrieval of Cloud Liquid Water Using Microwave Signals from LEO Satellites: A Feasibility Study through Simulations*](https://doi.org/10.3390/atmos11050460), *Atmosphere* 11, 460 (2020). Simulated LEO attenuation + ground receivers + tomographic LWC retrieval.
10. Shen et al., [*A Differential Approach for Rain Field Tomographic Reconstruction Using Microwave Signals from LEO Satellites*](https://doi.org/10.1109/TGRS.2019.2899391), *IEEE TGRS* 57, 5434--5446 (2019). Differential SNR/attenuation formulation for reducing unknown baselines.
11. Xiong et al., [*LEO Constellation-Augmented Multi-GNSS for 3D Water Vapor Tomography*](https://doi.org/10.3390/rs13163056), *Remote Sensing* 13, 3056 (2021). Uses $\mathbf A\mathbf x=\mathbf y$ with simulated LEO augmentation.
12. Cegla et al., [*INTOMO operator for GNSS multi-source tomography based on 3D ray tracing technique*](https://doi.org/10.1007/s00190-024-01915-5), *Journal of Geodesy* 98, 101 (2024). Multi-source 3-D ray-tracing observation operator.
13. Miranda et al., [*Unconstrained GNSS Water Vapor Tomography With Real Data and LEO Augmentation*](https://doi.org/10.1029/2026GL122933), *Geophysical Research Letters* (2026). Real GNSS slant data with synthetic LEO augmentation; it does not validate ordinary commercial LEO link telemetry as a coherent weather observable.
14. Zhang, Wang, and Lyu, [*Estimation of Moist Atmospheric Profiles from Refraction and Attenuation Measurements by Using Centimeter and Millimeter Wave Links between LEO Satellites*](https://doi.org/10.3390/rs15020391), *Remote Sensing* 15, 391 (2023). LEO-LEO microwave occultation using multi-frequency refraction and attenuation.

### Phase, hydrometeors, and calibration

15. Hotta, Lonitz, and Healy, [*Forward operator for polarimetric radio occultation measurements*](https://doi.org/10.5194/amt-17-1075-2024), *Atmospheric Measurement Techniques* 17, 1075--1089 (2024). Demonstrates ray-integrated polarimetric differential phase and sensitivity to modeled hydrometeor fields.
16. Padulles et al., [*Calibration and Validation of the Polarimetric Radio Occultation and Heavy Precipitation experiment aboard PAZ*](https://doi.org/10.5194/amt-13-1299-2020), *Atmospheric Measurement Techniques* 13, 1299--1313 (2020). Practical orbit/clock/instrument/antenna calibration and phase-integrity reference.
17. Cardellach et al., [*Sensing Heavy Precipitation With GNSS Polarimetric Radio Occultations*](https://doi.org/10.1029/2018GL080412), *Geophysical Research Letters* 46 (2019). Empirical evidence for hydrometeor-sensitive differential phase.
18. Lottermoser, Damm, and Schmid, [*Measuring Weather Effects and Link Quality Dynamics in LEO Satellite Networks*](https://arxiv.org/abs/2603.14008) (2026 preprint). Finds liquid-water path more informative than generic cloud cover for observed Starlink link performance, while also showing major network/hardware confounding; it is not a coherent phase-validation study.

### Local deeper notes

- [`literature/notes/leo_weather.md`](../literature/notes/leo_weather.md)
- [`literature/notes/rf_modeling_extra.md`](../literature/notes/rf_modeling_extra.md)
- [`research/LEO_vs_GNSS_challenges.md`](../research/LEO_vs_GNSS_challenges.md)

---

## 15. Compact implementation roadmap

1. Replace catalog-only geometry in the scientific mode with precise orbit/clock/attitude and iterative light time.
2. Ingest synchronized raw I/Q or stable pilot channel estimates from a characterized transmitter and at least two calibrated receivers.
3. Validate the additive P.676/P.840 dispersive eikonal operator, add
   magneto-ionic P.531 and parabolic-equation wave optics, then validate
   clear-sky phase/amplitude/Doppler residuals before field cloud retrieval.
4. Add measured antenna patterns, EIRP/beam state, system noise temperature, wet-radome, and multipath nuisance states.
5. Retrieve first the identifiable columns: neutral wet delay, LWP/cloud attenuation, rain attenuation, and TEC with multi-band data.
6. Add cross-ray 3-D/4-D inversion only after singular-value/posterior-resolution analysis demonstrates layer identifiability.
7. Validate cloud/rain/wind products against radiometer, radar, ceilometer, disdrometer, radiosonde, and independent NWP/analysis fields.

The strongest defensible project claim is:

> Nephele models and tests when calibrated, multi-frequency LEO/GNSS RF path observables add independent 3-D atmospheric information beyond existing GNSS and weather-analysis networks; it does not assume that satellite count, public TLE animation, or uncalibrated link performance is itself a weather measurement.
