homopy.methods module
Created on Wed Apr 27 21:09:24 2022
@author: nicolas.christ@kit.edu
Mori-Tanaka Homogenization after [Benveniste1987]. Multi-inclusion implementation after [Brylka2017]. Eshelby’s tensor is taken from [Tandon1984] but can also be found in [Gross2016]. Thoroughly literature on Eshelby’s tensor can also be found in [Mura1987] (pp. 74 ff.). Halpin-Tsai homogenization after [Fu2019] (pp. 143 ff.). Also, the effective planar stiffness matrix for the Halpin-Tsai homogenization is based on the laminate analogy approach after [Fu2019] (pp. 155 ff.).
- class homopy.methods.MoriTanaka(matrix, fiber, v_frac, a_ratio, shape='ellipsoid', N4=None, symmetrize=False)[source]
Bases:
Tensor
Mori Tanaka class to calculate the homogenized stiffness for fiber reinforced polymers with possibly different types of inclusions. The class inherits from the Tensor class.
- Parameters:
matrix (Elasticity) – Polymer matrix material in normalized Voigt notation.
fiber (Elasticity or list of Elasticity) – Fiber material in normalized Voigt notation.
v_frac (float) – Volume fraction of the fiber material within the matrix material.
a_ratio (float or list of floats) – Aspect ratio of the fiber material.
shape (string or list of strings, default='ellipsoid') – Flag to determine which assumptions are taken into consideration for the geometry of the fiber (options: ‘ellipsoid’, ‘sphere’, ‘needle’)
N4 (ndarray or list of ndarrays of shape (3, 3, 3, 3), default=None) – Orientation tensor(s) of 4th order.
symmetrize (boolean, default='False') – Flag to determine whether the effective and orientation averaged stiffnesses shall be symmetrized. For this the method in [Segura2023] is used.
- Variables:
~MoriTanaka.matrix (Elasticity) – Polymer matrix material.
~MoriTanaka.fiber (Elasticity or list of Elasticity) – Fiber (or other inclusion) materials.
~MoriTanaka.Cm (ndarray of shape (6, 6)) – Stiffness of matrix material in normalized Voigt notation in Pa.
~MoriTanaka.eye (ndarray of shape (6, 6)) – Identity tensor in normalized Voigt notation.
~MoriTanaka.N2 (ndarray or list of ndarrays of shape (3, 3)) – Orientation tensor(s) of 2nd order.
~MoriTanaka.N4 (ndarray or list of ndarrays of shape (3, 3, 3, 3)) – Orientation tensor(s) of 4th order.
~MoriTanaka.effective_stiffness3333 (ndarray of shape (3, 3, 3, 3)) – Holds the stiffness values in the regular tensor notation in Pa. When orientations are given, these are included directly.
~MoriTanaka.effective_stiffness66 (ndarray of shape (6, 6)) – Holds the stiffness values in the normalized Voigt notation in Pa. When orientations are given, these are included directly.
- _get_eshelby(a_ratio, return_dim='66', shape='ellipsoid')[source]
Return the Eshelby tensor according to the fiber type.
- Parameters:
a_ratio (float) – Aspect ratio of fiber (dimensionless).
return_dim (string, default='66') – Flag to determine whether the tensor should be returned in normalized Voigt or regular tensor notation (options: ‘66’, ‘3333’)
shape (string, default='ellipsoid') – Flag to determine which assumptions are taken into consideration for the geometry of the fiber (options: ‘ellipsoid’, ‘sphere’, ‘needle’)
- Returns:
S (ndarray of shape (6, 6) or (3, 3, 3, 3)) – Eshelby inclusion tensor.
- get_effective_stiffness()[source]
Return the effective stiffness of the composite material, based on Eq. 14a in [Benveniste1987].
- Returns:
C_eff (ndarray of shape (6, 6)) – Homogenized stiffness tensor in the normalized Voigt notation in Pa.
- get_average_stiffness(N4, return_dim='66')[source]
Return the averaged effective stiffness based on orientation tensors. Overwrites the object variables self.effective_stiffness66 and self.effective_stiffness3333.
- Parameters:
N4 (ndarray or list of ndarrays of shape (3, 3, 3, 3)) – Orientation tensor of 4th order.
return_dim (string, default='66') – Flag to determine whether the tensor should be returned in normalized Voigt or regular tensor notation (options: ‘66’, ‘3333’)
- Returns:
ndarray of shape (6, 6) or (3, 3, 3, 3) – Averaged stiffness tensor in normalized Voigt or regular tensor notation in Pa.
- static get_orientation_average(tensor, N2, N4)[source]
Return the orientation average of a tensor after [Advani1987], Eq. 29.
- Parameters:
tensor (ndarray of shape (3, 3, 3, 3)) – Tensor to be averaged (must be transversely isotropic).
N2 (ndarray of shape (3, 3)) – Orientation tensor of 2nd order.
N4 (ndarray of shape (3, 3, 3, 3)) – Orientation tensor of 4th order.
- Returns:
ave_tensor (ndarray of shape (3, 3, 3, 3)) – Orientation average of given tensor.
- class homopy.methods.HalpinTsai(E_f, E_m, G_f, G_m, nu_f, nu_m, l_f, r_f, vol_f, package='hex')[source]
Bases:
object
Halpin Tsai class to calculate the homogenized stiffness for fiber reinforced polymers as laminas. This is then used as input for the Laminate class.
- Parameters:
E_f (float) – Young’s modulus of fiber in Pa.
E_m (float) – Young’s modulus of matrix in Pa.
G_f (float) – Shear modulus of fiber in Pa.
G_m (float) – Shear modulus of matrix in Pa.
nu_f (float) – Poisson ratio of fiber (dimensionless).
nu_m (float) – Poisson ratio of matrix (dimensionless).
l_f (float) – Average length of fiber in m.
r_f (float) – Average radius of fiber in m.
vol_f (float) – Poisson ratio of matrix (dimensionless).
package (string, default: hex) – Package structure of fibers in composite (options: ‘hex’, ‘square’).
- Variables:
~HalpinTsai.E_f (float) – Young’s modulus of fiber in Pa.
~HalpinTsai.E_m (float) – Young’s modulus of matrix in Pa.
~HalpinTsai.G_f (float) – Shear modulus of fiber in Pa.
~HalpinTsai.G_m (float) – Shear modulus of matrix in Pa.
~HalpinTsai.nu_f (float) – Poisson ratio of fiber (dimensionless).
~HalpinTsai.nu_m (float) – Poisson ratio of matrix (dimensionless).
~HalpinTsai.l_f (float) – Average length of fiber in m.
~HalpinTsai.r_f (float) – Average radius of fiber in m.
~HalpinTsai.vol_f (float) – Poisson ratio of matrix (dimensionless).
~HalpinTsai.package (string, default: hex) – Package structure of fibers in composite (options: ‘hex’, ‘square’).
~HalpinTsai.effective_stiffness33 (ndarray of shape (3, 3)) – Holds the stiffness values in the reduced, normalized Voigt notation in Pa.
- class homopy.methods.Laminate(lamina_stiffnesses, angles, vol_fracs=None)[source]
Bases:
object
Class to average over n laminas from Halpin-Tsai homogenization.
- Parameters:
lamina_stiffnesses (array of shape (n,)) – Individual stiffness of n laminas in Pa.
angles (array of shape (n,)) – Individual angle of ith lamina in radians.
vol_fracs (array of shape (n,)) – Volume fraction of ith lamina (must sum to 1). If None is given, each lamina is averaged equally.
- Variables:
~Laminate.effective_stiffness33 (ndarray of shape (3, 3)) – Holds the stiffness values in the reduced, normalized Voigt notation in Pa.
- get_effective_stiffness()[source]
Return effective stiffness of laminate.
- Returns:
C_eff (ndarray of shape (3, 3)) – Effective stiffness of laminate in Pa.
- static rotate_stiffness(lamina_stiffness, angle)[source]
Return planarly rotated stiffness matrix. The planar rotation matrix around the z-axis has the form
\[\begin{split}\underline{R}=\begin{pmatrix} \cos\phi & -\sin\phi & 0\\ \sin\phi & \cos\phi& 0\\ 0 & 0 & 1 \end{pmatrix},\end{split}\]from which the transformation matrix was extracted in accordance to [Slawinksi2010], Eq. 5.2.19.
- Parameters:
lamina_stiffness (ndarray of shape (3, 3)) – Stiffness matrix of lamina in Pa.
angle (float) – Planar angle to rotate the stiffness matrix about in radiants.
- Returns:
rot_stiffness (ndarray of shape (3, 3)) – Rotated stiffness matrix in Pa.