elaston.dislocation module

class elaston.dislocation.Dislocation(elastic_tensor: ndarray, burgers_vector: ndarray)[source]

Bases: object

Anisotropic elasticity theory for dislocations described by [Eshelby](https://doi.org/10.1016/0001-6160(53)90099-6).

All notations follow the original paper.

property Ak: ndarray[source]
property D: ndarray[source]
property dzdx: ndarray
get_displacement(positions: ndarray) ndarray[source]

Displacement vectors

Parameters:

positions ((n,3)-array) – Positions for which the displacements are to be calculated

Returns:

Displacement vectors

Return type:

((n,3)-array)

get_strain(positions: ndarray) ndarray[source]

Strain tensors

Parameters:

positions ((n,3)-array) – Positions for which the strains are to be calculated

Returns:

Strain tensors

Return type:

((n,3,3)-array)

property p: ndarray[source]
elaston.dislocation.get_dislocation_displacement(elastic_tensor: ndarray, {'units': '=e'}], positions: ndarray, burgers_vector: ndarray, {'units': '=b'}]) ndarray, {'units': '=b'}][source]

Displacement field around a dislocation according to anisotropic elasticity theory described by [Eshelby](https://doi.org/10.1016/0001-6160(53)90099-6).

Parameters:
  • elastic_tensor ((3,3,3,3)-array) – Elastic tensor

  • positions ((n,2) or (n,3)-array) – Position around a dislocation. The third axis coincides with the dislocation line.

  • burgers_vector ((3,)-array) – Burgers vector

Returns:

Displacement field (z-axis coincides with the dislocation line)

Return type:

((n, 3)-array)

elaston.dislocation.get_dislocation_energy(elastic_tensor: ndarray, {'units': '=e'}], burgers_vector: ndarray, {'units': '=b'}], r_min: Annotated[float, {'units': '=r'}], r_max: Annotated[float, {'units': '=r'}], mesh: int = 100) Annotated[float, {'units': '=e*b**2'}][source]

Energy per unit length along the dislocation line.

Parameters:
  • elastic_tensor ((3,3,3,3)-array) – Elastic tensor

  • burgers_vector ((3,)-array) – Burgers vector

  • r_min (float) – Minimum distance from the dislocation core

  • r_max (float) – Maximum distance from the dislocation core

  • mesh (int) – Number of grid points for the numerical integration along the angle

Returns:

Energy of dislocation per unit length

Return type:

(float)

The energy is defined by the product of the stress and strain (i.e. energy density), which is integrated over the plane vertical to the dislocation line. The energy density \(w\) according to the linear elasticity is given by:

Therefore, the energy per unit length \(U\) is given by:

This implies \(r_min\) cannot be 0 as well as \(r_max\) cannot be infinity. This is the consequence of the fact that the linear elasticity cannot describe the core structure properly, and a real medium is not infinitely large. While \(r_max\) can be defined based on the real dislocation density, the choice of \(r_min\) should be done carefully.

elaston.dislocation.get_dislocation_energy_density(elastic_tensor: ndarray, {'units': '=e'}], positions: ndarray, {'units': '=p'}], burgers_vector: ndarray, {'units': '=b'}]) ndarray, {'units': '=e*b**2/p**2'}][source]

Energy density field around a dislocation (product of stress and strain, cf. corresponding methods)

Parameters:
  • elastic_tensor ((3,3,3,3)-array) – Elastic tensor

  • positions ((n,2) or (n,3)-array) – Position around a dislocation. The third axis coincides with the dislocation line.

  • burgers_vector ((3,)-array) – Burgers vector

Returns:

Energy density field

Return type:

((n,)-array)

elaston.dislocation.get_dislocation_force(stress: ndarray, {'units': '=s'}], glide_plane: ndarray, burgers_vector: ndarray, {'units': '=b'}]) ndarray, {'units': '=s*b'}][source]

Force per unit length along the dislocation line.

Parameters:
  • stress ((n, 3, 3)-array) – External stress field at the dislocation line

  • glide_plane ((3,)-array) – Glide plane

  • burgers_vector ((3,)-array) – Burgers vector

Returns:

Force per unit length acting on the dislocation.

Return type:

((3,)-array)

elaston.dislocation.get_dislocation_strain(elastic_tensor: ndarray, {'units': '=e'}], positions: ndarray, {'units': '=p'}], burgers_vector: ndarray, {'units': '=b'}]) ndarray, {'units': '=b/p'}][source]

Strain field around a dislocation according to anisotropic elasticity theory described by [Eshelby](https://doi.org/10.1016/0001-6160(53)90099-6).

Parameters:
  • elastic_tensor ((3,3,3,3)-array) – Elastic tensor

  • positions ((n,2) or (n,3)-array) – Position around a dislocation. The third axis coincides with the dislocation line.

  • burgers_vector ((3,)-array) – Burgers vector

Returns:

Strain field (z-axis coincides with the dislocation line)

Return type:

((n, 3, 3)-array)

elaston.dislocation.get_dislocation_stress(elastic_tensor: ndarray, {'units': '=e'}], positions: ndarray, {'units': '=p'}], burgers_vector: ndarray, {'units': '=b'}]) ndarray, {'units': '=e*b/p'}][source]

Stress field around a dislocation according to anisotropic elasticity theory described by [Eshelby](https://doi.org/10.1016/0001-6160(53)90099-6).

Parameters:
  • elastic_tensor ((3,3,3,3)-array) – Elastic tensor

  • positions ((n,2) or (n,3)-array) – Position around a dislocation. The third axis coincides with the dislocation line.

  • burgers_vector ((3,)-array) – Burgers vector

Returns:

Stress field (z-axis coincides with the dislocation line)

Return type:

((n, 3, 3)-array)