Difference between revisions of "Detecting Contact"

From OSUPDOCS
Jump to navigation Jump to search
 
(93 intermediate revisions by 2 users not shown)
Line 5: Line 5:
[[File:NormalDef.jpg|right]]
[[File:NormalDef.jpg|right]]


The figure shows  a surface between two materials (a and b) or between two sides of a crack (above and below). The arrow shows a vector normal to the surface oriented from side a to side b. For both multimaterial contact and crack contact, the first step is to decide if the two velocity fields at the node are actually in contact. [[NairnMPM]] uses two (or more) criteria to detect contact.
The figure shows  a surface between two materials (a and b) or between two sides of a crack (above and below). The arrow shows a vector normal to the surface oriented from side a to side b. For both multimaterial contact and crack contact, the first step is to decide if the two velocity fields at the node are actually in contact. [[NairnMPM]] uses two criteria to detect contact.


<dl>
<dl>
Line 15: Line 15:
<math>\Delta\vec v \cdot \hat n < 0 \qquad {\rm where} \qquad \Delta\vec v = \vec v_a - \vec v_b</math>
<math>\Delta\vec v \cdot \hat n < 0 \qquad {\rm where} \qquad \Delta\vec v = \vec v_a - \vec v_b</math>


When this criterion is not satisfied, the surfaces are separating and assumed to not be in contact. In early multimaterial MPM,<ref name="bard">S. G. Bardenhagen, J. E. Guilkey, K. M. Roessig, J. U. Brackbill, W. M. Witzel, and J. C. Foster, "An Improved Contact Algorithm for the Material Point Method and Application to Stress Propagation in Granular Material," <i>Computer Modeling in Engineering &amp; Sciences</i>, <b>2</b>, 509-522 (2001).</ref> this criterion alone was assumed sufficient to be in contact. It is easy to visualize, however, that this approach detects contact when surfaces are approaching each other but are still separated. For improved contact, a second criterion based on displacements is added.
When this criterion is not satisfied, the surfaces are separating and assumed to not be in contact. In early multimaterial MPM,<ref name="bard"/> this criterion alone was assumed sufficient to be in contact. It is easy to visualize, however, that this assumption detects contact when surfaces are approaching each other but are still separated. For improved contact, a second criterion based on displacements is added.


