# Defining Cracks

This section explains how to add explicit cracks to an MPM simulation.

## Introduction

The extension of MPM to model explicit cracks is called CRAMP for CRAcks in the Material Point Method. The commands is this section are used to define the explicit cracks (and there can be any number of them). In addition, whenever a simulation has cracks you can use crack settings commands to customize the features of the crack physics, set various material fracture properties to control crack propagation, or add traction laws to model cohesive zones.

The development of CRAMP is described first in a paper by Nairn (2003)[1] (and its development was done using NairnMPM). Some other papers discuss calculation of J integral and stress intensity factor,[2], propose energy balance propagation,[3] handle cracks in 3D[4] (although only available in OSParticulas), use cracks to model imperfect interfaces,[5], use traction laws with cracks,[6], and define a new approach to mixed-mode cohesive zone modeling.[7] Some applications of using cracks in MPM include wood fracture,[8] use of cracks to model glue bonds in oriented strand board,[9] simulation of dynamic fracture,[10] simulation of crack growth with fiber bridging.[11], and simulation of cutting.[12]

The remainder of this page is limited to cracks in 2D problems. See 3D Cracks for information on creating and using cracks in 3D calculations.

## Crack Definition Commands

In CRAMP,[1] a crack is defined as series of massless particles connected by crack segments. The first particle is the "start" tip and the last particle is the "end" tip. When CRAMP is active, nodes around the crack will be divided into two velocity fields to separately model motion of particle "above" the crack and "below" the crack. You define a crack by providing the points along the crack - (x1,y1) to (xn,yn). In addition, CRAMP fully accounts for crack contact, can use a contact law to model cracks with frictional contact or an imperfect interface, and can insert traction laws to model cohesive zones. When defining cracks, some additional commands are available to set crack contact mechanics, set crack tip materials, and insert traction laws.

In scripted files, a single crack is started with a NewCrack command, which is followed by one or more of the other commands to complete the crack definition:

```NewCrack (x1),(y1),<(mat)>,<(lawID)>,<(tract)>
GrowCrack (x2),(y2),<(mat)>,<(tract)>
GrowCrackLine (x2),(y2),(segs),<(mat)>,<(tract)>
GrowCrackArc (x1),(y1),(x2),(y2),(segs),(ang1),(ang2),<(mat)>,<(tract)>
CrackThickness (thick)
CustomTractionProp (traction)
```

In XML files, each crack is defined in a <CrackList> element:

```<CrackList law='(lawnum)' lawname='(lawname)' Tprop='(proplawnum)' Tpropname='(proplawname)'>
<pt x='(x1)' y='(y1)' tip='(mat)'/>
<pt x='53' y='0'/>
. . .
<pt x='(x2)' y='(y2)'/>
<Line xmin="(x1)" ymin="(y1)" xmax="(x2)" ymax="(y2)" resolution="(segs)"
start_tip="(mat)" end_tip="(mat)"/>
<Circle xmin="(x1)" ymin="(y1)" xmax="(x2)" ymax="(y2)" resolution="(segs)"
start_tip="(mat)" end_tip="(mat)" start_angle="(ang1)" end_angle="(ang2)"/>
<Thickness>(thick)</Thickness>
</CrackList>
```

The commands and their functions are:

### Starting the Crack

In scripted files, a crack is started with the NewCrack command:

```NewCrack (x1),(y1),<(mat)>,<(lawID)>,<(tract)>
```

In XML files, a crack is started with

```<CrackList law='(lawnum)' lawname='(lawname)' Tprop='(proplawnum)' Tpropname='(proplawname)'>
<pt x='(x1)' y='(x2)' tip='(mat)'/>
```

where

