Return to Examples Main | Next Example

Circular Hole Elasticity Solution

Open Hole With Far-Field Inplane Load

In[1]:=

Needs["MaterialMinds`elasticHole`"]

Define a quasi-isotropic laminate.

laminateStack = {0, 45, -45, 90}//PlyThickness[006]//Mat[1] ; layerProperty = {21 10^6, 1.5 10^6, .85 10^6, .35} ;

The maximum stress at x=0, y=1, for a hole with radius of 1, and an applied far-field load of N_1 = 1000, N_2 = 0, N_6 = 0.

ans = elasticHole[layerProperty, laminateStack, 1, {1000, 0, 0}]

--elasticHoleSolt--

The theoretical stress (or load) concentration factor for an isotropic laminate should be 3.

MMLoadIntensity[ans][{0, 1}]

{3000., 0, 0.}

MMLoadIntensity[ans][1][{0, 1}]

3000.

Here is a plot of x load as a function of distance from the edge of hole.

Plot[MMLoadIntensity[ans][1][{0, y}], {y, 1, 4}]

[Graphics:HTMLFiles/index_13.gif]

⁃Graphics⁃

Polar Plot for an Anisotropic laminate

Next, consider an anisotropic laminate. Because the 45's are not balanced, the laminate is not orthotropic.

layerProperty = {21 10^6, 1.5 10^6, .85 10^6, .35} ;

aniso = {0, 45, 45, 0}//PlyThickness[.006]//Mat[1] ;

Apply a unit axial load.

ans = elasticHole[layerProperty, aniso, 1, {1, 0, 0}]

--elasticHoleSolt--

Now plot the polar stress distribution around the hole.Note: The stress plot is skewed because of the anisotropy

holePolarPlot[ans][1, 2]

[Graphics:HTMLFiles/index_20.gif]

⁃Graphics⁃

Carpet Plot of Theoretical Stress Concentration Factor

The theoretical stress concentration factor (k_t) for a hole in a composite plate is a function of the percentage of layers in each direction. For the 0, 90, ±45 family of laminates, a convenient way to show all possible values of k_tis a carpet plot. A carpet plotting function is available in the Material Minds system. First, we define the layer elastic constants.

layerProperty = {21 10^6, 1.5 10^6, .85 10^6, .35} ;

Carpet plot function requires a user defined function that takes the number of 0, 90 and ±45 layers, respectively, and returns a single value. The following function executes elasticHole for the above layerProperties, and the given number of layers. elasticHole is directly wrapped by the MMLoad function which evaluates the load at the location {0,1}, and takes the first value of the load vector. Because the input load is unity, the output of this new function is k_t .

f[l_, m_, n_] := MMLoadIntensity[elasticHole[layerProperty, {{0, 1, l}, {Pi/2, 1, m}, {-Pi/4, 1, n/2}, {Pi/4, 1, n/2}}, 1, {1, 0, 0}]][1][{0, 1}]

The new user function can be passed to carpetPlot

carpetPlot[f, YAxis-> K ]                           t

[Graphics:HTMLFiles/index_28.gif]

⁃Graphics⁃

Open Hole With Far-Field Bending Load

Define a quasi-isotropic laminate.

laminateStack = {0, 45, -45, 90}//PlyThickness[.006]//Mat[1] ; layerProperty = {10 10^6, 1.5 10^6, .85 10^6, .35} ;

Solve for a 1 in. radius hole, with an applied far-field moment (M_1) of unity

ans = elasticHole[layerProperty, laminateStack, 1, {{0, 0, 0}, {1, 0, 0}}]

--elasticHoleSolt--

Note that the moment concentration factor is not equal to the load concentration factor of 3.

MMMoment[ans][{0, 1}]

{1.85821, 2.38524*10^-18, -0.0487073}

All of the functions can compute stress anywhere in the interior of the plate.

Here is a plot of M_1 as a function of distance from the edge of hole.

Plot[MMMoment[ans][1][{0, y}], {y, 1, 4}]

[Graphics:HTMLFiles/index_38.gif]

⁃Graphics⁃

Distribution of θ moment around hole.

Plot[MMMoment[ans, CoordinateSystemPolar][2][{1, y}], {y, 0, 2Pi}]

[Graphics:HTMLFiles/index_41.gif]

⁃Graphics⁃

Bearing Forces

As discussed in the introduction, the package implements a common approximate technique for representing a bolt load as a known radial pressure distribution.

Consider an orthotropic laminate.

laminateStack = homoStackDeg[{0, 45, -45, 90, 90}, .006] ; layerProperty = {21 10^6, 1.5 10^6, .85 10^6, .35} ;

The following gives the stress at {x,y} = {0,1} for a 1 inch radius hole with a 1000 pound bolt load applied at an angle of 0 (default value of BoltLoadDirection).

ans = elasticHole[layerProperty, laminateStack, 1, {0, 0, 0}, BoltLoad1000]

--elasticHoleSolt--

Take a look at the peak tangential load caused by the bearing force

MMLoad[ans][{0, 1}]

MMLoad[--elasticHoleSolt--][{0, 1}]

The average bearing load is F_br/(2r) = 500 lb/in. As a rough rule, the maximum tangential load is approximately the same as the average bearing load. In this case 391 versus 500.

The follow shows the radial stress distribution, which is equal to the applied pressure.

Plot[MMLoadIntensity[ans, CoordinateSystemPolar][1][{1, t}], {t, -Pi, Pi}, PlotRangeAll]

[Graphics:HTMLFiles/index_50.gif]

⁃Graphics⁃

The radial stress using the holePolarPlot function.

holePolarPlot[ans][1, 1]

[Graphics:HTMLFiles/index_53.gif]

⁃Graphics⁃

And the tangential stress distribution.

holePolarPlot[ans][1, 2]

[Graphics:HTMLFiles/index_56.gif]

⁃Graphics⁃

Failure Prediction

Consider an orthotropic laminate.

laminateStack = homoStackDeg[{0, 45, -45, 90, 90}, .006] ; layerProperty = {21 10^6, 1.5 10^6, .85 10^6, .35} ;

0.5 in diameter hole, with a 1000 lb/in far-field load

ans = elasticHole[layerProperty, laminateStack, .25, {1000, 0, 0}]

--elasticHoleSolt--

The maximum stress failure criterion is already defined in the laminate package.

? maxStress

maxStress[{xt,yt,xc,yc,s}][{sx,sy,sxy}] returns a failure index based on the maximum stress criterion.

where xt, yt, xc, yc, and s are the layer strengths for longitudinal tension, transverse tension, longitudinal compression, transverse compression, and shear, respectively. The second set of arguments [{sx, sy, sxy}] are the layer stresses in layer coordinates. This set of arguments will be supplied by the failure function.

openHoleFailure[ans][layerProperty, laminateStack, .016, maxStress[{250, 12, 300, 30, 15} 10^3]]

0.705974

The factor-of-safety implies that the loads would be proportionally scaled by the factor to be exactly at failure.


Created by Mathematica  (March 7, 2004)