granular op• Data kinds: scalar → table
• Call: import fullseye as fs; fs.ledger.powder_flowability_class(phi_deg: 'float') -> 'dict' (to call the implementation directly, import granular; granular.powder_flowability_class(phi_deg: 'float') -> 'dict'; from the registry, opsdrive.get("powder_flowability_class"))
Angle of repose → flowability class (USP <1174> Table 1, original source Carr 1965).
Returns: cls (excellent / good / fair / passable / poor / very poor / very, very poor), phi_int (the integer degrees used to look up the table = rounded half up), tabulated (whether it is at or above the table's lower limit of 25 degrees), band_upper_deg (upper limit of that class; None for the last class, which has no upper limit —— inf is not put in the return because it cannot be carried in JSON). The table is in integer degrees, so 30.5 becomes 31 (good) and 30.4 becomes 30 (excellent). Raises ValueError: angle outside (0, 90).
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_granular_heap_repose — py -3.11 examples/poc_granular_heap_repose.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
granular)heap_volume_cone · heap_mass · heap_volume_heightmap · beverloo_rate · beverloo_fit · discharge_synth · dispense_mass_from_video · hopper_discharge_rate
*Provenance: granular.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.