Usage of the PyRolL Command Line Interface

If the pyroll package is installed via pip, a command line tool name pyroll is installed alongside in the system.

If the tool is not available, please check the content of your PATH environment variable.

The tool has the following syntax:

pyroll [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

As one can see, subcommands can be chained in one command line. For this reason subcommands take never arguments, but only options. Commands that rely on the data generated by another command must be chained, since no data persists between different runs of the tool.

At OPTIONS several gloabl options can be set, namely:

Option

Description

-c, --configfile PATH

Give a path to a config YAML file. Per default the file ./config.yaml is used if it exists. See here for details.

-p, --plugin NAME

Give a plugin to load additionally to the ones specified in the config. Can be used multiple times.

The tool provides a set of subcommands explained in the following section.

Commands

create-config

Creates a standard config file with basic logging configuration and empty plugins list. The file is created in the path specified by the -f/--file option, which defaults to ./config.yaml.

create-input-py

Creates a sample input script for use with the input-py command. The file is created in the path specified by the -f/--file option, which defaults to ./input.py. This file can be used as is and modified as desired. It represents the conditions of the 3-high experimental rolling stand at the Institute of Metals Forming.

new

Creates a new PyRolL simulation project in the directory specified by -d/--dir. The directory will be created if not already existing. Creates a config.yaml and an input.py in the specified directory. This command is basically a shortcut for

pyroll -c <dir>/config.yaml create-config -p -f <dir>/config.yaml create-input-py -k min -f <dir>/input.py 

in a fresh or existing directory.

input-py

Reads input data from the file specified by the -f/--file option, which defaults to ./input.py. Use the create-input-py command to create a sample which can be modified. See here for more information on the format of this file.

solve

Runs the solution procedure for the pass sequence loaded by one of the input commands.

report

Generates a HTML report page from the simulation results. The contents of the page can be extended by plugins, please see here for additional information. The file to write to can be specified with the -f/--file option, which defaults to report.html.

Examples

To read from a python script, solve and generate a report just use:

pyroll input-py solve report

To specify the files explicitly use:

pyroll input-py -f input.py solve report -f report.html

To use a different config file:

pyroll -c config2.yaml input-py solve report

To load additional plugins:

pyroll -p pyroll_plugin1 -p pyroll_plugin2 input-py solve report

Config File Format

The configuration has to be specified in YAML format. The content of the default config file is as follows:

plugins: [ ] # list full qualified names of plugins to load (as they were importable in real python code)

logging: # configuration for the logging standard library package
  version: 1
  formatters:
    console:
      format: '[%(levelname)s] %(name)s: %(message)s'
    file:
      format: '%(asctime)s [%(levelname)s] %(name)s: %(message)s'

  handlers:
    console:
      class: logging.StreamHandler
      level: INFO
      formatter: console
      stream: ext://sys.stdout
    file:
      class: logging.FileHandler
      level: INFO
      formatter: file
      filename: pyroll.log

  root:
    level: INFO
    handlers: [ console, file ]

  loggers:
    matplotlib:
      level: ERROR

In the plugins node several plugins can be specified to load additionally to the core functionalities. List the full qualified package name you want to load, as you would import in Python. For example to load the Wusatowski Spreading and the Integral Thermal plugins:

plugins:
  - pyroll_wusatowski_spreading
  - pyroll_integral_thermal

The logging node configures logging using the Python standard logging package, see here for further information on that. The default config specifies logging on the console and to the pyroll.log file on information level. If you want more detailed logging, replace the INFO specifiers with DEBUG. To avoid log pollution by the matplotlib package, their level is set to ERROR.

Python Input Format

The most flexible way of defining input for PyRolL is the direct use of a python script. A script loadable by the input-py command must define at least two variables:

Variable

Description

in_profile

A Profile object defining the properties of the incoming workpiece.

sequence

A list of Unit objects (either RollPass or Transport) defining the pass sequence.

A minimal input script is shown below:

from pyroll.core.grooves import SquareGroove, DiamondGroove
from pyroll.core import Profile
from pyroll.core import RollPass
from numpy import pi

# initial profile
in_profile = Profile(
    width=68e-3,
    height=68e-3,
    groove=SquareGroove(r1=0, r2=3e-3, tip_angle=pi / 2, tip_depth=34e-3),
    temperature=1200 + 273.15,
    strain=0,
    material="C45",
    flow_stress=50e6
)

# pass sequence
sequence = [
    RollPass(
        label="Diamond I",
        groove=DiamondGroove(
            usable_width=76.55e-3,
            tip_depth=22.1e-3,
            r1=12e-3,
            r2=8e-3
        ),
        roll_radius=160e-3,
        velocity=1.4,
        gap=3e-3,
    ),
    RollPass(
        label="Square II",
        groove=SquareGroove(
            usable_width=52.7e-3,
            tip_depth=25.95e-3,
            r1=8e-3,
            r2=6e-3
        ),
        roll_radius=160e-3,
        velocity=1.4,
        gap=3e-3,
    ),
]

The attributes to give as keyword arguments to the constructors depend on the plugins loaded. Most plugins need additional data about the pass sequence or the incoming profile. For information on the basic data needed see the docs of Profile, RollPass and Transport.