<dt>Displacement check
<dt>Displacement check
<dd>If the approach velocity criterion is satisfied, [[NairnMPM]] next looks at displacements or positions of the two velocity fields. Basically, this criterion calculates the location of the two surfaces. If the overlap in the normal direction the surfaces are in contact. If they are separated, the surfaces are not in contact. Two ways to find contact surfaces by their surface location are to extrapolate particle displacements or particle positions. These methods are described in the section on the [[#ContactPosition Command|ContactPosition command]].
<dd>If the approach velocity criterion is satisfied, [[NairnMPM]] next looks at displacements or positions of the two velocity fields. Basically, this criterion calculates the location of the two surfaces. If they overlap in the normal direction the surfaces are in contact. If they are separated, the surfaces are not in contact. Two ways to find contact surfaces by their surface location are to extrapolate particle displacements or particle positions. These methods are described in the section on the [[#ContactPosition Command|ContactPosition command]].
</dl>
</dl>


Both [[#Multimaterial Mode Contact Detection|multimaterial mode]] contact and [[Explicit Crack Contact Detection|crack]] contact use the above two criterion, but they have some other options. For example, the displacement check is optional in [[#Multimaterial Mode Contact Detection|multimaterial mode]] but is always done for crack contact. In addition, [[#Multimaterial Mode Contact Detection|multimaterial mode]] has an optional screening criterion based on nodal volume that can help screen out nodes that are likely to cause numerical inaccuracies. See the sections below for details.
Both [[#Multimaterial Mode Contact Detection|multimaterial mode]] contact and [[#Explicit Crack Contact Detection|crack]] contact use the above two criteria. Note that an [[Surface Normals|accurate normal vector]] is crucial to contact detection and contact physics.


=== Notes ===
== Separation Using Regression Methods ==


# An accurate normal vector is crucial to contact detection and contact physics. The methods for calculating these normals is described [[Surface Normals|here]].
When using [[Surface Normals#Regression Methods|regression methods]] to find surface normals,<ref name="logreg"/> the code builds list of point clouds around each multimaterial node. Once the normal is found, it examines distanced between the two material along that normal by checking each particle around the node. If the particle are deformed, the calculation accounts for that deformation. The two closest particle determine the interfacial separation.
# Since the displacement check seems to track contact best, why not skip the approach velocity criterion? The answer is that the algorithms used to adjust nodal momementum for some contact physics (''e.g.'', friction) do not make physical sense unless that criterion is satisfied.


== Multimaterial Mode Contact Detection ==
These regression methods are preferred over all [[#ContactPosition Command|grid extrapolation methods]] because they provide a direct calculation of separation and can account for particle deformation. When not using [[Surface Normals#Regression Methods|regression methods]], however, the separation calculation has to be based on extrapolated particle positions and displacement on the grid. See [[#ContactPosition Command|below]] for those methods. Note the [[MPM Input Files#Using Explicit Cracks|crack modeling]] finds normals from crack surfaces and therefore never uses [[Surface Normals#Regression Methods|regression methods]]. When modeling cracks, therefore, you must select a [[#ContactPosition Command|grid extrapolation method]] for calculating separation.


[[Multimaterial MPM|Multimaterial mode]] uses the above contact methods and has two additional options:
== ContactPosition Command ==


# The displacement check is optional. It can be turned off using the [[Multimaterial MPM#Multimaterial Mode Input Commands|(dispCheck)]] parameter in the multimaterial mode input commands. The default is to be enabled and the recommendation is to keep it enabled.
[[File:InitialContact.png|right]]
# The [[Multimaterial MPM#Multimaterial Mode Input Commands|(Vmin)]] parameter sets a critical relative volume that will ignore contact for all nodes with total volume below the specified value. It is described in the next section.


=== Volume Screening for Contact Detection ===
When evaluating material separation (needed for the [[#Basic Contact Detection|displacement check]]) by grid methods, the code extrapolates particle positions within each velocity to the grid. The opening displacement normal to the surfaces is found from


In volume screening, you set the [[Multimaterial MPM#Multimaterial Mode Input Commands|(Vmin)]] parameter to a critical volume relative to the total volume of the cells in the background grid. If the volume is below this value, the materials are assumed to not be in contact. If the volume is above this value, the contact detection proceeds with [[#Basic Contact Detection|checks on velocity and displacement]]. One use of this screening is to set it close to 1.0 and then detect contact as a consequence of compression<ref name="JG">Jim Guilkey, personal communication, 2012</ref>. When the object is compression at a surface, the total volume should increase as material is compressed into the node. When the surfaces are opened, the volume decreases below 1.0. The net result is a simple tool for contact detection. Experience in [[NairnMPM]], however, suggest this approach may not be ideal because the simulation results are often too sensitive to the <tt>(Vmin)</tt> value.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \delta_n = (\vec x_b-\vec x_a)\cdot\hat n</math>


[[File:EdgeNode.png|left]]
where x<sub>a</sub> and x<sub>b</sub> are the extrapolated positions for material above and below the surface and n is the [[Surface Normals|surface normal]]. But, inherent imprecision of surfaces in MPM (or any particle method) causes a problem. Consider the two surfaces in the figure on the right. When calculations start, their nodal positions extrapolated to common nodes (the blue nodes) will show a positive separation. Calculations with linear MPM shape functions with two particles per cell in each direction show that the calculated separation based on positions of two surfaces precisely in contact is


An alternate use of volume screening is to screen out nodes that can potentially cause artifacts in the calculations. These problem nodes are invariably contact nodes that appear near the edge of the modeled object. The figure on the left shows two materials in contact near an edge. The blue node will be a multimaterial node. To detect contact and implement contact physics, the contact algorithm needs to calculate the normal to the contactin surface. But for edge nodes these calculations are difficult because the free surface will affect the normal calculation. As a result, the calculation may be inaccurate and the entire simulation can suffer.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \delta_n \approx 0.8\Delta x</math>


This issue can often be fixed by ignoring problem edge nodes. In other words, it can be better to ignore contact on edge nodes then to include them with inaccurate surface normals. Because edge nodes are near empty cells, their total volume from particles will  always be less than 1.0. The node in the figure will have total relative volume close to 0.5. Thus to screen out edge nodes, you can set [[Multimaterial MPM#Multimaterial Mode Input Commands|(Vmin)]] parameter to a value below 1.0, often around 0.5. The goal is to screen out edge nodes but to not screen out any nodes within the object. The actual value is problem dependent. When edge nodes appear to be causing problems in contact calculations, start increasing [[Multimaterial MPM#Multimaterial Mode Input Commands|(Vmin)]] parameter between 0.0 and 1.0 until the simulations improve and hopefully before getting too close to 1.0.
where &Delta;x is the cell dimension along the contacting axis.<ref name="Lemiale"/> In other words, a contact criterion of &delta;<sub>n</sub>&lt;0 for contact would not detect contact correctly.


== Explicit Crack Contact Detection ==
Four approaches can resolve this issue:


Contact detection for cracks always uses both the [[#Basic Contact Detection|approach velocity and the displacement check]] to decide if the crack surfaces are in contact. The displacement check is more reliable on cracks than between materials because cracks have a better option for finding the [[Surface Normals#Explicit Crack Normal Vector|crack surface normal]].
<ol>
<li>Switch to [[#Separation Using Regression Methods|regression methods]] to avoid grid data altogether and find separation by actual positions and deformation of particles near the node.<ref name="logreg"/>.</li>


The only option you can change for crack contact detection is the method to calculate crack surface positions. The details are described in the following section on the [[#ContactPosition Command|<tt>ContactPosition</tt> command]].
<li>Extrapolate particle ''displacements'' instead of particle ''positions'' to the velocity fields. Now the separation for two surfaces in contact when calculations start is zero and a subsequent finding of &delta;<sub>n</sub>&lt;0 will indicate contact.</li>


== ContactPosition Command ==
<li>Define a contact-position offset, such as &delta;<sub>con</sub>= 0.8&delta;x, and detect contact when &delta;<sub>n</sub>&lt;&delta;<sub>con</sub>. The contact-position offset may need to change depending on other simulations settings.[[#Notes|<sup>1</sup>]]</li>
 
[[File:InitialContact.png|right]]
 
When using the [[#Basic Contact Detection|displacement check]] to detect contact, the code extrapolates particle positions within each velocity. The opening displacement normal the the surfaces is found from


<li>Undertake of more precise analysis of relation between extrapolated position of a material and actual distance to a node. First, we write the separation as:
<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \delta_n = (\vec x_b-\vec x_a)\cdot\hat n</math>
<math>\delta_n =  d(d_{b,ext})-d(d_{a,ext}) \quad {\rm where} \quad d(d_{m,ext}) = (\vec x_m-\vec x_i)\cdot\hat n</math>
 
<br><br>
where x<sub>a</sub> and x<sub>b</sub> are the extrapolated positions for material above and below the surface and n is the [[Surface Normals|surface normal]]. But, inherent imprecision of surfaces in MPM (or any particle method) causes a problem. Consider the two surfaces in the figure on the right. When calculations start, their nodal positions extrapolated to common nodes (the blue nodes) will show a positive separation. Calculations with MPM shape functions show that the calculated separation based on positions of two surfaces precisely in contact is
where <math>d(d_{m,ext})</math> is a function that finds actual distance to a nearby node as a function of the apparent or extrapolated distance. Calculations with linear MPM GIMP shape functions in 2D simulations with two particles per cell in each direction led to the following function to convert extrapolation distance to actual distance:
 
<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \delta_n \approx 0.8\Delta x</math>
<math>  
    {d(d_{m,ext})\over\Delta x} = \left\{\begin{array}{ll}
                1-2\left({-d_{ext}\over 1.25}\right)^{0.58} & d_{ext}<0 \\
                2\left({d_{ext}\over 1.25}\right)^{0.58}-1 & d_{ext}>0
                \end{array}\right.
</math>
<br><br>
Contact occurs when <math>\delta_n\le0</math>
</li>


where &Delta;x is the cell dimension along the contacting axis.<ref name="Lemiale">V. Lemiale, A. Hurmane, and J. A. Nairn, "Material Point Method Simulation of Equal Channel Angular Pressing Involving Large Plastic Strain and Contact Through Sharp Corners," <i>Computer Modeling in Eng. &amp; Sci.</i>, <b>70(1)</b>, 41-66, (2010).</ref> In other words, a contact criterion of &delta;<sub>n</sub>&lt;0 for contact would not detect contact correctly.
</ol>


Two approaches can resolved this issue:
The first option is the preferred option, but it does not apply when modeling contact of explicit cracks.
The second (or displacements) method requires all contact situations to exist in the initial state. This situation is common in crack or interface modeling. The third and fouth methods must be used when this requirement is not met, which is true for any problem where surfaces start out apart and then move into contact during the simulation.


# Extrapolate particle displacements instead of particle position to the velocity fields. Now the separation for two surfaces in contact when calculations start is zero and a subsequent finding of &delta;<sub>n</sub>&lt;0 will indicate contact.
The use of displacements or positions can be set independently for [[Multimaterial MPM|multimaterial contact]] and [[Crack Settings|crack contact]]. For multimaterial calculations, pick the desired option using the [[Multimaterial MPM#Multimaterial Mode Input Commands|<tt>ContactPosition</tt> command]]. For crack contact, pick the desired option using the [[Crack Settings|<tt>ContactPositionCrack</tt> command]]. Multimaterial mode contact most commonly uses the corrected position method (with a <tt>ContactPosition</tt> command). For [[Defining Cracks|cracks]], the most common approach is to use displacements instead of position (without a <tt>ContactPositionCracks</tt> command), but cracks that model dynamic interfacial contact might need to switch to a position method instead. One example of this use in cracks is found in a paper on using cracks to model glue bond lines in oriented strand board.<ref name="OSB"/> For backward compatibility for simulations written when separate settings were not allowed (and only the <tt>ContactPosition</tt> was available), simulations run in single material mode with cracks will treat a <tt>ContactPosition</tt> command as a synonym for a <tt>ContactPositionCrack</tt> command.
# Define a contact-position offset, such as &delta;<sub>con</sub>= 0.8&delta;x and detect contact when &delta;<sub>n</sub>&lt;&delta;<sub>con</sub>.


Both options are available in [[NairnMPM]] multimaterial calculations. The first (or displacements) method requires all contact situations to exist in the initial state and requires relative displacements between materials to be modest. This situation is common in crack or interface modeling. The second (or offset) method must be used when these requirements are not met, which is true for any problem were surfaces start out apart and then move into contact during the simulation.
Note that when using [[Surface Normals#Regression Methods|regression methods]], neither extrapolated position nor displacement are ever used. Thus any setting made with a <tt>ContactPosition</tt> command will be ignored. Because [[Defining Cracks|cracks]] don't use [[Surface Normals#Regression Methods|regression method]] for normals, however, a <tt>ContactPositionCracks</tt> command can still be used to choose method for calculation of crack separation.


For cracks, the most common approach is to use displacements instead of position with an offset, but cracks that model dynamic interfacial contact might need to switch to the position method instead. One example of this use in cracks is found in a paper on using cracks to model glue bond lines in oriented strand board.<ref name="OSB">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," <i>Proc of 9th Int. Conf. on Wood Adhesives</i>, Lake Tahoe, Neveda, USA, Sept. 28-30, 2009. ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/WoodAd2009.pdf See PDF])</ref>
Note that [[Imperfect Interfaces|imperfect interface]] modeling with [[Defining Cracks|cracks]] or in [[Multimaterial MPM|multimaterial mode]], must use the displacements method for tangential separation whenever the interface law has non-zero tangential traction. Since introduction of the <tt>ContactPositionCracks</tt> command, the code automatically uses displacements for tangential separation regardless of settings made for multimaterial or crack contact. But, you should still use a <tt>ContactPosition</tt> are <tt>ContactPositionCracks</tt> if needed to control the method of finding separation in the normal direction. Simulations run in older versions that had tangential interfacial tractions and used a <tt>ContactPosition</tt> command may have been less accurate than current code.


=== Selecting ContactPosition Options ===
=== Selecting ContactPosition Options ===


By default, [[NairnMPM]] extrapolates particle displacements to velocity fields and uses relative displacements of the two surfaces to detect contact. To switch to extrapolating particle position instead and use an offset to evaluate contact, scripted files can add the command
By default, [[NairnMPM]] extrapolates particle ''displacements'' to velocity fields and uses relative displacements of the two surfaces to detect contact when using grid methods for separation (see [[#ContactPosition Command|method 2 above]]). To switch to extrapolating particle ''positions'' instead and pick a method for converting positions into surface separation, scripted files can add the commands:


  ContactPosition (cutoff)
  ContactPosition (cutoff)
ContactPositionCracks (cutoff)


and <tt>XML</tt> files, the command to add is
and <tt>XML</tt> files, the command to add is
Line 86: Line 94:
  <ContactPosition>(cutoff)</ContactPosition>
  <ContactPosition>(cutoff)</ContactPosition>


which can be in either the [[Multimaterial MPM|multimaterial block]] and [[Crack Settings|explicit cracks block]] of the <tt><MPMHeader></tt>. In both commands, (cutoff) is the critical separation distance in uses of back ground cell size. If more than one <tt>ContactPosition</tt> command is used, the value for the last one will be the one that takes effect.
which should be in the [[Multimaterial MPM#Multimaterial Mode Input Commands|multimaterial block]] to set for multimaterial contact or in the [[Crack Settings#Crack Settings Commands|explicit cracks block]] to set for crack contact. In all commands, the value entered for <tt>(cutoff)</tt> determines the method used:


When this command is used, the value is usually 0.8. This value seems to work well for a wide range of simulations. If it is decreased, surfaces will visually come into contact before the particles reach each other. If it is larger than 0.8, objects will visually interpenetrate each other before contact is activated.
* <tt>(cutoff)</tt>&ge; 0: A non-negative value means to subtract <tt>(cutoff)</tt> from apparent separation to find actual separation ([[#ContactPosition Command|method 3 above]]). When using this method and two particles per cell, the <tt>(cutoff)</tt> should always be 0.8. If it is decreased, surfaces will visually come into contact before the particles reach each other. If it is larger than 0.8, objects will visually interpenetrate each other before contact is activated. See [[#Notes|below]] for when 0.8 should be changed.
* <tt>(cutoff)</tt>&lt; 0: A negative values means to use a function to determine actual separation. The function that is used is given in [[#ContactPosition Command|method 4 above]]. The absolute value of the entered parameter is used as the exponent in that power-law expression. With two particle per cell, this number should always be -0.58 (''i.e.'', exponent wiill be 0.58). See [[#Notes|below]] for when this approach can be used.


=== Notes ===
Note that setting <tt>(cutoff)</tt>=0 is not the same as omitting the command. It will use [[#ContactPosition Command|method 3 above]] with zero subtraction and result in detecting contact before particles actually reach contact.


# A single <tt>ContactPosition</tt> command changes the method used to find surface contact for both [[Multimaterial MPM|multimaterial MPM]] and for [[Crack Settings|explicit cracks]] (no matter which block specifies it in <tt>XML</tt> files). It is not possible to combine different position methods in a single simulation. If two <tt>ContactPosition</tt> commands are in the same input commands, the last one will deterimine the cutoff position
== Notes ==
# The <tt>ContactPosition</tt> command is should always be present when all or some contacting surfaces are initially separated. Note that the command is essential for handling initially-separated surfaces that later come into contact, and it causes no problems for surfaces that start out in contact. They are still modeled correctly.
 
# Although the <tt>ContactPosition</tt> method can handle all contact situations, it is usually more accurate to omit this command when all surfaces are initially in contact. Some exceptions are when the problem has large relative displacements such as sliding of a block or rolling of a disk along a surface; these actually correspond to parts of the surfaces that were separated coming into contact.
# Note that the contact-position offset values of 0.8 and -0.58 apply only to calculations with [[MPM_Methods_and_Simulation_Timing#Input_Commands|two particle per cell]] in each direction and linear shape functions (e.g., [[MPM Methods and Simulation Timing|uGIMP and CPDI shape functions]]). The positive cutoff has to be changed for other particle sizes and spline shape functions. For one particle per cell and linear shape functions, a good value is 1.07. For three or more particles per cell, the value can be varied until you get good visual results in simple contact. The value should decrease as the number of particles per cell increases. A negative cutoff corresponds to a specific function that applies only when two particle per cell in each direction and linear shape functions. Use of any other number of particles or shape function should restrict the value to the best possible positive value and not use a negative value.
# For irregular meshes, the absolute cutoff position will depend on the orientation of the crack. The code automatically corrects for this effect using the single input cutoff value by a method described in Nairn (2013).<ref name="Nairn">J.A. Nairn, "Modeling Imperfect Interfaces in the Material Point Method using Multimaterial Methods," ''Computer Modeling in Eng. &amp; Sci.'', '''92''', 271-299 (2013).</ref>
# The <tt>ContactPosition</tt> command should always be present when all or some contacting material surfaces are initially separated. Note that the command is essential for handling initially-separated surfaces that later come into contact, and it causes no problems for surfaces that start out in contact. They are still modeled correctly.
# Similarly, the <tt>ContactPositionCracks</tt> command should always be present when all or some cracks surfaces are initially separated from materials.  
# Although <tt>ContactPosition</tt> and <tt>ContactPositionCracks</tt> methods can handle both initially-separated or initially-contacted interfaces, it is usually more accurate to omit this command when all surfaces are initially in contact. Some exceptions are when the problem has large relative displacements such as sliding of a block or rolling of a disk along a surface; these actually correspond to parts of the surfaces that were separated coming into contact as the simulation evolves.
# For irregular meshes, the absolute cutoff position will depend on the orientation of the crack. The code automatically corrects for this effect using a single input cutoff value by a method described in Nairn (2013).<ref name="Nairn"/>


== References ==
== References ==
<references/>
 
<references>
<ref name="bard">S. G. Bardenhagen, J. E. Guilkey, K. M. Roessig, J. U. Brackbill, W. M. Witzel, and J. C. Foster, "An Improved Contact Algorithm for the Material Point Method and Application to Stress Propagation in Granular Material," <i>Computer Modeling in Engineering &amp; Sciences</i>, <b>2</b>, 509-522 (2001).</ref>
 
<ref name="Lemiale">V. Lemiale, A. Hurmane, and J. A. Nairn, "Material Point Method Simulation of Equal Channel Angular Pressing Involving Large Plastic Strain and Contact Through Sharp Corners," <i>Computer Modeling in Eng. &amp; Sci.</i>, <b>70(1)</b>, 41-66, (2010).</ref>
 
<ref name="OSB">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," <i>Proc of 9th Int. Conf. on Wood Adhesives</i>, Lake Tahoe, Neveda, USA, Sept. 28-30, 2009. ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/WoodAd2009.pdf See PDF])</ref>
 
<ref name="Nairn">J.A. Nairn, "Modeling Imperfect Interfaces in the Material Point Method using Multimaterial Methods," ''Computer Modeling in Eng. &amp; Sci.'', '''92''', 271-299 (2013).</ref>
 
<ref name="logreg">J. A. Nairn, C. C. Hammerquist, and G. Smith, "New MPM contact methods for improved accuracy, large-deformation problems, and proper null-space filtering," ''Computer Methods in Applied Mechanics and Engineering'', in press (2020).</ref>
 
</references>

Latest revision as of 15:15, 2 January 2021

Both multimaterial mode MPM and explicit cracks need to detect when two surfaces are in contact. This page describes the contact detection options.

Basic Contact Detection

NormalDef.jpg

The figure shows a surface between two materials (a and b) or between two sides of a crack (above and below). The arrow shows a vector normal to the surface oriented from side a to side b. For both multimaterial contact and crack contact, the first step is to decide if the two velocity fields at the node are actually in contact. NairnMPM uses two criteria to detect contact.

Approach velocity
The first step is to decide if the two surface are approaching each other in the normal direction. This criterion reduces to       [math]\displaystyle{ \Delta\vec v \cdot \hat n \lt 0 \qquad {\rm where} \qquad \Delta\vec v = \vec v_a - \vec v_b }[/math] When this criterion is not satisfied, the surfaces are separating and assumed to not be in contact. In early multimaterial MPM,[1] this criterion alone was assumed sufficient to be in contact. It is easy to visualize, however, that this assumption detects contact when surfaces are approaching each other but are still separated. For improved contact, a second criterion based on displacements is added.
Displacement check
If the approach velocity criterion is satisfied, NairnMPM next looks at displacements or positions of the two velocity fields. Basically, this criterion calculates the location of the two surfaces. If they overlap in the normal direction the surfaces are in contact. If they are separated, the surfaces are not in contact. Two ways to find contact surfaces by their surface location are to extrapolate particle displacements or particle positions. These methods are described in the section on the ContactPosition command.

Both multimaterial mode contact and crack contact use the above two criteria. Note that an accurate normal vector is crucial to contact detection and contact physics.

Separation Using Regression Methods

When using regression methods to find surface normals,[2] the code builds list of point clouds around each multimaterial node. Once the normal is found, it examines distanced between the two material along that normal by checking each particle around the node. If the particle are deformed, the calculation accounts for that deformation. The two closest particle determine the interfacial separation.

These regression methods are preferred over all grid extrapolation methods because they provide a direct calculation of separation and can account for particle deformation. When not using regression methods, however, the separation calculation has to be based on extrapolated particle positions and displacement on the grid. See below for those methods. Note the crack modeling finds normals from crack surfaces and therefore never uses regression methods. When modeling cracks, therefore, you must select a grid extrapolation method for calculating separation.

ContactPosition Command

InitialContact.png

When evaluating material separation (needed for the displacement check) by grid methods, the code extrapolates particle positions within each velocity to the grid. The opening displacement normal to the surfaces is found from

      [math]\displaystyle{ \delta_n = (\vec x_b-\vec x_a)\cdot\hat n }[/math]

where xa and xb are the extrapolated positions for material above and below the surface and n is the surface normal. But, inherent imprecision of surfaces in MPM (or any particle method) causes a problem. Consider the two surfaces in the figure on the right. When calculations start, their nodal positions extrapolated to common nodes (the blue nodes) will show a positive separation. Calculations with linear MPM shape functions with two particles per cell in each direction show that the calculated separation based on positions of two surfaces precisely in contact is

      [math]\displaystyle{ \delta_n \approx 0.8\Delta x }[/math]

where Δx is the cell dimension along the contacting axis.[3] In other words, a contact criterion of δn<0 for contact would not detect contact correctly.

Four approaches can resolve this issue:

  1. Switch to regression methods to avoid grid data altogether and find separation by actual positions and deformation of particles near the node.[2].
  2. Extrapolate particle displacements instead of particle positions to the velocity fields. Now the separation for two surfaces in contact when calculations start is zero and a subsequent finding of δn<0 will indicate contact.
  3. Define a contact-position offset, such as δcon= 0.8δx, and detect contact when δncon. The contact-position offset may need to change depending on other simulations settings.1
  4. Undertake of more precise analysis of relation between extrapolated position of a material and actual distance to a node. First, we write the separation as:

          [math]\displaystyle{ \delta_n = d(d_{b,ext})-d(d_{a,ext}) \quad {\rm where} \quad d(d_{m,ext}) = (\vec x_m-\vec x_i)\cdot\hat n }[/math]

    where [math]\displaystyle{ d(d_{m,ext}) }[/math] is a function that finds actual distance to a nearby node as a function of the apparent or extrapolated distance. Calculations with linear MPM GIMP shape functions in 2D simulations with two particles per cell in each direction led to the following function to convert extrapolation distance to actual distance:

          [math]\displaystyle{ {d(d_{m,ext})\over\Delta x} = \left\{\begin{array}{ll} 1-2\left({-d_{ext}\over 1.25}\right)^{0.58} & d_{ext}\lt 0 \\ 2\left({d_{ext}\over 1.25}\right)^{0.58}-1 & d_{ext}\gt 0 \end{array}\right. }[/math]

    Contact occurs when [math]\displaystyle{ \delta_n\le0 }[/math]

The first option is the preferred option, but it does not apply when modeling contact of explicit cracks. The second (or displacements) method requires all contact situations to exist in the initial state. This situation is common in crack or interface modeling. The third and fouth methods must be used when this requirement is not met, which is true for any problem where surfaces start out apart and then move into contact during the simulation.

The use of displacements or positions can be set independently for multimaterial contact and crack contact. For multimaterial calculations, pick the desired option using the ContactPosition command. For crack contact, pick the desired option using the ContactPositionCrack command. Multimaterial mode contact most commonly uses the corrected position method (with a ContactPosition command). For cracks, the most common approach is to use displacements instead of position (without a ContactPositionCracks command), but cracks that model dynamic interfacial contact might need to switch to a position method instead. One example of this use in cracks is found in a paper on using cracks to model glue bond lines in oriented strand board.[4] For backward compatibility for simulations written when separate settings were not allowed (and only the ContactPosition was available), simulations run in single material mode with cracks will treat a ContactPosition command as a synonym for a ContactPositionCrack command.

Note that when using regression methods, neither extrapolated position nor displacement are ever used. Thus any setting made with a ContactPosition command will be ignored. Because cracks don't use regression method for normals, however, a ContactPositionCracks command can still be used to choose method for calculation of crack separation.

Note that imperfect interface modeling with cracks or in multimaterial mode, must use the displacements method for tangential separation whenever the interface law has non-zero tangential traction. Since introduction of the ContactPositionCracks command, the code automatically uses displacements for tangential separation regardless of settings made for multimaterial or crack contact. But, you should still use a ContactPosition are ContactPositionCracks if needed to control the method of finding separation in the normal direction. Simulations run in older versions that had tangential interfacial tractions and used a ContactPosition command may have been less accurate than current code.

Selecting ContactPosition Options

By default, NairnMPM extrapolates particle displacements to velocity fields and uses relative displacements of the two surfaces to detect contact when using grid methods for separation (see method 2 above). To switch to extrapolating particle positions instead and pick a method for converting positions into surface separation, scripted files can add the commands:

ContactPosition (cutoff)
ContactPositionCracks (cutoff)

and XML files, the command to add is

<ContactPosition>(cutoff)</ContactPosition>

which should be in the multimaterial block to set for multimaterial contact or in the explicit cracks block to set for crack contact. In all commands, the value entered for (cutoff) determines the method used:

  • (cutoff)≥ 0: A non-negative value means to subtract (cutoff) from apparent separation to find actual separation (method 3 above). When using this method and two particles per cell, the (cutoff) should always be 0.8. If it is decreased, surfaces will visually come into contact before the particles reach each other. If it is larger than 0.8, objects will visually interpenetrate each other before contact is activated. See below for when 0.8 should be changed.
  • (cutoff)< 0: A negative values means to use a function to determine actual separation. The function that is used is given in method 4 above. The absolute value of the entered parameter is used as the exponent in that power-law expression. With two particle per cell, this number should always be -0.58 (i.e., exponent wiill be 0.58). See below for when this approach can be used.

Note that setting (cutoff)=0 is not the same as omitting the command. It will use method 3 above with zero subtraction and result in detecting contact before particles actually reach contact.

Notes

  1. Note that the contact-position offset values of 0.8 and -0.58 apply only to calculations with two particle per cell in each direction and linear shape functions (e.g., uGIMP and CPDI shape functions). The positive cutoff has to be changed for other particle sizes and spline shape functions. For one particle per cell and linear shape functions, a good value is 1.07. For three or more particles per cell, the value can be varied until you get good visual results in simple contact. The value should decrease as the number of particles per cell increases. A negative cutoff corresponds to a specific function that applies only when two particle per cell in each direction and linear shape functions. Use of any other number of particles or shape function should restrict the value to the best possible positive value and not use a negative value.
  2. The ContactPosition command should always be present when all or some contacting material surfaces are initially separated. Note that the command is essential for handling initially-separated surfaces that later come into contact, and it causes no problems for surfaces that start out in contact. They are still modeled correctly.
  3. Similarly, the ContactPositionCracks command should always be present when all or some cracks surfaces are initially separated from materials.
  4. Although ContactPosition and ContactPositionCracks methods can handle both initially-separated or initially-contacted interfaces, it is usually more accurate to omit this command when all surfaces are initially in contact. Some exceptions are when the problem has large relative displacements such as sliding of a block or rolling of a disk along a surface; these actually correspond to parts of the surfaces that were separated coming into contact as the simulation evolves.
  5. For irregular meshes, the absolute cutoff position will depend on the orientation of the crack. The code automatically corrects for this effect using a single input cutoff value by a method described in Nairn (2013).[5]

References

  1. S. G. Bardenhagen, J. E. Guilkey, K. M. Roessig, J. U. Brackbill, W. M. Witzel, and J. C. Foster, "An Improved Contact Algorithm for the Material Point Method and Application to Stress Propagation in Granular Material," Computer Modeling in Engineering & Sciences, 2, 509-522 (2001).
  2. 2.0 2.1 J. A. Nairn, C. C. Hammerquist, and G. Smith, "New MPM contact methods for improved accuracy, large-deformation problems, and proper null-space filtering," Computer Methods in Applied Mechanics and Engineering, in press (2020).
  3. V. Lemiale, A. Hurmane, and J. A. Nairn, "Material Point Method Simulation of Equal Channel Angular Pressing Involving Large Plastic Strain and Contact Through Sharp Corners," Computer Modeling in Eng. & Sci., 70(1), 41-66, (2010).
  4. 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)
  5. J.A. Nairn, "Modeling Imperfect Interfaces in the Material Point Method using Multimaterial Methods," Computer Modeling in Eng. & Sci., 92, 271-299 (2013).