Geometry & Speeds¶
Direct extrusion and the container reference area¶
In direct extrusion, the billet is placed inside the container and pushed through the die by the ram.
For the public geometric model, two circular areas must be kept distinct:
- container bore area;
- actual billet area.
They are not interchangeable.
Container bore area¶
For an internal container diameter \(D_c\):
with \(D_c\) converted to metres when \(A_c\) is required in m².
PyExtrusion uses the container bore area for:
- extrusion ratio;
- ram/extrusion speed relationship;
- physical butt mass.
Actual billet area¶
For actual billet diameter \(D_b\):
The actual billet area is used for billet material mass and billet-length calculations.
This distinction is important because the billet diameter is normally smaller than the container bore diameter.
Profile area from linear weight¶
When the geometrical cross-sectional area of one exit is not supplied directly, PyExtrusion can derive it from linear weight and density.
For one exit:
where:
- \(A_1\) = cross-sectional area of one exit, m²;
- \(w\) = linear weight of one exit, kg/m;
- \(\rho\) = material density, kg/m³.
For a die with \(n\) simultaneous exits:
The total outgoing cross-section therefore already includes the number of exits.
Extrusion ratio¶
The extrusion ratio, RE, is calculated using the container bore area and the total outgoing extrusion area:
For a multi-exit die, \(A_{total}\) includes all exits.
This follows the standard volume/area definition used in aluminium extrusion engineering.
Interpretation¶
RE is an important process indicator because it represents the reduction in cross-sectional area through the die.
PyExtrusion may classify the calculated value as low, normal/OK or high according to the profile family represented by the current model.
RE should be treated as an engineering indicator, not as a standalone accept/reject criterion. Real extrudability also depends on alloy, geometry, die design, temperature, speed, friction, press capability and other factors not completely modeled by PyExtrusion.
Ram speed and extrusion speed¶
PyExtrusion uses conservation of volume between material moving inside the container and the total material leaving the die:
where:
- \(V_r\) = ram speed;
- \(V_e\) = extrusion/exit speed;
- \(A_c\) = container bore area;
- \(A_{total}\) = total extrusion area.
Therefore:
and, conversely:
Because:
the relationship can also be written as:
Public input behaviour¶
A user may define either:
- exit speed; or
- ram speed.
They are alternative inputs for a new calculation. Supplying both as independent inputs would create an ambiguous case, so PyExtrusion expects one governing speed and derives the other.
Billet mass¶
Using the actual billet area:
the mass of aluminium per millimetre of billet can be represented as:
where:
- \(A_b\) is in m²;
- \(\rho\) is in kg/m³;
- \(m_{b,mm}\) is in kg/mm.
This coefficient links material mass to billet length.
If a plant has a measured or controlled billet mass coefficient, billet_kg_per_mm_override replaces this incoming-billet coefficient, not the physical butt density or container section. Its source is exposed as geometric or user_plant_override.
Physical butt and equivalent incoming-billet length¶
butt_mm is the physical residual thickness inside the filled container, in front of the dummy block. It is not a length of the original, smaller-diameter billet. With areas in m² and lengths in mm:
Here C_B,effective is the incoming-billet mass coefficient in kg/mm: geometry/density by default, or the explicit user/plant override. The initial billet length is:
The through-die mass includes good product, total trim/reject reserve and downstream kerfs. The butt is added once per billet, including one billet producing two sequential pulls. Billet-saw loss is upstream and remains C_B,effective * billet_saw_mm per billet.
The existing volume-based upsetting relation is unchanged:
With the geometric coefficient it also equals 1000 * M_extruded / (rho * A_c) + L_butt. With an independently measured incoming-billet coefficient, the mass/equivalent-length contract still holds, but this second identity is not generally equal to the geometric upsetting relation. Do not reinterpret that override as a new container density or apply a second butt conversion in pressure calculations.
The mathematical equal-diameter limit gives L_butt,eq = L_butt for geometric coefficients. Press configuration validation continues to require D_c > D_b; the limiting identity does not relax the press input domain.
Cut length, table and pulls¶
The finished cut length is converted from millimetres to metres:
The runout/table length limits the length that can physically be represented in one pull.
A useful simple geometric reference is the number of whole finished lengths that could fit along the table before other process allowances are considered:
The actual calculated production arrangement may be lower because it must also respect billet limits, total trim, downstream saw kerfs and the supported production geometry.
Pull¶
A pull is the continuous extrusion length handled as one production length on the runout table before final division.
Several billets may contribute to one continuous pull when the process geometry allows it.
Supported production geometry¶
Canonical trim is a total per incoming billet, distributed across its sequential pulls: d = trim_total_per_billet_m / p. This d is a per-contribution length; the result trim_per_pull_m sums the contributions of the full pull. For positive trim, a billet contribution with n_c commercial positions occupies n_c L_c + d + (n_c+1) k_f; add the puller kerf once per actual pull. Full-precision geometry governs table and billet constraints. See trim topology and migration for physical boundaries and partial pulls.
PyExtrusion currently supports two public production families.
One or more billets contributing to one continuous pull¶
This is represented by the generic configuration:
k_billets_1_profile
where k is the number of billets contributing to that continuous pull.
The number is determined from the valid process and available table geometry rather than being limited to a fixed value such as two or three.
One billet producing two sequential complete pulls¶
PyExtrusion also supports:
1_billet_2_profiles
This represents one billet producing two complete extrusion pulls sequentially.
Current support boundary¶
A configuration requiring three or more complete sequential pulls from one billet is outside the currently supported model.
supported=False means that PyExtrusion is not approved to calculate that configuration. It does not mean that the process is physically impossible in every extrusion plant.