ContactMechanics.ReferenceSolutions package

Submodules

ContactMechanics.ReferenceSolutions.Cone module

ContactMechanics.ReferenceSolutions.Cone.contact_radius_and_area(alpha)

Reference: K.L. Johnson, Contact Mechanics, Cambridge University Press. Chapter 5, page 112, fig(a)”

Parameters:

alpha (float) – half of Cone angle

Returns:

  • Ratio_contact_radius (float) – Contact Radius / penetration –> R/D

  • Ratio_Area (float) – Contact Area / Penetration**2 –> A/D**2

ContactMechanics.ReferenceSolutions.Cone.deformation(penetration, alpha)

Reference: K.L. Johnson, Contact Mechanics, Cambridge University Press. Chapter 5, page 112, fig(a)”

Parameters:
  • penetration (float) – Radius / Penetration –> R / P

  • alpha (float) – half of Cone angle

Returns:

Ratio_Deformation – Ratio Deformation –> Deformation / Penetration

Return type:

float

ContactMechanics.ReferenceSolutions.Cone.load_and_mean_pressure(alpha)

Reference: K.L. Johnson, Contact Mechanics, Cambridge University Press. Chapter 5, page 112, fig(a)”

Parameters:

alpha (float) – half of Cone angle

Returns:

  • Ratio_ExternalForece (float) – External Force / (Young’s module * contact area) –> F/(E*A)

  • Ratio_Mean_Pressure (float) – Mean Pressure / Young’s module –> P/E

ContactMechanics.ReferenceSolutions.Cone.pressure(mean_pressure, alpha)

Reference: K.L. Johnson, Contact Mechanics, Cambridge University Press. Chapter 5, page 112, fig(a)”

Parameters:
  • mean_pressure (float) – Ratio of Pressure and Mean Pressure –> Pressure / Mean Pressure

  • alpha (float) – half of cone angle

Returns:

Ratio_Pressure – Ratio Pressure / Mean Pressure

Return type:

float

ContactMechanics.ReferenceSolutions.GreenwoodTripp module

Greenwood-Tripp model for the contact of rough spheres

ContactMechanics.ReferenceSolutions.GreenwoodTripp.Fn(h, n, phi=<function <lambda>>)
ContactMechanics.ReferenceSolutions.GreenwoodTripp.GreenwoodTripp(d, μ, rhomax=5, n=100, eps=1e-06, tol=1e-06, mix=0.1, maxiter=1000)

Greenwood-Tripp solution for the contact of rough spheres. See: Greenwood, Tripp, J. Appl. Mech. 34, 153 (1967) Symbols correspond to notation in this paper.

Parameters:
  • d (float) – Dimensionless displacement d* of the sphere, d* = d / σ where σ is the standard deviation of the height distribution (i.e. the rms height).

  • μ (float) – Material parameter, μ=8/3 η σ sqrt(2 B β) where η is the density of asperities, B is the sphere radius and β the asperity radius.

  • rhomax (float) – Radius cutoff (in units of σ). Pressure is assumed to be zero beyond this radius.

  • n (int) – Number of grid points.

  • eps (float) – Small number for numerical regularization.

  • tol (float) – Max difference between displacements in consecutive solutions.

  • mix (float) – Mixing of solution between consecutive steps.

Returns:

  • w (array) – Displacement in radial direction in units of σ.

  • p (array) – Pressure in radial direction in units of E* sqrt(σ / 8B) where E* is the contact modulus.

  • rho (array) – Radial coordinate in units of sqrt(2 B σ)

ContactMechanics.ReferenceSolutions.GreenwoodTripp.s(ξ, ξ1=1e-05, ξ2=100000.0)
ContactMechanics.ReferenceSolutions.GreenwoodTripp.ξ(s, s1=1e-05, s2=100000.0)

ContactMechanics.ReferenceSolutions.Hertz module

Helper tools for PyCo

ContactMechanics.ReferenceSolutions.Hertz.centerline_stress(z, poisson=0.5)

Given distance from the center of the sphere, contact radius and Poisson number contact, compute the stress at the surface.

Parameters:
  • z (array_like) – Array of depths (from the center of the sphere in units of contact radius a).

  • poisson (float) – Poisson number.

Returns:

  • srr (array) – Radial stress (in units of maximum pressure p0).

  • szz (array) – Contact pressure (in units of maximum pressure p0).

