Files
SPLAT-Parallel-with-Rust/README.md
T
cescobar 9d7d3bac45 Commit inicial: splat-rs — fork/port a Rust de SPLAT!
Fork de SPLAT! (John A. Magliacane, KD2BD, 2002-2014), bajo GPLv2 heredada
del original. El núcleo de cálculo de propagación (ITWOM v3.0, Sid Shumate)
se mantiene sin modificar en cpp/itwom3.0.cpp, llamado vía FFI. El resto
del pipeline (lectura de formatos SPLAT!, reportes, mapas, KML, gnuplot)
se reescribió en Rust, con paralelización nativa vía rayon reemplazando
el paralelismo por múltiples procesos del original. Validado contra el
corpus golden de SPLAT! con drift < 0.02 dB en cálculos ITWOM.
2026-08-23 01:50:41 -05:00

67 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# splat-rs
**splat-rs** es un *fork* / port a Rust de [**SPLAT!**](http://www.qsl.net/kd2bd/splat.html)
(Signal Propagation, Loss, And Terrain analysis tool), la herramienta de
predicción de cobertura de radiofrecuencia de referencia en el mundo del
radioaficionado y la radiodifusión.
## Proyecto original
**SPLAT!** fue creado por **John A. Magliacane, KD2BD** (20022014) y es
software libre bajo **GPLv2**. Este repositorio es un fork derivado de
SPLAT! 1.4.2 — no es un proyecto independiente ni pretende serlo.
El núcleo de cálculo de pérdida de propagación (**ITWOM v3.0**, de
**Sid Shumate**, a su vez basado en el modelo ITM/Longley-Rice de dominio
público del NTIA/ITS con contribuciones de J. D. McDonald y del propio
John A. Magliacane) **se mantiene sin modificar**, compilado desde
`cpp/itwom3.0.cpp` y llamado vía FFI (`cpp/itwom_ffi.cpp``src/itwom.rs`).
Ver cabecera de ese archivo para la historia completa de autoría del modelo.
## Qué cambia este fork
- **Port completo a Rust** del resto del pipeline (antes en C++): lectura de
`.qth`/`.lrp`/`.sdf`/`.az`/`.el`/`.udt`/`.cities`, generación de reportes,
mapas de cobertura, KML, gráficos vía gnuplot.
- **Paralelización nativa con [rayon](https://crates.io/crates/rayon)**: el
cálculo de cobertura, que en el SPLAT! original se paralelizaba lanzando
múltiples procesos por separado (uno por radial/azimut), acá corre en un
solo proceso multi-hilo — mismo resultado numérico (validado contra el
corpus golden de SPLAT! con drift < 0.02 dB), muchísimo más rápido.
- Salidas en español, tabla de intensidad de campo (SFT) nueva, defaults
métricos, leyenda SVG nativa sin depender de un bitmap font vendorizado.
Detalle completo de las fases de desarrollo y decisiones de diseño en el
historial de commits.
## Binarios
| Binario | Descripción |
|---|---|
| `splat-rs` | Herramienta principal — compatible en banderas con el SPLAT! original |
| `splat-bench` | Microbenchmark serial vs. paralelo del núcleo ITWOM |
## Compilar
```bash
cargo build --release
```
Requiere un compilador de C++ (se compila `cpp/itwom3.0.cpp` vía `build.rs`).
## Uso
Ver [`MANUAL.md`](./MANUAL.md) para la referencia completa de banderas y
ejemplos (análisis de enlace, cobertura, tabla SFT, exportación KML/PPM, etc.).
## Créditos y licencia
| | |
|---|---|
| SPLAT! original | John A. Magliacane, KD2BD (20022014) |
| ITWOM v3.0 | Sid Shumate (2010), sobre ITM/NTIA (dominio público) |
| Port a Rust + paralelización | Charles Escobar, 2026 |
Distribuido bajo los términos de la **GNU General Public License v2.0**
(GPLv2), heredada del SPLAT! original. Ver el archivo [`LICENSE`](./LICENSE).