Processing math: 100%

TMM4175 Polymer Composites

Home About Python Links Next Previous Table of Contents

Micro-mechanical models

Micro-mechanical models atempt to estimate the properties of composites based on the geometrical arrangement and the properties of the constituent materials in the composite material. The most simple models are typically based on a rule of mixture where assumtions of parallel or series coupling are being made.

Figure-1: Simplified model of a UD composite

Longitudinal modulus

We can reasonably assume that the longitudinal strain in the fiber is equal to the longitudinal strain in the matrix, and both strains are equal to the longitudinal strain of the composite:

ε1f=ε1m=ε1

When subjected to a longitudinal force F1, this force is distributed between the fiber and the matrix:

F1=F1f+F1m

Taking the cross section areas into consideration, the longitudinal stresses are introduced:

Aσ1=Afσ1f+Amσ1m

or

σ1=AfAσ1f+AmAσ1m=Vfσ1f+Vmσ1m

where the relations between volume fractions and area fractions have been used.

Now dividing by the strain: σ1ε1=Vfσ1fε1+Vmσ1mε1=Vfσ1fε1f+Vmσ1mε1m

and by applying the definition of modulus:

E1=VfEf1+VmEm

or

E1=VfEf1+(1Vf)Em

This model is considered to be very accurate for most of the common combinations of fibers and polymer matrices.

Example:

In [1]:
Ef=70            # Modulus for E-glass fiber
vf=0.2           # Poisson's ratio for glass
Gf=Ef/(2+2*vf)   # Derived shear modulus assuming isotropy
Em=3             # Modulus for a polymer matrix
vm=0.4           # Poisson's ratio for the matrix
Gm=Em/(2+2*vm)   # Derived shear modulus assuming isotropy

Vf=0.5           # Fiber volume fraction

E1=Vf*Ef + (1-Vf)*Em

print('E1=',E1)
E1= 36.5
The expression (7) is frequently called the upper-bound value for the modulus when mixing two materials. This term is however not completly consistent since the real upper-bound value is found by using the rule of mixture to the stiffness matrices of the to constituents as demonstrated below. The real upper-bound modulus is eventually found from the mixed compliance matrix. Note that the difference is minor for this case (36.9 versus 36.5) and typically within the error of experiments.
In [2]:
import numpy as np

Sf = np.array([[1/Ef,-vf/Ef,-vf/Ef,0,0,0],       # Compliance matrix of the (isotropic) fiber
               [-vf/Ef,1/Ef,-vf/Ef,0,0,0],
               [-vf/Ef,-vf/Ef,1/Ef,0,0,0],
               [0,0,0,1/Gf,0,0],
               [0,0,0,0,1/Gf,0],
               [0,0,0,0,0,1/Gf] ])

Sm = np.array([[1/Em,-vm/Em,-vm/Em,0,0,0],       # Compliance matrix of the (isotropic) matrix
               [-vm/Em,1/Em,-vm/Em,0,0,0],
               [-vm/Em,-vm/Em,1/Em,0,0,0],
               [0,0,0,1/Gm,0,0],
               [0,0,0,0,1/Gm,0],
               [0,0,0,0,0,1/Gm] ])

Cf = np.linalg.inv(Sf)   # Stiffness matrix of fiber
Cm = np.linalg.inv(Sm)   # Stiffness matrix of matrix

C = Vf*Cf + (1-Vf)*Cm    # Rule of mixture stiffness matrix

S = np.linalg.inv(C)     # Compliance matrix from rule of mixture stiffness matrix

E1 = 1/S[0,0]

print('E1=',E1)
E1= 36.88602941176471

Transverse modulus

In the simplest model for the transverse modulus, we assume a series coupling of fibers and matrix where the resulting strain in the transverse direction is a superposition of the fiber strain and the matrix strain, while the stress in the two phases are equal. The resulting model gives

1E2=VfEf2+1VfEm

or

