package grib import ( "fmt" "hash/fnv" "time" ) var steps = []int{0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48} func nearestRun(t time.Time) time.Time { h := t.UTC().Hour() - t.UTC().Hour()%6 return time.Date(t.Year(), t.Month(), t.Day(), h, 0, 0, 0, time.UTC) } func fileName(run time.Time, step int) string { return fmt.Sprintf("gfs.t%02dz.pgrb2.0p50.f%03d", run.Hour(), step) } func encodeKey(a ...any) uint64 { h := fnv.New64a() for _, v := range a { fmt.Fprint(h, v) } return h.Sum64() }