EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in...

12
EN234: Computational methods in Structural and Solid Mechanics Homework 7: Large deformation elasticity Due Wed Nov4, 2015 School of Engineering Brown University HEALTH WARNING: Unfortunately FEA and solid mechanics use B to denote two different quantities – the Left Cauchy Green deformation tensor, and the B matrix that maps displacements to strains. We use the standard notation in this homework, so be careful to distinguish between the two! In this homework you will extend EN234FEA to solve static boundary value problems for hyperelastic materials. As a simple nonlinear elastic material we will consider the neo-Hookean material, with stress- strain relation ( ) 1 1 5/3 1 1 3 ij ij kk ij ij B B K J J µ σ δ δ = + where ij σ denotes the Cauchy stress, J=det(F), and ij ik jk B FF = . This model is intended to be used with 1 1 K µ >> . As last week you can choose whether to do a straightforward version of this problem, or a more challenging (but more useful) implementation.

Transcript of EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in...

Page 1: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

EN234: Computational methods in Structural and Solid Mechanics

Homework 7: Large deformation elasticity

Due Wed Nov4, 2015

School of Engineering Brown University

HEALTH WARNING: Unfortunately FEA and solid mechanics use B to denote two different quantities – the Left Cauchy Green deformation tensor, and the B matrix that maps displacements to strains. We use the standard notation in this homework, so be careful to distinguish between the two! In this homework you will extend EN234FEA to solve static boundary value problems for hyperelastic materials. As a simple nonlinear elastic material we will consider the neo-Hookean material, with stress-strain relation

( )115/3

1 13ij ij kk ij ijB B K J

σ δ δ = − + −

where ijσ denotes the Cauchy stress, J=det(F), and ij ik jkB F F= . This model is intended to be used with

1 1K µ>> .

As last week you can choose whether to do a straightforward version of this problem, or a more challenging (but more useful) implementation.

Page 2: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

1. Simple problem – basic hyperelasticity A straightforward implementation of finite strain elasticity was discussed in class. Recall that the equilibrium equation reduces to a set of nonlinear equations for the displacements of the form

0 2 0 0

*0 0 0 00 [ ]

aa a a a a ai i i i i i ij kl

jV V V

NR F F b N dV t N dA R F dVy

ρ t∂

∂− = = + =

∂∫ ∫ ∫

where ijt is the Kirchhoff stress, and

1a a

kjj k

N N Fy x

−∂ ∂=

∂ ∂

are the spatial shape function derivatives. The nonlinear equations must be solved using Newton-Raphson iteration: as always this involves repeatedly computing a correction to the approximation to the displacement field by solving a set of linear equations

b a aaibk k i iK dw R F= − +

The following expression was derived in class for the tangent stiffness matrix

0 0

0 0[ ]a b a bijel ln

aibk rs ij klj ln ks r k jV V

BN N N NK F dV F dVy B F y y y

tt

∂ ∂∂ ∂ ∂ ∂= +

∂ ∂ ∂ ∂ ∂ ∂∫ ∫

Here,

( )lnrs nk lr lk nr

ks

B F B BF

δ δ∂

= +∂

1 2 11 112/3 2/3

1 1 1 ( / 2)2 3 3 3

ij ik jn jk inkn ij ij nn ij kn nl ij kn nl

knB B B B K J J B B

B J J

t δ δ δ δµ µδ δ δ δ− −∂ + = − − − + − ∂

The relevant products can be expanded as matrix operations

0

0T

V

dV= ∫R B σ

where σ now stores the Kirchoff stress, and the matrix B is the usual one, except (eg) that b

i

Nx

∂∂

has been

replaced by 1b b

kii k

N N Fy x

−∂ ∂=

∂ ∂.

0 0

*0 0

T

V V

dV dV= −∫ ∫K B DGB Σ

Here, B is the usual matrix (but with derivatives wrt y); the Tangent Stiffness D represents

1 2 11 112/3 2/3

1 1 1 1( )2 3 3 3 2

ij ik jl jk ilkl ij ij nn ij kl ij kl

klB B B K J J B

B J J

t δ δ δ δµ µδ δ δ δ− −∂ + = − − − + − ∂

Here ij ik jkB F F= . We can store the identity matrix, 1,ij ijB B− as 1-D vectors, eg

11 22 33 12 13 23[1,1,1,0,0,0] [ , , , , , ]I B B B B B B B= = , in which case

Page 3: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

1 1 11 112/3 2/3

1 01

1( 1 / 2)

1 / 2 331/ 2

0 1/ 2

nnB I B I I B B K J J I BJ Jµ µ − − −

= + ⊗ − ⊗ − ⊗ + − ⊗

D

The matrix G represents ( )lnrs np lr lp nr

ps

B F B BF

δ δ∂

= +∂

. This is symmetric in ln, but not in pr and so must be

stored as a 6x9 matrix 11 12 13

22 12 23

33 13 23

12 12 22 11 23 13

13 13 23 33 11 12

23 23 13 12 33 22

2 0 0 2 0 2 0 0 00 2 0 0 2 0 0 2 00 0 2 0 0 0 2 0 2

2 2 0 2 2 2 0 2 02 0 2 2 0 2 2 0 2

0 2 2 0 2 0 2 2 2

B B BB B B

B B BB B B B B BB B B B B B

B B B B B B

=

G

I couldn’t think of an elegant way to generate this matrix and just typed it in term-by-term. If you can think of a better way please send me the code! Be careful not to make any typos… The matrix *B maps nodal velocities to the velocity gradient (stored as a vector) and is a 9x3*n_nodes matrix:

1 2

1 1

1 2

2 2

1 2

3 3

1 2

2 2

1 2*

1 1

1 2

3 3

1 2

1 1

1

3

1

2

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

......0 0 0 0

0 0

0 0 0 0

0 0

0 0

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N

y

N

y

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂=

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

B

Page 4: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

The matrix Σ is a 3*n_nodesx3*n_nodes matrix, which represents the product

[ ]a b

aibk ak bi ak bi ij klk j

N NP S P S Fy y

t∂ ∂= = =

∂ ∂S

This is a rather tricky matrix to assemble. Of course, you can do it using brute-force loops. If you want to use the faster built-in Fortran matrix operations, you can use the following approach.

• Note that 11 11 12 11 13 11 11 21 12 21

11 12

11 13

21 11

21 12

11 12 13 11 12 11 11 11 21 21

11 12

11 13

21 11

21 12

@

ak bi

P S P S P S P S P SP S

P S P SP SP S

P P P P P S S S S SP SP SP SP S

=

=

Where @ denotes the elemental product of the two matrices. Note that blocks of these matrices can be created by a sequence of spread and reshape operations.

[ ]11 11 11 11 11 12 13

12 12 12 12 11 12 13 11 11 12 13

13 13 13 13 11 12 13

P P P P P P PP P P P P P P P P P PP P P P P P P

→ → →

The following lines therefore constructΣ (there are probably other ways as well)

S = reshape(matmul(transpose(B),stress),(/3,length_dof_array/3/)) do i = 1,n_nodes Pvec = reshape(spread(transpose(dNdx(i:i,1:3)),dim=2,ncopies=n_nodes),(/3*n_nodes/)) Pmat(3*i-2:3*i,1:3*n_nodes) = spread(Pvec,dim=1,ncopies=3) Svec = reshape(spread(S(1:3,i:i),dim=2,ncopies=n_nodes),(/3*n_nodes/)) Smat(3*i-2:3*i,1:3*n_nodes) = spread(Svec,dim=1,ncopies=3) end do Sigma = Pmat*transpose(Smat) Run the following tests to check your code:

(1) As always, use CHECK STIFFNESS to check that your element stiffness is consistent with the element force vector.

(2) Run a simple test in which you stretch a hyperelastic bar, with a coarse mesh. A sample input file is provided in a file called Hyperelastic_bar_stretch.in. You will probably need to edit the file to change the integer number used to identify the element, to make it consistent with your code.

Page 5: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

(3) Run a simulation in which the bar is first stretched, then rotated, as shown in the figure (this simulation would be impossible with linear elasticity). A user subroutine has been provided with EN234FEA that applies this sequence of deformations, along with the input file called hyperelastic_stretch_rotate (again, you will probably need to edit the file a bit). You should find that s22 at the end of the deformation is equal to S11 at the end of the stretch (obviously!). You could modify the field projection routine to plot principal stresses (which should be constant). The element_utilities module includes a function that calculates principal stresses given a 3D stress vector. Also, the stiffness matrix should still be correct at the end of the deformation.

(4) If steps 1-3 all work, you can try a more complicated problem – there is a sample input file to run the dreaded hole-in-a-plate simulation but with large elastic strains, but you can create your own mesh with a more interesting problem too. The holeplate example will take a few minutes to run (and you have to be a little careful with the choice of material properties to avoid locking).

As a solution to this homework please submit: (1) A short summary of the tests you ran to demonstrate that your code works correctly (2) Please push your updated code to GitHub.

Page 6: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

2. More challenging problem – a B-bar element for hyperelasticity Most hyperelastic materials have a large bulk modulus compared to their shear modulus (and are often idealized as incompressible materials). As we have seen, it is important to design elements carefully for this sort of material. The simple implementation described in class (and in problem 1) will suffer from volumetric locking. With this in mind, you will implement a finite strain version of the B-bar method. As in the small strain B-bar method the basic idea is to interpolate the volumetric and deviatoric strains separately. In finite strain problems we use the deformation gradient as the basic measure of deformation rather than the strain; as you probably know, the Jacobian of the deformation gradient quantifies volume changes. Accordingly, the B-bar method for finite strains uses a modified measure of the Jacobian of the deformation gradient. To this end: • We define the volume averaged Jacobian of the deformation gradient

1 det( )el

el V

dVV

η = ∫ F

Here, the integral is taken over the volume of the element in the reference configuration. • The deformation gradient is replaced by an approximation ( )1// n

ij ijF F Jη= , where n=2 for a 2D plane strain problem and n=3 for a 3D problem, while J=det(F).

• The virtual work equation is expressed in terms of this modified deformation gradient as

0 0 2 0

*0 0 0 0[ ] 0ij kl ij i i i i

V V V

F L dV b v dV t v dAt δ ρ δ δ η∂

− − =∫ ∫ ∫ (1)

where ij ijJt σ= is the Kirchhoff stress,

1 ijij ik kj ij kkL F F L L

nδ δηδ δ δ δ

η−

= = + −

and 11 1

el el

ji ij kkel elV V

JF F dV J L dVV V

δη δ δ−= =∫ ∫

• We now introduce the usual element interpolation functions and calculate the deformation gradient and velocity gradient as

1

1

1

n aai

ij ij ij ij ja

n a a aai

ij i kjj j j ka

u NF ux x

v N N NL v Fy y y x

δ δ

δδ δ

=

=

∂ ∂= + = +

∂ ∂

∂ ∂ ∂ ∂= = =∂ ∂ ∂ ∂

• As in the small-strain B-bar method we introduce the volume averaged shape function derivatives

1

el

a a

i el iV

N NJ dVy V yη

∂ ∂=

∂ ∂∫

• With these identities the discrete equilibrium equation can be expressed as

Page 7: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

0 2 0

0

*0 0 0

0

0

ˆ

[ ]

a ai ia a a

i i iV V

a a amjai mj kl im

j i iV

R F

F b N dV t N dA

N N NR F dVy n y y

ρ η

δt δ

− =

= +

∂ ∂ ∂ = + − ∂ ∂ ∂

∫ ∫

Notice that this result is essentially identical to equation (1) of Homework 5, except that the shape function derivatives are multiplied by the inverse of the deformation gradient, and we are using the Kirchhoff stress in the finite strain version.

• As usual, we must solve this equation using Newton-Raphson iteration. The correction to the approximation to the solution is computed using

b a aaibk k i iK dw R F= − +

where the stiffness follow from linearizing the virtual work equation. The element stiffness is

0

0

10

0

[ ]

[ ]

a a amj kl pq mjel lnaibk rs qr imbln ps j i ikV

a a amjmj kl imb j i ikV

F FB N N NK F F dVB F y n y yu

N N NF dVy n y yu

t δδ

δt δ

− ∂ ∂∂ ∂ ∂ ∂ = + − ∂ ∂ ∂ ∂ ∂∂

∂ ∂ ∂ ∂ + + − ∂ ∂ ∂∂

where the term 1rs qr qsF F δ− = has been introduced for convenience. Simplifying this result is a tedious

but straightforward exercise. Note that

1b b bpq pr

qr pkb r k kk

F N N NFy n y yu

δδ−

∂ ∂ ∂ ∂ = + − ∂ ∂ ∂∂

While a a a a b a bmj mj

im im aibkb j i i k j k ik

N N N N N N NPy n y y y y n y yu

δ δδ δ ∂ ∂ ∂ ∂ ∂ ∂ ∂ ∂ + − = − + + ∂ ∂ ∂ ∂ ∂ ∂ ∂∂

where

1

el

b a a b a baibk

el k i k i k iV

N N N N N NP J J dVV y y y y y yη

∂ ∂ ∂ ∂ ∂ ∂= − − ∂ ∂ ∂ ∂ ∂ ∂

We now need to find a way to reduce this to a set of compact matrix operations. The residual vector has the usual form

0

0T

V

dV= ∫R B σ

Page 8: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

where σ now stores the Kirchoff stress, and the matrix B is identical to the one you used in Homework 5,

except (eg) that b

i

Nx

∂∂

has been replaced by 1b b

kii k

N N Fy x

−∂ ∂=

∂ ∂. You can cut and paste the code you used in

HW5 and add this small modification. The stiffness can be expressed as a series of matrix products

( )0 0

*0 0

T nn

V V

dV dVnt

= + − + +∫ ∫K B DGB Σ P Q

The matrices in this expression are defined (and can be computed) as follows: (1) The Tangent Stiffness D represents

1 2 11 112/3 2/3

1 1 1 1( )2 3 3 3 2

ij ik jl jk ilkl ij ij nn ij kl ij kl

klB B B K J J B

B J J

t δ δ δ δµ µδ δ δ δ− −∂ + = − − − + − ∂

Here ij ik jkB F F= . We can store the identity matrix, 1,ij ijB B− as 1-D vectors, eg

11 22 33 12 13 23[1,1,1,0,0,0] [ , , , , , ]I B B B B B B B= = , in which case

1 1 11 112/3 2/3

1 01

1( 1 / 2)

1 / 2 331/ 2

0 1/ 2

nnB I B I I B B K J J I BJ Jµ µ − − −

= + ⊗ − ⊗ − ⊗ + − ⊗

D

Recall that in Fortran90 the outer product of two 6 dimensional vectors ⊗a b can be calculated using the following code aouterproductb = spread(a,dim=2,ncopies=6)*spread(b,dim=1,ncopies=6)

(2) The matrix G represents ( )lnrs np lr lp nr

ps

B F B BF

δ δ∂

= +∂

. This is symmetric in ln, but not in pr and so

must be stored as a 6x9 matrix 11 12 13

22 12 23

33 13 23

12 12 22 11 23 13

13 13 23 33 11 12

23 23 13 12 33 22

2 0 0 2 0 2 0 0 00 2 0 0 2 0 0 2 00 0 2 0 0 0 2 0 2

2 2 0 2 2 2 0 2 02 0 2 2 0 2 2 0 2

0 2 2 0 2 0 2 2 2

B B BB B B

B B BB B B B B BB B B B B B

B B B B B B

=

G

I couldn’t think of an elegant way to generate this matrix and just typed it in term-by-term. If you can think of a better way please send me the code! Be careful not to make any typos… (4) The matrix *B maps nodal velocities to the velocity gradient (stored as a vector)

Page 9: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

1 2

1 1

1 2

2 2

1 2

3 3

1 2

2 2

1 2* *

1 1

1 2

3 3

1 2

1 1

1

3

1

2

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

......0 0 0 0

0 0

0 0 0 0

0 0

0 0

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N N

y y

N

y

N

y

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂= =

∂ ∂

∂ ∂

∂ ∂

∂ ∂

∂ ∂

B B

1 1 1 1 1 1 2 2

1 1 2 2 3 3 1 1

1 1 1 1 1 1

1 1 2 2 3 3

1 1 1 1

1 1 2 2

1

3

0 0 0

N N N N N N N N

y y y y y y y y

N N N N N N

y y y y y y

N N N N

y y y y

∂ ∂ ∂ ∂ ∂ ∂ ∂ ∂− − − −

∂ ∂ ∂ ∂ ∂ ∂ ∂ ∂

∂ ∂ ∂ ∂ ∂ ∂− − −

∂ ∂ ∂ ∂ ∂ ∂

+∂ ∂ ∂ ∂

− −∂ ∂ ∂ ∂

B

We next examine the terms in the geometric stiffness: ( )0

0nn

V

dVnt

− + +∫ Σ P Q .

(1) The matrix P stores 1

el

b a a b a baibk

el k i k i i kV

N N N N N NP J J dVV y y y y y yη

∂ ∂ ∂ ∂ ∂ ∂= − − ∂ ∂ ∂ ∂ ∂ ∂

∫ . P is constant in each

element, and for a 3D problem with n nodes it is a 3n x 3n matrix. It can be calculated at the same time as a

i

Ny

∂∂

. To evaluate the various products of the shape function derivatives, note that:

• Matrices of the form a b

i k

N Ny y

∂ ∂∂ ∂

can be assembled as the outer product of two vectors

1 1 1 2 2 2

1 2 3 1 2 3V

N N N N N Ny y y y y y

∂ ∂ ∂ ∂ ∂ ∂=

∂ ∂ ∂ ∂ ∂ ∂ n

They can therefore be constructed with the following two lines of code (which assumes a 3D problem):

dNdxvec(1:3*n_nodes) = reshape(transpose(dNdx(1:n_nodes,1:3)),(/3*n_nodes/)) result=spread(dNdxvec,dim=2,ncopies=3*n_nodes)*spread(dNdxvec,dim=1,ncopies=3*n_nodes) where dNdxvec must be declared as a 3*n_nodes long 1-D vector.

Page 10: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

• Products of the form ak biA B appear in both P and Q, and are somewhat more cumbersome to assemble. Note that

11 11 12 11 13 11 11 21 12 21

11 12

11 13

21 11

21 12

11 12 13 11 12 11 11 11 21 21

11 12

11 13

21 11

21 12

@

ak bi

A B A B A B A B A BA B

A B A BA BA B

A A A A A B B B B BA BA BA BA B

=

=

Where @ denotes the elemental product of the two matrices. Note that blocks of these matrices can be created by a sequence of spread and reshape operations.

[ ]11 11 11 11 11 12 13

12 12 12 12 11 12 13 11 11 12 13

13 13 13 13 11 12 13

A A A A A A AA A A A A A A A A A AA A A A A A A

→ → →

The matrix representing a b

k i

N Ny y

∂ ∂∂ ∂

can therefore be constructed as follows

do i = 1,n_nodes Pvec = reshape(spread(transpose(dNdx(i:i,1:3)),dim=2,ncopies=n_nodes),(/3*n_nodes/)) Pmat(3*i-2:3*i,1:3*n_nodes) = spread(Pvec,dim=1,ncopies=3) end do result = Pmat*transpose(Pmat))

(2) The matrix Q is also a 3n x 3n matrix storing a b

k i

N Ny y

∂ ∂∂ ∂

. This can be computed using the procedure

outlined above.

(3) Finally, the matrix Σ represents the product [ ]a b

ij klk j

N NFy y

t∂ ∂∂ ∂

and is also a 3n x 3n matrix (for a 3D

problem). It can be assembled by first constructing the matrix b

bi ijj

NSy

t∂=∂

and then following the

procedure used to create P and Q, i.e S = reshape(matmul(transpose(B),stress),(/3,length_dof_array/3/)) do i = 1,n_nodes Pvec = reshape(spread(transpose(dNdx(i:i,1:3)),dim=2,ncopies=n_nodes),(/3*n_nodes/)) Pmat(3*i-2:3*i,1:3*n_nodes) = spread(Pvec,dim=1,ncopies=3) Svec = reshape(spread(S(1:3,i:i),dim=2,ncopies=n_nodes),(/3*n_nodes/)) Smat(3*i-2:3*i,1:3*n_nodes) = spread(Svec,dim=1,ncopies=3) end do Sigma = Pmat*transpose(Smat)

Page 11: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

Here is a rough code template, which broadly follows the steps you used to construct your B-bar element:

1. Initialize any variables that are incremented in the loops below 2. Initialize integration points and weights 3. Loop over integration points

a. Compute shape functions and derivatives; convert to b

k

Nx

∂∂

in the usual way

b. Compute the deformation gradient F (3x3 matrix) 1

n aai

ij ij ij ij ja

u NF ux x

δ δ=

∂ ∂= + = +

∂ ∂∑

c. Compute inverse of the deformation gradient and J d. Convert the shape function derivatives to derivatives with respect to deformed coordinates

1b b

kii k

N N Fy x

−∂ ∂=

∂ ∂

e. Add contribution to /aiN y∂ ∂ and 1

elel V

J JdVV

= ∫ from current integration point

f. Add contribution to element volume from current integration point

g. Add contribution to el

b a a b

k i k iV

N N N NJ J dVy y y y

∂ ∂ ∂ ∂− ∂ ∂ ∂ ∂

∫ from current integration point

4. Divide the result of (g) above and /aiN y∂ ∂ by element volume and J ; add the last term in the

expression for P 5. Loop over integration points

a. Compute shape functions and derivatives; convert to b

k

Nx

∂∂

in the usual way

b. Compute the deformation gradient F (3x3 matrix) 1

n aai

ij ij ij ij ja

u NF ux x

δ δ=

∂ ∂= + = +

∂ ∂∑

c. Compute inverse of the deformation gradient and J

d. Convert the shape function derivatives 1b b

kii k

N N Fy x

−∂ ∂=

∂ ∂

e. Compute 1/3( / )J J=F F f. Compute the Kirchhoff stressσ and material tangent stiffness D g. Assemble *, ,B B G (note that you must use the modified deformation gradient F in

computing G). h. Compute Σ and Q. i. Add the contributions from the current integration point to the integrals

( )0 0 0

*0 0 0

T T nn

V V V

dV dV dVnt

= = + − + +∫ ∫ ∫R B σ K B DGB Σ P Q

Page 12: EN234: Computational methods in Structural and …€¦ · EN234: Computational methods in Structural and Solid Mechanics . Homework 7: Large deformation elasticity Due Wed Nov4,

Run the following tests to check your code:

(5) As always, use CHECK STIFFNESS to check that your element stiffness is consistent with the element force vector.

(6) Run a simple test in which you stretch a hyperelastic bar, with a coarse mesh. A sample input file is provided in a file called Hyperelastic_bar_stretch.in. You will probably need to edit the file to change the integer number used to identify the element, to make it consistent with your code.

(7) Run a simulation in which the bar is first stretched, then rotated, as shown in the figure (this simulation would be impossible with linear elasticity). A user subroutine has been provided with EN234FEA that applies this sequence of deformations, along with the input file called hyperelastic_stretch_rotate (again, you will probably need to edit the file a bit). You should find that s22 at the end of the deformation is equal to S11 at the end of the stretch (obviously!). You could modify the field projection routine to plot principal stresses (which should be constant). The element_utilities module includes a function that calculates principal stresses given a 3D stress vector. Also, the stiffness matrix should still be correct at the end of the deformation.

(8) If steps 1-3 all work, you can try a more complicated problem – there is a sample input file to run the dreaded hole-in-a-plate simulation but with large elastic strains, but you can create your own mesh with a more interesting problem too. The holeplate example will take a few minutes to run….

As a solution to this homework please submit: (3) A short summary of the tests you ran to demonstrate that your code works correctly (4) Please push your updated code to GitHub.