Pass Sequence Units in PyRolL¶
This part of the documentation is currently work in progress.
Think of a rolling process as of a sequence of roll passes and intermediate times, called transports. Both are subsumed
under the term unit. The Unit
class is the base class representing this concept.
A unit can most abstractly be considered as a black box transforming the state of a profile,
thus taking an incoming profile instance, simulation its evolution within the unit and yielding an outgoing profile instance.
It defines three attributes:
Attribute |
Description |
---|---|
|
A label string for human identification, used in log messages and output. |
|
The profile that represents the incoming workpiece state of the unit. |
|
The profile that represents the outgoing workpiece state of the unit. |
Currently, two derived classes exist in the core library: RollPass
and Transport
.
The unit class defines an abstract method solve(in_profile: Profile)
, which triggers the solution procedure and accepts
a profile object that has to be treated as the incoming profile. This object is copied and modified and made available
in the in_profile
attribute by the implementations of this method.
Also, the Unit
class maintains hooks that should be applicable to all types of units.
To read about the basics of hooks and plugins, see here.
Roll Passes¶
The roll pass is the most important unit, since forming of the workpiece is happening here.
It is represented by the RollPass
class.
The RollPass
constructor takes a Roll
object, which is defining the properties of the working rolls including the groove.
Rolls¶
Roll objects represent a working roll implemented in a rolling stand. The main properties are about the geometry and rotational movement of the roll. Rolls define the basic hooks specified below. With appropriate plugins, elastic deformation of the rolls during the process can be modelled.
Hooks¶
To read about the basics of hooks and plugins, see here.
On roll passes, several basic hooks are specified and implemented. You can provide your own implementations of them and also specify new ones.
The figure below shows an overview over the respective classes and their hook function signature.
The following are defined by default.
RollPass
¶
- gap(roll_pass: RollPass) float ¶
Gap between the rolls.
- height(roll_pass: RollPass) float ¶
Maximum height of the pass contour.
- in_profile_rotation(roll_pass: RollPass) float ¶
Rotation of the in profile for the specified roll pass.
- mean_flow_stress(roll_pass: RollPass) float ¶
Mean flow stress of the material for the respected roll pass.
- roll(roll_pass: RollPass) float ¶
Object representing the working rolls of the roll pass.
- roll_force(roll_pass: RollPass) float ¶
Roll force of the pass.
- spread(roll_pass: RollPass) float ¶
Spread in the pass as ratio b1/b0.
- strain_change(roll_pass: RollPass) float ¶
Applied strain in the pass.
- strain_rate(roll_pass: RollPass) float ¶
Mean strain rate in the pass.
- tip_width(roll_pass: RollPass) float ¶
Tip width of the pass contour.
- velocity(roll_pass: RollPass) float ¶
Mean rolling velocity.
- volume(roll_pass: RollPass) float ¶
Volume of the workpiece within the roll gap.
Roll
¶
- contour_line(roll: Roll) LineString ¶
Contour line of the roll’s surface.
- groove(roll: Roll) GrooveBase ¶
Object representing the groove shape carved into the roll.
- max_radius(roll: Roll) float ¶
Maximal (outer) radius of the roll.
- min_radius(roll: Roll) float ¶
Minimal (inner) radius of the roll.
- nominal_radius(roll: Roll) float ¶
Nominal radius of the roll (equal to the grooves y=0 axis).
- rotational_frequency(roll: Roll) float ¶
The rotational frequency of the roll.
- working_radius(roll: Roll) float ¶
Working radius of the roll (some kind of equivalent radius to flat rolling).
RollPass.Roll
¶
- contact_area(roll_pass: RollPass, roll: Roll) float ¶
Area of contact between workpiece and one roll.
- contact_length(roll_pass: RollPass, roll: Roll) float ¶
Contact length in rolling direction between rolls and workpiece.
- roll_torque(roll_pass: RollPass, roll: Roll) float ¶
Roll torque of the pass.
RollPass.Profile
¶
- flow_stress(roll_pass: RollPass, profile: Profile) float ¶
Flow stress of workpiece material.
RollPass.OutProfile
¶
- filling_ratio(roll_pass: RollPass, profile: OutProfile) float ¶
Filling ratio of profile width to usable groove width.
- strain(roll_pass: RollPass, profile: OutProfile) float ¶
Strain of the out profile.
- width(roll_pass: RollPass, profile: OutProfile) float ¶
Width of the out profile.
Below you will find detailed descriptions of selected hooks as example of using them.
in_profile_rotation
¶
The angle in degree by which the incoming profile is rotated at feeding into the roll pass. Currently only integers are
valid values. Per default common rotations are implemented for the available groove types. Typically you will use
the applies_to_in_grooves
and applies_to_in_grooves
decorators from pyroll.utils
to provide new implementations.
The code block below shows an example implementation of this hook, the explicit specname
is used to avoid naming
conflicts when providing more than one implementation in one file.
@RollPass.hookimpl(specname="in_profile_rotation")
@applies_to_in_grooves("diamond")
@applies_to_out_grooves("diamond")
def diamonds(roll_pass):
return 90
Transports¶
Hooks¶
To read about the basics of hooks and plugins, see here.
On transports, several basic hooks are specified and implemented. You can provide your own implementations of them and also specify new ones.
The figure below shows an overview over the respective classes and their hook function signature.
The following hooks are defined by default.
Transport
¶
- duration(transport: Transport) float ¶
Duration of the transport.
Transport.OutProfile
¶
- strain(transport: Transport, profile: OutProfile) float ¶
The equivalent strain of the outgoing profile of the transport unit.