Modules

This section contains API documentation for the most important modules and interfaces that are necessary when using the library.

Thermomechanical properties through homogenization

fiberpy.mechanics.A2Eij(A)

Calculate the orthotropic moduli from an elasticity tensor written using the \((\phi_2, \phi)\) bases

Parameters:A (array_like of shape (6, 6)) – Elasticity tensor
Returns:\((E_1, E_2, E_3, \mu_{12}, \mu_{23}, \mu_{13}, \nu_{12}, \nu_{23}, \nu_{31})\)
fiberpy.mechanics.AIsotropic(E, nu)

Isotropic elasticity tensor given in the \((\phi, \phi)\) bases

Parameters:
  • E (float) – Young’s modulus
  • nu (float) – Poisson coefficient
Returns:

Elasticity tensor

Return type:

array of shape (6, 6)

class fiberpy.mechanics.FiberComposite(rve_data)

Fiber-reinforced composite

Parameters:rve_data (dict) – Dictionary defining the microstructure
ABar(a, model='TandonWeng', closure='orthotropic', recompute_UD=False)

Homogenized elasticity tensor in the principal frame

Parameters:
  • a (array_like of shape (3,)) – Principal values of the 2nd fiber orientation tensor, a[0] >= a[1] >= a[2]
  • model (str) – Micromechanical model for the unidirectional RVE (TandonWeng or MoriTanaka)
  • closure (str) – 4th-order fiber orientation closure model A4_*, see fiberpy.closure
  • recompute_UD (bool) – Whether force recomputing elastic properties of the unidirectional RVE
Returns:

Effective elasticity tensor using the \((\phi_2, \phi)\) bases

Return type:

array of shape (6, 6)

References

Advani, S. G. & Tucker III, C. L. The use of tensors to describe and predict fiber orientation in short fiber composites. Journal of Rheology, SOR, 1987, 31, 751-784

Eshelby()

Eshelby’s tensor

References

Tandon, G. P. & Weng, G. J. The effect of aspect ratio of inclusions on the elastic properties of unidirectionally aligned composites. Polymer Composites, Wiley Online Library, 1984, 5, 327-333

MoriTanaka()

Elasticity tensor for a unidirectional RVE using the original Mori-Tanaka formulation

Returns:Elasticity tensor using the \((\phi, \phi)\) bases
Return type:array of shape (6, 6)
TandonWeng()

Elasticity tensor for a unidirectional RVE using Tandon-Weng’s equations

Returns:Elasticity tensor using the \((\phi, \phi)\) bases
Return type:array of shape (6, 6)

References

Tandon, G. P. & Weng, G. J. The effect of aspect ratio of inclusions on the elastic properties of unidirectionally aligned composites. Polymer Composites, Wiley Online Library, 1984, 5, 327-333

alphaBar(ABar)

Homogenized thermal expansion coefficients in the principal frame

Parameters:ABar (array_like of shape (6, 6)) – Elasticity tensor
Returns:Effective thermal dilatation coefficient matrix
Return type:array of shape (3, 3)

References

Rosen, B. W. & Hashin, Z. Effective thermal expansion coefficients and specific heats of composite materials. International Journal of Engineering Science, Elsevier BV, 1970, 8, 157-173

get(variables)

Retrieve the RVE variables

read_rve_data()

Parse a RVE data defining the microstructure

vBar(x0, x1)

Volume average

fiberpy.mechanics.bulk_modulus(E, nu)

Bulk modulus from \((E, \nu)\)

fiberpy.mechanics.lmbda_mu(E, nu)

Convert \((E, \nu)\) to \((\lambda, \mu)\)

FEA interface for integrative simulations

class fiberpy.interface.FEAInterface(fiber_composite, mesh_size)

Generic FEA interface for integrative simulations

Parameters:
ABar_alphaBar()

Calculate the effective elasticity and thermal dilatation tensors on the TUB orientation space

locate_orientation(a)

Locate the element in the TUB orientation space containing the given fiber orientation

Parameters:a (ndarray of shape (n, 3)) – Principal values of fiber orientation tensor in decreasing order
class fiberpy.interface.OptistructInterface(fiber_composite, mesh_size)

FEA interface for Altair Optistruct

generate(a_dict, infile, outfile)

Generate an integrative simulation file for Altair Optistruct

Composite materials and elements are identified by their same PID / MID defined in the original file. They are given by the keys of the a_dict dictionary. All non-composite elements will conserve their properties but with a new PID / MID.

Parameters:
  • a_dict (dict) – Mapped fiber orientation tensor for given elements associated with PID / MID as keys. Its components are ordered as a11, a22, a33, a12, a23, a13
  • infile (str) – Input original isotropic simulation file
  • outfile (str) – Output modified integrative simulation file

