material¶
Object |
Number of independent parameters |
Adjustable alignment |
---|---|---|
Isotropic |
2 |
no |
TransversalIsotropic |
5 |
yes |
Orthotropic |
9 |
no |
- class mechkit.material.Isotropic(auxetic=False, **kwargs)[source]¶
Representation of homogeneous isotropic material.
Use cases:
Create an instance of this class and
use the instance as an container representing the material
access most common material parameters as attributes or dict-like (implementation of [wikipedia_conversion_table])
do arithemtic on eigenvalues using the operators +, -, * with numbers.
Quickstart:
# Create instance mat = mechkit.material.Isotropic(E=2e6, nu=0.3) # Use attributes G = mat.G stiffness = mat.stiffness_mandel6
Two independent material parameters uniquely define an isotropic material [1] (chapter 4.1.2). Therefore, exactly two material parameters have to be passed to the constructor of this class.
The following primary arguments and aliases are case-insensitive keyword arguments of the constructor:
K : Compression modulus
Aliases : compression_modulus
G : Shear modulus
Aliases : mu, shear_modulus, second_lame, lame_2, C44_voigt, C55_voigt, C66_voigt, C2323, C1313, C1212
E : Youngs modulus
Aliases : youngs_modulus, elastic_modulus
la: First Lame parameter
Aliases : lambd, first_lame, lame_1, C23_voigt, C13_voigt, C12_voigt, C2233, C1133, C1122, C3322, C3311, C2211
nu: Poission’s ratio
Aliases : poisson, poisson_ratio
M : Constrained modulus or P-wave modulus
Aliases : p_wave_modulus, longitudinal_modulus, constrained modulus, C11_voigt, C22_voigt, C33_voigt, C1111, C2222, C3333
with (See Definition of Stiffness Components)
C<ij>_voigt : Component of stiffness matrix in Voigt notation
C<ijkl> : Component of stiffness in tensor notation
Attributes: ( Accessible both as attributes and dict-like
mat['E']
)K : Bulk modulus
G, mu : Shear modulus
E : Young’s modulus
nu, poisson : Poissons ratio
la : Lame’s first parameter
stiffness : Stiffness in tensor notation
stiffness_mandel6 : Stiffness in Mandel6 notation
stiffness_voigt : Stiffness in Voigt notation
compliance : Compliance in tensor notation
compliance_mandel6 : Compliance in Mandel6 notation
compliance_voigt : Compliance in Voigt notation
Warning
Using parameters E and M leads to an ambiguity as the poisson’s ratio can be positive or negative.
Use auxetic=False if you expect a positive poissons ratio.
Use auxetic=True if you expect a negative poissons ratio.
Note
Isotropic linear elasticity:
\[\begin{split}\begin{align*} \boldsymbol{\sigma} &= \mathbb{C} \left[ \boldsymbol{\varepsilon} \right] \\ &= \left( 3 K \mathbb{P}_{\text{1}} + 2 G \mathbb{P}_{\text{2}} \right) \left[ \boldsymbol{\varepsilon} \right] \\ &= \left( 2 \mu \mathbb{I}^{\text{S}} + \lambda \mathbf{I} \otimes \mathbf{I} \right) \left[ \boldsymbol{\varepsilon} \right] \end{align*}\end{split}\]with (See
mechkit.tensors.Basic
for details and definitions)\[\begin{split}\begin{alignat}{2} \mathbb{I}^{\text{S}} &= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & \frac{1}{2} & 0 & 0 \\ 0 & 0 & 0 & 0 & \frac{1}{2} & 0 \\ 0 & 0 & 0 & 0 & 0 & \frac{1}{2} \end{bmatrix}_{[\text{Voigt}]} \hspace{-10mm} \scriptsize{ \boldsymbol{V}_{\alpha} \otimes \boldsymbol{V}_{\beta} } &= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \\ \end{bmatrix}_{[\text{Mandel6}]} \hspace{-15mm} \scriptsize{ \boldsymbol{B}_{\alpha} \otimes \boldsymbol{B}_{\beta} } \\ \mathbf{I} \otimes \mathbf{I} &= \begin{bmatrix} 1 & 1 & 1 & 0 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ \end{bmatrix}_{[\text{Voigt}]} \hspace{-10mm} \scriptsize{ \boldsymbol{V}_{\alpha} \otimes \boldsymbol{V}_{\beta} } &= \begin{bmatrix} 1 & 1 & 1 & 0 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ \end{bmatrix}_{[\text{Mandel6}]} \hspace{-15mm} \scriptsize{ \boldsymbol{B}_{\alpha} \otimes \boldsymbol{B}_{\beta} } \end{alignat}\end{split}\]Therefore, with \(\mu = G\) and \(M = 2G + \lambda\) the isotropic stiffness is
\[\begin{split}\begin{align*} \mathbb{C}_{\text{isotropic}} &= \begin{bmatrix} C_{11} & C_{12} & C_{13} & 0 & 0 & 0 \\ C_{12} & C_{22} & C_{23} & 0 & 0 & 0 \\ C_{13} & C_{23} & C_{33} & 0 & 0 & 0 \\ 0 & 0 & 0 & C_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & C_{55} & 0 \\ 0 & 0 & 0 & 0 & 0 & C_{66} \end{bmatrix}_{[\text{Voigt}]} \hspace{-10mm} \scriptsize{ \boldsymbol{V}_{\alpha} \otimes \boldsymbol{V}_{\beta} } \\ &= \begin{bmatrix} M & \lambda & \lambda & 0 & 0 & 0 \\ \lambda & M & \lambda & 0 & 0 & 0 \\ \lambda & \lambda & M & 0 & 0 & 0 \\ 0 & 0 & 0 & G & 0 & 0 \\ 0 & 0 & 0 & 0 & G & 0 \\ 0 & 0 & 0 & 0 & 0 & G \end{bmatrix}_{[\text{Voigt}]} \hspace{-10mm} \scriptsize{ \boldsymbol{V}_{\alpha} \otimes \boldsymbol{V}_{\beta} } \\ &= \begin{bmatrix} C_{11} & C_{12} & C_{13} & 0 & 0 & 0 \\ C_{12} & C_{22} & C_{23} & 0 & 0 & 0 \\ C_{13} & C_{23} & C_{33} & 0 & 0 & 0 \\ 0 & 0 & 0 & 2C_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & 2C_{55} & 0 \\ 0 & 0 & 0 & 0 & 0 & 2C_{66} \end{bmatrix}_{[\text{Mandel6}]} \hspace{-15mm} \scriptsize{ \boldsymbol{B}_{\alpha} \otimes \boldsymbol{B}_{\beta} } \\ &= \begin{bmatrix} M & \lambda & \lambda & 0 & 0 & 0 \\ \lambda & M & \lambda & 0 & 0 & 0 \\ \lambda & \lambda & M & 0 & 0 & 0 \\ 0 & 0 & 0 & 2G & 0 & 0 \\ 0 & 0 & 0 & 0 & 2G & 0 \\ 0 & 0 & 0 & 0 & 0 & 2G \end{bmatrix}_{[\text{Mandel6}]} \hspace{-15mm} \scriptsize{ \boldsymbol{B}_{\alpha} \otimes \boldsymbol{B}_{\beta} } \end{align*}\end{split}\]Examples
>>> import mechkit
>>> # Create instance >>> mat = mechkit.material.Isotropic(E=2e6, nu=0.3) >>> mat = mechkit.material.Isotropic(E=2e6, K=1e6)
>>> # Access attributes >>> mat.G 857142 >>> mat['E'] 2000000
>>> # More examples >>> mat1 = mechkit.material.Isotropic(M=15, G=5) >>> mat2 = mechkit.material.Isotropic(C11_voigt=20, C44_voigt=5) >>> mat1.stiffness_voigt [[15. 5. 5. 0. 0. 0.] [ 5. 15. 5. 0. 0. 0.] [ 5. 5. 15. 0. 0. 0.] [ 0. 0. 0. 5. 0. 0.] [ 0. 0. 0. 0. 5. 0.] [ 0. 0. 0. 0. 0. 5.]] >>> mat2['stiffness_voigt'] [[20. 10. 10. 0. 0. 0.] [10. 20. 10. 0. 0. 0.] [10. 10. 20. 0. 0. 0.] [ 0. 0. 0. 5. 0. 0.] [ 0. 0. 0. 0. 5. 0.] [ 0. 0. 0. 0. 0. 5.]] >>> (0.5*mat1 + 0.5*mat2)['stiffness_voigt'] [[17.5 7.5 7.5 0. 0. 0. ] [ 7.5 17.5 7.5 0. 0. 0. ] [ 7.5 7.5 17.5 0. 0. 0. ] [ 0. 0. 0. 5. 0. 0. ] [ 0. 0. 0. 0. 5. 0. ] [ 0. 0. 0. 0. 0. 5. ]] >>> mat1['stiffness_mandel6'] [[15. 5. 5. 0. 0. 0.] [ 5. 15. 5. 0. 0. 0.] [ 5. 5. 15. 0. 0. 0.] [ 0. 0. 0. 10. 0. 0.] [ 0. 0. 0. 0. 10. 0.] [ 0. 0. 0. 0. 0. 10.]] >>> mat1['compliance_mandel6'] [[ 0.08 -0.02 -0.02 0. 0. 0. ] [-0.02 0.08 -0.02 0. 0. 0. ] [-0.02 -0.02 0.08 0. 0. 0. ] [ 0. -0. -0. 0.1 -0. -0. ] [ 0. 0. 0. 0. 0.1 0. ] [ 0. 0. 0. 0. 0. 0.1 ]]
- class mechkit.material.TransversalIsotropic(principal_axis=[1, 0, 0], **kwargs)[source]¶
Representation of homogeneous transversal isotropic material.
Quickstart:
# Create instance mat = mechkit.material.TransversalIsotropic( E_l=100.0, E_t=20.0, nu_lt=0.3, G_lt=10.0, G_tt=7.0, principal_axis=[1, 1, 0] ) # Use attributes stiffness = mat.stiffness_mandel6
Five independent material parameters uniquely define a transversal isotropic material [1] (chapter 4.1.2). Therefore, exactly five material parameters have to be passed to the constructor of this class.
See definitions of Engineering Constants.
Coordinate-free indices are used
l : longitudinal, i.e. in direction of principal axis
t : transversal, i.e. perpendicular to principal axis
and the direction of the principal axis can be given in vector format as principal_axis. The default principal axis is the x-axis. The vector does not have to be normalized.
Valid keyword arguments of the constructor are:
E_l
E_t
G_lt
G_tt
nu_lt
nu_tl
nu_tt
Only four combinations of these arguments are valid:
E_l, E_t, G_lt, G_tt, nu_lt
E_l, E_t, G_lt, G_tt, nu_tl
E_l, E_t, G_lt, nu_lt, nu_tt
E_l, E_t, G_lt, nu_tl, nu_tt
Attributes are:
E_l, E_t, G_lt, G_tt, nu_lt, nu_tl, nu_tt
stiffness : Stiffness in tensor notation
stiffness_mandel6 : Stiffness in Mandel6 notation
stiffness_voigt : Stiffness in Voigt notation
compliance : Compliance in tensor notation
compliance_mandel6 : Compliance in Mandel6 notation
compliance_voigt : Compliance in Voigt notation
Examples
>>> import mechkit
>>> # Create instance >>> mat = mechkit.material.TransversalIsotropic( E_l=100.0, E_t=20.0, nu_lt=0.3, G_lt=10.0, G_tt=7.0, principal_axis=[0, 1, 0] )
>>> # Access attributes >>> mat.compliance_voigt [[ 0.05 -0.003 -0.021 0. 0. 0. ] [-0.003 0.01 -0.003 0. 0. 0. ] [-0.021 -0.003 0.05 0. 0. 0. ] [ 0. -0. -0. 0.1 -0. -0. ] [ 0. 0. 0. 0. 0.143 0. ] [ 0. 0. 0. 0. 0. 0.1 ]]
>>> mat.stiffness_mandel6 [[ 25.68 11.21 11.68 0. 0. 0. ] [ 11.21 106.72 11.21 0. 0. 0. ] [ 11.68 11.21 25.68 0. 0. 0. ] [ 0. 0. 0. 20. 0. 0. ] [ 0. 0. 0. 0. 14. 0. ] [ 0. 0. 0. 0. 0. 20. ]]
- class mechkit.material.Orthotropic(E1, E2, E3, nu12, nu13, nu23, G12, G13, G23)[source]¶
Representation of homogeneous orthotropic material.
Nine independent material parameters uniquely define an orthotropic material [1] (chapter 4.1.2), aligned with the coordinate axes.
See definitions of Engineering Constants.
Attributes are:
E1, E2, E3, nu12, nu13, nu23, G12, G13, G23
stiffness : Stiffness in tensor notation
stiffness_mandel6 : Stiffness in Mandel6 notation
stiffness_voigt : Stiffness in Voigt notation
compliance : Compliance in tensor notation
compliance_mandel6 : Compliance in Mandel6 notation
compliance_voigt : Compliance in Voigt notation
Compliance
\[\begin{split}\begin{align*} \mathbb{C}^{-1}_{\text{orthotropic}} &= \begin{bmatrix} \frac{1}{E_1} & -\frac{\nu_{21}}{E_2} & -\frac{\nu_{31}}{E_3} & 0 & 0 & 0 \\ -\frac{\nu_{12}}{E_1} & \frac{1}{E_2} & -\frac{\nu_{32}}{E_3} & 0 & 0 & 0 \\ -\frac{\nu_{13}}{E_1} & -\frac{\nu_{23}}{E_2} & \frac{1}{E_3} & 0 & 0 & 0 \\ 0 & 0 & 0 & \frac{1}{G_{23}} & 0 & 0 \\ 0 & 0 & 0 & 0 & \frac{1}{G_{31}} & 0 \\ 0 & 0 & 0 & 0 & 0 & \frac{1}{G_{12}} \end{bmatrix}_{[\text{Voigt}]} \\ &= \begin{bmatrix} \frac{1}{E_1} & -\frac{\nu_{12}}{E_1} & -\frac{\nu_{13}}{E_1} & 0 & 0 & 0 \\ & \frac{1}{E_2} & -\frac{\nu_{23}}{E_2} & 0 & 0 & 0 \\ & &\frac{1}{E_3} & 0 & 0 & 0 \\ & & & \frac{1}{G_{23}} & 0 & 0 \\ & sym & & & \frac{1}{G_{31}} & 0 \\ & & & & & \frac{1}{G_{12}} \end{bmatrix}_{[\text{Voigt}]} \end{align*}\end{split}\]