Contact mechanics models (slippy.contact)

This module contains functions and classes for making contact mechanics models. These models allow the user to model complex contacts including user defined behaviours for material deformations, wear, friction, fluid flow etc.. For users of abaqus the API will be somewhat familiar: a ContactModel object contains all the information about the model. Within this object there are Surface objects which contain the geometry information, these have Materials assigned to them which control how the surfaces deform under load. The actual solving is done by ModelSteps which are again held within the ContactModel object. When the model is solved these steps are solved in order.

The Contact Model object

ContactModel(name, surface_1[, surface_2, ...])

A container for multi step contact mechanics and lubrication problems

Model Steps

There are ModelSteps for many different situations such as dry normal loading, mixed lubricated etc.. Some of these also require a Lubricant to be defined.

StaticStep(step_name[, time_period, ...])

Static loading between two bodies

QuasiStaticStep(step_name, number_of_steps)

A model step for quasi static relative movement

IterSemiSystem(step_name, reynolds_solver, ...)

Lubrication solutions by iteration of semi systems

Materials

Slippy currently contains solvers for Elastic and Rigid materials, more materials will be added in future releases, it is also possible to add your own materials.

Elastic(name, properties[, max_load, ...])

A Class for defining elastic materials

Rigid(name)

A rigid material

*note as the Rigid class has no options, an instance (rigid) is also provided for convenience

Lubricants

Lubricants in slippy are defined through the Lubricant object and lubricant sub models. A lubricant object is just a container for the sub models which define the behaviour of the lubricant. Sub models must be added for the behaviours required by a particular solver. These can be constants as for a newtonian lubricant or they can depend on other variables found during the solution eg pressure.

Lubricant(name[, models, ...])

A class for describing lubricant behaviours

lubricant_models

Common sub models for lubricants

Sub models

Slippy is quasi static, meaning that the normal contact problem is always solved for the static system. Transient behaviour such as wear, temperature change, tribofilm growth, plastic deformation etc. is dealt with by sub models. These are solved after the contact problem has been solved for each step.

sub_models

Contact mechanics sub models (slippy.contact.sub_models)

Output requests for long simulations

By default a contact model will return the final state when .solve() is called on it. However often this is not sufficient. Output requests allow the user to save all or part of the model state at set time points or after set steps. The OutputReader allows the user to read these files back in conveniently.

OutputRequest(name, parameters[, ...])

An output request for a multi step contact model

OutputReader(file_name)

A class for reading and querying output files (.sdb) and array files (.sar)

Analytical solutions to common problems

Lastly slippy.contact also contains analytical solutions for common contacts. These are often useful as initial guesses to more complex contact problems.

hertz_full(r1, r2, moduli, v, load[, angle, ...])

Find the hertzian stress solution for the given system

solve_hertz_line(*[, r_rel, e1, e2, v1, v2, ...])

Finds remaining hertz parameter for a line contact

solve_hertz_point(*[, r_rel, e1, e2, v1, ...])

Finds the remaining hertz parameter for a spherical contact

Examples

Examples can be found in the examples folder on github: https://github.com/FrictionTribologyEnigma/SlipPY/tree/master/examples