The Kinematics Library

simcoon.simmit.ER_to_F(E: Annotated[numpy.typing.ArrayLike, numpy.float64], R: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Provides the transformation gradient from the Green-Lagrange strain and the rotation.

Parameters:
  • E (pybind11::array_t<double>) – Green-Lagrange strain tensor (3x3 matrix).

  • R (pybind11::array_t<double>) – Rotation tensor (3x3 matrix).

Returns:

Transformation gradient (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

E = np.random.rand(3, 3)
R = np.eye(3)
F = sim.ER_to_F(E, R)
print(F)
simcoon.simmit.eR_to_F(e: Annotated[numpy.typing.ArrayLike, numpy.float64], R: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Provides the transformation gradient from the logarithmic strain and the rotation.

Parameters:
  • e (pybind11::array_t<double>) – Logarithmic strain tensor (3x3 matrix).

  • R (pybind11::array_t<double>) – Rotation tensor (3x3 matrix).

Returns:

Transformation gradient (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

e = np.random.rand(3, 3)
R = np.eye(3)
F = sim.eR_to_F(e, R)
print(F)
simcoon.simmit.G_UdX(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the gradient of displacement (Lagrangian) from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Gradient of displacement (Lagrangian) (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
GradU = sim.G_UdX(F)
print(GradU)
simcoon.simmit.G_Udx(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the gradient of displacement (Eulerian) from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Gradient of displacement (Eulerian) (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
gradU = sim.G_Udx(F)
print(gradU)
simcoon.simmit.R_Cauchy_Green(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Right Cauchy-Green tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Right Cauchy-Green tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
C = sim.R_Cauchy_Green(F)
print(C)
simcoon.simmit.L_Cauchy_Green(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Left Cauchy-Green tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Left Cauchy-Green tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
B = sim.L_Cauchy_Green(F)
print(B)
simcoon.simmit.RU_decomposition(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) tuple

Computes the RU decomposition of the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Rotation matrix (3x3) and right stretch tensor (3x3).

Return type:

tuple

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
R, U = sim.RU_decomposition(F)
print(R, U)
simcoon.simmit.VR_decomposition(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) tuple

Computes the VR decomposition of the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Left stretch tensor (3x3) and rotation matrix (3x3).

Return type:

tuple

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
V, R = sim.VR_decomposition(F)
print(V, R)
simcoon.simmit.Inv_X(input: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the invariants of a symmetric tensor.

Parameters:

X (pybind11::array_t<double>) – Symmetric tensor (3x3 matrix).

Returns:

Vector containing the three invariants of the tensor.

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

X = np.random.rand(3, 3)
invariants = sim.Inv_X(X)
print(invariants)
simcoon.simmit.Cauchy(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Cauchy tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Cauchy tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
b = sim.Cauchy(F)
print(b)
simcoon.simmit.Green_Lagrange(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Green-Lagrange tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Green-Lagrange tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
E = sim.Green_Lagrange(F)
print(E)
simcoon.simmit.Euler_Almansi(F: Annotated[numpy.typing.ArrayLike, numpy.float64], copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Euler-Almansi tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Euler-Almansi tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
A = sim.Euler_Almansi(F)
print(A)
simcoon.simmit.Log_strain(F: Annotated[numpy.typing.ArrayLike, numpy.float64], voigt_form: bool = False, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the logarithmic strain tensor from the transformation gradient.

Parameters:

F (pybind11::array_t<double>) – Transformation gradient (3x3 matrix).

Returns:

Logarithmic strain tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F = np.random.rand(3, 3)
e = sim.Log_strain(F)
print(e)
simcoon.simmit.finite_L(F0: Annotated[numpy.typing.ArrayLike, numpy.float64], F1: Annotated[numpy.typing.ArrayLike, numpy.float64], DTime: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Eulerian velocity tensor from the transformation gradient at two different times.

Parameters:
  • F0 (pybind11::array_t<double>) – Transformation gradient at time t0 (3x3 matrix).

  • F1 (pybind11::array_t<double>) – Transformation gradient at time t1 (3x3 matrix).

  • DTime (double) – Time difference (t1 - t0).

Returns:

Eulerian velocity tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F0 = np.random.rand(3, 3)
F1 = np.random.rand(3, 3)
DTime = 0.1
L = sim.finite_L(F0, F1, DTime)
print(L)
simcoon.simmit.finite_D(F0: Annotated[numpy.typing.ArrayLike, numpy.float64], F1: Annotated[numpy.typing.ArrayLike, numpy.float64], DTime: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Eulerian symmetric rate tensor from the transformation gradient at two different times.

Parameters:
  • F0 (pybind11::array_t<double>) – Transformation gradient at time t0 (3x3 matrix).

  • F1 (pybind11::array_t<double>) – Transformation gradient at time t1 (3x3 matrix).

  • DTime (double) – Time difference (t1 - t0).

Returns:

Eulerian symmetric rate tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F0 = np.random.rand(3, 3)
F1 = np.random.rand(3, 3)
DTime = 0.1
D = sim.finite_D(F0, F1, DTime)
print(D)
simcoon.simmit.finite_W(F0: Annotated[numpy.typing.ArrayLike, numpy.float64], F1: Annotated[numpy.typing.ArrayLike, numpy.float64], DTime: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Eulerian antisymmetric spin tensor from the transformation gradient at two different times.

Parameters:
  • F0 (pybind11::array_t<double>) – Transformation gradient at time t0 (3x3 matrix).

  • F1 (pybind11::array_t<double>) – Transformation gradient at time t1 (3x3 matrix).

  • DTime (double) – Time difference (t1 - t0).

Returns:

Eulerian antisymmetric spin tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F0 = np.random.rand(3, 3)
F1 = np.random.rand(3, 3)
DTime = 0.1
W = sim.finite_W(F0, F1, DTime)
print(W)
simcoon.simmit.finite_Omega(F0: Annotated[numpy.typing.ArrayLike, numpy.float64], F1: Annotated[numpy.typing.ArrayLike, numpy.float64], DTime: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the rigid-body rotation spin tensor from the transformation gradient at two different times.

Parameters:
  • F0 (pybind11::array_t<double>) – Transformation gradient at time t0 (3x3 matrix).

  • F1 (pybind11::array_t<double>) – Transformation gradient at time t1 (3x3 matrix).

  • DTime (double) – Time difference (t1 - t0).

Returns:

Rigid-body rotation spin tensor (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

F0 = np.random.rand(3, 3)
F1 = np.random.rand(3, 3)
DTime = 0.1
Omega = sim.finite_Omega(F0, F1, DTime)
print(Omega)
simcoon.simmit.finite_DQ(Omega0: Annotated[numpy.typing.ArrayLike, numpy.float64], Omega1: Annotated[numpy.typing.ArrayLike, numpy.float64], DTime: SupportsFloat, copy: bool = True) numpy.typing.NDArray[numpy.float64]

Computes the Hughes-Winget approximation of the increment of rotation or transformation.

Parameters:
  • Omega0 (pybind11::array_t<double>) – Spin/velocity at time t0 (3x3 matrix).

  • Omega1 (pybind11::array_t<double>) – Spin/velocity at time t1 (3x3 matrix).

  • DTime (double) – Time difference (t1 - t0).

Returns:

Increment of rotation or transformation (3x3 matrix).

Return type:

pybind11::array_t<double>

Examples

import numpy as np
import simcoon as sim

Omega0 = np.random.rand(3, 3)
Omega1 = np.random.rand(3, 3)
DTime = 0.1
DQ = sim.finite_DQ(Omega0, Omega1, DTime)
print(DQ)