cratepy.clustering.citoperations.gop_material_independent_terms

gop_material_independent_terms(strain_formulation, problem_type, rve_dims, n_voxels_dims)[source]

Compute Green operator material independent terms in frequency domain.

The Green operator is here assumed to be associated with an isotropic elastic reference material.

The material independent terms of the Green operator are conveniently computed to perform an efficient update of the Green operator if the associated reference material elastic properties are updated by any means (e.g., self-consistent scheme).

Infinitesimal strains:

\[(\breve{\Phi}^{0}_{1})_{klij} (\boldsymbol{\zeta}) = \dfrac{ \delta_{ki} \zeta_{j} \zeta_{l} + \delta_{kj} \zeta_{i} \zeta_{l} + \delta_{li} \zeta_{j} \zeta_{k} + \delta_{lj} \zeta_{i} \zeta_{k}} {||\boldsymbol{\zeta}||^{2}} \, ,\]
\[(\breve{\Phi}^{0}_{2})_{klij} (\boldsymbol{\zeta}) = - \dfrac{\zeta_{k}\zeta_{l}\zeta_{i}\zeta_{j}} {||\boldsymbol{\zeta}||^{4}} \, ,\]
\[i,j,k,l =1, \dots, n_{\text{dim}} \, ,\]

where \((\breve{\Phi}^{0}_{1})_{klij}\) and \((\breve{\Phi}^{0}_{2})_{klij}\) are the first and second fourth-order Green operator material independent terms, respectively, \(\boldsymbol{\zeta}\) is the frequency wave vector, \(\delta_{ij}\) is the Kronecker delta, and \(n_{\text{dim}}\) is the number of spatial dimensions.


Finite strains:

\[(\breve{\Phi}^{0}_{1})_{klij} (\boldsymbol{\zeta}) = \dfrac{ \delta_{ki} \zeta_{j} \zeta_{l}} {||\boldsymbol{\zeta}||^{2}} \, , \qquad (\breve{\Phi}^{0}_{2})_{klij} (\boldsymbol{\zeta}) = - \dfrac{\zeta_{k}\zeta_{l}\zeta_{i}\zeta_{j}} {||\boldsymbol{\zeta}||^{4}} \, ,\]
\[i,j,k,l =1, \dots, n_{\text{dim}} \, .\]

where \((\breve{\Phi}^{0}_{1})_{klij}\) and \((\breve{\Phi}^{0}_{2})_{klij}\) are the first and second fourth-order Green operator material independent terms, respectively, \(\boldsymbol{\zeta}\) is the frequency wave vector, \(\delta_{ij}\) is the Kronecker delta, and \(n_{\text{dim}}\) is the number of spatial dimensions.

A detailed description of the computational implementation based on Hadamard (element-wise) operations can be found in Section 4.6 of Ferreira (2022) [1].


Parameters:
  • strain_formulation ({'infinitesimal', 'finite'}) – Problem strain formulation.

  • problem_type (int) – Problem type: 2D plane strain (1), 2D plane stress (2), 2D axisymmetric (3) and 3D (4).

  • rve_dims (list[float]) – RVE size in each dimension.

  • n_voxels_dims (list[int]) – Number of voxels in each dimension of the regular grid (spatial discretization of the RVE).

Returns:

  • gop_1_dft_vox (dict) – Regular grid shaped matrix (item, numpy.ndarray) containing each fourth-order matricial form component (key, str) of the first Green operator material independent term in the frequency domain (discrete Fourier transform).

  • gop_2_dft_vox (dict) – Regular grid shaped matrix (item, numpy.ndarray) containing each fourth-order matricial form component (key, str) of the second Green operator material independent term in the frequency domain (discrete Fourier transform).

  • gop_0_freq_dft_vox (dict) – Regular grid shaped matrix (item, numpy.ndarray) containing each fourth-order matricial form component (key, str) of the Green operator zero-frequency (material independent) term in the frequency domain (discrete Fourier transform).