Skip to content

Engineering API

The public analytical interface is available from pyextrusion.engineering. The examples below use only symbols exported by that package in PyExtrusion 0.19.0.

Mechanical screening chain

from pyextrusion.engineering import (
    AA6063,
    axisymmetric_pressure_breakdown,
    breakthrough_pressure_increment_mpa_from_log_z,
    check_force_capacity,
    flow_stress_mpa,
    log_zener_hollomon_parameter,
    modified_feltham_mean_strain_rate_s_1,
)

ram_speed_mm_s = 0.70
container_diameter_mm = 210.0
extrusion_ratio = 40.0
billet_temperature_c = 470.0

strain_rate = modified_feltham_mean_strain_rate_s_1(
    ram_speed_mm_s,
    container_diameter_mm,
    extrusion_ratio,
)
ln_z = log_zener_hollomon_parameter(
    strain_rate,
    billet_temperature_c,
    AA6063,
)
flow_stress = flow_stress_mpa(
    strain_rate,
    billet_temperature_c,
    AA6063,
)
breakthrough = breakthrough_pressure_increment_mpa_from_log_z(
    ln_z,
    AA6063,
)
pressure = axisymmetric_pressure_breakdown(
    flow_stress_mpa=flow_stress,
    extrusion_ratio=extrusion_ratio,
    friction_factor_m=1.0,
    billet_contact_length_mm=800.0,
    container_diameter_mm=container_diameter_mm,
    breakthrough_increment_mpa=breakthrough,
)

# Semantic name used by the public documentation.
f_baseline_mn = pressure.required_force_mn
screening = check_force_capacity(
    required_force_mn=f_baseline_mn,
    configured_force_limit_mn=35.0,
)
f_reserve_mn = screening.margin_mn

print(f_baseline_mn)
print(f_reserve_mn, screening.within_limit)

required_force_mn is the API attribute; its engineering interpretation here is F_baseline. Likewise, margin_mn is reported publicly as the arithmetic F_reserve. It is a screening difference, not available hydraulic capacity. Neither value predicts the final die load or establishes a safety margin. See Mechanical baseline.

Select AA6060 or AA6063 explicitly

from pyextrusion.engineering import (
    AA6060,
    AA6063,
    flow_stress_mpa,
)

for model in (AA6060, AA6063):
    stress = flow_stress_mpa(
        mean_strain_rate_s_1=0.30,
        temperature_c=470.0,
        model=model,
    )
    print(model.alloy, stress)

PyExtrusion never substitutes one alloy dataset for the other.

Bounded thermal calls

from pyextrusion.engineering import (
    saha_complete_sticking_thermal_source_terms,
    sheppard_billet_container_interface_temperature_c,
    stuwe_surface_exit_temperature_estimate,
)

stuwe = stuwe_surface_exit_temperature_estimate(
    billet_temperature_c=470.0,
    flow_stress_mpa=20.0,
    extrusion_ratio=40.0,
    ram_speed_mm_s=0.70,
    billet_contact_length_mm=800.0,
    exit_speed_m_min=28.0,
    die_land_length_mm=10.0,
)

saha = saha_complete_sticking_thermal_source_terms(
    flow_stress_mpa=20.0,
    mean_strain_rate_s_1=0.30,
    ram_speed_mm_s=0.70,
    exit_speed_m_min=28.0,
)

interface_temperature_c = sheppard_billet_container_interface_temperature_c(
    billet_temperature_c=470.0,
    container_temperature_c=430.0,
)

print(stuwe.estimated_surface_exit_temperature_c)
print(saha.deformation_heat_generation_w_m3)
print(interface_temperature_c)

These are three different result types: a limited surface estimate, local source terms and an interface-temperature relationship. None is a production-grade exit-temperature predictor. See Thermal boundaries.

Other public engineering groups

The package also exports typed source metadata, explicit press engineering configuration, hydraulic identities and power/energy helpers. Inspect pyextrusion.engineering.__all__ for the complete supported symbol list.