4.   Stress

Initialization

Needs["TensorCalculus4`Tensorial`"]

Needs["TContinuumMechanics2`TContinuumMechanics`"]

Needs["DrawGraphics`DrawingMaster`"] <br />

numequ = 1 ;

oldflavors = IndexFlavors ;

ClearIndexFlavor/@oldflavors ;

DeclareIndexFlavor[{black, Black}, {red, Red}, {green, ForestGreen}, {star, SuperStar}, {blue, Blue}, {hat, OverHat}, {tilde, OverTilde}, {bar, OverBar}]

DeclareBaseIndices[{1, 2, 3}] ;

labs = {x, δ, g, Γ} ;

We use conventionally an (over-) dot for the time derivative ( PartialD[_,t] ) :

PartialD[Tensor[T_, {ind__}, {jnd__}], t] := Tensor[OverDot[T, 1], {ind}, {jnd}]

PartialD[Tensor[T_, {ind__}, {jnd__}], {t, t}] := Tensor[OverDot[T, 2], {ind}, {jnd}]

The following values are taken as an example of a (red) basis frame :

SetTensorValues[gdd[i, j], IdentityMatrix[3]]

RedBasisVectors = ({{1, 1, 0}, {0, 1, 2}, {1, 0, 1}}) ; RedMetric = ( {{2, 1, 1}, {1, 5, 2}, {1, 2, 2}} ) ;

SetTensorValueRules[d[red @ i], RedBasisVectors]

