Skip to content

Result field glossary

PyExtrusion 0.19.0. These are the exact structured production result paths for result.value(), result.select() and the CLI. Trim/event fields are additive. See trim topology and legacy migration for canonical units, retained compatibility names, partial pulls and commercial positions versus physical events. Engineering and Economics expose their own result objects.

Field Unit Type Description
status.viable bool bool Whether a supported configuration is physically viable for the press and process.
status.supported bool bool Whether the scenario is covered by the current PyExtrusion calculation model.
status.unsupported_reason text str or null Controlled explanation when the scenario is outside the supported model.
status.required_profiles_per_billet profiles/billet int or null Minimum profiles per billet detected when the case would require more than the supported maximum of two.
status.recommended_configuration text str or null Recommended supported configuration family after billet-first optimisation.
geometry.profile_section_per_exit_m2 m² float Cross-sectional area of one profile exit.
geometry.profile_section_total_m2 m² float Total profile cross-sectional area across all exits.
geometry.container_area_m2 m² float Internal container-bore area used for extrusion ratio and ram-speed calculations.
geometry.billet_area_m2 m² float Actual billet area used for billet mass and kg/mm calculations.
geometry.extrusion_ratio ratio float Container-bore area divided by total extruded profile area.
geometry.extrusion_ratio_status text str Informative RE classification: low, ok or high; thresholds depend on solid/plate versus hollow/tubular.
geometry.exit_speed_m_min m/min float Resolved profile exit speed used by the calculation, either supplied directly or derived from ram speed.
geometry.ram_speed_m_min m/min float Ram speed from volume constancy using container-bore area.
geometry.ram_speed_mm_s mm/s float Ram speed expressed in millimetres per second.
geometry.theoretical_cuts count int Maximum theoretical cuts from table length before billet-limit optimisation.
geometry.cuts count int Commercial positions per billet contribution to one pull and per exit; NOT all physical saw events.
geometry.cuts_per_pull count int Finished cut positions represented by the full pull geometry; for multi-billet this is cuts per billet × billets per pull.
geometry.billets_per_pull billets/pull int Billets in the selected full-pull configuration, resolved with physical trim/kerf occupancy.
geometry.profiles_per_billet profiles/billet int Sequential profiles produced by one billet; supported values are 1 or 2.
geometry.pull_length_m m float Total length extruded by one billet; retained as a flat compatibility field.
geometry.profile_pull_length_m m float Compatibility field: net bars plus trim for one p=1 contribution (before kerfs); physical sequential pull length including kerfs for p=2. Use table_occupancy_length_m for full-pull occupancy.
geometry.extruded_length_per_billet_m m/billet float Representative physical length per billet for complete-pull geometry; not a separately adjusted last partial billet.
geometry.table_occupancy_length_m m float Runout-table length occupied by the recommended configuration.
geometry.configuration_total_length_m m float Total length represented by the recommended special configuration.
geometry.table_ratio ratio float Table occupancy divided by available table length.
geometry.billet_ratio ratio float Evaluated billet length divided by maximum billet length.
geometry.cuts_ratio ratio float Cuts represented by the full table-occupying pull divided by theoretical table cuts.
geometry.geometric_index score float Geometric/industrial fit index on the documented 0-100 scale.
billet.useful_length_mm mm float Useful billet length converted into extruded profile before butt discard.
billet.length_mm mm float Mathematical total billet length used for the recommended configuration.
billet.recommended_length_mm mm int Industrial suggestion obtained by rounding the mathematical billet length upward to the next whole millimetre.
billet.count count int Number of billets required for the production quantity.
billet.butt_mm mm float Physical residual butt thickness inside the container, not incoming-billet length.
billet.butt_source text str Origin of butt value: default_rule or user_override.
billet.kg_per_mm kg/mm float Billet mass coefficient derived from actual billet geometry/density or supplied override.
billet.butt_mass_kg kg/billet float or null One physical butt: density times container area times physical thickness in metres.
billet.butt_equivalent_billet_mm mm float or null Physical butt mass divided by the effective incoming-billet kg/mm coefficient.
billet.mass_coefficient_source text str or null Incoming-billet coefficient source: geometric or user_plant_override.
production.profiles_per_billet profiles/billet int Complete sequential pulls produced by one billet; maximum supported value is 2.
production.billets_per_pull billets/pull int Number of billets grouped into one continuous pull; dynamically limited by billet and table geometry.
production.cuts_per_pull count int Commercial positions represented by a complete pull; NOT physical final-saw events.
production.final_saw_events count int Transverse final-saw events for actual billet contributions; not multiplied by exits.
production.internal_billet_transitions count int Actual internal transitions: NB - Npulls for p=1, including a partial last pull; zero for p=2.
production.puller_saw_events count int One puller-saw event per actual pull.
production.billet_saw_events count int One incoming billet-saw event per billet.
production.bars_per_pull bars/pull int Finished bars represented by a complete pull.
production.bars_per_billet bars/billet int Bars contributed by one billet: cuts × exits × profiles_per_billet.
production.billets count int Number of billets required after ceiling to whole billets.
production.full_pulls count int Number of complete pulls in the production order.
production.remaining_billets billets int Billets in the final partial multi-billet pull, if any.
production.n_pulls count int Total number of pulls, including a final partial pull when present.
production.bars_requested bars int Base bars requested before optional 10% demand supplement.
production.bars_target_effective bars int Effective whole-bar target after optional 10% supplement.
production.supplement_10_pct bool bool Whether the explicit optional 10% demand supplement was enabled.
production.supplement_factor factor float Demand multiplier: 1.10 when supplement is enabled, otherwise 1.00.
production.bars_manufactured bars int Bars manufactured after rounding to complete billets.
production.extra_bars bars int Bars above effective target caused only by complete-billet rounding.
production.extra_pct % float Extra bars caused only by complete-billet rounding; independent from the optional 10% supplement.
production.good_kg_requested kg float Good product mass corresponding to base requested bars.
production.good_kg_effective_target kg float Good product mass corresponding to effective bar target.
production.good_kg_manufactured kg float Good product mass corresponding to manufactured bars.
scrap.start_kg kg float Start-up scrap from the documented PyExtrusion startup-length rule.
scrap.complexity_kg kg float Complexity allowance mass: normal 3%, medium 5%, high 7%.
scrap.butt_kg kg float Scrap mass corresponding to billet butt discard.
scrap.front_scrap_kg kg float Compatibility name for total trim/reject reserve mass, not only leading trim or a predicted charge-weld length.
scrap.billet_saw_kg kg float Billet-saw kerf loss; zero when billet kerf is 0 mm.
scrap.puller_saw_kg kg float Puller-saw kerf loss; zero when puller kerf is 0 mm.
scrap.final_saw_kg kg float Final-saw kerf loss; zero when final kerf is 0 mm.
scrap.fixed_kg kg float Total fixed process losses: butt, front scrap and saw losses.
scrap.fixed_pct % float Fixed process losses divided by manufactured good kilograms.
scrap.total_kg kg float Total losses including fixed, startup and complexity losses.
scrap.total_pct % float Total losses divided by manufactured good kilograms.
scrap.extruded_losses_kg kg float Losses counted as material that passed through the die for real productivity.
productivity.nominal_gross_kg_h kg/h float Nominal gross output from total linear weight × exit speed × 60.
productivity.real_gross_kg_h kg/h float Real gross extruded output divided by modeled technical press hours.
productivity.real_net_kg_h kg/h float Manufactured good kilograms divided by modeled technical press hours.
productivity.extruded_total_kg kg float Manufactured good mass plus losses that passed through the die.
productivity.target_net_kg_h kg/h float or null Press reference net productivity supplied by the user or inferred by the PyExtrusion nominal-size heuristic.
productivity.target_source text str Origin of target productivity: user_value, inferred_from_nominal_size, or unavailable.
productivity.ratio ratio float or null Real net productivity divided by press reference target.
productivity.delta_kg_h kg/h float or null Informative real-net minus target productivity delta.
productivity.deficit_pct % float or null Relative productivity deficit: max(0, (1-ratio)×100).
productivity.relative_score score float or null Relative productivity score capped at 100.
productivity.fixed_scrap_score score float or null Fixed-scrap score used internally by the productivity index.
productivity.penalty_points points float or null Percentage-based infraproductivity penalty used by the productivity index.
productivity.productivity_index score float or null 0-100 orientative industrial-capacity utilisation index; not a definitive decision criterion.
productivity.productivity_index_rating text str or null Orientative rating: very_favorable, favorable, acceptable, unfavorable, or highly_penalized.
timing.extrusion_per_billet_min min float Actual order extrusion time divided by billet count; may differ from the quantity-free full-pull representative time.
timing.extrusion_total_min min float Total extrusion time for all billets.
timing.dead_time_events count int Number of technical dead-time events used by the selected configuration.
timing.dead_time_total_min min float Total technical dead time.
timing.total_min min float Total production time: extrusion plus technical dead time.
timing.cycle_per_billet_min min/billet float Average total cycle time per billet.
timing.total_hours h float Total production time expressed in hours.
process.butt_source text str Trace value describing the source of the butt length.
process.standard_front_scrap_m m/contribution float Explicit legacy standard trim input; zero when absent, NOT the canonical total.
process.multi_billet_front_scrap_m m/billet float Compatibility trace of the reserve available to the p=1 multibillet candidate.
process.multi_billet_front_scrap_source text str Origin of the multi-billet front-scrap value.
process.applied_front_scrap_m m/contribution float Legacy projection: trim per billet contribution to one pull; for p=2 this is HALF the total per billet.
process.trim_total_per_billet_m m/billet float Total trim/reject reserve per incoming billet across all its sequential pulls.
process.trim_per_pull_m m/pull float Full-pull total: billets_per_pull × (trim_total_per_billet_m / profiles_per_billet); a partial pull uses only actual contributions.
process.trim_input_semantics text str Canonical total per incoming billet, explicit legacy interpretation, or default zero.
process.trim_topology text str Positive distributed reject boundaries or zero-trim end-allowance convention.
process.applied_front_scrap_source text str Origin of the front-scrap value actually used.
process.cuts_source text str Whether cuts were selected automatically or supplied by the user.
process.speed_input_source text str Speed input used to resolve the process: exit_speed_user_value or ram_speed_user_value.
process.supplement_10_pct bool bool Whether the explicit 10% demand supplement was enabled.
process.supplement_factor factor float Demand multiplier applied by the supplement rule.
process.target_productivity_source text str Trace source for the press productivity target.

Quantity-free versus order-level results

The table above describes CalculationResult paths. A quantity-free ProcessResult instead exposes trim_total_per_billet_m, trim_per_pull_m, trim_input_semantics, trim_topology, final_saw_events_per_pull and internal_billet_transitions_per_pull directly. The per-pull fields refer to a complete pull, not an actual-order total.

With positive trim, a full pull has k×(cuts+1) final events. With zero trim it has k×cuts+1. The internal transition count is max(k−1,0). Kerf zero does not zero these counters. See trim topology.

In PlanningResult, quantity-free fields are under process, while order counters are under calculation.production. Check that calculation is not null before using them.