E2=E2fEmVfEm+VmE2f
NOTE: Glass fibers are isotropic while carbon, kevlar and other polymer fibers are anisotropic. The transverse modulus of for example carbon fibers is just a fraction of the longitudinal modulus, from 1/20 to 1/50, dependent on the type of carbon fiber.

Example:

In [3]:
E2=1/(Vf/Ef + (1-Vf)/Em)

print('E2=',E2)
E2= 5.7534246575342465

The model (9) provides a fair estimate of the property but tends to underestimate the value significantly since it is the true lower-bound value where constraints due to Poisson's effects are completly neglected. One simple approach for mitigating this issue suggests the modulus of the matrix be modified to

Em=Em1ν2m

where νm is the Poisson's ratio of the matrix.

Hence, the modified model can be expressed by

E2=E2fEmVfEm+VmE2f

Example:

In [4]:
Emm=Em/(1-vm**2)
E2=(Ef*Emm)/(Vf*Emm + (1-Vf)*Ef)

print('E2=',E2)
E2= 6.7961165048543695
Note that expression (8) is simply the rule of mixture to the compliance matrices of the to constituents as demonstrated below.
In [5]:
S = Vf*Sf + (1-Vf)*Sm    # Rule of mixture of compliance matrices

E1 = 1/S[0,0]

print('E1=',E1)
E1= 5.7534246575342465

The semi-empircal Halpin-Tsai model for the transverse modulus is

E2=Em1+ξ1η1Vf1η1Vf

where η1=E2fEmE2f+ξ1Em

and ξ1 is an experimentally determined parameter which typically lay between 1 and 2.

Since the emperical parameter must be determined, the model is only useful for predicting the elastic constants for a given fiber volume fraction when it is known for another fiber volume fraction.

Examples: The model predictions as function of the fiber volume fraction for a UD glass fiber composite:

In [6]:
def micmec_E1(Vf,E1f,Em):
    return Vf*E1f+(1-Vf)*Em

def micmec_E2a(Vf,E2f,Em):
    return (E2f*Em)/(Vf*Em + (1-Vf)*E2f)

def micmec_E2b(Vf,E2f,Em,vm):
    Emm=Em/(1-vm**2)
    return (E2f*Emm)/(Vf*Emm + (1-Vf)*E2f)

def micmec_E2c(Vf,E2f,Em,xi1):
    n1=(E2f-Em)/(E2f+xi1*Em)
    return Em*(1+xi1*n1*Vf)/(1-n1*Vf)
In [7]:
import numpy as np

Vf=np.linspace(0,1.0)

E1 =  micmec_E1(Vf,70,3)
E2a = micmec_E2a(Vf,70,3)
E2b = micmec_E2b(Vf,70,3,0.4)
E2c1 = micmec_E2c(Vf,70,3,1.0)
E2c2 = micmec_E2c(Vf,70,3,2.0)
In [8]:
import matplotlib.pyplot as plt
%matplotlib inline

fig,(ax1,ax2) = plt.subplots(nrows=1,ncols=2,figsize=(12,4))

ax1.plot(Vf,E1, color='black',label=r'$E_1$')
ax1.plot(Vf,E2a, color='blue',label=r'$E_2^{(a)}$')
ax1.plot(Vf,E2b, color='red',label=r'$E_2^{(b)}$')
ax1.plot(Vf,E2c1, color='orange',label=r'$E_2^{(c)}, \xi_1 = 1$')
ax1.plot(Vf,E2c2, color='cyan',label=r'$E_2^{(c)}, \xi_1 = 2$')
ax1.set_xlim(0,1)
ax1.set_ylim(0,)
ax1.set_xlabel('Fiber Volume Fraction',size=12)
ax1.set_ylabel('Modulus [MPa]',size=12)
ax1.grid(True)
ax1.legend(loc='best')

