<jupyter_start><jupyter_text>Solutions to the Introduction to Composite Materials module of MIT's Open Course Mechanics of Materials.Other material properties listed here.<NAME>. 3.11 Mechanics of Materials. Fall 1999. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.<jupyter_code>import numpy as np
import sympy as sp
from sympy import init_printing
init_printing(use_latex=True)
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>For problem 1, the longitudinal and transverse stiffnesses are calculated using the equations from the slab model.$E_1 = V_f*E_f + V_m*E_m$$\frac{1}{E_2} = \frac{V_f}{E_f} + \frac{V_m}{E_m}$<jupyter_code># Problem 1
# for S-glass fibers
Ef = 85.5  # GPa
Vf = 0.7

# for the epoxy
Em = 3.5  # GPa
Vm = 1 - Vf

# from the slab model, the composite stiffnesses are
E1 = Vf*Ef + Vm*Em
E2 = 1/(Vf/Ef + Vm/Em)

print(f"The longitudinal stiffness: E1 = {E1:.1f} GPa")
print(f"The transverse stiffness: E2 = {E2:.1f} GPa")<jupyter_output>The longitudinal stiffness: E1 = 60.9 GPa
The transverse stiffness: E2 = 10.6 GPa<jupyter_text>In problem 2, the longitudinal stiffness of an E-glass nylon composite is plotted over a range of fiber volumes, $V_f$.<jupyter_code># Problem 2
# for E-glass fibers
Ef = 72.4  # GPa
# for the nylon
Em = 3.0  # GPa

Vf = np.linspace(0, 1, 100, endpoint=True)
Vm = 1 - Vf
E1 = Vf*Ef + Vm*Em

plt.plot(Vf, E1)
plt.xlabel(r"$V_f$")
plt.ylabel(r"$E_1, GPa$")
plt.grid(True)
plt.show()<jupyter_output><empty_output><jupyter_text>In problem 3, the longitudinal breaking tensile stress of an E-glass epoxy composite is plotted over a range of fiber volumes, $V_f$. Breaking stress is determined mostly by the fiber strength. Using the fiber breaking strain and composite stiffness we have:$\sigma_b = \epsilon_{fb}*E_1 = \epsilon_{fb}*(V_f*E_f + V_m*E_m)$At low fiber volumes its possible for the fibers to break and the matrix to hold the entire load, so the breaking stress in this region is descibed as:$\sigma_b = V_m*\sigma_{mb}$<jupyter_code># Problem 3
# for E-glass fibers
Ef = 72.4  # GPa
sigma_fb = 2.4  # Gpa, fiber breaking stress
epsilon_fb = 0.026  # breaking strain of the fiber

# for the epoxy
Em = 3.5  # GPa
sigma_mb = 0.045  # Gpa, matrix breaking stress
epsilon_mb = 0.04  # breaking strain of the matrix

Vf = np.linspace(0, 1, 100, endpoint=True)
Vm = 1 - Vf
E1 = Vf*Ef + Vm*Em
sigma1 = epsilon_fb*E1
sigma2 = Vm*sigma_mb
sigma = [max(s1, s2) for s1, s2 in zip(sigma1, sigma2)]

plt.plot(Vf, sigma1)
plt.plot(Vf, sigma2)
plt.xlabel(r"$V_f$")
plt.ylabel(r"$\sigma_b, GPa$")
plt.grid(True)
plt.show()<jupyter_output><empty_output><jupyter_text>After plotting both breaking stress equations, it is cleat the breaking stress is only determined by the first equation. Problem 4 asks for the greatest fiber packing volume fraction given optimal fiber packing. And assuming that the optimal packing is hexagonal packing, the fiber volume fraction is determined with the following equation:$V_f = \left(\frac{\pi}{2\sqrt{3}}\right)*\left(\frac{r}{R}\right)^2$Where $r$ is the fiber radius and $2*R$ is the spacing between fiber centers, which in an optimal pattern: $2*R = 2*r$ and the last term drops out of the equation.<jupyter_code>#Problem 4
Vf = (np.pi/(2*np.sqrt(3)))
print(f"The max fiber volume fraction = {Vf:.3f}")<jupyter_output>The max fiber volume fraction = 0.907
{'fraction_non_alphanumeric': 0.11182294700058241, 'fraction_numerical': 0.031158998252766454, 'mean_word_length': 4.881849315068493, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 20, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '501442', 'license': 'CC0-1.0', 'n_tokens_mistral': 1329, 'n_tokens_neox': 1221, 'n_words': 419, 'path': 'MechanicsOfMaterials/compositesModuleProblems.ipynb', 'repo_name': 'Rexus28/MIT_OCW', 'size': '3442'}