ContactMechanics.ReferenceSolutions.Hertz.elastic_energy(d, R, Es)
Parameters:
  • d (float) – Rigid Body Penetration

  • R (float) – Sphere Radius

  • Es (float) – Contact modulus: Es = E/(1-nu**2) with Young’s modulus E and Poisson number nu.

Return type:

Elastic energy

ContactMechanics.ReferenceSolutions.Hertz.max_pressure__penetration(delta, R=1, Es=1)

when R and Es is not specified, delta is supposed to be in units of R and p0 in units of Es :param delta: :type delta: penetration :param R: :type R: Radius :param Es: :type Es: contact modulus

Return type:

max pressure p0

ContactMechanics.ReferenceSolutions.Hertz.normal_load(d, R, Es)

Given rigid Body Penetration, sphere radius and contact modulus compute normal load.

Parameters:
  • d (float) – Rigid Body Penetration

  • R (float) – Sphere Radius

  • Es (float) – Contact modulus: Es = E/(1-nu**2) with Young’s modulus E and Poisson number nu.

Returns:

  • float

  • normal_load

ContactMechanics.ReferenceSolutions.Hertz.penetration(N, R, Es)

Given normal load, sphere radius and contact modulus compute rigid body penetration.

Parameters:
  • N (float) – Normal force.

  • R (float) – Sphere radius.

  • Es (float) – Contact modulus: Es = E/(1-nu**2) with Young’s modulus E and Poisson number nu.

Returns:

  • float

  • Normal load

ContactMechanics.ReferenceSolutions.Hertz.radius_and_pressure(N, R, Es)

Given normal load, sphere radius and contact modulus compute contact radius and peak pressure.

Parameters:
  • N (float) – Normal force.

  • R (float) – Sphere radius.

  • Es (float) – Contact modulus: Es = E/(1-nu**2) with Young’s modulus E and Poisson number nu.

Returns:

  • a (float) – Contact radius.

  • p0 (float) – Maximum pressure inside the contacting area (right under the apex).

ContactMechanics.ReferenceSolutions.Hertz.stress(r, z, poisson=0.5)

Return components of the stress tensor in the interior of the Hertz solid. This is the solution given by: M.T. Huber, Ann. Phys. 319, 153 (1904)

Note that the stress tensor at any point in the solid has the form below in a cylindrical coordinate system centered at the tip apex. Some off-diagonal components are zero by rotational symmetry. stt is the circumferential component, srr the radial component and szz the normal component of the stress tensor.

/ stt 0 0

s = | 0 srr srz |

0 srz szz /

Parameters:
  • r (array_like) – Radial position (in units of the contact radius a).

  • z (array_like) – Depth (in units of the contact radius a).

  • poisson (float) – Poisson number.

Returns:

  • stt (array) – Circumferential component of the stress tensor (in units of maximum pressure p0).

  • srr (array) – Radial component of the stress tensor (in units of maximum pressure p0).

  • szz (array) – Normal component of the stress tensor (in units of maximum pressure p0).

  • srz (array) – Shear component of the stress tensor (in units of maximum pressure p0).

ContactMechanics.ReferenceSolutions.Hertz.stress_Cartesian(x, y, z, poisson=0.5)

Return components of the stress tensor in the interior of solid due to normal Hertz loading. This is the solution given by: G.M. Hamilton, Proc. Instn. Mech. Engrs. 197C, 53-59 (1983)

Parameters:
  • x (array_like) – In-plane positions (in units of the contact radius a).

  • y (array_like) – In-plane positions (in units of the contact radius a).

  • z (array_like) – Depth (in units of the contact radius a).

  • poisson (float) – Poisson number.

Returns:

sxx, syy, szz, syz, sxz, sxy – Individual components of the Cartesian stress tensor.

Return type:

array

ContactMechanics.ReferenceSolutions.Hertz.stress_for_tangential_loading(x, y, z, poisson=0.5)

Return components of the stress tensor in the interior of solid due to tangential (Hertz) loading. This is the solution given by: G.M. Hamilton, Proc. Instn. Mech. Engrs. 197C, 53-59 (1983)

Parameters:
  • x (array_like) – In-plane positions (in units of the contact radius a).

  • y (array_like) – In-plane positions (in units of the contact radius a).

  • z (array_like) – Depth (in units of the contact radius a).

  • poisson (float) – Poisson number.

Returns:

sxx, syy, szz, syz, sxz, sxy – Individual components of the Cartesian stress tensor.

Return type:

array

ContactMechanics.ReferenceSolutions.Hertz.surface_displacements(r)

Return the displacements at the surface due to an indenting sphere. See: K.L. Johnson, Contact Mechanics, p. 61