ax2.plot(Vf,E2a, color='blue',label=r'$E_2^{(a)}$')
ax2.plot(Vf,E2b, color='red',label=r'$E_2^{(b)}$')
ax2.plot(Vf,E2c1, color='orange',label=r'$E_2^{(c)},\xi_1 = 1$')
ax2.plot(Vf,E2c2, color='cyan',label=r'$E_2^{(c)},\xi_1 = 2$')
ax2.set_xlim(0.4,0.7)
ax2.set_ylim(0,15)
ax2.set_xlabel('Fiber Volume Fraction',size=12)
ax2.set_ylabel('Modulus [MPa]',size=12)
ax2.grid(True)
ax2.legend(loc='best')
plt.tight_layout()

Poisson's ratio

A model for the Poisson's ratio v12 similar to the model for longitudinal modluls E1 has been found to be very close to experimental results:

v12=Vfv12f+(1Vf)vm

Models for the Poisson's ratio v23 tend to be rather involved, and will not be considered further in this course.

Shear modulus

The simple rule of mixture similar to equation (9) for the transverse modulus provides an estimate for the composite shear modulues:

G12=G12fGmVfGm+VmG12f

The Halpin-Tsai semi-empirical model is

G12=Gm1+ξ2η2Vf1η2Vf

where η2=G12fGmG12f+ξ2Gm

and ξ2 is an experimentally determined parameter.

Functions:

In [9]:
def micmec_v12(Vf,v12f,vm):
    return Vf*v12f+(1-Vf)*vm

def micmec_G12a(Vf,G12f,Gm):
    return (G12f*Gm)/(Vf*Gm + (1-Vf)*G12f)

def micmec_G12c(Vf,G12f,Gm,xi2):
    n2=(G12f-Gm)/(G12f+xi2*Gm)
    return Gm*(1+xi2*n2*Vf)/(1-n2*Vf)
In [10]:
Gm=3/(2+2*0.4)
G12f=70/(2+2*0.22)

G12a = micmec_G12a(Vf,G12f,Gm)
G12c = micmec_G12c(Vf,G12f,Gm,1)

fig,(ax1,ax2) = plt.subplots(nrows=1,ncols=2,figsize=(12,4))

ax1.plot(Vf,G12a, color='blue',label=r'$G_{12}^{(a)}$')
ax1.plot(Vf,G12c, color='orange',label=r'$E_{12}^{(c)}, \xi_1 = 1$')
ax1.set_xlim(0,1)
ax1.set_ylim(0,)
ax1.set_xlabel('Fiber Volume Fraction',size=12)
ax1.set_ylabel('Modulus [MPa]',size=12)
ax1.grid(True)
ax1.legend(loc='best')

ax2.plot(Vf,G12a, color='blue',label=r'$G_{12}^{(a)}$')
ax2.plot(Vf,G12c, color='orange',label=r'$G_{12}^{(c)},\xi_1 = 1$')
ax2.set_xlim(0.4,0.7)
ax2.set_ylim(0,5)
ax2.set_xlabel('Fiber Volume Fraction',size=12)
ax2.set_ylabel('Modulus [MPa]',size=12)
ax2.grid(True)
ax2.legend(loc='best')
plt.tight_layout()

Thermal expansion

Left as exercise.

References and further readings

  1. Herakovich, Carl T. Mechanics of Fibrous Composites. New York: Wiley, 1998.
  2. Daniel, Isaac M., and Ori Ishai. Engineering Mechanics of Composite Materials. 2nd ed. New York: Oxford University Press, 2006.
  3. Kollár, Lázló P., and George S. Springer. Mechanics of Composite Structures. Cambridge: Cambridge University Press, 2003.

Disclaimer:This site is about polymer composites, designed for educational purposes. Consumption and use of any sort & kind is solely at your own risk.
Fair use: I spent some time making all the pages, and even the figures and illustrations are my own creations. Obviously, you may steal whatever you find useful here, but please show decency and give some acknowledgment if or when copying. Thanks! Contact me: nils.p.vedvik@ntnu.no www.ntnu.edu/employees/nils.p.vedvik

Copyright 2021, All right reserved, I guess.