Fiber orientation models

class fiberpy.orientation.Icosphere(radius=1, n_refinement=5)

Discretization of a sphere using subdivision of a icosahedron

Parameters:
  • radius (float) – Radius of the sphere
  • n_refinement (int) – Number of subdivision of the icosahedron
centroid()

Centroid coordinates of cells

equal_earth_projection()

Project node points from the sphere to 2-d plane using the Equal Earch projection

integrate(fun, vectorized=False)

Integrate a function defined on the icosphere

We assume that function is piecewisely constant in each cell

Parameters:
  • f (callable) – Function depending on x
  • vectorized (bool) – Whether the given function is vectorized
fiberpy.orientation.apply_Ax(v, A, x)

Compute the contraction of a 4th-order tensor (with minor symmetry) given in the principal frame on a symmetric 2nd-order tensor given in the global frame

Parameters:
  • v (ndarray of shape (3, 3)) – Principal directions along its columns
  • A (ndarray of shape (6, 6)) – 4th-order tensor (using fiberpy.tensor.Mat4())
  • x (ndarray of shape (3, 3)) – 2nd-order tensor
Returns:

Result array

Return type:

ndarray of shape (3, 3)

fiberpy.orientation.distribution_function(a, n_refinement=5, return_mesh=False)

Reconstruct the orientation distribution function (ODF) from the 2nd-order orientation tensor

The ODF is assumed to follow the Bingham distribution. Its probability density function is proportional to

\[\exp(\mathbf{x}^\mathsf{T}\mathbf{v}\mathbf{Z}\mathbf{v}^\mathsf{T}\mathbf{x})\]

where \(\mathbf{v}\) are the principal directions and \(\mathbf{Z}\) is a diagonal matrix of trace 1

Parameters:
  • a (array_like of shape (3, 3) or (3,)) – Fiber orientation tensor (or its principal values in decreasing order)
  • n_refinement (int) – Number of subdivision of the icosahedron
  • return_mesh (bool) – Also return the icosphere mesh containing the values on cells
Returns:

Orientation distribution function odf(x) defined for normal vectors on the unit sphere

Return type:

callable

fiberpy.orientation.fiber_orientation(a0, t, L, ci, ar, kappa=1, D3=None, closure='orthotropic', method='RK45', debug=False, **kwargs)

Compute fiber orientation tensor evolution using the Folgar-Tucker model as its variants

Parameters:
  • a0 (ndarray of shape (3, 3)) – Initial fiber orientation tensor
  • t (ndarray of shape (1, )) – Time instants
  • L (ndarray of shape (3, 3)) – Velocity gradient
  • ci (float) – Interaction coefficient
  • ar (float) – Aspect ratio
  • kappa (float) – Reduction coefficient when using the RSC model, 0 < kappa <= 1
  • D3 (ndarray of shape (3, )) – Coefficients \((D_1,D_2,D_3)\) when using the MRD model
  • closure (str) – 4th-order fiber orientation closure model A4_*, see fiberpy.closure
  • method (str) – Numerical method to integrate the IVP, see scipy.integrate.solve_ivp(), or julia
  • debug (bool) – Return instead the sol object and dadt
fiberpy.orientation.project_aij(a)

Project fiber orientation tensors to the physical space

Parameters:a (array_like of shape (3,)) – Principal values of fiber orientation tensor in decreasing order
fiberpy.orientation.shear_steady_state(ci, ar, closure='orthotropic', a0_isotropic='3d')

Fiber orientation at steady state under simple shear

Parameters:
  • ci (float) – Interaction coefficient
  • ar (float) – Aspect ratio
  • closure (str) – 4th-order fiber orientation closure model A4_*, see fiberpy.closure
  • a0_isotropic (str) – If 3d, using 3-d initial isotropic orientation; if 2d, using planar initial isotropic orientation

Closure models for 4th-order fiber orientation tensor

fiberpy.closure.A4_exact(a)

Compute the exact closure in the principal frame

Parameters:a (array_like of shape (3,)) – Fiber orientation principal values, a[0] >= a[1] >= a[2]
Returns:4th-order orientation tensor written using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)
fiberpy.closure.A4_hybrid(a)

Compute the hybrid closure

Parameters:a (array_like of shape (3, 3) or (3,)) – Fiber orientation tensor (or its principal values in decreasing order)
Returns:4th-order orientation tensor written using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)

References

Advani, S. G. & Tucker III, C. L. Closure approximations for three-dimensional structure tensors. Journal of Rheology, SOR, 1990, 34, 367-386

fiberpy.closure.A4_invariants(a)

Compute the IBOF closure

Parameters:a (array_like of shape (3, 3) or (3,)) – Fiber orientation tensor (or its principal values in decreasing order)
Returns:4th-order orientation tensor written using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)
fiberpy.closure.A4_linear(a)

