Mori-Tanaka orientation-averaging following Benveniste

[1]:
import numpy as np
import mechmean
import mechkit
from mechmean.example_input import inp
[2]:
np.set_printoptions(linewidth=140)
[3]:
# Define isotropic constituents
inclusion = mechkit.material.Isotropic(E=inp["E_f"], nu=inp["nu_f"])
matrix = mechkit.material.Isotropic(E=inp["E_m"], nu=inp["nu_m"])
[4]:
# Define orientation averager and polairzation
averager = mechmean.orientation_averager.AdvaniTucker(N4=inp["N4"])
P_func = mechmean.hill_polarization.Factory().needle
[5]:
# Homogenize
input_dict = {
    "phases": {
        "inclusion": {
            "material": inclusion,
            "volume_fraction": inp["c_f"],
            "hill_polarization": P_func(matrix=matrix),
        },
        "matrix": {"material": matrix},
    },
    "averaging_func": averager.average,
}
mori = mechmean.approximation.MoriTanakaOrientationAveragedBenveniste(**input_dict)
C_eff = mori.calc_C_eff()
[6]:
print("Effective stiffness Mori-Tanaka orientation averaged Benveniste")
print(C_eff)
Effective stiffness Mori-Tanaka orientation averaged Benveniste
[[ 1.47943982e+01  7.00026565e+00  5.04483004e+00 -3.11842820e-02 -2.84194469e-01  4.86308110e-01]
 [ 7.00026565e+00  1.25132047e+01  5.05650542e+00 -2.97292454e-02 -7.22634268e-02  4.39040769e-01]
 [ 5.04483004e+00  5.05650542e+00  8.82684679e+00  1.47193211e-02 -1.30284579e-02 -2.30332984e-02]
 [-3.11842820e-02 -2.97292454e-02  1.47193211e-02  3.82448644e+00  1.66810461e-02 -1.23934804e-01]
 [-2.84194469e-01 -7.22634268e-02 -1.30284579e-02  1.66810461e-02  3.98247576e+00 -4.84309199e-02]
 [ 4.86308110e-01  4.39040769e-01 -2.30332984e-02 -1.23934804e-01 -4.84309199e-02  8.38639337e+00]]