• (x1),(y1) - defines the coordinates for the start tip of the crack (the coordinates are (R,Z) if axisymmetric).
• (mat) - this optional parameter can be one of three things:
1. A Material ID - It can define the material at the start of the crack. Crack propagation is only possible when one or both of its crack tips have a material ID. If the material ID is omitted, the MPM calculations will correctly model that crack, but no propagation or fracture parameter calculations will occur. In XML files, this (mat) option must set the material by number.
2. "exterior" - this text indicates a crack tip at the edge of the body. In XML files, use tip='-2' instead of of the word "exterior".
3. "fixed" - this text indicates a fixed crack (scripted files only). A fixed crack will not translate with the object and will not track surfaces. It can calculate J Integral but not stress intensity factor. It is useful when using cracks to create surfaces in an object. The surface can change by propagating the crack at constant crack speed initiated by critical J or by initiation time (see steady state propagation). In XML files, you set a "fixed" crack, by adding an attribute type='fixed' to the <CrackList> element rather then using the (mat) parameter.
• (lawID) (and (lawnum)) - this parameter customizes this crack to use a different contact law for modeling crack contact (i.e., a different contact law or imperfect interface for this crack than the one selected by the global ContactCracks command). If you want to set a contact law on a non-fixed crack in scripted files, but do not want to define a tip material in (mat), you can enter (mat)="free", and then enter the desired (lawID). In XML files, the custom contact law can be specified by number or name (in (lawnum) or (lawname)). If both are used, the name takes precedence. (Note: this parameter can set custom crack contact using the deprecated (frict) parameter method; this option in a NewCrack command is deprecated).
• (lawID) and (tract) - alternatively, this pair of optional parameters can assign a traction law to the initial crack tip. To use this option in scripted files, set (lawID)="traction" and then set (tract) to a material ID for a traction law material. The traction law will be applied only to the first crack particle. In XML files, you assign a traction law using a mat='n' or matname='name' attribute on the <pt> command. (See notes 2 and 3).
• (proplawnum) and (proplawname) - in XML files, you can define a custom traction law to be insert whenever this crack propagates. The law is specified by number or name. If both are used, the name takes precedence. This command is only needed to override default methods for inserting traction laws. In scripted files, specify this custom law using the CustomTractionProp command instead.

#### Deprecated Options

Prior to availability of contact laws, these commands could assign custom Coulomb friction by changing (lawID) to (frict) in scripted files or by using a friction='(frict)' attribute on the <CrackList> command in XML files. Although these settings still work, new files should use contact laws instead. The deprecated settings were:

• (frict) - the deprecated global Friction command sets cracks by default to contact by frictional sliding and selects default frictional properties. By using the (frict) parameter, you can customize any specific crack to use different frictional properties on can convert one crack to use frictional sliding when the default crack setting is to model imperfect interfaces. The custom frictional properties are set using the same options available in the Friction and FrictionMM commands. If you want to set a contact law on a non-fixed crack in scripted files, but do not want to define a tip material in (mat), you can enter (mat)="free", and then enter the desired (frict).

Prior to availability of contact laws, the global ImperfectInterface command set cracks by default to be an imperfect interface and selected default interface parameters. The now-deprecated CrackInterface command or attributes on the <CrackList> comand, could customize any specific crack to use different interface parameters. Although these settings still work, new files should use contact laws instead. The deprecated settings were:

```CrackInterface (Dt),(Dntens),<(Dncomp)>
```

In XML files, you could select an imperfect interface using attributes on the <CrackList> element

```<CrackList Dt='(Dt)' Dn='(Dntens)' Dnc='(Dncomp)'>
```

where (Dt),(Dntens),(Dncomp) are the interface parameters.

### Growing the Crack

Once a crack is started, it is extended by using one or more growing commands. In scripted files, the commands are:

```GrowCrack (x2),(y2),<(mat)>,<(tract)>
GrowCrackLine (x2),(y2),(segs),<(mat)>,<(tract)>
GrowCrackArc (x1),(y1),(x2),(y2),(segs),(ang1),(ang2),<(mat)>,<(tract)>
```

In XML files, the growing commands are:

```  <pt x='(x2)' y='(y2)' tip='(mat)' mat='(tract)'/>
<Line xmin="(x1)" ymin="(y1)" xmax="(x2)" ymax="(y2)" resolution="(segs)"
start_tip="(mat)" end_tip="(mat)" mat='(tract)'/>
<Circle xmin="(x1)" ymin="(y1)" xmax="(x2)" ymax="(y2)" resolution="(segs)"
start_tip="(mat)" end_tip="(mat)" start_angle="(ang1)"
end_angle="(ang2)" mat='(tract)'/>
```
• (x1,y1) and (x2,y2) define two points that are used in the growing action that results from the command (the coordinates are (R,Z) if axisymmetric). Some commands give only (x2,y2); for these commands (x1,y1) is the given by the last point of the previous crack definition command.
• (segs) - the number of segments to create in the command's growing action. See note on number of segments for recommendations in selecting this number.
• (ang1) and (ang2) - for the arc commands, these parameters define the start and end angles for the arc growing action.
• (mat) - this optional parameter can be one of two things:
1. A Material ID - it can define the material at the end of the growing action. Crack propagation is only possible when one or both of its crack tips have a material ID. If the material ID is omitted, the MPM calculations will correctly model that crack, but no propagation or fracture parameter calculations will occur. A crack tip material is only needed if the growing command is the last crack definition command for the current crack. In XML files, this (mat) option must set the material by number and if desired you set a material for both the first and last particle generated by the command.
2. "exterior" - this text indicates a crack tip at the edge of the body. In XML files, use tip='-2' instead of of the word "exterior" and it can set either the first or last particle generated by the command. A setting of "exterior" only has an effect if the growing command is creating the tip particles for the crack.
• (tract) - this optional parameter can assign a traction law to all new crack particles created by the growing action by setting it to the material ID for a traction law material. To set a traction law material but no crack tip material in (mat) in scripted files, you can set(mat) to "0" (or actually to any invalid material ID). In XML files, you assign a traction law using a mat='n' or a matnam='name' attribute on the command. (See notes 2 and 3).