Compute the linear closure

Parameters:a (array_like of shape (3, 3) or (3,)) – Fiber orientation tensor (or its principal values in decreasing order)
Returns:4th-order orientation tensor written using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)

References

Advani, S. G. & Tucker III, C. L. The use of tensors to describe and predict fiber orientation in short fiber composites. Journal of Rheology, SOR, 1987, 31, 751-784

fiberpy.closure.A4_orthotropic(a)

Compute the orthotropic closure in the principal frame

Parameters:a (array_like of shape (3,)) – Fiber orientation principal values, a[0] >= a[1] >= a[2]
Returns:4th-order orientation tensor using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)

References

VerWeyst, B. E. Numerical predictions of flow-induced fiber orientation in three-dimensional geometries. University of Illinois at Urbana-Champaign, 1998

fiberpy.closure.A4_quadratic(a)

Compute the quadratic closure

Parameters:a (array_like of shape (3, 3) or (3,)) – Fiber orientation tensor (or its principal values in decreasing order)
Returns:4th-order orientation tensor written using the \((\phi,\phi)\) bases
Return type:array of shape (6, 6)

References

Advani, S. G. & Tucker III, C. L. The use of tensors to describe and predict fiber orientation in short fiber composites. Journal of Rheology, SOR, 1987, 31, 751-784

Utility functions for manupulating 2nd/4th-order tensors

fiberpy.tensor.Mat2(sig)

Bijection between a symmetric 2nd order tensor space and 6-dim vector space using the \(\phi\) basis

\[\begin{split}\begin{bmatrix} s_{11} & s_{12} & s_{13} \\ s_{12} & s_{22} & s_{23} \\ s_{13} & s_{23} & s_{33} \\ \end{bmatrix}\iff\begin{bmatrix} s_{11} \\ s_{22} \\ s_{33} \\ s_{12} \\ s_{23} \\ s_{13} \end{bmatrix}\end{split}\]
Parameters:sig (ndarray of dim 1 or 2) – 2nd-order tensor
fiberpy.tensor.Mat22(eps)

Bijection between a symmetric 2nd order tensor space and 6-dim vector space using the \(\phi_2\) basis

\[\begin{split}\begin{bmatrix} e_{11} & e_{12} & e_{13} \\ e_{12} & e_{22} & e_{23} \\ e_{13} & e_{23} & e_{33} \\ \end{bmatrix}\iff\begin{bmatrix} e_{11} \\ e_{22} \\ e_{33} \\ 2e_{12} \\ 2e_{23} \\ 2e_{13} \end{bmatrix}\end{split}\]
Parameters:eps (ndarray of dim 1 or 2) – 2nd-order tensor
fiberpy.tensor.Mat2S(eps)

Bijection between a symmetric 2nd order tensor space and 6-dim vector space using the \(\phi_\mathrm{S}\) basis

\[\begin{split}\begin{bmatrix} e_{11} & e_{12} & e_{13} \\ e_{12} & e_{22} & e_{23} \\ e_{13} & e_{23} & e_{33} \\ \end{bmatrix}\iff\begin{bmatrix} e_{11} \\ e_{22} \\ e_{33} \\ \sqrt{2}e_{12} \\ \sqrt{2}e_{23} \\ \sqrt{2}e_{13} \end{bmatrix}\end{split}\]
Parameters:eps (ndarray of dim 1 or 2) – 2nd-order tensor
fiberpy.tensor.Mat4(A)

Matrix representation of a 4th order tensor with minor symmety using the \((\phi,\phi)\) bases

Parameters:A (ndarray of shape (3, 3, 3, 3)) – 4th-order tensor
fiberpy.tensor.MatGP(v)

Matrix that converts a 2nd-order tensor from the global frame (\(\phi\) basis) to the principal frame (\(\phi\) basis)

Parameters:v (ndarray of shape (3, 3)) – Principal directions along its columns
fiberpy.tensor.MatGP2(v)

Matrix that converts a 2nd-order tensor from the global frame (\(\phi_2\) basis) to the principal frame (\(\phi\) basis)

Parameters:v (ndarray of shape (3, 3)) – Principal directions along its columns
fiberpy.tensor.MatPG(v)

Matrix that converts a 2nd-order tensor from the principal frame (\(\phi\) basis) to the global frame (\(\phi\) basis)

Parameters:v (ndarray of shape (3, 3)) – Principal directions along its columns
fiberpy.tensor.ij2M(ij)

Convert (i, j) indices of a symmetric 2nd-order tensor to its vector index

fiberpy.tensor.ijkl2MN(ijkl)

Convert (i, j, k, l) indices of a symmetric 4nd-order tensor to its matrix index