slippy.contact.hertz_full¶
- slippy.contact.hertz_full(r1: Union[Sequence, float], r2: Union[Sequence, float], moduli: Union[Sequence, float], v: Union[Sequence, float], load: float, angle: float = 0.0, line: bool = False, integration_error: float = 1e-06, root_error: float = 1e-06)[source]¶
Find the hertzian stress solution for the given system
Finds all the known results to the system defined, including full field stress results if possible.
- Parameters
r1 (2 element Sequence of floats or float) – Two element sequence of the radii in the x and y directions. Each element should be a float, use float(‘inf’) to indicate a flat surface. If a single number is supplied both elements are set to that number: r1=1 is equivalent to r1=[1,1]
r2 (2 element Sequence of floats or float) – Two element sequence of the radii in the x and y directions. Each element should be a float, use float(‘inf’) to indicate a flat surface. If a single number is supplied both elements are set to that number: r1=1 is equivalent to r1=[1,1]
moduli (Sequence of floats) – Two element sequence of the young’s moduli of the first and second bodies. If only one value is supplied it is assumed to be for both surfaces. See note on units.
v (Sequence of floats) – Two element list of the poisson’s ratios of the first and second bodies. If only one value is supplied it is assumed to be for both surfaces.
load (float) – The load applied for a point contact or the load per unit length for a line contact. If a line contact is intended the line keyword should be set to True. See note on units.
angle (float, optional (0)) – The angle between the x axes in radians
line (bool, optional (False)) – Should be set to True for line contacts, otherwise an error is raised, this is done to avoid accidental line contacts changing the definition of the load parameter.
integration_error (float, optional (1e-6)) – The maximum relative error on the integration steps, used only for elliptical contacts see [Deeg 1992] for more information.
root_error (float, optional (1e-6)) – The maximum relative error on the root finding step, used only for elliptical contacts see [Deeg 1992] for more information.
- Returns
results – Dictionary of the results the keys available in the dictionary will depend on the contact solved.
- Return type
dict
See also
Notes
Units must be consistent: if the young’s moduli is given in N/mm**2, the radii should be given in mm and the load should be given in N. etc.
The range for the k parameter (ratio of the contact radii) for elliptical contacts is set to 1e-4, practically contacts which are more smaller ratios will not converge, in these cases consider treating as a line contact.
References
Unless otherwise stated formulas are taken from: Johnson, K. (1985). Contact Mechanics. Cambridge: Cambridge University Press. doi:10.1017/CBO9781139171731
The depth and magnitude of maximum stresses in point and line contacts are taken from: Green, I. (2005). Poisson ratio effects and critical values in spherical and cylindrical. International Journal of Applied Mechanics and Engineering, 10(3), 451–462.
The determination of the ratio of the contact radii is taken from: Deeg, Emil W.. “New Algorithms for Calculating Hertzian Stresses , Deformations , and Contact Zone Parameters.” (1996).
Examples
There is a detailed example of this function in the examples folder on github.
Solving a ball on flat contact:
>>> import slippy.contact as c >>> full_results = c.hertz_full(r1 = 0.01, r2 = float('inf'), moduli=[200e9, 70e9], v=[0.3, 0.33], >>> load = 155)
Plotting the stresses below the central point of the contact:
>>> import matplotlib.pyplot as plt >>> import numpy as np >>> z = np.linspace(1e-8, full_results['contact_radii'][0]*3) >>> stress_results = full_results['stress_z_axis_b_f'][0](z) >>> for label, array in stress_results.items(): >>> plt.plot(np.abs(array), -z, label = label) >>> shear = 0.5*np.abs(stress_results['sigma_z']-stress_results['sigma_theta']) >>> plt.plot(shear, -z, label = 'shear') >>> plt.legend() >>> plt.xlabel('Absolute stress (Pa)') >>> plt.ylabel('Depth (m)')