Adhesion.ReferenceSolutions package
Subpackages
Submodules
Adhesion.ReferenceSolutions.BaneyHui module
Maugis-Dugdale (cohesive zone) model for a cylinder contacting an elastic flat. See: J.M. Baney, C.-Y. Hui, J. Adhesion Sci. Technol. 11, 393 (1997)
Adhesion.ReferenceSolutions.DMT module
Helper tools for Adhesion
- Adhesion.ReferenceSolutions.DMT.radius_and_pressure(N, R, Es, w)[source]
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.
w (float) – Work of adhesion.
- Adhesion.ReferenceSolutions.DMT.surface_stress(r, a, nu)[source]
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).
a (float) – Contact radius.
nu (float) – Poisson number.
- Returns:
pz (array) – Contact pressure.
sr (array) – Radial stress.
stheta (array) – Azimuthal stress.
Adhesion.ReferenceSolutions.JKR module
JKR solutions for the indentation of an elastic halfspace by a paraboloid indenter.
Physical quantities:
The parameters of the system are:
- radiusfloat, optional
Sphere (actually paraboloid) radius.
- contact_modulusfloat, optional
Contact modulus: \(E^* = E/(1-\nu^2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
- work_of_adhesionfloat, optional
Work of adhesion.
This module provides implementations of the formulas relating the rigid body
penetration (penetration
), the indentation force (force
)
and the radius of the contact disk (contact_radius
).
If the parameters are not provided, the relations are nondimensional.
Nondimensional units
The nondimensionalisation follows Maugis’s book (p.290):
- lengths in the vertical direction
(penetration, heights, displacements, gaps), are in units of
lengths in the lateral direction (contact radius) are in units of
forces are in unit of
Function reference:
- Adhesion.ReferenceSolutions.JKR.contact_radius(force=None, penetration=None, radius=1.0, contact_modulus=0.75, work_of_adhesion=None)[source]
Given normal load or rigid body penetration, sphere radius and contact modulus compute contact radius on the stable branch.
If only force or penetration is provided, it is assumed that the nondimensionalisation from Maugis’s book is used.
If force and penetration are given the work of adhesion results from these values and the provided value will be ignored.
For given force \(F\) and penetration \(\delta\), we solve
\[F = 2 a E^\prime (\delta - \frac{1}{3} \frac{a^2}{R})\]for the contact radius \(a\).
If you want to determine the energy release rate, call JKR.elastic_energy_release_rate using the penetration and the contact radius afterwards.
- Parameters:
force (float or array of floats, optional) – Normal force.
penetration (float, optional) – rigid body penetration
radius (float, optional) – Sphere (actually paraboloid) radius.
contact_modulus (float, optional) – Contact modulus: \(E^* = E/(1-\nu^2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
work_of_adhesion (float, optional) – Work of adhesion.
- Adhesion.ReferenceSolutions.JKR.deformed_profile(r, contact_radius, radius=1.0, contact_modulus=0.75, work_of_adhesion=0.3183098861837907)[source]
Computes the gap in the JKR contact at radius r :param r: radius at which to compute the gap :type r: float or array of floats :param contact_radius: Normal force. :type contact_radius: float or array of floats :param radius: Sphere (actually paraboloid) radius.
Default 1.
- Parameters:
contact_modulus (float, optional) – Contact modulus: \(E^* = E/(1-\nu^2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
work_of_adhesion (float, optional) – Work of adhesion. Default \(1 / \pi\)
- Returns:
gaps at radius r
- Return type:
ndarray
- Adhesion.ReferenceSolutions.JKR.displacement_field(r, contact_radius, radius, contact_modulus, work_of_adhesion)[source]
a function of the distance from the contact center giving the displacement
- Parameters:
contact_radius (contact radius) –
radius (float) – Sphere radius.
contact_modulus (float) – Contact modulus: \(E^* = E/(1-\nu^2)\) with Young’s modulus E and Poisson number \(\nu\).
work_of_adhesion (float) – Work of adhesion.
- Returns:
displacements
- Return type:
ndarray
- Adhesion.ReferenceSolutions.JKR.elastic_energy(penetration, contact_radius)[source]
- \[\frac{U_{el}}{\pi w R (\pi^2 w^2 R / K^2)^{1/3}} = \frac{3}{4} A \left(\Delta - \frac{A^2}{3}\right)^2 + \frac{A^5}{15}\]
For the units, see maugis p.290
- Parameters:
penetration (\(\Delta\) in maugis) –
contact_radius (\(A\) in maugis) –
- Return type:
elastic energy in units of \(\pi w R (\pi^2 w^2 R / K^2)^{1/3}\)
- Adhesion.ReferenceSolutions.JKR.elastic_energy_release_rate(contact_radius, penetration=None, force=None, der='0', radius=1, contact_modulus=0.75)[source]
Returns the energy release rate (with respect to the contact area) at either prescribed force or prescribed rigid body penetration
Prescribed rigid body penetration:
\[\frac{\partial U_\mathrm{el}(\delta, a)}{\partial (\pi a^2)} = \frac{R E^\prime}{2\pi a} \left(\delta - \frac{a^2}{R}\right)^2\]In Maugis’s units:
\[\frac{\partial U_{el}}{\partial \pi a^2} = \frac{3}{8 \pi} \frac{1}{a} (\Delta - a^2)^2\]Prescribed force
\[K = \frac{F_H - F} {2 \sqrt{\pi a^3}}\]with \(F_H = a^3 \frac{4E^\prime}{3R}\)
\[\frac{\partial U_\mathrm{el}(\delta, a)}{\partial (\pi a^2)} = K^2 / 2 E^\prime\]Notation and units:
\(a\) is the contact radius, \(\Delta\) is the penetration.
With the default values of radius and contact_modulus, this function returns the energy release rate in units of
\(w\) if \(\Delta\) and \(a\) are in maugis - JKR units.
\(E_M R\) if \(\Delta\) and \(a\) are in units of \(R\)
Note that I think perfect consistent use of the maugis-JKR units would require to express the energy release rate in units of \(\pi w\) instead of just \(w\). I might need to change this at some point.
- param contact_radius:
in units of \(R\)
- type contact_radius:
float or np.array
- param penetration:
rigid body penetration penetration, \(\Delta\) in maugis
- type penetration:
float or np.array, optional
- param force:
normal force (positive is compressive)
- type force:
float or np.ndarray, optional
- param radius:
default 1, optional radius of the sphere
- type radius:
float
- param contact_modulus:
default 3/4, optional johnsons contact modulus
- type contact_modulus:
float
- param der:
order of the derivative
- type der:
{“0”, “1_a”, “1_d”, “2_a”, “2_da”}, optional
- Adhesion.ReferenceSolutions.JKR.force(contact_radius=None, penetration=None, radius=1.0, contact_modulus=0.75, work_of_adhesion=None)[source]
- Parameters:
contact_radius (float or array of floats, optional) – Normal force.
penetration (float, optional) – rigid body penetration
radius (float, optional) – Sphere (actually paraboloid) radius.
contact_modulus (float, optional) – Contact modulus: \(E^* = E/(1-\nu**2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
work_of_adhesion (float, optional) – Work of adhesion.
Examples
>>> JKR.force(contact_radius=2.) >>> JKR.force(contact_radius=2., radius=1., contact_modulus=3./4, ... work_of_adhesion=1/np.pi) >>> JKR.force(penetration=1.) >>> JKR.force(penetration=1.,radius=1., contact_modulus=3./4, ... work_of_adhesion=1/np.pi) >>> JKR.force(contact_radius=2., penetration=1.) >>> JKR.force(contact_radius=2., penetration=1., radius=1., ... contact_modulus=3./4,)
Note that in the last usage, both contact radius and penetration are given instead of the work of adhesion
- Adhesion.ReferenceSolutions.JKR.peak_pressure(force=None, penetration=None, radius=1.0, contact_modulus=0.75, work_of_adhesion=0.3183098861837907)[source]
Given normal load or rigid body penetration, sphere radius and contact modulus compute contact radius.
if only force or penetration is provided, it is assumed that the nondimensionalisation from Maugis’s book is used.
- Parameters:
force (float or array of floats, optional) – Normal force.
penetration (float, optional) – rigid body penetration
radius (float, optional) – Sphere (actually paraboloid) radius.
contact_modulus (float, optional) – Contact modulus: \(E^* = E/(1-\nu**2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
work_of_adhesion (float, optional) – Work of adhesion.
- Adhesion.ReferenceSolutions.JKR.penetration(contact_radius=None, force=None, radius=1.0, contact_modulus=0.75, work_of_adhesion=0.3183098861837907)[source]
- Parameters:
contact_radius (float or array of floats, optional) – Normal force.
penetration (float, optional) – rigid body penetration
radius (float, optional) – Sphere (actually paraboloid) radius.
contact_modulus (float, optional) – Contact modulus: \(E^* = E/(1-\nu^2)\) with Young’s modulus E and Poisson number \(\nu\). The default value is so that Maugis’s contact Modulus is one (\(K = 4 / 3 E^*\))
work_of_adhesion (float, optional) – Work of adhesion.
- Adhesion.ReferenceSolutions.JKR.stress_distribution(r, contact_radius, radius, contact_modulus, work_of_adhesion)[source]
- Adhesion.ReferenceSolutions.JKR.stress_intensity_factor(contact_radius, penetration=None, force=None, der='0', radius=1, contact_modulus=0.75)[source]
if R is not given, the length and the penetration are epressed in units of R
Prescribed force \(F\)
Flatpunch SIF under load at infinity Tada p.377
\[K = \frac{F_H - F} {2 \sqrt{\pi a^3}}\]with \(F_H = a^3 \frac{4E^\prime}{3R}\)
- param contact_radius:
radius of the contact area
- type contact_radius:
float or ndarray of floats
- param penetration:
rigid body penetration
- type penetration:
float or ndarray of floats
- param der:
- type der:
{“0”, “1_a”, “2_a”, “1_d”, “2_ad”}
- param R:
default 1, optional radius of the sphere
- type R:
float
- param Es:
default 3/4, optional johnson’s contact modulus
- type Es:
float
- returns:
stress intensity factor K or it’s first derivative according to the
contact_radius
if R and Es are not given it is in units of 4 / 3 Es sqrt{R} / R^{der}
Adhesion.ReferenceSolutions.MaugisDugdale module
Maugis-Dugdale cohesive zone model for a sphere (paraboloid) contacting an elastic flat. See: D. Maugis, J. Colloid Interf. Sci. 150, 243 (1992)
Adhesion.ReferenceSolutions.PastewkaRobbins module
Maugis-Dugdale (cohesive zone) model for a wedge contacting an elastic flat. See: L. Pastewka, M.O. Robbins, unpublished
Module contents
Analytical or semi-analytical reference solutions