Nanoindentation Tip Library

Nanoindenter tip: shape / area-function and the compliance

class micromechanics.indentation.tip.Tip(shape: Any = 'perfect', interpFunction: Callable[[ndarray], Any] | None = None, compliance: float = 0.0, plot: bool = False, verbose: int = 0)

Bases: object

The main class to define indenter shape and other default values.

__init__(shape: Any = 'perfect', interpFunction: Callable[[ndarray], Any] | None = None, compliance: float = 0.0, plot: bool = False, verbose: int = 0)

Initialize indenter shape

Parameters:
  • shape (list) – list of prefactors (default = “perfect”)

  • interpFunction (function) – tip-shape function Ac = f(hc), when it is given, other information is superseded

  • compliance (float) – additional compliance in test [um/mN] (sensible values: 0.0001..0.01)

  • plot (bool) – plot indenter shape

  • verbose (bool) – output

areaFunction(h: ndarray) ndarray

AREA FUNCTION: from contact depth hc calculate area
analytical functions inside are using [nm]; the outside of this function uses [um]|br| hence at the start and end there is conversion. Interpolation functions use the outside units directly: contact depth [um] and projected area [um^2].

prefactors:

  • “iso” type area function A=ax^2+bx^1+cx^0.5…, [nm]

  • “perfect” type area function of a perfect Berkovich A=3*sqrt(3)*tan(65.27)^2 hc^2 = 24.494 hc^2

  • “sphere” type: A=pi(2Rh-h^2), h=depth, R indenter radius; for small h-> h^2=0

    prefactors [-pi, 2piR], R in nm does not account for cone at top

Parameters:

h – contact depth in um

areaFunctionInverse(area: ndarray, hc0: ndarray | None = None) ndarray | None

INVERSE AREA FUNCTION: from area calculate contact depth hc
using Newton iteration with initial guess contact depth hc0

prefactors:

  • “perfect” type area function uses the direct inverse of a perfect Berkovich tip

  • other monotonic area functions are inverted numerically

Parameters:
  • area (numpy.array) – projected contact area

  • hc0 (numpy.array) – initial Guess contact depth

Returns:

h = total penetration depth

Return type:

numpy.array

plotIndenterShape(maxDepth: float = 1, steps: int = 50, show: bool = True, tipLabel: str = 'this tip', fileName: str = '') None

check indenter shape: plot shape function against perfect Berkovich
analytical: perfect shape is 2.792254*x

Parameters:
  • maxDepth (numpy.array) – maximum depth [um] to plot; default=10um

  • steps (int) – number of steps for plotting

  • show (bool) – show figure

  • tipLabel (str) – label for this tip

  • fileName (str) – if given, save to file

property prefactors: list[Any] | None

Backward-compatible representation of the tip area function.

Returns:

area-function prefactors followed by the shape name, or None for interpolation tips.

Return type:

list[Any] | None

setInterpolationFunction(interpFunction: Callable[[ndarray], Any]) None

The interpolation of tip-shape function Ac = f(hc)

  • From Oliver-Pharr Method, projected area of contact Ac can be obtained by measuring contact depth hc.

  • When the interpolation function is given, other information is superseded.

  • The interpolation function takes contact depth in um and returns projected area in um^2.

Parameters:

interpFunction (function) – interpolation function from contact depth [um] to projected area [um^2].