Composipy for strength analysis of a laminate¶
In this exemple we will use the exercise 6-7 from Analysis and Performance of Fiber Composites by B. Agarwal pg. 244.
[ ]:
from composipy import Ply, Laminate, Load, Strength
Fist, lets consider the following laminate
\([45_{ply1}/0_{ply2}/45_{ply1}]\)
Where \(ply_1\) is \(3 mm\) thick and \(ply_2\) is \(6mm\) thick with the following Elastic and strength characteristics
E1 = 19745 MPa
E2 = 1980 MPa
\(\nu_{12}\) = 0.35
G = 700 MPa
\(\sigma_1^T\) = 400 Mpa
\(\sigma_1^C\) = -250 Mpa
\(\sigma_2^T\) = 150 Mpa
\(\sigma_2^C\) = -200 Mpa
\(\tau_{12}\) = 25 Mpa
Setting the laminate¶
[ ]:
ply_1 = Ply(19745 , 1980, 0.35, 700, 3, 400, -250, 150, -200, 25, name='3mm Unidirection Fiber Composite')
ply_2 = Ply(19745 , 1980, 0.35, 700, 6, 400, -250, 150, -200, 25, name='6mm Unidirection Fiber Composite')
Now, defining the laminate
[25]:
layup_1 = [
(45, ply_1),
(0, ply_2),
(45, ply_1)
]
laminate_1 = Laminate(layup_1)
print(ply_1,'\n',ply_2)
print('==============================================')
print(laminate_1)
Ply(6mm Unidirection Carbon Fiber, E1 = 19745, E2 = 1980,
v12 = 0.35, G12 = 700, thickness = 3,
T1 = 400, C1 = -250, T2 = 150, C2 = -200, S = 25)
Ply(6mm Unidirection Carbon Fiber, E1 = 19745, E2 = 1980,
v12 = 0.35, G12 = 700, thickness = 6,
T1 = 400, C1 = -250, T2 = 150, C2 = -200, S = 25)
==============================================
6mm Unidirection Carbon Fiber 45 /////
6mm Unidirection Carbon Fiber 0 =====
6mm Unidirection Carbon Fiber 45 /////
The \(ABD'\) matrix can be called by the ABD_p
atribute
[27]:
laminate_1.ABD_p
[27]:
matrix([[ 7.59007904e-06, -3.56488909e-06, -3.09494584e-06,
-0.00000000e+00, -0.00000000e+00, -0.00000000e+00],
[-3.56488909e-06, 3.43738980e-05, -2.36888731e-05,
-0.00000000e+00, -0.00000000e+00, -0.00000000e+00],
[-3.09494584e-06, -2.36888731e-05, 4.90937552e-05,
-0.00000000e+00, -0.00000000e+00, -0.00000000e+00],
[-0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
1.62021784e-06, -7.58814609e-07, -7.38051735e-07],
[-0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
-7.58814609e-07, 3.01561903e-06, -1.93363381e-06],
[-0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
-7.38051735e-07, -1.93363381e-06, 3.80139988e-06]])
Setting the loads¶
In the exemple, the element is subjected to the following loads
Nx = 1000 N/mm
Ny = 200 N/m
Nxy = 0
Mx = 0
My = 0
Mxy = 0
We will input the loads by using the Load
class.
[26]:
loads_1 = Load(1000,200,0,0,0,0)
loads_1
[26]:
Load(Nx = 1000, Ny = 200, Nxy = 0
Mx = 0, My = 0, Mxy = 0)
Checking the strength and elastic parameters of the laminate under load¶
Now we can analyse the strain and strees in the laminate using the Strength
class.
[28]:
analysis = Strength(laminate_1,loads_1)
Let’s see the the mid-plane strain in the load direction (xy) by calling the mid_strain_xy
atribute
[29]:
analysis.mid_strain_xy
[29]:
matrix([[ 0.0068771 ],
[ 0.00330989],
[-0.00783272],
[ 0. ],
[ 0. ],
[ 0. ]])
Or, in the laminate coordinates (12), by calling mid_strain_12
.
[30]:
analysis.mid_strain_12
[30]:
[matrix([[ 0.00117714],
[ 0.00900986],
[-0.00356721]]),
matrix([[ 0.0068771 ],
[ 0.00330989],
[-0.00783272]]),
matrix([[ 0.00117714],
[ 0.00900986],
[-0.00356721]])]
Just like that, we can get the stress in all plies for both xy and 12 directions by calling stress_xy
or stress_12
.
[31]:
analysis.stress_xy
[31]:
[matrix([[26.86723559],
[21.87314058],
[ 5.48290432]]),
matrix([[139.79943108],
[ 11.46019275],
[ -5.48290432]]),
matrix([[26.86723559],
[21.87314058],
[ 5.48290432]])]
[32]:
analysis.stress_12
[32]:
[matrix([[29.8530924 ],
[18.88728376],
[-2.4970475 ]]),
matrix([[139.79943108],
[ 11.46019275],
[ -5.48290432]]),
matrix([[29.8530924 ],
[18.88728376],
[-2.4970475 ]])]
From the stresses in the laminate coordinates, we can calculate the Tsai-Wu failure index for all plies by calling TW_i
.
[33]:
analysis.TW_i
[33]:
[0.011840177555671384, 0.04129615058665213, 0.011840177555671384]
Because the Tsai-Wu index is below 1 for all plies, the laminate is still undamaged.
We can discover in what load the first ply will fail based on the Tsai-Wu failure criterion by using the FPF
parameter.
[34]:
analysis.FPF
FPF Load:
[[2548.05698026]
[ 509.61139605]
[ 0. ]
[ 0. ]
[ 0. ]
[ 0. ]]
Failed Ply(ies):
[2]
Laminate Tsai-Wu Index in FPF:
[0.12933910070551077, 1.0199433489695386, 0.12933910070551077]
Strength Ratio for FPF:
2.573537550058799
By this, we now know that the second ply will fail under \(Nx = 2548.06 N/mm; Ny=509.61N/mm\) and that the Strenth Ratio for the FPF is \(2.57\).