The growing actions for the various crack definition commands are:

• GrowCrack and <pt> - create a single crack particle at (x2,y2) and one crack segment from (x1,y1) to (x2,y2).
• GrowCrackLine and <Line> - create (segs) crack particles and segments evenly spaced along the line from (x1,y1) to (x2,y2).
• GrowCrackArc and <Circle> - the points (x1,y1) define (x2,y2) are used to define the corners of a rectangle and an arc is followed between the two (ang1) and (ang2) angles (in degrees as counter-clockwise angles from the positive x axis). The arc is divided into (segs) evenly spaced particles and segments. In addition, the last point of the previous crack definition command will be connected with one segment to the start of the arc. Because the control points for the arc are the boundaries of the oval's rectangle and not the starting and ending points of the resulting arc, linking arcs with points and lines may cause jumps in the crack geometry. One solution is to choose the previous crack definition command to end at the resulting starting point of the arc.

### Crack Thickness

The CrackThickness command sets the thickness for an explicit crack. It is only needed if the crack has any particles with a traction law or when crack tips release their energy into heat. In the scripted file, the command is

```CrackThickness (thick)
```

and it applies to the current crack started with the most recent NewCrack command. In XML files, the command, which must by within a <CrackList> element, is:

```<Thickness>(thick)</Thickness>
```

where (thick) is the crack thickness (in length units).

Once a CrackThickness command has been used, all subsequent cracks will use the same thickness unless a new CrackThickness command changes it. If the grid was created using a GridThickness command (or a thickness attribute), the crack thickness will inherit that thickness. You only need a CrackThickness command to have a different thickness (although having a different thickness is very uncommon and may alter the physics of the cracks.)

## Interacting Cracks

The key change in CRAMP[1] compared to conventional MPM is that each node can have more then one velocity field to separately track particle motion above and below cracks. When only a single crack is near a node, that node may have velocity fields. When MPM extrapolates particle velocities to the grid, it traces a line from each particle to the node. If the line does not cross any crack, it adds to velocity field [0] on that node. If it crosses the single crack, it adds to velocity field [1]. The left side of the figure on the right show a single blue crack. The particles labeled [0] are on the same side of the crack as the indicated node and extrapolate to velocity field [0] on that node. The particles labeled [1] are on the opposite of the crack and extrapolate to velocity field [1] on that node.

The right side of the figure shows extension of CRAMP to handle two interacting cracks. When two cracks are near a node, that node may have up to four velocity fields, which are determined by tracing lines from particles to the node. Field [0] is from particles on the same side of both cracks. Field [1] is from particles on the opposite side of the first crack (here the blue crack). Field [2] is from particles on the opposite side of the second crack (the red crack). Field [3] is from particles that are on the opposite side of both cracks.

The extension to three interacting and explicit cracks is not handled. In other words, MPM models cannot explicitly resolve three cracks that are all near a single node (i.e., within the same background cell). If three crack are found, the simulation will continue and a warning will appear in the output file. The results near those three interacting cracks may not be accurate. Note that although three cracks in the same cell are not handled, an MPM model can handle any number of cracks as long as no more then two are near any given node. Despite this limitation, CRAMP does handle two cracks in the same cell, which is an improvement over typical finite element methods (e.g., XFEM) that are limited to just a single crack in any element.

