The Eshelby Library
- simcoon.simmit.Eshelby_sphere(nu: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides the Eshelby tensor of a spherical inclusion for isotropic linear elasticity.
- Parameters:
nu (float) – the Poisson ratio
- Returns:
Provides the Eshelby tensor of a spherical inclusion for isotropic linear elasticity as a numpy array, according to the conventions of a localisation tensor, as a function of the Poisson ratio \(\nu\)
- Return type:
pybind11::array_t<double>
Notes
The Eshelby tensor for spherical inclusions is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} \frac{7-5\nu}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & 0 & 0 & 0 \\ \frac{5\nu-1}{15(1-\nu)} & \frac{7-5\nu}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & 0 & 0 & 0 \\ \frac{5\nu-1}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & \frac{7-5\nu}{15(1-\nu)} & 0 & 0 & 0 \\ 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} & 0 & 0 \\ 0 & 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} & 0 \\ 0 & 0 & 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} \end{matrix}\right)\end{split}\]Examples
import numpy as np import simcoon as sim nu = 0.3 S = sim.Eshelby_sphere(nu) print(S)
- simcoon.simmit.Eshelby_cylinder(nu: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides the Eshelby tensor of a cylindrical inclusion for isotropic linear elasticity
- Parameters:
nu (float) – the Poisson ratio
- Returns:
Provides the Eshelby tensor of a cylindrical inclusion for isotropic linear elasticity as a numpy array according to the conventions of a localisation tensor, as a function of the Poisson ratio \(\nu\)
- Return type:
pybind11::array_t<double>
Notes
The Eshelby tensor for spherical inclusions is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} \frac{7-5\nu}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & 0 & 0 & 0 \\ \frac{5\nu-1}{15(1-\nu)} & \frac{7-5\nu}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & 0 & 0 & 0 \\ \frac{5\nu-1}{15(1-\nu)} & \frac{5\nu-1}{15(1-\nu)} & \frac{7-5\nu}{15(1-\nu)} & 0 & 0 & 0 \\ 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} & 0 & 0 \\ 0 & 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} & 0 \\ 0 & 0 & 0 & 0 & 0 & 2\frac{4-5\nu}{15(1-\nu)} \end{matrix}\right)\end{split}\]Examples
import numpy as np import simcoon as sim nu = 0.3 S = sim.Eshelby_sphere(nu) print(S)
- simcoon.simmit.Eshelby_prolate(nu: SupportsFloat, aspect_ratio: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides the Eshelby tensor of a prolate spheroid inclusion for isotropic linear elasticity
- Parameters:
nu (float) – the Poisson ratio
a_r (float) – Aspect ratio defined as \(a_r = \frac{a1}{a2} = \frac{a1}{a3}\)
- Returns:
Provides the Eshelby tensor of a prolate spheroid inclusion for isotropic linear elasticity as a numpy array according to the conventions of a localisation tensor, as a function of the Poisson ratio \(\nu\) and the aspect ratio \(a_r = \frac{a1}{a2} = \frac{a1}{a3}\)
- Return type:
pybind11::array_t<double>
Notes
The Eshelby tensor for prolate spheroidal inclusions is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} S_{11} & S_{12} & S_{12} & 0 & 0 & 0 \\ S_{21} & S_{22} & S_{23} & 0 & 0 & 0 \\ S_{21} & S_{23} & S_{22} & 0 & 0 & 0 \\ 0 & 0 & 0 & S_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & S_{44} & 0 \\ 0 & 0 & 0 & 0 & 0 & S_{66} \end{matrix}\right)\end{split}\]with
\[\begin{split}\begin{matrix} S_{11} & = \frac{1}{2(1-\nu)}\left(1-2\nu+\frac{3a_r^2-1}{a_r^2-1}-g\left(1-2\nu+\frac{3a_r^2}{a_r^2-1}\right)\right) \\ S_{12} & = \frac{-1}{2(1-\nu)}\left(1-2\nu+\frac{1}{a_r^2-1}+g\left(1-2\nu+\frac{3}{a_r^2-1}\right)\right) \\ S_{21} & = \frac{-a_r^2}{2(1-\nu)}\left(a_r^2-1\right)+\frac{g}{4\left(1-\nu\right)}\left(\frac{3a_r^2}{a_r^2-1}-\left(1-2\nu\right)\right) \\ S_{22} & = \frac{3a_r^2}{8(1-\nu)}\left(a_r^2-1\right)+\frac{g}{4\left(1-\nu\right)}\left(1-2\nu-\frac{9}{4\left(a_r^2-1\right)}\right) \\ S_{23} & = \frac{1}{4(1-\nu)}\left(\frac{a_r^2}{2\left(a_r^2-1\right)}-g\left(1-2\nu+\frac{3}{4\left(a_r^2-1\right)}\right)\right) \\ S_{44} & = \frac{2}{4\left(1-\nu\right)}\left(1-2\nu-\frac{a_r^2+1}{a_r^2-1}-\frac{g}{2}\left(1-2\nu-\frac{3a_r^2+1}{a_r^2-1}\right)\right) \\ S_{66} & = \frac{2}{4\left(1-\nu\right)}\left(\frac{a_r^2}{2\left(a_r^2-1\right)}+g\left(1-2\nu-\frac{3}{4\left(a_r^2-1\right)}\right)\right) \end{matrix}\end{split}\]considering \(g = a_r\frac{a_r\sqrt{a_r^2-1}}{\left(a_r^2-1\right)^{\frac{3}{2}}} - acos(a_r)\)
Examples
import numpy as np import simcoon as sim nu = 0.3 a_r = 2.0 S = sim.Eshelby_prolate(nu,a_r) print(S)
- simcoon.simmit.Eshelby_oblate(nu: SupportsFloat, aspect_ratio: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides the Eshelby tensor of a oblate spheroid inclusion for isotropic linear elasticity
- Parameters:
nu (float) – the Poisson ratio
a_r (float) – Aspect ratio defined as \(a_r = \frac{a1}{a2} = \frac{a1}{a3}\)
- Returns:
Provides the Eshelby tensor of a oblate spheroid inclusion for isotropic linear elasticity as a numpy array according to the conventions of a localisation tensor, as a function of the Poisson ratio \(\nu\) and the aspect ratio \(a_r = \frac{a1}{a2} = \frac{a1}{a3}\)
- Return type:
pybind11::array_t<double>
Notes
The Eshelby tensor for oblate spheroidal inclusions is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} S_{11} & S_{12} & S_{12} & 0 & 0 & 0 \\ S_{21} & S_{22} & S_{23} & 0 & 0 & 0 \\ S_{21} & S_{23} & S_{22} & 0 & 0 & 0 \\ 0 & 0 & 0 & S_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & S_{44} & 0 \\ 0 & 0 & 0 & 0 & 0 & S_{66} \end{matrix}\right)\end{split}\]with
\[\begin{split}\begin{matrix} S_{11} &= \frac{1}{2(1-\nu)}\left(1-2\nu+\frac{3a_r^2-1}{a_r^2-1}-g\left(1-2\nu+\frac{3a_r^2}{a_r^2-1}\right)\right) \\ S_{12} &= \frac{-1}{2(1-\nu)}\left(1-2\nu+\frac{1}{a_r^2-1}+g\left(1-2\nu+\frac{3}{a_r^2-1}\right)\right) \\ S_{21} &= \frac{-a_r^2}{2(1-\nu)}\left(a_r^2-1\right)+\frac{g}{4\left(1-\nu\right)}\left(\frac{3a_r^2}{a_r^2-1}-\left(1-2\nu\right)\right) \\ S_{22} &= \frac{3a_r^2}{8(1-\nu)}\left(a_r^2-1\right)+\frac{g}{4\left(1-\nu\right)}\left(1-2\nu-\frac{9}{4\left(a_r^2-1\right)}\right) \\ S_{23} &= \frac{1}{4(1-\nu)}\left(\frac{a_r^2}{2\left(a_r^2-1\right)}-g\left(1-2\nu+\frac{3}{4\left(a_r^2-1\right)}\right)\right) \\ S_{44} &= \frac{2}{4\left(1-\nu\right)}\left(1-2\nu-\frac{a_r^2+1}{a_r^2-1}-\frac{g}{2}\left(1-2\nu-\frac{3a_r^2+1}{a_r^2-1}\right)\right) \\ S_{66} &= \frac{2}{4\left(1-\nu\right)}\left(\frac{a_r^2}{2\left(a_r^2-1\right)}+g\left(1-2\nu-\frac{3}{4\left(a_r^2-1\right)}\right)\right) \end{matrix}\end{split}\]considering \(g = a_r\frac{-a_r\sqrt{1-a_r^2}}{\left(1-a_r^2\right)^{\frac{3}{2}}} - acos(a_r)\)
Examples
import numpy as np import simcoon as sim nu = 0.3 a_r = 2.0 S = sim.Eshelby_oblate(nu,a_r) print(S)
- simcoon.simmit.Eshelby_penny(nu: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides the Eshelby tensor of a penny-shaped (crack) inclusion for isotropic linear elasticity
- Parameters:
nu (float) – the Poisson ratio
- Returns:
Provides the Eshelby tensor of a penny-shaped (crack) inclusion for isotropic linear elasticity as a numpy array according to the conventions of a localisation tensor, as a function of the Poisson ratio \(\nu\). This corresponds to the limit case of an oblate spheroid when the aspect ratio \(a_r \rightarrow 0\).
- Return type:
pybind11::array_t<double>
Notes
The penny-shaped inclusion is oriented such that the normal to the crack plane is the axis \(1\). The Eshelby tensor for penny-shaped (crack) inclusions is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} 1 & \frac{\nu}{1-\nu} & \frac{\nu}{1-\nu} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \end{matrix}\right)\end{split}\]This represents the limiting case where \(a_r = \frac{a_1}{a_2} = \frac{a_1}{a_3} \rightarrow 0\), corresponding to a flat disc or crack perpendicular to axis 1.
Examples
import numpy as np import simcoon as sim nu = 0.3 S = sim.Eshelby_penny(nu) print(S)
- simcoon.simmit.Eshelby(L: Annotated[numpy.typing.ArrayLike, numpy.float64], a1: SupportsFloat = 1.0, a2: SupportsFloat = 1.0, a3: SupportsFloat = 1.0, mp: SupportsInt = 50, np: SupportsInt = 50, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides a numerical estimation of the Eshelby tensor of an ellipsoisal, possibly anisotropic inclusion,
- Parameters:
L (numpy array) – the stiffness tensor of the considered material
a1 (float) – the aspect ratio in the direction \(1\)
a2 (float) – the aspect ratio in the direction \(2\)
a3 (float) – the aspect ratio in the direction \(3\)
mp (int) – the number of integration points in the direction \(1\)
np (int) – the number of integration points in the direction \(2\)
- Returns:
Provides the numerical estimation of the Eshelby tensor of an ellispoid in the general case of anisotropic media, as a function of the stiffness tensor, and the three semi-axis length of the ellipsoid in the direction \(1\), \(2\) and \(3\), respectively. It also requires the list of integration points and their respective weight for the numerical integration, as well as the number of integration points in the \(1\) and \(2\) directions. The points and weights are calculated using the point function that require to be called previously.
- Return type:
pybind11::array_t<double>
Notes
The Eshelby tensor is defined as:
\[\begin{split}\boldsymbol{S}=\left(\begin{matrix} S_{11} & S_{12} & S_{12} & 0 & 0 & 0 \\ S_{21} & S_{22} & S_{23} & 0 & 0 & 0 \\ S_{21} & S_{23} & S_{22} & 0 & 0 & 0 \\ 0 & 0 & 0 & S_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & S_{44} & 0 \\ 0 & 0 & 0 & 0 & 0 & S_{66} \end{matrix}\right)\end{split}\]Examples
import numpy as np import simcoon as sim mat L = sim.L_iso(210000., 0.3, "Enu"); double a1 = 2.0; double a2 = 1.0; double a3 = 1.0; int mp = 4; int np = 4; mat S = Eshelby(L, a1, a2, a3, mp, np); print(S)
- simcoon.simmit.T_II(L: Annotated[numpy.typing.ArrayLike, numpy.float64], a1: SupportsFloat = 1.0, a2: SupportsFloat = 1.0, a3: SupportsFloat = 1.0, mp: SupportsInt = 50, np: SupportsInt = 50, copy: bool = True) numpy.typing.NDArray[numpy.float64]
Provides a numerical estimation of the Hill interaction tensor of an ellipsoisal, possibly anisotropic inclusion,
- Parameters:
L (numpy array) – the stiffness tensor of the considered material
a1 (float) – the aspect ratio in the direction \(1\)
a2 (float) – the aspect ratio in the direction \(2\)
a3 (float) – the aspect ratio in the direction \(3\)
mp (int) – the number of integration points in the direction \(1\)
np (int) – the number of integration points in the direction \(2\)
- Returns:
Provides the numerical estimation of the Hill interaction tensor of an ellispoid in the general case of anisotropic media, as a function of the stiffness tensor, and the three semi-axis length of the ellipsoid in the direction \(1\), \(2\) and \(3\), respectively. It also requires the list of integration points and their respective weight for the numerical integration, as well as the number of integration points in the \(1\) and \(2\) directions. The points and weights are calculated using the point function that require to be called previously.
- Return type:
pybind11::array_t<double>
Notes
The Hill interaction tensor is defined as:
\[\begin{split}\boldsymbol{T}=\left(\begin{matrix} T_{11} & T_{12} & T_{12} & 0 & 0 & 0 \\ T_{21} & T_{22} & T_{23} & 0 & 0 & 0 \\ T_{21} & T_{23} & T_{22} & 0 & 0 & 0 \\ 0 & 0 & 0 & T_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & T_{44} & 0 \\ 0 & 0 & 0 & 0 & 0 & T_{66} \end{matrix}\right)\end{split}\]Examples
import numpy as np import simcoon as sim mat L = sim.L_iso(210000., 0.3, "Enu"); double a1 = 2.0; double a2 = 1.0; double a3 = 1.0; int mp = 4; int np = 4; mat S = T_II(L, a1, a2, a3, mp, np); print(S)