SetTensorValueRules[u[red @ i], Inverse[RedBasisVectors//Transpose]]

SetTensorValueRules[gdd[red @ i, red @ j], RedMetric]

SetTensorValueRules[guu[red @ i, red @ j], Inverse[RedMetric]]

and from equation (2.5) :

Tensor[ℰ§, {Void, Void}, {i_, j_}] := (PartialD[ud[red @ i], red @ j] + PartialD[ud[red @ j], red @ i])/2

Stress tensor (σ)

Figure 4.1 :

[Graphics:HTMLFiles/index_21.gif]

Figure 4.1 Definition of stress.

To the triangle ABC, corresponds the area element dA:

(*d = 1/2d×d*)

dA can also be expressed as functions of the vectors da, db, dc : dr = db – da and ds = dc – da,

d=.

d = 1/2 (d - d) × (d - d)//LinearBreakout[Cross][d, d, d]

1/2 (d×d - d×d - d×d + d×d)

If we choose the basis vectors along the three directions da, db, and dc

d = dau[red @ 1] d[red @ 1] ; d = dbu[red @ 2] d[red @ 2] ; d = dcu[red @ 3] d[red @ 3] ;

d//LinearBreakout[Cross][d[_]]

res = %//CrossProductExpansion[, e, k]//EinsteinSum[]//LeviCivitaOrder[e]//Factor

1/2 (_1^1×_1^1 (da_1^1)^2 - _2^2×_1^1 da_1^1 db_2^2 - _1^1×_3^3 da_1^1 dc_3^3 + _2^2×_3^3 db_2^2 dc_3^3)

1/2 e_ (123)^(123) (db_2^2 dc_3^3 _1^1 + da_1^1 dc_3^3 _2^2 + da_1^1 db_2^2 _3^3)

The covariant components dA_ h^h of the vector dA element of surface

d = res

1/2 e_ (123)^(123) (db_2^2 dc_3^3 _1^1 + da_1^1 dc_3^3 _2^2 + da_1^1 db_2^2 _3^3)

dAvald[l_] := d . d[l]

{dAvald[red @ 1], dAvald[red @ 2], dAvald[red @ 3]} = {dAvald[red @ 1], dAvald[red @ 2], dAvald[red @ 3]}//ExpandAll//EvaluateDotProducts[, g]//Factor

{1/2 db_2^2 dc_3^3 e_ (123)^(123), 1/2 da_1^1 dc_3^3 e_ (123)^(123), 1/2 da_1^1 db_2^2 e_ (123)^(123)}

For instance :

dAvald[red @ 1]

(%//LeviCivitaSimplify[e, ε][g, red])/.PermutationSymbolRule[ε]

%//VolumeSquare[red @ g]

1/2 db_2^2 dc_3^3 e_ (123)^(123)

1/2 (g)^1/2 db_2^2 dc_3^3

3/2 db_2^2 dc_3^3

On the other hand, the triangle OAB can be represented by its outer normal,

res = (1/2d×d//LinearBreakout[Cross][d[_]])//CrossProductExpansion[, e, k]//EinsteinSum[]//LeviCivitaOrder[e]

-1/2 da_1^1 db_2^2 e_ (123)^(123) _3^3

and we can verify that,

res - (-dAvald[red[3]]) * u[red[3]]

0

The four vectors, dA and 1/2db×da, 1/2dc×da, and 1/2dc×db   add to zero.
Each force dP, dQ, dR and dF shown in the Figure, in an equilibrium stressed material, are proportional to the area on which it acts, and can be resolved into contravariant components,

d := -σuu[red @ 1, red @ j] dd[red @ 1] d[red @ j]

d := -σuu[red @ 2, red @ j] dd[red @ 2] d[red @ j]

d := -σuu[red @ 3, red @ j] dd[red @ 3] d[red @ j]

d := -d - d - d

d

d_1^1 _j^j σ_ (1j)^(1j) + d_2^2 _j^j σ_ (2j)^(2j) + d_3^3 _j^j σ_ (3j)^(3j)

(*4.1*)d := σuu[red @ i, red @ j] dd[red @ i] d[red @ j] ResultFrame[res41 = "d" == d]

      d == d_i^i _j^j σ_ (ij)^(ij)       (4.1)

Figure 4.2 :

[Graphics:HTMLFiles/index_59.gif]

Figure 4.2 Moment equilibrium of stresses.

Proof of the symmetry of the stress tensor ( σ_ (ij)^(ij)==σ_ (ji)^(ji) ) :

The forces acting on the three faces are

d := σuu[red @ n, red @ m] dbu[red @ v] dcu[red @ w] eddd[red @ n, red @ v, red @ w] d[red @ m]

d := σuu[red @ n, red @ m] dcu[red @ w] dau[red @ u] eddd[red @ n, red @ w, red @ u] d[red @ m]

d := σuu[red @ n, red @ m] dau[red @ u] dbu[red @ v] eddd[red @ n, red @ u, red @ v] d[red @ m]

{d, d, d}

{db_v^v dc_w^w e_ (nvw)^(nvw) _m^m σ_ (nm)^(nm), da_u^u dc_w^w e_ (nwu)^(nwu) _m^m σ_ (nm)^(nm), da_u^u db_v^v e_ (nuv)^(nuv) _m^m σ_ (nm)^(nm)}

On the opposite faces of the parallelepipedon, there are equal and opposite forces and, together, they form three couples, which have the moments

{d = dau[red @ u] d[red @ u], d = dbu[red @ v] d[red @ v], d = dcu[red @ w] d[red @ w]}

{da_u^u _u^u, db_v^v _v^v, dc_w^w _w^w}

The sum of the three above moments must be zero at equilibrium.

res = Apply[Plus, Mset]//LeviCivitaOrder[e]//Factor

-da_u^u db_v^v dc_w^w (e_ (kmw)^(kmw) e_ (nuv)^(nuv) - e_ (kmv)^(kmv) e_ (nuw)^(nuw) + e_ (kmu)^(kmu) e_ (nvw)^(nvw)) _k^k σ_ (nm)^(nm)

so that each component of _ k^k is zero.

res = Coefficient[res, u[red @ k]]

-da_u^u db_v^v dc_w^w (e_ (kmw)^(kmw) e_ (nuv)^(nuv) - e_ (kmv)^(kmv) e_ (nuw)^(nuw) + e_ (kmu)^(kmu) e_ (nvw)^(nvw)) σ_ (nm)^(nm)

we take here the vector da, db, dc along the basis vectors as above.

res = Coefficient[res/.{red @ u->red @ 1, red @ v->red @ 2, red @ w->red @ 3}, dau[red @ 1] dbu[red @ 2] dcu[red @ 3]]

-(e_ (km3)^(km3) e_ (n12)^(n12) - e_ (km2)^(km2) e_ (n13)^(n13) + e_ (km1)^(km1) e_ (n23)^(n23)) σ_ (nm)^(nm)

and in the case k = 1.

(res/.{red @ k->red @ 1}//Expand//EinsteinSum[]) ;

(%//LeviCivitaSimplify[e, ε][g, red])/.PermutationSymbolRule[ε]//Factor

g (σ_ (23)^(23) - σ_ (32)^(32))

The same proof can be done also for k = 2 and 3. So that, in  all generality

(*4.2*)ResultFrame[res42 = σuu[red @ i, red @ j] == σuu[red @ j, red @ i]]

      σ_ (ij)^(ij) == σ_ (ji)^(ji)       (4.2)

We can visualize the different components . For instance on an area formed by _ 1^1 and _ 2^2,

d := (d[red @ 1] ×d[red @ 2]//LinearBreakout[Cross][d[_]])//CrossProductExpansion[, e, k]//ArrayExpansion[red @ k]//LeviCivitaOrder[e]

dA3rule = Table[dd[red @ i] →Coefficient[d[[i]], u[red @ i]], {i, 3}]

{d_1^1→0, d_2^2→0, d_3^3→e_ (123)^(123)}

(d//SumExpansion[red @ i])/.dA3rule

e_ (123)^(123) _j^j σ_ (3j)^(3j)

Except the factor g^(1/2), the σ_ (3j)^(3j) are the contravariant components of dF acting on the parallelogram formed by  _1^1 and  _2^2

It is naturally possible to define the other components of the stresses. The stress components shown above are the most appealing.

Figure 4.4 :

[Graphics:HTMLFiles/index_94.gif]

Figure 4.4 Stress components.

Constitutive Equations

Relation between the stress and the strain. The Hooke's law gives the linear relation between their components.

The above relation is called the "Constitutive equation"

PartialD[σuu[i_, j_], ℰdd[n_, m_]] := uuuu[i, j, n, m]

The tensor E, is symmetrical in {i,j} and in {l,m}, because on one hand  ℰ_ (l  m)^(l  m) is symmetrical in {l,m} :

ℰ§dd[red @ i, red @ j]

1/2 (u_i^i_ (, j) + u_j^j_ (, i))

TensorSymmetry[ℰ, 2] = Symmetric[1, 2] ;

TensorSymmetry[σ, 2] = Symmetric[1, 2] ;

while the symmetry of the stress tensor was proven in Section 4.
So there is only 36 different elements in E. But there is in addition a further reduction in number due to the existence of a strain energy :

The strain energy density S is given by :

(*4.4*)ResultFrame[SequenceForm[" =   ", res44 =  = 1/2σuu[i, j] ℰdd[i, j]//ToFlavor[red, black]] ]

       =   1/2 ℰ_ (ij)^(ij) σ_ (ij)^(ij)       (4.4)

E (explicitely E§) and σ are symmetrical with respect to their indices.
So, S  can be put into a standard order :

res = (//EinsteinSum[])//SymmetrizeSlots[]//Simplify

or in Cartesian coordinates, using conventional notations :

S =1/2 ℰ_ (ij)^(ij) σ_ (ij)^(ij) is the total energy issued from the progressive application of a "force" from 0 to σ_ (ij)^(ij) (which can be written t ℰ_ (lm)^(lm) Ε_ (ijlm)^(ijlm), 0 ≤ t ≤1) during a "displacement" ℰ_ (ij)^(ij).

S is the sum dS. So that if we write

d§ := (*σ_ (ij)^(ij)[t]  (t ℰ_ (ij)^(ij)) = *)  t σuu[i, j] ℰdd[i, j] t//ToFlavor[red, black]

we verify that S is recovered ( S§ ≡ S ):

SequenceForm[ = § = , § = (∫_0^1 (d§)/tt)]

 = § = 1/2 ℰ_ (ij)^(ij) σ_ (ij)^(ij)

The factor 1/2 comes from the progressive application of the stress. For an infinitesimal increment of stress and strain, we will have,

SequenceForm[d§ = , d$ = σuu[i, j] dℰdd[i, j]//ToFlavor[red, black]]

d§ = dℰ_ (ij)^(ij) σ_ (ij)^(ij)

On the other hand, we can also differentiate S§. For this we need to simplify the derivation of a tensor component by another component of the same tensor (which must of course be independent). This is done using TensorComponentsD[g].

So that after differentiation :

dℰdd[red @ p, red @ q] PartialD[labs][, ℰdd[red @ p, red @ q]]//TensorComponentsD[g]//Simplify

res = %[[1]] %[[2]] (%[[3]]//ConstitutiveLaw[σ]//TensorComponentsD[g]//MetricSimplify[g])/.{uuuu[i_, j_, n_, m_] ℰdd[n_, m_] →σuu[i, j]}

1/2 dℰ_ (pq)^(pq) (g_ (pi)^(pi) g_ (qj)^(qj) σ_ (ij)^(ij) + ℰ_ (ij)^(ij) ∂σ_ (ij)^(ij)/∂ℰ_ (pq)^(pq))

1/2 dℰ_ (pq)^(pq) (ℰ_ (ij)^(ij) _ (ijpq)^(ijpq) + σ_ (pq)^(pq) + ℰ_ (ij)^(ij) ℰ_ (nm)^(nm) ∂_ (ijnm)^(ijnm)/∂ℰ_ (pq)^(pq))

The third term in the parenthesis is zero, because E and E are independent. The increment of strain energy is then,

d = res/.(PartialD[labs][uuuu[red @ i, red @ j, red @ n, red @ m], ℰdd[red @ p, red @ q]]) →0

1/2 dℰ_ (pq)^(pq) (ℰ_ (ij)^(ij) _ (ijpq)^(ijpq) + σ_ (pq)^(pq))

and,

d$ == d ;

((d$/.{i→p, j→q}) - d//Simplify) == 0

1/2 dℰ_ (pq)^(pq) (-ℰ_ (ij)^(ij) _ (ijpq)^(ijpq) + σ_ (pq)^(pq)) == 0

This shows that we have also   σ_ (i  j)^(i  j)= ℰ_ (p  q)^(p  q) _ (p  q  i  j)^(p  q  i  j), and that _ (ijpq)^(ijpq)_ (pqij)^(pqij). A symmetry between the pairs {i,j} and {p,q} has to be included.
This is summarized in the rule :

SymRule := uuuu[i_, j_, k_, l_] :>uuuu @@ (Sort[{Sort[{i, j}], Sort[{k, l}]}]//Flatten)

uuuu[red @ n, red @ k, red @ j, red @ n]

%/.SymRule

_ (nkjn)^(nkjn)

_ (jnkn)^(jnkn)

Here is the list of the 21 distinct elements of  E (and similar lists in other basis) :

(uuuu[i, j, k, l]//ArrayExpansion[black/@{i, j, k, l}])/.SymRule ;

Distinct = %//Flatten//Union

Length[%]

21

The Hooke's law

For an isotropic body we have the well known relations using the Young's modulus Ε, and the Poisson's ratio ν (we use here the notation σ$ for these particular values of the stress.

From which, using the constitutive equation σ_ (ij)^(ij) = ℰ_ (lm)^(lm) _ (ijlm)^(ijlm) and the symmetry relations, we extract the _ (ijlm)^(ijlm). In the "black" cartesian basis :

and all the cyclic permutations of {1,2,3}. In fact there is only 4 distinct and non-zero values :

m3[flavor_ @ i_] := flavor @ (Mod[i, 3] + 1) ;

res22 = res11/.{uuuu[i_, j_, k_, l_] ->uuuu[i//m3, j//m3, k//m3, l//m3]}/.SymRule

res33 = res22/.{uuuu[i_, j_, k_, l_] ->uuuu[i//m3, j//m3, k//m3, l//m3]}/.SymRule

res23 = res12/.{uuuu[i_, j_, k_, l_] ->uuuu[i//m3, j//m3, k//m3, l//m3]}/.SymRule

res31 = res23/.{uuuu[i_, j_, k_, l_] ->uuuu[i//m3, j//m3, k//m3, l//m3]}/.SymRule

ElasticModuli = Distinct/.res11/.res22/.res33/.res12/.res23/.res31

We can also introduce the Lame's coefficients λ and μ :

(*4.7*)ResultFrame[LameRule = Solve[res47 = {-(Ε ν)/((ν + 1) (2 ν - 1)) == λ, Ε/(2 (ν + 1)) == μ}, {Ε , ν}][[1]]//Simplify]

       {Ε→ (μ (3 λ + 2 μ))/(λ + μ), ν→λ/(2 (λ + μ))}       (4.7)

(* In two dimensions we have (see below)   *) (*4.8*)ResultFrame[res48 = {Ε->2μ (2μ + 2λ)/(2μ + λ), ν->λ/(λ + 2μ)}]

       {Ε→ (2 μ (2 λ + 2 μ))/(λ + 2 μ), ν→λ/(λ + 2 μ)}       (4.8)

TABLE OF ELASTIC MODULI :

Thread[Distinct == (ElasticModuli/.LameRule//FullSimplify)]//TableForm

_ (1111)^(1111) == λ + 2 μ
_ (1112)^(1112) == 0
_ (1113)^(1113) == 0
_ (1122)^(1122) == λ
_ (1123)^(1123) == 0
_ (1133)^(1133) == λ
_ (1212)^(1212) == μ
_ (1213)^(1213) == 0
_ (1222)^(1222) == 0
_ (1223)^(1223) == 0
_ (1233)^(1233) == 0
_ (1313)^(1313) == μ
_ (1322)^(1322) == 0
_ (1323)^(1323) == 0
_ (1333)^(1333) == 0
_ (2222)^(2222) == λ + 2 μ
_ (2223)^(2223) == 0
_ (2233)^(2233) == λ
_ (2323)^(2323) == μ
_ (2333)^(2333) == 0
_ (3333)^(3333) == λ + 2 μ

In the "black" canonical Euclidean basis the above relation can be summarized in the form :

§uuuu[i_, j_, k_, l_] := λ δuu[i, j] δuu[k, l] + μ (δuu[i, k] δuu[j, l] + δuu[i, l] δuu[j, k])

Due to the tensorial character of the elastic moduli, we have in an arbitrary (red for instance) basis

§uuuu[i_, j_, k_, l_] := λ guu[i, j] guu[k, l] + μ (guu[i, k] guu[j, l] + guu[i, l] guu[j, k])

(*4.9*)ResultFrame[SequenceForm[uuuu[i, j, l, m], " =   ", res49 = §uuuu[i, j, l, m]]//ToFlavor[red, black] ]

or using the Young's modulus Ε, and the Poisson's ratio ν (see LameRule above)

We recover the well known Lame rules defined above,

Solve[Eliminate[{λ == -(Ε ν)/((ν + 1) (2 ν - 1)), μ == Ε/(2 (ν + 1))}, ν], Ε][[1]]

Solve[Eliminate[{λ == -(Ε ν)/((ν + 1) (2 ν - 1)), μ == Ε/(2 (ν + 1))}, Ε], ν][[1]]

{Ε→ (μ (3 λ + 2 μ))/(λ + μ)}

{ν→λ/(2 (λ + μ))}

Example of an idealized porous material ( Flügge page 53 ).

It consists of thin walls of thickness t << a, parallel to the coordinate planes x, y, z. There are n walls in each directions.

Figure 4.5 :

[Graphics:HTMLFiles/index_208.gif]

Figure 4.5 Model of a porous material.

From Hooke's law in two dimensions, obtained from the above relations,

Relation between Lame coefficients and Poisson-Young modulus :
From above we define,

∨ = -ℰd[y]/ℰd[x] ; Ε = σd[x]/ℰd[x]

and we have the Poisson-Young relation in d=2 :

LPY2Drule = Solve[{ν == λ/(λ + 2μ), Ε == 2μ (2μ + 2λ)/(2μ + λ)}, {λ, μ}][[1]]

{λ→ -(Ε ν)/((-1 + ν) (1 + ν)), μ→Ε/(2 (1 + ν))}

The first strain we impose to the porous material, is a simple stretching ℰ_x^x= ℰ_ (11)^(11) in the x direction, with  ℰ_y^y = ℰ_z^z = 0 and no shear strain. On the faces x = const this requires stresses in the vertical and in the horizontal walls. They add up to the force

ruleFxx = Fdd[x, x] ->2 (n a) ( n t) σd[x]/.HookePY2D/.{ℰd[x] ->ℰdd[1, 1], ℰd[y] ->0}

F_ (xx)^(xx) → -(2 a n^2 t Ε ℰ_ (11)^(11))/(-1 + ν^2)

The vertical walls normal to the x axis have no strain and no stress, and on the faces y = const (and idem z = const), we have only a contribution from the horizontal walls

ruleFyy = Fdd[y, y] -> (n a) ( n t) σd[y]/.HookePY2D/.{ℰd[x] ->ℰdd[1, 1], ℰd[y] ->0}

F_ (yy)^(yy) → -(a n^2 t Ε ν ℰ_ (11)^(11))/(-1 + ν^2)

ruleFzz = Fdd[z, z] -> (n a) ( n t) σd[y]/.HookePY2D/.{ℰd[x] ->ℰdd[1, 1], ℰd[y] ->0}

F_ (zz)^(zz) → -(a n^2 t Ε ν ℰ_ (11)^(11))/(-1 + ν^2)

The gross stress for the porous material is obtained by dividing each force by the gross area (na)^2. Using for them the notation σ^11, σ^22, σ^33, we have :

Stress2D =  {σuu[1, 1] ->Fdd[x, x]/(n a)^2/.ruleFxx//Factor, σuu[2, 2] ->Fdd[y, y]/(n a)^2/.ruleFyy//Factor, σuu[3, 3] ->Fdd[z, z]/(n a)^2/.ruleFzz//Factor}

When the porous medium is submitted to a strain ℰ_y = ℰ _22 or ℰ_z = ℰ _33, similar formulas hold, and for a combined stretching in all three directions we find

σ_ (11)^(11) → -( t Ε )/(a (ν^2 - 1)) (2 ℰ_ (11)^(11) + νℰ_22 + νℰ_33)

and two similar equations. Now let us submit the medium to a shear strain ℰ_ (12)^(12) = ℰ_ (xy)^(xy)in the x,y plane. Then only the horizontal walls are stressed,

Stressxy = τdd[x, y] -> (τdd[x, y]/.HookePY2D)/.ℰdd[x, y] ->ℰdd[1, 2]

τ_ (xy)^(xy) → (Ε ℰ_ (12)^(12))/(1 + ν)

On the faces x = const and y = const the stresses add up to forces

Fdd[x, y] == Fdd[y, x] == (Fxy = n^2a t τdd[x, y]/.Stressxy)

F_ (xy)^(xy) == F_ (yx)^(yx) == (a n^2 t Ε ℰ_ (12)^(12))/(1 + ν)

from which we derive the gross stress

σuu[1, 2] == σuu[2, 1] == Fxy/(n a)^2 == (Fxy/(n a)^2/.{ℰdd[1, 2] -> (ℰdd[1, 2] + ℰdd[2, 1])/2})

Shear2D = σuu[1, 2] -> (Fxy/(n a)^2/.{ℰdd[1, 2] -> (ℰdd[1, 2] + ℰdd[2, 1])/2}) ;

σ_ (12)^(12) == σ_ (21)^(21) == (t Ε ℰ_ (12)^(12))/(a (1 + ν)) == (t Ε (ℰ_ (12)^(12) + ℰ_ (21)^(21)))/(2 a (1 + ν))

This gives the elastic constants:

uuuu[1, 1, 1, 1] == uuuu[2, 2, 2, 2] == uuuu[3, 3, 3, 3] == σuu[1, 1]/ℰdd[1, 1]/.Stress2D

uuuu[1, 1, 2, 2] == uuuu[1, 1, 3, 3] == uuuu[2, 2, 3, 3] == σuu[2, 2]/ℰdd[1, 1]/.Stress2D

uuuu[1, 2, 1, 2] == uuuu[2, 3, 2, 3] == uuuu[3, 1, 3, 1] == D[σuu[1, 2]/.Shear2D, ℰdd[1, 2]]

_ (1111)^(1111) == _ (2222)^(2222) == _ (3333)^(3333) == -(2 t Ε)/(a (-1 + ν^2))

_ (1122)^(1122) == _ (1133)^(1133) == _ (2233)^(2233) == -(t Ε ν)/(a (-1 + ν^2))

_ (1212)^(1212) == _ (2323)^(2323) == _ (3131)^(3131) == (t Ε)/(2 a (1 + ν))

The elastic coefficients are here very different from those of the isotropic solid.

In spite of the fact that the material shows the same elastic behavior in the three axis directions, it is not isotopic. This could be verified by a change in the axis. Flügge describes the example where the new orthonormal frame, let's call it green frame, has the axis _ 3^3 in the direction {1,1,1} in the black frame, and _ 2^2obtained by a rotation of  45° of the initial axis _2^2. I will not detailed this example here.

Simpler form for the elastic law of isotropic bodies

We start from the constitutive equations,

gdd[red @ j, red @ p] (LameForm[[3]]) ℰdd[red @ n, red @ m]//Expand

(%//MetricSimplify[g]//FullSimplify) ;

HookesLaw2 = %//SymmetrizeSlots[] ; (*4.11*)

ResultFrame[res411 = σud[red @ i, red @ p] == (σ§§ud[red @ i_, red @ p_] = HookesLaw2//Simplify)]

which gives using Lame coefficients :

(*4.12*)ResultFrame[res412 = σud[red @ i, red @ p] == σ§§ud[red @ i, red @ p]/.LameRule//Simplify]

      2 μ ℰ_ (ip)^(ip) + λ g_ (ip)^(ip) ℰ_ (nn)^(nn) == σ_ (ip)^(ip)       (4.12)

Inversion of the above relations

We first calculate ℰ_ (nn)^(nn)

(HookesLaw2/.p→i//KroneckerContract[g])/.i→n//FullSimplify

dilation = Solve[% == σud[red @ n, red @ n], ℰud[red[n], red[n]]][[1]]

(Ε ℰ_ (nn)^(nn))/(1 - 2 ν)

{ℰ_ (nn)^(nn) → -((-1 + 2 ν) σ_ (nn)^(nn))/Ε}

then determine ℰ_ (i  p)^(i  p) :

      Ε ℰ_ (ij)^(ij) == (1 + ν) σ_ (ij)^(ij) - ν g_ (ij)^(ij) σ_ (nn)^(nn)       (4.13)

(*4.14*)ResultFrame[res414 = σud[red @ i, red @ i]/3 == ((HookesLaw2/.p→i//KroneckerContract[g])/.n→i//Simplify)/3 == K ℰud[red @ i, red @ i] ]

      σ_ (ii)^(ii)/3 == (Ε ℰ_ (ii)^(ii))/(3 (1 - 2 ν)) == K ℰ_ (ii)^(ii)       (4.14)

K is the bulk modulus of the material.
Hydrostatic stress s and cubic dilation e of are defined by the rule :

{Tensor[s] == σud[red @ i, red @ i]/3, Tensor[e] == ℰud[red @ i, red @ i]/3}

{s == σ_ (ii)^(ii)/3, e == ℰ_ (ii)^(ii)/3}

HyddilDEF = {σud[i_, i_] ->3Tensor[s], ℰud[i_, i_] ->3Tensor[e]} ;

Hyddil = (1 - 2 ν) res414[[2]] → (1 - 2 ν) res414[[1]]/.HyddilDEF

Ε e→ (1 - 2 ν) s

Strain and stress deviations

We introduce the strain deviation and the stress deviation by,

The following relation is verified :

(*4.16*)ResultFrame[res416 = esrel = (Ε eud[red @ i, red @ j] == (1 + ν) sud[red @ i, red @ j])]

      Ε e_ (ij)^(ij) == (1 + ν) s_ (ij)^(ij)       (4.16)

(esrel/.{e→e§, s→s§}//ExpandAll)/.Hyddil//FullSimplify

3 ν s g_ (ij)^(ij) + Ε ℰ_ (ij)^(ij) == (1 + ν) σ_ (ij)^(ij)

which is the relation obtained above (g_ (i  j)^(i  j)δ_ (i  j)^(i  j)). We can also write with the Lame moduli,

       {s == (3 λ + 2 μ) e,   and, s_ (ij)^(ij) == 2 μ e_ (ij)^(ij)}       (4.17)

Viscous fluids

In the case of isotropic viscous fluids, the stresses depend on the time derivatives of the strains (the strain rates).  So we may use the above equations, simply replacing the strains by the strain rates :

(*4.18*)ResultFrame[res418 = res417/.e->Overscript[e, .] ]

Plasticity

In the uni-axial tension test, a material is called ideally plastic if stress and strain are related according to the following rules :
i) they obey the Hooke's law  σ = E ε for stresses σ < σ_Y
ii) At the yield stress σ_Y the strain can increase indefinitely without any restriction on the strain rate  dε / dt except dε / dt > 0.
iii) the stress cannot be increased beyond σ_Y.

Figure 4.8 :

[Graphics:HTMLFiles/index_294.gif]

                        Figure 4.8   Stress-strain curve in ideal plasticity.

The yield limit is obtained when a certain function of all the stress components reaches a fixed value, and there exists as many yield conditions as there are materials. Some models are more commonly used, those of Tresca and of Mises. The latter is more easily convenient for a tensorial presentation. If the yield conditions cannot be derived from basic considerations, simple elementary concepts allow to derive plausible relations.

We can start from the strain energy density S, equ. (4.4),   S =   1/2 ℰ_ (i  j)^(i  j) σ_ (i  j)^(i  j) and introduce the stress and strain deviations equ. (4.15), and using the fact that the deviations s_ (i  j)^(i  j) and e_ (i  j)^(i  j) have a zero trace.

       =   1/2 (3 e s + e_ (ij)^(ij) s_ (ij)^(ij))       (4.19)

Using Hooke's law via equ (4.17), we have also,

       =   3/2 (3 λ + 2 μ) e e + μ e_ (ij)^(ij) e_ (ij)^(ij)       (4.20)

Note : we have used two different notations (Tensor[e] and Tensor[Tensor[e]]) for the tensor e, so as to write the product e e, and not e^2. This presentation could certainly be improved.
The first term in equ.(4.20) is a dilation energy, while the second is a distortion energy. As in plastic flow, there is practically no volume change, the plastic yield will depend entirely on the distortional part of the stress.

The Mises yield condition considers that the yield limit is reached when the distortion energy (s_ (i  j)^(i  j) is symmetrical),

Expand[§][[2]] == (res1 = Expand[§][[2]]/. edd[red[i], red[j]] → sdd[red[i], red[j]]/(2μ)) == (res = UpDownSwap[red[j]][res1]//SymmetricStandardOrder[s])

1/2 e_ (ij)^(ij) s_ (ij)^(ij) == (s_ (ij)^(ij) s_ (ij)^(ij))/(4 μ) == (s_ (ij)^(ij) s_ (ji)^(ji))/(4 μ)

has reached a certain value characteristic of the material. Let say  s_ (i  j)^(i  j) s_ (j  i)^(j  i)==2 k^2,

4μ res == 2k^2

s_ (ij)^(ij) s_ (ji)^(ji) == 2 k^2

In terms of the actual stress σ_ (i  j)^(i  j) (using (4.15))

Off[$ModuleNumber :: "modnc"]

$ModuleNumber = 1 ;

On[$ModuleNumber :: "modnc"]

and as a function of σ_ (i  j)^(i  j). This gives the Mises yield conditions, with the material constant k as a parameter.

Off[$ModuleNumber :: "modnc"]

$ModuleNumber = 1 ;

On[$ModuleNumber :: "modnc"]

Physical meaning of the Mises conditions :

res421//EinsteinSum[]

Case of a simple tension, σ_ (1  1)^(1  1)= σ_x :

((res421//EinsteinSum[])/.σud[red @ 1, red @ 1] → σ_x/.σud[i_, j_] →0) == 0(*4.23*)

ResultFrame[res423 = σ_x == (σ_x/.Solve[%, σ_x][[2]])]

-6 k^2 + 2 σ_x^2 == 0

      σ_x == 3^(1/2) k      (4.23)

Case of a simple shear, σ_ (1  2)^(1  2)= σ_ (2  1)^(2  1)= τ_xy :

((res421//EinsteinSum[])/. {σud[red @ 1, red @ 2] → τ_xy, σud[red @ 2, red @ 1] → τ_xy}/.σud[i_, j_] →0) == 0(*4.24*)

ResultFrame[res424 = τ_xy == (τ_xy/.Solve[%, τ_xy][[2]])]

-6 k^2 + 6 τ_xy^2 == 0

      τ_xy == k      (4.24)

This shows that k is the yield stress in a simple shear, and that the Mises condition fixes the ratio between the yield limits in shear and uni-axial tension to 1:3^(1/2).
Above the yield limit, the plastic flow begins. The flow between t and t+dt is defined by the components dℰ_ (i  j)^(i  j) =Overscript[ℰ, .] _ (i  j)^(i  j)dt, and we have an incremental energy given by (see above)  dS$ = dℰ_ (i  j)^(i  j) σ_ (i  j)^(i  j),

d=. ; =. ;         (*   is here an increment  *)

d == Overscript[, .] dt == (d§ = (d$/.dℰ→ Overscript[ℰ, .]) dt)

d == dt Overscript[, .] == dt σ_ (ij)^(ij) Overscript[ℰ, .] _ (ij)^(ij)

If the stress tensor changes by dσ_ (i  j)^(i  j), where the new stress σ_ (i  j)^(i  j)+dσ_ (i  j)^(i  j)satisfy the yield conditions, then there is a corresponding change in the strain and in the strain energy:

 Overscript[, .] + Overscript[TotalD[], .] == Overscript[, .] + TotalD[d§/dt]

It is here postulated that the change in the strain energy do not depend on the change of stress :

TotalD[d§/dt][[1]] == 0

Overscript[ℰ, .] _ (ij)^(ij) σ_ (ij)^(ij) == 0

This last relation together with the preceding are fulfilled for all dσ_ (i  j)^(i  j): hence their coefficients are proportional

TotalD[d§/dt][[1, 1]] == μ (res[[2, 2]])

"   or  "(*4.25*)

ResultFrame[res425 = %%/.F '[i_] → PartialD[{x, δ, g, Γ}][Tensor[F], i]]

Overscript[ℰ, .] _ (ij)^(ij) == μ F^′[σ_ (ij)^(ij)]

   or  

      Overscript[ℰ, .] _ (ij)^(ij) == μ ∂F/∂σ_ (ij)^(ij)       (4.25)

PartialD[labs][k, Tensor[σ, {m_, n_}, {Void, Void}]] := 0 (* because k is a parameter *)

PartialD[labs][res422, σuu[red @ m, red @ n]]/.PartialD[labs][gdd[i_, j_], σuu[m_, n_]] → 0

%//TensorComponentsD[g]//Expand//MetricSimplify[g]//SymmetrizeSlots[]

res = %/.l→k

6 σ_ (mn)^(mn) - g_ (mn)^(mn) σ_ (kk)^(kk) - g_ (mn)^(mn) σ_ (ll)^(ll)

6 σ_ (mn)^(mn) - 2 g_ (mn)^(mn) σ_ (kk)^(kk)

Using relation (4.15)

0 ==   sud[red @ j, red @ j] ==   s§ud[red @ j, red @ j] (*4.26*)

0 == s_ (jj)^(jj) == -s g_ (jj)^(jj) + σ_ (jj)^(jj)

      ∂F/∂σ_ (mn)^(mn) == 6 σ_ (mn)^(mn) - 2 g_ (mn)^(mn) σ_ (kk)^(kk) == 6 s_ (mn)^(mn)       (4.26)

and together with (4.25) we obtain the strain rate :

res425/.res426[[1]] → res426[[3]] (*4.27*)

ResultFrame[SequenceForm[res427 = res425[[1]] == λ  sdd[red @ i, red @ j], "   with  λ = 6μ"]]

Overscript[ℰ, .] _ (ij)^(ij) == μ ∂F/∂σ_ (ij)^(ij)

      Overscript[ℰ, .] _ (ij)^(ij) == λ s_ (ij)^(ij)    with  λ = 6μ      (4.27)

This relation is known as the Mises-Reuss flow law.


Created by Mathematica  (November 27, 2007) Valid XHTML 1.1!