Before CRAMP, some particle-based methods proposed to handle cracks with a simpler "node visibility" approach. The main difference is that these earlier methods use only a single velocity field on each node. During extrapolations, they use a similar ray-tracing method, but when the line crosses a crack, the information from that particle is ignored. In CRAMP, no information is ignored and both velocity fields are tracked using all available information. The use of multiple velocity fields also allows CRAMP to track motion of crack surfaces that can be used to track crack opening displacements, implement fracture mechanics methods, and allow for cohesive laws on cracks.

## Exterior Cracks

For cracks that extend outside the object, the recommended approach is to stop the cracking slightly before the edge (e.g., 1/4 to 1/2 a cell from the edge) and define that tip as an "exterior" crack tip. Such tips are virtually extended beyond the object during calculations to model a crack through to the object's edge. An alternative is simply run the crack beyond the edge (e.g., 1/2 to 1 cell beyond the edge). Such crack tips, however, can suffer inaccuracies due to lack of information about local velocity fields. The result is such crack tips may not move correctly if the object is moving. Using an "exterior" crack tip resolves this problem.

## Materials that Do Not Crack

Cracks can spread from one material to another such as when simulating crack growth in a composite material. But, sometimes you would like to simulate one material entering the crack of another material can causing that crack to propagate by contact with the crack surfaces. Some examples are simulating cutting, wedging a crack open, or hydraulic fracturing. To run such simulations, you can set the material that will enter the crack to ignore cracks by setting its allowCracks property to zero.

## Notes

1. Although a straight crack can be mathematically defined with a single segment, the crack surfaces and plane of such cracks would not update well under arbitrary deformation states. Instead cracks should be defined with at least one segment per cell of the background grid. If the crack has traction laws, experience suggest the crack should have at least two segments per cell.
2. For cracks with traction laws, the crack contact mechanics handles normal stresses for the case where the crack surfaces are in contact. To avoid invalid tangential force due to contact friction when cracks are in contact, any crack surface with traction laws will automatically convert to a frictionless crack regardless of settings you use for the crack's contact condition. If, however, you use propagation methods that assign traction laws to new crack surfaces, that crack may not automatically convert to a frictionless crack. You must therefore set such cracks to use frictionless crack contact.
3. For planar 2D calculations, cracks that have traction laws must have the correct crack thickness.

## References

1. J. A. Nairn, "Material Point Method Calculations with Explicit Cracks," Computer Modeling in Engineering & Sciences, 4, 649-664 (2003). (See PDF)
2. Y. Guo and J. A. Nairn, "Calculation of J-Integral and Stress Intensity Factors using the Material Point Method," Computer Modeling in Engineering & Sciences, 6, 295-308 (2004). (See PDF)
3. J. A. Nairn, "Simulation of Crack Growth in Ductile Materials,"; Engr. Fract. Mech., 72, 961-979 (2005). (See PDF)
4. Y. Guo and J. A. Nairn, "Three-Dimensional Dynamic Fracture Analysis Using the Material Point Method," Computer Modeling in Eng. & Sci., 16, 141-156 (2006). (See PDF)
5. J. A. Nairn, "Numerical Implementation of Imperfect Interfaces, Computational Materials Science, 40, 525-536 (2007). (See PDF)
6. J. A. Nairn, "Analytical and Numerical Modeling of R Curves for Cracks with Bridging Zones," Int. J. Fracture, 155, 167-181 (2009). (See PDF)
7. J. A. Nairn and Y. E. Aimene, "A re-evaluation of mixed-mode cohesive zone modeling based on strength concepts instead of traction laws", submitted (2021).
8. J. A. Nairn, "Material Point Method Simulations of Transverse Fracture in Wood with Realistic Morphologies," Holzforschung, 61, 375-381 (2007). (See PDF)
9. J. A. Nairn and E. Le, "Numerical Modeling and Experiments on the Role of Strand-to-Strand Interface Quality on the Properties of Oriented Strand Board," Proc of 9th Int. Conf. on Wood Adhesives, Lake Tahoe, Neveda, USA, Sept. 28-30, 2009. (See PDF)
10. S. G. Bardenhagen, J.A. Nairn, and H. Lu, "Simulation of dynamic fracture with the Material Point Method using a mixed J-integral and cohesive law approach," Int. J. Fracture, 170, 49-66 (2011).
11. N. Matsumoto and J.A. Nairn, "Fracture Toughness of Wood and Wood Composites During Crack Propagation," Wood and Fiber Science, 44, 121-133 (2012). (See PDF)
12. J. A. Nairn. Numerical simulation of orthogonal cutting using the material point method. Engineering Fracture Mechanics, 149:262–275, 2015.