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.

is_symmetric()[source]

Print the symmetry status of the effective stiffness.

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.

_get_effective_parameters()[source]

Calculates the effective parameters of a single lamina for given constituent parameters.

Raises:

ValueError – Package can only be “hex” or “square”.

get_effective_stiffness()[source]

Return the planar stiffness based on the effective parameters of a single lamina.

Returns:

C (ndarray of shape (3, 3)) – Planar stiffness of lamina.

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.