Mechanical properties of composites using Micromechanics


In [1]:
%matplotlib inline

import numpy as np
from numpy.linalg import inv
import pandas as pd
import matplotlib.pyplot as plt
from simmit import smartplus as sim
from simmit import identify as iden
import os
import itertools

dir = os.path.dirname(os.path.realpath('__file__'))

Problem 1:

Consider a 2-phase composite, with an Al matrix containing Al2O3 spherical inhomogeneities, with the following elastic constants for each phase:

$E_{Al} = 70000 \quad \nu_{Al} = 0.33$

$E_{Al2O3} = 370000 \quad \nu_{Al2O3} = 0.22$

The volume fraction of the Alumina phase is 0.1

  1. Determine the components of the strain concentration (localization) tensor for the Alumina phase, according to the Mori-Tanaka approximation.
  2. Determine the components of the effective elastic stiffness tensor of the composite, using the Mori-Tanaka approximation.
  3. Deduce the effective Young modulus and the effective Poisson ratio

Preliminaries


In [2]:
E_Al = 70000 
nu_Al = 0.33
E_Al2O3 = 370000
nu_Al2O3 = 0.22
## Volume fraction of particles
c = 0.1

L_Al = sim.L_iso(E_Al,nu_Al,'Enu')
M_Al = sim.M_iso(E_Al,nu_Al,'Enu')
L_Al2O3 = sim.L_iso(E_Al2O3,nu_Al2O3,'Enu')

S = sim.Eshelby_sphere(nu_Al)
#S_num = sim.Eshelby(L_Al,1,1,1,50,50)
I = np.eye(6)

Answer to question 1


In [16]:
T_Al2O3 = inv(I+np.dot(S,np.dot(M_Al,L_Al2O3-L_Al)))
sumT = c*T_Al2O3+(1-c)*I;
invsumT = inv(sumT);

A_Al = np.dot(I,invsumT)
A_Al2O3= np.dot(T_Al2O3,invsumT)

print np.array_str(A_Al2O3, precision=4)


[[ 0.3658  0.033   0.033   0.      0.      0.    ]
 [ 0.033   0.3658  0.033   0.      0.      0.    ]
 [ 0.033   0.033   0.3658  0.      0.      0.    ]
 [ 0.      0.      0.      0.3328  0.      0.    ]
 [ 0.      0.      0.      0.      0.3328  0.    ]
 [ 0.      0.      0.      0.      0.      0.3328]]

Answer to question 2


In [41]:
L_eff = (1-c)*np.dot(L_Al,A_Al) + c*np.dot(L_Al2O3,A_Al2O3)
print np.array_str(L_eff, precision=2)


[[ 115824.2    54850.04   54850.04       0.         0.         0.  ]
 [  54850.04  115824.2    54850.04       0.         0.         0.  ]
 [  54850.04   54850.04  115824.2        0.         0.         0.  ]
 [      0.         0.         0.     30487.08       0.         0.  ]
 [      0.         0.         0.         0.     30487.08       0.  ]
 [      0.         0.         0.         0.         0.     30487.08]]

Answer to question 3


In [30]:
d = sim.check_symetries(L_eff)
print d
print 'Young modulus =',d['props'][0]
print 'Poisson ratio =',d['props'][1]


[  8.05695979e+04   3.21372670e-01]
Young modulus =
/usr/local/lib/python2.7/site-packages/ipykernel/__main__.py:3: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  app.launch_new_instance()
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-30-6e586685476b> in <module>()
      1 d = sim.L_iso_props(L_eff)
      2 print d
----> 3 print 'Young modulus =',d['props'][0]
      4 print 'Poisson ratio =',d['props'][1]

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Validation using simmit


In [47]:
path_data = dir + '/data'
nstatev = 0

psi_rve = 0.
theta_rve = 0.
phi_rve = 0.

umat_name = 'MIMTN'
#Props
nphases = 2 #The number of phases
num_file = 0 #The num of the file that contains the subphases
int1 = 50
int2 = 50
n_matrix = 0

props = np.array([nphases, num_file, int1, int2, n_matrix])
L_eff = sim.L_eff(umat_name, props, nstatev, psi_rve, theta_rve, phi_rve, path_data)
print np.array_str(L_eff, precision=3)
d = sim.L_iso_props(L_eff)
print d[0]
print d[1]


[[  1.158e+05   5.485e+04   5.485e+04   1.893e-13   1.162e-14  -3.746e-15]
 [  5.485e+04   1.158e+05   5.485e+04  -1.493e-13   8.909e-15  -1.643e-14]
 [  5.485e+04   5.485e+04   1.158e+05   7.467e-15   2.057e-14   8.852e-15]
 [  1.893e-13  -1.493e-13   7.467e-15   3.049e+04   3.454e-15  -4.330e-16]
 [  1.162e-14   8.909e-15   2.057e-14   3.454e-15   3.049e+04   6.207e-15]
 [ -3.746e-15  -1.643e-14   8.852e-15  -4.330e-16   6.207e-15   3.049e+04]]
80569.5979292
0.321372670019

In [ ]: