<<

Notes

• Please read O’Brien, Bargteil and • Recall we split the current strain into Hodgins, “Graphical modeling and • an elastic part (will vanish when applied forces animation of ductile fracture”, removed and system comes to rest) • and a plastic part (permanent) SIGGRAPH’02 • is computed just from elastic strain (and its rate of change) • We need rules for when plastic strain changes, and how fast • In multiple dimensions this isn’t trivial

Yield criteria Yielding

• Lots of complicated stuff happens when • First note that shear stress is the materials important quantity • Metals: dislocations moving around • Polymers: molecules sliding against each other • Materials (almost) never can permanently • Etc. change their volume • Difficult to characterize exactly when plasticity • Plasticity should ignore volume-changing (yielding) starts stress • Work hardening etc. mean it changes all the time So make sure that if we add kI to it too • ! • Approximations needed doesn’t change yield condition • Big two: Tresca and Von Mises Tresca yield criterion Von Mises yield criterion

• This is the simplest description: • If the stress has been diagonalized:

• Change basis to diagonalize ! 1 2 2 2 ("1 #" 2 ) + (" 2 #" 3 ) + (" 3 #"1) $ "Y • Look at normal stresses (i.e. the eigenvalues of !) 2

• No yield if !max-!min ! !Y 3 2 1 2 • More generally: 2 " # 3 Tr(") $ "Y • Tends to be conservative (rarely predicts F yielding when it shouldn’t happen) ! • This is the same thing as the Frobenius norm • But, not so accurate for some stress states of the deviatoric part of stress • Doesn’t depend on middle normal stress at all ! • Big problem (mathematically): not smooth • i.e. after subtracting off volume-changing part: 3 " # 1 Tr " I $ " 2 3 ( ) F Y

!

Linear shortcut Perfect plastic flow

• For linear (and isotropic) elasticity, apart • Once yield condition says so, need to start from the volume-changing part which changing plastic strain • The magnitude of the change of plastic strain we cancel off, stress is just a scalar should be such that we stay on the yield multiple of strain surface • (ignoring damping) • I.e. maintain f(!)=0 (where f(!)!0 is, say, the von Mises condition) So can evaluate von Mises with elastic • • The direction that plastic strain changes isn’t strain tensor too (and an appropriately as straightforward $f scaled yield strain) • “Associative” plasticity: "˙ = # p $%

! Algorithm Work hardening

• After a time step, check von Mises criterion: • May well not need it for graphics is f ( " ) = 3 dev " # " > 0 ? • But just in case, the simplest model: 2 ( ) F Y • Change yield stress to !Y0+K# where #=0 initially (K is the “isotropic hardening modulus”) • If so, need to update plastic strain: • Change yield von Mises yield condition to new $f 3 dev( ) 0 ! " = " + # 2 " # $ F #"Y % p p $% dev( ) • where $ is the centre of the yield surface, initially 0 3 % new dev($) % & = "p + # " = " + # 2 p p dev($) % & dev(%) F F • with " chosen so that f(!new)=0 ! ' new = ' + #

(easy for ) new 2 dev($) % & & = & + 3 #H dev($) % & F !

!

Creep

• Instead of instantaneously changing plastic • Some materials don’t really have an elastic regime strain in response to changing stress, let it • As soon as you apply force, begins change in time • Over long time, behave like a • No shear forces resisted • Elastic strain then decays exponentially • Over short time, behave like a • To zero: Maxwell fluid • Bounce elastically • To some fixed lower limit: more general • Called “viscoelastic” • Confused sometimes with regular elastic materials with damping • If creep is a large effect, fixed mesh (a.k.a. ) Lagrangian methods are bad • Everyday examples: • If creep is small, maybe not necessary to • Cornstarch/water include in animation • Silly putty Fracture Stress on elements

• If no plasticity before fracture occurs, called • Easiest approach: loop over elements looking “brittle” (otherwise, “ductile”) at stress • Much of engineering literature concerned with • Compare max eigenvalue of stress to tensile crack propagation fracture threshhold • Once a fracture has started, how fast does it (usually assume no fracture in compression) propagate, how much energy or force is needed to • Associated eigenvector should be normal to new continue it, … fracture surface For graphics just concerned with when • • But how do we put in that fracture surface? fracture occurs, and how to implement it • Elastoplastic modeling handles the rest

Fracturing elements Separating faces

• There isn’t an obvious place in the element to • Related to engineering “cohesive surface choose the plane to go elements” (where crack path is known) • Generally will want it to meet up with cracks • Check for separated nodes based on graph in neighbouring elements… connectedness: • Do not want to arbitrarily split element (can • Form graph where each vertex is an incident get slivers) element, edges correspond to non-separated faces • Instead: • If the graph has more than component, node must • Pick element face whose normal is closest to be split, one copy for each component eigenvector • Split the mass up according to volumes/densities • Mark that face as separated of incident tets • Check corners of face to see if separated, duplicate if so (splitting up mass appropriately) Fracture surface Node-based fracture

• Problem: looks terrible if underlying mesh is • Need a fracture criterion evaluated at nodes regular instead of elements • Not so great even if mesh is irregular but coarse • But stress doesn’t “live” there • Can be alleviated in rendering by changing • Simple approach: fracture surface to a fractally-roughened • use an average of stresses on surrounding elements, perform test as before higher detail surface • More complex: form “separation tensor” • See Smith, Witkin, Baraff “Fast and controllable simulation of the shattering of brittle objects”, • See O’Brien and Hodgins for details Eurographics’01 • Basic idea: split stress in each element into tensile and compressive parts (use signs of eigenvalues) • Get tensile and compressive forces on nodes • Form separation tensor from these

Introducing fracture surface Rigid shortcut

• Eigenvector gives normal to new fracture • For brittle fracture, generally don’t see surface (or care about) deformation • Also want fracture surface to pass through node: so begin by duplicating the node • So animate pieces as rigid bodies, but when collisions occur, evaluate internal • This will split up the neighbouring elements - need to remesh (and eliminate T-junctions) stress to see about fractures • Need to be careful to avoid slivers: if fracture • See Müller, et al., “Real-time simulation of plane passes very close by another node, deformation and fracture of stiff materials”, snap it to the node and avoid the sliver 2001 • Redistribute mass of the original node to the two copies Collisions Other material effects

• Note that when fracture occurs, bits of • Heat: any material property could be made material are exactly touching temperature dependent • Need to solve auxiliary heat equation to let heat • Can cause difficulties for “robust” diffuse through material: algorithms (that assume and maintain "T = # $ (k#T) separation between objects) "t • Unless k is very small, best to do this with implicit • Generally need to either artificially methods (Backward Euler typically) separate at fracture, or allow for small • Use FVM (or equivalent linear FEM) interpenetration • Conductivity! k can be just a constant number (get Laplacian) or could be a SPD tensor… • [yield stress] • [thermal stress]