build_messages_per_message/3 was slicing the wgrib2 -lola bin output as a packed float32 stream, ignoring the 4-byte record-length header + 4-byte trailer that Fortran unformatted records prepend/append around each message's data block. First value of message 0 came back as ~2.24e-44 (little-endian float32 of the int-16 record length), and every subsequent message was shifted by 8 bytes so values spilled into neighbouring cells. Fix: propagate the correct offset math already used by parse_lola_binary/3 (record_overhead = 8, stride = bytes_per_message + 8, data_offset = msg_idx * stride + 4). Flipped the characterization test from metadata-only to per-cell physical asserts (200 K < TMP, DPT < 340 K; DPT <= TMP) and a 0.01 K cross-check against extract_grid/3 output on the same fixture + bbox. Latent bug — no production callers of extract_grid_messages*. |
||
|---|---|---|
| .. | ||
| complex_packing.ex | ||
| extractor.ex | ||
| lambert_conformal.ex | ||
| section.ex | ||
| simple_packing.ex | ||
| wgrib2.ex | ||