Parameters:

r (array_like) – Radial position normalized by contact radius a.

Returns:

uz – Normal displacements at the surface of the contact (in units of p0/Es * a where p0 is maximum pressure, Es contact modulus and a contact radius).

Return type:

array

ContactMechanics.ReferenceSolutions.Hertz.surface_stress(r, poisson=0.5)

Given distance from the center of the sphere, contact radius and Poisson number contact, compute the stress at the surface.

Parameters:
  • r (array_like) – Array of distance (from the center of the sphere in units of contact radius a).

  • poisson (float) – Poisson number.

Returns:

  • pz (array) – Contact pressure (in units of maximum pressure p0).

  • sr (array) – Radial stress (in units of maximum pressure p0).

  • stheta (array) – Azimuthal stress (in units of maximum pressure p0).

ContactMechanics.ReferenceSolutions.Westergaard module

Westergaard solution for partial contact of a sinusoidal periodic indenter. See: H.M. Westergaard, Trans. ASME, J. Appl. Mech. 6, 49 (1939)

The indenter geometry is

\[2 h sin^2(\pi x / \lambda)\]

Nommenclature:

  • \(E^*\): contact modulus

  • \(\lambda\): period of the sinusoidal indenter

  • \(h\): amplitude of the sinusoidal indenter. peak to tale distance is \(2h\)

  • \(a\): half contact width, “contact radius”

ContactMechanics.ReferenceSolutions.Westergaard.contact_radius(mean_pressure)

Johnson, K. L. International Journal of Solids and Structures 32, 423–430 (1995)

Equation (4)

Parameters:

mean_pressure (float, array_like) – mean pressure in units of \(\pi E^* h / \lambda\)

Return type:

contact radius in units of \(\lambda\)

ContactMechanics.ReferenceSolutions.Westergaard.displacements(x, a)

Displacements u in units of 2h, the geometry is \(2h sin^2(pi x / lambda)\)

Parameters:
  • x (float or np.array) – distance from the indenter tip contact point in units of lambda

  • a (float) – half contact length in units of lambda

Return type:

Displacents u in units of 2h

Examples

>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> x = np.linspace(-1.,1., 500)
>>> l,= ax.plot(x, displacements(x, 0.1), label="displacements")
>>> l2, = ax.plot(x, -np.sin(np.pi * x)**2, "--k", label="geometry")
>>> ax.invert_yaxis()
>>> leg = ax.legend()
>>> plt.show(block=True)
ContactMechanics.ReferenceSolutions.Westergaard.elastic_energy(mean_pressure)

elastic energy along the equilibrium curve

formula for the JKR contact but with alpha = 0

Parameters:

mean_pressure (float or np.array) – mean pressure in units of \(\pi Es h/ lambda\)

Returns:

  • energy per unit area in units of \(h p_{wfc}\)

  • with \(p_{wfc} = \pi E^* h/\lambda\)

ContactMechanics.ReferenceSolutions.Westergaard.elastic_energy_a(a)

elastic energy in dependence of a along the equilibrium curve

Parameters:

a (float or np.array) – half contact width in units of the wavelength \(\lambda\)

Returns:

  • energy per unit area in units of \(h p_{wfc}\)

  • with \(p_{wfc} = pi E^* h/\lambda\)

ContactMechanics.ReferenceSolutions.Westergaard.gap(x, a)

gap g in units of 2h, the geometry is \(2h sin^2(pi x / lambda)\)

Parameters:
  • x (float or np.array) – distance from the first contact point in units of lambda

  • a (float) – half contact length in units of lambda

Return type:

Displacents u in units of 2h

ContactMechanics.ReferenceSolutions.Westergaard.mean_displacement(a)

mean gap would be 1 / 2 + mean displacement

Parameters:

a (float or np.array) – half contactwidth in units of the wavelength lambda

Return type:

mean displacement in units of 2 h

Examples

>>> import matplotlib.pyplot as plt
>>> a = np.linspace(0,0.5)
>>> l,= plt.plot(a, mean_displacement(a))
>>> plt.show()
ContactMechanics.ReferenceSolutions.Westergaard.mean_pressure(contact_radius)

Johnson, K. L. International Journal of Solids and Structures 32, 423–430 (1995)

Equation (4)

Parameters:

contact_radius (float) – in units of \(\lambda\)

Returns:

mean pressure – mean pressure in units of \(\pi E^* h / \lambda\)

Return type:

float, array_like

Module contents

Analytical or semi-analytical reference solutions